@cat-factory/mcp-server 0.41.0 → 0.43.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.
package/dist/server.d.ts CHANGED
@@ -2,7 +2,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { type CatFactoryMcpOptions } from './config.ts';
3
3
  import { type CatFactoryTool } from './tools.generated.ts';
4
4
  /** The npm version, stamped into the SDK's `User-Agent` so a deployment can attribute calls. */
5
- export declare const MCP_SERVER_VERSION = "0.41.0";
5
+ export declare const MCP_SERVER_VERSION = "0.43.0";
6
6
  /** The name this server reports to a host. */
7
7
  export declare const MCP_SERVER_NAME = "cat-factory";
8
8
  export interface CatFactoryMcpServer {
package/dist/server.js CHANGED
@@ -19,7 +19,7 @@ import { CAT_FACTORY_TOOLS } from './tools.generated.js';
19
19
  // has been round-tripped through a second type system, and every gap in that conversion becomes a
20
20
  // tool that misdescribes its own input.
21
21
  /** The npm version, stamped into the SDK's `User-Agent` so a deployment can attribute calls. */
22
- export const MCP_SERVER_VERSION = '0.41.0';
22
+ export const MCP_SERVER_VERSION = '0.43.0';
23
23
  /** The name this server reports to a host. */
24
24
  export const MCP_SERVER_NAME = 'cat-factory';
25
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tools.generated.d.ts","sourceRoot":"","sources":["../src/tools.generated.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAA;IACnB,8FAA8F;IAC9F,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACnC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC5B,oBAAoB,EAAE,KAAK,CAAA;KAC5B,CAAA;IACD;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,CAAA;IACD,kDAAkD;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACtF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AA0HD,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAguCtD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,8BAA8B,EAAE,SAAS,0BAA0B,EAmB/E,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBpE,CAAA"}
1
+ {"version":3,"file":"tools.generated.d.ts","sourceRoot":"","sources":["../src/tools.generated.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAA;IACnB,8FAA8F;IAC9F,QAAQ,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACnC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAC5B,oBAAoB,EAAE,KAAK,CAAA;KAC5B,CAAA;IACD;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,QAAQ,CAAA;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACpC,CAAA;IACD,kDAAkD;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACtF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAuID,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAuxCtD,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,8BAA8B,EAAE,SAAS,0BAA0B,EAmB/E,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBpE,CAAA"}
@@ -48,6 +48,10 @@ const QUERY_JOBS_LIST = [
48
48
  { name: 'status', required: false },
49
49
  { name: 'since', required: false },
50
50
  ];
51
+ const QUERY_REPOS_GET_FILE = [
52
+ { name: 'path', required: true },
53
+ { name: 'ref', required: false },
54
+ ];
51
55
  const QUERY_REPOS_LIST_AVAILABLE = [
52
56
  { name: 'q', required: false },
53
57
  ];
@@ -111,6 +115,15 @@ const QUERY_DEBUG_LIST_TOOL_CALLS = [
111
115
  { name: 'order', required: false },
112
116
  { name: 'outcome', required: false },
113
117
  ];
118
+ const QUERY_KAIZEN_LIST_ENTRIES = [
119
+ { name: 'limit', required: false },
120
+ { name: 'cursor', required: false },
121
+ { name: 'acknowledged', required: false },
122
+ { name: 'settled', required: false },
123
+ { name: 'status', required: false },
124
+ { name: 'agentKind', required: false },
125
+ { name: 'since', required: false },
126
+ ];
114
127
  /** Every `/api/v1` operation this facade exposes as a tool, in resource-group order. */
115
128
  export const CAT_FACTORY_TOOLS = [
116
129
  {
@@ -166,7 +179,7 @@ export const CAT_FACTORY_TOOLS = [
166
179
  readOnly: false,
167
180
  description: 'Create a service\n\nCreate a board service, optionally backed by a repository from `GET /api/v1/repos`. The repository link is what makes the service runnable: execution resolves a task’s repository by walking up to its enclosing service frame, so a service with none holds tasks and can start none of them. A whole-repo repository that already backs a service in this account is MOUNTED rather than duplicated; a monorepo service must name its subdirectory. The board lays the service out itself: this surface publishes no coordinates. Requires an `admin` key.\n\nCalls `POST /api/v1/services` (operation `createPublicService`).',
168
181
  inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "repo": { "type": "object", "properties": { "directory": { "type": "string", "maxLength": 400 }, "monorepo": { "type": "boolean" }, "repoId": { "type": "number" } }, "required": ["repoId"] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 }, "type": { "type": "string", "enum": ["service", "frontend", "library", "document"] } }, "description": "The request body." } }, "additionalProperties": false },
169
- outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes). A newer deployment may report a variant not in this list." }, "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." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
182
+ outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes | custom). A newer deployment may report a variant not in this list." }, "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." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
170
183
  invoke: (client, args) => client.services.create(args.body),
