codekin 0.6.4 → 0.7.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/README.md +8 -5
- package/bin/codekin.mjs +69 -6
- package/dist/assets/index-CLuQVRRb.css +1 -0
- package/dist/assets/index-JVnFWiSw.js +185 -0
- package/dist/index.html +2 -2
- package/package.json +6 -4
- package/server/dist/anthropic-models.d.ts +40 -0
- package/server/dist/anthropic-models.js +212 -0
- package/server/dist/anthropic-models.js.map +1 -0
- package/server/dist/claude-process.d.ts +32 -3
- package/server/dist/claude-process.js +129 -9
- package/server/dist/claude-process.js.map +1 -1
- package/server/dist/codex-process.d.ts +147 -0
- package/server/dist/codex-process.js +741 -0
- package/server/dist/codex-process.js.map +1 -0
- package/server/dist/coding-process.d.ts +16 -4
- package/server/dist/coding-process.js +10 -0
- package/server/dist/coding-process.js.map +1 -1
- package/server/dist/commit-event-handler.d.ts +14 -1
- package/server/dist/commit-event-handler.js +40 -8
- package/server/dist/commit-event-handler.js.map +1 -1
- package/server/dist/config.d.ts +25 -0
- package/server/dist/config.js +42 -0
- package/server/dist/config.js.map +1 -1
- package/server/dist/opencode-process.d.ts +142 -5
- package/server/dist/opencode-process.js +664 -84
- package/server/dist/opencode-process.js.map +1 -1
- package/server/dist/orchestrator-children.d.ts +94 -7
- package/server/dist/orchestrator-children.js +375 -65
- package/server/dist/orchestrator-children.js.map +1 -1
- package/server/dist/orchestrator-manager.d.ts +10 -0
- package/server/dist/orchestrator-manager.js +70 -18
- package/server/dist/orchestrator-manager.js.map +1 -1
- package/server/dist/orchestrator-monitor.d.ts +7 -1
- package/server/dist/orchestrator-monitor.js +62 -19
- package/server/dist/orchestrator-monitor.js.map +1 -1
- package/server/dist/orchestrator-notify.d.ts +42 -0
- package/server/dist/orchestrator-notify.js +42 -0
- package/server/dist/orchestrator-notify.js.map +1 -0
- package/server/dist/orchestrator-outbox.d.ts +48 -0
- package/server/dist/orchestrator-outbox.js +154 -0
- package/server/dist/orchestrator-outbox.js.map +1 -0
- package/server/dist/orchestrator-session-router.js +43 -1
- package/server/dist/orchestrator-session-router.js.map +1 -1
- package/server/dist/prompt-router.d.ts +22 -1
- package/server/dist/prompt-router.js +94 -11
- package/server/dist/prompt-router.js.map +1 -1
- package/server/dist/session-archive.js +11 -1
- package/server/dist/session-archive.js.map +1 -1
- package/server/dist/session-lifecycle.d.ts +1 -0
- package/server/dist/session-lifecycle.js +37 -0
- package/server/dist/session-lifecycle.js.map +1 -1
- package/server/dist/session-manager.d.ts +49 -2
- package/server/dist/session-manager.js +221 -33
- package/server/dist/session-manager.js.map +1 -1
- package/server/dist/session-naming.d.ts +4 -0
- package/server/dist/session-naming.js +26 -5
- package/server/dist/session-naming.js.map +1 -1
- package/server/dist/session-routes.js +42 -2
- package/server/dist/session-routes.js.map +1 -1
- package/server/dist/stepflow-handler.js +2 -2
- package/server/dist/stepflow-handler.js.map +1 -1
- package/server/dist/tsconfig.tsbuildinfo +1 -1
- package/server/dist/types.d.ts +24 -3
- package/server/dist/types.js +1 -9
- package/server/dist/types.js.map +1 -1
- package/server/dist/upload-routes.d.ts +7 -0
- package/server/dist/upload-routes.js +85 -28
- package/server/dist/upload-routes.js.map +1 -1
- package/server/dist/webhook-handler.js +3 -3
- package/server/dist/webhook-handler.js.map +1 -1
- package/server/dist/workflow-config.d.ts +2 -2
- package/server/dist/workflow-engine.d.ts +20 -0
- package/server/dist/workflow-engine.js +52 -15
- package/server/dist/workflow-engine.js.map +1 -1
- package/server/dist/workflow-loader.d.ts +5 -5
- package/server/dist/workflow-loader.js +169 -54
- package/server/dist/workflow-loader.js.map +1 -1
- package/server/dist/workflow-routes.js +36 -2
- package/server/dist/workflow-routes.js.map +1 -1
- package/server/dist/ws-message-handler.js +24 -9
- package/server/dist/ws-message-handler.js.map +1 -1
- package/server/dist/ws-server.js +53 -11
- package/server/dist/ws-server.js.map +1 -1
- package/dist/assets/index-BRB_Ksyk.js +0 -182
- package/dist/assets/index-Q2WSVlHo.css +0 -1
|
@@ -6,14 +6,37 @@
|
|
|
6
6
|
* and result polling.
|
|
7
7
|
*/
|
|
8
8
|
import { randomUUID } from 'crypto';
|
|
9
|
+
import { execFile } from 'child_process';
|
|
9
10
|
import { getAgentDisplayName } from './config.js';
|
|
11
|
+
import { sendOrchestratorNotification, } from './orchestrator-notify.js';
|
|
12
|
+
/** Statuses considered terminal — once entered, the child is done. */
|
|
13
|
+
const TERMINAL_STATUSES = new Set([
|
|
14
|
+
'completed',
|
|
15
|
+
'failed',
|
|
16
|
+
'timed_out',
|
|
17
|
+
]);
|
|
18
|
+
const defaultExec = (cmd, args, cwd) => new Promise((resolvePromise, rejectPromise) => {
|
|
19
|
+
execFile(cmd, args, { cwd, timeout: 15_000, maxBuffer: 1024 * 1024 }, (err, stdout) => {
|
|
20
|
+
if (err)
|
|
21
|
+
rejectPromise(err instanceof Error ? err : new Error(`${cmd} failed`));
|
|
22
|
+
else
|
|
23
|
+
resolvePromise(stdout);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
10
26
|
// ---------------------------------------------------------------------------
|
|
11
27
|
// Constants
|
|
12
28
|
// ---------------------------------------------------------------------------
|
|
13
29
|
const MAX_CONCURRENT = 5;
|
|
14
|
-
const DEFAULT_TIMEOUT_MS =
|
|
30
|
+
const DEFAULT_TIMEOUT_MS = 1_800_000; // 30 minutes of working time
|
|
31
|
+
/**
|
|
32
|
+
* Separate budget for time spent blocked on a pending approval or question.
|
|
33
|
+
* The working-time clock is paused while blocked; this cap ensures a child
|
|
34
|
+
* waiting on an answer that never comes still terminates eventually.
|
|
35
|
+
*/
|
|
36
|
+
const MAX_BLOCKED_MS = 1_800_000; // 30 minutes
|
|
15
37
|
const CHILD_RETENTION_MS = 3_600_000; // keep completed/failed children for 1 hour
|
|
16
38
|
const MAX_RETAINED_CHILDREN = 100; // hard cap on total entries
|
|
39
|
+
const MAX_NOTIFIED_PROMPT_IDS = 500; // cap on the blocked-prompt dedup set
|
|
17
40
|
/**
|
|
18
41
|
* Default allowed tools for agent child sessions. Covers standard dev
|
|
19
42
|
* operations without granting arbitrary shell access. Destructive commands
|
|
@@ -34,6 +57,12 @@ export const AGENT_CHILD_ALLOWED_TOOLS = [
|
|
|
34
57
|
// Build / lint / test tools
|
|
35
58
|
'Bash(node:*)', 'Bash(tsc:*)', 'Bash(eslint:*)', 'Bash(prettier:*)',
|
|
36
59
|
'Bash(cargo:*)', 'Bash(go:*)', 'Bash(make:*)', 'Bash(pip:*)',
|
|
60
|
+
// Python toolchain (linting/tests in Python repos)
|
|
61
|
+
'Bash(python3:*)', 'Bash(pytest:*)',
|
|
62
|
+
// Text/data processing (read-only or scoped to working dir)
|
|
63
|
+
'Bash(sed:*)', 'Bash(rg:*)', 'Bash(jq:*)',
|
|
64
|
+
// Non-destructive file management (no rm — deletion still needs approval)
|
|
65
|
+
'Bash(mkdir:*)', 'Bash(cp:*)', 'Bash(mv:*)', 'Bash(touch:*)',
|
|
37
66
|
// Safe filesystem inspection (read-only)
|
|
38
67
|
'Bash(ls:*)', 'Bash(cat:*)', 'Bash(wc:*)',
|
|
39
68
|
'Bash(head:*)', 'Bash(tail:*)', 'Bash(sort:*)', 'Bash(diff:*)',
|
|
@@ -47,8 +76,107 @@ export const AGENT_CHILD_ALLOWED_TOOLS = [
|
|
|
47
76
|
export class OrchestratorChildManager {
|
|
48
77
|
children = new Map();
|
|
49
78
|
sessions;
|
|
50
|
-
|
|
79
|
+
notify;
|
|
80
|
+
/** Prompt requestIds already reported to the parent (single-fire per prompt). */
|
|
81
|
+
notifiedPromptIds = new Set();
|
|
82
|
+
/**
|
|
83
|
+
* Per-child timeout controllers — lets the prompt handler pause the
|
|
84
|
+
* working-time clock the moment a child blocks on an approval/question,
|
|
85
|
+
* instead of waiting for the next monitor event.
|
|
86
|
+
*/
|
|
87
|
+
timeoutControllers = new Map();
|
|
88
|
+
exec;
|
|
89
|
+
constructor(sessions, opts) {
|
|
51
90
|
this.sessions = sessions;
|
|
91
|
+
this.notify = opts?.notify ?? ((args) => sendOrchestratorNotification(sessions, args));
|
|
92
|
+
this.exec = opts?.exec ?? defaultExec;
|
|
93
|
+
// Push a realtime notification to the parent orchestrator whenever one of
|
|
94
|
+
// our children blocks on a tool approval or question. Without this, a
|
|
95
|
+
// blocked child would silently sit until its timeout killed it.
|
|
96
|
+
this.sessions.onSessionPrompt((sessionId, promptType, toolName, requestId) => {
|
|
97
|
+
this.handleChildPrompt(sessionId, promptType, toolName, requestId);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Handle a prompt event from any session: if it belongs to one of our
|
|
102
|
+
* active children, mark the child as blocked and notify the parent
|
|
103
|
+
* orchestrator with everything it needs to unblock the child.
|
|
104
|
+
*/
|
|
105
|
+
handleChildPrompt(sessionId, promptType, toolName, requestId) {
|
|
106
|
+
const child = this.children.get(sessionId);
|
|
107
|
+
if (!child || TERMINAL_STATUSES.has(child.status))
|
|
108
|
+
return;
|
|
109
|
+
child.status = 'blocked';
|
|
110
|
+
// Pause the working-time clock while the child waits for an answer.
|
|
111
|
+
this.timeoutControllers.get(sessionId)?.pause();
|
|
112
|
+
// Single-fire per requestId (re-broadcasts on client join would otherwise
|
|
113
|
+
// spam the parent). Prompts without a requestId can't be deduped or
|
|
114
|
+
// responded to by ID — still notify, but only describe them generically.
|
|
115
|
+
const dedupKey = requestId ?? `${sessionId}:${toolName ?? 'unknown'}`;
|
|
116
|
+
if (this.notifiedPromptIds.has(dedupKey))
|
|
117
|
+
return;
|
|
118
|
+
this.notifiedPromptIds.add(dedupKey);
|
|
119
|
+
if (this.notifiedPromptIds.size > MAX_NOTIFIED_PROMPT_IDS) {
|
|
120
|
+
// Drop oldest entries (Set preserves insertion order)
|
|
121
|
+
for (const id of this.notifiedPromptIds) {
|
|
122
|
+
this.notifiedPromptIds.delete(id);
|
|
123
|
+
if (this.notifiedPromptIds.size <= MAX_NOTIFIED_PROMPT_IDS)
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const parentSessionId = child.request.parentSessionId;
|
|
128
|
+
if (!parentSessionId)
|
|
129
|
+
return;
|
|
130
|
+
try {
|
|
131
|
+
this.notify({
|
|
132
|
+
parentSessionId,
|
|
133
|
+
label: 'Child Session Blocked',
|
|
134
|
+
title: `Session: ${getAgentDisplayName().toLowerCase()}:${child.request.branchName} (${child.id})`,
|
|
135
|
+
body: this.buildBlockedNotificationBody(child, promptType, toolName, requestId),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
console.warn(`[orchestrator-child] Failed to notify parent about blocked child ${child.id}:`, err);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** Build the body for a blocked-child notification, including the exact
|
|
143
|
+
* API call the orchestrator can use to respond. */
|
|
144
|
+
buildBlockedNotificationBody(child, promptType, toolName, requestId) {
|
|
145
|
+
const lines = [
|
|
146
|
+
'Status: blocked — waiting for a response',
|
|
147
|
+
`Branch: ${child.request.branchName}`,
|
|
148
|
+
`Repo: ${child.request.repo}`,
|
|
149
|
+
`Prompt: ${promptType}${toolName ? ` (${toolName})` : ''}`,
|
|
150
|
+
];
|
|
151
|
+
// Include a one-line summary of what the tool wants to do, if available.
|
|
152
|
+
const detail = this.describePendingPrompt(child.id, requestId);
|
|
153
|
+
if (detail)
|
|
154
|
+
lines.push(`Detail: ${detail}`);
|
|
155
|
+
if (requestId) {
|
|
156
|
+
lines.push(`RequestId: ${requestId}`, 'Respond with:', `curl -s -X POST "http://localhost:$CODEKIN_PORT/api/orchestrator/sessions/${child.id}/respond" \\`, ' -H "Authorization: Bearer $CODEKIN_AUTH_TOKEN" -H "Content-Type: application/json" \\', promptType === 'question'
|
|
157
|
+
? ` -d '{"requestId": "${requestId}", "value": "YOUR_ANSWER"}'`
|
|
158
|
+
: ` -d '{"requestId": "${requestId}", "value": "allow"}' # or "deny"`);
|
|
159
|
+
}
|
|
160
|
+
lines.push('Unanswered permission prompts are auto-denied after 5 minutes. If unsure, ask the user.');
|
|
161
|
+
return lines.join('\n');
|
|
162
|
+
}
|
|
163
|
+
/** One-line summary of the pending prompt's tool input (e.g. the Bash command). */
|
|
164
|
+
describePendingPrompt(sessionId, requestId) {
|
|
165
|
+
if (!requestId)
|
|
166
|
+
return null;
|
|
167
|
+
const session = this.sessions.get(sessionId);
|
|
168
|
+
if (!session)
|
|
169
|
+
return null;
|
|
170
|
+
const pending = session.pendingToolApprovals.get(requestId) ?? session.pendingControlRequests.get(requestId);
|
|
171
|
+
if (!pending)
|
|
172
|
+
return null;
|
|
173
|
+
const input = pending.toolInput;
|
|
174
|
+
if (typeof input.command === 'string')
|
|
175
|
+
return `$ ${input.command.split('\n')[0].slice(0, 200)}`;
|
|
176
|
+
if (typeof input.file_path === 'string')
|
|
177
|
+
return input.file_path;
|
|
178
|
+
const json = JSON.stringify(input);
|
|
179
|
+
return json.length > 2 ? json.slice(0, 200) : null;
|
|
52
180
|
}
|
|
53
181
|
/** Get all active/recent child sessions. */
|
|
54
182
|
list() {
|
|
@@ -64,7 +192,7 @@ export class OrchestratorChildManager {
|
|
|
64
192
|
purgeStaleChildren() {
|
|
65
193
|
const now = Date.now();
|
|
66
194
|
for (const [id, child] of this.children) {
|
|
67
|
-
if (
|
|
195
|
+
if (!TERMINAL_STATUSES.has(child.status))
|
|
68
196
|
continue;
|
|
69
197
|
if (child.completedAt && now - new Date(child.completedAt).getTime() > CHILD_RETENTION_MS) {
|
|
70
198
|
this.children.delete(id);
|
|
@@ -73,7 +201,7 @@ export class OrchestratorChildManager {
|
|
|
73
201
|
// Hard cap: if still over limit, remove oldest completed entries
|
|
74
202
|
if (this.children.size > MAX_RETAINED_CHILDREN) {
|
|
75
203
|
const completed = Array.from(this.children.entries())
|
|
76
|
-
.filter(([, c]) =>
|
|
204
|
+
.filter(([, c]) => TERMINAL_STATUSES.has(c.status))
|
|
77
205
|
.sort((a, b) => (a[1].completedAt ?? '').localeCompare(b[1].completedAt ?? ''));
|
|
78
206
|
while (this.children.size > MAX_RETAINED_CHILDREN && completed.length > 0) {
|
|
79
207
|
const [id] = completed.shift();
|
|
@@ -84,7 +212,7 @@ export class OrchestratorChildManager {
|
|
|
84
212
|
/** Count currently active (non-terminal) child sessions. */
|
|
85
213
|
activeCount() {
|
|
86
214
|
return Array.from(this.children.values())
|
|
87
|
-
.filter(c =>
|
|
215
|
+
.filter(c => !TERMINAL_STATUSES.has(c.status))
|
|
88
216
|
.length;
|
|
89
217
|
}
|
|
90
218
|
/**
|
|
@@ -107,6 +235,9 @@ export class OrchestratorChildManager {
|
|
|
107
235
|
completedAt: null,
|
|
108
236
|
result: null,
|
|
109
237
|
error: null,
|
|
238
|
+
terminalNotifiedAt: null,
|
|
239
|
+
worktree: request.useWorktree ? 'failed' : 'none', // upgraded to 'active' on success
|
|
240
|
+
worktreePath: null,
|
|
110
241
|
};
|
|
111
242
|
this.children.set(sessionId, child);
|
|
112
243
|
try {
|
|
@@ -126,7 +257,11 @@ export class OrchestratorChildManager {
|
|
|
126
257
|
let worktreeFailed = false;
|
|
127
258
|
if (request.useWorktree) {
|
|
128
259
|
const wtPath = await this.sessions.createWorktree(sessionId, request.repo, request.branchName);
|
|
129
|
-
if (
|
|
260
|
+
if (wtPath) {
|
|
261
|
+
child.worktree = 'active';
|
|
262
|
+
child.worktreePath = wtPath;
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
130
265
|
worktreeFailed = true;
|
|
131
266
|
console.warn(`[orchestrator-child] Failed to create worktree for ${sessionId}, falling back to main directory`);
|
|
132
267
|
}
|
|
@@ -145,9 +280,84 @@ export class OrchestratorChildManager {
|
|
|
145
280
|
child.status = 'failed';
|
|
146
281
|
child.error = err instanceof Error ? err.message : String(err);
|
|
147
282
|
child.completedAt = new Date().toISOString();
|
|
283
|
+
this.notifyTerminal(child);
|
|
148
284
|
return child;
|
|
149
285
|
}
|
|
150
286
|
}
|
|
287
|
+
/**
|
|
288
|
+
* Deliver a single terminal-state notification to the parent orchestrator
|
|
289
|
+
* session. No-op (and idempotent) when the child has no parent, the status
|
|
290
|
+
* is not terminal, or a notification has already been delivered.
|
|
291
|
+
*/
|
|
292
|
+
notifyTerminal(child) {
|
|
293
|
+
if (child.terminalNotifiedAt)
|
|
294
|
+
return;
|
|
295
|
+
if (!TERMINAL_STATUSES.has(child.status))
|
|
296
|
+
return;
|
|
297
|
+
const parentSessionId = child.request.parentSessionId;
|
|
298
|
+
if (!parentSessionId)
|
|
299
|
+
return;
|
|
300
|
+
const args = {
|
|
301
|
+
parentSessionId,
|
|
302
|
+
label: 'Child Session Stopped',
|
|
303
|
+
title: `Session: ${getAgentDisplayName().toLowerCase()}:${child.request.branchName} (${child.id})`,
|
|
304
|
+
body: this.buildTerminalNotificationBody(child),
|
|
305
|
+
};
|
|
306
|
+
// `notify` returns true on immediate delivery AND when the notification
|
|
307
|
+
// was queued in the persistent outbox (the outbox owns replay from that
|
|
308
|
+
// point on) — both count as handled, so we stamp `terminalNotifiedAt`.
|
|
309
|
+
// It returns false only when queueing itself failed; we leave the stamp
|
|
310
|
+
// unset so a later terminal-path call can retry. Idempotency is still
|
|
311
|
+
// enforced by the early-return on terminalNotifiedAt at the top.
|
|
312
|
+
let delivered = false;
|
|
313
|
+
try {
|
|
314
|
+
delivered = this.notify(args);
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
console.warn(`[orchestrator-child] Failed to notify parent ${parentSessionId} for ${child.id}:`, err);
|
|
318
|
+
}
|
|
319
|
+
if (delivered) {
|
|
320
|
+
child.terminalNotifiedAt = new Date().toISOString();
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Build the multi-line body for a terminal-state notification: status,
|
|
325
|
+
* branch, repo, optional error string, and an action hint tailored to
|
|
326
|
+
* the terminal status.
|
|
327
|
+
*/
|
|
328
|
+
buildTerminalNotificationBody(child) {
|
|
329
|
+
const lines = [
|
|
330
|
+
`Status: ${child.status}`,
|
|
331
|
+
`Branch: ${child.request.branchName}`,
|
|
332
|
+
`Repo: ${child.request.repo}`,
|
|
333
|
+
];
|
|
334
|
+
if (child.error)
|
|
335
|
+
lines.push(`Error: ${child.error}`);
|
|
336
|
+
lines.push(this.buildHintLine(child));
|
|
337
|
+
return lines.join('\n');
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Build a single-line hint about how to proceed, tailored to the status:
|
|
341
|
+
* - timed_out / failed → point at the worktree so partial work can be salvaged
|
|
342
|
+
* - completed → remind that the PR may still need to be opened
|
|
343
|
+
*/
|
|
344
|
+
buildHintLine(child) {
|
|
345
|
+
const session = this.sessions.get(child.id);
|
|
346
|
+
const worktreePath = session?.worktreePath;
|
|
347
|
+
if (child.status === 'timed_out' || child.status === 'failed') {
|
|
348
|
+
const where = worktreePath ?? `${child.request.repo} (no worktree)`;
|
|
349
|
+
return `Inspect worktree at ${where} for partial work.`;
|
|
350
|
+
}
|
|
351
|
+
if (child.status === 'completed') {
|
|
352
|
+
const policy = child.request.completionPolicy;
|
|
353
|
+
if (policy === 'pr')
|
|
354
|
+
return 'Verify the PR was opened — push and create one if not.';
|
|
355
|
+
if (policy === 'merge')
|
|
356
|
+
return 'Verify the branch was pushed.';
|
|
357
|
+
return 'Verify changes were committed locally as expected.';
|
|
358
|
+
}
|
|
359
|
+
return 'Review the child session output before deciding next steps.';
|
|
360
|
+
}
|
|
151
361
|
/**
|
|
152
362
|
* Build a focused task prompt for a child session.
|
|
153
363
|
*/
|
|
@@ -197,7 +407,6 @@ export class OrchestratorChildManager {
|
|
|
197
407
|
let unsubResult;
|
|
198
408
|
let unsubExit;
|
|
199
409
|
const nudgedIds = new Set();
|
|
200
|
-
const supersededMsgs = new Set();
|
|
201
410
|
try {
|
|
202
411
|
await new Promise((resolve) => {
|
|
203
412
|
let settled = false;
|
|
@@ -205,48 +414,130 @@ export class OrchestratorChildManager {
|
|
|
205
414
|
settled = true;
|
|
206
415
|
resolve();
|
|
207
416
|
} };
|
|
208
|
-
//
|
|
209
|
-
|
|
417
|
+
// Re-read after awaits — a timeout may settle while a ground-truth
|
|
418
|
+
// check is in flight (also defeats overly-eager type narrowing).
|
|
419
|
+
const isSettled = () => settled;
|
|
420
|
+
// ---- Pausable working-time clock -----------------------------------
|
|
421
|
+
// The working budget (timeoutMs) only burns while the child is doing
|
|
422
|
+
// work. When the child blocks on an approval/question, the clock is
|
|
423
|
+
// paused and a separate blocked-time cap (MAX_BLOCKED_MS) takes over
|
|
424
|
+
// so an unanswered prompt still terminates the child eventually.
|
|
425
|
+
let remainingMs = timeoutMs;
|
|
426
|
+
let workStartedAt = Date.now();
|
|
427
|
+
let workTimer = null;
|
|
428
|
+
let blockedTimer = null;
|
|
429
|
+
const clearTimers = () => {
|
|
430
|
+
if (workTimer) {
|
|
431
|
+
clearTimeout(workTimer);
|
|
432
|
+
workTimer = null;
|
|
433
|
+
}
|
|
434
|
+
if (blockedTimer) {
|
|
435
|
+
clearTimeout(blockedTimer);
|
|
436
|
+
blockedTimer = null;
|
|
437
|
+
}
|
|
438
|
+
};
|
|
439
|
+
const fireTimeout = (error) => {
|
|
210
440
|
if (settled)
|
|
211
441
|
return;
|
|
212
442
|
child.status = 'timed_out';
|
|
213
|
-
child.error =
|
|
443
|
+
child.error = error;
|
|
214
444
|
child.completedAt = new Date().toISOString();
|
|
445
|
+
clearTimers();
|
|
215
446
|
const session = this.sessions.get(child.id);
|
|
216
447
|
if (session?.claudeProcess?.isAlive()) {
|
|
217
448
|
session.claudeProcess.stop();
|
|
218
449
|
}
|
|
219
450
|
settle();
|
|
220
|
-
}
|
|
451
|
+
};
|
|
452
|
+
const pause = () => {
|
|
453
|
+
if (settled || !workTimer)
|
|
454
|
+
return;
|
|
455
|
+
clearTimeout(workTimer);
|
|
456
|
+
workTimer = null;
|
|
457
|
+
remainingMs = Math.max(0, remainingMs - (Date.now() - workStartedAt));
|
|
458
|
+
blockedTimer ??= setTimeout(() => {
|
|
459
|
+
fireTimeout(`Timed out after waiting ${MAX_BLOCKED_MS}ms for a pending approval/answer`);
|
|
460
|
+
}, MAX_BLOCKED_MS);
|
|
461
|
+
};
|
|
462
|
+
const resume = () => {
|
|
463
|
+
if (settled || workTimer)
|
|
464
|
+
return;
|
|
465
|
+
if (blockedTimer) {
|
|
466
|
+
clearTimeout(blockedTimer);
|
|
467
|
+
blockedTimer = null;
|
|
468
|
+
}
|
|
469
|
+
workStartedAt = Date.now();
|
|
470
|
+
workTimer = setTimeout(() => {
|
|
471
|
+
fireTimeout(`Timed out after ${timeoutMs}ms of working time`);
|
|
472
|
+
}, remainingMs);
|
|
473
|
+
};
|
|
474
|
+
// Expose pause/resume to the prompt handler (handleChildPrompt).
|
|
475
|
+
this.timeoutControllers.set(child.id, { pause, resume });
|
|
476
|
+
// Start the working clock.
|
|
477
|
+
workStartedAt = Date.now();
|
|
478
|
+
workTimer = setTimeout(() => {
|
|
479
|
+
fireTimeout(`Timed out after ${timeoutMs}ms of working time`);
|
|
480
|
+
}, remainingMs);
|
|
481
|
+
// Guard against overlapping async ground-truth checks when result
|
|
482
|
+
// events arrive in quick succession.
|
|
483
|
+
let verifying = false;
|
|
221
484
|
// Result hook: Claude completed a turn
|
|
222
485
|
const onResult = (sessionId, isError) => {
|
|
223
|
-
if (sessionId !== child.id || settled)
|
|
486
|
+
if (sessionId !== child.id || settled || verifying)
|
|
224
487
|
return;
|
|
225
488
|
const session = this.sessions.get(child.id);
|
|
226
489
|
if (!session) {
|
|
227
490
|
child.status = 'failed';
|
|
228
491
|
child.error = 'Session was deleted';
|
|
229
492
|
child.completedAt = new Date().toISOString();
|
|
230
|
-
|
|
493
|
+
clearTimers();
|
|
231
494
|
settle();
|
|
232
495
|
return;
|
|
233
496
|
}
|
|
234
|
-
|
|
235
|
-
//
|
|
236
|
-
|
|
497
|
+
// Don't mark as completed (or nudge) while the session still has
|
|
498
|
+
// pending tool approvals or control requests — the Claude process
|
|
499
|
+
// may still be alive and blocked on an approval (e.g. git push).
|
|
500
|
+
// Nudging here would waste the single nudge on a child that cannot
|
|
501
|
+
// act. Keep monitoring; the next result/exit event re-evaluates.
|
|
502
|
+
if (session.pendingToolApprovals.size > 0 || session.pendingControlRequests.size > 0) {
|
|
503
|
+
child.status = 'blocked';
|
|
504
|
+
pause();
|
|
237
505
|
return;
|
|
238
|
-
|
|
239
|
-
//
|
|
240
|
-
//
|
|
241
|
-
|
|
242
|
-
if (
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
506
|
+
}
|
|
507
|
+
// The prompt (if any) was answered — restart the working clock so
|
|
508
|
+
// post-approval work draws from the remaining working budget.
|
|
509
|
+
resume();
|
|
510
|
+
if (child.status === 'blocked')
|
|
511
|
+
child.status = 'running';
|
|
512
|
+
verifying = true;
|
|
513
|
+
void (async () => {
|
|
514
|
+
try {
|
|
515
|
+
const text = this.extractText(session.outputHistory);
|
|
516
|
+
// Ground-truth check: did the final step (PR / push) really land?
|
|
517
|
+
const missing = await this.isFinalStepMissing(child, text);
|
|
518
|
+
if (isSettled())
|
|
519
|
+
return;
|
|
520
|
+
// Final step missing — nudge once, then keep monitoring.
|
|
521
|
+
if (missing && !isError && !nudgedIds.has(child.id) && session.claudeProcess?.isAlive()) {
|
|
522
|
+
nudgedIds.add(child.id);
|
|
523
|
+
this.sessions.sendInput(child.id, this.buildNudgeInstruction(child.request.completionPolicy));
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
child.status = isError ? 'failed' : 'completed';
|
|
527
|
+
child.result = text || null;
|
|
528
|
+
child.error = isError
|
|
529
|
+
? 'Claude returned an error'
|
|
530
|
+
: missing
|
|
531
|
+
? `Completion not verified: expected ${child.request.completionPolicy === 'pr' ? 'a pull request' : 'a pushed branch'} but found none`
|
|
532
|
+
: null;
|
|
533
|
+
child.completedAt = new Date().toISOString();
|
|
534
|
+
clearTimers();
|
|
535
|
+
settle();
|
|
536
|
+
}
|
|
537
|
+
finally {
|
|
538
|
+
verifying = false;
|
|
539
|
+
}
|
|
540
|
+
})();
|
|
250
541
|
};
|
|
251
542
|
// Exit hook: Claude process exited
|
|
252
543
|
const onExit = (sessionId, _code, _signal, willRestart) => {
|
|
@@ -256,12 +547,23 @@ export class OrchestratorChildManager {
|
|
|
256
547
|
return; // Will auto-restart, keep monitoring
|
|
257
548
|
const session = this.sessions.get(child.id);
|
|
258
549
|
const text = session ? this.extractText(session.outputHistory) : '';
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
550
|
+
void (async () => {
|
|
551
|
+
// Process is gone — decide the terminal status from ground truth
|
|
552
|
+
// (did the PR / push land?) rather than transcript length.
|
|
553
|
+
let missing = session ? await this.isFinalStepMissing(child, text) : true;
|
|
554
|
+
// commit-only has no remote artifact to verify; an exit without
|
|
555
|
+
// any output cannot be considered a success.
|
|
556
|
+
if (child.request.completionPolicy === 'commit-only' && !text)
|
|
557
|
+
missing = true;
|
|
558
|
+
if (isSettled())
|
|
559
|
+
return;
|
|
560
|
+
child.status = missing ? 'failed' : 'completed';
|
|
561
|
+
child.result = text || null;
|
|
562
|
+
child.error = missing ? 'Claude exited before the final step could be verified' : null;
|
|
563
|
+
child.completedAt = new Date().toISOString();
|
|
564
|
+
clearTimers();
|
|
565
|
+
settle();
|
|
566
|
+
})();
|
|
265
567
|
};
|
|
266
568
|
unsubResult = this.sessions.onSessionResult(onResult);
|
|
267
569
|
unsubExit = this.sessions.onSessionExit(onExit);
|
|
@@ -271,51 +573,59 @@ export class OrchestratorChildManager {
|
|
|
271
573
|
// Unsubscribe listeners to prevent accumulation across spawn() calls
|
|
272
574
|
unsubResult?.();
|
|
273
575
|
unsubExit?.();
|
|
576
|
+
this.timeoutControllers.delete(child.id);
|
|
274
577
|
// Safety net: ensure isProcessing is cleared when monitoring ends.
|
|
275
578
|
// handleClaudeResult should have already done this, but edge cases
|
|
276
579
|
// (nudge race, missed result event) can leave the flag stuck.
|
|
277
580
|
this.sessions.clearProcessingFlag(child.id);
|
|
581
|
+
// Push-notify the parent orchestrator so it learns about the terminal
|
|
582
|
+
// state immediately, instead of waiting for the 30-minute polling cron.
|
|
583
|
+
this.notifyTerminal(child);
|
|
278
584
|
}
|
|
279
585
|
}
|
|
280
586
|
/**
|
|
281
|
-
*
|
|
282
|
-
*
|
|
283
|
-
*
|
|
587
|
+
* Ground-truth check for the child's expected final step. Instead of
|
|
588
|
+
* sniffing the transcript for keywords (which both false-positives on
|
|
589
|
+
* mentions and false-negatives on terse output), ask the real systems:
|
|
590
|
+
* - 'pr': does an open/merged PR exist for the branch? (gh pr list)
|
|
591
|
+
* - 'merge': does the branch exist on the remote? (git ls-remote)
|
|
592
|
+
* - 'commit-only': nothing remote to verify — never missing.
|
|
593
|
+
* Falls back to transcript keyword sniffing when the command fails
|
|
594
|
+
* (e.g. gh not installed, no remote configured).
|
|
284
595
|
*/
|
|
285
|
-
|
|
286
|
-
// Only nudge once per child
|
|
287
|
-
if (nudgedIds.has(child.id))
|
|
288
|
-
return false;
|
|
596
|
+
async isFinalStepMissing(child, text) {
|
|
289
597
|
const policy = child.request.completionPolicy;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
598
|
+
if (policy === 'commit-only')
|
|
599
|
+
return false;
|
|
600
|
+
const cwd = child.worktreePath ?? child.request.repo;
|
|
601
|
+
const branch = child.request.branchName;
|
|
293
602
|
if (policy === 'pr') {
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
instruction = 'You completed the code changes but did not create a Pull Request. Please push your branch and create a PR now with a clear description of what was changed and why.';
|
|
603
|
+
try {
|
|
604
|
+
const out = await this.exec('gh', ['pr', 'list', '--head', branch, '--state', 'all', '--json', 'number', '--limit', '1'], cwd);
|
|
605
|
+
const parsed = JSON.parse(out);
|
|
606
|
+
return !(Array.isArray(parsed) && parsed.length > 0);
|
|
299
607
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const pushed = lowerText.includes('git push') || lowerText.includes('pushed');
|
|
304
|
-
if (!pushed) {
|
|
305
|
-
missing = true;
|
|
306
|
-
instruction = 'You completed the code changes but did not push them. Please push your changes to the remote now.';
|
|
608
|
+
catch {
|
|
609
|
+
const lower = text.toLowerCase();
|
|
610
|
+
return !(lower.includes('pull request') || lower.includes('created a pr') || lower.includes('gh pr create'));
|
|
307
611
|
}
|
|
308
612
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
return
|
|
613
|
+
// policy === 'merge' — verify the branch was pushed to the remote
|
|
614
|
+
try {
|
|
615
|
+
const out = await this.exec('git', ['ls-remote', '--heads', 'origin', branch], cwd);
|
|
616
|
+
return out.trim().length === 0;
|
|
617
|
+
}
|
|
618
|
+
catch {
|
|
619
|
+
const lower = text.toLowerCase();
|
|
620
|
+
return !(lower.includes('git push') || lower.includes('pushed'));
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
/** Follow-up instruction sent (once) when the final step is missing. */
|
|
624
|
+
buildNudgeInstruction(policy) {
|
|
625
|
+
if (policy === 'pr') {
|
|
626
|
+
return 'You completed the code changes but no Pull Request exists for your branch yet. Please push your branch and create a PR now with a clear description of what was changed and why.';
|
|
317
627
|
}
|
|
318
|
-
return
|
|
628
|
+
return 'You completed the code changes but your branch has not been pushed to the remote. Please push your changes now.';
|
|
319
629
|
}
|
|
320
630
|
/**
|
|
321
631
|
* Extract assistant text from session output history.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator-children.js","sourceRoot":"","sources":["../orchestrator-children.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrator-children.js","sourceRoot":"","sources":["../orchestrator-children.ts"],"names":[],"mappings":"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"}
|