@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
|
@@ -15,14 +15,214 @@ consult stats [options]
|
|
|
15
15
|
-m, --model <model> Model to use (required for all modes except stats)
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
## Model Selection Options
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
--model-id <id> Override the provider model id for THIS invocation
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`-m/--model` picks the **lane** (`claude`, `codex`, `gemini`, `hermes`); `--model-id` picks the
|
|
25
|
+
**model that lane runs**. The two are independent — see [Configuration](#configuration) for setting
|
|
26
|
+
an id persistently instead.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
consult -m codex --model-id gpt-5.6-sol --prompt "Review this design"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- **Precedence**: `--model-id` > `consult.models.<lane>` > the lane's shipped default.
|
|
33
|
+
- **Supported lanes**: `claude`, `codex`, `gemini`. Using it with `hermes` is an **error**, not a
|
|
34
|
+
silent no-op — `hermes chat -q` has no model selector, so accepting the flag there would mean
|
|
35
|
+
ignoring it.
|
|
36
|
+
- **Validation is syntax-only.** Whether the id exists is the provider's call; a rejection fails
|
|
37
|
+
loudly with no fallback to the default. See
|
|
38
|
+
[the fail-fast contract](#the-fail-fast-contract-and-where-it-stops).
|
|
39
|
+
|
|
18
40
|
## Models
|
|
19
41
|
|
|
20
|
-
| Model | Alias | Backend | Notes |
|
|
21
|
-
|
|
22
|
-
| `gemini` | `pro` | Antigravity CLI (`agy`) | Agentic file access (`--sandbox --add-dir`), OAuth/subscription login. Skips non-blockingly if `agy` is missing/unauthed. |
|
|
23
|
-
| `codex` | `gpt` | @openai/codex | Read-only sandbox, thorough |
|
|
24
|
-
| `claude` | `opus` | Claude Agent SDK | Balanced analysis with tool use |
|
|
25
|
-
| `hermes` | - | hermes CLI (`hermes chat -q`) | Uses Hermes agent as consult backend |
|
|
42
|
+
| Model | Alias | Backend | Shipped default model id | Notes |
|
|
43
|
+
|-------|-------|---------|--------------------------|-------|
|
|
44
|
+
| `gemini` | `pro` | Antigravity CLI (`agy`) | *(agy's own default — no pinned id)* | Agentic file access (`--sandbox --add-dir`), OAuth/subscription login. Skips non-blockingly if `agy` is missing/unauthed. |
|
|
45
|
+
| `codex` | `gpt` | @openai/codex | `gpt-5.6-sol` (medium reasoning effort) | Read-only sandbox, thorough |
|
|
46
|
+
| `claude` | `opus` | Claude Agent SDK | `claude-opus-5` | Balanced analysis with tool use |
|
|
47
|
+
| `hermes` | - | hermes CLI (`hermes chat -q`) | *(hermes' own default)* | Uses Hermes agent as consult backend |
|
|
48
|
+
|
|
49
|
+
> **The codex lane's `-sol` suffix is load-bearing.** Plain `gpt-5.6` and `gpt-5.6-codex` are both
|
|
50
|
+
> rejected by Codex when running on a ChatGPT account (`The '<id>' model is not supported when
|
|
51
|
+
> using Codex with a ChatGPT account.`). Don't "simplify" the id — a unit test pins it.
|
|
52
|
+
|
|
53
|
+
### Cost reporting
|
|
54
|
+
|
|
55
|
+
Codex consultation cost is computed from OpenAI's published per-1M-token rates for the lane's
|
|
56
|
+
model. If a model has no rates recorded in Codev, the consultation still runs and its token counts
|
|
57
|
+
are still recorded, but `cost_usd` is stored as `null` rather than billed at some other model's
|
|
58
|
+
rates. Only OpenAI's standard pricing tier is modelled — costs for consultations large enough to
|
|
59
|
+
enter the long-context tier are under-reported.
|
|
60
|
+
|
|
61
|
+
Supply rates for a model Codev doesn't know with [`consult.pricing.codex`](#consultpricingcodex).
|
|
62
|
+
|
|
63
|
+
## Configuration
|
|
64
|
+
|
|
65
|
+
Everything below lives in `.codev/config.json` and flows through the standard five-layer config
|
|
66
|
+
stack, lowest priority to highest:
|
|
67
|
+
|
|
68
|
+
1. built-in defaults
|
|
69
|
+
2. `<cache>/config.json` — remote framework base config
|
|
70
|
+
3. `~/.codev/config.json` — global, per-user, across all projects
|
|
71
|
+
4. `.codev/config.json` — project, checked in
|
|
72
|
+
5. `.codev/config.local.json` — project, per-engineer, gitignored
|
|
73
|
+
|
|
74
|
+
So any key can be set globally and narrowed per project, and an individual engineer can override
|
|
75
|
+
either without touching a checked-in file.
|
|
76
|
+
|
|
77
|
+
**Two independent axes**, easy to confuse:
|
|
78
|
+
|
|
79
|
+
| Axis | Key | Answers |
|
|
80
|
+
|------|-----|---------|
|
|
81
|
+
| *Which model* a lane runs | `consult.models` | "run `claude-opus-5` on the claude lane" |
|
|
82
|
+
| *Which lanes* run at all | `porch.consultation.*` | "review PIR with two lanes, not three" |
|
|
83
|
+
|
|
84
|
+
### `consult.models`
|
|
85
|
+
|
|
86
|
+
Per-lane model id. Absent → the shipped default in the [Models](#models) table. Outranked for a
|
|
87
|
+
single invocation by [`--model-id`](#model-selection-options).
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{ "consult": { "models": { "claude": "claude-opus-5", "codex": "gpt-5.6-sol" } } }
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Valid lanes: `claude`, `codex`, `gemini`. **`hermes` is rejected** — it is invoked as
|
|
94
|
+
`hermes chat -q` and exposes no model selector, so configuring one would silently do nothing.
|
|
95
|
+
(`hermes` remains valid in `porch.consultation` lane lists; the two key spaces differ on purpose.)
|
|
96
|
+
|
|
97
|
+
The `gemini` lane passes the id to `agy --model`, so the id space is agy's, not Google's API's.
|
|
98
|
+
|
|
99
|
+
### `consult.reasoningEffort`
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{ "consult": { "reasoningEffort": { "codex": "high" } } }
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Only `codex` exposes this. Values: `minimal`, `low`, `medium`, `high`, `xhigh` (default `medium`).
|
|
106
|
+
Unlike model ids, this **is** a closed set Codev validates locally — see the asymmetry below.
|
|
107
|
+
|
|
108
|
+
### `consult.pricing.codex`
|
|
109
|
+
|
|
110
|
+
Per-1M-token rates for the codex lane. Set this when Codev has no rates for the model you run
|
|
111
|
+
(otherwise `cost_usd` is `null`), or to correct rates that have gone stale.
|
|
112
|
+
|
|
113
|
+
**It outranks the shipped rate table for every model, not only unknown ones** — once set, it is
|
|
114
|
+
used for whatever the codex lane runs, so it is worth revisiting if you later change the model.
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{ "consult": { "pricing": { "codex": { "inputPer1M": 5.00, "cachedInputPer1M": 0.50, "outputPer1M": 30.00 } } } }
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
> **Take the numbers from the provider, not from here.** Those are the rates Codev ships for
|
|
121
|
+
> `gpt-5.6-sol` at the time of writing, shown so the shape is concrete — they are not right for
|
|
122
|
+
> whatever model you are configuring, and published rates change. Copying a plausible-looking wrong
|
|
123
|
+
> rate produces a confidently wrong cost, which is the exact failure this key exists to prevent;
|
|
124
|
+
> a `null` cost is the better outcome of the two.
|
|
125
|
+
|
|
126
|
+
- **`codex` is the only accepted lane.** Claude reports its own cost directly and the gemini/agy
|
|
127
|
+
lane reports no usage data at all, so a pricing override for either would be inert. Any other
|
|
128
|
+
lane key is an error.
|
|
129
|
+
- **All three rates are required together**, and each must be a finite, non-negative number. A
|
|
130
|
+
partial object is an error, not a half-priced estimate: defaulting any one rate to a stale
|
|
131
|
+
built-in would reintroduce exactly the wrong-cost problem this override exists to fix.
|
|
132
|
+
|
|
133
|
+
### `porch.consultation` — which lanes run
|
|
134
|
+
|
|
135
|
+
Lane lists accept a single name (`"codex"`), an array (`["codex", "claude"]`), or a whole-value
|
|
136
|
+
special mode: `"none"` (skip consultation) or `"parent"` (emit a gate for the architect instead).
|
|
137
|
+
An **empty array is rejected** — use `"none"`, so there is exactly one way to say it.
|
|
138
|
+
|
|
139
|
+
`models` is the workspace-wide default, `modelsByType` narrows by review type, and `byProtocol`
|
|
140
|
+
scopes either of those to one protocol:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"porch": {
|
|
145
|
+
"consultation": {
|
|
146
|
+
"models": ["gemini", "codex", "claude"],
|
|
147
|
+
"modelsByType": { "pr": ["codex", "claude"] },
|
|
148
|
+
"byProtocol": {
|
|
149
|
+
"pir": {
|
|
150
|
+
"models": ["gemini", "codex"],
|
|
151
|
+
"modelsByType": { "impl": ["codex"] }
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Review-type keys are the protocol's own `verify.type` values (`spec`, `plan`, `impl`, `pr`, …);
|
|
160
|
+
protocol keys are protocol names, and aliases are canonicalized so `byProtocol.spider` matches a
|
|
161
|
+
project running as `spir`. Unknown keys in either space are **errors, not warnings** — a typo that
|
|
162
|
+
merely warned would silently leave you on the defaults you were trying to override.
|
|
163
|
+
|
|
164
|
+
#### Precedence
|
|
165
|
+
|
|
166
|
+
Highest first. The first level that is present wins outright; levels do not merge.
|
|
167
|
+
|
|
168
|
+
1. `porch.consultation.byProtocol[<protocol>].modelsByType[<type>]`
|
|
169
|
+
2. `porch.consultation.byProtocol[<protocol>].models`
|
|
170
|
+
3. `porch.consultation.modelsByType[<type>]`
|
|
171
|
+
4. `porch.consultation.models`
|
|
172
|
+
5. the protocol's own `verify.models` (i.e. no config at all)
|
|
173
|
+
|
|
174
|
+
Both `porch next` and `porch done` resolve through this one ladder, so the lanes porch asks you to
|
|
175
|
+
run are exactly the lanes it will require review files for.
|
|
176
|
+
|
|
177
|
+
#### Worked example: keeping PIR cheap while widening the default
|
|
178
|
+
|
|
179
|
+
PIR is deliberately a 2-lane (CMAP-2) protocol. A workspace-wide 3-lane default silently inflates
|
|
180
|
+
it, because config outranks protocol. Scope PIR back down explicitly:
|
|
181
|
+
|
|
182
|
+
```json
|
|
183
|
+
{
|
|
184
|
+
"porch": {
|
|
185
|
+
"consultation": {
|
|
186
|
+
"models": ["gemini", "codex", "claude"],
|
|
187
|
+
"byProtocol": { "pir": { "models": ["gemini", "codex"] } }
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
`["gemini", "codex"]` is PIR's own shipped pair, so this restores exactly what the protocol declares
|
|
194
|
+
rather than substituting a different two. SPIR and ASPIR reviews run three lanes; PIR runs two.
|
|
195
|
+
Without the `byProtocol` entry, PIR would run three and cost 50% more per review with no change to
|
|
196
|
+
the protocol file.
|
|
197
|
+
|
|
198
|
+
### The fail-fast contract, and where it stops
|
|
199
|
+
|
|
200
|
+
Config errors are raised when config is **loaded** — before any consultation starts — and name the
|
|
201
|
+
offending key and the valid alternatives. Nothing falls back to a default on error.
|
|
202
|
+
|
|
203
|
+
**The asymmetry worth knowing about:** these two are validated very differently.
|
|
204
|
+
|
|
205
|
+
| | Validated by | When you find out |
|
|
206
|
+
|---|---|---|
|
|
207
|
+
| `reasoningEffort` | **Codev**, against a closed enum | Config load, before anything runs |
|
|
208
|
+
| Model ids | **The provider** | When the lane runs |
|
|
209
|
+
|
|
210
|
+
Codev checks a model id's *syntax* only (ASCII alphanumerics plus `. _ : / @ + -`, 1–200 characters,
|
|
211
|
+
no leading punctuation) — never its existence. **There is no allowlist of model ids anywhere in
|
|
212
|
+
Codev, by design**: a new model must work the day the provider ships it, without a Codev release.
|
|
213
|
+
|
|
214
|
+
So a typo'd model id is not caught at config time. It reaches the backend, which rejects it; that
|
|
215
|
+
lane exits non-zero, the provider's error text is surfaced, the config key that supplied the id is
|
|
216
|
+
named, and **no review file is written** — so porch cannot advance on a lane that never ran. What
|
|
217
|
+
you do *not* get is a silent substitution of the default model.
|
|
218
|
+
|
|
219
|
+
One deliberate exception: a `gemini` lane **with no model id resolved** still skips non-blockingly
|
|
220
|
+
when `agy` is missing or unauthenticated (consultation is best-effort there). Once an id *is*
|
|
221
|
+
resolved — from either `consult.models.gemini` **or** `--model-id` — a rejected model becomes a hard
|
|
222
|
+
failure for that lane, because you asked for a specific model and did not get it. What still skips
|
|
223
|
+
rather than fails, even with an id, are causes that are not the model's fault: `agy` absent,
|
|
224
|
+
unauthenticated, timed out, killed by a signal, or exiting **successfully** having produced no
|
|
225
|
+
output at all.
|
|
26
226
|
|
|
27
227
|
## Modes
|
|
28
228
|
|
|
@@ -78,10 +278,11 @@ consult -m codex --type integration --issue 42 --base ci
|
|
|
78
278
|
- `--base <ref>` — **`--type integration` only.** Anchor the diff on this base branch (e.g. `ci`), computed locally as `git diff origin/<base>...origin/<head>` (three-dot, merge-base anchored). Use in repos with a long-lived integration branch ahead of the default branch so the review sees only the PR's actual change, not the whole integration-over-trunk delta. Unresolvable refs fail loudly with a `git fetch` hint (no silent fallback to the local checkout). Defaults to config `consult.integrationBranch`; with neither set, the integration review uses the PR's host-recorded base (`gh pr diff`), unchanged.
|
|
79
279
|
|
|
80
280
|
**Config (`.codev/config.json`):**
|
|
81
|
-
|
|
281
|
+
`integrationBranch` is the repo-wide default base for `--type integration`, overridden by `--base`.
|
|
282
|
+
|
|
283
|
+
```json
|
|
82
284
|
{
|
|
83
285
|
"consult": {
|
|
84
|
-
// Repo-wide default base for `--type integration` (overridden by --base).
|
|
85
286
|
"integrationBranch": "ci"
|
|
86
287
|
}
|
|
87
288
|
}
|
|
@@ -170,6 +371,59 @@ Configure auth:
|
|
|
170
371
|
- Gemini (`agy`): **OAuth / subscription** — run `agy` once and sign in (no API key). If `agy`
|
|
171
372
|
is missing or unauthenticated, the gemini lane skips non-blockingly (the run proceeds without it).
|
|
172
373
|
|
|
374
|
+
#### agy auth-state cache (unauthenticated tab burst)
|
|
375
|
+
|
|
376
|
+
An unauthenticated `agy` opens an OAuth browser tab *before* it prints the URL
|
|
377
|
+
Codev detects, so the lane cannot suppress the tab after spawning — only by not
|
|
378
|
+
spawning. Since a CMAP round is several independent `consult` processes, this used
|
|
379
|
+
to strand one tab per consult (#1077).
|
|
380
|
+
|
|
381
|
+
Codev keeps a shared auth verdict in `~/.cache/codev/agy-auth.json` (0600,
|
|
382
|
+
honours `XDG_CACHE_HOME`). The first call probes; the rest read the verdict and
|
|
383
|
+
short-circuit, so **an unauthenticated agy is spawned at most once per TTL
|
|
384
|
+
window** instead of once per consult. A file lock keeps parallel consults from
|
|
385
|
+
probing simultaneously. `codev doctor`'s agy check shares the same cache.
|
|
386
|
+
|
|
387
|
+
Verdicts expire on their own — sign in with `agy` in another terminal and the lane
|
|
388
|
+
recovers within the unauth TTL, no cache clearing required. The cache only ever
|
|
389
|
+
suppresses a lane on positive "signed out" evidence; anything ambiguous falls
|
|
390
|
+
through to a normal spawn.
|
|
391
|
+
|
|
392
|
+
| Variable | Default | Purpose |
|
|
393
|
+
|---|---|---|
|
|
394
|
+
| `CODEV_AGY_AUTH_CACHE_TTL_UNAUTH_MS` | `300000` (5 min) | How long a "signed out" verdict is trusted — the sign-in recovery window. |
|
|
395
|
+
| `CODEV_AGY_AUTH_CACHE_TTL_AUTH_MS` | `1800000` (30 min) | How long a "signed in" verdict is trusted. |
|
|
396
|
+
| `CODEV_AGY_AUTH_CACHE_WAIT_MS` | `6000` | How long a consult waits for another process's in-flight probe before proceeding anyway. |
|
|
397
|
+
| `CODEV_AGY_AUTH_CACHE_DIR` | `~/.cache/codev` | Cache location (mainly for tests). |
|
|
398
|
+
| `CODEV_AGY_AUTH_CACHE_DISABLE` | unset | `1` restores the always-spawn behaviour. |
|
|
399
|
+
|
|
400
|
+
#### Test isolation
|
|
401
|
+
|
|
402
|
+
The cache above protects *production* runs. It did not protect test runs: the
|
|
403
|
+
cache disables itself under `VITEST` unless a cache directory is named, and any
|
|
404
|
+
test that reached the gemini lane without pinning `CODEV_AGY_BIN` resolved the
|
|
405
|
+
real binary — so a suite run could still open a login window per spawn (#1323).
|
|
406
|
+
Consult now treats a test runner as a hard boundary. Under `VITEST` (or
|
|
407
|
+
`CODEV_TEST_ISOLATION`) it refuses to resolve an unpinned `agy` and refuses to open the
|
|
408
|
+
user-global metrics database, failing loudly instead of reaching either. Codev's
|
|
409
|
+
own suites pin a fake `agy`, a sandbox auth cache, and a sandbox metrics DB for
|
|
410
|
+
every test; spawned `codev` / `consult` children inherit the pins through the
|
|
411
|
+
environment.
|
|
412
|
+
|
|
413
|
+
| Variable | Default | Purpose |
|
|
414
|
+
|---|---|---|
|
|
415
|
+
| `CODEV_AGY_BIN` | auto-resolved | Pin the agy binary. The harness sets this to a fake for every test. |
|
|
416
|
+
| `CODEV_ALLOW_REAL_AGY` | unset | `1` opts a test run into the REAL agy binary — the guarded integration smoke and real-AI e2e runs. Expect a browser window if agy's login has lapsed. |
|
|
417
|
+
| `CODEV_METRICS_DB` | `~/.codev/metrics.db` | Redirect the consult metrics database. Required under a test runner; the harness points it at a temp dir so suite runs stop skewing `consult stats`. |
|
|
418
|
+
| `CODEV_TEST_ISOLATION` | unset | `1` applies the same guards to a harness that is not vitest. |
|
|
419
|
+
|
|
420
|
+
**Adopters:** `VITEST` is exported by *any* vitest run, including yours. If your
|
|
421
|
+
project's own suite deliberately shells out to `consult -m gemini`, that call now
|
|
422
|
+
throws until you set `CODEV_ALLOW_REAL_AGY=1` (and `CODEV_METRICS_DB` if you want
|
|
423
|
+
the metrics recorded somewhere). This is intentional — a suite reaching the real
|
|
424
|
+
agy is what #1323 was about — but it is a behaviour change, not a silent one: the
|
|
425
|
+
error names the variable to set.
|
|
426
|
+
|
|
173
427
|
### Claude auth: subscription vs. metered API
|
|
174
428
|
|
|
175
429
|
`consult -m claude` runs on the Claude Agent SDK. When `CLAUDE_CODE_OAUTH_TOKEN`
|
|
@@ -59,6 +59,7 @@ See [codev.md](codev.md) for full documentation.
|
|
|
59
59
|
| `afx status` | Show status of all agents |
|
|
60
60
|
| `afx cleanup` | Clean up a builder worktree |
|
|
61
61
|
| `afx send` | Send instructions to a builder |
|
|
62
|
+
| `afx inbox` | List/show/dismiss held (undelivered) messages |
|
|
62
63
|
| `afx open` | Open file annotation viewer |
|
|
63
64
|
| `afx shell` | Spawn a utility shell |
|
|
64
65
|
| `afx tower` | Cross-project dashboard |
|