171
184
  },
172
185
  {
@@ -188,7 +201,7 @@ export const CAT_FACTORY_TOOLS = [
188
201
  readOnly: true,
189
202
  description: 'List the workspace\'s services\n\nList the board service frames in the key’s workspace, so a caller can discover the serviceId to create/list tasks under.\n\nCalls `GET /api/v1/services` (operation `listPublicServices`).',
190
203
  inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
191
- outputSchema: { "type": "object", "properties": { "services": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes). A newer deployment may report a variant not in this list." }, "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." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } } } } },
204
+ outputSchema: { "type": "object", "properties": { "services": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes | custom). A newer deployment may report a variant not in this list." }, "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." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } } } } },
192
205
  invoke: (client, args) => client.services.list(),
193
206
  },
194
207
  {
@@ -198,8 +211,8 @@ export const CAT_FACTORY_TOOLS = [
198
211
  operationId: 'updatePublicService',
199
212
  readOnly: false,
200
213
  description: 'Patch a service, including where its per-run manifests live\n\nChange a service’s authored fields, and declare its `provisioning`: where the manifests for a per-run environment are read from. That second half is what a connected cluster alone cannot supply, because the platform keeps “which cluster” (one per workspace) apart from “which manifests” (one set per service). An omitted `provisioning` leaves the stored one alone rather than clearing it. Board coordinates are deliberately absent, as they are on service creation.\n\nCalls `PATCH /api/v1/services/{serviceId}` (operation `updatePublicService`).',
201
- inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "provisioning": { "anyOf": [{ "type": "object", "properties": { "manifestSource": { "anyOf": [{ "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "type": { "const": "colocated" } }, "required": ["path", "type"] }, { "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "ref": { "type": "string", "minLength": 1 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "repo": { "type": "string" }, "type": { "const": "separate" } }, "required": ["path", "repo", "type"] }], "description": "Discriminated by `type` (colocated | separate)." }, "type": { "const": "kubernetes" } }, "required": ["manifestSource", "type"] }], "description": "Discriminated by `type` (kubernetes)." }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId"] },
202
- outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes). A newer deployment may report a variant not in this list." }, "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." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
214
+ inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "provisioning": { "anyOf": [{ "type": "object", "properties": { "manifestSource": { "anyOf": [{ "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "type": { "const": "colocated" } }, "required": ["path", "type"] }, { "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "maxLength": 500 }, "ref": { "type": "string", "minLength": 1 }, "renderer": { "type": "string", "enum": ["raw", "kustomize"] }, "repo": { "type": "string" }, "type": { "const": "separate" } }, "required": ["path", "repo", "type"] }], "description": "Discriminated by `type` (colocated | separate)." }, "type": { "const": "kubernetes" } }, "required": ["manifestSource", "type"] }, { "type": "object", "properties": { "manifestId": { "type": "string", "minLength": 1, "maxLength": 64 }, "manifestPath": { "type": "string", "maxLength": 500 }, "type": { "const": "custom" } }, "required": ["manifestId", "type"] }], "description": "Discriminated by `type` (kubernetes | custom)." }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["serviceId"] },
215
+ outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "provisioning": { "description": "Discriminated by `type` (kubernetes | custom). A newer deployment may report a variant not in this list." }, "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." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: frontend, service, library, document, api, database, queue, integration, external, environment. A newer deployment may report a member not in this list." } } },
203
216
  invoke: (client, args) => client.services.update(str(args, 'serviceId'), args.body),
204
217
  },
