-
Notifications
You must be signed in to change notification settings - Fork 3
fix(discord): PDF uploads, result_summary default, attachment diagnostics #200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
8f4b0ad
3761e58
8658dd7
597ab9a
cc4bfda
80c3885
3b5c749
8ec60b5
778ec1c
e11907e
d03d25e
e4fa320
0c34ec4
59ef978
59cf842
1562090
64f40a9
e8a6a1e
a66b507
8cfb8ff
2a61683
c739d7e
0127223
2f1f018
a758bbe
3b0b644
4505d0a
21895e2
7553fe9
d40f215
5d6cf72
4261b17
9bd5274
bf5db5d
7ce7a07
51d81e9
bfa09be
4314b04
d039563
ff27871
77352bf
0fc6474
1d97eee
7ec7594
fb61796
b9e2226
36b88e5
70d39e5
069b82c
700c57f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| { | ||
| "last_dolt_commit": "mcgoglttb785sns4t2u2d5avsvj06ql0", | ||
| "last_event_id": 0, | ||
| "timestamp": "2026-03-04T23:50:42.764912Z", | ||
| "counts": { | ||
| "issues": 10, | ||
| "events": 10, | ||
| "comments": 0, | ||
| "dependencies": 16, | ||
| "labels": 0, | ||
| "config": 11 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| {"key":"auto_compact_enabled","value":"false"} | ||
| {"key":"compact_batch_size","value":"50"} | ||
| {"key":"compact_parallel_workers","value":"5"} | ||
| {"key":"compact_tier1_days","value":"30"} | ||
| {"key":"compact_tier1_dep_levels","value":"2"} | ||
| {"key":"compact_tier2_commits","value":"100"} | ||
| {"key":"compact_tier2_days","value":"90"} | ||
| {"key":"compact_tier2_dep_levels","value":"5"} | ||
| {"key":"compaction_enabled","value":"false"} | ||
| {"key":"issue_prefix","value":"herdctl"} | ||
| {"key":"schema_version","value":"6"} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| {"created_at":"2026-03-04T15:29:11Z","created_by":"agent","depends_on_id":"herdctl-gi7","issue_id":"herdctl-60a","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:10Z","created_by":"agent","depends_on_id":"herdctl-klh","issue_id":"herdctl-60a","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:12Z","created_by":"agent","depends_on_id":"herdctl-r3t","issue_id":"herdctl-60a","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:16Z","created_by":"agent","depends_on_id":"herdctl-gi7","issue_id":"herdctl-com","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:16Z","created_by":"agent","depends_on_id":"herdctl-klh","issue_id":"herdctl-com","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:17Z","created_by":"agent","depends_on_id":"herdctl-r3t","issue_id":"herdctl-com","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:15Z","created_by":"agent","depends_on_id":"herdctl-uwa","issue_id":"herdctl-com","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:08Z","created_by":"agent","depends_on_id":"herdctl-klh","issue_id":"herdctl-gi7","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:08Z","created_by":"agent","depends_on_id":"herdctl-r3t","issue_id":"herdctl-gi7","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:07Z","created_by":"agent","depends_on_id":"herdctl-uwa","issue_id":"herdctl-gi7","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:06Z","created_by":"agent","depends_on_id":"herdctl-uwa","issue_id":"herdctl-klh","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:13Z","created_by":"agent","depends_on_id":"herdctl-3ee","issue_id":"herdctl-qto","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:13Z","created_by":"agent","depends_on_id":"herdctl-k0i","issue_id":"herdctl-qto","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:14Z","created_by":"agent","depends_on_id":"herdctl-r3t","issue_id":"herdctl-qto","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:10Z","created_by":"agent","depends_on_id":"herdctl-uwa","issue_id":"herdctl-r3t","type":"blocks"} | ||
| {"created_at":"2026-03-04T15:29:09Z","created_by":"agent","depends_on_id":"herdctl-uwa","issue_id":"herdctl-zjd","type":"blocks"} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:28:59Z","event_type":"created","id":1,"issue_id":"herdctl-uwa","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:28:59Z","event_type":"created","id":2,"issue_id":"herdctl-klh","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:00Z","event_type":"created","id":3,"issue_id":"herdctl-gi7","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:01Z","event_type":"created","id":4,"issue_id":"herdctl-3ee","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:02Z","event_type":"created","id":5,"issue_id":"herdctl-zjd","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:02Z","event_type":"created","id":6,"issue_id":"herdctl-r3t","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:03Z","event_type":"created","id":7,"issue_id":"herdctl-k0i","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:04Z","event_type":"created","id":8,"issue_id":"herdctl-60a","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:05Z","event_type":"created","id":9,"issue_id":"herdctl-qto","new_value":"","old_value":""} | ||
| {"actor":"agent","comment":null,"created_at":"2026-03-04T15:29:05Z","event_type":"created","id":10,"issue_id":"herdctl-com","new_value":"","old_value":""} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| {"acceptance_criteria":"1) Commands are registered and executable in supported channels/DMs. 2) Correct behavior for active/inactive run states. 3) Clear ephemeral success/error responses.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"c3e4b66f5be19dccae9dc7ea6be53320d112acc6cfed21068fbdde2298853d6e","created_at":"2026-03-04T23:29:01Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Extend command surface with execution/session controls for better operational usability in Discord.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-3ee","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Add slash control commands (/stop, /retry, /new, /session)","updated_at":"2026-03-04T23:29:01Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Shared embed builder utilities added. 2) Color/label/footer semantics are consistent. 3) Snapshot tests cover key templates.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"7f266404dd35390bfd1852f4cc793e5e25e63d027262909de4e32565d33a672f","created_at":"2026-03-04T23:29:04Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Centralize embed builders and visual semantics (progress/answer/trace/success/error) for consistent look and readability.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-60a","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Embed/theme design system refactor","updated_at":"2026-03-04T23:29:04Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Test fixtures include representative tool-heavy, error, and status flows. 2) Rendering parity checks exist for both runtimes. 3) Future format drift is caught by tests.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"6cbb6a0de9b59bfa1b51d4ce43e3fb191eb9421d4165061407173b2b5842a120","created_at":"2026-03-04T23:29:06Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Add fixture-driven regression tests that assert equivalent user-visible behavior across SDK and CLI runtime message streams.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-com","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: End-to-end regression suite for SDK + CLI runtime streams","updated_at":"2026-03-04T23:29:06Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Message count reduced for complex runs. 2) Final answer remains obvious and readable. 3) Large outputs are attached instead of flooding chat.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"90e044bb40551aa6156677be32ad33489429146a530f0151e8cdb254cae07bb4","created_at":"2026-03-04T23:29:01Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Replace per-event embed burst with a persistent run card plus grouped tool trace updates; attach oversized tool output as files with short previews.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-gi7","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Run card and grouped trace UX","updated_at":"2026-03-04T23:29:01Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Global path remains default. 2) Guild-scoped path registers correctly for selected guilds. 3) Docs describe tradeoffs and usage.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"0430a137a7092776b18bde96241ba13dc5cbedeea5a154f77bd3bac0973279b0","created_at":"2026-03-04T23:29:04Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Add optional guild-scoped command registration for faster development propagation while preserving global default for production.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-k0i","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Configurable slash command registration mode (global vs guild)","updated_at":"2026-03-04T23:29:04Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Live deltas appear in Discord when available. 2) No duplicate final answer content. 3) Fallback path works when only assistant snapshots are present.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"f718c850b20471775c6bf569f852b31fae04ec3f73bb5691d1ed056afb005c58","created_at":"2026-03-04T23:29:00Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Upgrade response delivery to support live delta streaming (stream_event/content_block_delta) into an editable answer message, with fallback to finalized assistant snapshots.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-klh","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Incremental answer streaming via stream_event","updated_at":"2026-03-04T23:29:00Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Docs match schema defaults and runtime behavior. 2) Slash command invocation/troubleshooting is explicit. 3) Docs build/lint passes.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"2bb093b690e8d06f95f46ef383cc4091ded2c367ab1f89c8f6caf7cb7c433f79","created_at":"2026-03-04T23:29:05Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Fix docs mismatches (including result_summary defaults), document slash invocation UX, and explain SDK vs CLI runtime message differences.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-qto","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord docs: Slash command UX + defaults/runtime parity","updated_at":"2026-03-04T23:29:05Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) tool_progress updates run/progress state without spam. 2) auth_status shows only actionable notices. 3) Behavior is tested across SDK and CLI streams.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"9235b5cb474d3f3b7fec7eb12f77e0eb7d2bb78c9e8af9ef0191aa87cbf2beb9","created_at":"2026-03-04T23:29:03Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Handle additional SDK message classes explicitly in Discord UX so users receive useful state updates without noise.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-r3t","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Surface tool_progress and auth_status messages","updated_at":"2026-03-04T23:29:03Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Canonical event model implemented and used by Discord manager. 2) Tests cover SDK-native and CLI-native streams. 3) Existing happy-path output remains functionally equivalent.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"0a6d9d024453bb3753bb0e0d01f06bde419cbca0e93055d26f7fc5d7aa856caf","created_at":"2026-03-04T23:28:59Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Add a normalization layer in @herdctl/discord that maps raw SDKMessage streams from both SDKRuntime and CLIRuntime into canonical chat events before rendering.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-uwa","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Runtime-agnostic message normalizer","updated_at":"2026-03-04T23:28:59Z","waiters":"","wisp_type":"","work_type":""} | ||
| {"acceptance_criteria":"1) Fresh-session prompts include formatted recent context. 2) Resume path does not duplicate history. 3) Tests cover empty and reply-chain-heavy contexts.","actor":"","agent_state":"","assignee":null,"await_id":"","await_type":"","close_reason":"","closed_at":null,"closed_by_session":"","compacted_at":null,"compacted_at_commit":null,"compaction_level":0,"content_hash":"f0e99aab40d55766ae72a9c5d203f327dd6d08a2739e5236f95c76c915333bca","created_at":"2026-03-04T23:29:02Z","created_by":"agent","crystallizes":0,"defer_until":null,"description":"Use built conversation context when no resume session is present; avoid re-injecting context on resume path.","design":"","due_at":null,"ephemeral":0,"estimated_minutes":null,"event_kind":"","external_ref":null,"hook_bead":"","id":"herdctl-zjd","is_template":0,"issue_type":"task","last_activity":null,"metadata":"{}","mol_type":"","notes":"","original_size":null,"owner":"oliver.heckmann@gmail.com","payload":"","pinned":0,"priority":2,"quality_score":null,"rig":"","role_bead":"","role_type":"","sender":"","source_repo":"","source_system":"","spec_id":"","status":"open","target":"","timeout_ns":0,"title":"Discord: Inject context_messages on fresh session path","updated_at":"2026-03-04T23:29:02Z","waiters":"","wisp_type":"","work_type":""} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| --- | ||
| "@herdctl/core": minor | ||
| --- | ||
|
|
||
| Add agent self-scheduling via MCP server | ||
|
|
||
| Agents can now create, update, and delete their own schedules at runtime through a capability-gated MCP server. Enable with `self_scheduling.enabled: true` in agent config. | ||
|
|
||
| - Per-agent YAML store at `.herdctl/dynamic-schedules/<agent>.yaml` | ||
| - Standalone `herdctl-scheduler` stdio MCP server with 4 tools (create, list, update, delete) | ||
| - Auto-injected when `self_scheduling.enabled` is true — no manual MCP config needed | ||
| - Safety: namespace isolation, configurable max schedules, minimum interval enforcement, optional TTL | ||
| - Dynamic schedules merged with static in scheduler (static wins on name collision) | ||
| - `source: "static" | "dynamic"` tag on ScheduleInfo for fleet operator visibility | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| --- | ||
| "@herdctl/core": minor | ||
| --- | ||
|
|
||
| Add injected MCP server support to CLI runtime via HTTP bridges | ||
|
|
||
| CLI runtime now supports `injectedMcpServers` (e.g., file sender for Discord/Slack uploads). | ||
| Previously only SDK and Docker runtimes handled injected MCP servers — CLI silently ignored them. | ||
|
|
||
| The fix reuses existing `mcp-http-bridge.ts` infrastructure: starts HTTP bridges on localhost | ||
| for each injected server and passes them via `--mcp-config` as HTTP-type MCP servers. | ||
|
Comment on lines
+1
to
+11
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove the unrelated CLI runtime changeset from this PR. This entry publishes an 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| --- | ||
| "@herdctl/core": minor | ||
| "@herdctl/discord": minor | ||
| --- | ||
|
|
||
| feat(discord): support file attachments (images, PDFs, text/code files) in Discord messages | ||
|
|
||
| When users upload files alongside a Discord message, the connector now detects and processes them: | ||
| - Text/code files are downloaded and inlined directly into the agent's prompt | ||
| - Images and PDFs are saved to the agent's working directory with a file path reference so the agent can use its Read tool to view them | ||
| - Configurable via `chat.discord.attachments` with options for file size limits, allowed types, and automatic cleanup |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| --- | ||
| "@herdctl/discord": patch | ||
| "@herdctl/core": patch | ||
| --- | ||
|
|
||
| Fix Discord PDF attachment handling, revert result_summary default, and improve attachment diagnostics | ||
|
|
||
| - Guess MIME type from file extension when Discord returns null contentType (fixes PDF uploads in DMs) | ||
| - Revert result_summary default from true back to false (unintentional change in PR 194) | ||
| - Upgrade attachment skip/ignore logging from debug to warn for easier troubleshooting | ||
| - Add warn log when message has attachments but attachments.enabled is false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update this changeset to match the actual release surface of the PR.
This entry announces a new
@herdctl/coreminor for self-scheduling, but the PR objectives here are Discord PDF/default/logging fixes. Merging this as-is will publish the wrong changelog and likely the wrong version bump.🤖 Prompt for AI Agents