@cat-factory/mcp-server 0.12.0 → 0.14.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,7 +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', 'ok'];
36
+ const QUERY_DEBUG_LIST_TOOL_CALLS = ['limit', 'cursor', 'jobId', 'order', 'outcome'];
37
37
  /** Every `/api/v1` operation this facade exposes as a tool, in resource-group order. */
38
38
  export const CAT_FACTORY_TOOLS = [
39
39
  {
@@ -99,7 +99,7 @@ export const CAT_FACTORY_TOOLS = [
99
99
  operationId: 'createPublicTask',
100
100
  readOnly: false,
101
101
  description: 'Create a task under a service\n\nCreate a task inside a service frame the key’s workspace owns. The task starts in the `planned` state; start it with the start endpoint. Optionally file it FROM a tracker ticket, and/or attach the requirements documents it is to be built against (named in a connected document source, or uploaded inline): the only way to get spec-sized input onto a repository-touching run.\n\nCalls `POST /api/v1/services/{serviceId}/tasks` (operation `createPublicTask`).',
102
- inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "documents": { "type": "array", "items": { "anyOf": [{ "type": "object", "properties": { "kind": { "const": "source" }, "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "enum": ["confluence", "notion", "github", "figma", "zeplin", "linear"] } }, "required": ["kind", "ref", "source"] }, { "type": "object", "properties": { "content": { "type": "string", "minLength": 1, "maxLength": 100000 }, "kind": { "const": "upload" }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["content", "kind", "title"] }], "description": "Discriminated by `kind` (source | upload)." } }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph. Other values are accepted where the deployment defines them." }, "ticket": { "type": "object", "properties": { "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "description": "Usually one of: jira, github, linear. Other values are accepted where the deployment defines them." } }, "required": ["ref", "source"] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["title"], "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId", "body"] },
102
+ inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "documents": { "type": "array", "items": { "anyOf": [{ "type": "object", "properties": { "kind": { "const": "source" }, "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "enum": ["confluence", "notion", "github", "figma", "zeplin", "linear"] } }, "required": ["kind", "ref", "source"] }, { "type": "object", "properties": { "content": { "type": "string", "minLength": 1, "maxLength": 100000 }, "kind": { "const": "upload" }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["content", "kind", "title"] }], "description": "Discriminated by `kind` (source | upload)." } }, "fields": { "type": "object", "additionalProperties": { "anyOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "boolean" }, { "type": "number" }] } }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph. Other values are accepted where the deployment defines them." }, "ticket": { "type": "object", "properties": { "ref": { "type": "string", "minLength": 1, "maxLength": 500 }, "source": { "type": "string", "description": "Usually one of: jira, github, linear. Other values are accepted where the deployment defines them." } }, "required": ["ref", "source"] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["title"], "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId", "body"] },
103
103
  outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "type": "string" }, "status": { "type": "string", "description": "One of: planned, ready, in_progress, blocked, pr_ready, done. A newer deployment may report a member not in this list." }, "taskId": { "type": "string" }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
104
104
  invoke: (client, args) => client.tasks.create(str(args, 'serviceId'), args.body),
105
105
  },
@@ -204,6 +204,17 @@ export const CAT_FACTORY_TOOLS = [
204
204
  outputSchema: { "type": "object", "properties": { "pipelines": { "type": "array", "items": { "type": "object", "properties": { "headlessStartable": { "type": "boolean" }, "name": { "type": "string" }, "pipelineId": { "type": "string" }, "public": { "type": "boolean" }, "steps": { "type": "array", "items": { "type": "string" } } } } } } },
205
205
  invoke: (client, args) => client.pipelines.list(),
206
206
  },
207
+ {
208
+ name: 'task_types_list',
209
+ title: 'List the task types this workspace may create',
210
+ group: 'task_types',
211
+ operationId: 'listPublicTaskTypes',
212
+ readOnly: true,
213
+ description: 'List the task types this workspace may create\n\nList the task types a task can be created as in the key’s workspace (the built-in ones plus any the deployment registered), each with the fields it accepts. Fill those fields through `fields` on task creation; the descriptors here are what that call validates against, so a caller reads the form rather than guessing it. A type a workspace admin has hidden is absent.\n\nCalls `GET /api/v1/task-types` (operation `listPublicTaskTypes`).',
214
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
215
+ outputSchema: { "type": "object", "properties": { "taskTypes": { "type": "array", "items": { "type": "object", "properties": { "builtin": { "type": "boolean" }, "category": { "type": "string" }, "defaultPipelineId": { "type": "string" }, "description": { "type": "string" }, "fields": { "type": "array", "items": { "type": "object", "properties": { "default": { "type": "string" }, "defaultValues": { "type": "array", "items": { "type": "string" } }, "help": { "type": "string" }, "key": { "type": "string" }, "label": { "type": "string" }, "max": { "type": "number" }, "maxLength": { "type": "integer" }, "min": { "type": "number" }, "options": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "value": { "type": "string" } } } }, "placeholder": { "type": "string" }, "required": { "type": "boolean" }, "showWhen": { "type": "object", "properties": { "equals": {}, "includes": { "type": "string" }, "key": { "type": "string" } } }, "type": { "type": "string", "description": "One of: text, password, select, number, checkbox, textarea, checkbox-group, path. A newer deployment may report a member not in this list." } } } }, "label": { "type": "string" }, "taskType": { "type": "string" } } } } } },
216
+ invoke: (client, args) => client.taskTypes.list(),
217
+ },
207
218
  {
208
219
  name: 'notifications_act',
209
220
  title: 'Act on a notification',
@@ -283,6 +294,17 @@ export const CAT_FACTORY_TOOLS = [
283
294
  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" }] } } } } } },
284
295
  invoke: (client, args) => client.usage.get(),
285
296
  },
297
+ {
298
+ name: 'me_get',
299
+ title: 'Describe the calling key',
300
+ group: 'me',
301
+ operationId: 'getPublicIdentity',
302
+ readOnly: true,
303
+ description: 'Describe the calling key\n\nReport what the key on this request is and what it may do: its id, its account, the ONE workspace every call under it acts within, its scope, and the label it was minted with. `read` scope, the floor of the ladder, because an integration’s startup self-check has to work whatever rung it holds. The scope ladder is INCLUSIVE (`read` ⊂ `write` ⊂ `decide` ⊂ `admin`), so compare against the rung an action needs rather than for equality.\n\nCalls `GET /api/v1/me` (operation `getPublicIdentity`).',
304
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
305
+ outputSchema: { "type": "object", "properties": { "accountId": { "type": "string" }, "createdAt": { "type": "number" }, "keyId": { "type": "string" }, "label": { "type": "string" }, "scope": { "type": "string", "description": "One of: read, write, decide, admin. A newer deployment may report a member not in this list." }, "workspaceId": { "type": "string" } } },
306
+ invoke: (client, args) => client.me.get(),
307
+ },
286
308
  {
287
309
  name: 'decisions_answer_agent_decision',
288
310
  title: 'Answer an agent-raised decision',
@@ -291,7 +313,7 @@ export const CAT_FACTORY_TOOLS = [
291
313
  readOnly: false,
292
314
  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
315
  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 | follow-ups | interview). 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
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
295
317
  invoke: (client, args) => client.decisions.answerAgentDecision(str(args, 'runId'), str(args, 'decisionId'), args.body),
296
318
  },
297
319
  {
@@ -302,7 +324,7 @@ export const CAT_FACTORY_TOOLS = [
302
324
  readOnly: false,
303
325
  description: 'Answer a follow-up question\n\nAnswer one `question` item the Coder raised mid-run; the answer steers its next pass. Refused for a `follow_up` item, which is filed, sent back or dismissed instead. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/follow-ups/items/{itemId}/answer` (operation `answerPublicRunFollowUp`).',
304
326
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." }, "body": { "type": "object", "properties": { "answer": { "type": "string", "minLength": 1, "maxLength": 4000 } }, "required": ["answer"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "itemId", "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 | follow-ups | interview). 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
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
306
328
  invoke: (client, args) => client.decisions.answerFollowUp(str(args, 'runId'), str(args, 'itemId'), args.body),
307
329
  },
308
330
  {
@@ -313,7 +335,7 @@ export const CAT_FACTORY_TOOLS = [
313
335
  readOnly: false,
314
336
  description: 'Answer an interview question\n\nRecord an answer to one question the parked interviewer asked. Does NOT resume the run: answer the batch, then `continue` or `proceed`. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/interview/answer` (operation `answerPublicRunInterview`).',
315
337
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "body": { "type": "object", "properties": { "answer": { "type": "string", "maxLength": 2000 }, "questionId": { "type": "string", "minLength": 1, "maxLength": 80 } }, "required": ["answer", "questionId"], "description": "The request body." } }, "additionalProperties": false, "required": ["runId", "body"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
317
339
  invoke: (client, args) => client.decisions.answerInterviewQuestion(str(args, 'runId'), args.body),
318
340
  },
319
341
  {
@@ -324,7 +346,7 @@ export const CAT_FACTORY_TOOLS = [
324
346
  readOnly: false,
325
347
  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`).',
326
348
  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"] },
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 | follow-ups | interview). 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
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
328
350
  invoke: (client, args) => client.decisions.approveStep(str(args, 'runId'), str(args, 'approvalId'), args.body),
329
351
  },
330
352
  {
@@ -335,7 +357,7 @@ export const CAT_FACTORY_TOOLS = [
335
357
  readOnly: false,
336
358
  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`).',
337
359
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
339
361
  invoke: (client, args) => client.decisions.approveVisualConfirmation(str(args, 'runId')),
340
362
  },
341
363
  {
@@ -346,7 +368,7 @@ export const CAT_FACTORY_TOOLS = [
346
368
  readOnly: false,
347
369
  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`).',
348
370
  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"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
350
372
  invoke: (client, args) => client.decisions.challengePrReviewFinding(str(args, 'runId'), str(args, 'findingId'), args.body),
351
373
  },
352
374
  {
@@ -357,7 +379,7 @@ export const CAT_FACTORY_TOOLS = [
357
379
  readOnly: false,
358
380
  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`).',
359
381
  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"] },
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 | follow-ups | interview). 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
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
361
383
  invoke: (client, args) => client.decisions.chooseFork(str(args, 'runId'), args.body),
362
384
  },
363
385
  {
@@ -368,7 +390,7 @@ export const CAT_FACTORY_TOOLS = [
368
390
  readOnly: false,
369
391
  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`).',
370
392
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
372
394
  invoke: (client, args) => client.decisions.confirmHumanTest(str(args, 'runId')),
373
395
  },
374
396
  {
@@ -379,7 +401,7 @@ export const CAT_FACTORY_TOOLS = [
379
401
  readOnly: false,
380
402
  description: 'Continue a parked interview\n\nSubmit the recorded answers and resume: the interviewer runs again and may ask follow-up questions. ASYNCHRONOUS: the pass runs in the durable driver, so the next round arrives on a later read of the decision list. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/interview/continue` (operation `continuePublicRunInterview`).',
381
403
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
383
405
  invoke: (client, args) => client.decisions.continueInterview(str(args, 'runId')),
384
406
  },
385
407
  {
@@ -390,7 +412,7 @@ export const CAT_FACTORY_TOOLS = [
390
412
  readOnly: false,
391
413
  description: 'Dismiss a follow-up item\n\nWave one item off without acting on it. Valid for either item kind, and (like every other verb here) releases the park once it is the last undecided item. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/follow-ups/items/{itemId}/dismiss` (operation `dismissPublicRunFollowUp`).',
392
414
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." } }, "additionalProperties": false, "required": ["runId", "itemId"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
394
416
  invoke: (client, args) => client.decisions.dismissFollowUp(str(args, 'runId'), str(args, 'itemId')),
395
417
  },
396
418
  {
@@ -401,7 +423,7 @@ export const CAT_FACTORY_TOOLS = [
401
423
  readOnly: false,
402
424
  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`).',
403
425
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "findingId": { "type": "string", "description": "Path parameter `findingId`." } }, "additionalProperties": false, "required": ["runId", "findingId"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
405
427
  invoke: (client, args) => client.decisions.dismissPrReviewFinding(str(args, 'runId'), str(args, 'findingId')),
406
428
  },
407
429
  {
@@ -412,7 +434,7 @@ export const CAT_FACTORY_TOOLS = [
412
434
  readOnly: false,
413
435
  description: 'File a follow-up item as an issue\n\nFile one `follow_up` item on the workspace\'s issue tracker, recording the ticket ref on the item. Refused for a `question` item, and for a workspace with no tracker connected. Creating the issue is not idempotent, so a retry after a partial failure files a second one. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/follow-ups/items/{itemId}/file` (operation `filePublicRunFollowUp`).',
414
436
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." } }, "additionalProperties": false, "required": ["runId", "itemId"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
416
438
  invoke: (client, args) => client.decisions.fileFollowUp(str(args, 'runId'), str(args, 'itemId')),
417
439
  },
418
440
  {
@@ -423,7 +445,7 @@ export const CAT_FACTORY_TOOLS = [
423
445
  readOnly: false,
424
446
  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`).',
425
447
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
427
449
  invoke: (client, args) => client.decisions.incorporate(str(args, 'runId'), args.body),
428
450
  },
429
451
  {
@@ -434,7 +456,7 @@ export const CAT_FACTORY_TOOLS = [
434
456
  readOnly: false,
435
457
  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`).',
436
458
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
438
460
  invoke: (client, args) => client.decisions.incorporateBrainstorm(str(args, 'runId'), str(args, 'stage'), args.body),
439
461
  },
440
462
  {
@@ -445,7 +467,7 @@ export const CAT_FACTORY_TOOLS = [
445
467
  readOnly: false,
446
468
  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`).',
447
469
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
449
471
  invoke: (client, args) => client.decisions.incorporateClarity(str(args, 'runId'), args.body),
450
472
  },
451
473
  {
@@ -456,7 +478,7 @@ export const CAT_FACTORY_TOOLS = [
456
478
  readOnly: true,
457
479
  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`).',
458
480
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
460
482
  invoke: (client, args) => client.decisions.list(str(args, 'runId')),
461
483
  },
462
484
  {
@@ -467,7 +489,7 @@ export const CAT_FACTORY_TOOLS = [
467
489
  readOnly: false,
468
490
  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`).',
469
491
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
471
493
  invoke: (client, args) => client.decisions.proceed(str(args, 'runId')),
472
494
  },
473
495
  {
@@ -478,7 +500,7 @@ export const CAT_FACTORY_TOOLS = [
478
500
  readOnly: false,
479
501
  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`).',
480
502
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." } }, "additionalProperties": false, "required": ["runId", "stage"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
482
504
  invoke: (client, args) => client.decisions.proceedBrainstorm(str(args, 'runId'), str(args, 'stage')),
483
505
  },
484
506
  {
@@ -489,7 +511,7 @@ export const CAT_FACTORY_TOOLS = [
489
511
  readOnly: false,
490
512
  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`).',
491
513
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
493
515
  invoke: (client, args) => client.decisions.proceedClarity(str(args, 'runId')),
494
516
  },
495
517
  {
@@ -500,7 +522,7 @@ export const CAT_FACTORY_TOOLS = [
500
522
  readOnly: false,
501
523
  description: 'Proceed past a parked interview\n\nStop the questions: the interviewer converges on the answers so far and the run advances. Also asynchronous, since converging is itself an interviewer pass. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/interview/proceed` (operation `proceedPublicRunInterview`).',
502
524
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
504
526
  invoke: (client, args) => client.decisions.proceedInterview(str(args, 'runId')),
505
527
  },
506
528
  {
@@ -511,7 +533,7 @@ export const CAT_FACTORY_TOOLS = [
511
533
  readOnly: false,
512
534
  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`).',
513
535
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
515
537
  invoke: (client, args) => client.decisions.rejectStep(str(args, 'runId'), str(args, 'approvalId'), args.body),
516
538
  },
517
539
  {
@@ -522,7 +544,7 @@ export const CAT_FACTORY_TOOLS = [
522
544
  readOnly: false,
523
545
  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`).',
524
546
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
526
548
  invoke: (client, args) => client.decisions.replyToBrainstormOption(str(args, 'runId'), str(args, 'stage'), str(args, 'itemId'), args.body),
527
549
  },
528
550
  {
@@ -533,7 +555,7 @@ export const CAT_FACTORY_TOOLS = [
533
555
  readOnly: false,
534
556
  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`).',
535
557
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
537
559
  invoke: (client, args) => client.decisions.replyToClarityFinding(str(args, 'runId'), str(args, 'itemId'), args.body),
538
560
  },
539
561
  {
@@ -544,7 +566,7 @@ export const CAT_FACTORY_TOOLS = [
544
566
  readOnly: false,
545
567
  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`).',
546
568
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
548
570
  invoke: (client, args) => client.decisions.replyToFinding(str(args, 'runId'), str(args, 'itemId'), args.body),
549
571
  },
550
572
  {
@@ -555,7 +577,7 @@ export const CAT_FACTORY_TOOLS = [
555
577
  readOnly: false,
556
578
  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`).',
557
579
  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"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
559
581
  invoke: (client, args) => client.decisions.requestHumanTestFix(str(args, 'runId'), args.body),
560
582
  },
561
583
  {
@@ -566,7 +588,7 @@ export const CAT_FACTORY_TOOLS = [
566
588
  readOnly: false,
567
589
  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`).',
568
590
  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"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
570
592
  invoke: (client, args) => client.decisions.requestStepChanges(str(args, 'runId'), str(args, 'approvalId'), args.body),
571
593
  },
572
594
  {
@@ -577,7 +599,7 @@ export const CAT_FACTORY_TOOLS = [
577
599
  readOnly: false,
578
600
  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`).',
579
601
  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"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
581
603
  invoke: (client, args) => client.decisions.requestVisualConfirmationFix(str(args, 'runId'), args.body),
582
604
  },
583
605
  {
@@ -588,7 +610,7 @@ export const CAT_FACTORY_TOOLS = [
588
610
  readOnly: false,
589
611
  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`).',
590
612
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
592
614
  invoke: (client, args) => client.decisions.reReview(str(args, 'runId')),
593
615
  },
594
616
  {
@@ -599,7 +621,7 @@ export const CAT_FACTORY_TOOLS = [
599
621
  readOnly: false,
600
622
  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`).',
601
623
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "stage": { "type": "string", "description": "Path parameter `stage`." } }, "additionalProperties": false, "required": ["runId", "stage"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
603
625
  invoke: (client, args) => client.decisions.reReviewBrainstorm(str(args, 'runId'), str(args, 'stage')),
604
626
  },
605
627
  {
@@ -610,7 +632,7 @@ export const CAT_FACTORY_TOOLS = [
610
632
  readOnly: false,
611
633
  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`).',
612
634
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
614
636
  invoke: (client, args) => client.decisions.reReviewClarity(str(args, 'runId')),
615
637
  },
616
638
  {
@@ -621,7 +643,7 @@ export const CAT_FACTORY_TOOLS = [
621
643
  readOnly: false,
622
644
  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`).',
623
645
  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"] },
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 | follow-ups | interview). 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" } } },
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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
625
647
  invoke: (client, args) => client.decisions.resolveBrainstormExceeded(str(args, 'runId'), str(args, 'stage'), args.body),
626
648
  },
627
649
  {
@@ -632,7 +654,7 @@ export const CAT_FACTORY_TOOLS = [
632
654
  readOnly: false,
633
655
  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`).',
634
656
  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"] },
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 | follow-ups | interview). 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
636
658
  invoke: (client, args) => client.decisions.resolveClarityExceeded(str(args, 'runId'), args.body),
637
659
  },
638
660
  {
@@ -643,7 +665,7 @@ export const CAT_FACTORY_TOOLS = [
643
665
  readOnly: false,
644
666
  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`).',
645
667
  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"] },
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 | follow-ups | interview). 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" } } },
668
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
647
669
  invoke: (client, args) => client.decisions.resolveExceeded(str(args, 'runId'), args.body),
648
670
  },
649
671
  {
@@ -654,7 +676,7 @@ export const CAT_FACTORY_TOOLS = [
654
676
  readOnly: false,
655
677
  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`).',
656
678
  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"] },
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 | follow-ups | interview). 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" } } },
679
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
658
680
  invoke: (client, args) => client.decisions.resolveInputGate(str(args, 'runId'), args.body),
659
681
  },
660
682
  {
@@ -665,7 +687,7 @@ export const CAT_FACTORY_TOOLS = [
665
687
  readOnly: false,
666
688
  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`).',
667
689
  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"] },
668
- 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 | follow-ups | interview). 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" } } },
690
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
669
691
  invoke: (client, args) => client.decisions.resolveJudge(str(args, 'runId'), args.body),
670
692
  },
671
693
  {
@@ -676,7 +698,7 @@ export const CAT_FACTORY_TOOLS = [
676
698
  readOnly: false,
677
699
  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`).',
678
700
  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"] },
679
- 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 | follow-ups | interview). 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" } } },
701
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
680
702
  invoke: (client, args) => client.decisions.resolvePrReview(str(args, 'runId'), args.body),
681
703
  },
682
704
  {
@@ -687,7 +709,7 @@ export const CAT_FACTORY_TOOLS = [
687
709
  readOnly: false,
688
710
  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`).',
689
711
  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"] },
690
- 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 | follow-ups | interview). 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" } } },
712
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
691
713
  invoke: (client, args) => client.decisions.resolveStepExceeded(str(args, 'runId'), str(args, 'approvalId'), args.body),
692
714
  },
693
715
  {
@@ -698,7 +720,7 @@ export const CAT_FACTORY_TOOLS = [
698
720
  readOnly: false,
699
721
  description: 'Send a follow-up item back to the Coder\n\nFold one `follow_up` item into another Coder pass (the item records as `queued`). Once every item is decided the run loops the Coder for the ones sent back, within the `maxLoops` budget the decision reports. Requires a `decide`-scope key.\n\nCalls `POST /api/v1/runs/{runId}/decisions/follow-ups/items/{itemId}/send-back` (operation `sendBackPublicRunFollowUp`).',
700
722
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." }, "itemId": { "type": "string", "description": "Path parameter `itemId`." } }, "additionalProperties": false, "required": ["runId", "itemId"] },
701
- 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 | follow-ups | interview). 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" } } },
723
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
702
724
  invoke: (client, args) => client.decisions.sendBackFollowUp(str(args, 'runId'), str(args, 'itemId')),
703
725
  },
704
726
  {
@@ -709,7 +731,7 @@ export const CAT_FACTORY_TOOLS = [
709
731
  readOnly: false,
710
732
  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`).',
711
733
  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"] },
712
- 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 | follow-ups | interview). 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" } } },
734
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
713
735
  invoke: (client, args) => client.decisions.setBrainstormOptionStatus(str(args, 'runId'), str(args, 'stage'), str(args, 'itemId'), args.body),
714
736
  },
715
737
  {
@@ -720,7 +742,7 @@ export const CAT_FACTORY_TOOLS = [
720
742
  readOnly: false,
721
743
  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`).',
722
744
  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"] },
723
- 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 | follow-ups | interview). 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" } } },
745
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
724
746
  invoke: (client, args) => client.decisions.setClarityFindingStatus(str(args, 'runId'), str(args, 'itemId'), args.body),
725
747
  },
726
748
  {
@@ -731,7 +753,7 @@ export const CAT_FACTORY_TOOLS = [
731
753
  readOnly: false,
732
754
  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`).',
733
755
  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"] },
734
- 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 | follow-ups | interview). 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" } } },
756
+ 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 | follow-ups | interview). 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" }, "unanswerable": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "reason": { "type": "string", "description": "One of: human_wait_gate, unclassified_gate, unwired_interview_gate. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "stepKind": { "type": "string" } } } } } },
735
757
  invoke: (client, args) => client.decisions.setFindingStatus(str(args, 'runId'), str(args, 'itemId'), args.body),
