@enderfga/claw-orchestrator 3.5.5 → 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/bin/cli.js +30 -4
- package/dist/bin/cli.js.map +1 -1
- 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/dist/src/embedded-server.d.ts +1 -0
- package/dist/src/embedded-server.js +65 -20
- package/dist/src/embedded-server.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
|
|
package/dist/bin/cli.js
CHANGED
|
@@ -9,9 +9,34 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Command } from 'commander';
|
|
11
11
|
import { createRequire } from 'node:module';
|
|
12
|
+
import * as fs from 'node:fs';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
import * as os from 'node:os';
|
|
12
15
|
function getBaseUrl() {
|
|
13
16
|
return process.env.CLAWO_API_URL || process.env.CLAUDE_CODE_API_URL || 'http://127.0.0.1:18796';
|
|
14
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Locate the auth token the embedded server requires (3.5.6+):
|
|
20
|
+
* 1. CLAWO_AUTH_TOKEN env (explicit override)
|
|
21
|
+
* 2. OPENCLAW_SERVER_TOKEN env (same env the server reads — handy when both
|
|
22
|
+
* processes share the same shell)
|
|
23
|
+
* 3. ~/.openclaw/server-token file (the server writes this at startup)
|
|
24
|
+
* Returns null if nothing is found — caller falls through to an unauthenticated
|
|
25
|
+
* request, which the server will reject with 401 unless `OPENCLAW_SERVER_TOKEN=disabled`.
|
|
26
|
+
*/
|
|
27
|
+
function getAuthToken() {
|
|
28
|
+
const envToken = process.env.CLAWO_AUTH_TOKEN || process.env.OPENCLAW_SERVER_TOKEN;
|
|
29
|
+
if (envToken && envToken !== 'disabled')
|
|
30
|
+
return envToken;
|
|
31
|
+
try {
|
|
32
|
+
const filePath = path.join(os.homedir(), '.openclaw', 'server-token');
|
|
33
|
+
const t = fs.readFileSync(filePath, 'utf-8').trim();
|
|
34
|
+
return t || null;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
15
40
|
function getCliVersion() {
|
|
16
41
|
try {
|
|
17
42
|
const _require = createRequire(import.meta.url);
|
|
@@ -25,10 +50,11 @@ function getCliVersion() {
|
|
|
25
50
|
}
|
|
26
51
|
// ─── HTTP Client ─────────────────────────────────────────────────────────────
|
|
27
52
|
async function api(path, method = 'GET', body) {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
53
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
54
|
+
const token = getAuthToken();
|
|
55
|
+
if (token)
|
|
56
|
+
headers.Authorization = `Bearer ${token}`;
|
|
57
|
+
const opts = { method, headers };
|
|
32
58
|
if (body)
|
|
33
59
|
opts.body = JSON.stringify(body);
|
|
34
60
|
try {
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -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) {
|