@telora/daemon 0.22.187 → 0.22.189

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 (95) hide show
  1. package/build-info.json +2 -2
  2. package/dist/completion/escalations.d.ts.map +1 -1
  3. package/dist/completion/escalations.js +2 -1
  4. package/dist/completion/escalations.js.map +1 -1
  5. package/dist/completion/review-exit-phase.d.ts.map +1 -1
  6. package/dist/completion/review-exit-phase.js +11 -4
  7. package/dist/completion/review-exit-phase.js.map +1 -1
  8. package/dist/completion/standing-approval-convergence.d.ts.map +1 -1
  9. package/dist/completion/standing-approval-convergence.js +2 -1
  10. package/dist/completion/standing-approval-convergence.js.map +1 -1
  11. package/dist/focus/focus-loop-registry.js +2 -2
  12. package/dist/focus/focus-loop-registry.js.map +1 -1
  13. package/dist/loops/llm-client.d.ts +1 -1
  14. package/dist/loops/llm-client.d.ts.map +1 -1
  15. package/dist/loops/llm-client.js +18 -105
  16. package/dist/loops/llm-client.js.map +1 -1
  17. package/dist/queries/agent-resolvable-promotion.d.ts +12 -0
  18. package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
  19. package/dist/queries/agent-resolvable-promotion.js +17 -6
  20. package/dist/queries/agent-resolvable-promotion.js.map +1 -1
  21. package/dist/queries/delivery-gate-state.d.ts +3 -0
  22. package/dist/queries/delivery-gate-state.d.ts.map +1 -1
  23. package/dist/queries/delivery-gate-state.js +1 -1
  24. package/dist/queries/delivery-gate-state.js.map +1 -1
  25. package/dist/queries/verify-own-holds.d.ts +89 -0
  26. package/dist/queries/verify-own-holds.d.ts.map +1 -0
  27. package/dist/queries/verify-own-holds.js +93 -0
  28. package/dist/queries/verify-own-holds.js.map +1 -0
  29. package/dist/spawn/one-shot-model.d.ts +145 -0
  30. package/dist/spawn/one-shot-model.d.ts.map +1 -0
  31. package/dist/spawn/one-shot-model.js +329 -0
  32. package/dist/spawn/one-shot-model.js.map +1 -0
  33. package/dist/spawn/review-hold-park.d.ts.map +1 -1
  34. package/dist/spawn/review-hold-park.js +7 -3
  35. package/dist/spawn/review-hold-park.js.map +1 -1
  36. package/dist/spawn/routing-decider-spawn.d.ts +30 -0
  37. package/dist/spawn/routing-decider-spawn.d.ts.map +1 -1
  38. package/dist/spawn/routing-decider-spawn.js +84 -2
  39. package/dist/spawn/routing-decider-spawn.js.map +1 -1
  40. package/dist/spawn/routing-decider.d.ts.map +1 -1
  41. package/dist/spawn/routing-decider.js +22 -0
  42. package/dist/spawn/routing-decider.js.map +1 -1
  43. package/dist/spawn/spawn-cooldown.d.ts +15 -1
  44. package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
  45. package/dist/spawn/spawn-cooldown.js +67 -19
  46. package/dist/spawn/spawn-cooldown.js.map +1 -1
  47. package/dist/verify/ai-inspection-runner.d.ts.map +1 -1
  48. package/dist/verify/ai-inspection-runner.js +26 -7
  49. package/dist/verify/ai-inspection-runner.js.map +1 -1
  50. package/dist/verify/de-restatement.d.ts +9 -2
  51. package/dist/verify/de-restatement.d.ts.map +1 -1
  52. package/dist/verify/de-restatement.js +14 -76
  53. package/dist/verify/de-restatement.js.map +1 -1
  54. package/dist/verify/default-on-guards.d.ts +5 -2
  55. package/dist/verify/default-on-guards.d.ts.map +1 -1
  56. package/dist/verify/default-on-guards.js +5 -3
  57. package/dist/verify/default-on-guards.js.map +1 -1
  58. package/dist/verify/verification-deps-default.d.ts.map +1 -1
  59. package/dist/verify/verification-deps-default.js +6 -0
  60. package/dist/verify/verification-deps-default.js.map +1 -1
  61. package/dist/verify/verification-deps.d.ts +10 -0
  62. package/dist/verify/verification-deps.d.ts.map +1 -1
  63. package/dist/verify/verification-deterministic.d.ts +7 -0
  64. package/dist/verify/verification-deterministic.d.ts.map +1 -1
  65. package/dist/verify/verification-deterministic.js.map +1 -1
  66. package/dist/verify/verification-engine.d.ts +1 -20
  67. package/dist/verify/verification-engine.d.ts.map +1 -1
  68. package/dist/verify/verification-engine.js +24 -55
  69. package/dist/verify/verification-engine.js.map +1 -1
  70. package/dist/verify/verification-evidence-unavailable-feedback.d.ts +3 -1
  71. package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
  72. package/dist/verify/verification-evidence-unavailable-feedback.js +3 -1
  73. package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
  74. package/dist/verify/verification-feedback.d.ts +4 -12
  75. package/dist/verify/verification-feedback.d.ts.map +1 -1
  76. package/dist/verify/verification-feedback.js +7 -12
  77. package/dist/verify/verification-feedback.js.map +1 -1
  78. package/dist/verify/verification-history-reset.d.ts.map +1 -1
  79. package/dist/verify/verification-history-reset.js +11 -3
  80. package/dist/verify/verification-history-reset.js.map +1 -1
  81. package/dist/verify/verification-model-unavailable-hold.d.ts +92 -0
  82. package/dist/verify/verification-model-unavailable-hold.d.ts.map +1 -0
  83. package/dist/verify/verification-model-unavailable-hold.js +207 -0
  84. package/dist/verify/verification-model-unavailable-hold.js.map +1 -0
  85. package/dist/verify/verification-strategies.d.ts +32 -0
  86. package/dist/verify/verification-strategies.d.ts.map +1 -0
  87. package/dist/verify/verification-strategies.js +47 -0
  88. package/dist/verify/verification-strategies.js.map +1 -0
  89. package/dist/verify/verify-reconciliation.d.ts.map +1 -1
  90. package/dist/verify/verify-reconciliation.js +2 -1
  91. package/dist/verify/verify-reconciliation.js.map +1 -1
  92. package/dist/verify/verify-restatement.d.ts.map +1 -1
  93. package/dist/verify/verify-restatement.js +21 -8
  94. package/dist/verify/verify-restatement.js.map +1 -1
  95. package/package.json +1 -1
