@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/af.js +2 -2
- package/bin/consult.js +1 -1
- package/bin/porch.js +6 -35
- package/dashboard/dist/assets/index-C7FtNK6Y.css +32 -0
- package/dashboard/dist/assets/index-CDAINZKT.js +131 -0
- package/dashboard/dist/assets/index-CDAINZKT.js.map +1 -0
- package/dashboard/dist/index.html +14 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +173 -118
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +3 -3
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +20 -147
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +13 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -0
- package/dist/agent-farm/commands/attach.js +144 -0
- package/dist/agent-farm/commands/attach.js.map +1 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +35 -19
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/consult.d.ts +3 -4
- package/dist/agent-farm/commands/consult.d.ts.map +1 -1
- package/dist/agent-farm/commands/consult.js +27 -37
- package/dist/agent-farm/commands/consult.js.map +1 -1
- package/dist/agent-farm/commands/index.d.ts +2 -2
- package/dist/agent-farm/commands/index.d.ts.map +1 -1
- package/dist/agent-farm/commands/index.js +2 -2
- package/dist/agent-farm/commands/index.js.map +1 -1
- package/dist/agent-farm/commands/open.d.ts +4 -2
- package/dist/agent-farm/commands/open.d.ts.map +1 -1
- package/dist/agent-farm/commands/open.js +33 -83
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +60 -79
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/shell.d.ts +15 -0
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/shell.js +50 -0
- package/dist/agent-farm/commands/shell.js.map +1 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +597 -281
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts +10 -20
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +45 -491
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts +2 -0
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +75 -24
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts +6 -0
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +49 -109
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +48 -0
- package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower-cloud.js +329 -0
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -0
- package/dist/agent-farm/commands/tower.d.ts +9 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +59 -19
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts +6 -2
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +246 -18
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/migrate.d.ts +0 -4
- package/dist/agent-farm/db/migrate.d.ts.map +1 -1
- package/dist/agent-farm/db/migrate.js +6 -55
- package/dist/agent-farm/db/migrate.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +3 -3
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +25 -19
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +3 -13
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +3 -11
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/hq-connector.d.ts +2 -6
- package/dist/agent-farm/hq-connector.d.ts.map +1 -1
- package/dist/agent-farm/hq-connector.js +2 -17
- package/dist/agent-farm/hq-connector.js.map +1 -1
- package/dist/agent-farm/lib/cloud-config.d.ts +59 -0
- package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -0
- package/dist/agent-farm/lib/cloud-config.js +143 -0
- package/dist/agent-farm/lib/cloud-config.js.map +1 -0
- package/dist/agent-farm/lib/tower-client.d.ts +163 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tower-client.js +233 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts +117 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.js +504 -0
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.js +2653 -185
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +6 -12
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +34 -49
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +49 -26
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts +0 -5
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +12 -44
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/deps.d.ts.map +1 -1
- package/dist/agent-farm/utils/deps.js +0 -32
- package/dist/agent-farm/utils/deps.js.map +1 -1
- package/dist/agent-farm/utils/file-tabs.d.ts +27 -0
- package/dist/agent-farm/utils/file-tabs.d.ts.map +1 -0
- package/dist/agent-farm/utils/file-tabs.js +46 -0
- package/dist/agent-farm/utils/file-tabs.js.map +1 -0
- package/dist/agent-farm/utils/gate-status.d.ts +16 -0
- package/dist/agent-farm/utils/gate-status.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-status.js +79 -0
- package/dist/agent-farm/utils/gate-status.js.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts +38 -0
- package/dist/agent-farm/utils/gate-watcher.d.ts.map +1 -0
- package/dist/agent-farm/utils/gate-watcher.js +122 -0
- package/dist/agent-farm/utils/gate-watcher.js.map +1 -0
- package/dist/agent-farm/utils/index.d.ts +0 -1
- package/dist/agent-farm/utils/index.d.ts.map +1 -1
- package/dist/agent-farm/utils/index.js +0 -1
- package/dist/agent-farm/utils/index.js.map +1 -1
- package/dist/agent-farm/utils/notifications.d.ts +30 -0
- package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
- package/dist/agent-farm/utils/notifications.js +121 -0
- package/dist/agent-farm/utils/notifications.js.map +1 -0
- package/dist/agent-farm/utils/server-utils.d.ts +5 -5
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +5 -16
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/session.d.ts +32 -0
- package/dist/agent-farm/utils/session.d.ts.map +1 -0
- package/dist/agent-farm/utils/session.js +57 -0
- package/dist/agent-farm/utils/session.js.map +1 -0
- package/dist/agent-farm/utils/shell.d.ts +9 -22
- package/dist/agent-farm/utils/shell.d.ts.map +1 -1
- package/dist/agent-farm/utils/shell.js +34 -34
- package/dist/agent-farm/utils/shell.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +11 -54
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +49 -4
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +13 -2
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +245 -29
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +96 -79
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +41 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/build-counter.d.ts +5 -0
- package/dist/commands/porch/build-counter.d.ts.map +1 -0
- package/dist/commands/porch/build-counter.js +5 -0
- package/dist/commands/porch/build-counter.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +17 -29
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +96 -144
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/index.d.ts +25 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +463 -1116
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts +22 -0
- package/dist/commands/porch/next.d.ts.map +1 -0
- package/dist/commands/porch/next.js +571 -0
- package/dist/commands/porch/next.js.map +1 -0
- package/dist/commands/porch/plan.d.ts +70 -0
- package/dist/commands/porch/plan.d.ts.map +1 -0
- package/dist/commands/porch/plan.js +190 -0
- package/dist/commands/porch/plan.js.map +1 -0
- package/dist/commands/porch/prompts.d.ts +19 -0
- package/dist/commands/porch/prompts.d.ts.map +1 -0
- package/dist/commands/porch/prompts.js +277 -0
- package/dist/commands/porch/prompts.js.map +1 -0
- package/dist/commands/porch/protocol.d.ts +59 -0
- package/dist/commands/porch/protocol.d.ts.map +1 -0
- package/dist/commands/porch/protocol.js +294 -0
- package/dist/commands/porch/protocol.js.map +1 -0
- package/dist/commands/porch/state.d.ts +36 -107
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +120 -699
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +99 -164
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/porch/types.js +2 -1
- package/dist/commands/porch/types.js.map +1 -1
- package/dist/commands/porch/verdict.d.ts +31 -0
- package/dist/commands/porch/verdict.d.ts.map +1 -0
- package/dist/commands/porch/verdict.js +59 -0
- package/dist/commands/porch/verdict.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +31 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +37 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +114 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +8 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +5 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +69 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -0
- package/dist/terminal/pty-manager.js +377 -0
- package/dist/terminal/pty-manager.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +104 -0
- package/dist/terminal/pty-session.d.ts.map +1 -0
- package/dist/terminal/pty-session.js +327 -0
- package/dist/terminal/pty-session.js.map +1 -0
- package/dist/terminal/ring-buffer.d.ts +34 -0
- package/dist/terminal/ring-buffer.d.ts.map +1 -0
- package/dist/terminal/ring-buffer.js +94 -0
- package/dist/terminal/ring-buffer.js.map +1 -0
- package/dist/terminal/session-manager.d.ts +115 -0
- package/dist/terminal/session-manager.d.ts.map +1 -0
- package/dist/terminal/session-manager.js +582 -0
- package/dist/terminal/session-manager.js.map +1 -0
- package/dist/terminal/shepherd-client.d.ts +66 -0
- package/dist/terminal/shepherd-client.d.ts.map +1 -0
- package/dist/terminal/shepherd-client.js +234 -0
- package/dist/terminal/shepherd-client.js.map +1 -0
- package/dist/terminal/shepherd-main.d.ts +19 -0
- package/dist/terminal/shepherd-main.d.ts.map +1 -0
- package/dist/terminal/shepherd-main.js +153 -0
- package/dist/terminal/shepherd-main.js.map +1 -0
- package/dist/terminal/shepherd-process.d.ts +75 -0
- package/dist/terminal/shepherd-process.d.ts.map +1 -0
- package/dist/terminal/shepherd-process.js +279 -0
- package/dist/terminal/shepherd-process.js.map +1 -0
- package/dist/terminal/shepherd-protocol.d.ts +115 -0
- package/dist/terminal/shepherd-protocol.d.ts.map +1 -0
- package/dist/terminal/shepherd-protocol.js +214 -0
- package/dist/terminal/shepherd-protocol.js.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts +38 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.js +94 -0
- package/dist/terminal/shepherd-replay-buffer.js.map +1 -0
- package/dist/terminal/ws-protocol.d.ts +27 -0
- package/dist/terminal/ws-protocol.d.ts.map +1 -0
- package/dist/terminal/ws-protocol.js +44 -0
- package/dist/terminal/ws-protocol.js.map +1 -0
- package/package.json +19 -5
- package/skeleton/.claude/skills/af/SKILL.md +89 -0
- package/skeleton/.claude/skills/codev/SKILL.md +41 -0
- package/skeleton/.claude/skills/consult/SKILL.md +81 -0
- package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
- package/skeleton/DEPENDENCIES.md +4 -62
- package/skeleton/builders.md +1 -1
- package/skeleton/consult-types/impl-review.md +18 -9
- package/skeleton/consult-types/integration-review.md +1 -1
- package/skeleton/consult-types/plan-review.md +1 -1
- package/skeleton/consult-types/pr-ready.md +1 -1
- package/skeleton/consult-types/spec-review.md +1 -1
- package/skeleton/porch/prompts/defend.md +1 -1
- package/skeleton/porch/prompts/evaluate.md +2 -2
- package/skeleton/porch/prompts/implement.md +1 -1
- package/skeleton/porch/prompts/plan.md +1 -1
- package/skeleton/porch/prompts/review.md +4 -4
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/porch/prompts/understand.md +2 -2
- package/skeleton/protocol-schema.json +282 -0
- package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
- package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
- package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
- package/skeleton/protocols/bugfix/prompts/pr.md +84 -0
- package/skeleton/protocols/bugfix/protocol.json +20 -33
- package/skeleton/protocols/experiment/builder-prompt.md +52 -0
- package/skeleton/protocols/experiment/protocol.json +101 -0
- package/skeleton/protocols/experiment/protocol.md +3 -3
- package/skeleton/protocols/experiment/templates/notes.md +1 -1
- package/skeleton/protocols/maintain/builder-prompt.md +46 -0
- package/skeleton/protocols/maintain/prompts/audit.md +111 -0
- package/skeleton/protocols/maintain/prompts/clean.md +91 -0
- package/skeleton/protocols/maintain/prompts/sync.md +113 -0
- package/skeleton/protocols/maintain/prompts/verify.md +110 -0
- package/skeleton/protocols/maintain/protocol.json +141 -0
- package/skeleton/protocols/maintain/protocol.md +17 -11
- package/skeleton/protocols/protocol-schema.json +54 -1
- package/skeleton/protocols/spir/builder-prompt.md +59 -0
- package/skeleton/protocols/spir/prompts/implement.md +208 -0
- package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
- package/skeleton/protocols/{spider → spir}/prompts/review.md +20 -39
- package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
- package/skeleton/protocols/spir/protocol.json +156 -0
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
- package/skeleton/protocols/spir/templates/review.md +89 -0
- package/skeleton/protocols/tick/builder-prompt.md +56 -0
- package/skeleton/protocols/tick/protocol.json +7 -2
- package/skeleton/protocols/tick/protocol.md +18 -18
- package/skeleton/protocols/tick/templates/review.md +1 -1
- package/skeleton/resources/commands/agent-farm.md +63 -46
- package/skeleton/resources/commands/codev.md +0 -2
- package/skeleton/resources/commands/overview.md +7 -17
- package/skeleton/resources/workflow-reference.md +4 -4
- package/skeleton/roles/architect.md +152 -315
- package/skeleton/roles/builder.md +110 -218
- package/skeleton/roles/consultant.md +6 -6
- package/skeleton/templates/AGENTS.md +2 -2
- package/skeleton/templates/CLAUDE.md +2 -2
- package/skeleton/templates/cheatsheet.md +7 -5
- package/skeleton/templates/projectlist.md +1 -1
- package/templates/dashboard/index.html +17 -43
- package/templates/dashboard/js/dialogs.js +7 -7
- package/templates/dashboard/js/files.js +2 -2
- package/templates/dashboard/js/main.js +4 -4
- package/templates/dashboard/js/projects.js +3 -3
- package/templates/dashboard/js/tabs.js +1 -1
- package/templates/dashboard/js/utils.js +22 -87
- package/templates/open.html +26 -0
- package/templates/tower.html +642 -36
- package/dist/agent-farm/commands/kickoff.d.ts +0 -20
- package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
- package/dist/agent-farm/commands/kickoff.js +0 -337
- package/dist/agent-farm/commands/kickoff.js.map +0 -1
- package/dist/agent-farm/commands/rename.d.ts +0 -13
- package/dist/agent-farm/commands/rename.d.ts.map +0 -1
- package/dist/agent-farm/commands/rename.js +0 -33
- package/dist/agent-farm/commands/rename.js.map +0 -1
- package/dist/agent-farm/commands/tutorial.d.ts +0 -10
- package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
- package/dist/agent-farm/commands/tutorial.js +0 -49
- package/dist/agent-farm/commands/tutorial.js.map +0 -1
- package/dist/agent-farm/commands/util.d.ts +0 -15
- package/dist/agent-farm/commands/util.d.ts.map +0 -1
- package/dist/agent-farm/commands/util.js +0 -108
- package/dist/agent-farm/commands/util.js.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
- package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.js +0 -1872
- package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
- package/dist/agent-farm/servers/open-server.d.ts +0 -7
- package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/open-server.js +0 -315
- package/dist/agent-farm/servers/open-server.js.map +0 -1
- package/dist/agent-farm/tutorial/index.d.ts +0 -8
- package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/index.js +0 -8
- package/dist/agent-farm/tutorial/index.js.map +0 -1
- package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
- package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/prompts.js +0 -147
- package/dist/agent-farm/tutorial/prompts.js.map +0 -1
- package/dist/agent-farm/tutorial/runner.d.ts +0 -52
- package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/runner.js +0 -204
- package/dist/agent-farm/tutorial/runner.js.map +0 -1
- package/dist/agent-farm/tutorial/state.d.ts +0 -26
- package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/state.js +0 -89
- package/dist/agent-farm/tutorial/state.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
- package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
- package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
- package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.js +0 -10
- package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.js +0 -143
- package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.js +0 -78
- package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.js +0 -126
- package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
- package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
- package/dist/agent-farm/utils/orphan-handler.d.ts +0 -27
- package/dist/agent-farm/utils/orphan-handler.d.ts.map +0 -1
- package/dist/agent-farm/utils/orphan-handler.js +0 -149
- package/dist/agent-farm/utils/orphan-handler.js.map +0 -1
- package/dist/agent-farm/utils/port-registry.d.ts +0 -58
- package/dist/agent-farm/utils/port-registry.d.ts.map +0 -1
- package/dist/agent-farm/utils/port-registry.js +0 -166
- package/dist/agent-farm/utils/port-registry.js.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.d.ts +0 -18
- package/dist/agent-farm/utils/terminal-ports.d.ts.map +0 -1
- package/dist/agent-farm/utils/terminal-ports.js +0 -35
- package/dist/agent-farm/utils/terminal-ports.js.map +0 -1
- package/dist/commands/pcheck/cache.d.ts +0 -48
- package/dist/commands/pcheck/cache.d.ts.map +0 -1
- package/dist/commands/pcheck/cache.js +0 -170
- package/dist/commands/pcheck/cache.js.map +0 -1
- package/dist/commands/pcheck/evaluator.d.ts +0 -15
- package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
- package/dist/commands/pcheck/evaluator.js +0 -246
- package/dist/commands/pcheck/evaluator.js.map +0 -1
- package/dist/commands/pcheck/index.d.ts +0 -12
- package/dist/commands/pcheck/index.d.ts.map +0 -1
- package/dist/commands/pcheck/index.js +0 -249
- package/dist/commands/pcheck/index.js.map +0 -1
- package/dist/commands/pcheck/parser.d.ts +0 -39
- package/dist/commands/pcheck/parser.d.ts.map +0 -1
- package/dist/commands/pcheck/parser.js +0 -155
- package/dist/commands/pcheck/parser.js.map +0 -1
- package/dist/commands/pcheck/types.d.ts +0 -82
- package/dist/commands/pcheck/types.d.ts.map +0 -1
- package/dist/commands/pcheck/types.js +0 -5
- package/dist/commands/pcheck/types.js.map +0 -1
- package/dist/commands/porch/consultation.d.ts +0 -56
- package/dist/commands/porch/consultation.d.ts.map +0 -1
- package/dist/commands/porch/consultation.js +0 -330
- package/dist/commands/porch/consultation.js.map +0 -1
- package/dist/commands/porch/notifications.d.ts +0 -99
- package/dist/commands/porch/notifications.d.ts.map +0 -1
- package/dist/commands/porch/notifications.js +0 -223
- package/dist/commands/porch/notifications.js.map +0 -1
- package/dist/commands/porch/plan-parser.d.ts +0 -38
- package/dist/commands/porch/plan-parser.d.ts.map +0 -1
- package/dist/commands/porch/plan-parser.js +0 -166
- package/dist/commands/porch/plan-parser.js.map +0 -1
- package/dist/commands/porch/protocol-loader.d.ts +0 -46
- package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
- package/dist/commands/porch/protocol-loader.js +0 -253
- package/dist/commands/porch/protocol-loader.js.map +0 -1
- package/dist/commands/porch/signal-parser.d.ts +0 -88
- package/dist/commands/porch/signal-parser.d.ts.map +0 -1
- package/dist/commands/porch/signal-parser.js +0 -148
- package/dist/commands/porch/signal-parser.js.map +0 -1
- package/dist/commands/tower.d.ts +0 -16
- package/dist/commands/tower.d.ts.map +0 -1
- package/dist/commands/tower.js +0 -21
- package/dist/commands/tower.js.map +0 -1
- package/skeleton/config.json +0 -7
- package/skeleton/porch/protocols/bugfix.json +0 -85
- package/skeleton/porch/protocols/spider.json +0 -135
- package/skeleton/porch/protocols/tick.json +0 -76
- package/skeleton/protocols/spider/prompts/defend.md +0 -215
- package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
- package/skeleton/protocols/spider/prompts/implement.md +0 -149
- package/skeleton/protocols/spider/protocol.json +0 -210
- package/skeleton/protocols/spider/templates/review.md +0 -207
- package/templates/dashboard/css/activity.css +0 -151
- package/templates/dashboard/js/activity.js +0 -112
- /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
|
@@ -1,157 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Architect command - direct CLI access to architect role
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Opens the Tower dashboard for the current project.
|
|
5
|
+
* The dashboard provides full terminal access to the architect session.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import { resolve } from 'node:path';
|
|
9
|
-
import { spawn } from 'node:child_process';
|
|
10
|
-
import { getConfig, ensureDirectories } from '../utils/index.js';
|
|
7
|
+
import { getConfig } from '../utils/index.js';
|
|
11
8
|
import { logger, fatal } from '../utils/logger.js';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
const SESSION_NAME = 'af-architect';
|
|
15
|
-
// findRolePromptPath imported from ../utils/roles.js
|
|
9
|
+
import { openBrowser } from '../utils/shell.js';
|
|
10
|
+
import { TowerClient } from '../lib/tower-client.js';
|
|
16
11
|
/**
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
async function tmuxSessionExists(sessionName) {
|
|
20
|
-
try {
|
|
21
|
-
await run(`tmux has-session -t "${sessionName}" 2>/dev/null`);
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Attach to an existing tmux session (foreground, interactive)
|
|
30
|
-
*/
|
|
31
|
-
function attachToSession(sessionName) {
|
|
32
|
-
// Use spawn with inherited stdio for full interactivity
|
|
33
|
-
const child = spawn('tmux', ['attach-session', '-t', sessionName], {
|
|
34
|
-
stdio: 'inherit',
|
|
35
|
-
});
|
|
36
|
-
child.on('exit', (code) => {
|
|
37
|
-
process.exit(code ?? 0);
|
|
38
|
-
});
|
|
39
|
-
child.on('error', (err) => {
|
|
40
|
-
fatal(`Failed to attach to tmux session: ${err.message}`);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Create a new tmux session with the architect role and attach to it
|
|
45
|
-
*/
|
|
46
|
-
async function createAndAttach(args) {
|
|
47
|
-
const config = getConfig();
|
|
48
|
-
// Ensure state directory exists for launch script
|
|
49
|
-
await ensureDirectories(config);
|
|
50
|
-
// Load architect role
|
|
51
|
-
const role = findRolePromptPath(config, 'architect');
|
|
52
|
-
if (!role) {
|
|
53
|
-
fatal('Architect role not found. Expected at: codev/roles/architect.md');
|
|
54
|
-
}
|
|
55
|
-
logger.info(`Loaded architect role (${role.source})`);
|
|
56
|
-
// Create a launch script to avoid shell escaping issues
|
|
57
|
-
// The architect.md file contains backticks, $variables, and other shell-sensitive chars
|
|
58
|
-
const launchScript = resolve(config.stateDir, 'launch-architect-cli.sh');
|
|
59
|
-
let argsStr = '';
|
|
60
|
-
if (args.length > 0) {
|
|
61
|
-
argsStr = ' ' + args.map(a => `'${a.replace(/'/g, "'\\''")}'`).join(' ');
|
|
62
|
-
}
|
|
63
|
-
writeFileSync(launchScript, `#!/bin/bash
|
|
64
|
-
cd "${config.projectRoot}"
|
|
65
|
-
exec claude --append-system-prompt "$(cat '${role.path}')"${argsStr}
|
|
66
|
-
`, { mode: 0o755 });
|
|
67
|
-
logger.info('Creating new architect session...');
|
|
68
|
-
// Create tmux session running the launch script
|
|
69
|
-
await run(`tmux new-session -d -s "${SESSION_NAME}" -x 200 -y 50 -c "${config.projectRoot}" "${launchScript}"`);
|
|
70
|
-
// Configure tmux session (same settings as start.ts)
|
|
71
|
-
await run(`tmux set-option -t "${SESSION_NAME}" status off`);
|
|
72
|
-
await run(`tmux set-option -t "${SESSION_NAME}" -g mouse on`);
|
|
73
|
-
await run(`tmux set-option -t "${SESSION_NAME}" -g set-clipboard on`);
|
|
74
|
-
await run(`tmux set-option -t "${SESSION_NAME}" -g allow-passthrough on`);
|
|
75
|
-
// Copy selection to clipboard when mouse is released (pbcopy for macOS)
|
|
76
|
-
await run(`tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`);
|
|
77
|
-
await run(`tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`);
|
|
78
|
-
// Attach to the session
|
|
79
|
-
attachToSession(SESSION_NAME);
|
|
80
|
-
}
|
|
81
|
-
const LAYOUT_SESSION_NAME = 'af-layout';
|
|
82
|
-
/**
|
|
83
|
-
* Create a two-pane tmux layout with architect and utility shell
|
|
84
|
-
*
|
|
85
|
-
* Layout:
|
|
86
|
-
* ┌────────────────────────────────┬──────────────────────────────┐
|
|
87
|
-
* │ │ │
|
|
88
|
-
* │ Architect Session (60%) │ Utility Shell (40%) │
|
|
89
|
-
* │ │ │
|
|
90
|
-
* └────────────────────────────────┴──────────────────────────────┘
|
|
91
|
-
*/
|
|
92
|
-
async function createLayoutAndAttach(args) {
|
|
93
|
-
const config = getConfig();
|
|
94
|
-
// Ensure state directory exists for launch script
|
|
95
|
-
await ensureDirectories(config);
|
|
96
|
-
// Load architect role
|
|
97
|
-
const role = findRolePromptPath(config, 'architect');
|
|
98
|
-
if (!role) {
|
|
99
|
-
fatal('Architect role not found. Expected at: codev/roles/architect.md');
|
|
100
|
-
}
|
|
101
|
-
logger.info(`Loaded architect role (${role.source})`);
|
|
102
|
-
// Create launch script for architect
|
|
103
|
-
const launchScript = resolve(config.stateDir, 'launch-architect-cli.sh');
|
|
104
|
-
let argsStr = '';
|
|
105
|
-
if (args.length > 0) {
|
|
106
|
-
argsStr = ' ' + args.map(a => `'${a.replace(/'/g, "'\\''")}'`).join(' ');
|
|
107
|
-
}
|
|
108
|
-
writeFileSync(launchScript, `#!/bin/bash
|
|
109
|
-
cd "${config.projectRoot}"
|
|
110
|
-
exec claude --append-system-prompt "$(cat '${role.path}')"${argsStr}
|
|
111
|
-
`, { mode: 0o755 });
|
|
112
|
-
logger.info('Creating layout session...');
|
|
113
|
-
// Create main session with architect pane (left, 70% width)
|
|
114
|
-
await run(`tmux new-session -d -s "${LAYOUT_SESSION_NAME}" -x 200 -y 50 -c "${config.projectRoot}" "${launchScript}"`);
|
|
115
|
-
// Configure tmux session
|
|
116
|
-
await run(`tmux set-option -t "${LAYOUT_SESSION_NAME}" status off`);
|
|
117
|
-
await run(`tmux set-option -t "${LAYOUT_SESSION_NAME}" -g mouse on`);
|
|
118
|
-
await run(`tmux set-option -t "${LAYOUT_SESSION_NAME}" -g set-clipboard on`);
|
|
119
|
-
await run(`tmux set-option -t "${LAYOUT_SESSION_NAME}" -g allow-passthrough on`);
|
|
120
|
-
// Split right: create utility shell pane (40% width)
|
|
121
|
-
await run(`tmux split-window -h -t "${LAYOUT_SESSION_NAME}" -p 40 -c "${config.projectRoot}"`);
|
|
122
|
-
// Focus back on architect pane (left)
|
|
123
|
-
await run(`tmux select-pane -t "${LAYOUT_SESSION_NAME}:0.0"`);
|
|
124
|
-
logger.info('Layout: Architect (left) | Shell (right)');
|
|
125
|
-
logger.info('Navigation: Ctrl+B ←/→ | Detach: Ctrl+B d');
|
|
126
|
-
// Attach to the session
|
|
127
|
-
attachToSession(LAYOUT_SESSION_NAME);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Start or attach to the architect tmux session
|
|
12
|
+
* Start or open the architect session via Tower dashboard
|
|
131
13
|
*/
|
|
132
14
|
export async function architect(options = {}) {
|
|
133
|
-
const
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
if (!
|
|
137
|
-
fatal('
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
logger.info('Detach with Ctrl+B, D');
|
|
148
|
-
attachToSession(sessionName);
|
|
149
|
-
}
|
|
150
|
-
else if (useLayout) {
|
|
151
|
-
await createLayoutAndAttach(args);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
await createAndAttach(args);
|
|
155
|
-
}
|
|
15
|
+
const config = getConfig();
|
|
16
|
+
const client = new TowerClient();
|
|
17
|
+
const towerRunning = await client.isRunning();
|
|
18
|
+
if (!towerRunning) {
|
|
19
|
+
fatal('Tower is not running. Start it with: af tower start');
|
|
20
|
+
}
|
|
21
|
+
// Open the project dashboard in browser
|
|
22
|
+
const url = client.getProjectUrl(config.projectRoot);
|
|
23
|
+
if (options.layout) {
|
|
24
|
+
logger.info('Layout mode is handled by the Tower dashboard.');
|
|
25
|
+
}
|
|
26
|
+
logger.info(`Opening Tower dashboard at ${url}...`);
|
|
27
|
+
await openBrowser(url);
|
|
28
|
+
logger.success('Opened Tower dashboard in browser');
|
|
156
29
|
}
|
|
157
30
|
//# sourceMappingURL=architect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architect.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/architect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"architect.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/architect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAqB,MAAM,wBAAwB,CAAC;AAOxE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC5D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IAEjC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC/D,CAAC;IAED,wCAAwC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC,CAAC;IACpD,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attach command - attach to a running builder terminal
|
|
3
|
+
*/
|
|
4
|
+
export interface AttachOptions {
|
|
5
|
+
project?: string;
|
|
6
|
+
issue?: number;
|
|
7
|
+
browser?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Attach to builder terminal
|
|
11
|
+
*/
|
|
12
|
+
export declare function attach(options: AttachOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/attach.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAuGD;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDlE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attach command - attach to a running builder terminal
|
|
3
|
+
*/
|
|
4
|
+
import { logger, fatal } from '../utils/logger.js';
|
|
5
|
+
import { openBrowser } from '../utils/shell.js';
|
|
6
|
+
import { loadState, getBuilder, getBuilders } from '../state.js';
|
|
7
|
+
import { getConfig } from '../utils/config.js';
|
|
8
|
+
import { TowerClient } from '../lib/tower-client.js';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
/**
|
|
11
|
+
* Find a builder by issue number
|
|
12
|
+
*/
|
|
13
|
+
function findBuilderByIssue(issueNumber) {
|
|
14
|
+
const builders = getBuilders();
|
|
15
|
+
return builders.find((b) => b.issueNumber === issueNumber) ?? null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Find a builder by ID (supports partial matching)
|
|
19
|
+
*/
|
|
20
|
+
function findBuilderById(id) {
|
|
21
|
+
// First try exact match
|
|
22
|
+
const exact = getBuilder(id);
|
|
23
|
+
if (exact)
|
|
24
|
+
return exact;
|
|
25
|
+
// Try prefix match (e.g., "0073" matches "0073-feature-name")
|
|
26
|
+
const builders = getBuilders();
|
|
27
|
+
const matches = builders.filter((b) => b.id.startsWith(id) || b.id.includes(id));
|
|
28
|
+
if (matches.length === 1) {
|
|
29
|
+
return matches[0];
|
|
30
|
+
}
|
|
31
|
+
if (matches.length > 1) {
|
|
32
|
+
logger.error(`Ambiguous builder ID "${id}". Matches:`);
|
|
33
|
+
for (const b of matches) {
|
|
34
|
+
logger.info(` - ${b.id}`);
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Display a list of running builders for interactive selection
|
|
42
|
+
*/
|
|
43
|
+
async function displayBuilderList() {
|
|
44
|
+
const state = loadState();
|
|
45
|
+
const builders = state.builders;
|
|
46
|
+
if (builders.length === 0) {
|
|
47
|
+
logger.info('No builders running.');
|
|
48
|
+
logger.blank();
|
|
49
|
+
logger.info('Spawn a builder with:');
|
|
50
|
+
logger.info(' af spawn -p <project-id>');
|
|
51
|
+
logger.info(' af spawn --issue <number>');
|
|
52
|
+
logger.info(' af spawn --task "description"');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
logger.header('Running Builders');
|
|
56
|
+
logger.blank();
|
|
57
|
+
const widths = [15, 30, 8, 10];
|
|
58
|
+
logger.row(['ID', 'Name', 'Type', 'Status'], widths);
|
|
59
|
+
logger.row(['──', '────', '────', '──────'], widths);
|
|
60
|
+
for (const builder of builders) {
|
|
61
|
+
const running = !!builder.terminalId;
|
|
62
|
+
const statusText = running ? chalk.green(builder.status) : chalk.red('stopped');
|
|
63
|
+
const typeColor = getTypeColor(builder.type);
|
|
64
|
+
logger.row([
|
|
65
|
+
builder.id,
|
|
66
|
+
builder.name.substring(0, 28),
|
|
67
|
+
typeColor(builder.type),
|
|
68
|
+
statusText,
|
|
69
|
+
], widths);
|
|
70
|
+
}
|
|
71
|
+
logger.blank();
|
|
72
|
+
logger.info('Attach with:');
|
|
73
|
+
logger.info(' af attach -p <id> # by builder/project ID');
|
|
74
|
+
logger.info(' af attach --issue <num> # by issue number');
|
|
75
|
+
logger.info(' af attach -p <id> --browser # open in browser');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get color function for builder type
|
|
79
|
+
*/
|
|
80
|
+
function getTypeColor(type) {
|
|
81
|
+
switch (type) {
|
|
82
|
+
case 'spec':
|
|
83
|
+
return chalk.cyan;
|
|
84
|
+
case 'bugfix':
|
|
85
|
+
return chalk.red;
|
|
86
|
+
case 'task':
|
|
87
|
+
return chalk.magenta;
|
|
88
|
+
case 'protocol':
|
|
89
|
+
return chalk.yellow;
|
|
90
|
+
case 'worktree':
|
|
91
|
+
return chalk.blue;
|
|
92
|
+
case 'shell':
|
|
93
|
+
return chalk.gray;
|
|
94
|
+
default:
|
|
95
|
+
return chalk.white;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Attach to builder terminal
|
|
100
|
+
*/
|
|
101
|
+
export async function attach(options) {
|
|
102
|
+
// If no arguments provided, show list of builders
|
|
103
|
+
if (!options.project && !options.issue) {
|
|
104
|
+
await displayBuilderList();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// Find the builder
|
|
108
|
+
let builder = null;
|
|
109
|
+
if (options.issue) {
|
|
110
|
+
builder = findBuilderByIssue(options.issue);
|
|
111
|
+
if (!builder) {
|
|
112
|
+
fatal(`No builder found for issue #${options.issue}. Use 'af status' to see running builders.`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else if (options.project) {
|
|
116
|
+
builder = findBuilderById(options.project);
|
|
117
|
+
if (!builder) {
|
|
118
|
+
fatal(`Builder "${options.project}" not found. Use 'af status' to see running builders.`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (!builder) {
|
|
122
|
+
fatal('No builder specified. Use --project (-p) or --issue (-i).');
|
|
123
|
+
return; // TypeScript doesn't know fatal() never returns
|
|
124
|
+
}
|
|
125
|
+
// Open in browser (via Tower dashboard)
|
|
126
|
+
const config = getConfig();
|
|
127
|
+
const client = new TowerClient();
|
|
128
|
+
const url = client.getProjectUrl(config.projectRoot);
|
|
129
|
+
if (options.browser) {
|
|
130
|
+
logger.info(`Opening Tower dashboard at ${url}...`);
|
|
131
|
+
await openBrowser(url);
|
|
132
|
+
logger.success('Opened Tower dashboard in browser');
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// Default: open in browser (Tower dashboard is the primary terminal interface)
|
|
136
|
+
if (!builder.terminalId) {
|
|
137
|
+
fatal(`Builder ${builder.id} has no terminal session. Try opening in browser with --browser`);
|
|
138
|
+
}
|
|
139
|
+
logger.info(`Builder ${builder.id} terminal is available in the Tower dashboard.`);
|
|
140
|
+
logger.info(`Opening ${url}...`);
|
|
141
|
+
await openBrowser(url);
|
|
142
|
+
logger.success('Opened Tower dashboard in browser');
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/attach.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;GAEG;AACH,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,EAAU;IACjC,wBAAwB;IACxB,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEhC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAErD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,CAAC,GAAG,CAAC;YACT,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB,UAAU;SACX,EAAE,MAAM,CAAC,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACnE,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB;YACE,OAAO,KAAK,CAAC,KAAK,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,kDAAkD;IAClD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,kBAAkB,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,GAAmB,IAAI,CAAC;IAEnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,+BAA+B,OAAO,CAAC,KAAK,4CAA4C,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,YAAY,OAAO,CAAC,OAAO,uDAAuD,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACnE,OAAO,CAAC,gDAAgD;IAC1D,CAAC;IAED,wCAAwC;IACxC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC,CAAC;QACpD,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,CAAC,WAAW,OAAO,CAAC,EAAE,iEAAiE,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,EAAE,gDAAgD,CAAC,CAAC;IACnF,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;IACjC,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqCH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAuDD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCpE"}
|
|
@@ -1,17 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cleanup command - removes builder worktrees and branches
|
|
3
3
|
*/
|
|
4
|
-
import { existsSync } from 'node:fs';
|
|
5
|
-
import {
|
|
4
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
5
|
+
import { rm } from 'node:fs/promises';
|
|
6
|
+
import { join } from 'node:path';
|
|
6
7
|
import { getConfig } from '../utils/index.js';
|
|
7
8
|
import { logger, fatal } from '../utils/logger.js';
|
|
8
9
|
import { run } from '../utils/shell.js';
|
|
9
10
|
import { loadState, removeBuilder } from '../state.js';
|
|
11
|
+
import { TowerClient } from '../lib/tower-client.js';
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* Remove porch state for a project from codev/projects/
|
|
12
14
|
*/
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
+
async function cleanupPorchState(projectId, config) {
|
|
16
|
+
const projectsDir = join(config.codevDir, 'projects');
|
|
17
|
+
if (!existsSync(projectsDir)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const entries = readdirSync(projectsDir, { withFileTypes: true });
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
if (entry.isDirectory() && entry.name.startsWith(`${projectId}-`)) {
|
|
24
|
+
const porchStatePath = join(projectsDir, entry.name);
|
|
25
|
+
logger.info(`Removing porch state: ${entry.name}`);
|
|
26
|
+
await rm(porchStatePath, { recursive: true, force: true });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
logger.warn(`Warning: Failed to cleanup porch state: ${error}`);
|
|
32
|
+
}
|
|
15
33
|
}
|
|
16
34
|
/**
|
|
17
35
|
* Check if a worktree has uncommitted changes
|
|
@@ -115,25 +133,19 @@ async function cleanupBuilder(builder, force, issueNumber) {
|
|
|
115
133
|
logger.info(`Worktree has uncommitted changes: ${details}`);
|
|
116
134
|
}
|
|
117
135
|
}
|
|
118
|
-
// Kill
|
|
119
|
-
if (builder.
|
|
120
|
-
logger.info('Stopping builder terminal...');
|
|
136
|
+
// Kill Tower terminal if exists
|
|
137
|
+
if (builder.terminalId) {
|
|
121
138
|
try {
|
|
122
|
-
|
|
139
|
+
const client = new TowerClient();
|
|
140
|
+
const killed = await client.killTerminal(builder.terminalId);
|
|
141
|
+
if (killed) {
|
|
142
|
+
logger.info('Killed Tower terminal');
|
|
143
|
+
}
|
|
123
144
|
}
|
|
124
145
|
catch {
|
|
125
|
-
//
|
|
146
|
+
// Tower may not be running
|
|
126
147
|
}
|
|
127
148
|
}
|
|
128
|
-
// Kill tmux session if exists (use stored session name for correct shell/builder naming)
|
|
129
|
-
const sessionName = builder.tmuxSession || getSessionName(config, builder.id);
|
|
130
|
-
try {
|
|
131
|
-
await run(`tmux kill-session -t "${sessionName}" 2>/dev/null`);
|
|
132
|
-
logger.info('Killed tmux session');
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// Session may not exist
|
|
136
|
-
}
|
|
137
149
|
// For bugfix mode: actually remove worktree and delete remote branch
|
|
138
150
|
if (isBugfixMode && !isShellMode) {
|
|
139
151
|
// Remove worktree
|
|
@@ -206,6 +218,10 @@ async function cleanupBuilder(builder, force, issueNumber) {
|
|
|
206
218
|
}
|
|
207
219
|
// Remove from state
|
|
208
220
|
removeBuilder(builder.id);
|
|
221
|
+
// Clean up porch state (codev/projects/NNNN-*/) so fresh kickoff gets fresh state
|
|
222
|
+
if (!isShellMode) {
|
|
223
|
+
await cleanupPorchState(builder.id, config);
|
|
224
|
+
}
|
|
209
225
|
// Always prune stale worktree entries to prevent "can't find session" errors
|
|
210
226
|
// This catches any orphaned worktrees from crashes or manual kills
|
|
211
227
|
if (!isShellMode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Consult command - runs a consult command
|
|
2
|
+
* Consult command - runs a consult command as a subprocess
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* terminal open after completion for review.
|
|
4
|
+
* Spawns the consult CLI directly, independent of Tower.
|
|
6
5
|
*/
|
|
7
6
|
interface ConsultOptions {
|
|
8
7
|
model: string;
|
|
9
8
|
type?: string;
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
12
|
-
* Run a consult command
|
|
11
|
+
* Run a consult command as a direct subprocess
|
|
13
12
|
*/
|
|
14
13
|
export declare function consult(subcommand: string, target: string, options: ConsultOptions): Promise<void>;
|
|
15
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consult.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/consult.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"consult.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/consult.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
|
@@ -1,49 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Consult command - runs a consult command
|
|
2
|
+
* Consult command - runs a consult command as a subprocess
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* terminal open after completion for review.
|
|
4
|
+
* Spawns the consult CLI directly, independent of Tower.
|
|
6
5
|
*/
|
|
7
|
-
import {
|
|
6
|
+
import { spawn } from 'node:child_process';
|
|
8
7
|
import { logger, fatal } from '../utils/logger.js';
|
|
9
|
-
import { loadState } from '../state.js';
|
|
10
8
|
/**
|
|
11
|
-
* Run a consult command
|
|
9
|
+
* Run a consult command as a direct subprocess
|
|
12
10
|
*/
|
|
13
11
|
export async function consult(subcommand, target, options) {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
fatal('Dashboard not running. Start with: af start');
|
|
17
|
-
}
|
|
18
|
-
const config = getConfig();
|
|
19
|
-
const dashboardPort = config.dashboardPort;
|
|
20
|
-
// Build the consult command (consult is now a proper CLI binary)
|
|
21
|
-
let cmd = `consult --model ${options.model}`;
|
|
12
|
+
// Build the consult command arguments
|
|
13
|
+
const args = ['--model', options.model];
|
|
22
14
|
if (options.type) {
|
|
23
|
-
|
|
15
|
+
args.push('--type', options.type);
|
|
24
16
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
method: 'POST',
|
|
31
|
-
headers: { 'Content-Type': 'application/json' },
|
|
32
|
-
body: JSON.stringify({ name, command: cmd }),
|
|
17
|
+
args.push(subcommand, target);
|
|
18
|
+
logger.info(`Running: consult ${args.join(' ')}`);
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
const child = spawn('consult', args, {
|
|
21
|
+
stdio: 'inherit',
|
|
33
22
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
23
|
+
child.on('error', (err) => {
|
|
24
|
+
if (err.code === 'ENOENT') {
|
|
25
|
+
fatal('consult CLI not found. Install with: npm install -g @cluesmith/codev');
|
|
26
|
+
}
|
|
27
|
+
reject(err);
|
|
28
|
+
});
|
|
29
|
+
child.on('close', (code) => {
|
|
30
|
+
if (code === 0) {
|
|
31
|
+
resolve();
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
reject(new Error(`consult exited with code ${code}`));
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
48
38
|
}
|
|
49
39
|
//# sourceMappingURL=consult.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consult.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/consult.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"consult.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/consult.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAOnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,UAAkB,EAClB,MAAc,EACd,OAAuB;IAEvB,sCAAsC;IACtC,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE9B,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAElD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE;YACnC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -5,8 +5,8 @@ export { start } from './start.js';
|
|
|
5
5
|
export { stop } from './stop.js';
|
|
6
6
|
export { status } from './status.js';
|
|
7
7
|
export { spawn } from './spawn.js';
|
|
8
|
-
export {
|
|
9
|
-
export { util } from './util.js';
|
|
8
|
+
export { shell } from './shell.js';
|
|
10
9
|
export { open } from './open.js';
|
|
11
10
|
export { send } from './send.js';
|
|
11
|
+
export { attach } from './attach.js';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|