@cat-factory/mcp-server 0.5.0 → 0.7.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.
@@ -33,6 +33,7 @@ const QUERY_DEBUG_LIST_LLM_CALLS = ['agentKind', 'phase', 'outcome', 'contains',
33
33
  const QUERY_DEBUG_LIST_LOGS = ['limit', 'cursor'];
34
34
  const QUERY_DEBUG_LIST_RUNS = ['status', 'since', 'limit', 'cursor'];
35
35
  const QUERY_DEBUG_LIST_SEARCH_QUERIES = ['limit', 'cursor'];
36
+ const QUERY_DEBUG_LIST_TOOL_CALLS = ['limit', 'cursor', 'jobId', 'order'];
36
37
  /** Every `/api/v1` operation this facade exposes as a tool, in resource-group order. */
37
38
  export const CAT_FACTORY_TOOLS = [
38
39
  {
@@ -282,6 +283,50 @@ export const CAT_FACTORY_TOOLS = [
282
283
  outputSchema: { "type": "object", "properties": { "budget": { "type": "object", "properties": { "costLimit": { "type": "number" }, "costSpent": { "type": "number" }, "exceeded": { "type": "boolean" }, "inputTokens": { "type": "number" }, "outputTokens": { "type": "number" } } }, "currency": { "type": "string" }, "periodStart": { "type": "number" }, "rows": { "type": "array", "items": { "type": "object", "properties": { "billing": { "type": "string", "description": "One of: metered, subscription. A newer deployment may report a member not in this list." }, "calls": { "type": "number" }, "costEstimate": { "type": "number" }, "inputTokens": { "type": "number" }, "model": { "type": "string" }, "outputTokens": { "type": "number" }, "provider": { "type": "string" }, "vendor": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } } } },
283
284
  invoke: (client, args) => client.usage.get(),
284
285
  },
286
+ {
287
+ name: 'decisions_answer_agent_decision',
288
+ title: 'Answer an agent-raised decision',
289
+ group: 'decisions',
290
+ operationId: 'resolvePublicRunAgentDecision',
291
+ readOnly: false,
292
+ description: 'Answer an agent-raised decision\n\nAnswer a question an agent raised mid-work. Resolving RE-RUNS the asking step with the choice folded in, rather than advancing past it. The choice is taken verbatim, so it may be one of the offered options or a steer of your own. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/questions/{decisionId}/answer` (operation `resolvePublicRunAgentDecision`).',
293
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "decisionId": { "type": "string", "description": "Path parameter `decisionId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "minLength": 1, "maxLength": 4000 } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "decisionId", "body"] },
294
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
295
+ invoke: (client, args) => client.decisions.answerAgentDecision(str(args, 'runId'), str(args, 'decisionId'), args.body),
296
+ },
297
+ {
298
+ name: 'decisions_approve_step',
299
+ title: 'Approve a parked step',
300
+ group: 'decisions',
301
+ operationId: 'approvePublicRunStep',
302
+ readOnly: false,
303
+ description: 'Approve a parked step\n\nApprove the proposal a gated step is holding up, optionally replacing it with an edited one (the edit is what flows to every downstream step), and advance the run. The `approvalId` comes from the run\'s decision list; passing it back is what makes a racing app user and a racing integration resolve the same gate. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/approvals/{approvalId}/approve` (operation `approvePublicRunStep`).',
304
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "approvalId": { "type": "string", "description": "Path parameter `approvalId`." }, "body": { "type": "object", "properties": { "proposal": { "type": "string", "maxLength": 50000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "approvalId", "body"] },
305
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
306
+ invoke: (client, args) => client.decisions.approveStep(str(args, 'runId'), str(args, 'approvalId'), args.body),
307
+ },
308
+ {
309
+ name: 'decisions_approve_visual_confirmation',
310
+ title: 'Approve a visual-confirmation gate',
311
+ group: 'decisions',
312
+ operationId: 'approvePublicRunVisualConfirm',
313
+ readOnly: false,
314
+ description: 'Approve a visual-confirmation gate\n\nApprove the captured screenshots against the reference designs and advance the run. The images themselves are not readable over this API — the decision carries only artifact ids — so approving on the projection alone approves screenshots you have not seen. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/visual-confirmation/approve` (operation `approvePublicRunVisualConfirm`).',
315
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
316
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
317
+ invoke: (client, args) => client.decisions.approveVisualConfirmation(str(args, 'runId')),
318
+ },
319
+ {
320
+ name: 'decisions_challenge_pr_review_finding',
321
+ title: 'Challenge a PR review finding',
322
+ group: 'decisions',
323
+ operationId: 'challengePublicRunPrReviewFinding',
324
+ readOnly: false,
325
+ description: 'Challenge a PR review finding\n\nDispatch a read-only investigator to re-examine one finding against the full source, optionally with a specific concern. It upholds, strengthens or retracts the finding, and the review re-parks carrying the verdict. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/pr-review/findings/{findingId}/challenge` (operation `challengePublicRunPrReviewFinding`).',
326
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "findingId": { "type": "string", "description": "Path parameter `findingId`." }, "body": { "type": "object", "properties": { "question": { "type": "string", "maxLength": 4000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "findingId", "body"] },
327
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
328
+ invoke: (client, args) => client.decisions.challengePrReviewFinding(str(args, 'runId'), str(args, 'findingId'), args.body),
329
+ },
285
330
  {
286
331
  name: 'decisions_choose_fork',
287
332
  title: 'Choose an implementation approach',
@@ -290,9 +335,31 @@ export const CAT_FACTORY_TOOLS = [
290
335
  readOnly: false,
291
336
  description: 'Choose an implementation approach\n\nPick one of the proposed implementation forks (by id) or submit your own approach. The Coder then runs with the choice folded in as a binding directive. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/fork/choose` (operation `choosePublicRunFork`).',
292
337
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "custom": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "forkId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
293
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
338
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
294
339
  invoke: (client, args) => client.decisions.chooseFork(str(args, 'runId'), args.body),
295
340
  },
341
+ {
342
+ name: 'decisions_confirm_human_test',
343
+ title: 'Confirm a human-test gate',
344
+ group: 'decisions',
345
+ operationId: 'confirmPublicRunHumanTest',
346
+ readOnly: false,
347
+ description: 'Confirm a human-test gate\n\nConfirm the change works in the ephemeral environment: it is torn down and the run advances. The decision carries the environment URL to exercise; confirming without exercising it approves untested work. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/human-test/confirm` (operation `confirmPublicRunHumanTest`).',
348
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
349
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
350
+ invoke: (client, args) => client.decisions.confirmHumanTest(str(args, 'runId')),
351
+ },
352
+ {
353
+ name: 'decisions_dismiss_pr_review_finding',
354
+ title: 'Dismiss a PR review finding',
355
+ group: 'decisions',
356
+ operationId: 'dismissPublicRunPrReviewFinding',
357
+ readOnly: false,
358
+ description: 'Dismiss a PR review finding\n\nDrop one finding from the parked review entirely. Curation rather than a resolution: the run stays parked. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/pr-review/findings/{findingId}/dismiss` (operation `dismissPublicRunPrReviewFinding`).',
359
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "findingId": { "type": "string", "description": "Path parameter `findingId`." } }, "additionalProperties": false, "required": ["runId", "findingId"] },
360
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
361
+ invoke: (client, args) => client.decisions.dismissPrReviewFinding(str(args, 'runId'), str(args, 'findingId')),
362
+ },
296
363
  {
297
364
  name: 'decisions_incorporate',
298
365
  title: 'Incorporate the answers',
@@ -301,9 +368,31 @@ export const CAT_FACTORY_TOOLS = [
301
368
  readOnly: false,
302
369
  description: 'Incorporate the answers\n\nFold the recorded answers into one standardized requirements document. Asynchronous — the run re-reviews in the background, so the response shows the review `incorporating`. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/incorporate` (operation `incorporatePublicRunRequirements`).',
303
370
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "feedback": { "type": "string", "maxLength": 4000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
304
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
371
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
305
372
  invoke: (client, args) => client.decisions.incorporate(str(args, 'runId'), args.body),
306
373
  },
374
+ {
375
+ name: 'decisions_incorporate_brainstorm',
376
+ title: 'Incorporate brainstorm picks',
377
+ group: 'decisions',
378
+ operationId: 'incorporatePublicRunBrainstorm',
379
+ readOnly: false,
380
+ description: 'Incorporate brainstorm picks\n\nFold the picks into one converged direction. ASYNCHRONOUS: the response shows the session `incorporating` while the durable driver folds and re-runs in the background. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/brainstorm/{stage}/incorporate` (operation `incorporatePublicRunBrainstorm`).',
381
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." }, "body": { "type": "object", "properties": { "feedback": { "type": "string", "maxLength": 4000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "stage", "body"] },
382
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
383
+ invoke: (client, args) => client.decisions.incorporateBrainstorm(str(args, 'runId'), str(args, 'stage'), args.body),
384
+ },
385
+ {
386
+ name: 'decisions_incorporate_clarity',
387
+ title: 'Incorporate clarity answers',
388
+ group: 'decisions',
389
+ operationId: 'incorporatePublicRunClarity',
390
+ readOnly: false,
391
+ description: 'Incorporate clarity answers\n\nFold the recorded answers into one standardized bug report. ASYNCHRONOUS: the response shows the review `incorporating` while the durable driver folds and re-reviews in the background. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/clarity/incorporate` (operation `incorporatePublicRunClarity`).',
392
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "feedback": { "type": "string", "maxLength": 4000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
393
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
394
+ invoke: (client, args) => client.decisions.incorporateClarity(str(args, 'runId'), args.body),
395
+ },
307
396
  {
308
397
  name: 'decisions_list',
309
398
  title: 'List a run\'s parked decisions',
@@ -312,7 +401,7 @@ export const CAT_FACTORY_TOOLS = [
312
401
  readOnly: true,
313
402
  description: 'List a run\'s parked decisions\n\nRead what a run is currently asking a human: requirement-review findings (with the stable item ids a reply addresses) and any implementation-fork choice. `parked` is true while the run is blocked awaiting one of them.\n\nCalls `GET /api/v1/runs/{runId}/decisions` (operation `listPublicRunDecisions`).',
314
403
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
315
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
404
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
316
405
  invoke: (client, args) => client.decisions.list(str(args, 'runId')),
317
406
  },
318
407
  {
@@ -323,9 +412,64 @@ export const CAT_FACTORY_TOOLS = [
323
412
  readOnly: false,
324
413
  description: 'Proceed with the current requirements\n\nSettle the requirements phase and advance the parked run (used when nothing is outstanding). Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/proceed` (operation `proceedPublicRunRequirements`).',
325
414
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
326
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
415
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
327
416
  invoke: (client, args) => client.decisions.proceed(str(args, 'runId')),
328
417
  },
418
+ {
419
+ name: 'decisions_proceed_brainstorm',
420
+ title: 'Proceed past a brainstorm',
421
+ group: 'decisions',
422
+ operationId: 'proceedPublicRunBrainstorm',
423
+ readOnly: false,
424
+ description: 'Proceed past a brainstorm\n\nSettle the brainstorm with the last converged direction and advance the parked run. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/brainstorm/{stage}/proceed` (operation `proceedPublicRunBrainstorm`).',
425
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." } }, "additionalProperties": false, "required": ["runId", "stage"] },
426
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
427
+ invoke: (client, args) => client.decisions.proceedBrainstorm(str(args, 'runId'), str(args, 'stage')),
428
+ },
429
+ {
430
+ name: 'decisions_proceed_clarity',
431
+ title: 'Proceed past the clarity review',
432
+ group: 'decisions',
433
+ operationId: 'proceedPublicRunClarity',
434
+ readOnly: false,
435
+ description: 'Proceed past the clarity review\n\nSettle the clarity phase with the last clarified report and advance the parked run. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/clarity/proceed` (operation `proceedPublicRunClarity`).',
436
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
437
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
438
+ invoke: (client, args) => client.decisions.proceedClarity(str(args, 'runId')),
439
+ },
440
+ {
441
+ name: 'decisions_reject_step',
442
+ title: 'Reject a parked step',
443
+ group: 'decisions',
444
+ operationId: 'rejectPublicRunStep',
445
+ readOnly: false,
446
+ description: 'Reject a parked step\n\nReject the gated proposal: the run stops entirely, recording a terminal `rejected` failure the board can retry. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/approvals/{approvalId}/reject` (operation `rejectPublicRunStep`).',
447
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "approvalId": { "type": "string", "description": "Path parameter `approvalId`." }, "body": { "type": "object", "properties": { "reason": { "type": "string", "maxLength": 2000 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "approvalId", "body"] },
448
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
449
+ invoke: (client, args) => client.decisions.rejectStep(str(args, 'runId'), str(args, 'approvalId'), args.body),
450
+ },
451
+ {
452
+ name: 'decisions_reply_to_brainstorm_option',
453
+ title: 'Respond to a brainstorm option',
454
+ group: 'decisions',
455
+ operationId: 'replyPublicRunBrainstormOption',
456
+ readOnly: false,
457
+ description: 'Respond to a brainstorm option\n\nPick or steer one of the options the brainstorm agent proposed, for the named stage (`requirements` or `architecture`). A task may hold one live session per stage at once. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/brainstorm/{stage}/options/{itemId}/reply` (operation `replyPublicRunBrainstormOption`).',
458
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "reply": { "type": "string", "minLength": 1, "maxLength": 4000 } }, "required": ["reply"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "stage", "itemId", "body"] },
459
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
460
+ invoke: (client, args) => client.decisions.replyToBrainstormOption(str(args, 'runId'), str(args, 'stage'), str(args, 'itemId'), args.body),
461
+ },
462
+ {
463
+ name: 'decisions_reply_to_clarity_finding',
464
+ title: 'Answer a clarity (bug-triage) finding',
465
+ group: 'decisions',
466
+ operationId: 'replyPublicRunClarityFinding',
467
+ readOnly: false,
468
+ description: 'Answer a clarity (bug-triage) finding\n\nRecord an answer to one clarity-review finding — the bug-report twin of the requirements loop. Returns the run\'s updated decision list. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/clarity/findings/{itemId}/reply` (operation `replyPublicRunClarityFinding`).',
469
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "reply": { "type": "string", "minLength": 1, "maxLength": 4000 } }, "required": ["reply"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "itemId", "body"] },
470
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
471
+ invoke: (client, args) => client.decisions.replyToClarityFinding(str(args, 'runId'), str(args, 'itemId'), args.body),
472
+ },
329
473
  {
330
474
  name: 'decisions_reply_to_finding',
331
475
  title: 'Answer a review finding',
@@ -334,9 +478,42 @@ export const CAT_FACTORY_TOOLS = [
334
478
  readOnly: false,
335
479
  description: 'Answer a review finding\n\nRecord an answer to one reviewer finding. Returns the run\'s updated decision list. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/findings/{itemId}/reply` (operation `replyPublicRunFinding`).',
336
480
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "reply": { "type": "string", "minLength": 1, "maxLength": 4000 } }, "required": ["reply"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "itemId", "body"] },
337
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
481
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
338
482
  invoke: (client, args) => client.decisions.replyToFinding(str(args, 'runId'), str(args, 'itemId'), args.body),
339
483
  },
484
+ {
485
+ name: 'decisions_request_human_test_fix',
486
+ title: 'Request a fix from a human-test gate',
487
+ group: 'decisions',
488
+ operationId: 'requestPublicRunHumanTestFix',
489
+ readOnly: false,
490
+ description: 'Request a fix from a human-test gate\n\nSubmit findings against the tested environment and dispatch a fixer, which commits onto the PR branch before the environment is rebuilt. The findings ARE the fixer prompt, so they cannot be blank. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/human-test/request-fix` (operation `requestPublicRunHumanTestFix`).',
491
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "findings": { "type": "string", "minLength": 1, "maxLength": 10000 } }, "required": ["findings"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
492
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
493
+ invoke: (client, args) => client.decisions.requestHumanTestFix(str(args, 'runId'), args.body),
494
+ },
495
+ {
496
+ name: 'decisions_request_step_changes',
497
+ title: 'Request changes on a parked step',
498
+ group: 'decisions',
499
+ operationId: 'requestPublicRunStepChanges',
500
+ readOnly: false,
501
+ description: 'Request changes on a parked step\n\nSend the gated step back to re-run with your guidance folded in. Unlike the in-app twin this takes freeform feedback only: anchored per-block comments address source line ranges of a rendered proposal, which a headless caller never rendered. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/approvals/{approvalId}/request-changes` (operation `requestPublicRunStepChanges`).',
502
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "approvalId": { "type": "string", "description": "Path parameter `approvalId`." }, "body": { "type": "object", "properties": { "feedback": { "type": "string", "minLength": 1, "maxLength": 10000 } }, "required": ["feedback"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "approvalId", "body"] },
503
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
504
+ invoke: (client, args) => client.decisions.requestStepChanges(str(args, 'runId'), str(args, 'approvalId'), args.body),
505
+ },
506
+ {
507
+ name: 'decisions_request_visual_confirmation_fix',
508
+ title: 'Request a fix from a visual-confirmation gate',
509
+ group: 'decisions',
510
+ operationId: 'requestPublicRunVisualConfirmFix',
511
+ readOnly: false,
512
+ description: 'Request a fix from a visual-confirmation gate\n\nSubmit findings against the captured screenshots and dispatch a fixer. The findings ARE the fixer prompt, so they cannot be blank. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/visual-confirmation/request-fix` (operation `requestPublicRunVisualConfirmFix`).',
513
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "findings": { "type": "string", "minLength": 1, "maxLength": 10000 } }, "required": ["findings"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
514
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
515
+ invoke: (client, args) => client.decisions.requestVisualConfirmationFix(str(args, 'runId'), args.body),
516
+ },
340
517
  {
341
518
  name: 'decisions_re_review',
342
519
  title: 'Re-review the incorporated document',
@@ -345,9 +522,53 @@ export const CAT_FACTORY_TOOLS = [
345
522
  readOnly: false,
346
523
  description: 'Re-review the incorporated document\n\nRun one more reviewer pass over the incorporated document. On convergence the parked run advances. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/re-review` (operation `reReviewPublicRunRequirements`).',
347
524
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
348
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
525
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
349
526
  invoke: (client, args) => client.decisions.reReview(str(args, 'runId')),
350
527
  },
528
+ {
529
+ name: 'decisions_re_review_brainstorm',
530
+ title: 'Re-run a brainstorm pass',
531
+ group: 'decisions',
532
+ operationId: 'reReviewPublicRunBrainstorm',
533
+ readOnly: false,
534
+ description: 'Re-run a brainstorm pass\n\nRun one more brainstorm pass against the converged direction. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/brainstorm/{stage}/re-review` (operation `reReviewPublicRunBrainstorm`).',
535
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." } }, "additionalProperties": false, "required": ["runId", "stage"] },
536
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
537
+ invoke: (client, args) => client.decisions.reReviewBrainstorm(str(args, 'runId'), str(args, 'stage')),
538
+ },
539
+ {
540
+ name: 'decisions_re_review_clarity',
541
+ title: 'Re-triage the clarified report',
542
+ group: 'decisions',
543
+ operationId: 'reReviewPublicRunClarity',
544
+ readOnly: false,
545
+ description: 'Re-triage the clarified report\n\nRun one more triage pass over the incorporated bug report. On convergence the parked run advances. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/clarity/re-review` (operation `reReviewPublicRunClarity`).',
546
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
547
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
548
+ invoke: (client, args) => client.decisions.reReviewClarity(str(args, 'runId')),
549
+ },
550
+ {
551
+ name: 'decisions_resolve_brainstorm_exceeded',
552
+ title: 'Resolve a brainstorm at its iteration cap',
553
+ group: 'decisions',
554
+ operationId: 'resolvePublicRunBrainstormExceeded',
555
+ readOnly: false,
556
+ description: 'Resolve a brainstorm at its iteration cap\n\nPick how a brainstorm that exhausted its pass budget proceeds: one more round, proceed with the last converged direction, or stop and reset the task. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/brainstorm/{stage}/resolve-exceeded` (operation `resolvePublicRunBrainstormExceeded`).',
557
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["extra-round", "proceed", "stop-reset"] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "stage", "body"] },
558
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
559
+ invoke: (client, args) => client.decisions.resolveBrainstormExceeded(str(args, 'runId'), str(args, 'stage'), args.body),
560
+ },
561
+ {
562
+ name: 'decisions_resolve_clarity_exceeded',
563
+ title: 'Resolve a clarity review at its iteration cap',
564
+ group: 'decisions',
565
+ operationId: 'resolvePublicRunClarityExceeded',
566
+ readOnly: false,
567
+ description: 'Resolve a clarity review at its iteration cap\n\nPick how a clarity review that exhausted its pass budget proceeds: one more round, proceed with the last clarified report, or stop and reset the task. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/clarity/resolve-exceeded` (operation `resolvePublicRunClarityExceeded`).',
568
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["extra-round", "proceed", "stop-reset"] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
569
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
570
+ invoke: (client, args) => client.decisions.resolveClarityExceeded(str(args, 'runId'), args.body),
571
+ },
351
572
  {
352
573
  name: 'decisions_resolve_exceeded',
353
574
  title: 'Resolve a review at its iteration cap',
@@ -356,7 +577,7 @@ export const CAT_FACTORY_TOOLS = [
356
577
  readOnly: false,
357
578
  description: 'Resolve a review at its iteration cap\n\nPick how a review that exhausted its reviewer-pass budget proceeds: one more round, proceed with the last incorporated document, or stop and reset the task. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/requirements/resolve-exceeded` (operation `resolvePublicRunRequirementsExceeded`).',
358
579
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["extra-round", "proceed", "stop-reset"] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
359
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
580
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
360
581
  invoke: (client, args) => client.decisions.resolveExceeded(str(args, 'runId'), args.body),
361
582
  },
362
583
  {
@@ -367,7 +588,7 @@ export const CAT_FACTORY_TOOLS = [
367
588
  readOnly: false,
368
589
  description: 'Resolve a run parked on the task\'s input check\n\nSettle a run the pre-dispatch input gate parked before its first agent step because the task states nothing an agent could act on. `recheck` re-evaluates the task as it now stands (edit it over `PATCH /api/v1/tasks/{taskId}` first: the fix is verified, not taken on trust) and releases the run only if the blocking findings are gone; a still-blocked verdict comes back as an ordinary 200 with refreshed findings. `proceed` waives the findings, which stay on the run as an `overridden` record. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/input-gate/resolve` (operation `resolvePublicRunInputGate`).',
369
590
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["recheck", "proceed"] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
370
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
591
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
371
592
  invoke: (client, args) => client.decisions.resolveInputGate(str(args, 'runId'), args.body),
372
593
  },
373
594
  {
@@ -378,9 +599,53 @@ export const CAT_FACTORY_TOOLS = [
378
599
  readOnly: false,
379
600
  description: 'Resolve a parked judge verdict\n\nSettle a run parked on a judge verdict: proceed anyway, bounce the producing step for rework, or stop the run. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/judge/resolve` (operation `resolvePublicRunJudge`).',
380
601
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["proceed", "bounce", "stop"] }, "feedback": { "anyOf": [{ "type": "string" }, { "type": "null" }] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
381
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
602
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
382
603
  invoke: (client, args) => client.decisions.resolveJudge(str(args, 'runId'), args.body),
383
604
  },
605
+ {
606
+ name: 'decisions_resolve_pr_review',
607
+ title: 'Resolve a parked PR deep review',
608
+ group: 'decisions',
609
+ operationId: 'resolvePublicRunPrReview',
610
+ readOnly: false,
611
+ description: 'Resolve a parked PR deep review\n\nRecord the curated finding selection and say what to do with it: `finish` completes the read-only review, `fix` hands the selected findings to a fixer that commits onto the reviewed PR branch, `post` publishes them as inline PR review comments. `fix` and `post` need at least one selected finding and act on the real pull request. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/pr-review/resolve` (operation `resolvePublicRunPrReview`).',
612
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "action": { "type": "string", "enum": ["finish", "fix", "post"] }, "findingIds": { "type": "array", "items": { "type": "string" } } }, "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
613
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
614
+ invoke: (client, args) => client.decisions.resolvePrReview(str(args, 'runId'), args.body),
615
+ },
616
+ {
617
+ name: 'decisions_resolve_step_exceeded',
618
+ title: 'Resolve a companion gate at its rework cap',
619
+ group: 'decisions',
620
+ operationId: 'resolvePublicRunStepExceeded',
621
+ readOnly: false,
622
+ description: 'Resolve a companion gate at its rework cap\n\nPick how a quality companion that spent its automatic rework budget proceeds: one more round, proceed with the output as it stands, or stop and reset the task. A gate in this state reports `exceeded: true` and refuses the plain approve. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/approvals/{approvalId}/resolve-exceeded` (operation `resolvePublicRunStepExceeded`).',
623
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "approvalId": { "type": "string", "description": "Path parameter `approvalId`." }, "body": { "type": "object", "properties": { "choice": { "type": "string", "enum": ["extra-round", "proceed", "stop-reset"] } }, "required": ["choice"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "approvalId", "body"] },
624
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
625
+ invoke: (client, args) => client.decisions.resolveStepExceeded(str(args, 'runId'), str(args, 'approvalId'), args.body),
626
+ },
627
+ {
628
+ name: 'decisions_set_brainstorm_option_status',
629
+ title: 'Dismiss or reopen a brainstorm option',
630
+ group: 'decisions',
631
+ operationId: 'setPublicRunBrainstormOptionStatus',
632
+ readOnly: false,
633
+ description: 'Dismiss or reopen a brainstorm option\n\nDismiss a proposed option, or reopen one dismissed by mistake. Only `open` options block incorporation. Requires a `decide`-scope key.\n\nCalls `PATCH /api/v1/runs/{runId}/decisions/brainstorm/{stage}/options/{itemId}` (operation `setPublicRunBrainstormOptionStatus`).',
634
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "status": { "type": "string", "enum": ["dismissed", "open"] } }, "required": ["status"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "stage", "itemId", "body"] },
635
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
636
+ invoke: (client, args) => client.decisions.setBrainstormOptionStatus(str(args, 'runId'), str(args, 'stage'), str(args, 'itemId'), args.body),
637
+ },
638
+ {
639
+ name: 'decisions_set_clarity_finding_status',
640
+ title: 'Dismiss or reopen a clarity finding',
641
+ group: 'decisions',
642
+ operationId: 'setPublicRunClarityFindingStatus',
643
+ readOnly: false,
644
+ description: 'Dismiss or reopen a clarity finding\n\nDismiss a clarity finding as not applicable, or reopen one dismissed by mistake. Only `open` findings block incorporation. Requires a `decide`-scope key.\n\nCalls `PATCH /api/v1/runs/{runId}/decisions/clarity/findings/{itemId}` (operation `setPublicRunClarityFindingStatus`).',
645
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "status": { "type": "string", "enum": ["dismissed", "open"] } }, "required": ["status"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "itemId", "body"] },
646
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
647
+ invoke: (client, args) => client.decisions.setClarityFindingStatus(str(args, 'runId'), str(args, 'itemId'), args.body),
648
+ },
384
649
  {
385
650
  name: 'decisions_set_finding_status',
386
651
  title: 'Dismiss or reopen a finding',
@@ -389,7 +654,7 @@ export const CAT_FACTORY_TOOLS = [
389
654
  readOnly: false,
390
655
  description: 'Dismiss or reopen a finding\n\nDismiss a finding as not applicable, or reopen one dismissed by mistake. Requires a `decide`-scope key.\n\nCalls `PATCH /api/v1/runs/{runId}/decisions/requirements/findings/{itemId}` (operation `setPublicRunFindingStatus`).',
391
656
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "status": { "type": "string", "enum": ["dismissed", "open"] } }, "required": ["status"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "itemId", "body"] },
392
- outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
657
+ outputSchema: { "type": "object", "properties": { "decisions": { "type": "array", "items": { "description": "Discriminated by `kind` (requirements-review | fork | judge | input-gate | approval-gate | agent-decision | clarity-review | brainstorm | pr-review | human-test | visual-confirmation). A newer deployment may report a variant not in this list." } }, "parked": { "type": "boolean" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" } } },
393
658
  invoke: (client, args) => client.decisions.setFindingStatus(str(args, 'runId'), str(args, 'itemId'), args.body),
394
659
  },
395
660
  {
@@ -422,7 +687,7 @@ export const CAT_FACTORY_TOOLS = [
422
687
  readOnly: true,
423
688
  description: 'Get a run\'s diagnostic map\n\nOne run’s diagnostic overview: its steps, which telemetry sinks this deployment retains (and how much each holds), the LLM cost/latency rollups, and the derived signals worth looking at first.\n\nCalls `GET /api/v1/debug/runs/{runId}` (operation `getDebugRun`).',
424
689
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
425
- outputSchema: { "type": "object", "properties": { "diagnostics": { "anyOf": [{ "type": "object", "properties": { "host": { "type": "object", "properties": { "platform": { "type": "string" } } }, "lastDispatch": { "type": "object", "properties": { "agentKind": { "type": "string" }, "at": { "type": "number" }, "executionBackend": { "type": "string" }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "repo": { "type": "object", "properties": { "baseBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "provider": { "type": "string" } } }, "stepIndex": { "type": "number" } } } } }, { "type": "null" }] }, "generatedAt": { "type": "number" }, "kind": { "type": "string" }, "llm": { "type": "object", "properties": { "byAgentKind": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "cacheHitRate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cacheReadTokens": { "type": "number" }, "cacheWriteTokens": { "type": "number" }, "calls": { "type": "number" }, "completionTokens": { "type": "number" }, "costEstimate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "errors": { "type": "number" }, "maxOutputTokens": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "outputHeadroomRatio": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "overheadMs": { "type": "number" }, "peakCompletionTokens": { "type": "number" }, "promptTokens": { "type": "number" }, "transportOverheadRatio": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "truncatedCalls": { "type": "number" }, "upstreamMs": { "type": "number" }, "warnings": { "type": "number" } } } }, "byPhase": { "type": "array", "items": { "type": "object", "properties": { "cacheHitRate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cacheReadTokens": { "type": "number" }, "cacheWriteTokens": { "type": "number" }, "calls": { "type": "number" }, "carryCostShare": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "carryCostTokens": { "type": "number" }, "completionTokens": { "type": "number" }, "costEstimate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "errors": { "type": "number" }, "overheadMs": { "type": "number" }, "phase": { "type": "string" }, "promptTokens": { "type": "number" }, "truncatedCalls": { "type": "number" }, "upstreamMs": { "type": "number" }, "warnings": { "type": "number" } } } }, "costCurrency": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "totals": { "type": "object", "properties": { "cacheHitRate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cacheReadTokens": { "type": "number" }, "cacheWriteTokens": { "type": "number" }, "calls": { "type": "number" }, "completionTokens": { "type": "number" }, "costEstimate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "errors": { "type": "number" }, "overheadMs": { "type": "number" }, "promptTokens": { "type": "number" }, "transportOverheadRatio": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "truncatedCalls": { "type": "number" }, "upstreamMs": { "type": "number" }, "warnings": { "type": "number" } } } } }, "run": { "type": "object", "properties": { "blockId": { "type": "string" }, "createdAt": { "type": "number" }, "currentStep": { "type": "number" }, "failure": { "anyOf": [{ "type": "object", "properties": { "detail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "hint": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "kind": { "type": "string", "description": "One of: preflight, dispatch, environment, evicted, timeout, agent, job_failed, rejected, companion_rejected, stalled, cancelled, unknown. A newer deployment may report a member not in this list." }, "lastSubtasks": { "anyOf": [{ "type": "object", "properties": { "completed": { "type": "number" }, "inProgress": { "type": "number" }, "items": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "status": { "type": "string", "description": "One of: pending, in_progress, completed. A newer deployment may report a member not in this list." } } } }, "total": { "type": "number" } } }, { "type": "null" }] }, "message": { "type": "string" }, "occurredAt": { "type": "number" }, "reason": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "stepIndex": { "type": "number" } } }, { "type": "null" }] }, "pipelineId": { "type": "string" }, "pipelineName": { "type": "string" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "stepCount": { "type": "number" } } }, "signals": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "code": { "type": "string" }, "count": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "message": { "type": "string" }, "severity": { "type": "string", "description": "One of: info, warning, error. A newer deployment may report a member not in this list." }, "stepIndex": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } } }, "sinks": { "type": "object", "properties": { "agentContext": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } }, "llmCalls": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } }, "provisioningLog": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } }, "searchQueries": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } } } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "evictionRecoveries": { "type": "number" }, "finishedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "firstEvictionDetail": { "anyOf": [{ "type": "object", "properties": { "chars": { "type": "number" }, "matchOffset": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "offset": { "type": "number" }, "text": { "type": "string" }, "totalChars": { "type": "number" }, "truncated": { "type": "boolean" } } }, { "type": "null" }] }, "hasStructuredResult": { "type": "boolean" }, "index": { "type": "number" }, "lastActivityAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outputChars": { "type": "number" }, "progress": { "type": "number" }, "skipped": { "type": "boolean" }, "startedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "state": { "type": "string" }, "subtasks": { "anyOf": [{ "type": "object", "properties": { "completed": { "type": "number" }, "inProgress": { "type": "number" }, "total": { "type": "number" } } }, { "type": "null" }] } } } }, "version": { "type": "number" } } },
690
+ outputSchema: { "type": "object", "properties": { "diagnostics": { "anyOf": [{ "type": "object", "properties": { "host": { "type": "object", "properties": { "platform": { "type": "string" } } }, "lastDispatch": { "type": "object", "properties": { "agentKind": { "type": "string" }, "at": { "type": "number" }, "executionBackend": { "type": "string" }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "repo": { "type": "object", "properties": { "baseBranch": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "provider": { "type": "string" } } }, "stepIndex": { "type": "number" } } } } }, { "type": "null" }] }, "generatedAt": { "type": "number" }, "kind": { "type": "string" }, "llm": { "type": "object", "properties": { "byAgentKind": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "cacheHitRate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cacheReadTokens": { "type": "number" }, "cacheWriteTokens": { "type": "number" }, "calls": { "type": "number" }, "completionTokens": { "type": "number" }, "costEstimate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "errors": { "type": "number" }, "maxOutputTokens": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "outputHeadroomRatio": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "overheadMs": { "type": "number" }, "peakCompletionTokens": { "type": "number" }, "promptTokens": { "type": "number" }, "transportOverheadRatio": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "truncatedCalls": { "type": "number" }, "upstreamMs": { "type": "number" }, "warnings": { "type": "number" } } } }, "byPhase": { "type": "array", "items": { "type": "object", "properties": { "cacheHitRate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cacheReadTokens": { "type": "number" }, "cacheWriteTokens": { "type": "number" }, "calls": { "type": "number" }, "carryCostShare": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "carryCostTokens": { "type": "number" }, "completionTokens": { "type": "number" }, "costEstimate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "errors": { "type": "number" }, "overheadMs": { "type": "number" }, "phase": { "type": "string" }, "promptTokens": { "type": "number" }, "truncatedCalls": { "type": "number" }, "upstreamMs": { "type": "number" }, "warnings": { "type": "number" } } } }, "costCurrency": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "totals": { "type": "object", "properties": { "cacheHitRate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "cacheReadTokens": { "type": "number" }, "cacheWriteTokens": { "type": "number" }, "calls": { "type": "number" }, "completionTokens": { "type": "number" }, "costEstimate": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "errors": { "type": "number" }, "overheadMs": { "type": "number" }, "promptTokens": { "type": "number" }, "transportOverheadRatio": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "truncatedCalls": { "type": "number" }, "upstreamMs": { "type": "number" }, "warnings": { "type": "number" } } } } }, "run": { "type": "object", "properties": { "blockId": { "type": "string" }, "createdAt": { "type": "number" }, "currentStep": { "type": "number" }, "failure": { "anyOf": [{ "type": "object", "properties": { "detail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "hint": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "kind": { "type": "string", "description": "One of: preflight, dispatch, environment, evicted, timeout, agent, job_failed, rejected, companion_rejected, stalled, cancelled, unknown. A newer deployment may report a member not in this list." }, "lastSubtasks": { "anyOf": [{ "type": "object", "properties": { "completed": { "type": "number" }, "inProgress": { "type": "number" }, "items": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "status": { "type": "string", "description": "One of: pending, in_progress, completed. A newer deployment may report a member not in this list." } } } }, "total": { "type": "number" } } }, { "type": "null" }] }, "message": { "type": "string" }, "occurredAt": { "type": "number" }, "reason": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "stepIndex": { "type": "number" } } }, { "type": "null" }] }, "pipelineId": { "type": "string" }, "pipelineName": { "type": "string" }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: running, blocked, paused, done, failed. A newer deployment may report a member not in this list." }, "stepCount": { "type": "number" } } }, "signals": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "code": { "type": "string" }, "count": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "message": { "type": "string" }, "severity": { "type": "string", "description": "One of: info, warning, error. A newer deployment may report a member not in this list." }, "stepIndex": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } } }, "sinks": { "type": "object", "properties": { "agentContext": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } }, "llmCalls": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } }, "provisioningLog": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } }, "searchQueries": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } }, "toolCalls": { "type": "object", "properties": { "available": { "type": "boolean" }, "count": { "type": "number" } } } } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "evictionRecoveries": { "type": "number" }, "finishedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "firstEvictionDetail": { "anyOf": [{ "type": "object", "properties": { "chars": { "type": "number" }, "matchOffset": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "offset": { "type": "number" }, "text": { "type": "string" }, "totalChars": { "type": "number" }, "truncated": { "type": "boolean" } } }, { "type": "null" }] }, "hasStructuredResult": { "type": "boolean" }, "index": { "type": "number" }, "lastActivityAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outputChars": { "type": "number" }, "progress": { "type": "number" }, "skipped": { "type": "boolean" }, "startedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "state": { "type": "string" }, "subtasks": { "anyOf": [{ "type": "object", "properties": { "completed": { "type": "number" }, "inProgress": { "type": "number" }, "total": { "type": "number" } } }, { "type": "null" }] } } } }, "version": { "type": "number" } } },
426
691
  invoke: (client, args) => client.debug.getRun(str(args, 'runId')),
427
692
  },
428
693
  {
@@ -480,6 +745,17 @@ export const CAT_FACTORY_TOOLS = [
480
745
  outputSchema: { "type": "object", "properties": { "nextCursor": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "queries": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "id": { "type": "string" }, "provider": { "anyOf": [{ "type": "string", "description": "One of: brave, searxng. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "query": { "type": "string" }, "resultCount": { "type": "number" }, "workspaceId": { "type": "string" } } } } } },
481
746
  invoke: (client, args) => client.debug.listSearchQueries(str(args, 'runId'), pick(args, QUERY_DEBUG_LIST_SEARCH_QUERIES)),
482
747
  },
748
+ {
749
+ name: 'debug_list_tool_calls',
750
+ title: 'List a run\'s tool calls',
751
+ group: 'debug',
752
+ operationId: 'listDebugToolCalls',
753
+ readOnly: true,
754
+ description: 'List a run\'s tool calls\n\nThe tool calls the run’s agents made, in the order they made them — which command, against what, and what came back. The half of “how did this diff come about” that neither the diff nor a prompt body answers. Arguments and results are retained only when the deployment records agent context AND the workspace has not opted out; `bodies` says which, so an empty `args` is never mistaken for a call that took none.\n\nCalls `GET /api/v1/debug/runs/{runId}/tool-calls` (operation `listDebugToolCalls`).',
755
+ inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "limit": { "type": "integer" }, "cursor": { "type": "string" }, "jobId": { "type": "string" }, "order": { "type": "string", "enum": ["recent", "trajectory"] } }, "additionalProperties": false, "required": ["runId"] },
756
+ outputSchema: { "type": "object", "properties": { "nextCursor": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "toolCalls": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "args": { "type": "string" }, "argsDropped": { "type": "number" }, "bodies": { "type": "string", "description": "One of: stored, withheld. A newer deployment may report a member not in this list." }, "createdAt": { "type": "number" }, "endedAt": { "type": "number" }, "executionId": { "type": "string" }, "id": { "type": "string" }, "jobId": { "type": "string" }, "ok": { "type": "boolean" }, "result": { "type": "string" }, "resultDropped": { "type": "number" }, "seq": { "type": "number" }, "startedAt": { "type": "number" }, "tool": { "type": "string" }, "workspaceId": { "type": "string" } } } } } },
757
+ invoke: (client, args) => client.debug.listToolCalls(str(args, 'runId'), pick(args, QUERY_DEBUG_LIST_TOOL_CALLS)),
758
+ },
483
759
  ];
484
760
  /** The operations this facade does not expose, each with its reason. */
485
761
  export const CAT_FACTORY_OMITTED_OPERATIONS = [
@@ -505,7 +781,7 @@ export const CAT_FACTORY_TOOL_GROUPS = {
505
781
  'notifications': 'The workspace\'s human-actionable inbox: list, act on, or dismiss a run tail.',
506
782
  'webhook': 'The workspace\'s one outbound endpoint: register, inspect or remove the receiver that notifications, run-lifecycle events and health alerts are pushed to.',
507
783
  'usage': 'The billing period\'s metered budget position and the per-model breakdown behind it.',
508
- 'decisions': 'A parked run\'s human decisions requirement findings, forks, judge verdicts and the pre-dispatch input gate.',
509
- 'debug': 'A run\'s recorded telemetry: LLM calls, the context each agent was given, infra logs.',
784
+ 'decisions': 'Every way a run stops for a person: approval gates, review and brainstorm loops, forks, judge verdicts, PR review findings and the human-verdict gates.',
785
+ 'debug': 'A run\'s recorded telemetry: LLM calls, the context each agent was given, the tool calls it made, infra logs.',
510
786
  };
511
787
  //# sourceMappingURL=tools.generated.js.map