@@ -0,0 +1,329 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/spawn/one-shot-model.test.ts,
3
+ // packages/daemon/src/verify/verification-engine.test.ts,
4
+ // packages/daemon/src/verify/verification-model-unavailable-hold.test.ts,
5
+ // packages/daemon/src/verify/verify-restatement.test.ts
6
+ // PINNED-BY-END
7
+ /**
8
+ * One-shot model invocation: the single `claude --print` spawner every
9
+ * non-team model call in the daemon goes through.
10
+ *
11
+ * Before this module each caller (verify/de-restatement.ts, loops/llm-client.ts)
12
+ * spawned its own `claude --print`, discarded stdout on a non-zero exit and
13
+ * rejected with a bare Error carrying only stderr -- which the CLI leaves EMPTY
14
+ * on a rate limit. On 2026-09-23 (mars) the account was rate limited for ten
15
+ * hours; every one-shot exited 1 with the reason invisible, and every caller
16
+ * consumed that exit as a result: verify wrote it into the shortfall slot and
17
+ * parked four deliveries, the routing decider stamped it as a decision attempt.
18
+ * Meanwhile spawn-cooldown.ts knew the window and held only team spawns.
19
+ *
20
+ * What this module changes, at the source:
21
+ * - ONE argv and ONE result shape. Output is stream-json, so the CLI's own
22
+ * `rate_limit_event` (the typed reset instant the team path already reads
23
+ * via spawn/rate-limit.ts) and the `result` event (is_error, api_error_status,
24
+ * usage, cost) are parsed rather than guessed from prose.
25
+ * - A failure is a TYPED outcome. ModelUnavailable names its kind (rate_limit,
26
+ * auth, timeout, spawn, unknown), the exit code, the reset instant when the
27
+ * provider gave one, and the tail of BOTH streams. A caller that must tell
28
+ * "the model could not run" from "the model judged" reads `kind`; a caller
29
+ * that only catches keeps working (it is still an Error).
30
+ * - The provider-wide window is READ before spawning and WRITTEN on a
31
+ * rate-limit rejection (spawn-cooldown.ts providerRateLimitHoldUntilMs /
32
+ * recordProviderRateLimit). During an open window no subprocess is spawned:
33
+ * the call rejects at once with kind rate_limit and the reset instant.
34
+ *
35
+ * @module spawn/one-shot-model
36
+ */
37
+ import { spawn } from 'node:child_process';
38
+ import { createLogger } from '../shell/log.js';
39
+ import { trackChildProcess } from './worker-registry.js';
40
+ import { parseRateLimitInfo } from './rate-limit.js';
41
+ import { providerRateLimitHoldUntilMs, recordProviderRateLimit } from './spawn-cooldown.js';
42
+ const log = createLogger({ module: 'one-shot-model' });
43
+ const DEFAULT_TIMEOUT_MS = 2 * 60 * 1000;
44
+ /** How much of each stream a failure carries (enough to read the reason, never the whole transcript). */
45
+ const STREAM_TAIL_CHARS = 2000;
46
+ /**
47
+ * A model invocation that could not COMPLETE. Never a judgment: the model was
48
+ * not reached, was refused, or did not answer in time. Callers hold or retry on
49
+ * it; none of them may record it as a verdict, a shortfall or an attempt.
50
+ */
51
+ export class ModelUnavailable extends Error {
52
+ kind;
53
+ label;
54
+ exitCode;
55
+ /** Epoch ms when the provider says capacity returns (rate_limit only, when it said). */
56
+ resetAtMs;
57
+ stdoutTail;
58
+ stderrTail;
59
+ constructor(args) {
60
+ super(formatModelUnavailable(args));
61
+ this.name = 'ModelUnavailable';
62
+ this.kind = args.kind;
63
+ this.label = args.label;
64
+ this.exitCode = args.exitCode ?? null;
65
+ this.resetAtMs = args.resetAtMs ?? null;
66
+ this.stdoutTail = args.stdoutTail ?? '';
67
+ this.stderrTail = args.stderrTail ?? '';
68
+ }
69
+ }
70
+ function formatModelUnavailable(args) {
71
+ const parts = [`${args.label}: model unavailable (${args.kind}`];
72
+ if (args.exitCode !== undefined && args.exitCode !== null)
73
+ parts.push(`, exit ${args.exitCode}`);
74
+ if (args.resetAtMs !== undefined && args.resetAtMs !== null) {
75
+ parts.push(`, resets ${new Date(args.resetAtMs).toISOString()}`);
76
+ }
77
+ parts.push(')');
78
+ const reason = args.detail
79
+ ?? lastLine(args.stderrTail ?? '')
80
+ ?? lastLine(args.stdoutTail ?? '');
81
+ if (reason)
82
+ parts.push(`: ${reason}`);
83
+ return parts.join('');
84
+ }
85
+ function lastLine(text) {
86
+ const lines = text.split('\n').map((l) => l.trim()).filter((l) => l !== '');
87
+ return lines.length > 0 ? lines[lines.length - 1] : null;
88
+ }
89
+ /** Type guard: the thrown value is a typed unavailability, not a model judgment. */
90
+ export function isModelUnavailable(err) {
91
+ return err instanceof ModelUnavailable;
92
+ }
93
+ function isRecord(value) {
94
+ return typeof value === 'object' && value !== null;
95
+ }
96
+ /**
97
+ * Parse a `--output-format stream-json` transcript. One JSON object per line;
98
+ * lines that are not JSON (or not events we read) are skipped, so a partial
99
+ * transcript from a killed child still yields what it had. Pure.
100
+ */
101
+ export function parseOneShotStream(stdout) {
102
+ const summary = {};
103
+ for (const line of stdout.split('\n')) {
104
+ const trimmed = line.trim();
105
+ if (trimmed === '' || !trimmed.startsWith('{'))
106
+ continue;
107
+ let event;
108
+ try {
109
+ event = JSON.parse(trimmed);
110
+ }
111
+ catch {
112
+ continue;
113
+ }
114
+ if (!isRecord(event))
115
+ continue;
116
+ const type = event['type'];
117
+ if (type === 'system' && event['subtype'] === 'init' && typeof event['model'] === 'string') {
118
+ summary.initModel = event['model'];
119
+ continue;
120
+ }
121
+ if (type === 'rate_limit_event') {
122
+ const info = parseRateLimitInfo(event);
123
+ if (info && info.status === 'rejected') {
124
+ summary.rateLimitRejected = { resetAtMs: info.resetsAtMs, rateLimitType: info.rateLimitType };
125
+ }
126
+ continue;
127
+ }
128
+ if (type === 'result') {
129
+ const usage = isRecord(event['usage']) ? event['usage'] : undefined;
130
+ const modelUsage = event['modelUsage'];
131
+ const modelUsageKey = isRecord(modelUsage) ? Object.keys(modelUsage)[0] : undefined;
132
+ const status = event['api_error_status'];
133
+ summary.result = {
134
+ isError: event['is_error'] === true,
135
+ text: typeof event['result'] === 'string' ? event['result'] : null,
136
+ apiErrorStatus: typeof status === 'number' ? status : null,
137
+ ...(usage ? { usage } : {}),
138
+ ...(modelUsageKey ? { modelUsageKey } : {}),
139
+ costUsd: typeof event['total_cost_usd'] === 'number' ? event['total_cost_usd'] : null,
140
+ };
141
+ }
142
+ }
143
+ return summary;
144
+ }
145
+ /** The CLI's prose for a limit, when the typed event was not in the transcript (text mode, older CLI). */
146
+ const RATE_LIMIT_PROSE = /hit your (session|usage|weekly) limit|rate limit(ed)? (reached|exceeded)|usage limit|too many requests/i;
147
+ /** The CLI's prose for a refused credential. */
148
+ const AUTH_PROSE = /not logged in|unauthori[sz]ed|invalid api key|authentication (failed|required)/i;
149
+ /**
150
+ * The provider refusal the CLI's PROSE names, or null. One classifier for every
151
+ * spawner (the routing decider reads its result text through this too), so a CLI
152
+ * build whose rejection carries words but no status is read the same way
153
+ * everywhere. Callers pass prose only -- never a stream-json event line. Pure.
154
+ */
155
+ export function providerRefusalInProse(prose) {
156
+ if (RATE_LIMIT_PROSE.test(prose))
157
+ return 'rate_limit';
158
+ if (AUTH_PROSE.test(prose))
159
+ return 'auth';
160
+ return null;
161
+ }
162
+ /**
163
+ * The human-readable part of what the child wrote: the result text, stderr, and
164
+ * any stdout line that is NOT a stream-json event. The event lines are never
165
+ * scanned -- every healthy transcript carries the literal `rate_limit_event`
166
+ * (status allowed), and an assistant text block about "authentication" is the
167
+ * model's answer, not the provider's refusal. Pure.
168
+ */
169
+ function proseOf(summary, stdout, stderr) {
170
+ const plain = stdout.split('\n').filter((line) => !line.trim().startsWith('{'));
171
+ return [summary.result?.text ?? '', ...plain, stderr].join('\n');
172
+ }
173
+ /**
174
+ * Classify a finished child that did NOT complete an answer. Pure: takes what
175
+ * was observed, names the kind. Order matters: a typed rate-limit event beats
176
+ * every other signal, a status beats prose, and a timeout with no provider
177
+ * signal is a timeout (the prose is only consulted when nothing typed explains
178
+ * the exit).
179
+ */
180
+ export function classifyOneShotFailure(args) {
181
+ if (args.summary.rateLimitRejected) {
182
+ return { kind: 'rate_limit', resetAtMs: args.summary.rateLimitRejected.resetAtMs };
183
+ }
184
+ const status = args.summary.result?.apiErrorStatus ?? null;
185
+ if (status === 429)
186
+ return { kind: 'rate_limit', resetAtMs: null };
187
+ if (status === 401 || status === 403)
188
+ return { kind: 'auth', resetAtMs: null };
189
+ if (args.timedOut)
190
+ return { kind: 'timeout', resetAtMs: null };
191
+ const refusal = providerRefusalInProse(proseOf(args.summary, args.stdout, args.stderr));
192
+ return { kind: refusal ?? 'unknown', resetAtMs: null };
193
+ }
194
+ // ---------------------------------------------------------------------------
195
+ // Invocation
196
+ // ---------------------------------------------------------------------------
197
+ /** The argv every one-shot uses. Exported so a test can pin it without spawning. */
198
+ export function buildOneShotArgs(systemPrompt) {
199
+ return [
200
+ '--print',
201
+ '--output-format', 'stream-json',
202
+ '--verbose',
203
+ '--no-session-persistence',
204
+ '--system-prompt', systemPrompt,
205
+ ];
206
+ }
207
+ /** One log line per open window, not one per held call (verify ticks every ~90s per delivery). */
208
+ let lastLoggedHoldUntilMs = null;
209
+ /** The typed refusal for a call made inside an open provider window, or null when no window is open. */
210
+ function heldByProviderWindow(label, nowMs) {
211
+ const holdUntil = providerRateLimitHoldUntilMs(nowMs);
212
+ if (holdUntil === null)
213
+ return null;
214
+ if (lastLoggedHoldUntilMs !== holdUntil) {
215
+ lastLoggedHoldUntilMs = holdUntil;
216
+ log.info(`[one-shot] ${label}: not spawning -- provider rate limit holds every call until ` +
217
+ `${new Date(holdUntil).toISOString()}`);
218
+ }
219
+ return new ModelUnavailable({
220
+ kind: 'rate_limit',
221
+ label,
222
+ resetAtMs: holdUntil,
223
+ detail: 'provider rate-limit window open; no subprocess spawned',
224
+ });
225
+ }
226
+ /** The completed answer a parsed transcript amounts to. Pure. */
227
+ function completedResult(summary) {
228
+ const result = summary.result;
229
+ const model = summary.initModel ?? result.modelUsageKey;
230
+ return {
231
+ text: result.text ?? '',
232
+ ...(result.usage ? { usage: result.usage } : {}),
233
+ ...(model ? { model } : {}),
234
+ costUsd: result.costUsd,
235
+ };
236
+ }
237
+ /**
238
+ * Invoke the model once. The user message goes on stdin; the system prompt on
239
+ * argv. Resolves with the completed answer; rejects with ModelUnavailable when
240
+ * the model could not be reached, was refused or did not answer in time. Any
241
+ * other rejection is a programming error in this wrapper, not a model outcome.
242
+ */
243
+ export function invokeOneShotModel(systemPrompt, userMessage, opts) {
244
+ const label = opts.label;
245
+ const nowMs = opts.nowMs ?? (() => Date.now());
246
+ const claudeBin = opts.claudeBin ?? 'claude';
247
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
248
+ const spawnFn = opts.spawnFn ?? ((cmd, args, sopts) => spawn(cmd, args, sopts));
249
+ const held = heldByProviderWindow(label, nowMs());
250
+ if (held)
251
+ return Promise.reject(held);
252
+ return new Promise((resolve, reject) => {
253
+ let child;
254
+ try {
255
+ child = spawnFn(claudeBin, buildOneShotArgs(systemPrompt), { stdio: ['pipe', 'pipe', 'pipe'] });
256
+ }
257
+ catch (err) {
258
+ reject(new ModelUnavailable({ kind: 'spawn', label, detail: `spawn failed: ${err.message}` }));
259
+ return;
260
+ }
261
+ // Register so a graceful stop reaps this one-shot if it is still running.
262
+ trackChildProcess(child, label);
263
+ let stdout = '';
264
+ let stderr = '';
265
+ let timedOut = false;
266
+ let settled = false;
267
+ child.stdout?.on('data', (chunk) => { stdout += chunk.toString('utf8'); });
268
+ child.stderr?.on('data', (chunk) => { stderr += chunk.toString('utf8'); });
269
+ // A child that exits before draining stdin emits EPIPE on the stdin socket
270
+ // asynchronously; unhandled, that would crash the daemon. The close handler
271
+ // classifies the exit; the write error itself carries nothing more.
272
+ child.stdin?.on?.('error', () => { });
273
+ // The timeout SETTLES the call: 'close' waits for every stdio pipe, and a
274
+ // grandchild (an MCP server the CLI started) that inherited stdout can hold
275
+ // it open after the CLI is dead. The child stays in the worker registry for
276
+ // the teardown reap; a late 'close' is ignored (settled).
277
+ const timer = setTimeout(() => {
278
+ timedOut = true;
279
+ try {
280
+ child.kill('SIGKILL');
281
+ }
282
+ catch { /* ignore */ }
283
+ const { kind, resetAtMs } = classifyOneShotFailure({ exitCode: null, timedOut, summary: parseOneShotStream(stdout), stdout, stderr });
284
+ fail(kind, null, resetAtMs, `no answer within ${Math.round(timeoutMs / 1000)}s; killed`);
285
+ }, timeoutMs);
286
+ const fail = (kind, exitCode, resetAtMs, detail) => {
287
+ if (settled)
288
+ return;
289
+ settled = true;
290
+ clearTimeout(timer);
291
+ if (kind === 'rate_limit' && resetAtMs !== null)
292
+ recordProviderRateLimit(resetAtMs, nowMs());
293
+ reject(new ModelUnavailable({
294
+ kind,
295
+ label,
296
+ exitCode,
297
+ resetAtMs,
298
+ stdoutTail: stdout.slice(-STREAM_TAIL_CHARS),
299
+ stderrTail: stderr.slice(-STREAM_TAIL_CHARS),
300
+ ...(detail ? { detail } : {}),
301
+ }));
302
+ };
303
+ child.on('error', (err) => {
304
+ fail('spawn', null, null, `spawn error: ${err.message}`);
305
+ });
306
+ child.on('close', (code) => {
307
+ if (settled)
308
+ return;
309
+ const summary = parseOneShotStream(stdout);
310
+ const completed = code === 0 && summary.result !== undefined && !summary.result.isError;
311
+ if (!completed) {
312
+ const { kind, resetAtMs } = classifyOneShotFailure({ exitCode: code, timedOut, summary, stdout, stderr });
313
+ fail(kind, code, resetAtMs, summary.result?.text ?? undefined);
314
+ return;
315
+ }
316
+ settled = true;
317
+ clearTimeout(timer);
318
+ resolve(completedResult(summary));
319
+ });
320
+ try {
321
+ child.stdin?.write(userMessage);
322
+ child.stdin?.end();
323
+ }
324
+ catch (err) {
325
+ fail('spawn', null, null, `stdin write failed: ${err.message}`);
326
+ }
327
+ });
328
+ }
329
+ //# sourceMappingURL=one-shot-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"one-shot-model.js","sourceRoot":"","sources":["../../src/spawn/one-shot-model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"review-hold-park.d.ts","sourceRoot":"","sources":["../../src/spawn/review-hold-park.ts"],"names":[],"mappings":"AAuFA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AAQtC,+CAA+C;AAC/C,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnE,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAAC;IACrF,+BAA+B,CAAC,EAAE,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;IACtF,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IAChE,gFAAgF;IAChF,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAWD,8CAA8C;AAC9C,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CA2DhC"}
1
+ {"version":3,"file":"review-hold-park.d.ts","sourceRoot":"","sources":["../../src/spawn/review-hold-park.ts"],"names":[],"mappings":"AAuFA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AAStC,+CAA+C;AAC/C,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnE,2DAA2D;AAC3D,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAAC;IACrF,+BAA+B,CAAC,EAAE,gBAAgB,CAAC,iCAAiC,CAAC,CAAC;IACtF,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;IAChE,gFAAgF;IAChF,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAWD,8CAA8C;AAC9C,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAgEhC"}
@@ -86,6 +86,7 @@ import { updateDeliveryStatus } from '../queries/deliveries.js';
86
86
  import { clearOperatorHoldGateState, hasOperatorHoldMarker, resolveOperatorHold, } from '../delivery/operator-hold.js';
