@cat-factory/mcp-server 0.28.1 → 0.30.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.
|
|
5
|
+
export declare const MCP_SERVER_VERSION = "0.30.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.
|
|
22
|
+
export const MCP_SERVER_VERSION = '0.30.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;AAuHD,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,
|
|
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;AAuHD,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EA8pCtD,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,CAqBpE,CAAA"}
|
package/dist/tools.generated.js
CHANGED
|
@@ -163,7 +163,7 @@ export const CAT_FACTORY_TOOLS = [
|
|
|
163
163
|
readOnly: false,
|
|
164
164
|
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`).',
|
|
165
165
|
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 },
|
|
166
|
-
outputSchema: { "type": "object", "properties": { "description": { "type": "string" }, "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." } } },
|
|
166
|
+
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." } } },
|
|
167
167
|
invoke: (client, args) => client.services.create(args.body),
|
|
168
168
|
},
|
|
169
169
|
{
|
|
@@ -174,9 +174,20 @@ export const CAT_FACTORY_TOOLS = [
|
|
|
174
174
|
readOnly: true,
|
|
175
175
|
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`).',
|
|
176
176
|
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
177
|
-
outputSchema: { "type": "object", "properties": { "services": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string" }, "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." } } } } } },
|
|
177
|
+
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." } } } } } },
|
|
178
178
|
invoke: (client, args) => client.services.list(),
|
|
179
179
|
},
|
|
180
|
+
{
|
|
181
|
+
name: 'services_update',
|
|
182
|
+
title: 'Patch a service, including where its per-run manifests live',
|
|
183
|
+
group: 'services',
|
|
184
|
+
operationId: 'updatePublicService',
|
|
185
|
+
readOnly: false,
|
|
186
|
+
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`).',
|
|
187
|
+
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"] },
|
|
188
|
+
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." } } },
|
|
189
|
+
invoke: (client, args) => client.services.update(str(args, 'serviceId'), args.body),
|
|
190
|
+
},
|
|
180
191
|
{
|
|
181
192
|
name: 'spec_get',
|
|
182
193
|
title: 'Get a service\'s in-repo specification',
|
|
@@ -199,6 +210,28 @@ export const CAT_FACTORY_TOOLS = [
|
|
|
199
210
|
outputSchema: { "type": "object", "properties": { "anchor": { "type": "string", "description": "One of: present, absent, unparsed, not_read. A newer deployment may report a member not in this list." }, "features": { "type": "array", "items": { "type": "object", "properties": { "chars": { "type": "number" }, "content": { "type": "string" }, "group": { "type": "string" }, "module": { "type": "string" }, "path": { "type": "string" }, "totalChars": { "type": "number" }, "truncated": { "type": "boolean" } } } }, "issues": { "type": "array", "items": { "type": "object", "properties": { "dropped": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "kind": { "type": "string", "description": "One of: read_failed, unparsed, partial, unread. A newer deployment may report a member not in this list." }, "path": { "type": "string" } } } }, "provenance": { "anyOf": [{ "type": "object", "properties": { "commit": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "owner": { "type": "string" }, "provider": { "type": "string", "description": "One of: github, gitlab. A newer deployment may report a member not in this list." }, "ref": { "type": "string" }, "repo": { "type": "string" } } }, { "type": "null" }] }, "runId": { "type": "string" }, "spec": { "anyOf": [{ "type": "object", "properties": { "modules": { "type": "array", "items": { "type": "object", "properties": { "groups": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "requirements": { "type": "array", "items": { "type": "object", "properties": { "acceptance": { "type": "array", "items": { "type": "object", "properties": { "given": { "type": "string" }, "id": { "type": "string" }, "outcome": { "type": "string" }, "when": { "type": "string" } } } }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: functional, nonfunctional, constraint. A newer deployment may report a member not in this list." }, "priority": { "type": "string", "description": "One of: must, should, could. A newer deployment may report a member not in this list." }, "sourceBlockIds": { "type": "array", "items": { "type": "string" } }, "state": { "type": "string", "description": "One of: aspirational, established. A newer deployment may report a member not in this list." }, "statement": { "type": "string" }, "title": { "type": "string" } } } }, "rules": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "rationale": { "type": "string" }, "rule": { "type": "string" }, "sourceBlockIds": { "type": "array", "items": { "type": "string" } } } } }, "summary": { "type": "string" } } } }, "name": { "type": "string" }, "summary": { "type": "string" } } } }, "service": { "type": "string" }, "summary": { "type": "string" } } }, { "type": "null" }] }, "truncations": { "type": "array", "items": { "type": "object", "properties": { "section": { "type": "string", "description": "One of: requirements, rules, acceptance, features, issues. A newer deployment may report a member not in this list." }, "shown": { "type": "number" }, "total": { "type": "number" } } } } } },
|
|
200
211
|
invoke: (client, args) => client.spec.getForRun(str(args, 'runId')),
|
|
201
212
|
},
|
|
213
|
+
{
|
|
214
|
+
name: 'repos_bootstrap',
|
|
215
|
+
title: 'Create a repository and adapt it with the bootstrapper agent',
|
|
216
|
+
group: 'repos',
|
|
217
|
+
operationId: 'startPublicRepoBootstrap',
|
|
218
|
+
readOnly: false,
|
|
219
|
+
description: 'Create a repository and adapt it with the bootstrapper agent\n\nCreate a brand-new repository under the account the workspace is connected to, then run the bootstrapper agent in a container to write it against the supplied brief (or to adapt a reference architecture). Answers 201 with a job to poll rather than blocking for the minutes a container takes. The job names the board service frame it materialises, so work can be filed against the service before the repository has finished being written. This is the one act of board setup with no other public counterpart: creating a service takes a repoId, and nothing else here makes one.\n\nCalls `POST /api/v1/repos/bootstrap` (operation `startPublicRepoBootstrap`).',
|
|
220
|
+
inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 2000 }, "instructions": { "type": "string", "maxLength": 8000 }, "private": { "type": "boolean" }, "referenceArchitectureId": { "type": "string", "minLength": 1 }, "repoName": { "type": "string", "minLength": 1, "maxLength": 100 }, "type": { "type": "string", "enum": ["service", "frontend", "library", "document"] } }, "required": ["repoName"], "description": "The request body." } }, "additionalProperties": false, "required": ["body"] },
|
|
221
|
+
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, timeout, agent, job_failed, rejected, companion_rejected, stalled, 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" } } },
|
|
222
|
+
invoke: (client, args) => client.repos.bootstrap(args.body),
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: 'repos_get_bootstrap',
|
|
226
|
+
title: 'Poll one repository bootstrap',
|
|
227
|
+
group: 'repos',
|
|
228
|
+
operationId: 'getPublicRepoBootstrap',
|
|
229
|
+
readOnly: true,
|
|
230
|
+
description: 'Poll one repository bootstrap\n\nRead a bootstrap run’s current state. `failureKind` says whether a retry could plausibly help: a `preflight` refusal (the target repository already has content, nothing is connected) cannot be retried into success, where an `evicted` container can.\n\nCalls `GET /api/v1/repos/bootstrap/{jobId}` (operation `getPublicRepoBootstrap`).',
|
|
231
|
+
inputSchema: { "type": "object", "properties": { "jobId": { "type": "string", "description": "Path parameter `jobId`." } }, "additionalProperties": false, "required": ["jobId"] },
|
|
232
|
+
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, timeout, agent, job_failed, rejected, companion_rejected, stalled, 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" } } },
|
|
233
|
+
invoke: (client, args) => client.repos.getBootstrap(str(args, 'jobId')),
|
|
234
|
+
},
|
|
202
235
|
{
|
|
203
236
|
name: 'repos_list',
|
|
204
237
|
title: 'List the repositories a service can be created against',
|
|
@@ -421,6 +454,61 @@ export const CAT_FACTORY_TOOLS = [
|
|
|
421
454
|
outputSchema: { "type": "object", "properties": { "notifications": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "body": { "type": "string" }, "createdAt": { "type": "number" }, "executionId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "id": { "type": "string" }, "payload": { "anyOf": [{ "type": "object", "properties": { "assessment": { "type": "object", "properties": { "complexity": { "type": "number" }, "impact": { "type": "number" }, "rationale": { "type": "string" }, "risk": { "type": "number" } } }, "budgetAlerts": { "type": "array", "items": { "type": "object", "properties": { "projectedOverrun": { "type": "boolean" }, "threshold": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "tier": { "type": "string", "description": "One of: workspace, account. A newer deployment may report a member not in this list." } } } }, "budgetPeriodStart": { "type": "number" }, "changeClass": { "type": "string", "description": "One of: docs, test, dependency, config, source, schema, unknown. A newer deployment may report a member not in this list." }, "driftAffected": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "reason": { "type": "string", "description": "One of: key-mismatch, corrupt. A newer deployment may report a member not in this list." }, "sealedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "source": { "type": "string" } } } }, "findingCount": { "type": "number" }, "forkCount": { "type": "number" }, "initiativeReason": { "type": "string", "description": "One of: item_blocked, complete, checkpoint. A newer deployment may report a member not in this list." }, "mergeTrackRecordId": { "type": "string" }, "mergedRepos": { "type": "array", "items": { "type": "string" } }, "onCallAssessment": { "type": "object", "properties": { "culpritConfidence": { "type": "number" }, "evidence": { "type": "array", "items": { "type": "string" } }, "rationale": { "type": "string" }, "recommendation": { "type": "string", "description": "One of: revert, hold, monitor. A newer deployment may report a member not in this list." } } }, "pipelineName": { "type": "string" }, "platformAlertFailureKinds": { "type": "array", "items": { "type": "string" } }, "platformAlertTransition": { "type": "number" }, "platformAlerts": { "type": "array", "items": { "type": "string", "description": "One of: failure_rate_high, duration_p99_high, backlog_high, throughput_stalled, failure_kind_dominant, failure_kind_rate_high, sweep_degraded. A newer deployment may report a member not in this list." } }, "platformFailedTotal": { "type": "number" }, "platformFailingRuns": { "type": "array", "items": { "type": "object", "properties": { "blockId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "createdAt": { "type": "number" }, "executionId": { "type": "string" }, "failureKind": { "type": "string" } } } }, "platformWindow": { "type": "string", "description": "One of: 1h, 24h, 7d. A newer deployment may report a member not in this list." }, "prUrl": { "type": "string" }, "releaseSignals": { "type": "array", "items": { "type": "object", "properties": { "detail": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string", "description": "One of: monitor, slo. A newer deployment may report a member not in this list." }, "name": { "type": "string" }, "state": { "type": "string", "description": "One of: ok, warn, alert, no_data. A newer deployment may report a member not in this list." } } } }, "revertUrl": { "type": "string" }, "sliceCount": { "type": "number" }, "targetUserId": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "unmergedRepos": { "type": "array", "items": { "type": "string" } }, "unreachableAreas": { "type": "array", "items": { "type": "string", "description": "One of: ephemeralEnvironments, agentExecutor, binaryStorage. A newer deployment may report a member not in this list." } } } }, { "type": "null" }] }, "resolvedAt": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "severity": { "type": "string", "description": "One of: normal, urgent. A newer deployment may report a member not in this list." }, "status": { "type": "string", "description": "One of: open, acted, dismissed. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "type": { "type": "string", "description": "One of: merge_review, pipeline_complete, ci_failed, test_failed, requirement_review, clarity_review, release_regression, decision_required, human_test_ready, visual_confirmation_ready, human_review, followup_pending, fork_decision_pending, judge_review, pr_review_ready, initiative, platform_health, infra_unreachable, budget_paused, budget_threshold, key_drift, merge_tag_request. A newer deployment may report a member not in this list." } } } } } },
|
|
422
455
|
invoke: (client, args) => client.notifications.list(),
|
|
423
456
|
},
|
|
457
|
+
{
|
|
458
|
+
name: 'environments_connect',
|
|
459
|
+
title: 'Connect the workspace to the cluster its environments deploy onto',
|
|
460
|
+
group: 'environments',
|
|
461
|
+
operationId: 'connectPublicEnvironment',
|
|
462
|
+
readOnly: false,
|
|
463
|
+
description: 'Connect the workspace to the cluster its environments deploy onto\n\nBind environment provisioning to a Kubernetes cluster: the apiserver, how its TLS is verified, the namespace template, and how an environment URL is derived once manifests are applied. The secret bundle authenticating the connection is write-only; the response reports which secret KEYS were stored and never their values. Idempotent, so re-connecting replaces rather than accumulating.\n\nCalls `POST /api/v1/environments/connections` (operation `connectPublicEnvironment`).',
|
|
464
|
+
inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "connection": { "anyOf": [{ "type": "object", "properties": { "engine": { "const": "kubernetes" }, "kubernetes": { "type": "object", "properties": { "annotations": { "type": "object", "additionalProperties": { "type": "string" } }, "apiServerUrl": { "type": "string", "maxLength": 500 }, "caCertPem": { "type": "string" }, "defaultTtlMs": { "type": "number", "minimum": 60000 }, "imageTemplate": { "type": "string", "maxLength": 500 }, "insecureSkipTlsVerify": { "type": "boolean" }, "label": { "type": "string", "minLength": 1, "maxLength": 120 }, "labels": { "type": "object", "additionalProperties": { "type": "string" } }, "namespaceTemplate": { "type": "string", "minLength": 1, "maxLength": 200 }, "url": { "anyOf": [{ "type": "object", "properties": { "hostTemplate": { "type": "string", "minLength": 1, "maxLength": 500 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "ingressTemplate" } }, "required": ["hostTemplate", "source"] }, { "type": "object", "properties": { "ingressName": { "type": "string", "minLength": 1 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "ingressStatus" } }, "required": ["source"] }, { "type": "object", "properties": { "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "serviceName": { "type": "string", "minLength": 1 }, "source": { "const": "serviceStatus" } }, "required": ["serviceName", "source"] }, { "type": "object", "properties": { "gatewayName": { "type": "string", "minLength": 1 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "gatewayStatus" } }, "required": ["source"] }, { "type": "object", "properties": { "httpRouteName": { "type": "string", "minLength": 1 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "httpRouteStatus" } }, "required": ["source"] }], "description": "Discriminated by `source` (ingressTemplate | ingressStatus | serviceStatus | gatewayStatus | httpRouteStatus)." } }, "required": ["apiServerUrl", "label", "url"] } }, "required": ["engine", "kubernetes"] }], "description": "Discriminated by `engine` (kubernetes)." }, "secrets": { "type": "object", "additionalProperties": { "type": "string" } } }, "required": ["connection", "secrets"], "description": "The request body." } }, "additionalProperties": false, "required": ["body"] },
|
|
465
|
+
outputSchema: { "type": "object", "properties": { "apiServerUrl": { "type": "string" }, "engine": { "type": "string" }, "label": { "type": "string" }, "provisionType": { "type": "string" }, "secretKeys": { "type": "array", "items": { "type": "string" } } } },
|
|
466
|
+
invoke: (client, args) => client.environments.connect(args.body),
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
name: 'environments_test_connection',
|
|
470
|
+
title: 'Probe a candidate cluster connection without saving it',
|
|
471
|
+
group: 'environments',
|
|
472
|
+
operationId: 'testPublicEnvironmentConnection',
|
|
473
|
+
readOnly: false,
|
|
474
|
+
description: 'Probe a candidate cluster connection without saving it\n\nReach the apiserver with the supplied credentials and report what came back, persisting nothing. Worth a call of its own because the alternative is discovering an unreachable cluster or an expired token on the deploy step of a run that has already paid for a design pass and an implementation. A cluster that refuses the credential is an ANSWER, so it is a 200 carrying `ok: false` rather than an error.\n\nCalls `POST /api/v1/environments/connections/test` (operation `testPublicEnvironmentConnection`).',
|
|
475
|
+
inputSchema: { "type": "object", "properties": { "body": { "type": "object", "properties": { "connection": { "anyOf": [{ "type": "object", "properties": { "engine": { "const": "kubernetes" }, "kubernetes": { "type": "object", "properties": { "annotations": { "type": "object", "additionalProperties": { "type": "string" } }, "apiServerUrl": { "type": "string", "maxLength": 500 }, "caCertPem": { "type": "string" }, "defaultTtlMs": { "type": "number", "minimum": 60000 }, "imageTemplate": { "type": "string", "maxLength": 500 }, "insecureSkipTlsVerify": { "type": "boolean" }, "label": { "type": "string", "minLength": 1, "maxLength": 120 }, "labels": { "type": "object", "additionalProperties": { "type": "string" } }, "namespaceTemplate": { "type": "string", "minLength": 1, "maxLength": 200 }, "url": { "anyOf": [{ "type": "object", "properties": { "hostTemplate": { "type": "string", "minLength": 1, "maxLength": 500 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "ingressTemplate" } }, "required": ["hostTemplate", "source"] }, { "type": "object", "properties": { "ingressName": { "type": "string", "minLength": 1 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "ingressStatus" } }, "required": ["source"] }, { "type": "object", "properties": { "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "serviceName": { "type": "string", "minLength": 1 }, "source": { "const": "serviceStatus" } }, "required": ["serviceName", "source"] }, { "type": "object", "properties": { "gatewayName": { "type": "string", "minLength": 1 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "gatewayStatus" } }, "required": ["source"] }, { "type": "object", "properties": { "httpRouteName": { "type": "string", "minLength": 1 }, "scheme": { "type": "string", "enum": ["http", "https"] }, "source": { "const": "httpRouteStatus" } }, "required": ["source"] }], "description": "Discriminated by `source` (ingressTemplate | ingressStatus | serviceStatus | gatewayStatus | httpRouteStatus)." } }, "required": ["apiServerUrl", "label", "url"] } }, "required": ["engine", "kubernetes"] }], "description": "Discriminated by `engine` (kubernetes)." }, "secrets": { "type": "object", "additionalProperties": { "type": "string" } } }, "required": ["connection"], "description": "The request body." } }, "additionalProperties": false, "required": ["body"] },
|
|
476
|
+
outputSchema: { "type": "object", "properties": { "message": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "ok": { "type": "boolean" } } },
|
|
477
|
+
invoke: (client, args) => client.environments.testConnection(args.body),
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
name: 'models_list',
|
|
481
|
+
title: 'List the models a run in this workspace could dispatch to',
|
|
482
|
+
group: 'models',
|
|
483
|
+
operationId: 'listPublicWiredModels',
|
|
484
|
+
readOnly: true,
|
|
485
|
+
description: 'List the models a run in this workspace could dispatch to\n\nThe workspace’s model catalog with the two flags that decide whether an agent step can run at all: `available`, and `policyBlocked` for a model that is configured but refused by the account’s model-family policy. Those two need OPPOSITE fixes, which is why they are separate: everything blocked by policy is already configured, so adding another provider key changes nothing.\n\nCalls `GET /api/v1/models` (operation `listPublicWiredModels`).',
|
|
486
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
487
|
+
outputSchema: { "type": "object", "properties": { "excludesUserScopedModels": { "type": "boolean" }, "models": { "type": "array", "items": { "type": "object", "properties": { "available": { "type": "boolean" }, "label": { "type": "string" }, "modelId": { "type": "string" }, "policyBlocked": { "type": "boolean" }, "provider": { "type": "string" } } } } } },
|
|
488
|
+
invoke: (client, args) => client.models.list(),
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
name: 'vcs_get_connection',
|
|
492
|
+
title: 'Read the workspace’s source-control connection and what it may do',
|
|
493
|
+
group: 'vcs',
|
|
494
|
+
operationId: 'getPublicVcsConnection',
|
|
495
|
+
readOnly: true,
|
|
496
|
+
description: 'Read the workspace’s source-control connection and what it may do\n\nThe connected account, how the workspace authenticates to it, and the two permissions that decide whether an automated flow can complete: whether the platform may create repositories, and whether it may write workflow files. Both are enforced by the provider at push time, so a caller that cannot read them discovers a missing workflow permission as a repository that bootstrapped and then failed to gain its CI workflow. Provider-neutral: a GitLab-connected workspace answers here too. `connection` is null when nothing is connected, which is a state rather than an error.\n\nCalls `GET /api/v1/vcs/connection` (operation `getPublicVcsConnection`).',
|
|
497
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
498
|
+
outputSchema: { "type": "object", "properties": { "connection": { "anyOf": [{ "type": "object", "properties": { "accountLogin": { "type": "string" }, "canCreateRepos": { "type": "boolean" }, "canManageWorkflows": { "type": "boolean" }, "method": { "type": "string", "description": "One of: app, pat. A newer deployment may report a member not in this list." }, "provider": { "type": "string", "description": "One of: github, gitlab. A newer deployment may report a member not in this list." } } }, { "type": "null" }] } } },
|
|
499
|
+
invoke: (client, args) => client.vcs.getConnection(),
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
name: 'merge_presets_list',
|
|
503
|
+
title: 'List the workspace’s merge-threshold presets',
|
|
504
|
+
group: 'merge_presets',
|
|
505
|
+
operationId: 'listPublicMergePresets',
|
|
506
|
+
readOnly: true,
|
|
507
|
+
description: 'List the workspace’s merge-threshold presets\n\nThe preset library, including which row is the workspace default that a task pinning none resolves. `autoMergeEnabled` is the master switch that decides whether a run can land its pull request without a person; `dryRunRoles` names the roles whose runs the preset forces into dry-run mode, which is the difference between “this preset merges” and “this preset merges for everyone except one role”.\n\nCalls `GET /api/v1/merge-presets` (operation `listPublicMergePresets`).',
|
|
508
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
509
|
+
outputSchema: { "type": "object", "properties": { "presets": { "type": "array", "items": { "type": "object", "properties": { "autoMergeEnabled": { "type": "boolean" }, "ciMaxAttempts": { "type": "number" }, "dryRunRoles": { "type": "array", "items": { "type": "string", "description": "One of: admin, member, viewer. A newer deployment may report a member not in this list." } }, "isDefault": { "type": "boolean" }, "name": { "type": "string" }, "presetId": { "type": "string" }, "submissionRestrictedRoles": { "type": "array", "items": { "type": "string", "description": "One of: admin, member, viewer. A newer deployment may report a member not in this list." } } } } } } },
|
|
510
|
+
invoke: (client, args) => client.mergePresets.list(),
|
|
511
|
+
},
|
|
424
512
|
{
|
|
425
513
|
name: 'webhook_delete',
|
|
426
514
|
title: 'Remove the outbound webhook',
|
|
@@ -1113,7 +1201,7 @@ export const CAT_FACTORY_TOOLS = [
|
|
|
1113
1201
|
readOnly: true,
|
|
1114
1202
|
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`).',
|
|
1115
1203
|
inputSchema: { "type": "object", "properties": { "runId": { "type": "string", "description": "Path parameter `runId`." } }, "additionalProperties": false, "required": ["runId"] },
|
|
1116
|
-
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" }] } } }, "context": { "type": "object", "properties": { "documents": { "type": "array", "items": { "type": "object", "properties": { "freshness": { "description": "Discriminated by `status` (confirmed | not-applicable | unconfirmed). A newer deployment may report a variant not in this list." }, "movedDuringRun": { "type": "boolean" }, "origin": { "type": "string", "description": "One of: confluence, notion, github, figma, zeplin, linear, upload. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "url": { "anyOf": [{ "type": "string" }, { "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." } } }, "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, retained, 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" }, "unmatchedVerdicts": { "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" } } },
|
|
1204
|
+
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" }] } } }, "context": { "type": "object", "properties": { "documents": { "type": "array", "items": { "type": "object", "properties": { "freshness": { "description": "Discriminated by `status` (confirmed | not-applicable | unconfirmed). A newer deployment may report a variant not in this list." }, "movedDuringRun": { "type": "boolean" }, "origin": { "type": "string", "description": "One of: confluence, notion, github, figma, zeplin, linear, upload. A newer deployment may report a member not in this list." }, "title": { "type": "string" }, "url": { "anyOf": [{ "type": "string" }, { "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." } } }, "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, retained, 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" }, "unmatchedVerdicts": { "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" }] }, "frameIds": { "type": "array", "items": { "type": "string" } }, "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" } } },
|
|
1117
1205
|
invoke: (client, args) => client.evidence.getReport(str(args, 'runId')),
|
|
1118
1206
|
},
|
|
1119
1207
|
{
|
|
@@ -1228,13 +1316,17 @@ export const CAT_FACTORY_OMITTED_OPERATIONS = [
|
|
|
1228
1316
|
/** One line per resource group, for the server's instructions. */
|
|
1229
1317
|
export const CAT_FACTORY_TOOL_GROUPS = {
|
|
1230
1318
|
'jobs': 'Headless jobs (a public, inline pipeline run against a brief): start, poll or stream one.',
|
|
1231
|
-
'services': 'The workspace\'s board services, the frames tasks are created under: list them,
|
|
1319
|
+
'services': 'The workspace\'s board services, the frames tasks are created under: list them, create one (optionally backed by a repository), or patch one, including declaring where the manifests for its per-run environments are read from.',
|
|
1232
1320
|
'spec': 'A service\'s in-repo specification: the structured requirement tree (modules → feature groups → requirements, with their acceptance criteria and domain rules), the Gherkin rendered from it, and the branch and commit the read describes. Read-only; the requirement ids are the join key onto a run\'s report and outcome.',
|
|
1233
|
-
'repos': 'The repositories this workspace can back a service with, and which service each already backs
|
|
1321
|
+
'repos': 'The repositories this workspace can back a service with, and which service each already backs (the discovery half of service creation), plus creating a brand-new one: a bootstrap writes the repository with an agent and reports the board service it materialises.',
|
|
1234
1322
|
'tasks': 'A board task\'s whole lifecycle: create, edit, start, stop, retry, watch, delete, plus the two relationships that outlive a create: the tasks it waits for, and the requirements documents it is built against.',
|
|
1235
1323
|
'pipelines': 'The pipelines a task can be started with, and whether each is headless-startable.',
|
|
1236
1324
|
'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.',
|
|
1237
1325
|
'notifications': 'The workspace\'s human-actionable inbox: list, act on, or dismiss a run tail.',
|
|
1326
|
+
'environments': 'The cluster this workspace provisions per-run environments onto: probe a candidate connection without saving it, or bind one. The credential is write-only, so a read reports which secret keys are stored and never their values.',
|
|
1327
|
+
'models': 'The models a run in this workspace could actually dispatch to, and why an unavailable one is unavailable: unconfigured, or refused by the account model-family policy. Those two need opposite fixes.',
|
|
1328
|
+
'vcs': 'The workspace\'s source-control connection: which account it talks to, how it authenticates, and whether it may create repositories and write workflow files. Both permissions are enforced by the provider at push time, so reading them beats discovering one missing halfway through an automated setup.',
|
|
1329
|
+
'merge_presets': 'The merge-threshold presets a task can resolve, including which is the workspace default: what decides whether a run can land its pull request without a person.',
|
|
1238
1330
|
'webhook': 'The workspace\'s outbound endpoints: register, inspect or remove the receivers that notifications, run-lifecycle events and health alerts are pushed to. The unnamed calls address the `default` endpoint; the named ones let an integration enroll its own receiver, with its own signing secret and filters, beside whatever else is registered.',
|
|
1239
1331
|
'usage': 'The workspace\'s money, two ways: the billing period\'s metered budget position with the per-model breakdown behind it, and spend over a window sliced by the dimension a budget is kept against (a repository, a tracker ticket, one run).',
|
|
1240
1332
|
'me': 'What the calling key is and what it may do — the self-check an integration runs at startup.',
|