@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
package/bin/af.js
ADDED
package/bin/codev.js
ADDED
package/bin/consult.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Farm CLI wrapper
|
|
3
|
+
*
|
|
4
|
+
* This module re-exports the agent-farm CLI logic so it can be invoked
|
|
5
|
+
* programmatically from the main codev CLI.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Run agent-farm CLI with given arguments
|
|
9
|
+
*/
|
|
10
|
+
export declare function runAgentFarm(args: string[]): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/agent-farm/cli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmWhE"}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Farm CLI wrapper
|
|
3
|
+
*
|
|
4
|
+
* This module re-exports the agent-farm CLI logic so it can be invoked
|
|
5
|
+
* programmatically from the main codev CLI.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { start, stop } from './commands/index.js';
|
|
9
|
+
import { logger } from './utils/logger.js';
|
|
10
|
+
import { getResolvedCommands, setCliOverrides, initializePorts } from './utils/config.js';
|
|
11
|
+
/**
|
|
12
|
+
* Run agent-farm CLI with given arguments
|
|
13
|
+
*/
|
|
14
|
+
export async function runAgentFarm(args) {
|
|
15
|
+
const program = new Command();
|
|
16
|
+
program
|
|
17
|
+
.name('af')
|
|
18
|
+
.description('Agent Farm - Multi-agent orchestration for software development')
|
|
19
|
+
.version('1.0.0');
|
|
20
|
+
// Global options for command overrides
|
|
21
|
+
program
|
|
22
|
+
.option('--architect-cmd <command>', 'Override architect command')
|
|
23
|
+
.option('--builder-cmd <command>', 'Override builder command')
|
|
24
|
+
.option('--shell-cmd <command>', 'Override shell command');
|
|
25
|
+
// Process global options before commands
|
|
26
|
+
program.hook('preAction', (thisCommand) => {
|
|
27
|
+
const opts = thisCommand.opts();
|
|
28
|
+
const overrides = {};
|
|
29
|
+
if (opts.architectCmd)
|
|
30
|
+
overrides.architect = opts.architectCmd;
|
|
31
|
+
if (opts.builderCmd)
|
|
32
|
+
overrides.builder = opts.builderCmd;
|
|
33
|
+
if (opts.shellCmd)
|
|
34
|
+
overrides.shell = opts.shellCmd;
|
|
35
|
+
if (Object.keys(overrides).length > 0) {
|
|
36
|
+
setCliOverrides(overrides);
|
|
37
|
+
}
|
|
38
|
+
initializePorts();
|
|
39
|
+
});
|
|
40
|
+
// Start command
|
|
41
|
+
program
|
|
42
|
+
.command('start')
|
|
43
|
+
.description('Start the architect dashboard')
|
|
44
|
+
.option('-c, --cmd <command>', 'Command to run in architect terminal')
|
|
45
|
+
.option('-p, --port <port>', 'Port for architect terminal')
|
|
46
|
+
.option('--no-role', 'Skip loading architect role prompt')
|
|
47
|
+
.action(async (options) => {
|
|
48
|
+
try {
|
|
49
|
+
const commands = getResolvedCommands();
|
|
50
|
+
await start({
|
|
51
|
+
cmd: options.cmd || commands.architect,
|
|
52
|
+
port: options.port ? parseInt(options.port, 10) : undefined,
|
|
53
|
+
noRole: !options.role,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// Stop command
|
|
62
|
+
program
|
|
63
|
+
.command('stop')
|
|
64
|
+
.description('Stop all agent farm processes')
|
|
65
|
+
.action(async () => {
|
|
66
|
+
try {
|
|
67
|
+
await stop();
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
// Status command
|
|
75
|
+
program
|
|
76
|
+
.command('status')
|
|
77
|
+
.description('Show status of all agents')
|
|
78
|
+
.action(async () => {
|
|
79
|
+
const { status } = await import('./commands/status.js');
|
|
80
|
+
try {
|
|
81
|
+
await status();
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// Spawn command
|
|
89
|
+
program
|
|
90
|
+
.command('spawn')
|
|
91
|
+
.description('Spawn a new builder')
|
|
92
|
+
.option('-p, --project <id>', 'Spawn builder for a spec')
|
|
93
|
+
.option('--task <text>', 'Spawn builder with a task description')
|
|
94
|
+
.option('--protocol <name>', 'Spawn builder to run a protocol')
|
|
95
|
+
.option('--shell', 'Spawn a bare Claude session')
|
|
96
|
+
.option('--worktree', 'Spawn worktree session')
|
|
97
|
+
.option('--files <files>', 'Context files (comma-separated)')
|
|
98
|
+
.option('--no-role', 'Skip loading role prompt')
|
|
99
|
+
.action(async (options) => {
|
|
100
|
+
const { spawn } = await import('./commands/spawn.js');
|
|
101
|
+
try {
|
|
102
|
+
const files = options.files ? options.files.split(',').map((f) => f.trim()) : undefined;
|
|
103
|
+
await spawn({
|
|
104
|
+
project: options.project,
|
|
105
|
+
task: options.task,
|
|
106
|
+
protocol: options.protocol,
|
|
107
|
+
shell: options.shell,
|
|
108
|
+
worktree: options.worktree,
|
|
109
|
+
files,
|
|
110
|
+
noRole: !options.role,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// Util/Shell command
|
|
119
|
+
program
|
|
120
|
+
.command('util')
|
|
121
|
+
.alias('shell')
|
|
122
|
+
.description('Spawn a utility shell terminal')
|
|
123
|
+
.option('-n, --name <name>', 'Name for the shell terminal')
|
|
124
|
+
.action(async (options) => {
|
|
125
|
+
const { util } = await import('./commands/util.js');
|
|
126
|
+
try {
|
|
127
|
+
await util({ name: options.name });
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
// Open command
|
|
135
|
+
program
|
|
136
|
+
.command('open <file>')
|
|
137
|
+
.description('Open file annotation viewer')
|
|
138
|
+
.action(async (file) => {
|
|
139
|
+
const { open } = await import('./commands/open.js');
|
|
140
|
+
try {
|
|
141
|
+
await open({ file });
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
// Cleanup command
|
|
149
|
+
program
|
|
150
|
+
.command('cleanup')
|
|
151
|
+
.description('Clean up a builder worktree and branch')
|
|
152
|
+
.requiredOption('-p, --project <id>', 'Builder ID to clean up')
|
|
153
|
+
.option('-f, --force', 'Force cleanup even if branch not merged')
|
|
154
|
+
.action(async (options) => {
|
|
155
|
+
const { cleanup } = await import('./commands/cleanup.js');
|
|
156
|
+
try {
|
|
157
|
+
await cleanup({ project: options.project, force: options.force });
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
// Rename command
|
|
165
|
+
program
|
|
166
|
+
.command('rename <id> <name>')
|
|
167
|
+
.description('Rename a builder or utility terminal')
|
|
168
|
+
.action(async (id, name) => {
|
|
169
|
+
const { rename } = await import('./commands/rename.js');
|
|
170
|
+
try {
|
|
171
|
+
rename({ id, name });
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
// Send command
|
|
179
|
+
program
|
|
180
|
+
.command('send [builder] [message]')
|
|
181
|
+
.description('Send instructions to a running builder')
|
|
182
|
+
.option('--all', 'Send to all builders')
|
|
183
|
+
.option('--file <path>', 'Include file content in message')
|
|
184
|
+
.option('--interrupt', 'Send Ctrl+C first')
|
|
185
|
+
.option('--raw', 'Skip structured message formatting')
|
|
186
|
+
.option('--no-enter', 'Do not send Enter after message')
|
|
187
|
+
.action(async (builder, message, options) => {
|
|
188
|
+
const { send } = await import('./commands/send.js');
|
|
189
|
+
try {
|
|
190
|
+
await send({
|
|
191
|
+
builder,
|
|
192
|
+
message,
|
|
193
|
+
all: options.all,
|
|
194
|
+
file: options.file,
|
|
195
|
+
interrupt: options.interrupt,
|
|
196
|
+
raw: options.raw,
|
|
197
|
+
noEnter: !options.enter,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
202
|
+
process.exit(1);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
// Ports command
|
|
206
|
+
const portsCmd = program
|
|
207
|
+
.command('ports')
|
|
208
|
+
.description('Manage global port registry');
|
|
209
|
+
portsCmd
|
|
210
|
+
.command('list')
|
|
211
|
+
.description('List all port allocations')
|
|
212
|
+
.action(async () => {
|
|
213
|
+
const { listAllocations } = await import('./utils/port-registry.js');
|
|
214
|
+
const allocations = listAllocations();
|
|
215
|
+
if (allocations.length === 0) {
|
|
216
|
+
logger.info('No port allocations found.');
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
logger.header('Port Allocations');
|
|
220
|
+
for (const alloc of allocations) {
|
|
221
|
+
const status = alloc.exists ? '' : ' (missing)';
|
|
222
|
+
logger.info(`${alloc.basePort}-${alloc.basePort + 99}: ${alloc.path}${status}`);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
portsCmd
|
|
226
|
+
.command('cleanup')
|
|
227
|
+
.description('Remove stale port allocations')
|
|
228
|
+
.action(async () => {
|
|
229
|
+
const { cleanupStaleEntries } = await import('./utils/port-registry.js');
|
|
230
|
+
const result = cleanupStaleEntries();
|
|
231
|
+
if (result.removed.length === 0) {
|
|
232
|
+
logger.info('No stale entries found.');
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
logger.success(`Removed ${result.removed.length} stale entries:`);
|
|
236
|
+
for (const path of result.removed) {
|
|
237
|
+
logger.info(` - ${path}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
logger.info(`Remaining allocations: ${result.remaining}`);
|
|
241
|
+
});
|
|
242
|
+
// Tutorial command
|
|
243
|
+
program
|
|
244
|
+
.command('tutorial')
|
|
245
|
+
.description('Interactive tutorial for new users')
|
|
246
|
+
.option('--reset', 'Start tutorial fresh')
|
|
247
|
+
.option('--skip', 'Skip current step')
|
|
248
|
+
.option('--status', 'Show tutorial progress')
|
|
249
|
+
.action(async (options) => {
|
|
250
|
+
const { tutorial } = await import('./commands/tutorial.js');
|
|
251
|
+
try {
|
|
252
|
+
await tutorial(options);
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
256
|
+
process.exit(1);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
// Tower command (now also available at codev tower)
|
|
260
|
+
const towerCmd = program
|
|
261
|
+
.command('tower')
|
|
262
|
+
.description('Manage the tower dashboard');
|
|
263
|
+
towerCmd
|
|
264
|
+
.command('start')
|
|
265
|
+
.description('Start the tower dashboard')
|
|
266
|
+
.option('-p, --port <port>', 'Port to run on (default: 4100)')
|
|
267
|
+
.action(async (options) => {
|
|
268
|
+
const { towerStart } = await import('./commands/tower.js');
|
|
269
|
+
try {
|
|
270
|
+
await towerStart({
|
|
271
|
+
port: options.port ? parseInt(options.port, 10) : undefined,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
276
|
+
process.exit(1);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
towerCmd
|
|
280
|
+
.command('stop')
|
|
281
|
+
.description('Stop the tower dashboard')
|
|
282
|
+
.option('-p, --port <port>', 'Port to stop (default: 4100)')
|
|
283
|
+
.action(async (options) => {
|
|
284
|
+
const { towerStop } = await import('./commands/tower.js');
|
|
285
|
+
try {
|
|
286
|
+
await towerStop({
|
|
287
|
+
port: options.port ? parseInt(options.port, 10) : undefined,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
292
|
+
process.exit(1);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
// Database commands
|
|
296
|
+
const dbCmd = program
|
|
297
|
+
.command('db')
|
|
298
|
+
.description('Database debugging and maintenance');
|
|
299
|
+
dbCmd
|
|
300
|
+
.command('dump')
|
|
301
|
+
.description('Export all tables to JSON')
|
|
302
|
+
.option('--global', 'Dump global.db')
|
|
303
|
+
.action(async (options) => {
|
|
304
|
+
const { dbDump } = await import('./commands/db.js');
|
|
305
|
+
try {
|
|
306
|
+
dbDump({ global: options.global });
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
310
|
+
process.exit(1);
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
dbCmd
|
|
314
|
+
.command('query <sql>')
|
|
315
|
+
.description('Run a SELECT query')
|
|
316
|
+
.option('--global', 'Query global.db')
|
|
317
|
+
.action(async (sql, options) => {
|
|
318
|
+
const { dbQuery } = await import('./commands/db.js');
|
|
319
|
+
try {
|
|
320
|
+
dbQuery(sql, { global: options.global });
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
324
|
+
process.exit(1);
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
dbCmd
|
|
328
|
+
.command('reset')
|
|
329
|
+
.description('Delete database and start fresh')
|
|
330
|
+
.option('--global', 'Reset global.db')
|
|
331
|
+
.option('--force', 'Skip confirmation')
|
|
332
|
+
.action(async (options) => {
|
|
333
|
+
const { dbReset } = await import('./commands/db.js');
|
|
334
|
+
try {
|
|
335
|
+
dbReset({ global: options.global, force: options.force });
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
339
|
+
process.exit(1);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
dbCmd
|
|
343
|
+
.command('stats')
|
|
344
|
+
.description('Show database statistics')
|
|
345
|
+
.option('--global', 'Show stats for global.db')
|
|
346
|
+
.action(async (options) => {
|
|
347
|
+
const { dbStats } = await import('./commands/db.js');
|
|
348
|
+
try {
|
|
349
|
+
dbStats({ global: options.global });
|
|
350
|
+
}
|
|
351
|
+
catch (error) {
|
|
352
|
+
logger.error(error instanceof Error ? error.message : String(error));
|
|
353
|
+
process.exit(1);
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
// Parse with provided args
|
|
357
|
+
await program.parseAsync(['node', 'af', ...args]);
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/agent-farm/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleanup command - removes builder worktrees and branches
|
|
3
|
+
*/
|
|
4
|
+
export interface CleanupOptions {
|
|
5
|
+
project: string;
|
|
6
|
+
force?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Cleanup a builder's worktree and branch
|
|
10
|
+
*/
|
|
11
|
+
export declare function cleanup(options: CleanupOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA0CD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBpE"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cleanup command - removes builder worktrees and branches
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { rm } from 'node:fs/promises';
|
|
6
|
+
import { getConfig } from '../utils/index.js';
|
|
7
|
+
import { logger, fatal } from '../utils/logger.js';
|
|
8
|
+
import { run } from '../utils/shell.js';
|
|
9
|
+
import { loadState, removeBuilder } from '../state.js';
|
|
10
|
+
/**
|
|
11
|
+
* Check if a worktree has uncommitted changes
|
|
12
|
+
* Returns: dirty (has real changes), scaffoldOnly (only has .builder-* files)
|
|
13
|
+
*/
|
|
14
|
+
async function hasUncommittedChanges(worktreePath) {
|
|
15
|
+
if (!existsSync(worktreePath)) {
|
|
16
|
+
return { dirty: false, scaffoldOnly: false, details: '' };
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
// Check for uncommitted changes (staged and unstaged)
|
|
20
|
+
const result = await run('git status --porcelain', { cwd: worktreePath });
|
|
21
|
+
if (result.stdout.trim()) {
|
|
22
|
+
// Count changed files, excluding builder scaffold files
|
|
23
|
+
const scaffoldPattern = /^\?\? \.builder-/;
|
|
24
|
+
const allLines = result.stdout.trim().split('\n').filter(Boolean);
|
|
25
|
+
const nonScaffoldLines = allLines.filter((line) => !scaffoldPattern.test(line));
|
|
26
|
+
if (nonScaffoldLines.length > 0) {
|
|
27
|
+
return {
|
|
28
|
+
dirty: true,
|
|
29
|
+
scaffoldOnly: false,
|
|
30
|
+
details: `${nonScaffoldLines.length} uncommitted file(s)`,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Only scaffold files present
|
|
34
|
+
if (allLines.length > 0) {
|
|
35
|
+
return { dirty: false, scaffoldOnly: true, details: '' };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return { dirty: false, scaffoldOnly: false, details: '' };
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// If git status fails, assume dirty to be safe
|
|
42
|
+
return { dirty: true, scaffoldOnly: false, details: 'Unable to check status' };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Cleanup a builder's worktree and branch
|
|
47
|
+
*/
|
|
48
|
+
export async function cleanup(options) {
|
|
49
|
+
const config = getConfig();
|
|
50
|
+
const projectId = options.project;
|
|
51
|
+
// Load state to find the builder
|
|
52
|
+
const state = loadState();
|
|
53
|
+
const builder = state.builders.find((b) => b.id === projectId);
|
|
54
|
+
if (!builder) {
|
|
55
|
+
// Try to find by name pattern
|
|
56
|
+
const byName = state.builders.find((b) => b.name.includes(projectId));
|
|
57
|
+
if (byName) {
|
|
58
|
+
return cleanupBuilder(byName, options.force);
|
|
59
|
+
}
|
|
60
|
+
fatal(`Builder not found for project: ${projectId}`);
|
|
61
|
+
}
|
|
62
|
+
await cleanupBuilder(builder, options.force);
|
|
63
|
+
}
|
|
64
|
+
async function cleanupBuilder(builder, force) {
|
|
65
|
+
const config = getConfig();
|
|
66
|
+
const isShellMode = builder.type === 'shell';
|
|
67
|
+
logger.header(`Cleaning up ${isShellMode ? 'Shell' : 'Builder'} ${builder.id}`);
|
|
68
|
+
logger.kv('Name', builder.name);
|
|
69
|
+
if (!isShellMode) {
|
|
70
|
+
logger.kv('Worktree', builder.worktree);
|
|
71
|
+
logger.kv('Branch', builder.branch);
|
|
72
|
+
}
|
|
73
|
+
// Check for uncommitted changes before cleanup (skip for shell mode - no worktree)
|
|
74
|
+
let useForce = force || false;
|
|
75
|
+
if (!isShellMode) {
|
|
76
|
+
const { dirty, scaffoldOnly, details } = await hasUncommittedChanges(builder.worktree);
|
|
77
|
+
if (dirty && !force) {
|
|
78
|
+
logger.error(`Worktree has uncommitted changes: ${details}`);
|
|
79
|
+
logger.error('Use --force to delete anyway (WARNING: changes will be lost!)');
|
|
80
|
+
fatal('Cleanup aborted to prevent data loss.');
|
|
81
|
+
}
|
|
82
|
+
if (dirty && force) {
|
|
83
|
+
logger.warn(`Worktree has uncommitted changes: ${details}`);
|
|
84
|
+
logger.warn('Proceeding with --force (changes will be lost!)');
|
|
85
|
+
}
|
|
86
|
+
// Use force for git worktree if only scaffold files present (or explicit force)
|
|
87
|
+
useForce = force || scaffoldOnly;
|
|
88
|
+
}
|
|
89
|
+
// Kill ttyd process if running
|
|
90
|
+
if (builder.pid) {
|
|
91
|
+
logger.info('Stopping builder terminal...');
|
|
92
|
+
try {
|
|
93
|
+
process.kill(builder.pid, 'SIGTERM');
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Process may already be dead
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Kill tmux session if exists (use stored session name for correct shell/builder naming)
|
|
100
|
+
const sessionName = builder.tmuxSession || `builder-${builder.id}`;
|
|
101
|
+
try {
|
|
102
|
+
await run(`tmux kill-session -t "${sessionName}" 2>/dev/null`);
|
|
103
|
+
logger.info('Killed tmux session');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Session may not exist
|
|
107
|
+
}
|
|
108
|
+
// Remove worktree (skip for shell mode - no worktree created)
|
|
109
|
+
if (!isShellMode && existsSync(builder.worktree)) {
|
|
110
|
+
logger.info('Removing worktree...');
|
|
111
|
+
try {
|
|
112
|
+
await run(`git worktree remove "${builder.worktree}"${useForce ? ' --force' : ''}`, {
|
|
113
|
+
cwd: config.projectRoot,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (useForce) {
|
|
118
|
+
// Force remove directory if git worktree remove fails
|
|
119
|
+
await rm(builder.worktree, { recursive: true, force: true });
|
|
120
|
+
await run('git worktree prune', { cwd: config.projectRoot });
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
fatal(`Failed to remove worktree: ${error}. Use --force to override.`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Delete branch (skip for shell mode)
|
|
128
|
+
if (!isShellMode && builder.branch) {
|
|
129
|
+
logger.info('Deleting branch...');
|
|
130
|
+
try {
|
|
131
|
+
// Try -d first (safe delete, only if merged)
|
|
132
|
+
await run(`git branch -d "${builder.branch}"`, { cwd: config.projectRoot });
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
if (force) {
|
|
136
|
+
// Force delete with -D
|
|
137
|
+
try {
|
|
138
|
+
await run(`git branch -D "${builder.branch}"`, { cwd: config.projectRoot });
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
logger.warn(`Could not delete branch ${builder.branch}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
logger.warn(`Branch ${builder.branch} not fully merged. Use --force to delete anyway.`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Remove from state
|
|
150
|
+
removeBuilder(builder.id);
|
|
151
|
+
logger.blank();
|
|
152
|
+
logger.success(`Builder ${builder.id} cleaned up!`);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=cleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database CLI commands
|
|
3
|
+
*
|
|
4
|
+
* Commands for debugging and managing the SQLite databases:
|
|
5
|
+
* - af db dump: Export all tables to JSON
|
|
6
|
+
* - af db query: Run arbitrary SELECT queries
|
|
7
|
+
* - af db reset: Delete database and start fresh
|
|
8
|
+
*/
|
|
9
|
+
interface DumpOptions {
|
|
10
|
+
global?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface QueryOptions {
|
|
13
|
+
global?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface ResetOptions {
|
|
16
|
+
global?: boolean;
|
|
17
|
+
force?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Export all tables to JSON
|
|
21
|
+
*/
|
|
22
|
+
export declare function dbDump(options?: DumpOptions): void;
|
|
23
|
+
/**
|
|
24
|
+
* Run a SELECT query against the database
|
|
25
|
+
*/
|
|
26
|
+
export declare function dbQuery(sql: string, options?: QueryOptions): void;
|
|
27
|
+
/**
|
|
28
|
+
* Delete database and start fresh
|
|
29
|
+
*/
|
|
30
|
+
export declare function dbReset(options?: ResetOptions): void;
|
|
31
|
+
/**
|
|
32
|
+
* Show database statistics
|
|
33
|
+
*/
|
|
34
|
+
export declare function dbStats(options?: {
|
|
35
|
+
global?: boolean;
|
|
36
|
+
}): void;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,YAAY;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,WAAgB,GAAG,IAAI,CAiBtD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,IAAI,CAgBrE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,YAAiB,GAAG,IAAI,CAqDxD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAkChE"}
|