@cluesmith/codev 3.2.3 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard-dist/assets/index-BZRTEMtH.css +32 -0
- package/dashboard-dist/assets/{index-BZ1x7x1X.js → index-JCbkpAcV.js} +33 -33
- package/dashboard-dist/assets/index-JCbkpAcV.js.map +1 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +173 -0
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/attach.js +2 -2
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +16 -0
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/inbox.d.ts +42 -0
- package/dist/agent-farm/commands/inbox.d.ts.map +1 -0
- package/dist/agent-farm/commands/inbox.js +129 -0
- package/dist/agent-farm/commands/inbox.js.map +1 -0
- package/dist/agent-farm/commands/interrupt.d.ts +20 -0
- package/dist/agent-farm/commands/interrupt.d.ts.map +1 -0
- package/dist/agent-farm/commands/interrupt.js +65 -0
- package/dist/agent-farm/commands/interrupt.js.map +1 -0
- package/dist/agent-farm/commands/reset/constants.d.ts +52 -0
- package/dist/agent-farm/commands/reset/constants.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/constants.js +52 -0
- package/dist/agent-farm/commands/reset/constants.js.map +1 -0
- package/dist/agent-farm/commands/reset/context.d.ts +230 -0
- package/dist/agent-farm/commands/reset/context.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/context.js +428 -0
- package/dist/agent-farm/commands/reset/context.js.map +1 -0
- package/dist/agent-farm/commands/reset/index.d.ts +192 -0
- package/dist/agent-farm/commands/reset/index.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/index.js +488 -0
- package/dist/agent-farm/commands/reset/index.js.map +1 -0
- package/dist/agent-farm/commands/reset/receipt.d.ts +97 -0
- package/dist/agent-farm/commands/reset/receipt.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/receipt.js +149 -0
- package/dist/agent-farm/commands/reset/receipt.js.map +1 -0
- package/dist/agent-farm/commands/reset/reorient.d.ts +117 -0
- package/dist/agent-farm/commands/reset/reorient.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset/reorient.js +313 -0
- package/dist/agent-farm/commands/reset/reorient.js.map +1 -0
- package/dist/agent-farm/commands/reset.d.ts +19 -0
- package/dist/agent-farm/commands/reset.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset.js +292 -0
- package/dist/agent-farm/commands/reset.js.map +1 -0
- package/dist/agent-farm/commands/send.d.ts +2 -2
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +52 -11
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/setup.d.ts +4 -1
- package/dist/agent-farm/commands/setup.d.ts.map +1 -1
- package/dist/agent-farm/commands/setup.js +8 -4
- package/dist/agent-farm/commands/setup.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +116 -6
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +345 -74
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +13 -1
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +105 -9
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/tower-sweep-husks.d.ts +6 -0
- package/dist/agent-farm/commands/tower-sweep-husks.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower-sweep-husks.js +77 -0
- package/dist/agent-farm/commands/tower-sweep-husks.js.map +1 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +34 -0
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/commands/whoami.d.ts +65 -0
- package/dist/agent-farm/commands/whoami.d.ts.map +1 -0
- package/dist/agent-farm/commands/whoami.js +196 -0
- package/dist/agent-farm/commands/whoami.js.map +1 -0
- package/dist/agent-farm/db/index.d.ts +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +80 -1
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/mailbox.d.ts +222 -0
- package/dist/agent-farm/db/mailbox.d.ts.map +1 -0
- package/dist/agent-farm/db/mailbox.js +304 -0
- package/dist/agent-farm/db/mailbox.js.map +1 -0
- package/dist/agent-farm/db/schema.d.ts +1 -1
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +35 -0
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +45 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.d.ts +1 -1
- package/dist/agent-farm/lib/builder-lookup.js +2 -2
- package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
- package/dist/agent-farm/lib/reconnect-backoff.d.ts +54 -0
- package/dist/agent-farm/lib/reconnect-backoff.d.ts.map +1 -0
- package/dist/agent-farm/lib/reconnect-backoff.js +47 -0
- package/dist/agent-farm/lib/reconnect-backoff.js.map +1 -0
- package/dist/agent-farm/lib/tower-client.d.ts +16 -6
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +37 -6
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.d.ts +69 -1
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +218 -27
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/architect-session-holder.d.ts +133 -0
- package/dist/agent-farm/servers/architect-session-holder.d.ts.map +1 -0
- package/dist/agent-farm/servers/architect-session-holder.js +268 -0
- package/dist/agent-farm/servers/architect-session-holder.js.map +1 -0
- package/dist/agent-farm/servers/cron-delivery.d.ts +72 -0
- package/dist/agent-farm/servers/cron-delivery.d.ts.map +1 -0
- package/dist/agent-farm/servers/cron-delivery.js +80 -0
- package/dist/agent-farm/servers/cron-delivery.js.map +1 -0
- package/dist/agent-farm/servers/delayed-send.d.ts +85 -0
- package/dist/agent-farm/servers/delayed-send.d.ts.map +1 -0
- package/dist/agent-farm/servers/delayed-send.js +165 -0
- package/dist/agent-farm/servers/delayed-send.js.map +1 -0
- package/dist/agent-farm/servers/gate-profiles.d.ts +67 -0
- package/dist/agent-farm/servers/gate-profiles.d.ts.map +1 -0
- package/dist/agent-farm/servers/gate-profiles.js +113 -0
- package/dist/agent-farm/servers/gate-profiles.js.map +1 -0
- package/dist/agent-farm/servers/mailbox-delivery.d.ts +370 -0
- package/dist/agent-farm/servers/mailbox-delivery.d.ts.map +1 -0
- package/dist/agent-farm/servers/mailbox-delivery.js +617 -0
- package/dist/agent-farm/servers/mailbox-delivery.js.map +1 -0
- package/dist/agent-farm/servers/mailbox-wiring.d.ts +125 -0
- package/dist/agent-farm/servers/mailbox-wiring.d.ts.map +1 -0
- package/dist/agent-farm/servers/mailbox-wiring.js +425 -0
- package/dist/agent-farm/servers/mailbox-wiring.js.map +1 -0
- package/dist/agent-farm/servers/message-write.d.ts +53 -1
- package/dist/agent-farm/servers/message-write.d.ts.map +1 -1
- package/dist/agent-farm/servers/message-write.js +63 -0
- package/dist/agent-farm/servers/message-write.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +23 -4
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/process-census.d.ts +41 -0
- package/dist/agent-farm/servers/process-census.d.ts.map +1 -0
- package/dist/agent-farm/servers/process-census.js +62 -0
- package/dist/agent-farm/servers/process-census.js.map +1 -0
- package/dist/agent-farm/servers/render-gate.d.ts +141 -0
- package/dist/agent-farm/servers/render-gate.d.ts.map +1 -0
- package/dist/agent-farm/servers/render-gate.js +251 -0
- package/dist/agent-farm/servers/render-gate.js.map +1 -0
- package/dist/agent-farm/servers/session-log-sweep.d.ts +93 -0
- package/dist/agent-farm/servers/session-log-sweep.d.ts.map +1 -0
- package/dist/agent-farm/servers/session-log-sweep.js +165 -0
- package/dist/agent-farm/servers/session-log-sweep.js.map +1 -0
- package/dist/agent-farm/servers/session-submit.d.ts +90 -0
- package/dist/agent-farm/servers/session-submit.d.ts.map +1 -0
- package/dist/agent-farm/servers/session-submit.js +127 -0
- package/dist/agent-farm/servers/session-submit.js.map +1 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.d.ts +87 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.d.ts.map +1 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.js +129 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.js.map +1 -0
- package/dist/agent-farm/servers/tower-cron.d.ts +10 -7
- package/dist/agent-farm/servers/tower-cron.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-cron.js +58 -53
- package/dist/agent-farm/servers/tower-cron.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts +14 -2
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +128 -19
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-messages.d.ts +38 -1
- package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-messages.js +106 -1
- package/dist/agent-farm/servers/tower-messages.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts +16 -4
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +807 -99
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +241 -15
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +17 -2
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +139 -124
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +63 -4
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-types.d.ts +2 -1
- package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +99 -1
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +242 -6
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +6 -21
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/servers/write-queue.d.ts +35 -0
- package/dist/agent-farm/servers/write-queue.d.ts.map +1 -0
- package/dist/agent-farm/servers/write-queue.js +56 -0
- package/dist/agent-farm/servers/write-queue.js.map +1 -0
- package/dist/agent-farm/state.d.ts +6 -1
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +5 -2
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +39 -0
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/agent-names.d.ts +2 -2
- package/dist/agent-farm/utils/agent-names.d.ts.map +1 -1
- package/dist/agent-farm/utils/agent-names.js +3 -3
- package/dist/agent-farm/utils/agent-names.js.map +1 -1
- package/dist/agent-farm/utils/architect-name.d.ts +2 -2
- package/dist/agent-farm/utils/architect-name.d.ts.map +1 -1
- package/dist/agent-farm/utils/architect-name.js +3 -3
- package/dist/agent-farm/utils/architect-name.js.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +13 -0
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +33 -1
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/harness.d.ts +103 -7
- package/dist/agent-farm/utils/harness.d.ts.map +1 -1
- package/dist/agent-farm/utils/harness.js +126 -19
- package/dist/agent-farm/utils/harness.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -32
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +3 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +7 -6
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/agy-auth-cache.d.ts +97 -0
- package/dist/commands/consult/agy-auth-cache.d.ts.map +1 -0
- package/dist/commands/consult/agy-auth-cache.js +320 -0
- package/dist/commands/consult/agy-auth-cache.js.map +1 -0
- package/dist/commands/consult/cli-options.d.ts +34 -0
- package/dist/commands/consult/cli-options.d.ts.map +1 -0
- package/dist/commands/consult/cli-options.js +67 -0
- package/dist/commands/consult/cli-options.js.map +1 -0
- package/dist/commands/consult/index.d.ts +56 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +330 -27
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/metrics.d.ts +42 -0
- package/dist/commands/consult/metrics.d.ts.map +1 -1
- package/dist/commands/consult/metrics.js +129 -9
- package/dist/commands/consult/metrics.js.map +1 -1
- package/dist/commands/doctor.d.ts +28 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +258 -22
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +3 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +7 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/checks.d.ts +23 -0
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +60 -0
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/config.d.ts +20 -0
- package/dist/commands/porch/config.d.ts.map +1 -1
- package/dist/commands/porch/config.js +20 -0
- package/dist/commands/porch/config.js.map +1 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +32 -36
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +2 -41
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/update.d.ts +4 -4
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -11
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/config.d.ts +70 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +67 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/consult-lanes.d.ts +149 -0
- package/dist/lib/consult-lanes.d.ts.map +1 -0
- package/dist/lib/consult-lanes.js +360 -0
- package/dist/lib/consult-lanes.js.map +1 -0
- package/dist/lib/default-branch.d.ts +1 -1
- package/dist/lib/default-branch.js +1 -1
- package/dist/lib/github.js +1 -1
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/gitignore.d.ts +25 -2
- package/dist/lib/gitignore.d.ts.map +1 -1
- package/dist/lib/gitignore.js +70 -0
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/lib/migration-backup-audit.d.ts +64 -0
- package/dist/lib/migration-backup-audit.d.ts.map +1 -0
- package/dist/lib/migration-backup-audit.js +145 -0
- package/dist/lib/migration-backup-audit.js.map +1 -0
- package/dist/lib/prompt-behavior-metrics.d.ts +67 -0
- package/dist/lib/prompt-behavior-metrics.d.ts.map +1 -0
- package/dist/lib/prompt-behavior-metrics.js +290 -0
- package/dist/lib/prompt-behavior-metrics.js.map +1 -0
- package/dist/lib/protocol-drift-audit.d.ts +118 -0
- package/dist/lib/protocol-drift-audit.d.ts.map +1 -0
- package/dist/lib/protocol-drift-audit.js +217 -0
- package/dist/lib/protocol-drift-audit.js.map +1 -0
- package/dist/lib/scaffold.d.ts +10 -3
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +29 -26
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/lib/skeleton.d.ts +22 -1
- package/dist/lib/skeleton.d.ts.map +1 -1
- package/dist/lib/skeleton.js +120 -0
- package/dist/lib/skeleton.js.map +1 -1
- package/dist/lib/test-env.d.ts +74 -0
- package/dist/lib/test-env.d.ts.map +1 -0
- package/dist/lib/test-env.js +92 -0
- package/dist/lib/test-env.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +9 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +32 -6
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +156 -4
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +307 -42
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/ring-buffer.d.ts +39 -6
- package/dist/terminal/ring-buffer.d.ts.map +1 -1
- package/dist/terminal/ring-buffer.js +74 -6
- package/dist/terminal/ring-buffer.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +129 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +337 -44
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/session-screen.d.ts +91 -0
- package/dist/terminal/session-screen.d.ts.map +1 -0
- package/dist/terminal/session-screen.js +135 -0
- package/dist/terminal/session-screen.js.map +1 -0
- package/dist/terminal/shellper-client.d.ts +19 -4
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +70 -8
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-main.js +2 -1
- package/dist/terminal/shellper-main.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +1 -1
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +33 -9
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +40 -2
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js +72 -5
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/dist/terminal/shellper-replay-buffer.d.ts +69 -7
- package/dist/terminal/shellper-replay-buffer.d.ts.map +1 -1
- package/dist/terminal/shellper-replay-buffer.js +167 -31
- package/dist/terminal/shellper-replay-buffer.js.map +1 -1
- package/package.json +11 -9
- package/skeleton/.claude/skills/afx/SKILL.md +27 -1
- package/skeleton/.claude/skills/arch-init/SKILL.md +135 -0
- package/skeleton/.claude/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.claude/skills/codev/SKILL.md +33 -2
- package/skeleton/.claude/skills/runnable-worktrees/SKILL.md +119 -0
- package/skeleton/.codex/skills/afx/SKILL.md +170 -0
- package/skeleton/.codex/skills/arch-init/SKILL.md +135 -0
- package/skeleton/.codex/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.codex/skills/codev/SKILL.md +90 -0
- package/skeleton/.codex/skills/consult/SKILL.md +96 -0
- package/skeleton/.codex/skills/generate-image/SKILL.md +45 -0
- package/skeleton/.codex/skills/porch/SKILL.md +60 -0
- package/skeleton/.codex/skills/runnable-worktrees/SKILL.md +119 -0
- package/skeleton/.codex/skills/update-arch-docs/SKILL.md +132 -0
- package/skeleton/protocols/air/builder-prompt.md +28 -47
- package/skeleton/protocols/air/consult-types/impl-review.md +17 -34
- package/skeleton/protocols/air/consult-types/pr-review.md +14 -37
- package/skeleton/protocols/air/prompts/implement.md +20 -73
- package/skeleton/protocols/air/prompts/pr.md +22 -54
- package/skeleton/protocols/air/protocol.md +40 -71
- package/skeleton/protocols/aspir/builder-prompt.md +29 -66
- package/skeleton/protocols/aspir/consult-types/impl-review.md +17 -44
- package/skeleton/protocols/aspir/consult-types/phase-review.md +17 -44
- package/skeleton/protocols/aspir/consult-types/plan-review.md +14 -38
- package/skeleton/protocols/aspir/consult-types/pr-review.md +13 -39
- package/skeleton/protocols/aspir/consult-types/spec-review.md +13 -33
- package/skeleton/protocols/aspir/prompts/implement.md +27 -196
- package/skeleton/protocols/aspir/prompts/plan.md +21 -85
- package/skeleton/protocols/aspir/prompts/review.md +29 -228
- package/skeleton/protocols/aspir/prompts/specify.md +25 -111
- package/skeleton/protocols/aspir/protocol.json +10 -0
- package/skeleton/protocols/aspir/protocol.md +36 -82
- package/skeleton/protocols/bugfix/builder-prompt.md +23 -45
- package/skeleton/protocols/bugfix/consult-types/impl-review.md +21 -45
- package/skeleton/protocols/bugfix/consult-types/pr-review.md +18 -52
- package/skeleton/protocols/bugfix/prompts/fix.md +16 -61
- package/skeleton/protocols/bugfix/prompts/investigate.md +18 -62
- package/skeleton/protocols/bugfix/prompts/pr.md +22 -57
- package/skeleton/protocols/bugfix/protocol.md +44 -50
- package/skeleton/protocols/experiment/builder-prompt.md +25 -58
- package/skeleton/protocols/experiment/protocol.md +22 -188
- package/skeleton/protocols/experiment/templates/notes.md +11 -71
- package/skeleton/protocols/maintain/builder-prompt.md +24 -45
- package/skeleton/protocols/maintain/consult-types/impl-review.md +17 -44
- package/skeleton/protocols/maintain/consult-types/pr-review.md +13 -39
- package/skeleton/protocols/maintain/prompts/maintain.md +1 -1
- package/skeleton/protocols/maintain/protocol.md +32 -266
- package/skeleton/protocols/maintain/templates/maintenance-run.md +11 -0
- package/skeleton/protocols/pir/builder-prompt.md +30 -64
- package/skeleton/protocols/pir/consult-types/impl-review.md +17 -50
- package/skeleton/protocols/pir/consult-types/pr-review.md +11 -40
- package/skeleton/protocols/pir/prompts/implement.md +1 -2
- package/skeleton/protocols/pir/prompts/plan.md +0 -3
- package/skeleton/protocols/pir/prompts/review.md +1 -1
- package/skeleton/protocols/pir/protocol.md +54 -177
- package/skeleton/protocols/research/builder-prompt.md +27 -58
- package/skeleton/protocols/research/protocol.md +28 -153
- package/skeleton/protocols/spike/builder-prompt.md +30 -48
- package/skeleton/protocols/spike/protocol.md +24 -107
- package/skeleton/protocols/spike/templates/findings.md +9 -39
- package/skeleton/protocols/spir/builder-prompt.md +33 -62
- package/skeleton/protocols/spir/consult-types/impl-review.md +17 -44
- package/skeleton/protocols/spir/consult-types/phase-review.md +17 -44
- package/skeleton/protocols/spir/consult-types/plan-review.md +14 -38
- package/skeleton/protocols/spir/consult-types/pr-review.md +13 -39
- package/skeleton/protocols/spir/consult-types/spec-review.md +13 -33
- package/skeleton/protocols/spir/prompts/implement.md +26 -195
- package/skeleton/protocols/spir/prompts/plan.md +20 -84
- package/skeleton/protocols/spir/prompts/review.md +28 -227
- package/skeleton/protocols/spir/prompts/specify.md +24 -110
- package/skeleton/protocols/spir/protocol.json +10 -0
- package/skeleton/protocols/spir/protocol.md +84 -633
- package/skeleton/protocols/spir/templates/plan.md +28 -147
- package/skeleton/protocols/spir/templates/review.md +21 -80
- package/skeleton/protocols/spir/templates/spec.md +24 -118
- package/skeleton/resources/commands/agent-farm.md +348 -0
- package/skeleton/resources/commands/codev.md +5 -0
- package/skeleton/resources/commands/consult.md +262 -8
- package/skeleton/resources/commands/overview.md +1 -0
- package/skeleton/roles/architect.md +67 -306
- package/skeleton/roles/builder.md +77 -191
- package/skeleton/templates/AGENTS.md +2 -0
- package/skeleton/templates/CLAUDE.md +2 -0
- package/templates/tower.html +39 -2
- package/dashboard-dist/assets/index-BZ1x7x1X.js.map +0 -1
- package/dashboard-dist/assets/index-DB1KBSNE.css +0 -32
- package/dist/agent-farm/servers/send-buffer.d.ts +0 -59
- package/dist/agent-farm/servers/send-buffer.d.ts.map +0 -1
- package/dist/agent-farm/servers/send-buffer.js +0 -103
- package/dist/agent-farm/servers/send-buffer.js.map +0 -1
- package/skeleton/porch/prompts/defend.md +0 -108
- package/skeleton/porch/prompts/diagnose.md +0 -70
- package/skeleton/porch/prompts/evaluate.md +0 -132
- package/skeleton/porch/prompts/fix.md +0 -59
- package/skeleton/porch/prompts/implement.md +0 -88
- package/skeleton/porch/prompts/plan.md +0 -74
- package/skeleton/porch/prompts/pr.md +0 -84
- package/skeleton/porch/prompts/review.md +0 -249
- package/skeleton/porch/prompts/specify.md +0 -53
- package/skeleton/porch/prompts/test.md +0 -63
- package/skeleton/protocols/aspir/templates/plan.md +0 -184
- package/skeleton/protocols/aspir/templates/review.md +0 -120
- package/skeleton/protocols/aspir/templates/spec.md +0 -154
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whoami command — report this terminal's agent identity (Spec 1134).
|
|
3
|
+
*
|
|
4
|
+
* Answers "who am I, from Tower/global.db's perspective?" for any terminal:
|
|
5
|
+
* builders resolve from their worktree cwd against global.db, architects from
|
|
6
|
+
* the Tower-injected CODEV_ARCHITECT_NAME env var. Identity precedence is
|
|
7
|
+
* fixed by the spec: builder-worktree cwd match → CODEV_ARCHITECT_NAME →
|
|
8
|
+
* unknown (exit non-zero). There is deliberately NO implicit fallback to
|
|
9
|
+
* 'main' — an unverified identity misroutes downstream consumers (issue
|
|
10
|
+
* #1094), so unknown must fail loud.
|
|
11
|
+
*
|
|
12
|
+
* Read-only invariant: this command never opens global.db read-write. Builder
|
|
13
|
+
* resolution reuses detectCurrentBuilderId() (its own read-only connection);
|
|
14
|
+
* all whoami-specific queries share one read-only connection opened here.
|
|
15
|
+
*
|
|
16
|
+
* The identity helpers are imported from ./send.js rather than relocated:
|
|
17
|
+
* they are already exported and tested there, and whoami is only their second
|
|
18
|
+
* consumer (extraction deferred until a third appears).
|
|
19
|
+
*/
|
|
20
|
+
export interface WhoamiOptions {
|
|
21
|
+
json?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolved identity. `architect` (builder) is omitted when the row's
|
|
25
|
+
* `spawned_by_architect` is NULL (legacy) or missing. `rowMissing`
|
|
26
|
+
* (architect) marks a best-effort diagnostic: the env var named an architect
|
|
27
|
+
* but no matching `architect` table row exists — surfaced as a stderr
|
|
28
|
+
* warning, never a failure (rows are legitimately absent after crashes).
|
|
29
|
+
*/
|
|
30
|
+
export type WhoamiIdentity = {
|
|
31
|
+
type: 'builder';
|
|
32
|
+
workspace: string;
|
|
33
|
+
name: string;
|
|
34
|
+
architect?: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'architect';
|
|
37
|
+
workspace: string;
|
|
38
|
+
name: string;
|
|
39
|
+
rowMissing?: boolean;
|
|
40
|
+
};
|
|
41
|
+
/** Thrown when no identity signal resolves. Message is the user-facing text. */
|
|
42
|
+
export declare class WhoamiError extends Error {
|
|
43
|
+
constructor(message: string);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve the current terminal's identity per the spec precedence.
|
|
47
|
+
*
|
|
48
|
+
* Throws `BuilderIdResolutionError` when cwd IS a builder worktree whose
|
|
49
|
+
* identity cannot be verified (no fallthrough to the env check — #1094), and
|
|
50
|
+
* `WhoamiError` when no identity signal resolves at all.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveIdentity(env?: NodeJS.ProcessEnv): WhoamiIdentity;
|
|
53
|
+
/** Format an identity as the human-readable `key: value` lines. */
|
|
54
|
+
export declare function formatIdentity(identity: WhoamiIdentity): string;
|
|
55
|
+
/** Format an identity as the JSON payload (`architect` omitted when unknown). */
|
|
56
|
+
export declare function identityToJson(identity: WhoamiIdentity): Record<string, string>;
|
|
57
|
+
/**
|
|
58
|
+
* `afx whoami` — print this terminal's identity.
|
|
59
|
+
*
|
|
60
|
+
* Success: identity to stdout (text or --json), exit 0.
|
|
61
|
+
* Unknown identity: explanation to stderr (always), `{ "error": ... }` to
|
|
62
|
+
* stdout under --json, exit 1 via process.exitCode (streams flush).
|
|
63
|
+
*/
|
|
64
|
+
export declare function whoami(options?: WhoamiOptions): Promise<void>;
|
|
65
|
+
//# sourceMappingURL=whoami.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjF,gFAAgF;AAChF,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAsCD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CA+DpF;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAM/D;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/E;AAED;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BvE"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whoami command — report this terminal's agent identity (Spec 1134).
|
|
3
|
+
*
|
|
4
|
+
* Answers "who am I, from Tower/global.db's perspective?" for any terminal:
|
|
5
|
+
* builders resolve from their worktree cwd against global.db, architects from
|
|
6
|
+
* the Tower-injected CODEV_ARCHITECT_NAME env var. Identity precedence is
|
|
7
|
+
* fixed by the spec: builder-worktree cwd match → CODEV_ARCHITECT_NAME →
|
|
8
|
+
* unknown (exit non-zero). There is deliberately NO implicit fallback to
|
|
9
|
+
* 'main' — an unverified identity misroutes downstream consumers (issue
|
|
10
|
+
* #1094), so unknown must fail loud.
|
|
11
|
+
*
|
|
12
|
+
* Read-only invariant: this command never opens global.db read-write. Builder
|
|
13
|
+
* resolution reuses detectCurrentBuilderId() (its own read-only connection);
|
|
14
|
+
* all whoami-specific queries share one read-only connection opened here.
|
|
15
|
+
*
|
|
16
|
+
* The identity helpers are imported from ./send.js rather than relocated:
|
|
17
|
+
* they are already exported and tested there, and whoami is only their second
|
|
18
|
+
* consumer (extraction deferred until a third appears).
|
|
19
|
+
*/
|
|
20
|
+
import { basename } from 'node:path';
|
|
21
|
+
import Database from 'better-sqlite3';
|
|
22
|
+
import { detectCurrentBuilderId, detectWorkspaceRoot, BuilderIdResolutionError } from './send.js';
|
|
23
|
+
import { lookupBuilderSpawningArchitect } from '../state.js';
|
|
24
|
+
import { getGlobalDbPath } from '../db/index.js';
|
|
25
|
+
import { normalizeWorkspacePath } from '../utils/workspace-path.js';
|
|
26
|
+
/** Thrown when no identity signal resolves. Message is the user-facing text. */
|
|
27
|
+
export class WhoamiError extends Error {
|
|
28
|
+
constructor(message) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.name = 'WhoamiError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Open global.db read-only, or return null when it is missing/unopenable.
|
|
35
|
+
* Null degrades gracefully: the informational lookups (workspace display
|
|
36
|
+
* name, spawning architect, architect-row cross-check) are skipped. Identity
|
|
37
|
+
* itself never depends on this handle — the builder path already verified
|
|
38
|
+
* against the db inside detectCurrentBuilderId(), and the architect path is
|
|
39
|
+
* env-based.
|
|
40
|
+
*/
|
|
41
|
+
function openReadonlyGlobalDb() {
|
|
42
|
+
try {
|
|
43
|
+
return new Database(getGlobalDbPath(), { readonly: true });
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Display name for the workspace: the `known_workspaces` registry entry when
|
|
51
|
+
* present, else the directory basename. Informational context only — the
|
|
52
|
+
* spec's fail-loud rule applies to type/name, not this field.
|
|
53
|
+
*/
|
|
54
|
+
function workspaceDisplayName(workspaceRoot, db) {
|
|
55
|
+
const root = workspaceRoot ?? process.cwd();
|
|
56
|
+
if (db) {
|
|
57
|
+
try {
|
|
58
|
+
const row = db
|
|
59
|
+
.prepare('SELECT name FROM known_workspaces WHERE workspace_path = ?')
|
|
60
|
+
.get(normalizeWorkspacePath(root));
|
|
61
|
+
if (row?.name)
|
|
62
|
+
return row.name;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Table missing or query failure — informational field, fall through.
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return basename(root);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Resolve the current terminal's identity per the spec precedence.
|
|
72
|
+
*
|
|
73
|
+
* Throws `BuilderIdResolutionError` when cwd IS a builder worktree whose
|
|
74
|
+
* identity cannot be verified (no fallthrough to the env check — #1094), and
|
|
75
|
+
* `WhoamiError` when no identity signal resolves at all.
|
|
76
|
+
*/
|
|
77
|
+
export function resolveIdentity(env = process.env) {
|
|
78
|
+
// 1. Builder-worktree cwd match. A BuilderIdResolutionError propagates
|
|
79
|
+
// verbatim: inside a confirmed worktree, an unverifiable identity is an
|
|
80
|
+
// error, never a reason to consult the env var.
|
|
81
|
+
const builderId = detectCurrentBuilderId();
|
|
82
|
+
const workspaceRoot = detectWorkspaceRoot();
|
|
83
|
+
const db = openReadonlyGlobalDb();
|
|
84
|
+
try {
|
|
85
|
+
if (builderId) {
|
|
86
|
+
const identity = {
|
|
87
|
+
type: 'builder',
|
|
88
|
+
workspace: workspaceDisplayName(workspaceRoot, db),
|
|
89
|
+
name: builderId,
|
|
90
|
+
};
|
|
91
|
+
if (db) {
|
|
92
|
+
try {
|
|
93
|
+
const spawnedBy = lookupBuilderSpawningArchitect(builderId, workspaceRoot ?? undefined, db);
|
|
94
|
+
if (spawnedBy)
|
|
95
|
+
identity.architect = spawnedBy;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Enrichment only — the identity is already verified; a lookup
|
|
99
|
+
// failure means "not recorded", not "unknown identity".
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return identity;
|
|
103
|
+
}
|
|
104
|
+
// 2. Tower-injected architect env var. Read directly, NOT via
|
|
105
|
+
// currentArchitectName() — its default of 'main' is exactly the
|
|
106
|
+
// implicit fallback whoami must not have.
|
|
107
|
+
const architectName = env.CODEV_ARCHITECT_NAME?.trim();
|
|
108
|
+
if (architectName) {
|
|
109
|
+
const identity = {
|
|
110
|
+
type: 'architect',
|
|
111
|
+
workspace: workspaceDisplayName(workspaceRoot, db),
|
|
112
|
+
name: architectName,
|
|
113
|
+
};
|
|
114
|
+
// Best-effort cross-check against the architect table (diagnostics
|
|
115
|
+
// only): a missing row is a warning, never a failure — rows are
|
|
116
|
+
// legitimately absent in the crash-recovery scenarios whoami serves.
|
|
117
|
+
if (db && workspaceRoot) {
|
|
118
|
+
try {
|
|
119
|
+
const row = db
|
|
120
|
+
.prepare('SELECT 1 AS present FROM architect WHERE workspace_path = ? AND id = ?')
|
|
121
|
+
.get(normalizeWorkspacePath(workspaceRoot), architectName);
|
|
122
|
+
if (!row)
|
|
123
|
+
identity.rowMissing = true;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Swallowed by design — this check never affects output or exit code.
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return identity;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
db?.close();
|
|
134
|
+
}
|
|
135
|
+
// 3. Fail loud. No implicit 'main'.
|
|
136
|
+
throw new WhoamiError('Cannot determine agent identity: the current directory is not inside a ' +
|
|
137
|
+
'.builders/<id>/ worktree and CODEV_ARCHITECT_NAME is not set. ' +
|
|
138
|
+
'Likely causes: a plain shell, a terminal not started by Tower, or a ' +
|
|
139
|
+
'pre-#786 architect terminal. Refusing to guess (issue #1094) — ' +
|
|
140
|
+
'identity must come from a verified signal, never a default.');
|
|
141
|
+
}
|
|
142
|
+
/** Format an identity as the human-readable `key: value` lines. */
|
|
143
|
+
export function formatIdentity(identity) {
|
|
144
|
+
const lines = [`workspace: ${identity.workspace}`, `type: ${identity.type}`, `name: ${identity.name}`];
|
|
145
|
+
if (identity.type === 'builder' && identity.architect) {
|
|
146
|
+
lines.push(`architect: ${identity.architect}`);
|
|
147
|
+
}
|
|
148
|
+
return lines.join('\n');
|
|
149
|
+
}
|
|
150
|
+
/** Format an identity as the JSON payload (`architect` omitted when unknown). */
|
|
151
|
+
export function identityToJson(identity) {
|
|
152
|
+
const payload = {
|
|
153
|
+
workspace: identity.workspace,
|
|
154
|
+
type: identity.type,
|
|
155
|
+
name: identity.name,
|
|
156
|
+
};
|
|
157
|
+
if (identity.type === 'builder' && identity.architect) {
|
|
158
|
+
payload.architect = identity.architect;
|
|
159
|
+
}
|
|
160
|
+
return payload;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* `afx whoami` — print this terminal's identity.
|
|
164
|
+
*
|
|
165
|
+
* Success: identity to stdout (text or --json), exit 0.
|
|
166
|
+
* Unknown identity: explanation to stderr (always), `{ "error": ... }` to
|
|
167
|
+
* stdout under --json, exit 1 via process.exitCode (streams flush).
|
|
168
|
+
*/
|
|
169
|
+
export async function whoami(options = {}) {
|
|
170
|
+
let identity;
|
|
171
|
+
try {
|
|
172
|
+
identity = resolveIdentity();
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
if (!(err instanceof WhoamiError) && !(err instanceof BuilderIdResolutionError))
|
|
176
|
+
throw err;
|
|
177
|
+
process.stderr.write(`${err.message}\n`);
|
|
178
|
+
if (options.json) {
|
|
179
|
+
process.stdout.write(`${JSON.stringify({ error: err.message })}\n`);
|
|
180
|
+
}
|
|
181
|
+
process.exitCode = 1;
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (identity.type === 'architect' && identity.rowMissing) {
|
|
185
|
+
process.stderr.write(`warning: CODEV_ARCHITECT_NAME='${identity.name}' but no matching architect row ` +
|
|
186
|
+
`in global.db for this workspace (Tower may not have registered this terminal, ` +
|
|
187
|
+
`or it predates a crash). Identity is reported from the env signal.\n`);
|
|
188
|
+
}
|
|
189
|
+
if (options.json) {
|
|
190
|
+
process.stdout.write(`${JSON.stringify(identityToJson(identity))}\n`);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
process.stdout.write(`${formatIdentity(identity)}\n`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/whoami.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,5 +50,5 @@ export declare function getDbPath(): string;
|
|
|
50
50
|
export declare function getGlobalDbPath(): string;
|
|
51
51
|
export { LOCAL_SCHEMA, GLOBAL_SCHEMA } from './schema.js';
|
|
52
52
|
export { withRetry } from './errors.js';
|
|
53
|
-
export type { DbArchitect, DbBuilder, DbUtil, DbAnnotation, } from './types.js';
|
|
53
|
+
export type { DbArchitect, DbBuilder, DbUtil, DbAnnotation, DbMailbox, MailboxStatus, MailboxReason, } from './types.js';
|
|
54
54
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA+CtC;;;;;;;;;GASG;AACH,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAEzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA+CtC;;;;;;;;;GASG;AACH,wBAAgB,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAEzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAK/C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAgfD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,WAAW,EACX,SAAS,EACT,MAAM,EACN,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -124,7 +124,7 @@ function ensureGlobalDatabase() {
|
|
|
124
124
|
const db = new Database(dbPath);
|
|
125
125
|
configurePragmas(db);
|
|
126
126
|
// Current migration version — bump when adding new migrations
|
|
127
|
-
const GLOBAL_CURRENT_VERSION =
|
|
127
|
+
const GLOBAL_CURRENT_VERSION = 17;
|
|
128
128
|
// Detect fresh vs existing database by checking if content tables exist.
|
|
129
129
|
// On existing databases, GLOBAL_SCHEMA must NOT run because it references column names
|
|
130
130
|
// (workspace_path) that don't exist until migration v9 renames them from project_path.
|
|
@@ -502,6 +502,85 @@ function ensureGlobalDatabase() {
|
|
|
502
502
|
db.prepare('INSERT INTO _migrations (version) VALUES (14)').run();
|
|
503
503
|
console.log('[info] Absorbed state.db tables into global.db (Issue #1118)');
|
|
504
504
|
}
|
|
505
|
+
// Migration v15: Add mailbox table (Spec 1313 — mailbox-first delivery).
|
|
506
|
+
// Additive new table: every `afx send` is persisted here before the send
|
|
507
|
+
// response returns, so nothing is lost to a Tower crash/restart/shutdown.
|
|
508
|
+
// Rows address AGENTS (to_agent), not PTYs, so a respawned terminal drains its
|
|
509
|
+
// predecessor's mail. No rows to migrate — the retired SendBuffer was in-memory.
|
|
510
|
+
// Idempotent via CREATE TABLE / CREATE INDEX IF NOT EXISTS (fresh installs
|
|
511
|
+
// already created it from GLOBAL_SCHEMA and reach the marker as a no-op).
|
|
512
|
+
const v15 = db.prepare('SELECT version FROM _migrations WHERE version = 15').get();
|
|
513
|
+
if (!v15) {
|
|
514
|
+
db.exec(`
|
|
515
|
+
CREATE TABLE IF NOT EXISTS mailbox (
|
|
516
|
+
id TEXT PRIMARY KEY,
|
|
517
|
+
workspace_path TEXT NOT NULL,
|
|
518
|
+
to_agent TEXT NOT NULL,
|
|
519
|
+
terminal_id TEXT,
|
|
520
|
+
from_agent TEXT,
|
|
521
|
+
from_workspace TEXT,
|
|
522
|
+
body TEXT NOT NULL,
|
|
523
|
+
formatted_message TEXT NOT NULL,
|
|
524
|
+
no_enter INTEGER NOT NULL DEFAULT 0,
|
|
525
|
+
status TEXT NOT NULL DEFAULT 'held'
|
|
526
|
+
CHECK(status IN ('held', 'delivered', 'superseded', 'dismissed')),
|
|
527
|
+
reason TEXT CHECK(reason IN ('busy', 'no-profile', 'no-live-pty')),
|
|
528
|
+
supersede_key TEXT,
|
|
529
|
+
escalated INTEGER NOT NULL DEFAULT 0,
|
|
530
|
+
created_at INTEGER NOT NULL,
|
|
531
|
+
updated_at INTEGER NOT NULL,
|
|
532
|
+
resolved_at INTEGER
|
|
533
|
+
);
|
|
534
|
+
CREATE INDEX IF NOT EXISTS idx_mailbox_workspace_status ON mailbox(workspace_path, status);
|
|
535
|
+
CREATE INDEX IF NOT EXISTS idx_mailbox_agent_drain ON mailbox(workspace_path, to_agent, status);
|
|
536
|
+
CREATE INDEX IF NOT EXISTS idx_mailbox_supersede ON mailbox(supersede_key);
|
|
537
|
+
`);
|
|
538
|
+
db.prepare('INSERT INTO _migrations (version) VALUES (15)').run();
|
|
539
|
+
console.log('[info] Created mailbox table (Spec 1313)');
|
|
540
|
+
}
|
|
541
|
+
// Migration v16: Add command column to terminal_sessions (Spec 1313).
|
|
542
|
+
// The render-gate resolves an agent's classifier profile from its launch
|
|
543
|
+
// command (PtySession.command). Shellper-backed sessions were created with
|
|
544
|
+
// command: '' and the profile fell back to reading `.builder-start.sh` —
|
|
545
|
+
// which only builder worktrees have. Architects run in the workspace root
|
|
546
|
+
// (no launch script), so they never resolved and every `afx send architect`
|
|
547
|
+
// held `no-profile`. Persisting the command lets the reconcile/reconnect
|
|
548
|
+
// paths restore identity after a Tower restart, so architects resolve
|
|
549
|
+
// directly and survive restart (builders keep the launch-script backstop).
|
|
550
|
+
// Mirrors the label (v11) / cwd (v12) column adds.
|
|
551
|
+
const v16 = db.prepare('SELECT version FROM _migrations WHERE version = 16').get();
|
|
552
|
+
if (!v16) {
|
|
553
|
+
// Only skip the ALTER when the column genuinely exists already (fresh install
|
|
554
|
+
// ran GLOBAL_SCHEMA). A blanket try/catch would let a REAL alter failure be
|
|
555
|
+
// recorded as "migrated" — and since saveTerminalSession's INSERT now names
|
|
556
|
+
// `command`, every future write would then fail against a table missing it.
|
|
557
|
+
const hasCommand = db.prepare(`PRAGMA table_info(terminal_sessions)`).all()
|
|
558
|
+
.some((c) => c.name === 'command');
|
|
559
|
+
if (!hasCommand) {
|
|
560
|
+
db.exec(`ALTER TABLE terminal_sessions ADD COLUMN command TEXT`);
|
|
561
|
+
}
|
|
562
|
+
db.prepare('INSERT INTO _migrations (version) VALUES (16)').run();
|
|
563
|
+
console.log('[info] Added command column to terminal_sessions (Spec 1313 restart-safe render-gate identity)');
|
|
564
|
+
}
|
|
565
|
+
// Migration v17: Add not_before column to mailbox (Spec 1313 round 3 — durable `--delay`).
|
|
566
|
+
// `afx send --delay` now persists its row at REQUEST time with not_before = now + delay*1000
|
|
567
|
+
// and defers delivery through the render gate, so a delayed send survives a Tower restart
|
|
568
|
+
// (the conscious reversal of Spec 1307's drop-on-restart semantics). A row is deliverable
|
|
569
|
+
// only when `not_before IS NULL OR not_before <= now`; null means deliver-ASAP (every
|
|
570
|
+
// pre-round-3 row). PRAGMA-gated ADD COLUMN mirroring v16 — a blanket try/catch would let a
|
|
571
|
+
// real ALTER failure be recorded as "migrated" and every subsequent mailbox insert (which
|
|
572
|
+
// now names not_before) would then fail against a table missing it. Do NOT edit v15 in place:
|
|
573
|
+
// dev machines on this branch already applied it, so the column must arrive as its own step.
|
|
574
|
+
const v17 = db.prepare('SELECT version FROM _migrations WHERE version = 17').get();
|
|
575
|
+
if (!v17) {
|
|
576
|
+
const hasNotBefore = db.prepare(`PRAGMA table_info(mailbox)`).all()
|
|
577
|
+
.some((c) => c.name === 'not_before');
|
|
578
|
+
if (!hasNotBefore) {
|
|
579
|
+
db.exec(`ALTER TABLE mailbox ADD COLUMN not_before INTEGER`);
|
|
580
|
+
}
|
|
581
|
+
db.prepare('INSERT INTO _migrations (version) VALUES (17)').run();
|
|
582
|
+
console.log('[info] Added not_before column to mailbox (Spec 1313 durable --delay)');
|
|
583
|
+
}
|
|
505
584
|
return db;
|
|
506
585
|
}
|
|
507
586
|
// Re-export types and utilities
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent-farm/db/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mailbox repository (Spec 1313 — mailbox-first delivery).
|
|
3
|
+
*
|
|
4
|
+
* Pure, unit-testable data operations over the `mailbox` table. Every `afx send`
|
|
5
|
+
* is persisted here *before* the send response returns, so nothing is lost to a
|
|
6
|
+
* Tower crash, restart, or shutdown. This module is deliberately decoupled from
|
|
7
|
+
* delivery: it never writes to a PTY and never runs the render-gate. The delivery
|
|
8
|
+
* orchestration (Phase 4) wires against these proven operations.
|
|
9
|
+
*
|
|
10
|
+
* Design notes:
|
|
11
|
+
* - Functions take an explicit `db` handle first (matching `db/consolidate.ts`),
|
|
12
|
+
* which keeps them trivially testable against any better-sqlite3 database.
|
|
13
|
+
* - Timestamps are epoch-ms integers supplied by the caller (defaulting to
|
|
14
|
+
* `Date.now()`), so ordering and age math are deterministic and test-injectable.
|
|
15
|
+
* - `workspace_path` is treated as an opaque addressing key: callers pass a
|
|
16
|
+
* canonical path (the send boundary canonicalizes in Phase 4), mirroring how
|
|
17
|
+
* `cron_tasks` scopes by workspace. This module does not canonicalize.
|
|
18
|
+
* - The lifecycle state machine (`held → delivered | superseded | dismissed`) is
|
|
19
|
+
* enforced here: every transition targets only `held` rows, so a terminal row
|
|
20
|
+
* can never revert (no `delivered → held`) and `supersede` only replaces a row
|
|
21
|
+
* that is still `held`.
|
|
22
|
+
*/
|
|
23
|
+
import type Database from 'better-sqlite3';
|
|
24
|
+
import type { DbMailbox, MailboxReason } from './types.js';
|
|
25
|
+
/**
|
|
26
|
+
* Fields a caller supplies to persist a new held row. The repository fills in the
|
|
27
|
+
* id, `held` status, `escalated=0`, and the timestamps.
|
|
28
|
+
*/
|
|
29
|
+
export interface EnqueueInput {
|
|
30
|
+
workspacePath: string;
|
|
31
|
+
toAgent: string;
|
|
32
|
+
/** Raw message body (never logged). */
|
|
33
|
+
body: string;
|
|
34
|
+
/** Exact bytes written to the PTY on delivery. */
|
|
35
|
+
formattedMessage: string;
|
|
36
|
+
/** Last-known PTY hint; the recipient is the agent, not this terminal. */
|
|
37
|
+
terminalId?: string | null;
|
|
38
|
+
fromAgent?: string | null;
|
|
39
|
+
fromWorkspace?: string | null;
|
|
40
|
+
/** Stage the text without submitting (no trailing Enter). */
|
|
41
|
+
noEnter?: boolean;
|
|
42
|
+
/** Initial why-held reason; null if it will be delivered immediately. */
|
|
43
|
+
reason?: MailboxReason | null;
|
|
44
|
+
/** Cron-only coalescing key; null for direct sends. */
|
|
45
|
+
supersedeKey?: string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Delayed-send due time in epoch-ms (Spec 1313 round 3 — `--delay`). null means
|
|
48
|
+
* deliver-ASAP (every non-delayed send). A row is deliverable only once
|
|
49
|
+
* `not_before IS NULL OR not_before <= now`; a delayed send persists this at REQUEST
|
|
50
|
+
* time so the delay is durable across a Tower restart.
|
|
51
|
+
*/
|
|
52
|
+
notBefore?: number | null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Persist a new `held` row and return it. This is the persist-first step: the row
|
|
56
|
+
* exists (and survives a crash) before any delivery is attempted.
|
|
57
|
+
*/
|
|
58
|
+
export declare function enqueue(db: Database.Database, input: EnqueueInput, now?: number): DbMailbox;
|
|
59
|
+
/** Fetch a single row by id, or null if it does not exist. */
|
|
60
|
+
export declare function getById(db: Database.Database, id: string): DbMailbox | null;
|
|
61
|
+
/**
|
|
62
|
+
* List all currently-held rows, oldest first. Scoped to `workspacePath` when
|
|
63
|
+
* provided, else workspace-wide (for `afx inbox`). `id` breaks created_at ties
|
|
64
|
+
* for deterministic ordering.
|
|
65
|
+
*/
|
|
66
|
+
export declare function listHeld(db: Database.Database, workspacePath?: string): DbMailbox[];
|
|
67
|
+
/**
|
|
68
|
+
* ELIGIBLE held rows addressed to a specific agent, in enqueue order (`created_at ASC`).
|
|
69
|
+
* This is the per-agent drain order a delivery pass walks.
|
|
70
|
+
*
|
|
71
|
+
* Spec 1313 round 3 (`--delay`): a row is deliverable only when
|
|
72
|
+
* `not_before IS NULL OR not_before <= now` — a pre-due delayed send is EXCLUDED here, so it
|
|
73
|
+
* neither delivers early nor blocks a later normal message (the drainer picks `held[0]`, the
|
|
74
|
+
* oldest ELIGIBLE row). It becomes eligible on the first pass at/after its due time. `now`
|
|
75
|
+
* defaults to `Date.now()` and is injectable for deterministic tests.
|
|
76
|
+
*/
|
|
77
|
+
export declare function findHeldForAgent(db: Database.Database, workspacePath: string, toAgent: string, now?: number): DbMailbox[];
|
|
78
|
+
/**
|
|
79
|
+
* Held rows whose escalation age ({@link ESCALATION_START_SQL} → now) has crossed `maxAgeMs`
|
|
80
|
+
* and that have NOT yet been escalated. Tower-global (every workspace) — the drainer's
|
|
81
|
+
* escalation pass walks these once per tick to flip `escalated` and emit the visibility
|
|
82
|
+
* broadcast. Bounded by the (small) held set, so a full scan is fine. Oldest effective-start
|
|
83
|
+
* escalates first.
|
|
84
|
+
*
|
|
85
|
+
* Spec 1313 round 3: a PRE-DUE delayed row never escalates — its effective start is its
|
|
86
|
+
* future `not_before`, which cannot be `< cutoff` (cutoff = now − maxAgeMs ≤ now), so the
|
|
87
|
+
* age filter excludes it by construction. A delayed row escalates only after it has been
|
|
88
|
+
* deliverable-but-stuck (past its due time) for the window.
|
|
89
|
+
*/
|
|
90
|
+
export declare function findEscalatable(db: Database.Database, maxAgeMs: number, now?: number): DbMailbox[];
|
|
91
|
+
/** Per-agent held tally within a workspace (drives the overview's live indicator). */
|
|
92
|
+
export interface HeldAgentCount {
|
|
93
|
+
toAgent: string;
|
|
94
|
+
count: number;
|
|
95
|
+
/** True if any of this agent's held rows has crossed the escalation age. */
|
|
96
|
+
escalated: boolean;
|
|
97
|
+
}
|
|
98
|
+
/** Workspace-level held summary: total, whether any row is escalated, and the per-agent split. */
|
|
99
|
+
export interface WorkspaceHeldSummary {
|
|
100
|
+
total: number;
|
|
101
|
+
escalated: boolean;
|
|
102
|
+
byAgent: HeldAgentCount[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Count currently-held rows for a workspace, grouped by recipient agent, with an
|
|
106
|
+
* escalation flag. Counts only — **no message bodies** are read or returned, so this is
|
|
107
|
+
* safe to fold into the overview payload that the dashboard/VSCode indicator renders
|
|
108
|
+
* (spec: the indicator is count-only; bodies live only in `afx inbox`). Aggregated in
|
|
109
|
+
* SQL so cost is bounded by the (small) held set, not the row bodies.
|
|
110
|
+
*
|
|
111
|
+
* ELIGIBLE rows only (Spec 1313 round 3): a PRE-DUE delayed send (`not_before` in the
|
|
112
|
+
* future) is "scheduled, not stuck" and must NOT inflate the attention count/indicator —
|
|
113
|
+
* this is the same `not_before IS NULL OR not_before <= now` eligibility every other
|
|
114
|
+
* count/alarm surface uses (`findHeldForAgent`, `findEscalatable`, `findStarvingAgents`),
|
|
115
|
+
* so `afx status` / the dashboard badge report deliverable-but-stuck mail, not scheduled
|
|
116
|
+
* sends. (Pre-due rows are still visible in `afx inbox`, which lists ALL held rows and
|
|
117
|
+
* labels these "scheduled" — only the count/alarm surfaces exclude them.) The `escalated`
|
|
118
|
+
* flag was already pre-due-safe (a pre-due row never escalates); this aligns the raw count.
|
|
119
|
+
*/
|
|
120
|
+
export declare function heldSummaryForWorkspace(db: Database.Database, workspacePath: string, now?: number): WorkspaceHeldSummary;
|
|
121
|
+
/**
|
|
122
|
+
* Transition a held row to `delivered` (clearing its why-held reason and stamping
|
|
123
|
+
* `resolved_at`). Returns true if it transitioned; false if the row was already
|
|
124
|
+
* terminal or does not exist — so a re-delivery attempt (backstop racing a submit
|
|
125
|
+
* trigger) is a safe no-op and can never revert or double-deliver a row.
|
|
126
|
+
*/
|
|
127
|
+
export declare function markDelivered(db: Database.Database, id: string, now?: number): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Refresh the why-held `reason` on a still-held row (informational — the value
|
|
130
|
+
* `afx inbox` shows and the send response reports). Only touches `held` rows, so
|
|
131
|
+
* it can never relabel or resurrect a terminal row. Returns true if a held row was
|
|
132
|
+
* updated. The delivery pass calls this so a held row's reason tracks the current
|
|
133
|
+
* gate verdict (e.g. `busy` → `no-live-pty` when the terminal dies).
|
|
134
|
+
*/
|
|
135
|
+
export declare function setHeldReason(db: Database.Database, id: string, reason: MailboxReason | null, now?: number): boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Flag a still-held row as escalated — **visibility only, NEVER affects delivery**. The
|
|
138
|
+
* drainer's escalation pass calls this when a row crosses the escalation age, then emits
|
|
139
|
+
* the escalation broadcast; the row still delivers only on a later clean gate pass.
|
|
140
|
+
* Held-only and idempotent (the `escalated = 0` guard), so a terminal or already-escalated
|
|
141
|
+
* row is untouched. Returns true if it flipped.
|
|
142
|
+
*/
|
|
143
|
+
export declare function markEscalated(db: Database.Database, id: string, now?: number): boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Supersede-key prefix for architect starvation notices (Spec 1313 round 3, change 3). A
|
|
146
|
+
* notice row carries `${NOTICE_SUPERSEDE_PREFIX}<starving-agent>` so (a) one pending notice
|
|
147
|
+
* per starving agent coalesces via {@link supersede}, and (b) notice rows are recognizable by
|
|
148
|
+
* prefix and EXCLUDED from {@link findStarvingAgents} — a notice can never itself trigger a
|
|
149
|
+
* notice ("no notice about a notice"). Cron uses bare task names as keys, which never collide
|
|
150
|
+
* with this prefix.
|
|
151
|
+
*/
|
|
152
|
+
export declare const NOTICE_SUPERSEDE_PREFIX = "mailbox-notice:";
|
|
153
|
+
/** Per-agent aggregate over an agent's ELIGIBLE, non-notice held rows (Spec 1313 round 3). */
|
|
154
|
+
export interface StarvingAgent {
|
|
155
|
+
workspacePath: string;
|
|
156
|
+
toAgent: string;
|
|
157
|
+
/**
|
|
158
|
+
* Escalation-start ({@link ESCALATION_START_SQL}) of the OLDEST eligible held row — the
|
|
159
|
+
* moment this agent's oldest deliverable mail became stuck. Its age is `now - stuckSince`.
|
|
160
|
+
*/
|
|
161
|
+
stuckSince: number;
|
|
162
|
+
/** How many eligible non-notice rows are held for this agent. */
|
|
163
|
+
count: number;
|
|
164
|
+
/** Representative why-held reason (held rows for one agent share the gate's verdict). */
|
|
165
|
+
reason: MailboxReason | null;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Per-agent view of currently-STARVING mail (Spec 1313 round 3, change 3): agents with at
|
|
169
|
+
* least one ELIGIBLE (`not_before IS NULL OR not_before <= now`) held row that is NOT itself a
|
|
170
|
+
* notice ({@link NOTICE_SUPERSEDE_PREFIX}). Tower-global (every workspace), aggregated in SQL
|
|
171
|
+
* so cost is bounded by the (small) held set. The drainer's notice pass compares each agent's
|
|
172
|
+
* `stuckSince` against the owner-notice threshold to decide whether to alarm, and uses the
|
|
173
|
+
* membership of the returned set to decide when a prior notice can be cleared (agent no longer
|
|
174
|
+
* has any eligible non-notice held row → drained). PRE-DUE delayed rows are excluded (not
|
|
175
|
+
* stuck), so a scheduled send never trips the alarm nor keeps one alive.
|
|
176
|
+
*/
|
|
177
|
+
export declare function findStarvingAgents(db: Database.Database, now?: number): StarvingAgent[];
|
|
178
|
+
/**
|
|
179
|
+
* Dismiss every still-`held` row matching `(workspacePath, supersedeKey)` (Spec 1313 round 3).
|
|
180
|
+
* Used to clear a pending architect notice once its starving agent recovers (the notice is
|
|
181
|
+
* moot). Audit-preserving (soft transition), and a no-op on an already-delivered notice.
|
|
182
|
+
* Returns the number of rows dismissed.
|
|
183
|
+
*/
|
|
184
|
+
export declare function dismissHeldWithKey(db: Database.Database, workspacePath: string, supersedeKey: string, now?: number): number;
|
|
185
|
+
/**
|
|
186
|
+
* Dismiss every still-`held` row addressed to an agent (Spec 1313 round 3, take-now B). Called
|
|
187
|
+
* when an agent is cleaned up (`afx cleanup`) so its orphaned held rows stop pinning
|
|
188
|
+
* `heldCount`/escalated forever — the terminal-row prune only removes delivered/superseded/
|
|
189
|
+
* dismissed rows, never held ones. Audit-preserving. Returns the number of rows dismissed.
|
|
190
|
+
*/
|
|
191
|
+
export declare function dismissHeldForAgent(db: Database.Database, workspacePath: string, toAgent: string, now?: number): number;
|
|
192
|
+
/**
|
|
193
|
+
* Transition a held row to `dismissed` (operator-cleared via `afx inbox dismiss`).
|
|
194
|
+
* The why-held reason is preserved for audit. Returns true if it transitioned;
|
|
195
|
+
* a dismissed row is never delivered.
|
|
196
|
+
*/
|
|
197
|
+
export declare function dismiss(db: Database.Database, id: string, now?: number): boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Count currently-`held` rows sharing `(workspacePath, supersedeKey)`. Cron reads
|
|
200
|
+
* this immediately before {@link supersede} — with no `await` between the two calls,
|
|
201
|
+
* so on better-sqlite3's synchronous, single-threaded handle the pair cannot
|
|
202
|
+
* interleave with another run — to log an honest outcome: a newer run that finds a
|
|
203
|
+
* prior held row of the same task reports `superseded`, otherwise `held`. The
|
|
204
|
+
* `(supersede_key)` index keeps this cheap.
|
|
205
|
+
*/
|
|
206
|
+
export declare function countHeldWithKey(db: Database.Database, workspacePath: string, supersedeKey: string): number;
|
|
207
|
+
/**
|
|
208
|
+
* Replace the held row sharing `(workspacePath, supersedeKey)` — if any — with a
|
|
209
|
+
* fresh held row carrying the same key, atomically. Only `held` rows are
|
|
210
|
+
* superseded (a delivered/dismissed row is untouched), so a newer cron run
|
|
211
|
+
* collapses a stale backlog without disturbing history. When no held row matches,
|
|
212
|
+
* this is just an enqueue. Returns the newly-enqueued replacement row.
|
|
213
|
+
*/
|
|
214
|
+
export declare function supersede(db: Database.Database, workspacePath: string, supersedeKey: string, input: EnqueueInput, now?: number): DbMailbox;
|
|
215
|
+
/**
|
|
216
|
+
* Delete terminal rows (delivered/superseded/dismissed) whose `resolved_at` is
|
|
217
|
+
* older than `retentionDays`. Held rows are never removed — the `status != 'held'`
|
|
218
|
+
* and `resolved_at IS NOT NULL` guards make that impossible even if a held row
|
|
219
|
+
* somehow carried a stale timestamp. Returns the number of rows deleted.
|
|
220
|
+
*/
|
|
221
|
+
export declare function pruneTerminal(db: Database.Database, retentionDays: number, now?: number): number;
|
|
222
|
+
//# sourceMappingURL=mailbox.d.ts.map
|