736
758
  },
737
759
  {
@@ -829,7 +851,7 @@ export const CAT_FACTORY_TOOLS = [
829
851
  operationId: 'listDebugToolCalls',
830
852
  readOnly: true,
831
853
  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`).',
832
- 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"] }, "ok": { "type": "string", "enum": ["true", "false"] } }, "additionalProperties": false, "required": ["runId"] },
854
+ 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"] }, "outcome": { "type": "string", "enum": ["ok", "error"] } }, "additionalProperties": false, "required": ["runId"] },
833
855
  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" } } } } } },
834
856
  invoke: (client, args) => client.debug.listToolCalls(str(args, 'runId'), pick(args, QUERY_DEBUG_LIST_TOOL_CALLS)),
835
857
  },
@@ -841,7 +863,7 @@ export const CAT_FACTORY_TOOLS = [
841
863
  readOnly: true,
842
864
  description: 'Get a run\'s verification report\n\nThe engine’s bundle of CAPTURED FACTS about a run: the CI gate’s verdict and failing checks, the platform’s own run of the service’s lint/test/build commands (with the failing output), the red-then-green reproduction proof for a bugfix, the tester’s structured report, requirement coverage, the throwaway-environment lifecycle, judge verdicts and the merge decision. Byte-for-byte the JSON block the pull-request body carries, composed on read, so it also answers for a run that never opened a pull request. Each section states `reported` or `absent` with a note, so a step that did not run never looks like a step that found nothing.\n\nCalls `GET /api/v1/runs/{runId}/report` (operation `getPublicRunReport`).',
843
865
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
844
- outputSchema: { "type": "object", "properties": { "ci": { "type": "object", "properties": { "failingChecks": { "type": "array", "items": { "type": "object", "properties": { "conclusion": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "name": { "type": "string" }, "repo": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } }, "fixerAttempts": { "type": "number" }, "headSha": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "maxFixerAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "verdict": { "anyOf": [{ "type": "string", "description": "One of: pass, pending, fail. A newer deployment may report a member not in this list." }, { "type": "null" }] } } }, "environments": { "type": "object", "properties": { "entries": { "type": "array", "items": { "type": "object", "properties": { "error": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "frameId": { "type": "string" }, "status": { "type": "string", "description": "One of: ready, failed, skipped. A newer deployment may report a member not in this list." }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } }, "evidence": { "type": "object", "properties": { "capturedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outcomes": { "type": "number" }, "ranAgainst": { "anyOf": [{ "type": "string", "description": "One of: local, ephemeral. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "requirementVerdicts": { "type": "number" }, "screenshots": { "type": "array", "items": { "type": "object", "properties": { "artifactId": { "type": "string" }, "hasReference": { "type": "boolean" }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "view": { "type": "string" } } } }, "status": { "type": "string", "description": "One of: captured, local, undeclared, absent. A newer deployment may report a member not in this list." }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } }, "gaps": { "type": "array", "items": { "type": "string" } }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "proof": { "type": "string", "description": "One of: complete, incomplete, not_applicable. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "teardown": { "type": "string", "description": "One of: confirmed, unconfirmed, pending, failed, not_applicable. A newer deployment may report a member not in this list." }, "timeline": { "type": "object", "properties": { "gap": { "anyOf": [{ "type": "string", "description": "One of: unwired, unreadable, truncated, not_provisioned. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provisionFailures": { "type": "number" }, "provisionedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "teardownFailures": { "type": "number" }, "teardownsUnconfirmed": { "type": "number" }, "tornDownAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } } } }, "generatedAt": { "type": "number" }, "judges": { "type": "object", "properties": { "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "verdicts": { "type": "array", "items": { "type": "object", "properties": { "bounces": { "type": "number" }, "disposition": { "anyOf": [{ "type": "string", "description": "One of: pass, park, bounce, fail. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "findings": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "severity": { "type": "string", "description": "One of: low, medium, high, critical. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "where": { "type": "string" } } } }, "maxBounces": { "type": "number" }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "rubricName": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "rubricOverridden": { "type": "boolean" }, "score": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "stepKind": { "type": "string" }, "summary": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } } } } }, "merge": { "type": "object", "properties": { "assessment": { "anyOf": [{ "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outcome": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "presetName": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "reason": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." } } }, "observability": { "type": "object", "properties": { "reportUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "trajectoryUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } }, "reproduction": { "type": "object", "properties": { "alternativeVerification": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "at": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "attempts": { "type": "number" }, "base": { "anyOf": [{ "type": "object", "properties": { "durationMs": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "exitCode": { "type": "number" }, "outputTail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "type": "boolean" }, "setupFailed": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "timedOut": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] } } }, { "type": "null" }] }, "command": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "final": { "anyOf": [{ "type": "object", "properties": { "durationMs": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "exitCode": { "type": "number" }, "outputTail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "type": "boolean" }, "setupFailed": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "timedOut": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] } } }, { "type": "null" }] }, "maxAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "observation": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "omittedTestPaths": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "reason": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "testPaths": { "type": "array", "items": { "type": "string" } }, "verdict": { "anyOf": [{ "type": "string", "description": "One of: reproduced, inconclusive, declared_infeasible. A newer deployment may report a member not in this list." }, { "type": "null" }] } } }, "requirements": { "type": "object", "properties": { "entries": { "type": "array", "items": { "type": "object", "properties": { "criteriaCount": { "type": "number" }, "detail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "group": { "type": "string" }, "id": { "type": "string" }, "module": { "type": "string" }, "priority": { "type": "string", "description": "One of: must, should, could. A newer deployment may report a member not in this list." }, "state": { "type": "string", "description": "One of: aspirational, established. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "verdict": { "type": "string", "description": "One of: met, not_met, not_covered. A newer deployment may report a member not in this list." } } } }, "met": { "type": "number" }, "notCovered": { "type": "number" }, "notMet": { "type": "number" }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "regressions": { "type": "number" }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "total": { "type": "number" } } }, "run": { "type": "object", "properties": { "blockId": { "type": "string" }, "blockTitle": { "type": "string" }, "executionId": { "type": "string" }, "issues": { "type": "array", "items": { "type": "object", "properties": { "externalId": { "type": "string" }, "source": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } } } }, "pipelineId": { "type": "string" }, "pipelineName": { "type": "string" }, "provider": { "anyOf": [{ "type": "string", "description": "One of: github, gitlab. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "repo": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "startedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "steps": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "index": { "type": "number" }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "state": { "type": "string" } } } } } }, "tests": { "type": "object", "properties": { "concerns": { "type": "array", "items": { "type": "object", "properties": { "severity": { "type": "string" }, "title": { "type": "string" } } } }, "environment": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "fixerAttempts": { "type": "number" }, "greenlight": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "maxFixerAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outcomes": { "type": "array", "items": { "type": "object", "properties": { "detail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "name": { "type": "string" }, "status": { "type": "string" } } } }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "summary": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "tested": { "type": "array", "items": { "type": "string" } } } }, "truncations": { "type": "array", "items": { "type": "string" } }, "validation": { "type": "object", "properties": { "at": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "attempts": { "type": "number" }, "commands": { "type": "array", "items": { "type": "object", "properties": { "command": { "type": "string" }, "durationMs": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "exitCode": { "type": "number" }, "label": { "type": "string" }, "outputTail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "type": "boolean" }, "timedOut": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] } } } }, "configUnreadable": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "maxAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "stepKind": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } }, "version": { "type": "number" } } },
866
+ outputSchema: { "type": "object", "properties": { "ci": { "type": "object", "properties": { "failingChecks": { "type": "array", "items": { "type": "object", "properties": { "conclusion": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "name": { "type": "string" }, "repo": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } }, "fixerAttempts": { "type": "number" }, "headSha": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "maxFixerAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "verdict": { "anyOf": [{ "type": "string", "description": "One of: pass, pending, fail. A newer deployment may report a member not in this list." }, { "type": "null" }] } } }, "environments": { "type": "object", "properties": { "entries": { "type": "array", "items": { "type": "object", "properties": { "error": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "frameId": { "type": "string" }, "status": { "type": "string", "description": "One of: ready, failed, skipped. A newer deployment may report a member not in this list." }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } }, "evidence": { "type": "object", "properties": { "capturedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outcomes": { "type": "number" }, "ranAgainst": { "anyOf": [{ "type": "string", "description": "One of: local, ephemeral. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "requirementVerdicts": { "type": "number" }, "screenshots": { "type": "array", "items": { "type": "object", "properties": { "artifactId": { "type": "string" }, "hasReference": { "type": "boolean" }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "view": { "type": "string" } } } }, "status": { "type": "string", "description": "One of: captured, local, undeclared, absent. A newer deployment may report a member not in this list." }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } }, "gaps": { "type": "array", "items": { "type": "string" } }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "proof": { "type": "string", "description": "One of: complete, incomplete, not_applicable. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "teardown": { "type": "string", "description": "One of: confirmed, unconfirmed, pending, failed, not_applicable. A newer deployment may report a member not in this list." }, "timeline": { "type": "object", "properties": { "gap": { "anyOf": [{ "type": "string", "description": "One of: unwired, unreadable, truncated, not_provisioned. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provisionFailures": { "type": "number" }, "provisionedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "teardownFailures": { "type": "number" }, "teardownsUnconfirmed": { "type": "number" }, "tornDownAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } } } }, "generatedAt": { "type": "number" }, "judges": { "type": "object", "properties": { "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "verdicts": { "type": "array", "items": { "type": "object", "properties": { "bounces": { "type": "number" }, "disposition": { "anyOf": [{ "type": "string", "description": "One of: pass, park, bounce, fail. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "findings": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "severity": { "type": "string", "description": "One of: low, medium, high, critical. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "where": { "type": "string" } } } }, "maxBounces": { "type": "number" }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "modelPin": { "anyOf": [{ "type": "object", "properties": { "requested": { "type": "string" }, "status": { "type": "string", "description": "One of: applied, overridden, unavailable. A newer deployment may report a member not in this list." } } }, { "type": "null" }] }, "rubricName": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "rubricOverridden": { "type": "boolean" }, "score": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "stepKind": { "type": "string" }, "summary": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } } } } }, "merge": { "type": "object", "properties": { "assessment": { "anyOf": [{ "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outcome": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "presetName": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "reason": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." } } }, "observability": { "type": "object", "properties": { "reportUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "runUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "trajectoryUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } }, "reproduction": { "type": "object", "properties": { "alternativeVerification": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "at": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "attempts": { "type": "number" }, "base": { "anyOf": [{ "type": "object", "properties": { "durationMs": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "exitCode": { "type": "number" }, "outputTail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "type": "boolean" }, "setupFailed": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "timedOut": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] } } }, { "type": "null" }] }, "command": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "final": { "anyOf": [{ "type": "object", "properties": { "durationMs": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "exitCode": { "type": "number" }, "outputTail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "type": "boolean" }, "setupFailed": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "timedOut": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] } } }, { "type": "null" }] }, "maxAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "observation": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "omittedTestPaths": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "reason": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "testPaths": { "type": "array", "items": { "type": "string" } }, "verdict": { "anyOf": [{ "type": "string", "description": "One of: reproduced, inconclusive, declared_infeasible. A newer deployment may report a member not in this list." }, { "type": "null" }] } } }, "requirements": { "type": "object", "properties": { "entries": { "type": "array", "items": { "type": "object", "properties": { "criteriaCount": { "type": "number" }, "detail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "group": { "type": "string" }, "id": { "type": "string" }, "module": { "type": "string" }, "priority": { "type": "string", "description": "One of: must, should, could. A newer deployment may report a member not in this list." }, "state": { "type": "string", "description": "One of: aspirational, established. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "verdict": { "type": "string", "description": "One of: met, not_met, not_covered. A newer deployment may report a member not in this list." } } } }, "met": { "type": "number" }, "notCovered": { "type": "number" }, "notMet": { "type": "number" }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "regressions": { "type": "number" }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "total": { "type": "number" } } }, "run": { "type": "object", "properties": { "blockId": { "type": "string" }, "blockTitle": { "type": "string" }, "executionId": { "type": "string" }, "issues": { "type": "array", "items": { "type": "object", "properties": { "externalId": { "type": "string" }, "source": { "type": "string" }, "title": { "type": "string" }, "url": { "type": "string" } } } }, "pipelineId": { "type": "string" }, "pipelineName": { "type": "string" }, "provider": { "anyOf": [{ "type": "string", "description": "One of: github, gitlab. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "repo": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "startedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "steps": { "type": "array", "items": { "type": "object", "properties": { "agentKind": { "type": "string" }, "index": { "type": "number" }, "model": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "state": { "type": "string" } } } } } }, "scope": { "type": "object", "properties": { "frameId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "ownPullRequest": { "anyOf": [{ "type": "object", "properties": { "number": { "type": "number" }, "repo": { "type": "string" }, "url": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } }, { "type": "null" }] }, "role": { "type": "string", "description": "One of: own, peer. A newer deployment may report a member not in this list." } } }, "tests": { "type": "object", "properties": { "concerns": { "type": "array", "items": { "type": "object", "properties": { "severity": { "type": "string" }, "title": { "type": "string" } } } }, "environment": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "fixerAttempts": { "type": "number" }, "greenlight": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "maxFixerAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "outcomes": { "type": "array", "items": { "type": "object", "properties": { "detail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "name": { "type": "string" }, "status": { "type": "string" } } } }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "summary": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "tested": { "type": "array", "items": { "type": "string" } } } }, "truncations": { "type": "array", "items": { "type": "string" } }, "validation": { "type": "object", "properties": { "at": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "attempts": { "type": "number" }, "commands": { "type": "array", "items": { "type": "object", "properties": { "command": { "type": "string" }, "durationMs": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "exitCode": { "type": "number" }, "label": { "type": "string" }, "outputTail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "type": "boolean" }, "timedOut": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] } } } }, "configUnreadable": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "maxAttempts": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "passed": { "anyOf": [{ "type": "boolean" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: reported, absent. A newer deployment may report a member not in this list." }, "stepKind": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } }, "version": { "type": "number" } } },
845
867
  invoke: (client, args) => client.evidence.getReport(str(args, 'runId')),
846
868
  },
847
869
  {
@@ -915,9 +937,11 @@ export const CAT_FACTORY_TOOL_GROUPS = {
915
937
  'services': 'The workspace\'s board services — the frames tasks are created under.',
916
938
  'tasks': 'A board task\'s whole lifecycle: create, edit, start, stop, retry, watch, delete.',
917
939
  'pipelines': 'The pipelines a task can be started with, and whether each is headless-startable.',
940
+ 'task_types': 'What a task can be created AS in this workspace (the built-in kinds plus the operations the deployment registered), and the fields each one accepts.',
918
941
  'notifications': 'The workspace\'s human-actionable inbox: list, act on, or dismiss a run tail.',
919
942
  'webhook': 'The workspace\'s one outbound endpoint: register, inspect or remove the receiver that notifications, run-lifecycle events and health alerts are pushed to.',
920
943
  'usage': 'The billing period\'s metered budget position and the per-model breakdown behind it.',
944
+ 'me': 'What the calling key is and what it may do — the self-check an integration runs at startup.',
921
945
  'decisions': 'Every way a run stops for a person: approval gates, review and brainstorm loops, forks, judge verdicts, PR review findings, the human-verdict gates, follow-up triage and the interview gates.',
922
946
  'debug': 'A run\'s recorded telemetry: LLM calls, the context each agent was given, the tool calls it made, infra logs.',
923
947
  'evidence': 'What a run proved: the engine\'s verification report and the artifacts it captured, bytes included.',