Drop legacy frontend proof-of-concepts (TUI, web UI, HTTP gateway,
Emacs major mode) to focus on the core. Assist remains as the primary
frontend; any 9P-speaking program can serve as a frontend.
Update README, mkfile, .gitignore, and architecture/client-interactions
diagrams accordingly.
- Archive tag accepts YYYYMMdd date (defaults to today)
- Loads messages from ~/.local/share/anvillm/mail/{date}-*.jsonl
- Shows both sent and received with From/To columns
- Inbox '- <id>' now deletes instead of archiving
Add /beads/deferred aggregate endpoint and per-mount /beads/<mount>/deferred
endpoint to list beads with status=deferred.
- internal/p9/beads.go: add readDeferredFromStore and readDeferredAggregate
- internal/p9/server.go: wire up deferred in walk, directory listings
- cmd/Assist: update listBeadsWithFilter to use deferred endpoint
- Beads tagged with scope:<value> label, auto-derived from cwd
- Strict scope matching: bots only see beads matching their scope
- Updated scripts: create_bead, list_beads, list_ready_beads, wait_for_bead, search_beads, batch_create_beads, jira_to_beads, github_to_beads
- Fixed batch-create to handle raw JSON and create beads one at a time
- Added scope to JSON output and BeadReady events
- Add Comment tag to bead view window tagline
- New /AnviLLM/Tasks/{bead-id}/comment window with Put handler
- Fix comments display: JSON field is 'text' not 'body'
Classic cron does not support variable assignments in the crontab.
Inline PLAN9, PATH, DISPLAY, and NAMESPACE exports directly in the
cron command, expanded at install time from the user's environment.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cron runs with a minimal environment; without PLAN9 and the full PATH,
9p cannot locate the namespace socket and sessions are not detected.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
send_message.sh is not on PATH outside the MCP context; use
bash <(9p read anvillm/tools/send_message.sh) instead.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove internal/supervisor Go package. Replace with anvillm-supervisor
script driven by cron: --orphans (every 5m) recovers in_progress beads
whose assignee session has died, --nudge (every 1m) prompts idle worker-
role bots to check for available work via execute_code + wait_for_bead.sh.
Nudges sent as user via send_message.sh. cron-install uses a temp file
to avoid pipeline issues.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the internal/supervisor Go package and cron-driven orphan check
script. Replace with a single anvillm-supervisor script invoked by cron
that handles both orphan bead recovery (--orphans, every 5m) and idle
worker nudging (--nudge, every 1m). Nudges use send_message.sh as user,
consistent with existing mail processing. anvilsrv no longer runs any
supervisor goroutine.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The supervisor drives re-polling via 15s nudges to idle workers.
Roles no longer need to instruct bots to loop — just what to do
when the supervisor prompts them.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace dead assignWork() stub with nudgeIdleWorkers(), which sends a
prompt to any session whose role has worker: true in its front-matter
and has been idle for more than 15 seconds. A 15-second ticker drives
the checks. Bots that should be polling for beads will self-correct
after a brief idle period.
Add Worker bool to RoleMeta, parsed from "worker: true" front-matter,
and IsWorker() helper on RolesFS. Remove unused beads/mailbox/eventbus
deps from the supervisor.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>