@cluesmith/codev 1.1.0
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 +8 -0
- package/bin/codev.js +4 -0
- package/bin/consult.js +7 -0
- package/dist/agent-farm/cli.d.ts +11 -0
- package/dist/agent-farm/cli.d.ts.map +1 -0
- package/dist/agent-farm/cli.js +359 -0
- package/dist/agent-farm/cli.js.map +1 -0
- package/dist/agent-farm/commands/cleanup.d.ts +12 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -0
- package/dist/agent-farm/commands/cleanup.js +154 -0
- package/dist/agent-farm/commands/cleanup.js.map +1 -0
- package/dist/agent-farm/commands/db.d.ts +38 -0
- package/dist/agent-farm/commands/db.d.ts.map +1 -0
- package/dist/agent-farm/commands/db.js +133 -0
- package/dist/agent-farm/commands/db.js.map +1 -0
- package/dist/agent-farm/commands/index.d.ts +11 -0
- package/dist/agent-farm/commands/index.d.ts.map +1 -0
- package/dist/agent-farm/commands/index.js +11 -0
- package/dist/agent-farm/commands/index.js.map +1 -0
- package/dist/agent-farm/commands/open.d.ts +15 -0
- package/dist/agent-farm/commands/open.d.ts.map +1 -0
- package/dist/agent-farm/commands/open.js +118 -0
- package/dist/agent-farm/commands/open.js.map +1 -0
- package/dist/agent-farm/commands/rename.d.ts +13 -0
- package/dist/agent-farm/commands/rename.d.ts.map +1 -0
- package/dist/agent-farm/commands/rename.js +33 -0
- package/dist/agent-farm/commands/rename.js.map +1 -0
- package/dist/agent-farm/commands/send.d.ts +9 -0
- package/dist/agent-farm/commands/send.d.ts.map +1 -0
- package/dist/agent-farm/commands/send.js +282 -0
- package/dist/agent-farm/commands/send.js.map +1 -0
- package/dist/agent-farm/commands/spawn.d.ts +15 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -0
- package/dist/agent-farm/commands/spawn.js +575 -0
- package/dist/agent-farm/commands/spawn.js.map +1 -0
- package/dist/agent-farm/commands/start.d.ts +9 -0
- package/dist/agent-farm/commands/start.d.ts.map +1 -0
- package/dist/agent-farm/commands/start.js +175 -0
- package/dist/agent-farm/commands/start.js.map +1 -0
- package/dist/agent-farm/commands/status.d.ts +8 -0
- package/dist/agent-farm/commands/status.d.ts.map +1 -0
- package/dist/agent-farm/commands/status.js +123 -0
- package/dist/agent-farm/commands/status.js.map +1 -0
- package/dist/agent-farm/commands/stop.d.ts +8 -0
- package/dist/agent-farm/commands/stop.d.ts.map +1 -0
- package/dist/agent-farm/commands/stop.js +76 -0
- package/dist/agent-farm/commands/stop.js.map +1 -0
- package/dist/agent-farm/commands/tower.d.ts +19 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower.js +125 -0
- package/dist/agent-farm/commands/tower.js.map +1 -0
- package/dist/agent-farm/commands/tutorial.d.ts +10 -0
- package/dist/agent-farm/commands/tutorial.d.ts.map +1 -0
- package/dist/agent-farm/commands/tutorial.js +49 -0
- package/dist/agent-farm/commands/tutorial.js.map +1 -0
- package/dist/agent-farm/commands/util.d.ts +15 -0
- package/dist/agent-farm/commands/util.d.ts.map +1 -0
- package/dist/agent-farm/commands/util.js +108 -0
- package/dist/agent-farm/commands/util.js.map +1 -0
- package/dist/agent-farm/db/errors.d.ts +17 -0
- package/dist/agent-farm/db/errors.d.ts.map +1 -0
- package/dist/agent-farm/db/errors.js +46 -0
- package/dist/agent-farm/db/errors.js.map +1 -0
- package/dist/agent-farm/db/index.d.ts +41 -0
- package/dist/agent-farm/db/index.d.ts.map +1 -0
- package/dist/agent-farm/db/index.js +168 -0
- package/dist/agent-farm/db/index.js.map +1 -0
- package/dist/agent-farm/db/migrate.d.ts +15 -0
- package/dist/agent-farm/db/migrate.d.ts.map +1 -0
- package/dist/agent-farm/db/migrate.js +137 -0
- package/dist/agent-farm/db/migrate.js.map +1 -0
- package/dist/agent-farm/db/schema.d.ts +16 -0
- package/dist/agent-farm/db/schema.d.ts.map +1 -0
- package/dist/agent-farm/db/schema.js +103 -0
- package/dist/agent-farm/db/schema.js.map +1 -0
- package/dist/agent-farm/db/types.d.ts +87 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -0
- package/dist/agent-farm/db/types.js +65 -0
- package/dist/agent-farm/db/types.js.map +1 -0
- package/dist/agent-farm/index.d.ts +7 -0
- package/dist/agent-farm/index.d.ts.map +1 -0
- package/dist/agent-farm/index.js +373 -0
- package/dist/agent-farm/index.js.map +1 -0
- package/dist/agent-farm/servers/annotate-server.d.ts +9 -0
- package/dist/agent-farm/servers/annotate-server.d.ts.map +1 -0
- package/dist/agent-farm/servers/annotate-server.js +136 -0
- package/dist/agent-farm/servers/annotate-server.js.map +1 -0
- package/dist/agent-farm/servers/dashboard-server.d.ts +9 -0
- package/dist/agent-farm/servers/dashboard-server.d.ts.map +1 -0
- package/dist/agent-farm/servers/dashboard-server.js +939 -0
- package/dist/agent-farm/servers/dashboard-server.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.d.ts +9 -0
- package/dist/agent-farm/servers/tower-server.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-server.js +463 -0
- package/dist/agent-farm/servers/tower-server.js.map +1 -0
- package/dist/agent-farm/state.d.ts +93 -0
- package/dist/agent-farm/state.d.ts.map +1 -0
- package/dist/agent-farm/state.js +253 -0
- package/dist/agent-farm/state.js.map +1 -0
- package/dist/agent-farm/tutorial/index.d.ts +8 -0
- package/dist/agent-farm/tutorial/index.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/index.js +8 -0
- package/dist/agent-farm/tutorial/index.js.map +1 -0
- package/dist/agent-farm/tutorial/prompts.d.ts +57 -0
- package/dist/agent-farm/tutorial/prompts.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/prompts.js +147 -0
- package/dist/agent-farm/tutorial/prompts.js.map +1 -0
- package/dist/agent-farm/tutorial/runner.d.ts +52 -0
- package/dist/agent-farm/tutorial/runner.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/runner.js +204 -0
- package/dist/agent-farm/tutorial/runner.js.map +1 -0
- package/dist/agent-farm/tutorial/state.d.ts +26 -0
- package/dist/agent-farm/tutorial/state.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/state.js +89 -0
- package/dist/agent-farm/tutorial/state.js.map +1 -0
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts +7 -0
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/steps/first-spec.js +136 -0
- package/dist/agent-farm/tutorial/steps/first-spec.js.map +1 -0
- package/dist/agent-farm/tutorial/steps/implementation.d.ts +7 -0
- package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/steps/implementation.js +76 -0
- package/dist/agent-farm/tutorial/steps/implementation.js.map +1 -0
- package/dist/agent-farm/tutorial/steps/index.d.ts +10 -0
- package/dist/agent-farm/tutorial/steps/index.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/steps/index.js +10 -0
- package/dist/agent-farm/tutorial/steps/index.js.map +1 -0
- package/dist/agent-farm/tutorial/steps/planning.d.ts +7 -0
- package/dist/agent-farm/tutorial/steps/planning.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/steps/planning.js +143 -0
- package/dist/agent-farm/tutorial/steps/planning.js.map +1 -0
- package/dist/agent-farm/tutorial/steps/review.d.ts +7 -0
- package/dist/agent-farm/tutorial/steps/review.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/steps/review.js +78 -0
- package/dist/agent-farm/tutorial/steps/review.js.map +1 -0
- package/dist/agent-farm/tutorial/steps/setup.d.ts +7 -0
- package/dist/agent-farm/tutorial/steps/setup.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/steps/setup.js +126 -0
- package/dist/agent-farm/tutorial/steps/setup.js.map +1 -0
- package/dist/agent-farm/tutorial/steps/welcome.d.ts +7 -0
- package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +1 -0
- package/dist/agent-farm/tutorial/steps/welcome.js +50 -0
- package/dist/agent-farm/tutorial/steps/welcome.js.map +1 -0
- package/dist/agent-farm/types.d.ts +131 -0
- package/dist/agent-farm/types.d.ts.map +1 -0
- package/dist/agent-farm/types.js +5 -0
- package/dist/agent-farm/types.js.map +1 -0
- package/dist/agent-farm/utils/config.d.ts +27 -0
- package/dist/agent-farm/utils/config.d.ts.map +1 -0
- package/dist/agent-farm/utils/config.js +242 -0
- package/dist/agent-farm/utils/config.js.map +1 -0
- package/dist/agent-farm/utils/deps.d.ts +51 -0
- package/dist/agent-farm/utils/deps.d.ts.map +1 -0
- package/dist/agent-farm/utils/deps.js +194 -0
- package/dist/agent-farm/utils/deps.js.map +1 -0
- package/dist/agent-farm/utils/index.d.ts +6 -0
- package/dist/agent-farm/utils/index.d.ts.map +1 -0
- package/dist/agent-farm/utils/index.js +6 -0
- package/dist/agent-farm/utils/index.js.map +1 -0
- package/dist/agent-farm/utils/logger.d.ts +31 -0
- package/dist/agent-farm/utils/logger.d.ts.map +1 -0
- package/dist/agent-farm/utils/logger.js +58 -0
- package/dist/agent-farm/utils/logger.js.map +1 -0
- package/dist/agent-farm/utils/orphan-handler.d.ts +27 -0
- package/dist/agent-farm/utils/orphan-handler.d.ts.map +1 -0
- package/dist/agent-farm/utils/orphan-handler.js +127 -0
- package/dist/agent-farm/utils/orphan-handler.js.map +1 -0
- package/dist/agent-farm/utils/port-registry.d.ts +58 -0
- package/dist/agent-farm/utils/port-registry.d.ts.map +1 -0
- package/dist/agent-farm/utils/port-registry.js +149 -0
- package/dist/agent-farm/utils/port-registry.js.map +1 -0
- package/dist/agent-farm/utils/shell.d.ts +45 -0
- package/dist/agent-farm/utils/shell.d.ts.map +1 -0
- package/dist/agent-farm/utils/shell.js +120 -0
- package/dist/agent-farm/utils/shell.js.map +1 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +160 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/adopt.d.ts +12 -0
- package/dist/commands/adopt.d.ts.map +1 -0
- package/dist/commands/adopt.js +178 -0
- package/dist/commands/adopt.js.map +1 -0
- package/dist/commands/consult/index.d.ts +17 -0
- package/dist/commands/consult/index.d.ts.map +1 -0
- package/dist/commands/consult/index.js +405 -0
- package/dist/commands/consult/index.js.map +1 -0
- package/dist/commands/doctor.d.ts +10 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +346 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +12 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +167 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/tower.d.ts +16 -0
- package/dist/commands/tower.d.ts.map +1 -0
- package/dist/commands/tower.js +21 -0
- package/dist/commands/tower.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +137 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/lib/templates.d.ts +57 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +205 -0
- package/dist/lib/templates.js.map +1 -0
- package/package.json +55 -0
- package/templates/AGENTS.md +49 -0
- package/templates/CLAUDE.md +47 -0
- package/templates/DEPENDENCIES.md +344 -0
- package/templates/agents/architecture-documenter.md +189 -0
- package/templates/agents/codev-updater.md +276 -0
- package/templates/agents/spider-protocol-updater.md +118 -0
- package/templates/annotate.html +903 -0
- package/templates/bin/agent-farm +18 -0
- package/templates/bin/annotate-server.js +140 -0
- package/templates/bin/codev-doctor +335 -0
- package/templates/builders.md +30 -0
- package/templates/config.json +7 -0
- package/templates/dashboard-split.html +1679 -0
- package/templates/dashboard.html +149 -0
- package/templates/plans/.gitkeep +0 -0
- package/templates/protocols/experiment/protocol.md +229 -0
- package/templates/protocols/experiment/templates/notes.md +97 -0
- package/templates/protocols/maintain/protocol.md +235 -0
- package/templates/protocols/spider/protocol.md +639 -0
- package/templates/protocols/spider/templates/plan.md +169 -0
- package/templates/protocols/spider/templates/review.md +207 -0
- package/templates/protocols/spider/templates/spec.md +140 -0
- package/templates/protocols/spider-solo/protocol.md +619 -0
- package/templates/protocols/spider-solo/templates/plan.md +169 -0
- package/templates/protocols/spider-solo/templates/review.md +207 -0
- package/templates/protocols/spider-solo/templates/spec.md +140 -0
- package/templates/protocols/tick/protocol.md +250 -0
- package/templates/protocols/tick/templates/plan.md +67 -0
- package/templates/protocols/tick/templates/review.md +90 -0
- package/templates/protocols/tick/templates/spec.md +61 -0
- package/templates/reviews/.gitkeep +0 -0
- package/templates/roles/architect.md +230 -0
- package/templates/roles/builder.md +175 -0
- package/templates/roles/consultant.md +27 -0
- package/templates/specs/.gitkeep +0 -0
- package/templates/templates/projectlist.md +129 -0
- package/templates/tower.html +1032 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/send.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn command - creates a new builder in various modes
|
|
3
|
+
*
|
|
4
|
+
* Modes:
|
|
5
|
+
* - spec: --project/-p Spawn for a spec file (existing behavior)
|
|
6
|
+
* - task: --task Spawn with an ad-hoc task description
|
|
7
|
+
* - protocol: --protocol Spawn to run a protocol (cleanup, experiment, etc.)
|
|
8
|
+
* - shell: --shell Bare Claude session (no prompt, no worktree)
|
|
9
|
+
*/
|
|
10
|
+
import type { SpawnOptions } from '../types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Spawn a new builder
|
|
13
|
+
*/
|
|
14
|
+
export declare function spawn(options: SpawnOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAgC,MAAM,aAAa,CAAC;AA0qB9E;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBhE"}
|
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn command - creates a new builder in various modes
|
|
3
|
+
*
|
|
4
|
+
* Modes:
|
|
5
|
+
* - spec: --project/-p Spawn for a spec file (existing behavior)
|
|
6
|
+
* - task: --task Spawn with an ad-hoc task description
|
|
7
|
+
* - protocol: --protocol Spawn to run a protocol (cleanup, experiment, etc.)
|
|
8
|
+
* - shell: --shell Bare Claude session (no prompt, no worktree)
|
|
9
|
+
*/
|
|
10
|
+
import { resolve, basename } from 'node:path';
|
|
11
|
+
import { existsSync, readFileSync, writeFileSync, chmodSync, readdirSync } from 'node:fs';
|
|
12
|
+
import { readdir } from 'node:fs/promises';
|
|
13
|
+
import { getConfig, ensureDirectories, getResolvedCommands } from '../utils/index.js';
|
|
14
|
+
import { logger, fatal } from '../utils/logger.js';
|
|
15
|
+
import { run, spawnDetached, commandExists, findAvailablePort } from '../utils/shell.js';
|
|
16
|
+
import { loadState, upsertBuilder } from '../state.js';
|
|
17
|
+
/**
|
|
18
|
+
* Generate a short 4-character base64-encoded ID
|
|
19
|
+
* Uses URL-safe base64 (a-z, A-Z, 0-9, -, _) for filesystem-safe IDs
|
|
20
|
+
*/
|
|
21
|
+
function generateShortId() {
|
|
22
|
+
// Generate random 24-bit number and base64 encode to 4 chars
|
|
23
|
+
const num = Math.floor(Math.random() * 0xFFFFFF);
|
|
24
|
+
const bytes = new Uint8Array([num >> 16, (num >> 8) & 0xFF, num & 0xFF]);
|
|
25
|
+
return btoa(String.fromCharCode(...bytes))
|
|
26
|
+
.replace(/\+/g, '-')
|
|
27
|
+
.replace(/\//g, '_')
|
|
28
|
+
.replace(/=/g, '')
|
|
29
|
+
.substring(0, 4);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validate spawn options - ensure exactly one mode is selected
|
|
33
|
+
*/
|
|
34
|
+
function validateSpawnOptions(options) {
|
|
35
|
+
const modes = [
|
|
36
|
+
options.project,
|
|
37
|
+
options.task,
|
|
38
|
+
options.protocol,
|
|
39
|
+
options.shell,
|
|
40
|
+
options.worktree,
|
|
41
|
+
].filter(Boolean);
|
|
42
|
+
if (modes.length === 0) {
|
|
43
|
+
fatal('Must specify one of: --project (-p), --task, --protocol, --shell, --worktree\n\nRun "af spawn --help" for examples.');
|
|
44
|
+
}
|
|
45
|
+
if (modes.length > 1) {
|
|
46
|
+
fatal('Flags --project, --task, --protocol, --shell, --worktree are mutually exclusive');
|
|
47
|
+
}
|
|
48
|
+
if (options.files && !options.task) {
|
|
49
|
+
fatal('--files requires --task');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Determine the spawn mode from options
|
|
54
|
+
*/
|
|
55
|
+
function getSpawnMode(options) {
|
|
56
|
+
if (options.project)
|
|
57
|
+
return 'spec';
|
|
58
|
+
if (options.task)
|
|
59
|
+
return 'task';
|
|
60
|
+
if (options.protocol)
|
|
61
|
+
return 'protocol';
|
|
62
|
+
if (options.shell)
|
|
63
|
+
return 'shell';
|
|
64
|
+
if (options.worktree)
|
|
65
|
+
return 'worktree';
|
|
66
|
+
throw new Error('No mode specified');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Find and load a role file - tries local codev/roles/ first, falls back to bundled
|
|
70
|
+
*/
|
|
71
|
+
function loadRolePrompt(config, roleName) {
|
|
72
|
+
// Try local project first
|
|
73
|
+
const localPath = resolve(config.codevDir, 'roles', `${roleName}.md`);
|
|
74
|
+
if (existsSync(localPath)) {
|
|
75
|
+
return { content: readFileSync(localPath, 'utf-8'), source: 'local' };
|
|
76
|
+
}
|
|
77
|
+
// Fall back to bundled
|
|
78
|
+
const bundledPath = resolve(config.bundledRolesDir, `${roleName}.md`);
|
|
79
|
+
if (existsSync(bundledPath)) {
|
|
80
|
+
return { content: readFileSync(bundledPath, 'utf-8'), source: 'bundled' };
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Load a protocol-specific role if it exists
|
|
86
|
+
*/
|
|
87
|
+
function loadProtocolRole(config, protocolName) {
|
|
88
|
+
const protocolRolePath = resolve(config.codevDir, 'protocols', protocolName, 'role.md');
|
|
89
|
+
if (existsSync(protocolRolePath)) {
|
|
90
|
+
return { content: readFileSync(protocolRolePath, 'utf-8'), source: 'protocol' };
|
|
91
|
+
}
|
|
92
|
+
// Fall back to builder role
|
|
93
|
+
return loadRolePrompt(config, 'builder');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Find a spec file by project ID
|
|
97
|
+
*/
|
|
98
|
+
async function findSpecFile(codevDir, projectId) {
|
|
99
|
+
const specsDir = resolve(codevDir, 'specs');
|
|
100
|
+
if (!existsSync(specsDir)) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const files = await readdir(specsDir);
|
|
104
|
+
// Try exact match first (e.g., "0001-feature.md")
|
|
105
|
+
for (const file of files) {
|
|
106
|
+
if (file.startsWith(projectId) && file.endsWith('.md')) {
|
|
107
|
+
return resolve(specsDir, file);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Try partial match (e.g., just "0001")
|
|
111
|
+
for (const file of files) {
|
|
112
|
+
if (file.startsWith(projectId + '-') && file.endsWith('.md')) {
|
|
113
|
+
return resolve(specsDir, file);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Validate that a protocol exists
|
|
120
|
+
*/
|
|
121
|
+
function validateProtocol(config, protocolName) {
|
|
122
|
+
const protocolDir = resolve(config.codevDir, 'protocols', protocolName);
|
|
123
|
+
const protocolFile = resolve(protocolDir, 'protocol.md');
|
|
124
|
+
if (!existsSync(protocolDir)) {
|
|
125
|
+
// List available protocols
|
|
126
|
+
const protocolsDir = resolve(config.codevDir, 'protocols');
|
|
127
|
+
let available = '';
|
|
128
|
+
if (existsSync(protocolsDir)) {
|
|
129
|
+
const dirs = readdirSync(protocolsDir, { withFileTypes: true })
|
|
130
|
+
.filter((d) => d.isDirectory())
|
|
131
|
+
.map((d) => d.name);
|
|
132
|
+
if (dirs.length > 0) {
|
|
133
|
+
available = `\n\nAvailable protocols: ${dirs.join(', ')}`;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
fatal(`Protocol not found: ${protocolName}${available}`);
|
|
137
|
+
}
|
|
138
|
+
if (!existsSync(protocolFile)) {
|
|
139
|
+
fatal(`Protocol ${protocolName} exists but has no protocol.md file`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check for required dependencies
|
|
144
|
+
*/
|
|
145
|
+
async function checkDependencies() {
|
|
146
|
+
if (!(await commandExists('git'))) {
|
|
147
|
+
fatal('git not found');
|
|
148
|
+
}
|
|
149
|
+
if (!(await commandExists('ttyd'))) {
|
|
150
|
+
fatal('ttyd not found. Install with: brew install ttyd');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Find an available port, avoiding ports already in use by other builders
|
|
155
|
+
*/
|
|
156
|
+
async function findFreePort(config) {
|
|
157
|
+
const state = loadState();
|
|
158
|
+
const usedPorts = new Set();
|
|
159
|
+
for (const b of state.builders || []) {
|
|
160
|
+
if (b.port)
|
|
161
|
+
usedPorts.add(b.port);
|
|
162
|
+
}
|
|
163
|
+
let port = config.builderPortRange[0];
|
|
164
|
+
while (usedPorts.has(port)) {
|
|
165
|
+
port++;
|
|
166
|
+
}
|
|
167
|
+
return findAvailablePort(port);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Create git branch and worktree
|
|
171
|
+
*/
|
|
172
|
+
async function createWorktree(config, branchName, worktreePath) {
|
|
173
|
+
logger.info('Creating branch...');
|
|
174
|
+
try {
|
|
175
|
+
await run(`git branch ${branchName}`, { cwd: config.projectRoot });
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
// Branch might already exist, that's OK
|
|
179
|
+
logger.debug(`Branch creation: ${error}`);
|
|
180
|
+
}
|
|
181
|
+
logger.info('Creating worktree...');
|
|
182
|
+
try {
|
|
183
|
+
await run(`git worktree add "${worktreePath}" ${branchName}`, { cwd: config.projectRoot });
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
fatal(`Failed to create worktree: ${error}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Start tmux session and ttyd for a builder
|
|
191
|
+
*/
|
|
192
|
+
async function startBuilderSession(config, builderId, worktreePath, baseCmd, prompt, roleContent, roleSource) {
|
|
193
|
+
const port = await findFreePort(config);
|
|
194
|
+
const sessionName = `builder-${builderId}`;
|
|
195
|
+
logger.info('Creating tmux session...');
|
|
196
|
+
// Write initial prompt to a file for reference
|
|
197
|
+
const promptFile = resolve(worktreePath, '.builder-prompt.txt');
|
|
198
|
+
writeFileSync(promptFile, prompt);
|
|
199
|
+
// Build the start script with role if provided
|
|
200
|
+
const scriptPath = resolve(worktreePath, '.builder-start.sh');
|
|
201
|
+
let scriptContent;
|
|
202
|
+
if (roleContent) {
|
|
203
|
+
// Write role to a file and use $(cat) to avoid shell escaping issues
|
|
204
|
+
// Pass the initial prompt via stdin (file redirection) instead of command argument
|
|
205
|
+
const roleFile = resolve(worktreePath, '.builder-role.md');
|
|
206
|
+
writeFileSync(roleFile, roleContent);
|
|
207
|
+
logger.info(`Loaded role (${roleSource})`);
|
|
208
|
+
scriptContent = `#!/bin/bash
|
|
209
|
+
exec ${baseCmd} --append-system-prompt "$(cat '${roleFile}')" < '${promptFile}'
|
|
210
|
+
`;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
scriptContent = `#!/bin/bash
|
|
214
|
+
exec ${baseCmd} < '${promptFile}'
|
|
215
|
+
`;
|
|
216
|
+
}
|
|
217
|
+
writeFileSync(scriptPath, scriptContent);
|
|
218
|
+
chmodSync(scriptPath, '755');
|
|
219
|
+
// Create tmux session running the script
|
|
220
|
+
await run(`tmux new-session -d -s "${sessionName}" -x 200 -y 50 -c "${worktreePath}" "${scriptPath}"`);
|
|
221
|
+
// Enable mouse scrolling in tmux
|
|
222
|
+
await run('tmux set -g mouse on');
|
|
223
|
+
await run('tmux set -g set-clipboard on');
|
|
224
|
+
await run('tmux set -g allow-passthrough on');
|
|
225
|
+
// Copy selection to clipboard when mouse is released (pbcopy for macOS)
|
|
226
|
+
await run('tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"');
|
|
227
|
+
await run('tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"');
|
|
228
|
+
// Start ttyd connecting to the tmux session
|
|
229
|
+
logger.info('Starting builder terminal...');
|
|
230
|
+
const customIndexPath = resolve(config.templatesDir, 'ttyd-index.html');
|
|
231
|
+
const ttydArgs = [
|
|
232
|
+
'-W',
|
|
233
|
+
'-p', String(port),
|
|
234
|
+
'-t', 'theme={"background":"#000000"}',
|
|
235
|
+
'-t', 'rightClickSelectsWord=true', // Enable word selection on right-click for better UX
|
|
236
|
+
];
|
|
237
|
+
if (existsSync(customIndexPath)) {
|
|
238
|
+
ttydArgs.push('-I', customIndexPath);
|
|
239
|
+
logger.info('Using custom terminal with file click support');
|
|
240
|
+
}
|
|
241
|
+
ttydArgs.push('tmux', 'attach-session', '-t', sessionName);
|
|
242
|
+
const ttydProcess = spawnDetached('ttyd', ttydArgs, {
|
|
243
|
+
cwd: worktreePath,
|
|
244
|
+
});
|
|
245
|
+
if (!ttydProcess.pid) {
|
|
246
|
+
fatal('Failed to start ttyd process for builder');
|
|
247
|
+
}
|
|
248
|
+
return { port, pid: ttydProcess.pid, sessionName };
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Start a shell session (no worktree, just tmux + ttyd)
|
|
252
|
+
*/
|
|
253
|
+
async function startShellSession(config, shellId, baseCmd) {
|
|
254
|
+
const port = await findFreePort(config);
|
|
255
|
+
const sessionName = `shell-${shellId}`;
|
|
256
|
+
logger.info('Creating tmux session...');
|
|
257
|
+
// Shell mode: just launch Claude with no prompt
|
|
258
|
+
await run(`tmux new-session -d -s "${sessionName}" -x 200 -y 50 -c "${config.projectRoot}" "${baseCmd}"`);
|
|
259
|
+
// Enable mouse scrolling in tmux
|
|
260
|
+
await run('tmux set -g mouse on');
|
|
261
|
+
await run('tmux set -g set-clipboard on');
|
|
262
|
+
await run('tmux set -g allow-passthrough on');
|
|
263
|
+
// Copy selection to clipboard when mouse is released (pbcopy for macOS)
|
|
264
|
+
await run('tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"');
|
|
265
|
+
await run('tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"');
|
|
266
|
+
// Start ttyd
|
|
267
|
+
logger.info('Starting shell terminal...');
|
|
268
|
+
const customIndexPath = resolve(config.templatesDir, 'ttyd-index.html');
|
|
269
|
+
const ttydArgs = [
|
|
270
|
+
'-W',
|
|
271
|
+
'-p', String(port),
|
|
272
|
+
'-t', 'theme={"background":"#000000"}',
|
|
273
|
+
'-t', 'rightClickSelectsWord=true', // Enable word selection on right-click for better UX
|
|
274
|
+
];
|
|
275
|
+
if (existsSync(customIndexPath)) {
|
|
276
|
+
ttydArgs.push('-I', customIndexPath);
|
|
277
|
+
}
|
|
278
|
+
ttydArgs.push('tmux', 'attach-session', '-t', sessionName);
|
|
279
|
+
const ttydProcess = spawnDetached('ttyd', ttydArgs, {
|
|
280
|
+
cwd: config.projectRoot,
|
|
281
|
+
});
|
|
282
|
+
if (!ttydProcess.pid) {
|
|
283
|
+
fatal('Failed to start ttyd process for shell');
|
|
284
|
+
}
|
|
285
|
+
return { port, pid: ttydProcess.pid, sessionName };
|
|
286
|
+
}
|
|
287
|
+
// =============================================================================
|
|
288
|
+
// Mode-specific spawn implementations
|
|
289
|
+
// =============================================================================
|
|
290
|
+
/**
|
|
291
|
+
* Spawn builder for a spec (existing behavior)
|
|
292
|
+
*/
|
|
293
|
+
async function spawnSpec(options, config) {
|
|
294
|
+
const projectId = options.project;
|
|
295
|
+
const specFile = await findSpecFile(config.codevDir, projectId);
|
|
296
|
+
if (!specFile) {
|
|
297
|
+
fatal(`Spec not found for project: ${projectId}`);
|
|
298
|
+
}
|
|
299
|
+
const specName = basename(specFile, '.md');
|
|
300
|
+
const builderId = projectId;
|
|
301
|
+
const safeName = specName.toLowerCase().replace(/[^a-z0-9_-]/g, '-').replace(/-+/g, '-');
|
|
302
|
+
const branchName = `builder/${safeName}`;
|
|
303
|
+
const worktreePath = resolve(config.buildersDir, builderId);
|
|
304
|
+
// Check for corresponding plan file
|
|
305
|
+
const planFile = resolve(config.codevDir, 'plans', `${specName}.md`);
|
|
306
|
+
const hasPlan = existsSync(planFile);
|
|
307
|
+
logger.header(`Spawning Builder ${builderId} (spec)`);
|
|
308
|
+
logger.kv('Spec', specFile);
|
|
309
|
+
logger.kv('Branch', branchName);
|
|
310
|
+
logger.kv('Worktree', worktreePath);
|
|
311
|
+
await ensureDirectories(config);
|
|
312
|
+
await checkDependencies();
|
|
313
|
+
await createWorktree(config, branchName, worktreePath);
|
|
314
|
+
// Build the prompt
|
|
315
|
+
const specRelPath = `codev/specs/${specName}.md`;
|
|
316
|
+
const planRelPath = `codev/plans/${specName}.md`;
|
|
317
|
+
let initialPrompt = `Implement the feature specified in ${specRelPath}.`;
|
|
318
|
+
if (hasPlan) {
|
|
319
|
+
initialPrompt += ` Follow the implementation plan in ${planRelPath}.`;
|
|
320
|
+
}
|
|
321
|
+
initialPrompt += ` Start by reading the spec${hasPlan ? ' and plan' : ''}, then begin implementation.`;
|
|
322
|
+
const builderPrompt = `You are a Builder. Read codev/roles/builder.md for your full role definition. ${initialPrompt}`;
|
|
323
|
+
// Load role
|
|
324
|
+
const role = options.noRole ? null : loadRolePrompt(config, 'builder');
|
|
325
|
+
const commands = getResolvedCommands();
|
|
326
|
+
const { port, pid, sessionName } = await startBuilderSession(config, builderId, worktreePath, commands.builder, builderPrompt, role?.content ?? null, role?.source ?? null);
|
|
327
|
+
const builder = {
|
|
328
|
+
id: builderId,
|
|
329
|
+
name: specName,
|
|
330
|
+
port,
|
|
331
|
+
pid,
|
|
332
|
+
status: 'spawning',
|
|
333
|
+
phase: 'init',
|
|
334
|
+
worktree: worktreePath,
|
|
335
|
+
branch: branchName,
|
|
336
|
+
tmuxSession: sessionName,
|
|
337
|
+
type: 'spec',
|
|
338
|
+
};
|
|
339
|
+
upsertBuilder(builder);
|
|
340
|
+
logger.blank();
|
|
341
|
+
logger.success(`Builder ${builderId} spawned!`);
|
|
342
|
+
logger.kv('Terminal', `http://localhost:${port}`);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Spawn builder for an ad-hoc task
|
|
346
|
+
*/
|
|
347
|
+
async function spawnTask(options, config) {
|
|
348
|
+
const taskText = options.task;
|
|
349
|
+
const shortId = generateShortId();
|
|
350
|
+
const builderId = `task-${shortId}`;
|
|
351
|
+
const branchName = `builder/task-${shortId}`;
|
|
352
|
+
const worktreePath = resolve(config.buildersDir, builderId);
|
|
353
|
+
logger.header(`Spawning Builder ${builderId} (task)`);
|
|
354
|
+
logger.kv('Task', taskText.substring(0, 60) + (taskText.length > 60 ? '...' : ''));
|
|
355
|
+
logger.kv('Branch', branchName);
|
|
356
|
+
logger.kv('Worktree', worktreePath);
|
|
357
|
+
if (options.files && options.files.length > 0) {
|
|
358
|
+
logger.kv('Files', options.files.join(', '));
|
|
359
|
+
}
|
|
360
|
+
await ensureDirectories(config);
|
|
361
|
+
await checkDependencies();
|
|
362
|
+
await createWorktree(config, branchName, worktreePath);
|
|
363
|
+
// Build the prompt
|
|
364
|
+
let prompt = taskText;
|
|
365
|
+
if (options.files && options.files.length > 0) {
|
|
366
|
+
prompt += `\n\nRelevant files to consider:\n${options.files.map(f => `- ${f}`).join('\n')}`;
|
|
367
|
+
}
|
|
368
|
+
const builderPrompt = `You are a Builder. Read codev/roles/builder.md for your full role definition. ${prompt}`;
|
|
369
|
+
// Load role
|
|
370
|
+
const role = options.noRole ? null : loadRolePrompt(config, 'builder');
|
|
371
|
+
const commands = getResolvedCommands();
|
|
372
|
+
const { port, pid, sessionName } = await startBuilderSession(config, builderId, worktreePath, commands.builder, builderPrompt, role?.content ?? null, role?.source ?? null);
|
|
373
|
+
const builder = {
|
|
374
|
+
id: builderId,
|
|
375
|
+
name: `Task: ${taskText.substring(0, 30)}${taskText.length > 30 ? '...' : ''}`,
|
|
376
|
+
port,
|
|
377
|
+
pid,
|
|
378
|
+
status: 'spawning',
|
|
379
|
+
phase: 'init',
|
|
380
|
+
worktree: worktreePath,
|
|
381
|
+
branch: branchName,
|
|
382
|
+
tmuxSession: sessionName,
|
|
383
|
+
type: 'task',
|
|
384
|
+
taskText,
|
|
385
|
+
};
|
|
386
|
+
upsertBuilder(builder);
|
|
387
|
+
logger.blank();
|
|
388
|
+
logger.success(`Builder ${builderId} spawned!`);
|
|
389
|
+
logger.kv('Terminal', `http://localhost:${port}`);
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Spawn builder to run a protocol
|
|
393
|
+
*/
|
|
394
|
+
async function spawnProtocol(options, config) {
|
|
395
|
+
const protocolName = options.protocol;
|
|
396
|
+
validateProtocol(config, protocolName);
|
|
397
|
+
const shortId = generateShortId();
|
|
398
|
+
const builderId = `${protocolName}-${shortId}`;
|
|
399
|
+
const branchName = `builder/${protocolName}-${shortId}`;
|
|
400
|
+
const worktreePath = resolve(config.buildersDir, builderId);
|
|
401
|
+
logger.header(`Spawning Builder ${builderId} (protocol)`);
|
|
402
|
+
logger.kv('Protocol', protocolName);
|
|
403
|
+
logger.kv('Branch', branchName);
|
|
404
|
+
logger.kv('Worktree', worktreePath);
|
|
405
|
+
await ensureDirectories(config);
|
|
406
|
+
await checkDependencies();
|
|
407
|
+
await createWorktree(config, branchName, worktreePath);
|
|
408
|
+
// Build the prompt
|
|
409
|
+
const prompt = `You are running the ${protocolName} protocol. Start by reading codev/protocols/${protocolName}/protocol.md and follow its instructions.`;
|
|
410
|
+
// Load protocol-specific role or fall back to builder role
|
|
411
|
+
const role = options.noRole ? null : loadProtocolRole(config, protocolName);
|
|
412
|
+
const commands = getResolvedCommands();
|
|
413
|
+
const { port, pid, sessionName } = await startBuilderSession(config, builderId, worktreePath, commands.builder, prompt, role?.content ?? null, role?.source ?? null);
|
|
414
|
+
const builder = {
|
|
415
|
+
id: builderId,
|
|
416
|
+
name: `Protocol: ${protocolName}`,
|
|
417
|
+
port,
|
|
418
|
+
pid,
|
|
419
|
+
status: 'spawning',
|
|
420
|
+
phase: 'init',
|
|
421
|
+
worktree: worktreePath,
|
|
422
|
+
branch: branchName,
|
|
423
|
+
tmuxSession: sessionName,
|
|
424
|
+
type: 'protocol',
|
|
425
|
+
protocolName,
|
|
426
|
+
};
|
|
427
|
+
upsertBuilder(builder);
|
|
428
|
+
logger.blank();
|
|
429
|
+
logger.success(`Builder ${builderId} spawned!`);
|
|
430
|
+
logger.kv('Terminal', `http://localhost:${port}`);
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Spawn a bare shell session (no worktree, no prompt)
|
|
434
|
+
*/
|
|
435
|
+
async function spawnShell(options, config) {
|
|
436
|
+
const shortId = generateShortId();
|
|
437
|
+
const shellId = `shell-${shortId}`;
|
|
438
|
+
logger.header(`Spawning Shell ${shellId}`);
|
|
439
|
+
await ensureDirectories(config);
|
|
440
|
+
await checkDependencies();
|
|
441
|
+
const commands = getResolvedCommands();
|
|
442
|
+
const { port, pid, sessionName } = await startShellSession(config, shortId, commands.builder);
|
|
443
|
+
// Shell sessions are tracked as builders with type 'shell'
|
|
444
|
+
// They don't have worktrees or branches
|
|
445
|
+
const builder = {
|
|
446
|
+
id: shellId,
|
|
447
|
+
name: 'Shell session',
|
|
448
|
+
port,
|
|
449
|
+
pid,
|
|
450
|
+
status: 'spawning',
|
|
451
|
+
phase: 'interactive',
|
|
452
|
+
worktree: '',
|
|
453
|
+
branch: '',
|
|
454
|
+
tmuxSession: sessionName,
|
|
455
|
+
type: 'shell',
|
|
456
|
+
};
|
|
457
|
+
upsertBuilder(builder);
|
|
458
|
+
logger.blank();
|
|
459
|
+
logger.success(`Shell ${shellId} spawned!`);
|
|
460
|
+
logger.kv('Terminal', `http://localhost:${port}`);
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Spawn a worktree session (has worktree/branch, but no initial prompt)
|
|
464
|
+
* Use case: Small features without spec/plan, like quick fixes
|
|
465
|
+
*/
|
|
466
|
+
async function spawnWorktree(options, config) {
|
|
467
|
+
const shortId = generateShortId();
|
|
468
|
+
const builderId = `worktree-${shortId}`;
|
|
469
|
+
const branchName = `builder/worktree-${shortId}`;
|
|
470
|
+
const worktreePath = resolve(config.buildersDir, builderId);
|
|
471
|
+
logger.header(`Spawning Worktree ${builderId}`);
|
|
472
|
+
logger.kv('Branch', branchName);
|
|
473
|
+
logger.kv('Worktree', worktreePath);
|
|
474
|
+
await ensureDirectories(config);
|
|
475
|
+
await checkDependencies();
|
|
476
|
+
await createWorktree(config, branchName, worktreePath);
|
|
477
|
+
// Load builder role
|
|
478
|
+
const role = options.noRole ? null : loadRolePrompt(config, 'builder');
|
|
479
|
+
const commands = getResolvedCommands();
|
|
480
|
+
// Worktree mode: launch Claude with no prompt, but in the worktree directory
|
|
481
|
+
const port = await findFreePort(config);
|
|
482
|
+
const sessionName = `builder-${builderId}`;
|
|
483
|
+
logger.info('Creating tmux session...');
|
|
484
|
+
// Build launch script (with role if provided) to avoid shell escaping issues
|
|
485
|
+
const scriptPath = resolve(worktreePath, '.builder-start.sh');
|
|
486
|
+
let scriptContent;
|
|
487
|
+
if (role) {
|
|
488
|
+
const roleFile = resolve(worktreePath, '.builder-role.md');
|
|
489
|
+
writeFileSync(roleFile, role.content);
|
|
490
|
+
logger.info(`Loaded role (${role.source})`);
|
|
491
|
+
scriptContent = `#!/bin/bash
|
|
492
|
+
exec ${commands.builder} --append-system-prompt "$(cat '${roleFile}')"
|
|
493
|
+
`;
|
|
494
|
+
}
|
|
495
|
+
else {
|
|
496
|
+
scriptContent = `#!/bin/bash
|
|
497
|
+
exec ${commands.builder}
|
|
498
|
+
`;
|
|
499
|
+
}
|
|
500
|
+
writeFileSync(scriptPath, scriptContent, { mode: 0o755 });
|
|
501
|
+
// Create tmux session running the launch script
|
|
502
|
+
await run(`tmux new-session -d -s "${sessionName}" -x 200 -y 50 -c "${worktreePath}" "${scriptPath}"`);
|
|
503
|
+
// Enable mouse scrolling in tmux
|
|
504
|
+
await run('tmux set -g mouse on');
|
|
505
|
+
await run('tmux set -g set-clipboard on');
|
|
506
|
+
await run('tmux set -g allow-passthrough on');
|
|
507
|
+
// Copy selection to clipboard when mouse is released (pbcopy for macOS)
|
|
508
|
+
await run('tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"');
|
|
509
|
+
await run('tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"');
|
|
510
|
+
// Start ttyd
|
|
511
|
+
logger.info('Starting worktree terminal...');
|
|
512
|
+
const customIndexPath = resolve(config.codevDir, 'templates', 'ttyd-index.html');
|
|
513
|
+
const ttydArgs = [
|
|
514
|
+
'-W',
|
|
515
|
+
'-p', String(port),
|
|
516
|
+
'-t', 'theme={"background":"#000000"}',
|
|
517
|
+
'-t', 'rightClickSelectsWord=true', // Enable word selection on right-click for better UX
|
|
518
|
+
];
|
|
519
|
+
if (existsSync(customIndexPath)) {
|
|
520
|
+
ttydArgs.push('-I', customIndexPath);
|
|
521
|
+
logger.info('Using custom terminal with file click support');
|
|
522
|
+
}
|
|
523
|
+
ttydArgs.push('tmux', 'attach-session', '-t', sessionName);
|
|
524
|
+
const ttydProcess = spawnDetached('ttyd', ttydArgs, {
|
|
525
|
+
cwd: worktreePath,
|
|
526
|
+
});
|
|
527
|
+
if (!ttydProcess.pid) {
|
|
528
|
+
fatal('Failed to start ttyd process for worktree');
|
|
529
|
+
}
|
|
530
|
+
const builder = {
|
|
531
|
+
id: builderId,
|
|
532
|
+
name: 'Worktree session',
|
|
533
|
+
port,
|
|
534
|
+
pid: ttydProcess.pid,
|
|
535
|
+
status: 'spawning',
|
|
536
|
+
phase: 'interactive',
|
|
537
|
+
worktree: worktreePath,
|
|
538
|
+
branch: branchName,
|
|
539
|
+
tmuxSession: sessionName,
|
|
540
|
+
type: 'worktree',
|
|
541
|
+
};
|
|
542
|
+
upsertBuilder(builder);
|
|
543
|
+
logger.blank();
|
|
544
|
+
logger.success(`Worktree ${builderId} spawned!`);
|
|
545
|
+
logger.kv('Terminal', `http://localhost:${port}`);
|
|
546
|
+
}
|
|
547
|
+
// =============================================================================
|
|
548
|
+
// Main entry point
|
|
549
|
+
// =============================================================================
|
|
550
|
+
/**
|
|
551
|
+
* Spawn a new builder
|
|
552
|
+
*/
|
|
553
|
+
export async function spawn(options) {
|
|
554
|
+
validateSpawnOptions(options);
|
|
555
|
+
const config = getConfig();
|
|
556
|
+
const mode = getSpawnMode(options);
|
|
557
|
+
switch (mode) {
|
|
558
|
+
case 'spec':
|
|
559
|
+
await spawnSpec(options, config);
|
|
560
|
+
break;
|
|
561
|
+
case 'task':
|
|
562
|
+
await spawnTask(options, config);
|
|
563
|
+
break;
|
|
564
|
+
case 'protocol':
|
|
565
|
+
await spawnProtocol(options, config);
|
|
566
|
+
break;
|
|
567
|
+
case 'shell':
|
|
568
|
+
await spawnShell(options, config);
|
|
569
|
+
break;
|
|
570
|
+
case 'worktree':
|
|
571
|
+
await spawnWorktree(options, config);
|
|
572
|
+
break;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
//# sourceMappingURL=spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AACvG,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD;;;GAGG;AACH,SAAS,eAAe;IACtB,6DAA6D;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC;SACvC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,OAAqB;IACjD,MAAM,KAAK,GAAG;QACZ,OAAO,CAAC,OAAO;QACf,OAAO,CAAC,IAAI;QACZ,OAAO,CAAC,QAAQ;QAChB,OAAO,CAAC,KAAK;QACb,OAAO,CAAC,QAAQ;KACjB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,qHAAqH,CAAC,CAAC;IAC/H,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,iFAAiF,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACnC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAqB;IACzC,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;IACxC,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAClC,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;IACxC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,MAAc,EAAE,QAAgB;IACtD,0BAA0B;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxE,CAAC;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACtE,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,YAAoB;IAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACxF,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAClF,CAAC;IACD,4BAA4B;IAC5B,OAAO,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,SAAiB;IAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,kDAAkD;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,YAAoB;IAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEzD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,2BAA2B;QAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBAC5D,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;iBACtC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,SAAS,GAAG,4BAA4B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,CAAC;QACH,CAAC;QACD,KAAK,CAAC,uBAAuB,YAAY,GAAG,SAAS,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,YAAY,YAAY,qCAAqC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,eAAe,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,MAAc;IACxC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC;IACT,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,UAAkB,EAAE,YAAoB;IACpF,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,cAAc,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wCAAwC;QACxC,MAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,qBAAqB,YAAY,KAAK,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAc,EACd,SAAiB,EACjB,YAAoB,EACpB,OAAe,EACf,MAAc,EACd,WAA0B,EAC1B,UAAyB;IAEzB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,WAAW,SAAS,EAAE,CAAC;IAE3C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAExC,+CAA+C;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IAChE,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAElC,+CAA+C;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAC9D,IAAI,aAAqB,CAAC;IAE1B,IAAI,WAAW,EAAE,CAAC;QAChB,qEAAqE;QACrE,mFAAmF;QACnF,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC3D,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gBAAgB,UAAU,GAAG,CAAC,CAAC;QAC3C,aAAa,GAAG;OACb,OAAO,mCAAmC,QAAQ,UAAU,UAAU;CAC5E,CAAC;IACA,CAAC;SAAM,CAAC;QACN,aAAa,GAAG;OACb,OAAO,OAAO,UAAU;CAC9B,CAAC;IACA,CAAC;IAED,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACzC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE7B,yCAAyC;IACzC,MAAM,GAAG,CAAC,2BAA2B,WAAW,sBAAsB,YAAY,MAAM,UAAU,GAAG,CAAC,CAAC;IAEvG,iCAAiC;IACjC,MAAM,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAClC,MAAM,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC1C,MAAM,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAE9C,wEAAwE;IACxE,MAAM,GAAG,CAAC,yFAAyF,CAAC,CAAC;IACrG,MAAM,GAAG,CAAC,4FAA4F,CAAC,CAAC;IAExG,4CAA4C;IAC5C,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG;QACf,IAAI;QACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,4BAA4B,EAAG,qDAAqD;KAC3F,CAAC;IAEF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;QAClD,GAAG,EAAE,YAAY;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAC9B,MAAc,EACd,OAAe,EACf,OAAe;IAEf,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,SAAS,OAAO,EAAE,CAAC;IAEvC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAExC,gDAAgD;IAChD,MAAM,GAAG,CAAC,2BAA2B,WAAW,sBAAsB,MAAM,CAAC,WAAW,MAAM,OAAO,GAAG,CAAC,CAAC;IAE1G,iCAAiC;IACjC,MAAM,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAClC,MAAM,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC1C,MAAM,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAE9C,wEAAwE;IACxE,MAAM,GAAG,CAAC,yFAAyF,CAAC,CAAC;IACrG,MAAM,GAAG,CAAC,4FAA4F,CAAC,CAAC;IAExG,aAAa;IACb,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG;QACf,IAAI;QACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,4BAA4B,EAAG,qDAAqD;KAC3F,CAAC;IAEF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;QAClD,GAAG,EAAE,MAAM,CAAC,WAAW;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;AACrD,CAAC;AAED,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAEhF;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,OAAqB,EAAE,MAAc;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAQ,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,SAAS,CAAC;IAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,WAAW,QAAQ,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAE5D,oCAAoC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,CAAC,MAAM,CAAC,oBAAoB,SAAS,SAAS,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEpC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvD,mBAAmB;IACnB,MAAM,WAAW,GAAG,eAAe,QAAQ,KAAK,CAAC;IACjD,MAAM,WAAW,GAAG,eAAe,QAAQ,KAAK,CAAC;IACjD,IAAI,aAAa,GAAG,sCAAsC,WAAW,GAAG,CAAC;IACzE,IAAI,OAAO,EAAE,CAAC;QACZ,aAAa,IAAI,sCAAsC,WAAW,GAAG,CAAC;IACxE,CAAC;IACD,aAAa,IAAI,6BAA6B,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,8BAA8B,CAAC;IAEvG,MAAM,aAAa,GAAG,iFAAiF,aAAa,EAAE,CAAC;IAEvH,YAAY;IACZ,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,mBAAmB,CAC1D,MAAM,EACN,SAAS,EACT,YAAY,EACZ,QAAQ,CAAC,OAAO,EAChB,aAAa,EACb,IAAI,EAAE,OAAO,IAAI,IAAI,EACrB,IAAI,EAAE,MAAM,IAAI,IAAI,CACrB,CAAC;IAEF,MAAM,OAAO,GAAY;QACvB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,GAAG;QACH,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,MAAM;KACb,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,OAAqB,EAAE,MAAc;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAK,CAAC;IAC/B,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,QAAQ,OAAO,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,gBAAgB,OAAO,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,CAAC,MAAM,CAAC,oBAAoB,SAAS,SAAS,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEpC,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvD,mBAAmB;IACnB,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,oCAAoC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9F,CAAC;IAED,MAAM,aAAa,GAAG,iFAAiF,MAAM,EAAE,CAAC;IAEhH,YAAY;IACZ,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,mBAAmB,CAC1D,MAAM,EACN,SAAS,EACT,YAAY,EACZ,QAAQ,CAAC,OAAO,EAChB,aAAa,EACb,IAAI,EAAE,OAAO,IAAI,IAAI,EACrB,IAAI,EAAE,MAAM,IAAI,IAAI,CACrB,CAAC;IAEF,MAAM,OAAO,GAAY;QACvB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9E,IAAI;QACJ,GAAG;QACH,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,MAAM;QACZ,QAAQ;KACT,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,OAAqB,EAAE,MAAc;IAChE,MAAM,YAAY,GAAG,OAAO,CAAC,QAAS,CAAC;IACvC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,GAAG,YAAY,IAAI,OAAO,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,WAAW,YAAY,IAAI,OAAO,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,CAAC,MAAM,CAAC,oBAAoB,SAAS,aAAa,CAAC,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEpC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvD,mBAAmB;IACnB,MAAM,MAAM,GAAG,uBAAuB,YAAY,+CAA+C,YAAY,2CAA2C,CAAC;IAEzJ,2DAA2D;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,mBAAmB,CAC1D,MAAM,EACN,SAAS,EACT,YAAY,EACZ,QAAQ,CAAC,OAAO,EAChB,MAAM,EACN,IAAI,EAAE,OAAO,IAAI,IAAI,EACrB,IAAI,EAAE,MAAM,IAAI,IAAI,CACrB,CAAC;IAEF,MAAM,OAAO,GAAY;QACvB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,aAAa,YAAY,EAAE;QACjC,IAAI;QACJ,GAAG;QACH,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,YAAY;KACb,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,WAAW,SAAS,WAAW,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,OAAqB,EAAE,MAAc;IAC7D,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC;IAEnC,MAAM,CAAC,MAAM,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;IAE3C,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,iBAAiB,EAAE,CAAC;IAE1B,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CACxD,MAAM,EACN,OAAO,EACP,QAAQ,CAAC,OAAO,CACjB,CAAC;IAEF,2DAA2D;IAC3D,wCAAwC;IACxC,MAAM,OAAO,GAAY;QACvB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,eAAe;QACrB,IAAI;QACJ,GAAG;QACH,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,SAAS,OAAO,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,aAAa,CAAC,OAAqB,EAAE,MAAc;IAChE,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,YAAY,OAAO,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,oBAAoB,OAAO,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,CAAC,MAAM,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAEpC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAEvD,oBAAoB;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IAEvC,6EAA6E;IAC7E,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,WAAW,SAAS,EAAE,CAAC;IAE3C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAExC,6EAA6E;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAC9D,IAAI,aAAqB,CAAC;IAE1B,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC3D,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,aAAa,GAAG;OACb,QAAQ,CAAC,OAAO,mCAAmC,QAAQ;CACjE,CAAC;IACA,CAAC;SAAM,CAAC;QACN,aAAa,GAAG;OACb,QAAQ,CAAC,OAAO;CACtB,CAAC;IACA,CAAC;IAED,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1D,gDAAgD;IAChD,MAAM,GAAG,CAAC,2BAA2B,WAAW,sBAAsB,YAAY,MAAM,UAAU,GAAG,CAAC,CAAC;IAEvG,iCAAiC;IACjC,MAAM,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAClC,MAAM,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC1C,MAAM,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAE9C,wEAAwE;IACxE,MAAM,GAAG,CAAC,yFAAyF,CAAC,CAAC;IACrG,MAAM,GAAG,CAAC,4FAA4F,CAAC,CAAC;IAExG,aAAa;IACb,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG;QACf,IAAI;QACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,4BAA4B,EAAG,qDAAqD;KAC3F,CAAC;IAEF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC/D,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAE3D,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE;QAClD,GAAG,EAAE,YAAY;KAClB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,OAAO,GAAY;QACvB,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,kBAAkB;QACxB,IAAI;QACJ,GAAG,EAAE,WAAW,CAAC,GAAG;QACpB,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;KACjB,CAAC;IAEF,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,OAAO,CAAC,YAAY,SAAS,WAAW,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB;IAC/C,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEnC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,UAAU;YACb,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,OAAO;YACV,MAAM,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,UAAU;YACb,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM;IACV,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Start command - launches the architect dashboard
|
|
3
|
+
*/
|
|
4
|
+
import type { StartOptions } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Start the architect dashboard
|
|
7
|
+
*/
|
|
8
|
+
export declare function start(options?: StartOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/start.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AA2BhE;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0IrE"}
|