@cat-factory/contracts 0.187.0 → 0.188.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-api.d.ts","sourceRoot":"","sources":["../src/debug-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,580 @@
1
+ import * as v from 'valibot';
2
+ import { agentFailureSchema, executionStatusSchema, runDiagnosticsSchema } from './execution.js';
3
+ import { agentSearchQuerySchema, llmExportInsightSchema, llmExportTotalsSchema, } from './observability.js';
4
+ import { provisioningLogEntrySchema } from './provisioning-logs.js';
5
+ // ---------------------------------------------------------------------------
6
+ // The REMOTE DEBUGGING surface (`/api/v1/debug/*`) — the telemetry + event-log reads an
7
+ // external operator (in practice an LLM asked to diagnose a run) needs to answer "why did
8
+ // this run fail / stall / cost that much", without a browser and without a database shell.
9
+ //
10
+ // Everything the SPA's observability drill-down shows already exists in the telemetry store;
11
+ // what was missing is a surface that can be walked by a client with a fixed context budget.
12
+ // That constraint — not the data model — is what shapes every schema below:
13
+ //
14
+ // 1. **A response's size is computable BEFORE the request.** Every list is keyset-paginated
15
+ // with a hard `limit` ceiling, and the only unbounded values (prompts, responses, injected
16
+ // files) are returned as {@link debugTextSchema}, whose `chars` is capped by an explicit
17
+ // query parameter. So a caller can bound a page at `limit × fields × bodyChars` and know
18
+ // it will not be handed a 40 MB run.
19
+ // 2. **Fan-out lists never carry bodies; bodies are always a point read.** A page of 100
20
+ // agent-context snapshots would be hundreds of megabytes, so the list projections carry
21
+ // SIZES (`*Chars`) and identity only. The caller sweeps cheaply, then zooms into the two
22
+ // rows that matter. The one exception is a deliberately opt-in `bodyChars` preview on the
23
+ // LLM-call list, because "did this call come back empty?" is a triage question that a
24
+ // size alone answers ambiguously (a reasoning-only turn has a large `reasoningChars`
25
+ // and an empty response).
26
+ // Finding WHICH rows matter is a server-side job too: the LLM-call list takes a
27
+ // `contains` search (SQL LIKE over the bodies) so locating a known marker across
28
+ // thousands of calls costs one request, not a paged sweep of every body through the
29
+ // caller's own context — which would be the multi-hundred-megabyte dump re-entering
30
+ // through the side door.
31
+ // 3. **Truncation is always REPORTED, never silent.** Every {@link debugTextSchema} states
32
+ // what it returned and what exists, so a model reasoning over the payload can tell "the
33
+ // agent said nothing" from "we only showed you the first 2 kB".
34
+ // 4. **The overview is a MAP, not a dump.** `GET /debug/runs/:runId` costs a handful of SQL
35
+ // aggregates and no body reads at all, and its `sinks` block tells the caller which of
36
+ // the four detail endpoints have anything in them — so the expensive reads are only ever
37
+ // issued for data that exists.
38
+ //
39
+ // Scope: the whole surface is `read`-scoped (see `publicApiAuth`). It is deliberately NOT
40
+ // `admin`-gated — `admin` on this API also merges pull requests and deletes tasks, so
41
+ // requiring it would mean handing a debugging agent a destructive key, which is strictly
42
+ // worse. Prompt/response BODIES remain governed by the capture-time switches
43
+ // (`LLM_RECORD_PROMPTS` + the per-workspace `storeAgentContext`): an operator who does not
44
+ // want model text retained turns those off and this surface has nothing to serve.
45
+ // ---------------------------------------------------------------------------
46
+ // ---- shared query primitives ---------------------------------------------
47
+ // Query params arrive as STRINGS, so each is digit-checked BEFORE the numeric coercion:
48
+ // `Number()` alone also accepts `1e9`, `0x64` and `' '`, which would read as plausible
49
+ // values rather than the 400 a malformed request deserves. The `maxValue` ceilings are what
50
+ // make the bounds real backstops rather than suggestions.
51
+ /** An OPAQUE keyset cursor. Callers echo it back verbatim; its encoding may change. */
52
+ const cursorSchema = v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(200));
53
+ /** Hard ceiling on rows one page may return. */
54
+ export const DEBUG_MAX_PAGE_LIMIT = 100;
55
+ /** Hard ceiling on the per-field body preview a LIST may inline. */
56
+ export const DEBUG_MAX_PREVIEW_CHARS = 4_000;
57
+ /** Hard ceiling on the per-field body a POINT READ may return. */
58
+ export const DEBUG_MAX_BODY_CHARS = 200_000;
59
+ /**
60
+ * Hard ceiling on a point read's slice offset — comfortably above the store's own per-body
61
+ * cap (512 kB), so every stored character is reachable, while still rejecting a garbage
62
+ * offset instead of quietly serving an empty slice for it.
63
+ */
64
+ export const DEBUG_MAX_BODY_OFFSET = 2_000_000;
65
+ /** Hard ceiling on a `contains` search term's length. */
66
+ export const DEBUG_MAX_SEARCH_CHARS = 256;
67
+ const pageLimitSchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number'), v.transform(Number), v.number(), v.integer(), v.minValue(1), v.maxValue(DEBUG_MAX_PAGE_LIMIT));
68
+ /**
69
+ * Per-field preview budget on a LIST. Defaults to 0 — a sweep costs no body bytes at all,
70
+ * and a caller opts into previews only once it knows which rows it cares about.
71
+ */
72
+ const previewCharsSchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number'), v.transform(Number), v.number(), v.integer(), v.minValue(0), v.maxValue(DEBUG_MAX_PREVIEW_CHARS));
73
+ /** Per-field body budget on a POINT READ. Absent ⇒ the full stored body, up to the ceiling. */
74
+ const bodyCharsSchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number'), v.transform(Number), v.number(), v.integer(), v.minValue(0), v.maxValue(DEBUG_MAX_BODY_CHARS));
75
+ /**
76
+ * 0-based code-point offset a point read's slices start at. Absent ⇒ 0 (the head). This is
77
+ * what makes the MIDDLE and TAIL of a large body reachable: without it, a leading slice is
78
+ * the only window this surface can serve, and the diagnostic payload of a long delta — the
79
+ * last tool result the model saw, the end of a captured build log — sits at the end.
80
+ */
81
+ const bodyOffsetSchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number'), v.transform(Number), v.number(), v.integer(), v.minValue(0), v.maxValue(DEBUG_MAX_BODY_OFFSET));
82
+ /**
83
+ * A literal substring to search bodies for, matched case-insensitively in SQL. Deliberately
84
+ * NOT trimmed and NOT a pattern language: the caller is grepping for verbatim tool-error
85
+ * text, and a term that behaved as a wildcard on one runtime only would be a parity bug.
86
+ */
87
+ const containsSchema = v.pipe(v.string(), v.minLength(1), v.maxLength(DEBUG_MAX_SEARCH_CHARS));
88
+ /** An epoch-ms query filter: digits only, for the same reason as {@link pageLimitSchema}. */
89
+ const epochMsQuerySchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number of epoch milliseconds'), v.transform(Number), v.number(), v.integer(), v.minValue(0));
90
+ /** A non-negative integer query filter (step indexes). */
91
+ const nonNegativeIntQuerySchema = v.pipe(v.string(), v.regex(/^\d+$/, 'Must be a whole number'), v.transform(Number), v.number(), v.integer(), v.minValue(0));
92
+ /**
93
+ * A bounded slice of a stored text body, and enough metadata to know what was left out.
94
+ *
95
+ * This is THE reason the surface is safe to hand to a model: a bare truncated string is
96
+ * indistinguishable from a short one, so a reader would confidently conclude "the agent
97
+ * returned nothing" from a payload that merely hit its budget. `totalChars` is always the
98
+ * full stored length, measured in SQL, even when `text` is empty.
99
+ */
100
+ export const debugTextSchema = v.object({
101
+ /** The returned slice — `chars` characters of the stored body, starting at `offset`. */
102
+ text: v.string(),
103
+ /**
104
+ * Characters actually returned in {@link debugTextSchema} `text`, in Unicode CODE POINTS —
105
+ * the unit SQL `length()`/`substr()` measure in (an emoji counts once, not twice).
106
+ */
107
+ chars: v.number(),
108
+ /**
109
+ * 0-based code-point position `text` starts at within the stored body — 0 unless the caller
110
+ * asked for a later window via `?bodyOffset=`. Clamped to `totalChars`, so
111
+ * `offset + chars <= totalChars` always holds.
112
+ */
113
+ offset: v.number(),
114
+ /** Characters stored for this field (the full code-point length, regardless of what was returned). */
115
+ totalChars: v.number(),
116
+ /** True when `chars < totalChars`, i.e. `text` is not the entire stored body. */
117
+ truncated: v.boolean(),
118
+ /**
119
+ * 0-based code-point offset of the first case-insensitive occurrence of the request's
120
+ * `?contains=` term in this body, or null when the term occurs only in a sibling body.
121
+ * Present ONLY on rows of a searched list — pair it with the point read's `?bodyOffset=`
122
+ * to jump straight to the match without transferring the bytes before it.
123
+ */
124
+ matchOffset: v.optional(v.nullable(v.number())),
125
+ });
126
+ // ---------------------------------------------------------------------------
127
+ // 1. Run index — `GET /api/v1/debug/runs`
128
+ // ---------------------------------------------------------------------------
129
+ /**
130
+ * The lean run projection every debug list/overview leads with. Deliberately a SUMMARY, not
131
+ * the internal `ExecutionInstance`: a run's persisted `detail` blob carries per-step gate,
132
+ * judge, follow-up, container and validation state that is megabytes on a long run and means
133
+ * nothing to an external caller. What survives is what identifies a run and says whether it
134
+ * is worth opening.
135
+ */
136
+ export const debugRunSummarySchema = v.object({
137
+ runId: v.string(),
138
+ /** The board block the run is anchored on (a task, a service frame, or a headless anchor). */
139
+ blockId: v.string(),
140
+ pipelineId: v.string(),
141
+ pipelineName: v.string(),
142
+ status: executionStatusSchema,
143
+ /** Epoch-ms creation stamp — also the value the keyset cursor is minted from. */
144
+ createdAt: v.number(),
145
+ /** Index of the step the run is currently on. */
146
+ currentStep: v.number(),
147
+ /** How many steps the run's pipeline has. */
148
+ stepCount: v.number(),
149
+ /** Structured failure diagnostics when the run failed; null otherwise. */
150
+ failure: v.nullable(agentFailureSchema),
151
+ });
152
+ /** Query params for `GET /api/v1/debug/runs`. */
153
+ export const listDebugRunsQuerySchema = v.object({
154
+ /** Filter to one internal execution status (`running`/`blocked`/`paused`/`done`/`failed`/…). */
155
+ status: v.optional(executionStatusSchema),
156
+ /** Inclusive lower bound on the run's `createdAt`. */
157
+ since: v.optional(epochMsQuerySchema),
158
+ /** Cap on rows returned (default 25, hard max {@link DEBUG_MAX_PAGE_LIMIT}). */
159
+ limit: v.optional(pageLimitSchema),
160
+ /** Opaque keyset cursor from a previous page's `nextCursor`. */
161
+ cursor: v.optional(cursorSchema),
162
+ });
163
+ export const debugRunListSchema = v.object({
164
+ runs: v.array(debugRunSummarySchema),
165
+ /** Cursor for the next page, or null when this was the last page. */
166
+ nextCursor: v.nullable(v.string()),
167
+ });
168
+ // ---------------------------------------------------------------------------
169
+ // 2. Run overview — `GET /api/v1/debug/runs/:runId`
170
+ // ---------------------------------------------------------------------------
171
+ /**
172
+ * One step of the run, projected to what a diagnosis actually reads. The internal
173
+ * `PipelineStep` carries two dozen per-kind state blobs (gate, judge, follow-ups, container,
174
+ * validation, reproduction, …) that are megabytes on a long run and meaningless without the
175
+ * engine's vocabulary; what survives here is the step's identity, its clocks, and the two
176
+ * things that explain a stuck step — whether its container kept dying, and what killed it.
177
+ */
178
+ export const debugRunStepSchema = v.object({
179
+ index: v.number(),
180
+ agentKind: v.string(),
181
+ /** Lifecycle state (`pending` / `working` / `waiting_decision` / `done` / …). */
182
+ state: v.string(),
183
+ progress: v.number(),
184
+ /** The resolved model this step dispatched on, when the engine recorded one. */
185
+ model: v.nullable(v.string()),
186
+ /** Whether the pipeline skipped this step. */
187
+ skipped: v.boolean(),
188
+ /** Epoch ms the step first began executing; null until it starts. */
189
+ startedAt: v.nullable(v.number()),
190
+ /** Epoch ms the step finished; null until it completes. */
191
+ finishedAt: v.nullable(v.number()),
192
+ /**
193
+ * Epoch ms of the container agent's last observed sign of life. The field that separates a
194
+ * genuinely-active-but-quiet step (a reviewer reading hundreds of files) from a wedged one,
195
+ * which no other clock here can distinguish. Null on non-container steps.
196
+ */
197
+ lastActivityAt: v.nullable(v.number()),
198
+ /** Live/last subtask counts for an async container step; null when none were reported. */
199
+ subtasks: v.nullable(v.object({ completed: v.number(), inProgress: v.number(), total: v.number() })),
200
+ /** Characters of prose output the step produced (0 ⇒ it produced none). */
201
+ outputChars: v.number(),
202
+ /** Whether the step produced a structured result (`step.custom`). */
203
+ hasStructuredResult: v.boolean(),
204
+ /** How many times this step's container was evicted/crashed and automatically re-dispatched. */
205
+ evictionRecoveries: v.number(),
206
+ /**
207
+ * The post-mortem retained from the FIRST container death on this step (exit state plus a
208
+ * scrubbed log tail). Null when the step's containers never died. Bounded like every other
209
+ * body on this surface.
210
+ */
211
+ firstEvictionDetail: v.nullable(debugTextSchema),
212
+ });
213
+ /**
214
+ * Whether one telemetry sink has anything for this run, and how much. The point of the block
215
+ * is to stop a caller issuing four detail requests to discover three of them are empty —
216
+ * `available: false` means the sink's repository is not wired on this deployment, so a zero
217
+ * count there is "we never recorded this", not "nothing happened".
218
+ *
219
+ * Availability is REPOSITORY presence only. The capture-time gates (`LLM_RECORD_PROMPTS`, the
220
+ * per-workspace `storeAgentContext`) act at record time and are invisible here: a workspace
221
+ * that opted out of capture reads `available: true, count: 0`.
222
+ */
223
+ export const debugSinkStatusSchema = v.object({
224
+ available: v.boolean(),
225
+ count: v.number(),
226
+ });
227
+ /** Severity of a derived diagnostic signal. */
228
+ export const debugSignalSeveritySchema = v.picklist(['info', 'warning', 'error']);
229
+ /**
230
+ * A precomputed diagnostic hint. These are derivations the caller could make itself from the
231
+ * rollups — which is exactly why they are here: a model that has to rediscover "13 of 40 calls
232
+ * were truncated" by arithmetic over a payload will sometimes get it wrong, and will always
233
+ * spend context doing it. `code` is machine-readable and stable; `message` restates it in
234
+ * prose so the payload is useful with no external key.
235
+ */
236
+ export const debugSignalSchema = v.object({
237
+ code: v.string(),
238
+ severity: debugSignalSeveritySchema,
239
+ message: v.string(),
240
+ /** How many occurrences the signal counts (truncated calls, failed provisions, …); null when it counts nothing. */
241
+ count: v.nullable(v.number()),
242
+ /** The agent kind the signal is about, when it is scoped to one. */
243
+ agentKind: v.nullable(v.string()),
244
+ /** The step index the signal is about, when it is scoped to one. */
245
+ stepIndex: v.nullable(v.number()),
246
+ });
247
+ /**
248
+ * The run's diagnostic map: identity, per-step state, what each telemetry sink holds, the
249
+ * SQL-aggregated LLM rollups, and the derived signals. Composed from aggregates only — it
250
+ * reads no prompt, response or context body, so it stays cheap enough to be the first call a
251
+ * debugging client always makes.
252
+ */
253
+ export const debugRunOverviewSchema = v.object({
254
+ /** Schema marker so a consuming model knows the shape without external docs. */
255
+ kind: v.literal('cat-factory.run-debug-overview'),
256
+ version: v.literal(1),
257
+ /** When this projection was computed (epoch ms). */
258
+ generatedAt: v.number(),
259
+ run: debugRunSummarySchema,
260
+ steps: v.array(debugRunStepSchema),
261
+ /**
262
+ * Where and on what the run's most recent container step executed (backend, model, repo,
263
+ * control-plane host), when the engine recorded it. Null for a pure-inline run.
264
+ */
265
+ diagnostics: v.nullable(runDiagnosticsSchema),
266
+ sinks: v.object({
267
+ llmCalls: debugSinkStatusSchema,
268
+ agentContext: debugSinkStatusSchema,
269
+ searchQueries: debugSinkStatusSchema,
270
+ provisioningLog: debugSinkStatusSchema,
271
+ }),
272
+ /**
273
+ * The run's model activity, aggregated in SQL. `byAgentKind` reuses the same insight shape
274
+ * the LLM-metrics export publishes, derived ratios included, so the two never disagree.
275
+ */
276
+ llm: v.object({
277
+ totals: llmExportTotalsSchema,
278
+ byAgentKind: v.array(llmExportInsightSchema),
279
+ }),
280
+ signals: v.array(debugSignalSchema),
281
+ });
282
+ // ---------------------------------------------------------------------------
283
+ // 3./4. LLM calls — `GET /api/v1/debug/runs/:runId/llm-calls`, `GET /api/v1/debug/llm-calls/:callId`
284
+ // ---------------------------------------------------------------------------
285
+ /** Classification of a recorded call, precomputed so a caller need not re-derive it. */
286
+ export const debugCallOutcomeSchema = v.picklist(['ok', 'warning', 'error']);
287
+ /** Chronological direction a call page walks in. */
288
+ export const debugCallOrderSchema = v.picklist(['newest', 'oldest']);
289
+ /** How the single-call point read presents the prompt delta. */
290
+ export const debugCallViewSchema = v.picklist(['raw', 'messages']);
291
+ /**
292
+ * One message of a parsed prompt delta (`?view=messages` on the point read). The parse is
293
+ * LENIENT — both telemetry producers store `JSON.stringify` of a `{ role, content }` array,
294
+ * but the content shapes differ (OpenAI-style strings/parts/`tool_calls` from the proxy,
295
+ * vendor content blocks from the harness transcript), so unrecognised parts degrade to a
296
+ * `[type]` placeholder rather than failing the message.
297
+ */
298
+ export const debugPromptMessageSchema = v.object({
299
+ /**
300
+ * The message's absolute position in the FULL conversation (`elidedLeadingMessages` +
301
+ * its position in the delta), so two calls' parsed views line up without arithmetic.
302
+ */
303
+ index: v.number(),
304
+ /** The message's role verbatim (`system` / `user` / `assistant` / `tool` / …), `unknown` when absent. */
305
+ role: v.string(),
306
+ /** The message's `name` field (a named tool/function turn), when the producer recorded one. */
307
+ name: v.nullable(v.string()),
308
+ /** The tool invocation a tool-result turn answers, when the producer recorded the id. */
309
+ toolCallId: v.nullable(v.string()),
310
+ /** Tool invocations an assistant turn requested: the tool's name plus its budgeted serialized arguments. */
311
+ toolCalls: v.array(v.object({ name: v.string(), args: debugTextSchema })),
312
+ /** The message's textual content, budgeted INDEPENDENTLY of every other message's. */
313
+ content: debugTextSchema,
314
+ });
315
+ /**
316
+ * One recorded model call. The three body fields are always PRESENT but empty unless the
317
+ * caller asked for a preview — their `totalChars` is measured in SQL either way, so a
318
+ * zero-cost sweep still shows exactly how much text each call holds.
319
+ *
320
+ * `prompt` is the call's DELTA — only the messages this call appended to its conversation.
321
+ * That is how the store keeps prompts (a container agent re-sends its whole growing history
322
+ * every turn, so storing the full array per call is ~21x redundant), and it is also the right
323
+ * shape for reading: walk one agent kind's calls with `order=oldest` and the concatenated
324
+ * deltas ARE the conversation, with no prefix re-sent to the caller either.
325
+ */
326
+ export const debugLlmCallSchema = v.object({
327
+ callId: v.string(),
328
+ runId: v.nullable(v.string()),
329
+ agentKind: v.string(),
330
+ provider: v.string(),
331
+ model: v.string(),
332
+ createdAt: v.number(),
333
+ outcome: debugCallOutcomeSchema,
334
+ ok: v.boolean(),
335
+ httpStatus: v.nullable(v.number()),
336
+ errorMessage: v.nullable(v.string()),
337
+ finishReason: v.nullable(v.string()),
338
+ streaming: v.boolean(),
339
+ /**
340
+ * WHICH slice of the run spent this call: the agent's own edit loop (`agent`), a pre-PR
341
+ * validation repair round (`validation-repair`), a reproduction-proof repair round
342
+ * (`reproduction-repair`), … Stamped by whoever owns the loop boundary, never reconstructed
343
+ * from timestamps, which is why it is worth reading rather than inferring.
344
+ *
345
+ * `''` means the call could not be attributed — an older harness image, an inline call, or the
346
+ * un-phased proxy path. That is a REAL slice, not a gap: a run whose calls are all `''` was
347
+ * metered by something that has no phase concept, NOT one that spent nothing outside the agent.
348
+ */
349
+ phase: v.string(),
350
+ /**
351
+ * The call's ordinal within its job's telemetry sequence (0-based), so a phase's calls can be
352
+ * ordered by TURN rather than by wall clock.
353
+ *
354
+ * `null` where the producing channel has no turn concept — the LLM proxy sees one HTTP request
355
+ * at a time with no job-scoped counter. Deliberately not faked to 0, which would read as "the
356
+ * first turn" and sort every proxied call to the front of its phase.
357
+ */
358
+ turnIndex: v.nullable(v.number()),
359
+ /** Messages in the FULL request (not just the delta below). */
360
+ messageCount: v.number(),
361
+ /** Tools offered to the model (0 ⇒ the agent could not edit anything). */
362
+ toolCount: v.number(),
363
+ requestMaxTokens: v.nullable(v.number()),
364
+ /** FRESH (uncached) input tokens — exclusive of both cache classes below. */
365
+ promptTokens: v.number(),
366
+ /** Input tokens served from the provider's prefix cache (priced around 0.1x fresh). */
367
+ cacheReadTokens: v.number(),
368
+ /**
369
+ * Input tokens WRITTEN into the provider's cache (priced 1.25-2x fresh). Kept apart from
370
+ * the reads because summed together, a loop that keeps invalidating and re-writing its
371
+ * prefix is indistinguishable from one riding a warm cache — and telling those apart is
372
+ * often the whole question when a run costs more than it should.
373
+ */
374
+ cacheWriteTokens: v.number(),
375
+ completionTokens: v.number(),
376
+ totalTokens: v.number(),
377
+ upstreamMs: v.number(),
378
+ overheadMs: v.number(),
379
+ totalMs: v.number(),
380
+ /** Leading messages elided from `prompt` because an earlier call in the chain stored them. */
381
+ elidedLeadingMessages: v.number(),
382
+ /** The messages this call APPENDED, as JSON (see the note above). */
383
+ prompt: debugTextSchema,
384
+ /** The assistant's visible reply. */
385
+ response: debugTextSchema,
386
+ /** The model's separate reasoning channel, when it emits one. */
387
+ reasoning: debugTextSchema,
388
+ /**
389
+ * The prompt delta parsed into per-message rows, each budgeted independently — present only
390
+ * on a `?view=messages` point read. `null` there means the stored delta did not parse as a
391
+ * message array (the raw `prompt` is served instead, so the view degrades rather than
392
+ * returning nothing); absent means the caller did not ask for the view. Independent budgets
393
+ * are the point: in the raw view one enormous leading tool result must be paid for before
394
+ * anything after it is visible, while here every message shows its head. The response's
395
+ * worst case stays computable — `(messageCount − elidedLeadingMessages) × bodyChars`, both
396
+ * factors already on the list row.
397
+ */
398
+ promptMessages: v.optional(v.nullable(v.array(debugPromptMessageSchema))),
399
+ });
400
+ /** Query params for `GET /api/v1/debug/runs/:runId/llm-calls`. */
401
+ export const listDebugLlmCallsQuerySchema = v.object({
402
+ /** Narrow to one step kind's conversation (`coder`, `ci-fixer`, …), applied in SQL. */
403
+ agentKind: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(120))),
404
+ /**
405
+ * Narrow to one PHASE's calls (`agent`, `validation-repair`, `reproduction-repair`, …), an
406
+ * exact match applied in SQL. This is how "what did the repair rounds cost" is answered in one
407
+ * request rather than by paging the run and grouping client-side.
408
+ *
409
+ * Unlike `agentKind` the EMPTY string is accepted and meaningful: it selects the unattributed
410
+ * slice (an older harness image, an inline call, the un-phased proxy path), which is otherwise
411
+ * unreachable as a query.
412
+ */
413
+ phase: v.optional(v.pipe(v.string(), v.trim(), v.maxLength(120))),
414
+ /** Narrow to failing or warning (truncated / filtered) calls only. */
415
+ outcome: v.optional(debugCallOutcomeSchema),
416
+ /**
417
+ * Narrow to calls whose prompt delta, response or reasoning CONTAINS this literal substring,
418
+ * matched case-insensitively in SQL. This is the surface's grep — the way a caller finds a
419
+ * tool-validation error, a repeated apology, or any known marker across thousands of calls
420
+ * in ONE request instead of paging every body through its own context. Matched rows report
421
+ * a per-body `matchOffset`; wildcards (`%`/`_`) match literally.
422
+ */
423
+ contains: v.optional(containsSchema),
424
+ /** `newest` (default) for triage; `oldest` to read a conversation forwards. */
425
+ order: v.optional(debugCallOrderSchema),
426
+ /** Cap on rows returned (default 25, hard max {@link DEBUG_MAX_PAGE_LIMIT}). */
427
+ limit: v.optional(pageLimitSchema),
428
+ cursor: v.optional(cursorSchema),
429
+ /**
430
+ * Per-field body preview budget, 0..{@link DEBUG_MAX_PREVIEW_CHARS}. Default 0: the sweep
431
+ * returns sizes only. Bodies are sliced IN SQL, so an un-previewed page never reads the
432
+ * text columns out of the store at all.
433
+ */
434
+ bodyChars: v.optional(previewCharsSchema),
435
+ });
436
+ export const debugLlmCallListSchema = v.object({
437
+ calls: v.array(debugLlmCallSchema),
438
+ nextCursor: v.nullable(v.string()),
439
+ });
440
+ /** Query params for the single-call point read. */
441
+ export const getDebugLlmCallQuerySchema = v.object({
442
+ /**
443
+ * Per-field budget, 0..{@link DEBUG_MAX_BODY_CHARS}. Absent ⇒ the ceiling itself: a body
444
+ * longer than {@link DEBUG_MAX_BODY_CHARS} is still cut (and says so via `truncated`).
445
+ * Under `view=messages` this is the PER-MESSAGE content budget.
446
+ */
447
+ bodyChars: v.optional(bodyCharsSchema),
448
+ /**
449
+ * 0-based code-point offset the body slices start at (raw view only; a parsed message view
450
+ * always reads each message whole and budgets its head). Pair with a searched list row's
451
+ * `matchOffset` to read the text AROUND a match — the `grep -C` of this surface.
452
+ */
453
+ bodyOffset: v.optional(bodyOffsetSchema),
454
+ /**
455
+ * `raw` (default) returns the delta as stored JSON; `messages` parses it into per-message
456
+ * rows with independent budgets (see `promptMessages`). Falls back to `raw` semantics when
457
+ * the stored delta does not parse.
458
+ */
459
+ view: v.optional(debugCallViewSchema),
460
+ });
461
+ // ---------------------------------------------------------------------------
462
+ // 5./6. Agent context — `GET /api/v1/debug/runs/:runId/agent-context`,
463
+ // `GET /api/v1/debug/agent-context/:snapshotId`
464
+ // ---------------------------------------------------------------------------
465
+ /**
466
+ * One captured dispatch, SIZES ONLY. A snapshot carries the whole composed system prompt, the
467
+ * whole user prompt, every folded fragment body and the full content of every injected
468
+ * context file — a single row can be megabytes, so the list never inlines any of it (there is
469
+ * no `bodyChars` here on purpose: a truncated prefix of a fragment ARRAY answers no question a
470
+ * size does not, and the point read is one hop away).
471
+ */
472
+ export const debugAgentContextEntrySchema = v.object({
473
+ snapshotId: v.string(),
474
+ agentKind: v.string(),
475
+ /** The step index within the run's pipeline this dispatch belongs to. */
476
+ stepIndex: v.number(),
477
+ createdAt: v.number(),
478
+ model: v.nullable(v.string()),
479
+ harness: v.nullable(v.string()),
480
+ systemPromptChars: v.number(),
481
+ userPromptChars: v.number(),
482
+ /**
483
+ * Serialized size of the best-practice fragments folded into the system prompt, and of the
484
+ * files injected into the container as `.cat-context/*` (their bodies included).
485
+ *
486
+ * Sizes rather than element counts on purpose: counting the entries of those two JSON
487
+ * columns means either parsing them — which reads the very bodies this projection exists to
488
+ * avoid — or calling `json_array_length` on a column where one malformed row would fail the
489
+ * whole page. For "is there a lot in here, and did it change between attempts", a length
490
+ * answers just as well; the point read gives the actual arrays.
491
+ */
492
+ fragmentsChars: v.number(),
493
+ contextFilesChars: v.number(),
494
+ });
495
+ /** Query params for `GET /api/v1/debug/runs/:runId/agent-context`. */
496
+ export const listDebugAgentContextQuerySchema = v.object({
497
+ /** Narrow to one step's dispatches (a step re-dispatched on retry records one snapshot each). */
498
+ stepIndex: v.optional(nonNegativeIntQuerySchema),
499
+ limit: v.optional(pageLimitSchema),
500
+ cursor: v.optional(cursorSchema),
501
+ });
502
+ export const debugAgentContextListSchema = v.object({
503
+ snapshots: v.array(debugAgentContextEntrySchema),
504
+ nextCursor: v.nullable(v.string()),
505
+ });
506
+ /** One folded best-practice fragment, with its body bounded. */
507
+ export const debugAgentContextFragmentSchema = v.object({
508
+ id: v.string(),
509
+ body: debugTextSchema,
510
+ });
511
+ /** One injected context file, with its (already secret-scrubbed) body bounded. */
512
+ export const debugAgentContextFileSchema = v.object({
513
+ path: v.string(),
514
+ title: v.string(),
515
+ url: v.string(),
516
+ content: debugTextSchema,
517
+ });
518
+ /**
519
+ * The full context one dispatch was provided. Every body is budgeted independently so one
520
+ * enormous injected file cannot crowd out the prompts a reader actually came for.
521
+ */
522
+ export const debugAgentContextDetailSchema = v.object({
523
+ snapshotId: v.string(),
524
+ runId: v.string(),
525
+ agentKind: v.string(),
526
+ stepIndex: v.number(),
527
+ createdAt: v.number(),
528
+ model: v.nullable(v.string()),
529
+ harness: v.nullable(v.string()),
530
+ systemPrompt: debugTextSchema,
531
+ userPrompt: debugTextSchema,
532
+ fragments: v.array(debugAgentContextFragmentSchema),
533
+ contextFiles: v.array(debugAgentContextFileSchema),
534
+ /**
535
+ * Redacted structural context (repo, branches, infra spec, the run's decisions and revision
536
+ * feedback). Small and already deep-scrubbed at capture time, so it is returned whole.
537
+ */
538
+ extras: v.record(v.string(), v.unknown()),
539
+ });
540
+ /** Query params for the single-snapshot point read. */
541
+ export const getDebugAgentContextQuerySchema = v.object({
542
+ /**
543
+ * Per-body budget, 0..{@link DEBUG_MAX_BODY_CHARS}. Absent ⇒ the ceiling itself: a body
544
+ * longer than {@link DEBUG_MAX_BODY_CHARS} is still cut (and says so via `truncated`).
545
+ */
546
+ bodyChars: v.optional(bodyCharsSchema),
547
+ /**
548
+ * 0-based code-point offset every body slice starts at. Applied to ALL of the snapshot's
549
+ * bodies uniformly (it exists to reach the tail of ONE large body the index sized; the
550
+ * others simply run out and return empty slices past their end).
551
+ */
552
+ bodyOffset: v.optional(bodyOffsetSchema),
553
+ });
554
+ // ---------------------------------------------------------------------------
555
+ // 7./8. Searches + the provisioning event log
556
+ // ---------------------------------------------------------------------------
557
+ /** Query params for the two small-row lists (`search-queries`, `logs`). */
558
+ export const listDebugPageQuerySchema = v.object({
559
+ limit: v.optional(pageLimitSchema),
560
+ cursor: v.optional(cursorSchema),
561
+ });
562
+ /**
563
+ * The web searches the run's agents performed. Rows are small (the query text is capped at
564
+ * 8 kB at capture time), so they are returned whole rather than as {@link debugTextSchema}.
565
+ */
566
+ export const debugSearchQueryListSchema = v.object({
567
+ queries: v.array(agentSearchQuerySchema),
568
+ nextCursor: v.nullable(v.string()),
569
+ });
570
+ /**
571
+ * The run's slice of the provisioning event log — every attempt to spin up or tear down the
572
+ * throwaway infrastructure it ran on, with the verbatim (secret-scrubbed) provider error. This
573
+ * is the half of "why did it fail" that no model call can answer: a run whose container never
574
+ * came up has no LLM telemetry at all, and this is where its cause of death is written.
575
+ */
576
+ export const debugLogListSchema = v.object({
577
+ entries: v.array(provisioningLogEntrySchema),
578
+ nextCursor: v.nullable(v.string()),
579
+ });
580
+ //# sourceMappingURL=debug-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-api.js","sourceRoot":"","sources":["../src/debug-api.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -87,6 +87,7 @@ export * from './vendor-credentials.js';
87
87
  export * from './api-keys.js';
88
88
  export * from './public-api-keys.js';
89
89
  export * from './public-api.js';
90
+ export * from './debug-api.js';
90
91
  export * from './public-decisions.js';
91
92
  export * from './notification-webhooks.js';
92
93
  export * from './personal-subscriptions.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}