@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.
@@ -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 validate against v1 GoalSpec (see `src/autoloop/v1/types.ts`).
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
- — the same shape as v1's GoalSpec (see `src/autoloop/v1/types.ts`). The
101
- runner will validate this when subagents are spawned.
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
- - ❌ Push the user out-of-band. In S2 there is no `notify_user` tool. Speak
124
- through chat only.
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. If you need to emit something machine-readable for
129
- later phases, fence it as JSON in a labeled code block — but in S2 nothing
130
- parses your output for structured signals, so prefer prose.
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. Save what you
13
- learn into `reviewer_memory.md` after each review.
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 { AgentDispatcher, AutoloopState, PushPolicy } from './types.js';
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
- void reason;
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
- this.config.pushPolicyRef[k] = v;
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
- const handlerResult = await applyPlannerToolCalls(parsed.calls, effects, env.iter);
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, or the
396
- // Coder bailed. Return a directive_ack so Planner sees it next turn.
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.reviewerSystemPrompt,
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 (keep reviewer_memory.md if present).
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 === 'reviewer_memory.md')
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
- export type AutoloopMessageType = 'chat' | 'directive' | 'directive_ack' | 'iter_artifacts' | 'review_request' | 'review_verdict' | 'iter_done' | 'push_user' | 'pause' | 'resume' | 'terminate';
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":"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"}
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
- const WECHAT_RECIPIENT = process.env.AUTOLOOP_WECHAT_RECIPIENT ?? '';
23
- const WECHAT_ACCOUNT = process.env.AUTOLOOP_WECHAT_ACCOUNT ?? '';
24
- const WHATSAPP_RECIPIENT = process.env.AUTOLOOP_WHATSAPP_RECIPIENT ?? '';
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
- if (!WECHAT_RECIPIENT || !WECHAT_ACCOUNT) {
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
- WECHAT_ACCOUNT,
81
+ wechatAccount,
76
82
  '-t',
77
- WECHAT_RECIPIENT,
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
- if (!WHATSAPP_RECIPIENT) {
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":"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"}
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: [], // S4 will populate from metric.json
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;AAqCH,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"}
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.5.6",
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
- │ └── reviewer_memory.md # persistent across iters
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
- - **No auto-compact on token budget.** Manual `autoloop_reset_agent` covers
214
- the same recovery path. Auto-compact is queued for a follow-up once
215
- `ISession.getStats` exposes token-usage hooks.
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.