@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,507 +1,61 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Start command -
|
|
2
|
+
* Start command - activates a project via Tower
|
|
3
|
+
*
|
|
4
|
+
* Phase 3 (Spec 0090): Uses tower API for project activation.
|
|
5
|
+
* Tower is the single daemon that manages all projects.
|
|
3
6
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { existsSync, writeFileSync, unlinkSync } from 'node:fs';
|
|
6
|
-
import { tmpdir } from 'node:os';
|
|
7
|
-
import { randomUUID } from 'node:crypto';
|
|
8
|
-
import { spawn, spawnSync } from 'node:child_process';
|
|
9
|
-
import * as net from 'node:net';
|
|
10
|
-
import { version as localVersion } from '../../version.js';
|
|
11
|
-
import { getConfig, ensureDirectories } from '../utils/index.js';
|
|
7
|
+
import { getConfig } from '../utils/index.js';
|
|
12
8
|
import { logger, fatal } from '../utils/logger.js';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { handleOrphanedSessions, warnAboutStaleArtifacts } from '../utils/orphan-handler.js';
|
|
17
|
-
import { getPortBlock, cleanupStaleEntries } from '../utils/port-registry.js';
|
|
18
|
-
import { loadRolePrompt } from '../utils/roles.js';
|
|
19
|
-
import { initHQConnector, isHQEnabled } from '../hq-connector.js';
|
|
9
|
+
import { openBrowser } from '../utils/shell.js';
|
|
10
|
+
import { TowerClient } from '../lib/tower-client.js';
|
|
11
|
+
import { towerStart } from './tower.js';
|
|
20
12
|
/**
|
|
21
|
-
*
|
|
13
|
+
* Default tower port
|
|
22
14
|
*/
|
|
23
|
-
|
|
24
|
-
const now = new Date();
|
|
25
|
-
const year = now.getFullYear();
|
|
26
|
-
const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
27
|
-
const day = String(now.getDate()).padStart(2, '0');
|
|
28
|
-
const hours = String(now.getHours()).padStart(2, '0');
|
|
29
|
-
const minutes = String(now.getMinutes()).padStart(2, '0');
|
|
30
|
-
return `${year}-${month}-${day} ${hours}:${minutes}`;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Rename a Claude session after it starts
|
|
34
|
-
* Uses tmux buffer approach for reliable text input (same as af send)
|
|
35
|
-
*/
|
|
36
|
-
function renameClaudeSession(sessionName, displayName) {
|
|
37
|
-
// Wait for Claude to be ready, then send /rename command
|
|
38
|
-
setTimeout(async () => {
|
|
39
|
-
try {
|
|
40
|
-
// Add date/time to the display name
|
|
41
|
-
const nameWithTime = `${displayName} (${formatDateTime()})`;
|
|
42
|
-
const renameCommand = `/rename ${nameWithTime}`;
|
|
43
|
-
// Use buffer approach for reliable input (like af send)
|
|
44
|
-
const tempFile = join(tmpdir(), `rename-${randomUUID()}.txt`);
|
|
45
|
-
const bufferName = `rename-${sessionName}`;
|
|
46
|
-
writeFileSync(tempFile, renameCommand);
|
|
47
|
-
await run(`tmux load-buffer -b "${bufferName}" "${tempFile}"`);
|
|
48
|
-
await run(`tmux paste-buffer -b "${bufferName}" -t "${sessionName}"`);
|
|
49
|
-
await run(`tmux delete-buffer -b "${bufferName}"`).catch(() => { });
|
|
50
|
-
await run(`tmux send-keys -t "${sessionName}" Enter`);
|
|
51
|
-
// Clean up temp file
|
|
52
|
-
try {
|
|
53
|
-
unlinkSync(tempFile);
|
|
54
|
-
}
|
|
55
|
-
catch { }
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
// Non-fatal - session naming is a nice-to-have
|
|
59
|
-
}
|
|
60
|
-
}, 5000);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check if a local port is available by attempting to bind to it.
|
|
64
|
-
* More reliable than fetch() which may miss some port conflicts.
|
|
65
|
-
*/
|
|
66
|
-
export function isPortAvailable(port) {
|
|
67
|
-
return new Promise((resolve) => {
|
|
68
|
-
const server = net.createServer();
|
|
69
|
-
server.once('error', () => {
|
|
70
|
-
resolve(false);
|
|
71
|
-
});
|
|
72
|
-
server.once('listening', () => {
|
|
73
|
-
server.close(() => {
|
|
74
|
-
resolve(true);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
server.listen(port, '127.0.0.1');
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Parse remote target string: user@host or user@host:/path
|
|
82
|
-
*/
|
|
83
|
-
export function parseRemote(remote) {
|
|
84
|
-
// Match: user@host or user@host:/path
|
|
85
|
-
const match = remote.match(/^([^@]+)@([^:]+)(?::(.+))?$/);
|
|
86
|
-
if (!match) {
|
|
87
|
-
throw new Error(`Invalid remote format: ${remote}. Use user@host or user@host:/path`);
|
|
88
|
-
}
|
|
89
|
-
// Strip trailing slash to avoid duplicate port allocations (e.g., /path/ vs /path)
|
|
90
|
-
const remotePath = match[3]?.replace(/\/$/, '');
|
|
91
|
-
return { user: match[1], host: match[2], remotePath };
|
|
92
|
-
}
|
|
93
|
-
// loadRolePrompt imported from ../utils/roles.js
|
|
94
|
-
/**
|
|
95
|
-
* Check if passwordless SSH is configured for a host
|
|
96
|
-
* Returns true if SSH works without password, false otherwise
|
|
97
|
-
*/
|
|
98
|
-
async function checkPasswordlessSSH(user, host) {
|
|
99
|
-
return new Promise((resolve) => {
|
|
100
|
-
const ssh = spawn('ssh', [
|
|
101
|
-
'-o', 'ConnectTimeout=10',
|
|
102
|
-
'-o', 'BatchMode=yes', // Fail immediately if password required
|
|
103
|
-
'-o', 'StrictHostKeyChecking=accept-new',
|
|
104
|
-
`${user}@${host}`,
|
|
105
|
-
'true', // Just run 'true' to test connection
|
|
106
|
-
], {
|
|
107
|
-
stdio: ['ignore', 'ignore', 'pipe'],
|
|
108
|
-
});
|
|
109
|
-
let stderr = '';
|
|
110
|
-
ssh.stderr?.on('data', (data) => {
|
|
111
|
-
stderr += data.toString();
|
|
112
|
-
});
|
|
113
|
-
ssh.on('error', (err) => resolve({ ok: false, error: err.message }));
|
|
114
|
-
ssh.on('exit', (code) => {
|
|
115
|
-
if (code === 0) {
|
|
116
|
-
resolve({ ok: true });
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
resolve({ ok: false, error: stderr.trim() || `exit code ${code}` });
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
// Timeout after 15 seconds
|
|
123
|
-
setTimeout(() => {
|
|
124
|
-
ssh.kill();
|
|
125
|
-
resolve({ ok: false, error: 'connection timeout' });
|
|
126
|
-
}, 15000);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
15
|
+
const DEFAULT_TOWER_PORT = 4100;
|
|
129
16
|
/**
|
|
130
|
-
*
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const wrappedCmd = `bash -l -c '${versionCmd.replace(/'/g, "'\\''")}'`;
|
|
137
|
-
return new Promise((resolve) => {
|
|
138
|
-
const ssh = spawn('ssh', [
|
|
139
|
-
'-o', 'ConnectTimeout=5',
|
|
140
|
-
'-o', 'BatchMode=yes',
|
|
141
|
-
`${user}@${host}`,
|
|
142
|
-
wrappedCmd,
|
|
143
|
-
], {
|
|
144
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
145
|
-
});
|
|
146
|
-
let stdout = '';
|
|
147
|
-
ssh.stdout?.on('data', (data) => {
|
|
148
|
-
stdout += data.toString();
|
|
149
|
-
});
|
|
150
|
-
ssh.on('error', () => {
|
|
151
|
-
// SSH failed, skip version check
|
|
152
|
-
resolve();
|
|
153
|
-
});
|
|
154
|
-
ssh.on('exit', (code) => {
|
|
155
|
-
if (code !== 0) {
|
|
156
|
-
// SSH failed or commands failed, skip version check
|
|
157
|
-
resolve();
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
// Parse output: each command's version separated by "---"
|
|
161
|
-
const outputs = stdout.split('---').map(s => s.trim());
|
|
162
|
-
const mismatches = [];
|
|
163
|
-
for (let i = 0; i < commands.length && i < outputs.length; i++) {
|
|
164
|
-
const output = outputs[i];
|
|
165
|
-
const cmd = commands[i];
|
|
166
|
-
if (output.includes('not found')) {
|
|
167
|
-
mismatches.push(`${cmd}: not installed on remote`);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
// Extract version number (e.g., "1.5.3" from "@cluesmith/codev@1.5.3" or "1.5.3")
|
|
171
|
-
const versionMatch = output.match(/(\d+\.\d+\.\d+)/);
|
|
172
|
-
if (versionMatch) {
|
|
173
|
-
const remoteVer = versionMatch[1];
|
|
174
|
-
if (remoteVer !== localVersion) {
|
|
175
|
-
mismatches.push(`${cmd}: local ${localVersion}, remote ${remoteVer}`);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
if (mismatches.length > 0) {
|
|
181
|
-
logger.blank();
|
|
182
|
-
logger.warn('Version mismatch detected:');
|
|
183
|
-
for (const m of mismatches) {
|
|
184
|
-
logger.warn(` ${m}`);
|
|
185
|
-
}
|
|
186
|
-
logger.info('Consider updating: npm install -g @cluesmith/codev');
|
|
187
|
-
logger.blank();
|
|
188
|
-
}
|
|
189
|
-
resolve();
|
|
190
|
-
});
|
|
191
|
-
// Timeout after 10 seconds
|
|
192
|
-
setTimeout(() => {
|
|
193
|
-
ssh.kill();
|
|
194
|
-
resolve();
|
|
195
|
-
}, 10000);
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Start Agent Farm on a remote machine via SSH
|
|
200
|
-
*/
|
|
201
|
-
async function startRemote(options) {
|
|
202
|
-
const config = getConfig();
|
|
203
|
-
const { user, host, remotePath } = parseRemote(options.remote);
|
|
204
|
-
// Clean up stale port allocations (handles machine restarts, killed processes)
|
|
205
|
-
cleanupStaleEntries();
|
|
206
|
-
// Determine local port - use specified, or get from port registry
|
|
207
|
-
// Use a synthetic path for remote connections so they get their own port block
|
|
208
|
-
let localPort;
|
|
209
|
-
if (options.port) {
|
|
210
|
-
localPort = Number(options.port);
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
// Register with a unique key for this remote target
|
|
214
|
-
const remoteKey = `remote:${user}@${host}:${remotePath || 'default'}`;
|
|
215
|
-
localPort = getPortBlock(remoteKey);
|
|
216
|
-
}
|
|
217
|
-
logger.header('Starting Remote Agent Farm');
|
|
218
|
-
logger.kv('Host', `${user}@${host}`);
|
|
219
|
-
if (remotePath)
|
|
220
|
-
logger.kv('Path', remotePath);
|
|
221
|
-
logger.kv('Local Port', localPort);
|
|
222
|
-
// Build the remote command
|
|
223
|
-
// If no path specified, use the current directory name to find project on remote
|
|
224
|
-
const projectName = basename(config.projectRoot);
|
|
225
|
-
const cdCommand = remotePath
|
|
226
|
-
? `cd ${remotePath}`
|
|
227
|
-
: `cd ${projectName} 2>/dev/null || cd ~/${projectName} 2>/dev/null`;
|
|
228
|
-
// Always pass --no-browser to remote since we open browser locally
|
|
229
|
-
// Wrap in bash -l to source login environment (gets PATH from .profile)
|
|
230
|
-
const innerCommand = `${cdCommand} && af start --port ${localPort} --no-browser`;
|
|
231
|
-
const remoteCommand = `bash -l -c '${innerCommand.replace(/'/g, "'\\''")}'`;
|
|
232
|
-
// Check passwordless SSH is configured
|
|
233
|
-
logger.info('Checking SSH connection...');
|
|
234
|
-
const sshResult = await checkPasswordlessSSH(user, host);
|
|
235
|
-
if (!sshResult.ok) {
|
|
236
|
-
logger.blank();
|
|
237
|
-
fatal(`Cannot connect to ${user}@${host}: ${sshResult.error}
|
|
238
|
-
|
|
239
|
-
Passwordless SSH is required for remote access. Set it up with:
|
|
240
|
-
ssh-copy-id ${user}@${host}
|
|
241
|
-
|
|
242
|
-
Then verify with:
|
|
243
|
-
ssh ${user}@${host} "echo connected"`);
|
|
244
|
-
}
|
|
245
|
-
// Check remote CLI versions (non-blocking warning)
|
|
246
|
-
logger.info('Checking remote versions...');
|
|
247
|
-
await checkRemoteVersions(user, host);
|
|
248
|
-
logger.info('Connecting via SSH...');
|
|
249
|
-
// Spawn SSH with port forwarding, -f backgrounds after auth
|
|
250
|
-
const sshArgs = [
|
|
251
|
-
'-f', // Background after authentication
|
|
252
|
-
'-L', `${localPort}:localhost:${localPort}`,
|
|
253
|
-
'-o', 'ServerAliveInterval=30',
|
|
254
|
-
'-o', 'ServerAliveCountMax=3',
|
|
255
|
-
'-o', 'ExitOnForwardFailure=yes',
|
|
256
|
-
`${user}@${host}`,
|
|
257
|
-
remoteCommand,
|
|
258
|
-
];
|
|
259
|
-
const result = spawnSync('ssh', sshArgs, {
|
|
260
|
-
stdio: 'inherit',
|
|
261
|
-
});
|
|
262
|
-
if (result.status !== 0) {
|
|
263
|
-
logger.error('SSH connection failed');
|
|
264
|
-
process.exit(1);
|
|
265
|
-
}
|
|
266
|
-
logger.blank();
|
|
267
|
-
logger.success('Remote Agent Farm connected!');
|
|
268
|
-
logger.kv('Dashboard', `http://localhost:${localPort}`);
|
|
269
|
-
logger.info('SSH tunnel running in background');
|
|
270
|
-
if (!options.noBrowser) {
|
|
271
|
-
await openBrowser(`http://localhost:${localPort}`);
|
|
272
|
-
}
|
|
273
|
-
// Find and report the SSH PID for cleanup
|
|
274
|
-
const pgrep = spawnSync('pgrep', ['-f', `ssh.*${localPort}:localhost:${localPort}.*${host}`]);
|
|
275
|
-
if (pgrep.status === 0) {
|
|
276
|
-
const pid = pgrep.stdout.toString().trim().split('\n')[0];
|
|
277
|
-
logger.info(`To disconnect: kill ${pid}`);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Start the architect dashboard
|
|
17
|
+
* Start via tower API (Phase 3 - Spec 0090)
|
|
18
|
+
*
|
|
19
|
+
* This is the way to start projects:
|
|
20
|
+
* 1. Ensure tower is running
|
|
21
|
+
* 2. Call tower's activate API
|
|
22
|
+
* 3. Open browser to tower URL
|
|
282
23
|
*/
|
|
283
24
|
export async function start(options = {}) {
|
|
284
|
-
// Handle remote mode
|
|
285
|
-
if (options.remote) {
|
|
286
|
-
return startRemote(options);
|
|
287
|
-
}
|
|
288
25
|
const config = getConfig();
|
|
289
|
-
|
|
290
|
-
cleanupStaleEntries();
|
|
291
|
-
// Check for and clean up orphaned tmux sessions
|
|
292
|
-
await handleOrphanedSessions({ kill: true });
|
|
293
|
-
// Warn about stale artifacts from bash-era
|
|
294
|
-
warnAboutStaleArtifacts(config.codevDir);
|
|
295
|
-
// Check if already running
|
|
296
|
-
const state = loadState();
|
|
297
|
-
if (state.architect) {
|
|
298
|
-
// Validate that the architect process is actually alive
|
|
299
|
-
const isAlive = await isProcessRunning(state.architect.pid);
|
|
300
|
-
if (isAlive) {
|
|
301
|
-
// Dashboard port is architect port - 1 (architect runs on base+1, dashboard on base)
|
|
302
|
-
const runningDashboardPort = state.architect.port - 1;
|
|
303
|
-
logger.warn(`Architect already running on port ${state.architect.port}`);
|
|
304
|
-
logger.info(`Dashboard: http://localhost:${runningDashboardPort}`);
|
|
305
|
-
// In remote mode (--no-browser), keep process alive so SSH tunnel stays connected
|
|
306
|
-
if (options.noBrowser) {
|
|
307
|
-
logger.info('Keeping connection alive for remote tunnel...');
|
|
308
|
-
// Block forever - SSH disconnect will kill us
|
|
309
|
-
await new Promise(() => { });
|
|
310
|
-
}
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
else {
|
|
314
|
-
// PID is dead but state exists - clear stale state and continue
|
|
315
|
-
logger.info('Clearing stale architect state (process no longer running)');
|
|
316
|
-
setArchitect(null);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
// Ensure directories exist
|
|
320
|
-
await ensureDirectories(config);
|
|
321
|
-
// Check all core dependencies (node, tmux, ttyd, git)
|
|
322
|
-
await checkCoreDependencies();
|
|
323
|
-
// Determine dashboard port early (needed for role prompt and server)
|
|
324
|
-
// If --port was specified, use it for dashboard (important for remote tunneling)
|
|
325
|
-
const dashboardPort = options.port ? Number(options.port) : config.dashboardPort;
|
|
326
|
-
// Command is passed from index.ts (already resolved via CLI > config.json > default)
|
|
327
|
-
let cmd = options.cmd || 'claude';
|
|
328
|
-
// Check if base command exists before we wrap it in a launch script
|
|
329
|
-
const baseCmdName = cmd.split(' ')[0];
|
|
330
|
-
if (!(await commandExists(baseCmdName))) {
|
|
331
|
-
fatal(`Command not found: ${baseCmdName}`);
|
|
332
|
-
}
|
|
333
|
-
// Load architect role if available and not disabled
|
|
334
|
-
if (!options.noRole) {
|
|
335
|
-
const role = loadRolePrompt(config, 'architect');
|
|
336
|
-
if (role) {
|
|
337
|
-
// Write role to a file and create a launch script to avoid shell escaping issues
|
|
338
|
-
// The architect.md file contains backticks, $variables, and other shell-sensitive chars
|
|
339
|
-
const roleFile = resolve(config.stateDir, 'architect-role.md');
|
|
340
|
-
// Inject the actual dashboard port into the role prompt
|
|
341
|
-
const roleContent = role.content.replace(/\{PORT\}/g, String(dashboardPort));
|
|
342
|
-
writeFileSync(roleFile, roleContent, 'utf-8');
|
|
343
|
-
const launchScript = resolve(config.stateDir, 'launch-architect.sh');
|
|
344
|
-
writeFileSync(launchScript, `#!/bin/bash
|
|
345
|
-
cd "${config.projectRoot}"
|
|
346
|
-
exec ${cmd} --append-system-prompt "$(cat '${roleFile}')"
|
|
347
|
-
`, { mode: 0o755 });
|
|
348
|
-
cmd = launchScript;
|
|
349
|
-
logger.info(`Loaded architect role (${role.source})`);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
// Find available port for architect terminal
|
|
353
|
-
// Architect terminal runs on dashboard port + 1 to avoid conflicts
|
|
354
|
-
let architectPort = config.architectPort;
|
|
355
|
-
if (options.port !== undefined) {
|
|
356
|
-
const parsedPort = Number(options.port);
|
|
357
|
-
if (!Number.isFinite(parsedPort) || parsedPort < 1024 || parsedPort > 65535) {
|
|
358
|
-
fatal(`Invalid port: ${options.port}. Must be a number between 1024-65535`);
|
|
359
|
-
}
|
|
360
|
-
architectPort = parsedPort + 1; // Offset from dashboard port
|
|
361
|
-
}
|
|
26
|
+
const projectPath = config.projectRoot;
|
|
362
27
|
logger.header('Starting Agent Farm');
|
|
363
|
-
logger.kv('Project',
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
//
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
//
|
|
384
|
-
|
|
385
|
-
await run(`tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"`);
|
|
386
|
-
// Start ttyd attached to the tmux session
|
|
387
|
-
const customIndexPath = resolve(config.templatesDir, 'ttyd-index.html');
|
|
388
|
-
const hasCustomIndex = existsSync(customIndexPath);
|
|
389
|
-
if (hasCustomIndex) {
|
|
390
|
-
logger.info('Using custom terminal with file click support');
|
|
391
|
-
}
|
|
392
|
-
const bindHost = options.allowInsecureRemote ? '0.0.0.0' : undefined;
|
|
393
|
-
if (options.allowInsecureRemote) {
|
|
394
|
-
logger.warn('⚠️ INSECURE MODE: Binding to 0.0.0.0 - accessible from any network!');
|
|
395
|
-
logger.warn(' No authentication - anyone on your network can access the terminal.');
|
|
396
|
-
logger.warn(' DEPRECATED: Use `af start --remote user@host` for secure remote access instead.');
|
|
397
|
-
}
|
|
398
|
-
const ttydProcess = spawnTtyd({
|
|
399
|
-
port: architectPort,
|
|
400
|
-
sessionName,
|
|
401
|
-
cwd: config.projectRoot,
|
|
402
|
-
customIndexPath: hasCustomIndex ? customIndexPath : undefined,
|
|
403
|
-
bindHost,
|
|
404
|
-
});
|
|
405
|
-
if (!ttydProcess?.pid) {
|
|
406
|
-
fatal('Failed to start ttyd process');
|
|
407
|
-
}
|
|
408
|
-
// Rename Claude session for better history tracking
|
|
409
|
-
const projectName = basename(config.projectRoot);
|
|
410
|
-
renameClaudeSession(sessionName, `Architect ${projectName}`);
|
|
411
|
-
// Save architect state
|
|
412
|
-
const architectState = {
|
|
413
|
-
port: architectPort,
|
|
414
|
-
pid: ttydProcess.pid,
|
|
415
|
-
cmd,
|
|
416
|
-
startedAt: new Date().toISOString(),
|
|
417
|
-
tmuxSession: sessionName,
|
|
418
|
-
};
|
|
419
|
-
setArchitect(architectState);
|
|
420
|
-
// Wait a moment for ttyd to start
|
|
421
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
422
|
-
// Start the dashboard server on the main port
|
|
423
|
-
await startDashboard(config.projectRoot, dashboardPort, architectPort, bindHost);
|
|
424
|
-
// Initialize HQ connector if CODEV_HQ_URL is set
|
|
425
|
-
if (isHQEnabled()) {
|
|
426
|
-
initHQConnector(config.projectRoot);
|
|
427
|
-
}
|
|
28
|
+
logger.kv('Project', projectPath);
|
|
29
|
+
// Create tower client
|
|
30
|
+
const client = new TowerClient(DEFAULT_TOWER_PORT);
|
|
31
|
+
// Check if tower is running
|
|
32
|
+
const towerRunning = await client.isRunning();
|
|
33
|
+
if (!towerRunning) {
|
|
34
|
+
logger.info('Starting tower daemon...');
|
|
35
|
+
await towerStart({ port: DEFAULT_TOWER_PORT, wait: true });
|
|
36
|
+
// Give tower a moment to fully initialize
|
|
37
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
38
|
+
}
|
|
39
|
+
// Activate project via tower API
|
|
40
|
+
logger.info('Activating project...');
|
|
41
|
+
const result = await client.activateProject(projectPath);
|
|
42
|
+
if (!result.ok) {
|
|
43
|
+
fatal(`Failed to activate project: ${result.error}`);
|
|
44
|
+
}
|
|
45
|
+
if (result.adopted) {
|
|
46
|
+
logger.info('Project auto-adopted (codev/ directory created)');
|
|
47
|
+
}
|
|
48
|
+
// Get project URL from tower
|
|
49
|
+
const projectUrl = client.getProjectUrl(projectPath);
|
|
428
50
|
logger.blank();
|
|
429
51
|
logger.success('Agent Farm started!');
|
|
430
|
-
logger.kv('Dashboard',
|
|
431
|
-
if (
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
// Open dashboard in browser (unless --no-browser)
|
|
435
|
-
if (!options.noBrowser) {
|
|
436
|
-
await openBrowser(`http://localhost:${dashboardPort}`);
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Wait for a server to respond on a given port
|
|
441
|
-
* Returns true if server responds, false if timeout
|
|
442
|
-
*/
|
|
443
|
-
async function waitForServer(port, timeoutMs = 5000) {
|
|
444
|
-
const startTime = Date.now();
|
|
445
|
-
const pollInterval = 100;
|
|
446
|
-
while (Date.now() - startTime < timeoutMs) {
|
|
447
|
-
try {
|
|
448
|
-
const response = await fetch(`http://localhost:${port}/`, {
|
|
449
|
-
method: 'HEAD',
|
|
450
|
-
signal: AbortSignal.timeout(500),
|
|
451
|
-
});
|
|
452
|
-
if (response.ok || response.status === 404) {
|
|
453
|
-
return true; // Server is responding
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
catch {
|
|
457
|
-
// Server not ready yet, continue polling
|
|
458
|
-
}
|
|
459
|
-
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
460
|
-
}
|
|
461
|
-
return false;
|
|
462
|
-
}
|
|
463
|
-
/**
|
|
464
|
-
* Start the dashboard HTTP server
|
|
465
|
-
*/
|
|
466
|
-
async function startDashboard(projectRoot, port, _architectPort, bindHost) {
|
|
467
|
-
const config = getConfig();
|
|
468
|
-
// Try TypeScript source first (dev mode), then compiled JS
|
|
469
|
-
const tsScript = resolve(config.serversDir, 'dashboard-server.ts');
|
|
470
|
-
const jsScript = resolve(config.serversDir, 'dashboard-server.js');
|
|
471
|
-
let command;
|
|
472
|
-
let args;
|
|
473
|
-
// Args: <port> [bindHost]
|
|
474
|
-
const serverArgs = [String(port)];
|
|
475
|
-
if (bindHost) {
|
|
476
|
-
serverArgs.push(bindHost);
|
|
477
|
-
}
|
|
478
|
-
if (existsSync(tsScript)) {
|
|
479
|
-
// Dev mode: run with tsx
|
|
480
|
-
command = 'npx';
|
|
481
|
-
args = ['tsx', tsScript, ...serverArgs];
|
|
482
|
-
}
|
|
483
|
-
else if (existsSync(jsScript)) {
|
|
484
|
-
// Prod mode: run compiled JS
|
|
485
|
-
command = 'node';
|
|
486
|
-
args = [jsScript, ...serverArgs];
|
|
487
|
-
}
|
|
488
|
-
else {
|
|
489
|
-
logger.warn('Dashboard server not found, skipping dashboard');
|
|
490
|
-
return;
|
|
491
|
-
}
|
|
492
|
-
logger.debug(`Starting dashboard: ${command} ${args.join(' ')}`);
|
|
493
|
-
const serverProcess = spawnDetached(command, args, {
|
|
494
|
-
cwd: projectRoot,
|
|
495
|
-
});
|
|
496
|
-
if (!serverProcess.pid) {
|
|
497
|
-
logger.warn('Failed to start dashboard server');
|
|
498
|
-
return;
|
|
52
|
+
logger.kv('Dashboard', projectUrl);
|
|
53
|
+
// Open browser only if Tower wasn't already running (user already has it open)
|
|
54
|
+
if (!options.noBrowser && !towerRunning) {
|
|
55
|
+
await openBrowser(projectUrl);
|
|
499
56
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
if (!isReady) {
|
|
503
|
-
logger.warn(`Dashboard server did not respond on port ${port} within 5 seconds`);
|
|
504
|
-
logger.warn('Check for errors above or run with DEBUG=1 for more details');
|
|
57
|
+
else if (towerRunning) {
|
|
58
|
+
logger.info('Tower already running — project visible in your browser.');
|
|
505
59
|
}
|
|
506
60
|
}
|
|
507
61
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/start.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,UAAU,EAAgB,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAqB,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnI,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAElE;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,WAAmB,EAAE,WAAmB;IACnE,yDAAyD;IACzD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,YAAY,GAAG,GAAG,WAAW,KAAK,cAAc,EAAE,GAAG,CAAC;YAC5D,MAAM,aAAa,GAAG,WAAW,YAAY,EAAE,CAAC;YAEhD,wDAAwD;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,UAAU,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,UAAU,WAAW,EAAE,CAAC;YAE3C,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACvC,MAAM,GAAG,CAAC,wBAAwB,UAAU,MAAM,QAAQ,GAAG,CAAC,CAAC;YAC/D,MAAM,GAAG,CAAC,yBAAyB,UAAU,SAAS,WAAW,GAAG,CAAC,CAAC;YACtE,MAAM,GAAG,CAAC,0BAA0B,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnE,MAAM,GAAG,CAAC,sBAAsB,WAAW,SAAS,CAAC,CAAC;YAEtD,qBAAqB;YACrB,IAAI,CAAC;gBAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,sCAAsC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,oCAAoC,CAAC,CAAC;IACxF,CAAC;IACD,mFAAmF;IACnF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAChD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;AACxD,CAAC;AAED,iDAAiD;AAEjD;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CAAC,IAAY,EAAE,IAAY;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE;YACvB,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,eAAe,EAAG,wCAAwC;YAChE,IAAI,EAAE,kCAAkC;YACxC,GAAG,IAAI,IAAI,IAAI,EAAE;YACjB,MAAM,EAAG,qCAAqC;SAC/C,EAAE;YACD,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACtD,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAY;IAC3D,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,mCAAmC,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9H,wEAAwE;IACxE,MAAM,UAAU,GAAG,eAAe,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;IAEvE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE;YACvB,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,eAAe;YACrB,GAAG,IAAI,IAAI,IAAI,EAAE;YACjB,UAAU;SACX,EAAE;YACD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACtC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,iCAAiC;YACjC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,oDAAoD;gBACpD,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,0DAA0D;YAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,UAAU,GAAa,EAAE,CAAC;YAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAExB,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,2BAA2B,CAAC,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACN,kFAAkF;oBAClF,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBACrD,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;wBAClC,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;4BAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,WAAW,YAAY,YAAY,SAAS,EAAE,CAAC,CAAC;wBACxE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAC1C,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBAClE,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,UAAU,CAAC,GAAG,EAAE;YACd,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,OAAqB;IAC9C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,MAAO,CAAC,CAAC;IAEhE,+EAA+E;IAC/E,mBAAmB,EAAE,CAAC;IAEtB,kEAAkE;IAClE,+EAA+E;IAC/E,IAAI,SAAiB,CAAC;IACtB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,MAAM,SAAS,GAAG,UAAU,IAAI,IAAI,IAAI,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QACtE,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACrC,IAAI,UAAU;QAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAEnC,2BAA2B;IAC3B,iFAAiF;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,UAAU;QAC1B,CAAC,CAAC,MAAM,UAAU,EAAE;QACpB,CAAC,CAAC,MAAM,WAAW,wBAAwB,WAAW,cAAc,CAAC;IACvE,mEAAmE;IACnE,wEAAwE;IACxE,MAAM,YAAY,GAAG,GAAG,SAAS,uBAAuB,SAAS,eAAe,CAAC;IACjF,MAAM,aAAa,GAAG,eAAe,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;IAE5E,uCAAuC;IACvC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,qBAAqB,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,KAAK;;;gBAG/C,IAAI,IAAI,IAAI;;;QAGpB,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEtC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAErC,4DAA4D;IAC5D,MAAM,OAAO,GAAG;QACd,IAAI,EAAG,kCAAkC;QACzC,IAAI,EAAE,GAAG,SAAS,cAAc,SAAS,EAAE;QAC3C,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,0BAA0B;QAChC,GAAG,IAAI,IAAI,IAAI,EAAE;QACjB,aAAa;KACd,CAAC;IAEF,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;QACvC,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,oBAAoB,SAAS,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,WAAW,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,0CAA0C;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,SAAS,cAAc,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,UAAwB,EAAE;IACpD,qBAAqB;IACrB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,+EAA+E;IAC/E,mBAAmB,EAAE,CAAC;IAEtB,gDAAgD;IAChD,MAAM,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,2CAA2C;IAC3C,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,wDAAwD;QACxD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE5D,IAAI,OAAO,EAAE,CAAC;YACZ,qFAAqF;YACrF,MAAM,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,qCAAqC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC,+BAA+B,oBAAoB,EAAE,CAAC,CAAC;YAEnE,kFAAkF;YAClF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBAC7D,8CAA8C;gBAC9C,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO;QACT,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YAC1E,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEhC,sDAAsD;IACtD,MAAM,qBAAqB,EAAE,CAAC;IAE9B,qEAAqE;IACrE,iFAAiF;IACjF,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;IAEjF,qFAAqF;IACrF,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC;IAElC,oEAAoE;IACpE,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE,CAAC;YACT,iFAAiF;YACjF,wFAAwF;YACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAC/D,wDAAwD;YACxD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;YAC7E,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAE9C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;YACrE,aAAa,CAAC,YAAY,EAAE;MAC5B,MAAM,CAAC,WAAW;OACjB,GAAG,mCAAmC,QAAQ;CACpD,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAEd,GAAG,GAAG,YAAY,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,mEAAmE;IACnE,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACzC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,IAAI,IAAI,UAAU,GAAG,KAAK,EAAE,CAAC;YAC5E,KAAK,CAAC,iBAAiB,OAAO,CAAC,IAAI,uCAAuC,CAAC,CAAC;QAC9E,CAAC;QACD,aAAa,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,6BAA6B;IAC/D,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEjC,kDAAkD;IAClD,gEAAgE;IAChE,MAAM,WAAW,GAAG,gBAAgB,aAAa,EAAE,CAAC;IAEpD,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,wBAAwB,WAAW,sBAAsB,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,uCAAuC;IACvC,wEAAwE;IACxE,MAAM,GAAG,CAAC,0BAA0B,WAAW,mBAAmB,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACxG,MAAM,GAAG,CAAC,sBAAsB,WAAW,aAAa,CAAC,CAAC;IAC1D,MAAM,GAAG,CAAC,sBAAsB,WAAW,cAAc,CAAC,CAAC;IAC3D,MAAM,GAAG,CAAC,sBAAsB,WAAW,sBAAsB,CAAC,CAAC;IACnE,MAAM,GAAG,CAAC,sBAAsB,WAAW,0BAA0B,CAAC,CAAC;IAEvE,wEAAwE;IACxE,MAAM,GAAG,CAAC,yFAAyF,CAAC,CAAC;IACrG,MAAM,GAAG,CAAC,4FAA4F,CAAC,CAAC;IAExG,0CAA0C;IAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAErE,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACpF,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC;QAC5B,IAAI,EAAE,aAAa;QACnB,WAAW;QACX,GAAG,EAAE,MAAM,CAAC,WAAW;QACvB,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QAC7D,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;QACtB,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxC,CAAC;IAED,oDAAoD;IACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,mBAAmB,CAAC,WAAW,EAAE,aAAa,WAAW,EAAE,CAAC,CAAC;IAE7D,uBAAuB;IACvB,MAAM,cAAc,GAAmB;QACrC,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,WAAW,CAAC,GAAG;QACpB,GAAG;QACH,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,WAAW;KACzB,CAAC;IAEF,YAAY,CAAC,cAAc,CAAC,CAAC;IAE7B,kCAAkC;IAClC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,8CAA8C;IAC9C,MAAM,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEjF,iDAAiD;IACjD,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,oBAAoB,aAAa,EAAE,CAAC,CAAC;IAC5D,IAAI,WAAW,EAAE,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAa,CAAC,CAAC;IAC7C,CAAC;IAED,kDAAkD;IAClD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,WAAW,CAAC,oBAAoB,aAAa,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,YAAoB,IAAI;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,GAAG,CAAC;IAEzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,GAAG,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;aACjC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,CAAC,uBAAuB;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,WAAmB,EAAE,IAAY,EAAE,cAAsB,EAAE,QAAiB;IACxG,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IAEnE,IAAI,OAAe,CAAC;IACpB,IAAI,IAAc,CAAC;IAEnB,0BAA0B;IAC1B,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,yBAAyB;QACzB,OAAO,GAAG,KAAK,CAAC;QAChB,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC;IAC1C,CAAC;SAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,6BAA6B;QAC7B,OAAO,GAAG,MAAM,CAAC;QACjB,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,UAAU,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEjE,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;QACjD,GAAG,EAAE,WAAW;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,uCAAuC;IACvC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,4CAA4C,IAAI,mBAAmB,CAAC,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,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,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC;;GAEG;AACH,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,UAAwB,EAAE;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAElC,sBAAsB;IACtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEnD,4BAA4B;IAC5B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,0CAA0C;QAC1C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,iCAAiC;IACjC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAEzD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,KAAK,CAAC,+BAA+B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;IAED,6BAA6B;IAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAErD,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAEnC,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/status.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAkJ5C"}
|