@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.70
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/bin/porch.js +6 -35
- package/dashboard/dist/assets/index-C7FtNK6Y.css +32 -0
- package/dashboard/dist/assets/index-CDAINZKT.js +131 -0
- package/dashboard/dist/assets/index-CDAINZKT.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 +173 -118
- 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 +60 -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.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +597 -281
- 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 -491
- 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 +334 -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 +246 -18
- 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/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-server.js +2650 -185
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +6 -12
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +34 -49
- 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 +11 -54
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +49 -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 +245 -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 +41 -2
- 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 +17 -29
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +96 -144
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/index.d.ts +25 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +463 -1116
- 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 +70 -0
- package/dist/commands/porch/plan.d.ts.map +1 -0
- package/dist/commands/porch/plan.js +190 -0
- package/dist/commands/porch/plan.js.map +1 -0
- package/dist/commands/porch/prompts.d.ts +19 -0
- package/dist/commands/porch/prompts.d.ts.map +1 -0
- package/dist/commands/porch/prompts.js +277 -0
- package/dist/commands/porch/prompts.js.map +1 -0
- package/dist/commands/porch/protocol.d.ts +59 -0
- package/dist/commands/porch/protocol.d.ts.map +1 -0
- package/dist/commands/porch/protocol.js +294 -0
- package/dist/commands/porch/protocol.js.map +1 -0
- package/dist/commands/porch/state.d.ts +36 -107
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +120 -699
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +99 -164
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/porch/types.js +2 -1
- package/dist/commands/porch/types.js.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 +31 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +37 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +114 -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/shepherd-client.d.ts +58 -0
- package/dist/terminal/shepherd-client.d.ts.map +1 -0
- package/dist/terminal/shepherd-client.js +212 -0
- package/dist/terminal/shepherd-client.js.map +1 -0
- package/dist/terminal/shepherd-main.d.ts +19 -0
- package/dist/terminal/shepherd-main.d.ts.map +1 -0
- package/dist/terminal/shepherd-main.js +153 -0
- package/dist/terminal/shepherd-main.js.map +1 -0
- package/dist/terminal/shepherd-process.d.ts +75 -0
- package/dist/terminal/shepherd-process.d.ts.map +1 -0
- package/dist/terminal/shepherd-process.js +279 -0
- package/dist/terminal/shepherd-process.js.map +1 -0
- package/dist/terminal/shepherd-protocol.d.ts +115 -0
- package/dist/terminal/shepherd-protocol.d.ts.map +1 -0
- package/dist/terminal/shepherd-protocol.js +214 -0
- package/dist/terminal/shepherd-protocol.js.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts +38 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.js +94 -0
- package/dist/terminal/shepherd-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 +19 -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 +54 -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 +59 -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 +33 -61
- package/skeleton/protocols/spir/protocol.json +156 -0
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
- 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 +152 -315
- package/skeleton/roles/builder.md +110 -218
- 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 -43
- 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 -87
- package/templates/open.html +26 -0
- package/templates/tower.html +642 -36
- 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 -337
- 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 -1872
- 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/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 -253
- package/dist/commands/porch/protocol-loader.js.map +0 -1
- package/dist/commands/porch/signal-parser.d.ts +0 -88
- package/dist/commands/porch/signal-parser.d.ts.map +0 -1
- package/dist/commands/porch/signal-parser.js +0 -148
- package/dist/commands/porch/signal-parser.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/porch/protocols/bugfix.json +0 -85
- package/skeleton/porch/protocols/spider.json +0 -135
- package/skeleton/porch/protocols/tick.json +0 -76
- 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/protocol.json +0 -210
- package/skeleton/protocols/spider/templates/review.md +0 -207
- package/templates/dashboard/css/activity.css +0 -151
- package/templates/dashboard/js/activity.js +0 -112
- /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porch Plan Parsing
|
|
3
|
+
*
|
|
4
|
+
* Extracts implementation phases from plan.md files.
|
|
5
|
+
* Looks for `### Phase N: <title>` headers or JSON phases block.
|
|
6
|
+
*
|
|
7
|
+
* Plan phases are simple: pending → in_progress → complete.
|
|
8
|
+
* All checks (implement, defend, evaluate) run together at the end.
|
|
9
|
+
*/
|
|
10
|
+
import type { PlanPhase } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Find the plan file for a project
|
|
13
|
+
* Searches both legacy (codev/plans/NNNN-name.md) and new (codev/projects/NNNN-name/plan.md) locations
|
|
14
|
+
*/
|
|
15
|
+
export declare function findPlanFile(projectRoot: string, projectId: string, projectName?: string): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Extract phases from plan markdown content
|
|
18
|
+
* Returns phases with status 'pending'
|
|
19
|
+
*
|
|
20
|
+
* Supports two formats:
|
|
21
|
+
*
|
|
22
|
+
* 1. JSON code block:
|
|
23
|
+
* ```json
|
|
24
|
+
* {"phases": [{"id": "phase_1", "title": "..."}, ...]}
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* 2. Markdown headers (fallback):
|
|
28
|
+
* ## Phase 1: Core Types
|
|
29
|
+
* ## Phase 2: State Management
|
|
30
|
+
*
|
|
31
|
+
* Also matches "---" separated sections with "## Phase N:" headers.
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractPlanPhases(planContent: string): PlanPhase[];
|
|
34
|
+
/**
|
|
35
|
+
* Extract phases from a plan file
|
|
36
|
+
* Fails loudly if file doesn't exist
|
|
37
|
+
*/
|
|
38
|
+
export declare function extractPhasesFromFile(planFilePath: string): PlanPhase[];
|
|
39
|
+
/**
|
|
40
|
+
* Check if a plan phase is complete
|
|
41
|
+
*/
|
|
42
|
+
export declare function isPlanPhaseComplete(phase: PlanPhase): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get the current plan phase (first non-complete phase)
|
|
45
|
+
*/
|
|
46
|
+
export declare function getCurrentPlanPhase(phases: PlanPhase[]): PlanPhase | null;
|
|
47
|
+
/**
|
|
48
|
+
* Get the next plan phase after a given phase
|
|
49
|
+
*/
|
|
50
|
+
export declare function getNextPlanPhase(phases: PlanPhase[], currentPhaseId: string): PlanPhase | null;
|
|
51
|
+
/**
|
|
52
|
+
* Check if all plan phases are complete
|
|
53
|
+
*/
|
|
54
|
+
export declare function allPlanPhasesComplete(phases: PlanPhase[]): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Advance to the next plan phase
|
|
57
|
+
* Marks current phase complete and next phase in_progress
|
|
58
|
+
* Returns updated phases array and whether to move to review
|
|
59
|
+
*/
|
|
60
|
+
export declare function advancePlanPhase(phases: PlanPhase[], currentPhaseId: string): {
|
|
61
|
+
phases: PlanPhase[];
|
|
62
|
+
moveToReview: boolean;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Get phase content from plan (the text under the phase header)
|
|
66
|
+
* Matches both ## and ### phase headers, and terminates at the next
|
|
67
|
+
* phase header of same or higher level, or a "---" separator.
|
|
68
|
+
*/
|
|
69
|
+
export declare function getPhaseContent(planContent: string, phaseId: string): string | null;
|
|
70
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyBxG;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CA6ClE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,CAOvE;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAOzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAM9F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAElE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EAAE,EACnB,cAAc,EAAE,MAAM,GACrB;IAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAoBhD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAenF"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porch Plan Parsing
|
|
3
|
+
*
|
|
4
|
+
* Extracts implementation phases from plan.md files.
|
|
5
|
+
* Looks for `### Phase N: <title>` headers or JSON phases block.
|
|
6
|
+
*
|
|
7
|
+
* Plan phases are simple: pending → in_progress → complete.
|
|
8
|
+
* All checks (implement, defend, evaluate) run together at the end.
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Plan File Discovery
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Find the plan file for a project
|
|
17
|
+
* Searches both legacy (codev/plans/NNNN-name.md) and new (codev/projects/NNNN-name/plan.md) locations
|
|
18
|
+
*/
|
|
19
|
+
export function findPlanFile(projectRoot, projectId, projectName) {
|
|
20
|
+
const searchPaths = [];
|
|
21
|
+
// New structure: codev/projects/<id>-<name>/plan.md
|
|
22
|
+
if (projectName) {
|
|
23
|
+
searchPaths.push(path.join(projectRoot, 'codev/projects', `${projectId}-${projectName}`, 'plan.md'));
|
|
24
|
+
}
|
|
25
|
+
// Legacy structure: codev/plans/<id>-*.md
|
|
26
|
+
const plansDir = path.join(projectRoot, 'codev/plans');
|
|
27
|
+
if (fs.existsSync(plansDir)) {
|
|
28
|
+
const files = fs.readdirSync(plansDir);
|
|
29
|
+
const match = files.find(f => f.startsWith(`${projectId}-`) && f.endsWith('.md'));
|
|
30
|
+
if (match) {
|
|
31
|
+
searchPaths.push(path.join(plansDir, match));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
for (const planPath of searchPaths) {
|
|
35
|
+
if (fs.existsSync(planPath)) {
|
|
36
|
+
return planPath;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Phase Extraction
|
|
43
|
+
// ============================================================================
|
|
44
|
+
/**
|
|
45
|
+
* Extract phases from plan markdown content
|
|
46
|
+
* Returns phases with status 'pending'
|
|
47
|
+
*
|
|
48
|
+
* Supports two formats:
|
|
49
|
+
*
|
|
50
|
+
* 1. JSON code block:
|
|
51
|
+
* ```json
|
|
52
|
+
* {"phases": [{"id": "phase_1", "title": "..."}, ...]}
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* 2. Markdown headers (fallback):
|
|
56
|
+
* ## Phase 1: Core Types
|
|
57
|
+
* ## Phase 2: State Management
|
|
58
|
+
*
|
|
59
|
+
* Also matches "---" separated sections with "## Phase N:" headers.
|
|
60
|
+
*/
|
|
61
|
+
export function extractPlanPhases(planContent) {
|
|
62
|
+
// First, try JSON code block with phases
|
|
63
|
+
const jsonMatch = planContent.match(/```json\s*\n([\s\S]*?)\n```/);
|
|
64
|
+
if (jsonMatch) {
|
|
65
|
+
try {
|
|
66
|
+
const parsed = JSON.parse(jsonMatch[1]);
|
|
67
|
+
if (parsed.phases && Array.isArray(parsed.phases)) {
|
|
68
|
+
return parsed.phases.map((p, index) => ({
|
|
69
|
+
id: p.id,
|
|
70
|
+
title: p.title,
|
|
71
|
+
status: index === 0 ? 'in_progress' : 'pending',
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
// JSON parse failed, fall through to markdown parsing
|
|
77
|
+
console.warn('Failed to parse phases JSON from plan:', e);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Second, try markdown headers: "## Phase N: Title" or "### Phase N: Title"
|
|
81
|
+
const phaseHeaderRegex = /^#{2,3}\s+Phase\s+(\d+):\s*(.+)$/gm;
|
|
82
|
+
const phases = [];
|
|
83
|
+
let match;
|
|
84
|
+
while ((match = phaseHeaderRegex.exec(planContent)) !== null) {
|
|
85
|
+
const phaseNum = match[1];
|
|
86
|
+
const title = match[2].trim();
|
|
87
|
+
phases.push({
|
|
88
|
+
id: `phase_${phaseNum}`,
|
|
89
|
+
title,
|
|
90
|
+
status: phases.length === 0 ? 'in_progress' : 'pending',
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (phases.length > 0) {
|
|
94
|
+
return phases;
|
|
95
|
+
}
|
|
96
|
+
// No phases found - return single default phase
|
|
97
|
+
return [{
|
|
98
|
+
id: 'phase_1',
|
|
99
|
+
title: 'Implementation',
|
|
100
|
+
status: 'in_progress',
|
|
101
|
+
}];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Extract phases from a plan file
|
|
105
|
+
* Fails loudly if file doesn't exist
|
|
106
|
+
*/
|
|
107
|
+
export function extractPhasesFromFile(planFilePath) {
|
|
108
|
+
if (!fs.existsSync(planFilePath)) {
|
|
109
|
+
throw new Error(`Plan file not found: ${planFilePath}`);
|
|
110
|
+
}
|
|
111
|
+
const content = fs.readFileSync(planFilePath, 'utf-8');
|
|
112
|
+
return extractPlanPhases(content);
|
|
113
|
+
}
|
|
114
|
+
// ============================================================================
|
|
115
|
+
// Phase Navigation
|
|
116
|
+
// ============================================================================
|
|
117
|
+
/**
|
|
118
|
+
* Check if a plan phase is complete
|
|
119
|
+
*/
|
|
120
|
+
export function isPlanPhaseComplete(phase) {
|
|
121
|
+
return phase.status === 'complete';
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get the current plan phase (first non-complete phase)
|
|
125
|
+
*/
|
|
126
|
+
export function getCurrentPlanPhase(phases) {
|
|
127
|
+
for (const phase of phases) {
|
|
128
|
+
if (phase.status !== 'complete') {
|
|
129
|
+
return phase;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return null; // All phases complete
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get the next plan phase after a given phase
|
|
136
|
+
*/
|
|
137
|
+
export function getNextPlanPhase(phases, currentPhaseId) {
|
|
138
|
+
const currentIndex = phases.findIndex(p => p.id === currentPhaseId);
|
|
139
|
+
if (currentIndex >= 0 && currentIndex < phases.length - 1) {
|
|
140
|
+
return phases[currentIndex + 1];
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check if all plan phases are complete
|
|
146
|
+
*/
|
|
147
|
+
export function allPlanPhasesComplete(phases) {
|
|
148
|
+
return phases.every(isPlanPhaseComplete);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Advance to the next plan phase
|
|
152
|
+
* Marks current phase complete and next phase in_progress
|
|
153
|
+
* Returns updated phases array and whether to move to review
|
|
154
|
+
*/
|
|
155
|
+
export function advancePlanPhase(phases, currentPhaseId) {
|
|
156
|
+
const phaseIndex = phases.findIndex(p => p.id === currentPhaseId);
|
|
157
|
+
if (phaseIndex < 0) {
|
|
158
|
+
return { phases, moveToReview: false };
|
|
159
|
+
}
|
|
160
|
+
const updatedPhases = phases.map((p, i) => {
|
|
161
|
+
if (i === phaseIndex) {
|
|
162
|
+
return { ...p, status: 'complete' };
|
|
163
|
+
}
|
|
164
|
+
if (i === phaseIndex + 1) {
|
|
165
|
+
return { ...p, status: 'in_progress' };
|
|
166
|
+
}
|
|
167
|
+
return p;
|
|
168
|
+
});
|
|
169
|
+
// Check if all phases are now complete
|
|
170
|
+
const moveToReview = updatedPhases.every(p => p.status === 'complete');
|
|
171
|
+
return { phases: updatedPhases, moveToReview };
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get phase content from plan (the text under the phase header)
|
|
175
|
+
* Matches both ## and ### phase headers, and terminates at the next
|
|
176
|
+
* phase header of same or higher level, or a "---" separator.
|
|
177
|
+
*/
|
|
178
|
+
export function getPhaseContent(planContent, phaseId) {
|
|
179
|
+
// Extract phase number from id
|
|
180
|
+
const numMatch = phaseId.match(/phase_(\d+)/);
|
|
181
|
+
if (!numMatch)
|
|
182
|
+
return null;
|
|
183
|
+
const phaseNum = numMatch[1];
|
|
184
|
+
// Match ## or ### Phase N: Title
|
|
185
|
+
// Content ends at: next phase header (## or ### Phase), a --- separator, or end of file
|
|
186
|
+
const regex = new RegExp(`#{2,3}\\s*Phase\\s+${phaseNum}:\\s*[^\\n]+\\n([\\s\\S]*?)(?=\\n#{2,3}\\s*Phase\\s+\\d|\\n---\\s*\\n|$)`, 'i');
|
|
187
|
+
const match = planContent.match(regex);
|
|
188
|
+
return match ? match[1].trim() : null;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/commands/porch/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase prompts for Porch
|
|
3
|
+
*
|
|
4
|
+
* Loads phase-specific prompts from the protocol's prompts/ directory.
|
|
5
|
+
* Prompts are markdown files with {{variable}} placeholders.
|
|
6
|
+
*
|
|
7
|
+
* For build-verify cycles, when iteration > 1, previous build outputs
|
|
8
|
+
* and review files are listed so Claude can read them for context.
|
|
9
|
+
*/
|
|
10
|
+
import type { ProjectState, Protocol } from './types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Build a prompt for the current phase.
|
|
13
|
+
* Loads from protocol's prompts/ directory if available, otherwise uses fallback.
|
|
14
|
+
*
|
|
15
|
+
* For build-verify phases with iteration > 1, lists previous build outputs
|
|
16
|
+
* and review files so Claude can read them for context.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildPhasePrompt(projectRoot: string, state: ProjectState, protocol: Protocol): string;
|
|
19
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAA6C,MAAM,YAAY,CAAC;AA4KpG;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,GACjB,MAAM,CA+ER"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase prompts for Porch
|
|
3
|
+
*
|
|
4
|
+
* Loads phase-specific prompts from the protocol's prompts/ directory.
|
|
5
|
+
* Prompts are markdown files with {{variable}} placeholders.
|
|
6
|
+
*
|
|
7
|
+
* For build-verify cycles, when iteration > 1, previous build outputs
|
|
8
|
+
* and review files are listed so Claude can read them for context.
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import { getPhaseConfig, isPhased, isBuildVerify, getBuildConfig } from './protocol.js';
|
|
13
|
+
import { findPlanFile, getCurrentPlanPhase, getPhaseContent } from './plan.js';
|
|
14
|
+
import { getProjectDir } from './state.js';
|
|
15
|
+
/** Locations to search for protocol prompts */
|
|
16
|
+
const PROTOCOL_PATHS = [
|
|
17
|
+
'codev/protocols',
|
|
18
|
+
'codev-skeleton/protocols',
|
|
19
|
+
'skeleton/protocols', // Used in packages/codev
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Get project summary from projectlist.md.
|
|
23
|
+
* Returns the summary field for the given project ID.
|
|
24
|
+
*/
|
|
25
|
+
function getProjectSummary(projectRoot, projectId) {
|
|
26
|
+
const projectlistPath = path.join(projectRoot, 'codev', 'projectlist.md');
|
|
27
|
+
if (!fs.existsSync(projectlistPath)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const content = fs.readFileSync(projectlistPath, 'utf-8');
|
|
32
|
+
// Look for the project entry by ID
|
|
33
|
+
// Format: - id: "0076" followed by summary: "..."
|
|
34
|
+
const idPattern = new RegExp(`- id: ["']?${projectId}["']?`, 'i');
|
|
35
|
+
const idMatch = content.match(idPattern);
|
|
36
|
+
if (!idMatch) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
// Find the summary after this ID (within the next ~500 chars)
|
|
40
|
+
const afterId = content.slice(idMatch.index, idMatch.index + 500);
|
|
41
|
+
const summaryMatch = afterId.match(/summary:\s*["'](.+?)["']/);
|
|
42
|
+
if (summaryMatch) {
|
|
43
|
+
return summaryMatch[1];
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Find the prompts directory for a protocol.
|
|
53
|
+
*/
|
|
54
|
+
function findPromptsDir(projectRoot, protocolName) {
|
|
55
|
+
for (const basePath of PROTOCOL_PATHS) {
|
|
56
|
+
const promptsDir = path.join(projectRoot, basePath, protocolName, 'prompts');
|
|
57
|
+
if (fs.existsSync(promptsDir)) {
|
|
58
|
+
return promptsDir;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load a prompt file from the protocol's prompts directory.
|
|
65
|
+
*/
|
|
66
|
+
function loadPromptFile(promptsDir, promptFile) {
|
|
67
|
+
const promptPath = path.join(promptsDir, promptFile);
|
|
68
|
+
if (fs.existsSync(promptPath)) {
|
|
69
|
+
return fs.readFileSync(promptPath, 'utf-8');
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Substitute template variables in a prompt.
|
|
75
|
+
*/
|
|
76
|
+
function substituteVariables(prompt, state, planPhase, summary) {
|
|
77
|
+
const variables = {
|
|
78
|
+
project_id: state.id,
|
|
79
|
+
title: state.title,
|
|
80
|
+
current_state: state.phase,
|
|
81
|
+
protocol: state.protocol,
|
|
82
|
+
};
|
|
83
|
+
// Add summary/goal if available
|
|
84
|
+
if (summary) {
|
|
85
|
+
variables.summary = summary;
|
|
86
|
+
variables.goal = summary; // Alias for convenience
|
|
87
|
+
}
|
|
88
|
+
if (planPhase) {
|
|
89
|
+
variables.plan_phase_id = planPhase.id;
|
|
90
|
+
variables.plan_phase_title = planPhase.title;
|
|
91
|
+
}
|
|
92
|
+
// Replace {{variable}} with values
|
|
93
|
+
return prompt.replace(/\{\{(\w+)\}\}/g, (match, varName) => {
|
|
94
|
+
return variables[varName] || match;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build a header listing all previous iteration files.
|
|
99
|
+
* Claude can read these files to understand the history and feedback.
|
|
100
|
+
*/
|
|
101
|
+
function buildHistoryHeader(history, currentIteration, state, projectRoot) {
|
|
102
|
+
const lines = [
|
|
103
|
+
'# REVISION REQUIRED',
|
|
104
|
+
'',
|
|
105
|
+
`This is iteration ${currentIteration}. Previous iterations received feedback from reviewers.`,
|
|
106
|
+
'',
|
|
107
|
+
'**Read the files below to understand the history and address the feedback.**',
|
|
108
|
+
'',
|
|
109
|
+
'## Previous Iterations',
|
|
110
|
+
'',
|
|
111
|
+
];
|
|
112
|
+
for (const record of history) {
|
|
113
|
+
lines.push(`### Iteration ${record.iteration}`);
|
|
114
|
+
lines.push('');
|
|
115
|
+
if (record.build_output) {
|
|
116
|
+
lines.push(`**Build Output:** \`${record.build_output}\``);
|
|
117
|
+
}
|
|
118
|
+
if (record.reviews.length > 0) {
|
|
119
|
+
lines.push('');
|
|
120
|
+
lines.push('**Reviews:**');
|
|
121
|
+
for (const review of record.reviews) {
|
|
122
|
+
const icon = review.verdict === 'APPROVE' ? '✓' :
|
|
123
|
+
review.verdict === 'COMMENT' ? '💬' : '✗';
|
|
124
|
+
lines.push(`- ${review.model} (${icon} ${review.verdict}): \`${review.file}\``);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
lines.push('');
|
|
128
|
+
}
|
|
129
|
+
lines.push('## Instructions');
|
|
130
|
+
lines.push('');
|
|
131
|
+
lines.push('1. Read the review files above to understand the feedback');
|
|
132
|
+
lines.push('2. Address any legitimate REQUEST_CHANGES issues');
|
|
133
|
+
lines.push('3. Consider suggestions from COMMENT and APPROVE reviews');
|
|
134
|
+
lines.push('4. **If a reviewer concern is a false positive**, write a rebuttal (see below)');
|
|
135
|
+
lines.push('');
|
|
136
|
+
// Add rebuttal instructions
|
|
137
|
+
const projectDir = getProjectDir(projectRoot, state.id, state.title);
|
|
138
|
+
const phase = state.current_plan_phase || state.phase;
|
|
139
|
+
const rebuttalFileName = `${state.id}-${phase}-iter${currentIteration - 1}-rebuttals.md`;
|
|
140
|
+
const rebuttalPath = path.join(projectDir, rebuttalFileName);
|
|
141
|
+
lines.push('## Rebuttals (Dispute False Positives)');
|
|
142
|
+
lines.push('');
|
|
143
|
+
lines.push('If you believe a reviewer concern is a false positive (e.g., based on outdated framework knowledge),');
|
|
144
|
+
lines.push(`write your rebuttal to: \`${rebuttalPath}\``);
|
|
145
|
+
lines.push('');
|
|
146
|
+
lines.push('Format each disputed concern as a section:');
|
|
147
|
+
lines.push('```');
|
|
148
|
+
lines.push('## Disputed: [Brief description of the concern]');
|
|
149
|
+
lines.push('');
|
|
150
|
+
lines.push('[Your explanation of why this is a false positive, with evidence]');
|
|
151
|
+
lines.push('```');
|
|
152
|
+
lines.push('');
|
|
153
|
+
lines.push('Rebuttals are passed as context to reviewers in the next iteration.');
|
|
154
|
+
lines.push('Only dispute genuinely incorrect feedback — still fix legitimate issues.');
|
|
155
|
+
lines.push('');
|
|
156
|
+
return lines.join('\n');
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Build a prompt for the current phase.
|
|
160
|
+
* Loads from protocol's prompts/ directory if available, otherwise uses fallback.
|
|
161
|
+
*
|
|
162
|
+
* For build-verify phases with iteration > 1, lists previous build outputs
|
|
163
|
+
* and review files so Claude can read them for context.
|
|
164
|
+
*/
|
|
165
|
+
export function buildPhasePrompt(projectRoot, state, protocol) {
|
|
166
|
+
const phaseConfig = getPhaseConfig(protocol, state.phase);
|
|
167
|
+
if (!phaseConfig) {
|
|
168
|
+
return buildFallbackPrompt(state, 'unknown');
|
|
169
|
+
}
|
|
170
|
+
// Get project summary from projectlist.md
|
|
171
|
+
const summary = getProjectSummary(projectRoot, state.id);
|
|
172
|
+
// Get current plan phase for phased protocols
|
|
173
|
+
let currentPlanPhase = null;
|
|
174
|
+
if (isPhased(protocol, state.phase) && state.plan_phases.length > 0) {
|
|
175
|
+
currentPlanPhase = getCurrentPlanPhase(state.plan_phases);
|
|
176
|
+
}
|
|
177
|
+
// Build history header if this is a retry iteration
|
|
178
|
+
// Filter history by current plan phase to avoid mixing context from other phases
|
|
179
|
+
let historyHeader = '';
|
|
180
|
+
if (isBuildVerify(protocol, state.phase) && state.iteration > 1 && state.history.length > 0) {
|
|
181
|
+
const currentPhase = state.current_plan_phase || undefined;
|
|
182
|
+
const phaseHistory = state.history.filter(h => (h.plan_phase || undefined) === currentPhase);
|
|
183
|
+
if (phaseHistory.length > 0) {
|
|
184
|
+
historyHeader = buildHistoryHeader(phaseHistory, state.iteration, state, projectRoot);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Build user answers section if they asked clarifying questions
|
|
188
|
+
let userAnswersSection = '';
|
|
189
|
+
if (state.context?.user_answers) {
|
|
190
|
+
userAnswersSection = `# User Answers to Your Questions\n\n${state.context.user_answers}\n\n---\n\n`;
|
|
191
|
+
}
|
|
192
|
+
// Try to load prompt from protocol directory
|
|
193
|
+
const promptsDir = findPromptsDir(projectRoot, state.protocol);
|
|
194
|
+
if (promptsDir) {
|
|
195
|
+
// Get prompt filename from protocol's build config, fallback to phase.md
|
|
196
|
+
const buildConfig = getBuildConfig(protocol, state.phase);
|
|
197
|
+
const promptFileName = buildConfig?.prompt || `${state.phase}.md`;
|
|
198
|
+
const promptContent = loadPromptFile(promptsDir, promptFileName);
|
|
199
|
+
if (promptContent) {
|
|
200
|
+
let result = substituteVariables(promptContent, state, currentPlanPhase, summary);
|
|
201
|
+
// Add goal/summary header if available
|
|
202
|
+
if (summary) {
|
|
203
|
+
result = `## Goal\n\n${summary}\n\n---\n\n` + result;
|
|
204
|
+
}
|
|
205
|
+
// Add user answers if Claude asked clarifying questions
|
|
206
|
+
if (userAnswersSection) {
|
|
207
|
+
result = userAnswersSection + result;
|
|
208
|
+
}
|
|
209
|
+
// Add plan phase context if applicable
|
|
210
|
+
if (currentPlanPhase) {
|
|
211
|
+
result = addPlanPhaseContext(projectRoot, state, currentPlanPhase, result);
|
|
212
|
+
}
|
|
213
|
+
// Prepend history if this is a retry
|
|
214
|
+
if (historyHeader) {
|
|
215
|
+
result = historyHeader + '\n\n---\n\n' + result;
|
|
216
|
+
}
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Fallback to generic prompt if no protocol prompt found
|
|
221
|
+
let fallback = buildFallbackPrompt(state, phaseConfig.name, currentPlanPhase, summary);
|
|
222
|
+
// Prepend history if this is a retry
|
|
223
|
+
if (historyHeader) {
|
|
224
|
+
fallback = historyHeader + '\n\n---\n\n' + fallback;
|
|
225
|
+
}
|
|
226
|
+
return fallback;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Add plan phase context from the plan file.
|
|
230
|
+
*/
|
|
231
|
+
function addPlanPhaseContext(projectRoot, state, planPhase, prompt) {
|
|
232
|
+
const planPath = findPlanFile(projectRoot, state.id, state.title);
|
|
233
|
+
if (!planPath) {
|
|
234
|
+
return prompt;
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
const planContent = fs.readFileSync(planPath, 'utf-8');
|
|
238
|
+
const phaseContent = getPhaseContent(planContent, planPhase.id);
|
|
239
|
+
if (phaseContent) {
|
|
240
|
+
return prompt + `\n\n## Current Plan Phase Details\n\n**${planPhase.id}: ${planPhase.title}**\n\n${phaseContent}\n`;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// Ignore errors reading plan
|
|
245
|
+
}
|
|
246
|
+
return prompt;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Build a fallback prompt when no protocol prompt is found.
|
|
250
|
+
*/
|
|
251
|
+
function buildFallbackPrompt(state, phaseName, planPhase, summary) {
|
|
252
|
+
let prompt = `# Phase: ${phaseName}
|
|
253
|
+
|
|
254
|
+
You are executing the ${phaseName} phase of the ${state.protocol.toUpperCase()} protocol.
|
|
255
|
+
|
|
256
|
+
## Context
|
|
257
|
+
|
|
258
|
+
- **Project ID**: ${state.id}
|
|
259
|
+
- **Project Title**: ${state.title}
|
|
260
|
+
- **Protocol**: ${state.protocol}
|
|
261
|
+
`;
|
|
262
|
+
if (planPhase) {
|
|
263
|
+
prompt += `- **Plan Phase**: ${planPhase.id} - ${planPhase.title}\n`;
|
|
264
|
+
}
|
|
265
|
+
// Add goal from projectlist.md summary
|
|
266
|
+
if (summary) {
|
|
267
|
+
prompt += `\n## Goal\n\n${summary}\n`;
|
|
268
|
+
}
|
|
269
|
+
prompt += `
|
|
270
|
+
## Task
|
|
271
|
+
|
|
272
|
+
Complete the work for this phase according to the protocol.
|
|
273
|
+
|
|
274
|
+
`;
|
|
275
|
+
return prompt;
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/commands/porch/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porch 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, BuildConfig, VerifyConfig, OnCompleteConfig, CheckDef } 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 definitions for a phase
|
|
23
|
+
*/
|
|
24
|
+
export declare function getPhaseChecks(protocol: Protocol, phaseId: string): Record<string, CheckDef>;
|
|
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 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
|
+
/**
|
|
38
|
+
* Check if a phase uses the build-verify cycle.
|
|
39
|
+
* A phase uses build-verify if it has both build and verify configs,
|
|
40
|
+
* regardless of whether type is 'build_verify' or 'per_plan_phase'.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isBuildVerify(protocol: Protocol, phaseId: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Get build config for a phase
|
|
45
|
+
*/
|
|
46
|
+
export declare function getBuildConfig(protocol: Protocol, phaseId: string): BuildConfig | null;
|
|
47
|
+
/**
|
|
48
|
+
* Get verify config for a phase
|
|
49
|
+
*/
|
|
50
|
+
export declare function getVerifyConfig(protocol: Protocol, phaseId: string): VerifyConfig | null;
|
|
51
|
+
/**
|
|
52
|
+
* Get max iterations for a build_verify phase
|
|
53
|
+
*/
|
|
54
|
+
export declare function getMaxIterations(protocol: Protocol, phaseId: string): number;
|
|
55
|
+
/**
|
|
56
|
+
* Get on_complete config for a phase
|
|
57
|
+
*/
|
|
58
|
+
export declare function getOnCompleteConfig(protocol: Protocol, phaseId: string): OnCompleteConfig | null;
|
|
59
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/protocol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAYjH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,CAoBhF;AAuLD;;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,QAAQ,CAAC,CAa5F;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;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAG1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAGtF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGxF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAGhG"}
|