diff --git a/.changeset/custom-chatkit-providers.md b/.changeset/custom-chatkit-providers.md new file mode 100644 index 00000000..64c2b80d --- /dev/null +++ b/.changeset/custom-chatkit-providers.md @@ -0,0 +1,7 @@ +--- +"@trytilde/sdk": minor +"@trytilde/sdk-vercel-ai-node": minor +"@trytilde/api-client": minor +--- + +Support customer-hosted ChatKit providers with signed Fetch handlers, scoped runtime clients, contextual session tools, rich delivery, and Linq/AgentMail examples. Deploy compatible API support before using the new methods. diff --git a/docs/adrs/0043-custom-chatkit-provider-sdk.md b/docs/adrs/0043-custom-chatkit-provider-sdk.md new file mode 100644 index 00000000..62c296e6 --- /dev/null +++ b/docs/adrs/0043-custom-chatkit-provider-sdk.md @@ -0,0 +1,40 @@ +# ADR-0043: Framework-neutral ChatKit provider authoring + +Status: Accepted + +## In brief + +- Export authoring and runtime helpers from a dedicated ChatKit provider subpath. +- Separate administrative, connection-runtime, and end-user credentials. +- Keep platform behavior in TypeScript and canonical accounting in Tilde. + +## Context + +A custom provider must express setup, ingestion, rich sends, identities, contextual +session tools, and recovery without requiring a specific agent framework or a +separately provisioned toolkit for each action. + +This extends [SDK ownership](0030-tilde-sdk-and-cli-ownership.md) and preserves +[org/runtime identity separation](0042-org-runtime-identities.md). Platform +extensions follow [ADR-0038](0038-metadata-is-extension-data.md). + +## Decision + +Use standard Fetch Request/Response handlers for signed discovery and versioned +operations. Validate declared schemas/capabilities and keep server-bound execution +context outside model arguments. Provide connection-scoped ingestion, attachment, +conversation, and participant methods. Expose administrative wrappers separately. + +Use stable execution/delivery IDs and explicit applied/absent/uncertain +reconciliation. Private rendering and recipient options flow through canonical +send preparation; reference email adapters redact BCC from public outputs. +Streaming protocol adapters submit canonical turns and relay cursor-based events +using the requesting user's authenticated client. Vercel AI adaptation is optional. + +## Consequences + +The core provider entry point has no Vercel AI requirement. Linq and AgentMail +serve as executable reference adapters, while hosts own deployment, secret +storage, webhook verification, and platform recovery. Backend support must ship +before an SDK release exposes these methods to customers. The example Node host +uses durable encrypted SQLite locally; Tilde's canonical database remains Postgres. diff --git a/docs/updates/154.md b/docs/updates/154.md new file mode 100644 index 00000000..5f2725dd --- /dev/null +++ b/docs/updates/154.md @@ -0,0 +1,62 @@ +# Customer-hosted ChatKit SDK + +PR: https://github.com/trytilde/dispatch/pull/154 (draft) + +## Intent of the change + +Bring the custom ChatKit provider implementation into Dispatch's supported SDK +packages so customers can host complete transports and contextual tools using +`@trytilde/sdk`, with no dependency on the archived Harness SDK repository. + +## Architecture changes + +See [ADR-0043](../adrs/0043-custom-chatkit-provider-sdk.md), extending ADR-0030, +ADR-0038, and ADR-0042. Tilde owns authorization and canonical durable execution; +customer backends own platform behavior. SDK, connection-runtime, and user-client +credentials remain separate. + +```mermaid +flowchart LR + API[Tilde API] -->|signed operations| Provider[Customer TypeScript provider] + Provider --> Platform[Platform API] + Provider -->|scoped normalized events| API + Caller -->|user credentials| Stream[Canonical session operations and SSE] +``` + +## Summarized changes + +- Port provider authoring/runtime, definition and connection management, rich + delivery, work diagnostics, and canonical session streams to `packages/sdk`. +- Integrate dynamically discovered custom tools into the existing Vercel AI + `context.session.tools` object and export `sessionProviderTools`. +- Preserve newer room, run, identity, and client APIs. Add the Linq/AgentMail + reference implementations and streaming example under the owning SDK package. +- Regenerate contracts from API PR https://github.com/trytilde/api/pull/276. + Companion public docs: https://github.com/trytilde/docs/pull/36. +- Metadata classification: provider-specific external thread/message details are + interpreted only by the Linq or AgentMail reference adapter. The SDK forwards + opaque extension objects; canonical routing, credentials, leases, and execution + IDs use the signed typed contract, not metadata. +- No OpenBot client surface or fork-owned configuration is changed. No new + external service or global tool install is required; the existing Node 24 + toolchain is used and Ajv reuses the repository's current dependency version. +- Validation on Dispatch `fcee72c`: `openbot sdk refresh` regenerated the client, + validated 732 operations, built all SDK packages, and passed all 316 SDK tests against the final rebased API contract: + core SDK 150, Vercel Node 152, and other SDK packages 14. `openbot sdk validate` + passed package/export validation; the final changed SDK packages were rebuilt. +- Focused typechecking, example typechecking, formatting, and lint pass. Existing + no-base-to-string warnings remain in older portions of the webhook test file. + Full OpenBot application check/build and browser/Electron e2e were not run + because this changes server SDK packages rather than application surfaces. + +## Critical to apply + +yes + +Deploy the additive API and upgrade workers before releasing the SDK or enabling +custom providers. Consumers use `@trytilde/sdk/chatkit-provider` and configure +backend signing keys, per-connection runtime tokens, and durable backend state. +The reference host's setup guide covers the manually provisioned AgentMail +webhook. No publication, deployment, or live-platform/browser e2e is included. + +Record refreshed after final wallet-preserving contract refresh: 2026-09-07T19:51:48+00:00. diff --git a/packages/api-client/specs/openapi.cloud.json b/packages/api-client/specs/openapi.cloud.json index 6f002e2c..c81a9b82 100644 --- a/packages/api-client/specs/openapi.cloud.json +++ b/packages/api-client/specs/openapi.cloud.json @@ -12449,16 +12449,14 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/identities/link": { - "post": { + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}": { + "get": { "tags": [ - "chatkit", - "identity", - "v1" + "chatkit" ], - "summary": "Link a member's attested address", - "description": "A team admin links an address to a team member without a challenge. Only an address the member has already verified with an identity provider is accepted.", - "operationId": "link-team-identity", + "summary": "Get custom ChatKit connection", + "description": "Returns the definition reference and public connection configuration.", + "operationId": "chatkit-get-custom-connection", "parameters": [ { "name": "team_id", @@ -12467,25 +12465,23 @@ "schema": { "type": "string" } + }, + { + "name": "connection_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LinkTeamIdentityRequestInner" - } - } - }, - "required": true - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/VerifiedIdentityLink" + "$ref": "#/components/schemas/CustomConnectionInfo" } } } @@ -12499,18 +12495,58 @@ } } } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/messages": { + "post": { + "tags": [ + "chatkit" + ], + "summary": "Ingest custom provider message", + "description": "Accepts a normalized external event using only the owning connection runtime token.", + "operationId": "chatkit-ingest-custom-provider-message", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "connection_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomInboundMessage" + } + } }, - "403": { + "required": true + }, + "responses": { + "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CustomIngressReceipt" } } } }, - "404": { + "400": { "description": "", "content": { "application/json": { @@ -12520,95 +12556,58 @@ } } } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/chatkit/inbox": { - "get": { + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime": { + "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "List inboxes", - "description": "List all configured inboxes with pagination and optional filtering by type", - "operationId": "list-inboxes", + "summary": "Custom provider runtime operation", + "description": "Manage only conversations and attachments bound to the authenticated connection.", + "operationId": "chatkit-custom-provider-runtime", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "page_size", - "in": "query", + "name": "connection_id", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, "schema": { "type": "string" - }, - "style": "form" - }, - { - "name": "inbox_type", - "in": "query", - "required": false, - "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/InboxType" - } - ] } } ], - "responses": { - "200": { - "description": "List inboxes", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InboxPaginatedResponse" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomRuntimeCommand" } } }, - "400": { - "description": "Bad Request", + "required": true + }, + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CustomRuntimeResponse" } } } }, - "500": { - "description": "Internal Server Error", + "400": { + "description": "", "content": { "application/json": { "schema": { @@ -12617,55 +12616,42 @@ } } } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/chatkit/messages/converted-cache": { + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime-token/rotate": { "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Cache converted ChatKit message representations", - "description": "Persists JSON-safe agent-facing representations for ChatKit messages.", - "operationId": "chatkit-cache-converted-messages", + "summary": "Rotate custom connection credentials", + "description": "Immediately revokes the old token and returns its replacement once.", + "operationId": "chatkit-rotate-custom-connection-credentials", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "connection_id", + "in": "path", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CacheConvertedMessagesRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Cache converted ChatKit message representations", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CacheConvertedMessagesResponse" + "$ref": "#/components/schemas/CustomConnectionCredentials" } } } @@ -12679,43 +12665,78 @@ } } } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work": { + "get": { + "tags": [ + "chatkit" + ], + "summary": "Inspect durable normalized-event and cleanup work without exposing payloads.", + "operationId": "chatkit-list-custom-connection-work", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, - "500": { + { + "name": "connection_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CustomConnectionWorkPaginatedResponse" } } } - } - }, - "security": [ - {}, - { - "api_key": [] }, - { - "bearer_token": [] + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } } - ] + } } }, - "/api/v1/team/{team_id}/chatkit/messages/converted-cache/hydrate": { + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work/retry": { "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Hydrate converted ChatKit message representations", - "description": "Loads JSON-safe cached agent-facing representations for ChatKit messages.", - "operationId": "chatkit-hydrate-converted-messages", + "summary": "Retry a dead-letter item with its original deduplication identity.", + "operationId": "chatkit-retry-custom-connection-work", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "connection_id", + "in": "path", "required": true, "schema": { "type": "string" @@ -12726,7 +12747,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HydrateConvertedMessagesRequest" + "$ref": "#/components/schemas/RetryConnectionWork" } } }, @@ -12734,26 +12755,16 @@ }, "responses": { "200": { - "description": "Hydrate converted ChatKit message representations", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HydrateConvertedMessagesResponse" - } - } - } - }, - "400": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/DeleteInboxResponse" } } } }, - "500": { + "400": { "description": "", "content": { "application/json": { @@ -12763,27 +12774,17 @@ } } } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals": { + "/api/v1/team/{team_id}/chatkit/custom-providers": { "get": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "List safe extension proposals", - "description": "Lists redacted proposal review snapshots for the authorized team.", - "operationId": "chatkit-list-self-extension-proposals", + "summary": "List custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-list-custom-provider", "parameters": [ { "name": "team_id", @@ -12792,31 +12793,6 @@ "schema": { "type": "string" } - }, - { - "name": "status", - "in": "query", - "required": false, - "schema": { - "$ref": "#/components/schemas/SelfExtensionStatus" - } - }, - { - "name": "requesting_agent_id", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } } ], "responses": { @@ -12825,10 +12801,17 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SelfExtensionProposal" - } + "$ref": "#/components/schemas/CustomProviderList" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -12837,12 +12820,11 @@ }, "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Propose a safe agent extension", - "description": "Creates a durable, server-validated proposal with a redacted diff, permission and credential requirements, cost and egress implications, affected audiences, and exact rollback plan. The requesting agent cannot approve or execute it.", - "operationId": "chatkit-propose-self-extension", + "summary": "Create custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-create-custom-provider", "parameters": [ { "name": "team_id", @@ -12857,19 +12839,29 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSelfExtensionProposalInner" + "$ref": "#/components/schemas/CustomProviderRegistrationInput" } } }, "required": true }, "responses": { - "201": { + "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposal" + "$ref": "#/components/schemas/CustomProviderRegistration" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -12877,15 +12869,14 @@ } } }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}": { + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}": { "get": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Inspect a safe extension proposal", - "description": "Returns the complete redacted review document and durable execution receipts.", - "operationId": "chatkit-get-self-extension-proposal", + "summary": "Get custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-get-custom-provider", "parameters": [ { "name": "team_id", @@ -12896,7 +12887,7 @@ } }, { - "name": "proposal_id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -12910,23 +12901,30 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposal" + "$ref": "#/components/schemas/CustomChatKitProvider" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } } - } - }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/approve": { - "post": { + }, + "put": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Approve a safe extension proposal", - "description": "Records an explicit human owner/admin approval and queues durable execution. Agent callers cannot approve.", - "operationId": "chatkit-approve-self-extension-proposal", + "summary": "Update custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-update-custom-provider", "parameters": [ { "name": "team_id", @@ -12937,7 +12935,7 @@ } }, { - "name": "proposal_id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -12945,29 +12943,46 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomProviderRegistrationInput" + } + } + }, + "required": true + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposal" + "$ref": "#/components/schemas/CustomChatKitProvider" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } } - } - }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/cancel": { - "post": { + }, + "delete": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Cancel a safe extension proposal", - "description": "Cancels a pending or approved proposal before execution starts.", - "operationId": "chatkit-cancel-self-extension-proposal", + "summary": "Delete custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-delete-custom-provider", "parameters": [ { "name": "team_id", @@ -12978,7 +12993,7 @@ } }, { - "name": "proposal_id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -12992,7 +13007,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposal" + "$ref": "#/components/schemas/DeleteInboxResponse" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -13000,15 +13025,14 @@ } } }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/decision": { - "post": { + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/connections": { + "get": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Answer a capability-change approval", - "description": "Atomically records an authenticated human Yes/No against the exact proposal hash and generation, completes its linked Human Approval, and queues approved work.", - "operationId": "chatkit-decide-capability-change", + "summary": "List custom ChatKit connections", + "description": "Lists public connection configuration within a single team and definition.", + "operationId": "chatkit-list-custom-connections", "parameters": [ { "name": "team_id", @@ -13019,7 +13043,7 @@ } }, { - "name": "proposal_id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -13027,23 +13051,23 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DecideCapabilityChangeRequest" + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomConnectionInfoPaginatedResponse" + } } } }, - "required": true - }, - "responses": { - "200": { + "400": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposal" + "$ref": "#/components/schemas/Error" } } } @@ -13051,15 +13075,14 @@ } } }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/outputs/claim": { + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/disable": { "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Claim safe extension outputs", - "description": "Returns and consumes encrypted one-time execution values to an explicit human owner/admin reviewer. Agent callers cannot claim outputs.", - "operationId": "chatkit-claim-self-extension-proposal-outputs", + "summary": "Disable custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-disable-custom-provider", "parameters": [ { "name": "team_id", @@ -13070,7 +13093,7 @@ } }, { - "name": "proposal_id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -13084,7 +13107,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposalOutputs" + "$ref": "#/components/schemas/CustomChatKitProvider" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -13092,15 +13125,14 @@ } } }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/reject": { + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/enable": { "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Reject a safe extension proposal", - "description": "Records an explicit human owner/admin rejection without creating resources.", - "operationId": "chatkit-reject-self-extension-proposal", + "summary": "Enable custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-enable-custom-provider", "parameters": [ { "name": "team_id", @@ -13111,7 +13143,7 @@ } }, { - "name": "proposal_id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -13125,7 +13157,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposal" + "$ref": "#/components/schemas/CustomChatKitProvider" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -13133,15 +13175,14 @@ } } }, - "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/rollback": { + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/refresh": { "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Roll back a safe extension proposal", - "description": "Queues durable reverse-order cleanup of only resources recorded as created by this proposal.", - "operationId": "chatkit-rollback-self-extension-proposal", + "summary": "Refresh custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-refresh-custom-provider", "parameters": [ { "name": "team_id", @@ -13152,7 +13193,7 @@ } }, { - "name": "proposal_id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -13166,7 +13207,17 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SelfExtensionProposal" + "$ref": "#/components/schemas/CustomChatKitProvider" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -13174,83 +13225,45 @@ } } }, - "/api/v1/team/{team_id}/chatkit/session": { - "get": { + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/signing-key/rotate": { + "post": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "List sessions", - "description": "List all chat sessions with pagination. Optionally filter by inbox_id to get sessions for a specific inbox.", - "operationId": "list-sessions", + "summary": "Rotate custom ChatKit provider", + "description": "Manage a reusable tenant-scoped ChatKit implementation.", + "operationId": "chatkit-rotate-custom-provider", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "page_size", - "in": "query", - "description": "Number of items to return per page", - "required": false, + "name": "provider_id", + "in": "path", + "required": true, "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "description": "Token for the next page of results", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "inbox_id", - "in": "query", - "description": "Filter sessions by inbox_id (via session_inbox_instance join)", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] + "type": "string" } } ], "responses": { "200": { - "description": "List sessions", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SessionPaginatedResponse" + "$ref": "#/components/schemas/CustomProviderRegistration" } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "", "content": { "application/json": { "schema": { @@ -13259,30 +13272,23 @@ } } } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] - }, + } + } + }, + "/api/v1/team/{team_id}/chatkit/identities/link": { "post": { "tags": [ "chatkit", + "identity", "v1" ], - "summary": "Create session", - "description": "Create a new chat session. Optionally include inbox_instances to register participants.", - "operationId": "create-session", + "summary": "Link a member's attested address", + "description": "A team admin links an address to a team member without a challenge. Only an address the member has already verified with an identity provider is accepted.", + "operationId": "link-team-identity", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -13293,7 +13299,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSessionInner" + "$ref": "#/components/schemas/LinkTeamIdentityRequestInner" } } }, @@ -13301,17 +13307,17 @@ }, "responses": { "200": { - "description": "Create a session", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Session" + "$ref": "#/components/schemas/VerifiedIdentityLink" } } } }, "400": { - "description": "Bad Request", + "description": "", "content": { "application/json": { "schema": { @@ -13320,8 +13326,18 @@ } } }, - "500": { - "description": "Internal Server Error", + "403": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "", "content": { "application/json": { "schema": { @@ -13342,15 +13358,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/upload": { - "post": { + "/api/v1/team/{team_id}/chatkit/inbox": { + "get": { "tags": [ "chatkit", "v1" ], - "summary": "Create attachment upload", - "description": "Create a ChatKit attachment row and return presigned object-store upload and download URLs.", - "operationId": "create-attachment-upload", + "summary": "List inboxes", + "description": "List all configured inboxes with pagination and optional filtering by type", + "operationId": "list-inboxes", "parameters": [ { "name": "team_id", @@ -13362,32 +13378,47 @@ } }, { - "name": "session_id", - "in": "path", - "description": "Session ID", + "name": "page_size", + "in": "query", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "inbox_type", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/InboxType" + } + ] } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAttachmentUploadInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Create attachment upload", + "description": "List inboxes", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateAttachmentUploadResponse" + "$ref": "#/components/schemas/InboxPaginatedResponse" } } } @@ -13424,15 +13455,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}": { - "delete": { + "/api/v1/team/{team_id}/chatkit/messages/converted-cache": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Delete attachment", - "description": "Mark a ChatKit attachment deleted and delete its backing object best-effort.", - "operationId": "delete-attachment", + "summary": "Cache converted ChatKit message representations", + "description": "Persists JSON-safe agent-facing representations for ChatKit messages.", + "operationId": "chatkit-cache-converted-messages", "parameters": [ { "name": "team_id", @@ -13442,49 +13473,31 @@ "schema": { "type": "string" } - }, - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "attachment_id", - "in": "path", - "description": "Attachment ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } } ], - "responses": { - "200": { - "description": "Delete attachment", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CacheConvertedMessagesRequest" } } }, - "400": { - "description": "Bad Request", + "required": true + }, + "responses": { + "200": { + "description": "Cache converted ChatKit message representations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CacheConvertedMessagesResponse" } } } }, - "404": { - "description": "Attachment Not Found", + "400": { + "description": "", "content": { "application/json": { "schema": { @@ -13494,7 +13507,7 @@ } }, "500": { - "description": "Internal Server Error", + "description": "", "content": { "application/json": { "schema": { @@ -13515,15 +13528,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}/complete": { + "/api/v1/team/{team_id}/chatkit/messages/converted-cache/hydrate": { "post": { "tags": [ "chatkit", "v1" ], - "summary": "Complete attachment upload", - "description": "Mark a direct-to-object-store attachment upload as complete.", - "operationId": "complete-attachment-upload", + "summary": "Hydrate converted ChatKit message representations", + "description": "Loads JSON-safe cached agent-facing representations for ChatKit messages.", + "operationId": "chatkit-hydrate-converted-messages", "parameters": [ { "name": "team_id", @@ -13533,31 +13546,13 @@ "schema": { "type": "string" } - }, - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "attachment_id", - "in": "path", - "description": "Attachment ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CompleteAttachmentUploadInner" + "$ref": "#/components/schemas/HydrateConvertedMessagesRequest" } } }, @@ -13565,27 +13560,17 @@ }, "responses": { "200": { - "description": "Complete attachment upload", + "description": "Hydrate converted ChatKit message representations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Attachment" + "$ref": "#/components/schemas/HydrateConvertedMessagesResponse" } } } }, "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Attachment Not Found", + "description": "", "content": { "application/json": { "schema": { @@ -13595,7 +13580,7 @@ } }, "500": { - "description": "Internal Server Error", + "description": "", "content": { "application/json": { "schema": { @@ -13616,323 +13601,255 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}/content": { + "/api/v1/team/{team_id}/chatkit/self-extension-proposals": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "Download attachment content", - "description": "Download ChatKit attachment bytes through the API server. Debug builds return this endpoint as the attachment download URL.", - "operationId": "download-attachment-content", + "summary": "List safe extension proposals", + "description": "Lists redacted proposal review snapshots for the authorized team.", + "operationId": "chatkit-list-self-extension-proposals", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, + "name": "status", + "in": "query", + "required": false, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "$ref": "#/components/schemas/SelfExtensionStatus" } }, { - "name": "attachment_id", - "in": "path", - "description": "Attachment ID", - "required": true, + "name": "requesting_agent_id", + "in": "query", + "required": false, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" + } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } } ], "responses": { "200": { - "description": "Download attachment content", + "description": "", "content": { - "application/octet-stream": { + "application/json": { "schema": { "type": "array", "items": { - "type": "integer", - "format": "int32", - "minimum": 0 + "$ref": "#/components/schemas/SelfExtensionProposal" } } } } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Attachment Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] } - ] + } }, - "put": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Upload attachment content", - "description": "Upload ChatKit attachment bytes through the API server. Debug builds return this endpoint as the upload URL instead of a browser-direct object-store URL.", - "operationId": "upload-attachment-content", + "summary": "Propose a safe agent extension", + "description": "Creates a durable, server-validated proposal with a redacted diff, permission and credential requirements, cost and egress implications, affected audiences, and exact rollback plan. The requesting agent cannot approve or execute it.", + "operationId": "chatkit-propose-self-extension", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } - }, - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "attachment_id", - "in": "path", - "description": "Attachment ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } } ], "requestBody": { "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "array", - "items": { - "type": "integer", - "format": "int32", - "minimum": 0 - } + "$ref": "#/components/schemas/CreateSelfExtensionProposalInner" } } }, "required": true }, "responses": { - "200": { - "description": "Upload attachment content", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Attachment" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Attachment Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "201": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SelfExtensionProposal" } } } } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}/download-url": { + "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "Get attachment download URL", - "description": "Create a short-lived signed download URL for a ChatKit attachment.", - "operationId": "get-attachment-download-url", + "summary": "Inspect a safe extension proposal", + "description": "Returns the complete redacted review document and durable execution receipts.", + "operationId": "chatkit-get-self-extension-proposal", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "attachment_id", + "name": "proposal_id", "in": "path", - "description": "Attachment ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], "responses": { "200": { - "description": "Get attachment download URL", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetAttachmentDownloadUrlResponse" + "$ref": "#/components/schemas/SelfExtensionProposal" } } } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/approve": { + "post": { + "tags": [ + "chatkit", + "v1" + ], + "summary": "Approve a safe extension proposal", + "description": "Records an explicit human owner/admin approval and queues durable execution. Agent callers cannot approve.", + "operationId": "chatkit-approve-self-extension-proposal", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } }, - "404": { - "description": "Attachment Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "name": "proposal_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } - }, - "500": { - "description": "Internal Server Error", + } + ], + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SelfExtensionProposal" } } } } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachments/upload": { + "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/cancel": { "post": { "tags": [ "chatkit", "v1" ], - "summary": "Create attachment uploads", - "description": "Creates up to ten ChatKit attachment rows and returns their presigned uploads in one request.", - "operationId": "create-attachment-uploads", + "summary": "Cancel a safe extension proposal", + "description": "Cancels a pending or approved proposal before execution starts.", + "operationId": "chatkit-cancel-self-extension-proposal", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "session_id", + "name": "proposal_id", "in": "path", - "description": "Session ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SelfExtensionProposal" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/decision": { + "post": { + "tags": [ + "chatkit", + "v1" + ], + "summary": "Answer a capability-change approval", + "description": "Atomically records an authenticated human Yes/No against the exact proposal hash and generation, completes its linked Human Approval, and queues approved work.", + "operationId": "chatkit-decide-capability-change", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "proposal_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], @@ -13940,7 +13857,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateAttachmentUploadsInner" + "$ref": "#/components/schemas/DecideCapabilityChangeRequest" } } }, @@ -13948,70 +13865,155 @@ }, "responses": { "200": { - "description": "Create attachment uploads", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateAttachmentUploadsResponse" + "$ref": "#/components/schemas/SelfExtensionProposal" } } } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/outputs/claim": { + "post": { + "tags": [ + "chatkit", + "v1" + ], + "summary": "Claim safe extension outputs", + "description": "Returns and consumes encrypted one-time execution values to an explicit human owner/admin reviewer. Agent callers cannot claim outputs.", + "operationId": "chatkit-claim-self-extension-proposal-outputs", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, - "400": { - "description": "Bad Request", + { + "name": "proposal_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SelfExtensionProposalOutputs" } } } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/reject": { + "post": { + "tags": [ + "chatkit", + "v1" + ], + "summary": "Reject a safe extension proposal", + "description": "Records an explicit human owner/admin rejection without creating resources.", + "operationId": "chatkit-reject-self-extension-proposal", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, - "500": { - "description": "Internal Server Error", + { + "name": "proposal_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SelfExtensionProposal" } } } } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/event-history": { - "get": { + "/api/v1/team/{team_id}/chatkit/self-extension-proposals/{proposal_id}/rollback": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Get session event history", - "description": "Get paginated historical events for a session. Optionally include events from child sessions.", - "operationId": "get-session-event-history", + "summary": "Roll back a safe extension proposal", + "description": "Queues durable reverse-order cleanup of only resources recorded as created by this proposal.", + "operationId": "chatkit-rollback-self-extension-proposal", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "session_id", + "name": "proposal_id", "in": "path", - "description": "Session ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SelfExtensionProposal" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/session": { + "get": { + "tags": [ + "chatkit", + "v1" + ], + "summary": "List sessions", + "description": "List all chat sessions with pagination. Optionally filter by inbox_id to get sessions for a specific inbox.", + "operationId": "list-sessions", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -14040,13 +14042,13 @@ } }, { - "name": "include_child_sessions", + "name": "inbox_id", "in": "query", - "description": "Whether to include events from child sessions", + "description": "Filter sessions by inbox_id (via session_inbox_instance join)", "required": false, "schema": { "type": [ - "boolean", + "string", "null" ] } @@ -14054,11 +14056,11 @@ ], "responses": { "200": { - "description": "Event history", + "description": "List sessions", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StoredEventPaginatedResponse" + "$ref": "#/components/schemas/SessionPaginatedResponse" } } } @@ -14093,17 +14095,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/inbox-instances": { - "get": { + }, + "post": { "tags": [ "chatkit", "v1" ], - "summary": "List session inbox instances", - "description": "Get all inbox instances (participants) registered in a session.", - "operationId": "list-session-inbox-instances", + "summary": "Create session", + "description": "Create a new chat session. Optionally include inbox_instances to register participants.", + "operationId": "create-session", "parameters": [ { "name": "team_id", @@ -14113,27 +14113,25 @@ "schema": { "type": "string" } - }, - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSessionInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "List inbox instances for a session", + "description": "Create a session", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InboxInstance" - } + "$ref": "#/components/schemas/Session" } } } @@ -14170,15 +14168,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/member": { - "get": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/upload": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "List private session members", - "description": "List Tilde users authorized to access a private ChatKit session. These users are distinct from ChatKit inbox participants.", - "operationId": "list-session-user-members", + "summary": "Create attachment upload", + "description": "Create a ChatKit attachment row and return presigned object-store upload and download URLs.", + "operationId": "create-attachment-upload", "parameters": [ { "name": "team_id", @@ -14192,29 +14190,46 @@ { "name": "session_id", "in": "path", - "description": "Private session ID", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAttachmentUploadInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Private session authorization members", + "description": "Create attachment upload", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SessionUserMembership" - } + "$ref": "#/components/schemas/CreateAttachmentUploadResponse" } } } }, - "404": { - "description": "Session not found", + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -14233,15 +14248,17 @@ "bearer_token": [] } ] - }, - "post": { + } + }, + "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}": { + "delete": { "tags": [ "chatkit", "v1" ], - "summary": "Add a private session member", - "description": "Grant a Tilde user access to a private ChatKit session. The user must retain membership in the session team to use the grant.", - "operationId": "add-session-user-member", + "summary": "Delete attachment", + "description": "Mark a ChatKit attachment deleted and delete its backing object best-effort.", + "operationId": "delete-attachment", "parameters": [ { "name": "team_id", @@ -14255,36 +14272,55 @@ { "name": "session_id", "in": "path", - "description": "Private session ID", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "attachment_id", + "in": "path", + "description": "Attachment ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AddSessionUserMemberRequest" + "responses": { + "200": { + "description": "Delete attachment", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Attachment" + } } } }, - "required": true - }, - "responses": { - "200": { - "description": "Added authorization member", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SessionUserMembership" + "$ref": "#/components/schemas/Error" } } } }, "404": { - "description": "Session not found", + "description": "Attachment Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -14305,15 +14341,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/member/{user_id}": { - "delete": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}/complete": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Remove a private session member", - "description": "Revoke a non-owner user's access to a private ChatKit session. Ownership must be transferred before removing the owner.", - "operationId": "remove-session-user-member", + "summary": "Complete attachment upload", + "description": "Mark a direct-to-object-store attachment upload as complete.", + "operationId": "complete-attachment-upload", "parameters": [ { "name": "team_id", @@ -14327,35 +14363,65 @@ { "name": "session_id", "in": "path", - "description": "Private session ID", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } }, { - "name": "user_id", + "name": "attachment_id", "in": "path", - "description": "Tilde user ID", + "description": "Attachment ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CompleteAttachmentUploadInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Removed authorization member", + "description": "Complete attachment upload", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RemoveSessionUserMemberResponse" + "$ref": "#/components/schemas/Attachment" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } }, "404": { - "description": "Session not found", + "description": "Attachment Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -14376,15 +14442,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/message": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}/content": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "List messages in session", - "description": "List all messages in a session with pagination", - "operationId": "list-messages", + "summary": "Download attachment content", + "description": "Download ChatKit attachment bytes through the API server. Debug builds return this endpoint as the attachment download URL.", + "operationId": "download-attachment-content", "parameters": [ { "name": "team_id", @@ -14405,96 +14471,27 @@ } }, { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "channel_inbox_id", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "participant_inbox_instance_id", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "user_external_id", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "created_after", - "in": "query", - "required": false, - "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedChronoDateTime" - } - ] - } - }, - { - "name": "created_before", - "in": "query", - "required": false, + "name": "attachment_id", + "in": "path", + "description": "Attachment ID", + "required": true, "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedChronoDateTime" - } - ] + "$ref": "#/components/schemas/WrappedUuidV4" } } ], "responses": { "200": { - "description": "List messages", + "description": "Download attachment content", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/MessagePaginatedResponse" + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } } } } @@ -14510,7 +14507,7 @@ } }, "404": { - "description": "Session Not Found", + "description": "Attachment Not Found", "content": { "application/json": { "schema": { @@ -14540,14 +14537,14 @@ } ] }, - "post": { + "put": { "tags": [ "chatkit", "v1" ], - "summary": "Create message", - "description": "Create a new message in a session", - "operationId": "create-message", + "summary": "Upload attachment content", + "description": "Upload ChatKit attachment bytes through the API server. Debug builds return this endpoint as the upload URL instead of a browser-direct object-store URL.", + "operationId": "upload-attachment-content", "parameters": [ { "name": "team_id", @@ -14566,13 +14563,27 @@ "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } + }, + { + "name": "attachment_id", + "in": "path", + "description": "Attachment ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } } ], "requestBody": { "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/CreateMessageRequest" + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } } } }, @@ -14580,11 +14591,11 @@ }, "responses": { "200": { - "description": "Create a message", + "description": "Upload attachment content", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Message" + "$ref": "#/components/schemas/Attachment" } } } @@ -14600,7 +14611,7 @@ } }, "404": { - "description": "Session Not Found", + "description": "Attachment Not Found", "content": { "application/json": { "schema": { @@ -14631,15 +14642,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/message/{message_id}": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachment/{attachment_id}/download-url": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "Get message", - "description": "Retrieve a message by its ID", - "operationId": "get-message", + "summary": "Get attachment download URL", + "description": "Create a short-lived signed download URL for a ChatKit attachment.", + "operationId": "get-attachment-download-url", "parameters": [ { "name": "team_id", @@ -14660,9 +14671,9 @@ } }, { - "name": "message_id", + "name": "attachment_id", "in": "path", - "description": "Message ID", + "description": "Attachment ID", "required": true, "schema": { "$ref": "#/components/schemas/WrappedUuidV4" @@ -14671,11 +14682,11 @@ ], "responses": { "200": { - "description": "Get message", + "description": "Get attachment download URL", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Message" + "$ref": "#/components/schemas/GetAttachmentDownloadUrlResponse" } } } @@ -14691,7 +14702,7 @@ } }, "404": { - "description": "Not Found", + "description": "Attachment Not Found", "content": { "application/json": { "schema": { @@ -14720,15 +14731,17 @@ "bearer_token": [] } ] - }, - "delete": { + } + }, + "/api/v1/team/{team_id}/chatkit/session/{session_id}/attachments/upload": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Delete message", - "description": "Delete a message by its ID", - "operationId": "delete-message", + "summary": "Create attachment uploads", + "description": "Creates up to ten ChatKit attachment rows and returns their presigned uploads in one request.", + "operationId": "create-attachment-uploads", "parameters": [ { "name": "team_id", @@ -14747,24 +14760,25 @@ "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } - }, - { - "name": "message_id", - "in": "path", - "description": "Message ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAttachmentUploadsInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Delete message", + "description": "Create attachment uploads", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteMessageResponse" + "$ref": "#/components/schemas/CreateAttachmentUploadsResponse" } } } @@ -14779,16 +14793,6 @@ } } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -14811,19 +14815,20 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/message/{message_id}/deliveries": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/event-history": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "Get message delivery receipts", - "description": "Requires permission to read the message and its session. Delivered means the channel adapter received provider acceptance, not that the recipient read it.", - "operationId": "get-message-deliveries", + "summary": "Get session event history", + "description": "Get paginated historical events for a session. Optionally include events from child sessions.", + "operationId": "get-session-event-history", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -14832,87 +14837,26 @@ { "name": "session_id", "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "message_id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - } - ], - "responses": { - "200": { - "description": "Provider delivery receipts", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MessageDeliveryReceipt" - } - } - } - } - }, - "404": { - "description": "Message not found or not visible", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] - } - }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/observe": { - "get": { - "tags": [ - "chatkit", - "v1" - ], - "summary": "Observe session events via SSE", - "description": "Subscribe to real-time events on a session via Server-Sent Events. Optionally filter by event types and cascade into child sessions.", - "operationId": "observe-session", - "parameters": [ - { - "name": "team_id", - "in": "path", - "description": "Team ID", + "description": "Session ID", "required": true, "schema": { "type": "string" } }, { - "name": "session_id", - "in": "path", - "description": "Session ID to observe", - "required": true, + "name": "page_size", + "in": "query", + "description": "Number of items to return per page", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int64" } }, { - "name": "subscribe_to_events", + "name": "next_page_token", "in": "query", - "description": "Comma-separated event types to subscribe to (e.g. \"message_created,message_streaming\").\nIf not set, all events are forwarded.", + "description": "Token for the next page of results", "required": false, "schema": { "type": [ @@ -14922,9 +14866,9 @@ } }, { - "name": "attach_to_child_sessions", + "name": "include_child_sessions", "in": "query", - "description": "Whether to auto-attach to child sessions created under the observed session", + "description": "Whether to include events from child sessions", "required": false, "schema": { "type": [ @@ -14936,90 +14880,17 @@ ], "responses": { "200": { - "description": "SSE stream of session events" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Session not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] - } - }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/ownership": { - "post": { - "tags": [ - "chatkit", - "v1" - ], - "summary": "Update session ownership", - "description": "Set the session ownership plane to team or private. Private mode retains a creator ownership grant.", - "operationId": "update-session-ownership", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "", + "description": "Event history", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/StoredEventPaginatedResponse" } } } }, "400": { - "description": "", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -15028,8 +14899,8 @@ } } }, - "404": { - "description": "", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -15050,19 +14921,20 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/visibility": { - "post": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/inbox-instances": { + "get": { "tags": [ "chatkit", "v1" ], - "summary": "Update session visibility", - "description": "Set the session visibility plane to team or private. Private mode retains a creator visibility grant.", - "operationId": "update-session-visibility", + "summary": "List session inbox instances", + "description": "Get all inbox instances (participants) registered in a session.", + "operationId": "list-session-inbox-instances", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -15071,35 +14943,29 @@ { "name": "session_id", "in": "path", + "description": "Session ID", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "", + "description": "List inbox instances for a session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "type": "array", + "items": { + "$ref": "#/components/schemas/InboxInstance" + } } } } }, "400": { - "description": "", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -15108,8 +14974,8 @@ } } }, - "404": { - "description": "", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -15130,19 +14996,20 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/{plane}/grants": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/member": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "List session grants", - "description": "List binary user and group grants for one session authorization plane.", - "operationId": "list-session-resource-grants", + "summary": "List private session members", + "description": "List Tilde users authorized to access a private ChatKit session. These users are distinct from ChatKit inbox participants.", + "operationId": "list-session-user-members", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -15151,14 +15018,7 @@ { "name": "session_id", "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "plane", - "in": "path", + "description": "Private session ID", "required": true, "schema": { "type": "string" @@ -15167,20 +15027,20 @@ ], "responses": { "200": { - "description": "", + "description": "Private session authorization members", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/SessionUserMembership" } } } } }, "404": { - "description": "", + "description": "Session not found", "content": { "application/json": { "schema": { @@ -15205,13 +15065,14 @@ "chatkit", "v1" ], - "summary": "Add session grant", - "description": "Grant a same-team user or group access to one session authorization plane.", - "operationId": "add-session-resource-grant", + "summary": "Add a private session member", + "description": "Grant a Tilde user access to a private ChatKit session. The user must retain membership in the session team to use the grant.", + "operationId": "add-session-user-member", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -15220,14 +15081,7 @@ { "name": "session_id", "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "plane", - "in": "path", + "description": "Private session ID", "required": true, "schema": { "type": "string" @@ -15238,7 +15092,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" + "$ref": "#/components/schemas/AddSessionUserMemberRequest" } } }, @@ -15246,27 +15100,17 @@ }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceGrant" - } - } - } - }, - "400": { - "description": "", + "description": "Added authorization member", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SessionUserMembership" } } } }, "404": { - "description": "", + "description": "Session not found", "content": { "application/json": { "schema": { @@ -15287,19 +15131,20 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/session/{session_id}/{plane}/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/member/{user_id}": { "delete": { "tags": [ "chatkit", "v1" ], - "summary": "Remove session grant", - "description": "Remove one binary principal grant without removing the required creator grant from a private plane.", - "operationId": "remove-session-resource-grant", + "summary": "Remove a private session member", + "description": "Revoke a non-owner user's access to a private ChatKit session. Ownership must be transferred before removing the owner.", + "operationId": "remove-session-user-member", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -15308,30 +15153,16 @@ { "name": "session_id", "in": "path", + "description": "Private session ID", "required": true, "schema": { "type": "string" } }, { - "name": "plane", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "principal_type", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "principal_id", + "name": "user_id", "in": "path", + "description": "Tilde user ID", "required": true, "schema": { "type": "string" @@ -15340,27 +15171,17 @@ ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceGrant" - } - } - } - }, - "400": { - "description": "", + "description": "Removed authorization member", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/RemoveSessionUserMemberResponse" } } } }, "404": { - "description": "", + "description": "Session not found", "content": { "application/json": { "schema": { @@ -15381,15 +15202,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/message": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit sessions", - "description": "Lists ChatKit sessions through the existing inbox session storage.", - "operationId": "chatkit-list-sessions", + "summary": "List messages in session", + "description": "List all messages in a session with pagination", + "operationId": "list-messages", "parameters": [ { "name": "team_id", @@ -15400,6 +15221,15 @@ "type": "string" } }, + { + "name": "session_id", + "in": "path", + "description": "Session ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, { "name": "page_size", "in": "query", @@ -15421,7 +15251,29 @@ } }, { - "name": "inbox_id", + "name": "channel_inbox_id", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "participant_inbox_instance_id", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "user_external_id", "in": "query", "required": false, "schema": { @@ -15430,15 +15282,45 @@ "null" ] } + }, + { + "name": "created_after", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedChronoDateTime" + } + ] + } + }, + { + "name": "created_before", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedChronoDateTime" + } + ] + } } ], "responses": { "200": { - "description": "List ChatKit sessions", + "description": "List messages", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SessionPaginatedResponse" + "$ref": "#/components/schemas/MessagePaginatedResponse" } } } @@ -15453,6 +15335,16 @@ } } }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -15479,9 +15371,9 @@ "chatkit", "v1" ], - "summary": "Create ChatKit session", - "description": "Creates a ChatKit session with explicit participants, or wires the session to agent_id and its registered Vercel UI channel when agent_id is provided.", - "operationId": "chatkit-create-session", + "summary": "Create message", + "description": "Create a new message in a session", + "operationId": "create-message", "parameters": [ { "name": "team_id", @@ -15491,13 +15383,22 @@ "schema": { "type": "string" } + }, + { + "name": "session_id", + "in": "path", + "description": "Session ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateChatKitSessionRequestInner" + "$ref": "#/components/schemas/CreateMessageRequest" } } }, @@ -15505,11 +15406,11 @@ }, "responses": { "200": { - "description": "Create ChatKit session", + "description": "Create a message", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitSessionWithParticipants" + "$ref": "#/components/schemas/Message" } } } @@ -15524,6 +15425,16 @@ } } }, + "404": { + "description": "Session Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -15546,19 +15457,20 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/compaction-events": { - "post": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/message/{message_id}": { + "get": { "tags": [ "chatkit", "v1" ], - "summary": "Report a ChatKit compaction lifecycle event", - "description": "Lets the active agent participant report its own context-compaction lifecycle. ChatKit persists and streams the event while the agent owns compaction policy and execution.", - "operationId": "chatkit-report-compaction-event", + "summary": "Get message", + "description": "Retrieve a message by its ID", + "operationId": "get-message", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -15567,35 +15479,35 @@ { "name": "session_id", "in": "path", + "description": "Session ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "message_id", + "in": "path", + "description": "Message ID", "required": true, "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReportChatKitCompactionEventInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "", + "description": "Get message", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReportChatKitCompactionEventResponse" + "$ref": "#/components/schemas/Message" } } } }, "400": { - "description": "", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -15604,8 +15516,87 @@ } } }, - "403": { - "description": "", + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] + }, + "delete": { + "tags": [ + "chatkit", + "v1" + ], + "summary": "Delete message", + "description": "Delete a message by its ID", + "operationId": "delete-message", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "session_id", + "in": "path", + "description": "Session ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "message_id", + "in": "path", + "description": "Message ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + } + ], + "responses": { + "200": { + "description": "Delete message", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteMessageResponse" + } + } + } + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -15615,7 +15606,7 @@ } }, "404": { - "description": "", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -15624,8 +15615,8 @@ } } }, - "409": { - "description": "", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -15646,15 +15637,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/compaction-events/latest": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/message/{message_id}/deliveries": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "Get the latest successful ChatKit compaction", - "description": "Returns only the newest successful checkpoint for the authenticated active session agent.", - "operationId": "chatkit-get-latest-compaction", + "summary": "Get message delivery receipts", + "description": "Requires permission to read the message and its session. Delivered means the channel adapter received provider acceptance, not that the recipient read it.", + "operationId": "get-message-deliveries", "parameters": [ { "name": "team_id", @@ -15673,44 +15664,30 @@ } }, { - "name": "agent_id", - "in": "query", + "name": "message_id", + "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/ChatKitCompactionCheckpoint" - } - ] - } - } - } - }, - "403": { - "description": "", + "description": "Provider delivery receipts", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "type": "array", + "items": { + "$ref": "#/components/schemas/MessageDeliveryReceipt" + } } } } }, "404": { - "description": "", + "description": "Message not found or not visible", "content": { "application/json": { "schema": { @@ -15721,7 +15698,6 @@ } }, "security": [ - {}, { "api_key": [] }, @@ -15731,19 +15707,20 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/invitations": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/observe": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit room invitations", - "description": "Lists durable invitation lifecycle state for a room manager or the canonical invitee.", - "operationId": "chatkit-list-room-invitations", + "summary": "Observe session events via SSE", + "description": "Subscribe to real-time events on a session via Server-Sent Events. Optionally filter by event types and cascade into child sessions.", + "operationId": "observe-session", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -15752,27 +15729,32 @@ { "name": "session_id", "in": "path", + "description": "Session ID to observe", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } }, { - "name": "page_size", + "name": "subscribe_to_events", "in": "query", + "description": "Comma-separated event types to subscribe to (e.g. \"message_created,message_streaming\").\nIf not set, all events are forwarded.", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": [ + "string", + "null" + ] } }, { - "name": "next_page_token", + "name": "attach_to_child_sessions", "in": "query", + "description": "Whether to auto-attach to child sessions created under the observed session", "required": false, "schema": { "type": [ - "string", + "boolean", "null" ] } @@ -15780,17 +15762,10 @@ ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChatKitRoomInvitationPaginatedResponse" - } - } - } + "description": "SSE stream of session events" }, "400": { - "description": "", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -15800,7 +15775,7 @@ } }, "404": { - "description": "", + "description": "Session not found", "content": { "application/json": { "schema": { @@ -15819,15 +15794,17 @@ "bearer_token": [] } ] - }, + } + }, + "/api/v1/team/{team_id}/chatkit/session/{session_id}/ownership": { "post": { "tags": [ "chatkit", "v1" ], - "summary": "Invite a user to a ChatKit room", - "description": "Creates or refreshes a pending invitation under session ownership authority. The invitation does not expose room content before acceptance.", - "operationId": "chatkit-create-room-invitation", + "summary": "Update session ownership", + "description": "Set the session ownership plane to team or private. Private mode retains a creator ownership grant.", + "operationId": "update-session-ownership", "parameters": [ { "name": "team_id", @@ -15842,7 +15819,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -15850,7 +15827,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateChatKitRoomInvitationRequestInner" + "$ref": "#/components/schemas/SetResourceAccessModeRequest" } } }, @@ -15862,7 +15839,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitRoomInvitation" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -15899,15 +15876,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/invitations/{invitation_id}": { - "delete": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/visibility": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Revoke a ChatKit room invitation", - "description": "Revokes one pending invitation under session ownership authority.", - "operationId": "chatkit-revoke-room-invitation", + "summary": "Update session visibility", + "description": "Set the session visibility plane to team or private. Private mode retains a creator visibility grant.", + "operationId": "update-session-visibility", "parameters": [ { "name": "team_id", @@ -15922,25 +15899,27 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "invitation_id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetResourceAccessModeRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitRoomInvitation" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -15977,15 +15956,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/invitations/{invitation_id}/decision": { - "post": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/{plane}/grants": { + "get": { "tags": [ "chatkit", "v1" ], - "summary": "Decide a ChatKit room invitation", - "description": "Accepts or declines a pending invitation as its canonical invitee. Acceptance grants session visibility and activates the bound human participant.", - "operationId": "chatkit-decide-room-invitation", + "summary": "List session grants", + "description": "List binary user and group grants for one session authorization plane.", + "operationId": "list-session-resource-grants", "parameters": [ { "name": "team_id", @@ -16000,45 +15979,28 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } }, { - "name": "invitation_id", + "name": "plane", "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DecideChatKitRoomInvitationRequestInner" - } - } - }, - "required": true - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitRoomInvitation" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } } } } @@ -16063,22 +16025,19 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/join": { + }, "post": { "tags": [ "chatkit", "v1" ], - "summary": "Join ChatKit session", - "description": "Alias for adding or linking the caller-provided participant to a ChatKit session.", - "operationId": "chatkit-join-session", + "summary": "Add session grant", + "description": "Grant a same-team user or group access to one session authorization plane.", + "operationId": "add-session-resource-grant", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -16087,10 +16046,17 @@ { "name": "session_id", "in": "path", - "description": "Session ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" + } + }, + { + "name": "plane", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], @@ -16098,7 +16064,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AddChatKitParticipantRequestInner" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -16106,17 +16072,17 @@ }, "responses": { "200": { - "description": "Join ChatKit session", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitParticipant" + "$ref": "#/components/schemas/ResourceGrant" } } } }, "400": { - "description": "Bad Request", + "description": "", "content": { "application/json": { "schema": { @@ -16126,17 +16092,7 @@ } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "", "content": { "application/json": { "schema": { @@ -16157,20 +16113,19 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/messages": { - "get": { + "/api/v1/team/{team_id}/chatkit/session/{session_id}/{plane}/grants/{principal_type}/{principal_id}": { + "delete": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit message history", - "description": "Lists chronological message history for a ChatKit session with channel, participant, external user, and time filters.", - "operationId": "chatkit-list-message-history", + "summary": "Remove session grant", + "description": "Remove one binary principal grant without removing the required creator grant from a private plane.", + "operationId": "remove-session-resource-grant", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -16179,103 +16134,43 @@ { "name": "session_id", "in": "path", - "description": "Session ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "channel_inbox_id", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "participant_inbox_instance_id", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] + "type": "string" } }, { - "name": "user_external_id", - "in": "query", - "required": false, + "name": "plane", + "in": "path", + "required": true, "schema": { - "type": [ - "string", - "null" - ] + "type": "string" } }, { - "name": "created_after", - "in": "query", - "required": false, + "name": "principal_type", + "in": "path", + "required": true, "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedChronoDateTime" - } - ] + "type": "string" } }, { - "name": "created_before", - "in": "query", - "required": false, + "name": "principal_id", + "in": "path", + "required": true, "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedChronoDateTime" - } - ] + "type": "string" } } ], "responses": { "200": { - "description": "List ChatKit message history", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MessagePaginatedResponse" + "$ref": "#/components/schemas/ResourceGrant" } } } @@ -16299,16 +16194,6 @@ } } } - }, - "500": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } } }, "security": [ @@ -16322,51 +16207,47 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/messages/from-last-compaction": { + "/api/v1/team/{team_id}/chatkit/sessions": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit history from the latest successful compaction", - "description": "Returns the authenticated agent's byte-stable checkpoint separately from messages after its transcript boundary.", - "operationId": "chatkit-get-compacted-history", + "summary": "List ChatKit sessions", + "description": "Lists ChatKit sessions through the existing inbox session storage.", + "operationId": "chatkit-list-sessions", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "session_id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "agent_id", + "name": "page_size", "in": "query", - "required": true, + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int64" } }, { - "name": "page_size", + "name": "next_page_token", "in": "query", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": [ + "string", + "null" + ] } }, { - "name": "next_page_token", + "name": "inbox_id", "in": "query", "required": false, "schema": { @@ -16379,17 +16260,17 @@ ], "responses": { "200": { - "description": "", + "description": "List ChatKit sessions", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitCompactedHistoryResponse" + "$ref": "#/components/schemas/SessionPaginatedResponse" } } } }, - "403": { - "description": "", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -16398,8 +16279,8 @@ } } }, - "404": { - "description": "", + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -16418,17 +16299,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/participants": { - "get": { + }, + "post": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit session participants", - "description": "Lists explicit human and agent participants attached to a ChatKit session.", - "operationId": "chatkit-list-session-participants", + "summary": "Create ChatKit session", + "description": "Creates a ChatKit session with explicit participants, or wires the session to agent_id and its registered Vercel UI channel when agent_id is provided.", + "operationId": "chatkit-create-session", "parameters": [ { "name": "team_id", @@ -16438,43 +16317,31 @@ "schema": { "type": "string" } - }, - { - "name": "session_id", - "in": "path", - "description": "Session ID", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } } ], - "responses": { - "200": { - "description": "List ChatKit participants", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ChatKitParticipant" - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateChatKitSessionRequestInner" } } }, - "400": { - "description": "Bad Request", + "required": true + }, + "responses": { + "200": { + "description": "Create ChatKit session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ChatKitSessionWithParticipants" } } } }, - "404": { - "description": "Not Found", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -16503,20 +16370,21 @@ "bearer_token": [] } ] - }, + } + }, + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/compaction-events": { "post": { "tags": [ "chatkit", "v1" ], - "summary": "Add ChatKit participant", - "description": "Adds or links a human or agent participant to a ChatKit session.", - "operationId": "chatkit-add-session-participant", + "summary": "Report a ChatKit compaction lifecycle event", + "description": "Lets the active agent participant report its own context-compaction lifecycle. ChatKit persists and streams the event while the agent owns compaction policy and execution.", + "operationId": "chatkit-report-compaction-event", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -16525,7 +16393,6 @@ { "name": "session_id", "in": "path", - "description": "Session ID", "required": true, "schema": { "$ref": "#/components/schemas/WrappedUuidV4" @@ -16536,7 +16403,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AddChatKitParticipantRequestInner" + "$ref": "#/components/schemas/ReportChatKitCompactionEventInner" } } }, @@ -16544,17 +16411,27 @@ }, "responses": { "200": { - "description": "Add ChatKit participant", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitParticipant" + "$ref": "#/components/schemas/ReportChatKitCompactionEventResponse" } } } }, "400": { - "description": "Bad Request", + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "", "content": { "application/json": { "schema": { @@ -16564,7 +16441,7 @@ } }, "404": { - "description": "Not Found", + "description": "", "content": { "application/json": { "schema": { @@ -16573,8 +16450,8 @@ } } }, - "500": { - "description": "Internal Server Error", + "409": { + "description": "", "content": { "application/json": { "schema": { @@ -16595,20 +16472,19 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/participants/{participant_instance_id}": { - "delete": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/compaction-events/latest": { + "get": { "tags": [ "chatkit", "v1" ], - "summary": "Remove ChatKit participant", - "description": "Unlinks a participant from a ChatKit session.", - "operationId": "chatkit-remove-session-participant", + "summary": "Get the latest successful ChatKit compaction", + "description": "Returns only the newest successful checkpoint for the authenticated active session agent.", + "operationId": "chatkit-get-latest-compaction", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -16617,16 +16493,14 @@ { "name": "session_id", "in": "path", - "description": "Session ID", "required": true, "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } }, { - "name": "participant_instance_id", - "in": "path", - "description": "Participant inbox instance ID", + "name": "agent_id", + "in": "query", "required": true, "schema": { "type": "string" @@ -16635,17 +16509,24 @@ ], "responses": { "200": { - "description": "Remove ChatKit participant", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RemoveChatKitParticipantResponse" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ChatKitCompactionCheckpoint" + } + ] } } } }, - "400": { - "description": "Bad Request", + "403": { + "description": "", "content": { "application/json": { "schema": { @@ -16655,17 +16536,7 @@ } }, "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "", "content": { "application/json": { "schema": { @@ -16686,20 +16557,18 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/tools/sendMessage": { - "post": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/events/stream": { + "get": { "tags": [ - "chatkit", - "v1" + "chatkit" ], - "summary": "Send a session-bound provider message", - "description": "Invokes the session provider's sendMessage capability with server-validated participant routing and persists the canonical ChatKit message.", - "operationId": "chatkit-send-session-message", + "summary": "Stream ChatKit session events", + "description": "Resumable SSE with canonical audience filtering and periodic authorization revalidation. Use after_revision or Last-Event-ID to reconnect.", + "operationId": "chatkit-stream-session-events", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -16708,45 +16577,103 @@ { "name": "session_id", "in": "path", - "description": "Session ID", "required": true, "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } + }, + { + "name": "after_revision", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SendSessionMessageBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Provider message delivered", + "description": "Canonical session event stream", + "content": { + "text/event-stream": {} + } + }, + "400": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SendSessionMessageResponse" + "$ref": "#/components/schemas/Error" } } } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/invitations": { + "get": { + "tags": [ + "chatkit", + "v1" + ], + "summary": "List ChatKit room invitations", + "description": "Lists durable invitation lifecycle state for a room manager or the canonical invitee.", + "operationId": "chatkit-list-room-invitations", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, - "400": { + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + } + ], + "responses": { + "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ChatKitRoomInvitationPaginatedResponse" } } } }, - "404": { + "400": { "description": "", "content": { "application/json": { @@ -16756,7 +16683,7 @@ } } }, - "500": { + "404": { "description": "", "content": { "application/json": { @@ -16776,17 +16703,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/tools/{tool_name}": { + }, "post": { "tags": [ "chatkit", "v1" ], - "summary": "Invoke a session-bound provider tool", - "description": "Invokes a provider action with server-bound session and message routing.", - "operationId": "chatkit-invoke-session-provider-tool", + "summary": "Invite a user to a ChatKit room", + "description": "Creates or refreshes a pending invitation under session ownership authority. The invitation does not expose room content before acceptance.", + "operationId": "chatkit-create-room-invitation", "parameters": [ { "name": "team_id", @@ -16803,21 +16728,13 @@ "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } - }, - { - "name": "tool_name", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InvokeSessionProviderToolBody" + "$ref": "#/components/schemas/CreateChatKitRoomInvitationRequestInner" } } }, @@ -16829,7 +16746,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InvokeSessionProviderToolResponse" + "$ref": "#/components/schemas/ChatKitRoomInvitation" } } } @@ -16866,144 +16783,68 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/agents/{agent_id}/sessions": { - "get": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/invitations/{invitation_id}": { + "delete": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit workspace agent sessions", - "description": "Lists more sessions for one ChatKit agent in ChatKit workspace.", - "operationId": "chatkit-workspace-agent-sessions", + "summary": "Revoke a ChatKit room invitation", + "description": "Revokes one pending invitation under session ownership authority.", + "operationId": "chatkit-revoke-room-invitation", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "agent_id", + "name": "session_id", "in": "path", - "description": "Agent inbox ID", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "session_sort", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] + "$ref": "#/components/schemas/WrappedUuidV4" } }, { - "name": "q", - "in": "query", - "required": false, + "name": "invitation_id", + "in": "path", + "required": true, "schema": { - "type": [ - "string", - "null" - ] + "$ref": "#/components/schemas/WrappedUuidV4" } } ], "responses": { "200": { - "description": "ChatKit workspace agent sessions", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitWorkspaceAgentSessionsResponse" + "$ref": "#/components/schemas/ChatKitRoomInvitation" } } } - } - }, - "security": [ - {}, - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] - }, - "post": { - "tags": [ - "chatkit", - "v1" - ], - "summary": "Create ChatKit workspace session", - "description": "Creates a ChatKit session wired to the selected agent and its Vercel UI channel.", - "operationId": "chatkit-workspace-create-session", - "parameters": [ - { - "name": "team_id", - "in": "path", - "description": "Team ID", - "required": true, - "schema": { - "type": "string" - } }, - { - "name": "agent_id", - "in": "path", - "description": "Agent inbox ID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateChatKitWorkspaceSessionRequestInner" + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } } } }, - "required": true - }, - "responses": { - "200": { - "description": "Created ChatKit workspace session", + "404": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitSessionWithParticipants" + "$ref": "#/components/schemas/Error" } } } @@ -17020,41 +16861,38 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/agents/{agent_id}/sessions/{session_id}/messages": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/invitations/{invitation_id}/decision": { "post": { "tags": [ "chatkit", "v1" ], - "summary": "Send ChatKit workspace message", - "description": "Sends a user message to the selected ChatKit agent session and invokes the registered Vercel UI-compatible agent endpoint.", - "operationId": "chatkit-workspace-send-message", + "summary": "Decide a ChatKit room invitation", + "description": "Accepts or declines a pending invitation as its canonical invitee. Acceptance grants session visibility and activates the bound human participant.", + "operationId": "chatkit-decide-room-invitation", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "agent_id", + "name": "session_id", "in": "path", - "description": "Agent inbox ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } }, { - "name": "session_id", + "name": "invitation_id", "in": "path", - "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -17062,7 +16900,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SendChatKitWorkspaceMessageRequestInner" + "$ref": "#/components/schemas/DecideChatKitRoomInvitationRequestInner" } } }, @@ -17070,11 +16908,31 @@ }, "responses": { "200": { - "description": "ChatKit workspace messages after sending", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MessagePaginatedResponse" + "$ref": "#/components/schemas/ChatKitRoomInvitation" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17091,15 +16949,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/agents/{agent_id}/turns": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/join": { "post": { "tags": [ "chatkit", "v1" ], - "summary": "Submit ChatKit workspace turn", - "description": "Creates a session when needed, finalizes uploaded attachments, sends the owner message, and returns canonical conversation state.", - "operationId": "chatkit-workspace-submit-turn", + "summary": "Join ChatKit session", + "description": "Alias for adding or linking the caller-provided participant to a ChatKit session.", + "operationId": "chatkit-join-session", "parameters": [ { "name": "team_id", @@ -17111,12 +16969,12 @@ } }, { - "name": "agent_id", + "name": "session_id", "in": "path", - "description": "Agent inbox ID", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -17124,7 +16982,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubmitChatKitWorkspaceTurnRequestInner" + "$ref": "#/components/schemas/AddChatKitParticipantRequestInner" } } }, @@ -17132,11 +16990,41 @@ }, "responses": { "200": { - "description": "Submitted ChatKit workspace turn", + "description": "Join ChatKit session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubmitChatKitWorkspaceTurnResponse" + "$ref": "#/components/schemas/ChatKitParticipant" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17153,15 +17041,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/bootstrap": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/messages": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "Bootstrap ChatKit workspace", - "description": "Returns the sidebar and an optional active conversation snapshot in one request.", - "operationId": "chatkit-workspace-bootstrap", + "summary": "List ChatKit message history", + "description": "Lists chronological message history for a ChatKit session with channel, participant, external user, and time filters.", + "operationId": "chatkit-list-message-history", "parameters": [ { "name": "team_id", @@ -17173,7 +17061,16 @@ } }, { - "name": "agent_page_size", + "name": "session_id", + "in": "path", + "description": "Session ID", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "page_size", "in": "query", "required": false, "schema": { @@ -17182,7 +17079,7 @@ } }, { - "name": "agent_next_page_token", + "name": "next_page_token", "in": "query", "required": false, "schema": { @@ -17193,34 +17090,40 @@ } }, { - "name": "session_page_size", + "name": "channel_inbox_id", "in": "query", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": [ + "string", + "null" + ] } }, { - "name": "message_page_size", + "name": "participant_inbox_instance_id", "in": "query", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": [ + "string", + "null" + ] } }, { - "name": "queue_page_size", + "name": "user_external_id", "in": "query", "required": false, "schema": { - "type": "integer", - "format": "int64" + "type": [ + "string", + "null" + ] } }, { - "name": "active_session_id", + "name": "created_after", "in": "query", "required": false, "schema": { @@ -17229,52 +17132,64 @@ "type": "null" }, { - "$ref": "#/components/schemas/WrappedUuidV4" + "$ref": "#/components/schemas/WrappedChronoDateTime" } ] } }, { - "name": "agent_sort", + "name": "created_before", "in": "query", "required": false, "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "session_sort", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "q", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedChronoDateTime" + } ] } } ], "responses": { "200": { - "description": "ChatKit workspace bootstrap projection", + "description": "List ChatKit message history", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitWorkspaceBootstrapResponse" + "$ref": "#/components/schemas/MessagePaginatedResponse" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17291,46 +17206,38 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/search": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/messages/from-last-compaction": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "Search ChatKit", - "description": "Searches visible session titles, participating agents, and messages across the team. When session_id is provided, searches messages only within that visible session.", - "operationId": "chatkit-search", + "summary": "List ChatKit history from the latest successful compaction", + "description": "Returns the authenticated agent's byte-stable checkpoint separately from messages after its transcript boundary.", + "operationId": "chatkit-get-compacted-history", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "q", - "in": "query", + "name": "session_id", + "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } }, { - "name": "session_id", + "name": "agent_id", "in": "query", - "required": false, + "required": true, "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedUuidV4" - } - ] + "type": "string" } }, { @@ -17356,17 +17263,17 @@ ], "responses": { "200": { - "description": "Consolidated ChatKit search results", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitSearchHitPaginatedResponse" + "$ref": "#/components/schemas/ChatKitCompactedHistoryResponse" } } } }, - "400": { - "description": "Invalid query or pagination cursor", + "403": { + "description": "", "content": { "application/json": { "schema": { @@ -17376,7 +17283,7 @@ } }, "404": { - "description": "Scoped session not found", + "description": "", "content": { "application/json": { "schema": { @@ -17397,15 +17304,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/interrupt": { - "post": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/participants": { + "get": { "tags": [ "chatkit", "v1" ], - "summary": "Interrupt ChatKit workspace session", - "description": "Interrupts the active ChatKit HTTP agent response for a ChatKit workspace session.", - "operationId": "chatkit-workspace-interrupt-session", + "summary": "List ChatKit session participants", + "description": "Lists explicit human and agent participants attached to a ChatKit session.", + "operationId": "chatkit-list-session-participants", "parameters": [ { "name": "team_id", @@ -17428,11 +17335,44 @@ ], "responses": { "200": { - "description": "ChatKit workspace session interruption requested", + "description": "List ChatKit participants", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InterruptChatKitSessionResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/ChatKitParticipant" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17447,17 +17387,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/messages": { - "get": { + }, + "post": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit workspace messages", - "description": "Lists newest-first message history for a ChatKit workspace session with standard pagination.", - "operationId": "chatkit-workspace-messages", + "summary": "Add ChatKit participant", + "description": "Adds or links a human or agent participant to a ChatKit session.", + "operationId": "chatkit-add-session-participant", "parameters": [ { "name": "team_id", @@ -17474,37 +17412,57 @@ "description": "Session ID", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] + "$ref": "#/components/schemas/WrappedUuidV4" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddChatKitParticipantRequestInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "ChatKit workspace messages", + "description": "Add ChatKit participant", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MessagePaginatedResponse" + "$ref": "#/components/schemas/ChatKitParticipant" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17521,15 +17479,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/read-state": { - "put": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/participants/{participant_instance_id}": { + "delete": { "tags": [ "chatkit", "v1" ], - "summary": "Update ChatKit session read state", - "description": "Marks the shared ChatKit session read or unread for only the authenticated user.", - "operationId": "chatkit-workspace-update-session-read-state", + "summary": "Remove ChatKit participant", + "description": "Unlinks a participant from a ChatKit session.", + "operationId": "chatkit-remove-session-participant", "parameters": [ { "name": "team_id", @@ -17548,25 +17506,54 @@ "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } + }, + { + "name": "participant_instance_id", + "in": "path", + "description": "Participant inbox instance ID", + "required": true, + "schema": { + "type": "string" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateChatKitSessionUserStateRequestInner" + "responses": { + "200": { + "description": "Remove ChatKit participant", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RemoveChatKitParticipantResponse" + } } } }, - "required": true - }, - "responses": { - "200": { - "description": "Current user's ChatKit session read state", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitSessionUserState" + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17583,15 +17570,65 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/rename": { - "patch": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/provider-tools": { + "get": { + "tags": [ + "chatkit" + ], + "summary": "List session provider tools", + "description": "Returns server-bound invocation context and the authorized provider tool catalog.", + "operationId": "chatkit-list-session-provider-tools", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "session_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomSessionToolCatalog" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/tools/sendMessage": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Rename ChatKit workspace thread", - "description": "Renames the selected ChatKit workspace ChatKit session.", - "operationId": "chatkit-workspace-rename-thread", + "summary": "Send a session-bound provider message", + "description": "Invokes the session provider's sendMessage capability with server-validated participant routing and persists the canonical ChatKit message.", + "operationId": "chatkit-send-session-message", "parameters": [ { "name": "team_id", @@ -17616,7 +17653,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RenameChatKitWorkspaceThreadRequestInner" + "$ref": "#/components/schemas/SendSessionMessageBody" } } }, @@ -17624,11 +17661,41 @@ }, "responses": { "200": { - "description": "Renamed ChatKit workspace thread", + "description": "Provider message delivered", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Session" + "$ref": "#/components/schemas/SendSessionMessageResponse" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17645,20 +17712,19 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/snapshot": { - "get": { + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/tools/{tool_name}": { + "post": { "tags": [ "chatkit", "v1" ], - "summary": "Get ChatKit workspace conversation snapshot", - "description": "Returns messages, pending queued turns, and the durable event revision for one session.", - "operationId": "chatkit-workspace-conversation-snapshot", + "summary": "Invoke a session-bound provider tool", + "description": "Invokes a provider action with server-bound session and message routing.", + "operationId": "chatkit-invoke-session-provider-tool", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -17667,38 +17733,57 @@ { "name": "session_id", "in": "path", - "description": "Session ID", "required": true, "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } }, { - "name": "message_page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "queue_page_size", - "in": "query", - "required": false, + "name": "tool_name", + "in": "path", + "required": true, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvokeSessionProviderToolBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "ChatKit workspace conversation snapshot", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitWorkspaceConversationSnapshot" + "$ref": "#/components/schemas/InvokeSessionProviderToolResponse" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -17715,15 +17800,15 @@ ] } }, - "/api/v1/team/{team_id}/chatkit/workspace/sidebar": { + "/api/v1/team/{team_id}/chatkit/workspace/agents/{agent_id}/sessions": { "get": { "tags": [ "chatkit", "v1" ], - "summary": "List ChatKit workspace sidebar", - "description": "Lists ChatKit agents with nested session previews for ChatKit workspace.", - "operationId": "chatkit-workspace-sidebar", + "summary": "List ChatKit workspace agent sessions", + "description": "Lists more sessions for one ChatKit agent in ChatKit workspace.", + "operationId": "chatkit-workspace-agent-sessions", "parameters": [ { "name": "team_id", @@ -17735,45 +17820,16 @@ } }, { - "name": "agent_page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "agent_next_page_token", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "session_page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "message_page_size", - "in": "query", - "required": false, + "name": "agent_id", + "in": "path", + "description": "Agent inbox ID", + "required": true, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } }, { - "name": "queue_page_size", + "name": "page_size", "in": "query", "required": false, "schema": { @@ -17782,22 +17838,7 @@ } }, { - "name": "active_session_id", - "in": "query", - "required": false, - "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedUuidV4" - } - ] - } - }, - { - "name": "agent_sort", + "name": "next_page_token", "in": "query", "required": false, "schema": { @@ -17832,11 +17873,11 @@ ], "responses": { "200": { - "description": "ChatKit workspace sidebar", + "description": "ChatKit workspace agent sessions", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitWorkspaceSidebarResponse" + "$ref": "#/components/schemas/ChatKitWorkspaceAgentSessionsResponse" } } } @@ -17851,24 +17892,29 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/credential/broker/{broker_state_id}/resume": { + }, "post": { - "summary": "Resume a user-credential brokering flow", - "operationId": "resume_user_credential_brokering", + "tags": [ + "chatkit", + "v1" + ], + "summary": "Create ChatKit workspace session", + "description": "Creates a ChatKit session wired to the selected agent and its Vercel UI channel.", + "operationId": "chatkit-workspace-create-session", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "broker_state_id", + "name": "agent_id", "in": "path", + "description": "Agent inbox ID", "required": true, "schema": { "type": "string" @@ -17879,7 +17925,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResumeUserCredentialBrokeringParams" + "$ref": "#/components/schemas/CreateChatKitWorkspaceSessionRequestInner" } } }, @@ -17887,330 +17933,554 @@ }, "responses": { "200": { - "description": "Brokering response", + "description": "Created ChatKit workspace session", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserCredentialBrokeringResponse" + "$ref": "#/components/schemas/ChatKitSessionWithParticipants" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation": { - "get": { + "/api/v1/team/{team_id}/chatkit/workspace/agents/{agent_id}/sessions/{session_id}/messages": { + "post": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "List common provider installations", - "description": "Lists common-provider bundles visible to the caller.", - "operationId": "listCommonProviderInstallations", + "summary": "Send ChatKit workspace message", + "description": "Sends a user message to the selected ChatKit agent session and invokes the registered Vercel UI-compatible agent endpoint.", + "operationId": "chatkit-workspace-send-message", "parameters": [ { - "name": "page_size", - "in": "query", - "required": false, + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } }, { - "name": "next_page_token", - "in": "query", - "required": false, + "name": "agent_id", + "in": "path", + "description": "Agent inbox ID", + "required": true, "schema": { - "type": [ - "string", - "null" - ] + "type": "string" } }, { - "name": "team_id", + "name": "session_id", "in": "path", + "description": "Session ID", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SendChatKitWorkspaceMessageRequestInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "", + "description": "ChatKit workspace messages after sending", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommonProviderInstallationPage" + "$ref": "#/components/schemas/MessagePaginatedResponse" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation/{id}": { - "get": { + "/api/v1/team/{team_id}/chatkit/workspace/agents/{agent_id}/turns": { + "post": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "Get common provider installation", - "description": "Gets a common-provider bundle visible to the caller.", - "operationId": "getCommonProviderInstallation", + "summary": "Submit ChatKit workspace turn", + "description": "Creates a session when needed, finalizes uploaded attachments, sends the owner message, and returns canonical conversation state.", + "operationId": "chatkit-workspace-submit-turn", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", + "name": "agent_id", "in": "path", + "description": "Agent inbox ID", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitChatKitWorkspaceTurnRequestInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "", + "description": "Submitted ChatKit workspace turn", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CommonProviderInstallationSerialized" + "$ref": "#/components/schemas/SubmitChatKitWorkspaceTurnResponse" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/ownership": { - "post": { + "/api/v1/team/{team_id}/chatkit/workspace/bootstrap": { + "get": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "Set installation ownership", - "description": "Set bundle administration to team or private; requires current ownership authority.", - "operationId": "setCommonProviderInstallationOwnership", + "summary": "Bootstrap ChatKit workspace", + "description": "Returns the sidebar and an optional active conversation snapshot in one request.", + "operationId": "chatkit-workspace-bootstrap", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", - "in": "path", - "required": true, + "name": "agent_page_size", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int64" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" - } + }, + { + "name": "agent_next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] } }, - "required": true - }, + { + "name": "session_page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "message_page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "queue_page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "active_session_id", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedUuidV4" + } + ] + } + }, + { + "name": "agent_sort", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "session_sort", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "q", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + } + ], "responses": { "200": { - "description": "", + "description": "ChatKit workspace bootstrap projection", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/ChatKitWorkspaceBootstrapResponse" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/ownership/grants": { + "/api/v1/team/{team_id}/chatkit/workspace/search": { "get": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "List installation ownership grants", - "description": "List private bundle administrators; requires ownership authority.", - "operationId": "listCommonProviderInstallationOwnershipGrants", + "summary": "Search ChatKit", + "description": "Searches visible session titles, participating agents, and messages across the team. When session_id is provided, searches messages only within that visible session.", + "operationId": "chatkit-search", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", - "in": "path", + "name": "q", + "in": "query", "required": true, "schema": { "type": "string" } + }, + { + "name": "session_id", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedUuidV4" + } + ] + } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } } ], "responses": { "200": { - "description": "", + "description": "Consolidated ChatKit search results", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResourceGrant" - } + "$ref": "#/components/schemas/ChatKitSearchHitPaginatedResponse" + } + } + } + }, + "400": { + "description": "Invalid query or pagination cursor", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Scoped session not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } - } - }, + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/interrupt": { "post": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "Add installation ownership grant", - "description": "Grant same-tenant private administration; requires ownership authority.", - "operationId": "addCommonProviderInstallationOwnershipGrant", + "summary": "Interrupt ChatKit workspace session", + "description": "Interrupts the active ChatKit HTTP agent response for a ChatKit workspace session.", + "operationId": "chatkit-workspace-interrupt-session", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", + "name": "session_id", "in": "path", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "", + "description": "ChatKit workspace session interruption requested", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/InterruptChatKitSessionResponse" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/ownership/grants/{principal_type}/{principal_id}": { - "delete": { + "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/messages": { + "get": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "Remove installation ownership grant", - "description": "Remove an administrator while preserving the last private owner.", - "operationId": "removeCommonProviderInstallationOwnershipGrant", + "summary": "List ChatKit workspace messages", + "description": "Lists newest-first message history for a ChatKit workspace session with standard pagination.", + "operationId": "chatkit-workspace-messages", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", + "name": "session_id", "in": "path", + "description": "Session ID", "required": true, "schema": { "type": "string" } }, { - "name": "principal_type", - "in": "path", - "required": true, + "name": "page_size", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int64" } }, { - "name": "principal_id", - "in": "path", - "required": true, + "name": "next_page_token", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": [ + "string", + "null" + ] } } ], "responses": { "200": { - "description": "" + "description": "ChatKit workspace messages", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MessagePaginatedResponse" + } + } + } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/visibility": { - "post": { + "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/read-state": { + "put": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "Set installation visibility", - "description": "Set bundle discovery and use to team or private; requires ownership authority.", - "operationId": "setCommonProviderInstallationVisibility", + "summary": "Update ChatKit session read state", + "description": "Marks the shared ChatKit session read or unread for only the authenticated user.", + "operationId": "chatkit-workspace-update-session-read-state", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", + "name": "session_id", "in": "path", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -18218,7 +18488,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" + "$ref": "#/components/schemas/UpdateChatKitSessionUserStateRequestInner" } } }, @@ -18226,271 +18496,301 @@ }, "responses": { "200": { - "description": "", + "description": "Current user's ChatKit session read state", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/ChatKitSessionUserState" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/visibility/grants": { - "get": { + "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/rename": { + "patch": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "List installation visibility grants", - "description": "List private bundle visibility principals; requires ownership authority.", - "operationId": "listCommonProviderInstallationVisibilityGrants", + "summary": "Rename ChatKit workspace thread", + "description": "Renames the selected ChatKit workspace ChatKit session.", + "operationId": "chatkit-workspace-rename-thread", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", + "name": "session_id", "in": "path", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RenameChatKitWorkspaceThreadRequestInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "", + "description": "Renamed ChatKit workspace thread", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResourceGrant" - } + "$ref": "#/components/schemas/Session" } } } } - } - }, - "post": { + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/chatkit/workspace/sessions/{session_id}/snapshot": { + "get": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "Add installation visibility grant", - "description": "Grant same-tenant private visibility; requires ownership authority.", - "operationId": "addCommonProviderInstallationVisibilityGrant", + "summary": "Get ChatKit workspace conversation snapshot", + "description": "Returns messages, pending queued turns, and the durable event revision for one session.", + "operationId": "chatkit-workspace-conversation-snapshot", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", + "name": "session_id", "in": "path", + "description": "Session ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" - } + }, + { + "name": "message_page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } }, - "required": true - }, + { + "name": "queue_page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], "responses": { "200": { - "description": "", + "description": "ChatKit workspace conversation snapshot", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/ChatKitWorkspaceConversationSnapshot" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/visibility/grants/{principal_type}/{principal_id}": { - "delete": { + "/api/v1/team/{team_id}/chatkit/workspace/sidebar": { + "get": { "tags": [ - "managed-credential", + "chatkit", "v1" ], - "summary": "Remove installation visibility grant", - "description": "Remove one private visibility principal; requires ownership authority.", - "operationId": "removeCommonProviderInstallationVisibilityGrant", + "summary": "List ChatKit workspace sidebar", + "description": "Lists ChatKit agents with nested session previews for ChatKit workspace.", + "operationId": "chatkit-workspace-sidebar", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", - "in": "path", - "required": true, + "name": "agent_page_size", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int64" } }, { - "name": "principal_type", - "in": "path", - "required": true, + "name": "agent_next_page_token", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": [ + "string", + "null" + ] } }, { - "name": "principal_id", - "in": "path", - "required": true, + "name": "session_page_size", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": "integer", + "format": "int64" } - } - ], - "responses": { - "200": { - "description": "" - } - } - } - }, - "/api/v1/team/{team_id}/credential/provider-provisioner/catalog": { - "get": { - "summary": "List provider provisioner catalog entries", - "description": "Lists built-in provider provisioners with instructions and creation form metadata.", - "operationId": "list_provider_provisioner_catalog", - "parameters": [ + }, { - "name": "team_id", - "in": "path", - "required": true, + "name": "message_page_size", + "in": "query", + "required": false, "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Provider provisioner catalog", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Vec" - } - } + "type": "integer", + "format": "int64" } - } - } - } - }, - "/api/v1/team/{team_id}/credential/provider-provisioning/start": { - "post": { - "summary": "Start provider app provisioning", - "description": "Starts upstream app provisioning for a provider-specific one-shot setup flow.", - "operationId": "start_provider_app_provisioning", - "parameters": [ + }, { - "name": "team_id", - "in": "path", - "required": true, + "name": "queue_page_size", + "in": "query", + "required": false, "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartProviderAppProvisioningBody" - } + "type": "integer", + "format": "int64" } }, - "required": true - }, - "responses": { - "200": { - "description": "Provider app provisioning response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProviderAppProvisioningResponse" + { + "name": "active_session_id", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedUuidV4" } - } + ] } - } - } - } - }, - "/api/v1/team/{team_id}/credential/provider-provisioning/{state_id}/action": { - "get": { - "summary": "Get a provider provisioning browser action", - "description": "Returns the authenticated, expiring browser handoff for a provider provisioning flow.", - "operationId": "get_provider_provisioning_human_action", - "parameters": [ + }, { - "name": "team_id", - "in": "path", - "required": true, + "name": "agent_sort", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": [ + "string", + "null" + ] } }, { - "name": "state_id", - "in": "path", - "required": true, + "name": "session_sort", + "in": "query", + "required": false, "schema": { - "type": "string" + "type": [ + "string", + "null" + ] + } + }, + { + "name": "q", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] } } ], "responses": { "200": { - "description": "Provider provisioning browser action", + "description": "ChatKit workspace sidebar", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProviderProvisioningHumanAction" + "$ref": "#/components/schemas/ChatKitWorkspaceSidebarResponse" } } } } - } + }, + "security": [ + {}, + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/credential/provider-provisioning/{state_id}/resume": { + "/api/v1/team/{team_id}/credential/broker/{broker_state_id}/resume": { "post": { - "summary": "Resume provider app provisioning", - "description": "Resumes upstream app provisioning after redirect, form post, or manual provider step.", - "operationId": "resume_provider_app_provisioning", + "summary": "Resume a user-credential brokering flow", + "operationId": "resume_user_credential_brokering", "parameters": [ { "name": "team_id", @@ -18501,7 +18801,7 @@ } }, { - "name": "state_id", + "name": "broker_state_id", "in": "path", "required": true, "schema": { @@ -18513,7 +18813,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResumeProviderAppProvisioningBody" + "$ref": "#/components/schemas/ResumeUserCredentialBrokeringParams" } } }, @@ -18521,11 +18821,11 @@ }, "responses": { "200": { - "description": "Provider app provisioning response", + "description": "Brokering response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProviderAppProvisioningResponse" + "$ref": "#/components/schemas/UserCredentialBrokeringResponse" } } } @@ -18533,19 +18833,16 @@ } } }, - "/api/v1/team/{team_id}/credential/resource-server": { + "/api/v1/team/{team_id}/credential/common-provider-installation": { "get": { - "summary": "List resource-server credentials", - "operationId": "list_resource_server_credentials", + "tags": [ + "managed-credential", + "v1" + ], + "summary": "List common provider installations", + "description": "Lists common-provider bundles visible to the caller.", + "operationId": "listCommonProviderInstallations", "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "page_size", "in": "query", @@ -18560,39 +18857,14 @@ "in": "query", "required": false, "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Page of credentials", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceServerCredentialSerializedPaginatedResponse" - } - } - } - } - } - } - }, - "/api/v1/team/{team_id}/credential/resource-server/{id}": { - "get": { - "summary": "Get a resource-server credential", - "operationId": "get_resource_server_credential", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" + "type": [ + "string", + "null" + ] } }, { - "name": "id", + "name": "team_id", "in": "path", "required": true, "schema": { @@ -18602,47 +18874,27 @@ ], "responses": { "200": { - "description": "Credential", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceServerCredentialSerialized" + "$ref": "#/components/schemas/CommonProviderInstallationPage" } } } } } - }, - "delete": { - "summary": "Delete a resource-server credential", - "operationId": "delete_resource_server_credential", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + } + }, + "/api/v1/team/{team_id}/credential/common-provider-installation/{id}": { + "get": { + "tags": [ + "managed-credential", + "v1" ], - "responses": { - "200": { - "description": "Deleted" - } - } - }, - "patch": { - "summary": "Update a resource-server credential", - "operationId": "update_resource_server_credential", + "summary": "Get common provider installation", + "description": "Gets a common-provider bundle visible to the caller.", + "operationId": "getCommonProviderInstallation", "parameters": [ { "name": "team_id", @@ -18661,23 +18913,13 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateCredentialBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Updated credential", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceServerCredentialSerialized" + "$ref": "#/components/schemas/CommonProviderInstallationSerialized" } } } @@ -18685,12 +18927,15 @@ } } }, - "/api/v1/team/{team_id}/credential/resource-server/{id}/ownership": { + "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/ownership": { "post": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "set_rsc_ownership", + "summary": "Set installation ownership", + "description": "Set bundle administration to team or private; requires current ownership authority.", + "operationId": "setCommonProviderInstallationOwnership", "parameters": [ { "name": "team_id", @@ -18705,7 +18950,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -18733,12 +18978,15 @@ } } }, - "/api/v1/team/{team_id}/credential/resource-server/{id}/ownership/grants": { + "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/ownership/grants": { "get": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "list_rsc_ownership_grants", + "summary": "List installation ownership grants", + "description": "List private bundle administrators; requires ownership authority.", + "operationId": "listCommonProviderInstallationOwnershipGrants", "parameters": [ { "name": "team_id", @@ -18753,7 +19001,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -18775,9 +19023,12 @@ }, "post": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "add_rsc_ownership_grant", + "summary": "Add installation ownership grant", + "description": "Grant same-tenant private administration; requires ownership authority.", + "operationId": "addCommonProviderInstallationOwnershipGrant", "parameters": [ { "name": "team_id", @@ -18792,7 +19043,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -18820,12 +19071,15 @@ } } }, - "/api/v1/team/{team_id}/credential/resource-server/{id}/ownership/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/ownership/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "remove_rsc_ownership_grant", + "summary": "Remove installation ownership grant", + "description": "Remove an administrator while preserving the last private owner.", + "operationId": "removeCommonProviderInstallationOwnershipGrant", "parameters": [ { "name": "team_id", @@ -18840,7 +19094,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } }, { @@ -18867,12 +19121,15 @@ } } }, - "/api/v1/team/{team_id}/credential/resource-server/{id}/visibility": { + "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/visibility": { "post": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "set_rsc_visibility", + "summary": "Set installation visibility", + "description": "Set bundle discovery and use to team or private; requires ownership authority.", + "operationId": "setCommonProviderInstallationVisibility", "parameters": [ { "name": "team_id", @@ -18887,7 +19144,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -18915,12 +19172,15 @@ } } }, - "/api/v1/team/{team_id}/credential/resource-server/{id}/visibility/grants": { + "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/visibility/grants": { "get": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "list_rsc_visibility_grants", + "summary": "List installation visibility grants", + "description": "List private bundle visibility principals; requires ownership authority.", + "operationId": "listCommonProviderInstallationVisibilityGrants", "parameters": [ { "name": "team_id", @@ -18935,7 +19195,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -18957,9 +19217,12 @@ }, "post": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "add_rsc_visibility_grant", + "summary": "Add installation visibility grant", + "description": "Grant same-tenant private visibility; requires ownership authority.", + "operationId": "addCommonProviderInstallationVisibilityGrant", "parameters": [ { "name": "team_id", @@ -18974,7 +19237,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -19002,12 +19265,15 @@ } } }, - "/api/v1/team/{team_id}/credential/resource-server/{id}/visibility/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/credential/common-provider-installation/{id}/visibility/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ - "managed-credential" + "managed-credential", + "v1" ], - "operationId": "remove_rsc_visibility_grant", + "summary": "Remove installation visibility grant", + "description": "Remove one private visibility principal; requires ownership authority.", + "operationId": "removeCommonProviderInstallationVisibilityGrant", "parameters": [ { "name": "team_id", @@ -19022,7 +19288,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } }, { @@ -19049,10 +19315,11 @@ } } }, - "/api/v1/team/{team_id}/credential/setup-items": { + "/api/v1/team/{team_id}/credential/provider-provisioner/catalog": { "get": { - "summary": "List credential setup items", - "operationId": "list_credential_setup_items", + "summary": "List provider provisioner catalog entries", + "description": "Lists built-in provider provisioners with instructions and creation form metadata.", + "operationId": "list_provider_provisioner_catalog", "parameters": [ { "name": "team_id", @@ -19061,50 +19328,54 @@ "schema": { "type": "string" } - }, + } + ], + "responses": { + "200": { + "description": "Provider provisioner catalog", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Vec" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/credential/provider-provisioning/start": { + "post": { + "summary": "Start provider app provisioning", + "description": "Starts upstream app provisioning for a provider-specific one-shot setup flow.", + "operationId": "start_provider_app_provisioning", + "parameters": [ { - "name": "page_size", - "in": "query", - "required": false, + "name": "team_id", + "in": "path", + "required": true, "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "status", - "in": "query", - "required": false, - "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/CredentialSetupItemStatus" - } - ] + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProviderAppProvisioningBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Credential setup items", + "description": "Provider app provisioning response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CredentialSetupItemPaginatedResponse" + "$ref": "#/components/schemas/ProviderAppProvisioningResponse" } } } @@ -19112,10 +19383,11 @@ } } }, - "/api/v1/team/{team_id}/credential/setup-items/{id}": { + "/api/v1/team/{team_id}/credential/provider-provisioning/{state_id}/action": { "get": { - "summary": "Get a credential setup item", - "operationId": "get_credential_setup_item", + "summary": "Get a provider provisioning browser action", + "description": "Returns the authenticated, expiring browser handoff for a provider provisioning flow.", + "operationId": "get_provider_provisioning_human_action", "parameters": [ { "name": "team_id", @@ -19126,7 +19398,7 @@ } }, { - "name": "id", + "name": "state_id", "in": "path", "required": true, "schema": { @@ -19136,11 +19408,11 @@ ], "responses": { "200": { - "description": "Credential setup item", + "description": "Provider provisioning browser action", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CredentialSetupItem" + "$ref": "#/components/schemas/ProviderProvisioningHumanAction" } } } @@ -19148,10 +19420,11 @@ } } }, - "/api/v1/team/{team_id}/credential/setup-items/{id}/complete": { + "/api/v1/team/{team_id}/credential/provider-provisioning/{state_id}/resume": { "post": { - "summary": "Complete a credential setup item", - "operationId": "complete_credential_setup_item", + "summary": "Resume provider app provisioning", + "description": "Resumes upstream app provisioning after redirect, form post, or manual provider step.", + "operationId": "resume_provider_app_provisioning", "parameters": [ { "name": "team_id", @@ -19162,7 +19435,7 @@ } }, { - "name": "id", + "name": "state_id", "in": "path", "required": true, "schema": { @@ -19174,7 +19447,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CompleteCredentialSetupItemBody" + "$ref": "#/components/schemas/ResumeProviderAppProvisioningBody" } } }, @@ -19182,11 +19455,11 @@ }, "responses": { "200": { - "description": "Credential setup completion response", + "description": "Provider app provisioning response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StartCredentialSetupItemResponse" + "$ref": "#/components/schemas/ProviderAppProvisioningResponse" } } } @@ -19194,10 +19467,10 @@ } } }, - "/api/v1/team/{team_id}/credential/setup-items/{id}/resume": { - "post": { - "summary": "Resume a credential setup item", - "operationId": "resume_credential_setup_item", + "/api/v1/team/{team_id}/credential/resource-server": { + "get": { + "summary": "List resource-server credentials", + "operationId": "list_resource_server_credentials", "parameters": [ { "name": "team_id", @@ -19208,31 +19481,30 @@ } }, { - "name": "id", - "in": "path", - "required": true, + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResumeCredentialSetupItemBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Credential setup resume response", + "description": "Page of credentials", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StartCredentialSetupItemResponse" + "$ref": "#/components/schemas/ResourceServerCredentialSerializedPaginatedResponse" } } } @@ -19240,10 +19512,10 @@ } } }, - "/api/v1/team/{team_id}/credential/setup-items/{id}/start": { - "post": { - "summary": "Start a credential setup item", - "operationId": "start_credential_setup_item", + "/api/v1/team/{team_id}/credential/resource-server/{id}": { + "get": { + "summary": "Get a resource-server credential", + "operationId": "get_resource_server_credential", "parameters": [ { "name": "team_id", @@ -19262,34 +19534,22 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartCredentialSetupItemBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Credential setup start response", + "description": "Credential", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StartCredentialSetupItemResponse" + "$ref": "#/components/schemas/ResourceServerCredentialSerialized" } } } } } - } - }, - "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/resource-server": { - "post": { - "summary": "Create a resource-server credential", - "operationId": "create_resource_server_credential", + }, + "delete": { + "summary": "Delete a resource-server credential", + "operationId": "delete_resource_server_credential", "parameters": [ { "name": "team_id", @@ -19300,7 +19560,7 @@ } }, { - "name": "credential_source_type_id", + "name": "id", "in": "path", "required": true, "schema": { @@ -19308,35 +19568,15 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateResourceServerCredentialParamsInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Created credential", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceServerCredentialSerialized" - } - } - } + "description": "Deleted" } } - } - }, - "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/resource-server/encrypt": { - "post": { - "summary": "Encrypt a resource-server credential configuration", - "description": "Field-level encrypts the supplied raw configuration using the credential source's encrypter and the supplied dek_alias.", - "operationId": "encrypt_resource_server_configuration", + }, + "patch": { + "summary": "Update a resource-server credential", + "operationId": "update_resource_server_credential", "parameters": [ { "name": "team_id", @@ -19347,7 +19587,7 @@ } }, { - "name": "credential_source_type_id", + "name": "id", "in": "path", "required": true, "schema": { @@ -19359,7 +19599,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EncryptCredentialConfigurationParamsInner" + "$ref": "#/components/schemas/UpdateCredentialBody" } } }, @@ -19367,15 +19607,24 @@ }, "responses": { "200": { - "description": "Encrypted configuration" + "description": "Updated credential", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResourceServerCredentialSerialized" + } + } + } } } } }, - "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/user-credential": { + "/api/v1/team/{team_id}/credential/resource-server/{id}/ownership": { "post": { - "summary": "Create a user credential", - "operationId": "create_user_credential", + "tags": [ + "managed-credential" + ], + "operationId": "set_rsc_ownership", "parameters": [ { "name": "team_id", @@ -19386,11 +19635,11 @@ } }, { - "name": "credential_source_type_id", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -19398,7 +19647,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateUserCredentialParamsInner" + "$ref": "#/components/schemas/SetResourceAccessModeRequest" } } }, @@ -19406,11 +19655,11 @@ }, "responses": { "200": { - "description": "Created credential", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserCredentialSerialized" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -19418,10 +19667,12 @@ } } }, - "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/user-credential/broker": { - "post": { - "summary": "Start a user-credential brokering flow", - "operationId": "start_user_credential_brokering", + "/api/v1/team/{team_id}/credential/resource-server/{id}/ownership/grants": { + "get": { + "tags": [ + "managed-credential" + ], + "operationId": "list_rsc_ownership_grants", "parameters": [ { "name": "team_id", @@ -19432,42 +19683,35 @@ } }, { - "name": "credential_source_type_id", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartBrokeringBodyExternal" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Brokering response", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserCredentialBrokeringResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } } } } } } - } - }, - "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/user-credential/encrypt": { + }, "post": { - "summary": "Encrypt a user-credential configuration", - "operationId": "encrypt_user_credential_configuration", + "tags": [ + "managed-credential" + ], + "operationId": "add_rsc_ownership_grant", "parameters": [ { "name": "team_id", @@ -19478,11 +19722,11 @@ } }, { - "name": "credential_source_type_id", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -19490,7 +19734,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EncryptCredentialConfigurationParamsInner" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -19498,49 +19742,11 @@ }, "responses": { "200": { - "description": "Encrypted configuration" - } - } - } - }, - "/api/v1/team/{team_id}/credential/user-credential": { - "get": { - "summary": "List user credentials", - "operationId": "list_user_credentials", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Page of credentials", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UserCredentialSerializedPaginatedResponse" + "$ref": "#/components/schemas/ResourceGrant" } } } @@ -19548,44 +19754,12 @@ } } }, - "/api/v1/team/{team_id}/credential/user-credential/{id}": { - "get": { - "summary": "Get a user credential", - "operationId": "get_user_credential", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Credential", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserCredentialSerialized" - } - } - } - } - } - }, + "/api/v1/team/{team_id}/credential/resource-server/{id}/ownership/grants/{principal_type}/{principal_id}": { "delete": { - "summary": "Delete a user credential", - "operationId": "delete_user_credential", + "tags": [ + "managed-credential" + ], + "operationId": "remove_rsc_ownership_grant", "parameters": [ { "name": "team_id", @@ -19600,22 +19774,11 @@ "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } - } - ], - "responses": { - "200": { - "description": "Deleted" - } - } - }, - "patch": { - "summary": "Update a user credential", - "operationId": "update_user_credential", - "parameters": [ + }, { - "name": "team_id", + "name": "principal_type", "in": "path", "required": true, "schema": { @@ -19623,7 +19786,7 @@ } }, { - "name": "id", + "name": "principal_id", "in": "path", "required": true, "schema": { @@ -19631,36 +19794,19 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateCredentialBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Updated credential", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UserCredentialSerialized" - } - } - } + "description": "" } } } }, - "/api/v1/team/{team_id}/credential/user-credential/{id}/ownership": { + "/api/v1/team/{team_id}/credential/resource-server/{id}/visibility": { "post": { "tags": [ "managed-credential" ], - "operationId": "set_uc_ownership", + "operationId": "set_rsc_visibility", "parameters": [ { "name": "team_id", @@ -19703,12 +19849,12 @@ } } }, - "/api/v1/team/{team_id}/credential/user-credential/{id}/ownership/grants": { + "/api/v1/team/{team_id}/credential/resource-server/{id}/visibility/grants": { "get": { "tags": [ "managed-credential" ], - "operationId": "list_uc_ownership_grants", + "operationId": "list_rsc_visibility_grants", "parameters": [ { "name": "team_id", @@ -19747,7 +19893,7 @@ "tags": [ "managed-credential" ], - "operationId": "add_uc_ownership_grant", + "operationId": "add_rsc_visibility_grant", "parameters": [ { "name": "team_id", @@ -19790,12 +19936,12 @@ } } }, - "/api/v1/team/{team_id}/credential/user-credential/{id}/ownership/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/credential/resource-server/{id}/visibility/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ "managed-credential" ], - "operationId": "remove_uc_ownership_grant", + "operationId": "remove_rsc_visibility_grant", "parameters": [ { "name": "team_id", @@ -19837,12 +19983,10 @@ } } }, - "/api/v1/team/{team_id}/credential/user-credential/{id}/visibility": { - "post": { - "tags": [ - "managed-credential" - ], - "operationId": "set_uc_visibility", + "/api/v1/team/{team_id}/credential/setup-items": { + "get": { + "summary": "List credential setup items", + "operationId": "list_credential_setup_items", "parameters": [ { "name": "team_id", @@ -19853,31 +19997,48 @@ } }, { - "name": "id", - "in": "path", - "required": true, + "name": "page_size", + "in": "query", + "required": false, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "integer", + "format": "int64" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" - } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] } }, - "required": true - }, + { + "name": "status", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CredentialSetupItemStatus" + } + ] + } + } + ], "responses": { "200": { - "description": "", + "description": "Credential setup items", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/CredentialSetupItemPaginatedResponse" } } } @@ -19885,12 +20046,10 @@ } } }, - "/api/v1/team/{team_id}/credential/user-credential/{id}/visibility/grants": { + "/api/v1/team/{team_id}/credential/setup-items/{id}": { "get": { - "tags": [ - "managed-credential" - ], - "operationId": "list_uc_visibility_grants", + "summary": "Get a credential setup item", + "operationId": "get_credential_setup_item", "parameters": [ { "name": "team_id", @@ -19905,31 +20064,28 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], "responses": { "200": { - "description": "", + "description": "Credential setup item", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResourceGrant" - } + "$ref": "#/components/schemas/CredentialSetupItem" } } } } } - }, + } + }, + "/api/v1/team/{team_id}/credential/setup-items/{id}/complete": { "post": { - "tags": [ - "managed-credential" - ], - "operationId": "add_uc_visibility_grant", + "summary": "Complete a credential setup item", + "operationId": "complete_credential_setup_item", "parameters": [ { "name": "team_id", @@ -19944,7 +20100,7 @@ "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -19952,7 +20108,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" + "$ref": "#/components/schemas/CompleteCredentialSetupItemBody" } } }, @@ -19960,11 +20116,11 @@ }, "responses": { "200": { - "description": "", + "description": "Credential setup completion response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/StartCredentialSetupItemResponse" } } } @@ -19972,12 +20128,10 @@ } } }, - "/api/v1/team/{team_id}/credential/user-credential/{id}/visibility/grants/{principal_type}/{principal_id}": { - "delete": { - "tags": [ - "managed-credential" - ], - "operationId": "remove_uc_visibility_grant", + "/api/v1/team/{team_id}/credential/setup-items/{id}/resume": { + "post": { + "summary": "Resume a credential setup item", + "operationId": "resume_credential_setup_item", "parameters": [ { "name": "team_id", @@ -19991,42 +20145,39 @@ "name": "id", "in": "path", "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "principal_type", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "principal_id", - "in": "path", - "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResumeCredentialSetupItemBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "" + "description": "Credential setup resume response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartCredentialSetupItemResponse" + } + } + } } } } }, - "/api/v1/team/{team_id}/human-approval": { + "/api/v1/team/{team_id}/credential/setup-items/{id}/start": { "post": { - "tags": [ - "v1" - ], - "summary": "Create a human approval action", - "description": "Create a human approval action and return a secure approval URL token.", - "operationId": "create_human_approval_action", + "summary": "Start a credential setup item", + "operationId": "start_credential_setup_item", "parameters": [ { "name": "team_id", @@ -20035,13 +20186,21 @@ "schema": { "type": "string" } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateHumanApprovalActionRequestInner" + "$ref": "#/components/schemas/StartCredentialSetupItemBody" } } }, @@ -20049,41 +20208,11 @@ }, "responses": { "200": { - "description": "Human approval action created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateHumanApprovalActionResponse" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "401": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "", + "description": "Credential setup start response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/StartCredentialSetupItemResponse" } } } @@ -20091,19 +20220,22 @@ } } }, - "/api/v1/team/{team_id}/identity/oauth/register": { + "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/resource-server": { "post": { - "tags": [ - "identity" - ], - "summary": "Register team-scoped OAuth client", - "description": "Register a public PKCE OAuth client through Dynamic Client Registration. This endpoint is intentionally scoped by an org subdomain and /team/{team_id} path so MCP clients do not need Tilde-specific registration fields.", - "operationId": "register_team_oauth_client", + "summary": "Create a resource-server credential", + "operationId": "create_resource_server_credential", "parameters": [ { "name": "team_id", "in": "path", - "description": "Tilde team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credential_source_type_id", + "in": "path", "required": true, "schema": { "type": "string" @@ -20114,64 +20246,43 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RegisterOAuthClientRequest" + "$ref": "#/components/schemas/CreateResourceServerCredentialParamsInner" } } }, "required": true }, "responses": { - "201": { - "description": "OAuth client registered", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RegisterOAuthClientResponse" - } - } - } - }, - "400": { - "description": "Invalid registration request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal server error", + "200": { + "description": "Created credential", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ResourceServerCredentialSerialized" } } } } - }, - "security": [ - {} - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/chatkit-realtime-ticket": { + "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/resource-server/encrypt": { "post": { - "tags": [ - "identity", - "chatkit", - "v1" - ], - "summary": "Issue an OpenBot ChatKit realtime socket ticket", - "description": "Exchanges an installation-audience OpenBot bearer token for a 60-second credential accepted only by the requested team's ChatKit realtime WebSocket. Present it as the `tilde.chatkit-realtime.ticket.` WebSocket subprotocol; the long-lived access token never enters a URL or browser JavaScript.", - "operationId": "issue_openbot_chatkit_realtime_ticket", + "summary": "Encrypt a resource-server credential configuration", + "description": "Field-level encrypts the supplied raw configuration using the credential source's encrypter and the supplied dek_alias.", + "operationId": "encrypt_resource_server_configuration", "parameters": [ { "name": "team_id", "in": "path", - "description": "Tilde team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credential_source_type_id", + "in": "path", "required": true, "schema": { "type": "string" @@ -20182,7 +20293,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IssueChatKitRealtimeSocketTicketRequest" + "$ref": "#/components/schemas/EncryptCredentialConfigurationParamsInner" } } }, @@ -20190,117 +20301,119 @@ }, "responses": { "200": { - "description": "Short-lived ChatKit realtime socket ticket", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ChatKitRealtimeSocketTicket" - } - } + "description": "Encrypted configuration" + } + } + } + }, + "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/user-credential": { + "post": { + "summary": "Create a user credential", + "operationId": "create_user_credential", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } }, - "401": { - "description": "Invalid OpenBot access token", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } + { + "name": "credential_source_type_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateUserCredentialParamsInner" } } }, - "403": { - "description": "Token is not bound to this team", + "required": true + }, + "responses": { + "200": { + "description": "Created credential", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/UserCredentialSerialized" } } } } - }, - "security": [ - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/deployments": { - "get": { - "tags": [ - "identity", - "v1" - ], - "summary": "List OpenBot deployments", - "description": "Lists OpenBot OAuth registrations owned by the selected Tilde team.", - "operationId": "list_openbot_deployments", + "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/user-credential/broker": { + "post": { + "summary": "Start a user-credential brokering flow", + "operationId": "start_user_credential_brokering", "parameters": [ { "name": "team_id", "in": "path", - "description": "Tilde team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credential_source_type_id", + "in": "path", "required": true, "schema": { "type": "string" } } ], - "responses": { - "200": { - "description": "OpenBot deployments", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListOpenBotDeploymentsResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartBrokeringBodyExternal" } } }, - "403": { - "description": "Not a team member", + "required": true + }, + "responses": { + "200": { + "description": "Brokering response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/UserCredentialBrokeringResponse" } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] - }, + } + } + }, + "/api/v1/team/{team_id}/credential/source/{credential_source_type_id}/user-credential/encrypt": { "post": { - "tags": [ - "identity", - "v1" - ], - "summary": "Register an OpenBot deployment", - "description": "Creates or reconciles a public PKCE OAuth client for an OpenBot deployment owned by the selected Tilde team.", - "operationId": "register_openbot_deployment", + "summary": "Encrypt a user-credential configuration", + "operationId": "encrypt_user_credential_configuration", "parameters": [ { "name": "team_id", "in": "path", - "description": "Tilde team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credential_source_type_id", + "in": "path", "required": true, "schema": { "type": "string" @@ -20311,7 +20424,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RegisterOpenBotDeploymentRequest" + "$ref": "#/components/schemas/EncryptCredentialConfigurationParamsInner" } } }, @@ -20319,55 +20432,60 @@ }, "responses": { "200": { - "description": "OpenBot deployment registered", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenBotDeployment" - } - } + "description": "Encrypted configuration" + } + } + } + }, + "/api/v1/team/{team_id}/credential/user-credential": { + "get": { + "summary": "List user credentials", + "operationId": "list_user_credentials", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" } }, - "403": { - "description": "Not a team member", + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Page of credentials", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/UserCredentialSerializedPaginatedResponse" } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}": { + "/api/v1/team/{team_id}/credential/user-credential/{id}": { "get": { - "tags": [ - "identity", - "v1" - ], - "summary": "Get a hosted OpenBot instance", - "description": "Returns the server-owned canonical Vercel runtime project, Sandbox, image, hostname, and lifecycle state for one team-isolated OpenBot instance. Pre-consolidation instances have no runtime project and retain their readable deprecated split control and agent project fields.", - "operationId": "get_hosted_openbot_instance", + "summary": "Get a user credential", + "operationId": "get_user_credential", "parameters": [ { "name": "team_id", @@ -20378,7 +20496,7 @@ } }, { - "name": "instance_id", + "name": "id", "in": "path", "required": true, "schema": { @@ -20388,45 +20506,47 @@ ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HostedOpenBotInstance" - } - } - } - }, - "404": { - "description": "", + "description": "Credential", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/UserCredentialSerialized" } } } } - }, - "security": [ + } + }, + "delete": { + "summary": "Delete a user credential", + "operationId": "delete_user_credential", + "parameters": [ { - "api_key": [] + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, { - "bearer_token": [] + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } } - ] - } - }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/computer-image": { - "put": { - "tags": [ - "identity", - "v1" ], - "summary": "Set the hosted OpenBot computer image", - "description": "Records an immutable VCR digest owned by this instance's canonical runtime project, or by its legacy control project for a pre-consolidation instance, for subsequent OIDC-authenticated Sandbox creation.", - "operationId": "update_hosted_openbot_computer_image", + "responses": { + "200": { + "description": "Deleted" + } + } + }, + "patch": { + "summary": "Update a user credential", + "operationId": "update_user_credential", "parameters": [ { "name": "team_id", @@ -20437,7 +20557,7 @@ } }, { - "name": "instance_id", + "name": "id", "in": "path", "required": true, "schema": { @@ -20449,7 +20569,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateHostedOpenBotComputerImageRequest" + "$ref": "#/components/schemas/UpdateCredentialBody" } } }, @@ -20457,45 +20577,24 @@ }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HostedOpenBotInstance" - } - } - } - }, - "400": { - "description": "", + "description": "Updated credential", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/UserCredentialSerialized" } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/configuration": { - "put": { + "/api/v1/team/{team_id}/credential/user-credential/{id}/ownership": { + "post": { "tags": [ - "identity", - "v1" + "managed-credential" ], - "summary": "Configure a hosted OpenBot instance", - "description": "Installs allowlisted user-owned OpenBot runtime values into the instance's canonical runtime project and derives VERCEL_RUNTIME_PROJECT server-side. Pre-consolidation instances continue to receive values in both existing split projects. Tenant, OAuth, Computer, and platform identity are derived from authenticated server state.", - "operationId": "configure_hosted_openbot_instance", + "operationId": "set_uc_ownership", "parameters": [ { "name": "team_id", @@ -20506,11 +20605,11 @@ } }, { - "name": "instance_id", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -20518,7 +20617,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConfigureHostedOpenBotInstanceRequest" + "$ref": "#/components/schemas/SetResourceAccessModeRequest" } } }, @@ -20530,41 +20629,20 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HostedOpenBotInstance" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ResourceAuthorization" } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/git-token": { - "post": { + "/api/v1/team/{team_id}/credential/user-credential/{id}/ownership/grants": { + "get": { "tags": [ - "identity", - "v1" + "managed-credential" ], - "summary": "Re-mint a hosted OpenBot Code Storage Git token", - "description": "Mints a fresh 30-day `git:read`/`git:write` credential confined to this exe.dev instance's own Code Storage repository. Only the instance's runtime API key is accepted; the organization key never leaves Tilde.", - "operationId": "issue_hosted_openbot_git_token", + "operationId": "list_uc_ownership_grants", "parameters": [ { "name": "team_id", @@ -20575,11 +20653,11 @@ } }, { - "name": "instance_id", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -20589,48 +20667,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HostedOpenBotGitToken" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } } } } - }, - "401": { - "description": "Not the instance runtime API key", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "security": [ - { - "api_key": [] } - ] - } - }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases": { + } + }, "post": { "tags": [ - "identity", - "v1" + "managed-credential" ], - "summary": "Create a hosted OpenBot release", - "description": "Creates an uploading content-addressed Build Output API release. Consolidated instances require service=runtime and deploy the combined web, control, and agent artifact to the canonical runtime project. Pre-consolidation instances continue to accept the deprecated control and agents services.", - "operationId": "create_hosted_openbot_release", + "operationId": "add_uc_ownership_grant", "parameters": [ { "name": "team_id", @@ -20641,11 +20692,11 @@ } }, { - "name": "instance_id", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -20653,7 +20704,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateHostedOpenBotReleaseRequest" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -20665,41 +20716,20 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HostedOpenBotRelease" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ResourceGrant" } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases/{release_id}": { - "get": { + "/api/v1/team/{team_id}/credential/user-credential/{id}/ownership/grants/{principal_type}/{principal_id}": { + "delete": { "tags": [ - "identity", - "v1" + "managed-credential" ], - "summary": "Get a hosted OpenBot release", - "description": "Returns upload and deployment status, refreshing an in-progress deployment from Vercel when necessary.", - "operationId": "get_hosted_openbot_release", + "operationId": "remove_uc_ownership_grant", "parameters": [ { "name": "team_id", @@ -20710,7 +20740,15 @@ } }, { - "name": "instance_id", + "name": "id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "principal_type", "in": "path", "required": true, "schema": { @@ -20718,7 +20756,7 @@ } }, { - "name": "release_id", + "name": "principal_id", "in": "path", "required": true, "schema": { @@ -20728,45 +20766,17 @@ ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/HostedOpenBotRelease" - } - } - } - }, - "404": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] + "description": "" } - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases/{release_id}/files/{sha1}": { - "put": { + "/api/v1/team/{team_id}/credential/user-credential/{id}/visibility": { + "post": { "tags": [ - "identity", - "v1" + "managed-credential" ], - "summary": "Upload a hosted OpenBot release file", - "description": "Validates one declared digest and size, then streams the bytes to Vercel's content-addressed deployment file API without exposing the platform token.", - "operationId": "upload_hosted_openbot_release_file", + "operationId": "set_uc_visibility", "parameters": [ { "name": "team_id", @@ -20777,40 +20787,19 @@ } }, { - "name": "instance_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "release_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sha1", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], "requestBody": { "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "array", - "items": { - "type": "integer", - "format": "int32", - "minimum": 0 - } + "$ref": "#/components/schemas/SetResourceAccessModeRequest" } } }, @@ -20822,41 +20811,20 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HostedOpenBotRelease" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ResourceAuthorization" } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases/{release_id}/finalize": { - "post": { + "/api/v1/team/{team_id}/credential/user-credential/{id}/visibility/grants": { + "get": { "tags": [ - "identity", - "v1" + "managed-credential" ], - "summary": "Finalize a hosted OpenBot release", - "description": "Requires every manifest file to be uploaded, derives the canonical runtime project or legacy service-specific project server-side, and idempotently creates its production deployment.", - "operationId": "finalize_hosted_openbot_release", + "operationId": "list_uc_visibility_grants", "parameters": [ { "name": "team_id", @@ -20867,19 +20835,11 @@ } }, { - "name": "instance_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "release_id", + "name": "id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -20889,69 +20849,36 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HostedOpenBotRelease" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] - } - }, - "/api/v1/team/{team_id}/identity/realtime-ticket": { + } + }, "post": { "tags": [ - "identity" + "managed-credential" ], - "summary": "Issue proxy realtime ticket", - "description": "Requires the relevant explicit application capability or direct account administration. Runtime requests remain identity and tenant scoped.", - "operationId": "issue-proxy-realtime-ticket", + "operationId": "add_uc_visibility_grant", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team id", "required": true, "schema": { "type": "string" } }, { - "name": "X-Tilde-Org-Id", - "in": "header", - "description": "Organization routing when not selected by host", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "X-Tilde-Identity-Id", - "in": "header", - "description": "Enabled runtime identity acting in the route team", + "name": "id", + "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -20959,7 +20886,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IssueChatKitRealtimeSocketTicketRequest" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -20971,24 +20898,20 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ChatKitRealtimeSocketTicket" + "$ref": "#/components/schemas/ResourceGrant" } } } } - }, - "security": [ - { - "org_proxy_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/managed-user-credential": { - "get": { - "summary": "List typed managed user credentials", - "description": "Lists typed user-owned credentials with redacted summaries only.", - "operationId": "list_managed_user_credentials", + "/api/v1/team/{team_id}/credential/user-credential/{id}/visibility/grants/{principal_type}/{principal_id}": { + "delete": { + "tags": [ + "managed-credential" + ], + "operationId": "remove_uc_visibility_grant", "parameters": [ { "name": "team_id", @@ -20999,45 +20922,45 @@ } }, { - "name": "page_size", - "in": "query", - "required": false, + "name": "id", + "in": "path", + "required": true, "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/WrappedUuidV4" } }, { - "name": "next_page_token", - "in": "query", - "required": false, + "name": "principal_type", + "in": "path", + "required": true, "schema": { - "type": [ - "string", - "null" - ] + "type": "string" + } + }, + { + "name": "principal_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } } ], "responses": { "200": { - "description": "Managed user credentials", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ManagedUserCredentialSummaryPaginatedResponse" - } - } - } + "description": "" } } } }, - "/api/v1/team/{team_id}/managed-user-credential/type/{type_id}": { + "/api/v1/team/{team_id}/human-approval": { "post": { - "summary": "Create a typed managed user credential", - "description": "Creates a typed user-owned credential from plaintext secretValue and stores encrypted fields at rest.", - "operationId": "create_managed_user_credential", + "tags": [ + "v1" + ], + "summary": "Create a human approval action", + "description": "Create a human approval action and return a secure approval URL token.", + "operationId": "create_human_approval_action", "parameters": [ { "name": "team_id", @@ -21046,21 +20969,13 @@ "schema": { "type": "string" } - }, - { - "name": "type_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateManagedUserCredentialBody" + "$ref": "#/components/schemas/CreateHumanApprovalActionRequestInner" } } }, @@ -21068,238 +20983,158 @@ }, "responses": { "200": { - "description": "Created managed user credential", + "description": "Human approval action created", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ManagedUserCredentialSummary" + "$ref": "#/components/schemas/CreateHumanApprovalActionResponse" } } } - } - } - } - }, - "/api/v1/team/{team_id}/managed-user-credential/type/{type_id}/{id}": { - "get": { - "summary": "Get encrypted typed managed user credential secret", - "description": "Returns the decrypted credential secret re-encrypted to the requesting trusted runtime.", - "operationId": "get_managed_user_credential_secret", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } }, - { - "name": "type_id", - "in": "path", - "required": true, - "schema": { - "type": "string" + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "401": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } }, - { - "name": "totp_at_unix_seconds", - "in": "query", - "required": false, - "schema": { - "type": [ - "integer", - "null" - ], - "format": "int64" - } - } - ], - "responses": { - "200": { - "description": "Encrypted secret", + "500": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ManagedUserCredentialSecretResponse" + "$ref": "#/components/schemas/Error" } } } } } - }, - "put": { - "summary": "Update a typed managed user credential", - "description": "Replaces a typed user-owned credential and stores encrypted fields at rest.", - "operationId": "update_managed_user_credential", + } + }, + "/api/v1/team/{team_id}/identity/oauth/register": { + "post": { + "tags": [ + "identity" + ], + "summary": "Register team-scoped OAuth client", + "description": "Register a public PKCE OAuth client through Dynamic Client Registration. This endpoint is intentionally scoped by an org subdomain and /team/{team_id} path so MCP clients do not need Tilde-specific registration fields.", + "operationId": "register_team_oauth_client", "parameters": [ { "name": "team_id", "in": "path", + "description": "Tilde team ID", "required": true, "schema": { "type": "string" } - }, - { - "name": "type_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateManagedUserCredentialBody" + "$ref": "#/components/schemas/RegisterOAuthClientRequest" } } }, "required": true }, "responses": { - "200": { - "description": "Updated managed user credential", + "201": { + "description": "OAuth client registered", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ManagedUserCredentialSummary" + "$ref": "#/components/schemas/RegisterOAuthClientResponse" } } } - } - } - } - }, - "/api/v1/team/{team_id}/managed-user-credential/{id}": { - "delete": { - "summary": "Delete a typed managed user credential", - "description": "Deletes a typed user-owned credential.", - "operationId": "delete_managed_user_credential", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" + }, + "400": { + "description": "Invalid registration request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "500": { + "description": "Internal server error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } } - ], - "responses": { - "200": { - "description": "Deleted managed user credential" - } - } + }, + "security": [ + {} + ] } }, - "/api/v1/team/{team_id}/mcp/available-tool-groups": { - "get": { + "/api/v1/team/{team_id}/identity/openbot/chatkit-realtime-ticket": { + "post": { "tags": [ - "mcp", + "identity", + "chatkit", "v1" ], - "summary": "List tool groups", - "description": "List all available tool group types that can be instantiated, filtered by deployment alias", - "operationId": "list-available-tool-groups", + "summary": "Issue an OpenBot ChatKit realtime socket ticket", + "description": "Exchanges an installation-audience OpenBot bearer token for a 60-second credential accepted only by the requested team's ChatKit realtime WebSocket. Present it as the `tilde.chatkit-realtime.ticket.` WebSocket subprotocol; the long-lived access token never enters a URL or browser JavaScript.", + "operationId": "issue_openbot_chatkit_realtime_ticket", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", + "description": "Tilde team ID", "required": true, "schema": { "type": "string" } - }, - { - "name": "page_size", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "deployment_alias", - "in": "query", - "required": true, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "include_global", - "in": "query", - "required": false, - "schema": { - "type": "boolean" - }, - "style": "form" } ], - "responses": { - "200": { - "description": "List available tool groups", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolGroupSourceSerializedPaginatedResponse" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueChatKitRealtimeSocketTicketRequest" } } }, - "400": { - "description": "Bad Request", + "required": true + }, + "responses": { + "200": { + "description": "Short-lived ChatKit realtime socket ticket", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ChatKitRealtimeSocketTicket" } } } }, "401": { - "description": "Unauthorized", + "description": "Invalid OpenBot access token", "content": { "application/json": { "schema": { @@ -21309,17 +21144,7 @@ } }, "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "Token is not bound to this team", "content": { "application/json": { "schema": { @@ -21330,78 +21155,39 @@ } }, "security": [ - { - "api_key": [] - }, { "bearer_token": [] } ] } }, - "/api/v1/team/{team_id}/mcp/available-tool-groups/{tool_group_source_type_id}/available-credentials/{credential_source_type_id}": { - "post": { + "/api/v1/team/{team_id}/identity/openbot/deployments": { + "get": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Create tool group", - "description": "Create a new tool group instance with the specified configuration", - "operationId": "create-tool-group-instance", + "summary": "List OpenBot deployments", + "description": "Lists OpenBot OAuth registrations owned by the selected Tilde team.", + "operationId": "list_openbot_deployments", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tool_group_source_type_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "credential_source_type_id", - "in": "path", + "description": "Tilde team ID", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateToolGroupInstanceParamsInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Create tool group instance", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolGroupInstanceSerialized" - } - } - } - }, - "400": { - "description": "Bad Request", + "description": "OpenBot deployments", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ListOpenBotDeploymentsResponse" } } } @@ -21417,17 +21203,7 @@ } }, "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "Not a team member", "content": { "application/json": { "schema": { @@ -21445,38 +21221,20 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/available-tool-groups/{tool_group_source_type_id}/available-credentials/{credential_source_type_id}/auto-provision": { + }, "post": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Auto-provision tool group", - "description": "Provision an upstream provider app, create the tool group instance, and start credential brokering when required.", - "operationId": "auto-provision-tool-group-instance", + "summary": "Register an OpenBot deployment", + "description": "Creates or reconciles a public PKCE OAuth client for an OpenBot deployment owned by the selected Tilde team.", + "operationId": "register_openbot_deployment", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tool_group_source_type_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "credential_source_type_id", - "in": "path", + "description": "Tilde team ID", "required": true, "schema": { "type": "string" @@ -21487,7 +21245,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AutoProvisionToolGroupInstanceParamsInner" + "$ref": "#/components/schemas/RegisterOpenBotDeploymentRequest" } } }, @@ -21495,21 +21253,11 @@ }, "responses": { "200": { - "description": "Auto-provision tool group instance", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AutoProvisionToolGroupInstanceResponse" - } - } - } - }, - "400": { - "description": "Bad Request", + "description": "OpenBot deployment registered", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/OpenBotDeployment" } } } @@ -21525,17 +21273,7 @@ } }, "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "Not a team member", "content": { "application/json": { "schema": { @@ -21555,52 +21293,50 @@ ] } }, - "/api/v1/team/{team_id}/mcp/custom-tool-providers": { + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}": { "get": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "List custom tool providers", - "description": "List custom HTTP tool providers for a team", - "operationId": "list-custom-tool-providers", + "summary": "Get a hosted OpenBot instance", + "description": "Returns the server-owned canonical Vercel runtime project, Sandbox, image, hostname, and lifecycle state for one team-isolated OpenBot instance. Pre-consolidation instances have no runtime project and retain their readable deprecated split control and agent project fields.", + "operationId": "get_hosted_openbot_instance", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "page_size", - "in": "query", + "name": "instance_id", + "in": "path", "required": true, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, "schema": { "type": "string" - }, - "style": "form" + } } ], "responses": { "200": { - "description": "List custom tool providers", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomToolProviderListItemPaginatedResponse" + "$ref": "#/components/schemas/HostedOpenBotInstance" + } + } + } + }, + "404": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -21614,20 +21350,29 @@ "bearer_token": [] } ] - }, - "post": { + } + }, + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/computer-image": { + "put": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Create custom tool provider", - "description": "Create a custom HTTP tool provider from its discovery manifest", - "operationId": "create-custom-tool-provider", + "summary": "Set the hosted OpenBot computer image", + "description": "Records an immutable VCR digest owned by this instance's canonical runtime project, or by its legacy control project for a pre-consolidation instance, for subsequent OIDC-authenticated Sandbox creation.", + "operationId": "update_hosted_openbot_computer_image", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "instance_id", + "in": "path", "required": true, "schema": { "type": "string" @@ -21638,7 +21383,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateCustomToolProviderRequestInner" + "$ref": "#/components/schemas/UpdateHostedOpenBotComputerImageRequest" } } }, @@ -21646,11 +21391,21 @@ }, "responses": { "200": { - "description": "Create custom tool provider", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateCustomToolProviderResponse" + "$ref": "#/components/schemas/HostedOpenBotInstance" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -21666,42 +21421,60 @@ ] } }, - "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}": { - "get": { + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/configuration": { + "put": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Get custom tool provider", - "description": "Get a custom HTTP tool provider", - "operationId": "get-custom-tool-provider", + "summary": "Configure a hosted OpenBot instance", + "description": "Installs allowlisted user-owned OpenBot runtime values into the instance's canonical runtime project and derives VERCEL_RUNTIME_PROJECT server-side. Pre-consolidation instances continue to receive values in both existing split projects. Tenant, OAuth, Computer, and platform identity are derived from authenticated server state.", + "operationId": "configure_hosted_openbot_instance", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "instance_id", "in": "path", - "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConfigureHostedOpenBotInstanceRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Get custom tool provider", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomToolProviderDetails" + "$ref": "#/components/schemas/HostedOpenBotInstance" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -21715,29 +21488,29 @@ "bearer_token": [] } ] - }, - "delete": { + } + }, + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/git-token": { + "post": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Delete custom tool provider", - "description": "Delete a custom HTTP tool provider", - "operationId": "delete-custom-tool-provider", + "summary": "Re-mint a hosted OpenBot Code Storage Git token", + "description": "Mints a fresh 30-day `git:read`/`git:write` credential confined to this exe.dev instance's own Code Storage repository. Only the instance's runtime API key is accepted; the organization key never leaves Tilde.", + "operationId": "issue_hosted_openbot_git_token", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "instance_id", "in": "path", - "description": "Tool group instance ID", "required": true, "schema": { "type": "string" @@ -21746,40 +21519,64 @@ ], "responses": { "200": { - "description": "Delete custom tool provider" + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HostedOpenBotGitToken" + } + } + } + }, + "401": { + "description": "Not the instance runtime API key", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } } }, "security": [ { "api_key": [] - }, - { - "bearer_token": [] } ] - }, - "patch": { + } + }, + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases": { + "post": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Update custom tool provider", - "description": "Update and rediscover a custom HTTP tool provider", - "operationId": "update-custom-tool-provider", + "summary": "Create a hosted OpenBot release", + "description": "Creates an uploading content-addressed Build Output API release. Consolidated instances require service=runtime and deploy the combined web, control, and agent artifact to the canonical runtime project. Pre-consolidation instances continue to accept the deprecated control and agents services.", + "operationId": "create_hosted_openbot_release", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "instance_id", "in": "path", - "description": "Tool group instance ID", "required": true, "schema": { "type": "string" @@ -21790,7 +21587,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateCustomToolProviderRequestInner" + "$ref": "#/components/schemas/CreateHostedOpenBotReleaseRequest" } } }, @@ -21798,11 +21595,21 @@ }, "responses": { "200": { - "description": "Update custom tool provider", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomToolProviderDetails" + "$ref": "#/components/schemas/HostedOpenBotRelease" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -21818,29 +21625,35 @@ ] } }, - "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/disable": { - "post": { + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases/{release_id}": { + "get": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Disable custom tool provider", - "description": "Disable a custom HTTP tool provider", - "operationId": "disable-custom-tool-provider", + "summary": "Get a hosted OpenBot release", + "description": "Returns upload and deployment status, refreshing an in-progress deployment from Vercel when necessary.", + "operationId": "get_hosted_openbot_release", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "instance_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "release_id", "in": "path", - "description": "Tool group instance ID", "required": true, "schema": { "type": "string" @@ -21849,11 +21662,21 @@ ], "responses": { "200": { - "description": "Disable custom tool provider", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomToolProviderDetails" + "$ref": "#/components/schemas/HostedOpenBotRelease" + } + } + } + }, + "404": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -21869,42 +21692,81 @@ ] } }, - "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/enable": { - "post": { + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases/{release_id}/files/{sha1}": { + "put": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Enable custom tool provider", - "description": "Enable a custom HTTP tool provider", - "operationId": "enable-custom-tool-provider", + "summary": "Upload a hosted OpenBot release file", + "description": "Validates one declared digest and size, then streams the bytes to Vercel's content-addressed deployment file API without exposing the platform token.", + "operationId": "upload_hosted_openbot_release_file", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "instance_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "release_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sha1", "in": "path", - "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/octet-stream": { + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "minimum": 0 + } + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Enable custom tool provider", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomToolProviderDetails" + "$ref": "#/components/schemas/HostedOpenBotRelease" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -21920,29 +21782,35 @@ ] } }, - "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/refresh": { + "/api/v1/team/{team_id}/identity/openbot/instances/{instance_id}/releases/{release_id}/finalize": { "post": { "tags": [ - "mcp", + "identity", "v1" ], - "summary": "Refresh custom tool provider", - "description": "Rediscover custom HTTP tool provider tools", - "operationId": "refresh-custom-tool-provider", + "summary": "Finalize a hosted OpenBot release", + "description": "Requires every manifest file to be uploaded, derives the canonical runtime project or legacy service-specific project server-side, and idempotently creates its production deployment.", + "operationId": "finalize_hosted_openbot_release", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "instance_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "release_id", "in": "path", - "description": "Tool group instance ID", "required": true, "schema": { "type": "string" @@ -21951,11 +21819,21 @@ ], "responses": { "200": { - "description": "Refresh custom tool provider", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RefreshCustomToolProviderResponse" + "$ref": "#/components/schemas/HostedOpenBotRelease" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -21971,42 +21849,63 @@ ] } }, - "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/rotate-signing-secret": { + "/api/v1/team/{team_id}/identity/realtime-ticket": { "post": { "tags": [ - "mcp", - "v1" + "identity" ], - "summary": "Rotate custom tool provider signing key", - "description": "Rotate the shared webhook signing key for a custom HTTP tool provider", - "operationId": "rotate-custom-tool-provider-signing-key", + "summary": "Issue proxy realtime ticket", + "description": "Requires the relevant explicit application capability or direct account administration. Runtime requests remain identity and tenant scoped.", + "operationId": "issue-proxy-realtime-ticket", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", + "description": "Team id", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", - "in": "path", - "description": "Tool group instance ID", + "name": "X-Tilde-Org-Id", + "in": "header", + "description": "Organization routing when not selected by host", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "X-Tilde-Identity-Id", + "in": "header", + "description": "Enabled runtime identity acting in the route team", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/IssueChatKitRealtimeSocketTicketRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Rotate custom tool provider signing key", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RotateCustomToolProviderSigningKeyResponse" + "$ref": "#/components/schemas/ChatKitRealtimeSocketTicket" } } } @@ -22014,57 +21913,198 @@ }, "security": [ { - "api_key": [] + "org_proxy_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/managed-user-credential": { + "get": { + "summary": "List typed managed user credentials", + "description": "Lists typed user-owned credentials with redacted summaries only.", + "operationId": "list_managed_user_credentials", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, { - "bearer_token": [] + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } } - ] + ], + "responses": { + "200": { + "description": "Managed user credentials", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedUserCredentialSummaryPaginatedResponse" + } + } + } + } + } } }, - "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/tools/{tool_source_type_id}/invoke": { + "/api/v1/team/{team_id}/managed-user-credential/type/{type_id}": { "post": { - "tags": [ - "mcp", - "v1" + "summary": "Create a typed managed user credential", + "description": "Creates a typed user-owned credential from plaintext secretValue and stores encrypted fields at rest.", + "operationId": "create_managed_user_credential", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "type_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Invoke custom tool", - "description": "Invoke a custom HTTP tool provider tool directly", - "operationId": "invoke-custom-tool", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateManagedUserCredentialBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Created managed user credential", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedUserCredentialSummary" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/managed-user-credential/type/{type_id}/{id}": { + "get": { + "summary": "Get encrypted typed managed user credential secret", + "description": "Returns the decrypted credential secret re-encrypted to the requesting trusted runtime.", + "operationId": "get_managed_user_credential_secret", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "type_id", "in": "path", - "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_source_type_id", + "name": "id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "totp_at_unix_seconds", + "in": "query", + "required": false, + "schema": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "Encrypted secret", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedUserCredentialSecretResponse" + } + } + } + } + } + }, + "put": { + "summary": "Update a typed managed user credential", + "description": "Replaces a typed user-owned credential and stores encrypted fields at rest.", + "operationId": "update_managed_user_credential", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "type_id", "in": "path", - "description": "Tool source type ID", "required": true, "schema": { "type": "string" } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InvokeCustomToolRequestInner" + "$ref": "#/components/schemas/UpdateManagedUserCredentialBody" } } }, @@ -22072,35 +22112,57 @@ }, "responses": { "200": { - "description": "Invoke custom tool", + "description": "Updated managed user credential", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InvokeResult" + "$ref": "#/components/schemas/ManagedUserCredentialSummary" } } } } - }, - "security": [ + } + } + }, + "/api/v1/team/{team_id}/managed-user-credential/{id}": { + "delete": { + "summary": "Delete a typed managed user credential", + "description": "Deletes a typed user-owned credential.", + "operationId": "delete_managed_user_credential", + "parameters": [ { - "api_key": [] + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, { - "bearer_token": [] + "name": "id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } } - ] + ], + "responses": { + "200": { + "description": "Deleted managed user credential" + } + } } }, - "/api/v1/team/{team_id}/mcp/mcp-server": { + "/api/v1/team/{team_id}/mcp/available-tool-groups": { "get": { "tags": [ "mcp", "v1" ], - "summary": "List MCP server instances", - "description": "List all MCP server instances with pagination", - "operationId": "list-mcp-server-instances", + "summary": "List tool groups", + "description": "List all available tool group types that can be instantiated, filtered by deployment alias", + "operationId": "list-available-tool-groups", "parameters": [ { "name": "team_id", @@ -22131,31 +22193,41 @@ "style": "form" }, { - "name": "include_global", + "name": "deployment_alias", "in": "query", - "required": false, + "required": true, "schema": { - "type": "boolean" + "type": "string" }, "style": "form" }, { - "name": "agent_id", + "name": "include_global", "in": "query", "required": false, "schema": { - "type": "string" + "type": "boolean" }, "style": "form" } ], "responses": { "200": { - "description": "List MCP server instances", + "description": "List available tool groups", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctionsPaginatedResponse" + "$ref": "#/components/schemas/ToolGroupSourceSerializedPaginatedResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -22199,15 +22271,17 @@ "bearer_token": [] } ] - }, + } + }, + "/api/v1/team/{team_id}/mcp/available-tool-groups/{tool_group_source_type_id}/available-credentials/{credential_source_type_id}": { "post": { "tags": [ "mcp", "v1" ], - "summary": "Create MCP server instance", - "description": "Create a new MCP server instance with a user-provided ID", - "operationId": "create-mcp-server-instance", + "summary": "Create tool group", + "description": "Create a new tool group instance with the specified configuration", + "operationId": "create-tool-group-instance", "parameters": [ { "name": "team_id", @@ -22217,13 +22291,29 @@ "schema": { "type": "string" } + }, + { + "name": "tool_group_source_type_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credential_source_type_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateMcpServerInstanceRequestInner" + "$ref": "#/components/schemas/CreateToolGroupInstanceParamsInner" } } }, @@ -22231,11 +22321,11 @@ }, "responses": { "200": { - "description": "Create MCP server instance", + "description": "Create tool group instance", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" + "$ref": "#/components/schemas/ToolGroupInstanceSerialized" } } } @@ -22291,15 +22381,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}": { - "get": { + "/api/v1/team/{team_id}/mcp/available-tool-groups/{tool_group_source_type_id}/available-credentials/{credential_source_type_id}/auto-provision": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "Get MCP server instance", - "description": "Retrieve an MCP server instance by its ID", - "operationId": "get-mcp-server-instance", + "summary": "Auto-provision tool group", + "description": "Provision an upstream provider app, create the tool group instance, and start credential brokering when required.", + "operationId": "auto-provision-tool-group-instance", "parameters": [ { "name": "team_id", @@ -22311,28 +22401,45 @@ } }, { - "name": "mcp_server_instance_id", + "name": "tool_group_source_type_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "credential_source_type_id", "in": "path", - "description": "MCP server instance ID", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AutoProvisionToolGroupInstanceParamsInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Get MCP server instance", + "description": "Auto-provision tool group instance", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" + "$ref": "#/components/schemas/AutoProvisionToolGroupInstanceResponse" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -22341,8 +22448,8 @@ } } }, - "403": { - "description": "Forbidden", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -22351,8 +22458,8 @@ } } }, - "404": { - "description": "Not Found", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -22380,15 +22487,17 @@ "bearer_token": [] } ] - }, - "delete": { + } + }, + "/api/v1/team/{team_id}/mcp/custom-tool-providers": { + "get": { "tags": [ "mcp", "v1" ], - "summary": "Delete MCP server instance", - "description": "Delete an MCP server instance and all its tool mappings", - "operationId": "delete-mcp-server-instance", + "summary": "List custom tool providers", + "description": "List custom HTTP tool providers for a team", + "operationId": "list-custom-tool-providers", "parameters": [ { "name": "team_id", @@ -22400,55 +22509,82 @@ } }, { - "name": "mcp_server_instance_id", - "in": "path", - "description": "MCP server instance ID", + "name": "page_size", + "in": "query", "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, "schema": { "type": "string" - } + }, + "style": "form" } ], "responses": { "200": { - "description": "Delete MCP server instance" - }, - "401": { - "description": "Unauthorized", + "description": "List custom tool providers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CustomToolProviderListItemPaginatedResponse" } } } + } + }, + "security": [ + { + "api_key": [] }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "bearer_token": [] + } + ] + }, + "post": { + "tags": [ + "mcp", + "v1" + ], + "summary": "Create custom tool provider", + "description": "Create a custom HTTP tool provider from its discovery manifest", + "operationId": "create-custom-tool-provider", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCustomToolProviderRequestInner" } } }, - "500": { - "description": "Internal Server Error", + "required": true + }, + "responses": { + "200": { + "description": "Create custom tool provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CreateCustomToolProviderResponse" } } } @@ -22462,15 +22598,17 @@ "bearer_token": [] } ] - }, - "patch": { + } + }, + "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}": { + "get": { "tags": [ "mcp", "v1" ], - "summary": "Update MCP server instance", - "description": "Update an MCP server instance name", - "operationId": "update-mcp-server-instance", + "summary": "Get custom tool provider", + "description": "Get a custom HTTP tool provider", + "operationId": "get-custom-tool-provider", "parameters": [ { "name": "team_id", @@ -22482,76 +22620,68 @@ } }, { - "name": "mcp_server_instance_id", + "name": "tool_group_instance_id", "in": "path", - "description": "MCP server instance ID", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateMcpServerInstanceBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Update MCP server instance", + "description": "Get custom tool provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CustomToolProviderDetails" } } } + } + }, + "security": [ + { + "api_key": [] }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "bearer_token": [] + } + ] + }, + "delete": { + "tags": [ + "mcp", + "v1" + ], + "summary": "Delete custom tool provider", + "description": "Delete a custom HTTP tool provider", + "operationId": "delete-custom-tool-provider", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" } }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "name": "tool_group_instance_id", + "in": "path", + "description": "Tool group instance ID", + "required": true, + "schema": { + "type": "string" } } + ], + "responses": { + "200": { + "description": "Delete custom tool provider" + } }, "security": [ { @@ -22561,17 +22691,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/function": { - "post": { + }, + "patch": { "tags": [ "mcp", "v1" ], - "summary": "Add function to MCP server instance", - "description": "Add a tool mapping to an MCP server instance with a custom name", - "operationId": "add-mcp-server-instance-function", + "summary": "Update custom tool provider", + "description": "Update and rediscover a custom HTTP tool provider", + "operationId": "update-custom-tool-provider", "parameters": [ { "name": "team_id", @@ -22583,9 +22711,9 @@ } }, { - "name": "mcp_server_instance_id", + "name": "tool_group_instance_id", "in": "path", - "description": "MCP server instance ID", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" @@ -22596,7 +22724,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AddMcpServerInstanceFunctionBody" + "$ref": "#/components/schemas/UpdateCustomToolProviderRequestInner" } } }, @@ -22604,71 +22732,11 @@ }, "responses": { "200": { - "description": "Add function to MCP server instance", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "409": { - "description": "Conflict (tool name already exists)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "Update custom tool provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CustomToolProviderDetails" } } } @@ -22684,15 +22752,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/function/{tool_deployment_type_id}/{tool_group_deployment_type_id}/{tool_group_instance_id}": { - "delete": { + "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/disable": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "Remove tool from MCP server instance", - "description": "Remove a tool mapping from an MCP server instance", - "operationId": "remove-mcp-server-instance-function", + "summary": "Disable custom tool provider", + "description": "Disable a custom HTTP tool provider", + "operationId": "disable-custom-tool-provider", "parameters": [ { "name": "team_id", @@ -22704,27 +22772,51 @@ } }, { - "name": "mcp_server_instance_id", + "name": "tool_group_instance_id", "in": "path", - "description": "MCP server instance ID", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } - }, - { - "name": "tool_deployment_type_id", - "in": "path", - "description": "Tool source type ID", - "required": true, - "schema": { - "type": "string" + } + ], + "responses": { + "200": { + "description": "Disable custom tool provider", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomToolProviderDetails" + } + } } + } + }, + "security": [ + { + "api_key": [] }, { - "name": "tool_group_deployment_type_id", + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/enable": { + "post": { + "tags": [ + "mcp", + "v1" + ], + "summary": "Enable custom tool provider", + "description": "Enable a custom HTTP tool provider", + "operationId": "enable-custom-tool-provider", + "parameters": [ + { + "name": "team_id", "in": "path", - "description": "Tool group source type ID", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -22742,51 +22834,62 @@ ], "responses": { "200": { - "description": "Remove tool from MCP server instance", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Enable custom tool provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/CustomToolProviderDetails" } } } + } + }, + "security": [ + { + "api_key": [] }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/refresh": { + "post": { + "tags": [ + "mcp", + "v1" + ], + "summary": "Refresh custom tool provider", + "description": "Rediscover custom HTTP tool provider tools", + "operationId": "refresh-custom-tool-provider", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "name": "tool_group_instance_id", + "in": "path", + "description": "Tool group instance ID", + "required": true, + "schema": { + "type": "string" } - }, - "500": { - "description": "Internal Server Error", + } + ], + "responses": { + "200": { + "description": "Refresh custom tool provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/RefreshCustomToolProviderResponse" } } } @@ -22800,15 +22903,17 @@ "bearer_token": [] } ] - }, - "patch": { + } + }, + "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/rotate-signing-secret": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "Update tool in MCP server instance", - "description": "Update the tool name and description for a tool mapping", - "operationId": "update-mcp-server-instance-function", + "summary": "Rotate custom tool provider signing key", + "description": "Rotate the shared webhook signing key for a custom HTTP tool provider", + "operationId": "rotate-custom-tool-provider-signing-key", "parameters": [ { "name": "team_id", @@ -22820,36 +22925,69 @@ } }, { - "name": "mcp_server_instance_id", + "name": "tool_group_instance_id", "in": "path", - "description": "MCP server instance ID", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "description": "Rotate custom tool provider signing key", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RotateCustomToolProviderSigningKeyResponse" + } + } + } + } + }, + "security": [ + { + "api_key": [] }, { - "name": "tool_deployment_type_id", + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/custom-tool-providers/{tool_group_instance_id}/tools/{tool_source_type_id}/invoke": { + "post": { + "tags": [ + "mcp", + "v1" + ], + "summary": "Invoke custom tool", + "description": "Invoke a custom HTTP tool provider tool directly", + "operationId": "invoke-custom-tool", + "parameters": [ + { + "name": "team_id", "in": "path", - "description": "Tool source type ID", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_deployment_type_id", + "name": "tool_group_instance_id", "in": "path", - "description": "Tool group source type ID", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } }, { - "name": "tool_group_instance_id", + "name": "tool_source_type_id", "in": "path", - "description": "Tool group instance ID", + "description": "Tool source type ID", "required": true, "schema": { "type": "string" @@ -22860,7 +22998,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateMcpServerInstanceToolBody" + "$ref": "#/components/schemas/InvokeCustomToolRequestInner" } } }, @@ -22868,37 +23006,96 @@ }, "responses": { "200": { - "description": "Update tool in MCP server instance", + "description": "Invoke custom tool", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" + "$ref": "#/components/schemas/InvokeResult" } } } + } + }, + "security": [ + { + "api_key": [] }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/mcp-server": { + "get": { + "tags": [ + "mcp", + "v1" + ], + "summary": "List MCP server instances", + "description": "List all MCP server instances with pagination", + "operationId": "list-mcp-server-instances", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" } }, - "403": { - "description": "Forbidden", + { + "name": "page_size", + "in": "query", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "include_global", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + }, + "style": "form" + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + } + ], + "responses": { + "200": { + "description": "List MCP server instances", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctionsPaginatedResponse" } } } }, - "404": { - "description": "Not Found", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -22907,8 +23104,8 @@ } } }, - "409": { - "description": "Conflict (tool name already exists)", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -22936,17 +23133,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/functions": { + }, "post": { "tags": [ "mcp", "v1" ], - "summary": "Add MCP server functions in bulk", - "description": "Atomically add 1-500 tool mappings from one provider account. Exact existing mappings are idempotent no-ops, including concurrent retries. Any invalid or conflicting item rejects the entire database batch. A 5xx from post-commit reconciliation has unknown commit visibility; retrying the same request is safe.", - "operationId": "bulk-add-mcp-server-instance-functions", + "summary": "Create MCP server instance", + "description": "Create a new MCP server instance with a user-provided ID", + "operationId": "create-mcp-server-instance", "parameters": [ { "name": "team_id", @@ -22956,22 +23151,13 @@ "schema": { "type": "string" } - }, - { - "name": "mcp_server_instance_id", - "in": "path", - "description": "MCP server instance ID", - "required": true, - "schema": { - "type": "string" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BulkAddMcpServerInstanceFunctionsBody" + "$ref": "#/components/schemas/CreateMcpServerInstanceRequestInner" } } }, @@ -22979,7 +23165,7 @@ }, "responses": { "200": { - "description": "All function mappings were added, or already existed unchanged", + "description": "Create MCP server instance", "content": { "application/json": { "schema": { @@ -22989,7 +23175,7 @@ } }, "400": { - "description": "Invalid batch; no mappings were added", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -23018,18 +23204,8 @@ } } }, - "404": { - "description": "MCP server or tool instance not found; no mappings were added", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, "500": { - "description": "Internal Server Error. Database write failures roll back the batch; reconciliation failures can occur after commit, and retrying is safe", + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -23047,15 +23223,17 @@ "bearer_token": [] } ] - }, - "delete": { + } + }, + "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}": { + "get": { "tags": [ "mcp", "v1" ], - "summary": "Remove MCP server functions in bulk", - "description": "Atomically remove 1-500 tool mappings from one provider account. Missing mappings are idempotent no-ops. Any invalid item rejects the entire database batch. A 5xx from post-commit reconciliation has unknown commit visibility; retrying the same request is safe.", - "operationId": "bulk-remove-mcp-server-instance-functions", + "summary": "Get MCP server instance", + "description": "Retrieve an MCP server instance by its ID", + "operationId": "get-mcp-server-instance", "parameters": [ { "name": "team_id", @@ -23076,19 +23254,9 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BulkRemoveMcpServerInstanceFunctionsBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "All requested mappings were removed or already absent", + "description": "Get MCP server instance", "content": { "application/json": { "schema": { @@ -23097,18 +23265,8 @@ } } }, - "400": { - "description": "Invalid batch; no mappings were removed", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "401": { - "description": "Unauthorized", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -23128,7 +23286,7 @@ } }, "404": { - "description": "MCP server not found; no mappings were removed", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -23138,7 +23296,7 @@ } }, "500": { - "description": "Internal Server Error. Database write failures roll back the batch; reconciliation failures can occur after commit, and retrying is safe", + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -23156,17 +23314,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/mcp": { - "get": { + }, + "delete": { "tags": [ "mcp", "v1" ], - "summary": "MCP protocol endpoint (GET)", - "description": "Handle MCP protocol GET requests for SSE event streams.", - "operationId": "mcp-protocol-get", + "summary": "Delete MCP server instance", + "description": "Delete an MCP server instance and all its tool mappings", + "operationId": "delete-mcp-server-instance", "parameters": [ { "name": "team_id", @@ -23189,10 +23345,10 @@ ], "responses": { "200": { - "description": "MCP SSE stream" + "description": "Delete MCP server instance" }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -23201,8 +23357,8 @@ } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -23241,14 +23397,14 @@ } ] }, - "post": { + "patch": { "tags": [ "mcp", "v1" ], - "summary": "MCP protocol endpoint (POST)", - "description": "Handle MCP protocol requests (JSON-RPC over HTTP). This is the main endpoint for MCP clients to communicate with the server.", - "operationId": "mcp-protocol-post", + "summary": "Update MCP server instance", + "description": "Update an MCP server instance name", + "operationId": "update-mcp-server-instance", "parameters": [ { "name": "team_id", @@ -23269,16 +23425,23 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMcpServerInstanceBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "MCP protocol response" - }, - "400": { - "description": "Bad Request", + "description": "Update MCP server instance", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" } } } @@ -23293,80 +23456,8 @@ } } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] - }, - "delete": { - "tags": [ - "mcp", - "v1" - ], - "summary": "MCP protocol endpoint (DELETE)", - "description": "Handle MCP protocol DELETE requests for session cleanup.", - "operationId": "mcp-protocol-delete", - "parameters": [ - { - "name": "team_id", - "in": "path", - "description": "Team ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "mcp_server_instance_id", - "in": "path", - "description": "MCP server instance ID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Session terminated" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -23406,15 +23497,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/playground/chat": { + "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/function": { "post": { "tags": [ "mcp", "v1" ], - "summary": "Chat with MCP server playground", - "description": "Run an ephemeral natural-language playground chat bound to one dynamic MCP server instance.", - "operationId": "mcp-server-playground-chat", + "summary": "Add function to MCP server instance", + "description": "Add a tool mapping to an MCP server instance with a custom name", + "operationId": "add-mcp-server-instance-function", "parameters": [ { "name": "team_id", @@ -23439,7 +23530,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/McpPlaygroundAiSdkChatRequest" + "$ref": "#/components/schemas/AddMcpServerInstanceFunctionBody" } } }, @@ -23447,7 +23538,14 @@ }, "responses": { "200": { - "description": "Vercel AI SDK UI message stream" + "description": "Add function to MCP server instance", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" + } + } + } }, "400": { "description": "Bad Request", @@ -23489,6 +23587,16 @@ } } }, + "409": { + "description": "Conflict (tool name already exists)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -23510,15 +23618,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/tool-group/{tool_group_instance_id}": { - "put": { + "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/function/{tool_deployment_type_id}/{tool_group_deployment_type_id}/{tool_group_instance_id}": { + "delete": { "tags": [ "mcp", "v1" ], - "summary": "Bind tool group to MCP server", - "description": "Enables every tool in a tool-group instance and maps it onto the MCP server idempotently.", - "operationId": "bind-tool-group-to-mcp-server", + "summary": "Remove tool from MCP server instance", + "description": "Remove a tool mapping from an MCP server instance", + "operationId": "remove-mcp-server-instance-function", "parameters": [ { "name": "team_id", @@ -23538,6 +23646,24 @@ "type": "string" } }, + { + "name": "tool_deployment_type_id", + "in": "path", + "description": "Tool source type ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tool_group_deployment_type_id", + "in": "path", + "description": "Tool group source type ID", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "tool_group_instance_id", "in": "path", @@ -23550,7 +23676,7 @@ ], "responses": { "200": { - "description": "Bound tool group", + "description": "Remove tool from MCP server instance", "content": { "application/json": { "schema": { @@ -23559,8 +23685,18 @@ } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -23599,14 +23735,14 @@ } ] }, - "delete": { + "patch": { "tags": [ "mcp", "v1" ], - "summary": "Unbind tool group from MCP server", - "description": "Removes every mapping for a tool-group instance from the MCP server idempotently.", - "operationId": "unbind-tool-group-from-mcp-server", + "summary": "Update tool in MCP server instance", + "description": "Update the tool name and description for a tool mapping", + "operationId": "update-mcp-server-instance-function", "parameters": [ { "name": "team_id", @@ -23626,6 +23762,24 @@ "type": "string" } }, + { + "name": "tool_deployment_type_id", + "in": "path", + "description": "Tool source type ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "tool_group_deployment_type_id", + "in": "path", + "description": "Tool group source type ID", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "tool_group_instance_id", "in": "path", @@ -23636,9 +23790,19 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMcpServerInstanceToolBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Unbound tool group", + "description": "Update tool in MCP server instance", "content": { "application/json": { "schema": { @@ -23647,8 +23811,18 @@ } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -23667,6 +23841,16 @@ } } }, + "409": { + "description": "Conflict (tool name already exists)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, "500": { "description": "Internal Server Error", "content": { @@ -23688,15 +23872,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/provider-catalog": { - "get": { + "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/functions": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "List remote MCP provider catalogue", - "description": "List server-authored remote MCP provider descriptors and their generic connection methods", - "operationId": "list-mcp-provider-catalog", + "summary": "Add MCP server functions in bulk", + "description": "Atomically add 1-500 tool mappings from one provider account. Exact existing mappings are idempotent no-ops, including concurrent retries. Any invalid or conflicting item rejects the entire database batch. A 5xx from post-commit reconciliation has unknown commit visibility; retrying the same request is safe.", + "operationId": "bulk-add-mcp-server-instance-functions", "parameters": [ { "name": "team_id", @@ -23706,15 +23890,44 @@ "schema": { "type": "string" } + }, + { + "name": "mcp_server_instance_id", + "in": "path", + "description": "MCP server instance ID", + "required": true, + "schema": { + "type": "string" + } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BulkAddMcpServerInstanceFunctionsBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "List curated remote MCP providers", + "description": "All function mappings were added, or already existed unchanged", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ListMcpProviderCatalogResponse" + "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" + } + } + } + }, + "400": { + "description": "Invalid batch; no mappings were added", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -23739,8 +23952,18 @@ } } }, + "404": { + "description": "MCP server or tool instance not found; no mappings were added", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, "500": { - "description": "Internal Server Error", + "description": "Internal Server Error. Database write failures roll back the batch; reconciliation failures can occur after commit, and retrying is safe", "content": { "application/json": { "schema": { @@ -23758,17 +23981,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/provider-catalog/{provider_id}/connect": { - "post": { + }, + "delete": { "tags": [ "mcp", "v1" ], - "summary": "Connect remote MCP provider catalogue entry", - "description": "Connect an unauthenticated provider immediately or discover OAuth metadata, dynamically register Tilde, and start PKCE authorization", - "operationId": "connect-mcp-provider-catalog-entry", + "summary": "Remove MCP server functions in bulk", + "description": "Atomically remove 1-500 tool mappings from one provider account. Missing mappings are idempotent no-ops. Any invalid item rejects the entire database batch. A 5xx from post-commit reconciliation has unknown commit visibility; retrying the same request is safe.", + "operationId": "bulk-remove-mcp-server-instance-functions", "parameters": [ { "name": "team_id", @@ -23780,9 +24001,9 @@ } }, { - "name": "provider_id", + "name": "mcp_server_instance_id", "in": "path", - "description": "Stable catalogue provider ID", + "description": "MCP server instance ID", "required": true, "schema": { "type": "string" @@ -23793,7 +24014,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConnectMcpProviderCatalogEntryRequestInner" + "$ref": "#/components/schemas/BulkRemoveMcpServerInstanceFunctionsBody" } } }, @@ -23801,17 +24022,17 @@ }, "responses": { "200": { - "description": "Connect curated remote MCP provider", + "description": "All requested mappings were removed or already absent", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConnectMcpProviderCatalogEntryResponse" + "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" } } } }, "400": { - "description": "Provider requires manual setup", + "description": "Invalid batch; no mappings were removed", "content": { "application/json": { "schema": { @@ -23841,7 +24062,7 @@ } }, "404": { - "description": "Provider not found", + "description": "MCP server not found; no mappings were removed", "content": { "application/json": { "schema": { @@ -23851,7 +24072,7 @@ } }, "500": { - "description": "Internal Server Error", + "description": "Internal Server Error. Database write failures roll back the batch; reconciliation failures can occur after commit, and retrying is safe", "content": { "application/json": { "schema": { @@ -23871,15 +24092,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/proxied-mcp-servers": { + "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/mcp": { "get": { "tags": [ "mcp", "v1" ], - "summary": "List proxied MCP servers", - "description": "List proxied MCP server records and their local tool provider instances for a team", - "operationId": "list-proxied-mcp-servers", + "summary": "MCP protocol endpoint (GET)", + "description": "Handle MCP protocol GET requests for SSE event streams.", + "operationId": "mcp-protocol-get", "parameters": [ { "name": "team_id", @@ -23891,42 +24112,25 @@ } }, { - "name": "page_size", - "in": "query", + "name": "mcp_server_instance_id", + "in": "path", + "description": "MCP server instance ID", "required": true, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, "schema": { "type": "string" - }, - "style": "form" - }, - { - "name": "include_catalog_managed", - "in": "query", - "description": "Internal portability and control-plane callers can opt into managed entries.", - "required": false, - "schema": { - "type": "boolean" - }, - "style": "form" + } } ], "responses": { "200": { - "description": "List proxied MCP servers", + "description": "MCP SSE stream" + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProxiedMcpServerListItemPaginatedResponse" + "$ref": "#/components/schemas/Error" } } } @@ -23941,8 +24145,8 @@ } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -23976,9 +24180,9 @@ "mcp", "v1" ], - "summary": "Connect proxied MCP server", - "description": "Connect to an upstream MCP server, discover its tools, and persist them as a local tool group deployment", - "operationId": "connect-proxied-mcp-server", + "summary": "MCP protocol endpoint (POST)", + "description": "Handle MCP protocol requests (JSON-RPC over HTTP). This is the main endpoint for MCP clients to communicate with the server.", + "operationId": "mcp-protocol-post", "parameters": [ { "name": "team_id", @@ -23988,28 +24192,20 @@ "schema": { "type": "string" } + }, + { + "name": "mcp_server_instance_id", + "in": "path", + "description": "MCP server instance ID", + "required": true, + "schema": { + "type": "string" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConnectProxiedMcpServerRequestInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Connect proxied MCP server", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ConnectProxiedMcpServerResponse" - } - } - } + "description": "MCP protocol response" }, "400": { "description": "Bad Request", @@ -24031,8 +24227,8 @@ } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -24060,17 +24256,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/oauth/start": { - "post": { + }, + "delete": { "tags": [ "mcp", "v1" ], - "summary": "Start proxied MCP OAuth authorization", - "description": "Create a pending proxied MCP server and start generic OAuth authorization-code brokering. Tool discovery completes after the OAuth callback stores the user credential.", - "operationId": "start-proxied-mcp-server-oauth", + "summary": "MCP protocol endpoint (DELETE)", + "description": "Handle MCP protocol DELETE requests for session cleanup.", + "operationId": "mcp-protocol-delete", "parameters": [ { "name": "team_id", @@ -24080,28 +24274,20 @@ "schema": { "type": "string" } + }, + { + "name": "mcp_server_instance_id", + "in": "path", + "description": "MCP server instance ID", + "required": true, + "schema": { + "type": "string" + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartProxiedMcpServerOauthRequestInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Start proxied MCP OAuth authorization", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartProxiedMcpServerOauthResponse" - } - } - } + "description": "Session terminated" }, "400": { "description": "Bad Request", @@ -24123,8 +24309,8 @@ } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -24154,15 +24340,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}": { - "get": { + "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/playground/chat": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "Get proxied MCP server", - "description": "Get proxied MCP server settings, discovery state, and discovered tools", - "operationId": "get-proxied-mcp-server", + "summary": "Chat with MCP server playground", + "description": "Run an ephemeral natural-language playground chat bound to one dynamic MCP server instance.", + "operationId": "mcp-server-playground-chat", "parameters": [ { "name": "team_id", @@ -24174,22 +24360,35 @@ } }, { - "name": "tool_group_instance_id", + "name": "mcp_server_instance_id", "in": "path", - "description": "Proxied MCP tool group instance ID", + "description": "MCP server instance ID", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/McpPlaygroundAiSdkChatRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Get proxied MCP server", + "description": "Vercel AI SDK UI message stream" + }, + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProxiedMcpServerDetails" + "$ref": "#/components/schemas/Error" } } } @@ -24243,15 +24442,17 @@ "bearer_token": [] } ] - }, - "delete": { + } + }, + "/api/v1/team/{team_id}/mcp/mcp-server/{mcp_server_instance_id}/tool-group/{tool_group_instance_id}": { + "put": { "tags": [ "mcp", "v1" ], - "summary": "Delete proxied MCP server", - "description": "Delete a proxied MCP tool group instance and its enabled local tools", - "operationId": "delete-proxied-mcp-server", + "summary": "Bind tool group to MCP server", + "description": "Enables every tool in a tool-group instance and maps it onto the MCP server idempotently.", + "operationId": "bind-tool-group-to-mcp-server", "parameters": [ { "name": "team_id", @@ -24262,10 +24463,19 @@ "type": "string" } }, + { + "name": "mcp_server_instance_id", + "in": "path", + "description": "MCP server instance ID", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "tool_group_instance_id", "in": "path", - "description": "Proxied MCP tool group instance ID", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" @@ -24274,20 +24484,17 @@ ], "responses": { "200": { - "description": "Delete proxied MCP server" - }, - "401": { - "description": "Unauthorized", + "description": "Bound tool group", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" } } } }, - "403": { - "description": "Forbidden", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -24325,17 +24532,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}/disable": { - "post": { + }, + "delete": { "tags": [ "mcp", "v1" ], - "summary": "Disable proxied MCP server", - "description": "Mark a proxied MCP server and its backing tool group instance disabled", - "operationId": "disable-proxied-mcp-server", + "summary": "Unbind tool group from MCP server", + "description": "Removes every mapping for a tool-group instance from the MCP server idempotently.", + "operationId": "unbind-tool-group-from-mcp-server", "parameters": [ { "name": "team_id", @@ -24346,10 +24551,19 @@ "type": "string" } }, + { + "name": "mcp_server_instance_id", + "in": "path", + "description": "MCP server instance ID", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "tool_group_instance_id", "in": "path", - "description": "Proxied MCP tool group instance ID", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" @@ -24358,27 +24572,17 @@ ], "responses": { "200": { - "description": "Disable proxied MCP server", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProxiedMcpServerDetails" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Unbound tool group", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/McpServerInstanceSerializedWithFunctions" } } } }, - "403": { - "description": "Forbidden", + "400": { + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -24418,15 +24622,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}/enable": { - "post": { + "/api/v1/team/{team_id}/mcp/provider-catalog": { + "get": { "tags": [ "mcp", "v1" ], - "summary": "Enable proxied MCP server", - "description": "Mark a proxied MCP server and its backing tool group instance active", - "operationId": "enable-proxied-mcp-server", + "summary": "List remote MCP provider catalogue", + "description": "List server-authored remote MCP provider descriptors and their generic connection methods", + "operationId": "list-mcp-provider-catalog", "parameters": [ { "name": "team_id", @@ -24436,24 +24640,15 @@ "schema": { "type": "string" } - }, - { - "name": "tool_group_instance_id", - "in": "path", - "description": "Proxied MCP tool group instance ID", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "Enable proxied MCP server", + "description": "List curated remote MCP providers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProxiedMcpServerDetails" + "$ref": "#/components/schemas/ListMcpProviderCatalogResponse" } } } @@ -24478,16 +24673,6 @@ } } }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -24509,15 +24694,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}/refresh": { + "/api/v1/team/{team_id}/mcp/provider-catalog/{provider_id}/connect": { "post": { "tags": [ "mcp", "v1" ], - "summary": "Refresh proxied MCP server", - "description": "Reconnect to an upstream MCP server and refresh the locally stored tool deployment definitions", - "operationId": "refresh-proxied-mcp-server", + "summary": "Connect remote MCP provider catalogue entry", + "description": "Connect an unauthenticated provider immediately or discover OAuth metadata, dynamically register Tilde, and start PKCE authorization", + "operationId": "connect-mcp-provider-catalog-entry", "parameters": [ { "name": "team_id", @@ -24529,22 +24714,42 @@ } }, { - "name": "tool_group_instance_id", + "name": "provider_id", "in": "path", - "description": "Proxied MCP tool group instance ID", + "description": "Stable catalogue provider ID", "required": true, "schema": { "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectMcpProviderCatalogEntryRequestInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Refresh proxied MCP server", + "description": "Connect curated remote MCP provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ConnectProxiedMcpServerResponse" + "$ref": "#/components/schemas/ConnectMcpProviderCatalogEntryResponse" + } + } + } + }, + "400": { + "description": "Provider requires manual setup", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -24570,7 +24775,7 @@ } }, "404": { - "description": "Not Found", + "description": "Provider not found", "content": { "application/json": { "schema": { @@ -24600,15 +24805,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-deployments/{alias}": { + "/api/v1/team/{team_id}/mcp/proxied-mcp-servers": { "get": { "tags": [ "mcp", "v1" ], - "summary": "List tool deployments by alias", - "description": "List tool deployments joined with their tool group deployment, filtered by deployment alias", - "operationId": "list-tool-deployments-by-alias", + "summary": "List proxied MCP servers", + "description": "List proxied MCP server records and their local tool provider instances for a team", + "operationId": "list-proxied-mcp-servers", "parameters": [ { "name": "team_id", @@ -24619,15 +24824,6 @@ "type": "string" } }, - { - "name": "alias", - "in": "path", - "description": "Deployment alias (e.g. 'latest')", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "page_size", "in": "query", @@ -24648,8 +24844,9 @@ "style": "form" }, { - "name": "include_global", + "name": "include_catalog_managed", "in": "query", + "description": "Internal portability and control-plane callers can opt into managed entries.", "required": false, "schema": { "type": "boolean" @@ -24659,17 +24856,27 @@ ], "responses": { "200": { - "description": "List tool deployments by alias", + "description": "List proxied MCP servers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolDeploymentWithGroupSerializedPaginatedResponse" + "$ref": "#/components/schemas/ProxiedMcpServerListItemPaginatedResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -24697,17 +24904,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/tool-group": { - "get": { + }, + "post": { "tags": [ "mcp", "v1" ], - "summary": "List tool group instances", - "description": "List all tool group instances with optional filtering by status and tool group type", - "operationId": "list-tool-group-instances", + "summary": "Connect proxied MCP server", + "description": "Connect to an upstream MCP server, discover its tools, and persist them as a local tool group deployment", + "operationId": "connect-proxied-mcp-server", "parameters": [ { "name": "team_id", @@ -24717,61 +24922,25 @@ "schema": { "type": "string" } - }, - { - "name": "page_size", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "status", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "tool_group_source_type_id", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "include_global", - "in": "query", - "required": false, - "schema": { - "type": "boolean" - }, - "style": "form" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ConnectProxiedMcpServerRequestInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "List tool group instances", + "description": "Connect proxied MCP server", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolGroupInstanceListItemPaginatedResponse" + "$ref": "#/components/schemas/ConnectProxiedMcpServerResponse" } } } @@ -24827,15 +24996,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-group/grouped-by-tool": { - "get": { + "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/oauth/start": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "List tool groups by tool", - "description": "List tool group instances grouped by their associated tools", - "operationId": "list-tool-group-instances-grouped-by-tool", + "summary": "Start proxied MCP OAuth authorization", + "description": "Create a pending proxied MCP server and start generic OAuth authorization-code brokering. Tool discovery completes after the OAuth callback stores the user credential.", + "operationId": "start-proxied-mcp-server-oauth", "parameters": [ { "name": "team_id", @@ -24845,61 +25014,25 @@ "schema": { "type": "string" } - }, - { - "name": "page_size", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "tool_group_source_type_id", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "tool_category", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "include_global", - "in": "query", - "required": false, - "schema": { - "type": "boolean" - }, - "style": "form" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StartProxiedMcpServerOauthRequestInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "List tool group instances grouped by tool", + "description": "Start proxied MCP OAuth authorization", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolConfigPaginatedResponse" + "$ref": "#/components/schemas/StartProxiedMcpServerOauthResponse" } } } @@ -24955,15 +25088,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}": { + "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}": { "get": { "tags": [ "mcp", "v1" ], - "summary": "Get tool group", - "description": "Retrieve a tool group instance by its unique identifier", - "operationId": "get-tool-group-instance", + "summary": "Get proxied MCP server", + "description": "Get proxied MCP server settings, discovery state, and discovered tools", + "operationId": "get-proxied-mcp-server", "parameters": [ { "name": "team_id", @@ -24977,7 +25110,7 @@ { "name": "tool_group_instance_id", "in": "path", - "description": "Tool group instance ID", + "description": "Proxied MCP tool group instance ID", "required": true, "schema": { "type": "string" @@ -24986,17 +25119,17 @@ ], "responses": { "200": { - "description": "Get tool group instance", + "description": "Get proxied MCP server", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolGroupInstanceSerializedWithEverything" + "$ref": "#/components/schemas/ProxiedMcpServerDetails" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -25005,8 +25138,8 @@ } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -25015,8 +25148,8 @@ } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -25050,9 +25183,9 @@ "mcp", "v1" ], - "summary": "Delete tool group", - "description": "Delete a tool group instance by its unique identifier", - "operationId": "delete-tool-group-instance", + "summary": "Delete proxied MCP server", + "description": "Delete a proxied MCP tool group instance and its enabled local tools", + "operationId": "delete-proxied-mcp-server", "parameters": [ { "name": "team_id", @@ -25066,7 +25199,7 @@ { "name": "tool_group_instance_id", "in": "path", - "description": "Tool group instance ID", + "description": "Proxied MCP tool group instance ID", "required": true, "schema": { "type": "string" @@ -25075,17 +25208,10 @@ ], "responses": { "200": { - "description": "Delete tool group instance", - "content": { - "application/json": { - "schema": { - "default": null - } - } - } + "description": "Delete proxied MCP server" }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -25094,8 +25220,8 @@ } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -25104,8 +25230,8 @@ } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -25133,15 +25259,17 @@ "bearer_token": [] } ] - }, - "patch": { + } + }, + "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}/disable": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "Update tool group", - "description": "Update an existing tool group instance configuration", - "operationId": "update-tool-group-instance", + "summary": "Disable proxied MCP server", + "description": "Mark a proxied MCP server and its backing tool group instance disabled", + "operationId": "disable-proxied-mcp-server", "parameters": [ { "name": "team_id", @@ -25155,58 +25283,26 @@ { "name": "tool_group_instance_id", "in": "path", - "description": "Tool group instance ID", + "description": "Proxied MCP tool group instance ID", "required": true, "schema": { "type": "string" } - }, - { - "name": "wait_for_status", - "in": "query", - "description": "Hold the request until this status is observed or the timeout expires.", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "timeout_ms", - "in": "query", - "description": "Long-poll timeout in milliseconds, clamped to 30 seconds.", - "required": false, - "schema": { - "type": "integer", - "format": "int64", - "minimum": 0 - }, - "style": "form" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateToolGroupInstanceParamsInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Update tool group instance", + "description": "Disable proxied MCP server", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TupleUnit" + "$ref": "#/components/schemas/ProxiedMcpServerDetails" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -25215,8 +25311,8 @@ } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -25225,8 +25321,8 @@ } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -25256,15 +25352,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/bound-params": { - "patch": { + "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}/enable": { + "post": { "tags": [ "mcp", "v1" ], - "summary": "Update tool bound_params", - "description": "Replace the bound_params JSON object on an enabled tool instance. Bound values are merged into LLM-supplied params at invoke time and win on collision.", - "operationId": "update-tool-bound-params", + "summary": "Enable proxied MCP server", + "description": "Mark a proxied MCP server and its backing tool group instance active", + "operationId": "enable-proxied-mcp-server", "parameters": [ { "name": "team_id", @@ -25278,49 +25374,20 @@ { "name": "tool_group_instance_id", "in": "path", - "description": "Tool group instance ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tool_source_type_id", - "in": "path", - "description": "Tool source type ID", + "description": "Proxied MCP tool group instance ID", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateToolInstanceBoundParamsInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Updated tool bound_params", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolInstanceSerialized" - } - } - } - }, - "400": { - "description": "Bad Request", + "description": "Enable proxied MCP server", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ProxiedMcpServerDetails" } } } @@ -25346,7 +25413,7 @@ } }, "404": { - "description": "Tool instance not found", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -25376,15 +25443,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/disable": { + "/api/v1/team/{team_id}/mcp/proxied-mcp-servers/{tool_group_instance_id}/refresh": { "post": { "tags": [ "mcp", "v1" ], - "summary": "Disable tool", - "description": "Disable a tool for a tool group instance", - "operationId": "disable-tool", + "summary": "Refresh proxied MCP server", + "description": "Reconnect to an upstream MCP server and refresh the locally stored tool deployment definitions", + "operationId": "refresh-proxied-mcp-server", "parameters": [ { "name": "team_id", @@ -25398,16 +25465,7 @@ { "name": "tool_group_instance_id", "in": "path", - "description": "Tool group instance ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "tool_source_type_id", - "in": "path", - "description": "Tool source type ID", + "description": "Proxied MCP tool group instance ID", "required": true, "schema": { "type": "string" @@ -25416,17 +25474,17 @@ ], "responses": { "200": { - "description": "Disable tool", + "description": "Refresh proxied MCP server", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TupleUnit" + "$ref": "#/components/schemas/ConnectProxiedMcpServerResponse" } } } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -25435,8 +25493,8 @@ } } }, - "401": { - "description": "Unauthorized", + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -25445,8 +25503,8 @@ } } }, - "403": { - "description": "Forbidden", + "404": { + "description": "Not Found", "content": { "application/json": { "schema": { @@ -25476,15 +25534,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/enable": { - "post": { + "/api/v1/team/{team_id}/mcp/tool-deployments/{alias}": { + "get": { "tags": [ "mcp", "v1" ], - "summary": "Enable tool", - "description": "Enable a tool for a tool group instance. Optional bound_params may be supplied and will be merged into invocation params for this enabled tool.", - "operationId": "enable-tool", + "summary": "List tool deployments by alias", + "description": "List tool deployments joined with their tool group deployment, filtered by deployment alias", + "operationId": "list-tool-deployments-by-alias", "parameters": [ { "name": "team_id", @@ -25496,41 +25554,50 @@ } }, { - "name": "tool_group_instance_id", + "name": "alias", "in": "path", - "description": "Tool group instance ID", + "description": "Deployment alias (e.g. 'latest')", "required": true, "schema": { "type": "string" } }, { - "name": "tool_source_type_id", - "in": "path", - "description": "Tool source type ID", + "name": "page_size", + "in": "query", "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, "schema": { "type": "string" - } + }, + "style": "form" + }, + { + "name": "include_global", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + }, + "style": "form" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EnableToolInstanceParamsInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Enable tool", + "description": "List tool deployments by alias", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolInstanceSerialized" + "$ref": "#/components/schemas/ToolDeploymentWithGroupSerializedPaginatedResponse" } } } @@ -25545,26 +25612,6 @@ } } }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, "500": { "description": "Internal Server Error", "content": { @@ -25586,15 +25633,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/invoke": { - "post": { + "/api/v1/team/{team_id}/mcp/tool-group": { + "get": { "tags": [ "mcp", "v1" ], - "summary": "Invoke tool", - "description": "Invoke a tool on a tool group instance", - "operationId": "invoke-tool", + "summary": "List tool group instances", + "description": "List all tool group instances with optional filtering by status and tool group type", + "operationId": "list-tool-group-instances", "parameters": [ { "name": "team_id", @@ -25606,41 +25653,59 @@ } }, { - "name": "tool_group_instance_id", - "in": "path", - "description": "Tool group instance ID", + "name": "page_size", + "in": "query", "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, "schema": { "type": "string" - } + }, + "style": "form" }, { - "name": "tool_source_type_id", - "in": "path", - "description": "Tool source type ID", - "required": true, + "name": "status", + "in": "query", + "required": false, "schema": { "type": "string" - } + }, + "style": "form" + }, + { + "name": "tool_group_source_type_id", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "include_global", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + }, + "style": "form" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InvokeToolInstanceParamsInner" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Invoke tool", + "description": "List tool group instances", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InvokeResult" + "$ref": "#/components/schemas/ToolGroupInstanceListItemPaginatedResponse" } } } @@ -25696,15 +25761,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tools/enable-and-bind": { - "post": { + "/api/v1/team/{team_id}/mcp/tool-group/grouped-by-tool": { + "get": { "tags": [ "mcp", "v1" ], - "summary": "Enable provider tools and bind them to MCP servers", - "description": "Idempotently enables either every provider tool or an explicit set, then adds those enabled tools to each of 1-50 MCP servers. Invalid selections and provider-account authorization fail before writes. Runtime enablement and server-binding failures are returned per item so partial progress is observable and the same request can be retried safely. Each individual MCP-server mapping batch remains atomic.", - "operationId": "enable-and-bind-provider-tools", + "summary": "List tool groups by tool", + "description": "List tool group instances grouped by their associated tools", + "operationId": "list-tool-group-instances-grouped-by-tool", "parameters": [ { "name": "team_id", @@ -25716,38 +25781,65 @@ } }, { - "name": "tool_group_instance_id", - "in": "path", - "description": "Provider account / tool-group instance ID", + "name": "page_size", + "in": "query", "required": true, + "schema": { + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, "schema": { "type": "string" - } + }, + "style": "form" + }, + { + "name": "tool_group_source_type_id", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "tool_category", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "include_global", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + }, + "style": "form" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EnableAndBindToolsBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Per-tool enablement and per-server binding results. The complete field is false when any item failed", + "description": "List tool group instances grouped by tool", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EnableAndBindToolsResponse" + "$ref": "#/components/schemas/ToolConfigPaginatedResponse" } } } }, "400": { - "description": "Invalid or duplicate tool/server selection; no mutations were attempted", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -25757,7 +25849,7 @@ } }, "401": { - "description": "Unauthorized; no mutations were attempted", + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -25767,17 +25859,7 @@ } }, "403": { - "description": "Caller cannot manage the provider account; no mutations were attempted", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Provider account or explicitly selected tool not found; no mutations were attempted", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -25787,7 +25869,7 @@ } }, "500": { - "description": "Failed before an observable per-item result could be returned", + "description": "Internal Server Error", "content": { "application/json": { "schema": { @@ -25807,15 +25889,15 @@ ] } }, - "/api/v1/team/{team_id}/mcp/tools": { + "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}": { "get": { "tags": [ "mcp", "v1" ], - "summary": "List tool instances", - "description": "List all tool instances with optional filtering by tool group instance", - "operationId": "list-tools", + "summary": "Get tool group", + "description": "Retrieve a tool group instance by its unique identifier", + "operationId": "get-tool-group-instance", "parameters": [ { "name": "team_id", @@ -25826,51 +25908,23 @@ "type": "string" } }, - { - "name": "page_size", - "in": "query", - "required": true, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, { "name": "tool_group_instance_id", - "in": "query", - "required": false, + "in": "path", + "description": "Tool group instance ID", + "required": true, "schema": { "type": "string" - }, - "style": "form" - }, - { - "name": "include_global", - "in": "query", - "required": false, - "schema": { - "type": "boolean" - }, - "style": "form" + } } ], "responses": { "200": { - "description": "List tool instances", + "description": "Get tool group instance", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolInstanceSerializedPaginatedResponse" + "$ref": "#/components/schemas/ToolGroupInstanceSerializedWithEverything" } } } @@ -25924,17 +25978,15 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/mcp/tools/openapi.json": { - "get": { + }, + "delete": { "tags": [ "mcp", "v1" ], - "summary": "Get tool OpenAPI spec", - "description": "Get the OpenAPI specification for all tool instances", - "operationId": "get-tools-openapi-spec", + "summary": "Delete tool group", + "description": "Delete a tool group instance by its unique identifier", + "operationId": "delete-tool-group-instance", "parameters": [ { "name": "team_id", @@ -25944,15 +25996,34 @@ "schema": { "type": "string" } + }, + { + "name": "tool_group_instance_id", + "in": "path", + "description": "Tool group instance ID", + "required": true, + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "Get tool instances openapi spec", + "description": "Delete tool group instance", "content": { - "text/plain": { + "application/json": { "schema": { - "type": "string" + "default": null + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -25996,83 +26067,62 @@ "bearer_token": [] } ] - } - }, - "/api/v1/team/{team_id}/memory/banks": { - "get": { + }, + "patch": { "tags": [ - "memory", + "mcp", "v1" ], - "summary": "List memory banks", - "description": "List the team's isolated memory banks.", - "operationId": "list-memory-banks", + "summary": "Update tool group", + "description": "Update an existing tool group instance configuration", + "operationId": "update-tool-group-instance", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "page_size", - "in": "query", - "required": false, + "name": "tool_group_instance_id", + "in": "path", + "description": "Tool group instance ID", + "required": true, "schema": { - "type": "integer", - "format": "int64" + "type": "string" } }, { - "name": "next_page_token", + "name": "wait_for_status", "in": "query", + "description": "Hold the request until this status is observed or the timeout expires.", "required": false, "schema": { - "type": [ - "string", - "null" - ] - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MemoryBankPaginatedResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "memory", - "v1" - ], - "summary": "Create a memory bank", - "description": "Create an isolated HelixDB graph/vector memory bank and its enabled private tool provider.", - "operationId": "create-memory-bank", - "parameters": [ + "type": "string" + }, + "style": "form" + }, { - "name": "team_id", - "in": "path", - "required": true, + "name": "timeout_ms", + "in": "query", + "description": "Long-poll timeout in milliseconds, clamped to 30 seconds.", + "required": false, "schema": { - "type": "string" - } + "type": "integer", + "format": "int64", + "minimum": 0 + }, + "style": "form" } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateMemoryBankBody" + "$ref": "#/components/schemas/UpdateToolGroupInstanceParamsInner" } } }, @@ -26080,166 +26130,101 @@ }, "responses": { "200": { - "description": "", + "description": "Update tool group instance", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBank" + "$ref": "#/components/schemas/TupleUnit" } } } - } - } - } - }, - "/api/v1/team/{team_id}/memory/banks/visible": { - "get": { - "tags": [ - "memory", - "v1" - ], - "summary": "List effective visible memory banks", - "description": "List current-team and personal banks visible to the effective user through public mode, a direct grant, or an Identity group grant.", - "operationId": "list-visible-memory-banks", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } }, - { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] - } - } - ], - "responses": { - "200": { - "description": "", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankPaginatedResponse" + "$ref": "#/components/schemas/Error" } } } - } - } - } - }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}": { - "get": { - "tags": [ - "memory", - "v1" - ], - "summary": "Get a memory bank", - "description": "Get one memory bank and its provisioning state.", - "operationId": "get-memory-bank", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } }, - { - "name": "bank_id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } - } - ], - "responses": { - "200": { - "description": "", + }, + "500": { + "description": "Internal Server Error", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBank" + "$ref": "#/components/schemas/Error" } } } } - } - }, - "delete": { + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/bound-params": { + "patch": { "tags": [ - "memory", + "mcp", "v1" ], - "summary": "Delete a memory bank", - "description": "Delete the provider bank, its private tools, and its Tilde record.", - "operationId": "delete-memory-bank", + "summary": "Update tool bound_params", + "description": "Replace the bound_params JSON object on an enabled tool instance. Bound values are merged into LLM-supplied params at invoke time and win on collision.", + "operationId": "update-tool-bound-params", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "bank_id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - } - ], - "responses": { - "200": { - "description": "" - } - } - }, - "patch": { - "tags": [ - "memory", - "v1" - ], - "summary": "Update a memory bank", - "description": "Update bank metadata and its provider/tool configuration.", - "operationId": "update-memory-bank", - "parameters": [ - { - "name": "team_id", + "name": "tool_group_instance_id", "in": "path", + "description": "Tool group instance ID", "required": true, "schema": { "type": "string" } }, { - "name": "bank_id", + "name": "tool_source_type_id", "in": "path", + "description": "Tool source type ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -26247,7 +26232,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateMemoryBankBody" + "$ref": "#/components/schemas/UpdateToolInstanceBoundParamsInner" } } }, @@ -26255,120 +26240,211 @@ }, "responses": { "200": { - "description": "", + "description": "Updated tool bound_params", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBank" + "$ref": "#/components/schemas/ToolInstanceSerialized" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Tool instance not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } - } + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/config": { - "get": { + "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/disable": { + "post": { "tags": [ - "memory", + "mcp", "v1" ], - "summary": "Get memory bank configuration", - "description": "Return resolved configuration and explicit bank-level overrides.", - "operationId": "get-memory-bank-config", + "summary": "Disable tool", + "description": "Disable a tool for a tool group instance", + "operationId": "disable-tool", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "bank_id", + "name": "tool_group_instance_id", "in": "path", + "description": "Tool group instance ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" + } + }, + { + "name": "tool_source_type_id", + "in": "path", + "description": "Tool source type ID", + "required": true, + "schema": { + "type": "string" } } ], "responses": { "200": { - "description": "", + "description": "Disable tool", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankConfig" + "$ref": "#/components/schemas/TupleUnit" } } } - } - } - }, - "delete": { - "tags": [ - "memory", - "v1" - ], - "summary": "Reset memory bank configuration", - "description": "Remove every bank-level override and inherit provider defaults.", - "operationId": "reset-memory-bank-config", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } }, - { - "name": "bank_id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } - } - ], - "responses": { - "200": { - "description": "", + }, + "403": { + "description": "Forbidden", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankConfig" + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } - } - }, - "patch": { + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/enable": { + "post": { "tags": [ - "memory", + "mcp", "v1" ], - "summary": "Update memory bank configuration", - "description": "Apply a partial set of bank-level configuration overrides.", - "operationId": "update-memory-bank-config", + "summary": "Enable tool", + "description": "Enable a tool for a tool group instance. Optional bound_params may be supplied and will be merged into invocation params for this enabled tool.", + "operationId": "enable-tool", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "bank_id", + "name": "tool_group_instance_id", "in": "path", + "description": "Tool group instance ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" + } + }, + { + "name": "tool_source_type_id", + "in": "path", + "description": "Tool source type ID", + "required": true, + "schema": { + "type": "string" } } ], @@ -26376,7 +26452,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateMemoryBankConfigBody" + "$ref": "#/components/schemas/EnableToolInstanceParamsInner" } } }, @@ -26384,110 +26460,202 @@ }, "responses": { "200": { - "description": "", + "description": "Enable tool", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankConfig" + "$ref": "#/components/schemas/ToolInstanceSerialized" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } - } + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/documents": { - "get": { + "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tool/{tool_source_type_id}/invoke": { + "post": { "tags": [ - "memory", + "mcp", "v1" ], - "summary": "List memory bank documents", - "description": "List retained documents with search and offset pagination.", - "operationId": "list-memory-bank-documents", + "summary": "Invoke tool", + "description": "Invoke a tool on a tool group instance", + "operationId": "invoke-tool", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "bank_id", + "name": "tool_group_instance_id", "in": "path", + "description": "Tool group instance ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } }, { - "name": "limit", - "in": "query", - "required": false, + "name": "tool_source_type_id", + "in": "path", + "description": "Tool source type ID", + "required": true, "schema": { - "type": "integer", - "format": "int64" + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvokeToolInstanceParamsInner" + } } }, - { - "name": "offset", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" + "required": true + }, + "responses": { + "200": { + "description": "Invoke tool", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InvokeResult" + } + } } }, - { - "name": "q", - "in": "query", - "required": false, - "schema": { - "type": [ - "string", - "null" - ] + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } - } - ], - "responses": { - "200": { - "description": "", + }, + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankDocumentList" + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } - } - }, - "delete": { + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/tool-group/{tool_group_instance_id}/tools/enable-and-bind": { + "post": { "tags": [ - "memory", + "mcp", "v1" ], - "summary": "Delete a memory document", - "description": "Delete a stable document and its extracted memories from the selected bank.", - "operationId": "delete-memory-document", + "summary": "Enable provider tools and bind them to MCP servers", + "description": "Idempotently enables either every provider tool or an explicit set, then adds those enabled tools to each of 1-50 MCP servers. Invalid selections and provider-account authorization fail before writes. Runtime enablement and server-binding failures are returned per item so partial progress is observable and the same request can be retried safely. Each individual MCP-server mapping batch remains atomic.", + "operationId": "enable-and-bind-provider-tools", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "bank_id", + "name": "tool_group_instance_id", "in": "path", + "description": "Provider account / tool-group instance ID", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -26495,7 +26663,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteMemoryDocumentBody" + "$ref": "#/components/schemas/EnableAndBindToolsBody" } } }, @@ -26503,40 +26671,209 @@ }, "responses": { "200": { - "description": "" + "description": "Per-tool enablement and per-server binding results. The complete field is false when any item failed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EnableAndBindToolsResponse" + } + } + } + }, + "400": { + "description": "Invalid or duplicate tool/server selection; no mutations were attempted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Unauthorized; no mutations were attempted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Caller cannot manage the provider account; no mutations were attempted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Provider account or explicitly selected tool not found; no mutations were attempted", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Failed before an observable per-item result could be returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } } - } + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/documents/{document_id}": { + "/api/v1/team/{team_id}/mcp/tools": { "get": { "tags": [ - "memory", + "mcp", "v1" ], - "summary": "Get memory bank document", - "description": "Get retained document content, typed provenance and provider state.", - "operationId": "get-memory-bank-document", + "summary": "List tool instances", + "description": "List all tool instances with optional filtering by tool group instance", + "operationId": "list-tools", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "bank_id", - "in": "path", + "name": "page_size", + "in": "query", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "tool_group_instance_id", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "include_global", + "in": "query", + "required": false, + "schema": { + "type": "boolean" + }, + "style": "form" + } + ], + "responses": { + "200": { + "description": "List tool instances", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolInstanceSerializedPaginatedResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } + } + }, + "security": [ + { + "api_key": [] }, { - "name": "document_id", + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/mcp/tools/openapi.json": { + "get": { + "tags": [ + "mcp", + "v1" + ], + "summary": "Get tool OpenAPI spec", + "description": "Get the OpenAPI specification for all tool instances", + "operationId": "get-tools-openapi-spec", + "parameters": [ + { + "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -26545,27 +26882,65 @@ ], "responses": { "200": { - "description": "", + "description": "Get tool instances openapi spec", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + } + }, + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StoredMemoryDocument" + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } } - } + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/health": { + "/api/v1/team/{team_id}/memory/banks": { "get": { "tags": [ "memory", "v1" ], - "summary": "Check memory bank health", - "description": "Check Tilde provisioning state and HelixDB reachability.", - "operationId": "check-memory-bank-health", + "summary": "List memory banks", + "description": "List the team's isolated memory banks.", + "operationId": "list-memory-banks", "parameters": [ { "name": "team_id", @@ -26576,11 +26951,23 @@ } }, { - "name": "bank_id", - "in": "path", - "required": true, + "name": "page_size", + "in": "query", + "required": false, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] } } ], @@ -26590,23 +26977,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankHealth" + "$ref": "#/components/schemas/MemoryBankPaginatedResponse" } } } } } - } - }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/ownership": { + }, "post": { "tags": [ "memory", "v1" ], - "summary": "Set memory-bank ownership", - "description": "Set the memory bank administration plane to team or private. Requires current ownership-plane authority.", - "operationId": "set-memory-bank-ownership-mode", + "summary": "Create a memory bank", + "description": "Create an isolated HelixDB graph/vector memory bank and its enabled private tool provider.", + "operationId": "create-memory-bank", "parameters": [ { "name": "team_id", @@ -26615,21 +27000,13 @@ "schema": { "type": "string" } - }, - { - "name": "bank_id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" + "$ref": "#/components/schemas/CreateMemoryBankBody" } } }, @@ -26641,7 +27018,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/MemoryBank" } } } @@ -26649,15 +27026,15 @@ } } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/ownership/grants": { + "/api/v1/team/{team_id}/memory/banks/visible": { "get": { "tags": [ "memory", "v1" ], - "summary": "List memory-bank ownership grants", - "description": "List users and groups admitted to private memory-bank administration.", - "operationId": "list-memory-bank-ownership-grants", + "summary": "List effective visible memory banks", + "description": "List current-team and personal banks visible to the effective user through public mode, a direct grant, or an Identity group grant.", + "operationId": "list-visible-memory-banks", "parameters": [ { "name": "team_id", @@ -26668,11 +27045,23 @@ } }, { - "name": "bank_id", - "in": "path", - "required": true, + "name": "page_size", + "in": "query", + "required": false, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] } } ], @@ -26682,24 +27071,23 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResourceGrant" - } + "$ref": "#/components/schemas/MemoryBankPaginatedResponse" } } } } } - }, - "post": { + } + }, + "/api/v1/team/{team_id}/memory/banks/{bank_id}": { + "get": { "tags": [ "memory", "v1" ], - "summary": "Add a memory-bank ownership grant", - "description": "Idempotently grant a same-team Identity user or group private administration.", - "operationId": "add-memory-bank-ownership-grant", + "summary": "Get a memory bank", + "description": "Get one memory bank and its provisioning state.", + "operationId": "get-memory-bank", "parameters": [ { "name": "team_id", @@ -26718,39 +27106,27 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/MemoryBank" } } } } } - } - }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/ownership/grants/{principal_type}/{principal_id}": { + }, "delete": { "tags": [ "memory", "v1" ], - "summary": "Remove a memory-bank ownership grant", - "description": "Idempotently remove one ownership grant while retaining at least one owner for a private plane.", - "operationId": "remove-memory-bank-ownership-grant", + "summary": "Delete a memory bank", + "description": "Delete the provider bank, its private tools, and its Tilde record.", + "operationId": "delete-memory-bank", "parameters": [ { "name": "team_id", @@ -26767,22 +27143,6 @@ "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } - }, - { - "name": "principal_type", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/ResourcePrincipalType" - } - }, - { - "name": "principal_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { @@ -26790,17 +27150,15 @@ "description": "" } } - } - }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/recall": { - "post": { + }, + "patch": { "tags": [ "memory", "v1" ], - "summary": "Recall memory", - "description": "Semantically recall relevant content from the selected memory bank.", - "operationId": "recall-memory", + "summary": "Update a memory bank", + "description": "Update bank metadata and its provider/tool configuration.", + "operationId": "update-memory-bank", "parameters": [ { "name": "team_id", @@ -26823,7 +27181,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecallMemoryBody" + "$ref": "#/components/schemas/UpdateMemoryBankBody" } } }, @@ -26835,7 +27193,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryOperationResponse" + "$ref": "#/components/schemas/MemoryBank" } } } @@ -26843,15 +27201,15 @@ } } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/reflect": { - "post": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/config": { + "get": { "tags": [ "memory", "v1" ], - "summary": "Reflect on memory", - "description": "Generate a contextual answer from the selected memory bank.", - "operationId": "reflect-memory", + "summary": "Get memory bank configuration", + "description": "Return resolved configuration and explicit bank-level overrides.", + "operationId": "get-memory-bank-config", "parameters": [ { "name": "team_id", @@ -26870,39 +27228,27 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReflectMemoryBody" - } - } - }, - "required": true - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryOperationResponse" + "$ref": "#/components/schemas/MemoryBankConfig" } } } } } - } - }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/retain": { - "post": { + }, + "delete": { "tags": [ "memory", "v1" ], - "summary": "Retain a memory document", - "description": "Upsert a provider-neutral document into the selected memory bank.", - "operationId": "retain-memory-document", + "summary": "Reset memory bank configuration", + "description": "Remove every bank-level override and inherit provider defaults.", + "operationId": "reset-memory-bank-config", "parameters": [ { "name": "team_id", @@ -26921,11 +27267,50 @@ } } ], - "requestBody": { + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryBankConfig" + } + } + } + } + } + }, + "patch": { + "tags": [ + "memory", + "v1" + ], + "summary": "Update memory bank configuration", + "description": "Apply a partial set of bank-level configuration overrides.", + "operationId": "update-memory-bank-config", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "bank_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + } + ], + "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RetainMemoryBody" + "$ref": "#/components/schemas/UpdateMemoryBankConfigBody" } } }, @@ -26937,7 +27322,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryOperationResponse" + "$ref": "#/components/schemas/MemoryBankConfig" } } } @@ -26945,15 +27330,15 @@ } } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/template": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/documents": { "get": { "tags": [ "memory", "v1" ], - "summary": "Export memory bank template", - "description": "Export portable configuration overrides, mental models, and directives.", - "operationId": "export-memory-bank-template", + "summary": "List memory bank documents", + "description": "List retained documents with search and offset pagination.", + "operationId": "list-memory-bank-documents", "parameters": [ { "name": "team_id", @@ -26970,6 +27355,35 @@ "schema": { "$ref": "#/components/schemas/WrappedUuidV4" } + }, + { + "name": "limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "offset", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "q", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } } ], "responses": { @@ -26978,21 +27392,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryBankTemplate" + "$ref": "#/components/schemas/MemoryBankDocumentList" } } } } } }, - "post": { + "delete": { "tags": [ "memory", "v1" ], - "summary": "Import memory bank template", - "description": "Validate or apply portable configuration, mental models, and directives.", - "operationId": "import-memory-bank-template", + "summary": "Delete a memory document", + "description": "Delete a stable document and its extracted memories from the selected bank.", + "operationId": "delete-memory-document", "parameters": [ { "name": "team_id", @@ -27015,19 +27429,61 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportMemoryBankTemplateBody" + "$ref": "#/components/schemas/DeleteMemoryDocumentBody" } } }, "required": true }, + "responses": { + "200": { + "description": "" + } + } + } + }, + "/api/v1/team/{team_id}/memory/banks/{bank_id}/documents/{document_id}": { + "get": { + "tags": [ + "memory", + "v1" + ], + "summary": "Get memory bank document", + "description": "Get retained document content, typed provenance and provider state.", + "operationId": "get-memory-bank-document", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "bank_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "document_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportMemoryBankTemplateResponse" + "$ref": "#/components/schemas/StoredMemoryDocument" } } } @@ -27035,15 +27491,56 @@ } } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/visibility": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/health": { + "get": { + "tags": [ + "memory", + "v1" + ], + "summary": "Check memory bank health", + "description": "Check Tilde provisioning state and HelixDB reachability.", + "operationId": "check-memory-bank-health", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "bank_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryBankHealth" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/memory/banks/{bank_id}/ownership": { "post": { "tags": [ "memory", "v1" ], - "summary": "Set memory-bank visibility", - "description": "Set the memory bank discovery and content-use plane to team or private. Requires ownership-plane authority.", - "operationId": "set-memory-bank-visibility", + "summary": "Set memory-bank ownership", + "description": "Set the memory bank administration plane to team or private. Requires current ownership-plane authority.", + "operationId": "set-memory-bank-ownership-mode", "parameters": [ { "name": "team_id", @@ -27086,15 +27583,15 @@ } } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/visibility/grants": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/ownership/grants": { "get": { "tags": [ "memory", "v1" ], - "summary": "List memory-bank visibility grants", - "description": "List users and groups admitted to private memory-bank visibility. Requires ownership-plane authority.", - "operationId": "list-memory-bank-visibility-grants", + "summary": "List memory-bank ownership grants", + "description": "List users and groups admitted to private memory-bank administration.", + "operationId": "list-memory-bank-ownership-grants", "parameters": [ { "name": "team_id", @@ -27134,9 +27631,9 @@ "memory", "v1" ], - "summary": "Add a memory-bank visibility grant", - "description": "Idempotently grant a same-team Identity user or group private visibility.", - "operationId": "add-memory-bank-visibility-grant", + "summary": "Add a memory-bank ownership grant", + "description": "Idempotently grant a same-team Identity user or group private administration.", + "operationId": "add-memory-bank-ownership-grant", "parameters": [ { "name": "team_id", @@ -27179,15 +27676,15 @@ } } }, - "/api/v1/team/{team_id}/memory/banks/{bank_id}/visibility/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/ownership/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ "memory", "v1" ], - "summary": "Remove a memory-bank visibility grant", - "description": "Idempotently remove one private visibility grant.", - "operationId": "remove-memory-bank-visibility-grant", + "summary": "Remove a memory-bank ownership grant", + "description": "Idempotently remove one ownership grant while retaining at least one owner for a private plane.", + "operationId": "remove-memory-bank-ownership-grant", "parameters": [ { "name": "team_id", @@ -27229,15 +27726,15 @@ } } }, - "/api/v1/team/{team_id}/memory/banks/{memory_bank_id}/source-bindings": { - "get": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/recall": { + "post": { "tags": [ "memory", "v1" ], - "summary": "List memory-bank sources", - "description": "Inspect all active source bindings and synchronization state for one memory bank.", - "operationId": "list-memory-bank-source-bindings", + "summary": "Recall memory", + "description": "Semantically recall relevant content from the selected memory bank.", + "operationId": "recall-memory", "parameters": [ { "name": "team_id", @@ -27248,7 +27745,7 @@ } }, { - "name": "memory_bank_id", + "name": "bank_id", "in": "path", "required": true, "schema": { @@ -27256,16 +27753,23 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecallMemoryBody" + } + } + }, + "required": true + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemorySourceBinding" - } + "$ref": "#/components/schemas/MemoryOperationResponse" } } } @@ -27273,15 +27777,15 @@ } } }, - "/api/v1/team/{team_id}/memory/source-bindings": { - "get": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/reflect": { + "post": { "tags": [ "memory", "v1" ], - "summary": "List source memory-bank bindings", - "description": "Inspect the selected banks and synchronization state for one source.", - "operationId": "list-memory-source-bindings", + "summary": "Reflect on memory", + "description": "Generate a contextual answer from the selected memory bank.", + "operationId": "reflect-memory", "parameters": [ { "name": "team_id", @@ -27292,53 +27796,11 @@ } }, { - "name": "source_kind", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/MemorySourceKind" - } - }, - { - "name": "source_id", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemorySourceBinding" - } - } - } - } - } - } - }, - "put": { - "tags": [ - "memory", - "v1" - ], - "summary": "Replace source memory-bank bindings", - "description": "Atomically replace a source's selected banks and durably queue a full backfill.", - "operationId": "replace-memory-source-bindings", - "parameters": [ - { - "name": "team_id", + "name": "bank_id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -27346,7 +27808,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReplaceMemoryBankBindingsBody" + "$ref": "#/components/schemas/ReflectMemoryBody" } } }, @@ -27358,10 +27820,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemorySourceBinding" - } + "$ref": "#/components/schemas/MemoryOperationResponse" } } } @@ -27369,15 +27828,15 @@ } } }, - "/api/v1/team/{team_id}/memory/source-bindings/retry": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/retain": { "post": { "tags": [ "memory", "v1" ], - "summary": "Retry source synchronization", - "description": "Retry every memory-bank binding for a source.", - "operationId": "retry-memory-source-sync", + "summary": "Retain a memory document", + "description": "Upsert a provider-neutral document into the selected memory bank.", + "operationId": "retain-memory-document", "parameters": [ { "name": "team_id", @@ -27386,13 +27845,21 @@ "schema": { "type": "string" } + }, + { + "name": "bank_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RetryMemorySourceBody" + "$ref": "#/components/schemas/RetainMemoryBody" } } }, @@ -27404,10 +27871,7 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemorySourceBinding" - } + "$ref": "#/components/schemas/MemoryOperationResponse" } } } @@ -27415,15 +27879,15 @@ } } }, - "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/documents": { - "delete": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/template": { + "get": { "tags": [ "memory", "v1" ], - "summary": "Delete memory during background synthesis", - "description": "Deletes an unprotected memory only when the assigned synthesizer supplies the exact active batch, evidence set, and issuing worker lease. Successful deletion records a durable per-operation idempotency receipt.", - "operationId": "delete-synthesis-session-memory", + "summary": "Export memory bank template", + "description": "Export portable configuration overrides, mental models, and directives.", + "operationId": "export-memory-bank-template", "parameters": [ { "name": "team_id", @@ -27434,7 +27898,7 @@ } }, { - "name": "session_id", + "name": "bank_id", "in": "path", "required": true, "schema": { @@ -27442,30 +27906,27 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteSynthesisMemoryDocumentBody" + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryBankTemplate" + } } } - }, - "required": true - }, - "responses": { - "204": { - "description": "" } } - } - }, - "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/recall": { + }, "post": { "tags": [ "memory", "v1" ], - "operationId": "recall-synthesis-session-memory", + "summary": "Import memory bank template", + "description": "Validate or apply portable configuration, mental models, and directives.", + "operationId": "import-memory-bank-template", "parameters": [ { "name": "team_id", @@ -27476,7 +27937,7 @@ } }, { - "name": "session_id", + "name": "bank_id", "in": "path", "required": true, "schema": { @@ -27488,7 +27949,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RecallMemoryBody" + "$ref": "#/components/schemas/ImportMemoryBankTemplateBody" } } }, @@ -27500,7 +27961,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryOperationResponse" + "$ref": "#/components/schemas/ImportMemoryBankTemplateResponse" } } } @@ -27508,13 +27969,15 @@ } } }, - "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/retain": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/visibility": { "post": { "tags": [ "memory", "v1" ], - "operationId": "retain-synthesis-session-memory", + "summary": "Set memory-bank visibility", + "description": "Set the memory bank discovery and content-use plane to team or private. Requires ownership-plane authority.", + "operationId": "set-memory-bank-visibility", "parameters": [ { "name": "team_id", @@ -27525,7 +27988,7 @@ } }, { - "name": "session_id", + "name": "bank_id", "in": "path", "required": true, "schema": { @@ -27537,7 +28000,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SynthesisSessionRetainMemoryBody" + "$ref": "#/components/schemas/SetResourceAccessModeRequest" } } }, @@ -27549,7 +28012,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryOperationResponse" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -27557,15 +28020,15 @@ } } }, - "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/validate-batch": { - "post": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/visibility/grants": { + "get": { "tags": [ "memory", "v1" ], - "summary": "Validate an active synthesis batch", - "description": "Authenticates the bank's assigned synthesizer and verifies that the supplied batch digest, complete evidence-ID set, and worker lease exactly match the session's current unexpired Postgres claim. This read-only check does not mutate memory or lease state.", - "operationId": "validate-synthesis-session-batch", + "summary": "List memory-bank visibility grants", + "description": "List users and groups admitted to private memory-bank visibility. Requires ownership-plane authority.", + "operationId": "list-memory-bank-visibility-grants", "parameters": [ { "name": "team_id", @@ -27576,7 +28039,7 @@ } }, { - "name": "session_id", + "name": "bank_id", "in": "path", "required": true, "schema": { @@ -27584,32 +28047,30 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ValidateSynthesisBatchBody" + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } + } } } - }, - "required": true - }, - "responses": { - "204": { - "description": "The complete evidence set is owned by the exact active worker lease" } } - } - }, - "/api/v1/team/{team_id}/openbot/agents/{agent_id}/bundle": { - "put": { + }, + "post": { "tags": [ - "openbot", + "memory", "v1" ], - "summary": "Reconcile OpenBot agent bundle", - "description": "Idempotently reconciles the agent, ChatKit workspace channel, authored skills and registry, MCP server, and tool-group bindings in one request.", - "operationId": "reconcile-openbot-agent-bundle", + "summary": "Add a memory-bank visibility grant", + "description": "Idempotently grant a same-team Identity user or group private visibility.", + "operationId": "add-memory-bank-visibility-grant", "parameters": [ { "name": "team_id", @@ -27620,11 +28081,11 @@ } }, { - "name": "agent_id", + "name": "bank_id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -27632,7 +28093,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReconcileOpenBotAgentBundleBody" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -27644,31 +28105,23 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReconcileOpenBotAgentBundleResponse" + "$ref": "#/components/schemas/ResourceGrant" } } } } - }, - "security": [ - { - "api_key": [] - }, - { - "bearer_token": [] - } - ] + } } }, - "/api/v1/team/{team_id}/openbot/plugins/catalog": { - "get": { + "/api/v1/team/{team_id}/memory/banks/{bank_id}/visibility/grants/{principal_type}/{principal_id}": { + "delete": { "tags": [ - "openbot", + "memory", "v1" ], - "summary": "Get the OpenBot plugins catalog", - "description": "Returns the MCP providers, accounts, servers, skills, providers, and registries needed by the OpenBot plugins screen in one request.", - "operationId": "get-openbot-plugins-catalog", + "summary": "Remove a memory-bank visibility grant", + "description": "Idempotently remove one private visibility grant.", + "operationId": "remove-memory-bank-visibility-grant", "parameters": [ { "name": "team_id", @@ -27677,47 +28130,26 @@ "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenBotPluginsCatalogResponse" - } - } - } - } - }, - "security": [ - { - "api_key": [] }, { - "bearer_token": [] - } - ] - } - }, - "/api/v1/team/{team_id}/provider-setup/catalog": { - "get": { - "summary": "List generic provider setup descriptors", - "description": "Returns server-authored provider setup descriptors for a product domain.", - "operationId": "provider_setup_catalog", - "parameters": [ + "name": "bank_id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, { - "name": "team_id", + "name": "principal_type", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/ResourcePrincipalType" } }, { - "name": "domain", - "in": "query", + "name": "principal_id", + "in": "path", "required": true, "schema": { "type": "string" @@ -27726,62 +28158,20 @@ ], "responses": { "200": { - "description": "Provider setup catalog", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListProviderSetupCatalogResponse" - } - } - } + "description": "" } } } }, - "/api/v1/team/{team_id}/provider-setup/start": { - "post": { - "summary": "Start generic provider setup", - "description": "Starts a server-authored provider setup workflow and returns the next generic UI action.", - "operationId": "provider_setup_start", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } + "/api/v1/team/{team_id}/memory/banks/{memory_bank_id}/source-bindings": { + "get": { + "tags": [ + "memory", + "v1" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StartProviderSetupBody" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Provider setup response", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProviderSetupResponse" - } - } - } - } - } - } - }, - "/api/v1/team/{team_id}/provider-setup/{setup_id}/resume": { - "post": { - "summary": "Resume generic provider setup", - "description": "Resumes a server-authored provider setup workflow after user input or a provider callback.", - "operationId": "provider_setup_resume", + "summary": "List memory-bank sources", + "description": "Inspect all active source bindings and synchronization state for one memory bank.", + "operationId": "list-memory-bank-source-bindings", "parameters": [ { "name": "team_id", @@ -27792,31 +28182,24 @@ } }, { - "name": "setup_id", + "name": "memory_bank_id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResumeProviderSetupBody" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Provider setup response", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProviderSetupResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/MemorySourceBinding" + } } } } @@ -27824,82 +28207,69 @@ } } }, - "/api/v1/team/{team_id}/reverse-proxy/profile": { + "/api/v1/team/{team_id}/memory/source-bindings": { "get": { "tags": [ - "reverse-proxy", + "memory", "v1" ], - "summary": "List reverse proxy profiles", - "description": "Paginated list of reverse proxy profiles for the given team.", - "operationId": "reverse_proxy_list_profiles", + "summary": "List source memory-bank bindings", + "description": "Inspect the selected banks and synchronization state for one source.", + "operationId": "list-memory-source-bindings", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "page_size", + "name": "source_kind", "in": "query", - "required": false, + "required": true, "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/MemorySourceKind" } }, { - "name": "next_page_token", + "name": "source_id", "in": "query", - "required": false, + "required": true, "schema": { - "type": [ - "string", - "null" - ] + "type": "string" } } ], "responses": { "200": { - "description": "Paginated reverse proxy profiles", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReverseProxyProfilePaginatedResponse" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "type": "array", + "items": { + "$ref": "#/components/schemas/MemorySourceBinding" + } } } } } } }, - "post": { + "put": { "tags": [ - "reverse-proxy", + "memory", "v1" ], - "summary": "Create reverse proxy profile", - "description": "Create a reverse proxy profile binding a credential, base_url, and template.", - "operationId": "reverse_proxy_create_profile", + "summary": "Replace source memory-bank bindings", + "description": "Atomically replace a source's selected banks and durably queue a full backfill.", + "operationId": "replace-memory-source-bindings", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -27910,7 +28280,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateReverseProxyProfileInner" + "$ref": "#/components/schemas/ReplaceMemoryBankBindingsBody" } } }, @@ -27918,31 +28288,14 @@ }, "responses": { "200": { - "description": "Created reverse proxy profile", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReverseProxyProfile" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "500": { - "description": "Internal Server Error", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "type": "array", + "items": { + "$ref": "#/components/schemas/MemorySourceBinding" + } } } } @@ -27950,66 +28303,61 @@ } } }, - "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}": { - "get": { + "/api/v1/team/{team_id}/memory/source-bindings/retry": { + "post": { "tags": [ - "reverse-proxy", + "memory", "v1" ], - "summary": "Get reverse proxy profile", - "description": "Retrieve a reverse proxy profile by id.", - "operationId": "reverse_proxy_get_profile", + "summary": "Retry source synchronization", + "description": "Retry every memory-bank binding for a source.", + "operationId": "retry-memory-source-sync", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "profile_id", - "in": "path", - "description": "Profile slug", "required": true, "schema": { "type": "string" } } ], - "responses": { - "200": { - "description": "The reverse proxy profile", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReverseProxyProfile" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RetryMemorySourceBody" } } }, - "404": { - "description": "Profile not found", + "required": true + }, + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "type": "array", + "items": { + "$ref": "#/components/schemas/MemorySourceBinding" + } } } } } } - }, + } + }, + "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/documents": { "delete": { "tags": [ - "reverse-proxy", + "memory", "v1" ], - "summary": "Delete reverse proxy profile", - "description": "Delete a profile. Requires ownership-plane access.", - "operationId": "reverse_proxy_delete_profile", + "summary": "Delete memory during background synthesis", + "description": "Deletes an unprotected memory only when the assigned synthesizer supplies the exact active batch, evidence set, and issuing worker lease. Successful deletion records a durable per-operation idempotency receipt.", + "operationId": "delete-synthesis-session-memory", "parameters": [ { "name": "team_id", @@ -28020,55 +28368,53 @@ } }, { - "name": "profile_id", + "name": "session_id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "responses": { - "200": { - "description": "" - }, - "404": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteSynthesisMemoryDocumentBody" } } + }, + "required": true + }, + "responses": { + "204": { + "description": "" } } - }, - "patch": { + } + }, + "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/recall": { + "post": { "tags": [ - "reverse-proxy", + "memory", "v1" ], - "summary": "Update reverse proxy profile", - "description": "Partial update of a reverse proxy profile. Only fields supplied as Some are written.", - "operationId": "reverse_proxy_update_profile", + "operationId": "recall-synthesis-session-memory", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "profile_id", + "name": "session_id", "in": "path", - "description": "Profile slug", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -28076,7 +28422,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateReverseProxyProfileInner" + "$ref": "#/components/schemas/RecallMemoryBody" } } }, @@ -28084,31 +28430,11 @@ }, "responses": { "200": { - "description": "Updated reverse proxy profile", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReverseProxyProfile" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Profile not found", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/MemoryOperationResponse" } } } @@ -28116,15 +28442,13 @@ } } }, - "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/ownership": { + "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/retain": { "post": { "tags": [ - "reverse-proxy", + "memory", "v1" ], - "summary": "Set reverse proxy profile ownership", - "description": "Set one reverse proxy profile authorization plane.", - "operationId": "reverse_proxy_set_profile_ownership", + "operationId": "retain-synthesis-session-memory", "parameters": [ { "name": "team_id", @@ -28135,11 +28459,11 @@ } }, { - "name": "profile_id", + "name": "session_id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], @@ -28147,7 +28471,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" + "$ref": "#/components/schemas/SynthesisSessionRetainMemoryBody" } } }, @@ -28159,7 +28483,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/MemoryOperationResponse" } } } @@ -28167,15 +28491,15 @@ } } }, - "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/ownership/grants": { - "get": { + "/api/v1/team/{team_id}/memory/synthesis-sessions/{session_id}/validate-batch": { + "post": { "tags": [ - "reverse-proxy", + "memory", "v1" ], - "summary": "List reverse proxy ownership grants", - "description": "List grants. Requires ownership-plane access.", - "operationId": "reverse_proxy_list_profile_ownership_grants", + "summary": "Validate an active synthesis batch", + "description": "Authenticates the bank's assigned synthesizer and verifies that the supplied batch digest, complete evidence-ID set, and worker lease exactly match the session's current unexpired Postgres claim. This read-only check does not mutate memory or lease state.", + "operationId": "validate-synthesis-session-batch", "parameters": [ { "name": "team_id", @@ -28186,38 +28510,40 @@ } }, { - "name": "profile_id", + "name": "session_id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResourceGrant" - } - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidateSynthesisBatchBody" } } + }, + "required": true + }, + "responses": { + "204": { + "description": "The complete evidence set is owned by the exact active worker lease" } } - }, - "post": { + } + }, + "/api/v1/team/{team_id}/openbot/agents/{agent_id}/bundle": { + "put": { "tags": [ - "reverse-proxy", + "openbot", "v1" ], - "summary": "Add reverse proxy ownership grant", - "description": "Add a same-team user or group grant.", - "operationId": "reverse_proxy_add_profile_ownership_grant", + "summary": "Reconcile OpenBot agent bundle", + "description": "Idempotently reconciles the agent, ChatKit workspace channel, authored skills and registry, MCP server, and tool-group bindings in one request.", + "operationId": "reconcile-openbot-agent-bundle", "parameters": [ { "name": "team_id", @@ -28228,7 +28554,7 @@ } }, { - "name": "profile_id", + "name": "agent_id", "in": "path", "required": true, "schema": { @@ -28240,7 +28566,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" + "$ref": "#/components/schemas/ReconcileOpenBotAgentBundleBody" } } }, @@ -28252,23 +28578,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/ReconcileOpenBotAgentBundleResponse" } } } } - } + }, + "security": [ + { + "api_key": [] + }, + { + "bearer_token": [] + } + ] } }, - "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/ownership/grants/{principal_type}/{principal_id}": { - "delete": { + "/api/v1/team/{team_id}/openbot/plugins/catalog": { + "get": { "tags": [ - "reverse-proxy", + "openbot", "v1" ], - "summary": "Remove reverse proxy ownership grant", - "description": "Remove a grant idempotently.", - "operationId": "reverse_proxy_remove_profile_ownership_grant", + "summary": "Get the OpenBot plugins catalog", + "description": "Returns the MCP providers, accounts, servers, skills, providers, and registries needed by the OpenBot plugins screen in one request.", + "operationId": "get-openbot-plugins-catalog", "parameters": [ { "name": "team_id", @@ -28277,26 +28611,47 @@ "schema": { "type": "string" } - }, - { - "name": "profile_id", - "in": "path", - "required": true, - "schema": { - "type": "string" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenBotPluginsCatalogResponse" + } + } } + } + }, + "security": [ + { + "api_key": [] }, { - "name": "principal_type", + "bearer_token": [] + } + ] + } + }, + "/api/v1/team/{team_id}/provider-setup/catalog": { + "get": { + "summary": "List generic provider setup descriptors", + "description": "Returns server-authored provider setup descriptors for a product domain.", + "operationId": "provider_setup_catalog", + "parameters": [ + { + "name": "team_id", "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/ResourcePrincipalType" + "type": "string" } }, { - "name": "principal_id", - "in": "path", + "name": "domain", + "in": "query", "required": true, "schema": { "type": "string" @@ -28305,20 +28660,23 @@ ], "responses": { "200": { - "description": "" + "description": "Provider setup catalog", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListProviderSetupCatalogResponse" + } + } + } } } } }, - "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/visibility": { + "/api/v1/team/{team_id}/provider-setup/start": { "post": { - "tags": [ - "reverse-proxy", - "v1" - ], - "summary": "Set reverse proxy profile visibility", - "description": "Set one reverse proxy profile authorization plane.", - "operationId": "reverse_proxy_set_profile_visibility", + "summary": "Start generic provider setup", + "description": "Starts a server-authored provider setup workflow and returns the next generic UI action.", + "operationId": "provider_setup_start", "parameters": [ { "name": "team_id", @@ -28327,21 +28685,13 @@ "schema": { "type": "string" } - }, - { - "name": "profile_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" + "$ref": "#/components/schemas/StartProviderSetupBody" } } }, @@ -28349,11 +28699,11 @@ }, "responses": { "200": { - "description": "", + "description": "Provider setup response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/ProviderSetupResponse" } } } @@ -28361,15 +28711,11 @@ } } }, - "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/visibility/grants": { - "get": { - "tags": [ - "reverse-proxy", - "v1" - ], - "summary": "List reverse proxy visibility grants", - "description": "List grants. Requires ownership-plane access.", - "operationId": "reverse_proxy_list_profile_visibility_grants", + "/api/v1/team/{team_id}/provider-setup/{setup_id}/resume": { + "post": { + "summary": "Resume generic provider setup", + "description": "Resumes a server-authored provider setup workflow after user input or a provider callback.", + "operationId": "provider_setup_resume", "parameters": [ { "name": "team_id", @@ -28380,7 +28726,7 @@ } }, { - "name": "profile_id", + "name": "setup_id", "in": "path", "required": true, "schema": { @@ -28388,131 +28734,101 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResumeProviderSetupBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "", + "description": "Provider setup response", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResourceGrant" - } + "$ref": "#/components/schemas/ProviderSetupResponse" } } } } } - }, - "post": { + } + }, + "/api/v1/team/{team_id}/reverse-proxy/profile": { + "get": { "tags": [ "reverse-proxy", "v1" ], - "summary": "Add reverse proxy visibility grant", - "description": "Add a same-team user or group grant.", - "operationId": "reverse_proxy_add_profile_visibility_grant", + "summary": "List reverse proxy profiles", + "description": "Paginated list of reverse proxy profiles for the given team.", + "operationId": "reverse_proxy_list_profiles", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "profile_id", - "in": "path", - "required": true, + "name": "page_size", + "in": "query", + "required": false, "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" - } + "type": "integer", + "format": "int64" } }, - "required": true - }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + } + ], "responses": { "200": { - "description": "", + "description": "Paginated reverse proxy profiles", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/ReverseProxyProfilePaginatedResponse" } } } - } - } - } - }, - "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/visibility/grants/{principal_type}/{principal_id}": { - "delete": { - "tags": [ - "reverse-proxy", - "v1" - ], - "summary": "Remove reverse proxy visibility grant", - "description": "Remove a grant idempotently.", - "operationId": "reverse_proxy_remove_profile_visibility_grant", - "parameters": [ - { - "name": "team_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "profile_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "principal_type", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/ResourcePrincipalType" - } }, - { - "name": "principal_id", - "in": "path", - "required": true, - "schema": { - "type": "string" + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } } - ], - "responses": { - "200": { - "description": "" - } } - } - }, - "/api/v1/team/{team_id}/reverse-proxy/provider": { - "get": { + }, + "post": { "tags": [ "reverse-proxy", "v1" ], - "summary": "List reverse proxy providers", - "description": "Providers registered with the reverse-proxy. Driven by the in-process `ReverseProxyProviderRegistry`; transport-only templates (no model catalogue).", - "operationId": "reverse_proxy_list_providers", + "summary": "Create reverse proxy profile", + "description": "Create a reverse proxy profile binding a credential, base_url, and template.", + "operationId": "reverse_proxy_create_profile", "parameters": [ { "name": "team_id", @@ -28524,13 +28840,43 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateReverseProxyProfileInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Registered reverse proxy providers", + "description": "Created reverse proxy profile", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ListReverseProxyProvidersResponse" + "$ref": "#/components/schemas/ReverseProxyProfile" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -28538,14 +28884,15 @@ } } }, - "/api/v1/team/{team_id}/reverse-proxy/{profile_id}/{*rest}": { + "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}": { "get": { "tags": [ - "reverse-proxy" + "reverse-proxy", + "v1" ], - "summary": "Proxy GET through profile", - "description": "Forward a GET to the profile's upstream with materialized credential headers.", - "operationId": "reverse_proxy_proxy_get", + "summary": "Get reverse proxy profile", + "description": "Retrieve a reverse proxy profile by id.", + "operationId": "reverse_proxy_get_profile", "parameters": [ { "name": "team_id", @@ -28564,35 +28911,43 @@ "schema": { "type": "string" } - }, - { - "name": "rest", - "in": "path", - "description": "Path tail forwarded to upstream", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "Upstream response (streamed)" + "description": "The reverse proxy profile", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReverseProxyProfile" + } + } + } + }, + "404": { + "description": "Profile not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } } } }, - "post": { + "delete": { "tags": [ - "reverse-proxy" + "reverse-proxy", + "v1" ], - "summary": "Proxy POST through profile", - "description": "Forward a POST to the profile's upstream with materialized credential headers.", - "operationId": "reverse_proxy_proxy_post", + "summary": "Delete reverse proxy profile", + "description": "Delete a profile. Requires ownership-plane access.", + "operationId": "reverse_proxy_delete_profile", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" @@ -28601,16 +28956,6 @@ { "name": "profile_id", "in": "path", - "description": "Profile slug", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "rest", - "in": "path", - "description": "Path tail forwarded to upstream", "required": true, "schema": { "type": "string" @@ -28619,116 +28964,85 @@ ], "responses": { "200": { - "description": "Upstream response (streamed)" - } - } - } - }, - "/api/v1/team/{team_id}/signals/deliveries": { - "get": { - "tags": [ - "signals", - "v1" - ], - "summary": "List signal deliveries", - "description": "List signal deliveries.", - "operationId": "signals-list-deliveries", - "parameters": [ - { - "name": "team_id", - "in": "path", - "description": "Team ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "instance_id", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" + "description": "" }, - { - "name": "status", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - } - ], - "responses": { - "200": { + "404": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalDeliveryPaginatedResponse" + "$ref": "#/components/schemas/Error" } } } } } - } - }, - "/api/v1/team/{team_id}/signals/deliveries/{delivery_id}": { - "get": { + }, + "patch": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "summary": "Get signal delivery", - "description": "Get signal delivery.", - "operationId": "signals-get-delivery", + "summary": "Update reverse proxy profile", + "description": "Partial update of a reverse proxy profile. Only fields supplied as Some are written.", + "operationId": "reverse_proxy_update_profile", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "delivery_id", + "name": "profile_id", "in": "path", + "description": "Profile slug", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateReverseProxyProfileInner" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "", + "description": "Updated reverse proxy profile", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalDelivery" + "$ref": "#/components/schemas/ReverseProxyProfile" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Profile not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -28736,15 +29050,15 @@ } } }, - "/api/v1/team/{team_id}/signals/deliveries/{delivery_id}/retry": { + "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/ownership": { "post": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "summary": "Retry signal delivery", - "description": "Retry signal delivery.", - "operationId": "signals-retry-delivery", + "summary": "Set reverse proxy profile ownership", + "description": "Set one reverse proxy profile authorization plane.", + "operationId": "reverse_proxy_set_profile_ownership", "parameters": [ { "name": "team_id", @@ -28755,21 +29069,31 @@ } }, { - "name": "delivery_id", + "name": "profile_id", "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetResourceAccessModeRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalDelivery" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -28777,61 +29101,31 @@ } } }, - "/api/v1/team/{team_id}/signals/instances": { + "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/ownership/grants": { "get": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "summary": "List signal provider instances", - "description": "List configured signal provider instances.", - "operationId": "signals-list-provider-instances", + "summary": "List reverse proxy ownership grants", + "description": "List grants. Requires ownership-plane access.", + "operationId": "reverse_proxy_list_profile_ownership_grants", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "status", - "in": "query", - "required": false, - "schema": { - "type": "string" - }, - "style": "form" - }, - { - "name": "provider_type", - "in": "query", - "required": false, + "name": "profile_id", + "in": "path", + "required": true, "schema": { "type": "string" - }, - "style": "form" + } } ], "responses": { @@ -28840,7 +29134,10 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalProviderInstancePaginatedResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } } } } @@ -28849,12 +29146,12 @@ }, "post": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "summary": "Create signal provider instance", - "description": "Create a team-scoped signal provider instance.", - "operationId": "signals-create-provider-instance", + "summary": "Add reverse proxy ownership grant", + "description": "Add a same-team user or group grant.", + "operationId": "reverse_proxy_add_profile_ownership_grant", "parameters": [ { "name": "team_id", @@ -28863,13 +29160,21 @@ "schema": { "type": "string" } + }, + { + "name": "profile_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSignalProviderInstanceRequestInner" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -28881,7 +29186,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalProviderInstance" + "$ref": "#/components/schemas/ResourceGrant" } } } @@ -28889,13 +29194,15 @@ } } }, - "/api/v1/team/{team_id}/signals/instances/{id}/ownership": { - "post": { + "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/ownership/grants/{principal_type}/{principal_id}": { + "delete": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "operationId": "set-signal-provider-ownership", + "summary": "Remove reverse proxy ownership grant", + "description": "Remove a grant idempotently.", + "operationId": "reverse_proxy_remove_profile_ownership_grant", "parameters": [ { "name": "team_id", @@ -28906,45 +29213,46 @@ } }, { - "name": "id", + "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" - } + }, + { + "name": "principal_type", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ResourcePrincipalType" } }, - "required": true - }, + { + "name": "principal_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" - } - } - } + "description": "" } } } }, - "/api/v1/team/{team_id}/signals/instances/{id}/visibility": { + "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/visibility": { "post": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "operationId": "set-signal-provider-visibility", + "summary": "Set reverse proxy profile visibility", + "description": "Set one reverse proxy profile authorization plane.", + "operationId": "reverse_proxy_set_profile_visibility", "parameters": [ { "name": "team_id", @@ -28955,7 +29263,7 @@ } }, { - "name": "id", + "name": "profile_id", "in": "path", "required": true, "schema": { @@ -28987,13 +29295,15 @@ } } }, - "/api/v1/team/{team_id}/signals/instances/{id}/{plane}/grants": { + "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/visibility/grants": { "get": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "operationId": "list-signal-provider-grants", + "summary": "List reverse proxy visibility grants", + "description": "List grants. Requires ownership-plane access.", + "operationId": "reverse_proxy_list_profile_visibility_grants", "parameters": [ { "name": "team_id", @@ -29004,20 +29314,12 @@ } }, { - "name": "id", + "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string" } - }, - { - "name": "plane", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/ResourceGrantPlane" - } } ], "responses": { @@ -29038,10 +29340,12 @@ }, "post": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "operationId": "add-signal-provider-grant", + "summary": "Add reverse proxy visibility grant", + "description": "Add a same-team user or group grant.", + "operationId": "reverse_proxy_add_profile_visibility_grant", "parameters": [ { "name": "team_id", @@ -29052,20 +29356,12 @@ } }, { - "name": "id", + "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string" } - }, - { - "name": "plane", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/ResourceGrantPlane" - } } ], "requestBody": { @@ -29092,13 +29388,15 @@ } } }, - "/api/v1/team/{team_id}/signals/instances/{id}/{plane}/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/reverse-proxy/profile/{profile_id}/visibility/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "operationId": "remove-signal-provider-grant", + "summary": "Remove reverse proxy visibility grant", + "description": "Remove a grant idempotently.", + "operationId": "reverse_proxy_remove_profile_visibility_grant", "parameters": [ { "name": "team_id", @@ -29109,7 +29407,7 @@ } }, { - "name": "id", + "name": "profile_id", "in": "path", "required": true, "schema": { @@ -29117,15 +29415,7 @@ } }, { - "name": "plane", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/ResourceGrantPlane" - } - }, - { - "name": "principal_type", + "name": "principal_type", "in": "path", "required": true, "schema": { @@ -29148,27 +29438,20 @@ } } }, - "/api/v1/team/{team_id}/signals/instances/{instance_id}": { + "/api/v1/team/{team_id}/reverse-proxy/provider": { "get": { "tags": [ - "signals", + "reverse-proxy", "v1" ], - "summary": "Get signal provider instance", - "description": "Get a configured signal provider instance.", - "operationId": "signals-get-provider-instance", + "summary": "List reverse proxy providers", + "description": "Providers registered with the reverse-proxy. Driven by the in-process `ReverseProxyProviderRegistry`; transport-only templates (no model catalogue).", + "operationId": "reverse_proxy_list_providers", "parameters": [ { "name": "team_id", "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "instance_id", - "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -29177,37 +29460,49 @@ ], "responses": { "200": { - "description": "", + "description": "Registered reverse proxy providers", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalProviderInstance" + "$ref": "#/components/schemas/ListReverseProxyProvidersResponse" } } } } } - }, - "delete": { + } + }, + "/api/v1/team/{team_id}/reverse-proxy/{profile_id}/{*rest}": { + "get": { "tags": [ - "signals", - "v1" + "reverse-proxy" ], - "summary": "Delete signal provider instance", - "description": "Delete a configured signal provider instance.", - "operationId": "signals-delete-provider-instance", + "summary": "Proxy GET through profile", + "description": "Forward a GET to the profile's upstream with materialized credential headers.", + "operationId": "reverse_proxy_proxy_get", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "instance_id", + "name": "profile_id", "in": "path", + "description": "Profile slug", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "rest", + "in": "path", + "description": "Path tail forwarded to upstream", "required": true, "schema": { "type": "string" @@ -29216,60 +29511,117 @@ ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteSignalResponse" - } - } - } + "description": "Upstream response (streamed)" } } }, - "patch": { + "post": { "tags": [ - "signals", - "v1" + "reverse-proxy" ], - "summary": "Update signal provider instance", - "description": "Update a configured signal provider instance.", - "operationId": "signals-update-provider-instance", + "summary": "Proxy POST through profile", + "description": "Forward a POST to the profile's upstream with materialized credential headers.", + "operationId": "reverse_proxy_proxy_post", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "instance_id", + "name": "profile_id", + "in": "path", + "description": "Profile slug", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "rest", "in": "path", + "description": "Path tail forwarded to upstream", "required": true, "schema": { "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSignalProviderInstanceRequestInner" - } + "responses": { + "200": { + "description": "Upstream response (streamed)" + } + } + } + }, + "/api/v1/team/{team_id}/signals/deliveries": { + "get": { + "tags": [ + "signals", + "v1" + ], + "summary": "List signal deliveries", + "description": "List signal deliveries.", + "operationId": "signals-list-deliveries", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" } }, - "required": true - }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "instance_id", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + }, + { + "name": "status", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" + } + ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalProviderInstance" + "$ref": "#/components/schemas/SignalDeliveryPaginatedResponse" } } } @@ -29277,15 +29629,15 @@ } } }, - "/api/v1/team/{team_id}/signals/instances/{instance_id}/test": { - "post": { + "/api/v1/team/{team_id}/signals/deliveries/{delivery_id}": { + "get": { "tags": [ "signals", "v1" ], - "summary": "Trigger fake signal", - "description": "Trigger a fake signal for testing.", - "operationId": "signals-trigger-fake", + "summary": "Get signal delivery", + "description": "Get signal delivery.", + "operationId": "signals-get-delivery", "parameters": [ { "name": "team_id", @@ -29296,31 +29648,21 @@ } }, { - "name": "instance_id", + "name": "delivery_id", "in": "path", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TriggerFakeSignalRequest" - } - } - }, - "required": true - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/IngestSignalResponse" + "$ref": "#/components/schemas/SignalDelivery" } } } @@ -29328,43 +29670,31 @@ } } }, - "/api/v1/team/{team_id}/signals/providers": { - "get": { + "/api/v1/team/{team_id}/signals/deliveries/{delivery_id}/retry": { + "post": { "tags": [ "signals", "v1" ], - "summary": "List available signal providers", - "description": "List registered signal provider source types.", - "operationId": "signals-list-available-providers", + "summary": "Retry signal delivery", + "description": "Retry signal delivery.", + "operationId": "signals-retry-delivery", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - }, - "style": "form" - }, - { - "name": "next_page_token", - "in": "query", - "required": false, + "name": "delivery_id", + "in": "path", + "required": true, "schema": { - "type": "string" - }, - "style": "form" + "$ref": "#/components/schemas/WrappedUuidV4" + } } ], "responses": { @@ -29373,7 +29703,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SignalProviderSourceSerializedPaginatedResponse" + "$ref": "#/components/schemas/SignalDelivery" } } } @@ -29381,19 +29711,20 @@ } } }, - "/api/v1/team/{team_id}/skill": { + "/api/v1/team/{team_id}/signals/instances": { "get": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "List skills", - "description": "List skills in the current workspace.", - "operationId": "list-skills", + "summary": "List signal provider instances", + "description": "List configured signal provider instances.", + "operationId": "signals-list-provider-instances", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" @@ -29406,63 +29737,44 @@ "schema": { "type": "integer", "format": "int64" - } + }, + "style": "form" }, { "name": "next_page_token", "in": "query", "required": false, "schema": { - "type": [ - "string", - "null" - ] - } + "type": "string" + }, + "style": "form" }, { - "name": "name_prefix", + "name": "status", "in": "query", "required": false, "schema": { - "type": [ - "string", - "null" - ] - } + "type": "string" + }, + "style": "form" }, { - "name": "skill_registry_id", + "name": "provider_type", "in": "query", "required": false, "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedUuidV4" - } - ] - } + "type": "string" + }, + "style": "form" } ], "responses": { "200": { - "description": "Skills", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillPaginatedResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SignalProviderInstancePaginatedResponse" } } } @@ -29471,12 +29783,12 @@ }, "post": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "Create a skill", - "description": "Create a skill in the current workspace.", - "operationId": "create-skill", + "summary": "Create signal provider instance", + "description": "Create a team-scoped signal provider instance.", + "operationId": "signals-create-provider-instance", "parameters": [ { "name": "team_id", @@ -29491,7 +29803,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSkillInner" + "$ref": "#/components/schemas/CreateSignalProviderInstanceRequestInner" } } }, @@ -29499,21 +29811,11 @@ }, "responses": { "200": { - "description": "Created skill", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Skill" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SignalProviderInstance" } } } @@ -29521,15 +29823,13 @@ } } }, - "/api/v1/team/{team_id}/skill-providers": { - "get": { + "/api/v1/team/{team_id}/signals/instances/{id}/ownership": { + "post": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "List proxied skill providers", - "description": "List trusted Git-backed skill providers compiled into the Tilde backend.", - "operationId": "list-proxied-skill-providers", + "operationId": "set-signal-provider-ownership", "parameters": [ { "name": "team_id", @@ -29538,34 +29838,9 @@ "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "Trusted proxied skill providers", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ListProxiedSkillProvidersResponse" - } - } - } - } - } - } - }, - "/api/v1/team/{team_id}/skill-providers/trusted": { - "post": { - "tags": [ - "skills", - "v1" - ], - "summary": "Create a trusted skill provider", - "description": "Create or update a trusted GitHub-backed skill provider row.", - "operationId": "create-trusted-skill-provider", - "parameters": [ + }, { - "name": "team_id", + "name": "id", "in": "path", "required": true, "schema": { @@ -29577,7 +29852,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTrustedSkillProviderRequest" + "$ref": "#/components/schemas/SetResourceAccessModeRequest" } } }, @@ -29585,31 +29860,11 @@ }, "responses": { "200": { - "description": "Created trusted skill provider", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProxiedSkillProvider" - } - } - } - }, - "400": { - "description": "Invalid provider URL", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -29617,15 +29872,13 @@ } } }, - "/api/v1/team/{team_id}/skill-providers/{provider_id}": { - "get": { + "/api/v1/team/{team_id}/signals/instances/{id}/visibility": { + "post": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "Get a proxied skill provider", - "description": "Fetch one trusted proxied skill provider and its available skills.", - "operationId": "get-proxied-skill-provider", + "operationId": "set-signal-provider-visibility", "parameters": [ { "name": "team_id", @@ -29636,7 +29889,7 @@ } }, { - "name": "provider_id", + "name": "id", "in": "path", "required": true, "schema": { @@ -29644,23 +29897,23 @@ } } ], - "responses": { - "200": { - "description": "Trusted proxied skill provider", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProxiedSkillProvider" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetResourceAccessModeRequest" } } }, - "404": { - "description": "Not found", + "required": true + }, + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -29668,15 +29921,13 @@ } } }, - "/api/v1/team/{team_id}/skill-registry": { + "/api/v1/team/{team_id}/signals/instances/{id}/{plane}/grants": { "get": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "List skill registries", - "description": "List skill registries in the current workspace.", - "operationId": "list-skill-registries", + "operationId": "list-signal-provider-grants", "parameters": [ { "name": "team_id", @@ -29687,54 +29938,32 @@ } }, { - "name": "page_size", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int64" - } - }, - { - "name": "next_page_token", - "in": "query", - "required": false, + "name": "id", + "in": "path", + "required": true, "schema": { - "type": [ - "string", - "null" - ] + "type": "string" } }, { - "name": "name_prefix", - "in": "query", - "required": false, + "name": "plane", + "in": "path", + "required": true, "schema": { - "type": [ - "string", - "null" - ] + "$ref": "#/components/schemas/ResourceGrantPlane" } } ], "responses": { "200": { - "description": "Skill registries", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillRegistryPaginatedResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } } } } @@ -29743,12 +29972,10 @@ }, "post": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "Create a skill registry", - "description": "Create a named group of skills that can be attached to runtime agents.", - "operationId": "create-skill-registry", + "operationId": "add-signal-provider-grant", "parameters": [ { "name": "team_id", @@ -29757,13 +29984,29 @@ "schema": { "type": "string" } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "plane", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ResourceGrantPlane" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSkillRegistryBody" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -29771,21 +30014,11 @@ }, "responses": { "200": { - "description": "Created skill registry", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillRegistry" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ResourceGrant" } } } @@ -29793,15 +30026,13 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}": { - "get": { + "/api/v1/team/{team_id}/signals/instances/{id}/{plane}/grants/{principal_type}/{principal_id}": { + "delete": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "Get a skill registry", - "description": "Fetch a skill registry by id.", - "operationId": "get-skill-registry", + "operationId": "remove-signal-provider-grant", "parameters": [ { "name": "team_id", @@ -29818,35 +30049,73 @@ "schema": { "type": "string" } - } - ], + }, + { + "name": "plane", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ResourceGrantPlane" + } + }, + { + "name": "principal_type", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ResourcePrincipalType" + } + }, + { + "name": "principal_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { - "description": "Skill registry", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillRegistry" - } - } + "description": "" + } + } + } + }, + "/api/v1/team/{team_id}/signals/instances/{instance_id}": { + "get": { + "tags": [ + "signals", + "v1" + ], + "summary": "Get signal provider instance", + "description": "Get a configured signal provider instance.", + "operationId": "signals-get-provider-instance", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } + { + "name": "instance_id", + "in": "path", + "required": true, + "schema": { + "type": "string" } - }, - "404": { - "description": "Not found", + } + ], + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SignalProviderInstance" } } } @@ -29855,12 +30124,12 @@ }, "delete": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "Delete a skill registry", - "description": "Delete a skill registry by id.", - "operationId": "delete-skill-registry", + "summary": "Delete signal provider instance", + "description": "Delete a configured signal provider instance.", + "operationId": "signals-delete-provider-instance", "parameters": [ { "name": "team_id", @@ -29871,7 +30140,7 @@ } }, { - "name": "id", + "name": "instance_id", "in": "path", "required": true, "schema": { @@ -29881,24 +30150,11 @@ ], "responses": { "200": { - "description": "Deleted" - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Not found", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/DeleteSignalResponse" } } } @@ -29907,12 +30163,12 @@ }, "patch": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "Update a skill registry", - "description": "Apply a partial update to a skill registry.", - "operationId": "update-skill-registry", + "summary": "Update signal provider instance", + "description": "Update a configured signal provider instance.", + "operationId": "signals-update-provider-instance", "parameters": [ { "name": "team_id", @@ -29923,7 +30179,7 @@ } }, { - "name": "id", + "name": "instance_id", "in": "path", "required": true, "schema": { @@ -29935,7 +30191,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/UpdateSkillRegistryBody" + "$ref": "#/components/schemas/UpdateSignalProviderInstanceRequestInner" } } }, @@ -29943,31 +30199,11 @@ }, "responses": { "200": { - "description": "Skill registry", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillRegistry" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Not found", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/SignalProviderInstance" } } } @@ -29975,15 +30211,15 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/ownership": { + "/api/v1/team/{team_id}/signals/instances/{instance_id}/test": { "post": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "Set a skill-registry authorization mode", - "description": "Change one registry plane after ownership authorization.", - "operationId": "set_skill_registry_ownership_mode", + "summary": "Trigger fake signal", + "description": "Trigger a fake signal for testing.", + "operationId": "signals-trigger-fake", "parameters": [ { "name": "team_id", @@ -29994,11 +30230,11 @@ } }, { - "name": "id", + "name": "instance_id", "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -30006,7 +30242,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SetResourceAccessModeRequest" + "$ref": "#/components/schemas/TriggerFakeSignalRequest" } } }, @@ -30018,7 +30254,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceAuthorization" + "$ref": "#/components/schemas/IngestSignalResponse" } } } @@ -30026,31 +30262,43 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/ownership/grants": { + "/api/v1/team/{team_id}/signals/providers": { "get": { "tags": [ - "skills", + "signals", "v1" ], - "summary": "List skill-registry grants", - "description": "List grants for one registry authorization plane.", - "operationId": "list_skill_registry_ownership_grants", + "summary": "List available signal providers", + "description": "List registered signal provider source types.", + "operationId": "signals-list-available-providers", "parameters": [ { "name": "team_id", "in": "path", + "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "id", - "in": "path", - "required": true, + "name": "page_size", + "in": "query", + "required": false, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } + "type": "integer", + "format": "int64" + }, + "style": "form" + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "style": "form" } ], "responses": { @@ -30059,24 +30307,23 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResourceGrant" - } + "$ref": "#/components/schemas/SignalProviderSourceSerializedPaginatedResponse" } } } } } - }, - "post": { + } + }, + "/api/v1/team/{team_id}/skill": { + "get": { "tags": [ "skills", "v1" ], - "summary": "Add a skill-registry grant", - "description": "Idempotently add one registry-plane principal.", - "operationId": "add_skill_registry_ownership_grant", + "summary": "List skills", + "description": "List skills in the current workspace.", + "operationId": "list-skills", "parameters": [ { "name": "team_id", @@ -30087,11 +30334,90 @@ } }, { - "name": "id", + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "name_prefix", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "skill_registry_id", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedUuidV4" + } + ] + } + } + ], + "responses": { + "200": { + "description": "Skills", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillPaginatedResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + }, + "post": { + "tags": [ + "skills", + "v1" + ], + "summary": "Create a skill", + "description": "Create a skill in the current workspace.", + "operationId": "create-skill", + "parameters": [ + { + "name": "team_id", "in": "path", "required": true, "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" + "type": "string" } } ], @@ -30099,7 +30425,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" + "$ref": "#/components/schemas/CreateSkillInner" } } }, @@ -30107,11 +30433,21 @@ }, "responses": { "200": { - "description": "", + "description": "Created skill", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ResourceGrant" + "$ref": "#/components/schemas/Skill" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -30119,15 +30455,15 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/ownership/grants/{principal_type}/{principal_id}": { - "delete": { + "/api/v1/team/{team_id}/skill-providers": { + "get": { "tags": [ "skills", "v1" ], - "summary": "Remove a skill-registry grant", - "description": "Remove a registry grant while preserving a private owner.", - "operationId": "remove_skill_registry_ownership_grant", + "summary": "List proxied skill providers", + "description": "List trusted Git-backed skill providers compiled into the Tilde backend.", + "operationId": "list-proxied-skill-providers", "parameters": [ { "name": "team_id", @@ -30136,48 +30472,31 @@ "schema": { "type": "string" } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/WrappedUuidV4" - } - }, - { - "name": "principal_type", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "principal_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "" + "description": "Trusted proxied skill providers", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ListProxiedSkillProvidersResponse" + } + } + } } } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/provider-skills": { + "/api/v1/team/{team_id}/skill-providers/trusted": { "post": { "tags": [ "skills", "v1" ], - "summary": "Add provider skills to a registry", - "description": "Create or reuse selected proxied provider skills and add them to a skill registry.", - "operationId": "add-provider-skills-to-skill-registry", + "summary": "Create a trusted skill provider", + "description": "Create or update a trusted GitHub-backed skill provider row.", + "operationId": "create-trusted-skill-provider", "parameters": [ { "name": "team_id", @@ -30186,21 +30505,13 @@ "schema": { "type": "string" } - }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AddProviderSkillsToRegistryRequest" + "$ref": "#/components/schemas/CreateTrustedSkillProviderRequest" } } }, @@ -30208,17 +30519,17 @@ }, "responses": { "200": { - "description": "Updated skill registry", + "description": "Created trusted skill provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillRegistry" + "$ref": "#/components/schemas/ProxiedSkillProvider" } } } }, - "401": { - "description": "Unauthorized", + "400": { + "description": "Invalid provider URL", "content": { "application/json": { "schema": { @@ -30227,8 +30538,8 @@ } } }, - "404": { - "description": "Not found", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -30240,15 +30551,15 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/search": { - "post": { + "/api/v1/team/{team_id}/skill-providers/{provider_id}": { + "get": { "tags": [ "skills", "v1" ], - "summary": "Search a skill registry", - "description": "Search titles, descriptions, and skill bodies within a registry and return progressive-discovery summaries.", - "operationId": "search-skill-registry", + "summary": "Get a proxied skill provider", + "description": "Fetch one trusted proxied skill provider and its available skills.", + "operationId": "get-proxied-skill-provider", "parameters": [ { "name": "team_id", @@ -30259,7 +30570,7 @@ } }, { - "name": "id", + "name": "provider_id", "in": "path", "required": true, "schema": { @@ -30267,33 +30578,13 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillDiscoverySearchRequest" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Search results", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillDiscoverySearchResponse" - } - } - } - }, - "401": { - "description": "Unauthorized", + "description": "Trusted proxied skill provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Error" + "$ref": "#/components/schemas/ProxiedSkillProvider" } } } @@ -30311,15 +30602,15 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/skill-summary": { + "/api/v1/team/{team_id}/skill-registry": { "get": { "tags": [ "skills", "v1" ], - "summary": "List skill summaries", - "description": "List titles, descriptions, and versions for skills in a registry for progressive discovery.", - "operationId": "list-skill-registry-skill-summaries", + "summary": "List skill registries", + "description": "List skill registries in the current workspace.", + "operationId": "list-skill-registries", "parameters": [ { "name": "team_id", @@ -30329,14 +30620,6 @@ "type": "string" } }, - { - "name": "id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "page_size", "in": "query", @@ -30367,30 +30650,15 @@ "null" ] } - }, - { - "name": "skill_registry_id", - "in": "query", - "required": false, - "schema": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/WrappedUuidV4" - } - ] - } } ], "responses": { "200": { - "description": "Skill summaries", + "description": "Skill registries", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillSummaryPaginatedResponse" + "$ref": "#/components/schemas/SkillRegistryPaginatedResponse" } } } @@ -30404,9 +30672,50 @@ } } } + } + } + }, + "post": { + "tags": [ + "skills", + "v1" + ], + "summary": "Create a skill registry", + "description": "Create a named group of skills that can be attached to runtime agents.", + "operationId": "create-skill-registry", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSkillRegistryBody" + } + } }, - "404": { - "description": "Not found", + "required": true + }, + "responses": { + "200": { + "description": "Created skill registry", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillRegistry" + } + } + } + }, + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -30418,15 +30727,15 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/skill/by-title/{title}": { + "/api/v1/team/{team_id}/skill-registry/{id}": { "get": { "tags": [ "skills", "v1" ], - "summary": "Read a skill from a registry by title", - "description": "Return the full skill body for one registry skill selected by exact title.", - "operationId": "get-skill-registry-skill-by-title", + "summary": "Get a skill registry", + "description": "Fetch a skill registry by id.", + "operationId": "get-skill-registry", "parameters": [ { "name": "team_id", @@ -30443,23 +30752,15 @@ "schema": { "type": "string" } - }, - { - "name": "title", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "Skill", + "description": "Skill registry", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Skill" + "$ref": "#/components/schemas/SkillRegistry" } } } @@ -30485,17 +30786,15 @@ } } } - } - }, - "/api/v1/team/{team_id}/skill-registry/{id}/skill/{skill_id}": { - "get": { + }, + "delete": { "tags": [ "skills", "v1" ], - "summary": "Read a skill from a registry", - "description": "Return the full skill body only after a caller selects a specific registry skill.", - "operationId": "get-skill-registry-skill", + "summary": "Delete a skill registry", + "description": "Delete a skill registry by id.", + "operationId": "delete-skill-registry", "parameters": [ { "name": "team_id", @@ -30512,26 +30811,11 @@ "schema": { "type": "string" } - }, - { - "name": "skill_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "Skill", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Skill" - } - } - } + "description": "Deleted" }, "401": { "description": "Unauthorized", @@ -30554,17 +30838,15 @@ } } } - } - }, - "/api/v1/team/{team_id}/skill-registry/{id}/skill/{skill_id}/description": { - "get": { + }, + "patch": { "tags": [ "skills", "v1" ], - "summary": "Read a skill description from a registry", - "description": "Return only the title, description, and version for one registry skill.", - "operationId": "get-skill-registry-skill-description", + "summary": "Update a skill registry", + "description": "Apply a partial update to a skill registry.", + "operationId": "update-skill-registry", "parameters": [ { "name": "team_id", @@ -30581,23 +30863,25 @@ "schema": { "type": "string" } - }, - { - "name": "skill_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSkillRegistryBody" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Skill description", + "description": "Skill registry", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillDescriptionResponse" + "$ref": "#/components/schemas/SkillRegistry" } } } @@ -30625,7 +30909,7 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/visibility": { + "/api/v1/team/{team_id}/skill-registry/{id}/ownership": { "post": { "tags": [ "skills", @@ -30633,7 +30917,7 @@ ], "summary": "Set a skill-registry authorization mode", "description": "Change one registry plane after ownership authorization.", - "operationId": "set_skill_registry_visibility", + "operationId": "set_skill_registry_ownership_mode", "parameters": [ { "name": "team_id", @@ -30676,7 +30960,7 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/visibility/grants": { + "/api/v1/team/{team_id}/skill-registry/{id}/ownership/grants": { "get": { "tags": [ "skills", @@ -30684,7 +30968,7 @@ ], "summary": "List skill-registry grants", "description": "List grants for one registry authorization plane.", - "operationId": "list_skill_registry_visibility_grants", + "operationId": "list_skill_registry_ownership_grants", "parameters": [ { "name": "team_id", @@ -30726,7 +31010,7 @@ ], "summary": "Add a skill-registry grant", "description": "Idempotently add one registry-plane principal.", - "operationId": "add_skill_registry_visibility_grant", + "operationId": "add_skill_registry_ownership_grant", "parameters": [ { "name": "team_id", @@ -30769,7 +31053,7 @@ } } }, - "/api/v1/team/{team_id}/skill-registry/{id}/visibility/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/skill-registry/{id}/ownership/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ "skills", @@ -30777,7 +31061,7 @@ ], "summary": "Remove a skill-registry grant", "description": "Remove a registry grant while preserving a private owner.", - "operationId": "remove_skill_registry_visibility_grant", + "operationId": "remove_skill_registry_ownership_grant", "parameters": [ { "name": "team_id", @@ -30819,15 +31103,15 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}": { - "get": { + "/api/v1/team/{team_id}/skill-registry/{id}/provider-skills": { + "post": { "tags": [ "skills", "v1" ], - "summary": "Get a skill", - "description": "Fetch a skill by id.", - "operationId": "get-skill", + "summary": "Add provider skills to a registry", + "description": "Create or reuse selected proxied provider skills and add them to a skill registry.", + "operationId": "add-provider-skills-to-skill-registry", "parameters": [ { "name": "team_id", @@ -30846,13 +31130,23 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddProviderSkillsToRegistryRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Skill", + "description": "Updated skill registry", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Skill" + "$ref": "#/components/schemas/SkillRegistry" } } } @@ -30878,15 +31172,17 @@ } } } - }, - "delete": { + } + }, + "/api/v1/team/{team_id}/skill-registry/{id}/search": { + "post": { "tags": [ "skills", "v1" ], - "summary": "Delete a skill", - "description": "Delete a skill by id.", - "operationId": "delete-skill", + "summary": "Search a skill registry", + "description": "Search titles, descriptions, and skill bodies within a registry and return progressive-discovery summaries.", + "operationId": "search-skill-registry", "parameters": [ { "name": "team_id", @@ -30905,9 +31201,26 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillDiscoverySearchRequest" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Deleted" + "description": "Search results", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillDiscoverySearchResponse" + } + } + } }, "401": { "description": "Unauthorized", @@ -30930,15 +31243,17 @@ } } } - }, - "patch": { + } + }, + "/api/v1/team/{team_id}/skill-registry/{id}/skill-summary": { + "get": { "tags": [ "skills", "v1" ], - "summary": "Update a skill", - "description": "Apply a partial update to a skill.", - "operationId": "update-skill", + "summary": "List skill summaries", + "description": "List titles, descriptions, and versions for skills in a registry for progressive discovery.", + "operationId": "list-skill-registry-skill-summaries", "parameters": [ { "name": "team_id", @@ -30955,18 +31270,123 @@ "schema": { "type": "string" } + }, + { + "name": "page_size", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "next_page_token", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "name_prefix", + "in": "query", + "required": false, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "skill_registry_id", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedUuidV4" + } + ] + } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateSkillBody" + "responses": { + "200": { + "description": "Skill summaries", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillSummaryPaginatedResponse" + } } } }, - "required": true - }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/skill-registry/{id}/skill/by-title/{title}": { + "get": { + "tags": [ + "skills", + "v1" + ], + "summary": "Read a skill from a registry by title", + "description": "Return the full skill body for one registry skill selected by exact title.", + "operationId": "get-skill-registry-skill-by-title", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "title", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "description": "Skill", @@ -31001,15 +31421,153 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}/ownership": { + "/api/v1/team/{team_id}/skill-registry/{id}/skill/{skill_id}": { + "get": { + "tags": [ + "skills", + "v1" + ], + "summary": "Read a skill from a registry", + "description": "Return the full skill body only after a caller selects a specific registry skill.", + "operationId": "get-skill-registry-skill", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "skill_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Skill", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Skill" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/skill-registry/{id}/skill/{skill_id}/description": { + "get": { + "tags": [ + "skills", + "v1" + ], + "summary": "Read a skill description from a registry", + "description": "Return only the title, description, and version for one registry skill.", + "operationId": "get-skill-registry-skill-description", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "skill_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Skill description", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillDescriptionResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/skill-registry/{id}/visibility": { "post": { "tags": [ "skills", "v1" ], - "summary": "Set a skill authorization mode", - "description": "Change one skill authorization plane after ownership authorization.", - "operationId": "set_skill_ownership_mode", + "summary": "Set a skill-registry authorization mode", + "description": "Change one registry plane after ownership authorization.", + "operationId": "set_skill_registry_visibility", "parameters": [ { "name": "team_id", @@ -31052,15 +31610,15 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}/ownership/grants": { + "/api/v1/team/{team_id}/skill-registry/{id}/visibility/grants": { "get": { "tags": [ "skills", "v1" ], - "summary": "List skill grants", - "description": "List grants for one skill authorization plane.", - "operationId": "list_skill_ownership_grants", + "summary": "List skill-registry grants", + "description": "List grants for one registry authorization plane.", + "operationId": "list_skill_registry_visibility_grants", "parameters": [ { "name": "team_id", @@ -31100,9 +31658,9 @@ "skills", "v1" ], - "summary": "Add a skill grant", - "description": "Idempotently add a principal to one skill authorization plane.", - "operationId": "add_skill_ownership_grant", + "summary": "Add a skill-registry grant", + "description": "Idempotently add one registry-plane principal.", + "operationId": "add_skill_registry_visibility_grant", "parameters": [ { "name": "team_id", @@ -31145,15 +31703,15 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}/ownership/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/skill-registry/{id}/visibility/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ "skills", "v1" ], - "summary": "Remove a skill grant", - "description": "Idempotently remove a principal grant while preserving a private owner.", - "operationId": "remove_skill_ownership_grant", + "summary": "Remove a skill-registry grant", + "description": "Remove a registry grant while preserving a private owner.", + "operationId": "remove_skill_registry_visibility_grant", "parameters": [ { "name": "team_id", @@ -31195,15 +31753,15 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}/package": { + "/api/v1/team/{team_id}/skill/{id}": { "get": { "tags": [ "skills", "v1" ], - "summary": "Get a skill package manifest", - "description": "List all files and Git provenance for an imported managed skill package without downloading its assets.", - "operationId": "get-skill-package", + "summary": "Get a skill", + "description": "Fetch a skill by id.", + "operationId": "get-skill", "parameters": [ { "name": "team_id", @@ -31224,11 +31782,11 @@ ], "responses": { "200": { - "description": "Immutable skill package manifest", + "description": "Skill", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillPackageManifest" + "$ref": "#/components/schemas/Skill" } } } @@ -31244,7 +31802,7 @@ } }, "404": { - "description": "Package not found", + "description": "Not found", "content": { "application/json": { "schema": { @@ -31254,17 +31812,67 @@ } } } - } - }, - "/api/v1/team/{team_id}/skill/{id}/package/download": { - "post": { + }, + "delete": { "tags": [ "skills", "v1" ], - "summary": "Download a skill package file", - "description": "Create a short-lived R2 download URL for one file selected from an immutable skill package manifest.", - "operationId": "download-skill-package-file", + "summary": "Delete a skill", + "description": "Delete a skill by id.", + "operationId": "delete-skill", + "parameters": [ + { + "name": "team_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Deleted" + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + }, + "patch": { + "tags": [ + "skills", + "v1" + ], + "summary": "Update a skill", + "description": "Apply a partial update to a skill.", + "operationId": "update-skill", "parameters": [ { "name": "team_id", @@ -31287,7 +31895,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DownloadSkillPackageFileRequest" + "$ref": "#/components/schemas/UpdateSkillBody" } } }, @@ -31295,11 +31903,11 @@ }, "responses": { "200": { - "description": "Short-lived package file download", + "description": "Skill", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillPackageFileDownload" + "$ref": "#/components/schemas/Skill" } } } @@ -31315,7 +31923,7 @@ } }, "404": { - "description": "Package file not found", + "description": "Not found", "content": { "application/json": { "schema": { @@ -31327,7 +31935,7 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}/visibility": { + "/api/v1/team/{team_id}/skill/{id}/ownership": { "post": { "tags": [ "skills", @@ -31335,7 +31943,7 @@ ], "summary": "Set a skill authorization mode", "description": "Change one skill authorization plane after ownership authorization.", - "operationId": "set_skill_visibility", + "operationId": "set_skill_ownership_mode", "parameters": [ { "name": "team_id", @@ -31378,7 +31986,7 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}/visibility/grants": { + "/api/v1/team/{team_id}/skill/{id}/ownership/grants": { "get": { "tags": [ "skills", @@ -31386,7 +31994,7 @@ ], "summary": "List skill grants", "description": "List grants for one skill authorization plane.", - "operationId": "list_skill_visibility_grants", + "operationId": "list_skill_ownership_grants", "parameters": [ { "name": "team_id", @@ -31428,7 +32036,7 @@ ], "summary": "Add a skill grant", "description": "Idempotently add a principal to one skill authorization plane.", - "operationId": "add_skill_visibility_grant", + "operationId": "add_skill_ownership_grant", "parameters": [ { "name": "team_id", @@ -31471,7 +32079,7 @@ } } }, - "/api/v1/team/{team_id}/skill/{id}/visibility/grants/{principal_type}/{principal_id}": { + "/api/v1/team/{team_id}/skill/{id}/ownership/grants/{principal_type}/{principal_id}": { "delete": { "tags": [ "skills", @@ -31479,7 +32087,7 @@ ], "summary": "Remove a skill grant", "description": "Idempotently remove a principal grant while preserving a private owner.", - "operationId": "remove_skill_visibility_grant", + "operationId": "remove_skill_ownership_grant", "parameters": [ { "name": "team_id", @@ -31521,39 +32129,46 @@ } } }, - "/api/v1/team/{team_id}/state/export": { + "/api/v1/team/{team_id}/skill/{id}/package": { "get": { "tags": [ - "state", + "skills", "v1" ], - "summary": "Export team state", - "operationId": "state-export", + "summary": "Get a skill package manifest", + "description": "List all files and Git provenance for an imported managed skill package without downloading its assets.", + "operationId": "get-skill-package", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "format", - "in": "query", - "required": false, + "name": "id", + "in": "path", + "required": true, "schema": { - "$ref": "#/components/schemas/StateDocumentFormat" + "type": "string" } } ], "responses": { "200": { - "description": "Exported team state" + "description": "Immutable skill package manifest", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillPackageManifest" + } + } + } }, - "400": { - "description": "Bad Request", + "401": { + "description": "Unauthorized", "content": { "application/json": { "schema": { @@ -31562,8 +32177,8 @@ } } }, - "500": { - "description": "Internal Server Error", + "404": { + "description": "Package not found", "content": { "application/json": { "schema": { @@ -31575,19 +32190,27 @@ } } }, - "/api/v1/team/{team_id}/state/import": { + "/api/v1/team/{team_id}/skill/{id}/package/download": { "post": { "tags": [ - "state", + "skills", "v1" ], - "summary": "Start team state import", - "operationId": "state-import", + "summary": "Download a skill package file", + "description": "Create a short-lived R2 download URL for one file selected from an immutable skill package manifest.", + "operationId": "download-skill-package-file", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", "required": true, "schema": { "type": "string" @@ -31598,7 +32221,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportStateRequest" + "$ref": "#/components/schemas/DownloadSkillPackageFileRequest" } } }, @@ -31606,11 +32229,31 @@ }, "responses": { "200": { - "description": "", + "description": "Short-lived package file download", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportStateResponse" + "$ref": "#/components/schemas/SkillPackageFileDownload" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Package file not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } } } @@ -31618,41 +32261,50 @@ } } }, - "/api/v1/team/{team_id}/state/import/{import_id}": { - "get": { + "/api/v1/team/{team_id}/skill/{id}/visibility": { + "post": { "tags": [ - "state", + "skills", "v1" ], - "summary": "Get team state import summary", - "operationId": "state-get-import", + "summary": "Set a skill authorization mode", + "description": "Change one skill authorization plane after ownership authorization.", + "operationId": "set_skill_visibility", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "import_id", + "name": "id", "in": "path", - "description": "Import run ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetResourceAccessModeRequest" + } + } + }, + "required": true + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ImportRunSummary" + "$ref": "#/components/schemas/ResourceAuthorization" } } } @@ -31660,65 +32312,80 @@ } } }, - "/api/v1/team/{team_id}/state/import/{import_id}/events": { + "/api/v1/team/{team_id}/skill/{id}/visibility/grants": { "get": { "tags": [ - "state", + "skills", "v1" ], - "summary": "Stream team state import events", - "operationId": "state-import-events", + "summary": "List skill grants", + "description": "List grants for one skill authorization plane.", + "operationId": "list_skill_visibility_grants", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } }, { - "name": "import_id", + "name": "id", "in": "path", - "description": "Import run ID", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/WrappedUuidV4" } } ], "responses": { "200": { - "description": "SSE stream of import events" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResourceGrant" + } + } + } + } } } - } - }, - "/api/v1/team/{team_id}/state/plan": { + }, "post": { "tags": [ - "state", + "skills", "v1" ], - "summary": "Plan team state import", - "operationId": "state-plan", + "summary": "Add a skill grant", + "description": "Idempotently add a principal to one skill authorization plane.", + "operationId": "add_skill_visibility_grant", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", "required": true, "schema": { "type": "string" } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PlanStateRequest" + "$ref": "#/components/schemas/CreateResourcePlaneGrantRequest" } } }, @@ -31730,7 +32397,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StatePlan" + "$ref": "#/components/schemas/ResourceGrant" } } } @@ -31738,19 +32405,43 @@ } } }, - "/api/v1/team/{team_id}/state/schema": { - "get": { + "/api/v1/team/{team_id}/skill/{id}/visibility/grants/{principal_type}/{principal_id}": { + "delete": { "tags": [ - "state", + "skills", "v1" ], - "summary": "Get team state JSON schema", - "operationId": "state-schema", + "summary": "Remove a skill grant", + "description": "Idempotently remove a principal grant while preserving a private owner.", + "operationId": "remove_skill_visibility_grant", "parameters": [ { "name": "team_id", "in": "path", - "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, + { + "name": "principal_type", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "principal_id", + "in": "path", "required": true, "schema": { "type": "string" @@ -31759,26 +32450,19 @@ ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StateSchema" - } - } - } + "description": "" } } } }, - "/api/v1/team/{team_id}/state/schema.json": { + "/api/v1/team/{team_id}/state/export": { "get": { "tags": [ "state", "v1" ], - "summary": "Get hosted team state JSON schema", - "operationId": "state-schema-json", + "summary": "Export team state", + "operationId": "state-export", "parameters": [ { "name": "team_id", @@ -31788,23 +32472,273 @@ "schema": { "type": "string" } + }, + { + "name": "format", + "in": "query", + "required": false, + "schema": { + "$ref": "#/components/schemas/StateDocumentFormat" + } } ], "responses": { "200": { - "description": "Team state JSON schema" + "description": "Exported team state" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } } } } }, - "/api/v1/team/{team_id}/state/source/resolve": { + "/api/v1/team/{team_id}/state/import": { "post": { "tags": [ "state", "v1" ], - "summary": "Resolve a deployable state source", - "description": "Fetches a public GitHub repository state document, validates its source coordinates, and returns the exact reviewed bytes plus a content digest.", + "summary": "Start team state import", + "operationId": "state-import", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportStateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportStateResponse" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/state/import/{import_id}": { + "get": { + "tags": [ + "state", + "v1" + ], + "summary": "Get team state import summary", + "operationId": "state-get-import", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "import_id", + "in": "path", + "description": "Import run ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ImportRunSummary" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/state/import/{import_id}/events": { + "get": { + "tags": [ + "state", + "v1" + ], + "summary": "Stream team state import events", + "operationId": "state-import-events", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "import_id", + "in": "path", + "description": "Import run ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "SSE stream of import events" + } + } + } + }, + "/api/v1/team/{team_id}/state/plan": { + "post": { + "tags": [ + "state", + "v1" + ], + "summary": "Plan team state import", + "operationId": "state-plan", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlanStateRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StatePlan" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/state/schema": { + "get": { + "tags": [ + "state", + "v1" + ], + "summary": "Get team state JSON schema", + "operationId": "state-schema", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StateSchema" + } + } + } + } + } + } + }, + "/api/v1/team/{team_id}/state/schema.json": { + "get": { + "tags": [ + "state", + "v1" + ], + "summary": "Get hosted team state JSON schema", + "operationId": "state-schema-json", + "parameters": [ + { + "name": "team_id", + "in": "path", + "description": "Team ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Team state JSON schema" + } + } + } + }, + "/api/v1/team/{team_id}/state/source/resolve": { + "post": { + "tags": [ + "state", + "v1" + ], + "summary": "Resolve a deployable state source", + "description": "Fetches a public GitHub repository state document, validates its source coordinates, and returns the exact reviewed bytes plus a content digest.", "operationId": "state-resolve-source", "parameters": [ { @@ -44195,6 +45129,18 @@ } } }, + "AssociatedToolkit": { + "type": "object", + "description": "An optional toolkit backend materialized as an ordinary custom Tools provider.", + "required": [ + "discovery_url" + ], + "properties": { + "discovery_url": { + "type": "string" + } + } + }, "Attachment": { "type": "object", "description": "ChatKit-owned attachment metadata.", @@ -44788,6 +45734,72 @@ } } }, + "ChannelDeliveryOptions": { + "type": "object", + "description": "Private send intent; never include this value in canonical public events.", + "properties": { + "attachment_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "bcc": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, + "cc": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, + "html": { + "type": [ + "string", + "null" + ] + }, + "provider_options": { + "description": "Opaque extension interpreted exclusively by the owning adapter." + }, + "reply_all": { + "type": [ + "boolean", + "null" + ] + }, + "subject": { + "type": [ + "string", + "null" + ] + }, + "to": { + "type": [ + "array", + "null" + ], + "items": { + "type": "string" + } + }, + "visible_recipients": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomExternalIdentity" + } + } + } + }, "ChatApproval": { "type": "object", "description": "Approval information in an HTTP agent tool invocation.", @@ -45627,6 +46639,86 @@ ], "description": "Trusted durable execution context supplied by ChatKit to an HTTP agent.\n\nThis is Tilde-owned control state, not conversation or provider metadata." }, + "ChatKitIdentity": { + "type": "object", + "description": "A party that can appear in a ChatKit session.", + "required": [ + "id", + "org_id", + "team_id", + "kind", + "display_name", + "created_at", + "updated_at" + ], + "properties": { + "agent_inbox_id": { + "type": [ + "string", + "null" + ], + "description": "Set when this address belongs to one of our agents." + }, + "created_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + }, + "display_name": { + "type": "string" + }, + "external_id": { + "type": [ + "string", + "null" + ], + "description": "The address within that scheme. `None` only for [`ChatKitIdentityKind::TildeUser`]." + }, + "id": { + "type": "string" + }, + "kind": { + "$ref": "#/components/schemas/ChatKitIdentityKind" + }, + "metadata": { + "type": [ + "object", + "null" + ] + }, + "org_id": { + "type": "string" + }, + "provider_id": { + "type": [ + "string", + "null" + ], + "description": "Namespace that owns the address. Two GitHub organizations can both have\na `dan`, so the scheme alone is never unique." + }, + "team_id": { + "type": "string" + }, + "tilde_user_id": { + "type": [ + "string", + "null" + ], + "description": "Set only by a verified linking flow, or by us when registering an\naddress for one of our own principals. `None` means no authority." + }, + "updated_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + }, + "verified_at": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedChronoDateTime" + } + ] + } + } + }, "ChatKitIdentityKind": { "type": "string", "description": "Address scheme for a [`ChatKitIdentity`].", @@ -45800,6 +46892,66 @@ "agent" ] }, + "ChatKitProviderManifest": { + "type": "object", + "description": "Discovery document served by the customer's SDK endpoint.", + "required": [ + "protocol_version", + "version", + "display_name", + "description", + "invoke_url", + "configuration_schema", + "capabilities" + ], + "properties": { + "auth_methods": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomProviderAuthMethod" + } + }, + "capabilities": { + "$ref": "#/components/schemas/CustomProviderCapabilities" + }, + "configuration_schema": {}, + "description": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomProviderField" + } + }, + "invoke_url": { + "type": "string" + }, + "protocol_version": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "session_tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomSessionTool" + } + }, + "subscriptions": { + "type": "array", + "items": { + "type": "string" + } + }, + "version": { + "type": "string" + } + } + }, "ChatKitRealtimeSocketTicket": { "type": "object", "required": [ @@ -50405,128 +51557,1099 @@ "null" ] }, - "resource_server_credential_id": { - "oneOf": [ - { - "type": "null" + "resource_server_credential_id": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedUuidV4" + } + ] + }, + "return_url": { + "type": [ + "string", + "null" + ] + }, + "source": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CredentialSetupSource" + } + ] + }, + "status": { + "$ref": "#/components/schemas/CredentialSetupItemStatus" + }, + "team_id": { + "type": "string" + }, + "updated_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + }, + "user_credential_id": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedUuidV4" + } + ] + } + } + }, + "CredentialSetupItemPaginatedResponse": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CredentialSetupItem" + } + }, + "next_page_token": { + "type": "string" + } + } + }, + "CredentialSetupItemStatus": { + "type": "string", + "enum": [ + "pending", + "in_progress", + "connected", + "failed" + ] + }, + "CredentialSetupNextAction": { + "oneOf": [ + { + "type": "object", + "required": [ + "url", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "redirect" + ] + }, + "url": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "credential_kind", + "fields", + "submit_label", + "type" + ], + "properties": { + "configuration_defaults": { + "$ref": "#/components/schemas/WrappedJsonValue", + "description": "Non-secret, server-authored values merged into the submitted\ncredential configuration. This keeps portable state capable of\ncarrying protocol metadata without exposing it as editable form\nfields or exporting secrets." + }, + "credential_kind": { + "$ref": "#/components/schemas/CredentialSetupCredentialKind" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CredentialSetupFormField" + } + }, + "submit_label": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "submit_form" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "message": { + "type": [ + "string", + "null" + ] + }, + "type": { + "type": "string", + "enum": [ + "complete" + ] + } + } + } + ] + }, + "CredentialSetupSource": { + "type": "string", + "description": "Origin of a durable credential setup item.", + "enum": [ + "state_import", + "user_credential_brokering", + "mcp_tool_group_instance_creation", + "mcp_proxied_server_connection" + ] + }, + "CredentialSourceSerialized": { + "type": "object", + "required": [ + "type_id", + "configuration_schema", + "name", + "display_name", + "auth_adapter", + "documentation", + "requires_brokering", + "requires_resource_server_credential_refreshing", + "requires_user_credential_refreshing", + "supports_auto_display_name", + "display_name_description" + ], + "properties": { + "auth_adapter": { + "$ref": "#/components/schemas/ProviderAuthAdapterConfig" + }, + "configuration_schema": { + "$ref": "#/components/schemas/ConfigurationSchema" + }, + "display_name": { + "type": "string" + }, + "display_name_description": { + "type": "string" + }, + "documentation": { + "type": "string" + }, + "name": { + "type": "string" + }, + "requires_brokering": { + "type": "boolean" + }, + "requires_resource_server_credential_refreshing": { + "type": "boolean" + }, + "requires_user_credential_refreshing": { + "type": "boolean" + }, + "supports_auto_display_name": { + "type": "boolean" + }, + "type_id": { + "type": "string" + } + } + }, + "CurrentSeatStatus": { + "type": "string", + "description": "Current caller's seat state. Machine identities never consume seats.", + "enum": [ + "active", + "not_assigned", + "not_billable" + ] + }, + "CustomChatKitProvider": { + "type": "object", + "description": "Stable registration, separate from any configured connection.", + "required": [ + "id", + "org_id", + "team_id", + "display_name", + "discovery_url", + "enabled", + "local_running_endpoint", + "revision", + "created_at", + "updated_at" + ], + "properties": { + "created_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + }, + "discovery_url": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "last_discovery_at": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedChronoDateTime" + } + ] + }, + "last_discovery_error": { + "type": [ + "string", + "null" + ] + }, + "local_running_endpoint": { + "type": "boolean" + }, + "manifest": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/ChatKitProviderManifest" + } + ] + }, + "org_id": { + "type": "string" + }, + "revision": { + "type": "integer", + "format": "int64" + }, + "team_id": { + "type": "string" + }, + "updated_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + } + } + }, + "CustomConnectionCredentials": { + "type": "object", + "description": "Returned once after rotation, with remote notification outcome for host recovery.", + "required": [ + "runtime_token", + "backend_notified" + ], + "properties": { + "backend_notified": { + "type": "boolean" + }, + "runtime_token": { + "type": "string" + } + } + }, + "CustomConnectionInfo": { + "type": "object", + "description": "Public connection configuration; runtime credentials and setup state are excluded.", + "required": [ + "setup_id", + "enabled", + "id", + "org_id", + "team_id", + "definition_id", + "display_name", + "status", + "configuration" + ], + "properties": { + "configuration": {}, + "default_agent_inbox_id": { + "type": [ + "string", + "null" + ] + }, + "definition_id": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "enabled": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "org_id": { + "type": "string" + }, + "setup_id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "team_id": { + "type": "string" + }, + "tool_group_instance_id": { + "type": [ + "string", + "null" + ] + }, + "toolkit_discovery_url": { + "type": [ + "string", + "null" + ] + } + } + }, + "CustomConnectionInfoPaginatedResponse": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomConnectionInfo" + } + }, + "next_page_token": { + "type": "string" + } + } + }, + "CustomConnectionWork": { + "type": "object", + "description": "Operational diagnostics omit normalized message bodies and credentials.", + "required": [ + "work_id", + "kind", + "status", + "attempts", + "created_at", + "next_attempt_at" + ], + "properties": { + "attempts": { + "type": "integer", + "format": "int64" + }, + "created_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + }, + "kind": { + "type": "string" + }, + "last_error": { + "type": [ + "string", + "null" + ] + }, + "next_attempt_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + }, + "status": { + "type": "string" + }, + "work_id": { + "type": "string" + } + } + }, + "CustomConnectionWorkPaginatedResponse": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomConnectionWork" + } + }, + "next_page_token": { + "type": "string" + } + } + }, + "CustomExternalIdentity": { + "type": "object", + "description": "One external address; callers cannot grant themselves principal authority.", + "required": [ + "external_id", + "display_name", + "kind" + ], + "properties": { + "display_name": { + "type": "string" + }, + "external_id": { + "type": "string" + }, + "kind": { + "$ref": "#/components/schemas/ChatKitIdentityKind" + } + } + }, + "CustomInboundMessage": { + "type": "object", + "description": "Normalized event accepted using a single connection's runtime credential.", + "required": [ + "event_id", + "conversation_key", + "external_message_id", + "sender", + "text" + ], + "properties": { + "attachment_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "conversation_key": { + "type": "string" + }, + "event_id": { + "type": "string" + }, + "external_message_id": { + "type": "string" + }, + "provider_metadata": {}, + "provider_thread": {}, + "sender": { + "$ref": "#/components/schemas/CustomExternalIdentity" + }, + "text": { + "type": "string" + } + } + }, + "CustomIngressReceipt": { + "type": "object", + "description": "A durable ingestion acknowledgment, including replay of an existing event.", + "required": [ + "event_id", + "message_id", + "status" + ], + "properties": { + "event_id": { + "type": "string" + }, + "message_id": { + "type": "string" + }, + "status": { + "type": "string" + } + } + }, + "CustomProviderAuthMethod": { + "type": "object", + "description": "Provider-owned authorization method; secret fields are never list outputs.", + "required": [ + "id", + "display_name", + "description", + "fields" + ], + "properties": { + "description": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomProviderField" + } + }, + "id": { + "type": "string" + } + } + }, + "CustomProviderCapabilities": { + "type": "object", + "description": "Content conversion and runtime features declared by a backend.", + "properties": { + "attachments": { + "type": "boolean" + }, + "delivery": { + "type": "boolean" + }, + "html": { + "type": "boolean" + }, + "identity": { + "type": "boolean" + }, + "inbound": { + "type": "boolean" + }, + "markdown": { + "type": "boolean" + }, + "max_length": { + "type": [ + "integer", + "null" + ], + "minimum": 0 + }, + "streaming": { + "type": "boolean" + }, + "toolkit": { + "type": "boolean" + } + } + }, + "CustomProviderField": { + "type": "object", + "description": "Named schema-backed field rendered by the existing generic setup flow.", + "required": [ + "name", + "label", + "field_type" + ], + "properties": { + "field_type": { + "type": "string" + }, + "label": { + "type": "string" + }, + "name": { + "type": "string" + }, + "placeholder": { + "type": "string" + }, + "required": { + "type": "boolean" + } + } + }, + "CustomProviderInvocation": { + "type": "object", + "description": "Exact signed remote invocation. Secret-bearing payloads intentionally omit Debug.", + "required": [ + "protocol_version", + "manifest_version", + "request_id", + "scope", + "operation", + "input", + "configuration", + "secrets" + ], + "properties": { + "configuration": {}, + "context": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CustomSessionContext" + } + ] + }, + "input": {}, + "manifest_version": { + "type": "string" + }, + "operation": { + "$ref": "#/components/schemas/CustomProviderOperation" + }, + "protocol_version": { + "type": "integer", + "format": "int32", + "minimum": 0 + }, + "request_id": { + "type": "string" + }, + "scope": { + "$ref": "#/components/schemas/CustomProviderScope" + }, + "secrets": {} + } + }, + "CustomProviderList": { + "type": "object", + "description": "A paginated team catalog; continuation uses the existing timestamp cursor.", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomChatKitProvider" + } + }, + "next_page_token": { + "type": [ + "string", + "null" + ] + } + } + }, + "CustomProviderOperation": { + "type": "string", + "description": "Tilde-owned protocol operations are typed independently of provider business inputs.", + "enum": [ + "setup_start", + "setup_resume", + "disconnect", + "runtime_credentials_updated", + "toolkit_configured", + "register_identity", + "normalize_mentions", + "list_session_tools", + "invoke_session_tool", + "reconcile_session_tool", + "prepare_send", + "deliver", + "reconcile_delivery" + ] + }, + "CustomProviderRegistration": { + "type": "object", + "description": "Signing material is returned only by explicit create/rotate operations.", + "required": [ + "provider", + "signing_key" + ], + "properties": { + "provider": { + "$ref": "#/components/schemas/CustomChatKitProvider" + }, + "signing_key": { + "type": "string" + } + } + }, + "CustomProviderRegistrationInput": { + "type": "object", + "description": "Input for creating or editing a reusable backend registration.", + "required": [ + "display_name", + "discovery_url" + ], + "properties": { + "discovery_url": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "local_running_endpoint": { + "type": "boolean" + } + } + }, + "CustomProviderScope": { + "type": "object", + "description": "Tenant-scoped coordinates recovered from persisted records.", + "required": [ + "org_id", + "team_id", + "definition_id", + "connection_id" + ], + "properties": { + "connection_id": { + "type": "string" + }, + "definition_id": { + "type": "string" + }, + "org_id": { + "type": "string" + }, + "team_id": { + "type": "string" + } + } + }, + "CustomReconciliation": { + "oneOf": [ + { + "type": "object", + "required": [ + "result", + "status" + ], + "properties": { + "result": {}, + "status": { + "type": "string", + "enum": [ + "applied" + ] + } + } + }, + { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "string", + "enum": [ + "absent" + ] + } + } + }, + { + "type": "object", + "required": [ + "reason", + "status" + ], + "properties": { + "reason": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "uncertain" + ] + } + } + } + ], + "description": "Remote mutations must distinguish absence from an unresolved prior attempt." + }, + "CustomRuntimeCommand": { + "oneOf": [ + { + "type": "object", + "required": [ + "operation" + ], + "properties": { + "operation": { + "type": "string", + "enum": [ + "register_agent_identity" + ] + } + } + }, + { + "type": "object", + "required": [ + "tags", + "operation" + ], + "properties": { + "operation": { + "type": "string", + "enum": [ + "normalize_mentions" + ] }, - { - "$ref": "#/components/schemas/WrappedUuidV4" + "tags": { + "type": "array", + "items": { + "type": "string" + } } - ] + } }, - "return_url": { - "type": [ - "string", - "null" - ] + { + "type": "object", + "required": [ + "conversation_key", + "operation" + ], + "properties": { + "conversation_key": { + "type": "string" + }, + "operation": { + "type": "string", + "enum": [ + "ensure_conversation" + ] + }, + "provider_thread": {}, + "title": { + "type": [ + "string", + "null" + ] + } + } }, - "source": { - "oneOf": [ - { - "type": "null" + { + "type": "object", + "required": [ + "session_id", + "media_type", + "operation" + ], + "properties": { + "filename": { + "type": [ + "string", + "null" + ] }, - { - "$ref": "#/components/schemas/CredentialSetupSource" + "media_type": { + "type": "string" + }, + "operation": { + "type": "string", + "enum": [ + "create_attachment_upload" + ] + }, + "session_id": { + "type": "string" + }, + "size_bytes": { + "type": [ + "integer", + "null" + ], + "format": "int64" } - ] + } }, - "status": { - "$ref": "#/components/schemas/CredentialSetupItemStatus" + { + "type": "object", + "required": [ + "session_id", + "attachment_id", + "operation" + ], + "properties": { + "attachment_id": { + "type": "string" + }, + "operation": { + "type": "string", + "enum": [ + "complete_attachment_upload" + ] + }, + "session_id": { + "type": "string" + }, + "sha256": { + "type": [ + "string", + "null" + ] + }, + "size_bytes": { + "type": [ + "integer", + "null" + ], + "format": "int64" + } + } }, - "team_id": { - "type": "string" + { + "type": "object", + "required": [ + "session_id", + "attachment_id", + "operation" + ], + "properties": { + "attachment_id": { + "type": "string" + }, + "operation": { + "type": "string", + "enum": [ + "attachment_download" + ] + }, + "session_id": { + "type": "string" + } + } }, - "updated_at": { - "$ref": "#/components/schemas/WrappedChronoDateTime" + { + "type": "object", + "required": [ + "session_id", + "identity", + "operation" + ], + "properties": { + "identity": { + "$ref": "#/components/schemas/CustomExternalIdentity" + }, + "operation": { + "type": "string", + "enum": [ + "upsert_participant" + ] + }, + "session_id": { + "type": "string" + } + } }, - "user_credential_id": { - "oneOf": [ - { - "type": "null" + { + "type": "object", + "required": [ + "session_id", + "external_id", + "operation" + ], + "properties": { + "external_id": { + "type": "string" }, - { - "$ref": "#/components/schemas/WrappedUuidV4" + "operation": { + "type": "string", + "enum": [ + "leave_participant" + ] + }, + "session_id": { + "type": "string" } - ] - } - } - }, - "CredentialSetupItemPaginatedResponse": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CredentialSetupItem" } }, - "next_page_token": { - "type": "string" + { + "type": "object", + "required": [ + "session_id", + "operation" + ], + "properties": { + "next_page_token": { + "type": [ + "string", + "null" + ] + }, + "operation": { + "type": "string", + "enum": [ + "history" + ] + }, + "page_size": { + "type": [ + "integer", + "null" + ], + "format": "int64" + }, + "session_id": { + "type": "string" + } + } } - } - }, - "CredentialSetupItemStatus": { - "type": "string", - "enum": [ - "pending", - "in_progress", - "connected", - "failed" - ] + ], + "description": "Narrow operations a provider may perform inside its own bound conversations." }, - "CredentialSetupNextAction": { + "CustomRuntimeResponse": { "oneOf": [ { "type": "object", "required": [ - "url", + "identity", "type" ], "properties": { + "identity": { + "$ref": "#/components/schemas/ChatKitIdentity" + }, "type": { "type": "string", "enum": [ - "redirect" + "identity" ] - }, - "url": { - "type": "string" } } }, { "type": "object", "required": [ - "credential_kind", - "fields", - "submit_label", + "identities", "type" ], "properties": { - "configuration_defaults": { - "$ref": "#/components/schemas/WrappedJsonValue", - "description": "Non-secret, server-authored values merged into the submitted\ncredential configuration. This keeps portable state capable of\ncarrying protocol metadata without exposing it as editable form\nfields or exporting secrets." - }, - "credential_kind": { - "$ref": "#/components/schemas/CredentialSetupCredentialKind" - }, - "fields": { + "identities": { "type": "array", "items": { - "$ref": "#/components/schemas/CredentialSetupFormField" + "$ref": "#/components/schemas/ChatKitIdentity" } }, - "submit_label": { + "type": { + "type": "string", + "enum": [ + "mentions" + ] + } + } + }, + { + "type": "object", + "required": [ + "session_id", + "type" + ], + "properties": { + "session_id": { "type": "string" }, "type": { "type": "string", "enum": [ - "submit_form" + "conversation" ] } } @@ -50534,10 +52657,103 @@ { "type": "object", "required": [ + "upload", "type" ], "properties": { - "message": { + "type": { + "type": "string", + "enum": [ + "upload" + ] + }, + "upload": { + "$ref": "#/components/schemas/CreateAttachmentUploadResponse" + } + } + }, + { + "type": "object", + "required": [ + "attachment", + "type" + ], + "properties": { + "attachment": { + "$ref": "#/components/schemas/Attachment" + }, + "type": { + "type": "string", + "enum": [ + "attachment" + ] + } + } + }, + { + "type": "object", + "required": [ + "download", + "type" + ], + "properties": { + "download": { + "$ref": "#/components/schemas/GetAttachmentDownloadUrlResponse" + }, + "type": { + "type": "string", + "enum": [ + "download" + ] + } + } + }, + { + "type": "object", + "required": [ + "participant", + "type" + ], + "properties": { + "participant": { + "$ref": "#/components/schemas/ChatKitParticipant" + }, + "type": { + "type": "string", + "enum": [ + "participant" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "left" + ] + } + } + }, + { + "type": "object", + "required": [ + "messages", + "type" + ], + "properties": { + "messages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomVisibleMessage" + } + }, + "next_page_token": { "type": [ "string", "null" @@ -50546,82 +52762,135 @@ "type": { "type": "string", "enum": [ - "complete" + "history" ] } } } - ] - }, - "CredentialSetupSource": { - "type": "string", - "description": "Origin of a durable credential setup item.", - "enum": [ - "state_import", - "user_credential_brokering", - "mcp_tool_group_instance_creation", - "mcp_proxied_server_connection" - ] + ], + "description": "Runtime responses deliberately expose no general team resource operations." }, - "CredentialSourceSerialized": { + "CustomSessionContext": { "type": "object", + "description": "Coordinates verified against the active turn before invoking a session tool.", "required": [ - "type_id", - "configuration_schema", - "name", - "display_name", - "auth_adapter", - "documentation", - "requires_brokering", - "requires_resource_server_credential_refreshing", - "requires_user_credential_refreshing", - "supports_auto_display_name", - "display_name_description" + "session_id", + "agent_inbox_instance_id", + "target_inbox_instance_id", + "trigger_message_id", + "execution_id", + "conversation_key", + "external_message_id", + "provider_message", + "provider_thread" ], "properties": { - "auth_adapter": { - "$ref": "#/components/schemas/ProviderAuthAdapterConfig" + "agent_inbox_instance_id": { + "type": "string" }, - "configuration_schema": { - "$ref": "#/components/schemas/ConfigurationSchema" + "conversation_key": { + "type": "string" }, - "display_name": { + "execution_id": { "type": "string" }, - "display_name_description": { + "external_message_id": { "type": "string" }, - "documentation": { + "participants": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomSessionParticipant" + } + }, + "provider_message": {}, + "provider_thread": { + "description": "Only the provider adapter interprets this external reply handle." + }, + "session_id": { "type": "string" }, - "name": { + "target_inbox_instance_id": { "type": "string" }, - "requires_brokering": { - "type": "boolean" + "trigger_message_id": { + "type": "string" + } + } + }, + "CustomSessionParticipant": { + "type": "object", + "description": "Active delivery roster, excluding Tilde authorization principals and other connections' addresses.", + "required": [ + "instance_id", + "display_name", + "is_agent" + ], + "properties": { + "display_name": { + "type": "string" }, - "requires_resource_server_credential_refreshing": { - "type": "boolean" + "external_id": { + "type": [ + "string", + "null" + ] }, - "requires_user_credential_refreshing": { - "type": "boolean" + "instance_id": { + "type": "string" }, - "supports_auto_display_name": { + "is_agent": { "type": "boolean" + } + } + }, + "CustomSessionTool": { + "type": "object", + "description": "Tool schemas describe business inputs only. Context travels separately.", + "required": [ + "name", + "description", + "input_schema", + "output_schema" + ], + "properties": { + "description": { + "type": "string" }, - "type_id": { + "input_schema": {}, + "name": { "type": "string" + }, + "output_schema": {}, + "read_only": { + "type": "boolean" } } }, - "CurrentSeatStatus": { - "type": "string", - "description": "Current caller's seat state. Machine identities never consume seats.", - "enum": [ - "active", - "not_assigned", - "not_billable" - ] + "CustomSessionToolCatalog": { + "type": "object", + "description": "Server-bound tool catalog for the authenticated agent's current turn.", + "required": [ + "tools" + ], + "properties": { + "context": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/CustomSessionContext" + } + ] + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomSessionTool" + } + } + } }, "CustomSkillSpec": { "type": "object", @@ -50816,6 +53085,33 @@ } } }, + "CustomVisibleMessage": { + "type": "object", + "required": [ + "id", + "role", + "text", + "sender_display_name", + "created_at" + ], + "properties": { + "created_at": { + "$ref": "#/components/schemas/WrappedChronoDateTime" + }, + "id": { + "type": "string" + }, + "role": { + "$ref": "#/components/schemas/MessageRole" + }, + "sender_display_name": { + "type": "string" + }, + "text": { + "type": "string" + } + } + }, "DataUIPart": { "type": "object", "description": "Data UI part - represents custom data parts", @@ -61149,6 +63445,17 @@ } } }, + "RetryConnectionWork": { + "type": "object", + "required": [ + "work_id" + ], + "properties": { + "work_id": { + "type": "string" + } + } + }, "RetryMemorySourceBody": { "type": "object", "required": [ @@ -62293,6 +64600,12 @@ "content" ], "properties": { + "attachment_ids": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WrappedUuidV4" + } + }, "bcc": { "type": [ "array", @@ -62320,6 +64633,17 @@ "null" ] }, + "provider_options": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/WrappedJsonValue", + "description": "Private adapter extensions, never interpreted as routing or authority." + } + ] + }, "reply_all": { "type": [ "boolean", diff --git a/packages/api-client/src/generated/index.ts b/packages/api-client/src/generated/index.ts index 10be774a..f00c1ef0 100644 --- a/packages/api-client/src/generated/index.ts +++ b/packages/api-client/src/generated/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export { acceptInvitation, addCommonProviderInstallationOwnershipGrant, addCommonProviderInstallationVisibilityGrant, addIdentityTeam, addMcpResourceOwnershipGrant, addMcpResourceVisibilityGrant, addMcpServerInstanceFunction, addMemoryBankOwnershipGrant, addMemoryBankVisibilityGrant, addOrganizationMember, addPersonalMemoryBankOwnershipGrant, addPersonalMemoryBankVisibilityGrant, addPersonalRegistryOwnershipGrant, addPersonalRegistryVisibilityGrant, addPersonalRscOwnershipGrant, addPersonalRscVisibilityGrant, addPersonalSkillOwnershipGrant, addPersonalSkillVisibilityGrant, addPersonalUcOwnershipGrant, addPersonalUcVisibilityGrant, addPersonalWikiOwnershipGrant, addPersonalWikiVisibilityGrant, addProviderSkillsToSkillRegistry, addRscOwnershipGrant, addRscVisibilityGrant, addSessionResourceGrant, addSessionUserMember, addSignalProviderGrant, addSkillOwnershipGrant, addSkillRegistryOwnershipGrant, addSkillRegistryVisibilityGrant, addSkillVisibilityGrant, addTeamGroupMember, addTeamMember, addUcOwnershipGrant, addUcVisibilityGrant, addWikiOwnershipGrant, addWikiVisibilityGrant, applyWikiOntologyTemplate, assignPersonalMemoryBankSynthesizer, authorizeOauthDeviceCode, automationsAddGrant, automationsDelete, automationsGet, automationsList, automationsListExecutions, automationsListGrants, automationsPut, automationsRemoveGrant, automationsRun, automationsSetOwnership, automationsSetVisibility, autoProvisionToolGroupInstance, autumnWebhookHandler, billingAiCreditReceiptCommit, billingAiCreditReservationRelease, billingAiCreditReserve, billingAiCreditTopupCreate, billingAiGatewayEnsure, billingAutumnBridgePost, billingContextGet, billingEnrollAccount, billingProductEnrollCurrentHuman, billingRedirect, billingRemoveAccountSeat, billingWebhookStripeDeprecated, bindToolGroupToMcpServer, bulkAddMcpServerInstanceFunctions, bulkRemoveMcpServerInstanceFunctions, cancelHumanApprovalAction, changePersonalWikiOwnership, changeWikiOwnership, chatkitAddAgentResourceGrant, chatkitAddSessionParticipant, chatkitAppendAgentRunStep, chatkitApproveSelfExtensionProposal, chatkitAutoProvisionSlackChannelInstallation, chatkitCacheConvertedMessages, chatkitCancelSelfExtensionProposal, chatkitClaimAgentResourceBundleOutputs, chatkitClaimAgentRuns, chatkitClaimSelfExtensionProposalOutputs, chatkitCollectAgentJobResult, chatkitCompleteSlackProviderProvisionedSetup, chatkitCompleteSlackSelfManagedSetup, chatkitControlAgentRun, chatkitCreateAgentRun, chatkitCreateGoal, chatkitCreateRoomInvitation, chatkitCreateSession, chatkitCreateSlackChannelInstallation, chatkitCreateTask, chatkitDecideCapabilityChange, chatkitDecideRoomInvitation, chatkitDelegateAgentJob, chatkitDeleteAgent, chatkitDeleteAgentTurnQueueItem, chatkitDeleteChatProvider, chatkitFinishAgentRunEffect, chatkitGetActiveAgentRun, chatkitGetAgent, chatkitGetAgentAvatar, chatkitGetAgentJob, chatkitGetAgentObservability, chatkitGetAgentResourceBundleProvisioning, chatkitGetAgentRun, chatkitGetAgentRunEffect, chatkitGetCompactedHistory, chatkitGetGoal, chatkitGetLatestCompaction, chatkitGetSelfExtensionProposal, chatkitGetTask, chatkitHydrateConvertedMessages, chatkitInvokeSessionProviderTool, chatkitJoinSession, chatkitListAgentJobs, chatkitListAgentResourceGrants, chatkitListAgents, chatkitListAgentTurnQueue, chatkitListAvailableChatChannels, chatkitListAvailableChatProviders, chatkitListChatProviders, chatkitListGoals, chatkitListMessageHistory, chatkitListRoomInvitations, chatkitListSelfExtensionProposals, chatkitListSessionParticipants, chatkitListSessions, chatkitListTasks, chatkitPrepareAgentRunEffect, chatkitProposeSelfExtension, chatkitProvisionAgentResourceBundle, chatkitRecallAutomaticMemory, chatkitRegisterAgentTools, chatkitRegisterChatProvider, chatkitRegisterHttpVercelAiSdkAgent, chatkitRegisterVercelUiChatProvider, chatkitRejectSelfExtensionProposal, chatkitRemoveAgentResourceGrant, chatkitRemoveSessionParticipant, chatkitReorderAgentTurnQueueItem, chatkitReportCompactionEvent, chatkitReportToolExecution, chatkitResumeAgentJob, chatkitRevokeRoomInvitation, chatkitRollbackSelfExtensionProposal, chatkitSearch, chatkitSendSessionMessage, chatkitSetAgentPermissions, chatkitSetAgentStatus, chatkitSetChatProviderStatus, chatkitStartSlackOauth, chatkitSteerAgentJob, chatkitSteerAgentTurnQueueItem, chatkitStopAgentJob, chatkitTransitionAgentRun, chatkitUpdateAgent, chatkitUpdateAgentAvatar, chatkitUpdateAgentObservability, chatkitUpdateAgentOwnership, chatkitUpdateAgentToolVisibility, chatkitUpdateAgentVisibility, chatkitUpdateChatProvider, chatkitUpdateGoal, chatkitUpdateTask, chatkitWorkspaceAgentSessions, chatkitWorkspaceBootstrap, chatkitWorkspaceConversationSnapshot, chatkitWorkspaceCreateSession, chatkitWorkspaceInterruptSession, chatkitWorkspaceMessages, chatkitWorkspaceRenameThread, chatkitWorkspaceSendMessage, chatkitWorkspaceSidebar, chatkitWorkspaceSubmitTurn, chatkitWorkspaceUpdateSessionReadState, checkMemoryBankHealth, checkPersonalMemoryBankHealth, claimTemporaryAccount, clearPersonalMemoryBankSynthesizer, completeAttachmentUpload, completeCredentialSetupItem, completeHumanApprovalAction, completeIdentityLink, completeIdentityVerification, completeWikiAssetUpload, configureHostedOpenbotInstance, connectMcpProviderCatalogEntry, connectProxiedMcpServer, createAttachmentUpload, createAttachmentUploads, createCustomToolProvider, createHostedOpenbotDeployment, createHostedOpenbotRelease, createHumanApprovalAction, createIdentity, createIdentityLink, createManagedUserCredential, createMcpServerInstance, createMemoryBank, createMessage, createOrganization, createOrgOidcProvider, createPersonalMcpServerInstance, createPersonalMemoryBank, createPersonalSkill, createPersonalSkillRegistry, createPersonalToolGroupInstance, createPersonalUserCredential, createPersonalWiki, createPersonalWikiPage, createProxyToken, createResourceServerCredential, createSession, createSkill, createSkillRegistry, createTeam, createTeamGroup, createTemporaryAccount, createToolGroupInstance, createTrustedRuntime, createTrustedSkillProvider, createUserCredential, createWiki, createWikiAssetUpload, createWikiPage, createWikiPageType, createWikiPageTypeVersion, createWikiRelationshipType, createWikiRelationshipTypeVersion, credentialGenericOauthCallback, deleteAttachment, deleteCustomToolProvider, deleteManagedUserCredential, deleteMcpServerInstance, deleteMemoryBank, deleteMemoryDocument, deleteMessage, deleteOrganization, deleteOrgOidcProvider, deletePersonalMcpServerInstance, deletePersonalMemoryBank, deletePersonalMemoryDocument, deletePersonalSkill, deletePersonalSkillRegistry, deletePersonalToolGroupInstance, deletePersonalWiki, deletePersonalWikiPage, deleteProxiedMcpServer, deleteResourceServerCredential, deleteSelfAvatar, deleteSkill, deleteSkillRegistry, deleteSynthesisSessionMemory, deleteTeam, deleteTeamGroup, deleteToolGroupInstance, deleteTrustedRuntime, deleteUserCredential, deleteVerifiedIdentityLink, deleteWiki, deleteWikiAsset, deleteWikiPage, deleteWikiPageRelationship, deleteWikiPageType, deleteWikiPageTypeVersion, deleteWikiRelationshipType, disableCustomToolProvider, disableProxiedMcpServer, disableTool, downloadAttachmentContent, downloadSkillPackageFile, downloadWikiAsset, downloadWikiAssetContent, enableAndBindProviderTools, enableCustomToolProvider, enableProxiedMcpServer, enableTool, encryptPersonalUserCredentialConfiguration, encryptResourceServerConfiguration, encryptUserCredentialConfiguration, exchangeOauthCode, expireTemporaryAccounts, exportMemoryBankTemplate, exportPersonalMemoryBankTemplate, finalizeHostedOpenbotRelease, generateLocalRuntimeTunnelApiKey, generateTemporaryAccountClaimUrl, getAttachmentDownloadUrl, getCommonProviderInstallation, getCredentialSetupItem, getCustomToolProvider, getHostedOpenbotBootstrapBundle, getHostedOpenbotInstance, getHostedOpenbotRelease, getHumanApprovalAction, getIdentity, getIdentityVerification, getLocalRuntimeTunnelApiKey, getLocalRuntimeTunnelConnector, getManagedUserCredentialSecret, getMcpServerInstance, getMemoryBank, getMemoryBankConfig, getMemoryBankDocument, getMessage, getMessageDeliveries, getOpenbotPluginsCatalog, getOrganization, getOrgOidcProvider, getPersonalMcpServerInstance, getPersonalMemoryBank, getPersonalMemoryBankConfig, getPersonalMemoryBankDocument, getPersonalSkill, getPersonalSkillRegistry, getPersonalToolGroupInstance, getPersonalWiki, getPersonalWikiPage, getProviderProvisioningHumanAction, getProxiedMcpServer, getProxiedSkillProvider, getResourceServerCredential, getRuntimeConfig, getSelfAvatar, getSelfProfile, getSessionEventHistory, getSkill, getSkillPackage, getSkillRegistry, getSkillRegistrySkill, getSkillRegistrySkillByTitle, getSkillRegistrySkillDescription, getTeam, getTeamGroup, getToolGroupInstance, getToolsOpenapiSpec, getTrustedRuntime, getUserCredential, getWiki, getWikiPage, getWikiPageBacklinks, getWikiPageNeighborhood, getWikiPageRelationship, getWikiPageType, getWikiPageTypeVersion, getWikiRelationshipType, getWikiRelationshipTypeVersion, grepPersonalWikiPages, grepWikiPages, healthCheck, importMemoryBankTemplate, importPersonalMemoryBankTemplate, initiateIdentityVerification, inspectWikiAssetReferences, inviteTeamUsers, invokeCustomTool, invokeTool, issueHostedOpenbotGitToken, issueOpenbotChatkitRealtimeTicket, issueProxyRealtimeTicket, linkTeamIdentity, listAvailableToolGroups, listCommonProviderInstallationOwnershipGrants, listCommonProviderInstallations, listCommonProviderInstallationVisibilityGrants, listCredentialSetupItems, listCustomToolProviders, listIdentities, listIdentityTeams, listInboxAgents, listInboxes, listManagedUserCredentials, listMcpProviderCatalog, listMcpResourceOwnershipGrants, listMcpResourceVisibilityGrants, listMcpServerInstances, listMemoryBankDocuments, listMemoryBankOwnershipGrants, listMemoryBanks, listMemoryBankSourceBindings, listMemoryBankVisibilityGrants, listMemorySourceBindings, listMessages, listOpenbotDeployments, listOrganizationMembers, listOrganizations, listOrganizationTeamGroups, listOrgOidcProviders, listPersonalMcpServerInstances, listPersonalMemoryBankDocuments, listPersonalMemoryBankOwnershipGrants, listPersonalMemoryBanks, listPersonalMemoryBankSourceBindings, listPersonalMemoryBankVisibilityGrants, listPersonalMemorySourceBindings, listPersonalRegistryOwnershipGrants, listPersonalRegistryVisibilityGrants, listPersonalRscOwnershipGrants, listPersonalRscVisibilityGrants, listPersonalSkillOwnershipGrants, listPersonalSkillRegistries, listPersonalSkills, listPersonalSkillVisibilityGrants, listPersonalToolGroupInstances, listPersonalUcOwnershipGrants, listPersonalUcVisibilityGrants, listPersonalWikiOwnershipGrants, listPersonalWikiPages, listPersonalWikis, listPersonalWikiVisibilityGrants, listProviderProvisionerCatalog, listProxiedMcpServers, listProxiedSkillProviders, listProxyTokens, listPublicAvailableToolGroups, listResourceServerCredentials, listRscOwnershipGrants, listRscVisibilityGrants, listSessionInboxInstances, listSessionResourceGrants, listSessions, listSessionUserMembers, listSignalProviderGrants, listSkillOwnershipGrants, listSkillRegistries, listSkillRegistryOwnershipGrants, listSkillRegistrySkillSummaries, listSkillRegistryVisibilityGrants, listSkills, listSkillVisibilityGrants, listTeamGroupMembers, listTeamGroups, listTeamInvitations, listTeamMembers, listTeams, listToolDeploymentsByAlias, listToolGroupInstances, listToolGroupInstancesGroupedByTool, listTools, listTrustedRuntimes, listUcOwnershipGrants, listUcVisibilityGrants, listUserCredentials, listVerifiedIdentityLinks, listVisibleMemoryBanks, listWikiAssets, listWikiOntologyInstallations, listWikiOntologyTemplates, listWikiOwnershipGrants, listWikiPageAssets, listWikiPageRelationships, listWikiPageRevisions, listWikiPages, listWikiPageTypes, listWikiPageTypeVersions, listWikiRelationshipTypes, listWikiRelationshipTypeVersions, listWikis, listWikiVisibilityGrants, mcpProtocolDelete, mcpProtocolGet, mcpProtocolPost, mcpServerPlaygroundChat, migrateWikiPageType, moveWikiPage, observeSession, onboardOrganization, type Options, personalMcpProtocolDelete, personalMcpProtocolGet, personalMcpProtocolPost, previewIdentityLink, previewWikiPageTypeMigration, providerProvisioningCallback, providerSetupCatalog, providerSetupResume, providerSetupStart, provisionIdentityTeam, recallMemory, recallPersonalMemory, recallSynthesisSessionMemory, reconcileOpenbotAgentBundle, redirectTemporaryAccountClaimPage, reflectMemory, reflectPersonalMemory, refreshCustomToolProvider, refreshProxiedMcpServer, registerOauthClient, registerOpenbotDeployment, registerTeamOauthClient, removeCommonProviderInstallationOwnershipGrant, removeCommonProviderInstallationVisibilityGrant, removeIdentityIdentifier, removeIdentityTeam, removeMcpResourceOwnershipGrant, removeMcpResourceVisibilityGrant, removeMcpServerInstanceFunction, removeMemoryBankOwnershipGrant, removeMemoryBankVisibilityGrant, removeOrganizationMember, removePersonalMemoryBankOwnershipGrant, removePersonalMemoryBankVisibilityGrant, removePersonalRegistryOwnershipGrant, removePersonalRegistryVisibilityGrant, removePersonalRscOwnershipGrant, removePersonalRscVisibilityGrant, removePersonalSkillOwnershipGrant, removePersonalSkillVisibilityGrant, removePersonalUcOwnershipGrant, removePersonalUcVisibilityGrant, removePersonalWikiOwnershipGrant, removePersonalWikiVisibilityGrant, removeRscOwnershipGrant, removeRscVisibilityGrant, removeSessionResourceGrant, removeSessionUserMember, removeSignalProviderGrant, removeSkillOwnershipGrant, removeSkillRegistryOwnershipGrant, removeSkillRegistryVisibilityGrant, removeSkillVisibilityGrant, removeTeamGroupMember, removeTeamMember, removeUcOwnershipGrant, removeUcVisibilityGrant, removeWikiOwnershipGrant, removeWikiVisibilityGrant, renameProxyToken, replaceMemorySourceBindings, replacePersonalMemorySourceBindings, resetMemoryBankConfig, resetPersonalMemoryBankConfig, resolveIdentity, resumeCredentialSetupItem, resumeProviderAppProvisioning, resumeUserCredentialBrokering, retainMemoryDocument, retainPersonalMemoryDocument, retainSynthesisSessionMemory, retryMemorySourceSync, retryPersonalMemorySourceBindings, retryWiki, reverseProxyAddProfileOwnershipGrant, reverseProxyAddProfileVisibilityGrant, reverseProxyCreateProfile, reverseProxyDeleteProfile, reverseProxyGetProfile, reverseProxyListProfileOwnershipGrants, reverseProxyListProfiles, reverseProxyListProfileVisibilityGrants, reverseProxyListProviders, reverseProxyProxyGet, reverseProxyProxyPost, reverseProxyRemoveProfileOwnershipGrant, reverseProxyRemoveProfileVisibilityGrant, reverseProxySetProfileOwnership, reverseProxySetProfileVisibility, reverseProxyUpdateProfile, revokeLocalRuntimeTunnelApiKey, revokeProxyToken, revokeTeamInvitation, rotateCustomToolProviderSigningKey, routeAuthCallback, routeCreateApiKey, routeDeleteApiKey, routeGetJwks, routeListApiKeys, routeListDebugAuthProfiles, routeLogout, routeRefreshToken, routeResolveLoginProvider, routeSelectDebugAuthProfile, routeStartAuthorization, searchSkillRegistry, setCommonProviderInstallationOwnership, setCommonProviderInstallationVisibility, setMcpResourceOwnership, setMcpResourceVisibility, setMemoryBankOwnershipMode, setMemoryBankVisibility, setPersonalMemoryBankOwnershipMode, setPersonalMemoryBankVisibility, setPersonalRegistryOwnershipMode, setPersonalRegistryVisibility, setPersonalRscOwnership, setPersonalRscVisibility, setPersonalSkillOwnershipMode, setPersonalSkillVisibility, setPersonalUcOwnership, setPersonalUcVisibility, setPersonalWikiOwnershipMode, setPersonalWikiVisibility, setRscOwnership, setRscVisibility, setSelfOpenbotAvatar, setSignalProviderOwnership, setSignalProviderVisibility, setSkillOwnershipMode, setSkillRegistryOwnershipMode, setSkillRegistryVisibility, setSkillVisibility, setUcOwnership, setUcVisibility, setWikiOwnershipMode, setWikiVisibility, signalsAddPersonalProviderGrant, signalsCreatePersonalProviderInstance, signalsCreateProviderInstance, signalsDeletePersonalProviderInstance, signalsDeleteProviderInstance, signalsGetDelivery, signalsGetPersonalDelivery, signalsGetPersonalProviderInstance, signalsGetProviderInstance, signalsListAvailableProviders, signalsListDeliveries, signalsListPersonalAvailableProviders, signalsListPersonalDeliveries, signalsListPersonalProviderGrants, signalsListPersonalProviderInstances, signalsListProviderInstances, signalsRemovePersonalProviderGrant, signalsRetryDelivery, signalsRetryPersonalDelivery, signalsSetPersonalProviderOwnership, signalsSetPersonalProviderVisibility, signalsTriggerFake, signalsUpdatePersonalProviderInstance, signalsUpdateProviderInstance, startCredentialSetupItem, startOauthDeviceCode, startProviderAppProvisioning, startProxiedMcpServerOauth, startUserCredentialBrokering, stateExport, stateGetImport, stateImport, stateImportEvents, statePlan, stateResolveSource, stateSchema, stateSchemaJson, stateValidate, tildePayPaymentMpp, tildePayPaymentX402, tildePayProvision, tildePayWalletCreate, tildePayWalletSummary, tildePayWalletWaitUntilBalance, traverseWikiGraph, unbindToolGroupFromMcpServer, updateCustomToolProvider, updateHostedOpenbotComputerImage, updateIdentity, updateManagedUserCredential, updateMcpServerInstance, updateMcpServerInstanceFunction, updateMemoryBank, updateMemoryBankConfig, updateOrganization, updateOrganizationMemberRole, updateOrgOidcProvider, updatePersonalMcpServerInstance, updatePersonalMemoryBank, updatePersonalMemoryBankConfig, updatePersonalSkill, updatePersonalSkillRegistry, updatePersonalToolGroupInstance, updatePersonalWiki, updatePersonalWikiPage, updateResourceServerCredential, updateSelfProfile, updateSessionOwnership, updateSessionVisibility, updateSkill, updateSkillRegistry, updateTeam, updateTeamGroup, updateTeamMemberRole, updateToolBoundParams, updateToolGroupInstance, updateTrustedRuntime, updateUserCredential, updateWiki, updateWikiAsset, updateWikiPage, updateWikiPageRelationship, updateWikiPageType, updateWikiRelationshipType, uploadAttachmentContent, uploadHostedOpenbotReleaseFile, uploadSelfAvatar, uploadWikiAssetContent, upsertWikiPageRelationship, validateSynthesisSessionBatch, validateWikiPageTypeData, verifyOrgOidcProviderDomain, walletCreate, walletCustomerCreate, walletCustomerGet, walletCustomerKycGet, walletCustomerList, walletGet, walletGetBalances, walletGetCryptoDepositInformation, walletGetFiatDepositInformation, walletList, walletMakeMppPayment, walletMakeX402Payment, walletTransactionHistoryList, walletTransactionHistoryRefresh, walletVirtualAccountCreate, walletWaitUntilBalance, whoami } from './sdk.gen'; -export { type AcceptInvitationData, type AcceptInvitationError, type AcceptInvitationErrors, type AcceptInvitationRequest, type AcceptInvitationResponse, type AcceptInvitationResponse2, type AcceptInvitationResponses, type AccountOrganizationMembership, type AddChatKitParticipantRequestInner, type AddCommonProviderInstallationOwnershipGrantData, type AddCommonProviderInstallationOwnershipGrantResponse, type AddCommonProviderInstallationOwnershipGrantResponses, type AddCommonProviderInstallationVisibilityGrantData, type AddCommonProviderInstallationVisibilityGrantResponse, type AddCommonProviderInstallationVisibilityGrantResponses, type AddIdentityTeamData, type AddIdentityTeamResponse, type AddIdentityTeamResponses, type AddMcpResourceOwnershipGrantData, type AddMcpResourceOwnershipGrantResponse, type AddMcpResourceOwnershipGrantResponses, type AddMcpResourceVisibilityGrantData, type AddMcpResourceVisibilityGrantResponse, type AddMcpResourceVisibilityGrantResponses, type AddMcpServerInstanceFunctionBody, type AddMcpServerInstanceFunctionData, type AddMcpServerInstanceFunctionError, type AddMcpServerInstanceFunctionErrors, type AddMcpServerInstanceFunctionResponse, type AddMcpServerInstanceFunctionResponses, type AddMemoryBankOwnershipGrantData, type AddMemoryBankOwnershipGrantResponse, type AddMemoryBankOwnershipGrantResponses, type AddMemoryBankVisibilityGrantData, type AddMemoryBankVisibilityGrantResponse, type AddMemoryBankVisibilityGrantResponses, type AddOrganizationMemberData, type AddOrganizationMemberError, type AddOrganizationMemberErrors, type AddOrganizationMemberRequest, type AddOrganizationMemberResponse, type AddOrganizationMemberResponses, type AddPersonalMemoryBankOwnershipGrantData, type AddPersonalMemoryBankOwnershipGrantResponse, type AddPersonalMemoryBankOwnershipGrantResponses, type AddPersonalMemoryBankVisibilityGrantData, type AddPersonalMemoryBankVisibilityGrantResponse, type AddPersonalMemoryBankVisibilityGrantResponses, type AddPersonalRegistryOwnershipGrantData, type AddPersonalRegistryOwnershipGrantResponse, type AddPersonalRegistryOwnershipGrantResponses, type AddPersonalRegistryVisibilityGrantData, type AddPersonalRegistryVisibilityGrantResponse, type AddPersonalRegistryVisibilityGrantResponses, type AddPersonalRscOwnershipGrantData, type AddPersonalRscOwnershipGrantResponse, type AddPersonalRscOwnershipGrantResponses, type AddPersonalRscVisibilityGrantData, type AddPersonalRscVisibilityGrantResponse, type AddPersonalRscVisibilityGrantResponses, type AddPersonalSkillOwnershipGrantData, type AddPersonalSkillOwnershipGrantResponse, type AddPersonalSkillOwnershipGrantResponses, type AddPersonalSkillVisibilityGrantData, type AddPersonalSkillVisibilityGrantResponse, type AddPersonalSkillVisibilityGrantResponses, type AddPersonalUcOwnershipGrantData, type AddPersonalUcOwnershipGrantResponse, type AddPersonalUcOwnershipGrantResponses, type AddPersonalUcVisibilityGrantData, type AddPersonalUcVisibilityGrantResponse, type AddPersonalUcVisibilityGrantResponses, type AddPersonalWikiOwnershipGrantData, type AddPersonalWikiOwnershipGrantResponse, type AddPersonalWikiOwnershipGrantResponses, type AddPersonalWikiVisibilityGrantData, type AddPersonalWikiVisibilityGrantResponse, type AddPersonalWikiVisibilityGrantResponses, type AddProviderSkillsToRegistryRequest, type AddProviderSkillsToSkillRegistryData, type AddProviderSkillsToSkillRegistryError, type AddProviderSkillsToSkillRegistryErrors, type AddProviderSkillsToSkillRegistryResponse, type AddProviderSkillsToSkillRegistryResponses, type AddRscOwnershipGrantData, type AddRscOwnershipGrantResponse, type AddRscOwnershipGrantResponses, type AddRscVisibilityGrantData, type AddRscVisibilityGrantResponse, type AddRscVisibilityGrantResponses, type AddSessionResourceGrantData, type AddSessionResourceGrantError, type AddSessionResourceGrantErrors, type AddSessionResourceGrantResponse, type AddSessionResourceGrantResponses, type AddSessionUserMemberData, type AddSessionUserMemberError, type AddSessionUserMemberErrors, type AddSessionUserMemberRequest, type AddSessionUserMemberResponse, type AddSessionUserMemberResponses, type AddSignalProviderGrantData, type AddSignalProviderGrantResponse, type AddSignalProviderGrantResponses, type AddSkillOwnershipGrantData, type AddSkillOwnershipGrantResponse, type AddSkillOwnershipGrantResponses, type AddSkillRegistryOwnershipGrantData, type AddSkillRegistryOwnershipGrantResponse, type AddSkillRegistryOwnershipGrantResponses, type AddSkillRegistryVisibilityGrantData, type AddSkillRegistryVisibilityGrantResponse, type AddSkillRegistryVisibilityGrantResponses, type AddSkillVisibilityGrantData, type AddSkillVisibilityGrantResponse, type AddSkillVisibilityGrantResponses, type AddTeamGroupMemberData, type AddTeamGroupMemberError, type AddTeamGroupMemberErrors, type AddTeamGroupMemberResponses, type AddTeamMemberBody, type AddTeamMemberData, type AddTeamMemberError, type AddTeamMemberErrors, type AddTeamMemberResponse, type AddTeamMemberResponses, type AddUcOwnershipGrantData, type AddUcOwnershipGrantResponse, type AddUcOwnershipGrantResponses, type AddUcVisibilityGrantData, type AddUcVisibilityGrantResponse, type AddUcVisibilityGrantResponses, type AddWikiOwnershipGrantData, type AddWikiOwnershipGrantResponse, type AddWikiOwnershipGrantResponses, type AddWikiVisibilityGrantData, type AddWikiVisibilityGrantResponse, type AddWikiVisibilityGrantResponses, type Agent, AgentCredentialStrategy, type AgentEndpointSpec, AgentEventVisibility, type AgentJob, type AgentJobArtifact, type AgentJobBudget, type AgentJobPaginatedResponse, AgentJobStatus, type AgentMultiplayerPermissions, type AgentObservabilityConfiguration, type AgentObservabilityPolicy, type AgentPermissions, type AgentProvisioningOperation, type AgentProvisioningOutputs, AgentProvisioningStatus, type AgentReachScope, type AgentRun, type AgentRunBudget, type AgentRunEffectReceipt, type AgentRunJobContext, AgentRunStatus, type AgentSpec, type AgentToolCatalogEntry, AgentToolSource, AgentToolStatus, type AiCreditReservation, type AiCreditTopup, type AppendAgentRunStepInner, type ApplyOntologyTemplateResult, type ApplyWikiOntologyTemplateData, type ApplyWikiOntologyTemplateResponse, type ApplyWikiOntologyTemplateResponses, type Approval, ApprovalDecision, type AssignMemoryBankSynthesizerBody, type AssignPersonalMemoryBankSynthesizerData, type AssignPersonalMemoryBankSynthesizerResponse, type AssignPersonalMemoryBankSynthesizerResponses, type Attachment, AttachmentUploadStatus, type AuthorizeOauthDeviceCodeData, type AuthorizeOauthDeviceCodeError, type AuthorizeOauthDeviceCodeErrors, type AuthorizeOauthDeviceCodeResponses, type AutomationsAddGrantData, type AutomationsAddGrantResponse, type AutomationsAddGrantResponses, type AutomationsDeleteData, type AutomationsDeleteResponse, type AutomationsDeleteResponses, type AutomationsGetData, type AutomationsGetError, type AutomationsGetErrors, type AutomationsGetResponse, type AutomationsGetResponses, type AutomationsListData, type AutomationsListExecutionsData, type AutomationsListExecutionsResponse, type AutomationsListExecutionsResponses, type AutomationsListGrantsData, type AutomationsListGrantsResponse, type AutomationsListGrantsResponses, type AutomationsListResponse, type AutomationsListResponses, type AutomationsPutData, type AutomationsPutError, type AutomationsPutErrors, type AutomationsPutResponse, type AutomationsPutResponses, type AutomationsRemoveGrantData, type AutomationsRemoveGrantResponses, type AutomationsRunData, type AutomationsRunResponse, type AutomationsRunResponses, type AutomationsSetOwnershipData, type AutomationsSetOwnershipResponse, type AutomationsSetOwnershipResponses, type AutomationsSetVisibilityData, type AutomationsSetVisibilityResponse, type AutomationsSetVisibilityResponses, type AutoProvisionSlackChannelInstallationRequestInner, type AutoProvisionSlackChannelInstallationResponse, type AutoProvisionToolGroupInstanceData, type AutoProvisionToolGroupInstanceError, type AutoProvisionToolGroupInstanceErrors, type AutoProvisionToolGroupInstanceParamsInner, type AutoProvisionToolGroupInstanceResponse, type AutoProvisionToolGroupInstanceResponse2, type AutoProvisionToolGroupInstanceResponses, type AutumnWebhookHandlerData, type AutumnWebhookHandlerErrors, type AutumnWebhookHandlerResponses, type BillingAiCreditReceiptCommitData, type BillingAiCreditReceiptCommitResponse, type BillingAiCreditReceiptCommitResponses, type BillingAiCreditReservationReleaseData, type BillingAiCreditReservationReleaseResponse, type BillingAiCreditReservationReleaseResponses, type BillingAiCreditReserveData, type BillingAiCreditReserveResponse, type BillingAiCreditReserveResponses, type BillingAiCreditTopupCreateData, type BillingAiCreditTopupCreateError, type BillingAiCreditTopupCreateErrors, type BillingAiCreditTopupCreateResponse, type BillingAiCreditTopupCreateResponses, type BillingAiGatewayEnsureData, type BillingAiGatewayEnsureError, type BillingAiGatewayEnsureErrors, type BillingAiGatewayEnsureResponse, type BillingAiGatewayEnsureResponses, type BillingAutumnBridgePostData, type BillingAutumnBridgePostError, type BillingAutumnBridgePostErrors, type BillingAutumnBridgePostResponses, type BillingContext, type BillingContextGetData, type BillingContextGetError, type BillingContextGetErrors, type BillingContextGetResponse, type BillingContextGetResponses, type BillingEnrollAccountData, type BillingEnrollAccountError, type BillingEnrollAccountErrors, type BillingEnrollAccountResponse, type BillingEnrollAccountResponses, type BillingProductEnrollCurrentHumanData, type BillingProductEnrollCurrentHumanError, type BillingProductEnrollCurrentHumanErrors, type BillingProductEnrollCurrentHumanResponse, type BillingProductEnrollCurrentHumanResponses, BillingProductId, type BillingRedirectData, type BillingRedirectErrors, type BillingRemoveAccountSeatData, type BillingRemoveAccountSeatError, type BillingRemoveAccountSeatErrors, type BillingRemoveAccountSeatResponse, type BillingRemoveAccountSeatResponses, type BillingWebhookStripeDeprecatedData, type BillingWebhookStripeDeprecatedResponse, type BillingWebhookStripeDeprecatedResponses, type BindToolGroupToMcpServerData, type BindToolGroupToMcpServerError, type BindToolGroupToMcpServerErrors, type BindToolGroupToMcpServerResponse, type BindToolGroupToMcpServerResponses, type BrokerAction, type BrokerActionRedirect, type BrokerInput, type BrokerState, type BulkAddMcpServerInstanceFunctionItem, type BulkAddMcpServerInstanceFunctionsBody, type BulkAddMcpServerInstanceFunctionsData, type BulkAddMcpServerInstanceFunctionsError, type BulkAddMcpServerInstanceFunctionsErrors, type BulkAddMcpServerInstanceFunctionsResponse, type BulkAddMcpServerInstanceFunctionsResponses, type BulkRemoveMcpServerInstanceFunctionsBody, type BulkRemoveMcpServerInstanceFunctionsData, type BulkRemoveMcpServerInstanceFunctionsError, type BulkRemoveMcpServerInstanceFunctionsErrors, type BulkRemoveMcpServerInstanceFunctionsResponse, type BulkRemoveMcpServerInstanceFunctionsResponses, type CacheConvertedMessagesRequest, type CacheConvertedMessagesResponse, type CachedAgentRepresentation, type CancelHumanApprovalActionData, type CancelHumanApprovalActionError, type CancelHumanApprovalActionErrors, type CancelHumanApprovalActionRequest, type CancelHumanApprovalActionResponse, type CancelHumanApprovalActionResponses, type CapabilityChangeApproval, CapabilityChangeDecision, type ChangePersonalWikiOwnershipData, type ChangePersonalWikiOwnershipResponse, type ChangePersonalWikiOwnershipResponses, type ChangeResourceOwnershipRequest, type ChangeWikiOwnershipData, type ChangeWikiOwnershipResponse, type ChangeWikiOwnershipResponses, type ChatApproval, ChatApprovalDecision, type ChatChannelInstallationInstructions, ChatChannelPlatformScope, type ChatChannelProvider, type ChatChannelProviderAuthMethod, type ChatChannelSubscriptionOption, type ChatkitAddAgentResourceGrantData, type ChatkitAddAgentResourceGrantError, type ChatkitAddAgentResourceGrantErrors, type ChatkitAddAgentResourceGrantResponse, type ChatkitAddAgentResourceGrantResponses, type ChatkitAddSessionParticipantData, type ChatkitAddSessionParticipantError, type ChatkitAddSessionParticipantErrors, type ChatkitAddSessionParticipantResponse, type ChatkitAddSessionParticipantResponses, type ChatKitAgent, type ChatKitAgentAvatar, ChatKitAgentConcurrencyPolicy, type ChatKitAgentInvocationActor, type ChatKitAgentJobExecutionContext, type ChatKitAgentPaginatedResponse, type ChatKitAgentRunExecutionContext, type ChatKitAgentTurnQueueItem, type ChatKitAgentTurnQueueItemPaginatedResponse, ChatKitAgentTurnQueueStatus, type ChatkitAppendAgentRunStepData, type ChatkitAppendAgentRunStepResponse, type ChatkitAppendAgentRunStepResponses, type ChatkitApproveSelfExtensionProposalData, type ChatkitApproveSelfExtensionProposalResponse, type ChatkitApproveSelfExtensionProposalResponses, type ChatKitAutomaticMemoryItem, ChatKitAutomaticMemoryMode, type ChatKitAutomaticMemoryProjection, type ChatkitAutoProvisionSlackChannelInstallationData, type ChatkitAutoProvisionSlackChannelInstallationError, type ChatkitAutoProvisionSlackChannelInstallationErrors, type ChatkitAutoProvisionSlackChannelInstallationResponse, type ChatkitAutoProvisionSlackChannelInstallationResponses, type ChatkitCacheConvertedMessagesData, type ChatkitCacheConvertedMessagesError, type ChatkitCacheConvertedMessagesErrors, type ChatkitCacheConvertedMessagesResponse, type ChatkitCacheConvertedMessagesResponses, type ChatkitCancelSelfExtensionProposalData, type ChatkitCancelSelfExtensionProposalResponse, type ChatkitCancelSelfExtensionProposalResponses, type ChatKitChatProviderConfigField, type ChatkitClaimAgentResourceBundleOutputsData, type ChatkitClaimAgentResourceBundleOutputsResponse, type ChatkitClaimAgentResourceBundleOutputsResponses, type ChatkitClaimAgentRunsData, type ChatkitClaimAgentRunsResponse, type ChatkitClaimAgentRunsResponses, type ChatkitClaimSelfExtensionProposalOutputsData, type ChatkitClaimSelfExtensionProposalOutputsResponse, type ChatkitClaimSelfExtensionProposalOutputsResponses, type ChatkitCollectAgentJobResultData, type ChatkitCollectAgentJobResultResponse, type ChatkitCollectAgentJobResultResponses, type ChatKitCompactedHistoryResponse, type ChatKitCompactionCheckpoint, type ChatKitCompactionLifecycleInput, type ChatkitCompleteSlackProviderProvisionedSetupData, type ChatkitCompleteSlackProviderProvisionedSetupError, type ChatkitCompleteSlackProviderProvisionedSetupErrors, type ChatkitCompleteSlackProviderProvisionedSetupResponse, type ChatkitCompleteSlackProviderProvisionedSetupResponses, type ChatkitCompleteSlackSelfManagedSetupData, type ChatkitCompleteSlackSelfManagedSetupError, type ChatkitCompleteSlackSelfManagedSetupErrors, type ChatkitCompleteSlackSelfManagedSetupResponse, type ChatkitCompleteSlackSelfManagedSetupResponses, type ChatkitControlAgentRunData, type ChatkitControlAgentRunResponse, type ChatkitControlAgentRunResponses, type ChatkitCreateAgentRunData, type ChatkitCreateAgentRunResponse, type ChatkitCreateAgentRunResponses, type ChatkitCreateGoalData, type ChatkitCreateGoalResponse, type ChatkitCreateGoalResponses, type ChatkitCreateRoomInvitationData, type ChatkitCreateRoomInvitationError, type ChatkitCreateRoomInvitationErrors, type ChatkitCreateRoomInvitationResponse, type ChatkitCreateRoomInvitationResponses, type ChatkitCreateSessionData, type ChatkitCreateSessionError, type ChatkitCreateSessionErrors, type ChatkitCreateSessionResponse, type ChatkitCreateSessionResponses, type ChatkitCreateSlackChannelInstallationData, type ChatkitCreateSlackChannelInstallationError, type ChatkitCreateSlackChannelInstallationErrors, type ChatkitCreateSlackChannelInstallationResponse, type ChatkitCreateSlackChannelInstallationResponses, type ChatkitCreateTaskData, type ChatkitCreateTaskResponse, type ChatkitCreateTaskResponses, type ChatkitDecideCapabilityChangeData, type ChatkitDecideCapabilityChangeResponse, type ChatkitDecideCapabilityChangeResponses, type ChatkitDecideRoomInvitationData, type ChatkitDecideRoomInvitationError, type ChatkitDecideRoomInvitationErrors, type ChatkitDecideRoomInvitationResponse, type ChatkitDecideRoomInvitationResponses, type ChatkitDelegateAgentJobData, type ChatkitDelegateAgentJobResponse, type ChatkitDelegateAgentJobResponses, type ChatkitDeleteAgentData, type ChatkitDeleteAgentError, type ChatkitDeleteAgentErrors, type ChatkitDeleteAgentResponse, type ChatkitDeleteAgentResponses, type ChatkitDeleteAgentTurnQueueItemData, type ChatkitDeleteAgentTurnQueueItemError, type ChatkitDeleteAgentTurnQueueItemErrors, type ChatkitDeleteAgentTurnQueueItemResponse, type ChatkitDeleteAgentTurnQueueItemResponses, type ChatkitDeleteChatProviderData, type ChatkitDeleteChatProviderError, type ChatkitDeleteChatProviderErrors, type ChatkitDeleteChatProviderResponse, type ChatkitDeleteChatProviderResponses, type ChatKitExecutionContext, type ChatkitFinishAgentRunEffectData, type ChatkitFinishAgentRunEffectResponse, type ChatkitFinishAgentRunEffectResponses, type ChatkitGetActiveAgentRunData, type ChatkitGetActiveAgentRunResponse, type ChatkitGetActiveAgentRunResponses, type ChatkitGetAgentAvatarData, type ChatkitGetAgentAvatarError, type ChatkitGetAgentAvatarErrors, type ChatkitGetAgentAvatarResponse, type ChatkitGetAgentAvatarResponses, type ChatkitGetAgentData, type ChatkitGetAgentError, type ChatkitGetAgentErrors, type ChatkitGetAgentJobData, type ChatkitGetAgentJobResponse, type ChatkitGetAgentJobResponses, type ChatkitGetAgentObservabilityData, type ChatkitGetAgentObservabilityError, type ChatkitGetAgentObservabilityErrors, type ChatkitGetAgentObservabilityResponse, type ChatkitGetAgentObservabilityResponses, type ChatkitGetAgentResourceBundleProvisioningData, type ChatkitGetAgentResourceBundleProvisioningResponse, type ChatkitGetAgentResourceBundleProvisioningResponses, type ChatkitGetAgentResponse, type ChatkitGetAgentResponses, type ChatkitGetAgentRunData, type ChatkitGetAgentRunEffectData, type ChatkitGetAgentRunEffectResponse, type ChatkitGetAgentRunEffectResponses, type ChatkitGetAgentRunResponse, type ChatkitGetAgentRunResponses, type ChatkitGetCompactedHistoryData, type ChatkitGetCompactedHistoryError, type ChatkitGetCompactedHistoryErrors, type ChatkitGetCompactedHistoryResponse, type ChatkitGetCompactedHistoryResponses, type ChatkitGetGoalData, type ChatkitGetGoalResponse, type ChatkitGetGoalResponses, type ChatkitGetLatestCompactionData, type ChatkitGetLatestCompactionError, type ChatkitGetLatestCompactionErrors, type ChatkitGetLatestCompactionResponse, type ChatkitGetLatestCompactionResponses, type ChatkitGetSelfExtensionProposalData, type ChatkitGetSelfExtensionProposalResponse, type ChatkitGetSelfExtensionProposalResponses, type ChatkitGetTaskData, type ChatkitGetTaskResponse, type ChatkitGetTaskResponses, type ChatkitHydrateConvertedMessagesData, type ChatkitHydrateConvertedMessagesError, type ChatkitHydrateConvertedMessagesErrors, type ChatkitHydrateConvertedMessagesResponse, type ChatkitHydrateConvertedMessagesResponses, ChatKitIdentityKind, type ChatkitInvokeSessionProviderToolData, type ChatkitInvokeSessionProviderToolError, type ChatkitInvokeSessionProviderToolErrors, type ChatkitInvokeSessionProviderToolResponse, type ChatkitInvokeSessionProviderToolResponses, type ChatkitJoinSessionData, type ChatkitJoinSessionError, type ChatkitJoinSessionErrors, type ChatkitJoinSessionResponse, type ChatkitJoinSessionResponses, type ChatkitListAgentJobsData, type ChatkitListAgentJobsResponse, type ChatkitListAgentJobsResponses, type ChatkitListAgentResourceGrantsData, type ChatkitListAgentResourceGrantsError, type ChatkitListAgentResourceGrantsErrors, type ChatkitListAgentResourceGrantsResponse, type ChatkitListAgentResourceGrantsResponses, type ChatkitListAgentsData, type ChatkitListAgentsError, type ChatkitListAgentsErrors, type ChatkitListAgentsResponse, type ChatkitListAgentsResponses, type ChatkitListAgentTurnQueueData, type ChatkitListAgentTurnQueueError, type ChatkitListAgentTurnQueueErrors, type ChatkitListAgentTurnQueueResponse, type ChatkitListAgentTurnQueueResponses, type ChatkitListAvailableChatChannelsData, type ChatkitListAvailableChatChannelsError, type ChatkitListAvailableChatChannelsErrors, type ChatkitListAvailableChatChannelsResponse, type ChatkitListAvailableChatChannelsResponses, type ChatkitListAvailableChatProvidersData, type ChatkitListAvailableChatProvidersError, type ChatkitListAvailableChatProvidersErrors, type ChatkitListAvailableChatProvidersResponse, type ChatkitListAvailableChatProvidersResponses, type ChatkitListChatProvidersData, type ChatkitListChatProvidersError, type ChatkitListChatProvidersErrors, type ChatkitListChatProvidersResponse, type ChatkitListChatProvidersResponses, type ChatkitListGoalsData, type ChatkitListGoalsResponse, type ChatkitListGoalsResponses, type ChatkitListMessageHistoryData, type ChatkitListMessageHistoryError, type ChatkitListMessageHistoryErrors, type ChatkitListMessageHistoryResponse, type ChatkitListMessageHistoryResponses, type ChatkitListRoomInvitationsData, type ChatkitListRoomInvitationsError, type ChatkitListRoomInvitationsErrors, type ChatkitListRoomInvitationsResponse, type ChatkitListRoomInvitationsResponses, type ChatkitListSelfExtensionProposalsData, type ChatkitListSelfExtensionProposalsResponse, type ChatkitListSelfExtensionProposalsResponses, type ChatkitListSessionParticipantsData, type ChatkitListSessionParticipantsError, type ChatkitListSessionParticipantsErrors, type ChatkitListSessionParticipantsResponse, type ChatkitListSessionParticipantsResponses, type ChatkitListSessionsData, type ChatkitListSessionsError, type ChatkitListSessionsErrors, type ChatkitListSessionsResponse, type ChatkitListSessionsResponses, type ChatkitListTasksData, type ChatkitListTasksResponse, type ChatkitListTasksResponses, type ChatKitMessageIdentity, type ChatKitParticipant, type ChatKitParticipantInput, ChatKitParticipantMembershipSource, ChatKitParticipantRole, ChatKitParticipantType, type ChatkitPrepareAgentRunEffectData, type ChatkitPrepareAgentRunEffectResponse, type ChatkitPrepareAgentRunEffectResponses, type ChatkitProposeSelfExtensionData, type ChatkitProposeSelfExtensionResponse, type ChatkitProposeSelfExtensionResponses, type ChatkitProvisionAgentResourceBundleData, type ChatkitProvisionAgentResourceBundleResponse, type ChatkitProvisionAgentResourceBundleResponses, type ChatKitRealtimeSocketTicket, ChatKitRealtimeTicketTransport, type ChatkitRecallAutomaticMemoryData, type ChatkitRecallAutomaticMemoryError, type ChatkitRecallAutomaticMemoryErrors, type ChatkitRecallAutomaticMemoryResponse, type ChatkitRecallAutomaticMemoryResponses, type ChatkitRegisterAgentToolsData, type ChatkitRegisterAgentToolsError, type ChatkitRegisterAgentToolsErrors, type ChatkitRegisterAgentToolsResponse, type ChatkitRegisterAgentToolsResponses, type ChatkitRegisterChatProviderData, type ChatkitRegisterChatProviderError, type ChatkitRegisterChatProviderErrors, type ChatkitRegisterChatProviderResponse, type ChatkitRegisterChatProviderResponses, type ChatkitRegisterHttpVercelAiSdkAgentData, type ChatkitRegisterHttpVercelAiSdkAgentError, type ChatkitRegisterHttpVercelAiSdkAgentErrors, type ChatkitRegisterHttpVercelAiSdkAgentResponse, type ChatkitRegisterHttpVercelAiSdkAgentResponses, type ChatkitRegisterVercelUiChatProviderData, type ChatkitRegisterVercelUiChatProviderError, type ChatkitRegisterVercelUiChatProviderErrors, type ChatkitRegisterVercelUiChatProviderResponse, type ChatkitRegisterVercelUiChatProviderResponses, type ChatkitRejectSelfExtensionProposalData, type ChatkitRejectSelfExtensionProposalResponse, type ChatkitRejectSelfExtensionProposalResponses, type ChatkitRemoveAgentResourceGrantData, type ChatkitRemoveAgentResourceGrantError, type ChatkitRemoveAgentResourceGrantErrors, type ChatkitRemoveAgentResourceGrantResponse, type ChatkitRemoveAgentResourceGrantResponses, type ChatkitRemoveSessionParticipantData, type ChatkitRemoveSessionParticipantError, type ChatkitRemoveSessionParticipantErrors, type ChatkitRemoveSessionParticipantResponse, type ChatkitRemoveSessionParticipantResponses, type ChatkitReorderAgentTurnQueueItemData, type ChatkitReorderAgentTurnQueueItemError, type ChatkitReorderAgentTurnQueueItemErrors, type ChatkitReorderAgentTurnQueueItemResponse, type ChatkitReorderAgentTurnQueueItemResponses, type ChatkitReportCompactionEventData, type ChatkitReportCompactionEventError, type ChatkitReportCompactionEventErrors, type ChatkitReportCompactionEventResponse, type ChatkitReportCompactionEventResponses, type ChatkitReportToolExecutionData, type ChatkitReportToolExecutionError, type ChatkitReportToolExecutionErrors, type ChatkitReportToolExecutionResponse, type ChatkitReportToolExecutionResponses, type ChatKitRequestAgent, type ChatKitRequestAgentAvatar, type ChatkitResumeAgentJobData, type ChatkitResumeAgentJobResponse, type ChatkitResumeAgentJobResponses, type ChatkitRevokeRoomInvitationData, type ChatkitRevokeRoomInvitationError, type ChatkitRevokeRoomInvitationErrors, type ChatkitRevokeRoomInvitationResponse, type ChatkitRevokeRoomInvitationResponses, type ChatkitRollbackSelfExtensionProposalData, type ChatkitRollbackSelfExtensionProposalResponse, type ChatkitRollbackSelfExtensionProposalResponses, type ChatKitRoomInvitation, ChatKitRoomInvitationDecision, type ChatKitRoomInvitationPaginatedResponse, ChatKitRoomInvitationStatus, type ChatKitSearchAgent, type ChatkitSearchData, type ChatkitSearchError, type ChatkitSearchErrors, type ChatKitSearchHit, ChatKitSearchHitKind, type ChatKitSearchHitPaginatedResponse, type ChatkitSearchResponse, type ChatkitSearchResponses, type ChatKitSearchSession, type ChatkitSendSessionMessageData, type ChatkitSendSessionMessageError, type ChatkitSendSessionMessageErrors, type ChatkitSendSessionMessageResponse, type ChatkitSendSessionMessageResponses, type ChatKitSessionUserState, type ChatKitSessionWithParticipants, type ChatkitSetAgentPermissionsData, type ChatkitSetAgentPermissionsError, type ChatkitSetAgentPermissionsErrors, type ChatkitSetAgentPermissionsResponse, type ChatkitSetAgentPermissionsResponses, type ChatkitSetAgentStatusData, type ChatkitSetAgentStatusError, type ChatkitSetAgentStatusErrors, type ChatkitSetAgentStatusResponse, type ChatkitSetAgentStatusResponses, type ChatkitSetChatProviderStatusData, type ChatkitSetChatProviderStatusError, type ChatkitSetChatProviderStatusErrors, type ChatkitSetChatProviderStatusResponse, type ChatkitSetChatProviderStatusResponses, type ChatkitStartSlackOauthData, type ChatkitStartSlackOauthError, type ChatkitStartSlackOauthErrors, type ChatkitStartSlackOauthResponse, type ChatkitStartSlackOauthResponses, type ChatkitSteerAgentJobData, type ChatkitSteerAgentJobResponse, type ChatkitSteerAgentJobResponses, type ChatkitSteerAgentTurnQueueItemData, type ChatkitSteerAgentTurnQueueItemError, type ChatkitSteerAgentTurnQueueItemErrors, type ChatkitSteerAgentTurnQueueItemResponse, type ChatkitSteerAgentTurnQueueItemResponses, type ChatkitStopAgentJobData, type ChatkitStopAgentJobResponse, type ChatkitStopAgentJobResponses, type ChatkitTransitionAgentRunData, type ChatkitTransitionAgentRunResponse, type ChatkitTransitionAgentRunResponses, type ChatkitUpdateAgentAvatarData, type ChatkitUpdateAgentAvatarError, type ChatkitUpdateAgentAvatarErrors, type ChatkitUpdateAgentAvatarResponse, type ChatkitUpdateAgentAvatarResponses, type ChatkitUpdateAgentData, type ChatkitUpdateAgentError, type ChatkitUpdateAgentErrors, type ChatkitUpdateAgentObservabilityData, type ChatkitUpdateAgentObservabilityError, type ChatkitUpdateAgentObservabilityErrors, type ChatkitUpdateAgentObservabilityResponse, type ChatkitUpdateAgentObservabilityResponses, type ChatkitUpdateAgentOwnershipData, type ChatkitUpdateAgentOwnershipError, type ChatkitUpdateAgentOwnershipErrors, type ChatkitUpdateAgentOwnershipResponse, type ChatkitUpdateAgentOwnershipResponses, type ChatkitUpdateAgentResponse, type ChatkitUpdateAgentResponses, type ChatkitUpdateAgentToolVisibilityData, type ChatkitUpdateAgentToolVisibilityError, type ChatkitUpdateAgentToolVisibilityErrors, type ChatkitUpdateAgentToolVisibilityResponse, type ChatkitUpdateAgentToolVisibilityResponses, type ChatkitUpdateAgentVisibilityData, type ChatkitUpdateAgentVisibilityError, type ChatkitUpdateAgentVisibilityErrors, type ChatkitUpdateAgentVisibilityResponse, type ChatkitUpdateAgentVisibilityResponses, type ChatkitUpdateChatProviderData, type ChatkitUpdateChatProviderError, type ChatkitUpdateChatProviderErrors, type ChatkitUpdateChatProviderResponse, type ChatkitUpdateChatProviderResponses, type ChatkitUpdateGoalData, type ChatkitUpdateGoalResponse, type ChatkitUpdateGoalResponses, type ChatkitUpdateTaskData, type ChatkitUpdateTaskResponse, type ChatkitUpdateTaskResponses, type ChatkitWorkspaceAgentSessionsData, type ChatkitWorkspaceAgentSessionsResponse, type ChatKitWorkspaceAgentSessionsResponse, type ChatkitWorkspaceAgentSessionsResponses, type ChatKitWorkspaceAgentSummary, type ChatKitWorkspaceAttachmentCompletion, type ChatkitWorkspaceBootstrapData, type ChatkitWorkspaceBootstrapResponse, type ChatKitWorkspaceBootstrapResponse, type ChatkitWorkspaceBootstrapResponses, type ChatKitWorkspaceConversationSnapshot, type ChatkitWorkspaceConversationSnapshotData, type ChatkitWorkspaceConversationSnapshotResponse, type ChatkitWorkspaceConversationSnapshotResponses, type ChatkitWorkspaceCreateSessionData, type ChatkitWorkspaceCreateSessionResponse, type ChatkitWorkspaceCreateSessionResponses, type ChatkitWorkspaceInterruptSessionData, type ChatkitWorkspaceInterruptSessionResponse, type ChatkitWorkspaceInterruptSessionResponses, type ChatkitWorkspaceMessagesData, type ChatkitWorkspaceMessagesResponse, type ChatkitWorkspaceMessagesResponses, type ChatKitWorkspaceParticipantEvent, type ChatKitWorkspaceParticipantEventKind, type ChatKitWorkspaceQueuedTurns, type ChatkitWorkspaceRenameThreadData, type ChatkitWorkspaceRenameThreadResponse, type ChatkitWorkspaceRenameThreadResponses, type ChatkitWorkspaceSendMessageData, type ChatkitWorkspaceSendMessageResponse, type ChatkitWorkspaceSendMessageResponses, type ChatKitWorkspaceSessionSummary, type ChatkitWorkspaceSidebarData, type ChatkitWorkspaceSidebarResponse, type ChatKitWorkspaceSidebarResponse, type ChatkitWorkspaceSidebarResponses, type ChatkitWorkspaceSubmitTurnData, type ChatkitWorkspaceSubmitTurnResponse, type ChatkitWorkspaceSubmitTurnResponses, type ChatkitWorkspaceUpdateSessionReadStateData, type ChatkitWorkspaceUpdateSessionReadStateResponse, type ChatkitWorkspaceUpdateSessionReadStateResponses, type ChatMessage, type ChatMessageContext, type ChatMessagePart, type ChatRequest, type ChatSessionContext, ChatToolInvocationState, type CheckMemoryBankHealthData, type CheckMemoryBankHealthResponse, type CheckMemoryBankHealthResponses, type CheckPersonalMemoryBankHealthData, type CheckPersonalMemoryBankHealthResponse, type CheckPersonalMemoryBankHealthResponses, type ClaimAgentRunsInner, type ClaimTemporaryAccountData, type ClaimTemporaryAccountError, type ClaimTemporaryAccountErrors, type ClaimTemporaryAccountRequest, type ClaimTemporaryAccountResponse, type ClaimTemporaryAccountResponse2, type ClaimTemporaryAccountResponses, type ClearPersonalMemoryBankSynthesizerData, type ClearPersonalMemoryBankSynthesizerResponse, type ClearPersonalMemoryBankSynthesizerResponses, type ClientOptions, type CloudWhoamiResponse, type CommitAiCreditReceiptBody, type CommonProviderConfiguration, type CommonProviderCredentialSetup, type CommonProviderInstallationPage, type CommonProviderInstallationSerialized, type CommonProviderRuntimeState, type CompleteAttachmentUploadData, type CompleteAttachmentUploadError, type CompleteAttachmentUploadErrors, type CompleteAttachmentUploadInner, type CompleteAttachmentUploadResponse, type CompleteAttachmentUploadResponses, type CompleteCredentialSetupItemBody, type CompleteCredentialSetupItemData, type CompleteCredentialSetupItemResponse, type CompleteCredentialSetupItemResponses, type CompleteHumanApprovalActionData, type CompleteHumanApprovalActionError, type CompleteHumanApprovalActionErrors, type CompleteHumanApprovalActionRequest, type CompleteHumanApprovalActionResponse, type CompleteHumanApprovalActionResponses, type CompleteIdentityLinkData, type CompleteIdentityLinkResponse, type CompleteIdentityLinkResponses, type CompleteIdentityVerificationData, type CompleteIdentityVerificationError, type CompleteIdentityVerificationErrors, type CompleteIdentityVerificationRequestInner, type CompleteIdentityVerificationResponse, type CompleteIdentityVerificationResponses, type CompleteSlackProviderProvisionedSetupRequestInner, type CompleteSlackSelfManagedSetupRequestInner, type CompleteWikiAssetUploadData, type CompleteWikiAssetUploadResponse, type CompleteWikiAssetUploadResponses, type ConfigurationSchema, type ConfigureHostedOpenbotInstanceData, type ConfigureHostedOpenbotInstanceError, type ConfigureHostedOpenbotInstanceErrors, type ConfigureHostedOpenBotInstanceRequest, type ConfigureHostedOpenbotInstanceResponse, type ConfigureHostedOpenbotInstanceResponses, type ConnectMcpProviderCatalogEntryData, type ConnectMcpProviderCatalogEntryError, type ConnectMcpProviderCatalogEntryErrors, type ConnectMcpProviderCatalogEntryRequestInner, type ConnectMcpProviderCatalogEntryResponse, type ConnectMcpProviderCatalogEntryResponse2, type ConnectMcpProviderCatalogEntryResponses, type ConnectProxiedMcpServerData, type ConnectProxiedMcpServerError, type ConnectProxiedMcpServerErrors, type ConnectProxiedMcpServerRequestInner, type ConnectProxiedMcpServerResponse, type ConnectProxiedMcpServerResponse2, type ConnectProxiedMcpServerResponses, type ControlAgentRunInner, type CreateAgentRunInner, type CreateAiCreditTopupBody, type CreateApiKeyInner, type CreateApiKeyResponse, type CreateAttachmentUploadData, type CreateAttachmentUploadError, type CreateAttachmentUploadErrors, type CreateAttachmentUploadInner, type CreateAttachmentUploadResponse, type CreateAttachmentUploadResponse2, type CreateAttachmentUploadResponses, type CreateAttachmentUploadsData, type CreateAttachmentUploadsError, type CreateAttachmentUploadsErrors, type CreateAttachmentUploadsInner, type CreateAttachmentUploadsResponse, type CreateAttachmentUploadsResponse2, type CreateAttachmentUploadsResponses, type CreateChatKitRoomInvitationRequestInner, type CreateChatKitSessionRequestInner, type CreateChatKitWorkspaceSessionRequestInner, type CreateCustomToolProviderData, type CreateCustomToolProviderRequestInner, type CreateCustomToolProviderResponse, type CreateCustomToolProviderResponse2, type CreateCustomToolProviderResponses, type CreatedIdentityLink, type CreatedProxyToken, type CreateGoalRequestInner, type CreateHostedOpenbotDeploymentData, type CreateHostedOpenbotDeploymentError, type CreateHostedOpenbotDeploymentErrors, type CreateHostedOpenBotDeploymentRequest, type CreateHostedOpenbotDeploymentResponse, type CreateHostedOpenbotDeploymentResponses, type CreateHostedOpenbotReleaseData, type CreateHostedOpenbotReleaseError, type CreateHostedOpenbotReleaseErrors, type CreateHostedOpenBotReleaseFile, type CreateHostedOpenBotReleaseRequest, type CreateHostedOpenbotReleaseResponse, type CreateHostedOpenbotReleaseResponses, type CreateHumanApprovalActionData, type CreateHumanApprovalActionError, type CreateHumanApprovalActionErrors, type CreateHumanApprovalActionRequestInner, type CreateHumanApprovalActionResponse, type CreateHumanApprovalActionResponse2, type CreateHumanApprovalActionResponses, type CreateIdentityData, type CreateIdentityError, type CreateIdentityErrors, type CreateIdentityLinkData, type CreateIdentityLinkError, type CreateIdentityLinkErrors, type CreateIdentityLinkRequest, type CreateIdentityLinkResponse, type CreateIdentityLinkResponses, type CreateIdentityRequest, type CreateIdentityResponse, type CreateIdentityResponses, type CreateManagedUserCredentialBody, type CreateManagedUserCredentialData, type CreateManagedUserCredentialResponse, type CreateManagedUserCredentialResponses, type CreateMcpServerInstanceData, type CreateMcpServerInstanceError, type CreateMcpServerInstanceErrors, type CreateMcpServerInstanceRequestInner, type CreateMcpServerInstanceResponse, type CreateMcpServerInstanceResponses, type CreateMemoryBankBody, type CreateMemoryBankData, type CreateMemoryBankResponse, type CreateMemoryBankResponses, type CreateMessageData, type CreateMessageError, type CreateMessageErrors, type CreateMessageRequest, type CreateMessageResponse, type CreateMessageResponses, type CreateOrganizationData, type CreateOrganizationError, type CreateOrganizationErrors, type CreateOrganizationRequest, type CreateOrganizationResponse, type CreateOrganizationResponses, type CreateOrgOidcProviderData, type CreateOrgOidcProviderError, type CreateOrgOidcProviderErrors, type CreateOrgOidcProviderRequest, type CreateOrgOidcProviderResponse, type CreateOrgOidcProviderResponses, type CreatePageTypeBody, type CreatePageTypeVersionBody, type CreatePayWalletRequest, type CreatePersonalMcpServerInstanceData, type CreatePersonalMcpServerInstanceError, type CreatePersonalMcpServerInstanceErrors, type CreatePersonalMcpServerInstanceResponse, type CreatePersonalMcpServerInstanceResponses, type CreatePersonalMemoryBankData, type CreatePersonalMemoryBankResponse, type CreatePersonalMemoryBankResponses, type CreatePersonalSkillData, type CreatePersonalSkillRegistryData, type CreatePersonalSkillRegistryResponse, type CreatePersonalSkillRegistryResponses, type CreatePersonalSkillResponse, type CreatePersonalSkillResponses, type CreatePersonalToolGroupInstanceBody, type CreatePersonalToolGroupInstanceData, type CreatePersonalToolGroupInstanceError, type CreatePersonalToolGroupInstanceErrors, type CreatePersonalToolGroupInstanceResponse, type CreatePersonalToolGroupInstanceResponses, type CreatePersonalUserCredentialData, type CreatePersonalUserCredentialResponse, type CreatePersonalUserCredentialResponses, type CreatePersonalWikiData, type CreatePersonalWikiPageData, type CreatePersonalWikiPageResponse, type CreatePersonalWikiPageResponses, type CreatePersonalWikiResponse, type CreatePersonalWikiResponses, type CreateProxyTokenData, type CreateProxyTokenError, type CreateProxyTokenErrors, type CreateProxyTokenRequest, type CreateProxyTokenResponse, type CreateProxyTokenResponses, type CreateRelationshipTypeBody, type CreateRelationshipTypeVersionBody, type CreateResourcePlaneGrantRequest, type CreateResourceServerCredentialData, type CreateResourceServerCredentialParamsInner, type CreateResourceServerCredentialResponse, type CreateResourceServerCredentialResponses, type CreateReverseProxyProfileInner, type CreateSelfExtensionProposalInner, type CreateSessionData, type CreateSessionError, type CreateSessionErrors, type CreateSessionInner, type CreateSessionResponse, type CreateSessionResponses, type CreateSignalMessageRequest, type CreateSignalProviderInstanceRequestInner, type CreateSkillData, type CreateSkillError, type CreateSkillErrors, type CreateSkillInner, type CreateSkillRegistryBody, type CreateSkillRegistryData, type CreateSkillRegistryError, type CreateSkillRegistryErrors, type CreateSkillRegistryResponse, type CreateSkillRegistryResponses, type CreateSkillResponse, type CreateSkillResponses, type CreateSlackChannelInstallationRequestInner, type CreateSlackChannelInstallationResponse, type CreateTaskRequestInner, type CreateTeamData, type CreateTeamError, type CreateTeamErrors, type CreateTeamGroupBody, type CreateTeamGroupData, type CreateTeamGroupError, type CreateTeamGroupErrors, type CreateTeamGroupResponse, type CreateTeamGroupResponses, type CreateTeamRequest, type CreateTeamResponse, type CreateTeamResponses, type CreateTemporaryAccountData, type CreateTemporaryAccountError, type CreateTemporaryAccountErrors, type CreateTemporaryAccountRequest, type CreateTemporaryAccountResponse, type CreateTemporaryAccountResponse2, type CreateTemporaryAccountResponses, type CreateTextMessageRequest, type CreateToolGroupInstanceData, type CreateToolGroupInstanceError, type CreateToolGroupInstanceErrors, type CreateToolGroupInstanceParamsInner, type CreateToolGroupInstanceResponse, type CreateToolGroupInstanceResponses, type CreateTrustedRuntimeData, type CreateTrustedRuntimeError, type CreateTrustedRuntimeErrors, type CreateTrustedRuntimeInner, type CreateTrustedRuntimeResponse, type CreateTrustedRuntimeResponses, type CreateTrustedSkillProviderData, type CreateTrustedSkillProviderError, type CreateTrustedSkillProviderErrors, type CreateTrustedSkillProviderRequest, type CreateTrustedSkillProviderResponse, type CreateTrustedSkillProviderResponses, type CreateUiMessageRequest, type CreateUserCredentialData, type CreateUserCredentialParamsInner, type CreateUserCredentialResponse, type CreateUserCredentialResponses, type CreateWalletBody, type CreateWalletCustomerBody, type CreateWalletVirtualAccountBody, type CreateWikiAssetBody, type CreateWikiAssetUploadData, type CreateWikiAssetUploadResponse, type CreateWikiAssetUploadResponses, type CreateWikiData, type CreateWikiInner, type CreateWikiPageData, type CreateWikiPageResponse, type CreateWikiPageResponses, type CreateWikiPageTypeData, type CreateWikiPageTypeResponse, type CreateWikiPageTypeResponses, type CreateWikiPageTypeVersionData, type CreateWikiPageTypeVersionErrors, type CreateWikiPageTypeVersionResponse, type CreateWikiPageTypeVersionResponses, type CreateWikiRelationshipTypeData, type CreateWikiRelationshipTypeResponse, type CreateWikiRelationshipTypeResponses, type CreateWikiRelationshipTypeVersionData, type CreateWikiRelationshipTypeVersionErrors, type CreateWikiRelationshipTypeVersionResponse, type CreateWikiRelationshipTypeVersionResponses, type CreateWikiResponse, type CreateWikiResponses, type CredentialGenericOauthCallbackData, type CredentialGenericOauthCallbackResponses, type CredentialSetupBinding, CredentialSetupCredentialKind, type CredentialSetupFormField, type CredentialSetupItem, type CredentialSetupItemPaginatedResponse, CredentialSetupItemStatus, type CredentialSetupNextAction, CredentialSetupSource, type CredentialSourceSerialized, CurrentSeatStatus, type CustomSkillSpec, type CustomToolProviderDetails, type CustomToolProviderListItem, type CustomToolProviderListItemPaginatedResponse, type CustomToolProviderSerialized, type DataUiPart, type DebugAuthProfilesResponse, type DecideCapabilityChangeRequest, type DecideChatKitRoomInvitationRequestInner, type DelegateAgentJobRequestInner, type DelegatedIdentity, type DeleteAttachmentData, type DeleteAttachmentError, type DeleteAttachmentErrors, type DeleteAttachmentResponse, type DeleteAttachmentResponses, type DeleteChatKitAgentTurnQueueItemResponse, type DeleteCustomToolProviderData, type DeleteCustomToolProviderResponses, type DeleteInboxResponse, type DeleteManagedUserCredentialData, type DeleteManagedUserCredentialResponses, type DeleteMcpServerInstanceData, type DeleteMcpServerInstanceError, type DeleteMcpServerInstanceErrors, type DeleteMcpServerInstanceResponses, type DeleteMemoryBankData, type DeleteMemoryBankResponses, type DeleteMemoryDocumentBody, type DeleteMemoryDocumentData, type DeleteMemoryDocumentResponses, type DeleteMessageData, type DeleteMessageError, type DeleteMessageErrors, type DeleteMessageResponse, type DeleteMessageResponse2, type DeleteMessageResponses, type DeleteOrganizationData, type DeleteOrganizationError, type DeleteOrganizationErrors, type DeleteOrganizationResponses, type DeleteOrgOidcProviderData, type DeleteOrgOidcProviderError, type DeleteOrgOidcProviderErrors, type DeleteOrgOidcProviderResponses, type DeletePersonalMcpServerInstanceData, type DeletePersonalMcpServerInstanceResponses, type DeletePersonalMemoryBankData, type DeletePersonalMemoryBankResponses, type DeletePersonalMemoryDocumentData, type DeletePersonalMemoryDocumentResponses, type DeletePersonalSkillData, type DeletePersonalSkillRegistryData, type DeletePersonalSkillRegistryResponses, type DeletePersonalSkillResponses, type DeletePersonalToolGroupInstanceData, type DeletePersonalToolGroupInstanceResponses, type DeletePersonalWikiData, type DeletePersonalWikiPageData, type DeletePersonalWikiPageResponses, type DeletePersonalWikiResponses, type DeleteProxiedMcpServerData, type DeleteProxiedMcpServerError, type DeleteProxiedMcpServerErrors, type DeleteProxiedMcpServerResponses, type DeleteResourceServerCredentialData, type DeleteResourceServerCredentialResponses, type DeleteRoutineResponse, type DeleteSelfAvatarData, type DeleteSelfAvatarError, type DeleteSelfAvatarErrors, type DeleteSelfAvatarResponses, type DeleteSignalResponse, type DeleteSkillData, type DeleteSkillError, type DeleteSkillErrors, type DeleteSkillRegistryData, type DeleteSkillRegistryError, type DeleteSkillRegistryErrors, type DeleteSkillRegistryResponses, type DeleteSkillResponses, type DeleteSynthesisMemoryDocumentBody, type DeleteSynthesisSessionMemoryData, type DeleteSynthesisSessionMemoryResponse, type DeleteSynthesisSessionMemoryResponses, type DeleteTeamData, type DeleteTeamError, type DeleteTeamErrors, type DeleteTeamGroupData, type DeleteTeamGroupError, type DeleteTeamGroupErrors, type DeleteTeamGroupResponses, type DeleteTeamResponses, type DeleteToolGroupInstanceData, type DeleteToolGroupInstanceError, type DeleteToolGroupInstanceErrors, type DeleteToolGroupInstanceResponses, type DeleteTrustedRuntimeData, type DeleteTrustedRuntimeError, type DeleteTrustedRuntimeErrors, type DeleteTrustedRuntimeResponses, type DeleteUserCredentialData, type DeleteUserCredentialResponses, type DeleteVerifiedIdentityLinkData, type DeleteVerifiedIdentityLinkError, type DeleteVerifiedIdentityLinkErrors, type DeleteVerifiedIdentityLinkResponse, type DeleteVerifiedIdentityLinkResponse2, type DeleteVerifiedIdentityLinkResponses, type DeleteWikiAssetData, type DeleteWikiAssetErrors, type DeleteWikiAssetResponses, type DeleteWikiData, type DeleteWikiPageData, type DeleteWikiPageErrors, type DeleteWikiPageRelationshipData, type DeleteWikiPageRelationshipResponses, type DeleteWikiPageResponses, type DeleteWikiPageTypeData, type DeleteWikiPageTypeErrors, type DeleteWikiPageTypeResponse, type DeleteWikiPageTypeResponses, type DeleteWikiPageTypeVersionData, type DeleteWikiPageTypeVersionErrors, type DeleteWikiPageTypeVersionResponse, type DeleteWikiPageTypeVersionResponses, type DeleteWikiRelationshipTypeData, type DeleteWikiRelationshipTypeErrors, type DeleteWikiRelationshipTypeResponses, type DeleteWikiResponses, type DeploymentEnvironmentFile, type DirectTokenPayment, type DisableCustomToolProviderData, type DisableCustomToolProviderResponse, type DisableCustomToolProviderResponses, type DisableProxiedMcpServerData, type DisableProxiedMcpServerError, type DisableProxiedMcpServerErrors, type DisableProxiedMcpServerResponse, type DisableProxiedMcpServerResponses, type DisableToolData, type DisableToolError, type DisableToolErrors, type DisableToolResponse, type DisableToolResponses, type DownloadAttachmentContentData, type DownloadAttachmentContentError, type DownloadAttachmentContentErrors, type DownloadAttachmentContentResponse, type DownloadAttachmentContentResponses, type DownloadSkillPackageFileData, type DownloadSkillPackageFileError, type DownloadSkillPackageFileErrors, type DownloadSkillPackageFileRequest, type DownloadSkillPackageFileResponse, type DownloadSkillPackageFileResponses, type DownloadWikiAssetContentData, type DownloadWikiAssetContentErrors, type DownloadWikiAssetContentResponse, type DownloadWikiAssetContentResponses, type DownloadWikiAssetData, type DownloadWikiAssetResponse, type DownloadWikiAssetResponses, type EnableAndBindMcpServerResult, type EnableAndBindProviderToolsData, type EnableAndBindProviderToolsError, type EnableAndBindProviderToolsErrors, type EnableAndBindProviderToolsResponse, type EnableAndBindProviderToolsResponses, type EnableAndBindToolFailure, type EnableAndBindToolsBody, type EnableAndBindToolsResponse, type EnableCustomToolProviderData, type EnableCustomToolProviderResponse, type EnableCustomToolProviderResponses, type EnabledSkillsSpec, type EnableProxiedMcpServerData, type EnableProxiedMcpServerError, type EnableProxiedMcpServerErrors, type EnableProxiedMcpServerResponse, type EnableProxiedMcpServerResponses, type EnableToolData, type EnableToolError, type EnableToolErrors, type EnableToolInstanceParamsInner, type EnableToolResponse, type EnableToolResponses, type EncryptCredentialConfigurationParamsInner, type EncryptedTrustedRuntimePayload, type EncryptPersonalUserCredentialConfigurationData, type EncryptPersonalUserCredentialConfigurationResponses, type EncryptResourceServerConfigurationData, type EncryptResourceServerConfigurationResponses, type EncryptUserCredentialConfigurationData, type EncryptUserCredentialConfigurationResponses, EndpointType, type Error, type ExchangeOAuthCodeBody, type ExchangeOauthCodeData, type ExchangeOauthCodeErrors, type ExchangeOauthCodeResponse, type ExchangeOauthCodeResponses, type ExchangeOAuthCodeResult, type ExpectedRevisionBody, type ExpireTemporaryAccountsData, type ExpireTemporaryAccountsError, type ExpireTemporaryAccountsErrors, type ExpireTemporaryAccountsResponse, type ExpireTemporaryAccountsResponse2, type ExpireTemporaryAccountsResponses, type ExportMemoryBankTemplateData, type ExportMemoryBankTemplateResponse, type ExportMemoryBankTemplateResponses, type ExportPersonalMemoryBankTemplateData, type ExportPersonalMemoryBankTemplateResponse, type ExportPersonalMemoryBankTemplateResponses, type FileUiPart, type FinalizeHostedOpenbotReleaseData, type FinalizeHostedOpenbotReleaseError, type FinalizeHostedOpenbotReleaseErrors, type FinalizeHostedOpenbotReleaseResponse, type FinalizeHostedOpenbotReleaseResponses, type GenerateLocalRuntimeTunnelApiKeyData, type GenerateLocalRuntimeTunnelApiKeyError, type GenerateLocalRuntimeTunnelApiKeyErrors, type GenerateLocalRuntimeTunnelApiKeyResponse, type GenerateLocalRuntimeTunnelApiKeyResponse2, type GenerateLocalRuntimeTunnelApiKeyResponses, type GenerateTemporaryAccountClaimUrlData, type GenerateTemporaryAccountClaimUrlError, type GenerateTemporaryAccountClaimUrlErrors, type GenerateTemporaryAccountClaimUrlResponse, type GenerateTemporaryAccountClaimUrlResponse2, type GenerateTemporaryAccountClaimUrlResponses, type GetAttachmentDownloadUrlData, type GetAttachmentDownloadUrlError, type GetAttachmentDownloadUrlErrors, type GetAttachmentDownloadUrlResponse, type GetAttachmentDownloadUrlResponse2, type GetAttachmentDownloadUrlResponses, type GetBalancesResponse, type GetCommonProviderInstallationData, type GetCommonProviderInstallationResponse, type GetCommonProviderInstallationResponses, type GetCredentialSetupItemData, type GetCredentialSetupItemResponse, type GetCredentialSetupItemResponses, type GetCryptoDepositInformationResponse, type GetCustomToolProviderData, type GetCustomToolProviderResponse, type GetCustomToolProviderResponses, type GetFiatDepositInformationResponse, type GetHostedOpenbotBootstrapBundleData, type GetHostedOpenbotBootstrapBundleError, type GetHostedOpenbotBootstrapBundleErrors, type GetHostedOpenbotBootstrapBundleResponse, type GetHostedOpenbotBootstrapBundleResponses, type GetHostedOpenbotInstanceData, type GetHostedOpenbotInstanceError, type GetHostedOpenbotInstanceErrors, type GetHostedOpenbotInstanceResponse, type GetHostedOpenbotInstanceResponses, type GetHostedOpenbotReleaseData, type GetHostedOpenbotReleaseError, type GetHostedOpenbotReleaseErrors, type GetHostedOpenbotReleaseResponse, type GetHostedOpenbotReleaseResponses, type GetHumanApprovalActionData, type GetHumanApprovalActionError, type GetHumanApprovalActionErrors, type GetHumanApprovalActionResponse, type GetHumanApprovalActionResponses, type GetIdentityData, type GetIdentityError, type GetIdentityErrors, type GetIdentityResponse, type GetIdentityResponses, type GetIdentityVerificationData, type GetIdentityVerificationError, type GetIdentityVerificationErrors, type GetIdentityVerificationResponse, type GetIdentityVerificationResponses, type GetLocalRuntimeTunnelApiKeyData, type GetLocalRuntimeTunnelApiKeyError, type GetLocalRuntimeTunnelApiKeyErrors, type GetLocalRuntimeTunnelApiKeyResponse, type GetLocalRuntimeTunnelApiKeyResponses, type GetLocalRuntimeTunnelConnectorData, type GetLocalRuntimeTunnelConnectorError, type GetLocalRuntimeTunnelConnectorErrors, type GetLocalRuntimeTunnelConnectorResponse, type GetLocalRuntimeTunnelConnectorResponses, type GetManagedUserCredentialSecretData, type GetManagedUserCredentialSecretResponse, type GetManagedUserCredentialSecretResponses, type GetMcpServerInstanceData, type GetMcpServerInstanceError, type GetMcpServerInstanceErrors, type GetMcpServerInstanceResponse, type GetMcpServerInstanceResponses, type GetMemoryBankConfigData, type GetMemoryBankConfigResponse, type GetMemoryBankConfigResponses, type GetMemoryBankData, type GetMemoryBankDocumentData, type GetMemoryBankDocumentResponse, type GetMemoryBankDocumentResponses, type GetMemoryBankResponse, type GetMemoryBankResponses, type GetMessageData, type GetMessageDeliveriesData, type GetMessageDeliveriesError, type GetMessageDeliveriesErrors, type GetMessageDeliveriesResponse, type GetMessageDeliveriesResponses, type GetMessageError, type GetMessageErrors, type GetMessageResponse, type GetMessageResponses, type GetOpenbotPluginsCatalogData, type GetOpenbotPluginsCatalogResponse, type GetOpenbotPluginsCatalogResponses, type GetOrganizationData, type GetOrganizationError, type GetOrganizationErrors, type GetOrganizationResponse, type GetOrganizationResponses, type GetOrgOidcProviderData, type GetOrgOidcProviderError, type GetOrgOidcProviderErrors, type GetOrgOidcProviderResponse, type GetOrgOidcProviderResponses, type GetPersonalMcpServerInstanceData, type GetPersonalMcpServerInstanceResponse, type GetPersonalMcpServerInstanceResponses, type GetPersonalMemoryBankConfigData, type GetPersonalMemoryBankConfigResponse, type GetPersonalMemoryBankConfigResponses, type GetPersonalMemoryBankData, type GetPersonalMemoryBankDocumentData, type GetPersonalMemoryBankDocumentResponse, type GetPersonalMemoryBankDocumentResponses, type GetPersonalMemoryBankResponse, type GetPersonalMemoryBankResponses, type GetPersonalSkillData, type GetPersonalSkillRegistryData, type GetPersonalSkillRegistryResponse, type GetPersonalSkillRegistryResponses, type GetPersonalSkillResponse, type GetPersonalSkillResponses, type GetPersonalToolGroupInstanceData, type GetPersonalToolGroupInstanceResponse, type GetPersonalToolGroupInstanceResponses, type GetPersonalWikiData, type GetPersonalWikiPageData, type GetPersonalWikiPageResponse, type GetPersonalWikiPageResponses, type GetPersonalWikiResponse, type GetPersonalWikiResponses, type GetProviderProvisioningHumanActionData, type GetProviderProvisioningHumanActionResponse, type GetProviderProvisioningHumanActionResponses, type GetProxiedMcpServerData, type GetProxiedMcpServerError, type GetProxiedMcpServerErrors, type GetProxiedMcpServerResponse, type GetProxiedMcpServerResponses, type GetProxiedSkillProviderData, type GetProxiedSkillProviderError, type GetProxiedSkillProviderErrors, type GetProxiedSkillProviderResponse, type GetProxiedSkillProviderResponses, type GetResourceServerCredentialData, type GetResourceServerCredentialResponse, type GetResourceServerCredentialResponses, type GetRuntimeConfigData, type GetRuntimeConfigResponse, type GetRuntimeConfigResponses, type GetSelfAvatarData, type GetSelfAvatarError, type GetSelfAvatarErrors, type GetSelfAvatarResponse, type GetSelfAvatarResponses, type GetSelfProfileData, type GetSelfProfileError, type GetSelfProfileErrors, type GetSelfProfileResponse, type GetSelfProfileResponses, type GetSessionEventHistoryData, type GetSessionEventHistoryError, type GetSessionEventHistoryErrors, type GetSessionEventHistoryResponse, type GetSessionEventHistoryResponses, type GetSkillData, type GetSkillError, type GetSkillErrors, type GetSkillPackageData, type GetSkillPackageError, type GetSkillPackageErrors, type GetSkillPackageResponse, type GetSkillPackageResponses, type GetSkillRegistryData, type GetSkillRegistryError, type GetSkillRegistryErrors, type GetSkillRegistryResponse, type GetSkillRegistryResponses, type GetSkillRegistrySkillByTitleData, type GetSkillRegistrySkillByTitleError, type GetSkillRegistrySkillByTitleErrors, type GetSkillRegistrySkillByTitleResponse, type GetSkillRegistrySkillByTitleResponses, type GetSkillRegistrySkillData, type GetSkillRegistrySkillDescriptionData, type GetSkillRegistrySkillDescriptionError, type GetSkillRegistrySkillDescriptionErrors, type GetSkillRegistrySkillDescriptionResponse, type GetSkillRegistrySkillDescriptionResponses, type GetSkillRegistrySkillError, type GetSkillRegistrySkillErrors, type GetSkillRegistrySkillResponse, type GetSkillRegistrySkillResponses, type GetSkillResponse, type GetSkillResponses, type GetTeamData, type GetTeamError, type GetTeamErrors, type GetTeamGroupData, type GetTeamGroupError, type GetTeamGroupErrors, type GetTeamGroupResponse, type GetTeamGroupResponses, type GetTeamResponse, type GetTeamResponses, type GetToolGroupInstanceData, type GetToolGroupInstanceError, type GetToolGroupInstanceErrors, type GetToolGroupInstanceResponse, type GetToolGroupInstanceResponses, type GetToolsOpenapiSpecData, type GetToolsOpenapiSpecError, type GetToolsOpenapiSpecErrors, type GetToolsOpenapiSpecResponse, type GetToolsOpenapiSpecResponses, type GetTrustedRuntimeData, type GetTrustedRuntimeError, type GetTrustedRuntimeErrors, type GetTrustedRuntimeResponse, type GetTrustedRuntimeResponses, type GetUserCredentialData, type GetUserCredentialResponse, type GetUserCredentialResponses, type GetWalletCustomerKycResponse, type GetWikiData, type GetWikiPageBacklinksData, type GetWikiPageBacklinksResponse, type GetWikiPageBacklinksResponses, type GetWikiPageData, type GetWikiPageNeighborhoodData, type GetWikiPageNeighborhoodResponse, type GetWikiPageNeighborhoodResponses, type GetWikiPageRelationshipData, type GetWikiPageRelationshipResponse, type GetWikiPageRelationshipResponses, type GetWikiPageResponse, type GetWikiPageResponses, type GetWikiPageTypeData, type GetWikiPageTypeResponse, type GetWikiPageTypeResponses, type GetWikiPageTypeVersionData, type GetWikiPageTypeVersionResponse, type GetWikiPageTypeVersionResponses, type GetWikiRelationshipTypeData, type GetWikiRelationshipTypeResponse, type GetWikiRelationshipTypeResponses, type GetWikiRelationshipTypeVersionData, type GetWikiRelationshipTypeVersionResponse, type GetWikiRelationshipTypeVersionResponses, type GetWikiResponse, type GetWikiResponses, type Goal, type GoalPaginatedResponse, GoalStatus, type GrepPersonalWikiPagesData, type GrepPersonalWikiPagesResponse, type GrepPersonalWikiPagesResponses, type GrepWikiPagesBody, type GrepWikiPagesData, type GrepWikiPagesResponse, type GrepWikiPagesResponse2, type GrepWikiPagesResponses, type Group, type GroupMembership, type GroupMemberWithUser, type GroupMemberWithUserPaginatedResponse, type HashedApiKey, type HealthCheckData, type HealthCheckError, type HealthCheckErrors, type HealthCheckResponse, type HealthCheckResponse2, type HealthCheckResponses, type HostedOpenBotBootstrapBundle, type HostedOpenBotDeployment, HostedOpenBotExeStep, type HostedOpenBotGitToken, type HostedOpenBotInstance, HostedOpenBotInstanceStatus, type HostedOpenBotRelease, type HostedOpenBotReleaseFile, HostedOpenBotReleaseService, HostedOpenBotReleaseStatus, HostedOpenBotTarget, type Human, type HumanApprovalAction, type HumanApprovalActionPayload, type HumanApprovalActionResponse, type HumanApprovalCompletion, HumanApprovalDecision, type HumanApprovalNote, type HydrateConvertedMessagesRequest, type HydrateConvertedMessagesResponse, type Identity, type IdentityClaimRequest, type IdentityIdentifier, type IdentityLinkDelivery, type IdentityLinkPreview, type IdentityLinkRoute, type IdentityTeam, type IdentityTeamMembership, type IdentityTeamMembershipPaginatedResponse, type IdentityVerification, type IdentityVerificationChallenge, IdentityVerificationMode, type ImportMemoryBankTemplateBody, type ImportMemoryBankTemplateData, type ImportMemoryBankTemplateResponse, type ImportMemoryBankTemplateResponse2, type ImportMemoryBankTemplateResponses, type ImportPersonalMemoryBankTemplateData, type ImportPersonalMemoryBankTemplateResponse, type ImportPersonalMemoryBankTemplateResponses, type ImportRunSummary, type ImportStateRequest, type ImportStateResponse, type Inbox, type InboxInstance, InboxInstanceTypingStatus, type InboxPaginatedResponse, InboxStatus, InboxType, type InboxWithLinkedInboxes, type InboxWithLinkedInboxesPaginatedResponse, type IngestSignalResponse, type InitiateIdentityVerificationData, type InitiateIdentityVerificationError, type InitiateIdentityVerificationErrors, type InitiateIdentityVerificationRequestInner, type InitiateIdentityVerificationResponse, type InitiateIdentityVerificationResponses, type InspectWikiAssetReferencesData, type InspectWikiAssetReferencesResponse, type InspectWikiAssetReferencesResponses, type InterruptChatKitSessionResponse, type InviteTeamUsersData, type InviteTeamUsersError, type InviteTeamUsersErrors, type InviteTeamUsersResponse, type InviteTeamUsersResponses, type InviteUserFailure, type InviteUserInput, type InviteUsersBody, type InviteUsersResponse, type InvokeCustomToolData, type InvokeCustomToolRequestInner, type InvokeCustomToolResponse, type InvokeCustomToolResponses, type InvokeError, type InvokeResult, type InvokeSessionProviderToolBody, type InvokeSessionProviderToolResponse, type InvokeToolData, type InvokeToolError, type InvokeToolErrors, type InvokeToolInstanceParamsInner, type InvokeToolResponse, type InvokeToolResponses, type IssueChatKitRealtimeSocketTicketRequest, type IssueHostedOpenbotGitTokenData, type IssueHostedOpenbotGitTokenError, type IssueHostedOpenbotGitTokenErrors, type IssueHostedOpenbotGitTokenResponse, type IssueHostedOpenbotGitTokenResponses, type IssueOpenbotChatkitRealtimeTicketData, type IssueOpenbotChatkitRealtimeTicketError, type IssueOpenbotChatkitRealtimeTicketErrors, type IssueOpenbotChatkitRealtimeTicketResponse, type IssueOpenbotChatkitRealtimeTicketResponses, type IssueProxyRealtimeTicketData, type IssueProxyRealtimeTicketResponse, type IssueProxyRealtimeTicketResponses, type JsonEqualsPredicate, type JsonSchema, type Jwk, type JwksResponse, type LinkedIdentity, type LinkTeamIdentityData, type LinkTeamIdentityError, type LinkTeamIdentityErrors, type LinkTeamIdentityRequestInner, type LinkTeamIdentityResponse, type LinkTeamIdentityResponses, type ListApiKeysResponse, type ListAvailableToolGroupsData, type ListAvailableToolGroupsError, type ListAvailableToolGroupsErrors, type ListAvailableToolGroupsResponse, type ListAvailableToolGroupsResponses, type ListCommonProviderInstallationOwnershipGrantsData, type ListCommonProviderInstallationOwnershipGrantsResponse, type ListCommonProviderInstallationOwnershipGrantsResponses, type ListCommonProviderInstallationsData, type ListCommonProviderInstallationsResponse, type ListCommonProviderInstallationsResponses, type ListCommonProviderInstallationVisibilityGrantsData, type ListCommonProviderInstallationVisibilityGrantsResponse, type ListCommonProviderInstallationVisibilityGrantsResponses, type ListCredentialSetupItemsData, type ListCredentialSetupItemsResponse, type ListCredentialSetupItemsResponses, type ListCustomToolProvidersData, type ListCustomToolProvidersResponse, type ListCustomToolProvidersResponses, type ListIdentitiesData, type ListIdentitiesError, type ListIdentitiesErrors, type ListIdentitiesResponse, type ListIdentitiesResponses, type ListIdentityTeamsData, type ListIdentityTeamsResponse, type ListIdentityTeamsResponses, type ListInboxAgentsData, type ListInboxAgentsError, type ListInboxAgentsErrors, type ListInboxAgentsResponse, type ListInboxAgentsResponses, type ListInboxesData, type ListInboxesError, type ListInboxesErrors, type ListInboxesResponse, type ListInboxesResponses, type ListManagedUserCredentialsData, type ListManagedUserCredentialsResponse, type ListManagedUserCredentialsResponses, type ListMcpProviderCatalogData, type ListMcpProviderCatalogError, type ListMcpProviderCatalogErrors, type ListMcpProviderCatalogResponse, type ListMcpProviderCatalogResponse2, type ListMcpProviderCatalogResponses, type ListMcpResourceOwnershipGrantsData, type ListMcpResourceOwnershipGrantsResponse, type ListMcpResourceOwnershipGrantsResponses, type ListMcpResourceVisibilityGrantsData, type ListMcpResourceVisibilityGrantsResponse, type ListMcpResourceVisibilityGrantsResponses, type ListMcpServerInstancesData, type ListMcpServerInstancesError, type ListMcpServerInstancesErrors, type ListMcpServerInstancesResponse, type ListMcpServerInstancesResponses, type ListMemoryBankDocumentsData, type ListMemoryBankDocumentsResponse, type ListMemoryBankDocumentsResponses, type ListMemoryBankOwnershipGrantsData, type ListMemoryBankOwnershipGrantsResponse, type ListMemoryBankOwnershipGrantsResponses, type ListMemoryBanksData, type ListMemoryBankSourceBindingsData, type ListMemoryBankSourceBindingsResponse, type ListMemoryBankSourceBindingsResponses, type ListMemoryBanksResponse, type ListMemoryBanksResponses, type ListMemoryBankVisibilityGrantsData, type ListMemoryBankVisibilityGrantsResponse, type ListMemoryBankVisibilityGrantsResponses, type ListMemorySourceBindingsData, type ListMemorySourceBindingsResponse, type ListMemorySourceBindingsResponses, type ListMessagesData, type ListMessagesError, type ListMessagesErrors, type ListMessagesResponse, type ListMessagesResponses, type ListOpenbotDeploymentsData, type ListOpenbotDeploymentsError, type ListOpenbotDeploymentsErrors, type ListOpenbotDeploymentsResponse, type ListOpenBotDeploymentsResponse, type ListOpenbotDeploymentsResponses, type ListOrganizationMembersData, type ListOrganizationMembersError, type ListOrganizationMembersErrors, type ListOrganizationMembersResponse, type ListOrganizationMembersResponses, type ListOrganizationsData, type ListOrganizationsError, type ListOrganizationsErrors, type ListOrganizationsResponses, type ListOrganizationTeamGroupsData, type ListOrganizationTeamGroupsResponse, type ListOrganizationTeamGroupsResponses, type ListOrgOidcProvidersData, type ListOrgOidcProvidersError, type ListOrgOidcProvidersErrors, type ListOrgOidcProvidersResponse, type ListOrgOidcProvidersResponses, type ListPersonalMcpServerInstancesData, type ListPersonalMcpServerInstancesError, type ListPersonalMcpServerInstancesErrors, type ListPersonalMcpServerInstancesResponse, type ListPersonalMcpServerInstancesResponses, type ListPersonalMemoryBankDocumentsData, type ListPersonalMemoryBankDocumentsResponse, type ListPersonalMemoryBankDocumentsResponses, type ListPersonalMemoryBankOwnershipGrantsData, type ListPersonalMemoryBankOwnershipGrantsResponse, type ListPersonalMemoryBankOwnershipGrantsResponses, type ListPersonalMemoryBanksData, type ListPersonalMemoryBankSourceBindingsData, type ListPersonalMemoryBankSourceBindingsResponse, type ListPersonalMemoryBankSourceBindingsResponses, type ListPersonalMemoryBanksResponse, type ListPersonalMemoryBanksResponses, type ListPersonalMemoryBankVisibilityGrantsData, type ListPersonalMemoryBankVisibilityGrantsResponse, type ListPersonalMemoryBankVisibilityGrantsResponses, type ListPersonalMemorySourceBindingsData, type ListPersonalMemorySourceBindingsResponse, type ListPersonalMemorySourceBindingsResponses, type ListPersonalRegistryOwnershipGrantsData, type ListPersonalRegistryOwnershipGrantsResponse, type ListPersonalRegistryOwnershipGrantsResponses, type ListPersonalRegistryVisibilityGrantsData, type ListPersonalRegistryVisibilityGrantsResponse, type ListPersonalRegistryVisibilityGrantsResponses, type ListPersonalRscOwnershipGrantsData, type ListPersonalRscOwnershipGrantsResponse, type ListPersonalRscOwnershipGrantsResponses, type ListPersonalRscVisibilityGrantsData, type ListPersonalRscVisibilityGrantsResponse, type ListPersonalRscVisibilityGrantsResponses, type ListPersonalSkillOwnershipGrantsData, type ListPersonalSkillOwnershipGrantsResponse, type ListPersonalSkillOwnershipGrantsResponses, type ListPersonalSkillRegistriesData, type ListPersonalSkillRegistriesResponse, type ListPersonalSkillRegistriesResponses, type ListPersonalSkillsData, type ListPersonalSkillsResponse, type ListPersonalSkillsResponses, type ListPersonalSkillVisibilityGrantsData, type ListPersonalSkillVisibilityGrantsResponse, type ListPersonalSkillVisibilityGrantsResponses, type ListPersonalToolGroupInstancesData, type ListPersonalToolGroupInstancesError, type ListPersonalToolGroupInstancesErrors, type ListPersonalToolGroupInstancesResponse, type ListPersonalToolGroupInstancesResponses, type ListPersonalUcOwnershipGrantsData, type ListPersonalUcOwnershipGrantsResponse, type ListPersonalUcOwnershipGrantsResponses, type ListPersonalUcVisibilityGrantsData, type ListPersonalUcVisibilityGrantsResponse, type ListPersonalUcVisibilityGrantsResponses, type ListPersonalWikiOwnershipGrantsData, type ListPersonalWikiOwnershipGrantsResponse, type ListPersonalWikiOwnershipGrantsResponses, type ListPersonalWikiPagesData, type ListPersonalWikiPagesResponse, type ListPersonalWikiPagesResponses, type ListPersonalWikisData, type ListPersonalWikisResponse, type ListPersonalWikisResponses, type ListPersonalWikiVisibilityGrantsData, type ListPersonalWikiVisibilityGrantsResponse, type ListPersonalWikiVisibilityGrantsResponses, type ListProviderProvisionerCatalogData, type ListProviderProvisionerCatalogResponse, type ListProviderProvisionerCatalogResponses, type ListProviderSetupCatalogResponse, type ListProxiedMcpServersData, type ListProxiedMcpServersError, type ListProxiedMcpServersErrors, type ListProxiedMcpServersResponse, type ListProxiedMcpServersResponses, type ListProxiedSkillProvidersData, type ListProxiedSkillProvidersResponse, type ListProxiedSkillProvidersResponse2, type ListProxiedSkillProvidersResponses, type ListProxyTokensData, type ListProxyTokensError, type ListProxyTokensErrors, type ListProxyTokensResponse, type ListProxyTokensResponses, type ListPublicAvailableToolGroupsData, type ListPublicAvailableToolGroupsError, type ListPublicAvailableToolGroupsErrors, type ListPublicAvailableToolGroupsResponse, type ListPublicAvailableToolGroupsResponses, type ListResourceServerCredentialsData, type ListResourceServerCredentialsResponse, type ListResourceServerCredentialsResponses, type ListReverseProxyProvidersResponse, type ListRscOwnershipGrantsData, type ListRscOwnershipGrantsResponse, type ListRscOwnershipGrantsResponses, type ListRscVisibilityGrantsData, type ListRscVisibilityGrantsResponse, type ListRscVisibilityGrantsResponses, type ListSessionInboxInstancesData, type ListSessionInboxInstancesError, type ListSessionInboxInstancesErrors, type ListSessionInboxInstancesResponse, type ListSessionInboxInstancesResponses, type ListSessionResourceGrantsData, type ListSessionResourceGrantsError, type ListSessionResourceGrantsErrors, type ListSessionResourceGrantsResponse, type ListSessionResourceGrantsResponses, type ListSessionsData, type ListSessionsError, type ListSessionsErrors, type ListSessionsResponse, type ListSessionsResponses, type ListSessionUserMembersData, type ListSessionUserMembersError, type ListSessionUserMembersErrors, type ListSessionUserMembersResponse, type ListSessionUserMembersResponses, type ListSignalProviderGrantsData, type ListSignalProviderGrantsResponse, type ListSignalProviderGrantsResponses, type ListSkillOwnershipGrantsData, type ListSkillOwnershipGrantsResponse, type ListSkillOwnershipGrantsResponses, type ListSkillRegistriesData, type ListSkillRegistriesError, type ListSkillRegistriesErrors, type ListSkillRegistriesResponse, type ListSkillRegistriesResponses, type ListSkillRegistryOwnershipGrantsData, type ListSkillRegistryOwnershipGrantsResponse, type ListSkillRegistryOwnershipGrantsResponses, type ListSkillRegistrySkillSummariesData, type ListSkillRegistrySkillSummariesError, type ListSkillRegistrySkillSummariesErrors, type ListSkillRegistrySkillSummariesResponse, type ListSkillRegistrySkillSummariesResponses, type ListSkillRegistryVisibilityGrantsData, type ListSkillRegistryVisibilityGrantsResponse, type ListSkillRegistryVisibilityGrantsResponses, type ListSkillsData, type ListSkillsError, type ListSkillsErrors, type ListSkillsResponse, type ListSkillsResponses, type ListSkillVisibilityGrantsData, type ListSkillVisibilityGrantsResponse, type ListSkillVisibilityGrantsResponses, type ListTeamGroupMembersData, type ListTeamGroupMembersResponse, type ListTeamGroupMembersResponses, type ListTeamGroupsData, type ListTeamGroupsResponse, type ListTeamGroupsResponses, type ListTeamInvitationsData, type ListTeamInvitationsResponse, type ListTeamInvitationsResponses, type ListTeamMembersData, type ListTeamMembersError, type ListTeamMembersErrors, type ListTeamMembersResponse, type ListTeamMembersResponses, type ListTeamsData, type ListTeamsError, type ListTeamsErrors, type ListTeamsResponse, type ListTeamsResponses, type ListToolDeploymentsByAliasData, type ListToolDeploymentsByAliasError, type ListToolDeploymentsByAliasErrors, type ListToolDeploymentsByAliasResponse, type ListToolDeploymentsByAliasResponses, type ListToolGroupInstancesData, type ListToolGroupInstancesError, type ListToolGroupInstancesErrors, type ListToolGroupInstancesGroupedByToolData, type ListToolGroupInstancesGroupedByToolError, type ListToolGroupInstancesGroupedByToolErrors, type ListToolGroupInstancesGroupedByToolResponse, type ListToolGroupInstancesGroupedByToolResponses, type ListToolGroupInstancesResponse, type ListToolGroupInstancesResponses, type ListToolsData, type ListToolsError, type ListToolsErrors, type ListToolsResponse, type ListToolsResponses, type ListTrustedRuntimesData, type ListTrustedRuntimesError, type ListTrustedRuntimesErrors, type ListTrustedRuntimesResponse, type ListTrustedRuntimesResponses, type ListUcOwnershipGrantsData, type ListUcOwnershipGrantsResponse, type ListUcOwnershipGrantsResponses, type ListUcVisibilityGrantsData, type ListUcVisibilityGrantsResponse, type ListUcVisibilityGrantsResponses, type ListUserCredentialsData, type ListUserCredentialsResponse, type ListUserCredentialsResponses, type ListVerifiedIdentityLinksData, type ListVerifiedIdentityLinksError, type ListVerifiedIdentityLinksErrors, type ListVerifiedIdentityLinksResponse, type ListVerifiedIdentityLinksResponse2, type ListVerifiedIdentityLinksResponses, type ListVisibleMemoryBanksData, type ListVisibleMemoryBanksResponse, type ListVisibleMemoryBanksResponses, type ListWikiAssetsData, type ListWikiAssetsResponse, type ListWikiAssetsResponses, type ListWikiOntologyInstallationsData, type ListWikiOntologyInstallationsResponse, type ListWikiOntologyInstallationsResponses, type ListWikiOntologyTemplatesData, type ListWikiOntologyTemplatesResponse, type ListWikiOntologyTemplatesResponses, type ListWikiOwnershipGrantsData, type ListWikiOwnershipGrantsResponse, type ListWikiOwnershipGrantsResponses, type ListWikiPageAssetsData, type ListWikiPageAssetsResponse, type ListWikiPageAssetsResponses, type ListWikiPageRelationshipsData, type ListWikiPageRelationshipsResponse, type ListWikiPageRelationshipsResponses, type ListWikiPageRevisionsData, type ListWikiPageRevisionsResponse, type ListWikiPageRevisionsResponses, type ListWikiPagesData, type ListWikiPagesResponse, type ListWikiPagesResponses, type ListWikiPageTypesData, type ListWikiPageTypesResponse, type ListWikiPageTypesResponses, type ListWikiPageTypeVersionsData, type ListWikiPageTypeVersionsResponse, type ListWikiPageTypeVersionsResponses, type ListWikiRelationshipTypesData, type ListWikiRelationshipTypesResponse, type ListWikiRelationshipTypesResponses, type ListWikiRelationshipTypeVersionsData, type ListWikiRelationshipTypeVersionsResponse, type ListWikiRelationshipTypeVersionsResponses, type ListWikisData, type ListWikisResponse, type ListWikisResponses, type ListWikiVisibilityGrantsData, type ListWikiVisibilityGrantsResponse, type ListWikiVisibilityGrantsResponses, type LocalRuntimeTunnelApiKey, type LocalRuntimeTunnelConnector, type LoginProviderResolution, type MakeMppPaymentRequest, type MakeX402PaymentRequest, type ManagedSkillSelection, type ManagedUserCredentialSecretResponse, type ManagedUserCredentialSummary, type ManagedUserCredentialSummaryPaginatedResponse, type ManagedUserCredentialSummaryValue, type McpPlaygroundAiSdkChatMessage, type McpPlaygroundAiSdkChatMessagePart, type McpPlaygroundAiSdkChatRequest, type McpProtocolDeleteData, type McpProtocolDeleteError, type McpProtocolDeleteErrors, type McpProtocolDeleteResponses, type McpProtocolGetData, type McpProtocolGetError, type McpProtocolGetErrors, type McpProtocolGetResponses, type McpProtocolPostData, type McpProtocolPostError, type McpProtocolPostErrors, type McpProtocolPostResponses, McpProviderCatalogConnectionMethod, type McpProviderCatalogEntry, type McpProviderCatalogTool, type McpServerInstanceSerializedWithFunctions, type McpServerInstanceSerializedWithFunctionsPaginatedResponse, type McpServerInstanceToolSerialized, type McpServerPlaygroundChatData, type McpServerPlaygroundChatError, type McpServerPlaygroundChatErrors, type McpServerPlaygroundChatResponses, type McpServerSpec, type MemoryActorContext, type MemoryBank, type MemoryBankConfig, type MemoryBankDocumentList, type MemoryBankHealth, type MemoryBankPaginatedResponse, type MemoryBankSpec, MemoryBankStatus, type MemoryBankTemplate, type MemoryDocument, type MemoryDocumentAuthorship, MemoryDocumentOrigin, type MemoryDocumentProvenance, type MemoryDocumentRelations, type MemoryOperationResponse, MemoryProvider, type MemoryProviderDocumentState, type MemorySourceBinding, MemorySourceKind, type MemorySourceProvenance, type MemorySpec, type MemorySynthesisMutationBinding, MemorySynthesisOutcome, MemoryType, type Message, type MessageActorContext, type MessageDeliveryReceipt, MessageFormat, type MessageFormatConfig, type MessagePaginatedResponse, MessageRole, type Metadata, type MigrateWikiPageBody, type MigrateWikiPageTypeData, type MigrateWikiPageTypeErrors, type MigrateWikiPageTypeResponse, type MigrateWikiPageTypeResponses, type MoveWikiPageBody, type MoveWikiPageData, type MoveWikiPageErrors, type MoveWikiPageResponse, type MoveWikiPageResponses, type ObserveSessionData, type ObserveSessionError, type ObserveSessionErrors, type ObserveSessionResponses, type OnboardOrganizationData, type OnboardOrganizationError, type OnboardOrganizationErrors, type OnboardOrganizationRequest, type OnboardOrganizationResponse, type OnboardOrganizationResponse2, type OnboardOrganizationResponses, type OntologyPageTypeDefinition, type OntologyRelationshipTypeDefinition, type OpenBotAgentSkillInput, type OpenBotDeployment, type OpenBotPluginsCatalogResponse, type Organization, type OrganizationAiCreditContext, type OrganizationMemberWithUser, type OrganizationMemberWithUserPaginatedResponse, type OrgOidcProvider, type OrgOidcProviderPaginatedResponse, OrgOidcProviderStatus, type OrgProxyToken, type OrgProxyTokenPaginatedResponse, type PageRelationshipView, type PageTypeMigrationIssue, type PageTypeMigrationPreview, type PageTypeValidationResult, PartState, type PaymentResponse, type PaymentSessionSnapshot, PayOnboardingStep, type PayPaymentRequest, type PayWalletSummaryError, type PayWalletSummaryResponse, type PersonalMcpProtocolDeleteData, type PersonalMcpProtocolDeleteResponses, type PersonalMcpProtocolGetData, type PersonalMcpProtocolGetResponses, type PersonalMcpProtocolPostData, type PersonalMcpProtocolPostResponses, type PersonalMcpServerInstanceSerialized, type PersonalSkill, type PersonalSkillRegistry, type PersonalToolGroupInstanceSerialized, type PlanStateRequest, type PlatformChannelAddress, type PreviewIdentityLinkData, type PreviewIdentityLinkResponse, type PreviewIdentityLinkResponses, type PreviewWikiPageTypeMigrationData, type PreviewWikiPageTypeMigrationErrors, type PreviewWikiPageTypeMigrationResponse, type PreviewWikiPageTypeMigrationResponses, type ProductBillingContext, ProductSubscriptionStatus, type ProposalCredentialRequirement, type ProposalPermissionChange, type ProviderAppProvisioningResponse, type ProviderAuthAccountNameDisplay, type ProviderAuthAdapterApiKey, type ProviderAuthAdapterConfig, type ProviderAuthAdapterCustom, type ProviderAuthAdapterCustomJsonSchema, type ProviderAuthAdapterNoAuth, type ProviderAuthAdapterOauthApp, type ProviderAuthAdapterOauthJwtBearer, type ProviderAuthAdapterServerTokenExchange, type ProviderAuthAdapterTildeManagedOauth, type ProviderAuthFieldDisplay, ProviderDeliveryStatus, type ProviderProvisionerConfigField, type ProviderProvisionerCredentialRequirement, type ProviderProvisionerForm, type ProviderProvisionerInstructions, ProviderProvisionerSetupKind, type ProviderProvisioningCallbackData, type ProviderProvisioningCallbackResponse, type ProviderProvisioningCallbackResponses, type ProviderProvisioningHumanAction, type ProviderProvisioningInput, type ProviderProvisioningNextAction, type ProviderSetupAuthMethod, type ProviderSetupCatalogData, type ProviderSetupCatalogResponse, type ProviderSetupCatalogResponses, type ProviderSetupDescriptor, type ProviderSetupField, type ProviderSetupNextAction, type ProviderSetupOption, type ProviderSetupResponse, type ProviderSetupResumeData, type ProviderSetupResumeResponse, type ProviderSetupResumeResponses, type ProviderSetupStartData, type ProviderSetupStartResponse, type ProviderSetupStartResponses, type ProvisionAgentRequest, type ProvisionedProviderApp, type ProvisionedResource, ProvisionerCredentialKind, type ProvisionIdentityTeamData, type ProvisionIdentityTeamRequest, type ProvisionIdentityTeamResponse, type ProvisionIdentityTeamResponses, type ProvisionPayBrowserResponse, type ProvisionTildePayRequest, type ProvisionTildePayResponse, ProxiedMcpApiKeyLocation, ProxiedMcpAuthMode, type ProxiedMcpServerDetails, type ProxiedMcpServerListItem, type ProxiedMcpServerListItemPaginatedResponse, type ProxiedMcpServerSerialized, type ProxiedSkill, type ProxiedSkillProvider, type ProxyCredentialTemplate, type PutRoutineBody, type ReasoningUiPart, type RecallChatKitAutomaticMemoryBody, type RecallMemoryBody, type RecallMemoryData, type RecallMemoryResponse, type RecallMemoryResponses, type RecallPersonalMemoryData, type RecallPersonalMemoryResponse, type RecallPersonalMemoryResponses, type RecallSynthesisSessionMemoryData, type RecallSynthesisSessionMemoryResponse, type RecallSynthesisSessionMemoryResponses, type ReconcileOpenBotAgentBundleBody, type ReconcileOpenbotAgentBundleData, type ReconcileOpenbotAgentBundleResponse, type ReconcileOpenBotAgentBundleResponse, type ReconcileOpenbotAgentBundleResponses, type RecordAgentRunEffectInner, type RedirectTemporaryAccountClaimPageData, type ReflectMemoryBody, type ReflectMemoryData, type ReflectMemoryResponse, type ReflectMemoryResponses, type ReflectPersonalMemoryData, type ReflectPersonalMemoryResponse, type ReflectPersonalMemoryResponses, type RefreshCustomToolProviderData, type RefreshCustomToolProviderResponse, type RefreshCustomToolProviderResponse2, type RefreshCustomToolProviderResponses, type RefreshProxiedMcpServerData, type RefreshProxiedMcpServerError, type RefreshProxiedMcpServerErrors, type RefreshProxiedMcpServerResponse, type RefreshProxiedMcpServerResponses, type RefreshTokenRequest, type RefreshWalletTransactionHistoryResponse, type RegisterAgentTool, type RegisterAgentToolsRequestInner, type RegisterChatKitChatProviderRequestInner, type RegisterChatKitChatProviderResponse, type RegisterHttpVercelAiSdkAgentRequestInner, type RegisterHttpVercelAiSdkAgentResponse, type RegisterInboxInstanceRequest, type RegisterOauthClientData, type RegisterOauthClientError, type RegisterOauthClientErrors, type RegisterOAuthClientRequest, type RegisterOauthClientResponse, type RegisterOAuthClientResponse, type RegisterOauthClientResponses, type RegisterOpenbotDeploymentData, type RegisterOpenbotDeploymentError, type RegisterOpenbotDeploymentErrors, type RegisterOpenBotDeploymentRequest, type RegisterOpenbotDeploymentResponse, type RegisterOpenbotDeploymentResponses, type RegisterTeamOauthClientData, type RegisterTeamOauthClientError, type RegisterTeamOauthClientErrors, type RegisterTeamOauthClientResponse, type RegisterTeamOauthClientResponses, type RegisterVercelUiChatProviderRequestInner, RelationshipDirectionality, type ReleaseAiCreditReservationBody, type RemoveChatKitParticipantResponse, type RemoveCommonProviderInstallationOwnershipGrantData, type RemoveCommonProviderInstallationOwnershipGrantResponses, type RemoveCommonProviderInstallationVisibilityGrantData, type RemoveCommonProviderInstallationVisibilityGrantResponses, type RemoveIdentityIdentifierData, type RemoveIdentityIdentifierResponse, type RemoveIdentityIdentifierResponses, type RemoveIdentityTeamData, type RemoveIdentityTeamResponses, type RemoveMcpResourceOwnershipGrantData, type RemoveMcpResourceOwnershipGrantResponses, type RemoveMcpResourceVisibilityGrantData, type RemoveMcpResourceVisibilityGrantResponses, type RemoveMcpServerInstanceFunctionData, type RemoveMcpServerInstanceFunctionError, type RemoveMcpServerInstanceFunctionErrors, type RemoveMcpServerInstanceFunctionResponse, type RemoveMcpServerInstanceFunctionResponses, type RemoveMemoryBankOwnershipGrantData, type RemoveMemoryBankOwnershipGrantResponses, type RemoveMemoryBankVisibilityGrantData, type RemoveMemoryBankVisibilityGrantResponses, type RemoveOrganizationMemberData, type RemoveOrganizationMemberError, type RemoveOrganizationMemberErrors, type RemoveOrganizationMemberResponses, type RemovePersonalMemoryBankOwnershipGrantData, type RemovePersonalMemoryBankOwnershipGrantResponses, type RemovePersonalMemoryBankVisibilityGrantData, type RemovePersonalMemoryBankVisibilityGrantResponses, type RemovePersonalRegistryOwnershipGrantData, type RemovePersonalRegistryOwnershipGrantResponses, type RemovePersonalRegistryVisibilityGrantData, type RemovePersonalRegistryVisibilityGrantResponses, type RemovePersonalRscOwnershipGrantData, type RemovePersonalRscOwnershipGrantResponses, type RemovePersonalRscVisibilityGrantData, type RemovePersonalRscVisibilityGrantResponses, type RemovePersonalSkillOwnershipGrantData, type RemovePersonalSkillOwnershipGrantResponses, type RemovePersonalSkillVisibilityGrantData, type RemovePersonalSkillVisibilityGrantResponses, type RemovePersonalUcOwnershipGrantData, type RemovePersonalUcOwnershipGrantResponses, type RemovePersonalUcVisibilityGrantData, type RemovePersonalUcVisibilityGrantResponses, type RemovePersonalWikiOwnershipGrantData, type RemovePersonalWikiOwnershipGrantResponses, type RemovePersonalWikiVisibilityGrantData, type RemovePersonalWikiVisibilityGrantResponses, type RemoveRscOwnershipGrantData, type RemoveRscOwnershipGrantResponses, type RemoveRscVisibilityGrantData, type RemoveRscVisibilityGrantResponses, type RemoveSessionResourceGrantData, type RemoveSessionResourceGrantError, type RemoveSessionResourceGrantErrors, type RemoveSessionResourceGrantResponse, type RemoveSessionResourceGrantResponses, type RemoveSessionUserMemberData, type RemoveSessionUserMemberError, type RemoveSessionUserMemberErrors, type RemoveSessionUserMemberResponse, type RemoveSessionUserMemberResponse2, type RemoveSessionUserMemberResponses, type RemoveSignalProviderGrantData, type RemoveSignalProviderGrantResponses, type RemoveSkillOwnershipGrantData, type RemoveSkillOwnershipGrantResponses, type RemoveSkillRegistryOwnershipGrantData, type RemoveSkillRegistryOwnershipGrantResponses, type RemoveSkillRegistryVisibilityGrantData, type RemoveSkillRegistryVisibilityGrantResponses, type RemoveSkillVisibilityGrantData, type RemoveSkillVisibilityGrantResponses, type RemoveTeamGroupMemberData, type RemoveTeamGroupMemberResponses, type RemoveTeamMemberData, type RemoveTeamMemberError, type RemoveTeamMemberErrors, type RemoveTeamMemberResponses, type RemoveUcOwnershipGrantData, type RemoveUcOwnershipGrantResponses, type RemoveUcVisibilityGrantData, type RemoveUcVisibilityGrantResponses, type RemoveWikiOwnershipGrantData, type RemoveWikiOwnershipGrantResponses, type RemoveWikiVisibilityGrantData, type RemoveWikiVisibilityGrantResponses, type RenameChatKitWorkspaceThreadRequestInner, type RenameProxyTokenData, type RenameProxyTokenError, type RenameProxyTokenErrors, type RenameProxyTokenRequest, type RenameProxyTokenResponses, type ReorderChatKitAgentTurnQueueItemRequestInner, type ReplaceMemoryBankBindingsBody, type ReplaceMemorySourceBindingsData, type ReplaceMemorySourceBindingsResponse, type ReplaceMemorySourceBindingsResponses, type ReplacePersonalMemorySourceBindingsData, type ReplacePersonalMemorySourceBindingsResponse, type ReplacePersonalMemorySourceBindingsResponses, type ReportChatKitCompactionEventInner, type ReportChatKitCompactionEventResponse, type ReportedAgentTool, type ReportToolExecutionRequestInner, type ReserveAiCreditsBody, type ResetMemoryBankConfigData, type ResetMemoryBankConfigResponse, type ResetMemoryBankConfigResponses, type ResetPersonalMemoryBankConfigData, type ResetPersonalMemoryBankConfigResponse, type ResetPersonalMemoryBankConfigResponses, type ResolveIdentityData, type ResolveIdentityError, type ResolveIdentityErrors, type ResolveIdentityResponse, type ResolveIdentityResponses, type ResolveLoginProviderResponse, type ResolveStateSourceRequest, type ResolveStateSourceResponse, ResourceAccessMode, ResourceAction, type ResourceApplyOutput, type ResourceAuthorization, type ResourceAuthorizationModes, type ResourceGrant, ResourceGrantPlane, type ResourceGrantRequest, type ResourceOwnership, type ResourcePlanItem, ResourcePrincipalType, ResourceServerCredentialPurpose, type ResourceServerCredentialSerialized, type ResourceServerCredentialSerializedPaginatedResponse, type ResumeAgentJobRequestInner, type ResumeCredentialSetupItemBody, type ResumeCredentialSetupItemData, type ResumeCredentialSetupItemResponse, type ResumeCredentialSetupItemResponses, type ResumeProviderAppProvisioningBody, type ResumeProviderAppProvisioningData, type ResumeProviderAppProvisioningResponse, type ResumeProviderAppProvisioningResponses, type ResumeProviderSetupBody, type ResumeUserCredentialBrokeringData, type ResumeUserCredentialBrokeringParams, type ResumeUserCredentialBrokeringResponse, type ResumeUserCredentialBrokeringResponses, type RetainMemoryBody, type RetainMemoryDocumentData, type RetainMemoryDocumentResponse, type RetainMemoryDocumentResponses, type RetainPersonalMemoryDocumentData, type RetainPersonalMemoryDocumentResponse, type RetainPersonalMemoryDocumentResponses, type RetainSynthesisSessionMemoryData, type RetainSynthesisSessionMemoryResponse, type RetainSynthesisSessionMemoryResponses, type RetryMemorySourceBody, type RetryMemorySourceSyncData, type RetryMemorySourceSyncResponse, type RetryMemorySourceSyncResponses, type RetryPersonalMemorySourceBindingsData, type RetryPersonalMemorySourceBindingsResponse, type RetryPersonalMemorySourceBindingsResponses, type RetryWikiData, type RetryWikiResponse, type RetryWikiResponses, type ReturnAddress, type ReturnAddressUrl, type ReverseProxyAddProfileOwnershipGrantData, type ReverseProxyAddProfileOwnershipGrantResponse, type ReverseProxyAddProfileOwnershipGrantResponses, type ReverseProxyAddProfileVisibilityGrantData, type ReverseProxyAddProfileVisibilityGrantResponse, type ReverseProxyAddProfileVisibilityGrantResponses, type ReverseProxyCreateProfileData, type ReverseProxyCreateProfileError, type ReverseProxyCreateProfileErrors, type ReverseProxyCreateProfileResponse, type ReverseProxyCreateProfileResponses, type ReverseProxyDeleteProfileData, type ReverseProxyDeleteProfileError, type ReverseProxyDeleteProfileErrors, type ReverseProxyDeleteProfileResponses, type ReverseProxyGetProfileData, type ReverseProxyGetProfileError, type ReverseProxyGetProfileErrors, type ReverseProxyGetProfileResponse, type ReverseProxyGetProfileResponses, type ReverseProxyListProfileOwnershipGrantsData, type ReverseProxyListProfileOwnershipGrantsResponse, type ReverseProxyListProfileOwnershipGrantsResponses, type ReverseProxyListProfilesData, type ReverseProxyListProfilesError, type ReverseProxyListProfilesErrors, type ReverseProxyListProfilesResponse, type ReverseProxyListProfilesResponses, type ReverseProxyListProfileVisibilityGrantsData, type ReverseProxyListProfileVisibilityGrantsResponse, type ReverseProxyListProfileVisibilityGrantsResponses, type ReverseProxyListProvidersData, type ReverseProxyListProvidersResponse, type ReverseProxyListProvidersResponses, type ReverseProxyProfile, type ReverseProxyProfilePaginatedResponse, type ReverseProxyProviderInfo, type ReverseProxyProxyGetData, type ReverseProxyProxyGetResponses, type ReverseProxyProxyPostData, type ReverseProxyProxyPostResponses, type ReverseProxyRemoveProfileOwnershipGrantData, type ReverseProxyRemoveProfileOwnershipGrantResponses, type ReverseProxyRemoveProfileVisibilityGrantData, type ReverseProxyRemoveProfileVisibilityGrantResponses, type ReverseProxySetProfileOwnershipData, type ReverseProxySetProfileOwnershipResponse, type ReverseProxySetProfileOwnershipResponses, type ReverseProxySetProfileVisibilityData, type ReverseProxySetProfileVisibilityResponse, type ReverseProxySetProfileVisibilityResponses, type ReverseProxyUpdateProfileData, type ReverseProxyUpdateProfileError, type ReverseProxyUpdateProfileErrors, type ReverseProxyUpdateProfileResponse, type ReverseProxyUpdateProfileResponses, type RevokeLocalRuntimeTunnelApiKeyData, type RevokeLocalRuntimeTunnelApiKeyError, type RevokeLocalRuntimeTunnelApiKeyErrors, type RevokeLocalRuntimeTunnelApiKeyResponse, type RevokeLocalRuntimeTunnelApiKeyResponses, type RevokeProxyTokenData, type RevokeProxyTokenError, type RevokeProxyTokenErrors, type RevokeProxyTokenResponses, type RevokeTeamInvitationData, type RevokeTeamInvitationResponses, type RotateCustomToolProviderSigningKeyData, type RotateCustomToolProviderSigningKeyResponse, type RotateCustomToolProviderSigningKeyResponse2, type RotateCustomToolProviderSigningKeyResponses, type RouteAuthCallbackData, type RouteAuthCallbackError, type RouteAuthCallbackErrors, type RouteCreateApiKeyData, type RouteCreateApiKeyError, type RouteCreateApiKeyErrors, type RouteCreateApiKeyResponse, type RouteCreateApiKeyResponses, type RouteDeleteApiKeyData, type RouteDeleteApiKeyError, type RouteDeleteApiKeyErrors, type RouteDeleteApiKeyResponse, type RouteDeleteApiKeyResponses, type RouteGetJwksData, type RouteGetJwksError, type RouteGetJwksErrors, type RouteGetJwksResponse, type RouteGetJwksResponses, type RouteListApiKeysData, type RouteListApiKeysError, type RouteListApiKeysErrors, type RouteListApiKeysResponse, type RouteListApiKeysResponses, type RouteListDebugAuthProfilesData, type RouteListDebugAuthProfilesError, type RouteListDebugAuthProfilesErrors, type RouteListDebugAuthProfilesResponse, type RouteListDebugAuthProfilesResponses, type RouteLogoutData, type RouteRefreshTokenData, type RouteRefreshTokenError, type RouteRefreshTokenErrors, type RouteRefreshTokenResponse, type RouteRefreshTokenResponses, type RouteResolveLoginProviderData, type RouteResolveLoginProviderError, type RouteResolveLoginProviderErrors, type RouteResolveLoginProviderResponse, type RouteResolveLoginProviderResponses, type RouteSelectDebugAuthProfileData, type RouteSelectDebugAuthProfileError, type RouteSelectDebugAuthProfileErrors, type RouteSelectDebugAuthProfileResponse, type RouteSelectDebugAuthProfileResponses, type RouteStartAuthorizationData, type RouteStartAuthorizationError, type RouteStartAuthorizationErrors, type Routine, RoutineEventInstructionPolicy, type RoutineExecution, type RoutineExecutionPaginatedResponse, type RoutinePaginatedResponse, type RoutineTrigger, type RoutineTriggerInput, type RoutineTriggerSpec, type RunRoutineBody, type RunRoutineResponse, type RuntimeConfig, type RuntimeIdentity, type RuntimeIdentityPaginatedResponse, type SearchSkillRegistryData, type SearchSkillRegistryError, type SearchSkillRegistryErrors, type SearchSkillRegistryResponse, type SearchSkillRegistryResponses, type SelectDebugAuthProfileRequest, SelfExtensionCategory, type SelfExtensionPreview, type SelfExtensionProposal, type SelfExtensionProposalOutputs, type SelfExtensionResource, SelfExtensionStatus, type SelfProfileAvatarResponse, type SelfProfileResponse, type SelfProfileUser, type SendChatKitWorkspaceMessageRequestInner, type SendSessionMessageBody, type SendSessionMessageInput, type SendSessionMessageResponse, type Session, type SessionCorrelation, type SessionPaginatedResponse, type SessionParticipantIdentity, SessionPurpose, type SessionUserMembership, SessionUserRole, type SetChatKitResourceStatusRequest, type SetCommonProviderInstallationOwnershipData, type SetCommonProviderInstallationOwnershipResponse, type SetCommonProviderInstallationOwnershipResponses, type SetCommonProviderInstallationVisibilityData, type SetCommonProviderInstallationVisibilityResponse, type SetCommonProviderInstallationVisibilityResponses, type SetMcpResourceOwnershipData, type SetMcpResourceOwnershipResponse, type SetMcpResourceOwnershipResponses, type SetMcpResourceVisibilityData, type SetMcpResourceVisibilityResponse, type SetMcpResourceVisibilityResponses, type SetMemoryBankOwnershipModeData, type SetMemoryBankOwnershipModeResponse, type SetMemoryBankOwnershipModeResponses, type SetMemoryBankVisibilityData, type SetMemoryBankVisibilityResponse, type SetMemoryBankVisibilityResponses, type SetOpenBotAvatarRequest, type SetPersonalMemoryBankOwnershipModeData, type SetPersonalMemoryBankOwnershipModeResponse, type SetPersonalMemoryBankOwnershipModeResponses, type SetPersonalMemoryBankVisibilityData, type SetPersonalMemoryBankVisibilityResponse, type SetPersonalMemoryBankVisibilityResponses, type SetPersonalRegistryOwnershipModeData, type SetPersonalRegistryOwnershipModeResponse, type SetPersonalRegistryOwnershipModeResponses, type SetPersonalRegistryVisibilityData, type SetPersonalRegistryVisibilityResponse, type SetPersonalRegistryVisibilityResponses, type SetPersonalRscOwnershipData, type SetPersonalRscOwnershipResponse, type SetPersonalRscOwnershipResponses, type SetPersonalRscVisibilityData, type SetPersonalRscVisibilityResponse, type SetPersonalRscVisibilityResponses, type SetPersonalSkillOwnershipModeData, type SetPersonalSkillOwnershipModeResponse, type SetPersonalSkillOwnershipModeResponses, type SetPersonalSkillVisibilityData, type SetPersonalSkillVisibilityResponse, type SetPersonalSkillVisibilityResponses, type SetPersonalUcOwnershipData, type SetPersonalUcOwnershipResponse, type SetPersonalUcOwnershipResponses, type SetPersonalUcVisibilityData, type SetPersonalUcVisibilityResponse, type SetPersonalUcVisibilityResponses, type SetPersonalWikiOwnershipModeData, type SetPersonalWikiOwnershipModeResponse, type SetPersonalWikiOwnershipModeResponses, type SetPersonalWikiVisibilityData, type SetPersonalWikiVisibilityResponse, type SetPersonalWikiVisibilityResponses, type SetResourceAccessModeRequest, type SetRscOwnershipData, type SetRscOwnershipResponse, type SetRscOwnershipResponses, type SetRscVisibilityData, type SetRscVisibilityResponse, type SetRscVisibilityResponses, type SetSelfOpenbotAvatarData, type SetSelfOpenbotAvatarError, type SetSelfOpenbotAvatarErrors, type SetSelfOpenbotAvatarResponse, type SetSelfOpenbotAvatarResponses, type SetSignalProviderOwnershipData, type SetSignalProviderOwnershipResponse, type SetSignalProviderOwnershipResponses, type SetSignalProviderVisibilityData, type SetSignalProviderVisibilityResponse, type SetSignalProviderVisibilityResponses, type SetSkillOwnershipModeData, type SetSkillOwnershipModeResponse, type SetSkillOwnershipModeResponses, type SetSkillRegistryOwnershipModeData, type SetSkillRegistryOwnershipModeResponse, type SetSkillRegistryOwnershipModeResponses, type SetSkillRegistryVisibilityData, type SetSkillRegistryVisibilityResponse, type SetSkillRegistryVisibilityResponses, type SetSkillVisibilityData, type SetSkillVisibilityResponse, type SetSkillVisibilityResponses, type SetUcOwnershipData, type SetUcOwnershipResponse, type SetUcOwnershipResponses, type SetUcVisibilityData, type SetUcVisibilityResponse, type SetUcVisibilityResponses, type SetupPayMcpResponse, type SetWikiOwnershipModeData, type SetWikiOwnershipModeResponse, type SetWikiOwnershipModeResponses, type SetWikiVisibilityData, type SetWikiVisibilityResponse, type SetWikiVisibilityResponses, type SignalAction, type SignalDelivery, type SignalDeliveryPaginatedResponse, SignalDeliveryStatus, SignalIngressMode, type SignalInterpolationVariable, type SignalMessage, type SignalMessageContext, type SignalPollingDescriptor, SignalProviderAuthMethod, type SignalProviderInstance, type SignalProviderInstancePaginatedResponse, SignalProviderInstanceStatus, type SignalProviderRouteDescriptor, type SignalProviderSourceSerialized, type SignalProviderSourceSerializedPaginatedResponse, type SignalRuleFilter, type SignalsAddPersonalProviderGrantData, type SignalsAddPersonalProviderGrantResponse, type SignalsAddPersonalProviderGrantResponses, type SignalsCreatePersonalProviderInstanceData, type SignalsCreatePersonalProviderInstanceResponse, type SignalsCreatePersonalProviderInstanceResponses, type SignalsCreateProviderInstanceData, type SignalsCreateProviderInstanceResponse, type SignalsCreateProviderInstanceResponses, type SignalsDeletePersonalProviderInstanceData, type SignalsDeletePersonalProviderInstanceResponse, type SignalsDeletePersonalProviderInstanceResponses, type SignalsDeleteProviderInstanceData, type SignalsDeleteProviderInstanceResponse, type SignalsDeleteProviderInstanceResponses, type SignalSessionPolicy, type SignalsGetDeliveryData, type SignalsGetDeliveryResponse, type SignalsGetDeliveryResponses, type SignalsGetPersonalDeliveryData, type SignalsGetPersonalDeliveryResponse, type SignalsGetPersonalDeliveryResponses, type SignalsGetPersonalProviderInstanceData, type SignalsGetPersonalProviderInstanceResponse, type SignalsGetPersonalProviderInstanceResponses, type SignalsGetProviderInstanceData, type SignalsGetProviderInstanceResponse, type SignalsGetProviderInstanceResponses, type SignalsListAvailableProvidersData, type SignalsListAvailableProvidersResponse, type SignalsListAvailableProvidersResponses, type SignalsListDeliveriesData, type SignalsListDeliveriesResponse, type SignalsListDeliveriesResponses, type SignalsListPersonalAvailableProvidersData, type SignalsListPersonalAvailableProvidersResponse, type SignalsListPersonalAvailableProvidersResponses, type SignalsListPersonalDeliveriesData, type SignalsListPersonalDeliveriesResponse, type SignalsListPersonalDeliveriesResponses, type SignalsListPersonalProviderGrantsData, type SignalsListPersonalProviderGrantsResponse, type SignalsListPersonalProviderGrantsResponses, type SignalsListPersonalProviderInstancesData, type SignalsListPersonalProviderInstancesResponse, type SignalsListPersonalProviderInstancesResponses, type SignalsListProviderInstancesData, type SignalsListProviderInstancesResponse, type SignalsListProviderInstancesResponses, type SignalsRemovePersonalProviderGrantData, type SignalsRemovePersonalProviderGrantResponses, type SignalsRetryDeliveryData, type SignalsRetryDeliveryResponse, type SignalsRetryDeliveryResponses, type SignalsRetryPersonalDeliveryData, type SignalsRetryPersonalDeliveryResponse, type SignalsRetryPersonalDeliveryResponses, type SignalsSetPersonalProviderOwnershipData, type SignalsSetPersonalProviderOwnershipResponse, type SignalsSetPersonalProviderOwnershipResponses, type SignalsSetPersonalProviderVisibilityData, type SignalsSetPersonalProviderVisibilityResponse, type SignalsSetPersonalProviderVisibilityResponses, type SignalsTriggerFakeData, type SignalsTriggerFakeResponse, type SignalsTriggerFakeResponses, type SignalsUpdatePersonalProviderInstanceData, type SignalsUpdatePersonalProviderInstanceResponse, type SignalsUpdatePersonalProviderInstanceResponses, type SignalsUpdateProviderInstanceData, type SignalsUpdateProviderInstanceResponse, type SignalsUpdateProviderInstanceResponses, type SignalTypeSourceSerialized, type SignalWebhookVerificationDescriptor, type Skill, type SkillDescriptionResponse, type SkillDiscoverySearchRequest, type SkillDiscoverySearchResponse, type SkillPackageFile, type SkillPackageFileDownload, type SkillPackageManifest, type SkillPaginatedResponse, type SkillRegistry, type SkillRegistryPaginatedResponse, type SkillRegistrySpec, type SkillSummary, type SkillSummaryPaginatedResponse, type SlackInstallationNextAction, type SourceDocumentUiPart, type SourceUrlUiPart, type StartBrokeringBodyExternal, type StartCredentialSetupItemBody, type StartCredentialSetupItemData, type StartCredentialSetupItemResponse, type StartCredentialSetupItemResponse2, type StartCredentialSetupItemResponses, type StartOAuthDeviceCodeBody, type StartOauthDeviceCodeData, type StartOauthDeviceCodeError, type StartOauthDeviceCodeErrors, type StartOauthDeviceCodeResponse, type StartOauthDeviceCodeResponses, type StartOAuthDeviceCodeResult, type StartProviderAppProvisioningBody, type StartProviderAppProvisioningData, type StartProviderAppProvisioningResponse, type StartProviderAppProvisioningResponses, type StartProviderSetupBody, type StartProxiedMcpServerOauthData, type StartProxiedMcpServerOauthError, type StartProxiedMcpServerOauthErrors, type StartProxiedMcpServerOauthRequestInner, type StartProxiedMcpServerOauthResponse, type StartProxiedMcpServerOauthResponse2, type StartProxiedMcpServerOauthResponses, type StartSlackOauthRequestInner, type StartUserCredentialBrokeringData, type StartUserCredentialBrokeringResponse, type StartUserCredentialBrokeringResponses, StateDocumentFormat, type StateExportData, type StateExportError, type StateExportErrors, type StateExportResponses, type StateGetImportData, type StateGetImportResponse, type StateGetImportResponses, type StateImportData, type StateImportEventsData, type StateImportEventsResponses, type StateImportOutputs, type StateImportResponse, type StateImportResponses, StateImportStatus, type StateMetadata, type StatePlan, type StatePlanData, type StatePlanResponse, type StatePlanResponses, type StateResolveSourceData, type StateResolveSourceError, type StateResolveSourceErrors, type StateResolveSourceResponse, type StateResolveSourceResponses, type StateSchema, type StateSchemaData, type StateSchemaJsonData, type StateSchemaJsonResponses, type StateSchemaResponse, type StateSchemaResponses, type StateSourceMetadata, type StateValidateData, type StateValidateResponse, type StateValidateResponses, type StateVariableDefinition, StateVariableType, type SteerAgentJobRequestInner, type SteerChatKitAgentTurnQueueItemResponse, type StepStartUiPart, type StopAgentJobRequestInner, type StoredEvent, type StoredEventPaginatedResponse, type StoredMemoryDocument, type SubmitChatKitWorkspaceTurnRequestInner, type SubmitChatKitWorkspaceTurnResponse, type SupportedCredentialInfo, type SynthesisSessionRetainMemoryBody, type Task, type TaskPaginatedResponse, TaskStatus, type Team, type TeamGroupSummary, type TeamGroupSummaryPaginatedResponse, type TeamMemberWithUser, type TeamMemberWithUserPaginatedResponse, type TeamPaginatedResponse, type TextMessage, type TextUiPart, type TildePayPaymentMppData, type TildePayPaymentMppResponse, type TildePayPaymentMppResponses, type TildePayPaymentX402Data, type TildePayPaymentX402Response, type TildePayPaymentX402Responses, type TildePayProvisionData, type TildePayProvisionResponse, type TildePayProvisionResponses, type TildePayWalletCreateData, type TildePayWalletCreateResponse, type TildePayWalletCreateResponses, type TildePayWalletSummaryData, type TildePayWalletSummaryResponse, type TildePayWalletSummaryResponses, type TildePayWalletWaitUntilBalanceData, type TildePayWalletWaitUntilBalanceResponse, type TildePayWalletWaitUntilBalanceResponses, type TokenResponse, type ToolConfig, type ToolConfigPaginatedResponse, type ToolDeploymentWithGroupSerialized, type ToolDeploymentWithGroupSerializedPaginatedResponse, type ToolExecution, ToolExecutionAuthority, ToolExecutionState, type ToolGroupInstanceListItem, type ToolGroupInstanceListItemPaginatedResponse, type ToolGroupInstanceSerialized, type ToolGroupInstanceSerializedWithCredentials, type ToolGroupInstanceSerializedWithEverything, type ToolGroupSourceSerialized, type ToolGroupSourceSerializedPaginatedResponse, type ToolInstanceListItem, type ToolInstanceSerialized, type ToolInstanceSerializedPaginatedResponse, ToolInvocationState, type ToolSourceSerialized, type ToolUiPart, type TransitionAgentRunInner, type TraverseWikiGraphData, type TraverseWikiGraphResponse, type TraverseWikiGraphResponses, type TriggerFakeSignalRequest, type TrustedRuntime, TrustedRuntimeEncryptionAlgorithm, type TrustedRuntimePaginatedResponse, TrustedRuntimeSigningAlgorithm, TrustedRuntimeStatus, TrustedRuntimeType, type TupleUnit, type UiMessage, type UiMessagePart, type UnbindToolGroupFromMcpServerData, type UnbindToolGroupFromMcpServerError, type UnbindToolGroupFromMcpServerErrors, type UnbindToolGroupFromMcpServerResponse, type UnbindToolGroupFromMcpServerResponses, type UpdateAgentObservabilityPolicyRequestInner, type UpdateAgentToolVisibilityRequestInner, type UpdateChatKitChatProviderRequestInner, type UpdateChatKitSessionUserStateRequestInner, type UpdateCredentialBody, type UpdateCustomToolProviderData, type UpdateCustomToolProviderRequestInner, type UpdateCustomToolProviderResponse, type UpdateCustomToolProviderResponses, type UpdateGoalRequestInner, type UpdateHostedOpenbotComputerImageData, type UpdateHostedOpenbotComputerImageError, type UpdateHostedOpenbotComputerImageErrors, type UpdateHostedOpenBotComputerImageRequest, type UpdateHostedOpenbotComputerImageResponse, type UpdateHostedOpenbotComputerImageResponses, type UpdateHttpVercelAiSdkAgentRequestInner, type UpdateIdentityData, type UpdateIdentityError, type UpdateIdentityErrors, type UpdateIdentityRequest, type UpdateIdentityResponse, type UpdateIdentityResponses, type UpdateManagedUserCredentialBody, type UpdateManagedUserCredentialData, type UpdateManagedUserCredentialResponse, type UpdateManagedUserCredentialResponses, type UpdateMcpServerInstanceBody, type UpdateMcpServerInstanceData, type UpdateMcpServerInstanceError, type UpdateMcpServerInstanceErrors, type UpdateMcpServerInstanceFunctionData, type UpdateMcpServerInstanceFunctionError, type UpdateMcpServerInstanceFunctionErrors, type UpdateMcpServerInstanceFunctionResponse, type UpdateMcpServerInstanceFunctionResponses, type UpdateMcpServerInstanceRequestInner, type UpdateMcpServerInstanceResponse, type UpdateMcpServerInstanceResponses, type UpdateMcpServerInstanceToolBody, type UpdateMemberRoleBody, type UpdateMemoryBankBody, type UpdateMemoryBankConfigBody, type UpdateMemoryBankConfigData, type UpdateMemoryBankConfigResponse, type UpdateMemoryBankConfigResponses, type UpdateMemoryBankData, type UpdateMemoryBankResponse, type UpdateMemoryBankResponses, type UpdateOrganizationData, type UpdateOrganizationError, type UpdateOrganizationErrors, type UpdateOrganizationMemberRoleBody, type UpdateOrganizationMemberRoleData, type UpdateOrganizationMemberRoleError, type UpdateOrganizationMemberRoleErrors, type UpdateOrganizationMemberRoleResponse, type UpdateOrganizationMemberRoleResponses, type UpdateOrganizationRequest, type UpdateOrganizationResponses, type UpdateOrgOidcProviderData, type UpdateOrgOidcProviderError, type UpdateOrgOidcProviderErrors, type UpdateOrgOidcProviderRequest, type UpdateOrgOidcProviderResponse, type UpdateOrgOidcProviderResponses, type UpdatePageTypeBody, type UpdatePersonalMcpServerInstanceData, type UpdatePersonalMcpServerInstanceResponse, type UpdatePersonalMcpServerInstanceResponses, type UpdatePersonalMemoryBankConfigData, type UpdatePersonalMemoryBankConfigResponse, type UpdatePersonalMemoryBankConfigResponses, type UpdatePersonalMemoryBankData, type UpdatePersonalMemoryBankResponse, type UpdatePersonalMemoryBankResponses, type UpdatePersonalSkillData, type UpdatePersonalSkillRegistryData, type UpdatePersonalSkillRegistryResponse, type UpdatePersonalSkillRegistryResponses, type UpdatePersonalSkillResponse, type UpdatePersonalSkillResponses, type UpdatePersonalToolGroupInstanceData, type UpdatePersonalToolGroupInstanceResponse, type UpdatePersonalToolGroupInstanceResponses, type UpdatePersonalWikiData, type UpdatePersonalWikiPageData, type UpdatePersonalWikiPageResponse, type UpdatePersonalWikiPageResponses, type UpdatePersonalWikiResponse, type UpdatePersonalWikiResponses, type UpdateRelationshipTypeBody, type UpdateResourceServerCredentialData, type UpdateResourceServerCredentialResponse, type UpdateResourceServerCredentialResponses, type UpdateReverseProxyProfileInner, type UpdateSelfProfileData, type UpdateSelfProfileError, type UpdateSelfProfileErrors, type UpdateSelfProfileRequest, type UpdateSelfProfileResponse, type UpdateSelfProfileResponses, type UpdateSessionOwnershipData, type UpdateSessionOwnershipError, type UpdateSessionOwnershipErrors, type UpdateSessionOwnershipResponse, type UpdateSessionOwnershipResponses, type UpdateSessionVisibilityData, type UpdateSessionVisibilityError, type UpdateSessionVisibilityErrors, type UpdateSessionVisibilityResponse, type UpdateSessionVisibilityResponses, type UpdateSignalProviderInstanceRequestInner, type UpdateSkillBody, type UpdateSkillData, type UpdateSkillError, type UpdateSkillErrors, type UpdateSkillRegistryBody, type UpdateSkillRegistryData, type UpdateSkillRegistryError, type UpdateSkillRegistryErrors, type UpdateSkillRegistryResponse, type UpdateSkillRegistryResponses, type UpdateSkillResponse, type UpdateSkillResponses, type UpdateTaskRequestInner, type UpdateTeamData, type UpdateTeamError, type UpdateTeamErrors, type UpdateTeamGroupBody, type UpdateTeamGroupData, type UpdateTeamGroupError, type UpdateTeamGroupErrors, type UpdateTeamGroupResponse, type UpdateTeamGroupResponses, type UpdateTeamMemberRoleData, type UpdateTeamMemberRoleError, type UpdateTeamMemberRoleErrors, type UpdateTeamMemberRoleResponse, type UpdateTeamMemberRoleResponses, type UpdateTeamRequest, type UpdateTeamResponses, type UpdateToolBoundParamsData, type UpdateToolBoundParamsError, type UpdateToolBoundParamsErrors, type UpdateToolBoundParamsResponse, type UpdateToolBoundParamsResponses, type UpdateToolGroupInstanceData, type UpdateToolGroupInstanceError, type UpdateToolGroupInstanceErrors, type UpdateToolGroupInstanceParamsInner, type UpdateToolGroupInstanceResponse, type UpdateToolGroupInstanceResponses, type UpdateToolInstanceBoundParamsInner, type UpdateTrustedRuntimeBody, type UpdateTrustedRuntimeData, type UpdateTrustedRuntimeError, type UpdateTrustedRuntimeErrors, type UpdateTrustedRuntimeResponse, type UpdateTrustedRuntimeResponses, type UpdateUserCredentialData, type UpdateUserCredentialResponse, type UpdateUserCredentialResponses, type UpdateWikiAssetBody, type UpdateWikiAssetData, type UpdateWikiAssetResponse, type UpdateWikiAssetResponses, type UpdateWikiBody, type UpdateWikiData, type UpdateWikiPageData, type UpdateWikiPageErrors, type UpdateWikiPageRelationshipData, type UpdateWikiPageRelationshipResponse, type UpdateWikiPageRelationshipResponses, type UpdateWikiPageResponse, type UpdateWikiPageResponses, type UpdateWikiPageTypeData, type UpdateWikiPageTypeErrors, type UpdateWikiPageTypeResponse, type UpdateWikiPageTypeResponses, type UpdateWikiRelationshipTypeData, type UpdateWikiRelationshipTypeErrors, type UpdateWikiRelationshipTypeResponse, type UpdateWikiRelationshipTypeResponses, type UpdateWikiResponse, type UpdateWikiResponses, type UploadAttachmentContentData, type UploadAttachmentContentError, type UploadAttachmentContentErrors, type UploadAttachmentContentResponse, type UploadAttachmentContentResponses, type UploadHostedOpenbotReleaseFileData, type UploadHostedOpenbotReleaseFileError, type UploadHostedOpenbotReleaseFileErrors, type UploadHostedOpenbotReleaseFileResponse, type UploadHostedOpenbotReleaseFileResponses, type UploadSelfAvatarData, type UploadSelfAvatarError, type UploadSelfAvatarErrors, type UploadSelfAvatarResponse, type UploadSelfAvatarResponses, type UploadWikiAssetContentData, type UploadWikiAssetContentErrors, type UploadWikiAssetContentResponses, type UpsertPageRelationshipBody, type UpsertWikiPageBody, type UpsertWikiPageRelationshipData, type UpsertWikiPageRelationshipErrors, type UpsertWikiPageRelationshipResponse, type UpsertWikiPageRelationshipResponses, type User, type UserAvatar, type UserCredentialBrokeringResponse, type UserCredentialSerialized, type UserCredentialSerializedPaginatedResponse, type UserInvitation, type UserInvitationPaginatedResponse, type UserOrganization, type UserTeam, UserToolFederationMode, type UserToolFederationSelection, UserType, type ValidatePageTypeDataBody, type ValidateStateRequest, type ValidateStateResponse, type ValidateSynthesisBatchBody, type ValidateSynthesisSessionBatchData, type ValidateSynthesisSessionBatchResponse, type ValidateSynthesisSessionBatchResponses, type ValidateWikiPageTypeDataData, type ValidateWikiPageTypeDataResponse, type ValidateWikiPageTypeDataResponses, type Vec, type VerifiedIdentityLink, VerifiedIdentityLinkSource, type VerifyOrgOidcProviderDomainData, type VerifyOrgOidcProviderDomainError, type VerifyOrgOidcProviderDomainErrors, type VerifyOrgOidcProviderDomainResponse, type VerifyOrgOidcProviderDomainResponses, type WaitForPayBalanceRequest, type WaitUntilBalanceRequest, type WaitUntilBalanceResponse, type Wallet, type WalletCreateData, type WalletCreateError, type WalletCreateErrors, type WalletCreateResponse, type WalletCreateResponses, type WalletCustomer, type WalletCustomerCreateData, type WalletCustomerCreateResponse, type WalletCustomerCreateResponses, type WalletCustomerGetData, type WalletCustomerGetResponse, type WalletCustomerGetResponses, type WalletCustomerKycGetData, type WalletCustomerKycGetResponse, type WalletCustomerKycGetResponses, type WalletCustomerListData, type WalletCustomerListResponse, type WalletCustomerListResponses, type WalletCustomerPaginatedResponse, type WalletGetBalancesData, type WalletGetBalancesResponse, type WalletGetBalancesResponses, type WalletGetCryptoDepositInformationData, type WalletGetCryptoDepositInformationResponse, type WalletGetCryptoDepositInformationResponses, type WalletGetData, type WalletGetFiatDepositInformationData, type WalletGetFiatDepositInformationResponse, type WalletGetFiatDepositInformationResponses, type WalletGetResponse, type WalletGetResponses, type WalletListData, type WalletListResponse, type WalletListResponses, type WalletMakeMppPaymentData, type WalletMakeMppPaymentResponse, type WalletMakeMppPaymentResponses, type WalletMakeX402PaymentData, type WalletMakeX402PaymentResponse, type WalletMakeX402PaymentResponses, type WalletMerchant, type WalletPaginatedResponse, type WalletTransactionHistoryItem, type WalletTransactionHistoryItemPaginatedResponse, type WalletTransactionHistoryListData, type WalletTransactionHistoryListResponse, type WalletTransactionHistoryListResponses, type WalletTransactionHistoryRefreshData, type WalletTransactionHistoryRefreshResponse, type WalletTransactionHistoryRefreshResponses, type WalletVirtualAccount, type WalletVirtualAccountCreateData, type WalletVirtualAccountCreateError, type WalletVirtualAccountCreateErrors, type WalletVirtualAccountCreateResponse, type WalletVirtualAccountCreateResponses, type WalletWaitUntilBalanceData, type WalletWaitUntilBalanceResponse, type WalletWaitUntilBalanceResponses, type WebhookSigningKeyMetadata, type WhoamiData, type WhoamiError, type WhoamiErrors, type WhoamiResponse, type WhoamiResponses, type Wiki, type WikiAsset, type WikiAssetDownloadResponse, type WikiAssetPaginatedResponse, type WikiAssetReferences, WikiAssetStatus, type WikiAssetUploadResponse, type WikiGraph, type WikiGrepMatch, type WikiOntologyInstallation, type WikiOntologyTemplate, type WikiPage, type WikiPagePaginatedResponse, type WikiPageRelationship, type WikiPageRevision, type WikiPageRevisionPaginatedResponse, type WikiPageType, type WikiPageTypeVersion, type WikiPaginatedResponse, type WikiRelationshipEvidence, type WikiRelationshipType, type WikiRelationshipTypeVersion, type WikiSpec, WikiStatus, type WrappedChronoDateTime, type WrappedJsonValue, type WrappedUuidV4 } from './types.gen'; +export { acceptInvitation, addCommonProviderInstallationOwnershipGrant, addCommonProviderInstallationVisibilityGrant, addIdentityTeam, addMcpResourceOwnershipGrant, addMcpResourceVisibilityGrant, addMcpServerInstanceFunction, addMemoryBankOwnershipGrant, addMemoryBankVisibilityGrant, addOrganizationMember, addPersonalMemoryBankOwnershipGrant, addPersonalMemoryBankVisibilityGrant, addPersonalRegistryOwnershipGrant, addPersonalRegistryVisibilityGrant, addPersonalRscOwnershipGrant, addPersonalRscVisibilityGrant, addPersonalSkillOwnershipGrant, addPersonalSkillVisibilityGrant, addPersonalUcOwnershipGrant, addPersonalUcVisibilityGrant, addPersonalWikiOwnershipGrant, addPersonalWikiVisibilityGrant, addProviderSkillsToSkillRegistry, addRscOwnershipGrant, addRscVisibilityGrant, addSessionResourceGrant, addSessionUserMember, addSignalProviderGrant, addSkillOwnershipGrant, addSkillRegistryOwnershipGrant, addSkillRegistryVisibilityGrant, addSkillVisibilityGrant, addTeamGroupMember, addTeamMember, addUcOwnershipGrant, addUcVisibilityGrant, addWikiOwnershipGrant, addWikiVisibilityGrant, applyWikiOntologyTemplate, assignPersonalMemoryBankSynthesizer, authorizeOauthDeviceCode, automationsAddGrant, automationsDelete, automationsGet, automationsList, automationsListExecutions, automationsListGrants, automationsPut, automationsRemoveGrant, automationsRun, automationsSetOwnership, automationsSetVisibility, autoProvisionToolGroupInstance, autumnWebhookHandler, billingAiCreditReceiptCommit, billingAiCreditReservationRelease, billingAiCreditReserve, billingAiCreditTopupCreate, billingAiGatewayEnsure, billingAutumnBridgePost, billingContextGet, billingEnrollAccount, billingProductEnrollCurrentHuman, billingRedirect, billingRemoveAccountSeat, billingWebhookStripeDeprecated, bindToolGroupToMcpServer, bulkAddMcpServerInstanceFunctions, bulkRemoveMcpServerInstanceFunctions, cancelHumanApprovalAction, changePersonalWikiOwnership, changeWikiOwnership, chatkitAddAgentResourceGrant, chatkitAddSessionParticipant, chatkitAppendAgentRunStep, chatkitApproveSelfExtensionProposal, chatkitAutoProvisionSlackChannelInstallation, chatkitCacheConvertedMessages, chatkitCancelSelfExtensionProposal, chatkitClaimAgentResourceBundleOutputs, chatkitClaimAgentRuns, chatkitClaimSelfExtensionProposalOutputs, chatkitCollectAgentJobResult, chatkitCompleteSlackProviderProvisionedSetup, chatkitCompleteSlackSelfManagedSetup, chatkitControlAgentRun, chatkitCreateAgentRun, chatkitCreateCustomProvider, chatkitCreateGoal, chatkitCreateRoomInvitation, chatkitCreateSession, chatkitCreateSlackChannelInstallation, chatkitCreateTask, chatkitCustomProviderRuntime, chatkitDecideCapabilityChange, chatkitDecideRoomInvitation, chatkitDelegateAgentJob, chatkitDeleteAgent, chatkitDeleteAgentTurnQueueItem, chatkitDeleteChatProvider, chatkitDeleteCustomProvider, chatkitDisableCustomProvider, chatkitEnableCustomProvider, chatkitFinishAgentRunEffect, chatkitGetActiveAgentRun, chatkitGetAgent, chatkitGetAgentAvatar, chatkitGetAgentJob, chatkitGetAgentObservability, chatkitGetAgentResourceBundleProvisioning, chatkitGetAgentRun, chatkitGetAgentRunEffect, chatkitGetCompactedHistory, chatkitGetCustomConnection, chatkitGetCustomProvider, chatkitGetGoal, chatkitGetLatestCompaction, chatkitGetSelfExtensionProposal, chatkitGetTask, chatkitHydrateConvertedMessages, chatkitIngestCustomProviderMessage, chatkitInvokeSessionProviderTool, chatkitJoinSession, chatkitListAgentJobs, chatkitListAgentResourceGrants, chatkitListAgents, chatkitListAgentTurnQueue, chatkitListAvailableChatChannels, chatkitListAvailableChatProviders, chatkitListChatProviders, chatkitListCustomConnections, chatkitListCustomConnectionWork, chatkitListCustomProvider, chatkitListGoals, chatkitListMessageHistory, chatkitListRoomInvitations, chatkitListSelfExtensionProposals, chatkitListSessionParticipants, chatkitListSessionProviderTools, chatkitListSessions, chatkitListTasks, chatkitPrepareAgentRunEffect, chatkitProposeSelfExtension, chatkitProvisionAgentResourceBundle, chatkitRecallAutomaticMemory, chatkitRefreshCustomProvider, chatkitRegisterAgentTools, chatkitRegisterChatProvider, chatkitRegisterHttpVercelAiSdkAgent, chatkitRegisterVercelUiChatProvider, chatkitRejectSelfExtensionProposal, chatkitRemoveAgentResourceGrant, chatkitRemoveSessionParticipant, chatkitReorderAgentTurnQueueItem, chatkitReportCompactionEvent, chatkitReportToolExecution, chatkitResumeAgentJob, chatkitRetryCustomConnectionWork, chatkitRevokeRoomInvitation, chatkitRollbackSelfExtensionProposal, chatkitRotateCustomConnectionCredentials, chatkitRotateCustomProvider, chatkitSearch, chatkitSendSessionMessage, chatkitSetAgentPermissions, chatkitSetAgentStatus, chatkitSetChatProviderStatus, chatkitStartSlackOauth, chatkitSteerAgentJob, chatkitSteerAgentTurnQueueItem, chatkitStopAgentJob, chatkitStreamSessionEvents, chatkitTransitionAgentRun, chatkitUpdateAgent, chatkitUpdateAgentAvatar, chatkitUpdateAgentObservability, chatkitUpdateAgentOwnership, chatkitUpdateAgentToolVisibility, chatkitUpdateAgentVisibility, chatkitUpdateChatProvider, chatkitUpdateCustomProvider, chatkitUpdateGoal, chatkitUpdateTask, chatkitWorkspaceAgentSessions, chatkitWorkspaceBootstrap, chatkitWorkspaceConversationSnapshot, chatkitWorkspaceCreateSession, chatkitWorkspaceInterruptSession, chatkitWorkspaceMessages, chatkitWorkspaceRenameThread, chatkitWorkspaceSendMessage, chatkitWorkspaceSidebar, chatkitWorkspaceSubmitTurn, chatkitWorkspaceUpdateSessionReadState, checkMemoryBankHealth, checkPersonalMemoryBankHealth, claimTemporaryAccount, clearPersonalMemoryBankSynthesizer, completeAttachmentUpload, completeCredentialSetupItem, completeHumanApprovalAction, completeIdentityLink, completeIdentityVerification, completeWikiAssetUpload, configureHostedOpenbotInstance, connectMcpProviderCatalogEntry, connectProxiedMcpServer, createAttachmentUpload, createAttachmentUploads, createCustomToolProvider, createHostedOpenbotDeployment, createHostedOpenbotRelease, createHumanApprovalAction, createIdentity, createIdentityLink, createManagedUserCredential, createMcpServerInstance, createMemoryBank, createMessage, createOrganization, createOrgOidcProvider, createPersonalMcpServerInstance, createPersonalMemoryBank, createPersonalSkill, createPersonalSkillRegistry, createPersonalToolGroupInstance, createPersonalUserCredential, createPersonalWiki, createPersonalWikiPage, createProxyToken, createResourceServerCredential, createSession, createSkill, createSkillRegistry, createTeam, createTeamGroup, createTemporaryAccount, createToolGroupInstance, createTrustedRuntime, createTrustedSkillProvider, createUserCredential, createWiki, createWikiAssetUpload, createWikiPage, createWikiPageType, createWikiPageTypeVersion, createWikiRelationshipType, createWikiRelationshipTypeVersion, credentialGenericOauthCallback, deleteAttachment, deleteCustomToolProvider, deleteManagedUserCredential, deleteMcpServerInstance, deleteMemoryBank, deleteMemoryDocument, deleteMessage, deleteOrganization, deleteOrgOidcProvider, deletePersonalMcpServerInstance, deletePersonalMemoryBank, deletePersonalMemoryDocument, deletePersonalSkill, deletePersonalSkillRegistry, deletePersonalToolGroupInstance, deletePersonalWiki, deletePersonalWikiPage, deleteProxiedMcpServer, deleteResourceServerCredential, deleteSelfAvatar, deleteSkill, deleteSkillRegistry, deleteSynthesisSessionMemory, deleteTeam, deleteTeamGroup, deleteToolGroupInstance, deleteTrustedRuntime, deleteUserCredential, deleteVerifiedIdentityLink, deleteWiki, deleteWikiAsset, deleteWikiPage, deleteWikiPageRelationship, deleteWikiPageType, deleteWikiPageTypeVersion, deleteWikiRelationshipType, disableCustomToolProvider, disableProxiedMcpServer, disableTool, downloadAttachmentContent, downloadSkillPackageFile, downloadWikiAsset, downloadWikiAssetContent, enableAndBindProviderTools, enableCustomToolProvider, enableProxiedMcpServer, enableTool, encryptPersonalUserCredentialConfiguration, encryptResourceServerConfiguration, encryptUserCredentialConfiguration, exchangeOauthCode, expireTemporaryAccounts, exportMemoryBankTemplate, exportPersonalMemoryBankTemplate, finalizeHostedOpenbotRelease, generateLocalRuntimeTunnelApiKey, generateTemporaryAccountClaimUrl, getAttachmentDownloadUrl, getCommonProviderInstallation, getCredentialSetupItem, getCustomToolProvider, getHostedOpenbotBootstrapBundle, getHostedOpenbotInstance, getHostedOpenbotRelease, getHumanApprovalAction, getIdentity, getIdentityVerification, getLocalRuntimeTunnelApiKey, getLocalRuntimeTunnelConnector, getManagedUserCredentialSecret, getMcpServerInstance, getMemoryBank, getMemoryBankConfig, getMemoryBankDocument, getMessage, getMessageDeliveries, getOpenbotPluginsCatalog, getOrganization, getOrgOidcProvider, getPersonalMcpServerInstance, getPersonalMemoryBank, getPersonalMemoryBankConfig, getPersonalMemoryBankDocument, getPersonalSkill, getPersonalSkillRegistry, getPersonalToolGroupInstance, getPersonalWiki, getPersonalWikiPage, getProviderProvisioningHumanAction, getProxiedMcpServer, getProxiedSkillProvider, getResourceServerCredential, getRuntimeConfig, getSelfAvatar, getSelfProfile, getSessionEventHistory, getSkill, getSkillPackage, getSkillRegistry, getSkillRegistrySkill, getSkillRegistrySkillByTitle, getSkillRegistrySkillDescription, getTeam, getTeamGroup, getToolGroupInstance, getToolsOpenapiSpec, getTrustedRuntime, getUserCredential, getWiki, getWikiPage, getWikiPageBacklinks, getWikiPageNeighborhood, getWikiPageRelationship, getWikiPageType, getWikiPageTypeVersion, getWikiRelationshipType, getWikiRelationshipTypeVersion, grepPersonalWikiPages, grepWikiPages, healthCheck, importMemoryBankTemplate, importPersonalMemoryBankTemplate, initiateIdentityVerification, inspectWikiAssetReferences, inviteTeamUsers, invokeCustomTool, invokeTool, issueHostedOpenbotGitToken, issueOpenbotChatkitRealtimeTicket, issueProxyRealtimeTicket, linkTeamIdentity, listAvailableToolGroups, listCommonProviderInstallationOwnershipGrants, listCommonProviderInstallations, listCommonProviderInstallationVisibilityGrants, listCredentialSetupItems, listCustomToolProviders, listIdentities, listIdentityTeams, listInboxAgents, listInboxes, listManagedUserCredentials, listMcpProviderCatalog, listMcpResourceOwnershipGrants, listMcpResourceVisibilityGrants, listMcpServerInstances, listMemoryBankDocuments, listMemoryBankOwnershipGrants, listMemoryBanks, listMemoryBankSourceBindings, listMemoryBankVisibilityGrants, listMemorySourceBindings, listMessages, listOpenbotDeployments, listOrganizationMembers, listOrganizations, listOrganizationTeamGroups, listOrgOidcProviders, listPersonalMcpServerInstances, listPersonalMemoryBankDocuments, listPersonalMemoryBankOwnershipGrants, listPersonalMemoryBanks, listPersonalMemoryBankSourceBindings, listPersonalMemoryBankVisibilityGrants, listPersonalMemorySourceBindings, listPersonalRegistryOwnershipGrants, listPersonalRegistryVisibilityGrants, listPersonalRscOwnershipGrants, listPersonalRscVisibilityGrants, listPersonalSkillOwnershipGrants, listPersonalSkillRegistries, listPersonalSkills, listPersonalSkillVisibilityGrants, listPersonalToolGroupInstances, listPersonalUcOwnershipGrants, listPersonalUcVisibilityGrants, listPersonalWikiOwnershipGrants, listPersonalWikiPages, listPersonalWikis, listPersonalWikiVisibilityGrants, listProviderProvisionerCatalog, listProxiedMcpServers, listProxiedSkillProviders, listProxyTokens, listPublicAvailableToolGroups, listResourceServerCredentials, listRscOwnershipGrants, listRscVisibilityGrants, listSessionInboxInstances, listSessionResourceGrants, listSessions, listSessionUserMembers, listSignalProviderGrants, listSkillOwnershipGrants, listSkillRegistries, listSkillRegistryOwnershipGrants, listSkillRegistrySkillSummaries, listSkillRegistryVisibilityGrants, listSkills, listSkillVisibilityGrants, listTeamGroupMembers, listTeamGroups, listTeamInvitations, listTeamMembers, listTeams, listToolDeploymentsByAlias, listToolGroupInstances, listToolGroupInstancesGroupedByTool, listTools, listTrustedRuntimes, listUcOwnershipGrants, listUcVisibilityGrants, listUserCredentials, listVerifiedIdentityLinks, listVisibleMemoryBanks, listWikiAssets, listWikiOntologyInstallations, listWikiOntologyTemplates, listWikiOwnershipGrants, listWikiPageAssets, listWikiPageRelationships, listWikiPageRevisions, listWikiPages, listWikiPageTypes, listWikiPageTypeVersions, listWikiRelationshipTypes, listWikiRelationshipTypeVersions, listWikis, listWikiVisibilityGrants, mcpProtocolDelete, mcpProtocolGet, mcpProtocolPost, mcpServerPlaygroundChat, migrateWikiPageType, moveWikiPage, observeSession, onboardOrganization, type Options, personalMcpProtocolDelete, personalMcpProtocolGet, personalMcpProtocolPost, previewIdentityLink, previewWikiPageTypeMigration, providerProvisioningCallback, providerSetupCatalog, providerSetupResume, providerSetupStart, provisionIdentityTeam, recallMemory, recallPersonalMemory, recallSynthesisSessionMemory, reconcileOpenbotAgentBundle, redirectTemporaryAccountClaimPage, reflectMemory, reflectPersonalMemory, refreshCustomToolProvider, refreshProxiedMcpServer, registerOauthClient, registerOpenbotDeployment, registerTeamOauthClient, removeCommonProviderInstallationOwnershipGrant, removeCommonProviderInstallationVisibilityGrant, removeIdentityIdentifier, removeIdentityTeam, removeMcpResourceOwnershipGrant, removeMcpResourceVisibilityGrant, removeMcpServerInstanceFunction, removeMemoryBankOwnershipGrant, removeMemoryBankVisibilityGrant, removeOrganizationMember, removePersonalMemoryBankOwnershipGrant, removePersonalMemoryBankVisibilityGrant, removePersonalRegistryOwnershipGrant, removePersonalRegistryVisibilityGrant, removePersonalRscOwnershipGrant, removePersonalRscVisibilityGrant, removePersonalSkillOwnershipGrant, removePersonalSkillVisibilityGrant, removePersonalUcOwnershipGrant, removePersonalUcVisibilityGrant, removePersonalWikiOwnershipGrant, removePersonalWikiVisibilityGrant, removeRscOwnershipGrant, removeRscVisibilityGrant, removeSessionResourceGrant, removeSessionUserMember, removeSignalProviderGrant, removeSkillOwnershipGrant, removeSkillRegistryOwnershipGrant, removeSkillRegistryVisibilityGrant, removeSkillVisibilityGrant, removeTeamGroupMember, removeTeamMember, removeUcOwnershipGrant, removeUcVisibilityGrant, removeWikiOwnershipGrant, removeWikiVisibilityGrant, renameProxyToken, replaceMemorySourceBindings, replacePersonalMemorySourceBindings, resetMemoryBankConfig, resetPersonalMemoryBankConfig, resolveIdentity, resumeCredentialSetupItem, resumeProviderAppProvisioning, resumeUserCredentialBrokering, retainMemoryDocument, retainPersonalMemoryDocument, retainSynthesisSessionMemory, retryMemorySourceSync, retryPersonalMemorySourceBindings, retryWiki, reverseProxyAddProfileOwnershipGrant, reverseProxyAddProfileVisibilityGrant, reverseProxyCreateProfile, reverseProxyDeleteProfile, reverseProxyGetProfile, reverseProxyListProfileOwnershipGrants, reverseProxyListProfiles, reverseProxyListProfileVisibilityGrants, reverseProxyListProviders, reverseProxyProxyGet, reverseProxyProxyPost, reverseProxyRemoveProfileOwnershipGrant, reverseProxyRemoveProfileVisibilityGrant, reverseProxySetProfileOwnership, reverseProxySetProfileVisibility, reverseProxyUpdateProfile, revokeLocalRuntimeTunnelApiKey, revokeProxyToken, revokeTeamInvitation, rotateCustomToolProviderSigningKey, routeAuthCallback, routeCreateApiKey, routeDeleteApiKey, routeGetJwks, routeListApiKeys, routeListDebugAuthProfiles, routeLogout, routeRefreshToken, routeResolveLoginProvider, routeSelectDebugAuthProfile, routeStartAuthorization, searchSkillRegistry, setCommonProviderInstallationOwnership, setCommonProviderInstallationVisibility, setMcpResourceOwnership, setMcpResourceVisibility, setMemoryBankOwnershipMode, setMemoryBankVisibility, setPersonalMemoryBankOwnershipMode, setPersonalMemoryBankVisibility, setPersonalRegistryOwnershipMode, setPersonalRegistryVisibility, setPersonalRscOwnership, setPersonalRscVisibility, setPersonalSkillOwnershipMode, setPersonalSkillVisibility, setPersonalUcOwnership, setPersonalUcVisibility, setPersonalWikiOwnershipMode, setPersonalWikiVisibility, setRscOwnership, setRscVisibility, setSelfOpenbotAvatar, setSignalProviderOwnership, setSignalProviderVisibility, setSkillOwnershipMode, setSkillRegistryOwnershipMode, setSkillRegistryVisibility, setSkillVisibility, setUcOwnership, setUcVisibility, setWikiOwnershipMode, setWikiVisibility, signalsAddPersonalProviderGrant, signalsCreatePersonalProviderInstance, signalsCreateProviderInstance, signalsDeletePersonalProviderInstance, signalsDeleteProviderInstance, signalsGetDelivery, signalsGetPersonalDelivery, signalsGetPersonalProviderInstance, signalsGetProviderInstance, signalsListAvailableProviders, signalsListDeliveries, signalsListPersonalAvailableProviders, signalsListPersonalDeliveries, signalsListPersonalProviderGrants, signalsListPersonalProviderInstances, signalsListProviderInstances, signalsRemovePersonalProviderGrant, signalsRetryDelivery, signalsRetryPersonalDelivery, signalsSetPersonalProviderOwnership, signalsSetPersonalProviderVisibility, signalsTriggerFake, signalsUpdatePersonalProviderInstance, signalsUpdateProviderInstance, startCredentialSetupItem, startOauthDeviceCode, startProviderAppProvisioning, startProxiedMcpServerOauth, startUserCredentialBrokering, stateExport, stateGetImport, stateImport, stateImportEvents, statePlan, stateResolveSource, stateSchema, stateSchemaJson, stateValidate, tildePayPaymentMpp, tildePayPaymentX402, tildePayProvision, tildePayWalletCreate, tildePayWalletSummary, tildePayWalletWaitUntilBalance, traverseWikiGraph, unbindToolGroupFromMcpServer, updateCustomToolProvider, updateHostedOpenbotComputerImage, updateIdentity, updateManagedUserCredential, updateMcpServerInstance, updateMcpServerInstanceFunction, updateMemoryBank, updateMemoryBankConfig, updateOrganization, updateOrganizationMemberRole, updateOrgOidcProvider, updatePersonalMcpServerInstance, updatePersonalMemoryBank, updatePersonalMemoryBankConfig, updatePersonalSkill, updatePersonalSkillRegistry, updatePersonalToolGroupInstance, updatePersonalWiki, updatePersonalWikiPage, updateResourceServerCredential, updateSelfProfile, updateSessionOwnership, updateSessionVisibility, updateSkill, updateSkillRegistry, updateTeam, updateTeamGroup, updateTeamMemberRole, updateToolBoundParams, updateToolGroupInstance, updateTrustedRuntime, updateUserCredential, updateWiki, updateWikiAsset, updateWikiPage, updateWikiPageRelationship, updateWikiPageType, updateWikiRelationshipType, uploadAttachmentContent, uploadHostedOpenbotReleaseFile, uploadSelfAvatar, uploadWikiAssetContent, upsertWikiPageRelationship, validateSynthesisSessionBatch, validateWikiPageTypeData, verifyOrgOidcProviderDomain, walletCreate, walletCustomerCreate, walletCustomerGet, walletCustomerKycGet, walletCustomerList, walletGet, walletGetBalances, walletGetCryptoDepositInformation, walletGetFiatDepositInformation, walletList, walletMakeMppPayment, walletMakeX402Payment, walletTransactionHistoryList, walletTransactionHistoryRefresh, walletVirtualAccountCreate, walletWaitUntilBalance, whoami } from './sdk.gen'; +export { type AcceptInvitationData, type AcceptInvitationError, type AcceptInvitationErrors, type AcceptInvitationRequest, type AcceptInvitationResponse, type AcceptInvitationResponse2, type AcceptInvitationResponses, type AccountOrganizationMembership, type AddChatKitParticipantRequestInner, type AddCommonProviderInstallationOwnershipGrantData, type AddCommonProviderInstallationOwnershipGrantResponse, type AddCommonProviderInstallationOwnershipGrantResponses, type AddCommonProviderInstallationVisibilityGrantData, type AddCommonProviderInstallationVisibilityGrantResponse, type AddCommonProviderInstallationVisibilityGrantResponses, type AddIdentityTeamData, type AddIdentityTeamResponse, type AddIdentityTeamResponses, type AddMcpResourceOwnershipGrantData, type AddMcpResourceOwnershipGrantResponse, type AddMcpResourceOwnershipGrantResponses, type AddMcpResourceVisibilityGrantData, type AddMcpResourceVisibilityGrantResponse, type AddMcpResourceVisibilityGrantResponses, type AddMcpServerInstanceFunctionBody, type AddMcpServerInstanceFunctionData, type AddMcpServerInstanceFunctionError, type AddMcpServerInstanceFunctionErrors, type AddMcpServerInstanceFunctionResponse, type AddMcpServerInstanceFunctionResponses, type AddMemoryBankOwnershipGrantData, type AddMemoryBankOwnershipGrantResponse, type AddMemoryBankOwnershipGrantResponses, type AddMemoryBankVisibilityGrantData, type AddMemoryBankVisibilityGrantResponse, type AddMemoryBankVisibilityGrantResponses, type AddOrganizationMemberData, type AddOrganizationMemberError, type AddOrganizationMemberErrors, type AddOrganizationMemberRequest, type AddOrganizationMemberResponse, type AddOrganizationMemberResponses, type AddPersonalMemoryBankOwnershipGrantData, type AddPersonalMemoryBankOwnershipGrantResponse, type AddPersonalMemoryBankOwnershipGrantResponses, type AddPersonalMemoryBankVisibilityGrantData, type AddPersonalMemoryBankVisibilityGrantResponse, type AddPersonalMemoryBankVisibilityGrantResponses, type AddPersonalRegistryOwnershipGrantData, type AddPersonalRegistryOwnershipGrantResponse, type AddPersonalRegistryOwnershipGrantResponses, type AddPersonalRegistryVisibilityGrantData, type AddPersonalRegistryVisibilityGrantResponse, type AddPersonalRegistryVisibilityGrantResponses, type AddPersonalRscOwnershipGrantData, type AddPersonalRscOwnershipGrantResponse, type AddPersonalRscOwnershipGrantResponses, type AddPersonalRscVisibilityGrantData, type AddPersonalRscVisibilityGrantResponse, type AddPersonalRscVisibilityGrantResponses, type AddPersonalSkillOwnershipGrantData, type AddPersonalSkillOwnershipGrantResponse, type AddPersonalSkillOwnershipGrantResponses, type AddPersonalSkillVisibilityGrantData, type AddPersonalSkillVisibilityGrantResponse, type AddPersonalSkillVisibilityGrantResponses, type AddPersonalUcOwnershipGrantData, type AddPersonalUcOwnershipGrantResponse, type AddPersonalUcOwnershipGrantResponses, type AddPersonalUcVisibilityGrantData, type AddPersonalUcVisibilityGrantResponse, type AddPersonalUcVisibilityGrantResponses, type AddPersonalWikiOwnershipGrantData, type AddPersonalWikiOwnershipGrantResponse, type AddPersonalWikiOwnershipGrantResponses, type AddPersonalWikiVisibilityGrantData, type AddPersonalWikiVisibilityGrantResponse, type AddPersonalWikiVisibilityGrantResponses, type AddProviderSkillsToRegistryRequest, type AddProviderSkillsToSkillRegistryData, type AddProviderSkillsToSkillRegistryError, type AddProviderSkillsToSkillRegistryErrors, type AddProviderSkillsToSkillRegistryResponse, type AddProviderSkillsToSkillRegistryResponses, type AddRscOwnershipGrantData, type AddRscOwnershipGrantResponse, type AddRscOwnershipGrantResponses, type AddRscVisibilityGrantData, type AddRscVisibilityGrantResponse, type AddRscVisibilityGrantResponses, type AddSessionResourceGrantData, type AddSessionResourceGrantError, type AddSessionResourceGrantErrors, type AddSessionResourceGrantResponse, type AddSessionResourceGrantResponses, type AddSessionUserMemberData, type AddSessionUserMemberError, type AddSessionUserMemberErrors, type AddSessionUserMemberRequest, type AddSessionUserMemberResponse, type AddSessionUserMemberResponses, type AddSignalProviderGrantData, type AddSignalProviderGrantResponse, type AddSignalProviderGrantResponses, type AddSkillOwnershipGrantData, type AddSkillOwnershipGrantResponse, type AddSkillOwnershipGrantResponses, type AddSkillRegistryOwnershipGrantData, type AddSkillRegistryOwnershipGrantResponse, type AddSkillRegistryOwnershipGrantResponses, type AddSkillRegistryVisibilityGrantData, type AddSkillRegistryVisibilityGrantResponse, type AddSkillRegistryVisibilityGrantResponses, type AddSkillVisibilityGrantData, type AddSkillVisibilityGrantResponse, type AddSkillVisibilityGrantResponses, type AddTeamGroupMemberData, type AddTeamGroupMemberError, type AddTeamGroupMemberErrors, type AddTeamGroupMemberResponses, type AddTeamMemberBody, type AddTeamMemberData, type AddTeamMemberError, type AddTeamMemberErrors, type AddTeamMemberResponse, type AddTeamMemberResponses, type AddUcOwnershipGrantData, type AddUcOwnershipGrantResponse, type AddUcOwnershipGrantResponses, type AddUcVisibilityGrantData, type AddUcVisibilityGrantResponse, type AddUcVisibilityGrantResponses, type AddWikiOwnershipGrantData, type AddWikiOwnershipGrantResponse, type AddWikiOwnershipGrantResponses, type AddWikiVisibilityGrantData, type AddWikiVisibilityGrantResponse, type AddWikiVisibilityGrantResponses, type Agent, AgentCredentialStrategy, type AgentEndpointSpec, AgentEventVisibility, type AgentJob, type AgentJobArtifact, type AgentJobBudget, type AgentJobPaginatedResponse, AgentJobStatus, type AgentMultiplayerPermissions, type AgentObservabilityConfiguration, type AgentObservabilityPolicy, type AgentPermissions, type AgentProvisioningOperation, type AgentProvisioningOutputs, AgentProvisioningStatus, type AgentReachScope, type AgentRun, type AgentRunBudget, type AgentRunEffectReceipt, type AgentRunJobContext, AgentRunStatus, type AgentSpec, type AgentToolCatalogEntry, AgentToolSource, AgentToolStatus, type AiCreditReservation, type AiCreditTopup, type AppendAgentRunStepInner, type ApplyOntologyTemplateResult, type ApplyWikiOntologyTemplateData, type ApplyWikiOntologyTemplateResponse, type ApplyWikiOntologyTemplateResponses, type Approval, ApprovalDecision, type AssignMemoryBankSynthesizerBody, type AssignPersonalMemoryBankSynthesizerData, type AssignPersonalMemoryBankSynthesizerResponse, type AssignPersonalMemoryBankSynthesizerResponses, type AssociatedToolkit, type Attachment, AttachmentUploadStatus, type AuthorizeOauthDeviceCodeData, type AuthorizeOauthDeviceCodeError, type AuthorizeOauthDeviceCodeErrors, type AuthorizeOauthDeviceCodeResponses, type AutomationsAddGrantData, type AutomationsAddGrantResponse, type AutomationsAddGrantResponses, type AutomationsDeleteData, type AutomationsDeleteResponse, type AutomationsDeleteResponses, type AutomationsGetData, type AutomationsGetError, type AutomationsGetErrors, type AutomationsGetResponse, type AutomationsGetResponses, type AutomationsListData, type AutomationsListExecutionsData, type AutomationsListExecutionsResponse, type AutomationsListExecutionsResponses, type AutomationsListGrantsData, type AutomationsListGrantsResponse, type AutomationsListGrantsResponses, type AutomationsListResponse, type AutomationsListResponses, type AutomationsPutData, type AutomationsPutError, type AutomationsPutErrors, type AutomationsPutResponse, type AutomationsPutResponses, type AutomationsRemoveGrantData, type AutomationsRemoveGrantResponses, type AutomationsRunData, type AutomationsRunResponse, type AutomationsRunResponses, type AutomationsSetOwnershipData, type AutomationsSetOwnershipResponse, type AutomationsSetOwnershipResponses, type AutomationsSetVisibilityData, type AutomationsSetVisibilityResponse, type AutomationsSetVisibilityResponses, type AutoProvisionSlackChannelInstallationRequestInner, type AutoProvisionSlackChannelInstallationResponse, type AutoProvisionToolGroupInstanceData, type AutoProvisionToolGroupInstanceError, type AutoProvisionToolGroupInstanceErrors, type AutoProvisionToolGroupInstanceParamsInner, type AutoProvisionToolGroupInstanceResponse, type AutoProvisionToolGroupInstanceResponse2, type AutoProvisionToolGroupInstanceResponses, type AutumnWebhookHandlerData, type AutumnWebhookHandlerErrors, type AutumnWebhookHandlerResponses, type BillingAiCreditReceiptCommitData, type BillingAiCreditReceiptCommitResponse, type BillingAiCreditReceiptCommitResponses, type BillingAiCreditReservationReleaseData, type BillingAiCreditReservationReleaseResponse, type BillingAiCreditReservationReleaseResponses, type BillingAiCreditReserveData, type BillingAiCreditReserveResponse, type BillingAiCreditReserveResponses, type BillingAiCreditTopupCreateData, type BillingAiCreditTopupCreateError, type BillingAiCreditTopupCreateErrors, type BillingAiCreditTopupCreateResponse, type BillingAiCreditTopupCreateResponses, type BillingAiGatewayEnsureData, type BillingAiGatewayEnsureError, type BillingAiGatewayEnsureErrors, type BillingAiGatewayEnsureResponse, type BillingAiGatewayEnsureResponses, type BillingAutumnBridgePostData, type BillingAutumnBridgePostError, type BillingAutumnBridgePostErrors, type BillingAutumnBridgePostResponses, type BillingContext, type BillingContextGetData, type BillingContextGetError, type BillingContextGetErrors, type BillingContextGetResponse, type BillingContextGetResponses, type BillingEnrollAccountData, type BillingEnrollAccountError, type BillingEnrollAccountErrors, type BillingEnrollAccountResponse, type BillingEnrollAccountResponses, type BillingProductEnrollCurrentHumanData, type BillingProductEnrollCurrentHumanError, type BillingProductEnrollCurrentHumanErrors, type BillingProductEnrollCurrentHumanResponse, type BillingProductEnrollCurrentHumanResponses, BillingProductId, type BillingRedirectData, type BillingRedirectErrors, type BillingRemoveAccountSeatData, type BillingRemoveAccountSeatError, type BillingRemoveAccountSeatErrors, type BillingRemoveAccountSeatResponse, type BillingRemoveAccountSeatResponses, type BillingWebhookStripeDeprecatedData, type BillingWebhookStripeDeprecatedResponse, type BillingWebhookStripeDeprecatedResponses, type BindToolGroupToMcpServerData, type BindToolGroupToMcpServerError, type BindToolGroupToMcpServerErrors, type BindToolGroupToMcpServerResponse, type BindToolGroupToMcpServerResponses, type BrokerAction, type BrokerActionRedirect, type BrokerInput, type BrokerState, type BulkAddMcpServerInstanceFunctionItem, type BulkAddMcpServerInstanceFunctionsBody, type BulkAddMcpServerInstanceFunctionsData, type BulkAddMcpServerInstanceFunctionsError, type BulkAddMcpServerInstanceFunctionsErrors, type BulkAddMcpServerInstanceFunctionsResponse, type BulkAddMcpServerInstanceFunctionsResponses, type BulkRemoveMcpServerInstanceFunctionsBody, type BulkRemoveMcpServerInstanceFunctionsData, type BulkRemoveMcpServerInstanceFunctionsError, type BulkRemoveMcpServerInstanceFunctionsErrors, type BulkRemoveMcpServerInstanceFunctionsResponse, type BulkRemoveMcpServerInstanceFunctionsResponses, type CacheConvertedMessagesRequest, type CacheConvertedMessagesResponse, type CachedAgentRepresentation, type CancelHumanApprovalActionData, type CancelHumanApprovalActionError, type CancelHumanApprovalActionErrors, type CancelHumanApprovalActionRequest, type CancelHumanApprovalActionResponse, type CancelHumanApprovalActionResponses, type CapabilityChangeApproval, CapabilityChangeDecision, type ChangePersonalWikiOwnershipData, type ChangePersonalWikiOwnershipResponse, type ChangePersonalWikiOwnershipResponses, type ChangeResourceOwnershipRequest, type ChangeWikiOwnershipData, type ChangeWikiOwnershipResponse, type ChangeWikiOwnershipResponses, type ChannelDeliveryOptions, type ChatApproval, ChatApprovalDecision, type ChatChannelInstallationInstructions, ChatChannelPlatformScope, type ChatChannelProvider, type ChatChannelProviderAuthMethod, type ChatChannelSubscriptionOption, type ChatkitAddAgentResourceGrantData, type ChatkitAddAgentResourceGrantError, type ChatkitAddAgentResourceGrantErrors, type ChatkitAddAgentResourceGrantResponse, type ChatkitAddAgentResourceGrantResponses, type ChatkitAddSessionParticipantData, type ChatkitAddSessionParticipantError, type ChatkitAddSessionParticipantErrors, type ChatkitAddSessionParticipantResponse, type ChatkitAddSessionParticipantResponses, type ChatKitAgent, type ChatKitAgentAvatar, ChatKitAgentConcurrencyPolicy, type ChatKitAgentInvocationActor, type ChatKitAgentJobExecutionContext, type ChatKitAgentPaginatedResponse, type ChatKitAgentRunExecutionContext, type ChatKitAgentTurnQueueItem, type ChatKitAgentTurnQueueItemPaginatedResponse, ChatKitAgentTurnQueueStatus, type ChatkitAppendAgentRunStepData, type ChatkitAppendAgentRunStepResponse, type ChatkitAppendAgentRunStepResponses, type ChatkitApproveSelfExtensionProposalData, type ChatkitApproveSelfExtensionProposalResponse, type ChatkitApproveSelfExtensionProposalResponses, type ChatKitAutomaticMemoryItem, ChatKitAutomaticMemoryMode, type ChatKitAutomaticMemoryProjection, type ChatkitAutoProvisionSlackChannelInstallationData, type ChatkitAutoProvisionSlackChannelInstallationError, type ChatkitAutoProvisionSlackChannelInstallationErrors, type ChatkitAutoProvisionSlackChannelInstallationResponse, type ChatkitAutoProvisionSlackChannelInstallationResponses, type ChatkitCacheConvertedMessagesData, type ChatkitCacheConvertedMessagesError, type ChatkitCacheConvertedMessagesErrors, type ChatkitCacheConvertedMessagesResponse, type ChatkitCacheConvertedMessagesResponses, type ChatkitCancelSelfExtensionProposalData, type ChatkitCancelSelfExtensionProposalResponse, type ChatkitCancelSelfExtensionProposalResponses, type ChatKitChatProviderConfigField, type ChatkitClaimAgentResourceBundleOutputsData, type ChatkitClaimAgentResourceBundleOutputsResponse, type ChatkitClaimAgentResourceBundleOutputsResponses, type ChatkitClaimAgentRunsData, type ChatkitClaimAgentRunsResponse, type ChatkitClaimAgentRunsResponses, type ChatkitClaimSelfExtensionProposalOutputsData, type ChatkitClaimSelfExtensionProposalOutputsResponse, type ChatkitClaimSelfExtensionProposalOutputsResponses, type ChatkitCollectAgentJobResultData, type ChatkitCollectAgentJobResultResponse, type ChatkitCollectAgentJobResultResponses, type ChatKitCompactedHistoryResponse, type ChatKitCompactionCheckpoint, type ChatKitCompactionLifecycleInput, type ChatkitCompleteSlackProviderProvisionedSetupData, type ChatkitCompleteSlackProviderProvisionedSetupError, type ChatkitCompleteSlackProviderProvisionedSetupErrors, type ChatkitCompleteSlackProviderProvisionedSetupResponse, type ChatkitCompleteSlackProviderProvisionedSetupResponses, type ChatkitCompleteSlackSelfManagedSetupData, type ChatkitCompleteSlackSelfManagedSetupError, type ChatkitCompleteSlackSelfManagedSetupErrors, type ChatkitCompleteSlackSelfManagedSetupResponse, type ChatkitCompleteSlackSelfManagedSetupResponses, type ChatkitControlAgentRunData, type ChatkitControlAgentRunResponse, type ChatkitControlAgentRunResponses, type ChatkitCreateAgentRunData, type ChatkitCreateAgentRunResponse, type ChatkitCreateAgentRunResponses, type ChatkitCreateCustomProviderData, type ChatkitCreateCustomProviderError, type ChatkitCreateCustomProviderErrors, type ChatkitCreateCustomProviderResponse, type ChatkitCreateCustomProviderResponses, type ChatkitCreateGoalData, type ChatkitCreateGoalResponse, type ChatkitCreateGoalResponses, type ChatkitCreateRoomInvitationData, type ChatkitCreateRoomInvitationError, type ChatkitCreateRoomInvitationErrors, type ChatkitCreateRoomInvitationResponse, type ChatkitCreateRoomInvitationResponses, type ChatkitCreateSessionData, type ChatkitCreateSessionError, type ChatkitCreateSessionErrors, type ChatkitCreateSessionResponse, type ChatkitCreateSessionResponses, type ChatkitCreateSlackChannelInstallationData, type ChatkitCreateSlackChannelInstallationError, type ChatkitCreateSlackChannelInstallationErrors, type ChatkitCreateSlackChannelInstallationResponse, type ChatkitCreateSlackChannelInstallationResponses, type ChatkitCreateTaskData, type ChatkitCreateTaskResponse, type ChatkitCreateTaskResponses, type ChatkitCustomProviderRuntimeData, type ChatkitCustomProviderRuntimeError, type ChatkitCustomProviderRuntimeErrors, type ChatkitCustomProviderRuntimeResponse, type ChatkitCustomProviderRuntimeResponses, type ChatkitDecideCapabilityChangeData, type ChatkitDecideCapabilityChangeResponse, type ChatkitDecideCapabilityChangeResponses, type ChatkitDecideRoomInvitationData, type ChatkitDecideRoomInvitationError, type ChatkitDecideRoomInvitationErrors, type ChatkitDecideRoomInvitationResponse, type ChatkitDecideRoomInvitationResponses, type ChatkitDelegateAgentJobData, type ChatkitDelegateAgentJobResponse, type ChatkitDelegateAgentJobResponses, type ChatkitDeleteAgentData, type ChatkitDeleteAgentError, type ChatkitDeleteAgentErrors, type ChatkitDeleteAgentResponse, type ChatkitDeleteAgentResponses, type ChatkitDeleteAgentTurnQueueItemData, type ChatkitDeleteAgentTurnQueueItemError, type ChatkitDeleteAgentTurnQueueItemErrors, type ChatkitDeleteAgentTurnQueueItemResponse, type ChatkitDeleteAgentTurnQueueItemResponses, type ChatkitDeleteChatProviderData, type ChatkitDeleteChatProviderError, type ChatkitDeleteChatProviderErrors, type ChatkitDeleteChatProviderResponse, type ChatkitDeleteChatProviderResponses, type ChatkitDeleteCustomProviderData, type ChatkitDeleteCustomProviderError, type ChatkitDeleteCustomProviderErrors, type ChatkitDeleteCustomProviderResponse, type ChatkitDeleteCustomProviderResponses, type ChatkitDisableCustomProviderData, type ChatkitDisableCustomProviderError, type ChatkitDisableCustomProviderErrors, type ChatkitDisableCustomProviderResponse, type ChatkitDisableCustomProviderResponses, type ChatkitEnableCustomProviderData, type ChatkitEnableCustomProviderError, type ChatkitEnableCustomProviderErrors, type ChatkitEnableCustomProviderResponse, type ChatkitEnableCustomProviderResponses, type ChatKitExecutionContext, type ChatkitFinishAgentRunEffectData, type ChatkitFinishAgentRunEffectResponse, type ChatkitFinishAgentRunEffectResponses, type ChatkitGetActiveAgentRunData, type ChatkitGetActiveAgentRunResponse, type ChatkitGetActiveAgentRunResponses, type ChatkitGetAgentAvatarData, type ChatkitGetAgentAvatarError, type ChatkitGetAgentAvatarErrors, type ChatkitGetAgentAvatarResponse, type ChatkitGetAgentAvatarResponses, type ChatkitGetAgentData, type ChatkitGetAgentError, type ChatkitGetAgentErrors, type ChatkitGetAgentJobData, type ChatkitGetAgentJobResponse, type ChatkitGetAgentJobResponses, type ChatkitGetAgentObservabilityData, type ChatkitGetAgentObservabilityError, type ChatkitGetAgentObservabilityErrors, type ChatkitGetAgentObservabilityResponse, type ChatkitGetAgentObservabilityResponses, type ChatkitGetAgentResourceBundleProvisioningData, type ChatkitGetAgentResourceBundleProvisioningResponse, type ChatkitGetAgentResourceBundleProvisioningResponses, type ChatkitGetAgentResponse, type ChatkitGetAgentResponses, type ChatkitGetAgentRunData, type ChatkitGetAgentRunEffectData, type ChatkitGetAgentRunEffectResponse, type ChatkitGetAgentRunEffectResponses, type ChatkitGetAgentRunResponse, type ChatkitGetAgentRunResponses, type ChatkitGetCompactedHistoryData, type ChatkitGetCompactedHistoryError, type ChatkitGetCompactedHistoryErrors, type ChatkitGetCompactedHistoryResponse, type ChatkitGetCompactedHistoryResponses, type ChatkitGetCustomConnectionData, type ChatkitGetCustomConnectionError, type ChatkitGetCustomConnectionErrors, type ChatkitGetCustomConnectionResponse, type ChatkitGetCustomConnectionResponses, type ChatkitGetCustomProviderData, type ChatkitGetCustomProviderError, type ChatkitGetCustomProviderErrors, type ChatkitGetCustomProviderResponse, type ChatkitGetCustomProviderResponses, type ChatkitGetGoalData, type ChatkitGetGoalResponse, type ChatkitGetGoalResponses, type ChatkitGetLatestCompactionData, type ChatkitGetLatestCompactionError, type ChatkitGetLatestCompactionErrors, type ChatkitGetLatestCompactionResponse, type ChatkitGetLatestCompactionResponses, type ChatkitGetSelfExtensionProposalData, type ChatkitGetSelfExtensionProposalResponse, type ChatkitGetSelfExtensionProposalResponses, type ChatkitGetTaskData, type ChatkitGetTaskResponse, type ChatkitGetTaskResponses, type ChatkitHydrateConvertedMessagesData, type ChatkitHydrateConvertedMessagesError, type ChatkitHydrateConvertedMessagesErrors, type ChatkitHydrateConvertedMessagesResponse, type ChatkitHydrateConvertedMessagesResponses, type ChatKitIdentity, ChatKitIdentityKind, type ChatkitIngestCustomProviderMessageData, type ChatkitIngestCustomProviderMessageError, type ChatkitIngestCustomProviderMessageErrors, type ChatkitIngestCustomProviderMessageResponse, type ChatkitIngestCustomProviderMessageResponses, type ChatkitInvokeSessionProviderToolData, type ChatkitInvokeSessionProviderToolError, type ChatkitInvokeSessionProviderToolErrors, type ChatkitInvokeSessionProviderToolResponse, type ChatkitInvokeSessionProviderToolResponses, type ChatkitJoinSessionData, type ChatkitJoinSessionError, type ChatkitJoinSessionErrors, type ChatkitJoinSessionResponse, type ChatkitJoinSessionResponses, type ChatkitListAgentJobsData, type ChatkitListAgentJobsResponse, type ChatkitListAgentJobsResponses, type ChatkitListAgentResourceGrantsData, type ChatkitListAgentResourceGrantsError, type ChatkitListAgentResourceGrantsErrors, type ChatkitListAgentResourceGrantsResponse, type ChatkitListAgentResourceGrantsResponses, type ChatkitListAgentsData, type ChatkitListAgentsError, type ChatkitListAgentsErrors, type ChatkitListAgentsResponse, type ChatkitListAgentsResponses, type ChatkitListAgentTurnQueueData, type ChatkitListAgentTurnQueueError, type ChatkitListAgentTurnQueueErrors, type ChatkitListAgentTurnQueueResponse, type ChatkitListAgentTurnQueueResponses, type ChatkitListAvailableChatChannelsData, type ChatkitListAvailableChatChannelsError, type ChatkitListAvailableChatChannelsErrors, type ChatkitListAvailableChatChannelsResponse, type ChatkitListAvailableChatChannelsResponses, type ChatkitListAvailableChatProvidersData, type ChatkitListAvailableChatProvidersError, type ChatkitListAvailableChatProvidersErrors, type ChatkitListAvailableChatProvidersResponse, type ChatkitListAvailableChatProvidersResponses, type ChatkitListChatProvidersData, type ChatkitListChatProvidersError, type ChatkitListChatProvidersErrors, type ChatkitListChatProvidersResponse, type ChatkitListChatProvidersResponses, type ChatkitListCustomConnectionsData, type ChatkitListCustomConnectionsError, type ChatkitListCustomConnectionsErrors, type ChatkitListCustomConnectionsResponse, type ChatkitListCustomConnectionsResponses, type ChatkitListCustomConnectionWorkData, type ChatkitListCustomConnectionWorkError, type ChatkitListCustomConnectionWorkErrors, type ChatkitListCustomConnectionWorkResponse, type ChatkitListCustomConnectionWorkResponses, type ChatkitListCustomProviderData, type ChatkitListCustomProviderError, type ChatkitListCustomProviderErrors, type ChatkitListCustomProviderResponse, type ChatkitListCustomProviderResponses, type ChatkitListGoalsData, type ChatkitListGoalsResponse, type ChatkitListGoalsResponses, type ChatkitListMessageHistoryData, type ChatkitListMessageHistoryError, type ChatkitListMessageHistoryErrors, type ChatkitListMessageHistoryResponse, type ChatkitListMessageHistoryResponses, type ChatkitListRoomInvitationsData, type ChatkitListRoomInvitationsError, type ChatkitListRoomInvitationsErrors, type ChatkitListRoomInvitationsResponse, type ChatkitListRoomInvitationsResponses, type ChatkitListSelfExtensionProposalsData, type ChatkitListSelfExtensionProposalsResponse, type ChatkitListSelfExtensionProposalsResponses, type ChatkitListSessionParticipantsData, type ChatkitListSessionParticipantsError, type ChatkitListSessionParticipantsErrors, type ChatkitListSessionParticipantsResponse, type ChatkitListSessionParticipantsResponses, type ChatkitListSessionProviderToolsData, type ChatkitListSessionProviderToolsError, type ChatkitListSessionProviderToolsErrors, type ChatkitListSessionProviderToolsResponse, type ChatkitListSessionProviderToolsResponses, type ChatkitListSessionsData, type ChatkitListSessionsError, type ChatkitListSessionsErrors, type ChatkitListSessionsResponse, type ChatkitListSessionsResponses, type ChatkitListTasksData, type ChatkitListTasksResponse, type ChatkitListTasksResponses, type ChatKitMessageIdentity, type ChatKitParticipant, type ChatKitParticipantInput, ChatKitParticipantMembershipSource, ChatKitParticipantRole, ChatKitParticipantType, type ChatkitPrepareAgentRunEffectData, type ChatkitPrepareAgentRunEffectResponse, type ChatkitPrepareAgentRunEffectResponses, type ChatkitProposeSelfExtensionData, type ChatkitProposeSelfExtensionResponse, type ChatkitProposeSelfExtensionResponses, type ChatKitProviderManifest, type ChatkitProvisionAgentResourceBundleData, type ChatkitProvisionAgentResourceBundleResponse, type ChatkitProvisionAgentResourceBundleResponses, type ChatKitRealtimeSocketTicket, ChatKitRealtimeTicketTransport, type ChatkitRecallAutomaticMemoryData, type ChatkitRecallAutomaticMemoryError, type ChatkitRecallAutomaticMemoryErrors, type ChatkitRecallAutomaticMemoryResponse, type ChatkitRecallAutomaticMemoryResponses, type ChatkitRefreshCustomProviderData, type ChatkitRefreshCustomProviderError, type ChatkitRefreshCustomProviderErrors, type ChatkitRefreshCustomProviderResponse, type ChatkitRefreshCustomProviderResponses, type ChatkitRegisterAgentToolsData, type ChatkitRegisterAgentToolsError, type ChatkitRegisterAgentToolsErrors, type ChatkitRegisterAgentToolsResponse, type ChatkitRegisterAgentToolsResponses, type ChatkitRegisterChatProviderData, type ChatkitRegisterChatProviderError, type ChatkitRegisterChatProviderErrors, type ChatkitRegisterChatProviderResponse, type ChatkitRegisterChatProviderResponses, type ChatkitRegisterHttpVercelAiSdkAgentData, type ChatkitRegisterHttpVercelAiSdkAgentError, type ChatkitRegisterHttpVercelAiSdkAgentErrors, type ChatkitRegisterHttpVercelAiSdkAgentResponse, type ChatkitRegisterHttpVercelAiSdkAgentResponses, type ChatkitRegisterVercelUiChatProviderData, type ChatkitRegisterVercelUiChatProviderError, type ChatkitRegisterVercelUiChatProviderErrors, type ChatkitRegisterVercelUiChatProviderResponse, type ChatkitRegisterVercelUiChatProviderResponses, type ChatkitRejectSelfExtensionProposalData, type ChatkitRejectSelfExtensionProposalResponse, type ChatkitRejectSelfExtensionProposalResponses, type ChatkitRemoveAgentResourceGrantData, type ChatkitRemoveAgentResourceGrantError, type ChatkitRemoveAgentResourceGrantErrors, type ChatkitRemoveAgentResourceGrantResponse, type ChatkitRemoveAgentResourceGrantResponses, type ChatkitRemoveSessionParticipantData, type ChatkitRemoveSessionParticipantError, type ChatkitRemoveSessionParticipantErrors, type ChatkitRemoveSessionParticipantResponse, type ChatkitRemoveSessionParticipantResponses, type ChatkitReorderAgentTurnQueueItemData, type ChatkitReorderAgentTurnQueueItemError, type ChatkitReorderAgentTurnQueueItemErrors, type ChatkitReorderAgentTurnQueueItemResponse, type ChatkitReorderAgentTurnQueueItemResponses, type ChatkitReportCompactionEventData, type ChatkitReportCompactionEventError, type ChatkitReportCompactionEventErrors, type ChatkitReportCompactionEventResponse, type ChatkitReportCompactionEventResponses, type ChatkitReportToolExecutionData, type ChatkitReportToolExecutionError, type ChatkitReportToolExecutionErrors, type ChatkitReportToolExecutionResponse, type ChatkitReportToolExecutionResponses, type ChatKitRequestAgent, type ChatKitRequestAgentAvatar, type ChatkitResumeAgentJobData, type ChatkitResumeAgentJobResponse, type ChatkitResumeAgentJobResponses, type ChatkitRetryCustomConnectionWorkData, type ChatkitRetryCustomConnectionWorkError, type ChatkitRetryCustomConnectionWorkErrors, type ChatkitRetryCustomConnectionWorkResponse, type ChatkitRetryCustomConnectionWorkResponses, type ChatkitRevokeRoomInvitationData, type ChatkitRevokeRoomInvitationError, type ChatkitRevokeRoomInvitationErrors, type ChatkitRevokeRoomInvitationResponse, type ChatkitRevokeRoomInvitationResponses, type ChatkitRollbackSelfExtensionProposalData, type ChatkitRollbackSelfExtensionProposalResponse, type ChatkitRollbackSelfExtensionProposalResponses, type ChatKitRoomInvitation, ChatKitRoomInvitationDecision, type ChatKitRoomInvitationPaginatedResponse, ChatKitRoomInvitationStatus, type ChatkitRotateCustomConnectionCredentialsData, type ChatkitRotateCustomConnectionCredentialsError, type ChatkitRotateCustomConnectionCredentialsErrors, type ChatkitRotateCustomConnectionCredentialsResponse, type ChatkitRotateCustomConnectionCredentialsResponses, type ChatkitRotateCustomProviderData, type ChatkitRotateCustomProviderError, type ChatkitRotateCustomProviderErrors, type ChatkitRotateCustomProviderResponse, type ChatkitRotateCustomProviderResponses, type ChatKitSearchAgent, type ChatkitSearchData, type ChatkitSearchError, type ChatkitSearchErrors, type ChatKitSearchHit, ChatKitSearchHitKind, type ChatKitSearchHitPaginatedResponse, type ChatkitSearchResponse, type ChatkitSearchResponses, type ChatKitSearchSession, type ChatkitSendSessionMessageData, type ChatkitSendSessionMessageError, type ChatkitSendSessionMessageErrors, type ChatkitSendSessionMessageResponse, type ChatkitSendSessionMessageResponses, type ChatKitSessionUserState, type ChatKitSessionWithParticipants, type ChatkitSetAgentPermissionsData, type ChatkitSetAgentPermissionsError, type ChatkitSetAgentPermissionsErrors, type ChatkitSetAgentPermissionsResponse, type ChatkitSetAgentPermissionsResponses, type ChatkitSetAgentStatusData, type ChatkitSetAgentStatusError, type ChatkitSetAgentStatusErrors, type ChatkitSetAgentStatusResponse, type ChatkitSetAgentStatusResponses, type ChatkitSetChatProviderStatusData, type ChatkitSetChatProviderStatusError, type ChatkitSetChatProviderStatusErrors, type ChatkitSetChatProviderStatusResponse, type ChatkitSetChatProviderStatusResponses, type ChatkitStartSlackOauthData, type ChatkitStartSlackOauthError, type ChatkitStartSlackOauthErrors, type ChatkitStartSlackOauthResponse, type ChatkitStartSlackOauthResponses, type ChatkitSteerAgentJobData, type ChatkitSteerAgentJobResponse, type ChatkitSteerAgentJobResponses, type ChatkitSteerAgentTurnQueueItemData, type ChatkitSteerAgentTurnQueueItemError, type ChatkitSteerAgentTurnQueueItemErrors, type ChatkitSteerAgentTurnQueueItemResponse, type ChatkitSteerAgentTurnQueueItemResponses, type ChatkitStopAgentJobData, type ChatkitStopAgentJobResponse, type ChatkitStopAgentJobResponses, type ChatkitStreamSessionEventsData, type ChatkitStreamSessionEventsError, type ChatkitStreamSessionEventsErrors, type ChatkitStreamSessionEventsResponses, type ChatkitTransitionAgentRunData, type ChatkitTransitionAgentRunResponse, type ChatkitTransitionAgentRunResponses, type ChatkitUpdateAgentAvatarData, type ChatkitUpdateAgentAvatarError, type ChatkitUpdateAgentAvatarErrors, type ChatkitUpdateAgentAvatarResponse, type ChatkitUpdateAgentAvatarResponses, type ChatkitUpdateAgentData, type ChatkitUpdateAgentError, type ChatkitUpdateAgentErrors, type ChatkitUpdateAgentObservabilityData, type ChatkitUpdateAgentObservabilityError, type ChatkitUpdateAgentObservabilityErrors, type ChatkitUpdateAgentObservabilityResponse, type ChatkitUpdateAgentObservabilityResponses, type ChatkitUpdateAgentOwnershipData, type ChatkitUpdateAgentOwnershipError, type ChatkitUpdateAgentOwnershipErrors, type ChatkitUpdateAgentOwnershipResponse, type ChatkitUpdateAgentOwnershipResponses, type ChatkitUpdateAgentResponse, type ChatkitUpdateAgentResponses, type ChatkitUpdateAgentToolVisibilityData, type ChatkitUpdateAgentToolVisibilityError, type ChatkitUpdateAgentToolVisibilityErrors, type ChatkitUpdateAgentToolVisibilityResponse, type ChatkitUpdateAgentToolVisibilityResponses, type ChatkitUpdateAgentVisibilityData, type ChatkitUpdateAgentVisibilityError, type ChatkitUpdateAgentVisibilityErrors, type ChatkitUpdateAgentVisibilityResponse, type ChatkitUpdateAgentVisibilityResponses, type ChatkitUpdateChatProviderData, type ChatkitUpdateChatProviderError, type ChatkitUpdateChatProviderErrors, type ChatkitUpdateChatProviderResponse, type ChatkitUpdateChatProviderResponses, type ChatkitUpdateCustomProviderData, type ChatkitUpdateCustomProviderError, type ChatkitUpdateCustomProviderErrors, type ChatkitUpdateCustomProviderResponse, type ChatkitUpdateCustomProviderResponses, type ChatkitUpdateGoalData, type ChatkitUpdateGoalResponse, type ChatkitUpdateGoalResponses, type ChatkitUpdateTaskData, type ChatkitUpdateTaskResponse, type ChatkitUpdateTaskResponses, type ChatkitWorkspaceAgentSessionsData, type ChatkitWorkspaceAgentSessionsResponse, type ChatKitWorkspaceAgentSessionsResponse, type ChatkitWorkspaceAgentSessionsResponses, type ChatKitWorkspaceAgentSummary, type ChatKitWorkspaceAttachmentCompletion, type ChatkitWorkspaceBootstrapData, type ChatkitWorkspaceBootstrapResponse, type ChatKitWorkspaceBootstrapResponse, type ChatkitWorkspaceBootstrapResponses, type ChatKitWorkspaceConversationSnapshot, type ChatkitWorkspaceConversationSnapshotData, type ChatkitWorkspaceConversationSnapshotResponse, type ChatkitWorkspaceConversationSnapshotResponses, type ChatkitWorkspaceCreateSessionData, type ChatkitWorkspaceCreateSessionResponse, type ChatkitWorkspaceCreateSessionResponses, type ChatkitWorkspaceInterruptSessionData, type ChatkitWorkspaceInterruptSessionResponse, type ChatkitWorkspaceInterruptSessionResponses, type ChatkitWorkspaceMessagesData, type ChatkitWorkspaceMessagesResponse, type ChatkitWorkspaceMessagesResponses, type ChatKitWorkspaceParticipantEvent, type ChatKitWorkspaceParticipantEventKind, type ChatKitWorkspaceQueuedTurns, type ChatkitWorkspaceRenameThreadData, type ChatkitWorkspaceRenameThreadResponse, type ChatkitWorkspaceRenameThreadResponses, type ChatkitWorkspaceSendMessageData, type ChatkitWorkspaceSendMessageResponse, type ChatkitWorkspaceSendMessageResponses, type ChatKitWorkspaceSessionSummary, type ChatkitWorkspaceSidebarData, type ChatkitWorkspaceSidebarResponse, type ChatKitWorkspaceSidebarResponse, type ChatkitWorkspaceSidebarResponses, type ChatkitWorkspaceSubmitTurnData, type ChatkitWorkspaceSubmitTurnResponse, type ChatkitWorkspaceSubmitTurnResponses, type ChatkitWorkspaceUpdateSessionReadStateData, type ChatkitWorkspaceUpdateSessionReadStateResponse, type ChatkitWorkspaceUpdateSessionReadStateResponses, type ChatMessage, type ChatMessageContext, type ChatMessagePart, type ChatRequest, type ChatSessionContext, ChatToolInvocationState, type CheckMemoryBankHealthData, type CheckMemoryBankHealthResponse, type CheckMemoryBankHealthResponses, type CheckPersonalMemoryBankHealthData, type CheckPersonalMemoryBankHealthResponse, type CheckPersonalMemoryBankHealthResponses, type ClaimAgentRunsInner, type ClaimTemporaryAccountData, type ClaimTemporaryAccountError, type ClaimTemporaryAccountErrors, type ClaimTemporaryAccountRequest, type ClaimTemporaryAccountResponse, type ClaimTemporaryAccountResponse2, type ClaimTemporaryAccountResponses, type ClearPersonalMemoryBankSynthesizerData, type ClearPersonalMemoryBankSynthesizerResponse, type ClearPersonalMemoryBankSynthesizerResponses, type ClientOptions, type CloudWhoamiResponse, type CommitAiCreditReceiptBody, type CommonProviderConfiguration, type CommonProviderCredentialSetup, type CommonProviderInstallationPage, type CommonProviderInstallationSerialized, type CommonProviderRuntimeState, type CompleteAttachmentUploadData, type CompleteAttachmentUploadError, type CompleteAttachmentUploadErrors, type CompleteAttachmentUploadInner, type CompleteAttachmentUploadResponse, type CompleteAttachmentUploadResponses, type CompleteCredentialSetupItemBody, type CompleteCredentialSetupItemData, type CompleteCredentialSetupItemResponse, type CompleteCredentialSetupItemResponses, type CompleteHumanApprovalActionData, type CompleteHumanApprovalActionError, type CompleteHumanApprovalActionErrors, type CompleteHumanApprovalActionRequest, type CompleteHumanApprovalActionResponse, type CompleteHumanApprovalActionResponses, type CompleteIdentityLinkData, type CompleteIdentityLinkResponse, type CompleteIdentityLinkResponses, type CompleteIdentityVerificationData, type CompleteIdentityVerificationError, type CompleteIdentityVerificationErrors, type CompleteIdentityVerificationRequestInner, type CompleteIdentityVerificationResponse, type CompleteIdentityVerificationResponses, type CompleteSlackProviderProvisionedSetupRequestInner, type CompleteSlackSelfManagedSetupRequestInner, type CompleteWikiAssetUploadData, type CompleteWikiAssetUploadResponse, type CompleteWikiAssetUploadResponses, type ConfigurationSchema, type ConfigureHostedOpenbotInstanceData, type ConfigureHostedOpenbotInstanceError, type ConfigureHostedOpenbotInstanceErrors, type ConfigureHostedOpenBotInstanceRequest, type ConfigureHostedOpenbotInstanceResponse, type ConfigureHostedOpenbotInstanceResponses, type ConnectMcpProviderCatalogEntryData, type ConnectMcpProviderCatalogEntryError, type ConnectMcpProviderCatalogEntryErrors, type ConnectMcpProviderCatalogEntryRequestInner, type ConnectMcpProviderCatalogEntryResponse, type ConnectMcpProviderCatalogEntryResponse2, type ConnectMcpProviderCatalogEntryResponses, type ConnectProxiedMcpServerData, type ConnectProxiedMcpServerError, type ConnectProxiedMcpServerErrors, type ConnectProxiedMcpServerRequestInner, type ConnectProxiedMcpServerResponse, type ConnectProxiedMcpServerResponse2, type ConnectProxiedMcpServerResponses, type ControlAgentRunInner, type CreateAgentRunInner, type CreateAiCreditTopupBody, type CreateApiKeyInner, type CreateApiKeyResponse, type CreateAttachmentUploadData, type CreateAttachmentUploadError, type CreateAttachmentUploadErrors, type CreateAttachmentUploadInner, type CreateAttachmentUploadResponse, type CreateAttachmentUploadResponse2, type CreateAttachmentUploadResponses, type CreateAttachmentUploadsData, type CreateAttachmentUploadsError, type CreateAttachmentUploadsErrors, type CreateAttachmentUploadsInner, type CreateAttachmentUploadsResponse, type CreateAttachmentUploadsResponse2, type CreateAttachmentUploadsResponses, type CreateChatKitRoomInvitationRequestInner, type CreateChatKitSessionRequestInner, type CreateChatKitWorkspaceSessionRequestInner, type CreateCustomToolProviderData, type CreateCustomToolProviderRequestInner, type CreateCustomToolProviderResponse, type CreateCustomToolProviderResponse2, type CreateCustomToolProviderResponses, type CreatedIdentityLink, type CreatedProxyToken, type CreateGoalRequestInner, type CreateHostedOpenbotDeploymentData, type CreateHostedOpenbotDeploymentError, type CreateHostedOpenbotDeploymentErrors, type CreateHostedOpenBotDeploymentRequest, type CreateHostedOpenbotDeploymentResponse, type CreateHostedOpenbotDeploymentResponses, type CreateHostedOpenbotReleaseData, type CreateHostedOpenbotReleaseError, type CreateHostedOpenbotReleaseErrors, type CreateHostedOpenBotReleaseFile, type CreateHostedOpenBotReleaseRequest, type CreateHostedOpenbotReleaseResponse, type CreateHostedOpenbotReleaseResponses, type CreateHumanApprovalActionData, type CreateHumanApprovalActionError, type CreateHumanApprovalActionErrors, type CreateHumanApprovalActionRequestInner, type CreateHumanApprovalActionResponse, type CreateHumanApprovalActionResponse2, type CreateHumanApprovalActionResponses, type CreateIdentityData, type CreateIdentityError, type CreateIdentityErrors, type CreateIdentityLinkData, type CreateIdentityLinkError, type CreateIdentityLinkErrors, type CreateIdentityLinkRequest, type CreateIdentityLinkResponse, type CreateIdentityLinkResponses, type CreateIdentityRequest, type CreateIdentityResponse, type CreateIdentityResponses, type CreateManagedUserCredentialBody, type CreateManagedUserCredentialData, type CreateManagedUserCredentialResponse, type CreateManagedUserCredentialResponses, type CreateMcpServerInstanceData, type CreateMcpServerInstanceError, type CreateMcpServerInstanceErrors, type CreateMcpServerInstanceRequestInner, type CreateMcpServerInstanceResponse, type CreateMcpServerInstanceResponses, type CreateMemoryBankBody, type CreateMemoryBankData, type CreateMemoryBankResponse, type CreateMemoryBankResponses, type CreateMessageData, type CreateMessageError, type CreateMessageErrors, type CreateMessageRequest, type CreateMessageResponse, type CreateMessageResponses, type CreateOrganizationData, type CreateOrganizationError, type CreateOrganizationErrors, type CreateOrganizationRequest, type CreateOrganizationResponse, type CreateOrganizationResponses, type CreateOrgOidcProviderData, type CreateOrgOidcProviderError, type CreateOrgOidcProviderErrors, type CreateOrgOidcProviderRequest, type CreateOrgOidcProviderResponse, type CreateOrgOidcProviderResponses, type CreatePageTypeBody, type CreatePageTypeVersionBody, type CreatePayWalletRequest, type CreatePersonalMcpServerInstanceData, type CreatePersonalMcpServerInstanceError, type CreatePersonalMcpServerInstanceErrors, type CreatePersonalMcpServerInstanceResponse, type CreatePersonalMcpServerInstanceResponses, type CreatePersonalMemoryBankData, type CreatePersonalMemoryBankResponse, type CreatePersonalMemoryBankResponses, type CreatePersonalSkillData, type CreatePersonalSkillRegistryData, type CreatePersonalSkillRegistryResponse, type CreatePersonalSkillRegistryResponses, type CreatePersonalSkillResponse, type CreatePersonalSkillResponses, type CreatePersonalToolGroupInstanceBody, type CreatePersonalToolGroupInstanceData, type CreatePersonalToolGroupInstanceError, type CreatePersonalToolGroupInstanceErrors, type CreatePersonalToolGroupInstanceResponse, type CreatePersonalToolGroupInstanceResponses, type CreatePersonalUserCredentialData, type CreatePersonalUserCredentialResponse, type CreatePersonalUserCredentialResponses, type CreatePersonalWikiData, type CreatePersonalWikiPageData, type CreatePersonalWikiPageResponse, type CreatePersonalWikiPageResponses, type CreatePersonalWikiResponse, type CreatePersonalWikiResponses, type CreateProxyTokenData, type CreateProxyTokenError, type CreateProxyTokenErrors, type CreateProxyTokenRequest, type CreateProxyTokenResponse, type CreateProxyTokenResponses, type CreateRelationshipTypeBody, type CreateRelationshipTypeVersionBody, type CreateResourcePlaneGrantRequest, type CreateResourceServerCredentialData, type CreateResourceServerCredentialParamsInner, type CreateResourceServerCredentialResponse, type CreateResourceServerCredentialResponses, type CreateReverseProxyProfileInner, type CreateSelfExtensionProposalInner, type CreateSessionData, type CreateSessionError, type CreateSessionErrors, type CreateSessionInner, type CreateSessionResponse, type CreateSessionResponses, type CreateSignalMessageRequest, type CreateSignalProviderInstanceRequestInner, type CreateSkillData, type CreateSkillError, type CreateSkillErrors, type CreateSkillInner, type CreateSkillRegistryBody, type CreateSkillRegistryData, type CreateSkillRegistryError, type CreateSkillRegistryErrors, type CreateSkillRegistryResponse, type CreateSkillRegistryResponses, type CreateSkillResponse, type CreateSkillResponses, type CreateSlackChannelInstallationRequestInner, type CreateSlackChannelInstallationResponse, type CreateTaskRequestInner, type CreateTeamData, type CreateTeamError, type CreateTeamErrors, type CreateTeamGroupBody, type CreateTeamGroupData, type CreateTeamGroupError, type CreateTeamGroupErrors, type CreateTeamGroupResponse, type CreateTeamGroupResponses, type CreateTeamRequest, type CreateTeamResponse, type CreateTeamResponses, type CreateTemporaryAccountData, type CreateTemporaryAccountError, type CreateTemporaryAccountErrors, type CreateTemporaryAccountRequest, type CreateTemporaryAccountResponse, type CreateTemporaryAccountResponse2, type CreateTemporaryAccountResponses, type CreateTextMessageRequest, type CreateToolGroupInstanceData, type CreateToolGroupInstanceError, type CreateToolGroupInstanceErrors, type CreateToolGroupInstanceParamsInner, type CreateToolGroupInstanceResponse, type CreateToolGroupInstanceResponses, type CreateTrustedRuntimeData, type CreateTrustedRuntimeError, type CreateTrustedRuntimeErrors, type CreateTrustedRuntimeInner, type CreateTrustedRuntimeResponse, type CreateTrustedRuntimeResponses, type CreateTrustedSkillProviderData, type CreateTrustedSkillProviderError, type CreateTrustedSkillProviderErrors, type CreateTrustedSkillProviderRequest, type CreateTrustedSkillProviderResponse, type CreateTrustedSkillProviderResponses, type CreateUiMessageRequest, type CreateUserCredentialData, type CreateUserCredentialParamsInner, type CreateUserCredentialResponse, type CreateUserCredentialResponses, type CreateWalletBody, type CreateWalletCustomerBody, type CreateWalletVirtualAccountBody, type CreateWikiAssetBody, type CreateWikiAssetUploadData, type CreateWikiAssetUploadResponse, type CreateWikiAssetUploadResponses, type CreateWikiData, type CreateWikiInner, type CreateWikiPageData, type CreateWikiPageResponse, type CreateWikiPageResponses, type CreateWikiPageTypeData, type CreateWikiPageTypeResponse, type CreateWikiPageTypeResponses, type CreateWikiPageTypeVersionData, type CreateWikiPageTypeVersionErrors, type CreateWikiPageTypeVersionResponse, type CreateWikiPageTypeVersionResponses, type CreateWikiRelationshipTypeData, type CreateWikiRelationshipTypeResponse, type CreateWikiRelationshipTypeResponses, type CreateWikiRelationshipTypeVersionData, type CreateWikiRelationshipTypeVersionErrors, type CreateWikiRelationshipTypeVersionResponse, type CreateWikiRelationshipTypeVersionResponses, type CreateWikiResponse, type CreateWikiResponses, type CredentialGenericOauthCallbackData, type CredentialGenericOauthCallbackResponses, type CredentialSetupBinding, CredentialSetupCredentialKind, type CredentialSetupFormField, type CredentialSetupItem, type CredentialSetupItemPaginatedResponse, CredentialSetupItemStatus, type CredentialSetupNextAction, CredentialSetupSource, type CredentialSourceSerialized, CurrentSeatStatus, type CustomChatKitProvider, type CustomConnectionCredentials, type CustomConnectionInfo, type CustomConnectionInfoPaginatedResponse, type CustomConnectionWork, type CustomConnectionWorkPaginatedResponse, type CustomExternalIdentity, type CustomInboundMessage, type CustomIngressReceipt, type CustomProviderAuthMethod, type CustomProviderCapabilities, type CustomProviderField, type CustomProviderInvocation, type CustomProviderList, CustomProviderOperation, type CustomProviderRegistration, type CustomProviderRegistrationInput, type CustomProviderScope, type CustomReconciliation, type CustomRuntimeCommand, type CustomRuntimeResponse, type CustomSessionContext, type CustomSessionParticipant, type CustomSessionTool, type CustomSessionToolCatalog, type CustomSkillSpec, type CustomToolProviderDetails, type CustomToolProviderListItem, type CustomToolProviderListItemPaginatedResponse, type CustomToolProviderSerialized, type CustomVisibleMessage, type DataUiPart, type DebugAuthProfilesResponse, type DecideCapabilityChangeRequest, type DecideChatKitRoomInvitationRequestInner, type DelegateAgentJobRequestInner, type DelegatedIdentity, type DeleteAttachmentData, type DeleteAttachmentError, type DeleteAttachmentErrors, type DeleteAttachmentResponse, type DeleteAttachmentResponses, type DeleteChatKitAgentTurnQueueItemResponse, type DeleteCustomToolProviderData, type DeleteCustomToolProviderResponses, type DeleteInboxResponse, type DeleteManagedUserCredentialData, type DeleteManagedUserCredentialResponses, type DeleteMcpServerInstanceData, type DeleteMcpServerInstanceError, type DeleteMcpServerInstanceErrors, type DeleteMcpServerInstanceResponses, type DeleteMemoryBankData, type DeleteMemoryBankResponses, type DeleteMemoryDocumentBody, type DeleteMemoryDocumentData, type DeleteMemoryDocumentResponses, type DeleteMessageData, type DeleteMessageError, type DeleteMessageErrors, type DeleteMessageResponse, type DeleteMessageResponse2, type DeleteMessageResponses, type DeleteOrganizationData, type DeleteOrganizationError, type DeleteOrganizationErrors, type DeleteOrganizationResponses, type DeleteOrgOidcProviderData, type DeleteOrgOidcProviderError, type DeleteOrgOidcProviderErrors, type DeleteOrgOidcProviderResponses, type DeletePersonalMcpServerInstanceData, type DeletePersonalMcpServerInstanceResponses, type DeletePersonalMemoryBankData, type DeletePersonalMemoryBankResponses, type DeletePersonalMemoryDocumentData, type DeletePersonalMemoryDocumentResponses, type DeletePersonalSkillData, type DeletePersonalSkillRegistryData, type DeletePersonalSkillRegistryResponses, type DeletePersonalSkillResponses, type DeletePersonalToolGroupInstanceData, type DeletePersonalToolGroupInstanceResponses, type DeletePersonalWikiData, type DeletePersonalWikiPageData, type DeletePersonalWikiPageResponses, type DeletePersonalWikiResponses, type DeleteProxiedMcpServerData, type DeleteProxiedMcpServerError, type DeleteProxiedMcpServerErrors, type DeleteProxiedMcpServerResponses, type DeleteResourceServerCredentialData, type DeleteResourceServerCredentialResponses, type DeleteRoutineResponse, type DeleteSelfAvatarData, type DeleteSelfAvatarError, type DeleteSelfAvatarErrors, type DeleteSelfAvatarResponses, type DeleteSignalResponse, type DeleteSkillData, type DeleteSkillError, type DeleteSkillErrors, type DeleteSkillRegistryData, type DeleteSkillRegistryError, type DeleteSkillRegistryErrors, type DeleteSkillRegistryResponses, type DeleteSkillResponses, type DeleteSynthesisMemoryDocumentBody, type DeleteSynthesisSessionMemoryData, type DeleteSynthesisSessionMemoryResponse, type DeleteSynthesisSessionMemoryResponses, type DeleteTeamData, type DeleteTeamError, type DeleteTeamErrors, type DeleteTeamGroupData, type DeleteTeamGroupError, type DeleteTeamGroupErrors, type DeleteTeamGroupResponses, type DeleteTeamResponses, type DeleteToolGroupInstanceData, type DeleteToolGroupInstanceError, type DeleteToolGroupInstanceErrors, type DeleteToolGroupInstanceResponses, type DeleteTrustedRuntimeData, type DeleteTrustedRuntimeError, type DeleteTrustedRuntimeErrors, type DeleteTrustedRuntimeResponses, type DeleteUserCredentialData, type DeleteUserCredentialResponses, type DeleteVerifiedIdentityLinkData, type DeleteVerifiedIdentityLinkError, type DeleteVerifiedIdentityLinkErrors, type DeleteVerifiedIdentityLinkResponse, type DeleteVerifiedIdentityLinkResponse2, type DeleteVerifiedIdentityLinkResponses, type DeleteWikiAssetData, type DeleteWikiAssetErrors, type DeleteWikiAssetResponses, type DeleteWikiData, type DeleteWikiPageData, type DeleteWikiPageErrors, type DeleteWikiPageRelationshipData, type DeleteWikiPageRelationshipResponses, type DeleteWikiPageResponses, type DeleteWikiPageTypeData, type DeleteWikiPageTypeErrors, type DeleteWikiPageTypeResponse, type DeleteWikiPageTypeResponses, type DeleteWikiPageTypeVersionData, type DeleteWikiPageTypeVersionErrors, type DeleteWikiPageTypeVersionResponse, type DeleteWikiPageTypeVersionResponses, type DeleteWikiRelationshipTypeData, type DeleteWikiRelationshipTypeErrors, type DeleteWikiRelationshipTypeResponses, type DeleteWikiResponses, type DeploymentEnvironmentFile, type DirectTokenPayment, type DisableCustomToolProviderData, type DisableCustomToolProviderResponse, type DisableCustomToolProviderResponses, type DisableProxiedMcpServerData, type DisableProxiedMcpServerError, type DisableProxiedMcpServerErrors, type DisableProxiedMcpServerResponse, type DisableProxiedMcpServerResponses, type DisableToolData, type DisableToolError, type DisableToolErrors, type DisableToolResponse, type DisableToolResponses, type DownloadAttachmentContentData, type DownloadAttachmentContentError, type DownloadAttachmentContentErrors, type DownloadAttachmentContentResponse, type DownloadAttachmentContentResponses, type DownloadSkillPackageFileData, type DownloadSkillPackageFileError, type DownloadSkillPackageFileErrors, type DownloadSkillPackageFileRequest, type DownloadSkillPackageFileResponse, type DownloadSkillPackageFileResponses, type DownloadWikiAssetContentData, type DownloadWikiAssetContentErrors, type DownloadWikiAssetContentResponse, type DownloadWikiAssetContentResponses, type DownloadWikiAssetData, type DownloadWikiAssetResponse, type DownloadWikiAssetResponses, type EnableAndBindMcpServerResult, type EnableAndBindProviderToolsData, type EnableAndBindProviderToolsError, type EnableAndBindProviderToolsErrors, type EnableAndBindProviderToolsResponse, type EnableAndBindProviderToolsResponses, type EnableAndBindToolFailure, type EnableAndBindToolsBody, type EnableAndBindToolsResponse, type EnableCustomToolProviderData, type EnableCustomToolProviderResponse, type EnableCustomToolProviderResponses, type EnabledSkillsSpec, type EnableProxiedMcpServerData, type EnableProxiedMcpServerError, type EnableProxiedMcpServerErrors, type EnableProxiedMcpServerResponse, type EnableProxiedMcpServerResponses, type EnableToolData, type EnableToolError, type EnableToolErrors, type EnableToolInstanceParamsInner, type EnableToolResponse, type EnableToolResponses, type EncryptCredentialConfigurationParamsInner, type EncryptedTrustedRuntimePayload, type EncryptPersonalUserCredentialConfigurationData, type EncryptPersonalUserCredentialConfigurationResponses, type EncryptResourceServerConfigurationData, type EncryptResourceServerConfigurationResponses, type EncryptUserCredentialConfigurationData, type EncryptUserCredentialConfigurationResponses, EndpointType, type Error, type ExchangeOAuthCodeBody, type ExchangeOauthCodeData, type ExchangeOauthCodeErrors, type ExchangeOauthCodeResponse, type ExchangeOauthCodeResponses, type ExchangeOAuthCodeResult, type ExpectedRevisionBody, type ExpireTemporaryAccountsData, type ExpireTemporaryAccountsError, type ExpireTemporaryAccountsErrors, type ExpireTemporaryAccountsResponse, type ExpireTemporaryAccountsResponse2, type ExpireTemporaryAccountsResponses, type ExportMemoryBankTemplateData, type ExportMemoryBankTemplateResponse, type ExportMemoryBankTemplateResponses, type ExportPersonalMemoryBankTemplateData, type ExportPersonalMemoryBankTemplateResponse, type ExportPersonalMemoryBankTemplateResponses, type FileUiPart, type FinalizeHostedOpenbotReleaseData, type FinalizeHostedOpenbotReleaseError, type FinalizeHostedOpenbotReleaseErrors, type FinalizeHostedOpenbotReleaseResponse, type FinalizeHostedOpenbotReleaseResponses, type GenerateLocalRuntimeTunnelApiKeyData, type GenerateLocalRuntimeTunnelApiKeyError, type GenerateLocalRuntimeTunnelApiKeyErrors, type GenerateLocalRuntimeTunnelApiKeyResponse, type GenerateLocalRuntimeTunnelApiKeyResponse2, type GenerateLocalRuntimeTunnelApiKeyResponses, type GenerateTemporaryAccountClaimUrlData, type GenerateTemporaryAccountClaimUrlError, type GenerateTemporaryAccountClaimUrlErrors, type GenerateTemporaryAccountClaimUrlResponse, type GenerateTemporaryAccountClaimUrlResponse2, type GenerateTemporaryAccountClaimUrlResponses, type GetAttachmentDownloadUrlData, type GetAttachmentDownloadUrlError, type GetAttachmentDownloadUrlErrors, type GetAttachmentDownloadUrlResponse, type GetAttachmentDownloadUrlResponse2, type GetAttachmentDownloadUrlResponses, type GetBalancesResponse, type GetCommonProviderInstallationData, type GetCommonProviderInstallationResponse, type GetCommonProviderInstallationResponses, type GetCredentialSetupItemData, type GetCredentialSetupItemResponse, type GetCredentialSetupItemResponses, type GetCryptoDepositInformationResponse, type GetCustomToolProviderData, type GetCustomToolProviderResponse, type GetCustomToolProviderResponses, type GetFiatDepositInformationResponse, type GetHostedOpenbotBootstrapBundleData, type GetHostedOpenbotBootstrapBundleError, type GetHostedOpenbotBootstrapBundleErrors, type GetHostedOpenbotBootstrapBundleResponse, type GetHostedOpenbotBootstrapBundleResponses, type GetHostedOpenbotInstanceData, type GetHostedOpenbotInstanceError, type GetHostedOpenbotInstanceErrors, type GetHostedOpenbotInstanceResponse, type GetHostedOpenbotInstanceResponses, type GetHostedOpenbotReleaseData, type GetHostedOpenbotReleaseError, type GetHostedOpenbotReleaseErrors, type GetHostedOpenbotReleaseResponse, type GetHostedOpenbotReleaseResponses, type GetHumanApprovalActionData, type GetHumanApprovalActionError, type GetHumanApprovalActionErrors, type GetHumanApprovalActionResponse, type GetHumanApprovalActionResponses, type GetIdentityData, type GetIdentityError, type GetIdentityErrors, type GetIdentityResponse, type GetIdentityResponses, type GetIdentityVerificationData, type GetIdentityVerificationError, type GetIdentityVerificationErrors, type GetIdentityVerificationResponse, type GetIdentityVerificationResponses, type GetLocalRuntimeTunnelApiKeyData, type GetLocalRuntimeTunnelApiKeyError, type GetLocalRuntimeTunnelApiKeyErrors, type GetLocalRuntimeTunnelApiKeyResponse, type GetLocalRuntimeTunnelApiKeyResponses, type GetLocalRuntimeTunnelConnectorData, type GetLocalRuntimeTunnelConnectorError, type GetLocalRuntimeTunnelConnectorErrors, type GetLocalRuntimeTunnelConnectorResponse, type GetLocalRuntimeTunnelConnectorResponses, type GetManagedUserCredentialSecretData, type GetManagedUserCredentialSecretResponse, type GetManagedUserCredentialSecretResponses, type GetMcpServerInstanceData, type GetMcpServerInstanceError, type GetMcpServerInstanceErrors, type GetMcpServerInstanceResponse, type GetMcpServerInstanceResponses, type GetMemoryBankConfigData, type GetMemoryBankConfigResponse, type GetMemoryBankConfigResponses, type GetMemoryBankData, type GetMemoryBankDocumentData, type GetMemoryBankDocumentResponse, type GetMemoryBankDocumentResponses, type GetMemoryBankResponse, type GetMemoryBankResponses, type GetMessageData, type GetMessageDeliveriesData, type GetMessageDeliveriesError, type GetMessageDeliveriesErrors, type GetMessageDeliveriesResponse, type GetMessageDeliveriesResponses, type GetMessageError, type GetMessageErrors, type GetMessageResponse, type GetMessageResponses, type GetOpenbotPluginsCatalogData, type GetOpenbotPluginsCatalogResponse, type GetOpenbotPluginsCatalogResponses, type GetOrganizationData, type GetOrganizationError, type GetOrganizationErrors, type GetOrganizationResponse, type GetOrganizationResponses, type GetOrgOidcProviderData, type GetOrgOidcProviderError, type GetOrgOidcProviderErrors, type GetOrgOidcProviderResponse, type GetOrgOidcProviderResponses, type GetPersonalMcpServerInstanceData, type GetPersonalMcpServerInstanceResponse, type GetPersonalMcpServerInstanceResponses, type GetPersonalMemoryBankConfigData, type GetPersonalMemoryBankConfigResponse, type GetPersonalMemoryBankConfigResponses, type GetPersonalMemoryBankData, type GetPersonalMemoryBankDocumentData, type GetPersonalMemoryBankDocumentResponse, type GetPersonalMemoryBankDocumentResponses, type GetPersonalMemoryBankResponse, type GetPersonalMemoryBankResponses, type GetPersonalSkillData, type GetPersonalSkillRegistryData, type GetPersonalSkillRegistryResponse, type GetPersonalSkillRegistryResponses, type GetPersonalSkillResponse, type GetPersonalSkillResponses, type GetPersonalToolGroupInstanceData, type GetPersonalToolGroupInstanceResponse, type GetPersonalToolGroupInstanceResponses, type GetPersonalWikiData, type GetPersonalWikiPageData, type GetPersonalWikiPageResponse, type GetPersonalWikiPageResponses, type GetPersonalWikiResponse, type GetPersonalWikiResponses, type GetProviderProvisioningHumanActionData, type GetProviderProvisioningHumanActionResponse, type GetProviderProvisioningHumanActionResponses, type GetProxiedMcpServerData, type GetProxiedMcpServerError, type GetProxiedMcpServerErrors, type GetProxiedMcpServerResponse, type GetProxiedMcpServerResponses, type GetProxiedSkillProviderData, type GetProxiedSkillProviderError, type GetProxiedSkillProviderErrors, type GetProxiedSkillProviderResponse, type GetProxiedSkillProviderResponses, type GetResourceServerCredentialData, type GetResourceServerCredentialResponse, type GetResourceServerCredentialResponses, type GetRuntimeConfigData, type GetRuntimeConfigResponse, type GetRuntimeConfigResponses, type GetSelfAvatarData, type GetSelfAvatarError, type GetSelfAvatarErrors, type GetSelfAvatarResponse, type GetSelfAvatarResponses, type GetSelfProfileData, type GetSelfProfileError, type GetSelfProfileErrors, type GetSelfProfileResponse, type GetSelfProfileResponses, type GetSessionEventHistoryData, type GetSessionEventHistoryError, type GetSessionEventHistoryErrors, type GetSessionEventHistoryResponse, type GetSessionEventHistoryResponses, type GetSkillData, type GetSkillError, type GetSkillErrors, type GetSkillPackageData, type GetSkillPackageError, type GetSkillPackageErrors, type GetSkillPackageResponse, type GetSkillPackageResponses, type GetSkillRegistryData, type GetSkillRegistryError, type GetSkillRegistryErrors, type GetSkillRegistryResponse, type GetSkillRegistryResponses, type GetSkillRegistrySkillByTitleData, type GetSkillRegistrySkillByTitleError, type GetSkillRegistrySkillByTitleErrors, type GetSkillRegistrySkillByTitleResponse, type GetSkillRegistrySkillByTitleResponses, type GetSkillRegistrySkillData, type GetSkillRegistrySkillDescriptionData, type GetSkillRegistrySkillDescriptionError, type GetSkillRegistrySkillDescriptionErrors, type GetSkillRegistrySkillDescriptionResponse, type GetSkillRegistrySkillDescriptionResponses, type GetSkillRegistrySkillError, type GetSkillRegistrySkillErrors, type GetSkillRegistrySkillResponse, type GetSkillRegistrySkillResponses, type GetSkillResponse, type GetSkillResponses, type GetTeamData, type GetTeamError, type GetTeamErrors, type GetTeamGroupData, type GetTeamGroupError, type GetTeamGroupErrors, type GetTeamGroupResponse, type GetTeamGroupResponses, type GetTeamResponse, type GetTeamResponses, type GetToolGroupInstanceData, type GetToolGroupInstanceError, type GetToolGroupInstanceErrors, type GetToolGroupInstanceResponse, type GetToolGroupInstanceResponses, type GetToolsOpenapiSpecData, type GetToolsOpenapiSpecError, type GetToolsOpenapiSpecErrors, type GetToolsOpenapiSpecResponse, type GetToolsOpenapiSpecResponses, type GetTrustedRuntimeData, type GetTrustedRuntimeError, type GetTrustedRuntimeErrors, type GetTrustedRuntimeResponse, type GetTrustedRuntimeResponses, type GetUserCredentialData, type GetUserCredentialResponse, type GetUserCredentialResponses, type GetWalletCustomerKycResponse, type GetWikiData, type GetWikiPageBacklinksData, type GetWikiPageBacklinksResponse, type GetWikiPageBacklinksResponses, type GetWikiPageData, type GetWikiPageNeighborhoodData, type GetWikiPageNeighborhoodResponse, type GetWikiPageNeighborhoodResponses, type GetWikiPageRelationshipData, type GetWikiPageRelationshipResponse, type GetWikiPageRelationshipResponses, type GetWikiPageResponse, type GetWikiPageResponses, type GetWikiPageTypeData, type GetWikiPageTypeResponse, type GetWikiPageTypeResponses, type GetWikiPageTypeVersionData, type GetWikiPageTypeVersionResponse, type GetWikiPageTypeVersionResponses, type GetWikiRelationshipTypeData, type GetWikiRelationshipTypeResponse, type GetWikiRelationshipTypeResponses, type GetWikiRelationshipTypeVersionData, type GetWikiRelationshipTypeVersionResponse, type GetWikiRelationshipTypeVersionResponses, type GetWikiResponse, type GetWikiResponses, type Goal, type GoalPaginatedResponse, GoalStatus, type GrepPersonalWikiPagesData, type GrepPersonalWikiPagesResponse, type GrepPersonalWikiPagesResponses, type GrepWikiPagesBody, type GrepWikiPagesData, type GrepWikiPagesResponse, type GrepWikiPagesResponse2, type GrepWikiPagesResponses, type Group, type GroupMembership, type GroupMemberWithUser, type GroupMemberWithUserPaginatedResponse, type HashedApiKey, type HealthCheckData, type HealthCheckError, type HealthCheckErrors, type HealthCheckResponse, type HealthCheckResponse2, type HealthCheckResponses, type HostedOpenBotBootstrapBundle, type HostedOpenBotDeployment, HostedOpenBotExeStep, type HostedOpenBotGitToken, type HostedOpenBotInstance, HostedOpenBotInstanceStatus, type HostedOpenBotRelease, type HostedOpenBotReleaseFile, HostedOpenBotReleaseService, HostedOpenBotReleaseStatus, HostedOpenBotTarget, type Human, type HumanApprovalAction, type HumanApprovalActionPayload, type HumanApprovalActionResponse, type HumanApprovalCompletion, HumanApprovalDecision, type HumanApprovalNote, type HydrateConvertedMessagesRequest, type HydrateConvertedMessagesResponse, type Identity, type IdentityClaimRequest, type IdentityIdentifier, type IdentityLinkDelivery, type IdentityLinkPreview, type IdentityLinkRoute, type IdentityTeam, type IdentityTeamMembership, type IdentityTeamMembershipPaginatedResponse, type IdentityVerification, type IdentityVerificationChallenge, IdentityVerificationMode, type ImportMemoryBankTemplateBody, type ImportMemoryBankTemplateData, type ImportMemoryBankTemplateResponse, type ImportMemoryBankTemplateResponse2, type ImportMemoryBankTemplateResponses, type ImportPersonalMemoryBankTemplateData, type ImportPersonalMemoryBankTemplateResponse, type ImportPersonalMemoryBankTemplateResponses, type ImportRunSummary, type ImportStateRequest, type ImportStateResponse, type Inbox, type InboxInstance, InboxInstanceTypingStatus, type InboxPaginatedResponse, InboxStatus, InboxType, type InboxWithLinkedInboxes, type InboxWithLinkedInboxesPaginatedResponse, type IngestSignalResponse, type InitiateIdentityVerificationData, type InitiateIdentityVerificationError, type InitiateIdentityVerificationErrors, type InitiateIdentityVerificationRequestInner, type InitiateIdentityVerificationResponse, type InitiateIdentityVerificationResponses, type InspectWikiAssetReferencesData, type InspectWikiAssetReferencesResponse, type InspectWikiAssetReferencesResponses, type InterruptChatKitSessionResponse, type InviteTeamUsersData, type InviteTeamUsersError, type InviteTeamUsersErrors, type InviteTeamUsersResponse, type InviteTeamUsersResponses, type InviteUserFailure, type InviteUserInput, type InviteUsersBody, type InviteUsersResponse, type InvokeCustomToolData, type InvokeCustomToolRequestInner, type InvokeCustomToolResponse, type InvokeCustomToolResponses, type InvokeError, type InvokeResult, type InvokeSessionProviderToolBody, type InvokeSessionProviderToolResponse, type InvokeToolData, type InvokeToolError, type InvokeToolErrors, type InvokeToolInstanceParamsInner, type InvokeToolResponse, type InvokeToolResponses, type IssueChatKitRealtimeSocketTicketRequest, type IssueHostedOpenbotGitTokenData, type IssueHostedOpenbotGitTokenError, type IssueHostedOpenbotGitTokenErrors, type IssueHostedOpenbotGitTokenResponse, type IssueHostedOpenbotGitTokenResponses, type IssueOpenbotChatkitRealtimeTicketData, type IssueOpenbotChatkitRealtimeTicketError, type IssueOpenbotChatkitRealtimeTicketErrors, type IssueOpenbotChatkitRealtimeTicketResponse, type IssueOpenbotChatkitRealtimeTicketResponses, type IssueProxyRealtimeTicketData, type IssueProxyRealtimeTicketResponse, type IssueProxyRealtimeTicketResponses, type JsonEqualsPredicate, type JsonSchema, type Jwk, type JwksResponse, type LinkedIdentity, type LinkTeamIdentityData, type LinkTeamIdentityError, type LinkTeamIdentityErrors, type LinkTeamIdentityRequestInner, type LinkTeamIdentityResponse, type LinkTeamIdentityResponses, type ListApiKeysResponse, type ListAvailableToolGroupsData, type ListAvailableToolGroupsError, type ListAvailableToolGroupsErrors, type ListAvailableToolGroupsResponse, type ListAvailableToolGroupsResponses, type ListCommonProviderInstallationOwnershipGrantsData, type ListCommonProviderInstallationOwnershipGrantsResponse, type ListCommonProviderInstallationOwnershipGrantsResponses, type ListCommonProviderInstallationsData, type ListCommonProviderInstallationsResponse, type ListCommonProviderInstallationsResponses, type ListCommonProviderInstallationVisibilityGrantsData, type ListCommonProviderInstallationVisibilityGrantsResponse, type ListCommonProviderInstallationVisibilityGrantsResponses, type ListCredentialSetupItemsData, type ListCredentialSetupItemsResponse, type ListCredentialSetupItemsResponses, type ListCustomToolProvidersData, type ListCustomToolProvidersResponse, type ListCustomToolProvidersResponses, type ListIdentitiesData, type ListIdentitiesError, type ListIdentitiesErrors, type ListIdentitiesResponse, type ListIdentitiesResponses, type ListIdentityTeamsData, type ListIdentityTeamsResponse, type ListIdentityTeamsResponses, type ListInboxAgentsData, type ListInboxAgentsError, type ListInboxAgentsErrors, type ListInboxAgentsResponse, type ListInboxAgentsResponses, type ListInboxesData, type ListInboxesError, type ListInboxesErrors, type ListInboxesResponse, type ListInboxesResponses, type ListManagedUserCredentialsData, type ListManagedUserCredentialsResponse, type ListManagedUserCredentialsResponses, type ListMcpProviderCatalogData, type ListMcpProviderCatalogError, type ListMcpProviderCatalogErrors, type ListMcpProviderCatalogResponse, type ListMcpProviderCatalogResponse2, type ListMcpProviderCatalogResponses, type ListMcpResourceOwnershipGrantsData, type ListMcpResourceOwnershipGrantsResponse, type ListMcpResourceOwnershipGrantsResponses, type ListMcpResourceVisibilityGrantsData, type ListMcpResourceVisibilityGrantsResponse, type ListMcpResourceVisibilityGrantsResponses, type ListMcpServerInstancesData, type ListMcpServerInstancesError, type ListMcpServerInstancesErrors, type ListMcpServerInstancesResponse, type ListMcpServerInstancesResponses, type ListMemoryBankDocumentsData, type ListMemoryBankDocumentsResponse, type ListMemoryBankDocumentsResponses, type ListMemoryBankOwnershipGrantsData, type ListMemoryBankOwnershipGrantsResponse, type ListMemoryBankOwnershipGrantsResponses, type ListMemoryBanksData, type ListMemoryBankSourceBindingsData, type ListMemoryBankSourceBindingsResponse, type ListMemoryBankSourceBindingsResponses, type ListMemoryBanksResponse, type ListMemoryBanksResponses, type ListMemoryBankVisibilityGrantsData, type ListMemoryBankVisibilityGrantsResponse, type ListMemoryBankVisibilityGrantsResponses, type ListMemorySourceBindingsData, type ListMemorySourceBindingsResponse, type ListMemorySourceBindingsResponses, type ListMessagesData, type ListMessagesError, type ListMessagesErrors, type ListMessagesResponse, type ListMessagesResponses, type ListOpenbotDeploymentsData, type ListOpenbotDeploymentsError, type ListOpenbotDeploymentsErrors, type ListOpenbotDeploymentsResponse, type ListOpenBotDeploymentsResponse, type ListOpenbotDeploymentsResponses, type ListOrganizationMembersData, type ListOrganizationMembersError, type ListOrganizationMembersErrors, type ListOrganizationMembersResponse, type ListOrganizationMembersResponses, type ListOrganizationsData, type ListOrganizationsError, type ListOrganizationsErrors, type ListOrganizationsResponses, type ListOrganizationTeamGroupsData, type ListOrganizationTeamGroupsResponse, type ListOrganizationTeamGroupsResponses, type ListOrgOidcProvidersData, type ListOrgOidcProvidersError, type ListOrgOidcProvidersErrors, type ListOrgOidcProvidersResponse, type ListOrgOidcProvidersResponses, type ListPersonalMcpServerInstancesData, type ListPersonalMcpServerInstancesError, type ListPersonalMcpServerInstancesErrors, type ListPersonalMcpServerInstancesResponse, type ListPersonalMcpServerInstancesResponses, type ListPersonalMemoryBankDocumentsData, type ListPersonalMemoryBankDocumentsResponse, type ListPersonalMemoryBankDocumentsResponses, type ListPersonalMemoryBankOwnershipGrantsData, type ListPersonalMemoryBankOwnershipGrantsResponse, type ListPersonalMemoryBankOwnershipGrantsResponses, type ListPersonalMemoryBanksData, type ListPersonalMemoryBankSourceBindingsData, type ListPersonalMemoryBankSourceBindingsResponse, type ListPersonalMemoryBankSourceBindingsResponses, type ListPersonalMemoryBanksResponse, type ListPersonalMemoryBanksResponses, type ListPersonalMemoryBankVisibilityGrantsData, type ListPersonalMemoryBankVisibilityGrantsResponse, type ListPersonalMemoryBankVisibilityGrantsResponses, type ListPersonalMemorySourceBindingsData, type ListPersonalMemorySourceBindingsResponse, type ListPersonalMemorySourceBindingsResponses, type ListPersonalRegistryOwnershipGrantsData, type ListPersonalRegistryOwnershipGrantsResponse, type ListPersonalRegistryOwnershipGrantsResponses, type ListPersonalRegistryVisibilityGrantsData, type ListPersonalRegistryVisibilityGrantsResponse, type ListPersonalRegistryVisibilityGrantsResponses, type ListPersonalRscOwnershipGrantsData, type ListPersonalRscOwnershipGrantsResponse, type ListPersonalRscOwnershipGrantsResponses, type ListPersonalRscVisibilityGrantsData, type ListPersonalRscVisibilityGrantsResponse, type ListPersonalRscVisibilityGrantsResponses, type ListPersonalSkillOwnershipGrantsData, type ListPersonalSkillOwnershipGrantsResponse, type ListPersonalSkillOwnershipGrantsResponses, type ListPersonalSkillRegistriesData, type ListPersonalSkillRegistriesResponse, type ListPersonalSkillRegistriesResponses, type ListPersonalSkillsData, type ListPersonalSkillsResponse, type ListPersonalSkillsResponses, type ListPersonalSkillVisibilityGrantsData, type ListPersonalSkillVisibilityGrantsResponse, type ListPersonalSkillVisibilityGrantsResponses, type ListPersonalToolGroupInstancesData, type ListPersonalToolGroupInstancesError, type ListPersonalToolGroupInstancesErrors, type ListPersonalToolGroupInstancesResponse, type ListPersonalToolGroupInstancesResponses, type ListPersonalUcOwnershipGrantsData, type ListPersonalUcOwnershipGrantsResponse, type ListPersonalUcOwnershipGrantsResponses, type ListPersonalUcVisibilityGrantsData, type ListPersonalUcVisibilityGrantsResponse, type ListPersonalUcVisibilityGrantsResponses, type ListPersonalWikiOwnershipGrantsData, type ListPersonalWikiOwnershipGrantsResponse, type ListPersonalWikiOwnershipGrantsResponses, type ListPersonalWikiPagesData, type ListPersonalWikiPagesResponse, type ListPersonalWikiPagesResponses, type ListPersonalWikisData, type ListPersonalWikisResponse, type ListPersonalWikisResponses, type ListPersonalWikiVisibilityGrantsData, type ListPersonalWikiVisibilityGrantsResponse, type ListPersonalWikiVisibilityGrantsResponses, type ListProviderProvisionerCatalogData, type ListProviderProvisionerCatalogResponse, type ListProviderProvisionerCatalogResponses, type ListProviderSetupCatalogResponse, type ListProxiedMcpServersData, type ListProxiedMcpServersError, type ListProxiedMcpServersErrors, type ListProxiedMcpServersResponse, type ListProxiedMcpServersResponses, type ListProxiedSkillProvidersData, type ListProxiedSkillProvidersResponse, type ListProxiedSkillProvidersResponse2, type ListProxiedSkillProvidersResponses, type ListProxyTokensData, type ListProxyTokensError, type ListProxyTokensErrors, type ListProxyTokensResponse, type ListProxyTokensResponses, type ListPublicAvailableToolGroupsData, type ListPublicAvailableToolGroupsError, type ListPublicAvailableToolGroupsErrors, type ListPublicAvailableToolGroupsResponse, type ListPublicAvailableToolGroupsResponses, type ListResourceServerCredentialsData, type ListResourceServerCredentialsResponse, type ListResourceServerCredentialsResponses, type ListReverseProxyProvidersResponse, type ListRscOwnershipGrantsData, type ListRscOwnershipGrantsResponse, type ListRscOwnershipGrantsResponses, type ListRscVisibilityGrantsData, type ListRscVisibilityGrantsResponse, type ListRscVisibilityGrantsResponses, type ListSessionInboxInstancesData, type ListSessionInboxInstancesError, type ListSessionInboxInstancesErrors, type ListSessionInboxInstancesResponse, type ListSessionInboxInstancesResponses, type ListSessionResourceGrantsData, type ListSessionResourceGrantsError, type ListSessionResourceGrantsErrors, type ListSessionResourceGrantsResponse, type ListSessionResourceGrantsResponses, type ListSessionsData, type ListSessionsError, type ListSessionsErrors, type ListSessionsResponse, type ListSessionsResponses, type ListSessionUserMembersData, type ListSessionUserMembersError, type ListSessionUserMembersErrors, type ListSessionUserMembersResponse, type ListSessionUserMembersResponses, type ListSignalProviderGrantsData, type ListSignalProviderGrantsResponse, type ListSignalProviderGrantsResponses, type ListSkillOwnershipGrantsData, type ListSkillOwnershipGrantsResponse, type ListSkillOwnershipGrantsResponses, type ListSkillRegistriesData, type ListSkillRegistriesError, type ListSkillRegistriesErrors, type ListSkillRegistriesResponse, type ListSkillRegistriesResponses, type ListSkillRegistryOwnershipGrantsData, type ListSkillRegistryOwnershipGrantsResponse, type ListSkillRegistryOwnershipGrantsResponses, type ListSkillRegistrySkillSummariesData, type ListSkillRegistrySkillSummariesError, type ListSkillRegistrySkillSummariesErrors, type ListSkillRegistrySkillSummariesResponse, type ListSkillRegistrySkillSummariesResponses, type ListSkillRegistryVisibilityGrantsData, type ListSkillRegistryVisibilityGrantsResponse, type ListSkillRegistryVisibilityGrantsResponses, type ListSkillsData, type ListSkillsError, type ListSkillsErrors, type ListSkillsResponse, type ListSkillsResponses, type ListSkillVisibilityGrantsData, type ListSkillVisibilityGrantsResponse, type ListSkillVisibilityGrantsResponses, type ListTeamGroupMembersData, type ListTeamGroupMembersResponse, type ListTeamGroupMembersResponses, type ListTeamGroupsData, type ListTeamGroupsResponse, type ListTeamGroupsResponses, type ListTeamInvitationsData, type ListTeamInvitationsResponse, type ListTeamInvitationsResponses, type ListTeamMembersData, type ListTeamMembersError, type ListTeamMembersErrors, type ListTeamMembersResponse, type ListTeamMembersResponses, type ListTeamsData, type ListTeamsError, type ListTeamsErrors, type ListTeamsResponse, type ListTeamsResponses, type ListToolDeploymentsByAliasData, type ListToolDeploymentsByAliasError, type ListToolDeploymentsByAliasErrors, type ListToolDeploymentsByAliasResponse, type ListToolDeploymentsByAliasResponses, type ListToolGroupInstancesData, type ListToolGroupInstancesError, type ListToolGroupInstancesErrors, type ListToolGroupInstancesGroupedByToolData, type ListToolGroupInstancesGroupedByToolError, type ListToolGroupInstancesGroupedByToolErrors, type ListToolGroupInstancesGroupedByToolResponse, type ListToolGroupInstancesGroupedByToolResponses, type ListToolGroupInstancesResponse, type ListToolGroupInstancesResponses, type ListToolsData, type ListToolsError, type ListToolsErrors, type ListToolsResponse, type ListToolsResponses, type ListTrustedRuntimesData, type ListTrustedRuntimesError, type ListTrustedRuntimesErrors, type ListTrustedRuntimesResponse, type ListTrustedRuntimesResponses, type ListUcOwnershipGrantsData, type ListUcOwnershipGrantsResponse, type ListUcOwnershipGrantsResponses, type ListUcVisibilityGrantsData, type ListUcVisibilityGrantsResponse, type ListUcVisibilityGrantsResponses, type ListUserCredentialsData, type ListUserCredentialsResponse, type ListUserCredentialsResponses, type ListVerifiedIdentityLinksData, type ListVerifiedIdentityLinksError, type ListVerifiedIdentityLinksErrors, type ListVerifiedIdentityLinksResponse, type ListVerifiedIdentityLinksResponse2, type ListVerifiedIdentityLinksResponses, type ListVisibleMemoryBanksData, type ListVisibleMemoryBanksResponse, type ListVisibleMemoryBanksResponses, type ListWikiAssetsData, type ListWikiAssetsResponse, type ListWikiAssetsResponses, type ListWikiOntologyInstallationsData, type ListWikiOntologyInstallationsResponse, type ListWikiOntologyInstallationsResponses, type ListWikiOntologyTemplatesData, type ListWikiOntologyTemplatesResponse, type ListWikiOntologyTemplatesResponses, type ListWikiOwnershipGrantsData, type ListWikiOwnershipGrantsResponse, type ListWikiOwnershipGrantsResponses, type ListWikiPageAssetsData, type ListWikiPageAssetsResponse, type ListWikiPageAssetsResponses, type ListWikiPageRelationshipsData, type ListWikiPageRelationshipsResponse, type ListWikiPageRelationshipsResponses, type ListWikiPageRevisionsData, type ListWikiPageRevisionsResponse, type ListWikiPageRevisionsResponses, type ListWikiPagesData, type ListWikiPagesResponse, type ListWikiPagesResponses, type ListWikiPageTypesData, type ListWikiPageTypesResponse, type ListWikiPageTypesResponses, type ListWikiPageTypeVersionsData, type ListWikiPageTypeVersionsResponse, type ListWikiPageTypeVersionsResponses, type ListWikiRelationshipTypesData, type ListWikiRelationshipTypesResponse, type ListWikiRelationshipTypesResponses, type ListWikiRelationshipTypeVersionsData, type ListWikiRelationshipTypeVersionsResponse, type ListWikiRelationshipTypeVersionsResponses, type ListWikisData, type ListWikisResponse, type ListWikisResponses, type ListWikiVisibilityGrantsData, type ListWikiVisibilityGrantsResponse, type ListWikiVisibilityGrantsResponses, type LocalRuntimeTunnelApiKey, type LocalRuntimeTunnelConnector, type LoginProviderResolution, type MakeMppPaymentRequest, type MakeX402PaymentRequest, type ManagedSkillSelection, type ManagedUserCredentialSecretResponse, type ManagedUserCredentialSummary, type ManagedUserCredentialSummaryPaginatedResponse, type ManagedUserCredentialSummaryValue, type McpPlaygroundAiSdkChatMessage, type McpPlaygroundAiSdkChatMessagePart, type McpPlaygroundAiSdkChatRequest, type McpProtocolDeleteData, type McpProtocolDeleteError, type McpProtocolDeleteErrors, type McpProtocolDeleteResponses, type McpProtocolGetData, type McpProtocolGetError, type McpProtocolGetErrors, type McpProtocolGetResponses, type McpProtocolPostData, type McpProtocolPostError, type McpProtocolPostErrors, type McpProtocolPostResponses, McpProviderCatalogConnectionMethod, type McpProviderCatalogEntry, type McpProviderCatalogTool, type McpServerInstanceSerializedWithFunctions, type McpServerInstanceSerializedWithFunctionsPaginatedResponse, type McpServerInstanceToolSerialized, type McpServerPlaygroundChatData, type McpServerPlaygroundChatError, type McpServerPlaygroundChatErrors, type McpServerPlaygroundChatResponses, type McpServerSpec, type MemoryActorContext, type MemoryBank, type MemoryBankConfig, type MemoryBankDocumentList, type MemoryBankHealth, type MemoryBankPaginatedResponse, type MemoryBankSpec, MemoryBankStatus, type MemoryBankTemplate, type MemoryDocument, type MemoryDocumentAuthorship, MemoryDocumentOrigin, type MemoryDocumentProvenance, type MemoryDocumentRelations, type MemoryOperationResponse, MemoryProvider, type MemoryProviderDocumentState, type MemorySourceBinding, MemorySourceKind, type MemorySourceProvenance, type MemorySpec, type MemorySynthesisMutationBinding, MemorySynthesisOutcome, MemoryType, type Message, type MessageActorContext, type MessageDeliveryReceipt, MessageFormat, type MessageFormatConfig, type MessagePaginatedResponse, MessageRole, type Metadata, type MigrateWikiPageBody, type MigrateWikiPageTypeData, type MigrateWikiPageTypeErrors, type MigrateWikiPageTypeResponse, type MigrateWikiPageTypeResponses, type MoveWikiPageBody, type MoveWikiPageData, type MoveWikiPageErrors, type MoveWikiPageResponse, type MoveWikiPageResponses, type ObserveSessionData, type ObserveSessionError, type ObserveSessionErrors, type ObserveSessionResponses, type OnboardOrganizationData, type OnboardOrganizationError, type OnboardOrganizationErrors, type OnboardOrganizationRequest, type OnboardOrganizationResponse, type OnboardOrganizationResponse2, type OnboardOrganizationResponses, type OntologyPageTypeDefinition, type OntologyRelationshipTypeDefinition, type OpenBotAgentSkillInput, type OpenBotDeployment, type OpenBotPluginsCatalogResponse, type Organization, type OrganizationAiCreditContext, type OrganizationMemberWithUser, type OrganizationMemberWithUserPaginatedResponse, type OrgOidcProvider, type OrgOidcProviderPaginatedResponse, OrgOidcProviderStatus, type OrgProxyToken, type OrgProxyTokenPaginatedResponse, type PageRelationshipView, type PageTypeMigrationIssue, type PageTypeMigrationPreview, type PageTypeValidationResult, PartState, type PaymentResponse, type PaymentSessionSnapshot, PayOnboardingStep, type PayPaymentRequest, type PayWalletSummaryError, type PayWalletSummaryResponse, type PersonalMcpProtocolDeleteData, type PersonalMcpProtocolDeleteResponses, type PersonalMcpProtocolGetData, type PersonalMcpProtocolGetResponses, type PersonalMcpProtocolPostData, type PersonalMcpProtocolPostResponses, type PersonalMcpServerInstanceSerialized, type PersonalSkill, type PersonalSkillRegistry, type PersonalToolGroupInstanceSerialized, type PlanStateRequest, type PlatformChannelAddress, type PreviewIdentityLinkData, type PreviewIdentityLinkResponse, type PreviewIdentityLinkResponses, type PreviewWikiPageTypeMigrationData, type PreviewWikiPageTypeMigrationErrors, type PreviewWikiPageTypeMigrationResponse, type PreviewWikiPageTypeMigrationResponses, type ProductBillingContext, ProductSubscriptionStatus, type ProposalCredentialRequirement, type ProposalPermissionChange, type ProviderAppProvisioningResponse, type ProviderAuthAccountNameDisplay, type ProviderAuthAdapterApiKey, type ProviderAuthAdapterConfig, type ProviderAuthAdapterCustom, type ProviderAuthAdapterCustomJsonSchema, type ProviderAuthAdapterNoAuth, type ProviderAuthAdapterOauthApp, type ProviderAuthAdapterOauthJwtBearer, type ProviderAuthAdapterServerTokenExchange, type ProviderAuthAdapterTildeManagedOauth, type ProviderAuthFieldDisplay, ProviderDeliveryStatus, type ProviderProvisionerConfigField, type ProviderProvisionerCredentialRequirement, type ProviderProvisionerForm, type ProviderProvisionerInstructions, ProviderProvisionerSetupKind, type ProviderProvisioningCallbackData, type ProviderProvisioningCallbackResponse, type ProviderProvisioningCallbackResponses, type ProviderProvisioningHumanAction, type ProviderProvisioningInput, type ProviderProvisioningNextAction, type ProviderSetupAuthMethod, type ProviderSetupCatalogData, type ProviderSetupCatalogResponse, type ProviderSetupCatalogResponses, type ProviderSetupDescriptor, type ProviderSetupField, type ProviderSetupNextAction, type ProviderSetupOption, type ProviderSetupResponse, type ProviderSetupResumeData, type ProviderSetupResumeResponse, type ProviderSetupResumeResponses, type ProviderSetupStartData, type ProviderSetupStartResponse, type ProviderSetupStartResponses, type ProvisionAgentRequest, type ProvisionedProviderApp, type ProvisionedResource, ProvisionerCredentialKind, type ProvisionIdentityTeamData, type ProvisionIdentityTeamRequest, type ProvisionIdentityTeamResponse, type ProvisionIdentityTeamResponses, type ProvisionPayBrowserResponse, type ProvisionTildePayRequest, type ProvisionTildePayResponse, ProxiedMcpApiKeyLocation, ProxiedMcpAuthMode, type ProxiedMcpServerDetails, type ProxiedMcpServerListItem, type ProxiedMcpServerListItemPaginatedResponse, type ProxiedMcpServerSerialized, type ProxiedSkill, type ProxiedSkillProvider, type ProxyCredentialTemplate, type PutRoutineBody, type ReasoningUiPart, type RecallChatKitAutomaticMemoryBody, type RecallMemoryBody, type RecallMemoryData, type RecallMemoryResponse, type RecallMemoryResponses, type RecallPersonalMemoryData, type RecallPersonalMemoryResponse, type RecallPersonalMemoryResponses, type RecallSynthesisSessionMemoryData, type RecallSynthesisSessionMemoryResponse, type RecallSynthesisSessionMemoryResponses, type ReconcileOpenBotAgentBundleBody, type ReconcileOpenbotAgentBundleData, type ReconcileOpenbotAgentBundleResponse, type ReconcileOpenBotAgentBundleResponse, type ReconcileOpenbotAgentBundleResponses, type RecordAgentRunEffectInner, type RedirectTemporaryAccountClaimPageData, type ReflectMemoryBody, type ReflectMemoryData, type ReflectMemoryResponse, type ReflectMemoryResponses, type ReflectPersonalMemoryData, type ReflectPersonalMemoryResponse, type ReflectPersonalMemoryResponses, type RefreshCustomToolProviderData, type RefreshCustomToolProviderResponse, type RefreshCustomToolProviderResponse2, type RefreshCustomToolProviderResponses, type RefreshProxiedMcpServerData, type RefreshProxiedMcpServerError, type RefreshProxiedMcpServerErrors, type RefreshProxiedMcpServerResponse, type RefreshProxiedMcpServerResponses, type RefreshTokenRequest, type RefreshWalletTransactionHistoryResponse, type RegisterAgentTool, type RegisterAgentToolsRequestInner, type RegisterChatKitChatProviderRequestInner, type RegisterChatKitChatProviderResponse, type RegisterHttpVercelAiSdkAgentRequestInner, type RegisterHttpVercelAiSdkAgentResponse, type RegisterInboxInstanceRequest, type RegisterOauthClientData, type RegisterOauthClientError, type RegisterOauthClientErrors, type RegisterOAuthClientRequest, type RegisterOauthClientResponse, type RegisterOAuthClientResponse, type RegisterOauthClientResponses, type RegisterOpenbotDeploymentData, type RegisterOpenbotDeploymentError, type RegisterOpenbotDeploymentErrors, type RegisterOpenBotDeploymentRequest, type RegisterOpenbotDeploymentResponse, type RegisterOpenbotDeploymentResponses, type RegisterTeamOauthClientData, type RegisterTeamOauthClientError, type RegisterTeamOauthClientErrors, type RegisterTeamOauthClientResponse, type RegisterTeamOauthClientResponses, type RegisterVercelUiChatProviderRequestInner, RelationshipDirectionality, type ReleaseAiCreditReservationBody, type RemoveChatKitParticipantResponse, type RemoveCommonProviderInstallationOwnershipGrantData, type RemoveCommonProviderInstallationOwnershipGrantResponses, type RemoveCommonProviderInstallationVisibilityGrantData, type RemoveCommonProviderInstallationVisibilityGrantResponses, type RemoveIdentityIdentifierData, type RemoveIdentityIdentifierResponse, type RemoveIdentityIdentifierResponses, type RemoveIdentityTeamData, type RemoveIdentityTeamResponses, type RemoveMcpResourceOwnershipGrantData, type RemoveMcpResourceOwnershipGrantResponses, type RemoveMcpResourceVisibilityGrantData, type RemoveMcpResourceVisibilityGrantResponses, type RemoveMcpServerInstanceFunctionData, type RemoveMcpServerInstanceFunctionError, type RemoveMcpServerInstanceFunctionErrors, type RemoveMcpServerInstanceFunctionResponse, type RemoveMcpServerInstanceFunctionResponses, type RemoveMemoryBankOwnershipGrantData, type RemoveMemoryBankOwnershipGrantResponses, type RemoveMemoryBankVisibilityGrantData, type RemoveMemoryBankVisibilityGrantResponses, type RemoveOrganizationMemberData, type RemoveOrganizationMemberError, type RemoveOrganizationMemberErrors, type RemoveOrganizationMemberResponses, type RemovePersonalMemoryBankOwnershipGrantData, type RemovePersonalMemoryBankOwnershipGrantResponses, type RemovePersonalMemoryBankVisibilityGrantData, type RemovePersonalMemoryBankVisibilityGrantResponses, type RemovePersonalRegistryOwnershipGrantData, type RemovePersonalRegistryOwnershipGrantResponses, type RemovePersonalRegistryVisibilityGrantData, type RemovePersonalRegistryVisibilityGrantResponses, type RemovePersonalRscOwnershipGrantData, type RemovePersonalRscOwnershipGrantResponses, type RemovePersonalRscVisibilityGrantData, type RemovePersonalRscVisibilityGrantResponses, type RemovePersonalSkillOwnershipGrantData, type RemovePersonalSkillOwnershipGrantResponses, type RemovePersonalSkillVisibilityGrantData, type RemovePersonalSkillVisibilityGrantResponses, type RemovePersonalUcOwnershipGrantData, type RemovePersonalUcOwnershipGrantResponses, type RemovePersonalUcVisibilityGrantData, type RemovePersonalUcVisibilityGrantResponses, type RemovePersonalWikiOwnershipGrantData, type RemovePersonalWikiOwnershipGrantResponses, type RemovePersonalWikiVisibilityGrantData, type RemovePersonalWikiVisibilityGrantResponses, type RemoveRscOwnershipGrantData, type RemoveRscOwnershipGrantResponses, type RemoveRscVisibilityGrantData, type RemoveRscVisibilityGrantResponses, type RemoveSessionResourceGrantData, type RemoveSessionResourceGrantError, type RemoveSessionResourceGrantErrors, type RemoveSessionResourceGrantResponse, type RemoveSessionResourceGrantResponses, type RemoveSessionUserMemberData, type RemoveSessionUserMemberError, type RemoveSessionUserMemberErrors, type RemoveSessionUserMemberResponse, type RemoveSessionUserMemberResponse2, type RemoveSessionUserMemberResponses, type RemoveSignalProviderGrantData, type RemoveSignalProviderGrantResponses, type RemoveSkillOwnershipGrantData, type RemoveSkillOwnershipGrantResponses, type RemoveSkillRegistryOwnershipGrantData, type RemoveSkillRegistryOwnershipGrantResponses, type RemoveSkillRegistryVisibilityGrantData, type RemoveSkillRegistryVisibilityGrantResponses, type RemoveSkillVisibilityGrantData, type RemoveSkillVisibilityGrantResponses, type RemoveTeamGroupMemberData, type RemoveTeamGroupMemberResponses, type RemoveTeamMemberData, type RemoveTeamMemberError, type RemoveTeamMemberErrors, type RemoveTeamMemberResponses, type RemoveUcOwnershipGrantData, type RemoveUcOwnershipGrantResponses, type RemoveUcVisibilityGrantData, type RemoveUcVisibilityGrantResponses, type RemoveWikiOwnershipGrantData, type RemoveWikiOwnershipGrantResponses, type RemoveWikiVisibilityGrantData, type RemoveWikiVisibilityGrantResponses, type RenameChatKitWorkspaceThreadRequestInner, type RenameProxyTokenData, type RenameProxyTokenError, type RenameProxyTokenErrors, type RenameProxyTokenRequest, type RenameProxyTokenResponses, type ReorderChatKitAgentTurnQueueItemRequestInner, type ReplaceMemoryBankBindingsBody, type ReplaceMemorySourceBindingsData, type ReplaceMemorySourceBindingsResponse, type ReplaceMemorySourceBindingsResponses, type ReplacePersonalMemorySourceBindingsData, type ReplacePersonalMemorySourceBindingsResponse, type ReplacePersonalMemorySourceBindingsResponses, type ReportChatKitCompactionEventInner, type ReportChatKitCompactionEventResponse, type ReportedAgentTool, type ReportToolExecutionRequestInner, type ReserveAiCreditsBody, type ResetMemoryBankConfigData, type ResetMemoryBankConfigResponse, type ResetMemoryBankConfigResponses, type ResetPersonalMemoryBankConfigData, type ResetPersonalMemoryBankConfigResponse, type ResetPersonalMemoryBankConfigResponses, type ResolveIdentityData, type ResolveIdentityError, type ResolveIdentityErrors, type ResolveIdentityResponse, type ResolveIdentityResponses, type ResolveLoginProviderResponse, type ResolveStateSourceRequest, type ResolveStateSourceResponse, ResourceAccessMode, ResourceAction, type ResourceApplyOutput, type ResourceAuthorization, type ResourceAuthorizationModes, type ResourceGrant, ResourceGrantPlane, type ResourceGrantRequest, type ResourceOwnership, type ResourcePlanItem, ResourcePrincipalType, ResourceServerCredentialPurpose, type ResourceServerCredentialSerialized, type ResourceServerCredentialSerializedPaginatedResponse, type ResumeAgentJobRequestInner, type ResumeCredentialSetupItemBody, type ResumeCredentialSetupItemData, type ResumeCredentialSetupItemResponse, type ResumeCredentialSetupItemResponses, type ResumeProviderAppProvisioningBody, type ResumeProviderAppProvisioningData, type ResumeProviderAppProvisioningResponse, type ResumeProviderAppProvisioningResponses, type ResumeProviderSetupBody, type ResumeUserCredentialBrokeringData, type ResumeUserCredentialBrokeringParams, type ResumeUserCredentialBrokeringResponse, type ResumeUserCredentialBrokeringResponses, type RetainMemoryBody, type RetainMemoryDocumentData, type RetainMemoryDocumentResponse, type RetainMemoryDocumentResponses, type RetainPersonalMemoryDocumentData, type RetainPersonalMemoryDocumentResponse, type RetainPersonalMemoryDocumentResponses, type RetainSynthesisSessionMemoryData, type RetainSynthesisSessionMemoryResponse, type RetainSynthesisSessionMemoryResponses, type RetryConnectionWork, type RetryMemorySourceBody, type RetryMemorySourceSyncData, type RetryMemorySourceSyncResponse, type RetryMemorySourceSyncResponses, type RetryPersonalMemorySourceBindingsData, type RetryPersonalMemorySourceBindingsResponse, type RetryPersonalMemorySourceBindingsResponses, type RetryWikiData, type RetryWikiResponse, type RetryWikiResponses, type ReturnAddress, type ReturnAddressUrl, type ReverseProxyAddProfileOwnershipGrantData, type ReverseProxyAddProfileOwnershipGrantResponse, type ReverseProxyAddProfileOwnershipGrantResponses, type ReverseProxyAddProfileVisibilityGrantData, type ReverseProxyAddProfileVisibilityGrantResponse, type ReverseProxyAddProfileVisibilityGrantResponses, type ReverseProxyCreateProfileData, type ReverseProxyCreateProfileError, type ReverseProxyCreateProfileErrors, type ReverseProxyCreateProfileResponse, type ReverseProxyCreateProfileResponses, type ReverseProxyDeleteProfileData, type ReverseProxyDeleteProfileError, type ReverseProxyDeleteProfileErrors, type ReverseProxyDeleteProfileResponses, type ReverseProxyGetProfileData, type ReverseProxyGetProfileError, type ReverseProxyGetProfileErrors, type ReverseProxyGetProfileResponse, type ReverseProxyGetProfileResponses, type ReverseProxyListProfileOwnershipGrantsData, type ReverseProxyListProfileOwnershipGrantsResponse, type ReverseProxyListProfileOwnershipGrantsResponses, type ReverseProxyListProfilesData, type ReverseProxyListProfilesError, type ReverseProxyListProfilesErrors, type ReverseProxyListProfilesResponse, type ReverseProxyListProfilesResponses, type ReverseProxyListProfileVisibilityGrantsData, type ReverseProxyListProfileVisibilityGrantsResponse, type ReverseProxyListProfileVisibilityGrantsResponses, type ReverseProxyListProvidersData, type ReverseProxyListProvidersResponse, type ReverseProxyListProvidersResponses, type ReverseProxyProfile, type ReverseProxyProfilePaginatedResponse, type ReverseProxyProviderInfo, type ReverseProxyProxyGetData, type ReverseProxyProxyGetResponses, type ReverseProxyProxyPostData, type ReverseProxyProxyPostResponses, type ReverseProxyRemoveProfileOwnershipGrantData, type ReverseProxyRemoveProfileOwnershipGrantResponses, type ReverseProxyRemoveProfileVisibilityGrantData, type ReverseProxyRemoveProfileVisibilityGrantResponses, type ReverseProxySetProfileOwnershipData, type ReverseProxySetProfileOwnershipResponse, type ReverseProxySetProfileOwnershipResponses, type ReverseProxySetProfileVisibilityData, type ReverseProxySetProfileVisibilityResponse, type ReverseProxySetProfileVisibilityResponses, type ReverseProxyUpdateProfileData, type ReverseProxyUpdateProfileError, type ReverseProxyUpdateProfileErrors, type ReverseProxyUpdateProfileResponse, type ReverseProxyUpdateProfileResponses, type RevokeLocalRuntimeTunnelApiKeyData, type RevokeLocalRuntimeTunnelApiKeyError, type RevokeLocalRuntimeTunnelApiKeyErrors, type RevokeLocalRuntimeTunnelApiKeyResponse, type RevokeLocalRuntimeTunnelApiKeyResponses, type RevokeProxyTokenData, type RevokeProxyTokenError, type RevokeProxyTokenErrors, type RevokeProxyTokenResponses, type RevokeTeamInvitationData, type RevokeTeamInvitationResponses, type RotateCustomToolProviderSigningKeyData, type RotateCustomToolProviderSigningKeyResponse, type RotateCustomToolProviderSigningKeyResponse2, type RotateCustomToolProviderSigningKeyResponses, type RouteAuthCallbackData, type RouteAuthCallbackError, type RouteAuthCallbackErrors, type RouteCreateApiKeyData, type RouteCreateApiKeyError, type RouteCreateApiKeyErrors, type RouteCreateApiKeyResponse, type RouteCreateApiKeyResponses, type RouteDeleteApiKeyData, type RouteDeleteApiKeyError, type RouteDeleteApiKeyErrors, type RouteDeleteApiKeyResponse, type RouteDeleteApiKeyResponses, type RouteGetJwksData, type RouteGetJwksError, type RouteGetJwksErrors, type RouteGetJwksResponse, type RouteGetJwksResponses, type RouteListApiKeysData, type RouteListApiKeysError, type RouteListApiKeysErrors, type RouteListApiKeysResponse, type RouteListApiKeysResponses, type RouteListDebugAuthProfilesData, type RouteListDebugAuthProfilesError, type RouteListDebugAuthProfilesErrors, type RouteListDebugAuthProfilesResponse, type RouteListDebugAuthProfilesResponses, type RouteLogoutData, type RouteRefreshTokenData, type RouteRefreshTokenError, type RouteRefreshTokenErrors, type RouteRefreshTokenResponse, type RouteRefreshTokenResponses, type RouteResolveLoginProviderData, type RouteResolveLoginProviderError, type RouteResolveLoginProviderErrors, type RouteResolveLoginProviderResponse, type RouteResolveLoginProviderResponses, type RouteSelectDebugAuthProfileData, type RouteSelectDebugAuthProfileError, type RouteSelectDebugAuthProfileErrors, type RouteSelectDebugAuthProfileResponse, type RouteSelectDebugAuthProfileResponses, type RouteStartAuthorizationData, type RouteStartAuthorizationError, type RouteStartAuthorizationErrors, type Routine, RoutineEventInstructionPolicy, type RoutineExecution, type RoutineExecutionPaginatedResponse, type RoutinePaginatedResponse, type RoutineTrigger, type RoutineTriggerInput, type RoutineTriggerSpec, type RunRoutineBody, type RunRoutineResponse, type RuntimeConfig, type RuntimeIdentity, type RuntimeIdentityPaginatedResponse, type SearchSkillRegistryData, type SearchSkillRegistryError, type SearchSkillRegistryErrors, type SearchSkillRegistryResponse, type SearchSkillRegistryResponses, type SelectDebugAuthProfileRequest, SelfExtensionCategory, type SelfExtensionPreview, type SelfExtensionProposal, type SelfExtensionProposalOutputs, type SelfExtensionResource, SelfExtensionStatus, type SelfProfileAvatarResponse, type SelfProfileResponse, type SelfProfileUser, type SendChatKitWorkspaceMessageRequestInner, type SendSessionMessageBody, type SendSessionMessageInput, type SendSessionMessageResponse, type Session, type SessionCorrelation, type SessionPaginatedResponse, type SessionParticipantIdentity, SessionPurpose, type SessionUserMembership, SessionUserRole, type SetChatKitResourceStatusRequest, type SetCommonProviderInstallationOwnershipData, type SetCommonProviderInstallationOwnershipResponse, type SetCommonProviderInstallationOwnershipResponses, type SetCommonProviderInstallationVisibilityData, type SetCommonProviderInstallationVisibilityResponse, type SetCommonProviderInstallationVisibilityResponses, type SetMcpResourceOwnershipData, type SetMcpResourceOwnershipResponse, type SetMcpResourceOwnershipResponses, type SetMcpResourceVisibilityData, type SetMcpResourceVisibilityResponse, type SetMcpResourceVisibilityResponses, type SetMemoryBankOwnershipModeData, type SetMemoryBankOwnershipModeResponse, type SetMemoryBankOwnershipModeResponses, type SetMemoryBankVisibilityData, type SetMemoryBankVisibilityResponse, type SetMemoryBankVisibilityResponses, type SetOpenBotAvatarRequest, type SetPersonalMemoryBankOwnershipModeData, type SetPersonalMemoryBankOwnershipModeResponse, type SetPersonalMemoryBankOwnershipModeResponses, type SetPersonalMemoryBankVisibilityData, type SetPersonalMemoryBankVisibilityResponse, type SetPersonalMemoryBankVisibilityResponses, type SetPersonalRegistryOwnershipModeData, type SetPersonalRegistryOwnershipModeResponse, type SetPersonalRegistryOwnershipModeResponses, type SetPersonalRegistryVisibilityData, type SetPersonalRegistryVisibilityResponse, type SetPersonalRegistryVisibilityResponses, type SetPersonalRscOwnershipData, type SetPersonalRscOwnershipResponse, type SetPersonalRscOwnershipResponses, type SetPersonalRscVisibilityData, type SetPersonalRscVisibilityResponse, type SetPersonalRscVisibilityResponses, type SetPersonalSkillOwnershipModeData, type SetPersonalSkillOwnershipModeResponse, type SetPersonalSkillOwnershipModeResponses, type SetPersonalSkillVisibilityData, type SetPersonalSkillVisibilityResponse, type SetPersonalSkillVisibilityResponses, type SetPersonalUcOwnershipData, type SetPersonalUcOwnershipResponse, type SetPersonalUcOwnershipResponses, type SetPersonalUcVisibilityData, type SetPersonalUcVisibilityResponse, type SetPersonalUcVisibilityResponses, type SetPersonalWikiOwnershipModeData, type SetPersonalWikiOwnershipModeResponse, type SetPersonalWikiOwnershipModeResponses, type SetPersonalWikiVisibilityData, type SetPersonalWikiVisibilityResponse, type SetPersonalWikiVisibilityResponses, type SetResourceAccessModeRequest, type SetRscOwnershipData, type SetRscOwnershipResponse, type SetRscOwnershipResponses, type SetRscVisibilityData, type SetRscVisibilityResponse, type SetRscVisibilityResponses, type SetSelfOpenbotAvatarData, type SetSelfOpenbotAvatarError, type SetSelfOpenbotAvatarErrors, type SetSelfOpenbotAvatarResponse, type SetSelfOpenbotAvatarResponses, type SetSignalProviderOwnershipData, type SetSignalProviderOwnershipResponse, type SetSignalProviderOwnershipResponses, type SetSignalProviderVisibilityData, type SetSignalProviderVisibilityResponse, type SetSignalProviderVisibilityResponses, type SetSkillOwnershipModeData, type SetSkillOwnershipModeResponse, type SetSkillOwnershipModeResponses, type SetSkillRegistryOwnershipModeData, type SetSkillRegistryOwnershipModeResponse, type SetSkillRegistryOwnershipModeResponses, type SetSkillRegistryVisibilityData, type SetSkillRegistryVisibilityResponse, type SetSkillRegistryVisibilityResponses, type SetSkillVisibilityData, type SetSkillVisibilityResponse, type SetSkillVisibilityResponses, type SetUcOwnershipData, type SetUcOwnershipResponse, type SetUcOwnershipResponses, type SetUcVisibilityData, type SetUcVisibilityResponse, type SetUcVisibilityResponses, type SetupPayMcpResponse, type SetWikiOwnershipModeData, type SetWikiOwnershipModeResponse, type SetWikiOwnershipModeResponses, type SetWikiVisibilityData, type SetWikiVisibilityResponse, type SetWikiVisibilityResponses, type SignalAction, type SignalDelivery, type SignalDeliveryPaginatedResponse, SignalDeliveryStatus, SignalIngressMode, type SignalInterpolationVariable, type SignalMessage, type SignalMessageContext, type SignalPollingDescriptor, SignalProviderAuthMethod, type SignalProviderInstance, type SignalProviderInstancePaginatedResponse, SignalProviderInstanceStatus, type SignalProviderRouteDescriptor, type SignalProviderSourceSerialized, type SignalProviderSourceSerializedPaginatedResponse, type SignalRuleFilter, type SignalsAddPersonalProviderGrantData, type SignalsAddPersonalProviderGrantResponse, type SignalsAddPersonalProviderGrantResponses, type SignalsCreatePersonalProviderInstanceData, type SignalsCreatePersonalProviderInstanceResponse, type SignalsCreatePersonalProviderInstanceResponses, type SignalsCreateProviderInstanceData, type SignalsCreateProviderInstanceResponse, type SignalsCreateProviderInstanceResponses, type SignalsDeletePersonalProviderInstanceData, type SignalsDeletePersonalProviderInstanceResponse, type SignalsDeletePersonalProviderInstanceResponses, type SignalsDeleteProviderInstanceData, type SignalsDeleteProviderInstanceResponse, type SignalsDeleteProviderInstanceResponses, type SignalSessionPolicy, type SignalsGetDeliveryData, type SignalsGetDeliveryResponse, type SignalsGetDeliveryResponses, type SignalsGetPersonalDeliveryData, type SignalsGetPersonalDeliveryResponse, type SignalsGetPersonalDeliveryResponses, type SignalsGetPersonalProviderInstanceData, type SignalsGetPersonalProviderInstanceResponse, type SignalsGetPersonalProviderInstanceResponses, type SignalsGetProviderInstanceData, type SignalsGetProviderInstanceResponse, type SignalsGetProviderInstanceResponses, type SignalsListAvailableProvidersData, type SignalsListAvailableProvidersResponse, type SignalsListAvailableProvidersResponses, type SignalsListDeliveriesData, type SignalsListDeliveriesResponse, type SignalsListDeliveriesResponses, type SignalsListPersonalAvailableProvidersData, type SignalsListPersonalAvailableProvidersResponse, type SignalsListPersonalAvailableProvidersResponses, type SignalsListPersonalDeliveriesData, type SignalsListPersonalDeliveriesResponse, type SignalsListPersonalDeliveriesResponses, type SignalsListPersonalProviderGrantsData, type SignalsListPersonalProviderGrantsResponse, type SignalsListPersonalProviderGrantsResponses, type SignalsListPersonalProviderInstancesData, type SignalsListPersonalProviderInstancesResponse, type SignalsListPersonalProviderInstancesResponses, type SignalsListProviderInstancesData, type SignalsListProviderInstancesResponse, type SignalsListProviderInstancesResponses, type SignalsRemovePersonalProviderGrantData, type SignalsRemovePersonalProviderGrantResponses, type SignalsRetryDeliveryData, type SignalsRetryDeliveryResponse, type SignalsRetryDeliveryResponses, type SignalsRetryPersonalDeliveryData, type SignalsRetryPersonalDeliveryResponse, type SignalsRetryPersonalDeliveryResponses, type SignalsSetPersonalProviderOwnershipData, type SignalsSetPersonalProviderOwnershipResponse, type SignalsSetPersonalProviderOwnershipResponses, type SignalsSetPersonalProviderVisibilityData, type SignalsSetPersonalProviderVisibilityResponse, type SignalsSetPersonalProviderVisibilityResponses, type SignalsTriggerFakeData, type SignalsTriggerFakeResponse, type SignalsTriggerFakeResponses, type SignalsUpdatePersonalProviderInstanceData, type SignalsUpdatePersonalProviderInstanceResponse, type SignalsUpdatePersonalProviderInstanceResponses, type SignalsUpdateProviderInstanceData, type SignalsUpdateProviderInstanceResponse, type SignalsUpdateProviderInstanceResponses, type SignalTypeSourceSerialized, type SignalWebhookVerificationDescriptor, type Skill, type SkillDescriptionResponse, type SkillDiscoverySearchRequest, type SkillDiscoverySearchResponse, type SkillPackageFile, type SkillPackageFileDownload, type SkillPackageManifest, type SkillPaginatedResponse, type SkillRegistry, type SkillRegistryPaginatedResponse, type SkillRegistrySpec, type SkillSummary, type SkillSummaryPaginatedResponse, type SlackInstallationNextAction, type SourceDocumentUiPart, type SourceUrlUiPart, type StartBrokeringBodyExternal, type StartCredentialSetupItemBody, type StartCredentialSetupItemData, type StartCredentialSetupItemResponse, type StartCredentialSetupItemResponse2, type StartCredentialSetupItemResponses, type StartOAuthDeviceCodeBody, type StartOauthDeviceCodeData, type StartOauthDeviceCodeError, type StartOauthDeviceCodeErrors, type StartOauthDeviceCodeResponse, type StartOauthDeviceCodeResponses, type StartOAuthDeviceCodeResult, type StartProviderAppProvisioningBody, type StartProviderAppProvisioningData, type StartProviderAppProvisioningResponse, type StartProviderAppProvisioningResponses, type StartProviderSetupBody, type StartProxiedMcpServerOauthData, type StartProxiedMcpServerOauthError, type StartProxiedMcpServerOauthErrors, type StartProxiedMcpServerOauthRequestInner, type StartProxiedMcpServerOauthResponse, type StartProxiedMcpServerOauthResponse2, type StartProxiedMcpServerOauthResponses, type StartSlackOauthRequestInner, type StartUserCredentialBrokeringData, type StartUserCredentialBrokeringResponse, type StartUserCredentialBrokeringResponses, StateDocumentFormat, type StateExportData, type StateExportError, type StateExportErrors, type StateExportResponses, type StateGetImportData, type StateGetImportResponse, type StateGetImportResponses, type StateImportData, type StateImportEventsData, type StateImportEventsResponses, type StateImportOutputs, type StateImportResponse, type StateImportResponses, StateImportStatus, type StateMetadata, type StatePlan, type StatePlanData, type StatePlanResponse, type StatePlanResponses, type StateResolveSourceData, type StateResolveSourceError, type StateResolveSourceErrors, type StateResolveSourceResponse, type StateResolveSourceResponses, type StateSchema, type StateSchemaData, type StateSchemaJsonData, type StateSchemaJsonResponses, type StateSchemaResponse, type StateSchemaResponses, type StateSourceMetadata, type StateValidateData, type StateValidateResponse, type StateValidateResponses, type StateVariableDefinition, StateVariableType, type SteerAgentJobRequestInner, type SteerChatKitAgentTurnQueueItemResponse, type StepStartUiPart, type StopAgentJobRequestInner, type StoredEvent, type StoredEventPaginatedResponse, type StoredMemoryDocument, type SubmitChatKitWorkspaceTurnRequestInner, type SubmitChatKitWorkspaceTurnResponse, type SupportedCredentialInfo, type SynthesisSessionRetainMemoryBody, type Task, type TaskPaginatedResponse, TaskStatus, type Team, type TeamGroupSummary, type TeamGroupSummaryPaginatedResponse, type TeamMemberWithUser, type TeamMemberWithUserPaginatedResponse, type TeamPaginatedResponse, type TextMessage, type TextUiPart, type TildePayPaymentMppData, type TildePayPaymentMppResponse, type TildePayPaymentMppResponses, type TildePayPaymentX402Data, type TildePayPaymentX402Response, type TildePayPaymentX402Responses, type TildePayProvisionData, type TildePayProvisionResponse, type TildePayProvisionResponses, type TildePayWalletCreateData, type TildePayWalletCreateResponse, type TildePayWalletCreateResponses, type TildePayWalletSummaryData, type TildePayWalletSummaryResponse, type TildePayWalletSummaryResponses, type TildePayWalletWaitUntilBalanceData, type TildePayWalletWaitUntilBalanceResponse, type TildePayWalletWaitUntilBalanceResponses, type TokenResponse, type ToolConfig, type ToolConfigPaginatedResponse, type ToolDeploymentWithGroupSerialized, type ToolDeploymentWithGroupSerializedPaginatedResponse, type ToolExecution, ToolExecutionAuthority, ToolExecutionState, type ToolGroupInstanceListItem, type ToolGroupInstanceListItemPaginatedResponse, type ToolGroupInstanceSerialized, type ToolGroupInstanceSerializedWithCredentials, type ToolGroupInstanceSerializedWithEverything, type ToolGroupSourceSerialized, type ToolGroupSourceSerializedPaginatedResponse, type ToolInstanceListItem, type ToolInstanceSerialized, type ToolInstanceSerializedPaginatedResponse, ToolInvocationState, type ToolSourceSerialized, type ToolUiPart, type TransitionAgentRunInner, type TraverseWikiGraphData, type TraverseWikiGraphResponse, type TraverseWikiGraphResponses, type TriggerFakeSignalRequest, type TrustedRuntime, TrustedRuntimeEncryptionAlgorithm, type TrustedRuntimePaginatedResponse, TrustedRuntimeSigningAlgorithm, TrustedRuntimeStatus, TrustedRuntimeType, type TupleUnit, type UiMessage, type UiMessagePart, type UnbindToolGroupFromMcpServerData, type UnbindToolGroupFromMcpServerError, type UnbindToolGroupFromMcpServerErrors, type UnbindToolGroupFromMcpServerResponse, type UnbindToolGroupFromMcpServerResponses, type UpdateAgentObservabilityPolicyRequestInner, type UpdateAgentToolVisibilityRequestInner, type UpdateChatKitChatProviderRequestInner, type UpdateChatKitSessionUserStateRequestInner, type UpdateCredentialBody, type UpdateCustomToolProviderData, type UpdateCustomToolProviderRequestInner, type UpdateCustomToolProviderResponse, type UpdateCustomToolProviderResponses, type UpdateGoalRequestInner, type UpdateHostedOpenbotComputerImageData, type UpdateHostedOpenbotComputerImageError, type UpdateHostedOpenbotComputerImageErrors, type UpdateHostedOpenBotComputerImageRequest, type UpdateHostedOpenbotComputerImageResponse, type UpdateHostedOpenbotComputerImageResponses, type UpdateHttpVercelAiSdkAgentRequestInner, type UpdateIdentityData, type UpdateIdentityError, type UpdateIdentityErrors, type UpdateIdentityRequest, type UpdateIdentityResponse, type UpdateIdentityResponses, type UpdateManagedUserCredentialBody, type UpdateManagedUserCredentialData, type UpdateManagedUserCredentialResponse, type UpdateManagedUserCredentialResponses, type UpdateMcpServerInstanceBody, type UpdateMcpServerInstanceData, type UpdateMcpServerInstanceError, type UpdateMcpServerInstanceErrors, type UpdateMcpServerInstanceFunctionData, type UpdateMcpServerInstanceFunctionError, type UpdateMcpServerInstanceFunctionErrors, type UpdateMcpServerInstanceFunctionResponse, type UpdateMcpServerInstanceFunctionResponses, type UpdateMcpServerInstanceRequestInner, type UpdateMcpServerInstanceResponse, type UpdateMcpServerInstanceResponses, type UpdateMcpServerInstanceToolBody, type UpdateMemberRoleBody, type UpdateMemoryBankBody, type UpdateMemoryBankConfigBody, type UpdateMemoryBankConfigData, type UpdateMemoryBankConfigResponse, type UpdateMemoryBankConfigResponses, type UpdateMemoryBankData, type UpdateMemoryBankResponse, type UpdateMemoryBankResponses, type UpdateOrganizationData, type UpdateOrganizationError, type UpdateOrganizationErrors, type UpdateOrganizationMemberRoleBody, type UpdateOrganizationMemberRoleData, type UpdateOrganizationMemberRoleError, type UpdateOrganizationMemberRoleErrors, type UpdateOrganizationMemberRoleResponse, type UpdateOrganizationMemberRoleResponses, type UpdateOrganizationRequest, type UpdateOrganizationResponses, type UpdateOrgOidcProviderData, type UpdateOrgOidcProviderError, type UpdateOrgOidcProviderErrors, type UpdateOrgOidcProviderRequest, type UpdateOrgOidcProviderResponse, type UpdateOrgOidcProviderResponses, type UpdatePageTypeBody, type UpdatePersonalMcpServerInstanceData, type UpdatePersonalMcpServerInstanceResponse, type UpdatePersonalMcpServerInstanceResponses, type UpdatePersonalMemoryBankConfigData, type UpdatePersonalMemoryBankConfigResponse, type UpdatePersonalMemoryBankConfigResponses, type UpdatePersonalMemoryBankData, type UpdatePersonalMemoryBankResponse, type UpdatePersonalMemoryBankResponses, type UpdatePersonalSkillData, type UpdatePersonalSkillRegistryData, type UpdatePersonalSkillRegistryResponse, type UpdatePersonalSkillRegistryResponses, type UpdatePersonalSkillResponse, type UpdatePersonalSkillResponses, type UpdatePersonalToolGroupInstanceData, type UpdatePersonalToolGroupInstanceResponse, type UpdatePersonalToolGroupInstanceResponses, type UpdatePersonalWikiData, type UpdatePersonalWikiPageData, type UpdatePersonalWikiPageResponse, type UpdatePersonalWikiPageResponses, type UpdatePersonalWikiResponse, type UpdatePersonalWikiResponses, type UpdateRelationshipTypeBody, type UpdateResourceServerCredentialData, type UpdateResourceServerCredentialResponse, type UpdateResourceServerCredentialResponses, type UpdateReverseProxyProfileInner, type UpdateSelfProfileData, type UpdateSelfProfileError, type UpdateSelfProfileErrors, type UpdateSelfProfileRequest, type UpdateSelfProfileResponse, type UpdateSelfProfileResponses, type UpdateSessionOwnershipData, type UpdateSessionOwnershipError, type UpdateSessionOwnershipErrors, type UpdateSessionOwnershipResponse, type UpdateSessionOwnershipResponses, type UpdateSessionVisibilityData, type UpdateSessionVisibilityError, type UpdateSessionVisibilityErrors, type UpdateSessionVisibilityResponse, type UpdateSessionVisibilityResponses, type UpdateSignalProviderInstanceRequestInner, type UpdateSkillBody, type UpdateSkillData, type UpdateSkillError, type UpdateSkillErrors, type UpdateSkillRegistryBody, type UpdateSkillRegistryData, type UpdateSkillRegistryError, type UpdateSkillRegistryErrors, type UpdateSkillRegistryResponse, type UpdateSkillRegistryResponses, type UpdateSkillResponse, type UpdateSkillResponses, type UpdateTaskRequestInner, type UpdateTeamData, type UpdateTeamError, type UpdateTeamErrors, type UpdateTeamGroupBody, type UpdateTeamGroupData, type UpdateTeamGroupError, type UpdateTeamGroupErrors, type UpdateTeamGroupResponse, type UpdateTeamGroupResponses, type UpdateTeamMemberRoleData, type UpdateTeamMemberRoleError, type UpdateTeamMemberRoleErrors, type UpdateTeamMemberRoleResponse, type UpdateTeamMemberRoleResponses, type UpdateTeamRequest, type UpdateTeamResponses, type UpdateToolBoundParamsData, type UpdateToolBoundParamsError, type UpdateToolBoundParamsErrors, type UpdateToolBoundParamsResponse, type UpdateToolBoundParamsResponses, type UpdateToolGroupInstanceData, type UpdateToolGroupInstanceError, type UpdateToolGroupInstanceErrors, type UpdateToolGroupInstanceParamsInner, type UpdateToolGroupInstanceResponse, type UpdateToolGroupInstanceResponses, type UpdateToolInstanceBoundParamsInner, type UpdateTrustedRuntimeBody, type UpdateTrustedRuntimeData, type UpdateTrustedRuntimeError, type UpdateTrustedRuntimeErrors, type UpdateTrustedRuntimeResponse, type UpdateTrustedRuntimeResponses, type UpdateUserCredentialData, type UpdateUserCredentialResponse, type UpdateUserCredentialResponses, type UpdateWikiAssetBody, type UpdateWikiAssetData, type UpdateWikiAssetResponse, type UpdateWikiAssetResponses, type UpdateWikiBody, type UpdateWikiData, type UpdateWikiPageData, type UpdateWikiPageErrors, type UpdateWikiPageRelationshipData, type UpdateWikiPageRelationshipResponse, type UpdateWikiPageRelationshipResponses, type UpdateWikiPageResponse, type UpdateWikiPageResponses, type UpdateWikiPageTypeData, type UpdateWikiPageTypeErrors, type UpdateWikiPageTypeResponse, type UpdateWikiPageTypeResponses, type UpdateWikiRelationshipTypeData, type UpdateWikiRelationshipTypeErrors, type UpdateWikiRelationshipTypeResponse, type UpdateWikiRelationshipTypeResponses, type UpdateWikiResponse, type UpdateWikiResponses, type UploadAttachmentContentData, type UploadAttachmentContentError, type UploadAttachmentContentErrors, type UploadAttachmentContentResponse, type UploadAttachmentContentResponses, type UploadHostedOpenbotReleaseFileData, type UploadHostedOpenbotReleaseFileError, type UploadHostedOpenbotReleaseFileErrors, type UploadHostedOpenbotReleaseFileResponse, type UploadHostedOpenbotReleaseFileResponses, type UploadSelfAvatarData, type UploadSelfAvatarError, type UploadSelfAvatarErrors, type UploadSelfAvatarResponse, type UploadSelfAvatarResponses, type UploadWikiAssetContentData, type UploadWikiAssetContentErrors, type UploadWikiAssetContentResponses, type UpsertPageRelationshipBody, type UpsertWikiPageBody, type UpsertWikiPageRelationshipData, type UpsertWikiPageRelationshipErrors, type UpsertWikiPageRelationshipResponse, type UpsertWikiPageRelationshipResponses, type User, type UserAvatar, type UserCredentialBrokeringResponse, type UserCredentialSerialized, type UserCredentialSerializedPaginatedResponse, type UserInvitation, type UserInvitationPaginatedResponse, type UserOrganization, type UserTeam, UserToolFederationMode, type UserToolFederationSelection, UserType, type ValidatePageTypeDataBody, type ValidateStateRequest, type ValidateStateResponse, type ValidateSynthesisBatchBody, type ValidateSynthesisSessionBatchData, type ValidateSynthesisSessionBatchResponse, type ValidateSynthesisSessionBatchResponses, type ValidateWikiPageTypeDataData, type ValidateWikiPageTypeDataResponse, type ValidateWikiPageTypeDataResponses, type Vec, type VerifiedIdentityLink, VerifiedIdentityLinkSource, type VerifyOrgOidcProviderDomainData, type VerifyOrgOidcProviderDomainError, type VerifyOrgOidcProviderDomainErrors, type VerifyOrgOidcProviderDomainResponse, type VerifyOrgOidcProviderDomainResponses, type WaitForPayBalanceRequest, type WaitUntilBalanceRequest, type WaitUntilBalanceResponse, type Wallet, type WalletCreateData, type WalletCreateError, type WalletCreateErrors, type WalletCreateResponse, type WalletCreateResponses, type WalletCustomer, type WalletCustomerCreateData, type WalletCustomerCreateResponse, type WalletCustomerCreateResponses, type WalletCustomerGetData, type WalletCustomerGetResponse, type WalletCustomerGetResponses, type WalletCustomerKycGetData, type WalletCustomerKycGetResponse, type WalletCustomerKycGetResponses, type WalletCustomerListData, type WalletCustomerListResponse, type WalletCustomerListResponses, type WalletCustomerPaginatedResponse, type WalletGetBalancesData, type WalletGetBalancesResponse, type WalletGetBalancesResponses, type WalletGetCryptoDepositInformationData, type WalletGetCryptoDepositInformationResponse, type WalletGetCryptoDepositInformationResponses, type WalletGetData, type WalletGetFiatDepositInformationData, type WalletGetFiatDepositInformationResponse, type WalletGetFiatDepositInformationResponses, type WalletGetResponse, type WalletGetResponses, type WalletListData, type WalletListResponse, type WalletListResponses, type WalletMakeMppPaymentData, type WalletMakeMppPaymentResponse, type WalletMakeMppPaymentResponses, type WalletMakeX402PaymentData, type WalletMakeX402PaymentResponse, type WalletMakeX402PaymentResponses, type WalletMerchant, type WalletPaginatedResponse, type WalletTransactionHistoryItem, type WalletTransactionHistoryItemPaginatedResponse, type WalletTransactionHistoryListData, type WalletTransactionHistoryListResponse, type WalletTransactionHistoryListResponses, type WalletTransactionHistoryRefreshData, type WalletTransactionHistoryRefreshResponse, type WalletTransactionHistoryRefreshResponses, type WalletVirtualAccount, type WalletVirtualAccountCreateData, type WalletVirtualAccountCreateError, type WalletVirtualAccountCreateErrors, type WalletVirtualAccountCreateResponse, type WalletVirtualAccountCreateResponses, type WalletWaitUntilBalanceData, type WalletWaitUntilBalanceResponse, type WalletWaitUntilBalanceResponses, type WebhookSigningKeyMetadata, type WhoamiData, type WhoamiError, type WhoamiErrors, type WhoamiResponse, type WhoamiResponses, type Wiki, type WikiAsset, type WikiAssetDownloadResponse, type WikiAssetPaginatedResponse, type WikiAssetReferences, WikiAssetStatus, type WikiAssetUploadResponse, type WikiGraph, type WikiGrepMatch, type WikiOntologyInstallation, type WikiOntologyTemplate, type WikiPage, type WikiPagePaginatedResponse, type WikiPageRelationship, type WikiPageRevision, type WikiPageRevisionPaginatedResponse, type WikiPageType, type WikiPageTypeVersion, type WikiPaginatedResponse, type WikiRelationshipEvidence, type WikiRelationshipType, type WikiRelationshipTypeVersion, type WikiSpec, WikiStatus, type WrappedChronoDateTime, type WrappedJsonValue, type WrappedUuidV4 } from './types.gen'; diff --git a/packages/api-client/src/generated/sdk.gen.ts b/packages/api-client/src/generated/sdk.gen.ts index 37c73525..23a36516 100644 --- a/packages/api-client/src/generated/sdk.gen.ts +++ b/packages/api-client/src/generated/sdk.gen.ts @@ -1,8 +1,8 @@ // This file is auto-generated by @hey-api/openapi-ts -import { type Client, type ClientMeta, type Options as Options2, type RequestResult, type TDataShape, urlSearchParamsBodySerializer } from './client'; +import { type Client, type ClientMeta, type Options as Options2, type RequestResult, type ServerSentEventsResult, type TDataShape, urlSearchParamsBodySerializer } from './client'; import { client } from './client.gen'; -import type { AcceptInvitationData, AcceptInvitationErrors, AcceptInvitationResponses, AddCommonProviderInstallationOwnershipGrantData, AddCommonProviderInstallationOwnershipGrantResponses, AddCommonProviderInstallationVisibilityGrantData, AddCommonProviderInstallationVisibilityGrantResponses, AddIdentityTeamData, AddIdentityTeamResponses, AddMcpResourceOwnershipGrantData, AddMcpResourceOwnershipGrantResponses, AddMcpResourceVisibilityGrantData, AddMcpResourceVisibilityGrantResponses, AddMcpServerInstanceFunctionData, AddMcpServerInstanceFunctionErrors, AddMcpServerInstanceFunctionResponses, AddMemoryBankOwnershipGrantData, AddMemoryBankOwnershipGrantResponses, AddMemoryBankVisibilityGrantData, AddMemoryBankVisibilityGrantResponses, AddOrganizationMemberData, AddOrganizationMemberErrors, AddOrganizationMemberResponses, AddPersonalMemoryBankOwnershipGrantData, AddPersonalMemoryBankOwnershipGrantResponses, AddPersonalMemoryBankVisibilityGrantData, AddPersonalMemoryBankVisibilityGrantResponses, AddPersonalRegistryOwnershipGrantData, AddPersonalRegistryOwnershipGrantResponses, AddPersonalRegistryVisibilityGrantData, AddPersonalRegistryVisibilityGrantResponses, AddPersonalRscOwnershipGrantData, AddPersonalRscOwnershipGrantResponses, AddPersonalRscVisibilityGrantData, AddPersonalRscVisibilityGrantResponses, AddPersonalSkillOwnershipGrantData, AddPersonalSkillOwnershipGrantResponses, AddPersonalSkillVisibilityGrantData, AddPersonalSkillVisibilityGrantResponses, AddPersonalUcOwnershipGrantData, AddPersonalUcOwnershipGrantResponses, AddPersonalUcVisibilityGrantData, AddPersonalUcVisibilityGrantResponses, AddPersonalWikiOwnershipGrantData, AddPersonalWikiOwnershipGrantResponses, AddPersonalWikiVisibilityGrantData, AddPersonalWikiVisibilityGrantResponses, AddProviderSkillsToSkillRegistryData, AddProviderSkillsToSkillRegistryErrors, AddProviderSkillsToSkillRegistryResponses, AddRscOwnershipGrantData, AddRscOwnershipGrantResponses, AddRscVisibilityGrantData, AddRscVisibilityGrantResponses, AddSessionResourceGrantData, AddSessionResourceGrantErrors, AddSessionResourceGrantResponses, AddSessionUserMemberData, AddSessionUserMemberErrors, AddSessionUserMemberResponses, AddSignalProviderGrantData, AddSignalProviderGrantResponses, AddSkillOwnershipGrantData, AddSkillOwnershipGrantResponses, AddSkillRegistryOwnershipGrantData, AddSkillRegistryOwnershipGrantResponses, AddSkillRegistryVisibilityGrantData, AddSkillRegistryVisibilityGrantResponses, AddSkillVisibilityGrantData, AddSkillVisibilityGrantResponses, AddTeamGroupMemberData, AddTeamGroupMemberErrors, AddTeamGroupMemberResponses, AddTeamMemberData, AddTeamMemberErrors, AddTeamMemberResponses, AddUcOwnershipGrantData, AddUcOwnershipGrantResponses, AddUcVisibilityGrantData, AddUcVisibilityGrantResponses, AddWikiOwnershipGrantData, AddWikiOwnershipGrantResponses, AddWikiVisibilityGrantData, AddWikiVisibilityGrantResponses, ApplyWikiOntologyTemplateData, ApplyWikiOntologyTemplateResponses, AssignPersonalMemoryBankSynthesizerData, AssignPersonalMemoryBankSynthesizerResponses, AuthorizeOauthDeviceCodeData, AuthorizeOauthDeviceCodeErrors, AuthorizeOauthDeviceCodeResponses, AutomationsAddGrantData, AutomationsAddGrantResponses, AutomationsDeleteData, AutomationsDeleteResponses, AutomationsGetData, AutomationsGetErrors, AutomationsGetResponses, AutomationsListData, AutomationsListExecutionsData, AutomationsListExecutionsResponses, AutomationsListGrantsData, AutomationsListGrantsResponses, AutomationsListResponses, AutomationsPutData, AutomationsPutErrors, AutomationsPutResponses, AutomationsRemoveGrantData, AutomationsRemoveGrantResponses, AutomationsRunData, AutomationsRunResponses, AutomationsSetOwnershipData, AutomationsSetOwnershipResponses, AutomationsSetVisibilityData, AutomationsSetVisibilityResponses, AutoProvisionToolGroupInstanceData, AutoProvisionToolGroupInstanceErrors, AutoProvisionToolGroupInstanceResponses, AutumnWebhookHandlerData, AutumnWebhookHandlerErrors, AutumnWebhookHandlerResponses, BillingAiCreditReceiptCommitData, BillingAiCreditReceiptCommitResponses, BillingAiCreditReservationReleaseData, BillingAiCreditReservationReleaseResponses, BillingAiCreditReserveData, BillingAiCreditReserveResponses, BillingAiCreditTopupCreateData, BillingAiCreditTopupCreateErrors, BillingAiCreditTopupCreateResponses, BillingAiGatewayEnsureData, BillingAiGatewayEnsureErrors, BillingAiGatewayEnsureResponses, BillingAutumnBridgePostData, BillingAutumnBridgePostErrors, BillingAutumnBridgePostResponses, BillingContextGetData, BillingContextGetErrors, BillingContextGetResponses, BillingEnrollAccountData, BillingEnrollAccountErrors, BillingEnrollAccountResponses, BillingProductEnrollCurrentHumanData, BillingProductEnrollCurrentHumanErrors, BillingProductEnrollCurrentHumanResponses, BillingRedirectData, BillingRedirectErrors, BillingRemoveAccountSeatData, BillingRemoveAccountSeatErrors, BillingRemoveAccountSeatResponses, BillingWebhookStripeDeprecatedData, BillingWebhookStripeDeprecatedResponses, BindToolGroupToMcpServerData, BindToolGroupToMcpServerErrors, BindToolGroupToMcpServerResponses, BulkAddMcpServerInstanceFunctionsData, BulkAddMcpServerInstanceFunctionsErrors, BulkAddMcpServerInstanceFunctionsResponses, BulkRemoveMcpServerInstanceFunctionsData, BulkRemoveMcpServerInstanceFunctionsErrors, BulkRemoveMcpServerInstanceFunctionsResponses, CancelHumanApprovalActionData, CancelHumanApprovalActionErrors, CancelHumanApprovalActionResponses, ChangePersonalWikiOwnershipData, ChangePersonalWikiOwnershipResponses, ChangeWikiOwnershipData, ChangeWikiOwnershipResponses, ChatkitAddAgentResourceGrantData, ChatkitAddAgentResourceGrantErrors, ChatkitAddAgentResourceGrantResponses, ChatkitAddSessionParticipantData, ChatkitAddSessionParticipantErrors, ChatkitAddSessionParticipantResponses, ChatkitAppendAgentRunStepData, ChatkitAppendAgentRunStepResponses, ChatkitApproveSelfExtensionProposalData, ChatkitApproveSelfExtensionProposalResponses, ChatkitAutoProvisionSlackChannelInstallationData, ChatkitAutoProvisionSlackChannelInstallationErrors, ChatkitAutoProvisionSlackChannelInstallationResponses, ChatkitCacheConvertedMessagesData, ChatkitCacheConvertedMessagesErrors, ChatkitCacheConvertedMessagesResponses, ChatkitCancelSelfExtensionProposalData, ChatkitCancelSelfExtensionProposalResponses, ChatkitClaimAgentResourceBundleOutputsData, ChatkitClaimAgentResourceBundleOutputsResponses, ChatkitClaimAgentRunsData, ChatkitClaimAgentRunsResponses, ChatkitClaimSelfExtensionProposalOutputsData, ChatkitClaimSelfExtensionProposalOutputsResponses, ChatkitCollectAgentJobResultData, ChatkitCollectAgentJobResultResponses, ChatkitCompleteSlackProviderProvisionedSetupData, ChatkitCompleteSlackProviderProvisionedSetupErrors, ChatkitCompleteSlackProviderProvisionedSetupResponses, ChatkitCompleteSlackSelfManagedSetupData, ChatkitCompleteSlackSelfManagedSetupErrors, ChatkitCompleteSlackSelfManagedSetupResponses, ChatkitControlAgentRunData, ChatkitControlAgentRunResponses, ChatkitCreateAgentRunData, ChatkitCreateAgentRunResponses, ChatkitCreateGoalData, ChatkitCreateGoalResponses, ChatkitCreateRoomInvitationData, ChatkitCreateRoomInvitationErrors, ChatkitCreateRoomInvitationResponses, ChatkitCreateSessionData, ChatkitCreateSessionErrors, ChatkitCreateSessionResponses, ChatkitCreateSlackChannelInstallationData, ChatkitCreateSlackChannelInstallationErrors, ChatkitCreateSlackChannelInstallationResponses, ChatkitCreateTaskData, ChatkitCreateTaskResponses, ChatkitDecideCapabilityChangeData, ChatkitDecideCapabilityChangeResponses, ChatkitDecideRoomInvitationData, ChatkitDecideRoomInvitationErrors, ChatkitDecideRoomInvitationResponses, ChatkitDelegateAgentJobData, ChatkitDelegateAgentJobResponses, ChatkitDeleteAgentData, ChatkitDeleteAgentErrors, ChatkitDeleteAgentResponses, ChatkitDeleteAgentTurnQueueItemData, ChatkitDeleteAgentTurnQueueItemErrors, ChatkitDeleteAgentTurnQueueItemResponses, ChatkitDeleteChatProviderData, ChatkitDeleteChatProviderErrors, ChatkitDeleteChatProviderResponses, ChatkitFinishAgentRunEffectData, ChatkitFinishAgentRunEffectResponses, ChatkitGetActiveAgentRunData, ChatkitGetActiveAgentRunResponses, ChatkitGetAgentAvatarData, ChatkitGetAgentAvatarErrors, ChatkitGetAgentAvatarResponses, ChatkitGetAgentData, ChatkitGetAgentErrors, ChatkitGetAgentJobData, ChatkitGetAgentJobResponses, ChatkitGetAgentObservabilityData, ChatkitGetAgentObservabilityErrors, ChatkitGetAgentObservabilityResponses, ChatkitGetAgentResourceBundleProvisioningData, ChatkitGetAgentResourceBundleProvisioningResponses, ChatkitGetAgentResponses, ChatkitGetAgentRunData, ChatkitGetAgentRunEffectData, ChatkitGetAgentRunEffectResponses, ChatkitGetAgentRunResponses, ChatkitGetCompactedHistoryData, ChatkitGetCompactedHistoryErrors, ChatkitGetCompactedHistoryResponses, ChatkitGetGoalData, ChatkitGetGoalResponses, ChatkitGetLatestCompactionData, ChatkitGetLatestCompactionErrors, ChatkitGetLatestCompactionResponses, ChatkitGetSelfExtensionProposalData, ChatkitGetSelfExtensionProposalResponses, ChatkitGetTaskData, ChatkitGetTaskResponses, ChatkitHydrateConvertedMessagesData, ChatkitHydrateConvertedMessagesErrors, ChatkitHydrateConvertedMessagesResponses, ChatkitInvokeSessionProviderToolData, ChatkitInvokeSessionProviderToolErrors, ChatkitInvokeSessionProviderToolResponses, ChatkitJoinSessionData, ChatkitJoinSessionErrors, ChatkitJoinSessionResponses, ChatkitListAgentJobsData, ChatkitListAgentJobsResponses, ChatkitListAgentResourceGrantsData, ChatkitListAgentResourceGrantsErrors, ChatkitListAgentResourceGrantsResponses, ChatkitListAgentsData, ChatkitListAgentsErrors, ChatkitListAgentsResponses, ChatkitListAgentTurnQueueData, ChatkitListAgentTurnQueueErrors, ChatkitListAgentTurnQueueResponses, ChatkitListAvailableChatChannelsData, ChatkitListAvailableChatChannelsErrors, ChatkitListAvailableChatChannelsResponses, ChatkitListAvailableChatProvidersData, ChatkitListAvailableChatProvidersErrors, ChatkitListAvailableChatProvidersResponses, ChatkitListChatProvidersData, ChatkitListChatProvidersErrors, ChatkitListChatProvidersResponses, ChatkitListGoalsData, ChatkitListGoalsResponses, ChatkitListMessageHistoryData, ChatkitListMessageHistoryErrors, ChatkitListMessageHistoryResponses, ChatkitListRoomInvitationsData, ChatkitListRoomInvitationsErrors, ChatkitListRoomInvitationsResponses, ChatkitListSelfExtensionProposalsData, ChatkitListSelfExtensionProposalsResponses, ChatkitListSessionParticipantsData, ChatkitListSessionParticipantsErrors, ChatkitListSessionParticipantsResponses, ChatkitListSessionsData, ChatkitListSessionsErrors, ChatkitListSessionsResponses, ChatkitListTasksData, ChatkitListTasksResponses, ChatkitPrepareAgentRunEffectData, ChatkitPrepareAgentRunEffectResponses, ChatkitProposeSelfExtensionData, ChatkitProposeSelfExtensionResponses, ChatkitProvisionAgentResourceBundleData, ChatkitProvisionAgentResourceBundleResponses, ChatkitRecallAutomaticMemoryData, ChatkitRecallAutomaticMemoryErrors, ChatkitRecallAutomaticMemoryResponses, ChatkitRegisterAgentToolsData, ChatkitRegisterAgentToolsErrors, ChatkitRegisterAgentToolsResponses, ChatkitRegisterChatProviderData, ChatkitRegisterChatProviderErrors, ChatkitRegisterChatProviderResponses, ChatkitRegisterHttpVercelAiSdkAgentData, ChatkitRegisterHttpVercelAiSdkAgentErrors, ChatkitRegisterHttpVercelAiSdkAgentResponses, ChatkitRegisterVercelUiChatProviderData, ChatkitRegisterVercelUiChatProviderErrors, ChatkitRegisterVercelUiChatProviderResponses, ChatkitRejectSelfExtensionProposalData, ChatkitRejectSelfExtensionProposalResponses, ChatkitRemoveAgentResourceGrantData, ChatkitRemoveAgentResourceGrantErrors, ChatkitRemoveAgentResourceGrantResponses, ChatkitRemoveSessionParticipantData, ChatkitRemoveSessionParticipantErrors, ChatkitRemoveSessionParticipantResponses, ChatkitReorderAgentTurnQueueItemData, ChatkitReorderAgentTurnQueueItemErrors, ChatkitReorderAgentTurnQueueItemResponses, ChatkitReportCompactionEventData, ChatkitReportCompactionEventErrors, ChatkitReportCompactionEventResponses, ChatkitReportToolExecutionData, ChatkitReportToolExecutionErrors, ChatkitReportToolExecutionResponses, ChatkitResumeAgentJobData, ChatkitResumeAgentJobResponses, ChatkitRevokeRoomInvitationData, ChatkitRevokeRoomInvitationErrors, ChatkitRevokeRoomInvitationResponses, ChatkitRollbackSelfExtensionProposalData, ChatkitRollbackSelfExtensionProposalResponses, ChatkitSearchData, ChatkitSearchErrors, ChatkitSearchResponses, ChatkitSendSessionMessageData, ChatkitSendSessionMessageErrors, ChatkitSendSessionMessageResponses, ChatkitSetAgentPermissionsData, ChatkitSetAgentPermissionsErrors, ChatkitSetAgentPermissionsResponses, ChatkitSetAgentStatusData, ChatkitSetAgentStatusErrors, ChatkitSetAgentStatusResponses, ChatkitSetChatProviderStatusData, ChatkitSetChatProviderStatusErrors, ChatkitSetChatProviderStatusResponses, ChatkitStartSlackOauthData, ChatkitStartSlackOauthErrors, ChatkitStartSlackOauthResponses, ChatkitSteerAgentJobData, ChatkitSteerAgentJobResponses, ChatkitSteerAgentTurnQueueItemData, ChatkitSteerAgentTurnQueueItemErrors, ChatkitSteerAgentTurnQueueItemResponses, ChatkitStopAgentJobData, ChatkitStopAgentJobResponses, ChatkitTransitionAgentRunData, ChatkitTransitionAgentRunResponses, ChatkitUpdateAgentAvatarData, ChatkitUpdateAgentAvatarErrors, ChatkitUpdateAgentAvatarResponses, ChatkitUpdateAgentData, ChatkitUpdateAgentErrors, ChatkitUpdateAgentObservabilityData, ChatkitUpdateAgentObservabilityErrors, ChatkitUpdateAgentObservabilityResponses, ChatkitUpdateAgentOwnershipData, ChatkitUpdateAgentOwnershipErrors, ChatkitUpdateAgentOwnershipResponses, ChatkitUpdateAgentResponses, ChatkitUpdateAgentToolVisibilityData, ChatkitUpdateAgentToolVisibilityErrors, ChatkitUpdateAgentToolVisibilityResponses, ChatkitUpdateAgentVisibilityData, ChatkitUpdateAgentVisibilityErrors, ChatkitUpdateAgentVisibilityResponses, ChatkitUpdateChatProviderData, ChatkitUpdateChatProviderErrors, ChatkitUpdateChatProviderResponses, ChatkitUpdateGoalData, ChatkitUpdateGoalResponses, ChatkitUpdateTaskData, ChatkitUpdateTaskResponses, ChatkitWorkspaceAgentSessionsData, ChatkitWorkspaceAgentSessionsResponses, ChatkitWorkspaceBootstrapData, ChatkitWorkspaceBootstrapResponses, ChatkitWorkspaceConversationSnapshotData, ChatkitWorkspaceConversationSnapshotResponses, ChatkitWorkspaceCreateSessionData, ChatkitWorkspaceCreateSessionResponses, ChatkitWorkspaceInterruptSessionData, ChatkitWorkspaceInterruptSessionResponses, ChatkitWorkspaceMessagesData, ChatkitWorkspaceMessagesResponses, ChatkitWorkspaceRenameThreadData, ChatkitWorkspaceRenameThreadResponses, ChatkitWorkspaceSendMessageData, ChatkitWorkspaceSendMessageResponses, ChatkitWorkspaceSidebarData, ChatkitWorkspaceSidebarResponses, ChatkitWorkspaceSubmitTurnData, ChatkitWorkspaceSubmitTurnResponses, ChatkitWorkspaceUpdateSessionReadStateData, ChatkitWorkspaceUpdateSessionReadStateResponses, CheckMemoryBankHealthData, CheckMemoryBankHealthResponses, CheckPersonalMemoryBankHealthData, CheckPersonalMemoryBankHealthResponses, ClaimTemporaryAccountData, ClaimTemporaryAccountErrors, ClaimTemporaryAccountResponses, ClearPersonalMemoryBankSynthesizerData, ClearPersonalMemoryBankSynthesizerResponses, CompleteAttachmentUploadData, CompleteAttachmentUploadErrors, CompleteAttachmentUploadResponses, CompleteCredentialSetupItemData, CompleteCredentialSetupItemResponses, CompleteHumanApprovalActionData, CompleteHumanApprovalActionErrors, CompleteHumanApprovalActionResponses, CompleteIdentityLinkData, CompleteIdentityLinkResponses, CompleteIdentityVerificationData, CompleteIdentityVerificationErrors, CompleteIdentityVerificationResponses, CompleteWikiAssetUploadData, CompleteWikiAssetUploadResponses, ConfigureHostedOpenbotInstanceData, ConfigureHostedOpenbotInstanceErrors, ConfigureHostedOpenbotInstanceResponses, ConnectMcpProviderCatalogEntryData, ConnectMcpProviderCatalogEntryErrors, ConnectMcpProviderCatalogEntryResponses, ConnectProxiedMcpServerData, ConnectProxiedMcpServerErrors, ConnectProxiedMcpServerResponses, CreateAttachmentUploadData, CreateAttachmentUploadErrors, CreateAttachmentUploadResponses, CreateAttachmentUploadsData, CreateAttachmentUploadsErrors, CreateAttachmentUploadsResponses, CreateCustomToolProviderData, CreateCustomToolProviderResponses, CreateHostedOpenbotDeploymentData, CreateHostedOpenbotDeploymentErrors, CreateHostedOpenbotDeploymentResponses, CreateHostedOpenbotReleaseData, CreateHostedOpenbotReleaseErrors, CreateHostedOpenbotReleaseResponses, CreateHumanApprovalActionData, CreateHumanApprovalActionErrors, CreateHumanApprovalActionResponses, CreateIdentityData, CreateIdentityErrors, CreateIdentityLinkData, CreateIdentityLinkErrors, CreateIdentityLinkResponses, CreateIdentityResponses, CreateManagedUserCredentialData, CreateManagedUserCredentialResponses, CreateMcpServerInstanceData, CreateMcpServerInstanceErrors, CreateMcpServerInstanceResponses, CreateMemoryBankData, CreateMemoryBankResponses, CreateMessageData, CreateMessageErrors, CreateMessageResponses, CreateOrganizationData, CreateOrganizationErrors, CreateOrganizationResponses, CreateOrgOidcProviderData, CreateOrgOidcProviderErrors, CreateOrgOidcProviderResponses, CreatePersonalMcpServerInstanceData, CreatePersonalMcpServerInstanceErrors, CreatePersonalMcpServerInstanceResponses, CreatePersonalMemoryBankData, CreatePersonalMemoryBankResponses, CreatePersonalSkillData, CreatePersonalSkillRegistryData, CreatePersonalSkillRegistryResponses, CreatePersonalSkillResponses, CreatePersonalToolGroupInstanceData, CreatePersonalToolGroupInstanceErrors, CreatePersonalToolGroupInstanceResponses, CreatePersonalUserCredentialData, CreatePersonalUserCredentialResponses, CreatePersonalWikiData, CreatePersonalWikiPageData, CreatePersonalWikiPageResponses, CreatePersonalWikiResponses, CreateProxyTokenData, CreateProxyTokenErrors, CreateProxyTokenResponses, CreateResourceServerCredentialData, CreateResourceServerCredentialResponses, CreateSessionData, CreateSessionErrors, CreateSessionResponses, CreateSkillData, CreateSkillErrors, CreateSkillRegistryData, CreateSkillRegistryErrors, CreateSkillRegistryResponses, CreateSkillResponses, CreateTeamData, CreateTeamErrors, CreateTeamGroupData, CreateTeamGroupErrors, CreateTeamGroupResponses, CreateTeamResponses, CreateTemporaryAccountData, CreateTemporaryAccountErrors, CreateTemporaryAccountResponses, CreateToolGroupInstanceData, CreateToolGroupInstanceErrors, CreateToolGroupInstanceResponses, CreateTrustedRuntimeData, CreateTrustedRuntimeErrors, CreateTrustedRuntimeResponses, CreateTrustedSkillProviderData, CreateTrustedSkillProviderErrors, CreateTrustedSkillProviderResponses, CreateUserCredentialData, CreateUserCredentialResponses, CreateWikiAssetUploadData, CreateWikiAssetUploadResponses, CreateWikiData, CreateWikiPageData, CreateWikiPageResponses, CreateWikiPageTypeData, CreateWikiPageTypeResponses, CreateWikiPageTypeVersionData, CreateWikiPageTypeVersionErrors, CreateWikiPageTypeVersionResponses, CreateWikiRelationshipTypeData, CreateWikiRelationshipTypeResponses, CreateWikiRelationshipTypeVersionData, CreateWikiRelationshipTypeVersionErrors, CreateWikiRelationshipTypeVersionResponses, CreateWikiResponses, CredentialGenericOauthCallbackData, CredentialGenericOauthCallbackResponses, DeleteAttachmentData, DeleteAttachmentErrors, DeleteAttachmentResponses, DeleteCustomToolProviderData, DeleteCustomToolProviderResponses, DeleteManagedUserCredentialData, DeleteManagedUserCredentialResponses, DeleteMcpServerInstanceData, DeleteMcpServerInstanceErrors, DeleteMcpServerInstanceResponses, DeleteMemoryBankData, DeleteMemoryBankResponses, DeleteMemoryDocumentData, DeleteMemoryDocumentResponses, DeleteMessageData, DeleteMessageErrors, DeleteMessageResponses, DeleteOrganizationData, DeleteOrganizationErrors, DeleteOrganizationResponses, DeleteOrgOidcProviderData, DeleteOrgOidcProviderErrors, DeleteOrgOidcProviderResponses, DeletePersonalMcpServerInstanceData, DeletePersonalMcpServerInstanceResponses, DeletePersonalMemoryBankData, DeletePersonalMemoryBankResponses, DeletePersonalMemoryDocumentData, DeletePersonalMemoryDocumentResponses, DeletePersonalSkillData, DeletePersonalSkillRegistryData, DeletePersonalSkillRegistryResponses, DeletePersonalSkillResponses, DeletePersonalToolGroupInstanceData, DeletePersonalToolGroupInstanceResponses, DeletePersonalWikiData, DeletePersonalWikiPageData, DeletePersonalWikiPageResponses, DeletePersonalWikiResponses, DeleteProxiedMcpServerData, DeleteProxiedMcpServerErrors, DeleteProxiedMcpServerResponses, DeleteResourceServerCredentialData, DeleteResourceServerCredentialResponses, DeleteSelfAvatarData, DeleteSelfAvatarErrors, DeleteSelfAvatarResponses, DeleteSkillData, DeleteSkillErrors, DeleteSkillRegistryData, DeleteSkillRegistryErrors, DeleteSkillRegistryResponses, DeleteSkillResponses, DeleteSynthesisSessionMemoryData, DeleteSynthesisSessionMemoryResponses, DeleteTeamData, DeleteTeamErrors, DeleteTeamGroupData, DeleteTeamGroupErrors, DeleteTeamGroupResponses, DeleteTeamResponses, DeleteToolGroupInstanceData, DeleteToolGroupInstanceErrors, DeleteToolGroupInstanceResponses, DeleteTrustedRuntimeData, DeleteTrustedRuntimeErrors, DeleteTrustedRuntimeResponses, DeleteUserCredentialData, DeleteUserCredentialResponses, DeleteVerifiedIdentityLinkData, DeleteVerifiedIdentityLinkErrors, DeleteVerifiedIdentityLinkResponses, DeleteWikiAssetData, DeleteWikiAssetErrors, DeleteWikiAssetResponses, DeleteWikiData, DeleteWikiPageData, DeleteWikiPageErrors, DeleteWikiPageRelationshipData, DeleteWikiPageRelationshipResponses, DeleteWikiPageResponses, DeleteWikiPageTypeData, DeleteWikiPageTypeErrors, DeleteWikiPageTypeResponses, DeleteWikiPageTypeVersionData, DeleteWikiPageTypeVersionErrors, DeleteWikiPageTypeVersionResponses, DeleteWikiRelationshipTypeData, DeleteWikiRelationshipTypeErrors, DeleteWikiRelationshipTypeResponses, DeleteWikiResponses, DisableCustomToolProviderData, DisableCustomToolProviderResponses, DisableProxiedMcpServerData, DisableProxiedMcpServerErrors, DisableProxiedMcpServerResponses, DisableToolData, DisableToolErrors, DisableToolResponses, DownloadAttachmentContentData, DownloadAttachmentContentErrors, DownloadAttachmentContentResponses, DownloadSkillPackageFileData, DownloadSkillPackageFileErrors, DownloadSkillPackageFileResponses, DownloadWikiAssetContentData, DownloadWikiAssetContentErrors, DownloadWikiAssetContentResponses, DownloadWikiAssetData, DownloadWikiAssetResponses, EnableAndBindProviderToolsData, EnableAndBindProviderToolsErrors, EnableAndBindProviderToolsResponses, EnableCustomToolProviderData, EnableCustomToolProviderResponses, EnableProxiedMcpServerData, EnableProxiedMcpServerErrors, EnableProxiedMcpServerResponses, EnableToolData, EnableToolErrors, EnableToolResponses, EncryptPersonalUserCredentialConfigurationData, EncryptPersonalUserCredentialConfigurationResponses, EncryptResourceServerConfigurationData, EncryptResourceServerConfigurationResponses, EncryptUserCredentialConfigurationData, EncryptUserCredentialConfigurationResponses, ExchangeOauthCodeData, ExchangeOauthCodeErrors, ExchangeOauthCodeResponses, ExpireTemporaryAccountsData, ExpireTemporaryAccountsErrors, ExpireTemporaryAccountsResponses, ExportMemoryBankTemplateData, ExportMemoryBankTemplateResponses, ExportPersonalMemoryBankTemplateData, ExportPersonalMemoryBankTemplateResponses, FinalizeHostedOpenbotReleaseData, FinalizeHostedOpenbotReleaseErrors, FinalizeHostedOpenbotReleaseResponses, GenerateLocalRuntimeTunnelApiKeyData, GenerateLocalRuntimeTunnelApiKeyErrors, GenerateLocalRuntimeTunnelApiKeyResponses, GenerateTemporaryAccountClaimUrlData, GenerateTemporaryAccountClaimUrlErrors, GenerateTemporaryAccountClaimUrlResponses, GetAttachmentDownloadUrlData, GetAttachmentDownloadUrlErrors, GetAttachmentDownloadUrlResponses, GetCommonProviderInstallationData, GetCommonProviderInstallationResponses, GetCredentialSetupItemData, GetCredentialSetupItemResponses, GetCustomToolProviderData, GetCustomToolProviderResponses, GetHostedOpenbotBootstrapBundleData, GetHostedOpenbotBootstrapBundleErrors, GetHostedOpenbotBootstrapBundleResponses, GetHostedOpenbotInstanceData, GetHostedOpenbotInstanceErrors, GetHostedOpenbotInstanceResponses, GetHostedOpenbotReleaseData, GetHostedOpenbotReleaseErrors, GetHostedOpenbotReleaseResponses, GetHumanApprovalActionData, GetHumanApprovalActionErrors, GetHumanApprovalActionResponses, GetIdentityData, GetIdentityErrors, GetIdentityResponses, GetIdentityVerificationData, GetIdentityVerificationErrors, GetIdentityVerificationResponses, GetLocalRuntimeTunnelApiKeyData, GetLocalRuntimeTunnelApiKeyErrors, GetLocalRuntimeTunnelApiKeyResponses, GetLocalRuntimeTunnelConnectorData, GetLocalRuntimeTunnelConnectorErrors, GetLocalRuntimeTunnelConnectorResponses, GetManagedUserCredentialSecretData, GetManagedUserCredentialSecretResponses, GetMcpServerInstanceData, GetMcpServerInstanceErrors, GetMcpServerInstanceResponses, GetMemoryBankConfigData, GetMemoryBankConfigResponses, GetMemoryBankData, GetMemoryBankDocumentData, GetMemoryBankDocumentResponses, GetMemoryBankResponses, GetMessageData, GetMessageDeliveriesData, GetMessageDeliveriesErrors, GetMessageDeliveriesResponses, GetMessageErrors, GetMessageResponses, GetOpenbotPluginsCatalogData, GetOpenbotPluginsCatalogResponses, GetOrganizationData, GetOrganizationErrors, GetOrganizationResponses, GetOrgOidcProviderData, GetOrgOidcProviderErrors, GetOrgOidcProviderResponses, GetPersonalMcpServerInstanceData, GetPersonalMcpServerInstanceResponses, GetPersonalMemoryBankConfigData, GetPersonalMemoryBankConfigResponses, GetPersonalMemoryBankData, GetPersonalMemoryBankDocumentData, GetPersonalMemoryBankDocumentResponses, GetPersonalMemoryBankResponses, GetPersonalSkillData, GetPersonalSkillRegistryData, GetPersonalSkillRegistryResponses, GetPersonalSkillResponses, GetPersonalToolGroupInstanceData, GetPersonalToolGroupInstanceResponses, GetPersonalWikiData, GetPersonalWikiPageData, GetPersonalWikiPageResponses, GetPersonalWikiResponses, GetProviderProvisioningHumanActionData, GetProviderProvisioningHumanActionResponses, GetProxiedMcpServerData, GetProxiedMcpServerErrors, GetProxiedMcpServerResponses, GetProxiedSkillProviderData, GetProxiedSkillProviderErrors, GetProxiedSkillProviderResponses, GetResourceServerCredentialData, GetResourceServerCredentialResponses, GetRuntimeConfigData, GetRuntimeConfigResponses, GetSelfAvatarData, GetSelfAvatarErrors, GetSelfAvatarResponses, GetSelfProfileData, GetSelfProfileErrors, GetSelfProfileResponses, GetSessionEventHistoryData, GetSessionEventHistoryErrors, GetSessionEventHistoryResponses, GetSkillData, GetSkillErrors, GetSkillPackageData, GetSkillPackageErrors, GetSkillPackageResponses, GetSkillRegistryData, GetSkillRegistryErrors, GetSkillRegistryResponses, GetSkillRegistrySkillByTitleData, GetSkillRegistrySkillByTitleErrors, GetSkillRegistrySkillByTitleResponses, GetSkillRegistrySkillData, GetSkillRegistrySkillDescriptionData, GetSkillRegistrySkillDescriptionErrors, GetSkillRegistrySkillDescriptionResponses, GetSkillRegistrySkillErrors, GetSkillRegistrySkillResponses, GetSkillResponses, GetTeamData, GetTeamErrors, GetTeamGroupData, GetTeamGroupErrors, GetTeamGroupResponses, GetTeamResponses, GetToolGroupInstanceData, GetToolGroupInstanceErrors, GetToolGroupInstanceResponses, GetToolsOpenapiSpecData, GetToolsOpenapiSpecErrors, GetToolsOpenapiSpecResponses, GetTrustedRuntimeData, GetTrustedRuntimeErrors, GetTrustedRuntimeResponses, GetUserCredentialData, GetUserCredentialResponses, GetWikiData, GetWikiPageBacklinksData, GetWikiPageBacklinksResponses, GetWikiPageData, GetWikiPageNeighborhoodData, GetWikiPageNeighborhoodResponses, GetWikiPageRelationshipData, GetWikiPageRelationshipResponses, GetWikiPageResponses, GetWikiPageTypeData, GetWikiPageTypeResponses, GetWikiPageTypeVersionData, GetWikiPageTypeVersionResponses, GetWikiRelationshipTypeData, GetWikiRelationshipTypeResponses, GetWikiRelationshipTypeVersionData, GetWikiRelationshipTypeVersionResponses, GetWikiResponses, GrepPersonalWikiPagesData, GrepPersonalWikiPagesResponses, GrepWikiPagesData, GrepWikiPagesResponses, HealthCheckData, HealthCheckErrors, HealthCheckResponses, ImportMemoryBankTemplateData, ImportMemoryBankTemplateResponses, ImportPersonalMemoryBankTemplateData, ImportPersonalMemoryBankTemplateResponses, InitiateIdentityVerificationData, InitiateIdentityVerificationErrors, InitiateIdentityVerificationResponses, InspectWikiAssetReferencesData, InspectWikiAssetReferencesResponses, InviteTeamUsersData, InviteTeamUsersErrors, InviteTeamUsersResponses, InvokeCustomToolData, InvokeCustomToolResponses, InvokeToolData, InvokeToolErrors, InvokeToolResponses, IssueHostedOpenbotGitTokenData, IssueHostedOpenbotGitTokenErrors, IssueHostedOpenbotGitTokenResponses, IssueOpenbotChatkitRealtimeTicketData, IssueOpenbotChatkitRealtimeTicketErrors, IssueOpenbotChatkitRealtimeTicketResponses, IssueProxyRealtimeTicketData, IssueProxyRealtimeTicketResponses, LinkTeamIdentityData, LinkTeamIdentityErrors, LinkTeamIdentityResponses, ListAvailableToolGroupsData, ListAvailableToolGroupsErrors, ListAvailableToolGroupsResponses, ListCommonProviderInstallationOwnershipGrantsData, ListCommonProviderInstallationOwnershipGrantsResponses, ListCommonProviderInstallationsData, ListCommonProviderInstallationsResponses, ListCommonProviderInstallationVisibilityGrantsData, ListCommonProviderInstallationVisibilityGrantsResponses, ListCredentialSetupItemsData, ListCredentialSetupItemsResponses, ListCustomToolProvidersData, ListCustomToolProvidersResponses, ListIdentitiesData, ListIdentitiesErrors, ListIdentitiesResponses, ListIdentityTeamsData, ListIdentityTeamsResponses, ListInboxAgentsData, ListInboxAgentsErrors, ListInboxAgentsResponses, ListInboxesData, ListInboxesErrors, ListInboxesResponses, ListManagedUserCredentialsData, ListManagedUserCredentialsResponses, ListMcpProviderCatalogData, ListMcpProviderCatalogErrors, ListMcpProviderCatalogResponses, ListMcpResourceOwnershipGrantsData, ListMcpResourceOwnershipGrantsResponses, ListMcpResourceVisibilityGrantsData, ListMcpResourceVisibilityGrantsResponses, ListMcpServerInstancesData, ListMcpServerInstancesErrors, ListMcpServerInstancesResponses, ListMemoryBankDocumentsData, ListMemoryBankDocumentsResponses, ListMemoryBankOwnershipGrantsData, ListMemoryBankOwnershipGrantsResponses, ListMemoryBanksData, ListMemoryBankSourceBindingsData, ListMemoryBankSourceBindingsResponses, ListMemoryBanksResponses, ListMemoryBankVisibilityGrantsData, ListMemoryBankVisibilityGrantsResponses, ListMemorySourceBindingsData, ListMemorySourceBindingsResponses, ListMessagesData, ListMessagesErrors, ListMessagesResponses, ListOpenbotDeploymentsData, ListOpenbotDeploymentsErrors, ListOpenbotDeploymentsResponses, ListOrganizationMembersData, ListOrganizationMembersErrors, ListOrganizationMembersResponses, ListOrganizationsData, ListOrganizationsErrors, ListOrganizationsResponses, ListOrganizationTeamGroupsData, ListOrganizationTeamGroupsResponses, ListOrgOidcProvidersData, ListOrgOidcProvidersErrors, ListOrgOidcProvidersResponses, ListPersonalMcpServerInstancesData, ListPersonalMcpServerInstancesErrors, ListPersonalMcpServerInstancesResponses, ListPersonalMemoryBankDocumentsData, ListPersonalMemoryBankDocumentsResponses, ListPersonalMemoryBankOwnershipGrantsData, ListPersonalMemoryBankOwnershipGrantsResponses, ListPersonalMemoryBanksData, ListPersonalMemoryBankSourceBindingsData, ListPersonalMemoryBankSourceBindingsResponses, ListPersonalMemoryBanksResponses, ListPersonalMemoryBankVisibilityGrantsData, ListPersonalMemoryBankVisibilityGrantsResponses, ListPersonalMemorySourceBindingsData, ListPersonalMemorySourceBindingsResponses, ListPersonalRegistryOwnershipGrantsData, ListPersonalRegistryOwnershipGrantsResponses, ListPersonalRegistryVisibilityGrantsData, ListPersonalRegistryVisibilityGrantsResponses, ListPersonalRscOwnershipGrantsData, ListPersonalRscOwnershipGrantsResponses, ListPersonalRscVisibilityGrantsData, ListPersonalRscVisibilityGrantsResponses, ListPersonalSkillOwnershipGrantsData, ListPersonalSkillOwnershipGrantsResponses, ListPersonalSkillRegistriesData, ListPersonalSkillRegistriesResponses, ListPersonalSkillsData, ListPersonalSkillsResponses, ListPersonalSkillVisibilityGrantsData, ListPersonalSkillVisibilityGrantsResponses, ListPersonalToolGroupInstancesData, ListPersonalToolGroupInstancesErrors, ListPersonalToolGroupInstancesResponses, ListPersonalUcOwnershipGrantsData, ListPersonalUcOwnershipGrantsResponses, ListPersonalUcVisibilityGrantsData, ListPersonalUcVisibilityGrantsResponses, ListPersonalWikiOwnershipGrantsData, ListPersonalWikiOwnershipGrantsResponses, ListPersonalWikiPagesData, ListPersonalWikiPagesResponses, ListPersonalWikisData, ListPersonalWikisResponses, ListPersonalWikiVisibilityGrantsData, ListPersonalWikiVisibilityGrantsResponses, ListProviderProvisionerCatalogData, ListProviderProvisionerCatalogResponses, ListProxiedMcpServersData, ListProxiedMcpServersErrors, ListProxiedMcpServersResponses, ListProxiedSkillProvidersData, ListProxiedSkillProvidersResponses, ListProxyTokensData, ListProxyTokensErrors, ListProxyTokensResponses, ListPublicAvailableToolGroupsData, ListPublicAvailableToolGroupsErrors, ListPublicAvailableToolGroupsResponses, ListResourceServerCredentialsData, ListResourceServerCredentialsResponses, ListRscOwnershipGrantsData, ListRscOwnershipGrantsResponses, ListRscVisibilityGrantsData, ListRscVisibilityGrantsResponses, ListSessionInboxInstancesData, ListSessionInboxInstancesErrors, ListSessionInboxInstancesResponses, ListSessionResourceGrantsData, ListSessionResourceGrantsErrors, ListSessionResourceGrantsResponses, ListSessionsData, ListSessionsErrors, ListSessionsResponses, ListSessionUserMembersData, ListSessionUserMembersErrors, ListSessionUserMembersResponses, ListSignalProviderGrantsData, ListSignalProviderGrantsResponses, ListSkillOwnershipGrantsData, ListSkillOwnershipGrantsResponses, ListSkillRegistriesData, ListSkillRegistriesErrors, ListSkillRegistriesResponses, ListSkillRegistryOwnershipGrantsData, ListSkillRegistryOwnershipGrantsResponses, ListSkillRegistrySkillSummariesData, ListSkillRegistrySkillSummariesErrors, ListSkillRegistrySkillSummariesResponses, ListSkillRegistryVisibilityGrantsData, ListSkillRegistryVisibilityGrantsResponses, ListSkillsData, ListSkillsErrors, ListSkillsResponses, ListSkillVisibilityGrantsData, ListSkillVisibilityGrantsResponses, ListTeamGroupMembersData, ListTeamGroupMembersResponses, ListTeamGroupsData, ListTeamGroupsResponses, ListTeamInvitationsData, ListTeamInvitationsResponses, ListTeamMembersData, ListTeamMembersErrors, ListTeamMembersResponses, ListTeamsData, ListTeamsErrors, ListTeamsResponses, ListToolDeploymentsByAliasData, ListToolDeploymentsByAliasErrors, ListToolDeploymentsByAliasResponses, ListToolGroupInstancesData, ListToolGroupInstancesErrors, ListToolGroupInstancesGroupedByToolData, ListToolGroupInstancesGroupedByToolErrors, ListToolGroupInstancesGroupedByToolResponses, ListToolGroupInstancesResponses, ListToolsData, ListToolsErrors, ListToolsResponses, ListTrustedRuntimesData, ListTrustedRuntimesErrors, ListTrustedRuntimesResponses, ListUcOwnershipGrantsData, ListUcOwnershipGrantsResponses, ListUcVisibilityGrantsData, ListUcVisibilityGrantsResponses, ListUserCredentialsData, ListUserCredentialsResponses, ListVerifiedIdentityLinksData, ListVerifiedIdentityLinksErrors, ListVerifiedIdentityLinksResponses, ListVisibleMemoryBanksData, ListVisibleMemoryBanksResponses, ListWikiAssetsData, ListWikiAssetsResponses, ListWikiOntologyInstallationsData, ListWikiOntologyInstallationsResponses, ListWikiOntologyTemplatesData, ListWikiOntologyTemplatesResponses, ListWikiOwnershipGrantsData, ListWikiOwnershipGrantsResponses, ListWikiPageAssetsData, ListWikiPageAssetsResponses, ListWikiPageRelationshipsData, ListWikiPageRelationshipsResponses, ListWikiPageRevisionsData, ListWikiPageRevisionsResponses, ListWikiPagesData, ListWikiPagesResponses, ListWikiPageTypesData, ListWikiPageTypesResponses, ListWikiPageTypeVersionsData, ListWikiPageTypeVersionsResponses, ListWikiRelationshipTypesData, ListWikiRelationshipTypesResponses, ListWikiRelationshipTypeVersionsData, ListWikiRelationshipTypeVersionsResponses, ListWikisData, ListWikisResponses, ListWikiVisibilityGrantsData, ListWikiVisibilityGrantsResponses, McpProtocolDeleteData, McpProtocolDeleteErrors, McpProtocolDeleteResponses, McpProtocolGetData, McpProtocolGetErrors, McpProtocolGetResponses, McpProtocolPostData, McpProtocolPostErrors, McpProtocolPostResponses, McpServerPlaygroundChatData, McpServerPlaygroundChatErrors, McpServerPlaygroundChatResponses, MigrateWikiPageTypeData, MigrateWikiPageTypeErrors, MigrateWikiPageTypeResponses, MoveWikiPageData, MoveWikiPageErrors, MoveWikiPageResponses, ObserveSessionData, ObserveSessionErrors, ObserveSessionResponses, OnboardOrganizationData, OnboardOrganizationErrors, OnboardOrganizationResponses, PersonalMcpProtocolDeleteData, PersonalMcpProtocolDeleteResponses, PersonalMcpProtocolGetData, PersonalMcpProtocolGetResponses, PersonalMcpProtocolPostData, PersonalMcpProtocolPostResponses, PreviewIdentityLinkData, PreviewIdentityLinkResponses, PreviewWikiPageTypeMigrationData, PreviewWikiPageTypeMigrationErrors, PreviewWikiPageTypeMigrationResponses, ProviderProvisioningCallbackData, ProviderProvisioningCallbackResponses, ProviderSetupCatalogData, ProviderSetupCatalogResponses, ProviderSetupResumeData, ProviderSetupResumeResponses, ProviderSetupStartData, ProviderSetupStartResponses, ProvisionIdentityTeamData, ProvisionIdentityTeamResponses, RecallMemoryData, RecallMemoryResponses, RecallPersonalMemoryData, RecallPersonalMemoryResponses, RecallSynthesisSessionMemoryData, RecallSynthesisSessionMemoryResponses, ReconcileOpenbotAgentBundleData, ReconcileOpenbotAgentBundleResponses, RedirectTemporaryAccountClaimPageData, ReflectMemoryData, ReflectMemoryResponses, ReflectPersonalMemoryData, ReflectPersonalMemoryResponses, RefreshCustomToolProviderData, RefreshCustomToolProviderResponses, RefreshProxiedMcpServerData, RefreshProxiedMcpServerErrors, RefreshProxiedMcpServerResponses, RegisterOauthClientData, RegisterOauthClientErrors, RegisterOauthClientResponses, RegisterOpenbotDeploymentData, RegisterOpenbotDeploymentErrors, RegisterOpenbotDeploymentResponses, RegisterTeamOauthClientData, RegisterTeamOauthClientErrors, RegisterTeamOauthClientResponses, RemoveCommonProviderInstallationOwnershipGrantData, RemoveCommonProviderInstallationOwnershipGrantResponses, RemoveCommonProviderInstallationVisibilityGrantData, RemoveCommonProviderInstallationVisibilityGrantResponses, RemoveIdentityIdentifierData, RemoveIdentityIdentifierResponses, RemoveIdentityTeamData, RemoveIdentityTeamResponses, RemoveMcpResourceOwnershipGrantData, RemoveMcpResourceOwnershipGrantResponses, RemoveMcpResourceVisibilityGrantData, RemoveMcpResourceVisibilityGrantResponses, RemoveMcpServerInstanceFunctionData, RemoveMcpServerInstanceFunctionErrors, RemoveMcpServerInstanceFunctionResponses, RemoveMemoryBankOwnershipGrantData, RemoveMemoryBankOwnershipGrantResponses, RemoveMemoryBankVisibilityGrantData, RemoveMemoryBankVisibilityGrantResponses, RemoveOrganizationMemberData, RemoveOrganizationMemberErrors, RemoveOrganizationMemberResponses, RemovePersonalMemoryBankOwnershipGrantData, RemovePersonalMemoryBankOwnershipGrantResponses, RemovePersonalMemoryBankVisibilityGrantData, RemovePersonalMemoryBankVisibilityGrantResponses, RemovePersonalRegistryOwnershipGrantData, RemovePersonalRegistryOwnershipGrantResponses, RemovePersonalRegistryVisibilityGrantData, RemovePersonalRegistryVisibilityGrantResponses, RemovePersonalRscOwnershipGrantData, RemovePersonalRscOwnershipGrantResponses, RemovePersonalRscVisibilityGrantData, RemovePersonalRscVisibilityGrantResponses, RemovePersonalSkillOwnershipGrantData, RemovePersonalSkillOwnershipGrantResponses, RemovePersonalSkillVisibilityGrantData, RemovePersonalSkillVisibilityGrantResponses, RemovePersonalUcOwnershipGrantData, RemovePersonalUcOwnershipGrantResponses, RemovePersonalUcVisibilityGrantData, RemovePersonalUcVisibilityGrantResponses, RemovePersonalWikiOwnershipGrantData, RemovePersonalWikiOwnershipGrantResponses, RemovePersonalWikiVisibilityGrantData, RemovePersonalWikiVisibilityGrantResponses, RemoveRscOwnershipGrantData, RemoveRscOwnershipGrantResponses, RemoveRscVisibilityGrantData, RemoveRscVisibilityGrantResponses, RemoveSessionResourceGrantData, RemoveSessionResourceGrantErrors, RemoveSessionResourceGrantResponses, RemoveSessionUserMemberData, RemoveSessionUserMemberErrors, RemoveSessionUserMemberResponses, RemoveSignalProviderGrantData, RemoveSignalProviderGrantResponses, RemoveSkillOwnershipGrantData, RemoveSkillOwnershipGrantResponses, RemoveSkillRegistryOwnershipGrantData, RemoveSkillRegistryOwnershipGrantResponses, RemoveSkillRegistryVisibilityGrantData, RemoveSkillRegistryVisibilityGrantResponses, RemoveSkillVisibilityGrantData, RemoveSkillVisibilityGrantResponses, RemoveTeamGroupMemberData, RemoveTeamGroupMemberResponses, RemoveTeamMemberData, RemoveTeamMemberErrors, RemoveTeamMemberResponses, RemoveUcOwnershipGrantData, RemoveUcOwnershipGrantResponses, RemoveUcVisibilityGrantData, RemoveUcVisibilityGrantResponses, RemoveWikiOwnershipGrantData, RemoveWikiOwnershipGrantResponses, RemoveWikiVisibilityGrantData, RemoveWikiVisibilityGrantResponses, RenameProxyTokenData, RenameProxyTokenErrors, RenameProxyTokenResponses, ReplaceMemorySourceBindingsData, ReplaceMemorySourceBindingsResponses, ReplacePersonalMemorySourceBindingsData, ReplacePersonalMemorySourceBindingsResponses, ResetMemoryBankConfigData, ResetMemoryBankConfigResponses, ResetPersonalMemoryBankConfigData, ResetPersonalMemoryBankConfigResponses, ResolveIdentityData, ResolveIdentityErrors, ResolveIdentityResponses, ResumeCredentialSetupItemData, ResumeCredentialSetupItemResponses, ResumeProviderAppProvisioningData, ResumeProviderAppProvisioningResponses, ResumeUserCredentialBrokeringData, ResumeUserCredentialBrokeringResponses, RetainMemoryDocumentData, RetainMemoryDocumentResponses, RetainPersonalMemoryDocumentData, RetainPersonalMemoryDocumentResponses, RetainSynthesisSessionMemoryData, RetainSynthesisSessionMemoryResponses, RetryMemorySourceSyncData, RetryMemorySourceSyncResponses, RetryPersonalMemorySourceBindingsData, RetryPersonalMemorySourceBindingsResponses, RetryWikiData, RetryWikiResponses, ReverseProxyAddProfileOwnershipGrantData, ReverseProxyAddProfileOwnershipGrantResponses, ReverseProxyAddProfileVisibilityGrantData, ReverseProxyAddProfileVisibilityGrantResponses, ReverseProxyCreateProfileData, ReverseProxyCreateProfileErrors, ReverseProxyCreateProfileResponses, ReverseProxyDeleteProfileData, ReverseProxyDeleteProfileErrors, ReverseProxyDeleteProfileResponses, ReverseProxyGetProfileData, ReverseProxyGetProfileErrors, ReverseProxyGetProfileResponses, ReverseProxyListProfileOwnershipGrantsData, ReverseProxyListProfileOwnershipGrantsResponses, ReverseProxyListProfilesData, ReverseProxyListProfilesErrors, ReverseProxyListProfilesResponses, ReverseProxyListProfileVisibilityGrantsData, ReverseProxyListProfileVisibilityGrantsResponses, ReverseProxyListProvidersData, ReverseProxyListProvidersResponses, ReverseProxyProxyGetData, ReverseProxyProxyGetResponses, ReverseProxyProxyPostData, ReverseProxyProxyPostResponses, ReverseProxyRemoveProfileOwnershipGrantData, ReverseProxyRemoveProfileOwnershipGrantResponses, ReverseProxyRemoveProfileVisibilityGrantData, ReverseProxyRemoveProfileVisibilityGrantResponses, ReverseProxySetProfileOwnershipData, ReverseProxySetProfileOwnershipResponses, ReverseProxySetProfileVisibilityData, ReverseProxySetProfileVisibilityResponses, ReverseProxyUpdateProfileData, ReverseProxyUpdateProfileErrors, ReverseProxyUpdateProfileResponses, RevokeLocalRuntimeTunnelApiKeyData, RevokeLocalRuntimeTunnelApiKeyErrors, RevokeLocalRuntimeTunnelApiKeyResponses, RevokeProxyTokenData, RevokeProxyTokenErrors, RevokeProxyTokenResponses, RevokeTeamInvitationData, RevokeTeamInvitationResponses, RotateCustomToolProviderSigningKeyData, RotateCustomToolProviderSigningKeyResponses, RouteAuthCallbackData, RouteAuthCallbackErrors, RouteCreateApiKeyData, RouteCreateApiKeyErrors, RouteCreateApiKeyResponses, RouteDeleteApiKeyData, RouteDeleteApiKeyErrors, RouteDeleteApiKeyResponses, RouteGetJwksData, RouteGetJwksErrors, RouteGetJwksResponses, RouteListApiKeysData, RouteListApiKeysErrors, RouteListApiKeysResponses, RouteListDebugAuthProfilesData, RouteListDebugAuthProfilesErrors, RouteListDebugAuthProfilesResponses, RouteLogoutData, RouteRefreshTokenData, RouteRefreshTokenErrors, RouteRefreshTokenResponses, RouteResolveLoginProviderData, RouteResolveLoginProviderErrors, RouteResolveLoginProviderResponses, RouteSelectDebugAuthProfileData, RouteSelectDebugAuthProfileErrors, RouteSelectDebugAuthProfileResponses, RouteStartAuthorizationData, RouteStartAuthorizationErrors, SearchSkillRegistryData, SearchSkillRegistryErrors, SearchSkillRegistryResponses, SetCommonProviderInstallationOwnershipData, SetCommonProviderInstallationOwnershipResponses, SetCommonProviderInstallationVisibilityData, SetCommonProviderInstallationVisibilityResponses, SetMcpResourceOwnershipData, SetMcpResourceOwnershipResponses, SetMcpResourceVisibilityData, SetMcpResourceVisibilityResponses, SetMemoryBankOwnershipModeData, SetMemoryBankOwnershipModeResponses, SetMemoryBankVisibilityData, SetMemoryBankVisibilityResponses, SetPersonalMemoryBankOwnershipModeData, SetPersonalMemoryBankOwnershipModeResponses, SetPersonalMemoryBankVisibilityData, SetPersonalMemoryBankVisibilityResponses, SetPersonalRegistryOwnershipModeData, SetPersonalRegistryOwnershipModeResponses, SetPersonalRegistryVisibilityData, SetPersonalRegistryVisibilityResponses, SetPersonalRscOwnershipData, SetPersonalRscOwnershipResponses, SetPersonalRscVisibilityData, SetPersonalRscVisibilityResponses, SetPersonalSkillOwnershipModeData, SetPersonalSkillOwnershipModeResponses, SetPersonalSkillVisibilityData, SetPersonalSkillVisibilityResponses, SetPersonalUcOwnershipData, SetPersonalUcOwnershipResponses, SetPersonalUcVisibilityData, SetPersonalUcVisibilityResponses, SetPersonalWikiOwnershipModeData, SetPersonalWikiOwnershipModeResponses, SetPersonalWikiVisibilityData, SetPersonalWikiVisibilityResponses, SetRscOwnershipData, SetRscOwnershipResponses, SetRscVisibilityData, SetRscVisibilityResponses, SetSelfOpenbotAvatarData, SetSelfOpenbotAvatarErrors, SetSelfOpenbotAvatarResponses, SetSignalProviderOwnershipData, SetSignalProviderOwnershipResponses, SetSignalProviderVisibilityData, SetSignalProviderVisibilityResponses, SetSkillOwnershipModeData, SetSkillOwnershipModeResponses, SetSkillRegistryOwnershipModeData, SetSkillRegistryOwnershipModeResponses, SetSkillRegistryVisibilityData, SetSkillRegistryVisibilityResponses, SetSkillVisibilityData, SetSkillVisibilityResponses, SetUcOwnershipData, SetUcOwnershipResponses, SetUcVisibilityData, SetUcVisibilityResponses, SetWikiOwnershipModeData, SetWikiOwnershipModeResponses, SetWikiVisibilityData, SetWikiVisibilityResponses, SignalsAddPersonalProviderGrantData, SignalsAddPersonalProviderGrantResponses, SignalsCreatePersonalProviderInstanceData, SignalsCreatePersonalProviderInstanceResponses, SignalsCreateProviderInstanceData, SignalsCreateProviderInstanceResponses, SignalsDeletePersonalProviderInstanceData, SignalsDeletePersonalProviderInstanceResponses, SignalsDeleteProviderInstanceData, SignalsDeleteProviderInstanceResponses, SignalsGetDeliveryData, SignalsGetDeliveryResponses, SignalsGetPersonalDeliveryData, SignalsGetPersonalDeliveryResponses, SignalsGetPersonalProviderInstanceData, SignalsGetPersonalProviderInstanceResponses, SignalsGetProviderInstanceData, SignalsGetProviderInstanceResponses, SignalsListAvailableProvidersData, SignalsListAvailableProvidersResponses, SignalsListDeliveriesData, SignalsListDeliveriesResponses, SignalsListPersonalAvailableProvidersData, SignalsListPersonalAvailableProvidersResponses, SignalsListPersonalDeliveriesData, SignalsListPersonalDeliveriesResponses, SignalsListPersonalProviderGrantsData, SignalsListPersonalProviderGrantsResponses, SignalsListPersonalProviderInstancesData, SignalsListPersonalProviderInstancesResponses, SignalsListProviderInstancesData, SignalsListProviderInstancesResponses, SignalsRemovePersonalProviderGrantData, SignalsRemovePersonalProviderGrantResponses, SignalsRetryDeliveryData, SignalsRetryDeliveryResponses, SignalsRetryPersonalDeliveryData, SignalsRetryPersonalDeliveryResponses, SignalsSetPersonalProviderOwnershipData, SignalsSetPersonalProviderOwnershipResponses, SignalsSetPersonalProviderVisibilityData, SignalsSetPersonalProviderVisibilityResponses, SignalsTriggerFakeData, SignalsTriggerFakeResponses, SignalsUpdatePersonalProviderInstanceData, SignalsUpdatePersonalProviderInstanceResponses, SignalsUpdateProviderInstanceData, SignalsUpdateProviderInstanceResponses, StartCredentialSetupItemData, StartCredentialSetupItemResponses, StartOauthDeviceCodeData, StartOauthDeviceCodeErrors, StartOauthDeviceCodeResponses, StartProviderAppProvisioningData, StartProviderAppProvisioningResponses, StartProxiedMcpServerOauthData, StartProxiedMcpServerOauthErrors, StartProxiedMcpServerOauthResponses, StartUserCredentialBrokeringData, StartUserCredentialBrokeringResponses, StateExportData, StateExportErrors, StateExportResponses, StateGetImportData, StateGetImportResponses, StateImportData, StateImportEventsData, StateImportEventsResponses, StateImportResponses, StatePlanData, StatePlanResponses, StateResolveSourceData, StateResolveSourceErrors, StateResolveSourceResponses, StateSchemaData, StateSchemaJsonData, StateSchemaJsonResponses, StateSchemaResponses, StateValidateData, StateValidateResponses, TildePayPaymentMppData, TildePayPaymentMppResponses, TildePayPaymentX402Data, TildePayPaymentX402Responses, TildePayProvisionData, TildePayProvisionResponses, TildePayWalletCreateData, TildePayWalletCreateResponses, TildePayWalletSummaryData, TildePayWalletSummaryResponses, TildePayWalletWaitUntilBalanceData, TildePayWalletWaitUntilBalanceResponses, TraverseWikiGraphData, TraverseWikiGraphResponses, UnbindToolGroupFromMcpServerData, UnbindToolGroupFromMcpServerErrors, UnbindToolGroupFromMcpServerResponses, UpdateCustomToolProviderData, UpdateCustomToolProviderResponses, UpdateHostedOpenbotComputerImageData, UpdateHostedOpenbotComputerImageErrors, UpdateHostedOpenbotComputerImageResponses, UpdateIdentityData, UpdateIdentityErrors, UpdateIdentityResponses, UpdateManagedUserCredentialData, UpdateManagedUserCredentialResponses, UpdateMcpServerInstanceData, UpdateMcpServerInstanceErrors, UpdateMcpServerInstanceFunctionData, UpdateMcpServerInstanceFunctionErrors, UpdateMcpServerInstanceFunctionResponses, UpdateMcpServerInstanceResponses, UpdateMemoryBankConfigData, UpdateMemoryBankConfigResponses, UpdateMemoryBankData, UpdateMemoryBankResponses, UpdateOrganizationData, UpdateOrganizationErrors, UpdateOrganizationMemberRoleData, UpdateOrganizationMemberRoleErrors, UpdateOrganizationMemberRoleResponses, UpdateOrganizationResponses, UpdateOrgOidcProviderData, UpdateOrgOidcProviderErrors, UpdateOrgOidcProviderResponses, UpdatePersonalMcpServerInstanceData, UpdatePersonalMcpServerInstanceResponses, UpdatePersonalMemoryBankConfigData, UpdatePersonalMemoryBankConfigResponses, UpdatePersonalMemoryBankData, UpdatePersonalMemoryBankResponses, UpdatePersonalSkillData, UpdatePersonalSkillRegistryData, UpdatePersonalSkillRegistryResponses, UpdatePersonalSkillResponses, UpdatePersonalToolGroupInstanceData, UpdatePersonalToolGroupInstanceResponses, UpdatePersonalWikiData, UpdatePersonalWikiPageData, UpdatePersonalWikiPageResponses, UpdatePersonalWikiResponses, UpdateResourceServerCredentialData, UpdateResourceServerCredentialResponses, UpdateSelfProfileData, UpdateSelfProfileErrors, UpdateSelfProfileResponses, UpdateSessionOwnershipData, UpdateSessionOwnershipErrors, UpdateSessionOwnershipResponses, UpdateSessionVisibilityData, UpdateSessionVisibilityErrors, UpdateSessionVisibilityResponses, UpdateSkillData, UpdateSkillErrors, UpdateSkillRegistryData, UpdateSkillRegistryErrors, UpdateSkillRegistryResponses, UpdateSkillResponses, UpdateTeamData, UpdateTeamErrors, UpdateTeamGroupData, UpdateTeamGroupErrors, UpdateTeamGroupResponses, UpdateTeamMemberRoleData, UpdateTeamMemberRoleErrors, UpdateTeamMemberRoleResponses, UpdateTeamResponses, UpdateToolBoundParamsData, UpdateToolBoundParamsErrors, UpdateToolBoundParamsResponses, UpdateToolGroupInstanceData, UpdateToolGroupInstanceErrors, UpdateToolGroupInstanceResponses, UpdateTrustedRuntimeData, UpdateTrustedRuntimeErrors, UpdateTrustedRuntimeResponses, UpdateUserCredentialData, UpdateUserCredentialResponses, UpdateWikiAssetData, UpdateWikiAssetResponses, UpdateWikiData, UpdateWikiPageData, UpdateWikiPageErrors, UpdateWikiPageRelationshipData, UpdateWikiPageRelationshipResponses, UpdateWikiPageResponses, UpdateWikiPageTypeData, UpdateWikiPageTypeErrors, UpdateWikiPageTypeResponses, UpdateWikiRelationshipTypeData, UpdateWikiRelationshipTypeErrors, UpdateWikiRelationshipTypeResponses, UpdateWikiResponses, UploadAttachmentContentData, UploadAttachmentContentErrors, UploadAttachmentContentResponses, UploadHostedOpenbotReleaseFileData, UploadHostedOpenbotReleaseFileErrors, UploadHostedOpenbotReleaseFileResponses, UploadSelfAvatarData, UploadSelfAvatarErrors, UploadSelfAvatarResponses, UploadWikiAssetContentData, UploadWikiAssetContentErrors, UploadWikiAssetContentResponses, UpsertWikiPageRelationshipData, UpsertWikiPageRelationshipErrors, UpsertWikiPageRelationshipResponses, ValidateSynthesisSessionBatchData, ValidateSynthesisSessionBatchResponses, ValidateWikiPageTypeDataData, ValidateWikiPageTypeDataResponses, VerifyOrgOidcProviderDomainData, VerifyOrgOidcProviderDomainErrors, VerifyOrgOidcProviderDomainResponses, WalletCreateData, WalletCreateErrors, WalletCreateResponses, WalletCustomerCreateData, WalletCustomerCreateResponses, WalletCustomerGetData, WalletCustomerGetResponses, WalletCustomerKycGetData, WalletCustomerKycGetResponses, WalletCustomerListData, WalletCustomerListResponses, WalletGetBalancesData, WalletGetBalancesResponses, WalletGetCryptoDepositInformationData, WalletGetCryptoDepositInformationResponses, WalletGetData, WalletGetFiatDepositInformationData, WalletGetFiatDepositInformationResponses, WalletGetResponses, WalletListData, WalletListResponses, WalletMakeMppPaymentData, WalletMakeMppPaymentResponses, WalletMakeX402PaymentData, WalletMakeX402PaymentResponses, WalletTransactionHistoryListData, WalletTransactionHistoryListResponses, WalletTransactionHistoryRefreshData, WalletTransactionHistoryRefreshResponses, WalletVirtualAccountCreateData, WalletVirtualAccountCreateErrors, WalletVirtualAccountCreateResponses, WalletWaitUntilBalanceData, WalletWaitUntilBalanceResponses, WhoamiData, WhoamiErrors, WhoamiResponses } from './types.gen'; +import type { AcceptInvitationData, AcceptInvitationErrors, AcceptInvitationResponses, AddCommonProviderInstallationOwnershipGrantData, AddCommonProviderInstallationOwnershipGrantResponses, AddCommonProviderInstallationVisibilityGrantData, AddCommonProviderInstallationVisibilityGrantResponses, AddIdentityTeamData, AddIdentityTeamResponses, AddMcpResourceOwnershipGrantData, AddMcpResourceOwnershipGrantResponses, AddMcpResourceVisibilityGrantData, AddMcpResourceVisibilityGrantResponses, AddMcpServerInstanceFunctionData, AddMcpServerInstanceFunctionErrors, AddMcpServerInstanceFunctionResponses, AddMemoryBankOwnershipGrantData, AddMemoryBankOwnershipGrantResponses, AddMemoryBankVisibilityGrantData, AddMemoryBankVisibilityGrantResponses, AddOrganizationMemberData, AddOrganizationMemberErrors, AddOrganizationMemberResponses, AddPersonalMemoryBankOwnershipGrantData, AddPersonalMemoryBankOwnershipGrantResponses, AddPersonalMemoryBankVisibilityGrantData, AddPersonalMemoryBankVisibilityGrantResponses, AddPersonalRegistryOwnershipGrantData, AddPersonalRegistryOwnershipGrantResponses, AddPersonalRegistryVisibilityGrantData, AddPersonalRegistryVisibilityGrantResponses, AddPersonalRscOwnershipGrantData, AddPersonalRscOwnershipGrantResponses, AddPersonalRscVisibilityGrantData, AddPersonalRscVisibilityGrantResponses, AddPersonalSkillOwnershipGrantData, AddPersonalSkillOwnershipGrantResponses, AddPersonalSkillVisibilityGrantData, AddPersonalSkillVisibilityGrantResponses, AddPersonalUcOwnershipGrantData, AddPersonalUcOwnershipGrantResponses, AddPersonalUcVisibilityGrantData, AddPersonalUcVisibilityGrantResponses, AddPersonalWikiOwnershipGrantData, AddPersonalWikiOwnershipGrantResponses, AddPersonalWikiVisibilityGrantData, AddPersonalWikiVisibilityGrantResponses, AddProviderSkillsToSkillRegistryData, AddProviderSkillsToSkillRegistryErrors, AddProviderSkillsToSkillRegistryResponses, AddRscOwnershipGrantData, AddRscOwnershipGrantResponses, AddRscVisibilityGrantData, AddRscVisibilityGrantResponses, AddSessionResourceGrantData, AddSessionResourceGrantErrors, AddSessionResourceGrantResponses, AddSessionUserMemberData, AddSessionUserMemberErrors, AddSessionUserMemberResponses, AddSignalProviderGrantData, AddSignalProviderGrantResponses, AddSkillOwnershipGrantData, AddSkillOwnershipGrantResponses, AddSkillRegistryOwnershipGrantData, AddSkillRegistryOwnershipGrantResponses, AddSkillRegistryVisibilityGrantData, AddSkillRegistryVisibilityGrantResponses, AddSkillVisibilityGrantData, AddSkillVisibilityGrantResponses, AddTeamGroupMemberData, AddTeamGroupMemberErrors, AddTeamGroupMemberResponses, AddTeamMemberData, AddTeamMemberErrors, AddTeamMemberResponses, AddUcOwnershipGrantData, AddUcOwnershipGrantResponses, AddUcVisibilityGrantData, AddUcVisibilityGrantResponses, AddWikiOwnershipGrantData, AddWikiOwnershipGrantResponses, AddWikiVisibilityGrantData, AddWikiVisibilityGrantResponses, ApplyWikiOntologyTemplateData, ApplyWikiOntologyTemplateResponses, AssignPersonalMemoryBankSynthesizerData, AssignPersonalMemoryBankSynthesizerResponses, AuthorizeOauthDeviceCodeData, AuthorizeOauthDeviceCodeErrors, AuthorizeOauthDeviceCodeResponses, AutomationsAddGrantData, AutomationsAddGrantResponses, AutomationsDeleteData, AutomationsDeleteResponses, AutomationsGetData, AutomationsGetErrors, AutomationsGetResponses, AutomationsListData, AutomationsListExecutionsData, AutomationsListExecutionsResponses, AutomationsListGrantsData, AutomationsListGrantsResponses, AutomationsListResponses, AutomationsPutData, AutomationsPutErrors, AutomationsPutResponses, AutomationsRemoveGrantData, AutomationsRemoveGrantResponses, AutomationsRunData, AutomationsRunResponses, AutomationsSetOwnershipData, AutomationsSetOwnershipResponses, AutomationsSetVisibilityData, AutomationsSetVisibilityResponses, AutoProvisionToolGroupInstanceData, AutoProvisionToolGroupInstanceErrors, AutoProvisionToolGroupInstanceResponses, AutumnWebhookHandlerData, AutumnWebhookHandlerErrors, AutumnWebhookHandlerResponses, BillingAiCreditReceiptCommitData, BillingAiCreditReceiptCommitResponses, BillingAiCreditReservationReleaseData, BillingAiCreditReservationReleaseResponses, BillingAiCreditReserveData, BillingAiCreditReserveResponses, BillingAiCreditTopupCreateData, BillingAiCreditTopupCreateErrors, BillingAiCreditTopupCreateResponses, BillingAiGatewayEnsureData, BillingAiGatewayEnsureErrors, BillingAiGatewayEnsureResponses, BillingAutumnBridgePostData, BillingAutumnBridgePostErrors, BillingAutumnBridgePostResponses, BillingContextGetData, BillingContextGetErrors, BillingContextGetResponses, BillingEnrollAccountData, BillingEnrollAccountErrors, BillingEnrollAccountResponses, BillingProductEnrollCurrentHumanData, BillingProductEnrollCurrentHumanErrors, BillingProductEnrollCurrentHumanResponses, BillingRedirectData, BillingRedirectErrors, BillingRemoveAccountSeatData, BillingRemoveAccountSeatErrors, BillingRemoveAccountSeatResponses, BillingWebhookStripeDeprecatedData, BillingWebhookStripeDeprecatedResponses, BindToolGroupToMcpServerData, BindToolGroupToMcpServerErrors, BindToolGroupToMcpServerResponses, BulkAddMcpServerInstanceFunctionsData, BulkAddMcpServerInstanceFunctionsErrors, BulkAddMcpServerInstanceFunctionsResponses, BulkRemoveMcpServerInstanceFunctionsData, BulkRemoveMcpServerInstanceFunctionsErrors, BulkRemoveMcpServerInstanceFunctionsResponses, CancelHumanApprovalActionData, CancelHumanApprovalActionErrors, CancelHumanApprovalActionResponses, ChangePersonalWikiOwnershipData, ChangePersonalWikiOwnershipResponses, ChangeWikiOwnershipData, ChangeWikiOwnershipResponses, ChatkitAddAgentResourceGrantData, ChatkitAddAgentResourceGrantErrors, ChatkitAddAgentResourceGrantResponses, ChatkitAddSessionParticipantData, ChatkitAddSessionParticipantErrors, ChatkitAddSessionParticipantResponses, ChatkitAppendAgentRunStepData, ChatkitAppendAgentRunStepResponses, ChatkitApproveSelfExtensionProposalData, ChatkitApproveSelfExtensionProposalResponses, ChatkitAutoProvisionSlackChannelInstallationData, ChatkitAutoProvisionSlackChannelInstallationErrors, ChatkitAutoProvisionSlackChannelInstallationResponses, ChatkitCacheConvertedMessagesData, ChatkitCacheConvertedMessagesErrors, ChatkitCacheConvertedMessagesResponses, ChatkitCancelSelfExtensionProposalData, ChatkitCancelSelfExtensionProposalResponses, ChatkitClaimAgentResourceBundleOutputsData, ChatkitClaimAgentResourceBundleOutputsResponses, ChatkitClaimAgentRunsData, ChatkitClaimAgentRunsResponses, ChatkitClaimSelfExtensionProposalOutputsData, ChatkitClaimSelfExtensionProposalOutputsResponses, ChatkitCollectAgentJobResultData, ChatkitCollectAgentJobResultResponses, ChatkitCompleteSlackProviderProvisionedSetupData, ChatkitCompleteSlackProviderProvisionedSetupErrors, ChatkitCompleteSlackProviderProvisionedSetupResponses, ChatkitCompleteSlackSelfManagedSetupData, ChatkitCompleteSlackSelfManagedSetupErrors, ChatkitCompleteSlackSelfManagedSetupResponses, ChatkitControlAgentRunData, ChatkitControlAgentRunResponses, ChatkitCreateAgentRunData, ChatkitCreateAgentRunResponses, ChatkitCreateCustomProviderData, ChatkitCreateCustomProviderErrors, ChatkitCreateCustomProviderResponses, ChatkitCreateGoalData, ChatkitCreateGoalResponses, ChatkitCreateRoomInvitationData, ChatkitCreateRoomInvitationErrors, ChatkitCreateRoomInvitationResponses, ChatkitCreateSessionData, ChatkitCreateSessionErrors, ChatkitCreateSessionResponses, ChatkitCreateSlackChannelInstallationData, ChatkitCreateSlackChannelInstallationErrors, ChatkitCreateSlackChannelInstallationResponses, ChatkitCreateTaskData, ChatkitCreateTaskResponses, ChatkitCustomProviderRuntimeData, ChatkitCustomProviderRuntimeErrors, ChatkitCustomProviderRuntimeResponses, ChatkitDecideCapabilityChangeData, ChatkitDecideCapabilityChangeResponses, ChatkitDecideRoomInvitationData, ChatkitDecideRoomInvitationErrors, ChatkitDecideRoomInvitationResponses, ChatkitDelegateAgentJobData, ChatkitDelegateAgentJobResponses, ChatkitDeleteAgentData, ChatkitDeleteAgentErrors, ChatkitDeleteAgentResponses, ChatkitDeleteAgentTurnQueueItemData, ChatkitDeleteAgentTurnQueueItemErrors, ChatkitDeleteAgentTurnQueueItemResponses, ChatkitDeleteChatProviderData, ChatkitDeleteChatProviderErrors, ChatkitDeleteChatProviderResponses, ChatkitDeleteCustomProviderData, ChatkitDeleteCustomProviderErrors, ChatkitDeleteCustomProviderResponses, ChatkitDisableCustomProviderData, ChatkitDisableCustomProviderErrors, ChatkitDisableCustomProviderResponses, ChatkitEnableCustomProviderData, ChatkitEnableCustomProviderErrors, ChatkitEnableCustomProviderResponses, ChatkitFinishAgentRunEffectData, ChatkitFinishAgentRunEffectResponses, ChatkitGetActiveAgentRunData, ChatkitGetActiveAgentRunResponses, ChatkitGetAgentAvatarData, ChatkitGetAgentAvatarErrors, ChatkitGetAgentAvatarResponses, ChatkitGetAgentData, ChatkitGetAgentErrors, ChatkitGetAgentJobData, ChatkitGetAgentJobResponses, ChatkitGetAgentObservabilityData, ChatkitGetAgentObservabilityErrors, ChatkitGetAgentObservabilityResponses, ChatkitGetAgentResourceBundleProvisioningData, ChatkitGetAgentResourceBundleProvisioningResponses, ChatkitGetAgentResponses, ChatkitGetAgentRunData, ChatkitGetAgentRunEffectData, ChatkitGetAgentRunEffectResponses, ChatkitGetAgentRunResponses, ChatkitGetCompactedHistoryData, ChatkitGetCompactedHistoryErrors, ChatkitGetCompactedHistoryResponses, ChatkitGetCustomConnectionData, ChatkitGetCustomConnectionErrors, ChatkitGetCustomConnectionResponses, ChatkitGetCustomProviderData, ChatkitGetCustomProviderErrors, ChatkitGetCustomProviderResponses, ChatkitGetGoalData, ChatkitGetGoalResponses, ChatkitGetLatestCompactionData, ChatkitGetLatestCompactionErrors, ChatkitGetLatestCompactionResponses, ChatkitGetSelfExtensionProposalData, ChatkitGetSelfExtensionProposalResponses, ChatkitGetTaskData, ChatkitGetTaskResponses, ChatkitHydrateConvertedMessagesData, ChatkitHydrateConvertedMessagesErrors, ChatkitHydrateConvertedMessagesResponses, ChatkitIngestCustomProviderMessageData, ChatkitIngestCustomProviderMessageErrors, ChatkitIngestCustomProviderMessageResponses, ChatkitInvokeSessionProviderToolData, ChatkitInvokeSessionProviderToolErrors, ChatkitInvokeSessionProviderToolResponses, ChatkitJoinSessionData, ChatkitJoinSessionErrors, ChatkitJoinSessionResponses, ChatkitListAgentJobsData, ChatkitListAgentJobsResponses, ChatkitListAgentResourceGrantsData, ChatkitListAgentResourceGrantsErrors, ChatkitListAgentResourceGrantsResponses, ChatkitListAgentsData, ChatkitListAgentsErrors, ChatkitListAgentsResponses, ChatkitListAgentTurnQueueData, ChatkitListAgentTurnQueueErrors, ChatkitListAgentTurnQueueResponses, ChatkitListAvailableChatChannelsData, ChatkitListAvailableChatChannelsErrors, ChatkitListAvailableChatChannelsResponses, ChatkitListAvailableChatProvidersData, ChatkitListAvailableChatProvidersErrors, ChatkitListAvailableChatProvidersResponses, ChatkitListChatProvidersData, ChatkitListChatProvidersErrors, ChatkitListChatProvidersResponses, ChatkitListCustomConnectionsData, ChatkitListCustomConnectionsErrors, ChatkitListCustomConnectionsResponses, ChatkitListCustomConnectionWorkData, ChatkitListCustomConnectionWorkErrors, ChatkitListCustomConnectionWorkResponses, ChatkitListCustomProviderData, ChatkitListCustomProviderErrors, ChatkitListCustomProviderResponses, ChatkitListGoalsData, ChatkitListGoalsResponses, ChatkitListMessageHistoryData, ChatkitListMessageHistoryErrors, ChatkitListMessageHistoryResponses, ChatkitListRoomInvitationsData, ChatkitListRoomInvitationsErrors, ChatkitListRoomInvitationsResponses, ChatkitListSelfExtensionProposalsData, ChatkitListSelfExtensionProposalsResponses, ChatkitListSessionParticipantsData, ChatkitListSessionParticipantsErrors, ChatkitListSessionParticipantsResponses, ChatkitListSessionProviderToolsData, ChatkitListSessionProviderToolsErrors, ChatkitListSessionProviderToolsResponses, ChatkitListSessionsData, ChatkitListSessionsErrors, ChatkitListSessionsResponses, ChatkitListTasksData, ChatkitListTasksResponses, ChatkitPrepareAgentRunEffectData, ChatkitPrepareAgentRunEffectResponses, ChatkitProposeSelfExtensionData, ChatkitProposeSelfExtensionResponses, ChatkitProvisionAgentResourceBundleData, ChatkitProvisionAgentResourceBundleResponses, ChatkitRecallAutomaticMemoryData, ChatkitRecallAutomaticMemoryErrors, ChatkitRecallAutomaticMemoryResponses, ChatkitRefreshCustomProviderData, ChatkitRefreshCustomProviderErrors, ChatkitRefreshCustomProviderResponses, ChatkitRegisterAgentToolsData, ChatkitRegisterAgentToolsErrors, ChatkitRegisterAgentToolsResponses, ChatkitRegisterChatProviderData, ChatkitRegisterChatProviderErrors, ChatkitRegisterChatProviderResponses, ChatkitRegisterHttpVercelAiSdkAgentData, ChatkitRegisterHttpVercelAiSdkAgentErrors, ChatkitRegisterHttpVercelAiSdkAgentResponses, ChatkitRegisterVercelUiChatProviderData, ChatkitRegisterVercelUiChatProviderErrors, ChatkitRegisterVercelUiChatProviderResponses, ChatkitRejectSelfExtensionProposalData, ChatkitRejectSelfExtensionProposalResponses, ChatkitRemoveAgentResourceGrantData, ChatkitRemoveAgentResourceGrantErrors, ChatkitRemoveAgentResourceGrantResponses, ChatkitRemoveSessionParticipantData, ChatkitRemoveSessionParticipantErrors, ChatkitRemoveSessionParticipantResponses, ChatkitReorderAgentTurnQueueItemData, ChatkitReorderAgentTurnQueueItemErrors, ChatkitReorderAgentTurnQueueItemResponses, ChatkitReportCompactionEventData, ChatkitReportCompactionEventErrors, ChatkitReportCompactionEventResponses, ChatkitReportToolExecutionData, ChatkitReportToolExecutionErrors, ChatkitReportToolExecutionResponses, ChatkitResumeAgentJobData, ChatkitResumeAgentJobResponses, ChatkitRetryCustomConnectionWorkData, ChatkitRetryCustomConnectionWorkErrors, ChatkitRetryCustomConnectionWorkResponses, ChatkitRevokeRoomInvitationData, ChatkitRevokeRoomInvitationErrors, ChatkitRevokeRoomInvitationResponses, ChatkitRollbackSelfExtensionProposalData, ChatkitRollbackSelfExtensionProposalResponses, ChatkitRotateCustomConnectionCredentialsData, ChatkitRotateCustomConnectionCredentialsErrors, ChatkitRotateCustomConnectionCredentialsResponses, ChatkitRotateCustomProviderData, ChatkitRotateCustomProviderErrors, ChatkitRotateCustomProviderResponses, ChatkitSearchData, ChatkitSearchErrors, ChatkitSearchResponses, ChatkitSendSessionMessageData, ChatkitSendSessionMessageErrors, ChatkitSendSessionMessageResponses, ChatkitSetAgentPermissionsData, ChatkitSetAgentPermissionsErrors, ChatkitSetAgentPermissionsResponses, ChatkitSetAgentStatusData, ChatkitSetAgentStatusErrors, ChatkitSetAgentStatusResponses, ChatkitSetChatProviderStatusData, ChatkitSetChatProviderStatusErrors, ChatkitSetChatProviderStatusResponses, ChatkitStartSlackOauthData, ChatkitStartSlackOauthErrors, ChatkitStartSlackOauthResponses, ChatkitSteerAgentJobData, ChatkitSteerAgentJobResponses, ChatkitSteerAgentTurnQueueItemData, ChatkitSteerAgentTurnQueueItemErrors, ChatkitSteerAgentTurnQueueItemResponses, ChatkitStopAgentJobData, ChatkitStopAgentJobResponses, ChatkitStreamSessionEventsData, ChatkitStreamSessionEventsErrors, ChatkitStreamSessionEventsResponses, ChatkitTransitionAgentRunData, ChatkitTransitionAgentRunResponses, ChatkitUpdateAgentAvatarData, ChatkitUpdateAgentAvatarErrors, ChatkitUpdateAgentAvatarResponses, ChatkitUpdateAgentData, ChatkitUpdateAgentErrors, ChatkitUpdateAgentObservabilityData, ChatkitUpdateAgentObservabilityErrors, ChatkitUpdateAgentObservabilityResponses, ChatkitUpdateAgentOwnershipData, ChatkitUpdateAgentOwnershipErrors, ChatkitUpdateAgentOwnershipResponses, ChatkitUpdateAgentResponses, ChatkitUpdateAgentToolVisibilityData, ChatkitUpdateAgentToolVisibilityErrors, ChatkitUpdateAgentToolVisibilityResponses, ChatkitUpdateAgentVisibilityData, ChatkitUpdateAgentVisibilityErrors, ChatkitUpdateAgentVisibilityResponses, ChatkitUpdateChatProviderData, ChatkitUpdateChatProviderErrors, ChatkitUpdateChatProviderResponses, ChatkitUpdateCustomProviderData, ChatkitUpdateCustomProviderErrors, ChatkitUpdateCustomProviderResponses, ChatkitUpdateGoalData, ChatkitUpdateGoalResponses, ChatkitUpdateTaskData, ChatkitUpdateTaskResponses, ChatkitWorkspaceAgentSessionsData, ChatkitWorkspaceAgentSessionsResponses, ChatkitWorkspaceBootstrapData, ChatkitWorkspaceBootstrapResponses, ChatkitWorkspaceConversationSnapshotData, ChatkitWorkspaceConversationSnapshotResponses, ChatkitWorkspaceCreateSessionData, ChatkitWorkspaceCreateSessionResponses, ChatkitWorkspaceInterruptSessionData, ChatkitWorkspaceInterruptSessionResponses, ChatkitWorkspaceMessagesData, ChatkitWorkspaceMessagesResponses, ChatkitWorkspaceRenameThreadData, ChatkitWorkspaceRenameThreadResponses, ChatkitWorkspaceSendMessageData, ChatkitWorkspaceSendMessageResponses, ChatkitWorkspaceSidebarData, ChatkitWorkspaceSidebarResponses, ChatkitWorkspaceSubmitTurnData, ChatkitWorkspaceSubmitTurnResponses, ChatkitWorkspaceUpdateSessionReadStateData, ChatkitWorkspaceUpdateSessionReadStateResponses, CheckMemoryBankHealthData, CheckMemoryBankHealthResponses, CheckPersonalMemoryBankHealthData, CheckPersonalMemoryBankHealthResponses, ClaimTemporaryAccountData, ClaimTemporaryAccountErrors, ClaimTemporaryAccountResponses, ClearPersonalMemoryBankSynthesizerData, ClearPersonalMemoryBankSynthesizerResponses, CompleteAttachmentUploadData, CompleteAttachmentUploadErrors, CompleteAttachmentUploadResponses, CompleteCredentialSetupItemData, CompleteCredentialSetupItemResponses, CompleteHumanApprovalActionData, CompleteHumanApprovalActionErrors, CompleteHumanApprovalActionResponses, CompleteIdentityLinkData, CompleteIdentityLinkResponses, CompleteIdentityVerificationData, CompleteIdentityVerificationErrors, CompleteIdentityVerificationResponses, CompleteWikiAssetUploadData, CompleteWikiAssetUploadResponses, ConfigureHostedOpenbotInstanceData, ConfigureHostedOpenbotInstanceErrors, ConfigureHostedOpenbotInstanceResponses, ConnectMcpProviderCatalogEntryData, ConnectMcpProviderCatalogEntryErrors, ConnectMcpProviderCatalogEntryResponses, ConnectProxiedMcpServerData, ConnectProxiedMcpServerErrors, ConnectProxiedMcpServerResponses, CreateAttachmentUploadData, CreateAttachmentUploadErrors, CreateAttachmentUploadResponses, CreateAttachmentUploadsData, CreateAttachmentUploadsErrors, CreateAttachmentUploadsResponses, CreateCustomToolProviderData, CreateCustomToolProviderResponses, CreateHostedOpenbotDeploymentData, CreateHostedOpenbotDeploymentErrors, CreateHostedOpenbotDeploymentResponses, CreateHostedOpenbotReleaseData, CreateHostedOpenbotReleaseErrors, CreateHostedOpenbotReleaseResponses, CreateHumanApprovalActionData, CreateHumanApprovalActionErrors, CreateHumanApprovalActionResponses, CreateIdentityData, CreateIdentityErrors, CreateIdentityLinkData, CreateIdentityLinkErrors, CreateIdentityLinkResponses, CreateIdentityResponses, CreateManagedUserCredentialData, CreateManagedUserCredentialResponses, CreateMcpServerInstanceData, CreateMcpServerInstanceErrors, CreateMcpServerInstanceResponses, CreateMemoryBankData, CreateMemoryBankResponses, CreateMessageData, CreateMessageErrors, CreateMessageResponses, CreateOrganizationData, CreateOrganizationErrors, CreateOrganizationResponses, CreateOrgOidcProviderData, CreateOrgOidcProviderErrors, CreateOrgOidcProviderResponses, CreatePersonalMcpServerInstanceData, CreatePersonalMcpServerInstanceErrors, CreatePersonalMcpServerInstanceResponses, CreatePersonalMemoryBankData, CreatePersonalMemoryBankResponses, CreatePersonalSkillData, CreatePersonalSkillRegistryData, CreatePersonalSkillRegistryResponses, CreatePersonalSkillResponses, CreatePersonalToolGroupInstanceData, CreatePersonalToolGroupInstanceErrors, CreatePersonalToolGroupInstanceResponses, CreatePersonalUserCredentialData, CreatePersonalUserCredentialResponses, CreatePersonalWikiData, CreatePersonalWikiPageData, CreatePersonalWikiPageResponses, CreatePersonalWikiResponses, CreateProxyTokenData, CreateProxyTokenErrors, CreateProxyTokenResponses, CreateResourceServerCredentialData, CreateResourceServerCredentialResponses, CreateSessionData, CreateSessionErrors, CreateSessionResponses, CreateSkillData, CreateSkillErrors, CreateSkillRegistryData, CreateSkillRegistryErrors, CreateSkillRegistryResponses, CreateSkillResponses, CreateTeamData, CreateTeamErrors, CreateTeamGroupData, CreateTeamGroupErrors, CreateTeamGroupResponses, CreateTeamResponses, CreateTemporaryAccountData, CreateTemporaryAccountErrors, CreateTemporaryAccountResponses, CreateToolGroupInstanceData, CreateToolGroupInstanceErrors, CreateToolGroupInstanceResponses, CreateTrustedRuntimeData, CreateTrustedRuntimeErrors, CreateTrustedRuntimeResponses, CreateTrustedSkillProviderData, CreateTrustedSkillProviderErrors, CreateTrustedSkillProviderResponses, CreateUserCredentialData, CreateUserCredentialResponses, CreateWikiAssetUploadData, CreateWikiAssetUploadResponses, CreateWikiData, CreateWikiPageData, CreateWikiPageResponses, CreateWikiPageTypeData, CreateWikiPageTypeResponses, CreateWikiPageTypeVersionData, CreateWikiPageTypeVersionErrors, CreateWikiPageTypeVersionResponses, CreateWikiRelationshipTypeData, CreateWikiRelationshipTypeResponses, CreateWikiRelationshipTypeVersionData, CreateWikiRelationshipTypeVersionErrors, CreateWikiRelationshipTypeVersionResponses, CreateWikiResponses, CredentialGenericOauthCallbackData, CredentialGenericOauthCallbackResponses, DeleteAttachmentData, DeleteAttachmentErrors, DeleteAttachmentResponses, DeleteCustomToolProviderData, DeleteCustomToolProviderResponses, DeleteManagedUserCredentialData, DeleteManagedUserCredentialResponses, DeleteMcpServerInstanceData, DeleteMcpServerInstanceErrors, DeleteMcpServerInstanceResponses, DeleteMemoryBankData, DeleteMemoryBankResponses, DeleteMemoryDocumentData, DeleteMemoryDocumentResponses, DeleteMessageData, DeleteMessageErrors, DeleteMessageResponses, DeleteOrganizationData, DeleteOrganizationErrors, DeleteOrganizationResponses, DeleteOrgOidcProviderData, DeleteOrgOidcProviderErrors, DeleteOrgOidcProviderResponses, DeletePersonalMcpServerInstanceData, DeletePersonalMcpServerInstanceResponses, DeletePersonalMemoryBankData, DeletePersonalMemoryBankResponses, DeletePersonalMemoryDocumentData, DeletePersonalMemoryDocumentResponses, DeletePersonalSkillData, DeletePersonalSkillRegistryData, DeletePersonalSkillRegistryResponses, DeletePersonalSkillResponses, DeletePersonalToolGroupInstanceData, DeletePersonalToolGroupInstanceResponses, DeletePersonalWikiData, DeletePersonalWikiPageData, DeletePersonalWikiPageResponses, DeletePersonalWikiResponses, DeleteProxiedMcpServerData, DeleteProxiedMcpServerErrors, DeleteProxiedMcpServerResponses, DeleteResourceServerCredentialData, DeleteResourceServerCredentialResponses, DeleteSelfAvatarData, DeleteSelfAvatarErrors, DeleteSelfAvatarResponses, DeleteSkillData, DeleteSkillErrors, DeleteSkillRegistryData, DeleteSkillRegistryErrors, DeleteSkillRegistryResponses, DeleteSkillResponses, DeleteSynthesisSessionMemoryData, DeleteSynthesisSessionMemoryResponses, DeleteTeamData, DeleteTeamErrors, DeleteTeamGroupData, DeleteTeamGroupErrors, DeleteTeamGroupResponses, DeleteTeamResponses, DeleteToolGroupInstanceData, DeleteToolGroupInstanceErrors, DeleteToolGroupInstanceResponses, DeleteTrustedRuntimeData, DeleteTrustedRuntimeErrors, DeleteTrustedRuntimeResponses, DeleteUserCredentialData, DeleteUserCredentialResponses, DeleteVerifiedIdentityLinkData, DeleteVerifiedIdentityLinkErrors, DeleteVerifiedIdentityLinkResponses, DeleteWikiAssetData, DeleteWikiAssetErrors, DeleteWikiAssetResponses, DeleteWikiData, DeleteWikiPageData, DeleteWikiPageErrors, DeleteWikiPageRelationshipData, DeleteWikiPageRelationshipResponses, DeleteWikiPageResponses, DeleteWikiPageTypeData, DeleteWikiPageTypeErrors, DeleteWikiPageTypeResponses, DeleteWikiPageTypeVersionData, DeleteWikiPageTypeVersionErrors, DeleteWikiPageTypeVersionResponses, DeleteWikiRelationshipTypeData, DeleteWikiRelationshipTypeErrors, DeleteWikiRelationshipTypeResponses, DeleteWikiResponses, DisableCustomToolProviderData, DisableCustomToolProviderResponses, DisableProxiedMcpServerData, DisableProxiedMcpServerErrors, DisableProxiedMcpServerResponses, DisableToolData, DisableToolErrors, DisableToolResponses, DownloadAttachmentContentData, DownloadAttachmentContentErrors, DownloadAttachmentContentResponses, DownloadSkillPackageFileData, DownloadSkillPackageFileErrors, DownloadSkillPackageFileResponses, DownloadWikiAssetContentData, DownloadWikiAssetContentErrors, DownloadWikiAssetContentResponses, DownloadWikiAssetData, DownloadWikiAssetResponses, EnableAndBindProviderToolsData, EnableAndBindProviderToolsErrors, EnableAndBindProviderToolsResponses, EnableCustomToolProviderData, EnableCustomToolProviderResponses, EnableProxiedMcpServerData, EnableProxiedMcpServerErrors, EnableProxiedMcpServerResponses, EnableToolData, EnableToolErrors, EnableToolResponses, EncryptPersonalUserCredentialConfigurationData, EncryptPersonalUserCredentialConfigurationResponses, EncryptResourceServerConfigurationData, EncryptResourceServerConfigurationResponses, EncryptUserCredentialConfigurationData, EncryptUserCredentialConfigurationResponses, ExchangeOauthCodeData, ExchangeOauthCodeErrors, ExchangeOauthCodeResponses, ExpireTemporaryAccountsData, ExpireTemporaryAccountsErrors, ExpireTemporaryAccountsResponses, ExportMemoryBankTemplateData, ExportMemoryBankTemplateResponses, ExportPersonalMemoryBankTemplateData, ExportPersonalMemoryBankTemplateResponses, FinalizeHostedOpenbotReleaseData, FinalizeHostedOpenbotReleaseErrors, FinalizeHostedOpenbotReleaseResponses, GenerateLocalRuntimeTunnelApiKeyData, GenerateLocalRuntimeTunnelApiKeyErrors, GenerateLocalRuntimeTunnelApiKeyResponses, GenerateTemporaryAccountClaimUrlData, GenerateTemporaryAccountClaimUrlErrors, GenerateTemporaryAccountClaimUrlResponses, GetAttachmentDownloadUrlData, GetAttachmentDownloadUrlErrors, GetAttachmentDownloadUrlResponses, GetCommonProviderInstallationData, GetCommonProviderInstallationResponses, GetCredentialSetupItemData, GetCredentialSetupItemResponses, GetCustomToolProviderData, GetCustomToolProviderResponses, GetHostedOpenbotBootstrapBundleData, GetHostedOpenbotBootstrapBundleErrors, GetHostedOpenbotBootstrapBundleResponses, GetHostedOpenbotInstanceData, GetHostedOpenbotInstanceErrors, GetHostedOpenbotInstanceResponses, GetHostedOpenbotReleaseData, GetHostedOpenbotReleaseErrors, GetHostedOpenbotReleaseResponses, GetHumanApprovalActionData, GetHumanApprovalActionErrors, GetHumanApprovalActionResponses, GetIdentityData, GetIdentityErrors, GetIdentityResponses, GetIdentityVerificationData, GetIdentityVerificationErrors, GetIdentityVerificationResponses, GetLocalRuntimeTunnelApiKeyData, GetLocalRuntimeTunnelApiKeyErrors, GetLocalRuntimeTunnelApiKeyResponses, GetLocalRuntimeTunnelConnectorData, GetLocalRuntimeTunnelConnectorErrors, GetLocalRuntimeTunnelConnectorResponses, GetManagedUserCredentialSecretData, GetManagedUserCredentialSecretResponses, GetMcpServerInstanceData, GetMcpServerInstanceErrors, GetMcpServerInstanceResponses, GetMemoryBankConfigData, GetMemoryBankConfigResponses, GetMemoryBankData, GetMemoryBankDocumentData, GetMemoryBankDocumentResponses, GetMemoryBankResponses, GetMessageData, GetMessageDeliveriesData, GetMessageDeliveriesErrors, GetMessageDeliveriesResponses, GetMessageErrors, GetMessageResponses, GetOpenbotPluginsCatalogData, GetOpenbotPluginsCatalogResponses, GetOrganizationData, GetOrganizationErrors, GetOrganizationResponses, GetOrgOidcProviderData, GetOrgOidcProviderErrors, GetOrgOidcProviderResponses, GetPersonalMcpServerInstanceData, GetPersonalMcpServerInstanceResponses, GetPersonalMemoryBankConfigData, GetPersonalMemoryBankConfigResponses, GetPersonalMemoryBankData, GetPersonalMemoryBankDocumentData, GetPersonalMemoryBankDocumentResponses, GetPersonalMemoryBankResponses, GetPersonalSkillData, GetPersonalSkillRegistryData, GetPersonalSkillRegistryResponses, GetPersonalSkillResponses, GetPersonalToolGroupInstanceData, GetPersonalToolGroupInstanceResponses, GetPersonalWikiData, GetPersonalWikiPageData, GetPersonalWikiPageResponses, GetPersonalWikiResponses, GetProviderProvisioningHumanActionData, GetProviderProvisioningHumanActionResponses, GetProxiedMcpServerData, GetProxiedMcpServerErrors, GetProxiedMcpServerResponses, GetProxiedSkillProviderData, GetProxiedSkillProviderErrors, GetProxiedSkillProviderResponses, GetResourceServerCredentialData, GetResourceServerCredentialResponses, GetRuntimeConfigData, GetRuntimeConfigResponses, GetSelfAvatarData, GetSelfAvatarErrors, GetSelfAvatarResponses, GetSelfProfileData, GetSelfProfileErrors, GetSelfProfileResponses, GetSessionEventHistoryData, GetSessionEventHistoryErrors, GetSessionEventHistoryResponses, GetSkillData, GetSkillErrors, GetSkillPackageData, GetSkillPackageErrors, GetSkillPackageResponses, GetSkillRegistryData, GetSkillRegistryErrors, GetSkillRegistryResponses, GetSkillRegistrySkillByTitleData, GetSkillRegistrySkillByTitleErrors, GetSkillRegistrySkillByTitleResponses, GetSkillRegistrySkillData, GetSkillRegistrySkillDescriptionData, GetSkillRegistrySkillDescriptionErrors, GetSkillRegistrySkillDescriptionResponses, GetSkillRegistrySkillErrors, GetSkillRegistrySkillResponses, GetSkillResponses, GetTeamData, GetTeamErrors, GetTeamGroupData, GetTeamGroupErrors, GetTeamGroupResponses, GetTeamResponses, GetToolGroupInstanceData, GetToolGroupInstanceErrors, GetToolGroupInstanceResponses, GetToolsOpenapiSpecData, GetToolsOpenapiSpecErrors, GetToolsOpenapiSpecResponses, GetTrustedRuntimeData, GetTrustedRuntimeErrors, GetTrustedRuntimeResponses, GetUserCredentialData, GetUserCredentialResponses, GetWikiData, GetWikiPageBacklinksData, GetWikiPageBacklinksResponses, GetWikiPageData, GetWikiPageNeighborhoodData, GetWikiPageNeighborhoodResponses, GetWikiPageRelationshipData, GetWikiPageRelationshipResponses, GetWikiPageResponses, GetWikiPageTypeData, GetWikiPageTypeResponses, GetWikiPageTypeVersionData, GetWikiPageTypeVersionResponses, GetWikiRelationshipTypeData, GetWikiRelationshipTypeResponses, GetWikiRelationshipTypeVersionData, GetWikiRelationshipTypeVersionResponses, GetWikiResponses, GrepPersonalWikiPagesData, GrepPersonalWikiPagesResponses, GrepWikiPagesData, GrepWikiPagesResponses, HealthCheckData, HealthCheckErrors, HealthCheckResponses, ImportMemoryBankTemplateData, ImportMemoryBankTemplateResponses, ImportPersonalMemoryBankTemplateData, ImportPersonalMemoryBankTemplateResponses, InitiateIdentityVerificationData, InitiateIdentityVerificationErrors, InitiateIdentityVerificationResponses, InspectWikiAssetReferencesData, InspectWikiAssetReferencesResponses, InviteTeamUsersData, InviteTeamUsersErrors, InviteTeamUsersResponses, InvokeCustomToolData, InvokeCustomToolResponses, InvokeToolData, InvokeToolErrors, InvokeToolResponses, IssueHostedOpenbotGitTokenData, IssueHostedOpenbotGitTokenErrors, IssueHostedOpenbotGitTokenResponses, IssueOpenbotChatkitRealtimeTicketData, IssueOpenbotChatkitRealtimeTicketErrors, IssueOpenbotChatkitRealtimeTicketResponses, IssueProxyRealtimeTicketData, IssueProxyRealtimeTicketResponses, LinkTeamIdentityData, LinkTeamIdentityErrors, LinkTeamIdentityResponses, ListAvailableToolGroupsData, ListAvailableToolGroupsErrors, ListAvailableToolGroupsResponses, ListCommonProviderInstallationOwnershipGrantsData, ListCommonProviderInstallationOwnershipGrantsResponses, ListCommonProviderInstallationsData, ListCommonProviderInstallationsResponses, ListCommonProviderInstallationVisibilityGrantsData, ListCommonProviderInstallationVisibilityGrantsResponses, ListCredentialSetupItemsData, ListCredentialSetupItemsResponses, ListCustomToolProvidersData, ListCustomToolProvidersResponses, ListIdentitiesData, ListIdentitiesErrors, ListIdentitiesResponses, ListIdentityTeamsData, ListIdentityTeamsResponses, ListInboxAgentsData, ListInboxAgentsErrors, ListInboxAgentsResponses, ListInboxesData, ListInboxesErrors, ListInboxesResponses, ListManagedUserCredentialsData, ListManagedUserCredentialsResponses, ListMcpProviderCatalogData, ListMcpProviderCatalogErrors, ListMcpProviderCatalogResponses, ListMcpResourceOwnershipGrantsData, ListMcpResourceOwnershipGrantsResponses, ListMcpResourceVisibilityGrantsData, ListMcpResourceVisibilityGrantsResponses, ListMcpServerInstancesData, ListMcpServerInstancesErrors, ListMcpServerInstancesResponses, ListMemoryBankDocumentsData, ListMemoryBankDocumentsResponses, ListMemoryBankOwnershipGrantsData, ListMemoryBankOwnershipGrantsResponses, ListMemoryBanksData, ListMemoryBankSourceBindingsData, ListMemoryBankSourceBindingsResponses, ListMemoryBanksResponses, ListMemoryBankVisibilityGrantsData, ListMemoryBankVisibilityGrantsResponses, ListMemorySourceBindingsData, ListMemorySourceBindingsResponses, ListMessagesData, ListMessagesErrors, ListMessagesResponses, ListOpenbotDeploymentsData, ListOpenbotDeploymentsErrors, ListOpenbotDeploymentsResponses, ListOrganizationMembersData, ListOrganizationMembersErrors, ListOrganizationMembersResponses, ListOrganizationsData, ListOrganizationsErrors, ListOrganizationsResponses, ListOrganizationTeamGroupsData, ListOrganizationTeamGroupsResponses, ListOrgOidcProvidersData, ListOrgOidcProvidersErrors, ListOrgOidcProvidersResponses, ListPersonalMcpServerInstancesData, ListPersonalMcpServerInstancesErrors, ListPersonalMcpServerInstancesResponses, ListPersonalMemoryBankDocumentsData, ListPersonalMemoryBankDocumentsResponses, ListPersonalMemoryBankOwnershipGrantsData, ListPersonalMemoryBankOwnershipGrantsResponses, ListPersonalMemoryBanksData, ListPersonalMemoryBankSourceBindingsData, ListPersonalMemoryBankSourceBindingsResponses, ListPersonalMemoryBanksResponses, ListPersonalMemoryBankVisibilityGrantsData, ListPersonalMemoryBankVisibilityGrantsResponses, ListPersonalMemorySourceBindingsData, ListPersonalMemorySourceBindingsResponses, ListPersonalRegistryOwnershipGrantsData, ListPersonalRegistryOwnershipGrantsResponses, ListPersonalRegistryVisibilityGrantsData, ListPersonalRegistryVisibilityGrantsResponses, ListPersonalRscOwnershipGrantsData, ListPersonalRscOwnershipGrantsResponses, ListPersonalRscVisibilityGrantsData, ListPersonalRscVisibilityGrantsResponses, ListPersonalSkillOwnershipGrantsData, ListPersonalSkillOwnershipGrantsResponses, ListPersonalSkillRegistriesData, ListPersonalSkillRegistriesResponses, ListPersonalSkillsData, ListPersonalSkillsResponses, ListPersonalSkillVisibilityGrantsData, ListPersonalSkillVisibilityGrantsResponses, ListPersonalToolGroupInstancesData, ListPersonalToolGroupInstancesErrors, ListPersonalToolGroupInstancesResponses, ListPersonalUcOwnershipGrantsData, ListPersonalUcOwnershipGrantsResponses, ListPersonalUcVisibilityGrantsData, ListPersonalUcVisibilityGrantsResponses, ListPersonalWikiOwnershipGrantsData, ListPersonalWikiOwnershipGrantsResponses, ListPersonalWikiPagesData, ListPersonalWikiPagesResponses, ListPersonalWikisData, ListPersonalWikisResponses, ListPersonalWikiVisibilityGrantsData, ListPersonalWikiVisibilityGrantsResponses, ListProviderProvisionerCatalogData, ListProviderProvisionerCatalogResponses, ListProxiedMcpServersData, ListProxiedMcpServersErrors, ListProxiedMcpServersResponses, ListProxiedSkillProvidersData, ListProxiedSkillProvidersResponses, ListProxyTokensData, ListProxyTokensErrors, ListProxyTokensResponses, ListPublicAvailableToolGroupsData, ListPublicAvailableToolGroupsErrors, ListPublicAvailableToolGroupsResponses, ListResourceServerCredentialsData, ListResourceServerCredentialsResponses, ListRscOwnershipGrantsData, ListRscOwnershipGrantsResponses, ListRscVisibilityGrantsData, ListRscVisibilityGrantsResponses, ListSessionInboxInstancesData, ListSessionInboxInstancesErrors, ListSessionInboxInstancesResponses, ListSessionResourceGrantsData, ListSessionResourceGrantsErrors, ListSessionResourceGrantsResponses, ListSessionsData, ListSessionsErrors, ListSessionsResponses, ListSessionUserMembersData, ListSessionUserMembersErrors, ListSessionUserMembersResponses, ListSignalProviderGrantsData, ListSignalProviderGrantsResponses, ListSkillOwnershipGrantsData, ListSkillOwnershipGrantsResponses, ListSkillRegistriesData, ListSkillRegistriesErrors, ListSkillRegistriesResponses, ListSkillRegistryOwnershipGrantsData, ListSkillRegistryOwnershipGrantsResponses, ListSkillRegistrySkillSummariesData, ListSkillRegistrySkillSummariesErrors, ListSkillRegistrySkillSummariesResponses, ListSkillRegistryVisibilityGrantsData, ListSkillRegistryVisibilityGrantsResponses, ListSkillsData, ListSkillsErrors, ListSkillsResponses, ListSkillVisibilityGrantsData, ListSkillVisibilityGrantsResponses, ListTeamGroupMembersData, ListTeamGroupMembersResponses, ListTeamGroupsData, ListTeamGroupsResponses, ListTeamInvitationsData, ListTeamInvitationsResponses, ListTeamMembersData, ListTeamMembersErrors, ListTeamMembersResponses, ListTeamsData, ListTeamsErrors, ListTeamsResponses, ListToolDeploymentsByAliasData, ListToolDeploymentsByAliasErrors, ListToolDeploymentsByAliasResponses, ListToolGroupInstancesData, ListToolGroupInstancesErrors, ListToolGroupInstancesGroupedByToolData, ListToolGroupInstancesGroupedByToolErrors, ListToolGroupInstancesGroupedByToolResponses, ListToolGroupInstancesResponses, ListToolsData, ListToolsErrors, ListToolsResponses, ListTrustedRuntimesData, ListTrustedRuntimesErrors, ListTrustedRuntimesResponses, ListUcOwnershipGrantsData, ListUcOwnershipGrantsResponses, ListUcVisibilityGrantsData, ListUcVisibilityGrantsResponses, ListUserCredentialsData, ListUserCredentialsResponses, ListVerifiedIdentityLinksData, ListVerifiedIdentityLinksErrors, ListVerifiedIdentityLinksResponses, ListVisibleMemoryBanksData, ListVisibleMemoryBanksResponses, ListWikiAssetsData, ListWikiAssetsResponses, ListWikiOntologyInstallationsData, ListWikiOntologyInstallationsResponses, ListWikiOntologyTemplatesData, ListWikiOntologyTemplatesResponses, ListWikiOwnershipGrantsData, ListWikiOwnershipGrantsResponses, ListWikiPageAssetsData, ListWikiPageAssetsResponses, ListWikiPageRelationshipsData, ListWikiPageRelationshipsResponses, ListWikiPageRevisionsData, ListWikiPageRevisionsResponses, ListWikiPagesData, ListWikiPagesResponses, ListWikiPageTypesData, ListWikiPageTypesResponses, ListWikiPageTypeVersionsData, ListWikiPageTypeVersionsResponses, ListWikiRelationshipTypesData, ListWikiRelationshipTypesResponses, ListWikiRelationshipTypeVersionsData, ListWikiRelationshipTypeVersionsResponses, ListWikisData, ListWikisResponses, ListWikiVisibilityGrantsData, ListWikiVisibilityGrantsResponses, McpProtocolDeleteData, McpProtocolDeleteErrors, McpProtocolDeleteResponses, McpProtocolGetData, McpProtocolGetErrors, McpProtocolGetResponses, McpProtocolPostData, McpProtocolPostErrors, McpProtocolPostResponses, McpServerPlaygroundChatData, McpServerPlaygroundChatErrors, McpServerPlaygroundChatResponses, MigrateWikiPageTypeData, MigrateWikiPageTypeErrors, MigrateWikiPageTypeResponses, MoveWikiPageData, MoveWikiPageErrors, MoveWikiPageResponses, ObserveSessionData, ObserveSessionErrors, ObserveSessionResponses, OnboardOrganizationData, OnboardOrganizationErrors, OnboardOrganizationResponses, PersonalMcpProtocolDeleteData, PersonalMcpProtocolDeleteResponses, PersonalMcpProtocolGetData, PersonalMcpProtocolGetResponses, PersonalMcpProtocolPostData, PersonalMcpProtocolPostResponses, PreviewIdentityLinkData, PreviewIdentityLinkResponses, PreviewWikiPageTypeMigrationData, PreviewWikiPageTypeMigrationErrors, PreviewWikiPageTypeMigrationResponses, ProviderProvisioningCallbackData, ProviderProvisioningCallbackResponses, ProviderSetupCatalogData, ProviderSetupCatalogResponses, ProviderSetupResumeData, ProviderSetupResumeResponses, ProviderSetupStartData, ProviderSetupStartResponses, ProvisionIdentityTeamData, ProvisionIdentityTeamResponses, RecallMemoryData, RecallMemoryResponses, RecallPersonalMemoryData, RecallPersonalMemoryResponses, RecallSynthesisSessionMemoryData, RecallSynthesisSessionMemoryResponses, ReconcileOpenbotAgentBundleData, ReconcileOpenbotAgentBundleResponses, RedirectTemporaryAccountClaimPageData, ReflectMemoryData, ReflectMemoryResponses, ReflectPersonalMemoryData, ReflectPersonalMemoryResponses, RefreshCustomToolProviderData, RefreshCustomToolProviderResponses, RefreshProxiedMcpServerData, RefreshProxiedMcpServerErrors, RefreshProxiedMcpServerResponses, RegisterOauthClientData, RegisterOauthClientErrors, RegisterOauthClientResponses, RegisterOpenbotDeploymentData, RegisterOpenbotDeploymentErrors, RegisterOpenbotDeploymentResponses, RegisterTeamOauthClientData, RegisterTeamOauthClientErrors, RegisterTeamOauthClientResponses, RemoveCommonProviderInstallationOwnershipGrantData, RemoveCommonProviderInstallationOwnershipGrantResponses, RemoveCommonProviderInstallationVisibilityGrantData, RemoveCommonProviderInstallationVisibilityGrantResponses, RemoveIdentityIdentifierData, RemoveIdentityIdentifierResponses, RemoveIdentityTeamData, RemoveIdentityTeamResponses, RemoveMcpResourceOwnershipGrantData, RemoveMcpResourceOwnershipGrantResponses, RemoveMcpResourceVisibilityGrantData, RemoveMcpResourceVisibilityGrantResponses, RemoveMcpServerInstanceFunctionData, RemoveMcpServerInstanceFunctionErrors, RemoveMcpServerInstanceFunctionResponses, RemoveMemoryBankOwnershipGrantData, RemoveMemoryBankOwnershipGrantResponses, RemoveMemoryBankVisibilityGrantData, RemoveMemoryBankVisibilityGrantResponses, RemoveOrganizationMemberData, RemoveOrganizationMemberErrors, RemoveOrganizationMemberResponses, RemovePersonalMemoryBankOwnershipGrantData, RemovePersonalMemoryBankOwnershipGrantResponses, RemovePersonalMemoryBankVisibilityGrantData, RemovePersonalMemoryBankVisibilityGrantResponses, RemovePersonalRegistryOwnershipGrantData, RemovePersonalRegistryOwnershipGrantResponses, RemovePersonalRegistryVisibilityGrantData, RemovePersonalRegistryVisibilityGrantResponses, RemovePersonalRscOwnershipGrantData, RemovePersonalRscOwnershipGrantResponses, RemovePersonalRscVisibilityGrantData, RemovePersonalRscVisibilityGrantResponses, RemovePersonalSkillOwnershipGrantData, RemovePersonalSkillOwnershipGrantResponses, RemovePersonalSkillVisibilityGrantData, RemovePersonalSkillVisibilityGrantResponses, RemovePersonalUcOwnershipGrantData, RemovePersonalUcOwnershipGrantResponses, RemovePersonalUcVisibilityGrantData, RemovePersonalUcVisibilityGrantResponses, RemovePersonalWikiOwnershipGrantData, RemovePersonalWikiOwnershipGrantResponses, RemovePersonalWikiVisibilityGrantData, RemovePersonalWikiVisibilityGrantResponses, RemoveRscOwnershipGrantData, RemoveRscOwnershipGrantResponses, RemoveRscVisibilityGrantData, RemoveRscVisibilityGrantResponses, RemoveSessionResourceGrantData, RemoveSessionResourceGrantErrors, RemoveSessionResourceGrantResponses, RemoveSessionUserMemberData, RemoveSessionUserMemberErrors, RemoveSessionUserMemberResponses, RemoveSignalProviderGrantData, RemoveSignalProviderGrantResponses, RemoveSkillOwnershipGrantData, RemoveSkillOwnershipGrantResponses, RemoveSkillRegistryOwnershipGrantData, RemoveSkillRegistryOwnershipGrantResponses, RemoveSkillRegistryVisibilityGrantData, RemoveSkillRegistryVisibilityGrantResponses, RemoveSkillVisibilityGrantData, RemoveSkillVisibilityGrantResponses, RemoveTeamGroupMemberData, RemoveTeamGroupMemberResponses, RemoveTeamMemberData, RemoveTeamMemberErrors, RemoveTeamMemberResponses, RemoveUcOwnershipGrantData, RemoveUcOwnershipGrantResponses, RemoveUcVisibilityGrantData, RemoveUcVisibilityGrantResponses, RemoveWikiOwnershipGrantData, RemoveWikiOwnershipGrantResponses, RemoveWikiVisibilityGrantData, RemoveWikiVisibilityGrantResponses, RenameProxyTokenData, RenameProxyTokenErrors, RenameProxyTokenResponses, ReplaceMemorySourceBindingsData, ReplaceMemorySourceBindingsResponses, ReplacePersonalMemorySourceBindingsData, ReplacePersonalMemorySourceBindingsResponses, ResetMemoryBankConfigData, ResetMemoryBankConfigResponses, ResetPersonalMemoryBankConfigData, ResetPersonalMemoryBankConfigResponses, ResolveIdentityData, ResolveIdentityErrors, ResolveIdentityResponses, ResumeCredentialSetupItemData, ResumeCredentialSetupItemResponses, ResumeProviderAppProvisioningData, ResumeProviderAppProvisioningResponses, ResumeUserCredentialBrokeringData, ResumeUserCredentialBrokeringResponses, RetainMemoryDocumentData, RetainMemoryDocumentResponses, RetainPersonalMemoryDocumentData, RetainPersonalMemoryDocumentResponses, RetainSynthesisSessionMemoryData, RetainSynthesisSessionMemoryResponses, RetryMemorySourceSyncData, RetryMemorySourceSyncResponses, RetryPersonalMemorySourceBindingsData, RetryPersonalMemorySourceBindingsResponses, RetryWikiData, RetryWikiResponses, ReverseProxyAddProfileOwnershipGrantData, ReverseProxyAddProfileOwnershipGrantResponses, ReverseProxyAddProfileVisibilityGrantData, ReverseProxyAddProfileVisibilityGrantResponses, ReverseProxyCreateProfileData, ReverseProxyCreateProfileErrors, ReverseProxyCreateProfileResponses, ReverseProxyDeleteProfileData, ReverseProxyDeleteProfileErrors, ReverseProxyDeleteProfileResponses, ReverseProxyGetProfileData, ReverseProxyGetProfileErrors, ReverseProxyGetProfileResponses, ReverseProxyListProfileOwnershipGrantsData, ReverseProxyListProfileOwnershipGrantsResponses, ReverseProxyListProfilesData, ReverseProxyListProfilesErrors, ReverseProxyListProfilesResponses, ReverseProxyListProfileVisibilityGrantsData, ReverseProxyListProfileVisibilityGrantsResponses, ReverseProxyListProvidersData, ReverseProxyListProvidersResponses, ReverseProxyProxyGetData, ReverseProxyProxyGetResponses, ReverseProxyProxyPostData, ReverseProxyProxyPostResponses, ReverseProxyRemoveProfileOwnershipGrantData, ReverseProxyRemoveProfileOwnershipGrantResponses, ReverseProxyRemoveProfileVisibilityGrantData, ReverseProxyRemoveProfileVisibilityGrantResponses, ReverseProxySetProfileOwnershipData, ReverseProxySetProfileOwnershipResponses, ReverseProxySetProfileVisibilityData, ReverseProxySetProfileVisibilityResponses, ReverseProxyUpdateProfileData, ReverseProxyUpdateProfileErrors, ReverseProxyUpdateProfileResponses, RevokeLocalRuntimeTunnelApiKeyData, RevokeLocalRuntimeTunnelApiKeyErrors, RevokeLocalRuntimeTunnelApiKeyResponses, RevokeProxyTokenData, RevokeProxyTokenErrors, RevokeProxyTokenResponses, RevokeTeamInvitationData, RevokeTeamInvitationResponses, RotateCustomToolProviderSigningKeyData, RotateCustomToolProviderSigningKeyResponses, RouteAuthCallbackData, RouteAuthCallbackErrors, RouteCreateApiKeyData, RouteCreateApiKeyErrors, RouteCreateApiKeyResponses, RouteDeleteApiKeyData, RouteDeleteApiKeyErrors, RouteDeleteApiKeyResponses, RouteGetJwksData, RouteGetJwksErrors, RouteGetJwksResponses, RouteListApiKeysData, RouteListApiKeysErrors, RouteListApiKeysResponses, RouteListDebugAuthProfilesData, RouteListDebugAuthProfilesErrors, RouteListDebugAuthProfilesResponses, RouteLogoutData, RouteRefreshTokenData, RouteRefreshTokenErrors, RouteRefreshTokenResponses, RouteResolveLoginProviderData, RouteResolveLoginProviderErrors, RouteResolveLoginProviderResponses, RouteSelectDebugAuthProfileData, RouteSelectDebugAuthProfileErrors, RouteSelectDebugAuthProfileResponses, RouteStartAuthorizationData, RouteStartAuthorizationErrors, SearchSkillRegistryData, SearchSkillRegistryErrors, SearchSkillRegistryResponses, SetCommonProviderInstallationOwnershipData, SetCommonProviderInstallationOwnershipResponses, SetCommonProviderInstallationVisibilityData, SetCommonProviderInstallationVisibilityResponses, SetMcpResourceOwnershipData, SetMcpResourceOwnershipResponses, SetMcpResourceVisibilityData, SetMcpResourceVisibilityResponses, SetMemoryBankOwnershipModeData, SetMemoryBankOwnershipModeResponses, SetMemoryBankVisibilityData, SetMemoryBankVisibilityResponses, SetPersonalMemoryBankOwnershipModeData, SetPersonalMemoryBankOwnershipModeResponses, SetPersonalMemoryBankVisibilityData, SetPersonalMemoryBankVisibilityResponses, SetPersonalRegistryOwnershipModeData, SetPersonalRegistryOwnershipModeResponses, SetPersonalRegistryVisibilityData, SetPersonalRegistryVisibilityResponses, SetPersonalRscOwnershipData, SetPersonalRscOwnershipResponses, SetPersonalRscVisibilityData, SetPersonalRscVisibilityResponses, SetPersonalSkillOwnershipModeData, SetPersonalSkillOwnershipModeResponses, SetPersonalSkillVisibilityData, SetPersonalSkillVisibilityResponses, SetPersonalUcOwnershipData, SetPersonalUcOwnershipResponses, SetPersonalUcVisibilityData, SetPersonalUcVisibilityResponses, SetPersonalWikiOwnershipModeData, SetPersonalWikiOwnershipModeResponses, SetPersonalWikiVisibilityData, SetPersonalWikiVisibilityResponses, SetRscOwnershipData, SetRscOwnershipResponses, SetRscVisibilityData, SetRscVisibilityResponses, SetSelfOpenbotAvatarData, SetSelfOpenbotAvatarErrors, SetSelfOpenbotAvatarResponses, SetSignalProviderOwnershipData, SetSignalProviderOwnershipResponses, SetSignalProviderVisibilityData, SetSignalProviderVisibilityResponses, SetSkillOwnershipModeData, SetSkillOwnershipModeResponses, SetSkillRegistryOwnershipModeData, SetSkillRegistryOwnershipModeResponses, SetSkillRegistryVisibilityData, SetSkillRegistryVisibilityResponses, SetSkillVisibilityData, SetSkillVisibilityResponses, SetUcOwnershipData, SetUcOwnershipResponses, SetUcVisibilityData, SetUcVisibilityResponses, SetWikiOwnershipModeData, SetWikiOwnershipModeResponses, SetWikiVisibilityData, SetWikiVisibilityResponses, SignalsAddPersonalProviderGrantData, SignalsAddPersonalProviderGrantResponses, SignalsCreatePersonalProviderInstanceData, SignalsCreatePersonalProviderInstanceResponses, SignalsCreateProviderInstanceData, SignalsCreateProviderInstanceResponses, SignalsDeletePersonalProviderInstanceData, SignalsDeletePersonalProviderInstanceResponses, SignalsDeleteProviderInstanceData, SignalsDeleteProviderInstanceResponses, SignalsGetDeliveryData, SignalsGetDeliveryResponses, SignalsGetPersonalDeliveryData, SignalsGetPersonalDeliveryResponses, SignalsGetPersonalProviderInstanceData, SignalsGetPersonalProviderInstanceResponses, SignalsGetProviderInstanceData, SignalsGetProviderInstanceResponses, SignalsListAvailableProvidersData, SignalsListAvailableProvidersResponses, SignalsListDeliveriesData, SignalsListDeliveriesResponses, SignalsListPersonalAvailableProvidersData, SignalsListPersonalAvailableProvidersResponses, SignalsListPersonalDeliveriesData, SignalsListPersonalDeliveriesResponses, SignalsListPersonalProviderGrantsData, SignalsListPersonalProviderGrantsResponses, SignalsListPersonalProviderInstancesData, SignalsListPersonalProviderInstancesResponses, SignalsListProviderInstancesData, SignalsListProviderInstancesResponses, SignalsRemovePersonalProviderGrantData, SignalsRemovePersonalProviderGrantResponses, SignalsRetryDeliveryData, SignalsRetryDeliveryResponses, SignalsRetryPersonalDeliveryData, SignalsRetryPersonalDeliveryResponses, SignalsSetPersonalProviderOwnershipData, SignalsSetPersonalProviderOwnershipResponses, SignalsSetPersonalProviderVisibilityData, SignalsSetPersonalProviderVisibilityResponses, SignalsTriggerFakeData, SignalsTriggerFakeResponses, SignalsUpdatePersonalProviderInstanceData, SignalsUpdatePersonalProviderInstanceResponses, SignalsUpdateProviderInstanceData, SignalsUpdateProviderInstanceResponses, StartCredentialSetupItemData, StartCredentialSetupItemResponses, StartOauthDeviceCodeData, StartOauthDeviceCodeErrors, StartOauthDeviceCodeResponses, StartProviderAppProvisioningData, StartProviderAppProvisioningResponses, StartProxiedMcpServerOauthData, StartProxiedMcpServerOauthErrors, StartProxiedMcpServerOauthResponses, StartUserCredentialBrokeringData, StartUserCredentialBrokeringResponses, StateExportData, StateExportErrors, StateExportResponses, StateGetImportData, StateGetImportResponses, StateImportData, StateImportEventsData, StateImportEventsResponses, StateImportResponses, StatePlanData, StatePlanResponses, StateResolveSourceData, StateResolveSourceErrors, StateResolveSourceResponses, StateSchemaData, StateSchemaJsonData, StateSchemaJsonResponses, StateSchemaResponses, StateValidateData, StateValidateResponses, TildePayPaymentMppData, TildePayPaymentMppResponses, TildePayPaymentX402Data, TildePayPaymentX402Responses, TildePayProvisionData, TildePayProvisionResponses, TildePayWalletCreateData, TildePayWalletCreateResponses, TildePayWalletSummaryData, TildePayWalletSummaryResponses, TildePayWalletWaitUntilBalanceData, TildePayWalletWaitUntilBalanceResponses, TraverseWikiGraphData, TraverseWikiGraphResponses, UnbindToolGroupFromMcpServerData, UnbindToolGroupFromMcpServerErrors, UnbindToolGroupFromMcpServerResponses, UpdateCustomToolProviderData, UpdateCustomToolProviderResponses, UpdateHostedOpenbotComputerImageData, UpdateHostedOpenbotComputerImageErrors, UpdateHostedOpenbotComputerImageResponses, UpdateIdentityData, UpdateIdentityErrors, UpdateIdentityResponses, UpdateManagedUserCredentialData, UpdateManagedUserCredentialResponses, UpdateMcpServerInstanceData, UpdateMcpServerInstanceErrors, UpdateMcpServerInstanceFunctionData, UpdateMcpServerInstanceFunctionErrors, UpdateMcpServerInstanceFunctionResponses, UpdateMcpServerInstanceResponses, UpdateMemoryBankConfigData, UpdateMemoryBankConfigResponses, UpdateMemoryBankData, UpdateMemoryBankResponses, UpdateOrganizationData, UpdateOrganizationErrors, UpdateOrganizationMemberRoleData, UpdateOrganizationMemberRoleErrors, UpdateOrganizationMemberRoleResponses, UpdateOrganizationResponses, UpdateOrgOidcProviderData, UpdateOrgOidcProviderErrors, UpdateOrgOidcProviderResponses, UpdatePersonalMcpServerInstanceData, UpdatePersonalMcpServerInstanceResponses, UpdatePersonalMemoryBankConfigData, UpdatePersonalMemoryBankConfigResponses, UpdatePersonalMemoryBankData, UpdatePersonalMemoryBankResponses, UpdatePersonalSkillData, UpdatePersonalSkillRegistryData, UpdatePersonalSkillRegistryResponses, UpdatePersonalSkillResponses, UpdatePersonalToolGroupInstanceData, UpdatePersonalToolGroupInstanceResponses, UpdatePersonalWikiData, UpdatePersonalWikiPageData, UpdatePersonalWikiPageResponses, UpdatePersonalWikiResponses, UpdateResourceServerCredentialData, UpdateResourceServerCredentialResponses, UpdateSelfProfileData, UpdateSelfProfileErrors, UpdateSelfProfileResponses, UpdateSessionOwnershipData, UpdateSessionOwnershipErrors, UpdateSessionOwnershipResponses, UpdateSessionVisibilityData, UpdateSessionVisibilityErrors, UpdateSessionVisibilityResponses, UpdateSkillData, UpdateSkillErrors, UpdateSkillRegistryData, UpdateSkillRegistryErrors, UpdateSkillRegistryResponses, UpdateSkillResponses, UpdateTeamData, UpdateTeamErrors, UpdateTeamGroupData, UpdateTeamGroupErrors, UpdateTeamGroupResponses, UpdateTeamMemberRoleData, UpdateTeamMemberRoleErrors, UpdateTeamMemberRoleResponses, UpdateTeamResponses, UpdateToolBoundParamsData, UpdateToolBoundParamsErrors, UpdateToolBoundParamsResponses, UpdateToolGroupInstanceData, UpdateToolGroupInstanceErrors, UpdateToolGroupInstanceResponses, UpdateTrustedRuntimeData, UpdateTrustedRuntimeErrors, UpdateTrustedRuntimeResponses, UpdateUserCredentialData, UpdateUserCredentialResponses, UpdateWikiAssetData, UpdateWikiAssetResponses, UpdateWikiData, UpdateWikiPageData, UpdateWikiPageErrors, UpdateWikiPageRelationshipData, UpdateWikiPageRelationshipResponses, UpdateWikiPageResponses, UpdateWikiPageTypeData, UpdateWikiPageTypeErrors, UpdateWikiPageTypeResponses, UpdateWikiRelationshipTypeData, UpdateWikiRelationshipTypeErrors, UpdateWikiRelationshipTypeResponses, UpdateWikiResponses, UploadAttachmentContentData, UploadAttachmentContentErrors, UploadAttachmentContentResponses, UploadHostedOpenbotReleaseFileData, UploadHostedOpenbotReleaseFileErrors, UploadHostedOpenbotReleaseFileResponses, UploadSelfAvatarData, UploadSelfAvatarErrors, UploadSelfAvatarResponses, UploadWikiAssetContentData, UploadWikiAssetContentErrors, UploadWikiAssetContentResponses, UpsertWikiPageRelationshipData, UpsertWikiPageRelationshipErrors, UpsertWikiPageRelationshipResponses, ValidateSynthesisSessionBatchData, ValidateSynthesisSessionBatchResponses, ValidateWikiPageTypeDataData, ValidateWikiPageTypeDataResponses, VerifyOrgOidcProviderDomainData, VerifyOrgOidcProviderDomainErrors, VerifyOrgOidcProviderDomainResponses, WalletCreateData, WalletCreateErrors, WalletCreateResponses, WalletCustomerCreateData, WalletCustomerCreateResponses, WalletCustomerGetData, WalletCustomerGetResponses, WalletCustomerKycGetData, WalletCustomerKycGetResponses, WalletCustomerListData, WalletCustomerListResponses, WalletGetBalancesData, WalletGetBalancesResponses, WalletGetCryptoDepositInformationData, WalletGetCryptoDepositInformationResponses, WalletGetData, WalletGetFiatDepositInformationData, WalletGetFiatDepositInformationResponses, WalletGetResponses, WalletListData, WalletListResponses, WalletMakeMppPaymentData, WalletMakeMppPaymentResponses, WalletMakeX402PaymentData, WalletMakeX402PaymentResponses, WalletTransactionHistoryListData, WalletTransactionHistoryListResponses, WalletTransactionHistoryRefreshData, WalletTransactionHistoryRefreshResponses, WalletVirtualAccountCreateData, WalletVirtualAccountCreateErrors, WalletVirtualAccountCreateResponses, WalletWaitUntilBalanceData, WalletWaitUntilBalanceResponses, WhoamiData, WhoamiErrors, WhoamiResponses } from './types.gen'; export type Options = Options2 & { /** @@ -2248,6 +2248,149 @@ export const chatkitListAvailableChatChannels = (options: Options): RequestResult => (options.client ?? client).get({ url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}', ...options }); + +/** + * Ingest custom provider message + * + * Accepts a normalized external event using only the owning connection runtime token. + */ +export const chatkitIngestCustomProviderMessage = (options: Options): RequestResult => (options.client ?? client).post({ + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/messages', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Custom provider runtime operation + * + * Manage only conversations and attachments bound to the authenticated connection. + */ +export const chatkitCustomProviderRuntime = (options: Options): RequestResult => (options.client ?? client).post({ + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Rotate custom connection credentials + * + * Immediately revokes the old token and returns its replacement once. + */ +export const chatkitRotateCustomConnectionCredentials = (options: Options): RequestResult => (options.client ?? client).post({ url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime-token/rotate', ...options }); + +/** + * Inspect durable normalized-event and cleanup work without exposing payloads. + */ +export const chatkitListCustomConnectionWork = (options: Options): RequestResult => (options.client ?? client).get({ url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work', ...options }); + +/** + * Retry a dead-letter item with its original deduplication identity. + */ +export const chatkitRetryCustomConnectionWork = (options: Options): RequestResult => (options.client ?? client).post({ + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work/retry', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * List custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitListCustomProvider = (options: Options): RequestResult => (options.client ?? client).get({ url: '/api/v1/team/{team_id}/chatkit/custom-providers', ...options }); + +/** + * Create custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitCreateCustomProvider = (options: Options): RequestResult => (options.client ?? client).post({ + url: '/api/v1/team/{team_id}/chatkit/custom-providers', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Delete custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitDeleteCustomProvider = (options: Options): RequestResult => (options.client ?? client).delete({ url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}', ...options }); + +/** + * Get custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitGetCustomProvider = (options: Options): RequestResult => (options.client ?? client).get({ url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}', ...options }); + +/** + * Update custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitUpdateCustomProvider = (options: Options): RequestResult => (options.client ?? client).put({ + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * List custom ChatKit connections + * + * Lists public connection configuration within a single team and definition. + */ +export const chatkitListCustomConnections = (options: Options): RequestResult => (options.client ?? client).get({ url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/connections', ...options }); + +/** + * Disable custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitDisableCustomProvider = (options: Options): RequestResult => (options.client ?? client).post({ url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/disable', ...options }); + +/** + * Enable custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitEnableCustomProvider = (options: Options): RequestResult => (options.client ?? client).post({ url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/enable', ...options }); + +/** + * Refresh custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitRefreshCustomProvider = (options: Options): RequestResult => (options.client ?? client).post({ url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/refresh', ...options }); + +/** + * Rotate custom ChatKit provider + * + * Manage a reusable tenant-scoped ChatKit implementation. + */ +export const chatkitRotateCustomProvider = (options: Options): RequestResult => (options.client ?? client).post({ url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/signing-key/rotate', ...options }); + /** * Link a member's attested address * @@ -2749,6 +2892,13 @@ export const chatkitGetLatestCompaction = ...options }); +/** + * Stream ChatKit session events + * + * Resumable SSE with canonical audience filtering and periodic authorization revalidation. Use after_revision or Last-Event-ID to reconnect. + */ +export const chatkitStreamSessionEvents = (options: Options): Promise> => (options.client ?? client).sse.get({ url: '/api/v1/team/{team_id}/chatkit/sessions/{session_id}/events/stream', ...options }); + /** * List ChatKit room invitations * @@ -2875,6 +3025,13 @@ export const chatkitRemoveSessionParticipant = (options: Options): RequestResult => (options.client ?? client).get({ url: '/api/v1/team/{team_id}/chatkit/sessions/{session_id}/provider-tools', ...options }); + /** * Send a session-bound provider message * diff --git a/packages/api-client/src/generated/types.gen.ts b/packages/api-client/src/generated/types.gen.ts index 002c1b8b..90f63b75 100644 --- a/packages/api-client/src/generated/types.gen.ts +++ b/packages/api-client/src/generated/types.gen.ts @@ -441,6 +441,13 @@ export type AssignMemoryBankSynthesizerBody = { synthesizer_team_id: string; }; +/** + * An optional toolkit backend materialized as an ordinary custom Tools provider. + */ +export type AssociatedToolkit = { + discovery_url: string; +}; + /** * ChatKit-owned attachment metadata. */ @@ -649,6 +656,24 @@ export type ChangeResourceOwnershipRequest = { ownership: ResourceOwnership; }; +/** + * Private send intent; never include this value in canonical public events. + */ +export type ChannelDeliveryOptions = { + attachment_ids?: Array; + bcc?: Array | null; + cc?: Array | null; + html?: string | null; + /** + * Opaque extension interpreted exclusively by the owning adapter. + */ + provider_options?: unknown; + reply_all?: boolean | null; + subject?: string | null; + to?: Array | null; + visible_recipients?: Array; +}; + /** * Approval information in an HTTP agent tool invocation. */ @@ -936,6 +961,41 @@ export type ChatKitExecutionContext = (ChatKitAgentRunExecutionContext & { kind: 'agent_job'; }); +/** + * A party that can appear in a ChatKit session. + */ +export type ChatKitIdentity = { + /** + * Set when this address belongs to one of our agents. + */ + agent_inbox_id?: string | null; + created_at: WrappedChronoDateTime; + display_name: string; + /** + * The address within that scheme. `None` only for [`ChatKitIdentityKind::TildeUser`]. + */ + external_id?: string | null; + id: string; + kind: ChatKitIdentityKind; + metadata?: { + [key: string]: unknown; + } | null; + org_id: string; + /** + * Namespace that owns the address. Two GitHub organizations can both have + * a `dan`, so the scheme alone is never unique. + */ + provider_id?: string | null; + team_id: string; + /** + * Set only by a verified linking flow, or by us when registering an + * address for one of our own principals. `None` means no authority. + */ + tilde_user_id?: string | null; + updated_at: WrappedChronoDateTime; + verified_at?: null | WrappedChronoDateTime; +}; + /** * Address scheme for a [`ChatKitIdentity`]. */ @@ -1035,6 +1095,23 @@ export enum ChatKitParticipantType { AGENT = 'agent' } +/** + * Discovery document served by the customer's SDK endpoint. + */ +export type ChatKitProviderManifest = { + auth_methods?: Array; + capabilities: CustomProviderCapabilities; + configuration_schema: unknown; + description: string; + display_name: string; + fields?: Array; + invoke_url: string; + protocol_version: number; + session_tools?: Array; + subscriptions?: Array; + version: string; +}; + export type ChatKitRealtimeSocketTicket = { expires_at: WrappedChronoDateTime; /** @@ -2485,6 +2562,348 @@ export enum CurrentSeatStatus { NOT_BILLABLE = 'not_billable' } +/** + * Stable registration, separate from any configured connection. + */ +export type CustomChatKitProvider = { + created_at: WrappedChronoDateTime; + discovery_url: string; + display_name: string; + enabled: boolean; + id: string; + last_discovery_at?: null | WrappedChronoDateTime; + last_discovery_error?: string | null; + local_running_endpoint: boolean; + manifest?: null | ChatKitProviderManifest; + org_id: string; + revision: number; + team_id: string; + updated_at: WrappedChronoDateTime; +}; + +/** + * Returned once after rotation, with remote notification outcome for host recovery. + */ +export type CustomConnectionCredentials = { + backend_notified: boolean; + runtime_token: string; +}; + +/** + * Public connection configuration; runtime credentials and setup state are excluded. + */ +export type CustomConnectionInfo = { + configuration: unknown; + default_agent_inbox_id?: string | null; + definition_id: string; + display_name: string; + enabled: boolean; + id: string; + org_id: string; + setup_id: string; + status: string; + team_id: string; + tool_group_instance_id?: string | null; + toolkit_discovery_url?: string | null; +}; + +export type CustomConnectionInfoPaginatedResponse = { + items: Array; + next_page_token?: string; +}; + +/** + * Operational diagnostics omit normalized message bodies and credentials. + */ +export type CustomConnectionWork = { + attempts: number; + created_at: WrappedChronoDateTime; + kind: string; + last_error?: string | null; + next_attempt_at: WrappedChronoDateTime; + status: string; + work_id: string; +}; + +export type CustomConnectionWorkPaginatedResponse = { + items: Array; + next_page_token?: string; +}; + +/** + * One external address; callers cannot grant themselves principal authority. + */ +export type CustomExternalIdentity = { + display_name: string; + external_id: string; + kind: ChatKitIdentityKind; +}; + +/** + * Normalized event accepted using a single connection's runtime credential. + */ +export type CustomInboundMessage = { + attachment_ids?: Array; + conversation_key: string; + event_id: string; + external_message_id: string; + provider_metadata?: unknown; + provider_thread?: unknown; + sender: CustomExternalIdentity; + text: string; +}; + +/** + * A durable ingestion acknowledgment, including replay of an existing event. + */ +export type CustomIngressReceipt = { + event_id: string; + message_id: string; + status: string; +}; + +/** + * Provider-owned authorization method; secret fields are never list outputs. + */ +export type CustomProviderAuthMethod = { + description: string; + display_name: string; + fields: Array; + id: string; +}; + +/** + * Content conversion and runtime features declared by a backend. + */ +export type CustomProviderCapabilities = { + attachments?: boolean; + delivery?: boolean; + html?: boolean; + identity?: boolean; + inbound?: boolean; + markdown?: boolean; + max_length?: number | null; + streaming?: boolean; + toolkit?: boolean; +}; + +/** + * Named schema-backed field rendered by the existing generic setup flow. + */ +export type CustomProviderField = { + field_type: string; + label: string; + name: string; + placeholder?: string; + required?: boolean; +}; + +/** + * Exact signed remote invocation. Secret-bearing payloads intentionally omit Debug. + */ +export type CustomProviderInvocation = { + configuration: unknown; + context?: null | CustomSessionContext; + input: unknown; + manifest_version: string; + operation: CustomProviderOperation; + protocol_version: number; + request_id: string; + scope: CustomProviderScope; + secrets: unknown; +}; + +/** + * A paginated team catalog; continuation uses the existing timestamp cursor. + */ +export type CustomProviderList = { + items: Array; + next_page_token?: string | null; +}; + +/** + * Tilde-owned protocol operations are typed independently of provider business inputs. + */ +export enum CustomProviderOperation { + SETUP_START = 'setup_start', + SETUP_RESUME = 'setup_resume', + DISCONNECT = 'disconnect', + RUNTIME_CREDENTIALS_UPDATED = 'runtime_credentials_updated', + TOOLKIT_CONFIGURED = 'toolkit_configured', + REGISTER_IDENTITY = 'register_identity', + NORMALIZE_MENTIONS = 'normalize_mentions', + LIST_SESSION_TOOLS = 'list_session_tools', + INVOKE_SESSION_TOOL = 'invoke_session_tool', + RECONCILE_SESSION_TOOL = 'reconcile_session_tool', + PREPARE_SEND = 'prepare_send', + DELIVER = 'deliver', + RECONCILE_DELIVERY = 'reconcile_delivery' +} + +/** + * Signing material is returned only by explicit create/rotate operations. + */ +export type CustomProviderRegistration = { + provider: CustomChatKitProvider; + signing_key: string; +}; + +/** + * Input for creating or editing a reusable backend registration. + */ +export type CustomProviderRegistrationInput = { + discovery_url: string; + display_name: string; + local_running_endpoint?: boolean; +}; + +/** + * Tenant-scoped coordinates recovered from persisted records. + */ +export type CustomProviderScope = { + connection_id: string; + definition_id: string; + org_id: string; + team_id: string; +}; + +/** + * Remote mutations must distinguish absence from an unresolved prior attempt. + */ +export type CustomReconciliation = { + result: unknown; + status: 'applied'; +} | { + status: 'absent'; +} | { + reason: string; + status: 'uncertain'; +}; + +/** + * Narrow operations a provider may perform inside its own bound conversations. + */ +export type CustomRuntimeCommand = { + operation: 'register_agent_identity'; +} | { + operation: 'normalize_mentions'; + tags: Array; +} | { + conversation_key: string; + operation: 'ensure_conversation'; + provider_thread?: unknown; + title?: string | null; +} | { + filename?: string | null; + media_type: string; + operation: 'create_attachment_upload'; + session_id: string; + size_bytes?: number | null; +} | { + attachment_id: string; + operation: 'complete_attachment_upload'; + session_id: string; + sha256?: string | null; + size_bytes?: number | null; +} | { + attachment_id: string; + operation: 'attachment_download'; + session_id: string; +} | { + identity: CustomExternalIdentity; + operation: 'upsert_participant'; + session_id: string; +} | { + external_id: string; + operation: 'leave_participant'; + session_id: string; +} | { + next_page_token?: string | null; + operation: 'history'; + page_size?: number | null; + session_id: string; +}; + +/** + * Runtime responses deliberately expose no general team resource operations. + */ +export type CustomRuntimeResponse = { + identity: ChatKitIdentity; + type: 'identity'; +} | { + identities: Array; + type: 'mentions'; +} | { + session_id: string; + type: 'conversation'; +} | { + type: 'upload'; + upload: CreateAttachmentUploadResponse; +} | { + attachment: Attachment; + type: 'attachment'; +} | { + download: GetAttachmentDownloadUrlResponse; + type: 'download'; +} | { + participant: ChatKitParticipant; + type: 'participant'; +} | { + type: 'left'; +} | { + messages: Array; + next_page_token?: string | null; + type: 'history'; +}; + +/** + * Coordinates verified against the active turn before invoking a session tool. + */ +export type CustomSessionContext = { + agent_inbox_instance_id: string; + conversation_key: string; + execution_id: string; + external_message_id: string; + participants?: Array; + provider_message: unknown; + /** + * Only the provider adapter interprets this external reply handle. + */ + provider_thread: unknown; + session_id: string; + target_inbox_instance_id: string; + trigger_message_id: string; +}; + +/** + * Active delivery roster, excluding Tilde authorization principals and other connections' addresses. + */ +export type CustomSessionParticipant = { + display_name: string; + external_id?: string | null; + instance_id: string; + is_agent: boolean; +}; + +/** + * Tool schemas describe business inputs only. Context travels separately. + */ +export type CustomSessionTool = { + description: string; + input_schema: unknown; + name: string; + output_schema: unknown; + read_only?: boolean; +}; + +/** + * Server-bound tool catalog for the authenticated agent's current turn. + */ +export type CustomSessionToolCatalog = { + context?: null | CustomSessionContext; + tools: Array; +}; + export type CustomSkillSpec = { content: string; description: string; @@ -2531,6 +2950,14 @@ export type CustomToolProviderSerialized = { updated_at: WrappedChronoDateTime; }; +export type CustomVisibleMessage = { + created_at: WrappedChronoDateTime; + id: string; + role: MessageRole; + sender_display_name: string; + text: string; +}; + /** * Data UI part - represents custom data parts */ @@ -5908,6 +6335,10 @@ export type RetainMemoryBody = { document: MemoryDocument; }; +export type RetryConnectionWork = { + work_id: string; +}; + export type RetryMemorySourceBody = { source_id: string; source_kind: MemorySourceKind; @@ -6242,10 +6673,12 @@ export type SendSessionMessageBody = SendSessionMessageInput & { * Model-visible parameters for the session-bound communication tool. */ export type SendSessionMessageInput = { + attachment_ids?: Array; bcc?: Array | null; cc?: Array | null; content: string; html?: string | null; + provider_options?: null | WrappedJsonValue; reply_all?: boolean | null; subject?: string | null; to?: Array | null; @@ -13681,16 +14114,366 @@ export type ChatkitListAvailableChatChannelsResponses = { export type ChatkitListAvailableChatChannelsResponse = ChatkitListAvailableChatChannelsResponses[keyof ChatkitListAvailableChatChannelsResponses]; -export type LinkTeamIdentityData = { - body: LinkTeamIdentityRequestInner; +export type ChatkitGetCustomConnectionData = { + body?: never; path: { team_id: string; + connection_id: string; }; query?: never; - url: '/api/v1/team/{team_id}/chatkit/identities/link'; + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}'; }; -export type LinkTeamIdentityErrors = { +export type ChatkitGetCustomConnectionErrors = { + 400: Error; +}; + +export type ChatkitGetCustomConnectionError = ChatkitGetCustomConnectionErrors[keyof ChatkitGetCustomConnectionErrors]; + +export type ChatkitGetCustomConnectionResponses = { + 200: CustomConnectionInfo; +}; + +export type ChatkitGetCustomConnectionResponse = ChatkitGetCustomConnectionResponses[keyof ChatkitGetCustomConnectionResponses]; + +export type ChatkitIngestCustomProviderMessageData = { + body: CustomInboundMessage; + path: { + team_id: string; + connection_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/messages'; +}; + +export type ChatkitIngestCustomProviderMessageErrors = { + 400: Error; +}; + +export type ChatkitIngestCustomProviderMessageError = ChatkitIngestCustomProviderMessageErrors[keyof ChatkitIngestCustomProviderMessageErrors]; + +export type ChatkitIngestCustomProviderMessageResponses = { + 200: CustomIngressReceipt; +}; + +export type ChatkitIngestCustomProviderMessageResponse = ChatkitIngestCustomProviderMessageResponses[keyof ChatkitIngestCustomProviderMessageResponses]; + +export type ChatkitCustomProviderRuntimeData = { + body: CustomRuntimeCommand; + path: { + team_id: string; + connection_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime'; +}; + +export type ChatkitCustomProviderRuntimeErrors = { + 400: Error; +}; + +export type ChatkitCustomProviderRuntimeError = ChatkitCustomProviderRuntimeErrors[keyof ChatkitCustomProviderRuntimeErrors]; + +export type ChatkitCustomProviderRuntimeResponses = { + 200: CustomRuntimeResponse; +}; + +export type ChatkitCustomProviderRuntimeResponse = ChatkitCustomProviderRuntimeResponses[keyof ChatkitCustomProviderRuntimeResponses]; + +export type ChatkitRotateCustomConnectionCredentialsData = { + body?: never; + path: { + team_id: string; + connection_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime-token/rotate'; +}; + +export type ChatkitRotateCustomConnectionCredentialsErrors = { + 400: Error; +}; + +export type ChatkitRotateCustomConnectionCredentialsError = ChatkitRotateCustomConnectionCredentialsErrors[keyof ChatkitRotateCustomConnectionCredentialsErrors]; + +export type ChatkitRotateCustomConnectionCredentialsResponses = { + 200: CustomConnectionCredentials; +}; + +export type ChatkitRotateCustomConnectionCredentialsResponse = ChatkitRotateCustomConnectionCredentialsResponses[keyof ChatkitRotateCustomConnectionCredentialsResponses]; + +export type ChatkitListCustomConnectionWorkData = { + body?: never; + path: { + team_id: string; + connection_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work'; +}; + +export type ChatkitListCustomConnectionWorkErrors = { + 400: Error; +}; + +export type ChatkitListCustomConnectionWorkError = ChatkitListCustomConnectionWorkErrors[keyof ChatkitListCustomConnectionWorkErrors]; + +export type ChatkitListCustomConnectionWorkResponses = { + 200: CustomConnectionWorkPaginatedResponse; +}; + +export type ChatkitListCustomConnectionWorkResponse = ChatkitListCustomConnectionWorkResponses[keyof ChatkitListCustomConnectionWorkResponses]; + +export type ChatkitRetryCustomConnectionWorkData = { + body: RetryConnectionWork; + path: { + team_id: string; + connection_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work/retry'; +}; + +export type ChatkitRetryCustomConnectionWorkErrors = { + 400: Error; +}; + +export type ChatkitRetryCustomConnectionWorkError = ChatkitRetryCustomConnectionWorkErrors[keyof ChatkitRetryCustomConnectionWorkErrors]; + +export type ChatkitRetryCustomConnectionWorkResponses = { + 200: DeleteInboxResponse; +}; + +export type ChatkitRetryCustomConnectionWorkResponse = ChatkitRetryCustomConnectionWorkResponses[keyof ChatkitRetryCustomConnectionWorkResponses]; + +export type ChatkitListCustomProviderData = { + body?: never; + path: { + team_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers'; +}; + +export type ChatkitListCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitListCustomProviderError = ChatkitListCustomProviderErrors[keyof ChatkitListCustomProviderErrors]; + +export type ChatkitListCustomProviderResponses = { + 200: CustomProviderList; +}; + +export type ChatkitListCustomProviderResponse = ChatkitListCustomProviderResponses[keyof ChatkitListCustomProviderResponses]; + +export type ChatkitCreateCustomProviderData = { + body: CustomProviderRegistrationInput; + path: { + team_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers'; +}; + +export type ChatkitCreateCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitCreateCustomProviderError = ChatkitCreateCustomProviderErrors[keyof ChatkitCreateCustomProviderErrors]; + +export type ChatkitCreateCustomProviderResponses = { + 200: CustomProviderRegistration; +}; + +export type ChatkitCreateCustomProviderResponse = ChatkitCreateCustomProviderResponses[keyof ChatkitCreateCustomProviderResponses]; + +export type ChatkitDeleteCustomProviderData = { + body?: never; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}'; +}; + +export type ChatkitDeleteCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitDeleteCustomProviderError = ChatkitDeleteCustomProviderErrors[keyof ChatkitDeleteCustomProviderErrors]; + +export type ChatkitDeleteCustomProviderResponses = { + 200: DeleteInboxResponse; +}; + +export type ChatkitDeleteCustomProviderResponse = ChatkitDeleteCustomProviderResponses[keyof ChatkitDeleteCustomProviderResponses]; + +export type ChatkitGetCustomProviderData = { + body?: never; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}'; +}; + +export type ChatkitGetCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitGetCustomProviderError = ChatkitGetCustomProviderErrors[keyof ChatkitGetCustomProviderErrors]; + +export type ChatkitGetCustomProviderResponses = { + 200: CustomChatKitProvider; +}; + +export type ChatkitGetCustomProviderResponse = ChatkitGetCustomProviderResponses[keyof ChatkitGetCustomProviderResponses]; + +export type ChatkitUpdateCustomProviderData = { + body: CustomProviderRegistrationInput; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}'; +}; + +export type ChatkitUpdateCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitUpdateCustomProviderError = ChatkitUpdateCustomProviderErrors[keyof ChatkitUpdateCustomProviderErrors]; + +export type ChatkitUpdateCustomProviderResponses = { + 200: CustomChatKitProvider; +}; + +export type ChatkitUpdateCustomProviderResponse = ChatkitUpdateCustomProviderResponses[keyof ChatkitUpdateCustomProviderResponses]; + +export type ChatkitListCustomConnectionsData = { + body?: never; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/connections'; +}; + +export type ChatkitListCustomConnectionsErrors = { + 400: Error; +}; + +export type ChatkitListCustomConnectionsError = ChatkitListCustomConnectionsErrors[keyof ChatkitListCustomConnectionsErrors]; + +export type ChatkitListCustomConnectionsResponses = { + 200: CustomConnectionInfoPaginatedResponse; +}; + +export type ChatkitListCustomConnectionsResponse = ChatkitListCustomConnectionsResponses[keyof ChatkitListCustomConnectionsResponses]; + +export type ChatkitDisableCustomProviderData = { + body?: never; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/disable'; +}; + +export type ChatkitDisableCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitDisableCustomProviderError = ChatkitDisableCustomProviderErrors[keyof ChatkitDisableCustomProviderErrors]; + +export type ChatkitDisableCustomProviderResponses = { + 200: CustomChatKitProvider; +}; + +export type ChatkitDisableCustomProviderResponse = ChatkitDisableCustomProviderResponses[keyof ChatkitDisableCustomProviderResponses]; + +export type ChatkitEnableCustomProviderData = { + body?: never; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/enable'; +}; + +export type ChatkitEnableCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitEnableCustomProviderError = ChatkitEnableCustomProviderErrors[keyof ChatkitEnableCustomProviderErrors]; + +export type ChatkitEnableCustomProviderResponses = { + 200: CustomChatKitProvider; +}; + +export type ChatkitEnableCustomProviderResponse = ChatkitEnableCustomProviderResponses[keyof ChatkitEnableCustomProviderResponses]; + +export type ChatkitRefreshCustomProviderData = { + body?: never; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/refresh'; +}; + +export type ChatkitRefreshCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitRefreshCustomProviderError = ChatkitRefreshCustomProviderErrors[keyof ChatkitRefreshCustomProviderErrors]; + +export type ChatkitRefreshCustomProviderResponses = { + 200: CustomChatKitProvider; +}; + +export type ChatkitRefreshCustomProviderResponse = ChatkitRefreshCustomProviderResponses[keyof ChatkitRefreshCustomProviderResponses]; + +export type ChatkitRotateCustomProviderData = { + body?: never; + path: { + team_id: string; + provider_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/signing-key/rotate'; +}; + +export type ChatkitRotateCustomProviderErrors = { + 400: Error; +}; + +export type ChatkitRotateCustomProviderError = ChatkitRotateCustomProviderErrors[keyof ChatkitRotateCustomProviderErrors]; + +export type ChatkitRotateCustomProviderResponses = { + 200: CustomProviderRegistration; +}; + +export type ChatkitRotateCustomProviderResponse = ChatkitRotateCustomProviderResponses[keyof ChatkitRotateCustomProviderResponses]; + +export type LinkTeamIdentityData = { + body: LinkTeamIdentityRequestInner; + path: { + team_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/identities/link'; +}; + +export type LinkTeamIdentityErrors = { 400: Error; 403: Error; 404: Error; @@ -15026,6 +15809,31 @@ export type ChatkitGetLatestCompactionResponses = { export type ChatkitGetLatestCompactionResponse = ChatkitGetLatestCompactionResponses[keyof ChatkitGetLatestCompactionResponses]; +export type ChatkitStreamSessionEventsData = { + body?: never; + path: { + team_id: string; + session_id: WrappedUuidV4; + }; + query?: { + after_revision?: number | null; + }; + url: '/api/v1/team/{team_id}/chatkit/sessions/{session_id}/events/stream'; +}; + +export type ChatkitStreamSessionEventsErrors = { + 400: Error; +}; + +export type ChatkitStreamSessionEventsError = ChatkitStreamSessionEventsErrors[keyof ChatkitStreamSessionEventsErrors]; + +export type ChatkitStreamSessionEventsResponses = { + /** + * Canonical session event stream + */ + 200: unknown; +}; + export type ChatkitListRoomInvitationsData = { body?: never; path: { @@ -15363,6 +16171,28 @@ export type ChatkitRemoveSessionParticipantResponses = { export type ChatkitRemoveSessionParticipantResponse = ChatkitRemoveSessionParticipantResponses[keyof ChatkitRemoveSessionParticipantResponses]; +export type ChatkitListSessionProviderToolsData = { + body?: never; + path: { + team_id: string; + session_id: string; + }; + query?: never; + url: '/api/v1/team/{team_id}/chatkit/sessions/{session_id}/provider-tools'; +}; + +export type ChatkitListSessionProviderToolsErrors = { + 400: Error; +}; + +export type ChatkitListSessionProviderToolsError = ChatkitListSessionProviderToolsErrors[keyof ChatkitListSessionProviderToolsErrors]; + +export type ChatkitListSessionProviderToolsResponses = { + 200: CustomSessionToolCatalog; +}; + +export type ChatkitListSessionProviderToolsResponse = ChatkitListSessionProviderToolsResponses[keyof ChatkitListSessionProviderToolsResponses]; + export type ChatkitSendSessionMessageData = { body: SendSessionMessageBody; path: { diff --git a/packages/sdk-vercel-ai-node/README.md b/packages/sdk-vercel-ai-node/README.md index 55d1b304..7e9ad976 100644 --- a/packages/sdk-vercel-ai-node/README.md +++ b/packages/sdk-vercel-ai-node/README.md @@ -23,6 +23,7 @@ pnpm add @trytilde/sdk @trytilde/sdk-vercel-ai-node zod without registering them as authored local tools. When Tilde supplies a verified speaker-bound personal-tool capability, both request-scoped helpers forward it privately to MCP with fresh nonce and protocol-session bindings; the capability is removed before application code runs. +- `sessionProviderTools(client, { sessionId })` adapts the API's current authorized provider catalog to Vercel AI tools and preserves tool-call IDs for replay. Custom ChatKit connections use it automatically in `context.session.tools` and `context.$provider.tools`. - `createChatKitSessionTools(client, session)` constructs the trusted, provider-aware `sendMessage`, reaction, thread, AgentMail, and Linq poll tools used by tool-mode endpoints. - `toolEndpoint(options)` exposes signed, Zod-validated custom tool discovery and invocation. diff --git a/packages/sdk-vercel-ai-node/src/handler.ts b/packages/sdk-vercel-ai-node/src/handler.ts index aadc919b..d950822a 100644 --- a/packages/sdk-vercel-ai-node/src/handler.ts +++ b/packages/sdk-vercel-ai-node/src/handler.ts @@ -1,3 +1,4 @@ +import { sessionProviderTools } from "./session-provider-tools"; import type { ChatKitCompactionCheckpoint, ChatKitCompactionLifecycle, @@ -302,7 +303,11 @@ export function chatKitEndpoint( }); }, }; - const sessionTools = toolSession ? createChatKitSessionTools(client, toolSession) : undefined; + const sessionTools = toolSession + ? toolSession.providerId === "chatkit.channel.custom" + ? await sessionProviderTools(client, { sessionId: sessionId.value }) + : createChatKitSessionTools(client, toolSession) + : undefined; const currentRequestMessageIds = messageIds(body.messages); const session: ChatKitSessionClient = { id: sessionId.value, diff --git a/packages/sdk-vercel-ai-node/src/index.ts b/packages/sdk-vercel-ai-node/src/index.ts index e70bc32d..8899d532 100644 --- a/packages/sdk-vercel-ai-node/src/index.ts +++ b/packages/sdk-vercel-ai-node/src/index.ts @@ -247,3 +247,5 @@ export { webhookSigningKeyFromEnv, WebhookVerificationError, } from "./webhook"; + +export { sessionProviderTools } from "./session-provider-tools"; diff --git a/packages/sdk-vercel-ai-node/src/session-provider-tools.ts b/packages/sdk-vercel-ai-node/src/session-provider-tools.ts new file mode 100644 index 00000000..7c852a68 --- /dev/null +++ b/packages/sdk-vercel-ai-node/src/session-provider-tools.ts @@ -0,0 +1,24 @@ +import type { Client } from "@trytilde/sdk"; +import type { ToolSet } from "ai"; + +/** Adapt the current turn's canonical provider tools to the Vercel AI tool interface. */ +export async function sessionProviderTools( + client: Client, + input: { sessionId: string }, +): Promise { + const { jsonSchema, tool } = await import("ai"); + const bound = await client.chatkit.sessionTools(input); + return Object.fromEntries( + bound.map((definition) => [ + definition.name, + tool({ + description: definition.description, + inputSchema: jsonSchema>(definition.inputSchema), + execute: async (arguments_, options) => + definition.execute(arguments_ as Parameters[0], { + toolCallId: options.toolCallId, + }), + }), + ]), + ); +} diff --git a/packages/sdk-vercel-ai-node/test/webhook.test.ts b/packages/sdk-vercel-ai-node/test/webhook.test.ts index 75816a69..6d42641b 100644 --- a/packages/sdk-vercel-ai-node/test/webhook.test.ts +++ b/packages/sdk-vercel-ai-node/test/webhook.test.ts @@ -282,6 +282,70 @@ describe("chatKitEndpoint", () => { expect(response.headers.get("x-tilde-chatkit-response-mode")).toBe("tool"); }); + it("discovers custom connection tools and invokes them with server-bound coordinates", async () => { + const fetcher = vi.fn(async (_url, options) => + options?.method === "POST" + ? Response.json({ + provider_id: "chatkit.channel.custom", + tool_name: "archiveConversation", + result: { archived: true }, + }) + : Response.json({ + tools: [ + { + name: "archiveConversation", + description: "Archive this conversation", + input_schema: { type: "object", additionalProperties: false }, + output_schema: { type: "object" }, + read_only: false, + }, + ], + context: { + agent_inbox_instance_id: "agent-bound", + target_inbox_instance_id: "target-bound", + trigger_message_id: "trigger-bound", + }, + }), + ); + const endpoint = testChatKitEndpoint({ + webhookSigningKey: key, + responseMode: "tool", + client: { fetch: fetcher }, + handler: async (_request, context) => { + expect(context.session.tools).toHaveProperty("archiveConversation"); + expect(context.session.tools).not.toHaveProperty("sendMessage"); + expect(context.$provider?.tools).toBe(context.session.tools); + const action = context.session.tools?.archiveConversation; + if (!action?.execute) throw new Error("Custom tool missing"); + expect( + await action.execute({}, { toolCallId: "stable-call", messages: [], context: undefined }), + ).toEqual({ + archived: true, + }); + return new Response("ok"); + }, + }); + const response = await endpoint( + signedRequest({ messages: [] }, Math.floor(Date.now() / 1000), { + "x-tilde-org-id": "org-123", + "x-tilde-team-id": "team_123", + "x-tilde-session-id": "session_1", + "x-tilde-agent-instance-id": "agent_instance", + "x-tilde-target-instance-id": "target_instance", + "x-tilde-trigger-message-id": "trigger_1", + "x-tilde-chat-provider-id": "chatkit.channel.custom", + }), + ); + expect(response.status).toBe(200); + expect(JSON.parse(fetcher.mock.calls[1]?.[1]?.body as string)).toEqual({ + agent_inbox_instance_id: "agent-bound", + target_inbox_instance_id: "target-bound", + trigger_message_id: "trigger-bound", + tool_call_id: "stable-call", + input: {}, + }); + }); + it("adds the configured request timeout to the forwarded signal", async () => { const handler = vi.fn(async (request: Request) => { await new Promise((resolve) => { diff --git a/packages/sdk/README.md b/packages/sdk/README.md index 467929e4..81f36f2f 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -62,6 +62,25 @@ pnpm add @trytilde/sdk - `@trytilde/sdk/api` exposes the generated API client when a stable wrapper does not yet exist. - `@trytilde/sdk/json` exposes the shared JSON types, guards, accessors, and parser. +## Customer-hosted ChatKit providers + +The `@trytilde/sdk/chatkit-provider` subpath exports: + +- `defineChatKitProvider(definition)` validates configuration, capabilities, and session-tool declarations. +- `chatKitProviderEndpoint(options)` creates signed Fetch discovery and invocation handlers without an AI framework dependency. +- `createProviderRuntimeClient(options)` binds ingestion, conversation creation, participant/identity operations, history, and attachment workflows to one connection token. +- `ChatKitProviderDefinition`, `ProviderContext`, `ProviderSessionTool`, `ProviderSetupResult`, `ProviderDeliveryOptions`, and `ProviderReconciliation` describe the authoring contract. Trusted routing and execution context stays separate from model inputs. + +`client.chatkit.customProviders` manages definitions, setup, connections, credential +rotation, and failed-work inspection/retry. `client.chatkit.sessionTools({ sessionId })` +returns currently authorized tools bound to the active turn. Keep each tool-call ID +stable when retrying. `client.chatkit.submitTurn` and `streamSessionEvents` support +custom client protocols using the caller's existing authorization and event cursors. + +See [the Linq, AgentMail, and streaming examples](examples/custom-chatkit/README.md). +Deploy the companion API before releasing this SDK. Runtime connection credentials +cannot impersonate Tilde users, and private delivery options must not enter shared logs. + ## JSON values `@trytilde/sdk/json` owns the SDK's shared JSON types, object guards, string-field accessors, and diff --git a/packages/sdk/examples/custom-chatkit/README.md b/packages/sdk/examples/custom-chatkit/README.md new file mode 100644 index 00000000..f6b9c5c5 --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/README.md @@ -0,0 +1,86 @@ +# Customer-hosted ChatKit providers + +These Linq and AgentMail adapters use only the public +`@trytilde/sdk/chatkit-provider` contract. The agent endpoint and the +provider endpoint are separate services: Tilde executes the agent and owns the +conversation; this backend translates platform operations. + +## Run an adapter + +Use Node.js 24 and install this workspace with `pnpm install`. + +1. Register a definition in **ChatKit → Configure providers**, using your public + `https://your-host/provider` discovery URL. Registration returns a definition + ID and a signing key once; discovery can remain pending while you deploy. +2. Set `CHATKIT_PROVIDER` to `linq` or `agentmail`, `TILDE_PROVIDER_ID`, + `TILDE_PROVIDER_SIGNING_KEY`, `PROVIDER_PUBLIC_URL`, and `TILDE_API_URL`. +3. Set `PROVIDER_STORE_PATH` to a durable local file and `PROVIDER_STORE_KEY` to + a base64-encoded 32-byte key. Generate a key with + `node -e 'console.log(require("node:crypto").randomBytes(32).toString("base64"))'`. + Keep it in your host's secret manager. Losing it makes stored credentials and + receipts unreadable. +4. Run `pnpm exec tsx --conditions=development packages/sdk/examples/custom-chatkit/server.ts`. The example listens on + `127.0.0.1:8787`; use your HTTPS reverse proxy or a public Dev Tunnel. Set `PORT` + to change the local port. +5. Refresh discovery, then create a connection with a default agent. Configure + the account credentials in the generic setup flow. Each connection receives + a separate runtime credential; it cannot access other connections or act as + a Tilde user. + +Linq setup creates a webhook subscription and filters selected phone lines. +If a create response is lost, retry removes only subscriptions matching this +connection's exact webhook URL and recreates the subscription to obtain a fresh +one-time signing secret. +AgentMail setup asks you to create an inbox webhook and supply its signing +secret; remove that manually created webhook when disconnecting. Each platform +posts directly to `/webhooks/`. The adapter verifies the raw body +before calling the scoped ingestion client. + +The example store uses encrypted SQLite for customer-backend state, event drafts, +and action receipts. Tilde's canonical storage remains Postgres. Run one process +per database file, keep its directory and encryption key private, back up both, +and implement retention for old event drafts in a production host. + +## Session tools and delivery + +The Linq adapter declares reactions, thread reads, and poll creation/options/votes. +AgentMail declares thread reads and prepares rich email sends with To/CC/BCC, +subject, HTML, and reply-all. Tilde owns `sendMessage`; providers cannot shadow it. +Agents discover the current turn's tools with `client.chatkit.sessionTools()` or +`context.session.tools` from the Vercel AI integration. + +Handlers receive trusted connection/session coordinates separately from model +arguments. Use `context.session.executionId` for mutation IDs and +`input.deliveryId` for sends. Reconciliation must return `applied`, `absent`, or +`uncertain`; never return `absent` merely because a local receipt is missing. +The reference adapters use deterministic mutation IDs. AgentMail persists the +original send request, looks up delivery labels across pages, and stops uncertain +resends before its 24-hour platform key window expires. +Reaction reconciliation reads the platform's current message state. + +Private delivery options are encrypted with Tilde's durable delivery intent. +Do not copy BCC or raw platform objects into tool results or inbound metadata. +The email adapter strips BCC from thread reads and inbound metadata. Attachment +content uses the scoped upload API; allowlisted platform downloads are bounded +and redirects are checked. + +`streaming-chat.ts` demonstrates a custom client protocol using the caller's +own authenticated SDK client. It submits canonical turns and relays resumable, +audience-filtered session events. Supply a real caller authentication function; +do not substitute the provider runtime token or a shared administrator key. + +## Validate without platform accounts + +```sh +pnpm exec tsc -p packages/sdk/examples/custom-chatkit/tsconfig.json --noEmit +pnpm exec vitest run packages/sdk/test/chatkit-provider.test.ts packages/sdk/test/chatkit-provider-parity.test.ts packages/sdk/test/chatkit-session-stream.test.ts +``` + +Tests use mock platform APIs and cover signed operations, replay recovery, +rich email privacy, attachment workflows, and stream reconnection. Live platform +validation is a separate opt-in deployment check. + +To start a new email from an existing authorized session turn, pass +`provider_options: { new_thread: true }` to canonical `sendMessage` and supply +`to` recipients. Omitting it replies to the exact triggering email. This option +is interpreted by the email adapter and persisted in the private delivery intent. diff --git a/packages/sdk/examples/custom-chatkit/agentmail.ts b/packages/sdk/examples/custom-chatkit/agentmail.ts new file mode 100644 index 00000000..ce92a271 --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/agentmail.ts @@ -0,0 +1,458 @@ +import { + defineChatKitProvider, + type ProviderContext, + type ProviderDelivery, + type ProviderDeliveryOptions, + type ProviderObject, + type ProviderSetupResult, +} from "@trytilde/sdk/chatkit-provider"; +import { + attachmentContent, + form, + object, + type ProviderHost, + platform, + publicMail, + runtime, + stored, + string, + verifyPlatformWebhook, +} from "./shared"; + +/** Complete AgentMail transport using only the public provider SDK contract. */ +export function agentMailProvider( + host: ProviderHost & { platformBaseUrl?: string }, +) { + const fetcher = host.fetch ?? fetch; + const origin = host.platformBaseUrl ?? "https://api.agentmail.to/v0"; + const path = (context: ProviderContext) => + `/inboxes/${encodeURIComponent(string(context.configuration.inbox_id))}`; + const token = (context: ProviderContext) => string(context.secrets.api_key); + async function configure( + input: ProviderObject, + context: ProviderContext, + ): Promise { + const values = form(input); + if ( + typeof values.api_key !== "string" && + typeof context.secrets.api_key === "string" + ) + values.api_key = context.secrets.api_key; + if ( + typeof values.webhook_secret !== "string" && + typeof context.secrets.webhook_secret === "string" + ) + values.webhook_secret = context.secrets.webhook_secret; + const prior = input.continuation ? object(input.continuation) : {}; + const inboxId = string( + values.inbox_id ?? prior.inbox_id ?? context.configuration.inbox_id, + ); + const runtimeToken = + typeof input.runtime_token === "string" + ? input.runtime_token + : host.store.getConnection(context.connectionId).runtimeToken; + if ( + typeof values.api_key !== "string" || + typeof values.webhook_secret !== "string" + ) { + host.store.saveConnection(context.connectionId, { + ...stored(context, runtimeToken), + configuration: { inbox_id: inboxId }, + }); + return { + configuration: { inbox_id: inboxId }, + continuation: { inbox_id: inboxId }, + nextAction: { + type: "render_instructions", + markdown: `Create an AgentMail webhook for message.received events at ${host.webhookBaseUrl}/${encodeURIComponent(context.connectionId)}. Enter its signing secret and the inbox API key.`, + fields: [ + { + name: "api_key", + label: "Inbox API key", + fieldType: "password", + required: true, + }, + { + name: "webhook_secret", + label: "Webhook signing secret", + fieldType: "password", + required: true, + }, + ], + }, + }; + } + await platform( + fetcher, + origin, + values.api_key, + "GET", + `/inboxes/${encodeURIComponent(inboxId)}`, + ); + const configuration = { inbox_id: inboxId }; + const secrets = { + api_key: values.api_key, + webhook_secret: values.webhook_secret, + }; + host.store.saveConnection(context.connectionId, { + ...stored(context, runtimeToken), + configuration, + secrets, + }); + return { + configuration, + secrets, + nextAction: { type: "complete", message: "AgentMail connected" }, + }; + } + async function deliver(input: ProviderDelivery, context: ProviderContext) { + const thread = object(input.providerThread); + const replyTo = + input.externalMessageId ?? + (typeof thread.message_id === "string" ? thread.message_id : undefined); + const newThread = + object(input.options.providerOptions ?? {}).new_thread === true; + const route = + replyTo && !newThread + ? `${path(context)}/messages/${encodeURIComponent(replyTo)}/${input.options.replyAll === false ? "reply" : "reply-all"}` + : `${path(context)}/messages/send`; + // URL-backed attachments are the documented AgentMail attachment format: + // https://www.agentmail.to/docs/attachments + const receiptKey = `delivery:${input.deliveryId}`; + const prior = host.store.getEffect(context.connectionId, receiptKey); + if (prior) return { externalMessageId: string(prior.externalMessageId) }; + const draft = host.store.prepareDelivery( + JSON.stringify([context.connectionId, input.deliveryId]), + route, + { + text: input.body, + to: input.options.to ?? null, + cc: input.options.cc ?? null, + bcc: input.options.bcc ?? null, + subject: input.options.subject ?? null, + html: input.options.html ?? null, + labels: [`tilde-delivery-${input.deliveryId}`], + attachments: input.attachments.map((file) => ({ + url: file.url, + filename: file.filename ?? null, + content_type: file.mediaType, + })), + }, + ); + // AgentMail forgets send keys after 24h. Leave a margin for request duration. + if (Date.now() - draft.startedAt > 23 * 60 * 60 * 1000) + throw new Error( + "Delivery requires reconciliation beyond the idempotency window", + ); + const value = await platform( + fetcher, + origin, + token(context), + "POST", + draft.route, + draft.body, + input.deliveryId, + ); + const result = { externalMessageId: string(value.message_id) }; + host.store.saveEffect(context.connectionId, receiptKey, result); + return result; + } + async function reconcileDelivery( + input: ProviderDelivery, + context: ProviderContext, + ) { + const key = `delivery:${input.deliveryId}`; + const receipt = host.store.getEffect(context.connectionId, key); + if (receipt) + return { + status: "applied" as const, + result: { externalMessageId: string(receipt.externalMessageId) }, + }; + let pageToken: string | undefined; + const seen = new Set(); + for (let page = 0; page < 100; page++) { + const query = new URLSearchParams({ + labels: `tilde-delivery-${input.deliveryId}`, + limit: "100", + }); + if (pageToken) query.set("page_token", pageToken); + const listing = await platform( + fetcher, + origin, + token(context), + "GET", + `${path(context)}/messages?${query}`, + ); + if (!Array.isArray(listing.messages)) + return { + status: "uncertain" as const, + reason: "Invalid delivery reconciliation response", + }; + for (const entry of listing.messages) { + const message = object(entry); + if ( + !Array.isArray(message.labels) || + !message.labels.includes(`tilde-delivery-${input.deliveryId}`) + ) + continue; + const result = { externalMessageId: string(message.message_id) }; + host.store.saveEffect(context.connectionId, key, result); + return { status: "applied" as const, result }; + } + if ( + typeof listing.next_page_token !== "string" || + !listing.next_page_token + ) { + const draft = host.store.getDelivery( + JSON.stringify([context.connectionId, input.deliveryId]), + ); + if (draft && Date.now() - draft.startedAt > 23 * 60 * 60 * 1000) + return { + status: "uncertain" as const, + reason: "Platform idempotency window expired", + }; + return { + status: "applied" as const, + result: await deliver(input, context), + }; + } + if (seen.has(listing.next_page_token)) break; + seen.add(listing.next_page_token); + pageToken = listing.next_page_token; + } + return { + status: "uncertain" as const, + reason: "Delivery marker pagination did not complete", + }; + } + + const definition = defineChatKitProvider({ + version: "1", + displayName: "AgentMail (TypeScript)", + description: "Email conversations with rich replies and session tools", + configurationSchema: { + type: "object", + properties: { inbox_id: { type: "string" } }, + required: ["inbox_id"], + additionalProperties: false, + }, + fields: [ + { + name: "inbox_id", + label: "AgentMail inbox", + fieldType: "text" as const, + required: true, + }, + ], + capabilities: { + inbound: true, + delivery: true, + identity: true, + html: true, + attachments: true, + }, + subscriptions: ["message.received"], + setup: { + start: configure, + resume: configure, + credentialsUpdated: async ( + input: { runtimeToken: string }, + context: ProviderContext, + ) => { + host.store.saveConnection(context.connectionId, { + ...host.store.getConnection(context.connectionId), + runtimeToken: input.runtimeToken, + }); + }, + disconnect: async (context: ProviderContext) => { + host.store.deleteConnection(context.connectionId); + }, + }, + identity: { + register: async (_input: ProviderObject, context: ProviderContext) => ({ + kind: "email" as const, + externalId: string(context.configuration.inbox_id), + displayName: "Agent", + }), + normalizeMentions: async (input: ProviderObject) => + (Array.isArray(input.tags) ? input.tags : []) + .filter( + (tag): tag is string => + typeof tag === "string" && tag.includes("@"), + ) + .map((tag) => ({ + kind: "email" as const, + externalId: tag.trim().toLowerCase(), + displayName: tag, + })), + }, + messaging: { + prepareSend: async ( + input: ProviderObject, + ): Promise => { + const providerOptions = object(input.provider_options ?? {}); + if ( + providerOptions.new_thread === true && + (!Array.isArray(input.to) || input.to.length === 0) + ) + throw new Error("A new email requires To recipients"); + return { + providerOptions, + visibleRecipients: [ + ...(Array.isArray(input.to) ? input.to : []), + ...(Array.isArray(input.cc) ? input.cc : []), + ].map((value) => ({ + kind: "email", + externalId: emailAddress(string(value)), + displayName: string(value), + })), + ...(Array.isArray(input.to) ? { to: input.to.map(string) } : {}), + ...(Array.isArray(input.cc) ? { cc: input.cc.map(string) } : {}), + ...(Array.isArray(input.bcc) ? { bcc: input.bcc.map(string) } : {}), + ...(typeof input.subject === "string" + ? { subject: input.subject } + : {}), + ...(typeof input.html === "string" ? { html: input.html } : {}), + replyAll: input.reply_all === true, + }; + }, + deliver, + reconcile: reconcileDelivery, + }, + sessionTools: [ + { + name: "getThread", + description: "Read this email thread", + readOnly: true, + inputSchema: { type: "object", additionalProperties: false }, + outputSchema: { type: "object" }, + execute: async (_input: ProviderObject, context: ProviderContext) => + publicMail( + await platform( + fetcher, + origin, + token(context), + "GET", + `${path(context)}/threads/${encodeURIComponent(string(object(context.session?.providerThread).thread_id))}`, + ), + ), + }, + ], + }); + async function webhook( + connectionId: string, + request: Request, + ): Promise { + const state = host.store.getConnection(connectionId); + const event = await verifyPlatformWebhook( + request, + string(state.secrets.webhook_secret), + "svix", + ); + if ( + typeof event.event_type !== "string" || + !event.event_type.startsWith("message.received") + ) + return new Response(null, { status: 204 }); + const message = object(event.message); + if (message.inbox_id !== state.configuration.inbox_id) + throw new Error("Webhook inbox does not match connection"); + const eventId = string(event.event_id); + const client = runtime(host, connectionId, state); + let draft = host.store.getEvent(connectionId, eventId); + if (!draft) { + const threadId = string(message.thread_id); + const providerThread = { + inbox_id: string(message.inbox_id), + thread_id: threadId, + message_id: string(message.message_id), + }; + const session = await client.ensureConversation({ + conversationKey: threadId, + title: typeof message.subject === "string" ? message.subject : "Email", + providerThread, + }); + const hidden = new Set( + (Array.isArray(message.bcc) ? message.bcc : []).map((value) => + emailAddress(string(value)), + ), + ); + const visible = [ + ...(Array.isArray(message.to) ? message.to : []), + ...(Array.isArray(message.cc) ? message.cc : []), + ]; + for (const value of visible) { + const address = emailAddress(string(value)); + if ( + hidden.has(address) || + address === emailAddress(string(state.configuration.inbox_id)) + ) + continue; + await client.upsertParticipant({ + sessionId: session.sessionId, + identity: { + kind: "email", + externalId: address, + displayName: address, + }, + }); + } + const attachmentIds: string[] = []; + for (const attachment of Array.isArray(message.attachments) + ? message.attachments + : []) { + const file = object(attachment); + const download = await platform( + fetcher, + origin, + string(state.secrets.api_key), + "GET", + `/inboxes/${encodeURIComponent(string(message.inbox_id))}/messages/${encodeURIComponent(string(message.message_id))}/attachments/${encodeURIComponent(string(file.attachment_id))}`, + ); + const content = await attachmentContent( + host, + string(download.download_url), + ); + const upload = await client.uploadAttachment({ + sessionId: session.sessionId, + content: content.content, + mediaType: + typeof file.content_type === "string" + ? file.content_type + : "application/octet-stream", + ...(typeof file.filename === "string" + ? { filename: file.filename } + : {}), + }); + attachmentIds.push(upload.attachmentId); + } + const sender = emailAddress(string(message.from)); + draft = host.store.saveEvent(connectionId, { + eventId, + conversationKey: threadId, + externalMessageId: string(message.message_id), + sender: { + externalId: sender.toLowerCase(), + displayName: sender, + kind: "email", + }, + text: + typeof message.extracted_text === "string" + ? message.extracted_text + : typeof message.text === "string" + ? message.text + : "", + attachmentIds, + providerThread, + providerMetadata: publicMail(message), + }); + } + await client.ingest(draft); + return new Response(null, { status: 202 }); + } + return { definition, webhook }; +} + +function emailAddress(value: string): string { + return (value.match(/<([^>]+)>/)?.[1] ?? value).trim().toLowerCase(); +} diff --git a/packages/sdk/examples/custom-chatkit/linq.ts b/packages/sdk/examples/custom-chatkit/linq.ts new file mode 100644 index 00000000..cbc929e3 --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/linq.ts @@ -0,0 +1,579 @@ +import { + defineChatKitProvider, + type ProviderContext, + type ProviderDelivery, + type ProviderObject, + type ProviderSessionTool, + type ProviderSetupResult, +} from "@trytilde/sdk/chatkit-provider"; +import { + attachmentContent, + form, + object, + type ProviderHost, + platform, + runtime, + stored, + string, + verifyPlatformWebhook, +} from "./shared"; + +/** Linq account/line-pool transport, including session-scoped reactions and polls. */ +export function linqProvider( + host: ProviderHost & { platformBaseUrl?: string }, +) { + const fetcher = host.fetch ?? fetch; + const origin = + host.platformBaseUrl ?? "https://api.linqapp.com/api/partner/v3"; + const token = (context: ProviderContext) => string(context.secrets.api_token); + async function configure( + input: ProviderObject, + context: ProviderContext, + ): Promise { + const values = form(input); + const prior = host.store.findConnection(context.connectionId); + const apiToken = string( + values.api_token ?? context.secrets.api_token ?? prior?.secrets.api_token, + ); + values.phone_numbers ??= + context.configuration.phone_numbers ?? + prior?.configuration.phone_numbers ?? + []; + const phoneNumbers = Array.isArray(values.phone_numbers) + ? values.phone_numbers.map(string) + : typeof values.phone_numbers === "string" + ? values.phone_numbers + .split(",") + .map((s) => s.trim()) + .filter(Boolean) + : []; + const runtimeToken = + typeof input.runtime_token === "string" + ? input.runtime_token + : host.store.getConnection(context.connectionId).runtimeToken; + const targetUrl = `${host.webhookBaseUrl}/${encodeURIComponent(context.connectionId)}`; + // Reuse a stored subscription during setup retry; subscription IDs remain connection-owned. + let subscriptionId = prior?.configuration.subscription_id; + let signingSecret = prior?.secrets.webhook_secret; + if ( + typeof subscriptionId !== "string" || + typeof signingSecret !== "string" + ) { + // A lost create response also loses Linq's one-time signing secret. Recover + // by deleting only subscriptions owned by this connection's exact URL. + if (prior) await removeOwnedSubscriptions(apiToken, targetUrl); + host.store.saveConnection(context.connectionId, { + ...stored(context, runtimeToken), + configuration: { phone_numbers: phoneNumbers }, + secrets: { api_token: apiToken }, + }); + const subscription = await platform( + fetcher, + origin, + apiToken, + "POST", + "/webhook-subscriptions", + { + target_url: targetUrl, + subscribed_events: ["message.received"], + ...(phoneNumbers.length ? { phone_numbers: phoneNumbers } : {}), + }, + ); + subscriptionId = string(subscription.id); + signingSecret = string(subscription.signing_secret); + } else { + await platform( + fetcher, + origin, + apiToken, + "PUT", + `/webhook-subscriptions/${encodeURIComponent(subscriptionId)}`, + { + target_url: targetUrl, + phone_numbers: phoneNumbers, + subscribed_events: ["message.received"], + is_active: true, + }, + ); + } + const configuration = { + phone_numbers: phoneNumbers, + subscription_id: subscriptionId, + }; + const secrets = { api_token: apiToken, webhook_secret: signingSecret }; + host.store.saveConnection(context.connectionId, { + ...stored(context, runtimeToken), + configuration, + secrets, + }); + return { + configuration, + secrets, + nextAction: { type: "complete", message: "Linq connected" }, + }; + } + async function removeOwnedSubscriptions( + apiToken: string, + targetUrl: string, + ): Promise { + const result = await platform( + fetcher, + origin, + apiToken, + "GET", + "/webhook-subscriptions", + ); + if (!Array.isArray(result.subscriptions)) + throw new Error("Cannot reconcile webhook subscriptions"); + for (const entry of result.subscriptions) { + const subscription = object(entry); + if (subscription.target_url === targetUrl) + await platform( + fetcher, + origin, + apiToken, + "DELETE", + `/webhook-subscriptions/${encodeURIComponent(string(subscription.id))}`, + ); + } + } + const reaction = (value: unknown) => + ({ + heart: "love", + thumbsup: "like", + thumbsdown: "dislike", + "!!": "emphasize", + "?": "question", + "👍": "like", + "❤️": "love", + "❤": "love", + "😂": "laugh", + "👎": "dislike", + "‼️": "emphasize", + "❓": "question", + })[string(value)] ?? string(value); + const specs = [ + ["addReaction", { emoji: { type: "string" } }, ["emoji"]], + ["removeReaction", { emoji: { type: "string" } }, ["emoji"]], + ["getThread", {limit:{type:"integer",minimum:1,maximum:100},order:{type:"string",enum:["asc","desc"]}}, []], + [ + "createPoll", + { + options: { + type: "array", + items: { + oneOf: [ + { type: "string" }, + { + type: "object", + properties: { text: { type: "string" } }, + required: ["text"], + additionalProperties: false, + }, + ], + }, + minItems: 2, + }, + }, + ["options"], + ], + [ + "addPollOptions", + { + options: { + type: "array", + items: { + oneOf: [ + { type: "string" }, + { + type: "object", + properties: { text: { type: "string" } }, + required: ["text"], + additionalProperties: false, + }, + ], + }, + minItems: 1, + }, + }, + ["options"], + ], + [ + "votePoll", + { + option_id: { type: "string" }, + operation: { type: "string", enum: ["add", "remove"] }, + }, + ["option_id", "operation"], + ], + ] as const; + const sessionTools: ProviderSessionTool[] = specs.map( + ([name, properties, required]) => { + async function execute( + input: ProviderObject, + context: ProviderContext, + ): Promise { + const session = context.session; + if (!session) throw new Error("Session context is required"); + const prior = host.store.getEffect( + context.connectionId, + session.executionId, + ); + if (name !== "getThread" && prior) return prior; + const chatId = encodeURIComponent( + string(object(session.providerThread).chat_id), + ); + const messageId = encodeURIComponent(session.externalMessageId); + let method = "POST"; + let path: string; + let body: ProviderObject | undefined; + switch (name) { + case "getThread": + method = "GET"; + const query=new URLSearchParams(); + if (typeof input.limit==="number") query.set("limit",String(input.limit)); + if (typeof input.order==="string") query.set("order",input.order); + path = `/chats/${chatId}/messages${query.size?`?${query}`:""}`; + break; + case "addReaction": + case "removeReaction": + path = `/messages/${messageId}/reactions`; + body = { + operation: name === "addReaction" ? "add" : "remove", + type: reaction(input.emoji), + }; + break; + case "createPoll": + path = `/chats/${chatId}/polls`; + body = { + poll: { + options: (input.options as unknown[]).map((value) => + typeof value === "string" ? { text: value } : object(value), + ), + idempotency_key: session.executionId, + }, + }; + break; + case "addPollOptions": + path = `/messages/${messageId}/poll/options`; + body = { + options: (input.options as unknown[]).map((value) => + typeof value === "string" ? { text: value } : object(value), + ), + idempotency_key: session.executionId, + }; + break; + case "votePoll": + path = `/messages/${messageId}/poll/votes`; + body = { + option_id: string(input.option_id), + operation: string(input.operation), + idempotency_key: session.executionId, + }; + break; + } + const result = await platform( + fetcher, + origin, + token(context), + method, + path, + body, + name === "getThread" ? undefined : session.executionId, + ); + if (name !== "getThread") + host.store.saveEffect( + context.connectionId, + session.executionId, + result, + ); + return result; + } + return { + name, + description: `${name} in the current Linq conversation`, + readOnly: name === "getThread", + inputSchema: { + type: "object", + properties: properties as ProviderObject, + required: [...required], + additionalProperties: false, + }, + outputSchema: { type: "object" }, + execute, + reconcile: async (input, context) => { + const id = string(context.session?.executionId); + const receipt = host.store.getEffect(context.connectionId, id); + if (receipt) return { status: "applied", result: receipt }; + if ( + name === "createPoll" || + name === "addPollOptions" || + name === "votePoll" + ) + return { status: "applied", result: await execute(input, context) }; + if (name === "addReaction" || name === "removeReaction") { + // Linq documents is_me and per-part reactions; absent data is not proof of absence. + // https://docs.linqapp.com/channel/imessage/api/resources/messages/methods/retrieve/ + const message = await platform( + fetcher, + origin, + token(context), + "GET", + `/messages/${encodeURIComponent(string(context.session?.externalMessageId))}`, + ); + const firstPart = + Array.isArray(message.parts) && message.parts[0] + ? object(message.parts[0]) + : undefined; + const reactions = firstPart?.reactions ?? message.reactions; + if (!Array.isArray(reactions)) + return { + status: "uncertain", + reason: "Platform omitted reaction state", + }; + const present = reactions.some((value) => { + const item = object(value); + return item.is_me === true && item.type === reaction(input.emoji); + }); + if ( + (name === "addReaction" && present) || + (name === "removeReaction" && !present) + ) { + const result = { reconciled: true }; + host.store.saveEffect(context.connectionId, id, result); + return { status: "applied", result }; + } + return { status: "absent" }; + } + return { + status: "uncertain", + reason: "Platform outcome is not established", + }; + }, + }; + }, + ); + async function deliver(input: ProviderDelivery, context: ProviderContext) { + const chatId = encodeURIComponent( + string(object(input.providerThread).chat_id), + ); + const result = await platform( + fetcher, + origin, + token(context), + "POST", + `/chats/${chatId}/messages`, + { + message: { + parts: [ + { type: "text", value: input.body }, + ...input.attachments.map((file) => ({ + type: "media", + url: file.url, + })), + ], + }, + }, + input.deliveryId, + ); + return { externalMessageId: string(object(result.message).id) }; + } + const definition = defineChatKitProvider({ + version: "1", + displayName: "Linq (TypeScript)", + description: + "iMessage, RCS and SMS with session-scoped reactions and polls", + configurationSchema: { + type: "object", + properties: { + phone_numbers: { type: "array", items: { type: "string" } }, + subscription_id: { type: "string" }, + }, + required: ["subscription_id"], + additionalProperties: false, + }, + authMethods: [ + { + id: "api_token", + displayName: "Linq API token", + description: "Use a token for an account or selected phone-line pool", + fields: [ + { + name: "api_token", + label: "API token", + fieldType: "password" as const, + required: true, + }, + { + name: "phone_numbers", + label: "Phone-line filters", + fieldType: "text" as const, + }, + ], + }, + ], + capabilities: { + inbound: true, + delivery: true, + attachments: true, + identity: true, + maxLength: 1600, + }, + subscriptions: ["message.received"], + setup: { + start: configure, + resume: configure, + credentialsUpdated: async ( + input: { runtimeToken: string }, + context: ProviderContext, + ) => { + host.store.saveConnection(context.connectionId, { + ...host.store.getConnection(context.connectionId), + runtimeToken: input.runtimeToken, + }); + }, + disconnect: async (context: ProviderContext) => { + const prior = host.store.findConnection(context.connectionId); + if (!prior) return; + const apiToken = string( + context.secrets.api_token ?? prior.secrets.api_token, + ); + const subscription = + context.configuration.subscription_id ?? + prior.configuration.subscription_id; + if (typeof subscription === "string") + await platform( + fetcher, + origin, + apiToken, + "DELETE", + `/webhook-subscriptions/${encodeURIComponent(subscription)}`, + ); + else + await removeOwnedSubscriptions( + apiToken, + `${host.webhookBaseUrl}/${encodeURIComponent(context.connectionId)}`, + ); + host.store.deleteConnection(context.connectionId); + }, + }, + identity: { + register: async (_input: ProviderObject, context: ProviderContext) => { + const lines = Array.isArray(context.configuration.phone_numbers) + ? context.configuration.phone_numbers + : []; + let handle = lines[0]; + if (!handle) { + const response = await platform( + fetcher, + origin, + token(context), + "GET", + "/phone-numbers", + ); + const numbers = response.phone_numbers; + if (!Array.isArray(numbers) || numbers.length !== 1) + throw new Error( + "Select a phone line when registering an agent address for a pool", + ); + handle = object(numbers[0]).phone_number; + } + const account = { handle }; + return { + kind: "mobile_number" as const, + externalId: string(account.handle), + displayName: "Agent", + }; + }, + normalizeMentions: async (input: ProviderObject) => + (Array.isArray(input.tags) ? input.tags : []) + .filter( + (tag): tag is string => + typeof tag === "string" && /^\+[1-9]\d{6,14}$/.test(tag), + ) + .map((tag) => ({ + kind: "mobile_number" as const, + externalId: tag, + displayName: tag, + })), + }, + messaging: { + prepareSend: async () => ({}), + deliver, + reconcile: async (input: ProviderDelivery, context: ProviderContext) => ({ + status: "applied" as const, + result: await deliver(input, context), + }), + }, + sessionTools, + }); + async function webhook( + connectionId: string, + request: Request, + ): Promise { + const state = host.store.getConnection(connectionId); + const event = await verifyPlatformWebhook( + request, + string(state.secrets.webhook_secret), + "webhook", + ); + if (event.event_type !== "message.received") + return new Response(null, { status: 204 }); + const data = object(event.data); + const chat = object(data.chat); + const owner = object(chat.owner_handle); + const sender = object(data.sender_handle); + const filters = Array.isArray(state.configuration.phone_numbers) + ? state.configuration.phone_numbers + : []; + if (filters.length && !filters.includes(string(owner.handle))) + return new Response(null, { status: 204 }); + const eventId = string(event.event_id); + const client = runtime(host, connectionId, state); + let draft = host.store.getEvent(connectionId, eventId); + if (!draft) { + const chatId = string(chat.id); + const providerThread = { + chat_id: chatId, + owner_handle: string(owner.handle), + }; + const session = await client.ensureConversation({ + conversationKey: chatId, + providerThread, + }); + const texts: string[] = []; + const attachmentIds: string[] = []; + for (const value of Array.isArray(data.parts) ? data.parts : []) { + const part = object(value); + if (part.type === "text" && typeof part.value === "string") + texts.push(part.value); + if (part.type === "media" && typeof part.url === "string") { + const download = await attachmentContent(host, part.url); + const upload = await client.uploadAttachment({ + sessionId: session.sessionId, + content: download.content, + mediaType: download.mediaType, + }); + attachmentIds.push(upload.attachmentId); + } + } + draft = host.store.saveEvent(connectionId, { + eventId, + externalMessageId: string(data.id), + conversationKey: chatId, + sender: { + externalId: string(sender.handle), + displayName: string(sender.handle), + kind: "mobile_number", + }, + text: texts.join("\n"), + attachmentIds, + providerThread, + providerMetadata: data, + }); + } + await client.ingest(draft); + return new Response(null, { status: 202 }); + } + return { definition, webhook }; +} diff --git a/packages/sdk/examples/custom-chatkit/server.ts b/packages/sdk/examples/custom-chatkit/server.ts new file mode 100644 index 00000000..658ae78c --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/server.ts @@ -0,0 +1,89 @@ +import { createServer } from "node:http"; +import { Readable } from "node:stream"; +import { chatKitProviderEndpoint } from "@trytilde/sdk/chatkit-provider"; +import { agentMailProvider } from "./agentmail"; +import { linqProvider } from "./linq"; +import { ProviderStore } from "./store"; + +function required(name: string): string { + const value = process.env[name]; + if (!value) throw new Error(`${name} is required`); + return value; +} +const kind = required("CHATKIT_PROVIDER"); +if (kind !== "linq" && kind !== "agentmail") + throw new Error("CHATKIT_PROVIDER must be linq or agentmail"); +const publicUrl = new URL(required("PROVIDER_PUBLIC_URL")); +const store = new ProviderStore( + required("PROVIDER_STORE_PATH"), + Buffer.from(required("PROVIDER_STORE_KEY"), "base64"), +); +const host = { + store, + apiBaseUrl: required("TILDE_API_URL"), + webhookBaseUrl: new URL("/webhooks", publicUrl).toString(), +}; +const adapter = kind === "linq" ? linqProvider(host) : agentMailProvider(host); +const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: required("TILDE_PROVIDER_ID"), + signingKey: required("TILDE_PROVIDER_SIGNING_KEY"), + endpointUrl: new URL("/provider", publicUrl).toString(), +}); +const server = createServer(async (incoming, outgoing) => { + try { + const url = new URL(incoming.url ?? "/", publicUrl); + const chunks: Buffer[] = []; + let size = 0; + for await (const chunk of incoming) { + size += chunk.length; + if (size > 1024 * 1024) { + outgoing.writeHead(413).end(); + return; + } + chunks.push(Buffer.from(chunk)); + } + const headers = new Headers(); + for (const [name, value] of Object.entries(incoming.headers)) { + if (typeof value === "string") headers.set(name, value); + else if (value) for (const entry of value) headers.append(name, entry); + } + const request = new Request(url, { + method: incoming.method ?? "GET", + headers, + ...(incoming.method === "POST" ? { body: Buffer.concat(chunks) } : {}), + }); + let response: Response; + if (url.pathname === "/provider" && request.method === "GET") + response = await endpoint.GET(request); + else if (url.pathname === "/provider" && request.method === "POST") + response = await endpoint.POST(request); + else if ( + url.pathname.startsWith("/webhooks/") && + request.method === "POST" + ) { + response = await adapter.webhook( + decodeURIComponent(url.pathname.slice("/webhooks/".length)), + request, + ); + } else response = new Response(null, { status: 404 }); + outgoing.writeHead(response.status, Object.fromEntries(response.headers)); + if (response.body) + Readable.fromWeb( + response.body as import("node:stream/web").ReadableStream, + ).pipe(outgoing); + else outgoing.end(); + } catch { + // Callback errors can contain private recipient data or credentials. + outgoing.writeHead(500).end("Provider request failed"); + } +}); +server.requestTimeout = 30_000; +server.listen(Number(process.env.PORT ?? 8787), "127.0.0.1"); +for (const signal of ["SIGINT", "SIGTERM"] as const) + process.once(signal, () => { + server.close(() => { + store.close(); + process.exit(0); + }); + }); diff --git a/packages/sdk/examples/custom-chatkit/shared.ts b/packages/sdk/examples/custom-chatkit/shared.ts new file mode 100644 index 00000000..64e13cc3 --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/shared.ts @@ -0,0 +1,221 @@ +import { createHmac, timingSafeEqual } from "node:crypto"; +import { + createProviderRuntimeClient, + type ProviderContext, + type ProviderJson, + type ProviderObject, +} from "@trytilde/sdk/chatkit-provider"; +import type { ProviderStore, StoredConnection } from "./store"; + +export type ProviderHost = { + store: ProviderStore; + apiBaseUrl: string; + webhookBaseUrl: string; + fetch?: typeof fetch; + mediaOrigins?: string[]; +}; +export function object(value: unknown): ProviderObject { + if (value === null || typeof value !== "object" || Array.isArray(value)) + throw new Error("Expected an object"); + return value as ProviderObject; +} +export function string(value: unknown): string { + if (typeof value !== "string" || !value) + throw new Error("Required string is missing"); + return value; +} +export function form(input: ProviderObject): ProviderObject { + const values = object(input.form_values ?? input.input ?? {}); + return object(values.configFields ?? values); +} +export function runtime( + host: ProviderHost, + connectionId: string, + state: StoredConnection, +) { + return createProviderRuntimeClient({ + baseUrl: host.apiBaseUrl, + orgSubdomain: false, + orgId: state.orgId, + teamId: state.teamId, + connectionId, + token: state.runtimeToken, + ...(host.fetch ? { fetch: host.fetch } : {}), + }); +} +export function stored( + context: ProviderContext, + runtimeToken: string, +): StoredConnection { + return { + orgId: context.orgId, + teamId: context.teamId, + runtimeToken, + configuration: context.configuration, + secrets: context.secrets, + }; +} +export async function platform( + fetcher: typeof fetch, + origin: string, + token: string, + method: string, + path: string, + body?: ProviderJson, + key?: string, +): Promise { + const response = await fetcher(`${origin}${path}`, { + method, + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "application/json", + ...(key ? { "Idempotency-Key": key } : {}), + }, + ...(body === undefined ? {} : { body: JSON.stringify(body) }), + }); + if (method === "DELETE" && response.status === 404) return {}; + if (!response.ok) + throw new Error(`Platform operation failed with HTTP ${response.status}`); + if (response.status === 204) return {}; + return object(await response.json()); +} +/** Standard Webhooks and Svix sign the ID, timestamp, and exact raw body. */ +export async function verifyPlatformWebhook( + request: Request, + secret: string, + family: "webhook" | "svix", +): Promise { + const id = string(request.headers.get(`${family}-id`)); + const timestamp = string(request.headers.get(`${family}-timestamp`)); + if ( + !/^\d+$/.test(timestamp) || + Math.abs(Date.now() / 1000 - Number(timestamp)) > 300 + ) + throw new Error("Webhook timestamp outside tolerance"); + const reader = request.body?.getReader(); + const chunks: Uint8Array[] = []; + let length = 0; + if (reader) { + try { + for (;;) { + const item = await reader.read(); + if (item.done) break; + length += item.value.length; + if (length > 1024 * 1024) { + await reader.cancel(); + throw new Error("Webhook body too large"); + } + chunks.push(item.value); + } + } finally { + reader.releaseLock(); + } + } + const body = Buffer.concat(chunks); + const expected = createHmac( + "sha256", + Buffer.from(secret.replace(/^whsec_/, ""), "base64"), + ) + .update(`${id}.${timestamp}.`) + .update(body) + .digest(); + const verified = (request.headers.get(`${family}-signature`) ?? "") + .split(/\s+/) + .some((candidate) => { + const [version, signature] = candidate.split(","); + if (version !== "v1" || !signature) return false; + const bytes = Buffer.from(signature, "base64"); + return ( + bytes.length === expected.length && timingSafeEqual(bytes, expected) + ); + }); + if (!verified) throw new Error("Invalid platform webhook signature"); + return object(JSON.parse(body.toString("utf8"))); +} +/** Remove hidden email recipients recursively before returning shared tool/history data. */ +export function publicMail(value: ProviderJson): ProviderJson { + if (Array.isArray(value)) + return value + .filter( + (item) => + !( + item && + typeof item === "object" && + !Array.isArray(item) && + typeof item.name === "string" && + item.name.toLowerCase() === "bcc" + ), + ) + .map(publicMail); + if (value && typeof value === "object") + return Object.fromEntries( + Object.entries(value) + .filter(([key]) => key.toLowerCase() !== "bcc") + .map(([key, item]) => [key, publicMail(item)]), + ); + return value; +} + +/** Download only from provider storage origins, checking each redirect and bounding memory. */ +export async function attachmentContent( + host: ProviderHost, + inputUrl: string, +): Promise<{ content: Uint8Array; mediaType: string }> { + let url = new URL(inputUrl); + for (let redirects = 0; redirects <= 3; redirects++) { + const trusted = + url.protocol === "https:" && + (url.hostname === "cdn.linqapp.com" || + url.hostname === "api.agentmail.to" || + /\.s3(?:[.-][a-z0-9-]+)?\.amazonaws\.com$/.test(url.hostname) || + url.hostname.endsWith(".r2.cloudflarestorage.com") || + url.hostname.endsWith(".r2.dev")); + if ( + url.username || + url.password || + (!trusted && !host.mediaOrigins?.includes(url.origin)) + ) + throw new Error("Attachment origin is not allowed"); + const response = await (host.fetch ?? fetch)(url, { redirect: "manual" }); + if ( + response.status >= 300 && + response.status < 400 && + response.headers.has("location") + ) { + await response.body?.cancel(); + url = new URL(response.headers.get("location")!, url); + continue; + } + if (!response.ok || !response.body) + throw new Error("Attachment download failed"); + const reader = response.body.getReader(); + const pieces: Uint8Array[] = []; + let size = 0; + try { + for (;;) { + const { done, value } = await reader.read(); + if (done) break; + size += value.length; + if (size > 32 * 1024 * 1024) { + await reader.cancel(); + throw new Error("Attachment exceeds 32 MiB"); + } + pieces.push(value); + } + } finally { + reader.releaseLock(); + } + const content = new Uint8Array(size); + let offset = 0; + for (const piece of pieces) { + content.set(piece, offset); + offset += piece.length; + } + return { + content, + mediaType: + response.headers.get("content-type") ?? "application/octet-stream", + }; + } + throw new Error("Too many attachment redirects"); +} diff --git a/packages/sdk/examples/custom-chatkit/store.ts b/packages/sdk/examples/custom-chatkit/store.ts new file mode 100644 index 00000000..8a9034e8 --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/store.ts @@ -0,0 +1,163 @@ +import { createCipheriv, createDecipheriv, randomBytes } from "node:crypto"; +import { chmodSync, mkdirSync } from "node:fs"; +import { dirname } from "node:path"; +import { DatabaseSync } from "node:sqlite"; +import type { + ProviderInboundMessage, + ProviderObject, +} from "@trytilde/sdk/chatkit-provider"; + +export type StoredConnection = { + orgId: string; + teamId: string; + runtimeToken: string; + configuration: ProviderObject; + secrets: ProviderObject; +}; + +/** Durable connection state and ingress drafts, encrypted using the host's key. */ +export class ProviderStore { + private readonly db: DatabaseSync; + constructor( + filename: string, + private readonly encryptionKey: Uint8Array, + ) { + if (encryptionKey.byteLength !== 32) + throw new Error("Provider store requires a 32-byte encryption key"); + if (filename !== ":memory:") + mkdirSync(dirname(filename), { recursive: true, mode: 0o700 }); + this.db = new DatabaseSync(filename); + if (filename !== ":memory:") chmodSync(filename, 0o600); + this.db.exec( + "PRAGMA journal_mode=WAL; PRAGMA busy_timeout=5000; CREATE TABLE IF NOT EXISTS provider_state (kind TEXT NOT NULL, id TEXT NOT NULL, payload TEXT NOT NULL, PRIMARY KEY(kind,id));", + ); + } + private encode(value: unknown): string { + const iv = randomBytes(12); + const cipher = createCipheriv("aes-256-gcm", this.encryptionKey, iv); + const body = Buffer.concat([ + cipher.update(JSON.stringify(value), "utf8"), + cipher.final(), + ]); + return Buffer.concat([iv, cipher.getAuthTag(), body]).toString("base64"); + } + private decode(payload: string): T { + const data = Buffer.from(payload, "base64"); + const decipher = createDecipheriv( + "aes-256-gcm", + this.encryptionKey, + data.subarray(0, 12), + ); + decipher.setAuthTag(data.subarray(12, 28)); + return JSON.parse( + Buffer.concat([ + decipher.update(data.subarray(28)), + decipher.final(), + ]).toString("utf8"), + ) as T; + } + getConnection(id: string): StoredConnection { + const row = this.db + .prepare( + "SELECT payload FROM provider_state WHERE kind='connection' AND id=?", + ) + .get(id); + if (!row) throw new Error("Provider connection not found"); + return this.decode(String(row.payload)); + } + findConnection(id: string): StoredConnection | undefined { + const row = this.db + .prepare( + "SELECT payload FROM provider_state WHERE kind='connection' AND id=?", + ) + .get(id); + return row ? this.decode(String(row.payload)) : undefined; + } + saveConnection(id: string, value: StoredConnection): void { + this.db + .prepare( + "INSERT INTO provider_state(kind,id,payload) VALUES('connection',?,?) ON CONFLICT(kind,id) DO UPDATE SET payload=excluded.payload", + ) + .run(id, this.encode(value)); + } + deleteConnection(id: string): void { + this.db + .prepare("DELETE FROM provider_state WHERE kind='connection' AND id=?") + .run(id); + } + getEvent( + connectionId: string, + eventId: string, + ): ProviderInboundMessage | undefined { + const row = this.db + .prepare("SELECT payload FROM provider_state WHERE kind='event' AND id=?") + .get(JSON.stringify([connectionId, eventId])); + return row + ? this.decode(String(row.payload)) + : undefined; + } + /** A concurrent webhook retry adopts the first durable normalized payload. */ + saveEvent( + connectionId: string, + value: ProviderInboundMessage, + ): ProviderInboundMessage { + const id = JSON.stringify([connectionId, value.eventId]); + this.db + .prepare( + "INSERT INTO provider_state(kind,id,payload) VALUES('event',?,?) ON CONFLICT(kind,id) DO NOTHING", + ) + .run(id, this.encode(value)); + const saved = this.getEvent(connectionId, value.eventId); + if (!saved) throw new Error("Event was not persisted"); + return saved; + } + getEffect( + connectionId: string, + executionId: string, + ): ProviderObject | undefined { + const row = this.db + .prepare( + "SELECT payload FROM provider_state WHERE kind='effect' AND id=?", + ) + .get(JSON.stringify([connectionId, executionId])); + return row ? this.decode(String(row.payload)) : undefined; + } + saveEffect( + connectionId: string, + executionId: string, + value: ProviderObject, + ): void { + this.db + .prepare( + "INSERT INTO provider_state(kind,id,payload) VALUES('effect',?,?) ON CONFLICT(kind,id) DO NOTHING", + ) + .run(JSON.stringify([connectionId, executionId]), this.encode(value)); + } + getDelivery( + id: string, + ): { startedAt: number; route: string; body: ProviderObject } | undefined { + const row = this.db + .prepare( + "SELECT payload FROM provider_state WHERE kind='delivery' AND id=?", + ) + .get(id); + return row ? this.decode(String(row.payload)) : undefined; + } + prepareDelivery( + id: string, + route: string, + body: ProviderObject, + ): { startedAt: number; route: string; body: ProviderObject } { + this.db + .prepare( + "INSERT INTO provider_state(kind,id,payload) VALUES('delivery',?,?) ON CONFLICT(kind,id) DO NOTHING", + ) + .run(id, this.encode({ startedAt: Date.now(), route, body })); + const saved = this.getDelivery(id); + if (!saved) throw new Error("Delivery intent was not persisted"); + return saved; + } + close(): void { + this.db.close(); + } +} diff --git a/packages/sdk/examples/custom-chatkit/streaming-chat.ts b/packages/sdk/examples/custom-chatkit/streaming-chat.ts new file mode 100644 index 00000000..2b086a03 --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/streaming-chat.ts @@ -0,0 +1,104 @@ +import type { Client } from "@trytilde/sdk"; + +/** + * A custom SSE protocol over canonical ChatKit sessions. Authenticate must return + * a client bound to the requesting user, never a shared administrator credential. + * The API rechecks session membership and audience visibility throughout the stream. + */ +export function streamingChatTransport( + authenticate: (request: Request) => Promise, +) { + return async (request: Request): Promise => { + const client = await authenticate(request); + if (request.method === "POST") { + const input = (await request.json()) as { + agentId?: unknown; + sessionId?: unknown; + text?: unknown; + }; + if (typeof input.agentId !== "string" || typeof input.text !== "string") + return Response.json( + { error: "agentId and text are required" }, + { status: 400 }, + ); + return Response.json( + await client.chatkit.submitTurn({ + agentId: input.agentId, + text: input.text, + ...(typeof input.sessionId === "string" + ? { sessionId: input.sessionId } + : {}), + }), + ); + } + if (request.method !== "GET") return new Response(null, { status: 405 }); + const url = new URL(request.url); + const sessionId = url.searchParams.get("sessionId"); + if (!sessionId) + return Response.json({ error: "sessionId is required" }, { status: 400 }); + const after = + request.headers.get("Last-Event-ID") ?? + url.searchParams.get("afterRevision"); + if (after !== null && !/^\d+$/.test(after)) + return Response.json({ error: "Invalid cursor" }, { status: 400 }); + const abort = new AbortController(); + const stop = () => abort.abort(); + request.signal.addEventListener("abort", stop, { once: true }); + if (request.signal.aborted) stop(); + const encoder = new TextEncoder(); + const iterator = client.chatkit.streamSessionEvents({ + sessionId, + ...(after ? { afterRevision: Number(after) } : {}), + signal: abort.signal, + }); + // Fetch the first frame before returning HTTP 200 so authorization errors remain errors. + let first: Awaited>; + try { + first = await iterator.next(); + } catch (error) { + stop(); + request.signal.removeEventListener("abort", stop); + throw error; + } + let pending: typeof first | undefined = first; + const body = new ReadableStream({ + async pull(controller) { + try { + const frame = pending ?? (await iterator.next()); + pending = undefined; + if (frame.done) { + controller.close(); + stop(); + request.signal.removeEventListener("abort", stop); + return; + } + const value = frame.value; + const payload = + value.type === "event" + ? { kind: "conversationEvent", data: value.event } + : { kind: "cursor", revision: value.cursor }; + controller.enqueue( + encoder.encode( + `id: ${value.cursor}\ndata: ${JSON.stringify(payload)}\n\n`, + ), + ); + } catch (error) { + controller.error(error); + stop(); + request.signal.removeEventListener("abort", stop); + } + }, + async cancel() { + stop(); + request.signal.removeEventListener("abort", stop); + await iterator.return(undefined); + }, + }); + return new Response(body, { + headers: { + "Content-Type": "text/event-stream", + "Cache-Control": "no-cache", + }, + }); + }; +} diff --git a/packages/sdk/examples/custom-chatkit/tsconfig.json b/packages/sdk/examples/custom-chatkit/tsconfig.json new file mode 100644 index 00000000..99964206 --- /dev/null +++ b/packages/sdk/examples/custom-chatkit/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../../../tsconfig.node.json", + "compilerOptions": { "noEmit": true }, + "include": ["*.ts"] +} diff --git a/packages/sdk/package.json b/packages/sdk/package.json index eb72a414..3560cf4a 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -37,6 +37,11 @@ "types": "./src/proxy.ts", "development": "./src/proxy.ts", "import": "./dist/proxy.js" + }, + "./chatkit-provider": { + "types": "./src/chatkit-provider/index.ts", + "development": "./src/chatkit-provider/index.ts", + "import": "./dist/chatkit-provider/index.js" } }, "publishConfig": { @@ -56,6 +61,10 @@ "./proxy": { "types": "./dist/proxy.d.ts", "import": "./dist/proxy.js" + }, + "./chatkit-provider": { + "types": "./dist/chatkit-provider/index.d.ts", + "import": "./dist/chatkit-provider/index.js" } }, "access": "public" @@ -71,7 +80,8 @@ }, "dependencies": { "@trytilde/api-client": "workspace:*", - "nice-grpc": "2.1.16" + "nice-grpc": "2.1.16", + "ajv": "8.20.0" }, "devDependencies": { "@types/node": "24.3.0", diff --git a/packages/sdk/src/chatkit-provider/endpoint.ts b/packages/sdk/src/chatkit-provider/endpoint.ts new file mode 100644 index 00000000..52aba706 --- /dev/null +++ b/packages/sdk/src/chatkit-provider/endpoint.ts @@ -0,0 +1,493 @@ +import Ajv from "ajv"; +import type { + ChatKitProviderDefinition, + ProviderContext, + ProviderDelivery, + ProviderDeliveryOptions, + ProviderField, + ProviderObject, + ProviderSetupResult, +} from "./types"; + +const reserved = new Set([ + "sendMessage", + "listAgents", + "delegate", + "waitForResponse", + "listParticipants", +]); +const bound = new Set([ + "orgid", + "teamid", + "definitionid", + "connectionid", + "sessionid", + "agentinboxinstanceid", + "targetinboxinstanceid", + "triggermessageid", + "executionid", + "idempotencykey", +]); +const schemas = new Ajv({ strict: false, allErrors: true }); +const MAX_BODY_BYTES = 1024 * 1024; + +/** Protocol failures contain no request, credential, or provider exception payload. */ +export class ProviderProtocolError extends Error { + constructor( + message: string, + readonly status = 400, + ) { + super(message); + this.name = "ProviderProtocolError"; + } +} + +/** Validate a complete provider implementation before exposing discovery. */ +export function defineChatKitProvider(definition: T): T { + if (!definition.version.trim() || !definition.displayName.trim()) + throw new TypeError("Provider version and displayName are required"); + if (definition.configurationSchema.type !== "object") + throw new TypeError("configurationSchema must describe an object"); + schemas.compile(definition.configurationSchema); + if (definition.capabilities.delivery && !definition.messaging) + throw new TypeError("Delivery requires prepareSend, deliver, and reconcile handlers"); + if (definition.capabilities.identity && !definition.identity) + throw new TypeError("Identity capability requires identity handlers"); + if (definition.capabilities.toolkit && !definition.setup.toolkitConfigured) + throw new TypeError("Associated toolkits require a toolkitConfigured handler"); + const names = new Set(); + for (const tool of definition.sessionTools ?? []) { + if (!/^[A-Za-z0-9_]+$/.test(tool.name) || reserved.has(tool.name) || names.has(tool.name)) + throw new TypeError("Invalid, duplicate, or reserved session tool name"); + names.add(tool.name); + if (tool.inputSchema.type !== "object") + throw new TypeError("Session tool input schema must describe an object"); + for (const field of Object.keys(asObject(tool.inputSchema.properties ?? {}))) { + if (bound.has(field.replaceAll("_", "").toLowerCase())) + throw new TypeError("Tool schema exposes trusted context"); + } + schemas.compile(tool.inputSchema); + schemas.compile(tool.outputSchema); + if (!tool.readOnly && !tool.reconcile) + throw new TypeError(`Mutation ${tool.name} requires reconciliation`); + } + return definition; +} + +export type ChatKitProviderEndpointOptions = { + provider: ChatKitProviderDefinition; + signingKey: string; + /** Fixed registered endpoint; never derive the manifest target from Host headers. */ + endpointUrl: string; + /** Bind invocations to the registration that issued signingKey. */ + definitionId: string; + toleranceSeconds?: number; +}; + +/** Signed discovery and invocation handlers for any Fetch-compatible server. */ +export function chatKitProviderEndpoint(options: ChatKitProviderEndpointOptions): { + GET(request: Request): Promise; + POST(request: Request): Promise; +} { + const definition = defineChatKitProvider(options.provider); + const url = new URL(options.endpointUrl); + if (!["https:", "http:"].includes(url.protocol) || url.username || url.password || url.hash) + throw new TypeError("Invalid endpointUrl"); + if (!options.signingKey || !options.definitionId) + throw new TypeError("signingKey and definitionId are required"); + const tools = new Map((definition.sessionTools ?? []).map((tool) => [tool.name, tool])); + const manifest = { + protocol_version: 1, + version: definition.version, + display_name: definition.displayName, + description: definition.description, + invoke_url: url.toString(), + configuration_schema: definition.configurationSchema, + fields: (definition.fields ?? []).map(wireField), + auth_methods: (definition.authMethods ?? []).map((method) => ({ + id: method.id, + display_name: method.displayName, + description: method.description, + fields: method.fields.map(wireField), + })), + subscriptions: definition.subscriptions ?? [], + capabilities: { + toolkit: definition.capabilities.toolkit ?? false, + inbound: definition.capabilities.inbound ?? false, + delivery: definition.capabilities.delivery ?? false, + identity: definition.capabilities.identity ?? false, + streaming: definition.capabilities.streaming ?? false, + markdown: definition.capabilities.markdown ?? false, + html: definition.capabilities.html ?? false, + attachments: definition.capabilities.attachments ?? false, + max_length: definition.capabilities.maxLength ?? null, + }, + session_tools: [...tools.values()].map((tool) => ({ + name: tool.name, + description: tool.description, + input_schema: tool.inputSchema, + output_schema: tool.outputSchema, + read_only: tool.readOnly ?? false, + })), + }; + async function handle(request: Request, discovery: boolean): Promise { + try { + if (request.method !== (discovery ? "GET" : "POST")) + throw new ProviderProtocolError("Method not allowed", 405); + const body = await verify(request, options); + if (discovery) return Response.json(manifest); + let decoded: unknown; + try { + decoded = JSON.parse(new TextDecoder().decode(body)); + } catch { + throw new ProviderProtocolError("Invalid JSON"); + } + const envelope = asObject(decoded); + if (envelope.protocol_version !== 1 || envelope.manifest_version !== definition.version) + throw new ProviderProtocolError("Unsupported provider version", 409); + const scope = asObject(envelope.scope); + if (scope.definition_id !== options.definitionId) + throw new ProviderProtocolError("Incorrect provider registration", 403); + const context = decodeContext(envelope, request.signal); + const input = asObject(envelope.input ?? {}); + let result: unknown; + switch (envelope.operation) { + case "setup_start": + result = wireSetup(await definition.setup.start(input, context)); + break; + case "setup_resume": + result = wireSetup(await definition.setup.resume(input, context)); + break; + case "disconnect": + await definition.setup.disconnect(context); + result = {}; + break; + case "toolkit_configured": + if (!definition.setup.toolkitConfigured) + throw new ProviderProtocolError("Associated toolkit handler is unavailable", 422); + await definition.setup.toolkitConfigured( + { + toolGroupInstanceId: text(input.tool_group_instance_id), + signingKey: text(input.signing_key), + }, + context, + ); + result = { acknowledged: true }; + break; + case "runtime_credentials_updated": + if (!definition.setup.credentialsUpdated) + throw new ProviderProtocolError("Credential notification is unsupported", 422); + await definition.setup.credentialsUpdated( + { runtimeToken: text(input.runtime_token) }, + context, + ); + result = { acknowledged: true }; + break; + case "register_identity": { + if (!definition.identity) throw new ProviderProtocolError("Unsupported capability", 422); + result = wireIdentity(await definition.identity.register(input, context)); + break; + } + case "normalize_mentions": { + if (!definition.identity) throw new ProviderProtocolError("Unsupported capability", 422); + result = (await definition.identity.normalizeMentions(input, context)).map(wireIdentity); + break; + } + case "list_session_tools": { + requireSession(context); + const available: string[] = []; + for (const tool of tools.values()) + if (!tool.available || (await tool.available(context))) available.push(tool.name); + result = { tools: available }; + break; + } + case "invoke_session_tool": + case "reconcile_session_tool": { + requireSession(context); + const tool = tools.get(text(input.name)); + if (!tool || (tool.available && !(await tool.available(context)))) + throw new ProviderProtocolError("Session tool unavailable", 422); + const params = asObject(input.arguments); + for (const key of Object.keys(params)) + if (bound.has(key.replaceAll("_", "").toLowerCase())) + throw new ProviderProtocolError("Tool input contains trusted context"); + if (!schemas.validate(tool.inputSchema, params)) + throw new ProviderProtocolError("Invalid tool input"); + if (envelope.operation === "reconcile_session_tool") { + if (!tool.reconcile) throw new ProviderProtocolError("Reconciliation unavailable", 422); + const outcome = await tool.reconcile(params, context); + if ( + outcome.status === "applied" && + !schemas.validate(tool.outputSchema, outcome.result) + ) + throw new ProviderProtocolError("Invalid reconciled tool output", 502); + result = outcome; + } else { + result = await tool.execute(params, context); + if (!schemas.validate(tool.outputSchema, result)) + throw new ProviderProtocolError("Invalid tool output", 502); + } + break; + } + case "prepare_send": { + requireSession(context); + if (!definition.messaging) throw new ProviderProtocolError("Delivery unavailable", 422); + result = wireDeliveryOptions(await definition.messaging.prepareSend(input, context)); + break; + } + case "deliver": + case "reconcile_delivery": { + if (!definition.messaging) throw new ProviderProtocolError("Delivery unavailable", 422); + const delivery = decodeDelivery(input); + if (envelope.operation === "deliver") { + const outcome = await definition.messaging.deliver(delivery, context); + result = { external_message_id: outcome.externalMessageId ?? null }; + } else { + const outcome = await definition.messaging.reconcile(delivery, context); + result = + outcome.status === "applied" + ? { + status: "applied", + result: { + external_message_id: outcome.result.externalMessageId ?? null, + }, + } + : outcome; + } + break; + } + default: + throw new ProviderProtocolError("Unknown provider operation", 422); + } + return Response.json(result); + } catch (error) { + if (error instanceof ProviderProtocolError) + return Response.json({ error: error.message }, { status: error.status }); + // Provider exceptions often contain platform request headers and recipient data. + return Response.json({ error: "Provider operation failed" }, { status: 500 }); + } + } + return { + GET: (request) => handle(request, true), + POST: (request) => handle(request, false), + }; +} + +async function verify( + request: Request, + options: ChatKitProviderEndpointOptions, +): Promise { + const timestamp = request.headers.get("x-tilde-timestamp") ?? ""; + const signature = request.headers.get("x-tilde-signature") ?? ""; + if (!/^[0-9]+$/.test(timestamp) || !/^hmac-sha256=[0-9a-f]{64}$/.test(signature)) + throw new ProviderProtocolError("Invalid signature", 401); + const seconds = Number(timestamp); + if ( + !Number.isSafeInteger(seconds) || + Math.abs(Date.now() / 1000 - seconds) > (options.toleranceSeconds ?? 300) + ) + throw new ProviderProtocolError("Expired signature", 401); + const reader = request.body?.getReader(); + const chunks: Uint8Array[] = []; + let length = 0; + if (reader) { + try { + for (;;) { + const { done, value } = await reader.read(); + if (done) break; + length += value.length; + if (length > MAX_BODY_BYTES) { + await reader.cancel(); + throw new ProviderProtocolError("Request too large", 413); + } + chunks.push(value); + } + } finally { + reader.releaseLock(); + } + } + const body = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + body.set(chunk, offset); + offset += chunk.length; + } + const prefix = new TextEncoder().encode(`${timestamp}.`); + const signed = new Uint8Array(prefix.length + body.length); + signed.set(prefix); + signed.set(body, prefix.length); + const key = await crypto.subtle.importKey( + "raw", + new TextEncoder().encode(options.signingKey), + { name: "HMAC", hash: "SHA-256" }, + false, + ["verify"], + ); + const digest = Uint8Array.from(signature.slice(12).match(/../g) ?? [], (value) => + Number.parseInt(value, 16), + ); + if (!(await crypto.subtle.verify("HMAC", key, digest, signed))) + throw new ProviderProtocolError("Invalid signature", 401); + return body; +} +function asObject(value: unknown): ProviderObject { + if (value === null || typeof value !== "object" || Array.isArray(value)) + throw new ProviderProtocolError("Expected an object"); + return value as ProviderObject; +} +function text(value: unknown): string { + if (typeof value !== "string" || !value) + throw new ProviderProtocolError("Expected a nonempty string"); + return value; +} +function decodeContext(value: ProviderObject, signal: AbortSignal): ProviderContext { + const scope = asObject(value.scope); + const context: ProviderContext = { + requestId: text(value.request_id), + orgId: text(scope.org_id), + teamId: text(scope.team_id), + definitionId: text(scope.definition_id), + connectionId: text(scope.connection_id), + configuration: asObject(value.configuration ?? {}), + secrets: asObject(value.secrets ?? {}), + signal, + }; + if (value.context) { + const session = asObject(value.context); + context.session = { + participants: (Array.isArray(session.participants) ? session.participants : []).map( + (value) => { + const participant = asObject(value); + return { + instanceId: text(participant.instance_id), + displayName: text(participant.display_name), + externalId: + typeof participant.external_id === "string" ? participant.external_id : null, + isAgent: participant.is_agent === true, + }; + }, + ), + sessionId: text(session.session_id), + agentInboxInstanceId: text(session.agent_inbox_instance_id), + targetInboxInstanceId: text(session.target_inbox_instance_id), + triggerMessageId: text(session.trigger_message_id), + executionId: text(session.execution_id), + conversationKey: text(session.conversation_key), + externalMessageId: text(session.external_message_id), + providerMessage: session.provider_message ?? {}, + providerThread: session.provider_thread ?? {}, + }; + } + return context; +} +function requireSession(context: ProviderContext): void { + if (!context.session) throw new ProviderProtocolError("Session context required", 403); +} +function wireField(field: ProviderField): ProviderObject { + return { + name: field.name, + label: field.label, + field_type: field.fieldType, + required: field.required ?? false, + placeholder: field.placeholder ?? "", + }; +} +function wireIdentity(value: { + externalId: string; + displayName: string; + kind: string; +}): ProviderObject { + return { + external_id: value.externalId, + display_name: value.displayName, + kind: value.kind, + }; +} +function wireSetup(value: ProviderSetupResult): ProviderObject { + let action: ProviderObject; + switch (value.nextAction.type) { + case "submit_form": + action = { + type: "submit_form", + fields: value.nextAction.fields.map(wireField), + submit_label: value.nextAction.submitLabel, + }; + break; + case "render_instructions": + action = { + type: "render_instructions", + markdown: value.nextAction.markdown, + fields: (value.nextAction.fields ?? []).map(wireField), + }; + break; + case "redirect": + action = { type: "redirect", url: value.nextAction.url }; + break; + case "complete": + action = { type: "complete", message: value.nextAction.message ?? null }; + break; + } + return { + toolkit: value.toolkit ? { discovery_url: value.toolkit.discoveryUrl } : null, + next_action: action, + configuration: value.configuration ?? {}, + secrets: value.secrets ?? {}, + continuation: value.continuation ?? null, + }; +} +function wireDeliveryOptions(value: ProviderDeliveryOptions): ProviderObject { + return { + visible_recipients: (value.visibleRecipients ?? []).map(wireIdentity), + to: value.to ?? null, + cc: value.cc ?? null, + bcc: value.bcc ?? null, + subject: value.subject ?? null, + html: value.html ?? null, + reply_all: value.replyAll ?? null, + attachment_ids: value.attachmentIds ?? [], + provider_options: value.providerOptions ?? null, + }; +} +function decodeDelivery(value: ProviderObject): ProviderDelivery { + const options = asObject(value.options ?? {}); + const deliveryOptions: ProviderDeliveryOptions = {}; + for (const key of ["to", "cc", "bcc"] as const) + if (options[key] != null) { + if (!Array.isArray(options[key]) || !options[key].every((v) => typeof v === "string")) + throw new ProviderProtocolError("Invalid delivery recipients"); + deliveryOptions[key] = options[key] as string[]; + } + for (const key of ["subject", "html"] as const) + if (typeof options[key] === "string") deliveryOptions[key] = options[key]; + if (typeof options.reply_all === "boolean") deliveryOptions.replyAll = options.reply_all; + deliveryOptions.providerOptions = options.provider_options ?? null; + if (options.attachment_ids != null) { + if ( + !Array.isArray(options.attachment_ids) || + !options.attachment_ids.every((v) => typeof v === "string") + ) + throw new ProviderProtocolError("Invalid attachment IDs"); + deliveryOptions.attachmentIds = options.attachment_ids as string[]; + } + if (!Number.isSafeInteger(value.attempt) || Number(value.attempt) < 1) + throw new ProviderProtocolError("Invalid delivery attempt"); + return { + ...(typeof value.external_message_id === "string" + ? { externalMessageId: value.external_message_id } + : {}), + providerMessage: value.provider_message ?? null, + deliveryId: text(value.delivery_id), + attempt: Number(value.attempt), + body: typeof value.body === "string" ? value.body : "", + attachments: (Array.isArray(value.attachments) ? value.attachments : []).map((v) => { + const file = asObject(v); + return { + mediaType: text(file.media_type), + url: text(file.url), + ...(typeof file.filename === "string" ? { filename: file.filename } : {}), + }; + }), + options: deliveryOptions, + providerThread: value.provider_thread ?? {}, + }; +} diff --git a/packages/sdk/src/chatkit-provider/index.ts b/packages/sdk/src/chatkit-provider/index.ts new file mode 100644 index 00000000..a2b4a856 --- /dev/null +++ b/packages/sdk/src/chatkit-provider/index.ts @@ -0,0 +1,4 @@ +export type { ChatKitProviderEndpointOptions } from "./endpoint"; +export { chatKitProviderEndpoint, defineChatKitProvider, ProviderProtocolError } from "./endpoint"; +export { createProviderRuntimeClient } from "./runtime"; +export type * from "./types"; diff --git a/packages/sdk/src/chatkit-provider/runtime.ts b/packages/sdk/src/chatkit-provider/runtime.ts new file mode 100644 index 00000000..9509dd20 --- /dev/null +++ b/packages/sdk/src/chatkit-provider/runtime.ts @@ -0,0 +1,189 @@ +import { type Config, createConfig } from "../config"; +import { requestJson } from "../internal/fetch-client"; +import { teamPath } from "../internal/paths"; +import type { + ProviderExternalIdentity, + ProviderInboundMessage, + ProviderJson, + ProviderObject, +} from "./types"; + +/** A connection credential has no general team or user impersonation authority. */ +export function createProviderRuntimeClient( + options: Pick & { + connectionId: string; + token: string; + }, +) { + const config = createConfig({ ...options, bearerToken: options.token }); + const base = + teamPath(config, "/api/v1/team/{team_id}/chatkit/custom-connections") + + `/${encodeURIComponent(options.connectionId)}`; + const command = (body: ProviderObject) => + requestJson(config, { method: "POST", path: `${base}/runtime`, body }); + return { + async registerAgentIdentity(): Promise { + return command({ operation: "register_agent_identity" }); + }, + async normalizeMentions(input: { tags: string[] }): Promise { + return command({ operation: "normalize_mentions", tags: input.tags }); + }, + async ensureConversation(input: { + conversationKey: string; + title?: string; + providerThread?: ProviderJson; + }): Promise<{ sessionId: string }> { + const result = await command<{ session_id: string }>({ + operation: "ensure_conversation", + conversation_key: input.conversationKey, + title: input.title ?? null, + provider_thread: input.providerThread ?? {}, + }); + return { sessionId: result.session_id }; + }, + async upsertParticipant(input: { + sessionId: string; + identity: ProviderExternalIdentity; + }): Promise { + return command({ + operation: "upsert_participant", + session_id: input.sessionId, + identity: { + external_id: input.identity.externalId, + display_name: input.identity.displayName, + kind: input.identity.kind, + }, + }); + }, + async leaveParticipant(input: { sessionId: string; externalId: string }): Promise { + await command({ + operation: "leave_participant", + session_id: input.sessionId, + external_id: input.externalId, + }); + }, + async history(input: { + sessionId: string; + pageSize?: number; + nextPageToken?: string; + }): Promise<{ + messages: { + id: string; + role: string; + text: string; + senderDisplayName: string; + createdAt: string; + }[]; + nextPageToken?: string; + }> { + const result = await command<{ + messages: { + id: string; + role: string; + text: string; + sender_display_name: string; + created_at: string; + }[]; + next_page_token?: string; + }>({ + operation: "history", + session_id: input.sessionId, + page_size: input.pageSize ?? 100, + next_page_token: input.nextPageToken ?? null, + }); + return { + messages: result.messages.map((m) => ({ + id: m.id, + role: m.role, + text: m.text, + senderDisplayName: m.sender_display_name, + createdAt: m.created_at, + })), + ...(result.next_page_token ? { nextPageToken: result.next_page_token } : {}), + }; + }, + async uploadAttachment(input: { + sessionId: string; + content: Uint8Array; + mediaType: string; + filename?: string; + }): Promise<{ attachmentId: string }> { + const result = await command<{ + upload: { + attachment: { id: string }; + upload_url: string; + upload_headers: Record; + }; + }>({ + operation: "create_attachment_upload", + session_id: input.sessionId, + media_type: input.mediaType, + filename: input.filename ?? null, + size_bytes: input.content.byteLength, + }); + const upload = await (options.fetch ?? fetch)(result.upload.upload_url, { + method: "PUT", + headers: result.upload.upload_headers, + body: new Blob([Uint8Array.from(input.content)], { + type: input.mediaType, + }), + }); + if (!upload.ok) throw new Error(`Provider attachment upload failed: ${upload.status}`); + await command({ + operation: "complete_attachment_upload", + session_id: input.sessionId, + attachment_id: result.upload.attachment.id, + size_bytes: input.content.byteLength, + sha256: null, + }); + return { attachmentId: result.upload.attachment.id }; + }, + async attachmentDownload(input: { + sessionId: string; + attachmentId: string; + }): Promise<{ downloadUrl: string; expiresAt: string }> { + const result = await command<{ + download: { download_url: string; expires_at: string }; + }>({ + operation: "attachment_download", + session_id: input.sessionId, + attachment_id: input.attachmentId, + }); + return { + downloadUrl: result.download.download_url, + expiresAt: result.download.expires_at, + }; + }, + async ingest( + message: ProviderInboundMessage, + ): Promise<{ eventId: string; messageId: string; status: string }> { + const raw = await requestJson<{ + event_id: string; + message_id: string; + status: string; + }>(config, { + method: "POST", + path: `${base}/messages`, + body: { + event_id: message.eventId, + conversation_key: message.conversationKey, + external_message_id: message.externalMessageId, + sender: { + external_id: message.sender.externalId, + display_name: message.sender.displayName, + kind: message.sender.kind, + }, + text: message.text, + attachment_ids: message.attachmentIds ?? [], + provider_thread: message.providerThread ?? {}, + provider_metadata: message.providerMetadata ?? {}, + }, + }); + return { + eventId: raw.event_id, + messageId: raw.message_id, + status: raw.status, + }; + }, + }; +} diff --git a/packages/sdk/src/chatkit-provider/types.ts b/packages/sdk/src/chatkit-provider/types.ts new file mode 100644 index 00000000..6a08b506 --- /dev/null +++ b/packages/sdk/src/chatkit-provider/types.ts @@ -0,0 +1,171 @@ +/** JSON carried across the remote-provider boundary. */ +export type ProviderJson = + | null + | boolean + | number + | string + | ProviderJson[] + | { [key: string]: ProviderJson }; +export type ProviderObject = { [key: string]: ProviderJson }; +export type ProviderSchema = ProviderObject; + +/** Trusted context verified by Tilde and covered by the endpoint signature. */ +export type ProviderContext = { + requestId: string; + orgId: string; + teamId: string; + definitionId: string; + connectionId: string; + configuration: ProviderObject; + secrets: ProviderObject; + session?: { + participants: { + instanceId: string; + displayName: string; + externalId: string | null; + isAgent: boolean; + }[]; + sessionId: string; + agentInboxInstanceId: string; + targetInboxInstanceId: string; + triggerMessageId: string; + executionId: string; + conversationKey: string; + externalMessageId: string; + providerMessage: ProviderJson; + providerThread: ProviderJson; + }; + signal: AbortSignal; +}; + +export type ProviderField = { + name: string; + label: string; + fieldType: "text" | "password" | "textarea" | "number" | "checkbox"; + required?: boolean; + placeholder?: string; +}; +export type ProviderAuthMethod = { + id: string; + displayName: string; + description: string; + fields: ProviderField[]; +}; +export type ProviderCapabilities = { + toolkit?: boolean; + inbound?: boolean; + delivery?: boolean; + identity?: boolean; + streaming?: boolean; + markdown?: boolean; + html?: boolean; + attachments?: boolean; + maxLength?: number; +}; +export type ProviderSetupResult = { + toolkit?: { discoveryUrl: string }; + nextAction: + | { type: "submit_form"; fields: ProviderField[]; submitLabel: string } + | { type: "redirect"; url: string } + | { + type: "render_instructions"; + markdown: string; + fields?: ProviderField[]; + } + | { type: "complete"; message?: string }; + configuration?: ProviderObject; + secrets?: ProviderObject; + continuation?: ProviderJson; +}; +export type ProviderReconciliation = + | { status: "applied"; result: T } + | { status: "absent" } + | { status: "uncertain"; reason: string }; + +/** Private delivery options must never be copied to transcript or log payloads. */ +export type ProviderDeliveryOptions = { + visibleRecipients?: ProviderExternalIdentity[]; + to?: string[]; + cc?: string[]; + bcc?: string[]; + subject?: string; + html?: string; + replyAll?: boolean; + attachmentIds?: string[]; + providerOptions?: ProviderJson; +}; +export type ProviderDelivery = { + externalMessageId?: string; + providerMessage?: ProviderJson; + deliveryId: string; + attempt: number; + body: string; + attachments: { mediaType: string; filename?: string; url: string }[]; + options: ProviderDeliveryOptions; + providerThread: ProviderJson; +}; +export type ProviderDeliveryResult = { externalMessageId: string }; +export type ProviderExternalIdentity = { + externalId: string; + displayName: string; + kind: "email" | "mobile_number" | "username"; +}; +export type ProviderInboundMessage = { + eventId: string; + conversationKey: string; + externalMessageId: string; + sender: ProviderExternalIdentity; + text: string; + attachmentIds?: string[]; + providerThread?: ProviderJson; + providerMetadata?: ProviderJson; +}; + +/** Context is not a model argument; mutation handlers must reconcile retries. */ +export type ProviderSessionTool = { + name: string; + description: string; + inputSchema: ProviderSchema; + outputSchema: ProviderSchema; + readOnly?: boolean; + available?(context: ProviderContext): boolean | Promise; + execute(input: ProviderObject, context: ProviderContext): Promise; + reconcile?(input: ProviderObject, context: ProviderContext): Promise; +}; + +export type ChatKitProviderDefinition = { + version: string; + displayName: string; + description: string; + configurationSchema: ProviderSchema; + fields?: ProviderField[]; + authMethods?: ProviderAuthMethod[]; + subscriptions?: string[]; + capabilities: ProviderCapabilities; + sessionTools?: ProviderSessionTool[]; + setup: { + start(input: ProviderObject, context: ProviderContext): Promise; + resume(input: ProviderObject, context: ProviderContext): Promise; + disconnect(context: ProviderContext): Promise; + toolkitConfigured?( + input: { toolGroupInstanceId: string; signingKey: string }, + context: ProviderContext, + ): Promise; + credentialsUpdated?(input: { runtimeToken: string }, context: ProviderContext): Promise; + }; + identity?: { + register(input: ProviderObject, context: ProviderContext): Promise; + normalizeMentions( + input: ProviderObject, + context: ProviderContext, + ): Promise; + }; + messaging?: { + prepareSend(input: ProviderObject, context: ProviderContext): Promise; + deliver(input: ProviderDelivery, context: ProviderContext): Promise; + reconcile( + input: ProviderDelivery, + context: ProviderContext, + ): Promise>; + }; +}; diff --git a/packages/sdk/src/chatkit/custom-providers.ts b/packages/sdk/src/chatkit/custom-providers.ts new file mode 100644 index 00000000..2e05a983 --- /dev/null +++ b/packages/sdk/src/chatkit/custom-providers.ts @@ -0,0 +1,425 @@ +import type { ProviderJson, ProviderObject, ProviderSchema } from "../chatkit-provider/types"; +import type { NormalizedConfig } from "../config"; +import { requestJson } from "../internal/fetch-client"; +import { pathWithParams, teamPath } from "../internal/paths"; + +const BASE = "/api/v1/team/{team_id}/chatkit/custom-providers"; +export type CustomChatKitProvider = { + id: string; + orgId: string; + teamId: string; + displayName: string; + discoveryUrl: string; + enabled: boolean; + localRunningEndpoint: boolean; + revision: number; + manifest: ProviderObject | null; + lastDiscoveryError: string | null; + lastDiscoveryAt: string | null; + createdAt: string; + updatedAt: string; +}; +export type CustomChatKitConnection = { + setupId: string; + id: string; + orgId: string; + teamId: string; + definitionId: string; + displayName: string; + defaultAgentInboxId: string | null; + enabled: boolean; + status: string; + configuration: ProviderObject; + toolGroupInstanceId: string | null; + toolkitDiscoveryUrl: string | null; +}; +type WireConnection = { + setup_id: string; + id: string; + org_id: string; + team_id: string; + definition_id: string; + display_name: string; + default_agent_inbox_id: string | null; + enabled: boolean; + status: string; + configuration: ProviderObject; + tool_group_instance_id: string | null; + toolkit_discovery_url: string | null; +}; +function connection(raw: WireConnection): CustomChatKitConnection { + return { + setupId: raw.setup_id, + id: raw.id, + orgId: raw.org_id, + teamId: raw.team_id, + definitionId: raw.definition_id, + displayName: raw.display_name, + defaultAgentInboxId: raw.default_agent_inbox_id, + enabled: raw.enabled, + status: raw.status, + configuration: raw.configuration, + toolGroupInstanceId: raw.tool_group_instance_id, + toolkitDiscoveryUrl: raw.toolkit_discovery_url, + }; +} +/** Generic setup actions retain the server's schema so existing setup renderers can consume them. */ +export type CustomChatKitSetup = { + setupId: string | null; + resource: ProviderObject | null; + nextAction: import("../generated/schema").components["schemas"]["ProviderSetupNextAction"]; + /** May contain one-time secrets. Do not log or persist in shared application state. */ + outputs: ProviderObject | null; +}; +type WireSetup = { + setup_id: string | null; + resource: ProviderObject | null; + next_action: CustomChatKitSetup["nextAction"]; + outputs: ProviderObject | null; +}; +function setup(raw: WireSetup): CustomChatKitSetup { + return { + setupId: raw.setup_id, + resource: raw.resource, + nextAction: raw.next_action, + outputs: raw.outputs, + }; +} +export type CustomChatKitWork = { + workId: string; + kind: string; + status: string; + attempts: number; + lastError: string | null; + createdAt: string; + nextAttemptAt: string; +}; +export type CustomProviderInput = { + displayName: string; + discoveryUrl: string; + localRunningEndpoint?: boolean; +}; +type WireProvider = { + id: string; + org_id: string; + team_id: string; + display_name: string; + discovery_url: string; + enabled: boolean; + local_running_endpoint: boolean; + revision: number; + manifest: ProviderObject | null; + last_discovery_error: string | null; + last_discovery_at: string | null; + created_at: string; + updated_at: string; +}; +function provider(raw: WireProvider): CustomChatKitProvider { + return { + id: raw.id, + orgId: raw.org_id, + teamId: raw.team_id, + displayName: raw.display_name, + discoveryUrl: raw.discovery_url, + enabled: raw.enabled, + localRunningEndpoint: raw.local_running_endpoint, + revision: raw.revision, + manifest: raw.manifest, + lastDiscoveryError: raw.last_discovery_error, + lastDiscoveryAt: raw.last_discovery_at, + createdAt: raw.created_at, + updatedAt: raw.updated_at, + }; +} +function inputBody(input: CustomProviderInput): ProviderObject { + return { + display_name: input.displayName, + discovery_url: input.discoveryUrl, + local_running_endpoint: input.localRunningEndpoint ?? false, + }; +} + +/** Reusable backend definitions. Configured connections use the generic setup flow. */ +export class CustomChatKitProvidersClient { + constructor(private readonly config: NormalizedConfig) {} + private path(id?: string, suffix = ""): string { + return teamPath(this.config, BASE) + (id ? `/${encodeURIComponent(id)}` : "") + suffix; + } + async create( + input: CustomProviderInput, + ): Promise<{ provider: CustomChatKitProvider; signingKey: string }> { + const raw = await requestJson<{ + provider: WireProvider; + signing_key: string; + }>(this.config, { + method: "POST", + path: this.path(), + body: inputBody(input), + }); + return { provider: provider(raw.provider), signingKey: raw.signing_key }; + } + async get(input: { providerId: string }): Promise { + return provider( + await requestJson(this.config, { + path: this.path(input.providerId), + }), + ); + } + async list( + input: { pageSize?: number; nextPageToken?: string } = {}, + ): Promise<{ items: CustomChatKitProvider[]; nextPageToken?: string }> { + const raw = await requestJson<{ + items: WireProvider[]; + next_page_token: string | null; + }>(this.config, { + path: this.path(), + query: { + page_size: input.pageSize ?? 100, + next_page_token: input.nextPageToken, + }, + }); + return { + items: raw.items.map(provider), + ...(raw.next_page_token ? { nextPageToken: raw.next_page_token } : {}), + }; + } + async update( + input: CustomProviderInput & { providerId: string }, + ): Promise { + return provider( + await requestJson(this.config, { + method: "PUT", + path: this.path(input.providerId), + body: inputBody(input), + }), + ); + } + async refresh(input: { providerId: string }): Promise { + return provider( + await requestJson(this.config, { + method: "POST", + path: this.path(input.providerId, "/refresh"), + }), + ); + } + async setEnabled(input: { + providerId: string; + enabled: boolean; + }): Promise { + return provider( + await requestJson(this.config, { + method: "POST", + path: this.path(input.providerId, input.enabled ? "/enable" : "/disable"), + }), + ); + } + async delete(input: { providerId: string }): Promise { + await requestJson(this.config, { + method: "DELETE", + path: this.path(input.providerId), + }); + } + async rotateSigningKey(input: { + providerId: string; + }): Promise<{ provider: CustomChatKitProvider; signingKey: string }> { + const raw = await requestJson<{ + provider: WireProvider; + signing_key: string; + }>(this.config, { + method: "POST", + path: this.path(input.providerId, "/signing-key/rotate"), + }); + return { provider: provider(raw.provider), signingKey: raw.signing_key }; + } + async getConnection(input: { connectionId: string }): Promise { + return connection( + await requestJson(this.config, { + path: + teamPath(this.config, "/api/v1/team/{team_id}/chatkit/custom-connections") + + `/${encodeURIComponent(input.connectionId)}`, + }), + ); + } + async listConnections(input: { + providerId: string; + pageSize?: number; + nextPageToken?: string; + }): Promise<{ items: CustomChatKitConnection[]; nextPageToken?: string }> { + const raw = await requestJson<{ + items: WireConnection[]; + next_page_token?: string; + }>(this.config, { + path: this.path(input.providerId, "/connections"), + query: { + page_size: input.pageSize ?? 100, + next_page_token: input.nextPageToken, + }, + }); + return { + items: raw.items.map(connection), + ...(raw.next_page_token ? { nextPageToken: raw.next_page_token } : {}), + }; + } + async listConnectionWork(input: { + connectionId: string; + pageSize?: number; + nextPageToken?: string; + }): Promise<{ items: CustomChatKitWork[]; nextPageToken?: string }> { + const raw = await requestJson<{ + items: { + work_id: string; + kind: string; + status: string; + attempts: number; + last_error: string | null; + created_at: string; + next_attempt_at: string; + }[]; + next_page_token?: string; + }>(this.config, { + path: `${teamPath(this.config, "/api/v1/team/{team_id}/chatkit/custom-connections")}/${encodeURIComponent(input.connectionId)}/work`, + query: { + page_size: input.pageSize ?? 100, + next_page_token: input.nextPageToken, + }, + }); + return { + items: raw.items.map((row) => ({ + workId: row.work_id, + kind: row.kind, + status: row.status, + attempts: row.attempts, + lastError: row.last_error, + createdAt: row.created_at, + nextAttemptAt: row.next_attempt_at, + })), + ...(raw.next_page_token ? { nextPageToken: raw.next_page_token } : {}), + }; + } + async retryConnectionWork(input: { connectionId: string; workId: string }): Promise { + await requestJson(this.config, { + method: "POST", + path: `${teamPath(this.config, "/api/v1/team/{team_id}/chatkit/custom-connections")}/${encodeURIComponent(input.connectionId)}/work/retry`, + body: { work_id: input.workId }, + }); + } + async rotateConnectionCredentials(input: { + connectionId: string; + }): Promise<{ runtimeToken: string; backendNotified: boolean }> { + const raw = await requestJson<{ + runtime_token: string; + backend_notified: boolean; + }>(this.config, { + method: "POST", + path: + teamPath(this.config, "/api/v1/team/{team_id}/chatkit/custom-connections") + + `/${encodeURIComponent(input.connectionId)}/runtime-token/rotate`, + }); + return { + runtimeToken: raw.runtime_token, + backendNotified: raw.backend_notified, + }; + } + async startConnection(input: { + providerId: string; + displayName: string; + defaultAgentId?: string; + authMethodId?: string; + formValues?: ProviderObject; + returnUrl?: string; + }): Promise { + return setup( + await requestJson(this.config, { + method: "POST", + path: teamPath(this.config, "/api/v1/team/{team_id}/provider-setup/start"), + body: { + domain: "chatkit", + provider_id: input.providerId, + auth_method_id: input.authMethodId ?? null, + form_values: { + ...input.formValues, + displayName: input.displayName, + defaultAgentId: input.defaultAgentId ?? null, + }, + return_url: input.returnUrl ?? null, + }, + }), + ); + } + async resumeConnection(input: { + setupId: string; + input: ProviderObject; + returnUrl?: string; + }): Promise { + return setup( + await requestJson(this.config, { + method: "POST", + path: pathWithParams( + teamPath(this.config, "/api/v1/team/{team_id}/provider-setup/{setup_id}/resume"), + { setup_id: input.setupId }, + ), + body: { input: input.input, return_url: input.returnUrl ?? null }, + }), + ); + } +} + +export type BoundProviderTool = { + name: string; + description: string; + inputSchema: ProviderSchema; + outputSchema: ProviderSchema; + readOnly: boolean; + /** Keep the model's stable tool-call ID across retries; coordinates are server-bound. */ + execute(input: ProviderObject, execution: { toolCallId: string }): Promise; +}; + +/** Discover tools with immutable bindings to the authenticated agent's active turn. */ +export async function sessionProviderTools( + config: NormalizedConfig, + input: { sessionId: string }, +): Promise { + const base = pathWithParams( + teamPath(config, "/api/v1/team/{team_id}/chatkit/sessions/{session_id}"), + { session_id: input.sessionId }, + ); + const raw = await requestJson<{ + tools: { + name: string; + description: string; + input_schema: ProviderSchema; + output_schema: ProviderSchema; + read_only: boolean; + }[]; + context: ProviderObject | null; + }>(config, { path: `${base}/provider-tools` }); + const context = raw.context; + if (!context) return []; + return raw.tools.map((tool) => ({ + name: tool.name, + description: tool.description, + inputSchema: tool.input_schema, + outputSchema: tool.output_schema, + readOnly: tool.read_only, + execute: async (arguments_: ProviderObject, execution: { toolCallId: string }) => { + if (!execution.toolCallId) + throw new TypeError("toolCallId is required for session tool execution"); + const binding = { + agent_inbox_instance_id: context.agent_inbox_instance_id ?? null, + target_inbox_instance_id: context.target_inbox_instance_id ?? null, + trigger_message_id: context.trigger_message_id ?? null, + tool_call_id: execution.toolCallId, + }; + const request = { + method: "POST" as const, + path: `${base}/tools/${encodeURIComponent(tool.name)}`, + body: + tool.name === "sendMessage" + ? { ...arguments_, ...binding } + : { ...binding, input: arguments_ }, + }; + if (tool.name === "sendMessage") return requestJson(config, request); + return (await requestJson<{ result: ProviderJson }>(config, request)).result; + }, + })); +} diff --git a/packages/sdk/src/chatkit/index.ts b/packages/sdk/src/chatkit/index.ts index 1145f1c3..7ce919ff 100644 --- a/packages/sdk/src/chatkit/index.ts +++ b/packages/sdk/src/chatkit/index.ts @@ -2,12 +2,14 @@ import type { NormalizedConfig } from "../config"; import { requestJson } from "../internal/fetch-client"; import { buildUrl, pathWithParams, teamPath } from "../internal/paths"; import type { JsonObject, JsonValue } from "../tools"; +import { CustomChatKitProvidersClient, sessionProviderTools } from "./custom-providers"; import { MessagesClient } from "./messages"; import { ChatKitRoomsClient } from "./rooms"; export * from "./rooms"; import { AgentRunsClient } from "./runs"; import { ChatKitRoutinesClient } from "./routines"; import { ChatKitWorkClient } from "./work"; +import { type ChatKitSessionStreamOptions, streamSessionEvents } from "./session-stream"; export * from "./jobs"; export * from "./routines"; @@ -226,12 +228,65 @@ export type InvokeSessionProviderToolResult = { }; export class ChatKitClient { + readonly customProviders: CustomChatKitProvidersClient; + + /** Submit a caller-owned turn and retain its snapshot cursor for streaming recovery. */ + async submitTurn(input: { + agentId: string; + sessionId?: string; + title?: string; + text: string; + attachments?: { + attachmentId: string; + sizeBytes?: number; + sha256?: string; + }[]; + }): Promise<{ + sessionId: string; + snapshotRevision: number; + conversation: JsonObject; + }> { + const raw = await requestJson<{ + session: { id: string }; + conversation: JsonObject & { snapshot_revision: number }; + }>(this.#config, { + method: "POST", + path: pathWithParams( + teamPath(this.#config, "/api/v1/team/{team_id}/chatkit/workspace/agents/{agent_id}/turns"), + { agent_id: input.agentId }, + ), + body: { + session_id: input.sessionId ?? null, + title: input.title ?? null, + text: input.text, + attachments: (input.attachments ?? []).map((file) => ({ + attachment_id: file.attachmentId, + size_bytes: file.sizeBytes ?? null, + sha256: file.sha256 ?? null, + })), + }, + }); + return { + sessionId: raw.session.id, + snapshotRevision: raw.conversation.snapshot_revision, + conversation: raw.conversation, + }; + } + + streamSessionEvents(input: ChatKitSessionStreamOptions) { + return streamSessionEvents(this.#config, input); + } + + sessionTools(input: { sessionId: string }) { + return sessionProviderTools(this.#config, input); + } readonly #config: NormalizedConfig; readonly #messages: MessagesClient; readonly rooms: ChatKitRoomsClient; readonly runs: AgentRunsClient; constructor(config: NormalizedConfig, messages = new MessagesClient(config)) { + this.customProviders = new CustomChatKitProvidersClient(config); this.#config = config; this.#messages = messages; this.rooms = new ChatKitRoomsClient(config); diff --git a/packages/sdk/src/chatkit/session-stream.ts b/packages/sdk/src/chatkit/session-stream.ts new file mode 100644 index 00000000..e42e86d0 --- /dev/null +++ b/packages/sdk/src/chatkit/session-stream.ts @@ -0,0 +1,152 @@ +import type { NormalizedConfig } from "../config"; +import { configFetch, configHeaders } from "../config"; +import { errorFromResponse } from "../errors"; +import { buildUrl, pathWithParams, teamPath } from "../internal/paths"; +import type { JsonObject } from "../tools"; + +export type ChatKitSessionStreamFrame = + | { type: "ready" | "cursor"; cursor: number } + | { type: "event"; cursor: number; event: JsonObject }; +export type ChatKitSessionStreamOptions = { + sessionId: string; + afterRevision?: number; + signal?: AbortSignal; + reconnect?: boolean; +}; +export class ChatKitStreamProtocolError extends Error {} + +/** Parse incremental UTF-8 SSE frames, including split CRLF and multiline data. */ +export async function* parseSessionEventStream( + body: ReadableStream, +): AsyncGenerator { + const reader = body.getReader(); + const decoder = new TextDecoder(); + let buffer = ""; + try { + for (;;) { + const { done, value } = await reader.read(); + buffer += done ? decoder.decode() : decoder.decode(value, { stream: true }); + for (;;) { + const boundary = /\r?\n\r?\n/.exec(buffer); + if (!boundary || boundary.index === undefined) break; + const block = buffer.slice(0, boundary.index); + buffer = buffer.slice(boundary.index + boundary[0].length); + const data = block + .split(/\r?\n/) + .filter((line) => line.startsWith("data:")) + .map((line) => line.slice(5).replace(/^ /, "")) + .join("\n"); + if (!data) continue; + let frame: unknown; + try { + frame = JSON.parse(data); + } catch { + throw new ChatKitStreamProtocolError("Invalid ChatKit event JSON"); + } + if (!frame || typeof frame !== "object") + throw new ChatKitStreamProtocolError("Invalid ChatKit event frame"); + const candidate = frame as { + type?: unknown; + cursor?: unknown; + event?: unknown; + }; + if ( + !["ready", "cursor", "event"].includes(String(candidate.type)) || + !Number.isSafeInteger(candidate.cursor) || + Number(candidate.cursor) < 0 + ) + throw new ChatKitStreamProtocolError("Invalid ChatKit event cursor or type"); + if ( + candidate.type === "event" && + (!candidate.event || + typeof candidate.event !== "object" || + Array.isArray(candidate.event)) + ) + throw new ChatKitStreamProtocolError("Invalid ChatKit event payload"); + yield frame as ChatKitSessionStreamFrame; + } + if (buffer.length > 8 * 1024 * 1024) + throw new ChatKitStreamProtocolError("ChatKit event exceeds stream buffer limit"); + if (done) break; + } + } finally { + await reader.cancel().catch(() => {}); + reader.releaseLock(); + } +} + +/** Resume from the last delivered revision; authentication failures require caller action. */ +export async function* streamSessionEvents( + config: NormalizedConfig, + options: ChatKitSessionStreamOptions, +): AsyncGenerator { + if ( + options.afterRevision !== undefined && + (!Number.isSafeInteger(options.afterRevision) || options.afterRevision < 0) + ) + throw new TypeError("afterRevision must be a nonnegative safe integer"); + let cursor = options.afterRevision; + let delay = 250; + const path = pathWithParams( + teamPath(config, "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/events/stream"), + { session_id: options.sessionId }, + ); + while (!options.signal?.aborted) { + const headers = configHeaders(config); + headers.set("Accept", "text/event-stream"); + let response: Response; + try { + response = await configFetch(config)(buildUrl(config, path, { after_revision: cursor }), { + headers, + ...(options.signal ? { signal: options.signal } : {}), + }); + } catch (error) { + if (options.signal?.aborted) return; + if (options.reconnect === false) throw error; + await reconnectDelay(delay, options.signal); + delay = Math.min(delay * 2, 10_000); + continue; + } + if (!response.ok) { + if ((response.status >= 500 || response.status === 429) && options.reconnect !== false) { + await response.body?.cancel(); + await reconnectDelay(delay, options.signal); + delay = Math.min(delay * 2, 10_000); + continue; + } + throw await errorFromResponse(response); + } + if (!response.body) throw new ChatKitStreamProtocolError("ChatKit stream omitted its body"); + try { + for await (const frame of parseSessionEventStream(response.body)) { + if (options.signal?.aborted) return; + if (frame.type === "event" && cursor !== undefined && frame.cursor <= cursor) continue; + if (cursor !== undefined && frame.cursor < cursor) + throw new ChatKitStreamProtocolError( + "ChatKit cursor moved backwards; fetch a fresh snapshot", + ); + cursor = frame.cursor; + delay = 250; + yield frame; + } + } catch (error) { + if (options.signal?.aborted) return; + if (error instanceof ChatKitStreamProtocolError || options.reconnect === false) throw error; + } + if (options.reconnect === false || options.signal?.aborted) return; + await reconnectDelay(delay, options.signal); + delay = Math.min(delay * 2, 10_000); + } +} +function reconnectDelay(milliseconds: number, signal?: AbortSignal): Promise { + if (signal?.aborted) return Promise.resolve(); + return new Promise((resolve) => { + const finish = () => { + clearTimeout(timer); + signal?.removeEventListener("abort", finish); + resolve(); + }; + const timer = setTimeout(finish, milliseconds); + signal?.addEventListener("abort", finish, { once: true }); + }); +} diff --git a/packages/sdk/src/generated/schema.d.ts b/packages/sdk/src/generated/schema.d.ts index 23b319de..5a899a2b 100644 --- a/packages/sdk/src/generated/schema.d.ts +++ b/packages/sdk/src/generated/schema.d.ts @@ -2943,6 +2943,272 @@ export interface paths { patch?: never; trace?: never; }; + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get custom ChatKit connection + * @description Returns the definition reference and public connection configuration. + */ + get: operations["chatkit-get-custom-connection"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/messages": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Ingest custom provider message + * @description Accepts a normalized external event using only the owning connection runtime token. + */ + post: operations["chatkit-ingest-custom-provider-message"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Custom provider runtime operation + * @description Manage only conversations and attachments bound to the authenticated connection. + */ + post: operations["chatkit-custom-provider-runtime"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/runtime-token/rotate": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Rotate custom connection credentials + * @description Immediately revokes the old token and returns its replacement once. + */ + post: operations["chatkit-rotate-custom-connection-credentials"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** Inspect durable normalized-event and cleanup work without exposing payloads. */ + get: operations["chatkit-list-custom-connection-work"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-connections/{connection_id}/work/retry": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** Retry a dead-letter item with its original deduplication identity. */ + post: operations["chatkit-retry-custom-connection-work"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-providers": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + get: operations["chatkit-list-custom-provider"]; + put?: never; + /** + * Create custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + post: operations["chatkit-create-custom-provider"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + get: operations["chatkit-get-custom-provider"]; + /** + * Update custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + put: operations["chatkit-update-custom-provider"]; + post?: never; + /** + * Delete custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + delete: operations["chatkit-delete-custom-provider"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/connections": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List custom ChatKit connections + * @description Lists public connection configuration within a single team and definition. + */ + get: operations["chatkit-list-custom-connections"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/disable": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Disable custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + post: operations["chatkit-disable-custom-provider"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/enable": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Enable custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + post: operations["chatkit-enable-custom-provider"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/refresh": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Refresh custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + post: operations["chatkit-refresh-custom-provider"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/v1/team/{team_id}/chatkit/custom-providers/{provider_id}/signing-key/rotate": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Rotate custom ChatKit provider + * @description Manage a reusable tenant-scoped ChatKit implementation. + */ + post: operations["chatkit-rotate-custom-provider"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/v1/team/{team_id}/chatkit/identities/link": { parameters: { query?: never; @@ -3655,6 +3921,26 @@ export interface paths { patch?: never; trace?: never; }; + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/events/stream": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Stream ChatKit session events + * @description Resumable SSE with canonical audience filtering and periodic authorization revalidation. Use after_revision or Last-Event-ID to reconnect. + */ + get: operations["chatkit-stream-session-events"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/invitations": { parameters: { query?: never; @@ -3823,6 +4109,26 @@ export interface paths { patch?: never; trace?: never; }; + "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/provider-tools": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List session provider tools + * @description Returns server-bound invocation context and the authorized provider tool catalog. + */ + get: operations["chatkit-list-session-provider-tools"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/v1/team/{team_id}/chatkit/sessions/{session_id}/tools/sendMessage": { parameters: { query?: never; @@ -10930,6 +11236,10 @@ export interface components { synthesizer_agent_id: string; synthesizer_team_id: string; }; + /** @description An optional toolkit backend materialized as an ordinary custom Tools provider. */ + AssociatedToolkit: { + discovery_url: string; + }; /** @description ChatKit-owned attachment metadata. */ Attachment: { bucket: string; @@ -11091,6 +11401,19 @@ export interface components { ChangeResourceOwnershipRequest: { ownership: components["schemas"]["ResourceOwnership"]; }; + /** @description Private send intent; never include this value in canonical public events. */ + ChannelDeliveryOptions: { + attachment_ids?: string[]; + bcc?: string[] | null; + cc?: string[] | null; + html?: string | null; + /** @description Opaque extension interpreted exclusively by the owning adapter. */ + provider_options?: unknown; + reply_all?: boolean | null; + subject?: string | null; + to?: string[] | null; + visible_recipients?: components["schemas"]["CustomExternalIdentity"][]; + }; /** @description Approval information in an HTTP agent tool invocation. */ ChatApproval: { decision: components["schemas"]["ChatApprovalDecision"]; @@ -11318,14 +11641,40 @@ export interface components { /** @enum {string} */ kind: "agent_job"; }); - /** - * @description Address scheme for a [`ChatKitIdentity`]. - * @enum {string} - */ - ChatKitIdentityKind: "email" | "mobile_number" | "username" | "tilde_user" | "agent"; - /** - * @description Identity block serialized onto every ChatKit message delivered to an agent. - * + /** @description A party that can appear in a ChatKit session. */ + ChatKitIdentity: { + /** @description Set when this address belongs to one of our agents. */ + agent_inbox_id?: string | null; + created_at: components["schemas"]["WrappedChronoDateTime"]; + display_name: string; + /** @description The address within that scheme. `None` only for [`ChatKitIdentityKind::TildeUser`]. */ + external_id?: string | null; + id: string; + kind: components["schemas"]["ChatKitIdentityKind"]; + metadata?: Record | null; + org_id: string; + /** + * @description Namespace that owns the address. Two GitHub organizations can both have + * a `dan`, so the scheme alone is never unique. + */ + provider_id?: string | null; + team_id: string; + /** + * @description Set only by a verified linking flow, or by us when registering an + * address for one of our own principals. `None` means no authority. + */ + tilde_user_id?: string | null; + updated_at: components["schemas"]["WrappedChronoDateTime"]; + verified_at?: null | components["schemas"]["WrappedChronoDateTime"]; + }; + /** + * @description Address scheme for a [`ChatKitIdentity`]. + * @enum {string} + */ + ChatKitIdentityKind: "email" | "mobile_number" | "username" | "tilde_user" | "agent"; + /** + * @description Identity block serialized onto every ChatKit message delivered to an agent. + * * The runtime SDK uses this to attribute a speaker; it is deliberately a * structured field rather than only a text prefix so an agent can distinguish * a real sender from text that merely looks like one. @@ -11388,6 +11737,21 @@ export interface components { * @enum {string} */ ChatKitParticipantType: "human" | "agent"; + /** @description Discovery document served by the customer's SDK endpoint. */ + ChatKitProviderManifest: { + auth_methods?: components["schemas"]["CustomProviderAuthMethod"][]; + capabilities: components["schemas"]["CustomProviderCapabilities"]; + configuration_schema: unknown; + description: string; + display_name: string; + fields?: components["schemas"]["CustomProviderField"][]; + invoke_url: string; + /** Format: int32 */ + protocol_version: number; + session_tools?: components["schemas"]["CustomSessionTool"][]; + subscriptions?: string[]; + version: string; + }; ChatKitRealtimeSocketTicket: { expires_at: components["schemas"]["WrappedChronoDateTime"]; /** @description Stable subprotocol prefix. Append `.` and the returned ticket. */ @@ -12556,6 +12920,291 @@ export interface components { * @enum {string} */ CurrentSeatStatus: "active" | "not_assigned" | "not_billable"; + /** @description Stable registration, separate from any configured connection. */ + CustomChatKitProvider: { + created_at: components["schemas"]["WrappedChronoDateTime"]; + discovery_url: string; + display_name: string; + enabled: boolean; + id: string; + last_discovery_at?: null | components["schemas"]["WrappedChronoDateTime"]; + last_discovery_error?: string | null; + local_running_endpoint: boolean; + manifest?: null | components["schemas"]["ChatKitProviderManifest"]; + org_id: string; + /** Format: int64 */ + revision: number; + team_id: string; + updated_at: components["schemas"]["WrappedChronoDateTime"]; + }; + /** @description Returned once after rotation, with remote notification outcome for host recovery. */ + CustomConnectionCredentials: { + backend_notified: boolean; + runtime_token: string; + }; + /** @description Public connection configuration; runtime credentials and setup state are excluded. */ + CustomConnectionInfo: { + configuration: unknown; + default_agent_inbox_id?: string | null; + definition_id: string; + display_name: string; + enabled: boolean; + id: string; + org_id: string; + setup_id: string; + status: string; + team_id: string; + tool_group_instance_id?: string | null; + toolkit_discovery_url?: string | null; + }; + CustomConnectionInfoPaginatedResponse: { + items: components["schemas"]["CustomConnectionInfo"][]; + next_page_token?: string; + }; + /** @description Operational diagnostics omit normalized message bodies and credentials. */ + CustomConnectionWork: { + /** Format: int64 */ + attempts: number; + created_at: components["schemas"]["WrappedChronoDateTime"]; + kind: string; + last_error?: string | null; + next_attempt_at: components["schemas"]["WrappedChronoDateTime"]; + status: string; + work_id: string; + }; + CustomConnectionWorkPaginatedResponse: { + items: components["schemas"]["CustomConnectionWork"][]; + next_page_token?: string; + }; + /** @description One external address; callers cannot grant themselves principal authority. */ + CustomExternalIdentity: { + display_name: string; + external_id: string; + kind: components["schemas"]["ChatKitIdentityKind"]; + }; + /** @description Normalized event accepted using a single connection's runtime credential. */ + CustomInboundMessage: { + attachment_ids?: string[]; + conversation_key: string; + event_id: string; + external_message_id: string; + provider_metadata?: unknown; + provider_thread?: unknown; + sender: components["schemas"]["CustomExternalIdentity"]; + text: string; + }; + /** @description A durable ingestion acknowledgment, including replay of an existing event. */ + CustomIngressReceipt: { + event_id: string; + message_id: string; + status: string; + }; + /** @description Provider-owned authorization method; secret fields are never list outputs. */ + CustomProviderAuthMethod: { + description: string; + display_name: string; + fields: components["schemas"]["CustomProviderField"][]; + id: string; + }; + /** @description Content conversion and runtime features declared by a backend. */ + CustomProviderCapabilities: { + attachments?: boolean; + delivery?: boolean; + html?: boolean; + identity?: boolean; + inbound?: boolean; + markdown?: boolean; + max_length?: number | null; + streaming?: boolean; + toolkit?: boolean; + }; + /** @description Named schema-backed field rendered by the existing generic setup flow. */ + CustomProviderField: { + field_type: string; + label: string; + name: string; + placeholder?: string; + required?: boolean; + }; + /** @description Exact signed remote invocation. Secret-bearing payloads intentionally omit Debug. */ + CustomProviderInvocation: { + configuration: unknown; + context?: null | components["schemas"]["CustomSessionContext"]; + input: unknown; + manifest_version: string; + operation: components["schemas"]["CustomProviderOperation"]; + /** Format: int32 */ + protocol_version: number; + request_id: string; + scope: components["schemas"]["CustomProviderScope"]; + secrets: unknown; + }; + /** @description A paginated team catalog; continuation uses the existing timestamp cursor. */ + CustomProviderList: { + items: components["schemas"]["CustomChatKitProvider"][]; + next_page_token?: string | null; + }; + /** + * @description Tilde-owned protocol operations are typed independently of provider business inputs. + * @enum {string} + */ + CustomProviderOperation: "setup_start" | "setup_resume" | "disconnect" | "runtime_credentials_updated" | "toolkit_configured" | "register_identity" | "normalize_mentions" | "list_session_tools" | "invoke_session_tool" | "reconcile_session_tool" | "prepare_send" | "deliver" | "reconcile_delivery"; + /** @description Signing material is returned only by explicit create/rotate operations. */ + CustomProviderRegistration: { + provider: components["schemas"]["CustomChatKitProvider"]; + signing_key: string; + }; + /** @description Input for creating or editing a reusable backend registration. */ + CustomProviderRegistrationInput: { + discovery_url: string; + display_name: string; + local_running_endpoint?: boolean; + }; + /** @description Tenant-scoped coordinates recovered from persisted records. */ + CustomProviderScope: { + connection_id: string; + definition_id: string; + org_id: string; + team_id: string; + }; + /** @description Remote mutations must distinguish absence from an unresolved prior attempt. */ + CustomReconciliation: { + result: unknown; + /** @enum {string} */ + status: "applied"; + } | { + /** @enum {string} */ + status: "absent"; + } | { + reason: string; + /** @enum {string} */ + status: "uncertain"; + }; + /** @description Narrow operations a provider may perform inside its own bound conversations. */ + CustomRuntimeCommand: { + /** @enum {string} */ + operation: "register_agent_identity"; + } | { + /** @enum {string} */ + operation: "normalize_mentions"; + tags: string[]; + } | { + conversation_key: string; + /** @enum {string} */ + operation: "ensure_conversation"; + provider_thread?: unknown; + title?: string | null; + } | { + filename?: string | null; + media_type: string; + /** @enum {string} */ + operation: "create_attachment_upload"; + session_id: string; + /** Format: int64 */ + size_bytes?: number | null; + } | { + attachment_id: string; + /** @enum {string} */ + operation: "complete_attachment_upload"; + session_id: string; + sha256?: string | null; + /** Format: int64 */ + size_bytes?: number | null; + } | { + attachment_id: string; + /** @enum {string} */ + operation: "attachment_download"; + session_id: string; + } | { + identity: components["schemas"]["CustomExternalIdentity"]; + /** @enum {string} */ + operation: "upsert_participant"; + session_id: string; + } | { + external_id: string; + /** @enum {string} */ + operation: "leave_participant"; + session_id: string; + } | { + next_page_token?: string | null; + /** @enum {string} */ + operation: "history"; + /** Format: int64 */ + page_size?: number | null; + session_id: string; + }; + /** @description Runtime responses deliberately expose no general team resource operations. */ + CustomRuntimeResponse: { + identity: components["schemas"]["ChatKitIdentity"]; + /** @enum {string} */ + type: "identity"; + } | { + identities: components["schemas"]["ChatKitIdentity"][]; + /** @enum {string} */ + type: "mentions"; + } | { + session_id: string; + /** @enum {string} */ + type: "conversation"; + } | { + /** @enum {string} */ + type: "upload"; + upload: components["schemas"]["CreateAttachmentUploadResponse"]; + } | { + attachment: components["schemas"]["Attachment"]; + /** @enum {string} */ + type: "attachment"; + } | { + download: components["schemas"]["GetAttachmentDownloadUrlResponse"]; + /** @enum {string} */ + type: "download"; + } | { + participant: components["schemas"]["ChatKitParticipant"]; + /** @enum {string} */ + type: "participant"; + } | { + /** @enum {string} */ + type: "left"; + } | { + messages: components["schemas"]["CustomVisibleMessage"][]; + next_page_token?: string | null; + /** @enum {string} */ + type: "history"; + }; + /** @description Coordinates verified against the active turn before invoking a session tool. */ + CustomSessionContext: { + agent_inbox_instance_id: string; + conversation_key: string; + execution_id: string; + external_message_id: string; + participants?: components["schemas"]["CustomSessionParticipant"][]; + provider_message: unknown; + /** @description Only the provider adapter interprets this external reply handle. */ + provider_thread: unknown; + session_id: string; + target_inbox_instance_id: string; + trigger_message_id: string; + }; + /** @description Active delivery roster, excluding Tilde authorization principals and other connections' addresses. */ + CustomSessionParticipant: { + display_name: string; + external_id?: string | null; + instance_id: string; + is_agent: boolean; + }; + /** @description Tool schemas describe business inputs only. Context travels separately. */ + CustomSessionTool: { + description: string; + input_schema: unknown; + name: string; + output_schema: unknown; + read_only?: boolean; + }; + /** @description Server-bound tool catalog for the authenticated agent's current turn. */ + CustomSessionToolCatalog: { + context?: null | components["schemas"]["CustomSessionContext"]; + tools: components["schemas"]["CustomSessionTool"][]; + }; CustomSkillSpec: { content: string; description: string; @@ -12597,6 +13246,13 @@ export interface components { tool_group_source_type_id: string; updated_at: components["schemas"]["WrappedChronoDateTime"]; }; + CustomVisibleMessage: { + created_at: components["schemas"]["WrappedChronoDateTime"]; + id: string; + role: components["schemas"]["MessageRole"]; + sender_display_name: string; + text: string; + }; /** @description Data UI part - represents custom data parts */ DataUIPart: { data: components["schemas"]["WrappedJsonValue"]; @@ -15321,6 +15977,9 @@ export interface components { RetainMemoryBody: { document: components["schemas"]["MemoryDocument"]; }; + RetryConnectionWork: { + work_id: string; + }; RetryMemorySourceBody: { source_id: string; source_kind: components["schemas"]["MemorySourceKind"]; @@ -15580,10 +16239,12 @@ export interface components { }; /** @description Model-visible parameters for the session-bound communication tool. */ SendSessionMessageInput: { + attachment_ids?: components["schemas"]["WrappedUuidV4"][]; bcc?: string[] | null; cc?: string[] | null; content: string; html?: string | null; + provider_options?: null | components["schemas"]["WrappedJsonValue"]; reply_all?: boolean | null; subject?: string | null; to?: string[] | null; @@ -24606,27 +25267,24 @@ export interface operations { }; }; }; - "link-team-identity": { + "chatkit-get-custom-connection": { parameters: { query?: never; header?: never; path: { team_id: string; + connection_id: string; }; cookie?: never; }; - requestBody: { - content: { - "application/json": components["schemas"]["LinkTeamIdentityRequestInner"]; - }; - }; + requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { - "application/json": components["schemas"]["VerifiedIdentityLink"]; + "application/json": components["schemas"]["CustomConnectionInfo"]; }; }; 400: { @@ -24637,50 +25295,32 @@ export interface operations { "application/json": components["schemas"]["Error"]; }; }; - 403: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Error"]; - }; - }; - 404: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Error"]; - }; - }; }; }; - "list-inboxes": { + "chatkit-ingest-custom-provider-message": { parameters: { - query: { - page_size: number; - next_page_token?: string; - inbox_type?: null | components["schemas"]["InboxType"]; - }; + query?: never; header?: never; path: { - /** @description Team ID */ team_id: string; + connection_id: string; }; cookie?: never; }; - requestBody?: never; + requestBody: { + content: { + "application/json": components["schemas"]["CustomInboundMessage"]; + }; + }; responses: { - /** @description List inboxes */ 200: { headers: { [name: string]: unknown; }; content: { - "application/json": components["schemas"]["InboxPaginatedResponse"]; + "application/json": components["schemas"]["CustomIngressReceipt"]; }; }; - /** @description Bad Request */ 400: { headers: { [name: string]: unknown; @@ -24689,40 +25329,30 @@ export interface operations { "application/json": components["schemas"]["Error"]; }; }; - /** @description Internal Server Error */ - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Error"]; - }; - }; }; }; - "chatkit-cache-converted-messages": { + "chatkit-custom-provider-runtime": { parameters: { query?: never; header?: never; path: { - /** @description Team ID */ team_id: string; + connection_id: string; }; cookie?: never; }; requestBody: { content: { - "application/json": components["schemas"]["CacheConvertedMessagesRequest"]; + "application/json": components["schemas"]["CustomRuntimeCommand"]; }; }; responses: { - /** @description Cache converted ChatKit message representations */ 200: { headers: { [name: string]: unknown; }; content: { - "application/json": components["schemas"]["CacheConvertedMessagesResponse"]; + "application/json": components["schemas"]["CustomRuntimeResponse"]; }; }; 400: { @@ -24733,39 +25363,26 @@ export interface operations { "application/json": components["schemas"]["Error"]; }; }; - 500: { - headers: { - [name: string]: unknown; - }; - content: { - "application/json": components["schemas"]["Error"]; - }; - }; }; }; - "chatkit-hydrate-converted-messages": { + "chatkit-rotate-custom-connection-credentials": { parameters: { query?: never; header?: never; path: { - /** @description Team ID */ team_id: string; + connection_id: string; }; cookie?: never; }; - requestBody: { - content: { - "application/json": components["schemas"]["HydrateConvertedMessagesRequest"]; - }; - }; + requestBody?: never; responses: { - /** @description Hydrate converted ChatKit message representations */ 200: { headers: { [name: string]: unknown; }; content: { - "application/json": components["schemas"]["HydrateConvertedMessagesResponse"]; + "application/json": components["schemas"]["CustomConnectionCredentials"]; }; }; 400: { @@ -24776,7 +25393,549 @@ export interface operations { "application/json": components["schemas"]["Error"]; }; }; - 500: { + }; + }; + "chatkit-list-custom-connection-work": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + connection_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomConnectionWorkPaginatedResponse"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-retry-custom-connection-work": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + connection_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["RetryConnectionWork"]; + }; + }; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["DeleteInboxResponse"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-list-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomProviderList"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-create-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CustomProviderRegistrationInput"]; + }; + }; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomProviderRegistration"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-get-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomChatKitProvider"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-update-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CustomProviderRegistrationInput"]; + }; + }; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomChatKitProvider"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-delete-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["DeleteInboxResponse"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-list-custom-connections": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomConnectionInfoPaginatedResponse"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-disable-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomChatKitProvider"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-enable-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomChatKitProvider"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-refresh-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomChatKitProvider"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-rotate-custom-provider": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + provider_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomProviderRegistration"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "link-team-identity": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["LinkTeamIdentityRequestInner"]; + }; + }; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["VerifiedIdentityLink"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "list-inboxes": { + parameters: { + query: { + page_size: number; + next_page_token?: string; + inbox_type?: null | components["schemas"]["InboxType"]; + }; + header?: never; + path: { + /** @description Team ID */ + team_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description List inboxes */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["InboxPaginatedResponse"]; + }; + }; + /** @description Bad Request */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Internal Server Error */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-cache-converted-messages": { + parameters: { + query?: never; + header?: never; + path: { + /** @description Team ID */ + team_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["CacheConvertedMessagesRequest"]; + }; + }; + responses: { + /** @description Cache converted ChatKit message representations */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CacheConvertedMessagesResponse"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; + "chatkit-hydrate-converted-messages": { + parameters: { + query?: never; + header?: never; + path: { + /** @description Team ID */ + team_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["HydrateConvertedMessagesRequest"]; + }; + }; + responses: { + /** @description Hydrate converted ChatKit message representations */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HydrateConvertedMessagesResponse"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + 500: { headers: { [name: string]: unknown; }; @@ -26353,6 +27512,39 @@ export interface operations { }; }; }; + "chatkit-stream-session-events": { + parameters: { + query?: { + after_revision?: number | null; + }; + header?: never; + path: { + team_id: string; + session_id: components["schemas"]["WrappedUuidV4"]; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Canonical session event stream */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "text/event-stream": unknown; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; "chatkit-list-room-invitations": { parameters: { query?: { @@ -26835,6 +28027,36 @@ export interface operations { }; }; }; + "chatkit-list-session-provider-tools": { + parameters: { + query?: never; + header?: never; + path: { + team_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["CustomSessionToolCatalog"]; + }; + }; + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + }; "chatkit-send-session-message": { parameters: { query?: never; diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 565445bc..1001deb4 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -67,6 +67,19 @@ export { type TaskStatus, type ToolExecutionState, } from "./chatkit"; +export type { + BoundProviderTool, + CustomChatKitConnection, + CustomChatKitProvider, + CustomChatKitSetup, + CustomChatKitWork, + CustomProviderInput, +} from "./chatkit/custom-providers"; +export { + type ChatKitSessionStreamFrame, + type ChatKitSessionStreamOptions, + ChatKitStreamProtocolError, +} from "./chatkit/session-stream"; export { Client, createClient } from "./client"; export { type CapabilityChangeApproval, diff --git a/packages/sdk/test/chatkit-provider-parity.test.ts b/packages/sdk/test/chatkit-provider-parity.test.ts new file mode 100644 index 00000000..64c6c11d --- /dev/null +++ b/packages/sdk/test/chatkit-provider-parity.test.ts @@ -0,0 +1,535 @@ +import { createHmac } from "node:crypto"; +import { afterEach, describe, expect, it, vi } from "vite-plus/test"; +import { agentMailProvider } from "../examples/custom-chatkit/agentmail"; +import { linqProvider } from "../examples/custom-chatkit/linq"; +import { ProviderStore } from "../examples/custom-chatkit/store"; +import { chatKitProviderEndpoint } from "../src/chatkit-provider"; + +const key = "test-tilde-signing-key"; +const stores: ProviderStore[] = []; +afterEach(() => { + for (const store of stores.splice(0)) store.close(); +}); +function store() { + const store = new ProviderStore(":memory:", new Uint8Array(32).fill(7)); + stores.push(store); + return store; +} +const session = { + session_id: "session", + agent_inbox_instance_id: "agent", + target_inbox_instance_id: "human", + trigger_message_id: "trigger", + execution_id: "execution", + conversation_key: "conversation", + external_message_id: "exact-message", + provider_message: {}, + provider_thread: { + chat_id: "chat", + thread_id: "thread", + message_id: "old-message", + }, +}; +function invoke( + operation: string, + input: unknown, + options: { configuration?: unknown; secrets?: unknown } = {}, +) { + const body = JSON.stringify({ + protocol_version: 1, + manifest_version: "1", + request_id: "request", + operation, + input, + context: session, + scope: { + org_id: "org", + team_id: "team", + definition_id: "definition", + connection_id: "connection", + }, + configuration: options.configuration ?? {}, + secrets: options.secrets ?? {}, + }); + const timestamp = Math.floor(Date.now() / 1000); + return new Request("https://provider.example/endpoint", { + method: "POST", + body, + headers: { + "x-tilde-timestamp": String(timestamp), + "x-tilde-signature": `hmac-sha256=${createHmac("sha256", key).update(`${timestamp}.${body}`).digest("hex")}`, + }, + }); +} +function platformWebhook(payload: unknown, family: "svix" | "webhook", secret: string) { + const body = JSON.stringify(payload); + const timestamp = Math.floor(Date.now() / 1000); + const signature = createHmac("sha256", Buffer.from(secret.replace("whsec_", ""), "base64")) + .update(`event.${timestamp}.${body}`) + .digest("base64"); + return new Request("https://provider.example/webhooks/connection", { + method: "POST", + body, + headers: { + [`${family}-id`]: "event", + [`${family}-timestamp`]: String(timestamp), + [`${family}-signature`]: `v1,${signature}`, + }, + }); +} + +describe("Linq provider parity", () => { + it("configures subscriptions and exposes the complete session action set", async () => { + const fetcher = vi.fn(async () => + Response.json({ id: "subscription", signing_secret: "whsec_c2VjcmV0" }), + ); + const adapter = linqProvider({ + store: store(), + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const setup = await endpoint.POST( + invoke("setup_start", { + runtime_token: "runtime", + form_values: { + configFields: { + api_token: "linq-token", + phone_numbers: "+12025551234", + }, + }, + }), + ); + expect(setup.status).toBe(200); + const request = JSON.parse(fetcher.mock.calls[0]![1]!.body as string); + expect(request).toMatchObject({ + target_url: "https://provider.example/webhooks/connection", + subscribed_events: ["message.received"], + phone_numbers: ["+12025551234"], + }); + expect(adapter.definition.sessionTools.map((t) => t.name)).toEqual([ + "addReaction", + "removeReaction", + "getThread", + "createPoll", + "addPollOptions", + "votePoll", + ]); + }); + it("reconciles a lost poll response with the original idempotency key", async () => { + let effects = 0; + let loseResponse = true; + const receipts = new Map(); + const fetcher = vi.fn(async (_url, init) => { + const id = new Headers(init?.headers).get("idempotency-key")!; + if (!receipts.has(id)) { + effects++; + receipts.set(id, { message_id: "poll" }); + } + if (loseResponse) { + loseResponse = false; + throw new Error("Response lost after platform commit"); + } + return Response.json(receipts.get(id)); + }); + const adapter = linqProvider({ + store: store(), + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const input = { name: "createPoll", arguments: { options: ["A", "B"] } }; + const context = { secrets: { api_token: "linq-token" } }; + expect((await endpoint.POST(invoke("invoke_session_tool", input, context))).status).toBe(500); + expect( + await (await endpoint.POST(invoke("reconcile_session_tool", input, context))).json(), + ).toEqual({ status: "applied", result: { message_id: "poll" } }); + expect(effects).toBe(1); + expect( + fetcher.mock.calls.map(([, init]) => new Headers(init?.headers).get("idempotency-key")), + ).toEqual(["execution", "execution"]); + expect(JSON.parse(fetcher.mock.calls[0]![1]!.body as string).poll.idempotency_key).toBe( + "execution", + ); + }); + it("targets reactions at the bound triggering message and refuses an unprovable retry", async () => { + const fetcher = vi.fn(async () => Response.json({ applied: true })); + const adapter = linqProvider({ + store: store(), + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const input = { name: "addReaction", arguments: { emoji: "👍" } }; + expect( + ( + await endpoint.POST( + invoke("reconcile_session_tool", input, { + secrets: { api_token: "token" }, + }), + ) + ).status, + ).toBe(200); + expect(fetcher).toHaveBeenCalledOnce(); + expect(fetcher.mock.calls[0]![1]?.method).toBe("GET"); + expect( + ( + await endpoint.POST( + invoke("invoke_session_tool", input, { + secrets: { api_token: "token" }, + }), + ) + ).status, + ).toBe(200); + expect(requestUrl(fetcher.mock.calls[1]![0])).toContain("/messages/exact-message/reactions"); + expect(JSON.parse(fetcher.mock.calls[1]![1]!.body as string)).toEqual({ + operation: "add", + type: "like", + }); + }); +}); + +describe("AgentMail provider parity", () => { + it("keeps BCC private while preparing visible To/CC participants", async () => { + const adapter = agentMailProvider({ + store: store(), + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const response = await endpoint.POST( + invoke("prepare_send", { + content: "hello", + to: ["visible@example.com"], + cc: ["copy@example.com"], + bcc: ["hidden@example.com"], + subject: "Subject", + html: "

hello

", + reply_all: false, + }), + ); + const result = (await response.json()) as { + bcc: string[]; + visible_recipients: { external_id: string }[]; + reply_all: boolean; + }; + expect(result.bcc).toEqual(["hidden@example.com"]); + expect(result.visible_recipients.map((p: { external_id: string }) => p.external_id)).toEqual([ + "visible@example.com", + "copy@example.com", + ]); + expect(result.reply_all).toBe(false); + }); + it("delivers rich replies to the exact source message with URL-backed attachments", async () => { + const fetcher = vi.fn(async () => Response.json({ message_id: "sent" })); + const adapter = agentMailProvider({ + store: store(), + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const response = await endpoint.POST( + invoke( + "deliver", + { + delivery_id: "delivery", + attempt: 1, + body: "hello", + external_message_id: "latest", + provider_thread: session.provider_thread, + options: { + to: ["visible@example.com"], + bcc: ["hidden@example.com"], + html: "

hello

", + subject: "Subject", + reply_all: true, + }, + attachments: [ + { + media_type: "application/pdf", + filename: "report.pdf", + url: "https://storage.example/signed", + }, + ], + }, + { + configuration: { inbox_id: "agent@example.com" }, + secrets: { api_key: "mail-token" }, + }, + ), + ); + expect(await response.json()).toEqual({ external_message_id: "sent" }); + expect(requestUrl(fetcher.mock.calls[0]![0])).toContain("/messages/latest/reply-all"); + const sent = JSON.parse(fetcher.mock.calls[0]![1]!.body as string); + expect(sent).toMatchObject({ + bcc: ["hidden@example.com"], + attachments: [ + { + url: "https://storage.example/signed", + filename: "report.pdf", + content_type: "application/pdf", + }, + ], + }); + expect(new Headers(fetcher.mock.calls[0]![1]?.headers).get("idempotency-key")).toBe("delivery"); + }); + it("redacts hidden recipients from thread tool output", async () => { + const fetcher = vi.fn(async () => + Response.json({ + messages: [{ text: "hello", bcc: ["hidden@example.com"] }], + }), + ); + const adapter = agentMailProvider({ + store: store(), + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const response = await endpoint.POST( + invoke( + "invoke_session_tool", + { name: "getThread", arguments: {} }, + { + configuration: { inbox_id: "agent@example.com" }, + secrets: { api_key: "token" }, + }, + ), + ); + expect(await response.text()).not.toContain("hidden@example.com"); + }); + it("verifies webhooks and reuses the durable normalized draft on replay", async () => { + const state = store(); + const secret = "whsec_c2VjcmV0"; + state.saveConnection("connection", { + orgId: "org", + teamId: "team", + runtimeToken: "scoped", + configuration: { inbox_id: "agent@example.com" }, + secrets: { webhook_secret: secret, api_key: "token" }, + }); + const bodies: object[] = []; + const fetcher = vi.fn(async (_url, init) => { + const body = JSON.parse(init?.body as string); + if (body.operation === "ensure_conversation") + return Response.json({ type: "conversation", session_id: "session" }); + bodies.push(body); + return Response.json({ + event_id: "event", + message_id: "message", + status: "pending", + }); + }); + const adapter = agentMailProvider({ + store: state, + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const event = { + event_id: "event", + event_type: "message.received", + message: { + inbox_id: "agent@example.com", + thread_id: "thread", + message_id: "source", + from: "Person ", + text: "hello", + bcc: ["hidden@example.com"], + }, + }; + expect( + (await adapter.webhook("connection", platformWebhook(event, "svix", secret))).status, + ).toBe(202); + expect( + (await adapter.webhook("connection", platformWebhook(event, "svix", secret))).status, + ).toBe(202); + expect(bodies).toHaveLength(2); + expect(bodies[0]).toEqual(bodies[1]); + expect(JSON.stringify(bodies)).not.toContain("hidden@example.com"); + const invalid = platformWebhook(event, "svix", secret); + invalid.headers.set("svix-signature", "v1,ZmFrZQ=="); + await expect(adapter.webhook("connection", invalid)).rejects.toThrow(/signature/); + }); +}); + +describe("AgentMail durable delivery recovery", () => { + it("recovers a post-effect crash by finding its marker on a later page", async () => { + let sends = 0; + const fetcher = vi.fn(async (url, init) => { + if (init?.method === "POST") { + sends++; + throw new Error("Lost response after email was sent"); + } + return Response.json( + requestUrl(url).includes("page_token=second") + ? { + messages: [{ message_id: "sent", labels: ["tilde-delivery-mail-send"] }], + } + : { messages: [], next_page_token: "second" }, + ); + }); + const adapter = agentMailProvider({ + store: store(), + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const input = { + delivery_id: "mail-send", + attempt: 1, + body: "hello", + options: {}, + attachments: [], + provider_thread: session.provider_thread, + }; + const context = { + configuration: { inbox_id: "agent@example.com" }, + secrets: { api_key: "token" }, + }; + expect((await endpoint.POST(invoke("deliver", input, context))).status).toBe(500); + expect( + await (await endpoint.POST(invoke("reconcile_delivery", input, context))).json(), + ).toEqual({ status: "applied", result: { external_message_id: "sent" } }); + expect(sends).toBe(1); + }); + it("does not repeat an unknown email after the platform forgets its idempotency key", async () => { + const state = store(); + state.prepareDelivery(JSON.stringify(["connection", "old-send"]), "/original", { text: "old" }); + const fetcher = vi.fn(async () => Response.json({ messages: [] })); + const adapter = agentMailProvider({ + store: state, + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const now = Date.now(); + const clock = vi.spyOn(Date, "now").mockReturnValue(now + 25 * 60 * 60 * 1000); + try { + const input = { + delivery_id: "old-send", + attempt: 2, + body: "old", + options: {}, + attachments: [], + provider_thread: session.provider_thread, + }; + const response = await endpoint.POST( + invoke("reconcile_delivery", input, { + configuration: { inbox_id: "agent@example.com" }, + secrets: { api_key: "token" }, + }), + ); + expect(await response.json()).toMatchObject({ status: "uncertain" }); + expect(fetcher.mock.calls.every(([, init]) => init?.method === "GET")).toBe(true); + } finally { + clock.mockRestore(); + } + }); +}); + +describe("Linq setup recovery", () => { + it("replaces only its own orphan subscription when a create response is lost", async () => { + const state = store(); + let createCount = 0; + const removed: string[] = []; + const fetcher = vi.fn(async (url, init) => { + if (init?.method === "POST") { + createCount++; + if (createCount === 1) throw new Error("Lost signing secret"); + return Response.json({ + id: "replacement", + signing_secret: "whsec_c2VjcmV0", + }); + } + if (init?.method === "DELETE") { + removed.push(requestUrl(url)); + return new Response(null, { status: 204 }); + } + return Response.json({ + subscriptions: [ + { + id: "orphan", + target_url: "https://provider.example/webhooks/connection", + }, + { + id: "unrelated", + target_url: "https://provider.example/webhooks/other", + }, + ], + }); + }); + const adapter = linqProvider({ + store: state, + apiBaseUrl: "https://tilde.example", + webhookBaseUrl: "https://provider.example/webhooks", + fetch: fetcher, + }); + const endpoint = chatKitProviderEndpoint({ + provider: adapter.definition, + definitionId: "definition", + signingKey: key, + endpointUrl: "https://provider.example/endpoint", + }); + const input = { + runtime_token: "runtime", + form_values: { api_token: "token", phone_numbers: "+12025551234" }, + }; + expect((await endpoint.POST(invoke("setup_start", input))).status).toBe(500); + expect((await endpoint.POST(invoke("setup_start", input))).status).toBe(200); + expect(removed).toEqual([ + "https://api.linqapp.com/api/partner/v3/webhook-subscriptions/orphan", + ]); + expect(state.getConnection("connection").configuration.subscription_id).toBe("replacement"); + }); +}); + +function requestUrl(value: Parameters[0]): string { + return typeof value === "string" ? value : value instanceof URL ? value.href : value.url; +} diff --git a/packages/sdk/test/chatkit-provider.test.ts b/packages/sdk/test/chatkit-provider.test.ts new file mode 100644 index 00000000..8b838a06 --- /dev/null +++ b/packages/sdk/test/chatkit-provider.test.ts @@ -0,0 +1,345 @@ +import { createHmac } from "node:crypto"; +import { readFileSync } from "node:fs"; +import Ajv2020 from "ajv/dist/2020.js"; +import { describe, expect, it, vi } from "vite-plus/test"; +import { createClient } from "../src"; +import type { ChatKitProviderDefinition, ProviderObject } from "../src/chatkit-provider"; +import { + chatKitProviderEndpoint, + createProviderRuntimeClient, + defineChatKitProvider, +} from "../src/chatkit-provider"; + +const key = "provider-test-signing-key"; +const context = { + session_id: "session-1", + agent_inbox_instance_id: "agent-1", + target_inbox_instance_id: "human-1", + trigger_message_id: "message-1", + execution_id: "execution-1", + conversation_key: "thread-1", + external_message_id: "platform-message-1", + provider_message: {}, + provider_thread: {}, +}; +function envelope(operation: string, input: ProviderObject = {}) { + return { + protocol_version: 1, + manifest_version: "1", + request_id: "request-1", + scope: { + org_id: "org-1", + team_id: "team-1", + definition_id: "provider-1", + connection_id: "connection-1", + }, + operation, + context, + input, + configuration: {}, + secrets: {}, + }; +} +function signed(body?: unknown, timestamp = Math.floor(Date.now() / 1000)) { + const raw = body === undefined ? "" : JSON.stringify(body); + return new Request("https://provider.example/chatkit", { + method: body === undefined ? "GET" : "POST", + headers: { + "x-tilde-timestamp": String(timestamp), + "x-tilde-signature": `hmac-sha256=${createHmac("sha256", key).update(`${timestamp}.${raw}`).digest("hex")}`, + }, + ...(body === undefined ? {} : { body: raw }), + }); +} +function fixture() { + const execute = vi.fn(async () => ({ reacted: true })); + const reconcile = vi.fn(async () => ({ + status: "applied" as const, + result: { reacted: true }, + })); + const provider: ChatKitProviderDefinition = { + version: "1", + displayName: "Complex provider", + description: "Parity fixture", + configurationSchema: { type: "object" }, + capabilities: { inbound: true }, + setup: { + start: async () => ({ nextAction: { type: "complete" } }), + resume: async () => ({ nextAction: { type: "complete" } }), + disconnect: async () => {}, + }, + sessionTools: [ + { + name: "addReaction", + description: "React to the triggering message", + inputSchema: { + type: "object", + properties: { emoji: { type: "string" } }, + required: ["emoji"], + additionalProperties: false, + }, + outputSchema: { + type: "object", + properties: { reacted: { type: "boolean" } }, + required: ["reacted"], + }, + execute, + reconcile, + }, + ], + }; + const endpoint = chatKitProviderEndpoint({ + provider, + signingKey: key, + definitionId: "provider-1", + endpointUrl: "https://provider.example/chatkit", + }); + return { provider, endpoint, execute, reconcile }; +} + +describe("ChatKit provider contract", () => { + it("serves authenticated discovery and never reflects a forged Host into invoke_url", async () => { + const { endpoint } = fixture(); + const request = signed(); + request.headers.set("host", "attacker.example"); + const response = await endpoint.GET(request); + expect(response.status).toBe(200); + expect(((await response.json()) as { invoke_url: string }).invoke_url).toBe( + "https://provider.example/chatkit", + ); + expect((await endpoint.GET(new Request("https://provider.example/chatkit"))).status).toBe(401); + }); + it("rejects expired signatures and signed cross-definition scopes before executing", async () => { + const { endpoint, execute } = fixture(); + const body = envelope("invoke_session_tool", { + name: "addReaction", + arguments: { emoji: "like" }, + }); + expect((await endpoint.POST(signed(body, 1))).status).toBe(401); + body.scope.definition_id = "another-provider"; + expect((await endpoint.POST(signed(body))).status).toBe(403); + expect(execute).not.toHaveBeenCalled(); + }); + it("keeps routing outside model inputs and passes exact message context", async () => { + const { endpoint, execute } = fixture(); + const payload = envelope("invoke_session_tool", { + name: "addReaction", + arguments: { emoji: "like" }, + }); + expect((await endpoint.POST(signed(payload))).status).toBe(200); + expect(execute).toHaveBeenCalledWith( + { emoji: "like" }, + expect.objectContaining({ + connectionId: "connection-1", + session: expect.objectContaining({ + externalMessageId: "platform-message-1", + executionId: "execution-1", + }), + }), + ); + payload.input.arguments = { emoji: "like", sessionId: "other-session" }; + expect((await endpoint.POST(signed(payload))).status).toBe(400); + expect(execute).toHaveBeenCalledTimes(1); + }); + it("rechecks contextual availability on direct invocation", async () => { + const { provider, execute } = fixture(); + provider.sessionTools![0]!.available = () => false; + const endpoint = chatKitProviderEndpoint({ + provider, + signingKey: key, + definitionId: "provider-1", + endpointUrl: "https://provider.example/chatkit", + }); + expect(await (await endpoint.POST(signed(envelope("list_session_tools")))).json()).toEqual({ + tools: [], + }); + expect( + ( + await endpoint.POST( + signed( + envelope("invoke_session_tool", { + name: "addReaction", + arguments: { emoji: "like" }, + }), + ), + ) + ).status, + ).toBe(422); + expect(execute).not.toHaveBeenCalled(); + }); + it("reconciles without calling the mutation handler", async () => { + const { endpoint, execute, reconcile } = fixture(); + const response = await endpoint.POST( + signed( + envelope("reconcile_session_tool", { + name: "addReaction", + arguments: { emoji: "like" }, + }), + ), + ); + expect(await response.json()).toEqual({ + status: "applied", + result: { reacted: true }, + }); + expect(reconcile).toHaveBeenCalledOnce(); + expect(execute).not.toHaveBeenCalled(); + }); + it("rejects missing reconciliation and reserved tool names at definition time", () => { + const { provider } = fixture(); + delete provider.sessionTools![0]!.reconcile; + expect(() => defineChatKitProvider(provider)).toThrow(/reconciliation/); + provider.sessionTools![0]!.name = "sendMessage"; + expect(() => defineChatKitProvider(provider)).toThrow(/reserved/); + }); + it("does not expose provider exception payloads", async () => { + const { endpoint, execute } = fixture(); + execute.mockRejectedValueOnce(new Error("Authorization: SECRET; BCC: hidden@example.com")); + const response = await endpoint.POST( + signed( + envelope("invoke_session_tool", { + name: "addReaction", + arguments: { emoji: "like" }, + }), + ), + ); + expect(response.status).toBe(500); + expect(await response.text()).not.toContain("hidden@example.com"); + }); +}); + +describe("provider SDK clients", () => { + it("maps registration paths, auth, and one-time credentials", async () => { + const fetchMock = vi.fn(async () => + Response.json({ + provider: { + id: "p", + org_id: "org", + team_id: "team", + display_name: "Mine", + discovery_url: "https://provider.example", + enabled: true, + revision: 0, + manifest: null, + }, + signing_key: "secret", + }), + ); + const client = createClient({ + baseUrl: "https://api.example", + orgId: "org", + orgSubdomain: false, + teamId: "team", + apiKey: "admin", + fetch: fetchMock, + }); + const result = await client.chatkit.customProviders.create({ + displayName: "Mine", + discoveryUrl: "https://provider.example", + }); + expect(result.signingKey).toBe("secret"); + expect(result.provider.displayName).toBe("Mine"); + const [url, init] = fetchMock.mock.calls[0]! as unknown as [URL, RequestInit]; + expect(requestUrl(url)).toContain("/api/v1/team/team/chatkit/custom-providers"); + expect(new Headers(init.headers).get("authorization")).toBe("Bearer admin"); + expect(JSON.parse(init.body as string)).toEqual({ + display_name: "Mine", + discovery_url: "https://provider.example", + local_running_endpoint: false, + }); + }); + it("uses only the connection credential for normalized ingress", async () => { + const fetchMock = vi.fn(async () => + Response.json({ event_id: "e", message_id: "m", status: "pending" }), + ); + const runtime = createProviderRuntimeClient({ + baseUrl: "https://api.example", + orgId: "org", + orgSubdomain: false, + teamId: "team", + connectionId: "connection/1", + token: "scoped", + fetch: fetchMock, + }); + expect( + await runtime.ingest({ + eventId: "e", + externalMessageId: "external", + conversationKey: "thread", + sender: { externalId: "human", displayName: "Human", kind: "username" }, + text: "hello", + }), + ).toEqual({ eventId: "e", messageId: "m", status: "pending" }); + const [url, init] = fetchMock.mock.calls[0]! as unknown as [URL, RequestInit]; + expect(requestUrl(url)).toContain("connection%2F1/messages"); + expect(new Headers(init.headers).get("authorization")).toBe("Bearer scoped"); + expect(JSON.parse(init.body as string).sender).toEqual({ + external_id: "human", + display_name: "Human", + kind: "username", + }); + }); +}); + +describe("Rust and TypeScript protocol conformance", () => { + it("validates discovery and invocation against generated Rust OpenAPI schemas", async () => { + const spec = JSON.parse( + readFileSync(new URL("../../api-client/specs/openapi.cloud.json", import.meta.url), "utf8"), + ); + const ajv = new Ajv2020({ strict: false, validateFormats: false }); + const validate = (name: string, value: unknown) => { + const schema = { + components: spec.components, + $ref: `#/components/schemas/${name}`, + }; + const check = ajv.compile(schema); + expect(check(value), JSON.stringify(check.errors)).toBe(true); + }; + const { endpoint } = fixture(); + const registration = spec.components.schemas.CustomChatKitProvider; + const manifestName = registration.properties.manifest.oneOf + .find((entry: { $ref?: string }) => entry.$ref) + .$ref.split("/") + .at(-1); + validate(manifestName, await (await endpoint.GET(signed())).json()); + const invocation = envelope("invoke_session_tool", { + name: "addReaction", + arguments: { emoji: "like" }, + }); + validate("CustomProviderInvocation", invocation); + expect((await endpoint.POST(signed(invocation))).status).toBe(200); + }); +}); + +describe("Associated toolkit lifecycle", () => { + it("requires a credential callback and keeps child signing material outside model arguments", async () => { + const { provider } = fixture(); + provider.capabilities.toolkit = true; + expect(() => defineChatKitProvider(provider)).toThrow(/toolkit/i); + const configured = vi.fn(async () => {}); + provider.setup.toolkitConfigured = configured; + const endpoint = chatKitProviderEndpoint({ + provider, + definitionId: "provider-1", + signingKey: key, + endpointUrl: "https://provider.example/chatkit", + }); + const response = await endpoint.POST( + signed( + envelope("toolkit_configured", { + tool_group_instance_id: "tools-1", + signing_key: "child-test-key", + }), + ), + ); + expect(response.status).toBe(200); + expect(configured).toHaveBeenCalledWith( + { toolGroupInstanceId: "tools-1", signingKey: "child-test-key" }, + expect.objectContaining({ connectionId: "connection-1" }), + ); + expect(await response.text()).not.toContain("child-test-key"); + }); +}); + +function requestUrl(value: Parameters[0]): string { + return typeof value === "string" ? value : value instanceof URL ? value.href : value.url; +} diff --git a/packages/sdk/test/chatkit-session-stream.test.ts b/packages/sdk/test/chatkit-session-stream.test.ts new file mode 100644 index 00000000..a0347a16 --- /dev/null +++ b/packages/sdk/test/chatkit-session-stream.test.ts @@ -0,0 +1,88 @@ +import { describe, expect, it, vi } from "vite-plus/test"; +import { createClient } from "../src"; +import { parseSessionEventStream } from "../src/chatkit/session-stream"; + +function chunks(parts: string[]): ReadableStream { + const encoder = new TextEncoder(); + return new ReadableStream({ + start(controller) { + for (const part of parts) controller.enqueue(encoder.encode(part)); + controller.close(); + }, + }); +} +describe("custom streaming transports", () => { + it("parses split CRLF delimiters and multiline data without dropping events", async () => { + const frames = []; + for await (const frame of parseSessionEventStream( + chunks([ + 'event: event\r\ndata: {"type":"event",\r', + '\ndata: "cursor":12,"event":{"text":"hello"}}\r\n\r', + "\n", + ]), + )) + frames.push(frame); + expect(frames).toEqual([{ type: "event", cursor: 12, event: { text: "hello" } }]); + }); + it("reconnects using the last event cursor and retains caller authorization", async () => { + const abort = new AbortController(); + const fetcher = vi.fn(); + fetcher.mockResolvedValueOnce( + new Response( + chunks([ + 'data: {"type":"ready","cursor":10}\n\ndata: {"type":"event","cursor":11,"event":{"text":"first"}}\n\n', + ]), + ), + ); + fetcher.mockResolvedValueOnce( + new Response( + chunks([ + 'data: {"type":"ready","cursor":11}\n\ndata: {"type":"event","cursor":12,"event":{"text":"second"}}\n\n', + ]), + ), + ); + const client = createClient({ + baseUrl: "https://api.example", + orgSubdomain: false, + orgId: "org", + teamId: "team", + bearerToken: "caller", + fetch: fetcher, + }); + const events: string[] = []; + for await (const frame of client.chatkit.streamSessionEvents({ + sessionId: "session", + signal: abort.signal, + })) { + if (frame.type === "event") { + events.push(typeof frame.event.text === "string" ? frame.event.text : ""); + if (events.length === 2) abort.abort(); + } + } + expect(events).toEqual(["first", "second"]); + expect(requestUrl(fetcher.mock.calls[1]![0])).toContain("after_revision=11"); + expect(new Headers(fetcher.mock.calls[1]![1]?.headers).get("authorization")).toBe( + "Bearer caller", + ); + }); + it("stops reconnecting when session access is revoked", async () => { + const fetcher = vi.fn(async () => + Response.json({ msg: "Session access revoked" }, { status: 403 }), + ); + const client = createClient({ + baseUrl: "https://api.example", + orgSubdomain: false, + teamId: "team", + bearerToken: "caller", + fetch: fetcher, + }); + await expect( + client.chatkit.streamSessionEvents({ sessionId: "session" }).next(), + ).rejects.toMatchObject({ status: 403 }); + expect(fetcher).toHaveBeenCalledOnce(); + }); +}); + +function requestUrl(value: Parameters[0]): string { + return typeof value === "string" ? value : value instanceof URL ? value.href : value.url; +} diff --git a/packages/sdk/tsconfig.json b/packages/sdk/tsconfig.json index d3b4ca32..2892167a 100644 --- a/packages/sdk/tsconfig.json +++ b/packages/sdk/tsconfig.json @@ -1,7 +1,11 @@ { "extends": "../../tsconfig.node.json", "compilerOptions": { - "outDir": "dist" + "outDir": "dist", + "rootDir": "../.." }, - "include": ["src", "test"] + "include": [ + "src", + "test" + ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 411d52a6..12358143 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -859,6 +859,9 @@ importers: '@trytilde/api-client': specifier: workspace:* version: link:../api-client + ajv: + specifier: 8.20.0 + version: 8.20.0 nice-grpc: specifier: 2.1.16 version: 2.1.16 @@ -12942,18 +12945,6 @@ snapshots: - utf-8-validate - vite - '@vitest/browser-preview@4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3))': - dependencies: - '@testing-library/dom': 10.4.1 - '@testing-library/user-event': 14.6.4(@testing-library/dom@10.4.1) - '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3)) - vitest: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3) - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - '@vitest/browser-preview@4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@testing-library/dom': 10.4.1 @@ -12965,7 +12956,6 @@ snapshots: - msw - utf-8-validate - vite - optional: true '@vitest/browser-preview@4.1.10(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: @@ -13038,23 +13028,6 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3))': - dependencies: - '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0)) - '@vitest/utils': 4.1.10 - magic-string: 0.30.21 - pngjs: 7.0.0 - sirv: 3.0.2 - tinyrainbow: 3.1.1 - vitest: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3) - ws: 8.21.3 - transitivePeerDependencies: - - bufferutil - - msw - - utf-8-validate - - vite - '@vitest/browser@4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10)': dependencies: '@blazediff/core': 1.9.1 @@ -13071,7 +13044,6 @@ snapshots: - msw - utf-8-validate - vite - optional: true '@vitest/browser@4.1.10(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(yaml@2.9.0))(vitest@4.1.10)': dependencies: @@ -18027,8 +17999,8 @@ snapshots: dependencies: '@oxc-project/types': 0.143.0 '@oxlint/plugins': 1.73.0 - '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3)) - '@vitest/browser-preview': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3)) + '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10) + '@vitest/browser-preview': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10) '@vitest/expect': 4.1.10 '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 @@ -18040,7 +18012,7 @@ snapshots: oxfmt: 0.62.0(vite-plus@0.2.9(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(esbuild@0.28.2)(happy-dom@20.10.3)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0)) oxlint: 1.77.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.2.9(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(esbuild@0.28.2)(happy-dom@20.10.3)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0)) oxlint-tsgolint: 7.0.2001 - vitest: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10))(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3) + vitest: 4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3) optionalDependencies: '@voidzero-dev/vite-plus-darwin-arm64': 0.2.9 '@voidzero-dev/vite-plus-darwin-x64': 0.2.9 @@ -18249,37 +18221,6 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10))(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3): - dependencies: - '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.10 - '@vitest/runner': 4.1.10 - '@vitest/snapshot': 4.1.10 - '@vitest/spy': 4.1.10 - '@vitest/utils': 4.1.10 - es-module-lexer: 2.3.1 - expect-type: 1.4.0 - magic-string: 0.30.21 - obug: 2.1.4 - pathe: 2.0.3 - picomatch: 4.0.5 - std-env: 4.2.0 - tinybench: 2.9.0 - tinyexec: 1.3.0 - tinyglobby: 0.2.17 - tinyrainbow: 3.1.1 - vite: '@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.21.0)(typescript@5.9.2)(yaml@2.9.0)' - why-is-node-running: 2.3.0 - optionalDependencies: - '@edge-runtime/vm': 3.2.0 - '@opentelemetry/api': 1.9.1 - '@types/node': 24.3.0 - '@vitest/browser-preview': 4.1.10(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(vitest@4.1.10) - happy-dom: 20.10.3 - transitivePeerDependencies: - - msw - vitest@4.1.10(@edge-runtime/vm@3.2.0)(@opentelemetry/api@1.9.1)(@types/node@24.3.0)(@vitest/browser-preview@4.1.10)(@voidzero-dev/vite-plus-core@0.2.9(@types/node@24.3.0)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.50.0)(tsx@4.20.4)(typescript@5.9.2)(yaml@2.9.0))(happy-dom@20.10.3): dependencies: '@vitest/expect': 4.1.10