@enderfga/claw-orchestrator 5.0.0 → 6.0.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.
Files changed (158) hide show
  1. package/README.md +28 -28
  2. package/dist/bin/cli.js +107 -1
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/src/acp-server.d.ts +5 -5
  5. package/dist/src/acp-server.js +3 -3
  6. package/dist/src/acp-server.js.map +1 -1
  7. package/dist/src/autoloop/dispatcher.d.ts +22 -0
  8. package/dist/src/autoloop/dispatcher.js +71 -13
  9. package/dist/src/autoloop/dispatcher.js.map +1 -1
  10. package/dist/src/autoloop/messages.d.ts +10 -0
  11. package/dist/src/autoloop/messages.js.map +1 -1
  12. package/dist/src/autoloop/runner.js +6 -0
  13. package/dist/src/autoloop/runner.js.map +1 -1
  14. package/dist/src/constants.d.ts +0 -6
  15. package/dist/src/constants.js +0 -6
  16. package/dist/src/constants.js.map +1 -1
  17. package/dist/src/council.d.ts +15 -0
  18. package/dist/src/council.js +48 -35
  19. package/dist/src/council.js.map +1 -1
  20. package/dist/src/dashboard/index.html +191 -6
  21. package/dist/src/embedded-server.js +132 -9
  22. package/dist/src/embedded-server.js.map +1 -1
  23. package/dist/src/fanout.d.ts +30 -1
  24. package/dist/src/fanout.js +32 -3
  25. package/dist/src/fanout.js.map +1 -1
  26. package/dist/src/index.d.ts +1 -0
  27. package/dist/src/index.js +360 -4
  28. package/dist/src/index.js.map +1 -1
  29. package/dist/src/kernel/agent-step.d.ts +59 -0
  30. package/dist/src/kernel/agent-step.js +100 -0
  31. package/dist/src/kernel/agent-step.js.map +1 -0
  32. package/dist/src/kernel/conditions.d.ts +11 -0
  33. package/dist/src/kernel/conditions.js +24 -0
  34. package/dist/src/kernel/conditions.js.map +1 -0
  35. package/dist/src/kernel/engine.d.ts +319 -0
  36. package/dist/src/kernel/engine.js +1047 -0
  37. package/dist/src/kernel/engine.js.map +1 -0
  38. package/dist/src/kernel/exec.d.ts +43 -0
  39. package/dist/src/kernel/exec.js +112 -0
  40. package/dist/src/kernel/exec.js.map +1 -0
  41. package/dist/src/kernel/file-lock.d.ts +50 -0
  42. package/dist/src/kernel/file-lock.js +135 -0
  43. package/dist/src/kernel/file-lock.js.map +1 -0
  44. package/dist/src/kernel/nodes/agent.d.ts +4 -0
  45. package/dist/src/kernel/nodes/agent.js +35 -0
  46. package/dist/src/kernel/nodes/agent.js.map +1 -0
  47. package/dist/src/kernel/nodes/autoloop.d.ts +78 -0
  48. package/dist/src/kernel/nodes/autoloop.js +75 -0
  49. package/dist/src/kernel/nodes/autoloop.js.map +1 -0
  50. package/dist/src/kernel/nodes/council.d.ts +12 -0
  51. package/dist/src/kernel/nodes/council.js +88 -0
  52. package/dist/src/kernel/nodes/council.js.map +1 -0
  53. package/dist/src/kernel/nodes/fanout.d.ts +11 -0
  54. package/dist/src/kernel/nodes/fanout.js +63 -0
  55. package/dist/src/kernel/nodes/fanout.js.map +1 -0
  56. package/dist/src/kernel/nodes/human-gate.d.ts +4 -0
  57. package/dist/src/kernel/nodes/human-gate.js +7 -0
  58. package/dist/src/kernel/nodes/human-gate.js.map +1 -0
  59. package/dist/src/kernel/nodes/index.d.ts +12 -0
  60. package/dist/src/kernel/nodes/index.js +21 -0
  61. package/dist/src/kernel/nodes/index.js.map +1 -0
  62. package/dist/src/kernel/nodes/router.d.ts +4 -0
  63. package/dist/src/kernel/nodes/router.js +12 -0
  64. package/dist/src/kernel/nodes/router.js.map +1 -0
  65. package/dist/src/kernel/nodes/subflow.d.ts +13 -0
  66. package/dist/src/kernel/nodes/subflow.js +38 -0
  67. package/dist/src/kernel/nodes/subflow.js.map +1 -0
  68. package/dist/src/kernel/nodes/ultraapp.d.ts +60 -0
  69. package/dist/src/kernel/nodes/ultraapp.js +62 -0
  70. package/dist/src/kernel/nodes/ultraapp.js.map +1 -0
  71. package/dist/src/kernel/nodes/verifier.d.ts +14 -0
  72. package/dist/src/kernel/nodes/verifier.js +84 -0
  73. package/dist/src/kernel/nodes/verifier.js.map +1 -0
  74. package/dist/src/kernel/projections.d.ts +42 -0
  75. package/dist/src/kernel/projections.js +133 -0
  76. package/dist/src/kernel/projections.js.map +1 -0
  77. package/dist/src/kernel/repo.d.ts +13 -0
  78. package/dist/src/kernel/repo.js +64 -0
  79. package/dist/src/kernel/repo.js.map +1 -0
  80. package/dist/src/kernel/secrets.d.ts +25 -0
  81. package/dist/src/kernel/secrets.js +48 -0
  82. package/dist/src/kernel/secrets.js.map +1 -0
  83. package/dist/src/kernel/store.d.ts +225 -0
  84. package/dist/src/kernel/store.js +838 -0
  85. package/dist/src/kernel/store.js.map +1 -0
  86. package/dist/src/kernel/templates/index.d.ts +140 -0
  87. package/dist/src/kernel/templates/index.js +266 -0
  88. package/dist/src/kernel/templates/index.js.map +1 -0
  89. package/dist/src/kernel/types.d.ts +326 -0
  90. package/dist/src/kernel/types.js +19 -0
  91. package/dist/src/kernel/types.js.map +1 -0
  92. package/dist/src/models.d.ts +1 -1
  93. package/dist/src/models.js +31 -3
  94. package/dist/src/models.js.map +1 -1
  95. package/dist/src/persistent-cursor-session.js +6 -1
  96. package/dist/src/persistent-cursor-session.js.map +1 -1
  97. package/dist/src/persistent-grok-session.d.ts +40 -0
  98. package/dist/src/persistent-grok-session.js +197 -0
  99. package/dist/src/persistent-grok-session.js.map +1 -0
  100. package/dist/src/run-ledger.d.ts +57 -3
  101. package/dist/src/run-ledger.js +45 -2
  102. package/dist/src/run-ledger.js.map +1 -1
  103. package/dist/src/session-manager.d.ts +176 -129
  104. package/dist/src/session-manager.js +657 -603
  105. package/dist/src/session-manager.js.map +1 -1
  106. package/dist/src/types.d.ts +37 -4
  107. package/dist/src/types.js +15 -1
  108. package/dist/src/types.js.map +1 -1
  109. package/dist/src/ultraapp/build.d.ts +117 -3
  110. package/dist/src/ultraapp/build.js +319 -3
  111. package/dist/src/ultraapp/build.js.map +1 -1
  112. package/dist/src/ultraapp/contract.d.ts +52 -0
  113. package/dist/src/ultraapp/contract.js +83 -0
  114. package/dist/src/ultraapp/contract.js.map +1 -0
  115. package/dist/src/ultraapp/conventions.js +9 -2
  116. package/dist/src/ultraapp/conventions.js.map +1 -1
  117. package/dist/src/ultraapp/fix-on-failure.d.ts +21 -2
  118. package/dist/src/ultraapp/fix-on-failure.js +46 -62
  119. package/dist/src/ultraapp/fix-on-failure.js.map +1 -1
  120. package/dist/src/ultraapp/manager.d.ts +107 -2
  121. package/dist/src/ultraapp/manager.js +305 -86
  122. package/dist/src/ultraapp/manager.js.map +1 -1
  123. package/dist/src/verify/baseline.d.ts +73 -0
  124. package/dist/src/verify/baseline.js +186 -0
  125. package/dist/src/verify/baseline.js.map +1 -0
  126. package/dist/src/verify/contract.d.ts +116 -0
  127. package/dist/src/verify/contract.js +142 -0
  128. package/dist/src/verify/contract.js.map +1 -0
  129. package/dist/src/verify/evidence.d.ts +61 -0
  130. package/dist/src/verify/evidence.js +133 -0
  131. package/dist/src/verify/evidence.js.map +1 -0
  132. package/dist/src/verify/runner.d.ts +63 -0
  133. package/dist/src/verify/runner.js +317 -0
  134. package/dist/src/verify/runner.js.map +1 -0
  135. package/openclaw.plugin.json +8 -0
  136. package/package.json +2 -2
  137. package/skills/SKILL.md +121 -80
  138. package/skills/references/acp.md +18 -18
  139. package/skills/references/autoloop.md +148 -72
  140. package/skills/references/claude-cli-tracking.md +4 -4
  141. package/skills/references/cli.md +103 -60
  142. package/skills/references/council.md +109 -37
  143. package/skills/references/dashboard.md +34 -6
  144. package/skills/references/getting-started.md +14 -14
  145. package/skills/references/inbox.md +4 -4
  146. package/skills/references/mcp.md +39 -34
  147. package/skills/references/multi-engine.md +109 -51
  148. package/skills/references/observability.md +88 -27
  149. package/skills/references/openai-compat.md +40 -40
  150. package/skills/references/sessions.md +44 -26
  151. package/skills/references/tools.md +402 -309
  152. package/skills/references/ultra.md +45 -45
  153. package/skills/references/ultraapp.md +126 -50
  154. package/skills/references/verification.md +187 -0
  155. package/skills/references/workflow.md +362 -0
  156. package/dist/src/ultraapp/fix-on-failure-session.d.ts +0 -23
  157. package/dist/src/ultraapp/fix-on-failure-session.js +0 -51
  158. package/dist/src/ultraapp/fix-on-failure-session.js.map +0 -1
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Grok Build (xAI) session wrapper.
3
+ *
4
+ * One-shot per send: `grok -p <msg> --output-format json`, which prints a single
5
+ * JSON object and exits. That object is unusually complete for this engine class
6
+ * — it carries the reply, a terminal `stopReason`, a resumable `sessionId`, real
7
+ * token usage, the model that actually answered, and the engine's own
8
+ * `total_cost_usd`.
9
+ *
10
+ * Two consequences shape this file:
11
+ *
12
+ * 1. **Cost is passed through, not priced.** Every other engine here multiplies
13
+ * token counts by a rate in `models.ts`, which is the metadata that rots
14
+ * silently between releases. Grok reports what it charged, so this wrapper
15
+ * writes that number into `_stats.costUsd` directly and the registry is never
16
+ * consulted for it. The run ledger and the `maxBudgetUsd` gate both read that
17
+ * field, so both get the engine's own figure.
18
+ * 2. **The binary is `grok`, never `agent`.** xAI's installer also symlinks the
19
+ * generic `agent` name, which Cursor's CLI already used; whichever installer
20
+ * ran last wins. Both wrappers now name the vendor-specific binary so the
21
+ * engine you asked for is the engine you get.
22
+ *
23
+ * Usage and cost are per-turn, not cumulative over the thread — verified against
24
+ * 1.0.5 by resuming a session and reading the second turn (29,711 in / $0.0597,
25
+ * then 70 in / $0.0152). Accumulating them is therefore correct here, unlike
26
+ * codex, where the same-looking field is a running total.
27
+ */
28
+ import { spawn } from 'node:child_process';
29
+ import { sanitizeSecrets } from './sanitize.js';
30
+ import { BaseOneShotSession } from './base-oneshot-session.js';
31
+ import { SESSION_EVENT } from './constants.js';
32
+ export class PersistentGrokSession extends BaseOneShotSession {
33
+ /** Grok's own session UUID, captured from turn 1 and replayed via `--resume`. */
34
+ grokSessionId;
35
+ constructor(config, grokBin) {
36
+ super(config, grokBin || process.env.GROK_BIN || 'grok', {
37
+ enginePrefix: 'grok',
38
+ defaultModel: 'grok-4.6',
39
+ defaultModelDisplay: 'grok-4.6',
40
+ supportsCachedTokens: true,
41
+ engineDisplayName: 'Grok Build',
42
+ });
43
+ // Same shape cursor and opencode use: the real id is surfaced through
44
+ // `sessionId` behind a `grok-live-` prefix so SessionManager can persist it,
45
+ // and the prefix is stripped again on the way back in. A synthetic wrapper id
46
+ // (`grok-<ts>-<rand>`) must never be handed to `--resume`.
47
+ if (config.resumeSessionId && !/^grok-\d+-/.test(config.resumeSessionId)) {
48
+ this.grokSessionId = config.resumeSessionId.replace(/^grok-live-/, '');
49
+ }
50
+ }
51
+ _buildArgs(message, options) {
52
+ const args = ['-p', message, '--output-format', 'json'];
53
+ if (this.options.cwd)
54
+ args.push('--cwd', this.options.cwd);
55
+ // Resume grok's own thread rather than starting fresh. `--continue` is
56
+ // deliberately not used: it means "the most recent session for this cwd",
57
+ // which collides between concurrent sessions on the same project.
58
+ if (this.grokSessionId)
59
+ args.push('--resume', this.grokSessionId);
60
+ const model = this.options.resolvedModel || this.options.model;
61
+ if (model)
62
+ args.push('--model', this.resolveModel(model.replace(/^grok\//, '')));
63
+ // grok's --permission-mode vocabulary is the same set as ours, so this is a
64
+ // passthrough rather than a mapping. 'manual' is ours alone; grok calls the
65
+ // equivalent 'default'.
66
+ const mode = this.options.permissionMode === 'manual' ? 'default' : this.options.permissionMode;
67
+ if (mode)
68
+ args.push('--permission-mode', mode);
69
+ const effort = options.effort ?? this.options.effort;
70
+ if (effort && effort !== 'auto') {
71
+ // grok takes low|medium|high; the two higher aliases in our union clamp.
72
+ args.push('--effort', effort === 'max' || effort === 'xhigh' ? 'high' : effort);
73
+ }
74
+ if (this.options.maxTurns)
75
+ args.push('--max-turns', String(this.options.maxTurns));
76
+ if (this.options.systemPrompt)
77
+ args.push('--system-prompt-override', this.options.systemPrompt);
78
+ return args;
79
+ }
80
+ _run(message, options) {
81
+ // Read-only is refused rather than approximated. grok exposes --permission-mode
82
+ // plan and --deny rules, but plan mode alone is model-cooperative — the same
83
+ // shape that let an adversarial prompt write through Cursor's plan mode — and
84
+ // the deny rules have not been put through the write × shell × subagent ×
85
+ // resumed-turn matrix this project requires before a read-only claim. Failing
86
+ // loudly beats a session that believes it cannot write and can.
87
+ if (this.options.sandboxMode === 'read-only') {
88
+ return Promise.reject(new Error('Grok sessions do not support sandboxMode: read-only yet — its enforcement has not been ' +
89
+ 'adversarially verified, and this engine will not claim a boundary it has not proven. ' +
90
+ 'Use a different engine for read-only work.'));
91
+ }
92
+ const args = this._buildArgs(message, options);
93
+ const timeout = options.timeout || 300_000;
94
+ return new Promise((resolve, reject) => {
95
+ let stdout = '';
96
+ let stderr = '';
97
+ let settled = false;
98
+ const proc = spawn(this.engineBin, args, {
99
+ cwd: this.options.cwd,
100
+ env: { ...process.env },
101
+ stdio: ['pipe', 'pipe', 'pipe'],
102
+ });
103
+ this.currentProc = proc;
104
+ proc.stdin?.end();
105
+ const timer = setTimeout(() => {
106
+ if (!settled) {
107
+ settled = true;
108
+ proc.kill('SIGKILL');
109
+ reject(new Error('Timeout waiting for Grok response'));
110
+ }
111
+ }, timeout);
112
+ proc.stdout?.on('data', (d) => {
113
+ stdout += d.toString();
114
+ });
115
+ proc.stderr?.on('data', (d) => {
116
+ const sanitized = sanitizeSecrets(d.toString());
117
+ stderr += sanitized;
118
+ this.emit(SESSION_EVENT.LOG, `[grok-stderr] ${sanitized}`);
119
+ });
120
+ proc.on('error', (err) => {
121
+ clearTimeout(timer);
122
+ this.currentProc = null;
123
+ if (!settled) {
124
+ settled = true;
125
+ reject(err);
126
+ }
127
+ });
128
+ proc.on('close', (code) => {
129
+ clearTimeout(timer);
130
+ this.currentProc = null;
131
+ if (settled)
132
+ return;
133
+ settled = true;
134
+ let parsed;
135
+ try {
136
+ const trimmed = stdout.trim();
137
+ if (trimmed)
138
+ parsed = JSON.parse(trimmed);
139
+ }
140
+ catch {
141
+ parsed = undefined;
142
+ }
143
+ // A turn that produced no parseable result object failed, whatever the
144
+ // exit code says: there is no reply to hand back.
145
+ const turnError = parsed?.error?.trim() ||
146
+ (!parsed ? stderr.trim() || `Grok exited with code ${code} and no JSON result` : undefined);
147
+ if (parsed?.sessionId) {
148
+ this.grokSessionId = parsed.sessionId;
149
+ if (!this.sessionId?.startsWith('grok-live-'))
150
+ this.sessionId = `grok-live-${parsed.sessionId}`;
151
+ }
152
+ const text = parsed?.text ?? '';
153
+ const ok = !turnError && code === 0 && parsed?.stopReason !== 'error';
154
+ this._recordTurnComplete(ok);
155
+ const usage = parsed?.usage;
156
+ if (usage) {
157
+ // Per-turn values (see the file header), so accumulate.
158
+ this._stats.tokensIn += usage.input_tokens ?? 0;
159
+ this._stats.tokensOut += usage.output_tokens ?? 0;
160
+ this._stats.cachedTokens += usage.cache_read_input_tokens ?? 0;
161
+ this._reportTurnInputTokens(usage.input_tokens ?? 0);
162
+ }
163
+ // Engine-reported spend, not a registry lookup — see the file header.
164
+ if (typeof parsed?.total_cost_usd === 'number' && Number.isFinite(parsed.total_cost_usd)) {
165
+ this._stats.costUsd += parsed.total_cost_usd;
166
+ }
167
+ this._addHistory({ text, code });
168
+ if (text) {
169
+ try {
170
+ options.callbacks?.onText?.(text);
171
+ }
172
+ catch {
173
+ /* user callback */
174
+ }
175
+ this.emit(SESSION_EVENT.TEXT, text);
176
+ }
177
+ const event = {
178
+ type: 'result',
179
+ result: text,
180
+ stop_reason: ok ? 'end_turn' : 'error',
181
+ session_id: this.grokSessionId,
182
+ };
183
+ this.emit(SESSION_EVENT.RESULT, event);
184
+ this.emit(SESSION_EVENT.TURN_COMPLETE, event);
185
+ if (turnError)
186
+ reject(new Error(turnError));
187
+ else
188
+ resolve({ text, event });
189
+ });
190
+ });
191
+ }
192
+ /** Grok's resumable session id, surfaced through getStats(). */
193
+ getStats() {
194
+ return { ...super.getStats(), grokSessionId: this.grokSessionId };
195
+ }
196
+ }
197
+ //# sourceMappingURL=persistent-grok-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistent-grok-session.js","sourceRoot":"","sources":["../../src/persistent-grok-session.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,13 @@
5
5
  * with the process, and per-session history is capped at MAX_HISTORY_ITEMS and
6
6
  * evicted. So until now nothing survived a restart except the resume-id registry
7
7
  * — there was no way to answer "what did we run today, on which engine, for how
8
- * much". The ledger is that record, and it is the data source a future routing
9
- * layer would need.
8
+ * much". The ledger is that record.
9
+ *
10
+ * As of 6.0.0 it is also usable as a routing signal, which it was not before: a
11
+ * row's `ok` is the engine's report on itself, and no amount of that teaches you
12
+ * which engine is actually better at a task. `verified` is the runtime's own
13
+ * measurement against an acceptance contract, and that is the column a router
14
+ * can learn from. Rows carry both, and the read surfaces keep them apart.
10
15
  *
11
16
  * Durability rules, copied from the pattern autoloop's dispatcher already proved
12
17
  * (`appendDecisionLog`): mkdir + append + swallow. A ledger failure must never
@@ -39,10 +44,35 @@ export interface RunLedgerRow {
39
44
  durationMs: number;
40
45
  toolCalls: number;
41
46
  toolErrors: number;
47
+ /**
48
+ * The engine's own terminal verdict for this turn — it ran and did not report
49
+ * failure. Distinct from `verified`: this is the engine talking about itself.
50
+ */
42
51
  ok: boolean;
43
52
  error?: string;
44
- /** council id / fanout id / autoloop run id, when this turn belongs to one. */
53
+ /** council id / fanout id / autoloop run id / workflow run id, when this turn belongs to one. */
45
54
  parent?: string;
55
+ /**
56
+ * True when an acceptance contract ran against the work this turn belonged to
57
+ * and every required check passed. Absent means no contract was declared —
58
+ * which is *not* the same as false, and the read surfaces must not collapse
59
+ * the two. `ok` is the engine's self-report; this is our own measurement.
60
+ *
61
+ * Not written at turn time, and deliberately so: a turn finishes before the
62
+ * verifier runs, so stamping a verdict there would be inventing one. It is
63
+ * filled in by `annotateVerdicts()` at read time from the run record, or
64
+ * written directly by a standalone `verify_run`.
65
+ */
66
+ verified?: boolean;
67
+ /** Evidence bundle id under the run directory, when a contract ran. */
68
+ evidenceId?: string;
69
+ contractId?: string;
70
+ /** Kernel node kind this turn belonged to (`agent`, `council`, `verifier`, …). */
71
+ nodeKind?: string;
72
+ /** Primary language detected from the repo's manifest. Detected, never guessed from prose. */
73
+ repoLang?: string;
74
+ /** Caller-declared task class. Never inferred — an inferred label is not a label. */
75
+ taskKind?: string;
46
76
  }
47
77
  export interface RunLedgerQuery {
48
78
  /** Epoch ms, ISO string, or a relative spec like "24h" / "7d" / "90m". */
@@ -50,6 +80,8 @@ export interface RunLedgerQuery {
50
80
  session?: string;
51
81
  engine?: string;
52
82
  parent?: string;
83
+ /** `true` keeps only verified rows, `false` keeps only refuted ones. Unset keeps all. */
84
+ verified?: boolean;
53
85
  /** Most recent N rows (applied after filtering). Default 200. */
54
86
  limit?: number;
55
87
  }
@@ -60,6 +92,12 @@ export interface RunLedgerSummary {
60
92
  tokensOut: number;
61
93
  /** Rows whose token counts were estimated rather than engine-reported. */
62
94
  estimatedRows: number;
95
+ /** Rows an acceptance contract passed. */
96
+ verifiedRows: number;
97
+ /** Rows an acceptance contract refuted. */
98
+ refutedRows: number;
99
+ /** Rows with no contract at all — we do not know either way. */
100
+ unverifiedRows: number;
63
101
  byEngine: Record<string, {
64
102
  rows: number;
65
103
  costUsd: number;
@@ -90,6 +128,22 @@ export declare function parseSince(spec: string | number | undefined, now?: numb
90
128
  * whole ledger unreadable.
91
129
  */
92
130
  export declare function readRunLedger(query?: RunLedgerQuery, logger?: Logger): RunLedgerRow[];
131
+ /** What a row's parent run says about it. Supplied by the caller so the ledger stays leaf-level. */
132
+ export interface RunVerdict {
133
+ verified?: boolean;
134
+ evidenceId?: string;
135
+ contractId?: string;
136
+ }
137
+ export type VerdictLookup = (parent: string) => RunVerdict | undefined;
138
+ /**
139
+ * Fill in each row's verdict from the run it belonged to.
140
+ *
141
+ * The join lives here rather than at write time because of the ordering: the
142
+ * turns that produce the work all finish before the verifier that judges it, so
143
+ * there is nothing truthful to stamp on them as they are written. The lookup is
144
+ * injected rather than imported so this module keeps no dependency on the kernel.
145
+ */
146
+ export declare function annotateVerdicts(rows: RunLedgerRow[], lookup: VerdictLookup): RunLedgerRow[];
93
147
  export declare function summarizeRuns(rows: RunLedgerRow[]): RunLedgerSummary;
94
148
  /** Render rows as a fixed-width table for the CLI. Pure — no I/O. */
95
149
  export declare function formatRunTable(rows: RunLedgerRow[]): string;
@@ -5,8 +5,13 @@
5
5
  * with the process, and per-session history is capped at MAX_HISTORY_ITEMS and
6
6
  * evicted. So until now nothing survived a restart except the resume-id registry
7
7
  * — there was no way to answer "what did we run today, on which engine, for how
8
- * much". The ledger is that record, and it is the data source a future routing
9
- * layer would need.
8
+ * much". The ledger is that record.
9
+ *
10
+ * As of 6.0.0 it is also usable as a routing signal, which it was not before: a
11
+ * row's `ok` is the engine's report on itself, and no amount of that teaches you
12
+ * which engine is actually better at a task. `verified` is the runtime's own
13
+ * measurement against an acceptance contract, and that is the column a router
14
+ * can learn from. Rows carry both, and the read surfaces keep them apart.
10
15
  *
11
16
  * Durability rules, copied from the pattern autoloop's dispatcher already proved
12
17
  * (`appendDecisionLog`): mkdir + append + swallow. A ledger failure must never
@@ -136,6 +141,8 @@ export function readRunLedger(query = {}, logger) {
136
141
  continue;
137
142
  if (query.parent && row.parent !== query.parent)
138
143
  continue;
144
+ if (query.verified !== undefined && row.verified !== query.verified)
145
+ continue;
139
146
  out.push(row);
140
147
  if (out.length >= limit)
141
148
  return out.reverse();
@@ -143,6 +150,25 @@ export function readRunLedger(query = {}, logger) {
143
150
  }
144
151
  return out.reverse();
145
152
  }
153
+ /**
154
+ * Fill in each row's verdict from the run it belonged to.
155
+ *
156
+ * The join lives here rather than at write time because of the ordering: the
157
+ * turns that produce the work all finish before the verifier that judges it, so
158
+ * there is nothing truthful to stamp on them as they are written. The lookup is
159
+ * injected rather than imported so this module keeps no dependency on the kernel.
160
+ */
161
+ export function annotateVerdicts(rows, lookup) {
162
+ const cache = new Map();
163
+ return rows.map((row) => {
164
+ if (!row.parent || row.verified !== undefined)
165
+ return row;
166
+ if (!cache.has(row.parent))
167
+ cache.set(row.parent, lookup(row.parent));
168
+ const verdict = cache.get(row.parent);
169
+ return verdict ? { ...row, ...verdict } : row;
170
+ });
171
+ }
146
172
  // ─── Aggregate + format (pure) ──────────────────────────────────────────────
147
173
  export function summarizeRuns(rows) {
148
174
  const summary = {
@@ -151,6 +177,9 @@ export function summarizeRuns(rows) {
151
177
  tokensIn: 0,
152
178
  tokensOut: 0,
153
179
  estimatedRows: 0,
180
+ verifiedRows: 0,
181
+ refutedRows: 0,
182
+ unverifiedRows: 0,
154
183
  byEngine: {},
155
184
  };
156
185
  for (const r of rows) {
@@ -159,6 +188,12 @@ export function summarizeRuns(rows) {
159
188
  summary.tokensOut += r.tokensOut || 0;
160
189
  if (r.tokensEstimated)
161
190
  summary.estimatedRows++;
191
+ if (r.verified === true)
192
+ summary.verifiedRows++;
193
+ else if (r.verified === false)
194
+ summary.refutedRows++;
195
+ else
196
+ summary.unverifiedRows++;
162
197
  const bucket = (summary.byEngine[r.engine] ??= { rows: 0, costUsd: 0 });
163
198
  bucket.rows++;
164
199
  bucket.costUsd = round4(bucket.costUsd + (r.costUsd || 0));
@@ -185,6 +220,7 @@ export function formatRunTable(rows) {
185
220
  pad('OUT', 9),
186
221
  pad('COST', 9),
187
222
  pad('DUR', 8),
223
+ pad('VERIFIED', 9),
188
224
  'STATUS',
189
225
  ].join(' ');
190
226
  const lines = rows.map((r) => {
@@ -199,6 +235,10 @@ export function formatRunTable(rows) {
199
235
  pad(String(r.tokensOut ?? 0), 9),
200
236
  pad(cost, 9),
201
237
  pad(dur, 8),
238
+ // Three states, not two: `—` means no contract was declared, which is a
239
+ // different claim from `no`. Collapsing them would let an unchecked run
240
+ // read as a checked-and-failed one, or worse, the reverse.
241
+ pad(r.verified === undefined ? '—' : r.verified ? 'yes' : 'NO', 9),
202
242
  // `ok: false` does not imply error text: a turn the engine declined to count as
203
243
  // succeeded (codex-app `interrupted`, agy's non-SUCCESS status) resolves without
204
244
  // throwing, so there is nothing to quote. Say so rather than print a bare label.
@@ -211,6 +251,9 @@ export function formatRunTable(rows) {
211
251
  .join(' ');
212
252
  const footer = `\n${s.rows} turns $${s.costUsd.toFixed(4)} ` +
213
253
  `${s.tokensIn} in / ${s.tokensOut} out\n${engines}` +
254
+ (s.verifiedRows + s.refutedRows > 0
255
+ ? `\nverified ${s.verifiedRows} · refuted ${s.refutedRows} · unchecked ${s.unverifiedRows}`
256
+ : `\n${s.unverifiedRows} turn(s) ran with no acceptance contract — unchecked, not passed.`) +
214
257
  (s.estimatedRows > 0
215
258
  ? `\n~ ${s.estimatedRows} turn(s) used estimated token counts (engine reported no usage).`
216
259
  : '');
@@ -1 +1 @@
1
- {"version":3,"file":"run-ledger.js","sourceRoot":"","sources":["../../src/run-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-ledger.js","sourceRoot":"","sources":["../../src/run-ledger.ts"],"names":[],"mappings":"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"}