@cluesmith/codev 2.0.0-rc.9 → 2.0.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/bin/af.js +2 -2
- package/bin/consult.js +1 -1
- package/dashboard/dist/assets/index-4n9zpWLY.css +32 -0
- package/dashboard/dist/assets/index-b38SaXk5.js +136 -0
- package/dashboard/dist/assets/index-b38SaXk5.js.map +1 -0
- package/dashboard/dist/index.html +14 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +179 -104
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +3 -3
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +20 -147
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +13 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -0
- package/dist/agent-farm/commands/attach.js +144 -0
- package/dist/agent-farm/commands/attach.js.map +1 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +35 -19
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/consult.d.ts +3 -4
- package/dist/agent-farm/commands/consult.d.ts.map +1 -1
- package/dist/agent-farm/commands/consult.js +27 -37
- package/dist/agent-farm/commands/consult.js.map +1 -1
- package/dist/agent-farm/commands/index.d.ts +2 -2
- package/dist/agent-farm/commands/index.d.ts.map +1 -1
- package/dist/agent-farm/commands/index.js +2 -2
- package/dist/agent-farm/commands/index.js.map +1 -1
- package/dist/agent-farm/commands/open.d.ts +4 -2
- package/dist/agent-farm/commands/open.d.ts.map +1 -1
- package/dist/agent-farm/commands/open.js +33 -83
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +70 -79
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/shell.d.ts +15 -0
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/shell.js +50 -0
- package/dist/agent-farm/commands/shell.js.map +1 -0
- package/dist/agent-farm/commands/spawn-roles.d.ts +80 -0
- package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -0
- package/dist/agent-farm/commands/spawn-roles.js +278 -0
- package/dist/agent-farm/commands/spawn-roles.js.map +1 -0
- package/dist/agent-farm/commands/spawn-worktree.d.ts +96 -0
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -0
- package/dist/agent-farm/commands/spawn-worktree.js +305 -0
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -0
- package/dist/agent-farm/commands/spawn.d.ts +5 -1
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +241 -561
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts +10 -20
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +45 -449
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts +2 -0
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +75 -24
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts +6 -0
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +49 -109
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +48 -0
- package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower-cloud.js +293 -0
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
- package/dist/agent-farm/commands/tower.d.ts +9 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +59 -19
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts +6 -2
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +301 -19
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/migrate.d.ts +0 -4
- package/dist/agent-farm/db/migrate.d.ts.map +1 -1
- package/dist/agent-farm/db/migrate.js +6 -55
- package/dist/agent-farm/db/migrate.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +3 -3
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +25 -19
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +3 -13
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +3 -11
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/hq-connector.d.ts +2 -6
- package/dist/agent-farm/hq-connector.d.ts.map +1 -1
- package/dist/agent-farm/hq-connector.js +2 -17
- package/dist/agent-farm/hq-connector.js.map +1 -1
- package/dist/agent-farm/lib/cloud-config.d.ts +59 -0
- package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
- package/dist/agent-farm/lib/cloud-config.js +143 -0
- package/dist/agent-farm/lib/cloud-config.js.map +1 -0
- package/dist/agent-farm/lib/device-name.d.ts +25 -0
- package/dist/agent-farm/lib/device-name.d.ts.map +1 -0
- package/dist/agent-farm/lib/device-name.js +46 -0
- package/dist/agent-farm/lib/device-name.js.map +1 -0
- package/dist/agent-farm/lib/nonce-store.d.ts +28 -0
- package/dist/agent-farm/lib/nonce-store.d.ts.map +1 -0
- package/dist/agent-farm/lib/nonce-store.js +60 -0
- package/dist/agent-farm/lib/nonce-store.js.map +1 -0
- package/dist/agent-farm/lib/token-exchange.d.ts +18 -0
- package/dist/agent-farm/lib/token-exchange.d.ts.map +1 -0
- package/dist/agent-farm/lib/token-exchange.js +48 -0
- package/dist/agent-farm/lib/token-exchange.js.map +1 -0
- package/dist/agent-farm/lib/tower-client.d.ts +163 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tower-client.js +233 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.js +504 -0
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
- package/dist/agent-farm/servers/tower-instances.d.ts +82 -0
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-instances.js +454 -0
- package/dist/agent-farm/servers/tower-instances.js.map +1 -0
- package/dist/agent-farm/servers/tower-routes.d.ts +34 -0
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-routes.js +1445 -0
- package/dist/agent-farm/servers/tower-routes.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.d.ts +5 -2
- package/dist/agent-farm/servers/tower-server.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +157 -475
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +119 -0
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-terminals.js +629 -0
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -0
- package/dist/agent-farm/servers/tower-tunnel.d.ts +34 -0
- package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-tunnel.js +480 -0
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -0
- package/dist/agent-farm/servers/tower-types.d.ts +86 -0
- package/dist/agent-farm/servers/tower-types.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-types.js +6 -0
- package/dist/agent-farm/servers/tower-types.js.map +1 -0
- package/dist/agent-farm/servers/tower-utils.d.ts +58 -0
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-utils.js +182 -0
- package/dist/agent-farm/servers/tower-utils.js.map +1 -0
- package/dist/agent-farm/servers/tower-websocket.d.ts +25 -0
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-websocket.js +171 -0
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -0
- package/dist/agent-farm/state.d.ts +6 -2
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +34 -25
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +49 -26
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +0 -5
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +12 -44
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/deps.d.ts.map +1 -1
- package/dist/agent-farm/utils/deps.js +0 -32
- package/dist/agent-farm/utils/deps.js.map +1 -1
- package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
- package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
- package/dist/agent-farm/utils/file-tabs.js +46 -0
- package/dist/agent-farm/utils/file-tabs.js.map +1 -0
- package/dist/agent-farm/utils/gate-status.d.ts +16 -0
- package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-status.js +79 -0
- package/dist/agent-farm/utils/gate-status.js.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.js +122 -0
- package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
- package/dist/agent-farm/utils/index.d.ts +0 -1
- package/dist/agent-farm/utils/index.d.ts.map +1 -1
- package/dist/agent-farm/utils/index.js +0 -1
- package/dist/agent-farm/utils/index.js.map +1 -1
- package/dist/agent-farm/utils/notifications.d.ts +30 -0
- package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
- package/dist/agent-farm/utils/notifications.js +121 -0
- package/dist/agent-farm/utils/notifications.js.map +1 -0
- package/dist/agent-farm/utils/server-utils.d.ts +5 -5
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +5 -16
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/session.d.ts +32 -0
- package/dist/agent-farm/utils/session.d.ts.map +1 -0
- package/dist/agent-farm/utils/session.js +57 -0
- package/dist/agent-farm/utils/session.js.map +1 -0
- package/dist/agent-farm/utils/shell.d.ts +9 -22
- package/dist/agent-farm/utils/shell.d.ts.map +1 -1
- package/dist/agent-farm/utils/shell.js +34 -34
- package/dist/agent-farm/utils/shell.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -37
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +33 -4
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +13 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +244 -29
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +96 -79
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +36 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/build-counter.d.ts +5 -0
- package/dist/commands/porch/build-counter.d.ts.map +1 -0
- package/dist/commands/porch/build-counter.js +5 -0
- package/dist/commands/porch/build-counter.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +3 -2
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +8 -2
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/index.d.ts +4 -0
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +109 -70
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts +22 -0
- package/dist/commands/porch/next.d.ts.map +1 -0
- package/dist/commands/porch/next.js +571 -0
- package/dist/commands/porch/next.js.map +1 -0
- package/dist/commands/porch/plan.d.ts +11 -1
- package/dist/commands/porch/plan.d.ts.map +1 -1
- package/dist/commands/porch/plan.js +33 -5
- package/dist/commands/porch/plan.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +44 -26
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts +6 -4
- package/dist/commands/porch/protocol.d.ts.map +1 -1
- package/dist/commands/porch/protocol.js +59 -15
- package/dist/commands/porch/protocol.js.map +1 -1
- package/dist/commands/porch/state.d.ts +29 -2
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +71 -3
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +45 -2
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/porch/verdict.d.ts +31 -0
- package/dist/commands/porch/verdict.d.ts.map +1 -0
- package/dist/commands/porch/verdict.js +59 -0
- package/dist/commands/porch/verdict.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +18 -6
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +13 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +36 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +8 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +5 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +69 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -0
- package/dist/terminal/pty-manager.js +377 -0
- package/dist/terminal/pty-manager.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +104 -0
- package/dist/terminal/pty-session.d.ts.map +1 -0
- package/dist/terminal/pty-session.js +327 -0
- package/dist/terminal/pty-session.js.map +1 -0
- package/dist/terminal/ring-buffer.d.ts +34 -0
- package/dist/terminal/ring-buffer.d.ts.map +1 -0
- package/dist/terminal/ring-buffer.js +94 -0
- package/dist/terminal/ring-buffer.js.map +1 -0
- package/dist/terminal/session-manager.d.ts +115 -0
- package/dist/terminal/session-manager.d.ts.map +1 -0
- package/dist/terminal/session-manager.js +582 -0
- package/dist/terminal/session-manager.js.map +1 -0
- package/dist/terminal/shellper-client.d.ts +66 -0
- package/dist/terminal/shellper-client.d.ts.map +1 -0
- package/dist/terminal/shellper-client.js +234 -0
- package/dist/terminal/shellper-client.js.map +1 -0
- package/dist/terminal/shellper-main.d.ts +19 -0
- package/dist/terminal/shellper-main.d.ts.map +1 -0
- package/dist/terminal/shellper-main.js +153 -0
- package/dist/terminal/shellper-main.js.map +1 -0
- package/dist/terminal/shellper-process.d.ts +75 -0
- package/dist/terminal/shellper-process.d.ts.map +1 -0
- package/dist/terminal/shellper-process.js +279 -0
- package/dist/terminal/shellper-process.js.map +1 -0
- package/dist/terminal/shellper-protocol.d.ts +115 -0
- package/dist/terminal/shellper-protocol.d.ts.map +1 -0
- package/dist/terminal/shellper-protocol.js +214 -0
- package/dist/terminal/shellper-protocol.js.map +1 -0
- package/dist/terminal/shellper-replay-buffer.d.ts +38 -0
- package/dist/terminal/shellper-replay-buffer.d.ts.map +1 -0
- package/dist/terminal/shellper-replay-buffer.js +94 -0
- package/dist/terminal/shellper-replay-buffer.js.map +1 -0
- package/dist/terminal/ws-protocol.d.ts +27 -0
- package/dist/terminal/ws-protocol.d.ts.map +1 -0
- package/dist/terminal/ws-protocol.js +44 -0
- package/dist/terminal/ws-protocol.js.map +1 -0
- package/package.json +17 -5
- package/skeleton/.claude/skills/af/SKILL.md +89 -0
- package/skeleton/.claude/skills/codev/SKILL.md +41 -0
- package/skeleton/.claude/skills/consult/SKILL.md +81 -0
- package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
- package/skeleton/DEPENDENCIES.md +4 -62
- package/skeleton/builders.md +1 -1
- package/skeleton/consult-types/impl-review.md +18 -9
- package/skeleton/consult-types/integration-review.md +1 -1
- package/skeleton/consult-types/plan-review.md +1 -1
- package/skeleton/consult-types/pr-ready.md +1 -1
- package/skeleton/consult-types/spec-review.md +1 -1
- package/skeleton/porch/prompts/defend.md +1 -1
- package/skeleton/porch/prompts/evaluate.md +2 -2
- package/skeleton/porch/prompts/implement.md +1 -1
- package/skeleton/porch/prompts/plan.md +1 -1
- package/skeleton/porch/prompts/review.md +4 -4
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/porch/prompts/understand.md +2 -2
- package/skeleton/protocol-schema.json +282 -0
- package/skeleton/protocols/bugfix/builder-prompt.md +60 -0
- package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
- package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
- package/skeleton/protocols/bugfix/prompts/pr.md +84 -0
- package/skeleton/protocols/bugfix/protocol.json +20 -33
- package/skeleton/protocols/experiment/builder-prompt.md +52 -0
- package/skeleton/protocols/experiment/protocol.json +101 -0
- package/skeleton/protocols/experiment/protocol.md +3 -3
- package/skeleton/protocols/experiment/templates/notes.md +1 -1
- package/skeleton/protocols/maintain/builder-prompt.md +46 -0
- package/skeleton/protocols/maintain/prompts/audit.md +111 -0
- package/skeleton/protocols/maintain/prompts/clean.md +91 -0
- package/skeleton/protocols/maintain/prompts/sync.md +113 -0
- package/skeleton/protocols/maintain/prompts/verify.md +110 -0
- package/skeleton/protocols/maintain/protocol.json +141 -0
- package/skeleton/protocols/maintain/protocol.md +17 -11
- package/skeleton/protocols/protocol-schema.json +54 -1
- package/skeleton/protocols/spir/builder-prompt.md +66 -0
- package/skeleton/protocols/spir/prompts/implement.md +208 -0
- package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
- package/skeleton/protocols/{spider → spir}/prompts/review.md +20 -39
- package/skeleton/protocols/{spider → spir}/prompts/specify.md +24 -59
- package/skeleton/protocols/{spider → spir}/protocol.json +30 -10
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/spir/templates/review.md +89 -0
- package/skeleton/protocols/tick/builder-prompt.md +56 -0
- package/skeleton/protocols/tick/protocol.json +7 -2
- package/skeleton/protocols/tick/protocol.md +18 -18
- package/skeleton/protocols/tick/templates/review.md +1 -1
- package/skeleton/resources/commands/agent-farm.md +63 -46
- package/skeleton/resources/commands/codev.md +0 -2
- package/skeleton/resources/commands/overview.md +7 -17
- package/skeleton/resources/workflow-reference.md +4 -4
- package/skeleton/roles/architect.md +151 -306
- package/skeleton/roles/builder.md +115 -332
- package/skeleton/roles/consultant.md +6 -6
- package/skeleton/templates/AGENTS.md +2 -2
- package/skeleton/templates/CLAUDE.md +2 -2
- package/skeleton/templates/cheatsheet.md +7 -5
- package/skeleton/templates/projectlist.md +1 -1
- package/templates/dashboard/index.html +17 -16
- package/templates/dashboard/js/dialogs.js +7 -7
- package/templates/dashboard/js/files.js +2 -2
- package/templates/dashboard/js/main.js +4 -4
- package/templates/dashboard/js/projects.js +3 -3
- package/templates/dashboard/js/tabs.js +1 -1
- package/templates/dashboard/js/utils.js +22 -1
- package/templates/open.html +26 -0
- package/templates/tower.html +731 -91
- package/dist/agent-farm/commands/kickoff.d.ts +0 -20
- package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
- package/dist/agent-farm/commands/kickoff.js +0 -273
- package/dist/agent-farm/commands/kickoff.js.map +0 -1
- package/dist/agent-farm/commands/rename.d.ts +0 -13
- package/dist/agent-farm/commands/rename.d.ts.map +0 -1
- package/dist/agent-farm/commands/rename.js +0 -33
- package/dist/agent-farm/commands/rename.js.map +0 -1
- package/dist/agent-farm/commands/tutorial.d.ts +0 -10
- package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
- package/dist/agent-farm/commands/tutorial.js +0 -49
- package/dist/agent-farm/commands/tutorial.js.map +0 -1
- package/dist/agent-farm/commands/util.d.ts +0 -15
- package/dist/agent-farm/commands/util.d.ts.map +0 -1
- package/dist/agent-farm/commands/util.js +0 -108
- package/dist/agent-farm/commands/util.js.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
- package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.js +0 -1858
- package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
- package/dist/agent-farm/servers/open-server.d.ts +0 -7
- package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/open-server.js +0 -315
- package/dist/agent-farm/servers/open-server.js.map +0 -1
- package/dist/agent-farm/tutorial/index.d.ts +0 -8
- package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/index.js +0 -8
- package/dist/agent-farm/tutorial/index.js.map +0 -1
- package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
- package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/prompts.js +0 -147
- package/dist/agent-farm/tutorial/prompts.js.map +0 -1
- package/dist/agent-farm/tutorial/runner.d.ts +0 -52
- package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/runner.js +0 -204
- package/dist/agent-farm/tutorial/runner.js.map +0 -1
- package/dist/agent-farm/tutorial/state.d.ts +0 -26
- package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/state.js +0 -89
- package/dist/agent-farm/tutorial/state.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
- package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
- package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
- package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.js +0 -10
- package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.js +0 -143
- package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.js +0 -78
- package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.js +0 -126
- package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
- package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
- package/dist/agent-farm/utils/orphan-handler.d.ts +0 -27
- package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
- package/dist/agent-farm/utils/orphan-handler.js +0 -149
- package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
- package/dist/agent-farm/utils/port-registry.d.ts +0 -58
- package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
- package/dist/agent-farm/utils/port-registry.js +0 -166
- package/dist/agent-farm/utils/port-registry.js.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
- package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.js +0 -35
- package/dist/agent-farm/utils/terminal-ports.js.map +0 -1
- package/dist/commands/pcheck/cache.d.ts +0 -48
- package/dist/commands/pcheck/cache.d.ts.map +0 -1
- package/dist/commands/pcheck/cache.js +0 -170
- package/dist/commands/pcheck/cache.js.map +0 -1
- package/dist/commands/pcheck/evaluator.d.ts +0 -15
- package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
- package/dist/commands/pcheck/evaluator.js +0 -246
- package/dist/commands/pcheck/evaluator.js.map +0 -1
- package/dist/commands/pcheck/index.d.ts +0 -12
- package/dist/commands/pcheck/index.d.ts.map +0 -1
- package/dist/commands/pcheck/index.js +0 -249
- package/dist/commands/pcheck/index.js.map +0 -1
- package/dist/commands/pcheck/parser.d.ts +0 -39
- package/dist/commands/pcheck/parser.d.ts.map +0 -1
- package/dist/commands/pcheck/parser.js +0 -155
- package/dist/commands/pcheck/parser.js.map +0 -1
- package/dist/commands/pcheck/types.d.ts +0 -82
- package/dist/commands/pcheck/types.d.ts.map +0 -1
- package/dist/commands/pcheck/types.js +0 -5
- package/dist/commands/pcheck/types.js.map +0 -1
- package/dist/commands/porch/claude.d.ts +0 -29
- package/dist/commands/porch/claude.d.ts.map +0 -1
- package/dist/commands/porch/claude.js +0 -79
- package/dist/commands/porch/claude.js.map +0 -1
- package/dist/commands/porch/consultation.d.ts +0 -56
- package/dist/commands/porch/consultation.d.ts.map +0 -1
- package/dist/commands/porch/consultation.js +0 -330
- package/dist/commands/porch/consultation.js.map +0 -1
- package/dist/commands/porch/notifications.d.ts +0 -99
- package/dist/commands/porch/notifications.d.ts.map +0 -1
- package/dist/commands/porch/notifications.js +0 -223
- package/dist/commands/porch/notifications.js.map +0 -1
- package/dist/commands/porch/plan-parser.d.ts +0 -38
- package/dist/commands/porch/plan-parser.d.ts.map +0 -1
- package/dist/commands/porch/plan-parser.js +0 -166
- package/dist/commands/porch/plan-parser.js.map +0 -1
- package/dist/commands/porch/protocol-loader.d.ts +0 -46
- package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
- package/dist/commands/porch/protocol-loader.js +0 -262
- package/dist/commands/porch/protocol-loader.js.map +0 -1
- package/dist/commands/porch/repl.d.ts +0 -33
- package/dist/commands/porch/repl.d.ts.map +0 -1
- package/dist/commands/porch/repl.js +0 -206
- package/dist/commands/porch/repl.js.map +0 -1
- package/dist/commands/porch/run.d.ts +0 -15
- package/dist/commands/porch/run.d.ts.map +0 -1
- package/dist/commands/porch/run.js +0 -551
- package/dist/commands/porch/run.js.map +0 -1
- package/dist/commands/porch/signal-parser.d.ts +0 -102
- package/dist/commands/porch/signal-parser.d.ts.map +0 -1
- package/dist/commands/porch/signal-parser.js +0 -199
- package/dist/commands/porch/signal-parser.js.map +0 -1
- package/dist/commands/porch/signals.d.ts +0 -35
- package/dist/commands/porch/signals.d.ts.map +0 -1
- package/dist/commands/porch/signals.js +0 -76
- package/dist/commands/porch/signals.js.map +0 -1
- package/dist/commands/porch2/checks.d.ts +0 -29
- package/dist/commands/porch2/checks.d.ts.map +0 -1
- package/dist/commands/porch2/checks.js +0 -141
- package/dist/commands/porch2/checks.js.map +0 -1
- package/dist/commands/porch2/index.d.ts +0 -38
- package/dist/commands/porch2/index.d.ts.map +0 -1
- package/dist/commands/porch2/index.js +0 -483
- package/dist/commands/porch2/index.js.map +0 -1
- package/dist/commands/porch2/plan.d.ts +0 -70
- package/dist/commands/porch2/plan.d.ts.map +0 -1
- package/dist/commands/porch2/plan.js +0 -227
- package/dist/commands/porch2/plan.js.map +0 -1
- package/dist/commands/porch2/protocol.d.ts +0 -37
- package/dist/commands/porch2/protocol.d.ts.map +0 -1
- package/dist/commands/porch2/protocol.js +0 -183
- package/dist/commands/porch2/protocol.js.map +0 -1
- package/dist/commands/porch2/state.d.ts +0 -35
- package/dist/commands/porch2/state.d.ts.map +0 -1
- package/dist/commands/porch2/state.js +0 -124
- package/dist/commands/porch2/state.js.map +0 -1
- package/dist/commands/porch2/types.d.ts +0 -79
- package/dist/commands/porch2/types.d.ts.map +0 -1
- package/dist/commands/porch2/types.js +0 -8
- package/dist/commands/porch2/types.js.map +0 -1
- package/dist/commands/tower.d.ts +0 -16
- package/dist/commands/tower.d.ts.map +0 -1
- package/dist/commands/tower.js +0 -21
- package/dist/commands/tower.js.map +0 -1
- package/skeleton/config.json +0 -7
- package/skeleton/protocols/spider/prompts/defend.md +0 -215
- package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
- package/skeleton/protocols/spider/prompts/implement.md +0 -149
- package/skeleton/protocols/spider/templates/review.md +0 -207
- /package/skeleton/protocols/{spider → spir}/templates/plan.md +0 -0
- /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Porch2 Plan Parsing
|
|
3
|
-
*
|
|
4
|
-
* Extracts implementation phases from plan.md files.
|
|
5
|
-
* Looks for `### Phase N: <title>` headers.
|
|
6
|
-
* Fails loudly if plan file is missing when required.
|
|
7
|
-
*/
|
|
8
|
-
import * as fs from 'node:fs';
|
|
9
|
-
import * as path from 'node:path';
|
|
10
|
-
// ============================================================================
|
|
11
|
-
// Plan File Discovery
|
|
12
|
-
// ============================================================================
|
|
13
|
-
/**
|
|
14
|
-
* Find the plan file for a project
|
|
15
|
-
* Searches both legacy (codev/plans/NNNN-name.md) and new (codev/projects/NNNN-name/plan.md) locations
|
|
16
|
-
*/
|
|
17
|
-
export function findPlanFile(projectRoot, projectId, projectName) {
|
|
18
|
-
const searchPaths = [];
|
|
19
|
-
// New structure: codev/projects/<id>-<name>/plan.md
|
|
20
|
-
if (projectName) {
|
|
21
|
-
searchPaths.push(path.join(projectRoot, 'codev/projects', `${projectId}-${projectName}`, 'plan.md'));
|
|
22
|
-
}
|
|
23
|
-
// Legacy structure: codev/plans/<id>-*.md
|
|
24
|
-
const plansDir = path.join(projectRoot, 'codev/plans');
|
|
25
|
-
if (fs.existsSync(plansDir)) {
|
|
26
|
-
const files = fs.readdirSync(plansDir);
|
|
27
|
-
const match = files.find(f => f.startsWith(`${projectId}-`) && f.endsWith('.md'));
|
|
28
|
-
if (match) {
|
|
29
|
-
searchPaths.push(path.join(plansDir, match));
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
for (const planPath of searchPaths) {
|
|
33
|
-
if (fs.existsSync(planPath)) {
|
|
34
|
-
return planPath;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
// ============================================================================
|
|
40
|
-
// Phase Extraction
|
|
41
|
-
// ============================================================================
|
|
42
|
-
/** Default stages for a new plan phase */
|
|
43
|
-
const DEFAULT_STAGES = {
|
|
44
|
-
implement: 'pending',
|
|
45
|
-
defend: 'pending',
|
|
46
|
-
evaluate: 'pending',
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Extract phases from plan markdown content
|
|
50
|
-
* Returns phases with all stages pending
|
|
51
|
-
*
|
|
52
|
-
* Looks for a JSON code block in the "Phases (Machine Readable)" section:
|
|
53
|
-
* ```json
|
|
54
|
-
* {"phases": [{"id": "phase_1", "title": "..."}, ...]}
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
export function extractPlanPhases(planContent) {
|
|
58
|
-
// Look for JSON code block with phases
|
|
59
|
-
const jsonMatch = planContent.match(/```json\s*\n([\s\S]*?)\n```/);
|
|
60
|
-
if (jsonMatch) {
|
|
61
|
-
try {
|
|
62
|
-
const parsed = JSON.parse(jsonMatch[1]);
|
|
63
|
-
if (parsed.phases && Array.isArray(parsed.phases)) {
|
|
64
|
-
return parsed.phases.map((p) => ({
|
|
65
|
-
id: p.id,
|
|
66
|
-
title: p.title,
|
|
67
|
-
stages: { ...DEFAULT_STAGES },
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch (e) {
|
|
72
|
-
// JSON parse failed, fall through to default
|
|
73
|
-
console.warn('Failed to parse phases JSON from plan:', e);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// No JSON block found - return single default phase
|
|
77
|
-
return [{
|
|
78
|
-
id: 'phase_1',
|
|
79
|
-
title: 'Implementation',
|
|
80
|
-
stages: { ...DEFAULT_STAGES },
|
|
81
|
-
}];
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Extract phases from a plan file
|
|
85
|
-
* Fails loudly if file doesn't exist
|
|
86
|
-
*/
|
|
87
|
-
export function extractPhasesFromFile(planFilePath) {
|
|
88
|
-
if (!fs.existsSync(planFilePath)) {
|
|
89
|
-
throw new Error(`Plan file not found: ${planFilePath}`);
|
|
90
|
-
}
|
|
91
|
-
const content = fs.readFileSync(planFilePath, 'utf-8');
|
|
92
|
-
return extractPlanPhases(content);
|
|
93
|
-
}
|
|
94
|
-
// ============================================================================
|
|
95
|
-
// Phase Navigation
|
|
96
|
-
// ============================================================================
|
|
97
|
-
/** IDE stages in order */
|
|
98
|
-
const IDE_STAGES = ['implement', 'defend', 'evaluate'];
|
|
99
|
-
/**
|
|
100
|
-
* Check if a plan phase is fully complete (all stages complete)
|
|
101
|
-
*/
|
|
102
|
-
export function isPlanPhaseComplete(phase) {
|
|
103
|
-
return phase.stages.implement === 'complete' &&
|
|
104
|
-
phase.stages.defend === 'complete' &&
|
|
105
|
-
phase.stages.evaluate === 'complete';
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Get the current stage within a plan phase
|
|
109
|
-
*/
|
|
110
|
-
export function getCurrentStage(phase) {
|
|
111
|
-
for (const stage of IDE_STAGES) {
|
|
112
|
-
if (phase.stages[stage] !== 'complete') {
|
|
113
|
-
return stage;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return null; // All stages complete
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Get the current plan phase (first non-complete phase)
|
|
120
|
-
*/
|
|
121
|
-
export function getCurrentPlanPhase(phases) {
|
|
122
|
-
for (const phase of phases) {
|
|
123
|
-
if (!isPlanPhaseComplete(phase)) {
|
|
124
|
-
return phase;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return null; // All phases complete
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Get the next plan phase after a given phase
|
|
131
|
-
*/
|
|
132
|
-
export function getNextPlanPhase(phases, currentPhaseId) {
|
|
133
|
-
const currentIndex = phases.findIndex(p => p.id === currentPhaseId);
|
|
134
|
-
if (currentIndex >= 0 && currentIndex < phases.length - 1) {
|
|
135
|
-
return phases[currentIndex + 1];
|
|
136
|
-
}
|
|
137
|
-
return null;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Check if all plan phases are complete
|
|
141
|
-
*/
|
|
142
|
-
export function allPlanPhasesComplete(phases) {
|
|
143
|
-
return phases.every(isPlanPhaseComplete);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Advance the stage within a plan phase
|
|
147
|
-
* Returns updated phases array and the next protocol phase to enter
|
|
148
|
-
*/
|
|
149
|
-
export function advanceStage(phases, currentPhaseId, currentStage) {
|
|
150
|
-
const phaseIndex = phases.findIndex(p => p.id === currentPhaseId);
|
|
151
|
-
if (phaseIndex < 0) {
|
|
152
|
-
return { phases, nextProtocolPhase: null };
|
|
153
|
-
}
|
|
154
|
-
const stageIndex = IDE_STAGES.indexOf(currentStage);
|
|
155
|
-
const updatedPhases = phases.map((p, i) => {
|
|
156
|
-
if (i !== phaseIndex)
|
|
157
|
-
return p;
|
|
158
|
-
const newStages = { ...p.stages };
|
|
159
|
-
newStages[currentStage] = 'complete';
|
|
160
|
-
// If there's a next stage, mark it in_progress
|
|
161
|
-
if (stageIndex < IDE_STAGES.length - 1) {
|
|
162
|
-
newStages[IDE_STAGES[stageIndex + 1]] = 'in_progress';
|
|
163
|
-
}
|
|
164
|
-
return { ...p, stages: newStages };
|
|
165
|
-
});
|
|
166
|
-
// Determine next protocol phase
|
|
167
|
-
let nextProtocolPhase = null;
|
|
168
|
-
if (stageIndex < IDE_STAGES.length - 1) {
|
|
169
|
-
// Move to next stage within same plan phase
|
|
170
|
-
nextProtocolPhase = IDE_STAGES[stageIndex + 1];
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
// Completed evaluate, check if there's another plan phase
|
|
174
|
-
if (phaseIndex < phases.length - 1) {
|
|
175
|
-
// Start next plan phase at implement
|
|
176
|
-
const nextPlanPhase = phases[phaseIndex + 1];
|
|
177
|
-
updatedPhases[phaseIndex + 1] = {
|
|
178
|
-
...nextPlanPhase,
|
|
179
|
-
stages: { ...nextPlanPhase.stages, implement: 'in_progress' },
|
|
180
|
-
};
|
|
181
|
-
nextProtocolPhase = 'implement';
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
// All plan phases complete, move to review
|
|
185
|
-
nextProtocolPhase = 'review';
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return { phases: updatedPhases, nextProtocolPhase };
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Legacy: Advance to the next plan phase (for backward compat)
|
|
192
|
-
* @deprecated Use advanceStage instead
|
|
193
|
-
*/
|
|
194
|
-
export function advancePlanPhase(phases, currentPhaseId) {
|
|
195
|
-
// Mark all stages of current phase as complete
|
|
196
|
-
return phases.map((p, i) => {
|
|
197
|
-
if (p.id === currentPhaseId) {
|
|
198
|
-
return {
|
|
199
|
-
...p,
|
|
200
|
-
stages: { implement: 'complete', defend: 'complete', evaluate: 'complete' },
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
// Mark next phase's implement as in_progress
|
|
204
|
-
const currentIndex = phases.findIndex(phase => phase.id === currentPhaseId);
|
|
205
|
-
if (i === currentIndex + 1) {
|
|
206
|
-
return {
|
|
207
|
-
...p,
|
|
208
|
-
stages: { ...p.stages, implement: 'in_progress' },
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
return p;
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Get phase content from plan (the text under the phase header)
|
|
216
|
-
*/
|
|
217
|
-
export function getPhaseContent(planContent, phaseId) {
|
|
218
|
-
// Extract phase number from id
|
|
219
|
-
const numMatch = phaseId.match(/phase_(\d+)/);
|
|
220
|
-
if (!numMatch)
|
|
221
|
-
return null;
|
|
222
|
-
const phaseNum = numMatch[1];
|
|
223
|
-
const regex = new RegExp(`###\\s*Phase\\s+${phaseNum}:\\s*[^\\n]+\\n([\\s\\S]*?)(?=\\n###\\s*Phase|\\n##\\s|$)`, 'i');
|
|
224
|
-
const match = planContent.match(regex);
|
|
225
|
-
return match ? match[1].trim() : null;
|
|
226
|
-
}
|
|
227
|
-
//# sourceMappingURL=plan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/porch2/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Porch2 Protocol Loading
|
|
3
|
-
*
|
|
4
|
-
* Loads protocol definitions from JSON files.
|
|
5
|
-
* Fails loudly if protocol not found or invalid.
|
|
6
|
-
*/
|
|
7
|
-
import type { Protocol, ProtocolPhase } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Find and load a protocol by name
|
|
10
|
-
* Fails loudly if not found or invalid.
|
|
11
|
-
*/
|
|
12
|
-
export declare function loadProtocol(projectRoot: string, protocolName: string): Protocol;
|
|
13
|
-
/**
|
|
14
|
-
* Get phase configuration by id
|
|
15
|
-
*/
|
|
16
|
-
export declare function getPhaseConfig(protocol: Protocol, phaseId: string): ProtocolPhase | null;
|
|
17
|
-
/**
|
|
18
|
-
* Get the next phase after the given phase
|
|
19
|
-
*/
|
|
20
|
-
export declare function getNextPhase(protocol: Protocol, currentPhaseId: string): ProtocolPhase | null;
|
|
21
|
-
/**
|
|
22
|
-
* Get check commands for a phase
|
|
23
|
-
*/
|
|
24
|
-
export declare function getPhaseChecks(protocol: Protocol, phaseId: string): Record<string, string>;
|
|
25
|
-
/**
|
|
26
|
-
* Get gate name for a phase (if any)
|
|
27
|
-
*/
|
|
28
|
-
export declare function getPhaseGate(protocol: Protocol, phaseId: string): string | null;
|
|
29
|
-
/**
|
|
30
|
-
* Check if a phase is "phased" (runs per plan phase)
|
|
31
|
-
*/
|
|
32
|
-
export declare function isPhased(protocol: Protocol, phaseId: string): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Get checks to run when a plan phase completes (after evaluate stage)
|
|
35
|
-
*/
|
|
36
|
-
export declare function getPhaseCompletionChecks(protocol: Protocol): Record<string, string>;
|
|
37
|
-
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/commands/porch2/protocol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAY1D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,CAoBhF;AA4GD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAExF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAM7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGrE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnF"}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Porch2 Protocol Loading
|
|
3
|
-
*
|
|
4
|
-
* Loads protocol definitions from JSON files.
|
|
5
|
-
* Fails loudly if protocol not found or invalid.
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from 'node:fs';
|
|
8
|
-
import * as path from 'node:path';
|
|
9
|
-
/** Known protocol locations (relative to project root) */
|
|
10
|
-
const PROTOCOL_PATHS = [
|
|
11
|
-
'codev/protocols',
|
|
12
|
-
'codev-skeleton/protocols',
|
|
13
|
-
];
|
|
14
|
-
// ============================================================================
|
|
15
|
-
// Protocol Loading
|
|
16
|
-
// ============================================================================
|
|
17
|
-
/**
|
|
18
|
-
* Find and load a protocol by name
|
|
19
|
-
* Fails loudly if not found or invalid.
|
|
20
|
-
*/
|
|
21
|
-
export function loadProtocol(projectRoot, protocolName) {
|
|
22
|
-
const protocolFile = findProtocolFile(projectRoot, protocolName);
|
|
23
|
-
if (!protocolFile) {
|
|
24
|
-
throw new Error(`Protocol '${protocolName}' not found.\n` +
|
|
25
|
-
`Searched in: ${PROTOCOL_PATHS.map(p => path.join(projectRoot, p, protocolName)).join(', ')}`);
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
const content = fs.readFileSync(protocolFile, 'utf-8');
|
|
29
|
-
const json = JSON.parse(content);
|
|
30
|
-
return normalizeProtocol(json);
|
|
31
|
-
}
|
|
32
|
-
catch (err) {
|
|
33
|
-
if (err instanceof SyntaxError) {
|
|
34
|
-
throw new Error(`Invalid protocol '${protocolName}': JSON parse error\n${err.message}`);
|
|
35
|
-
}
|
|
36
|
-
throw err;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Find protocol.json file in {name}/protocol.json format
|
|
41
|
-
*/
|
|
42
|
-
function findProtocolFile(projectRoot, protocolName) {
|
|
43
|
-
for (const basePath of PROTOCOL_PATHS) {
|
|
44
|
-
const fullPath = path.resolve(projectRoot, basePath, protocolName, 'protocol.json');
|
|
45
|
-
if (fs.existsSync(fullPath)) {
|
|
46
|
-
return fullPath;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Normalize protocol JSON to our simplified Protocol type
|
|
53
|
-
*/
|
|
54
|
-
function normalizeProtocol(json) {
|
|
55
|
-
const obj = json;
|
|
56
|
-
if (!obj.name || typeof obj.name !== 'string') {
|
|
57
|
-
throw new Error('Invalid protocol: missing "name" field');
|
|
58
|
-
}
|
|
59
|
-
if (!obj.phases || !Array.isArray(obj.phases)) {
|
|
60
|
-
throw new Error('Invalid protocol: missing "phases" array');
|
|
61
|
-
}
|
|
62
|
-
const phases = obj.phases.map((p) => normalizePhase(p));
|
|
63
|
-
// Set next phase based on array order (if not explicitly set)
|
|
64
|
-
for (let i = 0; i < phases.length; i++) {
|
|
65
|
-
if (!phases[i].next && i + 1 < phases.length) {
|
|
66
|
-
phases[i].next = phases[i + 1].id;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// Extract default checks
|
|
70
|
-
const checks = {};
|
|
71
|
-
const defaults = obj.defaults;
|
|
72
|
-
if (defaults?.checks) {
|
|
73
|
-
Object.assign(checks, defaults.checks);
|
|
74
|
-
}
|
|
75
|
-
// Also collect per-phase checks
|
|
76
|
-
for (const phase of obj.phases) {
|
|
77
|
-
if (phase.checks && typeof phase.checks === 'object') {
|
|
78
|
-
for (const [name, check] of Object.entries(phase.checks)) {
|
|
79
|
-
if (typeof check === 'object' && check !== null && 'command' in check) {
|
|
80
|
-
checks[name] = check.command;
|
|
81
|
-
}
|
|
82
|
-
else if (typeof check === 'string') {
|
|
83
|
-
checks[name] = check;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return {
|
|
89
|
-
name: obj.name,
|
|
90
|
-
version: obj.version,
|
|
91
|
-
description: obj.description,
|
|
92
|
-
phases,
|
|
93
|
-
checks,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Normalize a phase from JSON
|
|
98
|
-
*/
|
|
99
|
-
function normalizePhase(p) {
|
|
100
|
-
const phase = p;
|
|
101
|
-
if (!phase.id || typeof phase.id !== 'string') {
|
|
102
|
-
throw new Error('Invalid protocol phase: missing "id"');
|
|
103
|
-
}
|
|
104
|
-
// Determine next phase from transition or gate
|
|
105
|
-
let next;
|
|
106
|
-
const transition = phase.transition;
|
|
107
|
-
const gate = phase.gate;
|
|
108
|
-
if (transition?.on_complete) {
|
|
109
|
-
next = transition.on_complete;
|
|
110
|
-
}
|
|
111
|
-
else if (gate?.next !== undefined) {
|
|
112
|
-
next = gate.next;
|
|
113
|
-
}
|
|
114
|
-
// Collect check names
|
|
115
|
-
const checks = [];
|
|
116
|
-
if (phase.checks && typeof phase.checks === 'object') {
|
|
117
|
-
checks.push(...Object.keys(phase.checks));
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
id: phase.id,
|
|
121
|
-
name: phase.name || phase.id,
|
|
122
|
-
type: phase.type,
|
|
123
|
-
gate: gate?.name,
|
|
124
|
-
checks: checks.length > 0 ? checks : undefined,
|
|
125
|
-
next,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
// ============================================================================
|
|
129
|
-
// Phase Queries
|
|
130
|
-
// ============================================================================
|
|
131
|
-
/**
|
|
132
|
-
* Get phase configuration by id
|
|
133
|
-
*/
|
|
134
|
-
export function getPhaseConfig(protocol, phaseId) {
|
|
135
|
-
return protocol.phases.find(p => p.id === phaseId) || null;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Get the next phase after the given phase
|
|
139
|
-
*/
|
|
140
|
-
export function getNextPhase(protocol, currentPhaseId) {
|
|
141
|
-
const current = getPhaseConfig(protocol, currentPhaseId);
|
|
142
|
-
if (!current || !current.next) {
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
return getPhaseConfig(protocol, current.next);
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Get check commands for a phase
|
|
149
|
-
*/
|
|
150
|
-
export function getPhaseChecks(protocol, phaseId) {
|
|
151
|
-
const phase = getPhaseConfig(protocol, phaseId);
|
|
152
|
-
if (!phase || !phase.checks) {
|
|
153
|
-
return {};
|
|
154
|
-
}
|
|
155
|
-
const result = {};
|
|
156
|
-
for (const checkName of phase.checks) {
|
|
157
|
-
if (protocol.checks?.[checkName]) {
|
|
158
|
-
result[checkName] = protocol.checks[checkName];
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return result;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Get gate name for a phase (if any)
|
|
165
|
-
*/
|
|
166
|
-
export function getPhaseGate(protocol, phaseId) {
|
|
167
|
-
const phase = getPhaseConfig(protocol, phaseId);
|
|
168
|
-
return phase?.gate || null;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Check if a phase is "phased" (runs per plan phase)
|
|
172
|
-
*/
|
|
173
|
-
export function isPhased(protocol, phaseId) {
|
|
174
|
-
const phase = getPhaseConfig(protocol, phaseId);
|
|
175
|
-
return phase?.type === 'per_plan_phase' || phase?.type === 'phased';
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Get checks to run when a plan phase completes (after evaluate stage)
|
|
179
|
-
*/
|
|
180
|
-
export function getPhaseCompletionChecks(protocol) {
|
|
181
|
-
return protocol.phase_completion ?? {};
|
|
182
|
-
}
|
|
183
|
-
//# sourceMappingURL=protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/commands/porch2/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Porch2 State Management
|
|
3
|
-
*
|
|
4
|
-
* Handles project state persistence with atomic writes.
|
|
5
|
-
* Fails loudly on any error - no guessing.
|
|
6
|
-
*/
|
|
7
|
-
import type { ProjectState, Protocol } from './types.js';
|
|
8
|
-
/** Directory for project state (relative to project root) */
|
|
9
|
-
export declare const PROJECTS_DIR = "codev/projects";
|
|
10
|
-
/**
|
|
11
|
-
* Get the project directory path
|
|
12
|
-
*/
|
|
13
|
-
export declare function getProjectDir(projectRoot: string, projectId: string, name: string): string;
|
|
14
|
-
/**
|
|
15
|
-
* Get the status.yaml path for a project
|
|
16
|
-
*/
|
|
17
|
-
export declare function getStatusPath(projectRoot: string, projectId: string, name: string): string;
|
|
18
|
-
/**
|
|
19
|
-
* Read project state from status.yaml
|
|
20
|
-
* Fails loudly if file is missing or corrupted.
|
|
21
|
-
*/
|
|
22
|
-
export declare function readState(statusPath: string): ProjectState;
|
|
23
|
-
/**
|
|
24
|
-
* Write project state atomically (tmp file + rename)
|
|
25
|
-
*/
|
|
26
|
-
export declare function writeState(statusPath: string, state: ProjectState): void;
|
|
27
|
-
/**
|
|
28
|
-
* Create initial state for a new project
|
|
29
|
-
*/
|
|
30
|
-
export declare function createInitialState(protocol: Protocol, projectId: string, title: string): ProjectState;
|
|
31
|
-
/**
|
|
32
|
-
* Find status.yaml by project ID (searches for NNNN-* directories)
|
|
33
|
-
*/
|
|
34
|
-
export declare function findStatusPath(projectRoot: string, projectId: string): string | null;
|
|
35
|
-
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/commands/porch2/state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAa,MAAM,YAAY,CAAC;AAEpE,6DAA6D;AAC7D,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAM7C;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1F;AAMD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAwB1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAmBxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,YAAY,CAyBd;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBpF"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Porch2 State Management
|
|
3
|
-
*
|
|
4
|
-
* Handles project state persistence with atomic writes.
|
|
5
|
-
* Fails loudly on any error - no guessing.
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from 'node:fs';
|
|
8
|
-
import * as path from 'node:path';
|
|
9
|
-
import * as yaml from 'js-yaml';
|
|
10
|
-
/** Directory for project state (relative to project root) */
|
|
11
|
-
export const PROJECTS_DIR = 'codev/projects';
|
|
12
|
-
// ============================================================================
|
|
13
|
-
// Path Utilities
|
|
14
|
-
// ============================================================================
|
|
15
|
-
/**
|
|
16
|
-
* Get the project directory path
|
|
17
|
-
*/
|
|
18
|
-
export function getProjectDir(projectRoot, projectId, name) {
|
|
19
|
-
return path.join(projectRoot, PROJECTS_DIR, `${projectId}-${name}`);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Get the status.yaml path for a project
|
|
23
|
-
*/
|
|
24
|
-
export function getStatusPath(projectRoot, projectId, name) {
|
|
25
|
-
return path.join(getProjectDir(projectRoot, projectId, name), 'status.yaml');
|
|
26
|
-
}
|
|
27
|
-
// ============================================================================
|
|
28
|
-
// State Operations
|
|
29
|
-
// ============================================================================
|
|
30
|
-
/**
|
|
31
|
-
* Read project state from status.yaml
|
|
32
|
-
* Fails loudly if file is missing or corrupted.
|
|
33
|
-
*/
|
|
34
|
-
export function readState(statusPath) {
|
|
35
|
-
if (!fs.existsSync(statusPath)) {
|
|
36
|
-
throw new Error(`Project not found: ${statusPath}\nRun 'porch2 init' to create a new project.`);
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
const content = fs.readFileSync(statusPath, 'utf-8');
|
|
40
|
-
const state = yaml.load(content);
|
|
41
|
-
// Basic validation
|
|
42
|
-
if (!state || typeof state !== 'object') {
|
|
43
|
-
throw new Error('Invalid state file: not an object');
|
|
44
|
-
}
|
|
45
|
-
if (!state.id || !state.protocol || !state.phase) {
|
|
46
|
-
throw new Error('Invalid state file: missing required fields (id, protocol, phase)');
|
|
47
|
-
}
|
|
48
|
-
return state;
|
|
49
|
-
}
|
|
50
|
-
catch (err) {
|
|
51
|
-
if (err instanceof yaml.YAMLException) {
|
|
52
|
-
throw new Error(`Invalid state file: YAML parse error\n${err.message}`);
|
|
53
|
-
}
|
|
54
|
-
throw err;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Write project state atomically (tmp file + rename)
|
|
59
|
-
*/
|
|
60
|
-
export function writeState(statusPath, state) {
|
|
61
|
-
const dir = path.dirname(statusPath);
|
|
62
|
-
const tmpPath = `${statusPath}.tmp`;
|
|
63
|
-
// Ensure directory exists
|
|
64
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
65
|
-
// Update timestamp
|
|
66
|
-
state.updated_at = new Date().toISOString();
|
|
67
|
-
// Write to temp file then rename (atomic)
|
|
68
|
-
const content = yaml.dump(state, {
|
|
69
|
-
indent: 2,
|
|
70
|
-
lineWidth: 120,
|
|
71
|
-
noRefs: true,
|
|
72
|
-
});
|
|
73
|
-
fs.writeFileSync(tmpPath, content, 'utf-8');
|
|
74
|
-
fs.renameSync(tmpPath, statusPath);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Create initial state for a new project
|
|
78
|
-
*/
|
|
79
|
-
export function createInitialState(protocol, projectId, title) {
|
|
80
|
-
const now = new Date().toISOString();
|
|
81
|
-
// Initialize gates from protocol
|
|
82
|
-
const gates = {};
|
|
83
|
-
for (const phase of protocol.phases) {
|
|
84
|
-
if (phase.gate) {
|
|
85
|
-
gates[phase.gate] = { status: 'pending' };
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// First phase is initial
|
|
89
|
-
const initialPhase = protocol.phases[0]?.id || 'specify';
|
|
90
|
-
return {
|
|
91
|
-
id: projectId,
|
|
92
|
-
title,
|
|
93
|
-
protocol: protocol.name,
|
|
94
|
-
phase: initialPhase,
|
|
95
|
-
plan_phases: [],
|
|
96
|
-
current_plan_phase: null,
|
|
97
|
-
gates,
|
|
98
|
-
started_at: now,
|
|
99
|
-
updated_at: now,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
// ============================================================================
|
|
103
|
-
// Discovery
|
|
104
|
-
// ============================================================================
|
|
105
|
-
/**
|
|
106
|
-
* Find status.yaml by project ID (searches for NNNN-* directories)
|
|
107
|
-
*/
|
|
108
|
-
export function findStatusPath(projectRoot, projectId) {
|
|
109
|
-
const projectsDir = path.join(projectRoot, PROJECTS_DIR);
|
|
110
|
-
if (!fs.existsSync(projectsDir)) {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
const entries = fs.readdirSync(projectsDir, { withFileTypes: true });
|
|
114
|
-
for (const entry of entries) {
|
|
115
|
-
if (entry.isDirectory() && entry.name.startsWith(`${projectId}-`)) {
|
|
116
|
-
const statusPath = path.join(projectsDir, entry.name, 'status.yaml');
|
|
117
|
-
if (fs.existsSync(statusPath)) {
|
|
118
|
-
return statusPath;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/commands/porch2/state.ts"],"names":[],"mappings":"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"}
|