diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index dc2d525..edd1d15 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -75,7 +75,7 @@ {"id":"beadle-g4g","title":"Implement top-level slash commands for beadle-email (/mail or /send TBD)","description":"Implement top-level slash commands for beadle-email once naming is resolved (beadle-bkw). Commands should use MCP tools in allowed-tools frontmatter (MCP-first, not Bash). Potential commands: check inbox, send email, send conversation summary. Each command needs proper allowed-tools declaration referencing mcp__plugin_beadle_email__ tools.","status":"closed","priority":2,"issue_type":"task","owner":"jmf@pobox.com","created_at":"2026-03-13T14:54:46.277581-07:00","created_by":"\"jmf-pobox\"","updated_at":"2026-03-13T17:13:24.034484-07:00","closed_at":"2026-03-13T17:13:24.034484-07:00","close_reason":"Slash commands /mail, /inbox, /send implemented and merged in PR #10. Both prod and dev tool prefixes in allowed-tools.","dependencies":[{"issue_id":"beadle-g4g","depends_on_id":"beadle-bkw","type":"blocks","created_at":"2026-03-13T14:55:14.297497-07:00","created_by":"\"jmf-pobox\""},{"issue_id":"beadle-g4g","depends_on_id":"beadle-fsj","type":"blocks","created_at":"2026-03-13T14:55:14.415297-07:00","created_by":"\"jmf-pobox\""}]} {"id":"beadle-glm","title":"SessionStart hook: auto-allow MCP permissions, deploy commands, first-run setup","description":"Implement SessionStart hook per punt-kit hooks.md standard. Must: (1) auto-allow beadle-email MCP tool permissions in ~/.claude/settings.json, (2) deploy top-level commands from commands/ to ~/.claude/commands/ using diff-and-copy pattern, (3) emit hookSpecificOutput with additionalContext describing setup state. Shell script is thin gate, delegates to beadle-email binary. Must handle both dev and prod plugin namespaces.","status":"closed","priority":1,"issue_type":"task","owner":"jmf@pobox.com","created_at":"2026-03-13T14:54:40.629858-07:00","created_by":"\"jmf-pobox\"","updated_at":"2026-03-13T17:31:27.549751-07:00","closed_at":"2026-03-13T17:31:27.549751-07:00","close_reason":"SessionStart hook refined and merged in PR #11. Dev mode detection, mode-specific permissions, first-run binary check, jq fallback.","dependencies":[{"issue_id":"beadle-glm","depends_on_id":"beadle-fsj","type":"blocks","created_at":"2026-03-13T14:55:14.050895-07:00","created_by":"\"jmf-pobox\""}]} {"id":"beadle-grl","title":"feat(cli): add identity subcommand to show/set per-repo identity","description":"beadle-email has no CLI or MCP tool to show or set the per-repo identity. Users must manually create .punt-labs/ethos/config.yaml. This causes permission errors when the repo's ethos active identity differs from the one with contacts/permissions configured. Add: beadle-email identity (show resolved identity + source), beadle-email identity set \u003chandle\u003e (write per-repo ethos config). May also need a corresponding MCP tool so Claude Code sessions can self-diagnose identity issues.","status":"closed","priority":2,"issue_type":"feature","owner":"jmf@pobox.com","created_at":"2026-03-21T12:06:38.531888-07:00","created_by":"\"jmf-pobox\"","updated_at":"2026-03-21T13:48:27.419423-07:00","closed_at":"2026-03-21T13:48:27.419423-07:00","close_reason":"PR #66 merged: identity subcommand + whoami MCP tool"} -{"id":"beadle-iue","title":"feat(email): batch archive MCP tool","description":"Add a batch_move or batch_archive MCP tool that accepts an array of message IDs and moves them all in one call. Current move_message handles one message at a time — archiving 588 messages requires 588 individual IMAP MOVE commands. A batch tool would reduce this to one call with one IMAP session. Critical for inbox hygiene when GitHub notifications accumulate.","status":"in_progress","priority":2,"issue_type":"task","owner":"claude@punt-labs.com","created_at":"2026-04-18T10:21:49.921967163-07:00","created_by":"J F","updated_at":"2026-04-18T12:41:55.711635303-07:00"} +{"id":"beadle-iue","title":"feat(email): batch archive MCP tool","description":"Add a batch_move or batch_archive MCP tool that accepts an array of message IDs and moves them all in one call. Current move_message handles one message at a time — archiving 588 messages requires 588 individual IMAP MOVE commands. A batch tool would reduce this to one call with one IMAP session. Critical for inbox hygiene when GitHub notifications accumulate.","status":"closed","priority":2,"issue_type":"task","owner":"claude@punt-labs.com","created_at":"2026-04-18T10:21:49.921967163-07:00","created_by":"J F","updated_at":"2026-04-18T13:08:19.873424872-07:00","closed_at":"2026-04-18T13:08:19.873424872-07:00","close_reason":"Closed"} {"id":"beadle-iyr","title":"T4: CLIRunner — compound step execution","description":"Phase 3. Extend CLIRunner with compound steps support. Goroutine-per-step with io.Pipe chaining. All steps start concurrently under shared context.WithTimeout. First nonzero exit cancels context. Per-step stderr logging with step[N] labels. Final step stdout capped at 1MB via io.LimitReader on read side. Validate stdin rules at load time (step 0 = pipe, step N\u003e0 = stdout). Tests: 2-step chain, mid-chain failure, timeout, stderr routing. Depends on: beadle-427. Parent: beadle-mvd","status":"closed","priority":2,"issue_type":"task","owner":"claude@punt-labs.com","created_at":"2026-04-18T07:02:38.337684297-07:00","created_by":"J F","updated_at":"2026-04-18T09:34:11.886483785-07:00","closed_at":"2026-04-18T09:34:11.886483785-07:00","close_reason":"Closed"} {"id":"beadle-j1b","title":"Add install and uninstall subcommands","status":"closed","priority":1,"issue_type":"task","owner":"jmf@pobox.com","created_at":"2026-03-18T06:03:35.808438-07:00","created_by":"\"jmf-pobox\"","updated_at":"2026-03-18T09:03:41.550669-07:00","closed_at":"2026-03-18T09:03:41.550669-07:00","close_reason":"Merged in PR #38. CLI parity (list/read/send/move/folders), global flags (--json/--verbose/--quiet), install/uninstall subcommands."} {"id":"beadle-j25","title":"fix(chain): SendResult.Method should reflect actual SMTP server, not 'proton-bridge-smtp'","description":"TrySendChain hardcodes Method='proton-bridge-smtp' for all SMTP sends regardless of which server was used. Since #126 added smtp_host, the method could be Fastmail, Resend SMTP, or any other server. Should use the actual hostname or a generic 'smtp' label.","status":"closed","priority":3,"issue_type":"bug","owner":"claude@punt-labs.com","created_at":"2026-04-11T14:02:38.304423708-07:00","created_by":"J F","updated_at":"2026-04-12T06:17:30.478292035-07:00","closed_at":"2026-04-12T06:17:30.478292035-07:00","close_reason":"Closed"} diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 2528af9..a81bb21 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { - "name": "beadle-dev", + "name": "beadle", "description": "Autonomous agent daemon with cryptographic owner control. Email communication via IMAP/SMTP with PGP trust model.", - "version": "0.14.1", + "version": "0.15.0", "author": { "name": "Punt Labs", "email": "hello@punt-labs.com" diff --git a/.punt-labs/biff/.gitignore b/.punt-labs/biff/.gitignore new file mode 100644 index 0000000..6bbbabb --- /dev/null +++ b/.punt-labs/biff/.gitignore @@ -0,0 +1 @@ +config.local.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b56241..24b6033 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## [Unreleased] +## [0.15.0] - 2026-04-18 + ### Added - `batch_move_messages` MCP tool: move multiple messages to another folder diff --git a/beadle-daemon b/beadle-daemon new file mode 100755 index 0000000..5ebc40f Binary files /dev/null and b/beadle-daemon differ diff --git a/install.sh b/install.sh index 839ff7a..0fe759a 100755 --- a/install.sh +++ b/install.sh @@ -15,7 +15,7 @@ ok() { printf ' %b✓%b %s\n' "$GREEN" "$NC" "$1"; } warn() { printf ' %b!%b %s\n' "$YELLOW" "$NC" "$1"; } fail() { printf ' %b✗%b %s\n' "$YELLOW" "$NC" "$1"; exit 1; } -VERSION="0.14.1" +VERSION="0.15.0" REPO="punt-labs/beadle" BINARY="beadle-email" INSTALL_DIR="$HOME/.local/bin"