@cluesmith/codev 3.2.4 → 3.3.1
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-D3XaKpZW.js} +46 -44
- package/dashboard-dist/assets/index-D3XaKpZW.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 +154 -0
- package/dist/agent-farm/cli.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 +34 -0
- package/dist/agent-farm/commands/reset.d.ts.map +1 -0
- package/dist/agent-farm/commands/reset.js +309 -0
- package/dist/agent-farm/commands/reset.js.map +1 -0
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +49 -8
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +105 -6
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +289 -66
- 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 +80 -8
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +13 -0
- package/dist/agent-farm/commands/tower.js.map +1 -1
- 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 +64 -0
- package/dist/agent-farm/lib/reconnect-backoff.d.ts.map +1 -0
- package/dist/agent-farm/lib/reconnect-backoff.js +57 -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 +225 -30
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/canvas-relay.d.ts +60 -0
- package/dist/agent-farm/servers/canvas-relay.d.ts.map +1 -0
- package/dist/agent-farm/servers/canvas-relay.js +376 -0
- package/dist/agent-farm/servers/canvas-relay.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 +19 -0
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +100 -4
- package/dist/agent-farm/servers/overview.js.map +1 -1
- 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-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/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 +78 -16
- 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 +826 -145
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +188 -34
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +23 -2
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +134 -127
- 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 +64 -1
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +168 -1
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts +6 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +95 -57
- 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/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/agent-farm/utils/message-format.d.ts +8 -0
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -1
- package/dist/agent-farm/utils/message-format.js +20 -0
- package/dist/agent-farm/utils/message-format.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +80 -4
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +286 -5
- package/dist/agent-farm/utils/server-utils.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/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 +272 -28
- 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.map +1 -1
- package/dist/commands/doctor.js +71 -19
- package/dist/commands/doctor.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.js +21 -28
- 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/lib/config.d.ts +69 -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/forge-contracts.d.ts +9 -0
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/github.d.ts +15 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +18 -1
- package/dist/lib/github.js.map +1 -1
- 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/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/attach-replay.d.ts +39 -0
- package/dist/terminal/attach-replay.d.ts.map +1 -0
- package/dist/terminal/attach-replay.js +76 -0
- package/dist/terminal/attach-replay.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +2 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +51 -23
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +201 -1
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +327 -46
- 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 +53 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +94 -9
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/session-screen.d.ts +116 -0
- package/dist/terminal/session-screen.d.ts.map +1 -0
- package/dist/terminal/session-screen.js +180 -0
- package/dist/terminal/session-screen.js.map +1 -0
- 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 +17 -8
- package/dist/terminal/shellper-process.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 +13 -8
- package/scripts/forge/gitea/pr-view.sh +4 -1
- package/scripts/forge/github/pr-view.sh +1 -1
- package/scripts/forge/gitlab/pr-view.sh +4 -1
- package/skeleton/.claude/skills/afx/SKILL.md +68 -1
- package/skeleton/.claude/skills/arch-init/SKILL.md +22 -9
- package/skeleton/.claude/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.claude/skills/codev/SKILL.md +31 -0
- package/skeleton/.claude/skills/runnable-worktrees/SKILL.md +119 -0
- package/skeleton/.codex/skills/afx/SKILL.md +68 -1
- package/skeleton/.codex/skills/arch-init/SKILL.md +22 -9
- package/skeleton/.codex/skills/arch-save/SKILL.md +183 -0
- package/skeleton/.codex/skills/codev/SKILL.md +31 -0
- package/skeleton/.codex/skills/runnable-worktrees/SKILL.md +119 -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 +31 -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 +2 -3
- package/skeleton/protocols/pir/prompts/plan.md +1 -4
- package/skeleton/protocols/pir/prompts/review.md +2 -2
- 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 +262 -0
- package/skeleton/resources/commands/consult.md +236 -8
- package/skeleton/resources/commands/overview.md +1 -0
- package/skeleton/roles/architect.md +67 -317
- package/skeleton/roles/builder.md +76 -191
- package/skeleton/templates/AGENTS.md +2 -0
- package/skeleton/templates/CLAUDE.md +2 -0
- package/templates/3d-viewer.html +32 -4
- package/templates/open.html +58 -12
- package/templates/tower.html +65 -9
- package/templates/vendor/three-3MFLoader.js +1478 -0
- package/templates/vendor/three-STLLoader.js +410 -0
- package/templates/vendor/three-TrackballControls.js +828 -0
- package/templates/vendor/three-fflate.module.js +2474 -0
- package/templates/vendor/three.module.js +53044 -0
- 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 -116
- 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
|
@@ -4,7 +4,33 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { EventEmitter } from 'node:events';
|
|
6
6
|
import { RingBuffer } from './ring-buffer.js';
|
|
7
|
+
import { SessionScreen } from './session-screen.js';
|
|
7
8
|
import type { IShellperClient } from './shellper-client.js';
|
|
9
|
+
/**
|
|
10
|
+
* Terminal delivery-signal bus (Spec 1313, Phase 5).
|
|
11
|
+
*
|
|
12
|
+
* Sessions emit two fast delivery triggers on this module-singleton emitter, each
|
|
13
|
+
* carrying only the signalling session's id:
|
|
14
|
+
* - `'submit'` — the user pressed Enter (submitting any draft), so the composer
|
|
15
|
+
* may now be a clean prompt.
|
|
16
|
+
* - `'quiescence'` — PTY output has been idle for {@link QUIESCENCE_DEBOUNCE_MS}, so
|
|
17
|
+
* an agent that was streaming has likely settled.
|
|
18
|
+
*
|
|
19
|
+
* The mailbox wiring subscribes once and schedules a coalesced, gated drain for the
|
|
20
|
+
* signalling session's agent. A single global bus (mirroring the single global
|
|
21
|
+
* drainer) is what lets `pty-session` stay ignorant of the mailbox layer: it only
|
|
22
|
+
* announces occupancy-relevant transitions and never decides delivery. A signal with
|
|
23
|
+
* no subscriber is a no-op, and the quiescence timer is armed only while a subscriber
|
|
24
|
+
* is present, so this is zero-cost when the drainer is not running.
|
|
25
|
+
*/
|
|
26
|
+
export declare const terminalDeliverySignals: EventEmitter<[never]>;
|
|
27
|
+
/**
|
|
28
|
+
* Output-idle window after which a session emits `'quiescence'` (Spec 1313 Phase 5).
|
|
29
|
+
* Comfortably under the backstop interval so held mail delivers sooner, yet long
|
|
30
|
+
* enough to ride over the sub-second gaps in a streaming agent's output (a premature
|
|
31
|
+
* fire is harmless — the gate still decides — so this favours fewer wasted checks).
|
|
32
|
+
*/
|
|
33
|
+
export declare const QUIESCENCE_DEBOUNCE_MS = 500;
|
|
8
34
|
export interface PtySessionConfig {
|
|
9
35
|
id: string;
|
|
10
36
|
command: string;
|
|
@@ -30,6 +56,25 @@ export interface PtySessionInfo {
|
|
|
30
56
|
createdAt: string;
|
|
31
57
|
exitCode?: number;
|
|
32
58
|
persistent?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Whether input can actually reach the process RIGHT NOW (Spec 1273).
|
|
61
|
+
*
|
|
62
|
+
* Serialised alongside `status` because the two disagree in the case that
|
|
63
|
+
* matters: a session whose shellper connection died reports status 'running'
|
|
64
|
+
* until teardown while every write to it is dropped (#1198). `afx refresh`
|
|
65
|
+
* preflights on this so it refuses a terminal it cannot write to BEFORE
|
|
66
|
+
* touching anything, rather than discovering it on the first send.
|
|
67
|
+
*/
|
|
68
|
+
writable?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Epoch ms of the last PTY output (Spec 467's tracking, surfaced by Spec 1273).
|
|
71
|
+
*
|
|
72
|
+
* Serialised by `GET /api/terminals/:id`, which makes output quiescence
|
|
73
|
+
* *measurable* by a client: an agent mid-turn emits continuously (spinner
|
|
74
|
+
* frames, streamed tokens), so a stretch with no advance means the turn ended.
|
|
75
|
+
* `afx refresh` uses this to avoid typing into a terminal that is still working.
|
|
76
|
+
*/
|
|
77
|
+
lastDataAt: number;
|
|
33
78
|
}
|
|
34
79
|
/**
|
|
35
80
|
* #1198: how long an unexpected shellper disconnect may remain unresolved
|
|
@@ -38,12 +83,37 @@ export interface PtySessionInfo {
|
|
|
38
83
|
* successful recovery always lands before the teardown fires.
|
|
39
84
|
*/
|
|
40
85
|
export declare const SHELLPER_CLOSE_GRACE_MS = 15000;
|
|
86
|
+
/**
|
|
87
|
+
* Bound on {@link PtySession.replaySnapshot}'s flush-until-quiescent loop. Each retry
|
|
88
|
+
* means output arrived during the previous parser flush; three consecutive busy flushes
|
|
89
|
+
* (each typically <100ms even for MB-scale backlogs) indicate a pathologically streaming
|
|
90
|
+
* session, for which the raw-tail fallback (whose correctness the client nudge already
|
|
91
|
+
* recovers) is the right answer rather than an unbounded wait (PIR #1354).
|
|
92
|
+
*/
|
|
93
|
+
export declare const REPLAY_FLUSH_ATTEMPTS = 3;
|
|
94
|
+
/**
|
|
95
|
+
* Outcome of {@link PtySession.replaySnapshot} (PIR #1354). On `ok`, `data` is the
|
|
96
|
+
* serialized O(screen) replay payload and `token` is the `bytesWritten` value the
|
|
97
|
+
* snapshot is provably current to — the caller re-checks it (and attaches the client)
|
|
98
|
+
* with NO intervening await, so no output byte can fall between snapshot and live
|
|
99
|
+
* stream. On failure, `reason` feeds the attach path's fallback log line.
|
|
100
|
+
*/
|
|
101
|
+
export type ReplaySnapshotResult = {
|
|
102
|
+
ok: true;
|
|
103
|
+
data: string;
|
|
104
|
+
token: number;
|
|
105
|
+
} | {
|
|
106
|
+
ok: false;
|
|
107
|
+
reason: 'no-mirror' | 'flush-timeout' | 'serialize-error' | 'empty-snapshot';
|
|
108
|
+
error?: unknown;
|
|
109
|
+
};
|
|
41
110
|
export declare class PtySession extends EventEmitter {
|
|
42
111
|
private readonly config;
|
|
43
112
|
readonly id: string;
|
|
44
113
|
label: string;
|
|
45
114
|
readonly createdAt: string;
|
|
46
115
|
readonly ringBuffer: RingBuffer;
|
|
116
|
+
private _gateScreen;
|
|
47
117
|
private pty;
|
|
48
118
|
private shellperClient;
|
|
49
119
|
private _shellperBacked;
|
|
@@ -63,6 +133,7 @@ export declare class PtySession extends EventEmitter {
|
|
|
63
133
|
private readonly diskLogMaxBytes;
|
|
64
134
|
private readonly reconnectTimeoutMs;
|
|
65
135
|
private disconnectTimer;
|
|
136
|
+
private _quiescenceTimer;
|
|
66
137
|
private clients;
|
|
67
138
|
private _lastInputAt;
|
|
68
139
|
private _lastDataAt;
|
|
@@ -74,8 +145,40 @@ export declare class PtySession extends EventEmitter {
|
|
|
74
145
|
* Attach a shellper client as the I/O backend instead of node-pty.
|
|
75
146
|
* Data flows: shellper → ring buffer → WebSocket clients.
|
|
76
147
|
* User input flows: WebSocket → write() → shellper.
|
|
148
|
+
*
|
|
149
|
+
* `mirrorSeed` (PIR #1354): the UNCAPPED replay for the screen mirror, when the
|
|
150
|
+
* caller capped `replayData` for the ring (`capRingSeed`). The two seeds diverge
|
|
151
|
+
* deliberately — ring contents are shipped raw to clients only on the fallback
|
|
152
|
+
* path, so the 1 MiB client-payload cap stays; the mirror folds its seed into a
|
|
153
|
+
* fixed-size grid, so feeding it the full (wire-capped, ≤8 MB) history costs
|
|
154
|
+
* bounded parse time and shrinks the #1361 born-torn window from 1 MiB to the
|
|
155
|
+
* shellper's whole retention. Omitted → the mirror gets `replayData`, i.e. the
|
|
156
|
+
* pre-#1354 behavior (fresh spawns, whose replay is never capped).
|
|
157
|
+
*/
|
|
158
|
+
attachShellper(client: IShellperClient, replayData: Buffer, shellperPid: number, shellperSessionId?: string, mirrorSeed?: Buffer): void;
|
|
159
|
+
/**
|
|
160
|
+
* Hold the session open while SessionManager respawns the child, printing
|
|
161
|
+
* `notice` in its place.
|
|
162
|
+
*
|
|
163
|
+
* Shared by both relaunch paths (#1264): an unnatural exit restarting with
|
|
164
|
+
* recovery, and a clean exit rerunning the harness fresh. They differ only in
|
|
165
|
+
* wording — structurally both keep WebSocket clients attached, suppress
|
|
166
|
+
* 'exit' so Tower doesn't clear its references, and arm a bounded wait. If
|
|
167
|
+
* new data arrives the child is back and the teardown is cancelled; if
|
|
168
|
+
* nothing arrives within the window (e.g. max restarts exhausted) the session
|
|
169
|
+
* falls through to normal exit cleanup.
|
|
77
170
|
*/
|
|
78
|
-
|
|
171
|
+
private startRestartWait;
|
|
172
|
+
/**
|
|
173
|
+
* Write an out-of-band notice into the terminal, as if the process had
|
|
174
|
+
* printed it. Goes to the ring buffer and every attached client, so it
|
|
175
|
+
* survives reconnects and is visible to whoever is watching.
|
|
176
|
+
*
|
|
177
|
+
* For lifecycle news the process itself cannot report — #1264's give-up
|
|
178
|
+
* being the motivating case, where a broken harness would otherwise leave a
|
|
179
|
+
* silently dead terminal.
|
|
180
|
+
*/
|
|
181
|
+
notice(text: string): void;
|
|
79
182
|
/** Whether this session is backed by a shellper process. */
|
|
80
183
|
get shellperBacked(): boolean;
|
|
81
184
|
/** The SessionManager session ID for this shellper-backed session, or null. */
|
|
@@ -95,6 +198,30 @@ export declare class PtySession extends EventEmitter {
|
|
|
95
198
|
detachShellper(): void;
|
|
96
199
|
private cleanupShellper;
|
|
97
200
|
private onPtyData;
|
|
201
|
+
/**
|
|
202
|
+
* Fold one output chunk into the persistent gate mirror (Spec 1313 render-gate round 2),
|
|
203
|
+
* creating it lazily on the first byte. Called at EVERY point the mirror is fed —
|
|
204
|
+
* `onPtyData` (live output, in lockstep with the ring) and the `attachShellper` seed — so
|
|
205
|
+
* the mirror's rendered screen and `ringBuffer.bytesWritten` (the gate's monotone change
|
|
206
|
+
* token) can never drift apart on the live path. Creating it on the first byte (not at
|
|
207
|
+
* construction) means a session that never emits output costs nothing, while any session
|
|
208
|
+
* that does is mirrored from its very first LIVE byte. On adopt/reconnect the seed is the
|
|
209
|
+
* FULL shellper replay (≤8 MB wire cap), not the ring's 1 MiB `capRingSeed` tail
|
|
210
|
+
* (PIR #1354) — so a long-lived alt-screen frame is only born torn when its coherent
|
|
211
|
+
* start predates the shellper's whole retention (#1361's residual case); the gate then
|
|
212
|
+
* HOLDS (fail-safe) until the next repaint heals it.
|
|
213
|
+
*/
|
|
214
|
+
private feedGateScreen;
|
|
215
|
+
/**
|
|
216
|
+
* Arm (or leave armed) the output-quiescence trigger (Spec 1313 Phase 5). Uses a
|
|
217
|
+
* single self-rescheduling timer keyed on {@link lastDataAt} instead of a
|
|
218
|
+
* clear/reset on every byte, so high-throughput output costs nothing extra: when it
|
|
219
|
+
* fires it either emits `'quiescence'` (output idle long enough) or re-arms for the
|
|
220
|
+
* remaining window. Armed only while a subscriber is present, so idle/unwatched
|
|
221
|
+
* sessions pay nothing. The timer is unref'd — a pending quiescence check never
|
|
222
|
+
* keeps the process alive.
|
|
223
|
+
*/
|
|
224
|
+
private armQuiescence;
|
|
98
225
|
private rotateDiskLog;
|
|
99
226
|
/**
|
|
100
227
|
* Whether input can actually reach the underlying process right now.
|
|
@@ -115,6 +242,14 @@ export declare class PtySession extends EventEmitter {
|
|
|
115
242
|
resize(cols: number, rows: number): boolean;
|
|
116
243
|
/** Kill the PTY process or send signal to shellper. */
|
|
117
244
|
kill(): void;
|
|
245
|
+
/**
|
|
246
|
+
* Register a live client for output broadcast without producing any replay.
|
|
247
|
+
* The replay-payload decision (snapshot vs raw lines) belongs to the attach
|
|
248
|
+
* path (PIR #1354); this is the shared registration step every variant uses.
|
|
249
|
+
*/
|
|
250
|
+
addClient(client: {
|
|
251
|
+
send: (data: Buffer | string) => void;
|
|
252
|
+
}): void;
|
|
118
253
|
/** Attach a WebSocket client. Returns ring buffer contents for replay. */
|
|
119
254
|
attach(client: {
|
|
120
255
|
send: (data: Buffer | string) => void;
|
|
@@ -123,20 +258,85 @@ export declare class PtySession extends EventEmitter {
|
|
|
123
258
|
attachResume(client: {
|
|
124
259
|
send: (data: Buffer | string) => void;
|
|
125
260
|
}, sinceSeq: number): string[];
|
|
261
|
+
/**
|
|
262
|
+
* Which buffer the session's emulated screen is in: 'alternate' means a
|
|
263
|
+
* full-screen TUI, the case whose reconnect is unservable from the line ring
|
|
264
|
+
* (a caught-up client's delta resume returns [] — `ring-buffer.ts` getSince)
|
|
265
|
+
* and so must be served the snapshot. Null before the first output byte and
|
|
266
|
+
* after teardown.
|
|
267
|
+
*/
|
|
268
|
+
get screenBufferType(): 'normal' | 'alternate' | null;
|
|
269
|
+
/**
|
|
270
|
+
* Produce the O(screen) viewer-attach replay payload from the session's mirror
|
|
271
|
+
* (PIR #1354): the serialized current screen plus bounded scrollback, replacing
|
|
272
|
+
* the raw ring-tail replay whose truncation the client-side resize nudge papered
|
|
273
|
+
* over. Does NOT attach the client — the caller must, and the split is what makes
|
|
274
|
+
* the byte partition airtight:
|
|
275
|
+
*
|
|
276
|
+
* The flush loop samples `ringBuffer.bytesWritten` (the same monotone token the
|
|
277
|
+
* render gate uses), flushes the mirror's parser, and re-checks; an unchanged token
|
|
278
|
+
* proves every byte ever fed is parsed into the grid. Serialization then happens
|
|
279
|
+
* synchronously, and the caller's continuation (token re-check + `addClient` +
|
|
280
|
+
* replay send) runs in a microtask — PTY output only arrives via I/O macrotasks, so
|
|
281
|
+
* nothing can interleave before the client is attached. Every output byte is
|
|
282
|
+
* therefore either in the snapshot or broadcast live to the attached client:
|
|
283
|
+
* no gap, no duplication.
|
|
284
|
+
*
|
|
285
|
+
* Failure never degrades availability: callers fall back to the raw-ring replay
|
|
286
|
+
* (today's behavior, nudge-recovered), logging the `reason`.
|
|
287
|
+
*/
|
|
288
|
+
replaySnapshot(): Promise<ReplaySnapshotResult>;
|
|
126
289
|
/** Detach a WebSocket client. Starts disconnect timer if no clients remain (non-shellper only). */
|
|
127
290
|
detach(client: {
|
|
128
291
|
send: (data: Buffer | string) => void;
|
|
129
292
|
}): void;
|
|
130
293
|
/** Working directory of the PTY session. */
|
|
131
294
|
get cwd(): string;
|
|
295
|
+
/**
|
|
296
|
+
* Launch command of this session's process (Spec 1313 — render-gate identity seam).
|
|
297
|
+
*
|
|
298
|
+
* `command` and `args` live in the private `config`; the render-gate's
|
|
299
|
+
* `resolveProfile` needs an authoritative source to map a session to its
|
|
300
|
+
* classifier profile (claude/codex/unknown). Exposed as read-only getters so
|
|
301
|
+
* the gate never guesses app identity from the label alone.
|
|
302
|
+
*/
|
|
303
|
+
get command(): string;
|
|
304
|
+
/** Launch arguments of this session's process (Spec 1313 — paired with `command`). */
|
|
305
|
+
get launchArgs(): string[];
|
|
132
306
|
get status(): 'running' | 'exited';
|
|
133
307
|
get pid(): number;
|
|
134
308
|
get info(): PtySessionInfo;
|
|
135
309
|
get clientCount(): number;
|
|
136
310
|
/** Bytes held in the ring buffer's incomplete-line partial (observability, #1047). */
|
|
137
311
|
get partialBytes(): number;
|
|
312
|
+
/**
|
|
313
|
+
* The persistent gate mirror (Spec 1313 render-gate round 2), or null before this session's
|
|
314
|
+
* first output byte (and after teardown). The mailbox delivery gate reads its CURRENT
|
|
315
|
+
* viewport to classify the composer, instead of re-rendering the (capped, tear-prone) ring.
|
|
316
|
+
* A null mirror means the session has produced no output yet → not a verified-empty prompt →
|
|
317
|
+
* the gate holds, exactly as an empty replay always did.
|
|
318
|
+
*/
|
|
319
|
+
get gateScreen(): SessionScreen | null;
|
|
320
|
+
/**
|
|
321
|
+
* Cumulative output bytes ever fed to this session (Spec 1313 render-gate round 2) — the
|
|
322
|
+
* gate's MONOTONE change token. Sourced from the ring buffer's `bytesWritten`, which the
|
|
323
|
+
* mirror is fed in lockstep with, so an unchanged value proves the mirror's screen has not
|
|
324
|
+
* moved. Monotone (never falls on a partial trim), unlike the retired `partialBytes` token.
|
|
325
|
+
*/
|
|
326
|
+
get bytesWritten(): number;
|
|
138
327
|
/** Record that a user sent input to this session. */
|
|
139
328
|
recordUserInput(): void;
|
|
329
|
+
/**
|
|
330
|
+
* Handle one chunk of user keyboard input from a live terminal client: record it for
|
|
331
|
+
* typing-awareness (Spec 403), track composing/submit state (Bugfix #450 — Enter
|
|
332
|
+
* submits any draft), then write it to the PTY. This is the single chokepoint every
|
|
333
|
+
* live terminal input path routes through — the Tower WS handler and the standalone
|
|
334
|
+
* pty-manager server — so submit detection (and thus the Spec 1313 Phase 5 `'submit'`
|
|
335
|
+
* fast-delivery trigger emitted by {@link stopComposing}) can never diverge between
|
|
336
|
+
* clients. Automated mailbox delivery calls {@link write} directly and so, correctly,
|
|
337
|
+
* never trips a submit signal.
|
|
338
|
+
*/
|
|
339
|
+
handleUserInput(data: string): void;
|
|
140
340
|
/** Whether the user has been idle (no input) for at least thresholdMs. */
|
|
141
341
|
isUserIdle(thresholdMs: number): boolean;
|
|
142
342
|
/** Timestamp (epoch ms) of the last user input, or 0 if none. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"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"}
|