Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
8f4b0ad
feat(core): add agent self-scheduling via MCP server
oheckmann74 Mar 3, 2026
3761e58
fix(core): address review findings in self-scheduling
oheckmann74 Mar 4, 2026
8658dd7
fix(core): address remaining review findings in self-scheduling
oheckmann74 Mar 4, 2026
597ab9a
fix(core): address CodeRabbit PR review feedback
oheckmann74 Mar 4, 2026
cc4bfda
refactor(core): address CodeRabbit nitpick feedback
oheckmann74 Mar 4, 2026
80c3885
feat(discord): add typing_indicator output config option
Mar 2, 2026
3b5c749
feat(discord,slack): message dedup, ack emoji, voice transcription, f…
Mar 2, 2026
8ec60b5
feat(discord): reduce verbosity with final-answer-only mode, concise …
Mar 2, 2026
778ec1c
fix(discord): ensure final answer delivery in finalAnswerOnly mode
Mar 2, 2026
e11907e
feat(discord): visual polish — title-less embeds, refined colors, bra…
Mar 2, 2026
d03d25e
feat(discord): support file attachments in Discord messages
Mar 2, 2026
e4fa320
refactor(discord): replace final_answer_only + concise_mode with assi…
oheckmann74 Mar 3, 2026
0c34ec4
Fix Discord attachment path collisions and filename overwrites
oheckmann74 Mar 3, 2026
59ef978
fix(core): increase CLI session startup timeout from 15s to 60s
oheckmann74 Mar 3, 2026
59cf842
feat(core): add injected MCP server support to CLI runtime
oheckmann74 Mar 3, 2026
1562090
feat(discord): buffer file uploads to attach below answer text
oheckmann74 Mar 4, 2026
64f40a9
fix: address review findings across Discord improvements
oheckmann74 Mar 4, 2026
e8a6a1e
fix: address CodeRabbit round 2 feedback on Discord improvements
oheckmann74 Mar 4, 2026
a66b507
feat(core): inject self-scheduling system prompt into agents
oheckmann74 Mar 4, 2026
8cfb8ff
Merge branch 'feature/discord-improvements' into feature/agent-self-s…
oheckmann74 Mar 4, 2026
2a61683
fix(core): always inject system prompt even with custom MCP server
oheckmann74 Mar 4, 2026
c739d7e
bd: backup 2026-03-04 23:28
oheckmann74 Mar 4, 2026
0127223
bd: backup 2026-03-04 23:50
oheckmann74 Mar 4, 2026
2f1f018
Enhance Discord chat UX, slash controls, and runtime parity
oheckmann74 Mar 4, 2026
a758bbe
Fix /retry to reuse Discord pipeline and catch failures
oheckmann74 Mar 5, 2026
3b0b644
Deduplicate CLI assistant snapshots in synthetic result usage
oheckmann74 Mar 5, 2026
4505d0a
Cleanup: deduplicate formatDuration, extract synthetic event factory
oheckmann74 Mar 5, 2026
21895e2
feat(core): add host: true MCP server support for Docker agents
oheckmann74 Mar 5, 2026
7553fe9
fix(core): route MCP HTTP bridges via host.docker.internal for Docker…
oheckmann74 Mar 5, 2026
d40f215
feat(discord): add default_channel_mode for guild-wide mention response
oheckmann74 Mar 5, 2026
5d6cf72
Add skills, usage, and utility Discord slash commands
oheckmann74 Mar 5, 2026
4261b17
Constrain Discord skill discovery to agent scope and validate /skill
oheckmann74 Mar 5, 2026
9bd5274
feat(discord): add cumulative session totals to /usage command
oheckmann74 Mar 5, 2026
bf5db5d
fix(discord): discover skills from .claude/skills/ and support skills…
oheckmann74 Mar 5, 2026
7ce7a07
feat: multimodal image support — send Discord/Slack images as content…
oheckmann74 Mar 5, 2026
51d81e9
Merge discord-polish-fixes into main: self-scheduling, Discord improv…
oheckmann74 Mar 5, 2026
bfa09be
feat(discord): send image attachments as native multimodal content bl…
oheckmann74 Mar 5, 2026
4314b04
feat(discord): always process image attachments as content blocks
oheckmann74 Mar 5, 2026
d039563
feat(core): auto-promote CLI runtime to SDK for multimodal prompts in…
oheckmann74 Mar 6, 2026
ff27871
fix(core): drop CLI session when auto-promoting to SDK for multimodal
oheckmann74 Mar 6, 2026
77352bf
fix(discord): revert multimodal content blocks, use file-to-disk for …
oheckmann74 Mar 6, 2026
0fc6474
feat(discord): echo voice transcription text in channel
oheckmann74 Mar 6, 2026
1d97eee
fix(discord): translate attachment paths for Docker-containerized agents
oheckmann74 Mar 7, 2026
7ec7594
Fix container accumulation: reuse stopped containers across restarts
oheckmann74 Mar 8, 2026
fb61796
fix(discord): PDF attachment handling, result_summary default, and at…
oheckmann74 Mar 9, 2026
b9e2226
fix(core): race session file watcher against process exit for CLI -p …
oheckmann74 Mar 10, 2026
36b88e5
feat(core): support custom headers on HTTP MCP servers
oheckmann74 Mar 10, 2026
70d39e5
fix(core): run self-scheduling MCP server on host for Docker agents
oheckmann74 Mar 10, 2026
069b82c
fix(core): prevent empty stub session files from breaking resume
oheckmann74 Mar 10, 2026
700c57f
feat(core): enable self-scheduling by default for new agents
oheckmann74 Mar 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .beads/backup/backup_state.json
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
}
}
Empty file added .beads/backup/comments.jsonl
Empty file.
11 changes: 11 additions & 0 deletions .beads/backup/config.jsonl
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"}
16 changes: 16 additions & 0 deletions .beads/backup/dependencies.jsonl
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"}
10 changes: 10 additions & 0 deletions .beads/backup/events.jsonl
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":""}
10 changes: 10 additions & 0 deletions .beads/backup/issues.jsonl
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":""}
Empty file added .beads/backup/labels.jsonl
Empty file.
14 changes: 14 additions & 0 deletions .changeset/agent-self-scheduling.md
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
Comment on lines +2 to +14

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Update this changeset to match the actual release surface of the PR.

