@cluesmith/codev 2.0.0-rc.6 → 2.0.0-rc.60
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-CXloFYpB.css +32 -0
- package/dashboard/dist/assets/index-Ca2fjOJf.js +131 -0
- package/dashboard/dist/assets/index-Ca2fjOJf.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 +94 -65
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +13 -6
- 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 +202 -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 +30 -3
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/consult.js +1 -1
- 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 +37 -70
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +55 -17
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/{util.d.ts → shell.d.ts} +5 -5
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/{util.js → shell.js} +23 -36
- 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 +503 -226
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts +3 -0
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +55 -265
- 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 +61 -3
- 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 +116 -12
- package/dist/agent-farm/commands/stop.js.map +1 -1
- 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.map +1 -1
- package/dist/agent-farm/db/index.js +124 -0
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +2 -2
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +26 -5
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +3 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +3 -0
- 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/tower-client.d.ts +157 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tower-client.js +223 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.js +2137 -112
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +4 -10
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +30 -31
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +48 -1
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +13 -14
- 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 -16
- package/dist/agent-farm/utils/deps.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/port-registry.d.ts +0 -1
- package/dist/agent-farm/utils/port-registry.d.ts.map +1 -1
- package/dist/agent-farm/utils/port-registry.js +1 -1
- package/dist/agent-farm/utils/port-registry.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +4 -4
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +4 -15
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- 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/agent-farm/utils/terminal-ports.d.ts +1 -1
- package/dist/agent-farm/utils/terminal-ports.js +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -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 +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +85 -6
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +0 -15
- 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 +21 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +418 -1123
- 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 +479 -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 +255 -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 +23 -112
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +81 -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 +60 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -0
- package/dist/terminal/pty-manager.js +334 -0
- package/dist/terminal/pty-manager.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +79 -0
- package/dist/terminal/pty-session.d.ts.map +1 -0
- package/dist/terminal/pty-session.js +215 -0
- package/dist/terminal/pty-session.js.map +1 -0
- package/dist/terminal/ring-buffer.d.ts +27 -0
- package/dist/terminal/ring-buffer.d.ts.map +1 -0
- package/dist/terminal/ring-buffer.js +74 -0
- package/dist/terminal/ring-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 +18 -5
- package/skeleton/.claude/skills/af/SKILL.md +74 -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 +3 -29
- package/skeleton/builders.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 +61 -0
- package/skeleton/protocols/bugfix/protocol.json +19 -2
- 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 +14 -8
- 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 +7 -25
- package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
- package/skeleton/protocols/spir/protocol.json +152 -0
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
- package/skeleton/protocols/{spider → spir}/templates/review.md +1 -1
- 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 +25 -43
- 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 +109 -218
- 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 +542 -27
- package/dist/agent-farm/commands/kickoff.d.ts +0 -19
- package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
- package/dist/agent-farm/commands/kickoff.js +0 -331
- 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.map +0 -1
- 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/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/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,155 @@
|
|
|
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. Check your current state
|
|
24
|
+
porch status
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
3. **Follow the assigned protocol** - SPIDER or TICK as specified in the spec
|
|
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. Run the protocol loop
|
|
27
|
+
porch run
|
|
32
28
|
|
|
33
|
-
|
|
29
|
+
# 3. If porch hits a gate, STOP and wait for human approval
|
|
30
|
+
# 4. After gate approval, run porch again
|
|
31
|
+
# 5. Repeat until project is complete
|
|
32
|
+
```
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
Porch handles:
|
|
35
|
+
- Spawning Claude to create artifacts (spec, plan, code)
|
|
36
|
+
- Running 3-way consultations (Gemini, Codex, Claude)
|
|
37
|
+
- Iterating based on feedback
|
|
38
|
+
- Enforcing phase transitions
|
|
36
39
|
|
|
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
|
|
40
|
+
### Gates: When to STOP
|
|
43
41
|
|
|
44
|
-
|
|
42
|
+
Porch has two human approval gates:
|
|
45
43
|
|
|
46
|
-
|
|
44
|
+
| Gate | When | What to do |
|
|
45
|
+
|------|------|------------|
|
|
46
|
+
| `spec-approval` | After spec is written | **STOP** and wait |
|
|
47
|
+
| `plan-approval` | After plan is written | **STOP** and wait |
|
|
47
48
|
|
|
48
|
-
|
|
49
|
+
When porch outputs:
|
|
50
|
+
```
|
|
51
|
+
GATE: spec-approval
|
|
52
|
+
Human approval required. STOP and wait.
|
|
53
|
+
```
|
|
49
54
|
|
|
50
|
-
|
|
55
|
+
You must:
|
|
56
|
+
1. Output a clear message: "Spec ready for approval. Waiting for human."
|
|
57
|
+
2. **STOP working**
|
|
58
|
+
3. Wait for the human to run `porch approve XXXX spec-approval`
|
|
59
|
+
4. After approval, run `porch run` again
|
|
51
60
|
|
|
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
|
|
61
|
+
### What You DON'T Do in Strict Mode
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
- **Don't manually follow SPIR steps** - Porch handles this
|
|
64
|
+
- **Don't run consult directly** - Porch runs 3-way reviews
|
|
65
|
+
- **Don't edit status.yaml phase/iteration** - Only porch modifies state
|
|
66
|
+
- **Don't call porch approve** - Only humans approve gates
|
|
67
|
+
- **Don't skip gates** - Always stop and wait for approval
|
|
67
68
|
|
|
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
|
|
69
|
+
## Soft Mode
|
|
74
70
|
|
|
75
|
-
|
|
71
|
+
Spawned with: `af spawn --soft -p XXXX` or `af spawn --task "..."`
|
|
76
72
|
|
|
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
|
|
73
|
+
In soft mode, you follow the protocol document yourself. The architect monitors your work and verifies you're adhering to the protocol correctly.
|
|
84
74
|
|
|
85
|
-
|
|
75
|
+
### Startup Sequence
|
|
86
76
|
|
|
87
|
-
**Commit at the end of each phase** with a message indicating the phase:
|
|
88
77
|
```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)
|
|
78
|
+
# Read the spec and/or plan
|
|
79
|
+
cat codev/specs/XXXX-*.md
|
|
80
|
+
cat codev/plans/XXXX-*.md
|
|
103
81
|
|
|
104
|
-
|
|
82
|
+
# Read the protocol
|
|
83
|
+
cat codev/protocols/spir/protocol.md
|
|
105
84
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
**Before writing ANY code, run this checklist:**
|
|
85
|
+
# Start implementing
|
|
86
|
+
```
|
|
109
87
|
|
|
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?"
|
|
88
|
+
### The SPIR Protocol (Specify → Plan → Implement → Review)
|
|
115
89
|
|
|
116
|
-
**
|
|
90
|
+
1. **Specify**: Read or create the spec at `codev/specs/XXXX-name.md`
|
|
91
|
+
2. **Plan**: Read or create the plan at `codev/plans/XXXX-name.md`
|
|
92
|
+
3. **Implement**: Write code following the plan phases
|
|
93
|
+
4. **Review**: Write lessons learned and create PR
|
|
117
94
|
|
|
118
|
-
###
|
|
95
|
+
### Consultations
|
|
119
96
|
|
|
97
|
+
Run 3-way consultations at checkpoints:
|
|
98
|
+
```bash
|
|
99
|
+
# After writing spec
|
|
100
|
+
consult --model gemini --type spec-review spec XXXX &
|
|
101
|
+
consult --model codex --type spec-review spec XXXX &
|
|
102
|
+
consult --model claude --type spec-review spec XXXX &
|
|
103
|
+
wait
|
|
104
|
+
|
|
105
|
+
# After writing plan
|
|
106
|
+
consult --model gemini --type plan-review plan XXXX &
|
|
107
|
+
consult --model codex --type plan-review plan XXXX &
|
|
108
|
+
consult --model claude --type plan-review plan XXXX &
|
|
109
|
+
wait
|
|
110
|
+
|
|
111
|
+
# After implementation
|
|
112
|
+
consult --model gemini --type impl-review pr N &
|
|
113
|
+
consult --model codex --type impl-review pr N &
|
|
114
|
+
consult --model claude --type impl-review pr N &
|
|
115
|
+
wait
|
|
120
116
|
```
|
|
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
117
|
|
|
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
|
|
118
|
+
## Deliverables
|
|
142
119
|
|
|
143
|
-
|
|
120
|
+
- Spec at `codev/specs/XXXX-name.md`
|
|
121
|
+
- Plan at `codev/plans/XXXX-name.md`
|
|
122
|
+
- Review at `codev/reviews/XXXX-name.md`
|
|
123
|
+
- Implementation code with tests
|
|
124
|
+
- PR ready for architect review
|
|
144
125
|
|
|
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"
|
|
126
|
+
## Communication
|
|
151
127
|
|
|
152
|
-
|
|
128
|
+
### With the Architect
|
|
153
129
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
130
|
+
If you're blocked or need help:
|
|
131
|
+
```bash
|
|
132
|
+
af send architect "Question about the spec..."
|
|
157
133
|
```
|
|
158
134
|
|
|
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
135
|
### Checking Status
|
|
170
136
|
|
|
171
137
|
```bash
|
|
172
|
-
|
|
138
|
+
porch status # (strict mode) Your project status
|
|
139
|
+
af status # All builders
|
|
173
140
|
```
|
|
174
141
|
|
|
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
|
|
142
|
+
## When You're Blocked
|
|
192
143
|
|
|
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
|
|
144
|
+
If you encounter issues you can't resolve:
|
|
199
145
|
|
|
200
|
-
**
|
|
146
|
+
1. **Output a clear blocker message** describing the problem and options
|
|
147
|
+
2. **Use `af send architect "..."` ** to notify the Architect
|
|
148
|
+
3. **Wait for guidance** before proceeding
|
|
201
149
|
|
|
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:
|
|
150
|
+
Example:
|
|
207
151
|
```
|
|
208
|
-
## BLOCKED: Spec
|
|
152
|
+
## BLOCKED: Spec 0077
|
|
209
153
|
Can't find the auth helper mentioned in spec. Options:
|
|
210
154
|
1. Create a new auth helper
|
|
211
155
|
2. Use a third-party library
|
|
@@ -213,65 +157,12 @@ Can't find the auth helper mentioned in spec. Options:
|
|
|
213
157
|
Waiting for Architect guidance.
|
|
214
158
|
```
|
|
215
159
|
|
|
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
160
|
## Constraints
|
|
271
161
|
|
|
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
|
|
162
|
+
- **Stay in scope** - Only implement what's in the spec
|
|
163
|
+
- **Merge your own PRs** - After architect approves
|
|
276
164
|
- **Keep worktree clean** - No untracked files, no debug code
|
|
277
|
-
- **
|
|
165
|
+
- **(Strict mode)** Run porch, don't bypass it
|
|
166
|
+
- **(Strict mode)** Stop at gates - Human approval is required
|
|
167
|
+
- **(Strict mode)** NEVER edit status.yaml directly
|
|
168
|
+
- **(Strict mode)** NEVER call porch approve
|
|
@@ -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 })
|
|
@@ -22,7 +22,7 @@ function stopFilesPolling() {
|
|
|
22
22
|
// Check if files have changed and refresh if needed
|
|
23
23
|
async function checkFilesForChanges() {
|
|
24
24
|
try {
|
|
25
|
-
const response = await fetch(
|
|
25
|
+
const response = await fetch(apiUrl(`api/files/hash?t=${Date.now()}`));
|
|
26
26
|
if (!response.ok) return;
|
|
27
27
|
|
|
28
28
|
const data = await response.json();
|
|
@@ -42,7 +42,7 @@ async function checkFilesForChanges() {
|
|
|
42
42
|
async function loadFilesTree() {
|
|
43
43
|
try {
|
|
44
44
|
// Add cache-busting param to ensure fresh data
|
|
45
|
-
const response = await fetch(
|
|
45
|
+
const response = await fetch(apiUrl(`api/files?t=${Date.now()}`));
|
|
46
46
|
if (!response.ok) {
|
|
47
47
|
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
48
48
|
}
|