@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/af.js +2 -2
- package/bin/consult.js +1 -1
- package/bin/porch.js +6 -35
- package/dashboard/dist/assets/index-C7FtNK6Y.css +32 -0
- package/dashboard/dist/assets/index-CDAINZKT.js +131 -0
- package/dashboard/dist/assets/index-CDAINZKT.js.map +1 -0
- package/dashboard/dist/index.html +14 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +173 -118
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +3 -3
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +20 -147
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +13 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -0
- package/dist/agent-farm/commands/attach.js +144 -0
- package/dist/agent-farm/commands/attach.js.map +1 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +35 -19
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/consult.d.ts +3 -4
- package/dist/agent-farm/commands/consult.d.ts.map +1 -1
- package/dist/agent-farm/commands/consult.js +27 -37
- package/dist/agent-farm/commands/consult.js.map +1 -1
- package/dist/agent-farm/commands/index.d.ts +2 -2
- package/dist/agent-farm/commands/index.d.ts.map +1 -1
- package/dist/agent-farm/commands/index.js +2 -2
- package/dist/agent-farm/commands/index.js.map +1 -1
- package/dist/agent-farm/commands/open.d.ts +4 -2
- package/dist/agent-farm/commands/open.d.ts.map +1 -1
- package/dist/agent-farm/commands/open.js +33 -83
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +60 -79
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/shell.d.ts +15 -0
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/shell.js +50 -0
- package/dist/agent-farm/commands/shell.js.map +1 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +597 -281
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts +10 -20
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +45 -491
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts +2 -0
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +75 -24
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts +6 -0
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +49 -109
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +48 -0
- package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower-cloud.js +334 -0
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
- package/dist/agent-farm/commands/tower.d.ts +9 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +59 -19
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts +6 -2
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +246 -18
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/migrate.d.ts +0 -4
- package/dist/agent-farm/db/migrate.d.ts.map +1 -1
- package/dist/agent-farm/db/migrate.js +6 -55
- package/dist/agent-farm/db/migrate.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +3 -3
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +25 -19
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +3 -13
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +3 -11
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/hq-connector.d.ts +2 -6
- package/dist/agent-farm/hq-connector.d.ts.map +1 -1
- package/dist/agent-farm/hq-connector.js +2 -17
- package/dist/agent-farm/hq-connector.js.map +1 -1
- package/dist/agent-farm/lib/cloud-config.d.ts +59 -0
- package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
- package/dist/agent-farm/lib/cloud-config.js +143 -0
- package/dist/agent-farm/lib/cloud-config.js.map +1 -0
- package/dist/agent-farm/lib/tower-client.d.ts +163 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tower-client.js +233 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.js +504 -0
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.js +2650 -185
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +6 -12
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +34 -49
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +49 -26
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +0 -5
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +12 -44
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/deps.d.ts.map +1 -1
- package/dist/agent-farm/utils/deps.js +0 -32
- package/dist/agent-farm/utils/deps.js.map +1 -1
- package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
- package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
- package/dist/agent-farm/utils/file-tabs.js +46 -0
- package/dist/agent-farm/utils/file-tabs.js.map +1 -0
- package/dist/agent-farm/utils/gate-status.d.ts +16 -0
- package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-status.js +79 -0
- package/dist/agent-farm/utils/gate-status.js.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.js +122 -0
- package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
- package/dist/agent-farm/utils/index.d.ts +0 -1
- package/dist/agent-farm/utils/index.d.ts.map +1 -1
- package/dist/agent-farm/utils/index.js +0 -1
- package/dist/agent-farm/utils/index.js.map +1 -1
- package/dist/agent-farm/utils/notifications.d.ts +30 -0
- package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
- package/dist/agent-farm/utils/notifications.js +121 -0
- package/dist/agent-farm/utils/notifications.js.map +1 -0
- package/dist/agent-farm/utils/server-utils.d.ts +5 -5
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +5 -16
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/session.d.ts +32 -0
- package/dist/agent-farm/utils/session.d.ts.map +1 -0
- package/dist/agent-farm/utils/session.js +57 -0
- package/dist/agent-farm/utils/session.js.map +1 -0
- package/dist/agent-farm/utils/shell.d.ts +9 -22
- package/dist/agent-farm/utils/shell.d.ts.map +1 -1
- package/dist/agent-farm/utils/shell.js +34 -34
- package/dist/agent-farm/utils/shell.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -54
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +49 -4
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +13 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +245 -29
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +96 -79
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +41 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/build-counter.d.ts +5 -0
- package/dist/commands/porch/build-counter.d.ts.map +1 -0
- package/dist/commands/porch/build-counter.js +5 -0
- package/dist/commands/porch/build-counter.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +17 -29
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +96 -144
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/index.d.ts +25 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +463 -1116
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts +22 -0
- package/dist/commands/porch/next.d.ts.map +1 -0
- package/dist/commands/porch/next.js +571 -0
- package/dist/commands/porch/next.js.map +1 -0
- package/dist/commands/porch/plan.d.ts +70 -0
- package/dist/commands/porch/plan.d.ts.map +1 -0
- package/dist/commands/porch/plan.js +190 -0
- package/dist/commands/porch/plan.js.map +1 -0
- package/dist/commands/porch/prompts.d.ts +19 -0
- package/dist/commands/porch/prompts.d.ts.map +1 -0
- package/dist/commands/porch/prompts.js +277 -0
- package/dist/commands/porch/prompts.js.map +1 -0
- package/dist/commands/porch/protocol.d.ts +59 -0
- package/dist/commands/porch/protocol.d.ts.map +1 -0
- package/dist/commands/porch/protocol.js +294 -0
- package/dist/commands/porch/protocol.js.map +1 -0
- package/dist/commands/porch/state.d.ts +36 -107
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +120 -699
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +99 -164
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/porch/types.js +2 -1
- package/dist/commands/porch/types.js.map +1 -1
- package/dist/commands/porch/verdict.d.ts +31 -0
- package/dist/commands/porch/verdict.d.ts.map +1 -0
- package/dist/commands/porch/verdict.js +59 -0
- package/dist/commands/porch/verdict.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +31 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +37 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +114 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +8 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +5 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +69 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -0
- package/dist/terminal/pty-manager.js +377 -0
- package/dist/terminal/pty-manager.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +104 -0
- package/dist/terminal/pty-session.d.ts.map +1 -0
- package/dist/terminal/pty-session.js +327 -0
- package/dist/terminal/pty-session.js.map +1 -0
- package/dist/terminal/ring-buffer.d.ts +34 -0
- package/dist/terminal/ring-buffer.d.ts.map +1 -0
- package/dist/terminal/ring-buffer.js +94 -0
- package/dist/terminal/ring-buffer.js.map +1 -0
- package/dist/terminal/session-manager.d.ts +115 -0
- package/dist/terminal/session-manager.d.ts.map +1 -0
- package/dist/terminal/session-manager.js +582 -0
- package/dist/terminal/session-manager.js.map +1 -0
- package/dist/terminal/shepherd-client.d.ts +58 -0
- package/dist/terminal/shepherd-client.d.ts.map +1 -0
- package/dist/terminal/shepherd-client.js +212 -0
- package/dist/terminal/shepherd-client.js.map +1 -0
- package/dist/terminal/shepherd-main.d.ts +19 -0
- package/dist/terminal/shepherd-main.d.ts.map +1 -0
- package/dist/terminal/shepherd-main.js +153 -0
- package/dist/terminal/shepherd-main.js.map +1 -0
- package/dist/terminal/shepherd-process.d.ts +75 -0
- package/dist/terminal/shepherd-process.d.ts.map +1 -0
- package/dist/terminal/shepherd-process.js +279 -0
- package/dist/terminal/shepherd-process.js.map +1 -0
- package/dist/terminal/shepherd-protocol.d.ts +115 -0
- package/dist/terminal/shepherd-protocol.d.ts.map +1 -0
- package/dist/terminal/shepherd-protocol.js +214 -0
- package/dist/terminal/shepherd-protocol.js.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts +38 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.js +94 -0
- package/dist/terminal/shepherd-replay-buffer.js.map +1 -0
- package/dist/terminal/ws-protocol.d.ts +27 -0
- package/dist/terminal/ws-protocol.d.ts.map +1 -0
- package/dist/terminal/ws-protocol.js +44 -0
- package/dist/terminal/ws-protocol.js.map +1 -0
- package/package.json +19 -5
- package/skeleton/.claude/skills/af/SKILL.md +89 -0
- package/skeleton/.claude/skills/codev/SKILL.md +41 -0
- package/skeleton/.claude/skills/consult/SKILL.md +81 -0
- package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
- package/skeleton/DEPENDENCIES.md +4 -62
- package/skeleton/builders.md +1 -1
- package/skeleton/consult-types/impl-review.md +18 -9
- package/skeleton/consult-types/integration-review.md +1 -1
- package/skeleton/consult-types/plan-review.md +1 -1
- package/skeleton/consult-types/pr-ready.md +1 -1
- package/skeleton/consult-types/spec-review.md +1 -1
- package/skeleton/porch/prompts/defend.md +1 -1
- package/skeleton/porch/prompts/evaluate.md +2 -2
- package/skeleton/porch/prompts/implement.md +1 -1
- package/skeleton/porch/prompts/plan.md +1 -1
- package/skeleton/porch/prompts/review.md +4 -4
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/porch/prompts/understand.md +2 -2
- package/skeleton/protocol-schema.json +282 -0
- package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
- package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
- package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
- package/skeleton/protocols/bugfix/prompts/pr.md +84 -0
- package/skeleton/protocols/bugfix/protocol.json +20 -33
- package/skeleton/protocols/experiment/builder-prompt.md +52 -0
- package/skeleton/protocols/experiment/protocol.json +101 -0
- package/skeleton/protocols/experiment/protocol.md +3 -3
- package/skeleton/protocols/experiment/templates/notes.md +1 -1
- package/skeleton/protocols/maintain/builder-prompt.md +46 -0
- package/skeleton/protocols/maintain/prompts/audit.md +111 -0
- package/skeleton/protocols/maintain/prompts/clean.md +91 -0
- package/skeleton/protocols/maintain/prompts/sync.md +113 -0
- package/skeleton/protocols/maintain/prompts/verify.md +110 -0
- package/skeleton/protocols/maintain/protocol.json +141 -0
- package/skeleton/protocols/maintain/protocol.md +17 -11
- package/skeleton/protocols/protocol-schema.json +54 -1
- package/skeleton/protocols/spir/builder-prompt.md +59 -0
- package/skeleton/protocols/spir/prompts/implement.md +208 -0
- package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
- package/skeleton/protocols/{spider → spir}/prompts/review.md +20 -39
- package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
- package/skeleton/protocols/spir/protocol.json +156 -0
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
- package/skeleton/protocols/spir/templates/review.md +89 -0
- package/skeleton/protocols/tick/builder-prompt.md +56 -0
- package/skeleton/protocols/tick/protocol.json +7 -2
- package/skeleton/protocols/tick/protocol.md +18 -18
- package/skeleton/protocols/tick/templates/review.md +1 -1
- package/skeleton/resources/commands/agent-farm.md +63 -46
- package/skeleton/resources/commands/codev.md +0 -2
- package/skeleton/resources/commands/overview.md +7 -17
- package/skeleton/resources/workflow-reference.md +4 -4
- package/skeleton/roles/architect.md +152 -315
- package/skeleton/roles/builder.md +110 -218
- package/skeleton/roles/consultant.md +6 -6
- package/skeleton/templates/AGENTS.md +2 -2
- package/skeleton/templates/CLAUDE.md +2 -2
- package/skeleton/templates/cheatsheet.md +7 -5
- package/skeleton/templates/projectlist.md +1 -1
- package/templates/dashboard/index.html +17 -43
- package/templates/dashboard/js/dialogs.js +7 -7
- package/templates/dashboard/js/files.js +2 -2
- package/templates/dashboard/js/main.js +4 -4
- package/templates/dashboard/js/projects.js +3 -3
- package/templates/dashboard/js/tabs.js +1 -1
- package/templates/dashboard/js/utils.js +22 -87
- package/templates/open.html +26 -0
- package/templates/tower.html +642 -36
- package/dist/agent-farm/commands/kickoff.d.ts +0 -20
- package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
- package/dist/agent-farm/commands/kickoff.js +0 -337
- package/dist/agent-farm/commands/kickoff.js.map +0 -1
- package/dist/agent-farm/commands/rename.d.ts +0 -13
- package/dist/agent-farm/commands/rename.d.ts.map +0 -1
- package/dist/agent-farm/commands/rename.js +0 -33
- package/dist/agent-farm/commands/rename.js.map +0 -1
- package/dist/agent-farm/commands/tutorial.d.ts +0 -10
- package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
- package/dist/agent-farm/commands/tutorial.js +0 -49
- package/dist/agent-farm/commands/tutorial.js.map +0 -1
- package/dist/agent-farm/commands/util.d.ts +0 -15
- package/dist/agent-farm/commands/util.d.ts.map +0 -1
- package/dist/agent-farm/commands/util.js +0 -108
- package/dist/agent-farm/commands/util.js.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
- package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.js +0 -1872
- package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
- package/dist/agent-farm/servers/open-server.d.ts +0 -7
- package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/open-server.js +0 -315
- package/dist/agent-farm/servers/open-server.js.map +0 -1
- package/dist/agent-farm/tutorial/index.d.ts +0 -8
- package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/index.js +0 -8
- package/dist/agent-farm/tutorial/index.js.map +0 -1
- package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
- package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/prompts.js +0 -147
- package/dist/agent-farm/tutorial/prompts.js.map +0 -1
- package/dist/agent-farm/tutorial/runner.d.ts +0 -52
- package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/runner.js +0 -204
- package/dist/agent-farm/tutorial/runner.js.map +0 -1
- package/dist/agent-farm/tutorial/state.d.ts +0 -26
- package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/state.js +0 -89
- package/dist/agent-farm/tutorial/state.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
- package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
- package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
- package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.js +0 -10
- package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.js +0 -143
- package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.js +0 -78
- package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.js +0 -126
- package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
- package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
- package/dist/agent-farm/utils/orphan-handler.d.ts +0 -27
- package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
- package/dist/agent-farm/utils/orphan-handler.js +0 -149
- package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
- package/dist/agent-farm/utils/port-registry.d.ts +0 -58
- package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
- package/dist/agent-farm/utils/port-registry.js +0 -166
- package/dist/agent-farm/utils/port-registry.js.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
- package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.js +0 -35
- package/dist/agent-farm/utils/terminal-ports.js.map +0 -1
- package/dist/commands/pcheck/cache.d.ts +0 -48
- package/dist/commands/pcheck/cache.d.ts.map +0 -1
- package/dist/commands/pcheck/cache.js +0 -170
- package/dist/commands/pcheck/cache.js.map +0 -1
- package/dist/commands/pcheck/evaluator.d.ts +0 -15
- package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
- package/dist/commands/pcheck/evaluator.js +0 -246
- package/dist/commands/pcheck/evaluator.js.map +0 -1
- package/dist/commands/pcheck/index.d.ts +0 -12
- package/dist/commands/pcheck/index.d.ts.map +0 -1
- package/dist/commands/pcheck/index.js +0 -249
- package/dist/commands/pcheck/index.js.map +0 -1
- package/dist/commands/pcheck/parser.d.ts +0 -39
- package/dist/commands/pcheck/parser.d.ts.map +0 -1
- package/dist/commands/pcheck/parser.js +0 -155
- package/dist/commands/pcheck/parser.js.map +0 -1
- package/dist/commands/pcheck/types.d.ts +0 -82
- package/dist/commands/pcheck/types.d.ts.map +0 -1
- package/dist/commands/pcheck/types.js +0 -5
- package/dist/commands/pcheck/types.js.map +0 -1
- package/dist/commands/porch/consultation.d.ts +0 -56
- package/dist/commands/porch/consultation.d.ts.map +0 -1
- package/dist/commands/porch/consultation.js +0 -330
- package/dist/commands/porch/consultation.js.map +0 -1
- package/dist/commands/porch/notifications.d.ts +0 -99
- package/dist/commands/porch/notifications.d.ts.map +0 -1
- package/dist/commands/porch/notifications.js +0 -223
- package/dist/commands/porch/notifications.js.map +0 -1
- package/dist/commands/porch/plan-parser.d.ts +0 -38
- package/dist/commands/porch/plan-parser.d.ts.map +0 -1
- package/dist/commands/porch/plan-parser.js +0 -166
- package/dist/commands/porch/plan-parser.js.map +0 -1
- package/dist/commands/porch/protocol-loader.d.ts +0 -46
- package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
- package/dist/commands/porch/protocol-loader.js +0 -253
- package/dist/commands/porch/protocol-loader.js.map +0 -1
- package/dist/commands/porch/signal-parser.d.ts +0 -88
- package/dist/commands/porch/signal-parser.d.ts.map +0 -1
- package/dist/commands/porch/signal-parser.js +0 -148
- package/dist/commands/porch/signal-parser.js.map +0 -1
- package/dist/commands/tower.d.ts +0 -16
- package/dist/commands/tower.d.ts.map +0 -1
- package/dist/commands/tower.js +0 -21
- package/dist/commands/tower.js.map +0 -1
- package/skeleton/config.json +0 -7
- package/skeleton/porch/protocols/bugfix.json +0 -85
- package/skeleton/porch/protocols/spider.json +0 -135
- package/skeleton/porch/protocols/tick.json +0 -76
- package/skeleton/protocols/spider/prompts/defend.md +0 -215
- package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
- package/skeleton/protocols/spider/prompts/implement.md +0 -149
- package/skeleton/protocols/spider/protocol.json +0 -210
- package/skeleton/protocols/spider/templates/review.md +0 -207
- package/templates/dashboard/css/activity.css +0 -151
- package/templates/dashboard/js/activity.js +0 -112
- /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shepherd-replay-buffer.d.ts","sourceRoot":"","sources":["../../src/terminal/shepherd-replay-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,SAAS,CAAK;IAEtB;;;OAGG;gBACS,QAAQ,GAAE,MAAe;IAIrC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA0CnC;;;OAGG;IACH,aAAa,IAAI,MAAM;IAMvB,sCAAsC;IACtC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0CAA0C;IAC1C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,+BAA+B;IAC/B,KAAK,IAAI,IAAI;CAKd"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone replay buffer for the shepherd process.
|
|
3
|
+
*
|
|
4
|
+
* Unlike RingBuffer (which stores lines), this stores raw byte chunks
|
|
5
|
+
* to preserve exact terminal output including escape sequences. It tracks
|
|
6
|
+
* the total bytes stored and evicts oldest chunks when the limit is exceeded.
|
|
7
|
+
*
|
|
8
|
+
* This module has NO dependencies beyond Node.js built-ins so the shepherd
|
|
9
|
+
* process doesn't need to pull in the full package dependency tree.
|
|
10
|
+
*/
|
|
11
|
+
export class ShepherdReplayBuffer {
|
|
12
|
+
chunks = [];
|
|
13
|
+
totalBytes = 0;
|
|
14
|
+
maxLines;
|
|
15
|
+
lineCount = 0;
|
|
16
|
+
/**
|
|
17
|
+
* @param maxLines Maximum number of lines to retain. Lines are delimited
|
|
18
|
+
* by newline characters in the raw data stream.
|
|
19
|
+
*/
|
|
20
|
+
constructor(maxLines = 10_000) {
|
|
21
|
+
this.maxLines = maxLines;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Append raw PTY output data to the buffer.
|
|
25
|
+
* Evicts oldest chunks if the line count exceeds maxLines.
|
|
26
|
+
*/
|
|
27
|
+
append(data) {
|
|
28
|
+
const buf = typeof data === 'string' ? Buffer.from(data, 'utf-8') : data;
|
|
29
|
+
if (buf.length === 0)
|
|
30
|
+
return;
|
|
31
|
+
// Count newlines in this chunk
|
|
32
|
+
let newLines = 0;
|
|
33
|
+
for (let i = 0; i < buf.length; i++) {
|
|
34
|
+
if (buf[i] === 0x0a)
|
|
35
|
+
newLines++;
|
|
36
|
+
}
|
|
37
|
+
this.chunks.push(buf);
|
|
38
|
+
this.totalBytes += buf.length;
|
|
39
|
+
this.lineCount += newLines;
|
|
40
|
+
// Evict oldest chunks if we've exceeded the line limit
|
|
41
|
+
while (this.lineCount > this.maxLines && this.chunks.length > 1) {
|
|
42
|
+
const oldest = this.chunks[0];
|
|
43
|
+
let removedLines = 0;
|
|
44
|
+
for (let i = 0; i < oldest.length; i++) {
|
|
45
|
+
if (oldest[i] === 0x0a)
|
|
46
|
+
removedLines++;
|
|
47
|
+
}
|
|
48
|
+
this.chunks.shift();
|
|
49
|
+
this.totalBytes -= oldest.length;
|
|
50
|
+
this.lineCount -= removedLines;
|
|
51
|
+
}
|
|
52
|
+
// Handle edge case: single chunk exceeds line limit.
|
|
53
|
+
// Trim from the front to keep only the last maxLines lines.
|
|
54
|
+
if (this.lineCount > this.maxLines && this.chunks.length === 1) {
|
|
55
|
+
const chunk = this.chunks[0];
|
|
56
|
+
let linesToSkip = this.lineCount - this.maxLines;
|
|
57
|
+
let offset = 0;
|
|
58
|
+
while (linesToSkip > 0 && offset < chunk.length) {
|
|
59
|
+
if (chunk[offset] === 0x0a)
|
|
60
|
+
linesToSkip--;
|
|
61
|
+
offset++;
|
|
62
|
+
}
|
|
63
|
+
this.chunks[0] = chunk.subarray(offset);
|
|
64
|
+
this.totalBytes = this.chunks[0].length;
|
|
65
|
+
this.lineCount = this.maxLines;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get all buffered data as a single concatenated Buffer.
|
|
70
|
+
* Used for the REPLAY frame on reconnection.
|
|
71
|
+
*/
|
|
72
|
+
getReplayData() {
|
|
73
|
+
if (this.chunks.length === 0)
|
|
74
|
+
return Buffer.alloc(0);
|
|
75
|
+
if (this.chunks.length === 1)
|
|
76
|
+
return this.chunks[0];
|
|
77
|
+
return Buffer.concat(this.chunks);
|
|
78
|
+
}
|
|
79
|
+
/** Current number of bytes stored. */
|
|
80
|
+
get size() {
|
|
81
|
+
return this.totalBytes;
|
|
82
|
+
}
|
|
83
|
+
/** Approximate number of lines stored. */
|
|
84
|
+
get lines() {
|
|
85
|
+
return this.lineCount;
|
|
86
|
+
}
|
|
87
|
+
/** Clear all buffered data. */
|
|
88
|
+
clear() {
|
|
89
|
+
this.chunks = [];
|
|
90
|
+
this.totalBytes = 0;
|
|
91
|
+
this.lineCount = 0;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=shepherd-replay-buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shepherd-replay-buffer.js","sourceRoot":"","sources":["../../src/terminal/shepherd-replay-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket frame encoding/decoding for terminal communication.
|
|
3
|
+
*
|
|
4
|
+
* Hybrid protocol:
|
|
5
|
+
* - 0x00 prefix: Control frame (remainder is UTF-8 JSON)
|
|
6
|
+
* - 0x01 prefix: Data frame (remainder is raw PTY bytes)
|
|
7
|
+
*/
|
|
8
|
+
export declare const FRAME_CONTROL = 0;
|
|
9
|
+
export declare const FRAME_DATA = 1;
|
|
10
|
+
export interface ControlMessage {
|
|
11
|
+
type: 'resize' | 'ping' | 'pong' | 'pause' | 'resume' | 'error';
|
|
12
|
+
payload: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
/** Encode a control message into a binary frame. */
|
|
15
|
+
export declare function encodeControl(msg: ControlMessage): Buffer;
|
|
16
|
+
/** Encode raw PTY data into a binary frame. */
|
|
17
|
+
export declare function encodeData(data: Buffer | string): Buffer;
|
|
18
|
+
export type DecodedFrame = {
|
|
19
|
+
type: 'control';
|
|
20
|
+
message: ControlMessage;
|
|
21
|
+
} | {
|
|
22
|
+
type: 'data';
|
|
23
|
+
data: Buffer;
|
|
24
|
+
};
|
|
25
|
+
/** Decode a received WebSocket frame. */
|
|
26
|
+
export declare function decodeFrame(frame: Buffer): DecodedFrame;
|
|
27
|
+
//# sourceMappingURL=ws-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-protocol.d.ts","sourceRoot":"","sources":["../../src/terminal/ws-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,aAAa,IAAO,CAAC;AAClC,eAAO,MAAM,UAAU,IAAO,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAOzD;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAMxD;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,yCAAyC;AACzC,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAmBvD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket frame encoding/decoding for terminal communication.
|
|
3
|
+
*
|
|
4
|
+
* Hybrid protocol:
|
|
5
|
+
* - 0x00 prefix: Control frame (remainder is UTF-8 JSON)
|
|
6
|
+
* - 0x01 prefix: Data frame (remainder is raw PTY bytes)
|
|
7
|
+
*/
|
|
8
|
+
export const FRAME_CONTROL = 0x00;
|
|
9
|
+
export const FRAME_DATA = 0x01;
|
|
10
|
+
/** Encode a control message into a binary frame. */
|
|
11
|
+
export function encodeControl(msg) {
|
|
12
|
+
const json = JSON.stringify(msg);
|
|
13
|
+
const jsonBuf = Buffer.from(json, 'utf-8');
|
|
14
|
+
const frame = Buffer.allocUnsafe(1 + jsonBuf.length);
|
|
15
|
+
frame[0] = FRAME_CONTROL;
|
|
16
|
+
jsonBuf.copy(frame, 1);
|
|
17
|
+
return frame;
|
|
18
|
+
}
|
|
19
|
+
/** Encode raw PTY data into a binary frame. */
|
|
20
|
+
export function encodeData(data) {
|
|
21
|
+
const dataBuf = typeof data === 'string' ? Buffer.from(data, 'utf-8') : data;
|
|
22
|
+
const frame = Buffer.allocUnsafe(1 + dataBuf.length);
|
|
23
|
+
frame[0] = FRAME_DATA;
|
|
24
|
+
dataBuf.copy(frame, 1);
|
|
25
|
+
return frame;
|
|
26
|
+
}
|
|
27
|
+
/** Decode a received WebSocket frame. */
|
|
28
|
+
export function decodeFrame(frame) {
|
|
29
|
+
if (frame.length === 0) {
|
|
30
|
+
throw new Error('Empty frame');
|
|
31
|
+
}
|
|
32
|
+
const prefix = frame[0];
|
|
33
|
+
const payload = frame.subarray(1);
|
|
34
|
+
if (prefix === FRAME_CONTROL) {
|
|
35
|
+
const json = payload.toString('utf-8');
|
|
36
|
+
const message = JSON.parse(json);
|
|
37
|
+
return { type: 'control', message };
|
|
38
|
+
}
|
|
39
|
+
if (prefix === FRAME_DATA) {
|
|
40
|
+
return { type: 'data', data: payload };
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`Unknown frame prefix: 0x${prefix.toString(16)}`);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=ws-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-protocol.js","sourceRoot":"","sources":["../../src/terminal/ws-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC;AAO/B,oDAAoD;AACpD,MAAM,UAAU,aAAa,CAAC,GAAmB;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,UAAU,CAAC,IAAqB;IAC9C,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,yCAAyC;AACzC,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElC,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;QACnD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cluesmith/codev",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.70",
|
|
4
4
|
"description": "Codev CLI - AI-assisted software development framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -14,32 +14,46 @@
|
|
|
14
14
|
"dist",
|
|
15
15
|
"bin",
|
|
16
16
|
"skeleton",
|
|
17
|
-
"templates"
|
|
17
|
+
"templates",
|
|
18
|
+
"dashboard/dist"
|
|
18
19
|
],
|
|
19
20
|
"scripts": {
|
|
20
|
-
"
|
|
21
|
+
"clean": "rm -rf dist",
|
|
22
|
+
"build": "npm run clean && tsc && npm run build:dashboard && npm run copy-skeleton",
|
|
23
|
+
"build:dashboard": "cd dashboard && npm install && npm run build",
|
|
24
|
+
"dev:dashboard": "cd dashboard && npm run dev",
|
|
21
25
|
"copy-skeleton": "rm -rf skeleton && cp -r ../../codev-skeleton skeleton",
|
|
22
26
|
"dev": "tsx src/cli.ts",
|
|
23
27
|
"start": "node dist/cli.js",
|
|
24
28
|
"test": "vitest",
|
|
29
|
+
"test:e2e": "npm run build && vitest run --config vitest.e2e.config.ts",
|
|
30
|
+
"test:e2e:watch": "vitest --config vitest.e2e.config.ts",
|
|
31
|
+
"test:e2e:playwright": "npx playwright test",
|
|
32
|
+
"test:e2e:cli": "npm run build && vitest run --config vitest.cli.config.ts",
|
|
33
|
+
"postinstall": "node -e \"try{require('fs').chmodSync(require('path').join(require.resolve('node-pty'),'..','..','prebuilds',process.platform+'-'+process.arch,'spawn-helper'),0o755)}catch{}\"",
|
|
25
34
|
"prepublishOnly": "npm run build"
|
|
26
35
|
},
|
|
27
36
|
"dependencies": {
|
|
37
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.41",
|
|
28
38
|
"@google/genai": "^1.0.0",
|
|
29
39
|
"better-sqlite3": "^12.5.0",
|
|
30
40
|
"chalk": "^5.3.0",
|
|
31
41
|
"commander": "^12.1.0",
|
|
32
42
|
"glob": "^11.0.0",
|
|
33
|
-
"
|
|
43
|
+
"js-yaml": "^4.1.0",
|
|
44
|
+
"node-pty": "^1.1.0",
|
|
34
45
|
"open": "^10.1.0",
|
|
35
46
|
"tree-kill": "^1.2.2",
|
|
36
47
|
"ws": "^8.18.0"
|
|
37
48
|
},
|
|
38
49
|
"devDependencies": {
|
|
50
|
+
"@playwright/test": "^1.58.0",
|
|
39
51
|
"@types/better-sqlite3": "^7.6.13",
|
|
40
|
-
"@types/
|
|
52
|
+
"@types/js-yaml": "^4.0.9",
|
|
41
53
|
"@types/node": "^22.10.1",
|
|
42
54
|
"@types/ws": "^8.18.1",
|
|
55
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
56
|
+
"playwright": "^1.58.0",
|
|
43
57
|
"tsx": "^4.19.2",
|
|
44
58
|
"typescript": "^5.7.2",
|
|
45
59
|
"vitest": "^4.0.15"
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: af
|
|
3
|
+
description: Agent Farm CLI quick reference. Use when running af commands to check correct syntax, subcommands, and flags. Prevents guessing at command names.
|
|
4
|
+
disable-model-invocation: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent Farm Quick Reference
|
|
8
|
+
|
|
9
|
+
## Tower (Dashboard Server)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
af tower start # Start Tower on port 4100
|
|
13
|
+
af tower stop # Stop Tower
|
|
14
|
+
af tower log # Tail Tower logs
|
|
15
|
+
af tower status # Check if Tower is running
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
There is NO `af tower restart` — use `af tower stop && af tower start`.
|
|
19
|
+
|
|
20
|
+
## Dashboard
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
af dash start # Start architect dashboard for current project
|
|
24
|
+
af dash stop # Stop dashboard for current project
|
|
25
|
+
af dash open # Open dashboard in browser
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Builder Management
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
af spawn -p 0003 # Spawn builder for spec (strict mode, default)
|
|
32
|
+
af spawn --soft -p 0003 # Spawn builder (soft mode)
|
|
33
|
+
af spawn --issue 42 # Spawn builder for a bugfix
|
|
34
|
+
af spawn -p 0003 --resume # Resume builder in existing worktree
|
|
35
|
+
af status # Check all builder status
|
|
36
|
+
af cleanup --project 0003 # Clean up builder worktree (safe)
|
|
37
|
+
af cleanup --project 0003 -f # Force cleanup
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Resuming Builders
|
|
41
|
+
|
|
42
|
+
When a builder's Claude process dies but the worktree and porch state survive,
|
|
43
|
+
use `--resume` to restart it without recreating the worktree:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
af spawn -p 0003 --resume
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This reuses the existing `.builders/0003` worktree, creates a fresh terminal
|
|
50
|
+
session registered with the Tower (so it appears in the dashboard), and lets
|
|
51
|
+
porch pick up from whatever phase the builder was in. Works with all spawn
|
|
52
|
+
modes: `-p`, `--issue`, `--task`, `--protocol`, `--worktree`.
|
|
53
|
+
|
|
54
|
+
## Utility
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
af util # Open utility shell
|
|
58
|
+
af open file.ts # Open file in annotation viewer
|
|
59
|
+
af ports list # List port allocations
|
|
60
|
+
af send <builder> "msg" # Send message to a builder
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Configuration
|
|
64
|
+
|
|
65
|
+
Edit `af-config.json` at project root to customize shell commands.
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"shell": {
|
|
70
|
+
"architect": "claude",
|
|
71
|
+
"builder": "claude",
|
|
72
|
+
"shell": "bash"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Pre-Spawn Checklist
|
|
78
|
+
|
|
79
|
+
**Before `af spawn`, commit all local changes.** Builders work in git worktrees
|
|
80
|
+
branched from HEAD — uncommitted files (specs, plans, codev updates) are invisible
|
|
81
|
+
to the builder. The spawn command will refuse if the worktree is dirty (override
|
|
82
|
+
with `--force`).
|
|
83
|
+
|
|
84
|
+
## Common Mistakes
|
|
85
|
+
|
|
86
|
+
- **Spawning with uncommitted changes** — builder won't see specs, plans, or codev updates
|
|
87
|
+
- There is NO `codev tower` command — Tower is managed via `af tower`
|
|
88
|
+
- There is NO `restart` subcommand — stop then start
|
|
89
|
+
- There is NO `af start` for Tower — use `af tower start` or `af dash start`
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codev
|
|
3
|
+
description: Codev project management CLI quick reference. Use when running codev commands to check correct syntax for init, adopt, update, and doctor.
|
|
4
|
+
disable-model-invocation: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# codev - Project Management CLI
|
|
8
|
+
|
|
9
|
+
## Commands
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
codev init [name] # Create a new codev project
|
|
13
|
+
codev init my-app -y # Non-interactive with defaults
|
|
14
|
+
codev adopt # Add codev to existing project (run from project root)
|
|
15
|
+
codev adopt -y # Skip conflict prompts
|
|
16
|
+
codev update # Update protocols, roles, skills from installed package
|
|
17
|
+
codev update --dry-run # Preview changes without applying
|
|
18
|
+
codev update --force # Force overwrite all framework files
|
|
19
|
+
codev doctor # Check system dependencies
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## What Each Command Does
|
|
23
|
+
|
|
24
|
+
### codev init
|
|
25
|
+
Creates a new project directory with codev structure: specs/, plans/, reviews/, protocols, CLAUDE.md, AGENTS.md, .claude/skills/, af-config.json, .gitignore.
|
|
26
|
+
|
|
27
|
+
### codev adopt
|
|
28
|
+
Adds codev to the **current directory**. Detects existing CLAUDE.md/AGENTS.md and creates `.codev-new` versions for merge if conflicts exist. Spawns Claude to merge automatically.
|
|
29
|
+
|
|
30
|
+
### codev update
|
|
31
|
+
Updates framework files (protocols, roles, skills) from the installed `@cluesmith/codev` package. **Never touches user data** (specs, plans, reviews). If you've customized a framework file, creates a `.codev-new` version for manual merge.
|
|
32
|
+
|
|
33
|
+
### codev doctor
|
|
34
|
+
Checks that all required dependencies are installed: Node.js (>=18), git (>=2.5), gh (authenticated), and at least one AI CLI (Claude, Gemini, or Codex).
|
|
35
|
+
|
|
36
|
+
## Common Mistakes
|
|
37
|
+
|
|
38
|
+
- There is NO `codev tower` command — Tower is managed via `af tower start` / `af tower stop`
|
|
39
|
+
- `codev init` creates a **new directory** — use `codev adopt` for existing projects
|
|
40
|
+
- `codev update` only updates framework files — it will never overwrite your specs/plans/reviews
|
|
41
|
+
- Always run `codev adopt` and `codev update` from the **project root directory**
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: consult
|
|
3
|
+
description: AI consultation CLI quick reference. Use when running consult commands to check syntax for PR reviews, spec reviews, plan reviews, and general queries across Gemini, Codex, and Claude.
|
|
4
|
+
disable-model-invocation: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# consult - AI Consultation CLI
|
|
8
|
+
|
|
9
|
+
## Synopsis
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
consult -m <model> <subcommand> [args] [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The `-m` / `--model` flag is **always required**.
|
|
16
|
+
|
|
17
|
+
## Models
|
|
18
|
+
|
|
19
|
+
| Model | Alias | Speed | Approach |
|
|
20
|
+
|-------|-------|-------|----------|
|
|
21
|
+
| `gemini` | `pro` | ~120-150s | Pure text analysis, fast |
|
|
22
|
+
| `codex` | `gpt` | ~200-250s | Shell command exploration, thorough |
|
|
23
|
+
| `claude` | `opus` | ~60-120s | Balanced tool use |
|
|
24
|
+
|
|
25
|
+
## Subcommands
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
consult -m gemini pr 42 # Review a pull request
|
|
29
|
+
consult -m codex spec 42 # Review a specification
|
|
30
|
+
consult -m gemini plan 42 # Review an implementation plan
|
|
31
|
+
consult -m claude general "query" # General question (quoted string)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Options
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
-n, --dry-run # Show command without running
|
|
38
|
+
-t, --type <type> # Review type (spec-review, plan-review, impl-review, pr-ready, integration-review)
|
|
39
|
+
-r, --role <role> # Custom role from codev/roles/ (without .md extension)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Review Types (--type)
|
|
43
|
+
|
|
44
|
+
| Type | Stage | Use Case |
|
|
45
|
+
|------|-------|----------|
|
|
46
|
+
| `spec-review` | conceived | Review spec completeness |
|
|
47
|
+
| `plan-review` | specified | Review implementation plan |
|
|
48
|
+
| `impl-review` | implementing | Review code implementation |
|
|
49
|
+
| `pr-ready` | implemented | Final check before PR |
|
|
50
|
+
| `integration-review` | committed | Architect's integration review |
|
|
51
|
+
|
|
52
|
+
Review type prompts live in `codev/consult-types/` and can be customized.
|
|
53
|
+
|
|
54
|
+
## Parallel Consultation (3-Way / cmap)
|
|
55
|
+
|
|
56
|
+
Run all three models in parallel for thorough reviews:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
consult -m gemini spec 42 &
|
|
60
|
+
consult -m codex spec 42 &
|
|
61
|
+
consult -m claude spec 42 &
|
|
62
|
+
wait
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Or from Claude Code, use **cmap** pattern: three parallel background Bash calls.
|
|
66
|
+
|
|
67
|
+
## Custom Roles
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
consult -m gemini --role security-reviewer pr 42
|
|
71
|
+
consult -m codex --role architect general "Review this design"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Roles are markdown files in `codev/roles/`. Create your own by adding `.md` files there.
|
|
75
|
+
|
|
76
|
+
## Common Mistakes
|
|
77
|
+
|
|
78
|
+
- The `-m` flag is **required** — `consult pr 42` will fail without it
|
|
79
|
+
- PR numbers are GitHub PR numbers, not spec numbers
|
|
80
|
+
- Spec/plan numbers match the `0042` prefix in filenames (pass just `42`, not `0042`)
|
|
81
|
+
- General queries must be **quoted**: `consult -m gemini general "your question here"`
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: generate-image
|
|
3
|
+
description: AI image generation CLI using Gemini. Use when generating images, checking syntax for resolution, aspect ratio, and reference image options.
|
|
4
|
+
disable-model-invocation: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# generate-image - AI Image Generation
|
|
8
|
+
|
|
9
|
+
Uses Google Gemini (gemini-3-pro-image-preview) to generate images from text prompts.
|
|
10
|
+
|
|
11
|
+
## Synopsis
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
codev generate-image "<prompt>" [options]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Options
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
-o, --output <file> # Output file path (default: output.png)
|
|
21
|
+
-r, --resolution <res> # Resolution: 1K, 2K, 4K (default: 1K)
|
|
22
|
+
-a, --aspect <ratio> # Aspect ratio (default: 1:1)
|
|
23
|
+
--ref <image> # Reference image (repeatable, max 14)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Aspect Ratios
|
|
27
|
+
|
|
28
|
+
`1:1` | `16:9` | `9:16` | `3:4` | `4:3` | `3:2` | `2:3`
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Basic generation
|
|
34
|
+
codev generate-image "A sunset over mountains"
|
|
35
|
+
|
|
36
|
+
# High-res widescreen
|
|
37
|
+
codev generate-image "A futuristic city" -r 4K -a 16:9 -o city.png
|
|
38
|
+
|
|
39
|
+
# With reference images (style transfer)
|
|
40
|
+
codev generate-image "Same style but with cats" --ref style.png --ref layout.png
|
|
41
|
+
|
|
42
|
+
# Prompt from file
|
|
43
|
+
codev generate-image prompt.txt -o result.png
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Prerequisites
|
|
47
|
+
|
|
48
|
+
Requires `GEMINI_API_KEY` or `GOOGLE_API_KEY` environment variable.
|
|
49
|
+
Get a key at https://aistudio.google.com/apikey
|
|
50
|
+
|
|
51
|
+
## Common Mistakes
|
|
52
|
+
|
|
53
|
+
- Prompt must be **quoted** if it contains spaces
|
|
54
|
+
- Prompt can also be a `.txt` file path (auto-detected by extension)
|
|
55
|
+
- Reference images must exist on disk — max 14 images
|
|
56
|
+
- Output defaults to `output.png` in current directory — use `-o` to change
|
package/skeleton/DEPENDENCIES.md
CHANGED
|
@@ -37,49 +37,6 @@ sudo apt install -y nodejs
|
|
|
37
37
|
node --version # Should show v18.x or higher
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
### tmux
|
|
41
|
-
|
|
42
|
-
| Requirement | Value |
|
|
43
|
-
|-------------|-------|
|
|
44
|
-
| Minimum Version | 3.0 |
|
|
45
|
-
| Purpose | Terminal multiplexer for managing builder sessions |
|
|
46
|
-
|
|
47
|
-
**Installation:**
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# macOS
|
|
51
|
-
brew install tmux
|
|
52
|
-
|
|
53
|
-
# Ubuntu/Debian
|
|
54
|
-
sudo apt install tmux
|
|
55
|
-
|
|
56
|
-
# Verify
|
|
57
|
-
tmux -V # Should show tmux 3.x or higher
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### ttyd
|
|
61
|
-
|
|
62
|
-
| Requirement | Value |
|
|
63
|
-
|-------------|-------|
|
|
64
|
-
| Minimum Version | 1.7.0 |
|
|
65
|
-
| Purpose | Web-based terminal for dashboard access |
|
|
66
|
-
|
|
67
|
-
**Installation:**
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
# macOS
|
|
71
|
-
brew install ttyd
|
|
72
|
-
|
|
73
|
-
# Ubuntu/Debian (build from source)
|
|
74
|
-
sudo apt install build-essential cmake git libjson-c-dev libwebsockets-dev
|
|
75
|
-
git clone https://github.com/tsl0922/ttyd.git
|
|
76
|
-
cd ttyd && mkdir build && cd build
|
|
77
|
-
cmake .. && make && sudo make install
|
|
78
|
-
|
|
79
|
-
# Verify
|
|
80
|
-
ttyd --version # Should show 1.7.x or higher
|
|
81
|
-
```
|
|
82
|
-
|
|
83
40
|
### git
|
|
84
41
|
|
|
85
42
|
| Requirement | Value |
|
|
@@ -192,8 +149,6 @@ codex --version
|
|
|
192
149
|
| Dependency | Minimum Version | Required? |
|
|
193
150
|
|------------|-----------------|-----------|
|
|
194
151
|
| Node.js | 18.0.0 | Yes |
|
|
195
|
-
| tmux | 3.0 | Yes |
|
|
196
|
-
| ttyd | 1.7.0 | Yes |
|
|
197
152
|
| git | 2.5.0 | Yes |
|
|
198
153
|
| gh | latest | Yes |
|
|
199
154
|
| Claude Code | latest | At least one AI CLI |
|
|
@@ -210,7 +165,7 @@ All dependencies are available via Homebrew:
|
|
|
210
165
|
|
|
211
166
|
```bash
|
|
212
167
|
# Install all core dependencies at once
|
|
213
|
-
brew install node
|
|
168
|
+
brew install node gh
|
|
214
169
|
|
|
215
170
|
# Git is included with Xcode command line tools
|
|
216
171
|
xcode-select --install
|
|
@@ -218,15 +173,13 @@ xcode-select --install
|
|
|
218
173
|
|
|
219
174
|
### Ubuntu/Debian
|
|
220
175
|
|
|
221
|
-
Most dependencies are available via apt
|
|
176
|
+
Most dependencies are available via apt:
|
|
222
177
|
|
|
223
178
|
```bash
|
|
224
179
|
# Core dependencies
|
|
225
|
-
sudo apt install nodejs npm
|
|
180
|
+
sudo apt install nodejs npm git
|
|
226
181
|
|
|
227
182
|
# gh requires adding GitHub's apt repository (see above)
|
|
228
|
-
|
|
229
|
-
# ttyd must be built from source (see above)
|
|
230
183
|
```
|
|
231
184
|
|
|
232
185
|
### Windows
|
|
@@ -256,18 +209,7 @@ echo $PATH
|
|
|
256
209
|
export PATH="$PATH:$(npm config get prefix)/bin"
|
|
257
210
|
```
|
|
258
211
|
|
|
259
|
-
###
|
|
260
|
-
|
|
261
|
-
Ubuntu LTS versions often have older tmux. Install from source or use a PPA:
|
|
262
|
-
|
|
263
|
-
```bash
|
|
264
|
-
# Add tmux PPA for newer versions
|
|
265
|
-
sudo add-apt-repository ppa:pi-rho/dev
|
|
266
|
-
sudo apt update
|
|
267
|
-
sudo apt install tmux
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
### ttyd connection issues
|
|
212
|
+
### Terminal connection issues
|
|
271
213
|
|
|
272
214
|
Ensure no firewall is blocking the ports (default: 4200-4299):
|
|
273
215
|
|
package/skeleton/builders.md
CHANGED
|
@@ -4,7 +4,7 @@ Track active builder agents here. Update manually or via `architect status`.
|
|
|
4
4
|
|
|
5
5
|
## Status Values
|
|
6
6
|
|
|
7
|
-
- **spawning**: Worktree being created,
|
|
7
|
+
- **spawning**: Worktree being created, terminal starting
|
|
8
8
|
- **implementing**: Builder is working
|
|
9
9
|
- **blocked**: Builder waiting for architect input
|
|
10
10
|
- **pr-ready**: Builder has created a PR
|