@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.
- package/README.md +28 -28
- package/dist/bin/cli.js +107 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/acp-server.d.ts +5 -5
- package/dist/src/acp-server.js +3 -3
- package/dist/src/acp-server.js.map +1 -1
- package/dist/src/autoloop/dispatcher.d.ts +22 -0
- package/dist/src/autoloop/dispatcher.js +71 -13
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/autoloop/messages.d.ts +10 -0
- package/dist/src/autoloop/messages.js.map +1 -1
- package/dist/src/autoloop/runner.js +6 -0
- package/dist/src/autoloop/runner.js.map +1 -1
- package/dist/src/constants.d.ts +0 -6
- package/dist/src/constants.js +0 -6
- package/dist/src/constants.js.map +1 -1
- package/dist/src/council.d.ts +15 -0
- package/dist/src/council.js +48 -35
- package/dist/src/council.js.map +1 -1
- package/dist/src/dashboard/index.html +191 -6
- package/dist/src/embedded-server.js +132 -9
- package/dist/src/embedded-server.js.map +1 -1
- package/dist/src/fanout.d.ts +30 -1
- package/dist/src/fanout.js +32 -3
- package/dist/src/fanout.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +360 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/kernel/agent-step.d.ts +59 -0
- package/dist/src/kernel/agent-step.js +100 -0
- package/dist/src/kernel/agent-step.js.map +1 -0
- package/dist/src/kernel/conditions.d.ts +11 -0
- package/dist/src/kernel/conditions.js +24 -0
- package/dist/src/kernel/conditions.js.map +1 -0
- package/dist/src/kernel/engine.d.ts +319 -0
- package/dist/src/kernel/engine.js +1047 -0
- package/dist/src/kernel/engine.js.map +1 -0
- package/dist/src/kernel/exec.d.ts +43 -0
- package/dist/src/kernel/exec.js +112 -0
- package/dist/src/kernel/exec.js.map +1 -0
- package/dist/src/kernel/file-lock.d.ts +50 -0
- package/dist/src/kernel/file-lock.js +135 -0
- package/dist/src/kernel/file-lock.js.map +1 -0
- package/dist/src/kernel/nodes/agent.d.ts +4 -0
- package/dist/src/kernel/nodes/agent.js +35 -0
- package/dist/src/kernel/nodes/agent.js.map +1 -0
- package/dist/src/kernel/nodes/autoloop.d.ts +78 -0
- package/dist/src/kernel/nodes/autoloop.js +75 -0
- package/dist/src/kernel/nodes/autoloop.js.map +1 -0
- package/dist/src/kernel/nodes/council.d.ts +12 -0
- package/dist/src/kernel/nodes/council.js +88 -0
- package/dist/src/kernel/nodes/council.js.map +1 -0
- package/dist/src/kernel/nodes/fanout.d.ts +11 -0
- package/dist/src/kernel/nodes/fanout.js +63 -0
- package/dist/src/kernel/nodes/fanout.js.map +1 -0
- package/dist/src/kernel/nodes/human-gate.d.ts +4 -0
- package/dist/src/kernel/nodes/human-gate.js +7 -0
- package/dist/src/kernel/nodes/human-gate.js.map +1 -0
- package/dist/src/kernel/nodes/index.d.ts +12 -0
- package/dist/src/kernel/nodes/index.js +21 -0
- package/dist/src/kernel/nodes/index.js.map +1 -0
- package/dist/src/kernel/nodes/router.d.ts +4 -0
- package/dist/src/kernel/nodes/router.js +12 -0
- package/dist/src/kernel/nodes/router.js.map +1 -0
- package/dist/src/kernel/nodes/subflow.d.ts +13 -0
- package/dist/src/kernel/nodes/subflow.js +38 -0
- package/dist/src/kernel/nodes/subflow.js.map +1 -0
- package/dist/src/kernel/nodes/ultraapp.d.ts +60 -0
- package/dist/src/kernel/nodes/ultraapp.js +62 -0
- package/dist/src/kernel/nodes/ultraapp.js.map +1 -0
- package/dist/src/kernel/nodes/verifier.d.ts +14 -0
- package/dist/src/kernel/nodes/verifier.js +84 -0
- package/dist/src/kernel/nodes/verifier.js.map +1 -0
- package/dist/src/kernel/projections.d.ts +42 -0
- package/dist/src/kernel/projections.js +133 -0
- package/dist/src/kernel/projections.js.map +1 -0
- package/dist/src/kernel/repo.d.ts +13 -0
- package/dist/src/kernel/repo.js +64 -0
- package/dist/src/kernel/repo.js.map +1 -0
- package/dist/src/kernel/secrets.d.ts +25 -0
- package/dist/src/kernel/secrets.js +48 -0
- package/dist/src/kernel/secrets.js.map +1 -0
- package/dist/src/kernel/store.d.ts +225 -0
- package/dist/src/kernel/store.js +838 -0
- package/dist/src/kernel/store.js.map +1 -0
- package/dist/src/kernel/templates/index.d.ts +140 -0
- package/dist/src/kernel/templates/index.js +266 -0
- package/dist/src/kernel/templates/index.js.map +1 -0
- package/dist/src/kernel/types.d.ts +326 -0
- package/dist/src/kernel/types.js +19 -0
- package/dist/src/kernel/types.js.map +1 -0
- package/dist/src/models.d.ts +1 -1
- package/dist/src/models.js +31 -3
- package/dist/src/models.js.map +1 -1
- package/dist/src/persistent-cursor-session.js +6 -1
- package/dist/src/persistent-cursor-session.js.map +1 -1
- package/dist/src/persistent-grok-session.d.ts +40 -0
- package/dist/src/persistent-grok-session.js +197 -0
- package/dist/src/persistent-grok-session.js.map +1 -0
- package/dist/src/run-ledger.d.ts +57 -3
- package/dist/src/run-ledger.js +45 -2
- package/dist/src/run-ledger.js.map +1 -1
- package/dist/src/session-manager.d.ts +176 -129
- package/dist/src/session-manager.js +657 -603
- package/dist/src/session-manager.js.map +1 -1
- package/dist/src/types.d.ts +37 -4
- package/dist/src/types.js +15 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/ultraapp/build.d.ts +117 -3
- package/dist/src/ultraapp/build.js +319 -3
- package/dist/src/ultraapp/build.js.map +1 -1
- package/dist/src/ultraapp/contract.d.ts +52 -0
- package/dist/src/ultraapp/contract.js +83 -0
- package/dist/src/ultraapp/contract.js.map +1 -0
- package/dist/src/ultraapp/conventions.js +9 -2
- package/dist/src/ultraapp/conventions.js.map +1 -1
- package/dist/src/ultraapp/fix-on-failure.d.ts +21 -2
- package/dist/src/ultraapp/fix-on-failure.js +46 -62
- package/dist/src/ultraapp/fix-on-failure.js.map +1 -1
- package/dist/src/ultraapp/manager.d.ts +107 -2
- package/dist/src/ultraapp/manager.js +305 -86
- package/dist/src/ultraapp/manager.js.map +1 -1
- package/dist/src/verify/baseline.d.ts +73 -0
- package/dist/src/verify/baseline.js +186 -0
- package/dist/src/verify/baseline.js.map +1 -0
- package/dist/src/verify/contract.d.ts +116 -0
- package/dist/src/verify/contract.js +142 -0
- package/dist/src/verify/contract.js.map +1 -0
- package/dist/src/verify/evidence.d.ts +61 -0
- package/dist/src/verify/evidence.js +133 -0
- package/dist/src/verify/evidence.js.map +1 -0
- package/dist/src/verify/runner.d.ts +63 -0
- package/dist/src/verify/runner.js +317 -0
- package/dist/src/verify/runner.js.map +1 -0
- package/openclaw.plugin.json +8 -0
- package/package.json +2 -2
- package/skills/SKILL.md +121 -80
- package/skills/references/acp.md +18 -18
- package/skills/references/autoloop.md +148 -72
- package/skills/references/claude-cli-tracking.md +4 -4
- package/skills/references/cli.md +103 -60
- package/skills/references/council.md +109 -37
- package/skills/references/dashboard.md +34 -6
- package/skills/references/getting-started.md +14 -14
- package/skills/references/inbox.md +4 -4
- package/skills/references/mcp.md +39 -34
- package/skills/references/multi-engine.md +109 -51
- package/skills/references/observability.md +88 -27
- package/skills/references/openai-compat.md +40 -40
- package/skills/references/sessions.md +44 -26
- package/skills/references/tools.md +402 -309
- package/skills/references/ultra.md +45 -45
- package/skills/references/ultraapp.md +126 -50
- package/skills/references/verification.md +187 -0
- package/skills/references/workflow.md +362 -0
- package/dist/src/ultraapp/fix-on-failure-session.d.ts +0 -23
- package/dist/src/ultraapp/fix-on-failure-session.js +0 -51
- 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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"}
|
package/dist/src/run-ledger.d.ts
CHANGED
|
@@ -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
|
|
9
|
-
*
|
|
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;
|
package/dist/src/run-ledger.js
CHANGED
|
@@ -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
|
|
9
|
-
*
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"run-ledger.js","sourceRoot":"","sources":["../../src/run-ledger.ts"],"names":[],"mappings":"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"}
|