87
87
  import { hasCommitVerdictHoldMarker } from '../delivery/commit-verdict-hold.js';
88
88
  import { shortfallParkRefusingRework } from '../verify/shortfall-park.js';
89
+ import { hasModelUnavailableHold } from '../queries/verify-own-holds.js';
89
90
  import { clearSpawnCooldownDurably } from './spawn-cooldown.js';
90
91
  import { createLogger } from '../shell/log.js';
91
92
  const log = createLogger({ module: 'spawn' });
@@ -119,7 +120,10 @@ export async function gateReviewSpawnOnOperatorHold(focus, deps = {}) {
119
120
  const marked = deliveries.filter((d) => d.executionStatus === VERIFY_STATUS && hasOperatorHoldMarker(d.gateState));
120
121
  const verdictHeldIds = new Set(deliveries.filter((d) => d.executionStatus === VERIFY_STATUS && hasCommitVerdictHoldMarker(d.gateState)).map((d) => d.id));
121
122
  const parkedIds = new Set(deliveries.filter((d) => shortfallParkRefusingRework(d) !== null).map((d) => d.id));
122
- if (marked.length === 0 && verdictHeldIds.size === 0 && parkedIds.size === 0) {
123
+ // Awaiting the model (queries/verify-own-holds.ts): verify's reconciliation could
124
+ // not run, so no verdict exists for a review to close on. Verify releases it.
125
+ const awaitedIds = new Set(deliveries.filter((d) => d.executionStatus === VERIFY_STATUS && hasModelUnavailableHold(d.gateState)).map((d) => d.id));
126
+ if (marked.length === 0 && verdictHeldIds.size === 0 && parkedIds.size === 0 && awaitedIds.size === 0) {
123
127
  parkLogged.delete(focus.focus_id);
124
128
  return 'none';
125
129
  }
@@ -145,7 +149,7 @@ export async function gateReviewSpawnOnOperatorHold(focus, deps = {}) {
145
149
  }
146
150
  // Every recorded hold still stands. Park only when the review has nothing else
147
151
  // it could move: every non-terminal delivery is one of those held deliveries.
148
- const heldIds = new Set([...marked.map((d) => d.id), ...verdictHeldIds, ...parkedIds]);
152
+ const heldIds = new Set([...marked.map((d) => d.id), ...verdictHeldIds, ...parkedIds, ...awaitedIds]);
149
153
  const onlyHeldWork = deliveries.every((d) => TERMINAL_STATUSES.has(d.executionStatus ?? '') || heldIds.has(d.id));
150
154
  if (!onlyHeldWork) {
151
155
  parkLogged.delete(focus.focus_id);
@@ -154,7 +158,7 @@ export async function gateReviewSpawnOnOperatorHold(focus, deps = {}) {
154
158
  if (!parkLogged.has(focus.focus_id)) {
155
159
  parkLogged.add(focus.focus_id);
156
160
  log.info(`[review-hold-park] "${focus.focus_name}": review parked -- every non-terminal delivery is held in verify ` +
157
- `by an open operator escalation, an awaited gate verdict or a repeating-shortfall park; no review team spawns ` +
161
+ `by an open operator escalation, an awaited gate verdict, an awaited model or a repeating-shortfall park; no review team spawns ` +
158
162
  `(and no teardown accrues) until it clears`);
159
163
  }
160
164
  return 'parked';
@@ -1 +1 @@
1
- {"version":3,"file":"review-hold-park.js","sourceRoot":"","sources":["../../src/spawn/review-hold-park.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-hold-park.js","sourceRoot":"","sources":["../../src/spawn/review-hold-park.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ import { type ChildProcess } from 'node:child_process';
15
15
  import { type TokenUsage } from '@telora/daemon-core';
16
16
  import type { DaemonConfig } from '../types/index.js';
17
17
  import { type TelemetryMetricRow } from '../otlp/telemetry-writer.js';
18
+ import { type ModelUnavailableKind } from './one-shot-model.js';
18
19
  /**
19
20
  * MODEL PIN: 'opus'. A routing decision is the one place the system chooses to
20
21
  * interrupt a human: it climbs the intent ladder (product/focus context +
@@ -61,7 +62,36 @@ export interface RoutingDeciderSpawnResult {
61
62
  stderr: string;
62
63
  sessionId: string | null;
63
64
  errorMessage?: string;
65
+ /**
66
+ * The MODEL was unavailable: the provider rejected the session on a rate limit
67
+ * (the stream's typed rate_limit_event, a 429 result, or the CLI's own limit
68
+ * prose in the result), refused it on auth (401/403 or its prose), or the
69
+ * provider-wide window was open so nothing was spawned. The decider did not
70
+ * decide and did not ATTEMPT -- the sweep stamps nothing and re-hands the
71
+ * observation once the model is reachable. A timeout with NO provider refusal
72
+ * is not this: a decider that was working for ten minutes ran. A timeout AFTER
73
+ * a refusal is (the refusal explains why it never finished).
74
+ */
75
+ modelUnavailable?: {
76
+ kind: ModelUnavailableKind;
77
+ resetAtMs: number | null;
78
+ };
64
79
  }
80
+ /** What the spawn observed of the provider, for classifying an unavailability. Pure. */
81
+ export interface DeciderProviderFacts {
82
+ rateLimitRejected: {
83
+ resetAtMs: number | null;
84
+ } | null;
85
+ apiErrorStatus: number | null;
86
+ /** The error result's text, when the result was an error (the CLI's own words). */
87
+ errorResultText: string | null;
88
+ }
89
+ /**
90
+ * Pure: the model unavailability a finished decider's facts amount to, or null
91
+ * (any other outcome). Typed signals first; the result's prose is read through
92
+ * the one-shot wrapper's classifier so both spawners read one CLI the same way.
93
+ */
94
+ export declare function deciderModelUnavailability(facts: DeciderProviderFacts): RoutingDeciderSpawnResult['modelUnavailable'] | undefined;
65
95
  /** Injectable process seam (tests pass a fake child). */
66
96
  export interface RoutingDeciderSpawnSeam {
67
97
  spawnProcess: (command: string, args: string[], options: {
@@ -1 +1 @@
1
- {"version":3,"file":"routing-decider-spawn.d.ts","sourceRoot":"","sources":["../../src/spawn/routing-decider-spawn.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAM3G;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,SAAS,CAAC;AAE5C,0EAA0E;AAC1E,eAAO,MAAM,0BAA0B,QAAiB,CAAC;AAEzD,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAQtD,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yDAAyD;AACzD,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;KAAE,KAAK,YAAY,CAAC;IACnI,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAClD;AAOD,wCAAwC;AACxC,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,0BAA0B,EAAE,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,CAW7H;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,kBAAkB,CAoBrB;AAED,wGAAwG;AACxG,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,0BAA0B,EAChC,IAAI,GAAE,uBAAqC,GAC1C,OAAO,CAAC,yBAAyB,CAAC,CA+EpC"}
1
+ {"version":3,"file":"routing-decider-spawn.d.ts","sourceRoot":"","sources":["../../src/spawn/routing-decider-spawn.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,9 @@ import { buildAuditMetricRow } from './lifecycle.js';
22
22
  import { bufferMetric as defaultBufferMetric } from '../otlp/telemetry-writer.js';
23
23
  import { estimateLoopCostUsd } from '../loops/index.js';
24
24
  import { createLogger } from '../shell/log.js';
25
+ import { parseRateLimitInfo } from './rate-limit.js';
26
+ import { providerRateLimitHoldUntilMs, recordProviderRateLimit } from './spawn-cooldown.js';
27
+ import { providerRefusalInProse } from './one-shot-model.js';
25
28
  const log = createLogger({ module: 'routing-decider' });
26
29
  /**
27
30
  * MODEL PIN: 'opus'. A routing decision is the one place the system chooses to
@@ -55,6 +58,21 @@ export const ROUTING_DECIDER_MCP_TOOLS = [
55
58
  'mcp__telora-products__telora_reality_tree_traverse',
56
59
  'mcp__telora-products__telora_wiki_search',
57
60
  ];
61
+ /**
62
+ * Pure: the model unavailability a finished decider's facts amount to, or null
63
+ * (any other outcome). Typed signals first; the result's prose is read through
64
+ * the one-shot wrapper's classifier so both spawners read one CLI the same way.
65
+ */
66
+ export function deciderModelUnavailability(facts) {
67
+ if (facts.rateLimitRejected)
68
+ return { kind: 'rate_limit', resetAtMs: facts.rateLimitRejected.resetAtMs };
69
+ if (facts.apiErrorStatus === 429)
70
+ return { kind: 'rate_limit', resetAtMs: null };
71
+ if (facts.apiErrorStatus === 401 || facts.apiErrorStatus === 403)
72
+ return { kind: 'auth', resetAtMs: null };
73
+ const refusal = facts.errorResultText !== null ? providerRefusalInProse(facts.errorResultText) : null;
74
+ return refusal ? { kind: refusal, resetAtMs: null } : undefined;
75
+ }
58
76
  const defaultSeam = {
59
77
  spawnProcess: (command, args, options) => nodeSpawn(command, args, { cwd: options.cwd, env: options.env, stdio: ['pipe', 'pipe', 'pipe'] }),
60
78
  };
@@ -97,6 +115,66 @@ export function buildRoutingDeciderMetricRow(params) {
97
115
  metadata: { source: 'routing-decider', escalationId: params.escalationId },
98
116
  };
99
117
  }
118
+ /**
119
+ * The not-started result for a decider asked for inside the provider-wide
120
+ * rate-limit window (spawn-cooldown.ts), or null when no window is open. A
121
+ * decider started now would be rejected on the same limit and its exit consumed
122
+ * as an attempt; the sweep re-hands it after the reset.
123
+ */
124
+ function providerHoldResult(escalationId) {
125
+ const holdUntil = providerRateLimitHoldUntilMs();
126
+ if (holdUntil === null)
127
+ return null;
128
+ const until = new Date(holdUntil).toISOString();
129
+ log.info(`[routing-decider] not spawning a decider for ${escalationId}: provider rate limit holds every spawn until ${until}`);
130
+ return {
131
+ started: false, exitCode: null, timedOut: false, stdout: '', stderr: '', sessionId: null,
132
+ errorMessage: `provider rate limit holds every spawn until ${until}`,
133
+ modelUnavailable: { kind: 'rate_limit', resetAtMs: holdUntil },
134
+ };
135
+ }
136
+ /**
137
+ * Listen for the provider's own words about itself on the decider's stream: a
138
+ * REJECTED rate limit carries the reset instant (the typed event the team path
139
+ * reads, spawn/rate-limit.ts) and opens the provider-wide window; an error result
140
+ * carries the API status. The facts are filled in as the session runs.
141
+ */
142
+ function attachProviderFacts(parser, escalationId) {
143
+ const facts = { rateLimitRejected: null, apiErrorStatus: null, errorResultText: null };
144
+ parser.on('event', (event) => {
145
+ const rl = parseRateLimitInfo(event);
146
+ if (rl && rl.status === 'rejected') {
147
+ facts.rateLimitRejected = { resetAtMs: rl.resetsAtMs };
148
+ if (rl.resetsAtMs !== null)
149
+ recordProviderRateLimit(rl.resetsAtMs);
150
+ log.warn(`[routing-decider] decider for ${escalationId}: provider rate limit REJECTED` +
151
+ `${rl.rateLimitType ? ` [${rl.rateLimitType}]` : ''}` +
152
+ `${rl.resetsAtMs !== null ? ` -- resets ${new Date(rl.resetsAtMs).toISOString()}` : ''}`);
153
+ }
154
+ });
155
+ parser.on('result', (ev) => {
156
+ if (ev.is_error !== true)
157
+ return;
158
+ const status = ev.api_error_status;
159
+ if (typeof status === 'number')
160
+ facts.apiErrorStatus = status;
161
+ const text = ev.result;
162
+ if (typeof text === 'string')
163
+ facts.errorResultText = text;
164
+ });
165
+ return facts;
166
+ }
167
+ /**
168
+ * The `modelUnavailable` slice of a finished decider's result. A clean exit (0,
169
+ * no timeout) is a decider that ran, whatever the provider said along the way;
170
+ * only a session that did NOT complete is classified. Pure.
171
+ */
172
+ function unavailabilityOf(code, timedOut, facts) {
173
+ if (code === 0 && !timedOut)
174
+ return {};
175
+ const mu = deciderModelUnavailability(facts);
176
+ return mu ? { modelUnavailable: mu } : {};
177
+ }
100
178
  /** Spawn one routing decider and resolve when it exits (or is killed at the timeout). Never rejects. */
101
179
  export async function spawnRoutingDecider(opts, seam = defaultSeam) {
102
180
  const { config, focusId, escalationId } = opts;
@@ -108,6 +186,9 @@ export async function spawnRoutingDecider(opts, seam = defaultSeam) {
108
186
  });
109
187
  spawnEnv.TELORA_DAEMON_ROUTING_DECIDER = escalationId;
110
188
  const periodStart = new Date().toISOString();
189
+ const held = providerHoldResult(escalationId);
190
+ if (held)
191
+ return held;
111
192
  return await new Promise((resolve) => {
112
193
  let child;
113
194
  try {
@@ -141,6 +222,7 @@ export async function spawnRoutingDecider(opts, seam = defaultSeam) {
141
222
  }
142
223
  });
143
224
  parser.on('error', () => { });
225
+ const facts = attachProviderFacts(parser, escalationId);
144
226
  parser.on('result', (ev) => {
145
227
  if (!ev.usage)
146
228
  return;
@@ -174,11 +256,11 @@ export async function spawnRoutingDecider(opts, seam = defaultSeam) {
174
256
  const text = () => (assistantText.trim() ? assistantText : rawStdout);
175
257
  child.on('error', (err) => {
176
258
  clearTimeout(timer);
177
- resolve({ started, exitCode: null, timedOut, stdout: text(), stderr, sessionId: parser.sessionId, errorMessage: `spawn error: ${err.message}` });
259
+ resolve({ started, exitCode: null, timedOut, stdout: text(), stderr, sessionId: parser.sessionId, errorMessage: `spawn error: ${err.message}`, ...unavailabilityOf(null, timedOut, facts) });
178
260
  });
179
261
  child.on('close', (code) => {
180
262
  clearTimeout(timer);
181
- resolve({ started, exitCode: code, timedOut, stdout: text(), stderr, sessionId: parser.sessionId });
263
+ resolve({ started, exitCode: code, timedOut, stdout: text(), stderr, sessionId: parser.sessionId, ...unavailabilityOf(code, timedOut, facts) });
182
264
  });
183
265
  });
184
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routing-decider-spawn.js","sourceRoot":"","sources":["../../src/spawn/routing-decider-spawn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing-decider-spawn.js","sourceRoot":"","sources":["../../src/spawn/routing-decider-spawn.ts"],"names":[],"mappings":"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"}