Add collaboration action contracts (#12359)
## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work > - Agents collaborate through discovery, delegation, dependencies, and governed approvals > - These optional operations need stable contracts before any run may discover them > - The core action contracts are already isolated in the lower stack > - This pull request adds the 13 collaboration and governance action definitions > - It does not grant claims or bind production services > - The benefit is a reviewable contract layer for later run-scoped authorization ## Linked Issues or Issue Description **Subsystem affected** packages/paperclip-runner protocol action contracts **Problem or motivation** Optional collaboration operations need one provider-neutral definition for policy metadata, documentation, live and scenario schemas, and canonical examples. **Proposed solution** Add one immutable module for each discovery, delegation, dependency, and governance action. Add a collaboration aggregate and validate all examples with JSON Schema. **Alternatives considered** These contracts could land with executable authorization. That would make contract review depend on runtime policy and server service bindings. **Roadmap alignment** This supports the existing experimental Paperclip Runner rollout. It does not make any optional operation discoverable or invocable. ## What Changed - Add 13 collaboration and governance action definitions. - Add immutable policy, schema, documentation, and example data. - Add a collaboration-only aggregate. - Validate every action example against its declared schema. ## Verification - `pnpm --filter @paperclipai/paperclip-runner test:typescript` - `pnpm --filter @paperclipai/paperclip-runner typecheck:typescript` - `pnpm -r typecheck` - `pnpm build` - The branch changes 15 files relative to its declared base. ## Risks Low production risk. The declarations do not grant claims or contain executable service bindings. Tests require optional placement, immutable metadata, stable identities, and schema-valid examples. > For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and discuss it in `#dev` before opening the PR. Feature PRs that overlap with planned core work may need to be redirected — check the roadmap first. See `CONTRIBUTING.md`. ## Model Used OpenAI Codex, `gpt-5`, with agentic reasoning, tool use, and code execution. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either linked an existing public issue or described the issue in-PR - [x] I have not referenced internal or instance-local Paperclip issues or links - [x] My branch name describes the change and contains no internal Paperclip ticket id - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] All Paperclip CI gates are green - [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge
This commit is contained in:
parent
08b5d6bd9b
commit
4eb32d7532
|
|
@ -0,0 +1,76 @@
|
|||
import Ajv2020 from "ajv/dist/2020.js";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { PAPERCLIP_COLLABORATION_PROTOCOL_ACTIONS } from "./collaboration.js";
|
||||
|
||||
describe("collaboration Paperclip protocol action contracts", () => {
|
||||
const ajv = new Ajv2020({ allErrors: true, allowUnionTypes: true, strict: false });
|
||||
|
||||
it.each(PAPERCLIP_COLLABORATION_PROTOCOL_ACTIONS.map((action) => [action.id, action] as const))(
|
||||
"%s has immutable metadata and schema-valid examples",
|
||||
(operationId, action) => {
|
||||
expect(action.canonical.operationId).toBe(operationId);
|
||||
expect(action.canonical.placement).toBe("optional_agent_tool");
|
||||
expect(action.examples.call.operationId).toBe(operationId);
|
||||
expect(action.examples.success.operationId).toBe(operationId);
|
||||
expect(Object.isFrozen(action)).toBe(true);
|
||||
expect(Object.isFrozen(action.canonical)).toBe(true);
|
||||
|
||||
expect(action.live !== null || action.scenario !== null).toBe(true);
|
||||
|
||||
if (action.live !== null) {
|
||||
expect(
|
||||
ajv.validate(action.live.descriptor.inputSchema, action.examples.call.input),
|
||||
JSON.stringify(ajv.errors),
|
||||
).toBe(true);
|
||||
expect(
|
||||
ajv.validate(action.live.descriptor.outputSchema, action.examples.success.result),
|
||||
JSON.stringify(ajv.errors),
|
||||
).toBe(true);
|
||||
}
|
||||
|
||||
if (action.scenario !== null) {
|
||||
const scenarioProperties = action.scenario.descriptor.inputSchema.properties ?? {};
|
||||
const callEntries = Object.entries(action.examples.call.input);
|
||||
const outOfBandKeys = callEntries
|
||||
.map(([key]) => key)
|
||||
.filter((key) => !(key in scenarioProperties));
|
||||
// Scenario mutation idempotency is carried by the invocation envelope,
|
||||
// not the operation input. No other example field may be omitted.
|
||||
expect(outOfBandKeys).toEqual(
|
||||
"idempotencyKey" in action.examples.call.input ? ["idempotencyKey"] : [],
|
||||
);
|
||||
const scenarioInput = Object.fromEntries(
|
||||
callEntries.filter(([key]) => key !== "idempotencyKey"),
|
||||
);
|
||||
const scenarioOutput = action.live === null
|
||||
? action.examples.success.result
|
||||
: {
|
||||
schema: "paperclip.capability.tool-result.v1",
|
||||
ok: true,
|
||||
operationId,
|
||||
operationResultId: "example-result",
|
||||
value: action.examples.success.result,
|
||||
commandResult: null,
|
||||
authorization: {},
|
||||
};
|
||||
expect(scenarioOutput.operationId).toBe(operationId);
|
||||
|
||||
expect(
|
||||
ajv.validate(action.scenario.descriptor.inputSchema, scenarioInput),
|
||||
JSON.stringify(ajv.errors),
|
||||
).toBe(true);
|
||||
expect(
|
||||
ajv.validate(action.scenario.descriptor.outputSchema, scenarioOutput),
|
||||
JSON.stringify(ajv.errors),
|
||||
).toBe(true);
|
||||
expect(
|
||||
ajv.validate(action.scenario.descriptor.outputSchema, {
|
||||
...scenarioOutput,
|
||||
operationId: `${operationId}_mismatch`,
|
||||
}),
|
||||
).toBe(false);
|
||||
}
|
||||
},
|
||||
);
|
||||
});
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
import { commentOnApprovalAction } from "./comment-on-approval.js";
|
||||
import { createTaskAction } from "./create-task.js";
|
||||
import { decideApprovalAction } from "./decide-approval.js";
|
||||
import { getAgentAction } from "./get-agent.js";
|
||||
import { getApprovalAction } from "./get-approval.js";
|
||||
import { getApprovalContextAction } from "./get-approval-context.js";
|
||||
import { listAgentsAction } from "./list-agents.js";
|
||||
import { listApprovalsAction } from "./list-approvals.js";
|
||||
import { listGoalsAction } from "./list-goals.js";
|
||||
import { listProjectsAction } from "./list-projects.js";
|
||||
import { requestApprovalAction } from "./request-approval.js";
|
||||
import { searchTasksAction } from "./search-tasks.js";
|
||||
import { setDependenciesAction } from "./set-dependencies.js";
|
||||
import { deepFreezeProtocolAction } from "./freeze.js";
|
||||
|
||||
/** Optional discovery, delegation, dependency, and governance actions. */
|
||||
export const PAPERCLIP_COLLABORATION_PROTOCOL_ACTIONS = deepFreezeProtocolAction([
|
||||
commentOnApprovalAction,
|
||||
createTaskAction,
|
||||
decideApprovalAction,
|
||||
getAgentAction,
|
||||
getApprovalAction,
|
||||
getApprovalContextAction,
|
||||
listAgentsAction,
|
||||
listApprovalsAction,
|
||||
listGoalsAction,
|
||||
listProjectsAction,
|
||||
requestApprovalAction,
|
||||
searchTasksAction,
|
||||
setDependenciesAction,
|
||||
] as const);
|
||||
|
|
@ -0,0 +1,237 @@
|
|||
/** Canonical definition and documentation for `comment_on_approval`. */
|
||||
export const commentOnApprovalAction = {
|
||||
"id": "comment_on_approval",
|
||||
"canonical": {
|
||||
"operationId": "comment_on_approval",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:comment"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "governance",
|
||||
"idempotency": "required",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "approval lifecycle plus governed-wait continuation and audit events",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": []
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Comment on approval",
|
||||
"description": "Add a durable comment to a mock approval.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "comment_on_approval",
|
||||
"input": {
|
||||
"idempotencyKey": "example",
|
||||
"approvalId": "example",
|
||||
"body": "example"
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "comment_on_approval",
|
||||
"result": {
|
||||
"commandId": "example",
|
||||
"disposition": "applied",
|
||||
"stateRevision": 1,
|
||||
"entityRefs": [
|
||||
"example"
|
||||
],
|
||||
"scheduledWakeIds": [
|
||||
"example"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 25,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "comment_on_approval",
|
||||
"version": 1,
|
||||
"title": "Comment on approval",
|
||||
"description": "Add a durable comment to a mock approval.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:comment"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"idempotencyKey": {
|
||||
"type": "string",
|
||||
"description": "Caller-stable retry key.",
|
||||
"minLength": 1,
|
||||
"maxLength": 240
|
||||
},
|
||||
"approvalId": {
|
||||
"type": "string",
|
||||
"description": "Mock approval id.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"body": {
|
||||
"type": "string",
|
||||
"description": "Approval comment.",
|
||||
"minLength": 1,
|
||||
"maxLength": 20000
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"idempotencyKey",
|
||||
"approvalId",
|
||||
"body"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"commandId": {
|
||||
"type": "string",
|
||||
"description": "Stable mock command identifier.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"disposition": {
|
||||
"enum": [
|
||||
"applied",
|
||||
"duplicate"
|
||||
]
|
||||
},
|
||||
"stateRevision": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"entityRefs": {
|
||||
"type": "array",
|
||||
"description": "Mock entities affected by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"scheduledWakeIds": {
|
||||
"type": "array",
|
||||
"description": "Wake identifiers scheduled by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"commandId",
|
||||
"disposition",
|
||||
"stateRevision",
|
||||
"entityRefs",
|
||||
"scheduledWakeIds"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 23,
|
||||
"descriptor": {
|
||||
"operationId": "comment_on_approval",
|
||||
"version": 1,
|
||||
"title": "Comment On Approval",
|
||||
"description": "Comment On Approval through the Capability governance capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"approvalId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"body": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"approvalId",
|
||||
"body"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "comment_on_approval"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:comment"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "governance",
|
||||
"idempotency": "required",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "semantic_command",
|
||||
"commandKind": "comment_on_approval"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,289 @@
|
|||
/** Canonical definition and documentation for `create_task`. */
|
||||
export const createTaskAction = {
|
||||
"id": "create_task",
|
||||
"canonical": {
|
||||
"operationId": "create_task",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "delegation_dependencies",
|
||||
"requiredClaims": [
|
||||
"delegation:tasks:create"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "company_write",
|
||||
"idempotency": "required",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "issues.createChild",
|
||||
"prpEvidence": "semantic-operation item event plus company-entity state diff and audit record",
|
||||
"prpBindingStatus": "bound",
|
||||
"legacyAliases": [
|
||||
"mcp:paperclipCreateIssue"
|
||||
]
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Create child task",
|
||||
"description": "Create one durable standard child under the active task.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "create_task",
|
||||
"input": {
|
||||
"idempotencyKey": "example",
|
||||
"title": "example"
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "create_task",
|
||||
"result": {
|
||||
"commandId": "example",
|
||||
"disposition": "applied",
|
||||
"stateRevision": 1,
|
||||
"entityRefs": [
|
||||
"example"
|
||||
],
|
||||
"scheduledWakeIds": [
|
||||
"example"
|
||||
],
|
||||
"task": {
|
||||
"id": "example",
|
||||
"identifier": "EX-2",
|
||||
"parentId": "example-parent",
|
||||
"status": "todo",
|
||||
"assigneeActorId": "example-agent"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 22,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "create_task",
|
||||
"version": 1,
|
||||
"title": "Create child task",
|
||||
"description": "Create one durable standard child under the active task. Use only when a real ownership, parallelism, dependency, review, or lifecycle boundary justifies delegation.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"delegation:tasks:create"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"idempotencyKey": {
|
||||
"type": "string",
|
||||
"description": "Caller-stable retry key.",
|
||||
"minLength": 1,
|
||||
"maxLength": 240
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"description": "Child task title.",
|
||||
"minLength": 1,
|
||||
"maxLength": 500
|
||||
},
|
||||
"description": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
],
|
||||
"description": "Child task description.",
|
||||
"maxLength": 20000
|
||||
},
|
||||
"assigneeActorId": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
],
|
||||
"description": "Optional agent assignee. Omit to assign the current agent.",
|
||||
"maxLength": 20000
|
||||
},
|
||||
"priority": {
|
||||
"enum": [
|
||||
"critical",
|
||||
"high",
|
||||
"medium",
|
||||
"low"
|
||||
]
|
||||
},
|
||||
"blockedByTaskIds": {
|
||||
"type": "array",
|
||||
"description": "Initial blocker task ids.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"idempotencyKey",
|
||||
"title"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"commandId": {
|
||||
"type": "string",
|
||||
"description": "Stable mock command identifier.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"disposition": {
|
||||
"enum": [
|
||||
"applied",
|
||||
"duplicate"
|
||||
]
|
||||
},
|
||||
"stateRevision": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"entityRefs": {
|
||||
"type": "array",
|
||||
"description": "Mock entities affected by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"scheduledWakeIds": {
|
||||
"type": "array",
|
||||
"description": "Wake identifiers scheduled by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"task": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": { "type": "string", "minLength": 1 },
|
||||
"identifier": { "type": ["string", "null"] },
|
||||
"parentId": { "type": "string", "minLength": 1 },
|
||||
"status": { "type": "string", "minLength": 1 },
|
||||
"assigneeActorId": { "type": ["string", "null"] }
|
||||
},
|
||||
"required": ["id", "identifier", "parentId", "status", "assigneeActorId"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"commandId",
|
||||
"disposition",
|
||||
"stateRevision",
|
||||
"entityRefs",
|
||||
"scheduledWakeIds",
|
||||
"task"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 18,
|
||||
"descriptor": {
|
||||
"operationId": "create_task",
|
||||
"version": 1,
|
||||
"title": "Create Task",
|
||||
"description": "Create Task through the Capability delegation dependencies capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"assigneeActorId": {
|
||||
"type": "string"
|
||||
},
|
||||
"priority": {
|
||||
"type": "string"
|
||||
},
|
||||
"blockedByTaskIds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "create_task"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "delegation_dependencies",
|
||||
"requiredClaims": [
|
||||
"delegation:tasks:create"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "company_write",
|
||||
"idempotency": "required",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "semantic_command",
|
||||
"commandKind": "create_task"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,264 @@
|
|||
/** Canonical definition and documentation for `decide_approval`. */
|
||||
export const decideApprovalAction = {
|
||||
"id": "decide_approval",
|
||||
"canonical": {
|
||||
"operationId": "decide_approval",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:decide"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"allowedRoles": [
|
||||
"board",
|
||||
"approver",
|
||||
"security"
|
||||
],
|
||||
"sideEffectClass": "governance",
|
||||
"idempotency": "required",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "approval lifecycle plus governed-wait continuation and audit events",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": []
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Decide approval",
|
||||
"description": "Decide a mock approval as an explicitly authorized approver.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "decide_approval",
|
||||
"input": {
|
||||
"idempotencyKey": "example",
|
||||
"approvalId": "example",
|
||||
"decision": "approved",
|
||||
"note": "example"
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "decide_approval",
|
||||
"result": {
|
||||
"commandId": "example",
|
||||
"disposition": "applied",
|
||||
"stateRevision": 1,
|
||||
"entityRefs": [
|
||||
"example"
|
||||
],
|
||||
"scheduledWakeIds": [
|
||||
"example"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 24,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "decide_approval",
|
||||
"version": 1,
|
||||
"title": "Decide approval",
|
||||
"description": "Decide a mock approval as an explicitly authorized approver.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:decide"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"allowedRoles": [
|
||||
"board",
|
||||
"approver",
|
||||
"security"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"idempotencyKey": {
|
||||
"type": "string",
|
||||
"description": "Caller-stable retry key.",
|
||||
"minLength": 1,
|
||||
"maxLength": 240
|
||||
},
|
||||
"approvalId": {
|
||||
"type": "string",
|
||||
"description": "Mock approval id.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"decision": {
|
||||
"enum": [
|
||||
"approved",
|
||||
"rejected",
|
||||
"cancelled"
|
||||
]
|
||||
},
|
||||
"note": {
|
||||
"type": "string",
|
||||
"description": "Decision note.",
|
||||
"minLength": 1,
|
||||
"maxLength": 20000
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"idempotencyKey",
|
||||
"approvalId",
|
||||
"decision",
|
||||
"note"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"commandId": {
|
||||
"type": "string",
|
||||
"description": "Stable mock command identifier.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"disposition": {
|
||||
"enum": [
|
||||
"applied",
|
||||
"duplicate"
|
||||
]
|
||||
},
|
||||
"stateRevision": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"entityRefs": {
|
||||
"type": "array",
|
||||
"description": "Mock entities affected by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"scheduledWakeIds": {
|
||||
"type": "array",
|
||||
"description": "Wake identifiers scheduled by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"commandId",
|
||||
"disposition",
|
||||
"stateRevision",
|
||||
"entityRefs",
|
||||
"scheduledWakeIds"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 22,
|
||||
"descriptor": {
|
||||
"operationId": "decide_approval",
|
||||
"version": 1,
|
||||
"title": "Decide Approval",
|
||||
"description": "Decide Approval through the Capability governance capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"approvalId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"decision": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"approved",
|
||||
"rejected",
|
||||
"cancelled"
|
||||
]
|
||||
},
|
||||
"note": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"approvalId",
|
||||
"decision",
|
||||
"note"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "decide_approval"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:decide"
|
||||
],
|
||||
"allowedRoles": [
|
||||
"board",
|
||||
"approver",
|
||||
"security"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "governance",
|
||||
"idempotency": "required",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "semantic_command",
|
||||
"commandKind": "decide_approval"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,90 @@
|
|||
/** Canonical definition and documentation for `get_agent`. */
|
||||
export const getAgentAction = {
|
||||
"id": "get_agent",
|
||||
"canonical": {
|
||||
"operationId": "get_agent",
|
||||
"surfaces": [
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": null,
|
||||
"requiredClaims": [
|
||||
"discovery:agents:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": [
|
||||
"mcp:paperclipGetAgent"
|
||||
],
|
||||
"note": "Live-only single-actor read; the scenario suite covers actor discovery through list_agents."
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Get company agent",
|
||||
"description": "Read one redacted mock actor profile.",
|
||||
"note": "Live-only single-actor read; the scenario suite covers actor discovery through list_agents."
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "get_agent",
|
||||
"input": {
|
||||
"actorId": "example"
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "get_agent",
|
||||
"result": {}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 14,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "get_agent",
|
||||
"version": 1,
|
||||
"title": "Get company agent",
|
||||
"description": "Read one redacted mock actor profile.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"discovery:agents:read"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"actorId": {
|
||||
"type": "string",
|
||||
"description": "Mock actor id.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"actorId"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": null
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
/** Canonical definition and documentation for `get_approval_context`. */
|
||||
export const getApprovalContextAction = {
|
||||
"id": "get_approval_context",
|
||||
"canonical": {
|
||||
"operationId": "get_approval_context",
|
||||
"surfaces": [
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": null,
|
||||
"requiredClaims": [
|
||||
"governance:approvals:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": [],
|
||||
"note": "Live-only approval-plus-linked-tasks read; no scenario counterpart."
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Get approval context",
|
||||
"description": "Read one approval, its comments, and linked mock tasks.",
|
||||
"note": "Live-only approval-plus-linked-tasks read; no scenario counterpart."
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "get_approval_context",
|
||||
"input": {
|
||||
"approvalId": "example"
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "get_approval_context",
|
||||
"result": {}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 18,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "get_approval_context",
|
||||
"version": 1,
|
||||
"title": "Get approval context",
|
||||
"description": "Read one approval, its comments, and linked mock tasks.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:read"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"approvalId": {
|
||||
"type": "string",
|
||||
"description": "Mock approval id.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"approvalId"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": null
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
/** Canonical definition and documentation for `get_approval`. */
|
||||
export const getApprovalAction = {
|
||||
"id": "get_approval",
|
||||
"canonical": {
|
||||
"operationId": "get_approval",
|
||||
"surfaces": [
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": null,
|
||||
"requiredClaims": [
|
||||
"governance:approvals:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": [],
|
||||
"note": "Live-only single-approval read; the scenario suite covers approvals through list_approvals."
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Get approval",
|
||||
"description": "Read one mock approval without protected data.",
|
||||
"note": "Live-only single-approval read; the scenario suite covers approvals through list_approvals."
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "get_approval",
|
||||
"input": {
|
||||
"approvalId": "example"
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "get_approval",
|
||||
"result": {}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 17,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "get_approval",
|
||||
"version": 1,
|
||||
"title": "Get approval",
|
||||
"description": "Read one mock approval without protected data.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:read"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"approvalId": {
|
||||
"type": "string",
|
||||
"description": "Mock approval id.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"approvalId"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": null
|
||||
} as const;
|
||||
|
|
@ -94,8 +94,7 @@ export const inspectOperationResultAction = {
|
|||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
"const": "inspect_operation_result"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,145 @@
|
|||
/** Canonical definition and documentation for `list_agents`. */
|
||||
export const listAgentsAction = {
|
||||
"id": "list_agents",
|
||||
"canonical": {
|
||||
"operationId": "list_agents",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:agents:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": [
|
||||
"mcp:paperclipListAgents"
|
||||
]
|
||||
},
|
||||
"documentation": {
|
||||
"title": "List company agents",
|
||||
"description": "List redacted mock actor profiles.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "list_agents",
|
||||
"input": {}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "list_agents",
|
||||
"result": {}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 13,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "list_agents",
|
||||
"version": 1,
|
||||
"title": "List company agents",
|
||||
"description": "List redacted mock actor profiles.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"discovery:agents:read"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 15,
|
||||
"descriptor": {
|
||||
"operationId": "list_agents",
|
||||
"version": 1,
|
||||
"title": "List Agents",
|
||||
"description": "List Agents through the Capability discovery capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "list_agents"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:agents:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "snapshot_read",
|
||||
"projection": "company_actors"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
/** Canonical definition and documentation for `list_approvals`. */
|
||||
export const listApprovalsAction = {
|
||||
"id": "list_approvals",
|
||||
"canonical": {
|
||||
"operationId": "list_approvals",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": []
|
||||
},
|
||||
"documentation": {
|
||||
"title": "List approvals",
|
||||
"description": "List mock approvals in the run company.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "list_approvals",
|
||||
"input": {}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "list_approvals",
|
||||
"result": {}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 16,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "list_approvals",
|
||||
"version": 1,
|
||||
"title": "List approvals",
|
||||
"description": "List mock approvals in the run company.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:read"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 20,
|
||||
"descriptor": {
|
||||
"operationId": "list_approvals",
|
||||
"version": 1,
|
||||
"title": "List Approvals",
|
||||
"description": "List Approvals through the Capability governance capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "list_approvals"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "snapshot_read",
|
||||
"projection": "company_approvals"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
/** Canonical definition and documentation for `list_goals`. */
|
||||
export const listGoalsAction = {
|
||||
"id": "list_goals",
|
||||
"canonical": {
|
||||
"operationId": "list_goals",
|
||||
"surfaces": [
|
||||
"scenario"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:goals:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "scenario_mock",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": [],
|
||||
"note": "Scenario/eval-only discovery via mock extension; no live dispatcher binding yet."
|
||||
},
|
||||
"documentation": {
|
||||
"title": "List Goals",
|
||||
"description": "List Goals through the Capability discovery capability set.",
|
||||
"note": "Scenario/eval-only discovery via mock extension; no live dispatcher binding yet."
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "list_goals",
|
||||
"input": {}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "list_goals",
|
||||
"result": {
|
||||
"schema": "paperclip.capability.tool-result.v1",
|
||||
"ok": true,
|
||||
"operationId": "list_goals",
|
||||
"operationResultId": "example",
|
||||
"value": "example",
|
||||
"commandResult": "example",
|
||||
"authorization": "example"
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": null,
|
||||
"scenario": {
|
||||
"order": 17,
|
||||
"descriptor": {
|
||||
"operationId": "list_goals",
|
||||
"version": 1,
|
||||
"title": "List Goals",
|
||||
"description": "List Goals through the Capability discovery capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "list_goals"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:goals:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "mock_extension",
|
||||
"extension": "discovery.goals"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
/** Canonical definition and documentation for `list_projects`. */
|
||||
export const listProjectsAction = {
|
||||
"id": "list_projects",
|
||||
"canonical": {
|
||||
"operationId": "list_projects",
|
||||
"surfaces": [
|
||||
"scenario"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:projects:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "scenario_mock",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": [],
|
||||
"note": "Scenario/eval-only discovery via mock extension; no live dispatcher binding yet."
|
||||
},
|
||||
"documentation": {
|
||||
"title": "List Projects",
|
||||
"description": "List Projects through the Capability discovery capability set.",
|
||||
"note": "Scenario/eval-only discovery via mock extension; no live dispatcher binding yet."
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "list_projects",
|
||||
"input": {}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "list_projects",
|
||||
"result": {
|
||||
"schema": "paperclip.capability.tool-result.v1",
|
||||
"ok": true,
|
||||
"operationId": "list_projects",
|
||||
"operationResultId": "example",
|
||||
"value": "example",
|
||||
"commandResult": "example",
|
||||
"authorization": "example"
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": null,
|
||||
"scenario": {
|
||||
"order": 16,
|
||||
"descriptor": {
|
||||
"operationId": "list_projects",
|
||||
"version": 1,
|
||||
"title": "List Projects",
|
||||
"description": "List Projects through the Capability discovery capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "list_projects"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:projects:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "mock_extension",
|
||||
"extension": "discovery.projects"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,226 @@
|
|||
/** Canonical definition and documentation for `request_approval`. */
|
||||
export const requestApprovalAction = {
|
||||
"id": "request_approval",
|
||||
"canonical": {
|
||||
"operationId": "request_approval",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:request"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "governance",
|
||||
"idempotency": "required",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "approval lifecycle plus governed-wait continuation and audit events",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": []
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Request approval",
|
||||
"description": "Create a governed mock approval and waiting posture.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "request_approval",
|
||||
"input": {
|
||||
"idempotencyKey": "example",
|
||||
"approvalType": "example",
|
||||
"payload": {}
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "request_approval",
|
||||
"result": {
|
||||
"commandId": "example",
|
||||
"disposition": "applied",
|
||||
"stateRevision": 1,
|
||||
"entityRefs": [
|
||||
"example"
|
||||
],
|
||||
"scheduledWakeIds": [
|
||||
"example"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 23,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "request_approval",
|
||||
"version": 1,
|
||||
"title": "Request approval",
|
||||
"description": "Create a governed mock approval and waiting posture.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:request"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"idempotencyKey": {
|
||||
"type": "string",
|
||||
"description": "Caller-stable retry key.",
|
||||
"minLength": 1,
|
||||
"maxLength": 240
|
||||
},
|
||||
"approvalType": {
|
||||
"type": "string",
|
||||
"description": "Stable approval type.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"idempotencyKey",
|
||||
"approvalType",
|
||||
"payload"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"commandId": {
|
||||
"type": "string",
|
||||
"description": "Stable mock command identifier.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"disposition": {
|
||||
"enum": [
|
||||
"applied",
|
||||
"duplicate"
|
||||
]
|
||||
},
|
||||
"stateRevision": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"entityRefs": {
|
||||
"type": "array",
|
||||
"description": "Mock entities affected by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"scheduledWakeIds": {
|
||||
"type": "array",
|
||||
"description": "Wake identifiers scheduled by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"commandId",
|
||||
"disposition",
|
||||
"stateRevision",
|
||||
"entityRefs",
|
||||
"scheduledWakeIds"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 21,
|
||||
"descriptor": {
|
||||
"operationId": "request_approval",
|
||||
"version": 1,
|
||||
"title": "Request Approval",
|
||||
"description": "Request Approval through the Capability governance capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"approvalType": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"payload": {}
|
||||
},
|
||||
"required": [
|
||||
"approvalType",
|
||||
"payload"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "request_approval"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "governance",
|
||||
"requiredClaims": [
|
||||
"governance:approvals:request"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "governance",
|
||||
"idempotency": "required",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "semantic_command",
|
||||
"commandKind": "request_approval"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,179 @@
|
|||
/** Canonical definition and documentation for `search_tasks`. */
|
||||
export const searchTasksAction = {
|
||||
"id": "search_tasks",
|
||||
"canonical": {
|
||||
"operationId": "search_tasks",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:tasks:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "unbound",
|
||||
"prpEvidence": "read projection surfaced via a tool-result item event; no control-plane state diff",
|
||||
"prpBindingStatus": "audit_pending",
|
||||
"legacyAliases": [
|
||||
"mcp:paperclipListIssues"
|
||||
]
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Search company tasks",
|
||||
"description": "Search mock tasks by text and status within the run company.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "search_tasks",
|
||||
"input": {}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "search_tasks",
|
||||
"result": {}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 15,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "search_tasks",
|
||||
"version": 1,
|
||||
"title": "Search company tasks",
|
||||
"description": "Search mock tasks by text and status within the run company.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"discovery:tasks:read"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"query": {
|
||||
"type": "string",
|
||||
"maxLength": 500
|
||||
},
|
||||
"statuses": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"enum": [
|
||||
"backlog",
|
||||
"todo",
|
||||
"in_progress",
|
||||
"in_review",
|
||||
"done",
|
||||
"blocked",
|
||||
"cancelled"
|
||||
]
|
||||
},
|
||||
"maxItems": 7,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"limit": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 200,
|
||||
"default": 50
|
||||
}
|
||||
},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 14,
|
||||
"descriptor": {
|
||||
"operationId": "search_tasks",
|
||||
"version": 1,
|
||||
"title": "Search Tasks",
|
||||
"description": "Search Tasks through the Capability discovery capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"query": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "search_tasks"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "discovery",
|
||||
"requiredClaims": [
|
||||
"discovery:tasks:read"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"ask",
|
||||
"planning",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "read",
|
||||
"idempotency": "none",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "snapshot_read",
|
||||
"projection": "company_tasks"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
|
|
@ -0,0 +1,227 @@
|
|||
/** Canonical definition and documentation for `set_dependencies`. */
|
||||
export const setDependenciesAction = {
|
||||
"id": "set_dependencies",
|
||||
"canonical": {
|
||||
"operationId": "set_dependencies",
|
||||
"surfaces": [
|
||||
"scenario",
|
||||
"live"
|
||||
],
|
||||
"placement": "optional_agent_tool",
|
||||
"optionalGroup": "delegation_dependencies",
|
||||
"requiredClaims": [
|
||||
"dependencies:write"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "company_write",
|
||||
"idempotency": "required",
|
||||
"disabledByDefault": false,
|
||||
"realBindingStatus": "live_codex",
|
||||
"realServiceBinding": "issues.update.blockedByIssueIds",
|
||||
"prpEvidence": "semantic-operation item event plus company-entity state diff and audit record",
|
||||
"prpBindingStatus": "bound",
|
||||
"legacyAliases": []
|
||||
},
|
||||
"documentation": {
|
||||
"title": "Set task dependencies",
|
||||
"description": "Replace the active task's first-class blocker set.",
|
||||
"note": null
|
||||
},
|
||||
"examples": {
|
||||
"call": {
|
||||
"operationId": "set_dependencies",
|
||||
"input": {
|
||||
"idempotencyKey": "example",
|
||||
"blockedByTaskIds": [
|
||||
"example"
|
||||
]
|
||||
}
|
||||
},
|
||||
"success": {
|
||||
"ok": true,
|
||||
"operationId": "set_dependencies",
|
||||
"result": {
|
||||
"commandId": "example",
|
||||
"disposition": "applied",
|
||||
"stateRevision": 1,
|
||||
"entityRefs": [
|
||||
"example"
|
||||
],
|
||||
"scheduledWakeIds": [
|
||||
"example"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"live": {
|
||||
"order": 21,
|
||||
"descriptor": {
|
||||
"schema": "paperclip.semantic-tool.v1",
|
||||
"operationId": "set_dependencies",
|
||||
"version": 1,
|
||||
"title": "Set task dependencies",
|
||||
"description": "Replace the active task's first-class blocker set.",
|
||||
"exposure": "optional",
|
||||
"requiredClaims": [
|
||||
"dependencies:write"
|
||||
],
|
||||
"allowedModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"idempotencyKey": {
|
||||
"type": "string",
|
||||
"description": "Caller-stable retry key.",
|
||||
"minLength": 1,
|
||||
"maxLength": 240
|
||||
},
|
||||
"blockedByTaskIds": {
|
||||
"type": "array",
|
||||
"description": "Replacement blocker task ids.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"idempotencyKey",
|
||||
"blockedByTaskIds"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"commandId": {
|
||||
"type": "string",
|
||||
"description": "Stable mock command identifier.",
|
||||
"minLength": 1,
|
||||
"maxLength": 200
|
||||
},
|
||||
"disposition": {
|
||||
"enum": [
|
||||
"applied",
|
||||
"duplicate"
|
||||
]
|
||||
},
|
||||
"stateRevision": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"entityRefs": {
|
||||
"type": "array",
|
||||
"description": "Mock entities affected by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"scheduledWakeIds": {
|
||||
"type": "array",
|
||||
"description": "Wake identifiers scheduled by the operation.",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"maxItems": 200,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"commandId",
|
||||
"disposition",
|
||||
"stateRevision",
|
||||
"entityRefs",
|
||||
"scheduledWakeIds"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"order": 19,
|
||||
"descriptor": {
|
||||
"operationId": "set_dependencies",
|
||||
"version": 1,
|
||||
"title": "Set Dependencies",
|
||||
"description": "Set Dependencies through the Capability delegation dependencies capability set.",
|
||||
"inputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"blockedByTaskIds": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"blockedByTaskIds"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"outputSchema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"paperclip.capability.tool-result.v1"
|
||||
]
|
||||
},
|
||||
"ok": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"operationId": {
|
||||
"const": "set_dependencies"
|
||||
},
|
||||
"operationResultId": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"value": {},
|
||||
"commandResult": {},
|
||||
"authorization": {}
|
||||
},
|
||||
"required": [
|
||||
"schema",
|
||||
"ok",
|
||||
"operationId",
|
||||
"operationResultId",
|
||||
"value",
|
||||
"commandResult",
|
||||
"authorization"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"disposition": "optional_agent_tool",
|
||||
"optionalGroup": "delegation_dependencies",
|
||||
"requiredClaims": [
|
||||
"dependencies:write"
|
||||
],
|
||||
"taskModes": [
|
||||
"standard",
|
||||
"skill_test"
|
||||
],
|
||||
"sideEffectClass": "company_write",
|
||||
"idempotency": "required",
|
||||
"redaction": [],
|
||||
"mockCommandMapping": {
|
||||
"kind": "semantic_command",
|
||||
"commandKind": "set_dependencies"
|
||||
}
|
||||
}
|
||||
}
|
||||
} as const;
|
||||
Loading…
Reference in New Issue