@cluesmith/codev 2.0.0-rc.7 → 2.0.0-rc.9
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/porch.js +6 -35
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +0 -14
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/kickoff.d.ts.map +1 -1
- package/dist/agent-farm/commands/kickoff.js +22 -86
- package/dist/agent-farm/commands/kickoff.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +30 -54
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +8 -50
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/servers/dashboard-server.js +0 -14
- package/dist/agent-farm/servers/dashboard-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +0 -10
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +0 -24
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -17
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +17 -1
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +2 -1
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/checks.d.ts +16 -29
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +90 -144
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/claude.d.ts +29 -0
- package/dist/commands/porch/claude.d.ts.map +1 -0
- package/dist/commands/porch/claude.js +79 -0
- package/dist/commands/porch/claude.js.map +1 -0
- package/dist/commands/porch/index.d.ts +21 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +429 -1121
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/plan.d.ts +60 -0
- package/dist/commands/porch/plan.d.ts.map +1 -0
- package/dist/commands/porch/plan.js +162 -0
- package/dist/commands/porch/plan.js.map +1 -0
- package/dist/commands/porch/prompts.d.ts +19 -0
- package/dist/commands/porch/prompts.d.ts.map +1 -0
- package/dist/commands/porch/prompts.js +259 -0
- package/dist/commands/porch/prompts.js.map +1 -0
- package/dist/commands/porch/protocol-loader.d.ts.map +1 -1
- package/dist/commands/porch/protocol-loader.js +9 -0
- package/dist/commands/porch/protocol-loader.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts +57 -0
- package/dist/commands/porch/protocol.d.ts.map +1 -0
- package/dist/commands/porch/protocol.js +250 -0
- package/dist/commands/porch/protocol.js.map +1 -0
- package/dist/commands/porch/repl.d.ts +33 -0
- package/dist/commands/porch/repl.d.ts.map +1 -0
- package/dist/commands/porch/repl.js +206 -0
- package/dist/commands/porch/repl.js.map +1 -0
- package/dist/commands/porch/run.d.ts +15 -0
- package/dist/commands/porch/run.d.ts.map +1 -0
- package/dist/commands/porch/run.js +551 -0
- package/dist/commands/porch/run.js.map +1 -0
- package/dist/commands/porch/signal-parser.d.ts +17 -3
- package/dist/commands/porch/signal-parser.d.ts.map +1 -1
- package/dist/commands/porch/signal-parser.js +71 -20
- package/dist/commands/porch/signal-parser.js.map +1 -1
- package/dist/commands/porch/signals.d.ts +35 -0
- package/dist/commands/porch/signals.d.ts.map +1 -0
- package/dist/commands/porch/signals.js +76 -0
- package/dist/commands/porch/signals.js.map +1 -0
- package/dist/commands/porch/state.d.ts +16 -114
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +62 -709
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +65 -173
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/porch/types.js +2 -1
- package/dist/commands/porch/types.js.map +1 -1
- package/dist/commands/porch2/checks.d.ts +29 -0
- package/dist/commands/porch2/checks.d.ts.map +1 -0
- package/dist/commands/porch2/checks.js +141 -0
- package/dist/commands/porch2/checks.js.map +1 -0
- package/dist/commands/porch2/index.d.ts +38 -0
- package/dist/commands/porch2/index.d.ts.map +1 -0
- package/dist/commands/porch2/index.js +483 -0
- package/dist/commands/porch2/index.js.map +1 -0
- package/dist/commands/porch2/plan.d.ts +70 -0
- package/dist/commands/porch2/plan.d.ts.map +1 -0
- package/dist/commands/porch2/plan.js +227 -0
- package/dist/commands/porch2/plan.js.map +1 -0
- package/dist/commands/porch2/protocol.d.ts +37 -0
- package/dist/commands/porch2/protocol.d.ts.map +1 -0
- package/dist/commands/porch2/protocol.js +183 -0
- package/dist/commands/porch2/protocol.js.map +1 -0
- package/dist/commands/porch2/state.d.ts +35 -0
- package/dist/commands/porch2/state.d.ts.map +1 -0
- package/dist/commands/porch2/state.js +124 -0
- package/dist/commands/porch2/state.js.map +1 -0
- package/dist/commands/porch2/types.d.ts +79 -0
- package/dist/commands/porch2/types.d.ts.map +1 -0
- package/dist/commands/porch2/types.js +8 -0
- package/dist/commands/porch2/types.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +19 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +24 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +78 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/package.json +3 -1
- package/skeleton/protocols/spider/prompts/specify.md +9 -2
- package/skeleton/protocols/spider/protocol.json +79 -153
- package/skeleton/protocols/spider/templates/plan.md +14 -0
- package/skeleton/roles/architect.md +40 -48
- package/skeleton/roles/builder.md +152 -29
- package/templates/dashboard/index.html +0 -27
- package/templates/dashboard/js/utils.js +0 -86
- package/skeleton/porch/protocols/bugfix.json +0 -85
- package/skeleton/porch/protocols/spider.json +0 -135
- package/skeleton/porch/protocols/tick.json +0 -76
- package/templates/dashboard/css/activity.css +0 -151
- package/templates/dashboard/js/activity.js +0 -112
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porch REPL - Interactive command loop while Claude runs
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* t / tail - Tail Claude's output file
|
|
6
|
+
* c / claude - Kill current Claude and invoke manually (interactive)
|
|
7
|
+
* a / approve - Approve current gate
|
|
8
|
+
* s / status - Show current status
|
|
9
|
+
* q / quit - Kill Claude and exit
|
|
10
|
+
* Enter - Refresh status display
|
|
11
|
+
*/
|
|
12
|
+
import { type Signal } from './signals.js';
|
|
13
|
+
import type { ClaudeProcess } from './claude.js';
|
|
14
|
+
import type { ProjectState, Protocol } from './types.js';
|
|
15
|
+
export type ReplAction = {
|
|
16
|
+
type: 'quit';
|
|
17
|
+
} | {
|
|
18
|
+
type: 'signal';
|
|
19
|
+
signal: Signal;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'claude_exit';
|
|
22
|
+
exitCode: number;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'approved';
|
|
25
|
+
} | {
|
|
26
|
+
type: 'manual_claude';
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Run the REPL while Claude is working.
|
|
30
|
+
* Returns when Claude exits, a signal is detected, or user quits.
|
|
31
|
+
*/
|
|
32
|
+
export declare function runRepl(state: ProjectState, claude: ClaudeProcess, outputPath: string, statusPath: string, projectRoot: string, protocol: Protocol): Promise<ReplAction>;
|
|
33
|
+
//# sourceMappingURL=repl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/repl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,EAAkB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAE9B;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,UAAU,CAAC,CAmIrB"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Porch REPL - Interactive command loop while Claude runs
|
|
3
|
+
*
|
|
4
|
+
* Commands:
|
|
5
|
+
* t / tail - Tail Claude's output file
|
|
6
|
+
* c / claude - Kill current Claude and invoke manually (interactive)
|
|
7
|
+
* a / approve - Approve current gate
|
|
8
|
+
* s / status - Show current status
|
|
9
|
+
* q / quit - Kill Claude and exit
|
|
10
|
+
* Enter - Refresh status display
|
|
11
|
+
*/
|
|
12
|
+
import * as readline from 'node:readline';
|
|
13
|
+
import { spawn } from 'node:child_process';
|
|
14
|
+
import chalk from 'chalk';
|
|
15
|
+
import { writeState } from './state.js';
|
|
16
|
+
import { getPhaseConfig, isPhased, getPhaseGate } from './protocol.js';
|
|
17
|
+
import { getCurrentPlanPhase } from './plan.js';
|
|
18
|
+
import { watchForSignal } from './signals.js';
|
|
19
|
+
/**
|
|
20
|
+
* Run the REPL while Claude is working.
|
|
21
|
+
* Returns when Claude exits, a signal is detected, or user quits.
|
|
22
|
+
*/
|
|
23
|
+
export async function runRepl(state, claude, outputPath, statusPath, projectRoot, protocol) {
|
|
24
|
+
const startTime = Date.now();
|
|
25
|
+
// Start watching for signals
|
|
26
|
+
const signalWatcher = watchForSignal(outputPath);
|
|
27
|
+
// Set up readline for user input
|
|
28
|
+
const rl = readline.createInterface({
|
|
29
|
+
input: process.stdin,
|
|
30
|
+
output: process.stdout,
|
|
31
|
+
});
|
|
32
|
+
// Track tail process if running
|
|
33
|
+
let tailProcess = null;
|
|
34
|
+
return new Promise((resolve) => {
|
|
35
|
+
let resolved = false;
|
|
36
|
+
const cleanup = () => {
|
|
37
|
+
if (resolved)
|
|
38
|
+
return;
|
|
39
|
+
resolved = true;
|
|
40
|
+
signalWatcher.stop();
|
|
41
|
+
rl.close();
|
|
42
|
+
if (tailProcess) {
|
|
43
|
+
tailProcess.kill();
|
|
44
|
+
tailProcess = null;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
// Check for signals periodically
|
|
48
|
+
const signalInterval = setInterval(async () => {
|
|
49
|
+
const signal = await signalWatcher.check();
|
|
50
|
+
if (signal) {
|
|
51
|
+
cleanup();
|
|
52
|
+
resolve({ type: 'signal', signal });
|
|
53
|
+
}
|
|
54
|
+
}, 1000);
|
|
55
|
+
// Handle Claude exit
|
|
56
|
+
claude.onExit((code) => {
|
|
57
|
+
clearInterval(signalInterval);
|
|
58
|
+
cleanup();
|
|
59
|
+
resolve({ type: 'claude_exit', exitCode: code });
|
|
60
|
+
});
|
|
61
|
+
// Show initial prompt
|
|
62
|
+
showPrompt(state, startTime, claude);
|
|
63
|
+
// Handle user input
|
|
64
|
+
rl.on('line', async (input) => {
|
|
65
|
+
const cmd = input.trim().toLowerCase();
|
|
66
|
+
// Stop tail if running
|
|
67
|
+
if (tailProcess) {
|
|
68
|
+
tailProcess.kill();
|
|
69
|
+
tailProcess = null;
|
|
70
|
+
}
|
|
71
|
+
switch (cmd) {
|
|
72
|
+
case '':
|
|
73
|
+
// Refresh status
|
|
74
|
+
showStatus(state, protocol, startTime, claude);
|
|
75
|
+
showPrompt(state, startTime, claude);
|
|
76
|
+
break;
|
|
77
|
+
case 't':
|
|
78
|
+
case 'tail':
|
|
79
|
+
console.log(chalk.dim('\nTailing Claude output (Ctrl+C to stop)...\n'));
|
|
80
|
+
tailProcess = spawn('tail', ['-f', outputPath], {
|
|
81
|
+
stdio: 'inherit',
|
|
82
|
+
});
|
|
83
|
+
tailProcess.on('close', () => {
|
|
84
|
+
tailProcess = null;
|
|
85
|
+
showPrompt(state, startTime, claude);
|
|
86
|
+
});
|
|
87
|
+
break;
|
|
88
|
+
case 'c':
|
|
89
|
+
case 'claude':
|
|
90
|
+
// Kill current Claude and return to spawn manually
|
|
91
|
+
console.log(chalk.yellow('\nKilling current Claude session...'));
|
|
92
|
+
claude.kill();
|
|
93
|
+
console.log(chalk.cyan('Returning to porch. Claude will be respawned.'));
|
|
94
|
+
console.log(chalk.dim('Use this to intervene manually or adjust approach.'));
|
|
95
|
+
clearInterval(signalInterval);
|
|
96
|
+
cleanup();
|
|
97
|
+
resolve({ type: 'manual_claude' });
|
|
98
|
+
break;
|
|
99
|
+
case 'a':
|
|
100
|
+
case 'approve':
|
|
101
|
+
const gateName = getPhaseGate(protocol, state.phase);
|
|
102
|
+
if (gateName && state.gates[gateName]?.status === 'pending') {
|
|
103
|
+
state.gates[gateName].status = 'approved';
|
|
104
|
+
state.gates[gateName].approved_at = new Date().toISOString();
|
|
105
|
+
writeState(statusPath, state);
|
|
106
|
+
console.log(chalk.green(`\nGate ${gateName} approved.`));
|
|
107
|
+
clearInterval(signalInterval);
|
|
108
|
+
cleanup();
|
|
109
|
+
resolve({ type: 'approved' });
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.log(chalk.dim('\nNo gate pending approval.'));
|
|
113
|
+
showPrompt(state, startTime, claude);
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
case 's':
|
|
117
|
+
case 'status':
|
|
118
|
+
showStatus(state, protocol, startTime, claude);
|
|
119
|
+
showPrompt(state, startTime, claude);
|
|
120
|
+
break;
|
|
121
|
+
case 'q':
|
|
122
|
+
case 'quit':
|
|
123
|
+
clearInterval(signalInterval);
|
|
124
|
+
cleanup();
|
|
125
|
+
resolve({ type: 'quit' });
|
|
126
|
+
break;
|
|
127
|
+
case 'help':
|
|
128
|
+
case '?':
|
|
129
|
+
showHelp();
|
|
130
|
+
showPrompt(state, startTime, claude);
|
|
131
|
+
break;
|
|
132
|
+
default:
|
|
133
|
+
console.log(chalk.dim(`Unknown command: ${cmd}. Type 'help' for commands.`));
|
|
134
|
+
showPrompt(state, startTime, claude);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Show the REPL prompt with status.
|
|
141
|
+
*/
|
|
142
|
+
function showPrompt(state, startTime, claude) {
|
|
143
|
+
const elapsed = formatElapsed(Date.now() - startTime);
|
|
144
|
+
const status = claude.isRunning() ? chalk.green('running') : chalk.red('exited');
|
|
145
|
+
process.stdout.write(chalk.cyan(`[${state.id}] claude: ${status} (${elapsed}) > `));
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Show detailed status.
|
|
149
|
+
*/
|
|
150
|
+
function showStatus(state, protocol, startTime, claude) {
|
|
151
|
+
const phaseConfig = getPhaseConfig(protocol, state.phase);
|
|
152
|
+
const elapsed = formatElapsed(Date.now() - startTime);
|
|
153
|
+
console.log('');
|
|
154
|
+
console.log(chalk.bold('─'.repeat(50)));
|
|
155
|
+
console.log(` Project: ${state.id} - ${state.title}`);
|
|
156
|
+
console.log(` Protocol: ${state.protocol}`);
|
|
157
|
+
console.log(` Phase: ${state.phase} (${phaseConfig?.name || 'unknown'})`);
|
|
158
|
+
if (isPhased(protocol, state.phase) && state.plan_phases.length > 0) {
|
|
159
|
+
const currentPlanPhase = getCurrentPlanPhase(state.plan_phases);
|
|
160
|
+
if (currentPlanPhase) {
|
|
161
|
+
console.log(` Plan Phase: ${currentPlanPhase.id} - ${currentPlanPhase.title}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const gateName = getPhaseGate(protocol, state.phase);
|
|
165
|
+
if (gateName) {
|
|
166
|
+
const gateStatus = state.gates[gateName]?.status || 'pending';
|
|
167
|
+
const icon = gateStatus === 'approved' ? chalk.green('✓') : chalk.yellow('○');
|
|
168
|
+
console.log(` Gate: ${gateName} ${icon}`);
|
|
169
|
+
}
|
|
170
|
+
console.log(` Claude: ${claude.isRunning() ? 'running' : 'exited'} (${elapsed})`);
|
|
171
|
+
console.log(chalk.bold('─'.repeat(50)));
|
|
172
|
+
console.log('');
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Show help text.
|
|
176
|
+
*/
|
|
177
|
+
function showHelp() {
|
|
178
|
+
console.log('');
|
|
179
|
+
console.log(chalk.bold('Commands:'));
|
|
180
|
+
console.log(' t / tail - Tail Claude output');
|
|
181
|
+
console.log(' c / claude - Kill Claude and respawn (for manual intervention)');
|
|
182
|
+
console.log(' a / approve - Approve pending gate');
|
|
183
|
+
console.log(' s / status - Show detailed status');
|
|
184
|
+
console.log(' q / quit - Kill Claude and exit porch');
|
|
185
|
+
console.log(' Enter - Refresh prompt');
|
|
186
|
+
console.log(' help / ? - Show this help');
|
|
187
|
+
console.log('');
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Format elapsed time.
|
|
191
|
+
*/
|
|
192
|
+
function formatElapsed(ms) {
|
|
193
|
+
const seconds = Math.floor(ms / 1000);
|
|
194
|
+
const minutes = Math.floor(seconds / 60);
|
|
195
|
+
const hours = Math.floor(minutes / 60);
|
|
196
|
+
if (hours > 0) {
|
|
197
|
+
return `${hours}h ${minutes % 60}m`;
|
|
198
|
+
}
|
|
199
|
+
else if (minutes > 0) {
|
|
200
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
return `${seconds}s`;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=repl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../../src/commands/porch/repl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* porch run - Main run loop (Build-Verify design)
|
|
3
|
+
*
|
|
4
|
+
* Porch orchestrates build-verify cycles:
|
|
5
|
+
* 1. BUILD: Spawn Claude to create artifact
|
|
6
|
+
* 2. VERIFY: Run 3-way consultation (Gemini, Codex, Claude)
|
|
7
|
+
* 3. ITERATE: If any REQUEST_CHANGES, feed back to Claude
|
|
8
|
+
* 4. COMPLETE: When all APPROVE (or max iterations), commit + push + gate
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Main run loop for porch.
|
|
12
|
+
* Spawns Claude for each phase and monitors until protocol complete.
|
|
13
|
+
*/
|
|
14
|
+
export declare function run(projectRoot: string, projectId: string): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwCH;;;GAGG;AACH,wBAAsB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6M/E"}
|