zelari-code 2.5.0 → 2.6.1
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/dist/cli/budget/budgetRuntime.js +217 -0
- package/dist/cli/budget/budgetRuntime.js.map +1 -0
- package/dist/cli/budget/modelContextBuilder.js +15 -0
- package/dist/cli/budget/modelContextBuilder.js.map +1 -1
- package/dist/cli/budget/resourceLedger.js +61 -0
- package/dist/cli/budget/resourceLedger.js.map +1 -0
- package/dist/cli/budget/resourceSnapshot.js +44 -0
- package/dist/cli/budget/resourceSnapshot.js.map +1 -0
- package/dist/cli/budget/restoreRuntime.js +41 -0
- package/dist/cli/budget/restoreRuntime.js.map +1 -0
- package/dist/cli/gauntlet/loop.js +21 -1
- package/dist/cli/gauntlet/loop.js.map +1 -1
- package/dist/cli/gauntlet/policy.js +12 -0
- package/dist/cli/gauntlet/policy.js.map +1 -1
- package/dist/cli/gauntlet/run.js +6 -0
- package/dist/cli/gauntlet/run.js.map +1 -1
- package/dist/cli/harnessManifest.js +57 -0
- package/dist/cli/harnessManifest.js.map +1 -0
- package/dist/cli/headlessSpine.js +22 -0
- package/dist/cli/headlessSpine.js.map +1 -1
- package/dist/cli/hooks/useChatTurn.js +24 -6
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/kraken/taskContract.js +44 -0
- package/dist/cli/kraken/taskContract.js.map +1 -0
- package/dist/cli/main.bundled.js +2041 -657
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/runHeadless.js +34 -0
- package/dist/cli/runHeadless.js.map +1 -1
- package/dist/cli/sessionSpine.js +242 -4
- package/dist/cli/sessionSpine.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/cli/budget/budgetRuntime.ts — live host-owned budget runtime (2.6
|
|
3
|
+
* Track B, doc §9–§12 rollout Phase 2/3). Wires the pure core primitives
|
|
4
|
+
* (ResourcePolicy/ResourceBudget) to the running loop:
|
|
5
|
+
*
|
|
6
|
+
* - counts every tool.call that lands on the spine (via SessionSpineMirror
|
|
7
|
+
* attach) and emits `resource.snapshot` events at §10.4 frequency;
|
|
8
|
+
* - exposes the LATEST snapshot for the model-visible RESOURCE STATUS
|
|
9
|
+
* block (injected by buildModelContext);
|
|
10
|
+
* - gates tool calls when the protected verification zone is entered
|
|
11
|
+
* (§11.3): `advisory` (default, Phase 2) lets everything through with a
|
|
12
|
+
* warning; `protected` (Phase 3, ZELARI_RESOURCE_ENFORCEMENT=protected)
|
|
13
|
+
* denies non-essential tools and tells the model to verify/finalize.
|
|
14
|
+
*
|
|
15
|
+
* 2.6.1 (closure plan §9/§13):
|
|
16
|
+
* - maxToolCalls is a HARD limit: once remaining hits 0 every further
|
|
17
|
+
* billable call is denied (both enforcement modes) and the overrun is
|
|
18
|
+
* projected (`used` never clamped; `resource.limit_reached` /
|
|
19
|
+
* `resource.overrun` events land on the spine);
|
|
20
|
+
* - the verification gate is ARGUMENT-AWARE: an essential `bash` is a
|
|
21
|
+
* test/typecheck/build/git-diff command, not any shell line.
|
|
22
|
+
*
|
|
23
|
+
* The model never mutates this state — only the host appends (§9.5).
|
|
24
|
+
*/
|
|
25
|
+
import { defaultResourcePolicy } from '@zelari/core';
|
|
26
|
+
import { ResourceLedger, rebuildLedgerFromEvents } from './resourceLedger.js';
|
|
27
|
+
import { buildResourceSnapshot, shouldEmitSnapshot, } from './resourceSnapshot.js';
|
|
28
|
+
/**
|
|
29
|
+
* §11.3 verification-essential tools: test/typecheck/build/diff/read
|
|
30
|
+
* failure/targeted repair/retest. Everything else (delegation, speculative
|
|
31
|
+
* search, new architecture) is non-essential inside the protected zone.
|
|
32
|
+
* `bash` is NOT blanket-essential (2.6.1 §13) — see isVerificationEssential.
|
|
33
|
+
*/
|
|
34
|
+
const DEFAULT_ESSENTIAL_TOOLS = [
|
|
35
|
+
'read_file',
|
|
36
|
+
'edit_file',
|
|
37
|
+
'write_file',
|
|
38
|
+
'apply_diff',
|
|
39
|
+
'grep_content',
|
|
40
|
+
'list_files',
|
|
41
|
+
'show_diff',
|
|
42
|
+
];
|
|
43
|
+
const ADVISORY_NOTICE = 'Resource advisory: verification reserve reached. Prioritize test/typecheck/build/diff and targeted repair; avoid broad exploration or delegation.';
|
|
44
|
+
const PROTECTED_DENIAL = 'Resource protected: remaining tool calls are reserved for verification and targeted repair. Run the required checks (test/typecheck/build), read the failure, apply a minimal fix, retest — or report BLOCKED with the evidence you have.';
|
|
45
|
+
const HARD_LIMIT_DENIAL = 'Resource exhausted: the session tool budget (maxToolCalls) is spent. No further billable tool calls are allowed — summarize what was verified and report BLOCKED/resource-exhausted with the evidence already collected.';
|
|
46
|
+
/** bash commands that count as verification-essential (plan §13). */
|
|
47
|
+
const ESSENTIAL_BASH = [
|
|
48
|
+
/\b(npm|pnpm|yarn|bun)\s+(run\s+)?(test|vitest|jest)\b/,
|
|
49
|
+
/\b(npm|pnpm|yarn|bun)\s+run\s+[\w:-]*(typecheck|lint|build)\b/,
|
|
50
|
+
/\bnpx\s+(vitest|tsc|typescript|eslint)\b/,
|
|
51
|
+
/\b(npx\s+)?tsc\b/,
|
|
52
|
+
/\bvitest\b/,
|
|
53
|
+
/\bjest\b/,
|
|
54
|
+
/\bnode\s+--run\b/,
|
|
55
|
+
/\bgit\s+(diff|status|log|show)\b/,
|
|
56
|
+
];
|
|
57
|
+
/** Phase selector — advisory by default (§11.4), protected via env (Phase 3). */
|
|
58
|
+
export function resolveResourceEnforcement(env = process.env) {
|
|
59
|
+
return env.ZELARI_RESOURCE_ENFORCEMENT === 'protected' ? 'protected' : 'advisory';
|
|
60
|
+
}
|
|
61
|
+
/** Extract the command string from a bash-ish tool args payload. */
|
|
62
|
+
function bashCommand(args) {
|
|
63
|
+
if (!args || typeof args !== 'object')
|
|
64
|
+
return '';
|
|
65
|
+
const rec = args;
|
|
66
|
+
for (const key of ['command', 'cmd', 'script']) {
|
|
67
|
+
if (typeof rec[key] === 'string')
|
|
68
|
+
return rec[key];
|
|
69
|
+
}
|
|
70
|
+
return '';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 2.6.1 (plan §13): argument-aware essential classifier.
|
|
74
|
+
* Essential = test/typecheck/build/lint, git diff/status, targeted
|
|
75
|
+
* read/grep/repair. NOT essential = arbitrary bash, repo-wide speculative
|
|
76
|
+
* grep, dependency install, delegation.
|
|
77
|
+
*/
|
|
78
|
+
export function isVerificationEssential(toolName, args, _stage = 'implement') {
|
|
79
|
+
if (toolName === 'bash') {
|
|
80
|
+
const cmd = bashCommand(args);
|
|
81
|
+
if (!cmd)
|
|
82
|
+
return false;
|
|
83
|
+
return ESSENTIAL_BASH.some((re) => re.test(cmd));
|
|
84
|
+
}
|
|
85
|
+
if (toolName === 'grep_content') {
|
|
86
|
+
// Targeted grep: bounded by an explicit path/pattern scope is essential;
|
|
87
|
+
// a bare repo-wide sweep is not (plan §13 "repo-wide speculative grep").
|
|
88
|
+
if (!args || typeof args !== 'object')
|
|
89
|
+
return true;
|
|
90
|
+
const rec = args;
|
|
91
|
+
const hasScope = typeof rec.path === 'string' && rec.path !== '.' && rec.path !== './';
|
|
92
|
+
return hasScope || typeof rec.pattern === 'string';
|
|
93
|
+
}
|
|
94
|
+
return DEFAULT_ESSENTIAL_TOOLS.includes(toolName);
|
|
95
|
+
}
|
|
96
|
+
export class BudgetRuntime {
|
|
97
|
+
policy;
|
|
98
|
+
enforcement;
|
|
99
|
+
ledger;
|
|
100
|
+
essential;
|
|
101
|
+
stage;
|
|
102
|
+
lastEmitted;
|
|
103
|
+
hardLimitAnnounced = false;
|
|
104
|
+
constructor(profileId, opts = {}) {
|
|
105
|
+
const basePolicy = opts.policy ?? defaultResourcePolicy(profileId);
|
|
106
|
+
// 2.6.1 (plan §8): ZELARI_MAX_TOOL_CALLS is a CONFIG ALIAS for the session
|
|
107
|
+
// ResourcePolicy.maxToolCalls — NOT a second independent limit. Setting it
|
|
108
|
+
// rewrites the single session budget (and its manifest hash); every cap,
|
|
109
|
+
// gate and snapshot derives from that one number.
|
|
110
|
+
const envCap = Number.parseInt(process.env.ZELARI_MAX_TOOL_CALLS ?? '', 10);
|
|
111
|
+
this.policy =
|
|
112
|
+
Number.isFinite(envCap) && envCap >= 1 ? { ...basePolicy, maxToolCalls: envCap } : basePolicy;
|
|
113
|
+
this.enforcement = opts.enforcement ?? 'advisory';
|
|
114
|
+
this.essential = new Set(opts.essentialTools ?? DEFAULT_ESSENTIAL_TOOLS);
|
|
115
|
+
this.stage = opts.stage ?? 'implement';
|
|
116
|
+
this.ledger = new ResourceLedger();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Count one tool call; returns the snapshot to emit when §10.4 says so
|
|
120
|
+
* (first sight, stage/pressure change, reserve crossing, any usage delta).
|
|
121
|
+
*/
|
|
122
|
+
noteToolCall() {
|
|
123
|
+
return this.consumeToolCall().snapshot;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 2.6.1 (plan §9): count one tool call AND surface the hard-limit event
|
|
127
|
+
* due on this call — `resource.limit_reached` once at the crossing,
|
|
128
|
+
* `resource.overrun` for every call past the limit. The spine appends the
|
|
129
|
+
* event right after its tool.call.
|
|
130
|
+
*/
|
|
131
|
+
consumeToolCall() {
|
|
132
|
+
this.ledger.record('tool-call');
|
|
133
|
+
const next = this.current();
|
|
134
|
+
let hardEvent = null;
|
|
135
|
+
const data = { used: next.toolCallsUsed, limit: next.toolCallsLimit, overrun: next.overrun };
|
|
136
|
+
if (!this.hardLimitAnnounced && next.toolCallsRemaining <= 0) {
|
|
137
|
+
this.hardLimitAnnounced = true;
|
|
138
|
+
hardEvent = { kind: 'resource.limit_reached', data };
|
|
139
|
+
}
|
|
140
|
+
else if (next.overrun > 0) {
|
|
141
|
+
hardEvent = { kind: 'resource.overrun', data };
|
|
142
|
+
}
|
|
143
|
+
const snapshot = shouldEmitSnapshot(this.lastEmitted, next) ? ((this.lastEmitted = next), next) : null;
|
|
144
|
+
return { snapshot, hardEvent };
|
|
145
|
+
}
|
|
146
|
+
/** §10.4 verification start: stage change (and a zero-cost ledger mark). */
|
|
147
|
+
noteVerificationStart() {
|
|
148
|
+
this.ledger.record('verification', 0);
|
|
149
|
+
return this.setStage('verify');
|
|
150
|
+
}
|
|
151
|
+
/** §10.4 repair start. */
|
|
152
|
+
noteRepairStart() {
|
|
153
|
+
return this.setStage('repair');
|
|
154
|
+
}
|
|
155
|
+
/** Stage transition; emits when the stage actually changes. */
|
|
156
|
+
setStage(stage) {
|
|
157
|
+
if (stage === this.stage)
|
|
158
|
+
return null;
|
|
159
|
+
this.stage = stage;
|
|
160
|
+
return this.emitIfDue();
|
|
161
|
+
}
|
|
162
|
+
/** 2.6.1 (plan §14): canonical budget for the reserve gate. */
|
|
163
|
+
budgetSnapshot() {
|
|
164
|
+
return this.ledger.budget(this.policy, this.stage);
|
|
165
|
+
}
|
|
166
|
+
/** Current projection without emitting. */
|
|
167
|
+
current() {
|
|
168
|
+
return buildResourceSnapshot(this.ledger.budget(this.policy, this.stage), this.policy);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* §11.3 gate — argument-aware (2.6.1 §13). Hard limit denies first in BOTH
|
|
172
|
+
* modes; advisory mode never blocks inside the protected zone; protected
|
|
173
|
+
* mode guards the zone with isVerificationEssential(tool, args).
|
|
174
|
+
*/
|
|
175
|
+
gateToolCall(toolNameOrInput) {
|
|
176
|
+
const input = typeof toolNameOrInput === 'string' ? { toolName: toolNameOrInput } : toolNameOrInput;
|
|
177
|
+
const snapshot = this.current();
|
|
178
|
+
// §9 hard limit: no new billable call once remaining is 0 — even
|
|
179
|
+
// essential ones (verification had the reserve to happen in).
|
|
180
|
+
if (snapshot.toolCallsRemaining <= 0) {
|
|
181
|
+
return { allowed: false, advisory: false, reason: HARD_LIMIT_DENIAL, snapshot, hardLimit: true };
|
|
182
|
+
}
|
|
183
|
+
if (!snapshot.reserveProtected)
|
|
184
|
+
return { allowed: true, advisory: false, snapshot };
|
|
185
|
+
if (this.enforcement === 'advisory') {
|
|
186
|
+
return { allowed: true, advisory: true, reason: ADVISORY_NOTICE, snapshot };
|
|
187
|
+
}
|
|
188
|
+
const essential = input.toolName === 'bash' || input.toolName === 'grep_content'
|
|
189
|
+
? isVerificationEssential(input.toolName, input.args, input.stage ?? this.stage)
|
|
190
|
+
: this.essential.has(input.toolName);
|
|
191
|
+
if (essential) {
|
|
192
|
+
return { allowed: true, advisory: true, reason: ADVISORY_NOTICE, snapshot };
|
|
193
|
+
}
|
|
194
|
+
return { allowed: false, advisory: false, reason: PROTECTED_DENIAL, snapshot };
|
|
195
|
+
}
|
|
196
|
+
/** Resume path (§9.5): rebuild usage from the session log, no emission. */
|
|
197
|
+
adoptLedgerFromEvents(events) {
|
|
198
|
+
const rebuilt = rebuildLedgerFromEvents(events);
|
|
199
|
+
this.ledger.resetTo(rebuilt.snapshot());
|
|
200
|
+
this.lastEmitted = undefined;
|
|
201
|
+
const now = this.current();
|
|
202
|
+
this.hardLimitAnnounced = now.toolCallsRemaining <= 0;
|
|
203
|
+
}
|
|
204
|
+
/** Latest emitted snapshot (what the model surface shows), if any. */
|
|
205
|
+
latestEmitted() {
|
|
206
|
+
return this.lastEmitted;
|
|
207
|
+
}
|
|
208
|
+
emitIfDue() {
|
|
209
|
+
const next = this.current();
|
|
210
|
+
if (shouldEmitSnapshot(this.lastEmitted, next)) {
|
|
211
|
+
this.lastEmitted = next;
|
|
212
|
+
return next;
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=budgetRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budgetRuntime.js","sourceRoot":"","sources":["../../../src/cli/budget/budgetRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,16 @@ import { applyBudgetPolicyAsync, estimateHistoryTokens, } from './tokenBudget.js
|
|
|
2
2
|
import { measureRequest } from './requestMeter.js';
|
|
3
3
|
import { compactEventPayload, } from './persistCompact.js';
|
|
4
4
|
import { derivedModelSeed } from '../headlessSpine.js';
|
|
5
|
+
import { formatResourceSnapshot } from '@zelari/core/session';
|
|
5
6
|
function messageWasRecompacted(message, history) {
|
|
6
7
|
if (message.compactedFromSeq === undefined)
|
|
7
8
|
return false;
|
|
8
9
|
return !history.some((candidate) => candidate.seq !== undefined && candidate.seq === message.seq);
|
|
9
10
|
}
|
|
11
|
+
/** RESOURCE STATUS system tail (doc §10.3) from the latest snapshot payload. */
|
|
12
|
+
function resourceStatusMessage(payload) {
|
|
13
|
+
return { role: 'system', content: formatResourceSnapshot(payload) };
|
|
14
|
+
}
|
|
10
15
|
async function sessionHistory(session) {
|
|
11
16
|
if (!session || session.status !== 'active')
|
|
12
17
|
return null;
|
|
@@ -87,6 +92,16 @@ export async function buildModelContext(input) {
|
|
|
87
92
|
};
|
|
88
93
|
input.onCompactionMetric?.(compactionMetrics);
|
|
89
94
|
}
|
|
95
|
+
// 2.6 Track B (doc §10.3) / 2.6.1 fix (closure plan §12): the durable
|
|
96
|
+
// `resource.snapshot` event is the ONLY model surface (ADR-0016 invariant:
|
|
97
|
+
// model-visible ⟺ logged) — deriveMessages projects the LATEST snapshot as
|
|
98
|
+
// one system message. Append a tail ONLY when no durable snapshot is in the
|
|
99
|
+
// history (fallback history, or a spine replay predating budget tracking).
|
|
100
|
+
// Exactly one RESOURCE STATUS may ever reach the provider.
|
|
101
|
+
if (input.resourceSnapshot &&
|
|
102
|
+
!history.some((m) => m.role === 'system' && typeof m.content === 'string' && m.content.startsWith('RESOURCE STATUS'))) {
|
|
103
|
+
history = [...history, resourceStatusMessage(input.resourceSnapshot)];
|
|
104
|
+
}
|
|
90
105
|
if (requestSurface) {
|
|
91
106
|
const measured = measureRequest({
|
|
92
107
|
systemMessages: requestSurface.systemMessages,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelContextBuilder.js","sourceRoot":"","sources":["../../../src/cli/budget/modelContextBuilder.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,mBAAmB,GAEpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"modelContextBuilder.js","sourceRoot":"","sources":["../../../src/cli/budget/modelContextBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/cli/budget/resourceLedger.ts — host-owned append-only resource ledger
|
|
3
|
+
* (2.6 Track B, doc §9.4). Single counting point: tool-call usage derives
|
|
4
|
+
* from `tool.call` session events (never from tool.interrupted — no double
|
|
5
|
+
* count). The model can read projections; only the host appends.
|
|
6
|
+
*/
|
|
7
|
+
import { ledgerDeltaFor, usageFromLedger, } from '@zelari/core';
|
|
8
|
+
import { budgetPressure, computeBudget } from '@zelari/core';
|
|
9
|
+
export class ResourceLedger {
|
|
10
|
+
entries = [];
|
|
11
|
+
nextSeq = 1;
|
|
12
|
+
static fromEntries(entries) {
|
|
13
|
+
const ledger = new ResourceLedger();
|
|
14
|
+
ledger.entries = [...entries];
|
|
15
|
+
ledger.nextSeq = entries.reduce((m, e) => Math.max(m, e.seq), 0) + 1;
|
|
16
|
+
return ledger;
|
|
17
|
+
}
|
|
18
|
+
/** Record one spend. Returns the entry (host call sites only). */
|
|
19
|
+
record(reason, calls = 1) {
|
|
20
|
+
const entry = { seq: this.nextSeq++, reason, delta: ledgerDeltaFor(reason, calls) };
|
|
21
|
+
this.entries.push(entry);
|
|
22
|
+
return entry;
|
|
23
|
+
}
|
|
24
|
+
snapshot() {
|
|
25
|
+
return [...this.entries];
|
|
26
|
+
}
|
|
27
|
+
/** Replace state (BudgetRuntime resume path); host call sites only. */
|
|
28
|
+
resetTo(entries) {
|
|
29
|
+
this.entries = [...entries];
|
|
30
|
+
this.nextSeq = entries.reduce((m, e) => Math.max(m, e.seq), 0) + 1;
|
|
31
|
+
}
|
|
32
|
+
usage() {
|
|
33
|
+
return usageFromLedger(this.entries);
|
|
34
|
+
}
|
|
35
|
+
/** Current budget projection under the given policy. Pure over the ledger. */
|
|
36
|
+
budget(policy, stage = 'implement') {
|
|
37
|
+
const usage = this.usage();
|
|
38
|
+
return computeBudget(policy, { toolCallsUsed: usage.toolCallsUsed, elapsedMs: usage.wallMs, tokensUsed: usage.tokensUsed }, stage);
|
|
39
|
+
}
|
|
40
|
+
pressure(policy) {
|
|
41
|
+
return budgetPressure(this.budget(policy), policy);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Rebuild the ledger from a session log (resume path, doc §9.5):
|
|
46
|
+
* one `tool-call` delta per `tool.call` event. Idempotent, order-preserving.
|
|
47
|
+
*/
|
|
48
|
+
export function rebuildLedgerFromEvents(events) {
|
|
49
|
+
const ledger = new ResourceLedger();
|
|
50
|
+
for (const e of events) {
|
|
51
|
+
if (e.kind === 'tool.call') {
|
|
52
|
+
// Same delta shape a live host append produces — replay == live.
|
|
53
|
+
ledger.record('tool-call', 1);
|
|
54
|
+
}
|
|
55
|
+
else if (e.kind === 'verification.run') {
|
|
56
|
+
ledger.record('verification', 0);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return ledger;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=resourceLedger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceLedger.js","sourceRoot":"","sources":["../../../src/cli/budget/resourceLedger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,GAIhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,OAAO,cAAc;IACjB,OAAO,GAA0B,EAAE,CAAC;IACpC,OAAO,GAAG,CAAC,CAAC;IAEpB,MAAM,CAAC,WAAW,CAAC,OAAuC;QACxD,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,MAA4B,EAAE,KAAK,GAAG,CAAC;QAC5C,MAAM,KAAK,GAAwB,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QACzG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,uEAAuE;IACvE,OAAO,CAAC,OAAuC;QAC7C,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,KAAK;QACH,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAC,MAAsB,EAAE,QAAuB,WAAW;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;IACrI,CAAC;IAED,QAAQ,CAAC,MAAsB;QAC7B,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAuC;IAC7E,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC3B,iEAAiE;YACjE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/cli/budget/resourceSnapshot.ts — emits `resource.snapshot` events and
|
|
3
|
+
* the model-visible RESOURCE STATUS block (2.6 Track B, doc §10).
|
|
4
|
+
*
|
|
5
|
+
* Frequency rules (§10.4): after a tool batch, on stage change, when a
|
|
6
|
+
* reserve threshold is crossed, and at verification/repair start. The event
|
|
7
|
+
* is model-surface LATEST-ONLY (modelSurface.ts projection) — the ledger
|
|
8
|
+
* keeps every snapshot, the model sees the last.
|
|
9
|
+
*/
|
|
10
|
+
import { budgetPressure, isVerificationReserveProtected } from '@zelari/core';
|
|
11
|
+
export function buildResourceSnapshot(budget, policy) {
|
|
12
|
+
return {
|
|
13
|
+
toolCallsLimit: budget.toolCalls.limit,
|
|
14
|
+
toolCallsUsed: budget.toolCalls.used,
|
|
15
|
+
toolCallsRemaining: budget.toolCalls.remaining,
|
|
16
|
+
overrun: budget.toolCalls.overrun,
|
|
17
|
+
...(budget.wallTime.remainingMs !== undefined ? { wallMsRemaining: budget.wallTime.remainingMs } : {}),
|
|
18
|
+
verificationReserve: budget.reserve.verification,
|
|
19
|
+
repairReserve: budget.reserve.repair,
|
|
20
|
+
stage: budget.stage,
|
|
21
|
+
pressure: budgetPressure(budget, policy),
|
|
22
|
+
reserveProtected: isVerificationReserveProtected(budget),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Decide whether a new snapshot must be emitted after a state change. */
|
|
26
|
+
export function shouldEmitSnapshot(previous, next) {
|
|
27
|
+
if (!previous)
|
|
28
|
+
return true;
|
|
29
|
+
if (previous.stage !== next.stage)
|
|
30
|
+
return true;
|
|
31
|
+
if (previous.pressure !== next.pressure)
|
|
32
|
+
return true;
|
|
33
|
+
if (previous.reserveProtected !== next.reserveProtected)
|
|
34
|
+
return true;
|
|
35
|
+
// After every tool batch: any usage delta.
|
|
36
|
+
if (previous.toolCallsUsed !== next.toolCallsUsed)
|
|
37
|
+
return true;
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
/** Event data payload — keys the invariant checker validates. */
|
|
41
|
+
export function snapshotEventData(s) {
|
|
42
|
+
return { ...s };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=resourceSnapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceSnapshot.js","sourceRoot":"","sources":["../../../src/cli/budget/resourceSnapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAmB9E,MAAM,UAAU,qBAAqB,CAAC,MAAsB,EAAE,MAAsB;IAClF,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;QACtC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;QACpC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;QAC9C,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;QACjC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,mBAAmB,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY;QAChD,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QACpC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;QACxC,gBAAgB,EAAE,8BAA8B,CAAC,MAAM,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAChC,QAA6C,EAC7C,IAA6B;IAE7B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACrE,2CAA2C;IAC3C,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,CAA0B;IAC1D,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/cli/budget/restoreRuntime.ts — host-parity resume helper (2.6.1
|
|
3
|
+
* closure plan §10). ONE path rebuilds the live BudgetRuntime from the
|
|
4
|
+
* durable session log so TUI, headless and the Desktop bridge reconstruct
|
|
5
|
+
* the SAME ResourceLedger after a resume:
|
|
6
|
+
*
|
|
7
|
+
* 12/40 used → resume (any host) → remaining 28
|
|
8
|
+
*/
|
|
9
|
+
import { readSessionLog, resolveSessionsDir } from '@zelari/core/session';
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
/**
|
|
12
|
+
* Rebuild `budget` usage from `<sessionsDir>/<sessionId>/events.jsonl`.
|
|
13
|
+
* Returns false when there is nothing to resume from (fresh session).
|
|
14
|
+
*/
|
|
15
|
+
export async function restoreBudgetRuntimeFromSession(budget, sessionId, baseDir) {
|
|
16
|
+
const eventsPath = path.join(resolveSessionsDir({ baseDir }), sessionId, 'events.jsonl');
|
|
17
|
+
const report = await readSessionLog(eventsPath).catch(() => null);
|
|
18
|
+
if (!report || report.events.length === 0)
|
|
19
|
+
return false;
|
|
20
|
+
budget.adoptLedgerFromEvents(report.events);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 2.6.1 (plan §6): hash of the LAST persisted session.harness_manifest
|
|
25
|
+
* (null when the log has none) — the resume-time drift baseline.
|
|
26
|
+
*/
|
|
27
|
+
export async function lastHarnessManifestHash(sessionId, baseDir) {
|
|
28
|
+
const eventsPath = path.join(resolveSessionsDir({ baseDir }), sessionId, 'events.jsonl');
|
|
29
|
+
const report = await readSessionLog(eventsPath).catch(() => null);
|
|
30
|
+
if (!report)
|
|
31
|
+
return null;
|
|
32
|
+
for (let i = report.events.length - 1; i >= 0; i--) {
|
|
33
|
+
const e = report.events[i];
|
|
34
|
+
if (e.kind === 'session.harness_manifest') {
|
|
35
|
+
const h = e.data.manifestHash;
|
|
36
|
+
return typeof h === 'string' ? h : null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=restoreRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restoreRuntime.js","sourceRoot":"","sources":["../../../src/cli/budget/restoreRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,MAAqB,EACrB,SAAiB,EACjB,OAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,OAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAI,CAAC,CAAC,IAAmC,CAAC,YAAY,CAAC;YAC9D,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
import { parseBlindWinner } from './blind.js';
|
|
6
6
|
import { DEFAULT_WALL_MS } from './policy.js';
|
|
7
7
|
import { parseGauntletVerdict } from './verdict.js';
|
|
8
|
+
import { budgetAwareGauntletGate } from './policy.js';
|
|
8
9
|
import { builderUserPrompt, criticUserPrompt, GAUNTLET_CRITIC_SYSTEM } from './prompts.js';
|
|
9
10
|
import { scheduleWaves } from './schedule.js';
|
|
10
11
|
import { formatGauntletSummary, gauntletProgressEvent, } from './events.js';
|
|
11
12
|
export async function runGauntletLoop(args) {
|
|
12
|
-
const { caps
|
|
13
|
+
const { caps } = args;
|
|
14
|
+
const deps = { ...args.deps, budgetGate: args.budgetGate ?? args.deps.budgetGate };
|
|
13
15
|
const pieces = args.pieces.slice(0, caps.maxPieces);
|
|
14
16
|
const started = (deps.now ?? Date.now)();
|
|
15
17
|
const results = [];
|
|
@@ -78,6 +80,24 @@ export async function runGauntletLoop(args) {
|
|
|
78
80
|
builderError: built.error,
|
|
79
81
|
});
|
|
80
82
|
winner = parseBlindWinner(criticized.result) ?? winner;
|
|
83
|
+
// 2.6.1 (plan §15/§16): budget-aware next-round feasibility. Zero
|
|
84
|
+
// budget holds; reserve-only finalizes; PASS keeps critic authority.
|
|
85
|
+
if (last.kind !== 'PASS') {
|
|
86
|
+
const b = deps.budgetGate?.() ?? null;
|
|
87
|
+
if (b) {
|
|
88
|
+
const decision = budgetAwareGauntletGate({
|
|
89
|
+
verdict: last.kind,
|
|
90
|
+
toolCallsRemaining: b.remaining,
|
|
91
|
+
verificationReserve: b.verificationReserve,
|
|
92
|
+
});
|
|
93
|
+
if (decision === 'hold') {
|
|
94
|
+
gap = last.gap;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
if (decision === 'finalize-verify')
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
81
101
|
emitProgress({
|
|
82
102
|
phase: last.kind === 'PASS' ? 'settled' : last.kind === 'BLOCKED' ? 'blocked' : 'repairing',
|
|
83
103
|
pieceId: piece.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/cli/gauntlet/loop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAwB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GAGtB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/cli/gauntlet/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,4 +58,16 @@ export function shouldRunGauntletHostLoop(opts) {
|
|
|
58
58
|
const phase = opts.phase ?? 'build';
|
|
59
59
|
return phase !== 'plan';
|
|
60
60
|
}
|
|
61
|
+
export function budgetAwareGauntletGate(input) {
|
|
62
|
+
if (input.verdict === 'PASS')
|
|
63
|
+
return 'proceed';
|
|
64
|
+
// 2.6.1 fix (closure plan §16): zero budget must HOLD — checked BEFORE the
|
|
65
|
+
// reserve comparison, otherwise remaining=0 <= reserve wins and a broke
|
|
66
|
+
// gauntlet would be told to "finalize-verify" with nothing left to spend.
|
|
67
|
+
if (input.toolCallsRemaining <= 0)
|
|
68
|
+
return 'hold';
|
|
69
|
+
if (input.toolCallsRemaining <= input.verificationReserve)
|
|
70
|
+
return 'finalize-verify';
|
|
71
|
+
return 'proceed';
|
|
72
|
+
}
|
|
61
73
|
//# sourceMappingURL=policy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/cli/gauntlet/policy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9C,gEAAgE;AAChE,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,MAAM;CACE,CAAC;AAUX,SAAS,MAAM,CAAC,GAAuB,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAW;IACjF,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAkB,EAClB,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC;IAC5C,IAAI,WAAW,GAAG,eAAe,CAAC;IAClC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,WAAW,GAAG,CAAC,CAAC;IACpD,CAAC;IACD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5E,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3E,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC;QACjF,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,yBAAyB,CAAC,IAMzC;IACC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;IACpC,OAAO,KAAK,KAAK,MAAM,CAAC;AAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../src/cli/gauntlet/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/gauntlet/run.js
CHANGED
|
@@ -108,7 +108,13 @@ export async function runHeadlessGauntlet(opts, provider, model) {
|
|
|
108
108
|
type: 'log',
|
|
109
109
|
message: `[gauntlet] ${decomposed.pieces.length} piece(s) from ${decomposed.source}${decomposed.error ? ` (${decomposed.error.slice(0, 80)})` : ''}`,
|
|
110
110
|
});
|
|
111
|
+
// 2.6.1 (plan §15): live session budget probe for the loop gate.
|
|
112
|
+
const budgetGate = () => {
|
|
113
|
+
const lim = spine.resourceBudgetLimit();
|
|
114
|
+
return lim ? { remaining: lim.remaining, verificationReserve: lim.verificationReserve } : null;
|
|
115
|
+
};
|
|
111
116
|
const result = await runGauntletLoop({
|
|
117
|
+
budgetGate,
|
|
112
118
|
pieces: decomposed.pieces,
|
|
113
119
|
caps,
|
|
114
120
|
deps: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/gauntlet/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/gauntlet/run.ts"],"names":[],"mappings":"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"}
|