@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.71
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 +329 -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 +2653 -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 +66 -0
- package/dist/terminal/shepherd-client.d.ts.map +1 -0
- package/dist/terminal/shepherd-client.js +234 -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
|
@@ -1,211 +1,156 @@
|
|
|
1
1
|
# Role: Builder
|
|
2
2
|
|
|
3
|
-
A Builder is
|
|
3
|
+
A Builder is an implementation agent that works on a single project in an isolated git worktree.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Two Operating Modes
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Builders run in one of two modes, determined by how they were spawned:
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
| Mode | Command | Behavior |
|
|
10
|
+
|------|---------|----------|
|
|
11
|
+
| **Strict** (default) | `af spawn -p XXXX` | Porch orchestrates - runs autonomously to completion |
|
|
12
|
+
| **Soft** | `af spawn --soft -p XXXX` | AI follows protocol - architect verifies compliance |
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
# Open a file for review in the dashboard
|
|
13
|
-
af open src/lib/auth.ts
|
|
14
|
+
## Strict Mode (Default)
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
af status
|
|
16
|
+
Spawned with: `af spawn -p XXXX`
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
af send architect "Question about the spec..."
|
|
20
|
-
```
|
|
18
|
+
In strict mode, porch orchestrates your work and drives the protocol to completion autonomously. Your job is simple: **run porch until the project completes**.
|
|
21
19
|
|
|
22
|
-
The
|
|
20
|
+
### The Core Loop
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
```bash
|
|
23
|
+
# 1. Get your next tasks (project ID auto-detected from worktree)
|
|
24
|
+
porch next
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
4. **Report status** - Keep status updated (implementing/blocked/pr-ready)
|
|
30
|
-
5. **Request help when blocked** - Don't spin; output a clear blocker message
|
|
31
|
-
6. **Deliver clean PRs** - Tests passing, code reviewed, protocol artifacts complete
|
|
26
|
+
# 2. Do the work described in the tasks
|
|
27
|
+
# 3. Signal completion
|
|
28
|
+
porch done
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
# 4. If porch hits a gate, STOP and wait for human approval
|
|
31
|
+
# 5. After gate approval, run porch next again
|
|
32
|
+
# 6. Repeat until project is complete
|
|
33
|
+
```
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Porch handles:
|
|
36
|
+
- Spawning Claude to create artifacts (spec, plan, code)
|
|
37
|
+
- Running 3-way consultations (Gemini, Codex, Claude)
|
|
38
|
+
- Iterating based on feedback
|
|
39
|
+
- Enforcing phase transitions
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
1. Read the spec carefully to identify the protocol
|
|
39
|
-
2. Read the full protocol documentation:
|
|
40
|
-
- SPIDER: `codev/protocols/spider/protocol.md`
|
|
41
|
-
- TICK: `codev/protocols/tick/protocol.md`
|
|
42
|
-
3. Follow every phase and produce all required artifacts
|
|
41
|
+
### Gates: When to STOP
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
Porch has two human approval gates:
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
| Gate | When | What to do |
|
|
46
|
+
|------|------|------------|
|
|
47
|
+
| `spec-approval` | After spec is written | **STOP** and wait |
|
|
48
|
+
| `plan-approval` | After plan is written | **STOP** and wait |
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
When porch outputs:
|
|
51
|
+
```
|
|
52
|
+
GATE: spec-approval
|
|
53
|
+
Human approval required. STOP and wait.
|
|
54
|
+
```
|
|
49
55
|
|
|
50
|
-
|
|
56
|
+
You must:
|
|
57
|
+
1. Output a clear message: "Spec ready for approval. Waiting for human."
|
|
58
|
+
2. **STOP working**
|
|
59
|
+
3. Wait for the human to run `porch approve XXXX spec-approval`
|
|
60
|
+
4. After approval, run `porch next` again
|
|
51
61
|
|
|
52
|
-
|
|
53
|
-
- Self-review: Does the implementation satisfy the spec?
|
|
54
|
-
- Self-review: Do the tests adequately cover the requirements?
|
|
55
|
-
- **Consult external reviewers** on the complete implementation + tests:
|
|
56
|
-
```bash
|
|
57
|
-
consult --model gemini --type impl-review spec XXXX
|
|
58
|
-
consult --model codex --type impl-review spec XXXX
|
|
59
|
-
```
|
|
60
|
-
- Address concerns raised before proceeding to Review
|
|
62
|
+
### What You DON'T Do in Strict Mode
|
|
61
63
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
- **Don't manually follow SPIR steps** - Porch handles this
|
|
65
|
+
- **Don't run consult directly** - Porch runs 3-way reviews
|
|
66
|
+
- **Don't edit status.yaml phase/iteration** - Only porch modifies state
|
|
67
|
+
- **Don't call porch approve** - Only humans approve gates
|
|
68
|
+
- **Don't skip gates** - Always stop and wait for approval
|
|
67
69
|
|
|
68
|
-
|
|
69
|
-
- Implementation quality and correctness
|
|
70
|
-
- Test coverage and quality
|
|
71
|
-
- Adherence to spec requirements
|
|
72
|
-
- Code patterns and best practices
|
|
73
|
-
- Edge cases and error handling
|
|
70
|
+
## Soft Mode
|
|
74
71
|
|
|
75
|
-
|
|
72
|
+
Spawned with: `af spawn --soft -p XXXX` or `af spawn --task "..."`
|
|
76
73
|
|
|
77
|
-
|
|
78
|
-
consult --model codex --type pr-ready pr $PR_NUMBER &
|
|
79
|
-
consult --model claude --type pr-ready pr $PR_NUMBER &
|
|
80
|
-
wait
|
|
81
|
-
```
|
|
82
|
-
- Address any REQUEST_CHANGES feedback before creating the PR
|
|
83
|
-
- Include the 3-way review summary in your PR description
|
|
74
|
+
In soft mode, you follow the protocol document yourself. The architect monitors your work and verifies you're adhering to the protocol correctly.
|
|
84
75
|
|
|
85
|
-
|
|
76
|
+
### Startup Sequence
|
|
86
77
|
|
|
87
|
-
**Commit at the end of each phase** with a message indicating the phase:
|
|
88
78
|
```bash
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
git commit -m "[Spec XXXX][Review] Add lessons learned"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### TICK Protocol Summary
|
|
96
|
-
|
|
97
|
-
TICK is for smaller, well-defined tasks:
|
|
98
|
-
- Understand → Implement → Verify → Done
|
|
99
|
-
|
|
100
|
-
Follow the TICK protocol documentation for details.
|
|
101
|
-
|
|
102
|
-
## Spec Compliance (CRITICAL)
|
|
79
|
+
# Read the spec and/or plan
|
|
80
|
+
cat codev/specs/XXXX-*.md
|
|
81
|
+
cat codev/plans/XXXX-*.md
|
|
103
82
|
|
|
104
|
-
|
|
83
|
+
# Read the protocol
|
|
84
|
+
cat codev/protocols/spir/protocol.md
|
|
105
85
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
**Before writing ANY code, run this checklist:**
|
|
86
|
+
# Start implementing
|
|
87
|
+
```
|
|
109
88
|
|
|
110
|
-
|
|
111
|
-
2. ✅ "If the spec has a 'Traps to Avoid' section, have I read it?"
|
|
112
|
-
3. ✅ "Does my planned approach match the spec's Technical Implementation section?"
|
|
113
|
-
4. ✅ "If the spec has code examples, am I following them?"
|
|
114
|
-
5. ✅ "Does the existing code I'm building on actually match the spec?"
|
|
89
|
+
### The SPIR Protocol (Specify → Plan → Implement → Review)
|
|
115
90
|
|
|
116
|
-
**
|
|
91
|
+
1. **Specify**: Read or create the spec at `codev/specs/XXXX-name.md`
|
|
92
|
+
2. **Plan**: Read or create the plan at `codev/plans/XXXX-name.md`
|
|
93
|
+
3. **Implement**: Write code following the plan phases
|
|
94
|
+
4. **Review**: Write lessons learned and create PR
|
|
117
95
|
|
|
118
|
-
###
|
|
96
|
+
### Consultations
|
|
119
97
|
|
|
98
|
+
Run 3-way consultations at checkpoints:
|
|
99
|
+
```bash
|
|
100
|
+
# After writing spec
|
|
101
|
+
consult --model gemini --type spec-review spec XXXX &
|
|
102
|
+
consult --model codex --type spec-review spec XXXX &
|
|
103
|
+
consult --model claude --type spec-review spec XXXX &
|
|
104
|
+
wait
|
|
105
|
+
|
|
106
|
+
# After writing plan
|
|
107
|
+
consult --model gemini --type plan-review plan XXXX &
|
|
108
|
+
consult --model codex --type plan-review plan XXXX &
|
|
109
|
+
consult --model claude --type plan-review plan XXXX &
|
|
110
|
+
wait
|
|
111
|
+
|
|
112
|
+
# After implementation
|
|
113
|
+
consult --model gemini --type impl-review pr N &
|
|
114
|
+
consult --model codex --type impl-review pr N &
|
|
115
|
+
consult --model claude --type impl-review pr N &
|
|
116
|
+
wait
|
|
120
117
|
```
|
|
121
|
-
SPEC (source of truth)
|
|
122
|
-
↓
|
|
123
|
-
PLAN (implementation guide derived from spec)
|
|
124
|
-
↓
|
|
125
|
-
EXISTING CODE (NOT TRUSTED - must be validated against spec)
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**Never trust existing code over the spec.** Previous implementations may have drifted. The spec is always authoritative.
|
|
129
|
-
|
|
130
|
-
### Avoiding "Fixing Mode"
|
|
131
118
|
|
|
132
|
-
|
|
133
|
-
- Cargo-culting existing patterns that may be wrong
|
|
134
|
-
- Building on broken foundations
|
|
135
|
-
- Implementing something different from what the spec describes
|
|
136
|
-
|
|
137
|
-
**When you catch yourself "fixing" code:**
|
|
138
|
-
1. STOP
|
|
139
|
-
2. Ask: "What does the spec say about this?"
|
|
140
|
-
3. Re-read the spec's Traps to Avoid section
|
|
141
|
-
4. Verify existing code matches the spec before building on it
|
|
119
|
+
## Deliverables
|
|
142
120
|
|
|
143
|
-
|
|
121
|
+
- Spec at `codev/specs/XXXX-name.md`
|
|
122
|
+
- Plan at `codev/plans/XXXX-name.md`
|
|
123
|
+
- Review at `codev/reviews/XXXX-name.md`
|
|
124
|
+
- Implementation code with tests
|
|
125
|
+
- PR ready for architect review
|
|
144
126
|
|
|
145
|
-
|
|
146
|
-
- "Does this match the spec?"
|
|
147
|
-
- "What does the spec say about X?"
|
|
148
|
-
- "Check the spec's Traps to Avoid section"
|
|
149
|
-
- "Are you sure?"
|
|
150
|
-
- "You're cargo-culting existing patterns"
|
|
127
|
+
## Communication
|
|
151
128
|
|
|
152
|
-
|
|
129
|
+
### With the Architect
|
|
153
130
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
131
|
+
If you're blocked or need help:
|
|
132
|
+
```bash
|
|
133
|
+
af send architect "Question about the spec..."
|
|
157
134
|
```
|
|
158
135
|
|
|
159
|
-
### Status Definitions
|
|
160
|
-
|
|
161
|
-
| Status | Meaning |
|
|
162
|
-
|--------|---------|
|
|
163
|
-
| `spawning` | Worktree created, Builder starting up |
|
|
164
|
-
| `implementing` | Actively working on the spec |
|
|
165
|
-
| `blocked` | Stuck, needs Architect help |
|
|
166
|
-
| `pr-ready` | Implementation complete, ready for review |
|
|
167
|
-
| `complete` | Merged, worktree can be cleaned up |
|
|
168
|
-
|
|
169
136
|
### Checking Status
|
|
170
137
|
|
|
171
138
|
```bash
|
|
172
|
-
|
|
139
|
+
porch status # (strict mode) Your project status
|
|
140
|
+
af status # All builders
|
|
173
141
|
```
|
|
174
142
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
## Working in a Worktree
|
|
178
|
-
|
|
179
|
-
### Understanding Your Environment
|
|
180
|
-
- You are in an isolated git worktree at `.builders/XXXX/`
|
|
181
|
-
- You have your own branch: `builder/XXXX-spec-name`
|
|
182
|
-
- Changes here don't affect main until merged
|
|
183
|
-
- You can commit freely without affecting other Builders
|
|
184
|
-
|
|
185
|
-
### File Access
|
|
186
|
-
- Full access to your worktree
|
|
187
|
-
- Read-only conceptual access to main (for reference)
|
|
188
|
-
- Your spec is at `codev/specs/XXXX-spec-name.md`
|
|
189
|
-
- Your plan is at `codev/plans/XXXX-spec-name.md`
|
|
190
|
-
|
|
191
|
-
## When to Report Blocked
|
|
143
|
+
## When You're Blocked
|
|
192
144
|
|
|
193
|
-
|
|
194
|
-
- Spec is ambiguous and you need clarification
|
|
195
|
-
- You discover a dependency on another spec
|
|
196
|
-
- You encounter an unexpected technical blocker
|
|
197
|
-
- You need architectural guidance
|
|
198
|
-
- Tests are failing for reasons outside your scope
|
|
145
|
+
If you encounter issues you can't resolve:
|
|
199
146
|
|
|
200
|
-
**
|
|
147
|
+
1. **Output a clear blocker message** describing the problem and options
|
|
148
|
+
2. **Use `af send architect "..."` ** to notify the Architect
|
|
149
|
+
3. **Wait for guidance** before proceeding
|
|
201
150
|
|
|
202
|
-
|
|
203
|
-
2. Add a `<!-- REVIEW(@architect): question here -->` comment in relevant code if applicable
|
|
204
|
-
3. The Architect monitors builder status via `af status` and will see you're blocked
|
|
205
|
-
|
|
206
|
-
Example blocker message to output:
|
|
151
|
+
Example:
|
|
207
152
|
```
|
|
208
|
-
## BLOCKED: Spec
|
|
153
|
+
## BLOCKED: Spec 0077
|
|
209
154
|
Can't find the auth helper mentioned in spec. Options:
|
|
210
155
|
1. Create a new auth helper
|
|
211
156
|
2. Use a third-party library
|
|
@@ -213,65 +158,12 @@ Can't find the auth helper mentioned in spec. Options:
|
|
|
213
158
|
Waiting for Architect guidance.
|
|
214
159
|
```
|
|
215
160
|
|
|
216
|
-
The Architect will provide guidance via `af send` or PR comments.
|
|
217
|
-
|
|
218
|
-
## Deliverables
|
|
219
|
-
|
|
220
|
-
When done, a Builder should have:
|
|
221
|
-
|
|
222
|
-
1. **Implementation** - Code that fulfills the spec
|
|
223
|
-
2. **Tests** - Appropriate test coverage
|
|
224
|
-
3. **Documentation** - Updated relevant docs (if needed)
|
|
225
|
-
4. **Clean commits** - Atomic, well-messaged commits per phase
|
|
226
|
-
5. **Review document** - As specified in the SPIDER protocol (`codev/reviews/XXXX-spec-name.md`)
|
|
227
|
-
6. **PR-ready branch** - Ready for Architect review
|
|
228
|
-
|
|
229
|
-
## Communication with Architect
|
|
230
|
-
|
|
231
|
-
### Receiving Instructions
|
|
232
|
-
The Architect provides:
|
|
233
|
-
- Spec file path
|
|
234
|
-
- Plan file path
|
|
235
|
-
- Protocol to follow (SPIDER/TICK)
|
|
236
|
-
- Context and constraints
|
|
237
|
-
|
|
238
|
-
### Reporting Completion
|
|
239
|
-
When implementation is complete:
|
|
240
|
-
1. Run all tests
|
|
241
|
-
2. Self-review the code
|
|
242
|
-
3. Ensure all protocol artifacts are present (especially the review document for SPIDER)
|
|
243
|
-
4. Create a PR: `gh pr create --title "[Spec XXXX] Description" --body "..."`
|
|
244
|
-
5. Update status to `pr-ready`
|
|
245
|
-
6. Wait for Architect review and approval
|
|
246
|
-
7. **Merge your own PR** once approved: `gh pr merge --merge --delete-branch`
|
|
247
|
-
|
|
248
|
-
**Important**: The Builder is responsible for merging after Architect approval. This ensures the Builder sees the merge succeed and can handle any final cleanup.
|
|
249
|
-
|
|
250
|
-
### Receiving PR Feedback
|
|
251
|
-
|
|
252
|
-
The Architect reviews PRs and leaves feedback as GitHub PR comments. When notified to check feedback:
|
|
253
|
-
|
|
254
|
-
```bash
|
|
255
|
-
# View PR comments
|
|
256
|
-
gh pr view <PR_NUMBER> --comments
|
|
257
|
-
|
|
258
|
-
# Or view the full PR with comments in browser
|
|
259
|
-
gh pr view <PR_NUMBER> --web
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
**Workflow:**
|
|
263
|
-
1. Architect leaves review comments on PR
|
|
264
|
-
2. You receive a short message: "Check PR comments and address feedback"
|
|
265
|
-
3. Run `gh pr view <PR_NUMBER> --comments` to see feedback
|
|
266
|
-
4. Address the issues (High priority first, then Medium, Low is optional)
|
|
267
|
-
5. Push fixes to the same branch
|
|
268
|
-
6. Reply to PR comment when done or if clarification needed
|
|
269
|
-
|
|
270
161
|
## Constraints
|
|
271
162
|
|
|
272
|
-
- **Stay in scope** - Only implement what's in
|
|
273
|
-
- **
|
|
274
|
-
- **Merge your own PRs** - After Architect approves, you are responsible for merging
|
|
275
|
-
- **Don't spawn other Builders** - Only Architects spawn Builders
|
|
163
|
+
- **Stay in scope** - Only implement what's in the spec
|
|
164
|
+
- **Merge your own PRs** - After architect approves
|
|
276
165
|
- **Keep worktree clean** - No untracked files, no debug code
|
|
277
|
-
- **
|
|
166
|
+
- **(Strict mode)** Run porch, don't bypass it
|
|
167
|
+
- **(Strict mode)** Stop at gates - Human approval is required
|
|
168
|
+
- **(Strict mode)** NEVER edit status.yaml directly
|
|
169
|
+
- **(Strict mode)** NEVER call porch approve
|
|
@@ -5,16 +5,16 @@ You are a consultant providing a second perspective to support decision-making.
|
|
|
5
5
|
## Responsibilities
|
|
6
6
|
|
|
7
7
|
1. **Understand context** - Grasp the problem and constraints being presented
|
|
8
|
-
2. **
|
|
9
|
-
3. **
|
|
10
|
-
4. **Be
|
|
11
|
-
5. **
|
|
8
|
+
2. **Verify before flagging** - Check actual project files (package.json, configs) before claiming something is wrong or missing. Framework conventions change between major versions.
|
|
9
|
+
3. **Offer insights** - Provide alternatives or considerations that may have been missed
|
|
10
|
+
4. **Be constructive** - Help improve the solution, don't just critique
|
|
11
|
+
5. **Be direct** - Give honest, clear feedback without excessive hedging
|
|
12
12
|
|
|
13
13
|
## You Are NOT
|
|
14
14
|
|
|
15
15
|
- An adversary or gatekeeper
|
|
16
16
|
- A rubber stamp that just agrees
|
|
17
|
-
- A
|
|
17
|
+
- A source of generic advice that ignores actual project context
|
|
18
18
|
|
|
19
19
|
## Relationship to Other Roles
|
|
20
20
|
|
|
@@ -24,4 +24,4 @@ You are a consultant providing a second perspective to support decision-making.
|
|
|
24
24
|
| Builder | Implements in isolation |
|
|
25
25
|
| Consultant | Provides perspective, supports decisions |
|
|
26
26
|
|
|
27
|
-
You think alongside the other agents, helping them see blind spots.
|
|
27
|
+
You think alongside the other agents, helping them see blind spots. You have filesystem access — use it to verify your claims against the actual codebase.
|
|
@@ -8,7 +8,7 @@ This project uses **Codev** for AI-assisted development.
|
|
|
8
8
|
|
|
9
9
|
## Available Protocols
|
|
10
10
|
|
|
11
|
-
- **
|
|
11
|
+
- **SPIR**: Multi-phase development with consultation (`codev/protocols/spir/protocol.md`)
|
|
12
12
|
- **TICK**: Fast autonomous implementation (`codev/protocols/tick/protocol.md`)
|
|
13
13
|
- **EXPERIMENT**: Disciplined experimentation (`codev/protocols/experiment/protocol.md`)
|
|
14
14
|
- **MAINTAIN**: Codebase maintenance (`codev/protocols/maintain/protocol.md`)
|
|
@@ -60,7 +60,7 @@ For complete reference, see `codev/resources/commands/`:
|
|
|
60
60
|
|
|
61
61
|
## Configuration
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
|
|
64
64
|
|
|
65
65
|
```json
|
|
66
66
|
{
|
|
@@ -6,7 +6,7 @@ This project uses **Codev** for AI-assisted development.
|
|
|
6
6
|
|
|
7
7
|
## Available Protocols
|
|
8
8
|
|
|
9
|
-
- **
|
|
9
|
+
- **SPIR**: Multi-phase development with consultation (`codev/protocols/spir/protocol.md`)
|
|
10
10
|
- **TICK**: Fast autonomous implementation (`codev/protocols/tick/protocol.md`)
|
|
11
11
|
- **EXPERIMENT**: Disciplined experimentation (`codev/protocols/experiment/protocol.md`)
|
|
12
12
|
- **MAINTAIN**: Codebase maintenance (`codev/protocols/maintain/protocol.md`)
|
|
@@ -58,7 +58,7 @@ For complete reference, see `codev/resources/commands/`:
|
|
|
58
58
|
|
|
59
59
|
## Configuration
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
Agent Farm is configured via `af-config.json` at the project root. Created during `codev init` or `codev adopt`. Override via CLI flags: `--architect-cmd`, `--builder-cmd`, `--shell-cmd`.
|
|
62
62
|
|
|
63
63
|
```json
|
|
64
64
|
{
|
|
@@ -41,7 +41,7 @@ Just like structuring a human team—clear roles, defined processes, explicit ha
|
|
|
41
41
|
|
|
42
42
|
| Component | Purpose |
|
|
43
43
|
|-----------|---------|
|
|
44
|
-
| Protocols | Define HOW work happens (
|
|
44
|
+
| Protocols | Define HOW work happens (SPIR, TICK, etc.) |
|
|
45
45
|
| Roles | Define WHO does what (Architect, Builder, Consultant) |
|
|
46
46
|
| Parallelism | Scale by running multiple builders simultaneously |
|
|
47
47
|
|
|
@@ -60,7 +60,7 @@ A **protocol** is a structured workflow that defines how work progresses from id
|
|
|
60
60
|
|
|
61
61
|
| Protocol | Use For | Phases |
|
|
62
62
|
|----------|---------|--------|
|
|
63
|
-
| **
|
|
63
|
+
| **SPIR** | New features | Specify → Plan → Implement → Review |
|
|
64
64
|
| **TICK** | Amendments to existing specs | Task Identification → Coding → Kickout |
|
|
65
65
|
| **MAINTAIN** | Codebase hygiene | Dead code removal, documentation sync |
|
|
66
66
|
| **EXPERIMENT** | Research & prototyping | Hypothesis → Experiment → Conclude |
|
|
@@ -110,13 +110,15 @@ Architect-Builder orchestration. Used by both **humans and agents**—agents use
|
|
|
110
110
|
|
|
111
111
|
| Command | Description |
|
|
112
112
|
|---------|-------------|
|
|
113
|
-
| `af start` | Start dashboard (port 4200, 4300, etc.) |
|
|
114
|
-
| `af stop` | Stop all processes |
|
|
113
|
+
| `af dash start` | Start dashboard (port 4200, 4300, etc.) |
|
|
114
|
+
| `af dash stop` | Stop all processes |
|
|
115
115
|
| `af spawn -p <id>` | Spawn a builder for project |
|
|
116
116
|
| `af status` | Check status of all builders |
|
|
117
117
|
| `af send <target> <msg>` | Send message (builder↔architect) |
|
|
118
118
|
| `af cleanup -p <id>` | Clean up a builder worktree |
|
|
119
|
+
| `af shell` | Spawn a utility shell |
|
|
119
120
|
| `af open <file>` | Open file in dashboard viewer |
|
|
121
|
+
| `af tower start` | Start cross-project tower |
|
|
120
122
|
|
|
121
123
|
### consult
|
|
122
124
|
|
|
@@ -143,7 +145,7 @@ Multi-agent consultation. Used by both humans and agents—**mostly agents** dur
|
|
|
143
145
|
|
|
144
146
|
## Quick Reference
|
|
145
147
|
|
|
146
|
-
###
|
|
148
|
+
### SPIR Checklist
|
|
147
149
|
|
|
148
150
|
```
|
|
149
151
|
[ ] Specify - Write spec in codev/specs/XXXX-name.md
|
|
@@ -142,6 +142,6 @@ To see high-priority work, search for `priority: high`.
|
|
|
142
142
|
Before starting a project, verify its dependencies are at least `implemented`.
|
|
143
143
|
|
|
144
144
|
### Protocol Selection
|
|
145
|
-
- **
|
|
145
|
+
- **SPIR**: Most projects (formal spec → plan → implement → review)
|
|
146
146
|
- **TICK**: Small, well-defined tasks (< 300 lines) or amendments to existing specs
|
|
147
147
|
- **EXPERIMENT**: Research/prototyping before committing to a project
|
|
@@ -4,25 +4,19 @@
|
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<title>AF: {{PROJECT_NAME}}</title>
|
|
7
|
-
<!-- CSS files loaded in dependency order -->
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="stylesheet" href="
|
|
11
|
-
<link rel="stylesheet" href="
|
|
12
|
-
<link rel="stylesheet" href="
|
|
13
|
-
<link rel="stylesheet" href="
|
|
14
|
-
<link rel="stylesheet" href="
|
|
15
|
-
<link rel="stylesheet" href="
|
|
16
|
-
<link rel="stylesheet" href="/dashboard/css/utilities.css">
|
|
7
|
+
<!-- CSS files loaded in dependency order (relative paths for proxy compatibility) -->
|
|
8
|
+
<link rel="stylesheet" href="dashboard/css/variables.css">
|
|
9
|
+
<link rel="stylesheet" href="dashboard/css/layout.css">
|
|
10
|
+
<link rel="stylesheet" href="dashboard/css/tabs.css">
|
|
11
|
+
<link rel="stylesheet" href="dashboard/css/statusbar.css">
|
|
12
|
+
<link rel="stylesheet" href="dashboard/css/dialogs.css">
|
|
13
|
+
<link rel="stylesheet" href="dashboard/css/projects.css">
|
|
14
|
+
<link rel="stylesheet" href="dashboard/css/files.css">
|
|
15
|
+
<link rel="stylesheet" href="dashboard/css/utilities.css">
|
|
17
16
|
</head>
|
|
18
17
|
<body>
|
|
19
18
|
<header class="header">
|
|
20
19
|
<h1>Agent Farm - {{PROJECT_NAME}}</h1>
|
|
21
|
-
<div class="header-actions">
|
|
22
|
-
<button class="btn activity-summary-btn" onclick="showActivitySummary()" title="What did I do today?">
|
|
23
|
-
🕐 Today
|
|
24
|
-
</button>
|
|
25
|
-
</div>
|
|
26
20
|
</header>
|
|
27
21
|
|
|
28
22
|
<main class="main">
|
|
@@ -123,26 +117,6 @@
|
|
|
123
117
|
<!-- Toast container -->
|
|
124
118
|
<div class="toast-container" id="toast-container"></div>
|
|
125
119
|
|
|
126
|
-
<!-- Activity Summary Modal (Spec 0059) -->
|
|
127
|
-
<div class="dialog-overlay hidden" id="activity-modal">
|
|
128
|
-
<div class="dialog activity-dialog">
|
|
129
|
-
<div class="activity-dialog-header">
|
|
130
|
-
<h3>Today's Summary</h3>
|
|
131
|
-
<button class="activity-close-btn" onclick="closeActivityModal()" title="Close (Esc)">×</button>
|
|
132
|
-
</div>
|
|
133
|
-
<div class="activity-dialog-content" id="activity-content">
|
|
134
|
-
<div class="activity-loading">
|
|
135
|
-
<span class="activity-spinner"></span>
|
|
136
|
-
Loading activity...
|
|
137
|
-
</div>
|
|
138
|
-
</div>
|
|
139
|
-
<div class="activity-dialog-footer">
|
|
140
|
-
<button class="btn" onclick="copyActivitySummary()">📋 Copy to Clipboard</button>
|
|
141
|
-
<button class="btn" onclick="closeActivityModal()">Close</button>
|
|
142
|
-
</div>
|
|
143
|
-
</div>
|
|
144
|
-
</div>
|
|
145
|
-
|
|
146
120
|
<!-- File search palette (Cmd+P) - Spec 0058 -->
|
|
147
121
|
<div id="file-palette" class="file-palette hidden">
|
|
148
122
|
<div class="file-palette-backdrop" onclick="closePalette()"></div>
|
|
@@ -163,13 +137,13 @@
|
|
|
163
137
|
</script>
|
|
164
138
|
|
|
165
139
|
<!-- JavaScript files loaded in dependency order -->
|
|
166
|
-
|
|
167
|
-
<script src="
|
|
168
|
-
<script src="
|
|
169
|
-
<script src="
|
|
170
|
-
<script src="
|
|
171
|
-
<script src="
|
|
172
|
-
<script src="
|
|
173
|
-
<script src="
|
|
140
|
+
<!-- JS files (relative paths for proxy compatibility) -->
|
|
141
|
+
<script src="dashboard/js/state.js"></script>
|
|
142
|
+
<script src="dashboard/js/utils.js"></script>
|
|
143
|
+
<script src="dashboard/js/tabs.js"></script>
|
|
144
|
+
<script src="dashboard/js/dialogs.js"></script>
|
|
145
|
+
<script src="dashboard/js/projects.js"></script>
|
|
146
|
+
<script src="dashboard/js/files.js"></script>
|
|
147
|
+
<script src="dashboard/js/main.js"></script>
|
|
174
148
|
</body>
|
|
175
149
|
</html>
|
|
@@ -20,7 +20,7 @@ async function closeTab(tabId, event) {
|
|
|
20
20
|
// Check if process is still running before showing confirmation (Bugfix #132)
|
|
21
21
|
// If the shell/builder already exited, close immediately without confirmation
|
|
22
22
|
try {
|
|
23
|
-
const response = await fetch(
|
|
23
|
+
const response = await fetch(apiUrl(`api/tabs/${encodeURIComponent(tabId)}/running`));
|
|
24
24
|
if (response.ok) {
|
|
25
25
|
const { running } = await response.json();
|
|
26
26
|
if (!running) {
|
|
@@ -56,7 +56,7 @@ async function doCloseTab(tabId) {
|
|
|
56
56
|
if (!tab) return;
|
|
57
57
|
|
|
58
58
|
try {
|
|
59
|
-
await fetch(
|
|
59
|
+
await fetch(apiUrl(`api/tabs/${encodeURIComponent(tabId)}`), { method: 'DELETE' });
|
|
60
60
|
|
|
61
61
|
tabs = tabs.filter(t => t.id !== tabId);
|
|
62
62
|
|
|
@@ -224,7 +224,7 @@ async function createFile() {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
try {
|
|
227
|
-
const response = await fetch('
|
|
227
|
+
const response = await fetch(apiUrl('api/files'), {
|
|
228
228
|
method: 'POST',
|
|
229
229
|
headers: { 'Content-Type': 'application/json' },
|
|
230
230
|
body: JSON.stringify({ path: filePath, content: '' })
|
|
@@ -251,7 +251,7 @@ async function createFile() {
|
|
|
251
251
|
// Spawn worktree builder
|
|
252
252
|
async function spawnBuilder() {
|
|
253
253
|
try {
|
|
254
|
-
const response = await fetch('
|
|
254
|
+
const response = await fetch(apiUrl('api/tabs/builder'), {
|
|
255
255
|
method: 'POST',
|
|
256
256
|
headers: { 'Content-Type': 'application/json' },
|
|
257
257
|
body: JSON.stringify({})
|
|
@@ -283,7 +283,7 @@ async function spawnBuilder() {
|
|
|
283
283
|
// Spawn shell
|
|
284
284
|
async function spawnShell() {
|
|
285
285
|
try {
|
|
286
|
-
const response = await fetch('
|
|
286
|
+
const response = await fetch(apiUrl('api/tabs/shell'), {
|
|
287
287
|
method: 'POST',
|
|
288
288
|
headers: { 'Content-Type': 'application/json' },
|
|
289
289
|
body: JSON.stringify({})
|
|
@@ -325,7 +325,7 @@ async function spawnShell() {
|
|
|
325
325
|
// Create new utility shell (quick action button)
|
|
326
326
|
async function createNewShell() {
|
|
327
327
|
try {
|
|
328
|
-
const response = await fetch('
|
|
328
|
+
const response = await fetch(apiUrl('api/tabs/shell'), { method: 'POST' });
|
|
329
329
|
const data = await response.json();
|
|
330
330
|
if (!data.success && data.error) {
|
|
331
331
|
showToast(data.error || 'Failed to create shell', 'error');
|
|
@@ -347,7 +347,7 @@ async function createNewWorktreeShell() {
|
|
|
347
347
|
if (branch === null) return;
|
|
348
348
|
|
|
349
349
|
try {
|
|
350
|
-
const response = await fetch('
|
|
350
|
+
const response = await fetch(apiUrl('api/tabs/shell'), {
|
|
351
351
|
method: 'POST',
|
|
352
352
|
headers: { 'Content-Type': 'application/json' },
|
|
353
353
|
body: JSON.stringify({ worktree: true, branch: branch || undefined })
|