This entry announces a new @herdctl/core minor 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
Verify each finding against the current code and only fix it if needed.

In @.changeset/agent-self-scheduling.md around lines 2 - 14, The changeset
currently advertises a new "@herdctl/core" minor for agent self-scheduling which
is incorrect for this PR; edit the changeset heading and body so the package
bump reflects the actual release surface (adjust release type to patch/minor as
appropriate), remove the self_scheduling content, and replace it with a concise
summary of the real changes (Discord PDF/default/logging fixes and any affected
packages), ensuring the changed package token "@herdctl/core" and the release
type in the frontmatter match the intended version bump.

11 changes: 11 additions & 0 deletions .changeset/cli-runtime-injected-mcp.md
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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Remove the unrelated CLI runtime changeset from this PR.

This entry publishes an @herdctl/core minor for injected MCP server support, which does not match the Discord PDF / result_summary / attachment-diagnostics scope described for PR #200. Leaving it here will generate the wrong release notes and version bump.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.changeset/cli-runtime-injected-mcp.md around lines 1 - 11, The changeset
that lifts "@herdctl/core" to a minor (the injectedMcpServers/CLI runtime entry
referencing mcp-http-bridge and --mcp-config) is unrelated and should be removed
from this PR: delete the changeset file that contains the `"@herdctl/core":
minor` entry (the injected MCP CLI runtime changelog) so the PR only contains
the Discord PDF / result_summary/attachment-diagnostics changes, then re-run the
changeset generator/check and verify no other files (e.g., references to
injectedMcpServers or mcp-http-bridge.ts) were accidentally staged.

11 changes: 11 additions & 0 deletions .changeset/discord-file-attachments.md
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
11 changes: 11 additions & 0 deletions .changeset/discord-pdf-ack-fixes.md
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
Loading