205
218
  {
@@ -246,6 +259,17 @@ export const CAT_FACTORY_TOOLS = [
246
259
  outputSchema: { "type": "object", "properties": { "createdAt": { "type": "number" }, "error": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "failureDetail": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "failureHint": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "failureKind": { "anyOf": [{ "type": "string", "description": "One of: preflight, dispatch, environment, evicted, harness_shutdown, timeout, agent, job_failed, rejected, companion_rejected, stalled, state_unreadable, cancelled, unknown. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "jobId": { "type": "string" }, "progress": { "anyOf": [{ "type": "object", "properties": { "completed": { "type": "number" }, "inProgress": { "type": "number" }, "items": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "status": { "type": "string", "description": "One of: pending, in_progress, completed. A newer deployment may report a member not in this list." } } } }, "total": { "type": "number" } } }, { "type": "null" }] }, "repoName": { "type": "string" }, "repoOwner": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "repoUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "status": { "type": "string", "description": "One of: pending, running, succeeded, failed. A newer deployment may report a member not in this list." }, "updatedAt": { "type": "number" } } },
247
260
  invoke: (client, args) => client.repos.getBootstrap(str(args, 'jobId')),
248
261
  },
262
+ {
263
+ name: 'repos_get_file',
264
+ title: 'Read one file out of a linked repository',
265
+ group: 'repos',
266
+ operationId: 'getPublicRepoFile',
267
+ readOnly: true,
268
+ description: 'Read one file out of a linked repository\n\nRead a single file, decoded as UTF-8, from a repository this workspace has LINKED, at a branch, tag or commit sha (omit `ref` for the default branch; the response says which was used). It exists to answer what a run actually COMMITTED, which nothing else on this surface could: the repos reads list rows and reachability, the service-spec read serves only the `spec/` tree, and everything else was the agent’s own prose, so a caller wanting a real answer had to hold a second source-control credential of its own. `path` is a query parameter rather than the rest of the URL because a repo-relative path contains slashes and an OpenAPI path segment cannot. One file only: there is deliberately no directory listing. A repository this workspace has not adopted is a 404 with `details.reason: repo_not_linked`, a path the ref does not hold is a 404 with `file_not_found`, and a file past the size this read serves is a 422 with `file_too_large` plus its `size` and `limit`: refused rather than truncated, because a shortened answer reads exactly like a shorter file.\n\nCalls `GET /api/v1/repos/{owner}/{name}/contents` (operation `getPublicRepoFile`).',
269
+ inputSchema: { "type": "object", "properties": { "owner": { "type": "string", "description": "Path parameter `owner`." }, "name": { "type": "string", "description": "Path parameter `name`." }, "path": { "type": "string" }, "ref": { "type": "string" } }, "additionalProperties": false, "required": ["owner", "name", "path"] },
270
+ outputSchema: { "type": "object", "properties": { "content": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "string" }, "path": { "type": "string" }, "ref": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "sha": { "type": "string" } } },
271
+ invoke: (client, args) => client.repos.getFile(str(args, 'owner'), str(args, 'name'), pick(args, QUERY_REPOS_GET_FILE)),
272
+ },
249
273
  {
250
274
  name: 'repos_link',
251
275
  title: 'Adopt an existing repository into this workspace',
@@ -287,7 +311,7 @@ export const CAT_FACTORY_TOOLS = [
287
311
  readOnly: false,
288
312
  description: 'Declare that a task waits for another\n\nRecord that this task cannot start until `dependsOnTaskId` is done. Both ends must be tasks in this workspace, and an edge that would close a cycle is refused. Idempotent: an edge that already exists is returned as-is rather than toggled off, so a provisioning integration re-running its own setup converges. Pair it with `autoStartDependents` on the BLOCKER (the task patch) to have the chain run itself.\n\nCalls `POST /api/v1/tasks/{taskId}/dependencies` (operation `addPublicTaskDependency`).',
289
313
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "dependsOnTaskId": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": ["dependsOnTaskId"], "description": "The request body." } }, "additionalProperties": false, "required": ["taskId", "body"] },
290
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
314
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
291
315
  invoke: (client, args) => client.tasks.addDependency(str(args, 'taskId'), args.body),
292
316
  },
293
317
  {
@@ -308,8 +332,8 @@ export const CAT_FACTORY_TOOLS = [
308
332
  operationId: 'createPublicTask',
309
333
  readOnly: false,
310
334
  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`).',
311
- 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" }] } }, "modelPresetId": { "type": "string", "minLength": 1, "maxLength": 120 }, "pipelineId": { "type": "string", "minLength": 1, "maxLength": 120 }, "riskPolicyId": { "type": "string", "minLength": 1, "maxLength": 120 }, "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, gitlab. 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"] },
312
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
335
+ 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" }] } }, "modelPresetId": { "type": "string", "minLength": 1, "maxLength": 120 }, "pipelineId": { "type": "string", "minLength": 1, "maxLength": 120 }, "riskPolicyId": { "type": "string", "minLength": 1, "maxLength": 120 }, "taskType": { "type": "string", "description": "Usually one of: feature, bug, document, spike, review, ralph, media. 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, gitlab. 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"] },
336
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
313
337
  invoke: (client, args) => client.tasks.create(str(args, 'serviceId'), args.body),
314
338
  },
315
339
  {
@@ -341,7 +365,7 @@ export const CAT_FACTORY_TOOLS = [
341
365
  readOnly: true,
342
366
  description: 'Get a task\'s status\n\nRead a task’s current lifecycle status, run progress, run id, and PR URL (once one exists).\n\nCalls `GET /api/v1/tasks/{taskId}` (operation `getPublicTask`).',
343
367
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
344
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
368
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
345
369
  invoke: (client, args) => client.tasks.get(str(args, 'taskId')),
346
370
  },
347
371
  {
@@ -363,7 +387,7 @@ export const CAT_FACTORY_TOOLS = [
363
387
  readOnly: true,
364
388
  description: 'List a service\'s tasks\n\nList every task under a service (the whole subtree — tasks directly under the frame and under its modules).\n\nCalls `GET /api/v1/services/{serviceId}/tasks` (operation `listPublicServiceTasks`).',
365
389
  inputSchema: { "type": "object", "properties": { "serviceId": { "type": "string", "description": "Path parameter `serviceId`." }, "limit": { "type": "integer" }, "cursor": { "type": "string" }, "status": { "type": "string", "enum": ["planned", "ready", "in_progress", "blocked", "pr_ready", "done"] } }, "additionalProperties": false, "required": ["serviceId"] },
366
- outputSchema: { "type": "object", "properties": { "nextCursor": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "tasks": { "type": "array", "items": { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } } } } },
390
+ outputSchema: { "type": "object", "properties": { "nextCursor": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "tasks": { "type": "array", "items": { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } } } } },
367
391
  invoke: (client, args) => client.tasks.listByService(str(args, 'serviceId'), pick(args, QUERY_TASKS_LIST_BY_SERVICE)),
368
392
  },
369
393
  {
@@ -385,7 +409,7 @@ export const CAT_FACTORY_TOOLS = [
385
409
  readOnly: false,
386
410
  description: 'Drop a dependency edge\n\nRemove the ordering between this task and `dependsOnTaskId`. Idempotent: an edge that is not there is a no-op.\n\nCalls `POST /api/v1/tasks/{taskId}/dependencies/remove` (operation `removePublicTaskDependency`).',
387
411
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "dependsOnTaskId": { "type": "string", "minLength": 1, "maxLength": 120 } }, "required": ["dependsOnTaskId"], "description": "The request body." } }, "additionalProperties": false, "required": ["taskId", "body"] },
388
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
412
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
389
413
  invoke: (client, args) => client.tasks.removeDependency(str(args, 'taskId'), args.body),
390
414
  },
391
415
  {
@@ -397,7 +421,7 @@ export const CAT_FACTORY_TOOLS = [
397
421
  hints: { "destructive": true, "idempotent": false },
398
422
  description: 'Retry a task\'s failed run\n\nRetry a task’s failed run. A task on an individual-usage model cannot be retried through the API (no headless personal-credential unlock).\n\nCalls `POST /api/v1/tasks/{taskId}/retry` (operation `retryPublicTask`).',
399
423
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
400
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
424
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
401
425
  invoke: (client, args) => client.tasks.retry(str(args, 'taskId')),
402
426
  },
403
427
  {
@@ -409,7 +433,7 @@ export const CAT_FACTORY_TOOLS = [
409
433
  hints: { "destructive": true, "idempotent": false },
410
434
  description: 'Start (run) a task\n\nStart a task’s pipeline. Uses the request’s pipelineId, else the task’s pinned pipeline. A pipeline that can park on a human decision requires a `decide`-scope key. A task on an individual-usage model cannot be started through the API (no headless personal-credential unlock).\n\nCalls `POST /api/v1/tasks/{taskId}/start` (operation `startPublicTask`).',
411
435
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "pipelineId": { "type": "string", "minLength": 1, "maxLength": 120 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["taskId"] },
412
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
436
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
413
437
  invoke: (client, args) => client.tasks.start(str(args, 'taskId'), args.body),
414
438
  },
415
439
  {
@@ -420,7 +444,7 @@ export const CAT_FACTORY_TOOLS = [
420
444
  readOnly: false,
421
445
  description: 'Stop a task\'s run\n\nStop a task’s in-flight run. Records a `cancelled` terminal state, leaving the run retryable.\n\nCalls `POST /api/v1/tasks/{taskId}/stop` (operation `stopPublicTask`).',
422
446
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." } }, "additionalProperties": false, "required": ["taskId"] },
423
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
447
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
424
448
  invoke: (client, args) => client.tasks.stop(str(args, 'taskId')),
425
449
  },
426
450
  {
@@ -431,7 +455,7 @@ export const CAT_FACTORY_TOOLS = [
431
455
  readOnly: false,
432
456
  description: 'Edit a task\'s inputs\n\nEdit a task’s human-authored inputs before it runs: its title, its description, and `fields`, the per-case values for its own task type (checked against the descriptors `GET /api/v1/task-types` serves). All are optional. `fields` is MERGED over what the task already carries — a key you send is written, a key you omit keeps its stored value — because this API does not serve the bag back. This is what makes an input the pre-dispatch gate refused repairable: supply the value it named, then recheck the parked run.\n\nCalls `PATCH /api/v1/tasks/{taskId}` (operation `updatePublicTask`).',
433
457
  inputSchema: { "type": "object", "properties": { "taskId": { "type": "string", "description": "Path parameter `taskId`." }, "body": { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "description": { "type": "string", "maxLength": 2000 }, "fields": { "type": "object", "additionalProperties": { "anyOf": [{ "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "boolean" }, { "type": "number" }] } }, "modelPresetId": { "type": "string", "minLength": 1, "maxLength": 120 }, "riskPolicyId": { "type": "string", "minLength": 1, "maxLength": 120 }, "title": { "type": "string", "minLength": 1, "maxLength": 200 } }, "description": "The request body." } }, "additionalProperties": false, "required": ["taskId"] },
434
- outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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" } } },
458
+ outputSchema: { "type": "object", "properties": { "autoStartDependents": { "type": "boolean" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "modelPresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "progress": { "type": "number" }, "pullRequestUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "riskPolicyId": { "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, media, recurring. Other values are accepted where the deployment defines them." }, "title": { "type": "string" } } },
435
459
  invoke: (client, args) => client.tasks.update(str(args, 'taskId'), args.body),
436
460
  },
437
461
  {
@@ -501,6 +525,17 @@ export const CAT_FACTORY_TOOLS = [
501
525
  outputSchema: { "type": "object", "properties": { "apiServerUrl": { "type": "string" }, "engine": { "type": "string" }, "label": { "type": "string" }, "provisionType": { "type": "string" }, "secretKeys": { "type": "array", "items": { "type": "string" } } } },
502
526
  invoke: (client, args) => client.environments.connect(args.body),
503
527
  },
528
+ {
529
+ name: 'environments_list_connections',
530
+ title: 'List the environment connections this workspace holds',
531
+ group: 'environments',
532
+ operationId: 'listPublicEnvironmentConnections',
533
+ readOnly: true,
534
+ description: 'List the environment connections this workspace holds\n\nEvery registered environment handler, with the provision type it serves, the engine and backend kind behind it, its endpoint and the secret KEYS it holds, never their values. The read half of the connect call, and the half that was missing: a deployment that registers its handlers programmatically (the documented path for a multi-tenant deployment) had no way for a headless caller to confirm the registration landed, so “the backend accepts our credential” and “this workspace has a handler for that backend” collapsed into one unanswerable question. It reports every engine, including a handler for an environment backend the deployment registered in code, so `engine` and `backendKind` are open strings rather than a fixed set.\n\nCalls `GET /api/v1/environments/connections` (operation `listPublicEnvironmentConnections`).',
535
+ inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
536
+ outputSchema: { "type": "object", "properties": { "connections": { "type": "array", "items": { "type": "object", "properties": { "acceptsManifestId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "backendKind": { "type": "string" }, "connectedAt": { "type": "number" }, "endpoint": { "type": "string" }, "engine": { "type": "string" }, "label": { "type": "string" }, "manifestId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provisionType": { "type": "string" }, "secretKeys": { "type": "array", "items": { "type": "string" } } } } } } },
537
+ invoke: (client, args) => client.environments.listConnections(),
538
+ },
504
539
  {
505
540
  name: 'environments_test_connection',
506
541
  title: 'Probe a candidate cluster connection without saving it',
@@ -1281,7 +1316,7 @@ export const CAT_FACTORY_TOOLS = [
1281
1316
  readOnly: true,
1282
1317
  description: 'List a run\'s captured artifacts\n\nThe binary artifacts the run captured (UI screenshots) plus the reference images they were reviewed against: id, kind, view, content type, exact byte size and content hash. Unpaged: the capture path caps how many one run may store, so the response size is bounded before the request. Fetch the bytes with the blob endpoint.\n\nCalls `GET /api/v1/runs/{runId}/artifacts` (operation `listPublicRunArtifacts`).',
1283
1318
  inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
1284
- outputSchema: { "type": "object", "properties": { "artifacts": { "type": "array", "items": { "type": "object", "properties": { "artifactId": { "type": "string" }, "byteSize": { "type": "number" }, "contentType": { "type": "string" }, "createdAt": { "type": "number" }, "hash": { "type": "string" }, "kind": { "type": "string", "description": "One of: screenshot, reference. A newer deployment may report a member not in this list." }, "scope": { "type": "string", "description": "One of: run, task. A newer deployment may report a member not in this list." }, "view": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } } } },
1319
+ outputSchema: { "type": "object", "properties": { "artifacts": { "type": "array", "items": { "type": "object", "properties": { "artifactId": { "type": "string" }, "byteSize": { "type": "number" }, "contentType": { "type": "string" }, "createdAt": { "type": "number" }, "hash": { "type": "string" }, "kind": { "type": "string", "description": "One of: screenshot, reference, asset. A newer deployment may report a member not in this list." }, "scope": { "type": "string", "description": "One of: run, task. A newer deployment may report a member not in this list." }, "view": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } } } } },
1285
1320
  invoke: (client, args) => client.evidence.listArtifacts(str(args, 'runId')),
1286
1321
  },
1287
1322
  {
@@ -1328,6 +1363,39 @@ export const CAT_FACTORY_TOOLS = [
1328
1363
  outputSchema: { "type": "object", "properties": { "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "changedFileCount": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "complexity": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "decision": { "type": "string", "description": "One of: pending_review, auto_merged, human_merged, external_merged, rejected. A newer deployment may report a member not in this list." }, "impact": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "mergePresetId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "mergePresetName": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "prNumber": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "prUrl": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "provider": { "anyOf": [{ "type": "string", "description": "One of: github, gitlab. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "recordId": { "type": "string" }, "repoId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "reviewEffort": { "anyOf": [{ "type": "string", "description": "One of: none, minor, major. A newer deployment may report a member not in this list." }, { "type": "null" }] }, "risk": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "runId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "taggedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "taskId": { "type": "string" } } },
1329
1364
  invoke: (client, args) => client.mergeRecords.tagEffort(str(args, 'recordId'), args.body),
1330
1365
  },
1366
+ {
1367
+ name: 'kaizen_acknowledge_entry',
1368
+ title: 'Acknowledge a Kaizen entry',
1369
+ group: 'kaizen',
1370
+ operationId: 'acknowledgePublicKaizenEntry',
1371
+ readOnly: false,
1372
+ description: 'Acknowledge a Kaizen entry\n\nRecord that this entry has been triaged, optionally with a note (a ticket id, why it was dismissed), and take it out of the `acknowledged=false` backlog. Send `{"acknowledged": false}` to undo. A `write` key, not an `admin` one: acknowledging starts nothing and merges nothing. Acknowledging twice is a no-op that returns the row unchanged, so `acknowledgedAt` keeps naming the FIRST triage rather than the last retry. An entry whose grading has not settled yet is refused `409` with `details.reason: "kaizen_entry_not_settled"` (there are no recommendations to have read), and an unknown id is `404` with `details.reason: "kaizen_entry_not_found"`.\n\nCalls `POST /api/v1/kaizen/entries/{entryId}/acknowledge` (operation `acknowledgePublicKaizenEntry`).',
1373
+ inputSchema: { "type": "object", "properties": { "entryId": { "type": "string", "description": "Path parameter `entryId`." }, "body": { "type": "object", "properties": { "acknowledged": { "type": "boolean" }, "note": { "anyOf": [{ "type": "string" }, { "type": "null" }] } }, "description": "The request body." } }, "additionalProperties": false, "required": ["entryId"] },
1374
+ outputSchema: { "type": "object", "properties": { "acknowledged": { "type": "boolean" }, "acknowledgedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "acknowledgedBy": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "acknowledgementNote": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "agentKind": { "type": "string" }, "combo": { "anyOf": [{ "type": "object", "properties": { "consecutiveHighGrades": { "type": "number" }, "verified": { "type": "boolean" }, "verifiedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } }, { "type": "null" }] }, "comboKey": { "type": "string" }, "createdAt": { "type": "number" }, "entryId": { "type": "string" }, "error": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "grade": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "graderModel": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "model": { "type": "string" }, "promptVersion": { "type": "number" }, "recommendations": { "type": "array", "items": { "type": "string" } }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: scheduled, running, complete, failed. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "summary": { "type": "string" }, "task": { "anyOf": [{ "type": "object", "properties": { "serviceId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceTitle": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "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." }, "title": { "type": "string" } } }, { "type": "null" }] }, "taskId": { "type": "string" }, "updatedAt": { "type": "number" } } },
1375
+ invoke: (client, args) => client.kaizen.acknowledgeEntry(str(args, 'entryId'), args.body),
1376
+ },
1377
+ {
1378
+ name: 'kaizen_get_entry',
1379
+ title: 'Get one Kaizen entry',
1380
+ group: 'kaizen',
1381
+ operationId: 'getPublicKaizenEntry',
1382
+ readOnly: true,
1383
+ description: 'Get one Kaizen entry\n\nThe same entry addressed by its own id, for a caller that stored one (on a ticket it filed, say) and wants the current grade, recommendations and triage state without re-paging the list. Scoped to the calling key’s workspace.\n\nCalls `GET /api/v1/kaizen/entries/{entryId}` (operation `getPublicKaizenEntry`).',
1384
+ inputSchema: { "type": "object", "properties": { "entryId": { "type": "string", "description": "Path parameter `entryId`." } }, "additionalProperties": false, "required": ["entryId"] },
1385
+ outputSchema: { "type": "object", "properties": { "acknowledged": { "type": "boolean" }, "acknowledgedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "acknowledgedBy": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "acknowledgementNote": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "agentKind": { "type": "string" }, "combo": { "anyOf": [{ "type": "object", "properties": { "consecutiveHighGrades": { "type": "number" }, "verified": { "type": "boolean" }, "verifiedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } }, { "type": "null" }] }, "comboKey": { "type": "string" }, "createdAt": { "type": "number" }, "entryId": { "type": "string" }, "error": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "grade": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "graderModel": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "model": { "type": "string" }, "promptVersion": { "type": "number" }, "recommendations": { "type": "array", "items": { "type": "string" } }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: scheduled, running, complete, failed. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "summary": { "type": "string" }, "task": { "anyOf": [{ "type": "object", "properties": { "serviceId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceTitle": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "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." }, "title": { "type": "string" } } }, { "type": "null" }] }, "taskId": { "type": "string" }, "updatedAt": { "type": "number" } } },
1386
+ invoke: (client, args) => client.kaizen.getEntry(str(args, 'entryId')),
1387
+ },
1388
+ {
1389
+ name: 'kaizen_list_entries',
1390
+ title: 'List the workspace\'s Kaizen entries',
1391
+ group: 'kaizen',
1392
+ operationId: 'listPublicKaizenEntries',
1393
+ readOnly: true,
1394
+ description: 'List the workspace\'s Kaizen entries\n\nEvery post-run grading the workspace has produced, newest first and keyset-paginated, with no run or task named up front. A Kaizen entry is the platform grading its OWN work: after a run finishes, each completed agent step is judged on how smooth or chaotic the interaction was (1..5) and what would make it better, keyed by the `(agentKind, model, promptVersion)` combo it ran. Each entry carries the context a follow-up needs (the run and step it came from, the agent kind, the resolved model, the prompt version, the board task and its service, and where the combo stands in its verification streak), so acting on one does not mean opening the app first. Filter with `acknowledged=false&settled=true` for the drainable backlog (every entry in it is one the acknowledge route accepts; `acknowledged=false` alone also returns gradings still in flight, which that route refuses with `409`), `settled=true` for everything the grader has finished with whatever it concluded (a `failed` grading names a deployment problem, such as prompt recording being off, and is worth acting on), `status` for one exact grading state, `agentKind` for one role, and `since` for an incremental sweep. A task deleted since the run reports `task: null` rather than a blank title.\n\nCalls `GET /api/v1/kaizen/entries` (operation `listPublicKaizenEntries`).',
1395
+ inputSchema: { "type": "object", "properties": { "limit": { "type": "integer" }, "cursor": { "type": "string" }, "acknowledged": { "type": "string", "enum": ["true", "false"] }, "settled": { "type": "string", "enum": ["true", "false"] }, "status": { "type": "string", "enum": ["scheduled", "running", "complete", "failed"] }, "agentKind": { "type": "string" }, "since": { "type": "integer" } }, "additionalProperties": false },
1396
+ outputSchema: { "type": "object", "properties": { "entries": { "type": "array", "items": { "type": "object", "properties": { "acknowledged": { "type": "boolean" }, "acknowledgedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "acknowledgedBy": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "acknowledgementNote": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "agentKind": { "type": "string" }, "combo": { "anyOf": [{ "type": "object", "properties": { "consecutiveHighGrades": { "type": "number" }, "verified": { "type": "boolean" }, "verifiedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] } } }, { "type": "null" }] }, "comboKey": { "type": "string" }, "createdAt": { "type": "number" }, "entryId": { "type": "string" }, "error": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "grade": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "graderModel": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "model": { "type": "string" }, "promptVersion": { "type": "number" }, "recommendations": { "type": "array", "items": { "type": "string" } }, "runId": { "type": "string" }, "status": { "type": "string", "description": "One of: scheduled, running, complete, failed. A newer deployment may report a member not in this list." }, "stepIndex": { "type": "number" }, "summary": { "type": "string" }, "task": { "anyOf": [{ "type": "object", "properties": { "serviceId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "serviceTitle": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "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." }, "title": { "type": "string" } } }, { "type": "null" }] }, "taskId": { "type": "string" }, "updatedAt": { "type": "number" } } } }, "nextCursor": { "anyOf": [{ "type": "string" }, { "type": "null" }] } } },
1397
+ invoke: (client, args) => client.kaizen.listEntries(pick(args, QUERY_KAIZEN_LIST_ENTRIES)),
1398
+ },
1331
1399
  {
1332
1400
  name: 'keys_create',
1333
1401
  title: 'Provision an API key',
@@ -1405,6 +1473,7 @@ export const CAT_FACTORY_TOOL_GROUPS = {
1405
1473
  'debug': 'A run\'s recorded telemetry: LLM calls, the context each agent was given, the tool calls it made, infra logs, and the whole model-activity bundle as one document.',
1406
1474
  'evidence': 'What a run proved: the engine\'s verification report, the outcome summary behind it, and the artifacts it captured, bytes included.',
1407
1475
  'merge_records': 'The evidence behind the auto-merge policy: what kind of change each merged run made, what the merger scored it, what happened to the pull request, and how much review a human actually spent, plus the per-class rollups that justify widening a rule. Reading takes a `read` key and recording an effort tag a `write` one: neither merges anything.',
1476
+ 'kaizen': 'The platform\'s own improvement backlog: every post-run grading of an agent step, with the agent kind, model, prompt version and run it came from, what the grader recommended changing, and whether anybody has acted on it yet. Reading takes a `read` key and acknowledging one a `write` key: neither runs anything.',
1408
1477
  'keys': 'The workspace\'s own API keys: provision one headlessly, list them, revoke one (and what it minted).',
1409
1478
  };
1410
1479
  //# sourceMappingURL=tools.generated.js.map