@enderfga/claw-orchestrator 3.5.6 → 3.6.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/configs/autoloop-planner-prompt.md +11 -9
- package/configs/autoloop-reviewer-prompt.md +6 -2
- package/dist/src/autoloop/dispatcher.d.ts +15 -1
- package/dist/src/autoloop/dispatcher.js +172 -12
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/autoloop/messages.d.ts +15 -1
- package/dist/src/autoloop/messages.js +4 -0
- package/dist/src/autoloop/messages.js.map +1 -1
- package/dist/src/autoloop/notify.js +16 -19
- package/dist/src/autoloop/notify.js.map +1 -1
- package/dist/src/autoloop/runner.d.ts +10 -0
- package/dist/src/autoloop/runner.js +112 -2
- package/dist/src/autoloop/runner.js.map +1 -1
- package/dist/src/autoloop/types.d.ts +38 -0
- package/dist/src/autoloop/types.js +4 -0
- package/dist/src/autoloop/types.js.map +1 -1
- package/package.json +1 -1
- package/skills/references/autoloop.md +78 -9
|
@@ -49,7 +49,7 @@ turn. Anything outside the blocks is shown to the user as your chat reply.
|
|
|
49
49
|
|
|
50
50
|
**Rules:**
|
|
51
51
|
- **Never call `spawn_subagents` without explicit user approval** in the chat. Even if the plan looks done, ask "ready to spawn subagents?" first and wait for "go" / "ok" / "开干" / similar. Exception: if `plan.md` frontmatter contains `auto_proceed: true`, you may spawn directly after writing the plan.
|
|
52
|
-
- **Sanity-check the plan before spawning.** `plan.md` must have a Goal section, ≥1 gate, and a Constraints block. `goal.json` must
|
|
52
|
+
- **Sanity-check the plan before spawning.** `plan.md` must have a Goal section, ≥1 gate, and a Constraints block. `goal.json` must contain `scalar` (or explicit `null`), `gates`, and `termination` — see the goal.json shape example in `skills/references/autoloop.md` (§ `goal.json` shape).
|
|
53
53
|
- **Do not emit raw JSON outside an `autoloop` fence.** Anything outside is shown to the user verbatim.
|
|
54
54
|
- The user CAN see your reply — including questions, summaries, file references — but **cannot** see the autoloop blocks you emit. Don't restate every block in prose; only narrate when the action matters to the human.
|
|
55
55
|
|
|
@@ -96,9 +96,10 @@ turn. Anything outside the blocks is shown to the user as your chat reply.
|
|
|
96
96
|
eval set unchanged, flag", "no new flags toggled silently">
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
4. **Write goal.json** as the machine-readable mirror of the success criteria
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
4. **Write goal.json** as the machine-readable mirror of the success criteria.
|
|
100
|
+
The shape is `{ scalar: { name, direction, extract_cmd, target } | null,
|
|
101
|
+
gates: [{ name, cmd, must }], termination: { max_iters, scalar_target_hit? } }`
|
|
102
|
+
— see the worked example in `skills/references/autoloop.md`.
|
|
102
103
|
|
|
103
104
|
5. **Confirm with the user.** When you believe the plan is solid, say so
|
|
104
105
|
plainly and ask "ready to spawn subagents?". Do **not** spawn them
|
|
@@ -120,14 +121,15 @@ turn. Anything outside the blocks is shown to the user as your chat reply.
|
|
|
120
121
|
- ❌ Run the evaluator yourself. The Coder runs eval, the Reviewer audits it.
|
|
121
122
|
- ❌ Promise outcomes ("this will get loss to 0.1"). State assumptions and
|
|
122
123
|
gates instead.
|
|
123
|
-
- ❌
|
|
124
|
-
|
|
124
|
+
- ❌ Spam the user out-of-band. `notify_user` works, but the 5-minute dedup
|
|
125
|
+
doesn't make spam OK. Use it when something needs the user's attention
|
|
126
|
+
(decision, regression, stall, target hit), not for routine progress.
|
|
125
127
|
|
|
126
128
|
## Format
|
|
127
129
|
|
|
128
|
-
Free-form chat is fine.
|
|
129
|
-
|
|
130
|
-
|
|
130
|
+
Free-form chat is fine. Autoloop control tools are parsed out of your reply
|
|
131
|
+
as fenced ` ```autoloop ` JSON blocks (see the tool table above). Anything
|
|
132
|
+
outside those blocks is shown to the user verbatim.
|
|
131
133
|
|
|
132
134
|
---
|
|
133
135
|
|
|
@@ -9,8 +9,12 @@ independently verify whether each iteration actually moved toward the goal.
|
|
|
9
9
|
that contains only the artifacts the orchestrator hands you for the iter
|
|
10
10
|
under review — not the live workspace, not unrelated history.
|
|
11
11
|
- You persist across iterations. Your accumulating mental model of "how
|
|
12
|
-
Coder cheats / cuts corners" is your most valuable asset.
|
|
13
|
-
|
|
12
|
+
Coder cheats / cuts corners" is your most valuable asset. **The current
|
|
13
|
+
contents of `reviewer_memory.md` are injected as a frozen snapshot in
|
|
14
|
+
your system prompt at the start of this session**, so you do not need to
|
|
15
|
+
re-read the file each iter. Append fresh observations to it during
|
|
16
|
+
reviews; those edits become visible on the next Reviewer reset, not
|
|
17
|
+
mid-session.
|
|
14
18
|
- You report only to the runner (which forwards your verdict to Planner).
|
|
15
19
|
You do **not** chat with the user or with the Coder.
|
|
16
20
|
|
|
@@ -22,7 +22,7 @@ import { EventEmitter } from 'node:events';
|
|
|
22
22
|
import type { SessionManager } from '../session-manager.js';
|
|
23
23
|
import type { Logger } from '../logger.js';
|
|
24
24
|
import { type AnyAutoloopMessage } from './messages.js';
|
|
25
|
-
import type
|
|
25
|
+
import { type AgentDispatcher, type AutoloopState, type PushPolicy } from './types.js';
|
|
26
26
|
import { type SpawnSubagentsArgs } from './planner-tools.js';
|
|
27
27
|
export interface ClaudeAgentDispatcherConfig {
|
|
28
28
|
manager: SessionManager;
|
|
@@ -115,6 +115,13 @@ export declare class ClaudeAgentDispatcher extends EventEmitter implements Agent
|
|
|
115
115
|
* deliverToCoder / deliverToReviewer to recover from subprocess deaths.
|
|
116
116
|
*/
|
|
117
117
|
private sendWithRecovery;
|
|
118
|
+
/**
|
|
119
|
+
* Append a structured audit row to `<ledger>/decisions.jsonl`. Best-effort:
|
|
120
|
+
* any I/O failure is logged but never thrown. Captures terminate, reset,
|
|
121
|
+
* push-policy mutations, compact triggers, subagent spawns, phase-error
|
|
122
|
+
* passes, and policy-silence attempts that we rejected.
|
|
123
|
+
*/
|
|
124
|
+
private appendDecisionLog;
|
|
118
125
|
private lastCompactAt;
|
|
119
126
|
private compactSummaryFor;
|
|
120
127
|
private maybeCompact;
|
|
@@ -122,6 +129,13 @@ export declare class ClaudeAgentDispatcher extends EventEmitter implements Agent
|
|
|
122
129
|
private deliverToPlanner;
|
|
123
130
|
private ensureCoder;
|
|
124
131
|
private deliverToCoder;
|
|
132
|
+
/**
|
|
133
|
+
* Compose the Reviewer's system prompt with a frozen snapshot of
|
|
134
|
+
* `reviewer_memory.md` appended. Read once at session start; mid-session
|
|
135
|
+
* edits to the file do NOT take effect until the next Reviewer reset. This
|
|
136
|
+
* keeps the per-iter prompt prefix stable so Claude's prefix cache hits.
|
|
137
|
+
*/
|
|
138
|
+
private buildReviewerSystemPrompt;
|
|
125
139
|
private ensureReviewer;
|
|
126
140
|
/**
|
|
127
141
|
* Stage the iter's artifacts into the Reviewer sandbox cwd. Reviewer is a
|
|
@@ -25,8 +25,22 @@ import { fileURLToPath } from 'node:url';
|
|
|
25
25
|
import { nullLogger } from '../logger.js';
|
|
26
26
|
import { spawn } from 'node:child_process';
|
|
27
27
|
import { Msg } from './messages.js';
|
|
28
|
+
import { LEDGER_SCHEMA_VERSION } from './types.js';
|
|
28
29
|
import { applyPlannerToolCalls, parsePlannerReply, } from './planner-tools.js';
|
|
29
30
|
import { extractIterComplete, extractReviewComplete, parseAgentReply } from './agent-tools.js';
|
|
31
|
+
/**
|
|
32
|
+
* Files inside <ledger>/reviewer_sandbox/ that survive `stageReviewSandbox`.
|
|
33
|
+
* Anything not listed is wiped between iters. `reviewer_memory.md` is also
|
|
34
|
+
* frozen-injected into the Reviewer system prompt at session start, so
|
|
35
|
+
* mid-session edits won't be reread until the next reset.
|
|
36
|
+
*/
|
|
37
|
+
const REVIEWER_SANDBOX_PERSIST = new Set(['reviewer_memory.md', 'reviewer_log.jsonl']);
|
|
38
|
+
/**
|
|
39
|
+
* Push-policy keys that callers MUST NOT be able to silence at runtime.
|
|
40
|
+
* Prompt-injection could otherwise let a confused/malicious Planner mute the
|
|
41
|
+
* channels we use to surface phase errors and decision points.
|
|
42
|
+
*/
|
|
43
|
+
const UNSILENCEABLE_POLICY_KEYS = new Set(['on_phase_error', 'on_decision_needed']);
|
|
30
44
|
function resolveConfigByName(filename) {
|
|
31
45
|
const filePath = fileURLToPath(import.meta.url);
|
|
32
46
|
let dir = path.dirname(filePath);
|
|
@@ -85,7 +99,11 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
85
99
|
await this.ensurePlanner();
|
|
86
100
|
}
|
|
87
101
|
async shutdown(reason) {
|
|
88
|
-
|
|
102
|
+
this.appendDecisionLog({
|
|
103
|
+
kind: 'terminate',
|
|
104
|
+
actor: reason === 'phase_error_circuit' ? 'runner' : 'planner',
|
|
105
|
+
payload: { reason },
|
|
106
|
+
});
|
|
89
107
|
// Best-effort cleanup. Stopping a non-existent session is a no-op.
|
|
90
108
|
for (const name of [this.plannerName, this.coderName, this.reviewerName]) {
|
|
91
109
|
try {
|
|
@@ -135,6 +153,11 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
135
153
|
throw new Error('Refusing to reset Planner without force=true (would discard chat context)');
|
|
136
154
|
}
|
|
137
155
|
const name = agent === 'planner' ? this.plannerName : agent === 'coder' ? this.coderName : this.reviewerName;
|
|
156
|
+
this.appendDecisionLog({
|
|
157
|
+
kind: 'reset_agent',
|
|
158
|
+
actor: 'dispatcher',
|
|
159
|
+
payload: { agent, force: !!opts.force, eagerRestart: !!opts.eagerRestart },
|
|
160
|
+
});
|
|
138
161
|
try {
|
|
139
162
|
await this.config.manager.stopSession(name);
|
|
140
163
|
}
|
|
@@ -177,10 +200,26 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
177
200
|
}
|
|
178
201
|
catch (err2) {
|
|
179
202
|
this.logger.error?.(`[autoloop] ${agent} second attempt failed after reset: ${err2.message}`);
|
|
180
|
-
return { output: '', error: err2.message };
|
|
203
|
+
return { output: '', error: err2.message, fatal: true };
|
|
181
204
|
}
|
|
182
205
|
}
|
|
183
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Append a structured audit row to `<ledger>/decisions.jsonl`. Best-effort:
|
|
209
|
+
* any I/O failure is logged but never thrown. Captures terminate, reset,
|
|
210
|
+
* push-policy mutations, compact triggers, subagent spawns, phase-error
|
|
211
|
+
* passes, and policy-silence attempts that we rejected.
|
|
212
|
+
*/
|
|
213
|
+
appendDecisionLog(entry) {
|
|
214
|
+
try {
|
|
215
|
+
fs.mkdirSync(this.ledgerDir, { recursive: true });
|
|
216
|
+
const line = JSON.stringify({ ts: new Date().toISOString(), ...entry }) + '\n';
|
|
217
|
+
fs.appendFileSync(path.join(this.ledgerDir, 'decisions.jsonl'), line);
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
this.logger.warn?.(`[autoloop] decisions.jsonl append failed: ${err.message}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
184
223
|
// ─── Auto-compact ────────────────────────────────────────────────────────
|
|
185
224
|
//
|
|
186
225
|
// After each agent turn we check getStats().contextPercent. When it crosses
|
|
@@ -236,6 +275,11 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
236
275
|
this.lastCompactAt[agent] = Date.now();
|
|
237
276
|
this.logger.info?.(`[autoloop/${this.config.runId}] ${agent} context ${pct.toFixed(0)}% ≥ ${threshold}% — auto-compact`);
|
|
238
277
|
this.emit('compact', { agent, percent: pct, threshold });
|
|
278
|
+
this.appendDecisionLog({
|
|
279
|
+
kind: 'compact',
|
|
280
|
+
actor: 'dispatcher',
|
|
281
|
+
payload: { agent, percent: pct, threshold },
|
|
282
|
+
});
|
|
239
283
|
try {
|
|
240
284
|
await this.config.manager.compactSession(name, this.compactSummaryFor(agent));
|
|
241
285
|
}
|
|
@@ -293,6 +337,11 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
293
337
|
}
|
|
294
338
|
const effects = {
|
|
295
339
|
spawnSubagents: async (args) => {
|
|
340
|
+
this.appendDecisionLog({
|
|
341
|
+
kind: 'spawn_subagents',
|
|
342
|
+
actor: 'planner',
|
|
343
|
+
payload: { args },
|
|
344
|
+
});
|
|
296
345
|
if (this.config.onSpawnSubagents) {
|
|
297
346
|
await this.config.onSpawnSubagents(args);
|
|
298
347
|
}
|
|
@@ -314,17 +363,46 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
314
363
|
'on_stall_30min',
|
|
315
364
|
'on_decision_needed',
|
|
316
365
|
]);
|
|
366
|
+
const applied = {};
|
|
367
|
+
const silenced_blocked = [];
|
|
317
368
|
for (const [k, v] of Object.entries(delta)) {
|
|
318
369
|
if (!policyKeys.has(k) || typeof v !== 'object' || v === null)
|
|
319
370
|
continue;
|
|
320
|
-
|
|
371
|
+
// B2: refuse to silence the channels that surface phase errors and
|
|
372
|
+
// user decisions. Other fields on the same rule still apply, so the
|
|
373
|
+
// operator can re-target level/channel without going dark.
|
|
374
|
+
const rule = { ...v };
|
|
375
|
+
if (UNSILENCEABLE_POLICY_KEYS.has(k) && rule.silent === true) {
|
|
376
|
+
silenced_blocked.push(k);
|
|
377
|
+
this.logger.warn?.(`[autoloop] refused to set silent=true on critical policy key ${k}`);
|
|
378
|
+
delete rule.silent;
|
|
379
|
+
}
|
|
380
|
+
this.config.pushPolicyRef[k] = rule;
|
|
381
|
+
applied[k] = rule;
|
|
382
|
+
}
|
|
383
|
+
if (silenced_blocked.length > 0) {
|
|
384
|
+
this.appendDecisionLog({
|
|
385
|
+
kind: 'policy_silence_blocked',
|
|
386
|
+
actor: 'planner',
|
|
387
|
+
payload: { keys: silenced_blocked },
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
if (Object.keys(applied).length > 0) {
|
|
391
|
+
this.appendDecisionLog({
|
|
392
|
+
kind: 'update_push_policy',
|
|
393
|
+
actor: 'planner',
|
|
394
|
+
payload: { applied },
|
|
395
|
+
});
|
|
321
396
|
}
|
|
322
397
|
},
|
|
323
398
|
commitPlanFile: async (file, message) => {
|
|
324
399
|
await this.gitCommit(file, message ?? `autoloop: planner commits ${file}`);
|
|
325
400
|
},
|
|
326
401
|
};
|
|
327
|
-
|
|
402
|
+
// After iter_done(N) the run has advanced to iter N+1 in runner state;
|
|
403
|
+
// any directive Planner emits in response targets the new iter.
|
|
404
|
+
const nextIter = env.type === 'iter_done' ? env.iter + 1 : env.iter;
|
|
405
|
+
const handlerResult = await applyPlannerToolCalls(parsed.calls, effects, nextIter);
|
|
328
406
|
for (const errEntry of handlerResult.errors) {
|
|
329
407
|
this.logger.warn?.(`[autoloop] tool '${errEntry.tool}' failed: ${errEntry.error}`);
|
|
330
408
|
}
|
|
@@ -359,6 +437,7 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
359
437
|
const iterDir = path.join(this.ledgerDir, 'iter', String(env.iter));
|
|
360
438
|
fs.mkdirSync(iterDir, { recursive: true });
|
|
361
439
|
fs.writeFileSync(path.join(iterDir, 'directive.json'), JSON.stringify({
|
|
440
|
+
schema_version: LEDGER_SCHEMA_VERSION,
|
|
362
441
|
iter: env.iter,
|
|
363
442
|
ts: env.ts,
|
|
364
443
|
...env.payload,
|
|
@@ -387,13 +466,30 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
387
466
|
.filter(Boolean)
|
|
388
467
|
.join('\n');
|
|
389
468
|
const result = await this.sendWithRecovery('coder', this.coderName, promptText);
|
|
469
|
+
// A3: subprocess died (recovery retry exhausted). Surface as phase_error
|
|
470
|
+
// rather than silently masquerading as a "clarification request"; the
|
|
471
|
+
// runner's circuit breaker can then trip after enough consecutive failures.
|
|
472
|
+
if (result.fatal) {
|
|
473
|
+
this.appendDecisionLog({
|
|
474
|
+
kind: 'phase_error',
|
|
475
|
+
actor: 'dispatcher',
|
|
476
|
+
payload: { agent: 'coder', phase: 'send', error: result.error ?? 'unknown' },
|
|
477
|
+
});
|
|
478
|
+
return [
|
|
479
|
+
Msg.phaseError(env.iter, {
|
|
480
|
+
agent: 'coder',
|
|
481
|
+
phase: 'send',
|
|
482
|
+
error: result.error ?? 'unknown send failure',
|
|
483
|
+
}),
|
|
484
|
+
];
|
|
485
|
+
}
|
|
390
486
|
const replyText = (result.output ?? '').trim();
|
|
391
487
|
const parsed = parseAgentReply(replyText);
|
|
392
488
|
this.emit('coder_reply', parsed.cleaned_reply);
|
|
393
489
|
const ic = extractIterComplete(parsed.calls);
|
|
394
490
|
if (!ic) {
|
|
395
|
-
// No iter_complete emitted — could be a clarification request
|
|
396
|
-
//
|
|
491
|
+
// No iter_complete emitted — could be a clarification request. Return a
|
|
492
|
+
// directive_ack so Planner sees it next turn.
|
|
397
493
|
await this.maybeCompact('coder', this.coderName);
|
|
398
494
|
return [
|
|
399
495
|
Msg.directiveAck(env.iter, {
|
|
@@ -403,7 +499,7 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
403
499
|
];
|
|
404
500
|
}
|
|
405
501
|
// Persist eval output to ledger.
|
|
406
|
-
fs.writeFileSync(path.join(iterDir, 'eval_output.json'), JSON.stringify(ic.eval_output, null, 2));
|
|
502
|
+
fs.writeFileSync(path.join(iterDir, 'eval_output.json'), JSON.stringify({ schema_version: LEDGER_SCHEMA_VERSION, iter: env.iter, eval_output: ic.eval_output }, null, 2));
|
|
407
503
|
fs.writeFileSync(path.join(iterDir, 'coder_summary.txt'), `${ic.summary}\n\n--- coder cleaned reply ---\n${parsed.cleaned_reply}\n`);
|
|
408
504
|
// Compute diff + files_changed via git so we don't trust Coder's claim.
|
|
409
505
|
const diffOut = await this.runGit(['git', 'diff', '--unified=3']);
|
|
@@ -419,7 +515,23 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
419
515
|
// Commit the iteration so Reviewer's git view is clean for the next iter.
|
|
420
516
|
await this.runGit(['git', 'add', '-A']);
|
|
421
517
|
const commitMsg = `autoloop/iter-${env.iter}: ${ic.summary}`.slice(0, 200);
|
|
422
|
-
await this.runGit(['git', 'commit', '-m', commitMsg]);
|
|
518
|
+
const commitRes = await this.runGit(['git', 'commit', '-m', commitMsg]);
|
|
519
|
+
// A6: a non-"nothing to commit" failure (hook reject, signing missing,
|
|
520
|
+
// index lock) means the next iter's diff would be wrong. Bail to runner.
|
|
521
|
+
if (commitRes.code !== 0 && !/nothing to commit/i.test(commitRes.out + commitRes.err)) {
|
|
522
|
+
this.appendDecisionLog({
|
|
523
|
+
kind: 'phase_error',
|
|
524
|
+
actor: 'dispatcher',
|
|
525
|
+
payload: { agent: 'coder', phase: 'git_commit', error: commitRes.err.slice(0, 500) },
|
|
526
|
+
});
|
|
527
|
+
return [
|
|
528
|
+
Msg.phaseError(env.iter, {
|
|
529
|
+
agent: 'coder',
|
|
530
|
+
phase: 'git_commit',
|
|
531
|
+
error: `git commit failed (code=${commitRes.code}): ${commitRes.err.slice(0, 300)}`,
|
|
532
|
+
}),
|
|
533
|
+
];
|
|
534
|
+
}
|
|
423
535
|
await this.maybeCompact('coder', this.coderName);
|
|
424
536
|
return [
|
|
425
537
|
Msg.iterArtifacts(env.iter, {
|
|
@@ -430,6 +542,38 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
430
542
|
];
|
|
431
543
|
}
|
|
432
544
|
// ─── Reviewer ───────────────────────────────────────────────────────────
|
|
545
|
+
/**
|
|
546
|
+
* Compose the Reviewer's system prompt with a frozen snapshot of
|
|
547
|
+
* `reviewer_memory.md` appended. Read once at session start; mid-session
|
|
548
|
+
* edits to the file do NOT take effect until the next Reviewer reset. This
|
|
549
|
+
* keeps the per-iter prompt prefix stable so Claude's prefix cache hits.
|
|
550
|
+
*/
|
|
551
|
+
buildReviewerSystemPrompt() {
|
|
552
|
+
const memoryPath = path.join(this.reviewerSandboxDir, 'reviewer_memory.md');
|
|
553
|
+
let memory = '';
|
|
554
|
+
try {
|
|
555
|
+
if (fs.existsSync(memoryPath)) {
|
|
556
|
+
memory = fs.readFileSync(memoryPath, 'utf-8').trim();
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
catch (err) {
|
|
560
|
+
this.logger.warn?.(`[autoloop] failed to read reviewer_memory.md: ${err.message}`);
|
|
561
|
+
}
|
|
562
|
+
if (!memory)
|
|
563
|
+
return this.reviewerSystemPrompt;
|
|
564
|
+
return [
|
|
565
|
+
this.reviewerSystemPrompt.trimEnd(),
|
|
566
|
+
'',
|
|
567
|
+
'<frozen_memory_snapshot>',
|
|
568
|
+
memory,
|
|
569
|
+
'</frozen_memory_snapshot>',
|
|
570
|
+
'',
|
|
571
|
+
'The snapshot above was injected into your system prompt at session start',
|
|
572
|
+
'and is frozen for this Reviewer session. Append new fakery patterns or',
|
|
573
|
+
'observations to reviewer_memory.md on disk; they will be re-injected on',
|
|
574
|
+
'the next Reviewer reset, not mid-session.',
|
|
575
|
+
].join('\n');
|
|
576
|
+
}
|
|
433
577
|
async ensureReviewer() {
|
|
434
578
|
if (this.reviewerStarted)
|
|
435
579
|
return;
|
|
@@ -440,7 +584,7 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
440
584
|
engine: 'claude',
|
|
441
585
|
model: this.reviewerModel,
|
|
442
586
|
permissionMode: 'bypassPermissions',
|
|
443
|
-
systemPrompt: this.
|
|
587
|
+
systemPrompt: this.buildReviewerSystemPrompt(),
|
|
444
588
|
});
|
|
445
589
|
this.reviewerStarted = true;
|
|
446
590
|
}
|
|
@@ -451,9 +595,11 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
451
595
|
*/
|
|
452
596
|
stageReviewSandbox(iter) {
|
|
453
597
|
fs.mkdirSync(this.reviewerSandboxDir, { recursive: true });
|
|
454
|
-
// Wipe top-level files
|
|
598
|
+
// Wipe top-level files but preserve the Reviewer's cross-iter memory and
|
|
599
|
+
// append-only audit log (see REVIEWER_SANDBOX_PERSIST). The Reviewer prompt
|
|
600
|
+
// promises both survive across iters; the wipe used to break the log.
|
|
455
601
|
for (const ent of fs.readdirSync(this.reviewerSandboxDir)) {
|
|
456
|
-
if (ent
|
|
602
|
+
if (REVIEWER_SANDBOX_PERSIST.has(ent))
|
|
457
603
|
continue;
|
|
458
604
|
const full = path.join(this.reviewerSandboxDir, ent);
|
|
459
605
|
try {
|
|
@@ -500,6 +646,20 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
500
646
|
'Audit and emit `review_complete`.',
|
|
501
647
|
].join('\n');
|
|
502
648
|
const result = await this.sendWithRecovery('reviewer', this.reviewerName, promptText);
|
|
649
|
+
if (result.fatal) {
|
|
650
|
+
this.appendDecisionLog({
|
|
651
|
+
kind: 'phase_error',
|
|
652
|
+
actor: 'dispatcher',
|
|
653
|
+
payload: { agent: 'reviewer', phase: 'send', error: result.error ?? 'unknown' },
|
|
654
|
+
});
|
|
655
|
+
return [
|
|
656
|
+
Msg.phaseError(env.payload.iter, {
|
|
657
|
+
agent: 'reviewer',
|
|
658
|
+
phase: 'send',
|
|
659
|
+
error: result.error ?? 'unknown send failure',
|
|
660
|
+
}),
|
|
661
|
+
];
|
|
662
|
+
}
|
|
503
663
|
const replyText = (result.output ?? '').trim();
|
|
504
664
|
const parsed = parseAgentReply(replyText);
|
|
505
665
|
this.emit('reviewer_reply', parsed.cleaned_reply);
|
|
@@ -527,7 +687,7 @@ export class ClaudeAgentDispatcher extends EventEmitter {
|
|
|
527
687
|
persistVerdict(iter, payload) {
|
|
528
688
|
const iterDir = path.join(this.ledgerDir, 'iter', String(iter));
|
|
529
689
|
fs.mkdirSync(iterDir, { recursive: true });
|
|
530
|
-
fs.writeFileSync(path.join(iterDir, 'verdict.json'), JSON.stringify({ iter, ts: new Date().toISOString(), ...payload }, null, 2));
|
|
690
|
+
fs.writeFileSync(path.join(iterDir, 'verdict.json'), JSON.stringify({ schema_version: LEDGER_SCHEMA_VERSION, iter, ts: new Date().toISOString(), ...payload }, null, 2));
|
|
531
691
|
}
|
|
532
692
|
/** Run a git command in the workspace; returns combined output. Used by Coder commits. */
|
|
533
693
|
async runGit(argv) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../src/autoloop/dispatcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../src/autoloop/dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,7 +70,19 @@ export type ResumePayload = Record<string, never>;
|
|
|
70
70
|
export interface TerminatePayload {
|
|
71
71
|
reason: string;
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Surfaced when an agent subprocess dies, a phase-bound side effect fails
|
|
75
|
+
* (e.g., git commit), or any other unrecoverable per-iter error needs to
|
|
76
|
+
* become visible to the runner instead of being swallowed inside a fake
|
|
77
|
+
* directive_ack. The runner counts consecutive phase_errors and trips a
|
|
78
|
+
* circuit-breaker terminate when the configured threshold is reached.
|
|
79
|
+
*/
|
|
80
|
+
export interface PhaseErrorPayload {
|
|
81
|
+
agent: 'planner' | 'coder' | 'reviewer';
|
|
82
|
+
phase: string;
|
|
83
|
+
error: string;
|
|
84
|
+
}
|
|
85
|
+
export type AutoloopMessageType = 'chat' | 'directive' | 'directive_ack' | 'iter_artifacts' | 'review_request' | 'review_verdict' | 'iter_done' | 'push_user' | 'pause' | 'resume' | 'terminate' | 'phase_error';
|
|
74
86
|
type PayloadMap = {
|
|
75
87
|
chat: UserChatPayload;
|
|
76
88
|
directive: DirectivePayload;
|
|
@@ -83,6 +95,7 @@ type PayloadMap = {
|
|
|
83
95
|
pause: PausePayload;
|
|
84
96
|
resume: ResumePayload;
|
|
85
97
|
terminate: TerminatePayload;
|
|
98
|
+
phase_error: PhaseErrorPayload;
|
|
86
99
|
};
|
|
87
100
|
export type PayloadFor<T extends AutoloopMessageType> = PayloadMap[T];
|
|
88
101
|
export type AnyAutoloopMessage = {
|
|
@@ -105,6 +118,7 @@ export declare const Msg: {
|
|
|
105
118
|
pause: (iter: number, payload: PausePayload) => AutoloopEnvelope<"pause">;
|
|
106
119
|
resume: (iter: number) => AutoloopEnvelope<"resume">;
|
|
107
120
|
terminate: (iter: number, payload: TerminatePayload) => AutoloopEnvelope<"terminate">;
|
|
121
|
+
phaseError: (iter: number, payload: PhaseErrorPayload) => AutoloopEnvelope<"phase_error">;
|
|
108
122
|
};
|
|
109
123
|
export declare function serialise(env: AnyAutoloopMessage): {
|
|
110
124
|
text: string;
|
|
@@ -29,6 +29,9 @@ const ALLOWED_ROUTES = [
|
|
|
29
29
|
['planner', 'runner', 'pause'],
|
|
30
30
|
['planner', 'runner', 'resume'],
|
|
31
31
|
['planner', 'runner', 'terminate'],
|
|
32
|
+
['coder', 'runner', 'phase_error'],
|
|
33
|
+
['reviewer', 'runner', 'phase_error'],
|
|
34
|
+
['planner', 'runner', 'phase_error'],
|
|
32
35
|
];
|
|
33
36
|
export class AutoloopRoutingError extends Error {
|
|
34
37
|
envelope;
|
|
@@ -74,6 +77,7 @@ export const Msg = {
|
|
|
74
77
|
pause: (iter, payload) => envelope(iter, 'planner', 'runner', 'pause', payload),
|
|
75
78
|
resume: (iter) => envelope(iter, 'planner', 'runner', 'resume', {}),
|
|
76
79
|
terminate: (iter, payload) => envelope(iter, 'planner', 'runner', 'terminate', payload),
|
|
80
|
+
phaseError: (iter, payload) => envelope(iter, payload.agent, 'runner', 'phase_error', payload),
|
|
77
81
|
};
|
|
78
82
|
// ─── Wire serialisation (for InboxManager transport) ─────────────────────────
|
|
79
83
|
export function serialise(env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/autoloop/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/autoloop/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,10 +18,15 @@ import { nullLogger } from '../logger.js';
|
|
|
18
18
|
// Set the following env vars before relying on the matching channel; if a
|
|
19
19
|
// var is unset that channel is silently skipped and the fallback chain moves
|
|
20
20
|
// on. Email (independent SMTP via push-api-skill script) is the final tier
|
|
21
|
-
// regardless of these.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
// regardless of these. Read at call time (not module load) so the operator
|
|
22
|
+
// can rotate the env without restarting the whole orchestrator.
|
|
23
|
+
function readRecipientEnv() {
|
|
24
|
+
return {
|
|
25
|
+
wechatRecipient: process.env.AUTOLOOP_WECHAT_RECIPIENT ?? '',
|
|
26
|
+
wechatAccount: process.env.AUTOLOOP_WECHAT_ACCOUNT ?? '',
|
|
27
|
+
whatsappRecipient: process.env.AUTOLOOP_WHATSAPP_RECIPIENT ?? '',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
25
30
|
async function runCmd(argv, opts = {}) {
|
|
26
31
|
const timeoutMs = opts.timeoutMs ?? 30_000;
|
|
27
32
|
return new Promise((resolve) => {
|
|
@@ -61,7 +66,8 @@ function formatMessage(level, summary) {
|
|
|
61
66
|
return `${emoji} ${summary}`;
|
|
62
67
|
}
|
|
63
68
|
async function tryWechat(text, logger) {
|
|
64
|
-
|
|
69
|
+
const { wechatRecipient, wechatAccount } = readRecipientEnv();
|
|
70
|
+
if (!wechatRecipient || !wechatAccount) {
|
|
65
71
|
logger.info?.('[autoloop/notify] wechat skipped: AUTOLOOP_WECHAT_RECIPIENT / AUTOLOOP_WECHAT_ACCOUNT not set');
|
|
66
72
|
return false;
|
|
67
73
|
}
|
|
@@ -72,9 +78,9 @@ async function tryWechat(text, logger) {
|
|
|
72
78
|
'--channel',
|
|
73
79
|
'openclaw-weixin',
|
|
74
80
|
'--account',
|
|
75
|
-
|
|
81
|
+
wechatAccount,
|
|
76
82
|
'-t',
|
|
77
|
-
|
|
83
|
+
wechatRecipient,
|
|
78
84
|
'-m',
|
|
79
85
|
text,
|
|
80
86
|
]);
|
|
@@ -84,21 +90,12 @@ async function tryWechat(text, logger) {
|
|
|
84
90
|
return false;
|
|
85
91
|
}
|
|
86
92
|
async function tryWhatsApp(text, logger) {
|
|
87
|
-
|
|
93
|
+
const { whatsappRecipient } = readRecipientEnv();
|
|
94
|
+
if (!whatsappRecipient) {
|
|
88
95
|
logger.info?.('[autoloop/notify] whatsapp skipped: AUTOLOOP_WHATSAPP_RECIPIENT not set');
|
|
89
96
|
return false;
|
|
90
97
|
}
|
|
91
|
-
const r = await runCmd([
|
|
92
|
-
'openclaw',
|
|
93
|
-
'message',
|
|
94
|
-
'send',
|
|
95
|
-
'--channel',
|
|
96
|
-
'whatsapp',
|
|
97
|
-
'-t',
|
|
98
|
-
WHATSAPP_RECIPIENT,
|
|
99
|
-
'-m',
|
|
100
|
-
text,
|
|
101
|
-
]);
|
|
98
|
+
const r = await runCmd(['openclaw', 'message', 'send', '--channel', 'whatsapp', '-t', whatsappRecipient, '-m', text]);
|
|
102
99
|
if (r.exit_code === 0 && /✅\s*Sent/.test(r.stdout))
|
|
103
100
|
return true;
|
|
104
101
|
logger.warn?.(`[autoloop/notify] whatsapp failed: code=${r.exit_code} stderr=${r.stderr.slice(0, 200)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../src/autoloop/notify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAe,UAAU,EAAE,MAAM,cAAc,CAAC;AAEvD,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../src/autoloop/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,13 +27,23 @@ export declare class AutoloopRunner extends EventEmitter {
|
|
|
27
27
|
state: AutoloopState;
|
|
28
28
|
/** Queue of messages awaiting routing. Drained by the active dispatch loop. */
|
|
29
29
|
private queue;
|
|
30
|
+
/**
|
|
31
|
+
* Holds agent-bound messages that arrived while status === 'paused'.
|
|
32
|
+
* On `resume`, they are unshifted back onto the queue head in order so
|
|
33
|
+
* the loop continues exactly where it stopped.
|
|
34
|
+
*/
|
|
35
|
+
private pausedBuffer;
|
|
30
36
|
private draining;
|
|
31
37
|
private regressionStreak;
|
|
32
38
|
private rejectStreak;
|
|
33
39
|
/** Recent push events for dedup (5 min window). */
|
|
34
40
|
private recentPushes;
|
|
41
|
+
private stallTimer;
|
|
35
42
|
constructor(config: AutoloopConfig);
|
|
36
43
|
start(): Promise<void>;
|
|
44
|
+
/** Stop the stall detector; safe to call multiple times. Tests use this. */
|
|
45
|
+
stop(): void;
|
|
46
|
+
private startStallDetector;
|
|
37
47
|
/** Enqueue a message and drain the queue. Resolves when the queue is idle. */
|
|
38
48
|
send(env: AnyAutoloopMessage): Promise<void>;
|
|
39
49
|
/** External entry: user typed something to Planner. */
|
|
@@ -12,8 +12,11 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { EventEmitter } from 'node:events';
|
|
14
14
|
import { AutoloopRoutingError, Msg, validateMessage } from './messages.js';
|
|
15
|
-
import { DEFAULT_PUSH_POLICY } from './types.js';
|
|
15
|
+
import { DEFAULT_PUSH_POLICY, MAX_METRIC_HISTORY } from './types.js';
|
|
16
16
|
const MAX_DISPATCH_DEPTH = 64;
|
|
17
|
+
const DEFAULT_PHASE_ERROR_CIRCUIT = 3;
|
|
18
|
+
const DEFAULT_STALL_MS = 30 * 60_000;
|
|
19
|
+
const DEFAULT_STALL_CHECK_MS = 30_000;
|
|
17
20
|
/**
|
|
18
21
|
* Events emitted by the runner (string keys, documented payloads):
|
|
19
22
|
* - 'message' : (env: AnyAutoloopMessage) — every routed message
|
|
@@ -28,11 +31,18 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
28
31
|
state;
|
|
29
32
|
/** Queue of messages awaiting routing. Drained by the active dispatch loop. */
|
|
30
33
|
queue = [];
|
|
34
|
+
/**
|
|
35
|
+
* Holds agent-bound messages that arrived while status === 'paused'.
|
|
36
|
+
* On `resume`, they are unshifted back onto the queue head in order so
|
|
37
|
+
* the loop continues exactly where it stopped.
|
|
38
|
+
*/
|
|
39
|
+
pausedBuffer = [];
|
|
31
40
|
draining = false;
|
|
32
41
|
regressionStreak = 0;
|
|
33
42
|
rejectStreak = 0;
|
|
34
43
|
/** Recent push events for dedup (5 min window). */
|
|
35
44
|
recentPushes = [];
|
|
45
|
+
stallTimer = null;
|
|
36
46
|
constructor(config) {
|
|
37
47
|
super();
|
|
38
48
|
this.config = config;
|
|
@@ -46,12 +56,43 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
46
56
|
ledger_dir: config.ledger_dir,
|
|
47
57
|
push_log_count: 0,
|
|
48
58
|
status_reason: null,
|
|
59
|
+
consecutive_phase_errors: 0,
|
|
60
|
+
recent_phase_errors: [],
|
|
61
|
+
metric_history: [],
|
|
62
|
+
last_activity_at: Date.now(),
|
|
49
63
|
};
|
|
50
64
|
}
|
|
51
65
|
async start() {
|
|
52
66
|
await this.config.dispatcher.init?.(this.state);
|
|
53
67
|
// Surface initial state so listeners can render the planning UI.
|
|
54
68
|
this.emit('state', this.state);
|
|
69
|
+
this.startStallDetector();
|
|
70
|
+
}
|
|
71
|
+
/** Stop the stall detector; safe to call multiple times. Tests use this. */
|
|
72
|
+
stop() {
|
|
73
|
+
if (this.stallTimer) {
|
|
74
|
+
clearInterval(this.stallTimer);
|
|
75
|
+
this.stallTimer = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
startStallDetector() {
|
|
79
|
+
if (this.stallTimer)
|
|
80
|
+
return;
|
|
81
|
+
const stallMs = this.config.stallMs ?? DEFAULT_STALL_MS;
|
|
82
|
+
const intervalMs = this.config.stallCheckIntervalMs ?? DEFAULT_STALL_CHECK_MS;
|
|
83
|
+
this.stallTimer = setInterval(() => {
|
|
84
|
+
if (this.state.status !== 'running')
|
|
85
|
+
return;
|
|
86
|
+
const idleFor = Date.now() - this.state.last_activity_at;
|
|
87
|
+
if (idleFor < stallMs)
|
|
88
|
+
return;
|
|
89
|
+
// Reuse the policy-push pipeline so dedup applies.
|
|
90
|
+
void this.firePolicyPush('on_stall_30min', this.state.iter).catch((err) => {
|
|
91
|
+
this.emit('error', err);
|
|
92
|
+
});
|
|
93
|
+
}, intervalMs);
|
|
94
|
+
// Don't keep node alive solely for stall checking.
|
|
95
|
+
this.stallTimer?.unref?.();
|
|
55
96
|
}
|
|
56
97
|
/** Enqueue a message and drain the queue. Resolves when the queue is idle. */
|
|
57
98
|
async send(env) {
|
|
@@ -94,6 +135,7 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
94
135
|
}
|
|
95
136
|
async handleOne(env) {
|
|
96
137
|
this.emit('message', env);
|
|
138
|
+
this.state.last_activity_at = Date.now();
|
|
97
139
|
// Runner is the target for a small set of messages — handle them inline.
|
|
98
140
|
if (env.to === 'runner') {
|
|
99
141
|
await this.handleRunnerInbox(env);
|
|
@@ -108,6 +150,12 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
108
150
|
// Everything else goes to the agent dispatcher.
|
|
109
151
|
if (this.state.status === 'terminated')
|
|
110
152
|
return;
|
|
153
|
+
// Pause: park agent-bound messages until resume. Runner-bound (resume /
|
|
154
|
+
// terminate) and user-bound (push) flow through above and are unaffected.
|
|
155
|
+
if (this.state.status === 'paused') {
|
|
156
|
+
this.pausedBuffer.push(env);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
111
159
|
const replies = await this.config.dispatcher.deliver(env);
|
|
112
160
|
for (const r of replies) {
|
|
113
161
|
validateMessage(r);
|
|
@@ -121,7 +169,7 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
121
169
|
const req = Msg.reviewRequest(env.iter, {
|
|
122
170
|
iter: env.iter,
|
|
123
171
|
ledger_path: this.config.ledger_dir,
|
|
124
|
-
prior_metrics:
|
|
172
|
+
prior_metrics: this.state.metric_history.slice(-10),
|
|
125
173
|
});
|
|
126
174
|
this.queue.push(req);
|
|
127
175
|
return;
|
|
@@ -139,6 +187,16 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
139
187
|
this.regressionStreak++;
|
|
140
188
|
else
|
|
141
189
|
this.regressionStreak = 0;
|
|
190
|
+
// A non-error iter resets the phase-error circuit.
|
|
191
|
+
this.state.consecutive_phase_errors = 0;
|
|
192
|
+
this.state.recent_phase_errors = [];
|
|
193
|
+
// A7: record metric for prior_metrics on the next review_request.
|
|
194
|
+
if (typeof v.metric === 'number' && Number.isFinite(v.metric)) {
|
|
195
|
+
this.state.metric_history.push(v.metric);
|
|
196
|
+
if (this.state.metric_history.length > MAX_METRIC_HISTORY) {
|
|
197
|
+
this.state.metric_history.splice(0, this.state.metric_history.length - MAX_METRIC_HISTORY);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
142
200
|
const done = Msg.iterDone(env.iter, {
|
|
143
201
|
iter: env.iter,
|
|
144
202
|
verdict: v.decision,
|
|
@@ -146,6 +204,10 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
146
204
|
regression,
|
|
147
205
|
});
|
|
148
206
|
this.queue.push(done);
|
|
207
|
+
// A1: advance iter counter after a verdict is committed. The new iter
|
|
208
|
+
// becomes addressable for follow-up directives, push events, and SSE.
|
|
209
|
+
this.state.iter = env.iter + 1;
|
|
210
|
+
this.emit('state', this.state);
|
|
149
211
|
this.emit('iter_done', { iter: env.iter, verdict: v.decision, metric: v.metric });
|
|
150
212
|
// Trigger policy-based push hooks.
|
|
151
213
|
if (this.regressionStreak >= 2)
|
|
@@ -154,6 +216,39 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
154
216
|
await this.firePolicyPush('on_reviewer_reject_2', env.iter);
|
|
155
217
|
return;
|
|
156
218
|
}
|
|
219
|
+
case 'phase_error': {
|
|
220
|
+
// A3 + C2: track consecutive failures and trip the circuit breaker.
|
|
221
|
+
const p = env.payload;
|
|
222
|
+
this.state.consecutive_phase_errors += 1;
|
|
223
|
+
this.state.recent_phase_errors.push({
|
|
224
|
+
ts: env.ts,
|
|
225
|
+
agent: p.agent,
|
|
226
|
+
phase: p.phase,
|
|
227
|
+
error: p.error,
|
|
228
|
+
});
|
|
229
|
+
if (this.state.recent_phase_errors.length > 5) {
|
|
230
|
+
this.state.recent_phase_errors.splice(0, this.state.recent_phase_errors.length - 5);
|
|
231
|
+
}
|
|
232
|
+
this.emit('state', this.state);
|
|
233
|
+
this.emit('phase_error', p);
|
|
234
|
+
await this.firePolicyPush('on_phase_error', env.iter);
|
|
235
|
+
const circuit = this.config.phaseErrorCircuit ?? DEFAULT_PHASE_ERROR_CIRCUIT;
|
|
236
|
+
if (this.state.consecutive_phase_errors >= circuit) {
|
|
237
|
+
const detail = this.state.recent_phase_errors
|
|
238
|
+
.map((e) => `${e.agent}/${e.phase}: ${e.error.slice(0, 160)}`)
|
|
239
|
+
.join('\n');
|
|
240
|
+
this.queue.push(Msg.pushUser(env.iter, {
|
|
241
|
+
level: 'decision',
|
|
242
|
+
summary: `phase-error circuit tripped (${this.state.consecutive_phase_errors} consecutive)`,
|
|
243
|
+
detail,
|
|
244
|
+
channel: 'both',
|
|
245
|
+
}));
|
|
246
|
+
this.queue.push(Msg.terminate(env.iter, {
|
|
247
|
+
reason: 'phase_error_circuit',
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
157
252
|
case 'pause': {
|
|
158
253
|
this.state.status = 'paused';
|
|
159
254
|
this.state.status_reason = env.payload.reason;
|
|
@@ -164,6 +259,13 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
164
259
|
if (this.state.status === 'paused') {
|
|
165
260
|
this.state.status = 'running';
|
|
166
261
|
this.state.status_reason = null;
|
|
262
|
+
// Restore parked agent-bound messages at the queue head, preserving
|
|
263
|
+
// arrival order so the loop continues from where pause caught it.
|
|
264
|
+
while (this.pausedBuffer.length > 0) {
|
|
265
|
+
const item = this.pausedBuffer.pop();
|
|
266
|
+
if (item)
|
|
267
|
+
this.queue.unshift(item);
|
|
268
|
+
}
|
|
167
269
|
this.emit('state', this.state);
|
|
168
270
|
}
|
|
169
271
|
return;
|
|
@@ -171,6 +273,7 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
171
273
|
case 'terminate': {
|
|
172
274
|
this.state.status = 'terminated';
|
|
173
275
|
this.state.status_reason = env.payload.reason;
|
|
276
|
+
this.stop();
|
|
174
277
|
this.emit('state', this.state);
|
|
175
278
|
await this.config.dispatcher.shutdown?.(env.payload.reason);
|
|
176
279
|
this.emit('terminated', env.payload.reason);
|
|
@@ -209,6 +312,13 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
209
312
|
summary,
|
|
210
313
|
channel: r.channel ?? 'auto',
|
|
211
314
|
}));
|
|
315
|
+
// When firePolicyPush is called from outside a running drain (e.g. the
|
|
316
|
+
// stall-detector interval), the queued message would otherwise sit until
|
|
317
|
+
// the next send(). Kick the drain — the re-entrancy guard makes this safe
|
|
318
|
+
// when we ARE inside a drain.
|
|
319
|
+
if (!this.draining) {
|
|
320
|
+
await this.drain();
|
|
321
|
+
}
|
|
212
322
|
}
|
|
213
323
|
}
|
|
214
324
|
//# sourceMappingURL=runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/autoloop/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/autoloop/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,28 @@ export interface AutoloopState {
|
|
|
17
17
|
push_log_count: number;
|
|
18
18
|
/** Last reason set when status flips to terminated/crashed/paused. */
|
|
19
19
|
status_reason: string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Phase-error circuit breaker — incremented on every `phase_error` message,
|
|
22
|
+
* cleared on each successful (non-error) `iter_done`. When it reaches
|
|
23
|
+
* `AutoloopConfig.phaseErrorCircuit`, the runner auto-terminates.
|
|
24
|
+
*/
|
|
25
|
+
consecutive_phase_errors: number;
|
|
26
|
+
/** Recent (≤ 3) phase_error payloads kept around for circuit-trip push detail. */
|
|
27
|
+
recent_phase_errors: Array<{
|
|
28
|
+
ts: string;
|
|
29
|
+
agent: string;
|
|
30
|
+
phase: string;
|
|
31
|
+
error: string;
|
|
32
|
+
}>;
|
|
33
|
+
/** Recent metric history (most-recent last, capped at MAX_METRIC_HISTORY). */
|
|
34
|
+
metric_history: number[];
|
|
35
|
+
/** ms since epoch of the last handled message; used by stall detector. */
|
|
36
|
+
last_activity_at: number;
|
|
20
37
|
}
|
|
38
|
+
/** How many metric points the runner remembers for prior_metrics injection. */
|
|
39
|
+
export declare const MAX_METRIC_HISTORY = 20;
|
|
40
|
+
/** Schema version stamped onto every ledger artifact (directive/eval/verdict.json). */
|
|
41
|
+
export declare const LEDGER_SCHEMA_VERSION = 1;
|
|
21
42
|
export interface PushPolicyRule {
|
|
22
43
|
silent?: boolean;
|
|
23
44
|
level?: PushLevel;
|
|
@@ -66,4 +87,21 @@ export interface AutoloopConfig {
|
|
|
66
87
|
notifyUser: (level: PushLevel, summary: string, detail: string | undefined, channel: PushChannel) => Promise<void>;
|
|
67
88
|
/** Agent transport layer (mockable). */
|
|
68
89
|
dispatcher: AgentDispatcher;
|
|
90
|
+
/**
|
|
91
|
+
* Phase-error circuit threshold. After this many consecutive `phase_error`
|
|
92
|
+
* messages the runner auto-terminates with reason `phase_error_circuit`
|
|
93
|
+
* (and emits a decision-level push first). Default 3.
|
|
94
|
+
*/
|
|
95
|
+
phaseErrorCircuit?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Stall detection wall-clock budget (ms). When no message has been
|
|
98
|
+
* processed for this long and status is 'running', the runner fires
|
|
99
|
+
* `on_stall_30min`. Default 30 min.
|
|
100
|
+
*/
|
|
101
|
+
stallMs?: number;
|
|
102
|
+
/**
|
|
103
|
+
* Stall check interval (ms). Default 30 s. Tests pass a smaller value
|
|
104
|
+
* along with shorter `stallMs` so the assertions complete quickly.
|
|
105
|
+
*/
|
|
106
|
+
stallCheckIntervalMs?: number;
|
|
69
107
|
}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Contract: tasks/autoloop.md.
|
|
5
5
|
*/
|
|
6
|
+
/** How many metric points the runner remembers for prior_metrics injection. */
|
|
7
|
+
export const MAX_METRIC_HISTORY = 20;
|
|
8
|
+
/** Schema version stamped onto every ledger artifact (directive/eval/verdict.json). */
|
|
9
|
+
export const LEDGER_SCHEMA_VERSION = 1;
|
|
6
10
|
export const DEFAULT_PUSH_POLICY = {
|
|
7
11
|
on_start: { level: 'info', channel: 'wechat' },
|
|
8
12
|
on_iter_done_ok: { silent: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/autoloop/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/autoloop/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgCH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,uFAAuF;AACvF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAmBvC,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9C,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IACjC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IACjD,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IAC1D,oBAAoB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IACxD,cAAc,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;IACnD,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;IACpD,kBAAkB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE;CAC3D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enderfga/claw-orchestrator",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "Claw Orchestrator — run Claude Code, Codex, Gemini, Cursor Agent, OpenCode and custom coding CLIs as one unified runtime for claw-style agent systems. Runs standalone, with first-class OpenClaw plugin support. Persistent sessions, multi-agent council, tool orchestration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -119,7 +119,60 @@ never see the JSON — only the Planner's narrative.
|
|
|
119
119
|
5-minute dedup on (level, summary) prevents duplicate pushes from the same
|
|
120
120
|
event. Channel chain: `auto` walks wechat → whatsapp → email; `wechat` /
|
|
121
121
|
`webchat` / `email` route directly; `both` does webchat (if session known)
|
|
122
|
-
+ wechat fallback chain.
|
|
122
|
+
+ wechat fallback chain. **`on_phase_error` and `on_decision_needed` cannot
|
|
123
|
+
be set to `silent: true`** by Planner — `update_push_policy` strips the flag
|
|
124
|
+
and records the attempt in `decisions.jsonl` (these channels are the
|
|
125
|
+
operator's lifeline; they stay loud).
|
|
126
|
+
|
|
127
|
+
## Auto-compact
|
|
128
|
+
|
|
129
|
+
Each agent's context is monitored after every turn. When `getStats().contextPercent`
|
|
130
|
+
crosses the per-agent threshold the dispatcher invokes `/compact` with a
|
|
131
|
+
role-tuned hint (`compactSummaryFor`). Defaults: Planner 80 %, Coder 70 %,
|
|
132
|
+
Reviewer 70 %. Override per run via `compactThresholds`. A 30 s debounce
|
|
133
|
+
prevents re-fire while post-compact stats settle. Events: `compact` is
|
|
134
|
+
emitted on the dispatcher EventEmitter AND appended to `decisions.jsonl`.
|
|
135
|
+
|
|
136
|
+
## Phase-error circuit
|
|
137
|
+
|
|
138
|
+
Subprocess deaths (Claude session lost), failed `git commit` in an iter, and
|
|
139
|
+
other phase-bound failures surface as `phase_error` messages instead of
|
|
140
|
+
silently masquerading as a "clarification request". The runner counts
|
|
141
|
+
consecutive `phase_error`s and:
|
|
142
|
+
|
|
143
|
+
1. Fires `on_phase_error` on each one (defaults to error / both channels).
|
|
144
|
+
2. After `phaseErrorCircuit` consecutive errors (default **3**) emits a
|
|
145
|
+
`decision`-level push and an automatic `terminate { reason:
|
|
146
|
+
'phase_error_circuit' }`.
|
|
147
|
+
|
|
148
|
+
A successful (non-error) `iter_done` resets the counter. Override the
|
|
149
|
+
threshold via `AutoloopConfig.phaseErrorCircuit`.
|
|
150
|
+
|
|
151
|
+
## Reviewer frozen memory
|
|
152
|
+
|
|
153
|
+
`reviewer_memory.md` is read at Reviewer-session start and **injected as a
|
|
154
|
+
frozen `<frozen_memory_snapshot>` block** into the system prompt. It stays
|
|
155
|
+
constant for the lifetime of that session so Claude's prefix cache hits.
|
|
156
|
+
Reviewer can append fresh observations to the file on disk; those edits
|
|
157
|
+
become visible only on the next Reviewer reset (`autoloop_reset_agent`
|
|
158
|
+
with `agent: 'reviewer', eager_restart: true`).
|
|
159
|
+
|
|
160
|
+
## Decisions audit
|
|
161
|
+
|
|
162
|
+
`<ledger>/decisions.jsonl` is the auditable trail of runner / dispatcher
|
|
163
|
+
decisions:
|
|
164
|
+
|
|
165
|
+
| Kind | When |
|
|
166
|
+
|---|---|
|
|
167
|
+
| `spawn_subagents` | Planner emits `spawn_subagents` |
|
|
168
|
+
| `reset_agent` | Any agent reset (manual or auto-recovery) |
|
|
169
|
+
| `compact` | Auto-compact fires |
|
|
170
|
+
| `update_push_policy` | Planner mutates the policy |
|
|
171
|
+
| `policy_silence_blocked` | Planner tried to silence a critical channel |
|
|
172
|
+
| `phase_error` | Surfaced from dispatcher to runner |
|
|
173
|
+
| `terminate` | Run ends (planner reason or `phase_error_circuit`) |
|
|
174
|
+
|
|
175
|
+
JSONL, one entry per line, ts-prefixed.
|
|
123
176
|
|
|
124
177
|
## Ledger layout
|
|
125
178
|
|
|
@@ -128,22 +181,30 @@ event. Channel chain: `auto` walks wechat → whatsapp → email; `wechat` /
|
|
|
128
181
|
├── plan.md # Planner-authored, git-committed
|
|
129
182
|
├── goal.json # Planner-authored, git-committed
|
|
130
183
|
├── push_log.jsonl # every notify_user attempt + channel used
|
|
184
|
+
├── decisions.jsonl # runner / dispatcher audit trail (see above)
|
|
131
185
|
├── reviewer_sandbox/ # Reviewer cwd; restaged per iter
|
|
132
186
|
│ ├── plan.md # copy
|
|
133
187
|
│ ├── goal.json # copy
|
|
134
188
|
│ ├── iter-N/ # this iter's directive + diff + eval
|
|
135
189
|
│ ├── prior_verdict.json
|
|
136
|
-
│
|
|
190
|
+
│ ├── reviewer_memory.md # persistent (frozen-injected at session start)
|
|
191
|
+
│ └── reviewer_log.jsonl # persistent (Reviewer's append-only audit log)
|
|
137
192
|
└── iter/<n>/
|
|
138
|
-
├── directive.json # Planner → Coder
|
|
139
|
-
├── eval_output.json # what Coder reported
|
|
193
|
+
├── directive.json # Planner → Coder (schema_version: 1)
|
|
194
|
+
├── eval_output.json # what Coder reported (schema_version: 1)
|
|
140
195
|
├── diff.patch # git diff of the iter
|
|
141
|
-
├── verdict.json # Reviewer decision + audit notes
|
|
196
|
+
├── verdict.json # Reviewer decision + audit notes (schema_version: 1)
|
|
142
197
|
└── coder_summary.txt
|
|
143
198
|
```
|
|
144
199
|
|
|
145
200
|
The orchestrator git-commits each iter automatically. Coder must NOT call
|
|
146
|
-
`git commit` itself — that confuses the diff log.
|
|
201
|
+
`git commit` itself — that confuses the diff log. **If `git commit` fails
|
|
202
|
+
inside an iter** (pre-commit hook reject, signing key missing, …) the
|
|
203
|
+
dispatcher emits a `phase_error` instead of writing `iter_artifacts`, so
|
|
204
|
+
the failure is visible to the runner and counts toward the circuit.
|
|
205
|
+
|
|
206
|
+
Every JSON artifact in the ledger carries a `schema_version` field (currently
|
|
207
|
+
`1`) to make future migrations explicit.
|
|
147
208
|
|
|
148
209
|
## Backend HTTP / SSE
|
|
149
210
|
|
|
@@ -210,9 +271,10 @@ iter 0 ledger artifacts (`directive` + `eval_output` + `diff.patch` +
|
|
|
210
271
|
|
|
211
272
|
## Known limitations
|
|
212
273
|
|
|
213
|
-
-
|
|
214
|
-
|
|
215
|
-
`
|
|
274
|
+
- **`webchat` channel is a no-op** — `notifyUserFallbackChain` does not yet
|
|
275
|
+
carry a webchat session id at the run level, so `channel: 'webchat'`
|
|
276
|
+
always returns `channel_used: 'none'`. Use `auto` / `wechat` / `email`
|
|
277
|
+
until the inbound route lands.
|
|
216
278
|
- **One-way push.** WeChat → Planner inbound replies are not yet wired (would
|
|
217
279
|
need an openclaw-gateway tmux-passthrough route). Reply via webchat /
|
|
218
280
|
`autoloop_chat`.
|
|
@@ -221,3 +283,10 @@ iter 0 ledger artifacts (`directive` + `eval_output` + `diff.patch` +
|
|
|
221
283
|
- **No fork / population mode.** Single linear iter trajectory per run.
|
|
222
284
|
- **Cross-run knowledge isolated.** Each run's `reviewer_memory.md` and
|
|
223
285
|
`coder_notes.md` live in that run's ledger; no shared meta-store yet.
|
|
286
|
+
- **No cost / wall-clock budget cap.** Only `phaseErrorCircuit` + Reviewer
|
|
287
|
+
hold/reject streaks bound the run; a steady-but-pointless ratchet could
|
|
288
|
+
run for days. Set `max_iters` in `goal.json` to bound iter count.
|
|
289
|
+
- **Run state in memory.** SessionManager restart drops the live `autoloops`
|
|
290
|
+
map; the on-disk ledger survives but cannot resume a running state.
|
|
291
|
+
- **Multi-run / same workspace** races on `git index.lock`. Run separate
|
|
292
|
+
workspaces (or git worktrees) for concurrent runs.
|