// This file is auto-generated by @hey-api/openapi-ts import { z } from "zod/v4"; /** * Describes an available authentication method. */ export const zAuthMethod = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), description: z.union([z.string(), z.null()]).optional(), id: z.string(), name: z.string(), }); /** * Request parameters for the authenticate method. * * Specifies which authentication method to use. */ export const zAuthenticateRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), methodId: z.string(), }); /** * Response to the `authenticate` method. */ export const zAuthenticateResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * Binary resource contents. */ export const zBlobResourceContents = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), blob: z.string(), mimeType: z.union([z.string(), z.null()]).optional(), uri: z.string(), }); /** * Response containing the ID of the created terminal. */ export const zCreateTerminalResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), terminalId: z.string(), }); /** * A diff representing file modifications. * * Shows changes to files in a format suitable for display in the client UI. * * See protocol docs: [Content](https://agentclientprotocol.com/protocol/tool-calls#content) */ export const zDiff = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), newText: z.string(), oldText: z.union([z.string(), z.null()]).optional(), path: z.string(), }); /** * An environment variable to set when launching an MCP server. */ export const zEnvVariable = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), name: z.string(), value: z.string(), }); /** * Predefined error codes for common JSON-RPC and ACP-specific errors. * * These codes follow the JSON-RPC 2.0 specification for standard errors * and use the reserved range (-32000 to -32099) for protocol-specific errors. */ export const zErrorCode = z.union([ z.literal(-32700), z.literal(-32600), z.literal(-32601), z.literal(-32602), z.literal(-32603), z.literal(-32800), z.literal(-32000), z.literal(-32002), z .number() .int() .min(-2147483648, { message: "Invalid value: Expected int32 to be >= -2147483648", }) .max(2147483647, { message: "Invalid value: Expected int32 to be <= 2147483647", }), ]); /** * JSON-RPC error object. * * Represents an error that occurred during method execution, following the * JSON-RPC 2.0 error object specification with optional additional data. * * See protocol docs: [JSON-RPC Error Object](https://www.jsonrpc.org/specification#error_object) */ export const zError = z.object({ code: zErrorCode, data: z.unknown().optional(), message: z.string(), }); /** * Allows the Agent to send an arbitrary notification that is not part of the ACP spec. * Extension notifications provide a way to send one-way messages for custom functionality * while maintaining protocol compatibility. * * See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) */ export const zExtNotification = z.unknown(); /** * Allows for sending an arbitrary request that is not part of the ACP spec. * Extension methods provide a way to add custom functionality while maintaining * protocol compatibility. * * See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) */ export const zExtRequest = z.unknown(); /** * Allows for sending an arbitrary response to an [`ExtRequest`] that is not part of the ACP spec. * Extension methods provide a way to add custom functionality while maintaining * protocol compatibility. * * See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) */ export const zExtResponse = z.unknown(); /** * Filesystem capabilities supported by the client. * File system capabilities that a client may support. * * See protocol docs: [FileSystem](https://agentclientprotocol.com/protocol/initialization#filesystem) */ export const zFileSystemCapability = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), readTextFile: z.boolean().optional().default(false), writeTextFile: z.boolean().optional().default(false), }); /** * Capabilities supported by the client. * * Advertised during initialization to inform the agent about * available features and methods. * * See protocol docs: [Client Capabilities](https://agentclientprotocol.com/protocol/initialization#client-capabilities) */ export const zClientCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), fs: zFileSystemCapability .optional() .default({ readTextFile: false, writeTextFile: false }), terminal: z.boolean().optional().default(false), }); /** * An HTTP header to set when making requests to the MCP server. */ export const zHttpHeader = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), name: z.string(), value: z.string(), }); /** * Metadata about the implementation of the client or agent. * Describes the name and version of an MCP implementation, with an optional * title for UI representation. */ export const zImplementation = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), name: z.string(), title: z.union([z.string(), z.null()]).optional(), version: z.string(), }); /** * Response to terminal/kill command method */ export const zKillTerminalCommandResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Request parameters for listing existing sessions. * * Only available if the Agent supports the `listSessions` capability. * * @experimental */ export const zListSessionsRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), cursor: z.union([z.string(), z.null()]).optional(), cwd: z.union([z.string(), z.null()]).optional(), }); /** * MCP capabilities supported by the agent */ export const zMcpCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), http: z.boolean().optional().default(false), sse: z.boolean().optional().default(false), }); /** * HTTP transport configuration for MCP. */ export const zMcpServerHttp = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), headers: z.array(zHttpHeader), name: z.string(), url: z.string(), }); /** * SSE transport configuration for MCP. */ export const zMcpServerSse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), headers: z.array(zHttpHeader), name: z.string(), url: z.string(), }); /** * Stdio transport configuration for MCP. */ export const zMcpServerStdio = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), args: z.array(z.string()), command: z.string(), env: z.array(zEnvVariable), name: z.string(), }); /** * Configuration for connecting to an MCP (Model Context Protocol) server. * * MCP servers provide tools and context that the agent can use when * processing prompts. * * See protocol docs: [MCP Servers](https://agentclientprotocol.com/protocol/session-setup#mcp-servers) */ export const zMcpServer = z.union([ zMcpServerHttp.and(z.object({ type: z.literal("http"), })), zMcpServerSse.and(z.object({ type: z.literal("sse"), })), zMcpServerStdio, ]); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * A unique identifier for a model. * * @experimental */ export const zModelId = z.string(); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Information about a selectable model. * * @experimental */ export const zModelInfo = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), description: z.union([z.string(), z.null()]).optional(), modelId: zModelId, name: z.string(), }); /** * Request parameters for creating a new session. * * See protocol docs: [Creating a Session](https://agentclientprotocol.com/protocol/session-setup#creating-a-session) */ export const zNewSessionRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), cwd: z.string(), mcpServers: z.array(zMcpServer), }); /** * Unique identifier for a permission option. */ export const zPermissionOptionId = z.string(); /** * The type of permission option being presented to the user. * * Helps clients choose appropriate icons and UI treatment. */ export const zPermissionOptionKind = z.union([ z.literal("allow_once"), z.literal("allow_always"), z.literal("reject_once"), z.literal("reject_always"), ]); /** * An option presented to the user when requesting permission. */ export const zPermissionOption = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), kind: zPermissionOptionKind, name: z.string(), optionId: zPermissionOptionId, }); /** * Priority levels for plan entries. * * Used to indicate the relative importance or urgency of different * tasks in the execution plan. * See protocol docs: [Plan Entries](https://agentclientprotocol.com/protocol/agent-plan#plan-entries) */ export const zPlanEntryPriority = z.union([ z.literal("high"), z.literal("medium"), z.literal("low"), ]); /** * Status of a plan entry in the execution flow. * * Tracks the lifecycle of each task from planning through completion. * See protocol docs: [Plan Entries](https://agentclientprotocol.com/protocol/agent-plan#plan-entries) */ export const zPlanEntryStatus = z.union([ z.literal("pending"), z.literal("in_progress"), z.literal("completed"), ]); /** * A single entry in the execution plan. * * Represents a task or goal that the assistant intends to accomplish * as part of fulfilling the user's request. * See protocol docs: [Plan Entries](https://agentclientprotocol.com/protocol/agent-plan#plan-entries) */ export const zPlanEntry = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), content: z.string(), priority: zPlanEntryPriority, status: zPlanEntryStatus, }); /** * An execution plan for accomplishing complex tasks. * * Plans consist of multiple entries representing individual tasks or goals. * Agents report plans to clients to provide visibility into their execution strategy. * Plans can evolve during execution as the agent discovers new requirements or completes tasks. * * See protocol docs: [Agent Plan](https://agentclientprotocol.com/protocol/agent-plan) */ export const zPlan = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), entries: z.array(zPlanEntry), }); /** * Prompt capabilities supported by the agent in `session/prompt` requests. * * Baseline agent functionality requires support for [`ContentBlock::Text`] * and [`ContentBlock::ResourceLink`] in prompt requests. * * Other variants must be explicitly opted in to. * Capabilities for different types of content in prompt requests. * * Indicates which content types beyond the baseline (text and resource links) * the agent can process. * * See protocol docs: [Prompt Capabilities](https://agentclientprotocol.com/protocol/initialization#prompt-capabilities) */ export const zPromptCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), audio: z.boolean().optional().default(false), embeddedContext: z.boolean().optional().default(false), image: z.boolean().optional().default(false), }); /** * Protocol version identifier. * * This version is only bumped for breaking changes. * Non-breaking changes should be introduced via capabilities. */ export const zProtocolVersion = z.number().int().gte(0).lte(65535); /** * Request parameters for the initialize method. * * Sent by the client to establish connection and negotiate capabilities. * * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization) */ export const zInitializeRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), clientCapabilities: zClientCapabilities.optional().default({ fs: { readTextFile: false, writeTextFile: false }, terminal: false, }), clientInfo: z.union([zImplementation, z.null()]).optional(), protocolVersion: zProtocolVersion, }); /** * Response containing the contents of a text file. */ export const zReadTextFileResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), content: z.string(), }); /** * Response to terminal/release method */ export const zReleaseTerminalResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * JSON RPC Request Id * * An identifier established by the Client that MUST contain a String, Number, or NULL value if included. If it is not included it is assumed to be a notification. The value SHOULD normally not be Null [1] and Numbers SHOULD NOT contain fractional parts [2] * * The Server MUST reply with the same value in the Response object if included. This member is used to correlate the context between the two objects. * * [1] The use of Null as a value for the id member in a Request object is discouraged, because this specification uses a value of Null for Responses with an unknown id. Also, because JSON-RPC 1.0 uses an id value of Null for Notifications this could cause confusion in handling. * * [2] Fractional parts may be problematic, since many decimal fractions cannot be represented exactly as binary fractions. */ export const zRequestId = z.union([ z.null(), z.coerce .bigint() .min(BigInt("-9223372036854775808"), { message: "Invalid value: Expected int64 to be >= -9223372036854775808", }) .max(BigInt("9223372036854775807"), { message: "Invalid value: Expected int64 to be <= 9223372036854775807", }), z.string(), ]); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Notification to cancel an ongoing request. * * See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/cancellation) * * @experimental */ export const zCancelRequestNotification = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), requestId: zRequestId, }); /** * The sender or recipient of messages and data in a conversation. */ export const zRole = z.enum(["assistant", "user"]); /** * Optional annotations for the client. The client can use annotations to inform how objects are used or displayed */ export const zAnnotations = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), audience: z.union([z.array(zRole), z.null()]).optional(), lastModified: z.union([z.string(), z.null()]).optional(), priority: z.union([z.number(), z.null()]).optional(), }); /** * Audio provided to or from an LLM. */ export const zAudioContent = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), annotations: z.union([zAnnotations, z.null()]).optional(), data: z.string(), mimeType: z.string(), }); /** * An image provided to or from an LLM. */ export const zImageContent = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), annotations: z.union([zAnnotations, z.null()]).optional(), data: z.string(), mimeType: z.string(), uri: z.union([z.string(), z.null()]).optional(), }); /** * A resource that the server is capable of reading, included in a prompt or tool call result. */ export const zResourceLink = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), annotations: z.union([zAnnotations, z.null()]).optional(), description: z.union([z.string(), z.null()]).optional(), mimeType: z.union([z.string(), z.null()]).optional(), name: z.string(), size: z .union([ z.coerce .bigint() .min(BigInt("-9223372036854775808"), { message: "Invalid value: Expected int64 to be >= -9223372036854775808", }) .max(BigInt("9223372036854775807"), { message: "Invalid value: Expected int64 to be <= 9223372036854775807", }), z.null(), ]) .optional(), title: z.union([z.string(), z.null()]).optional(), uri: z.string(), }); /** * The user selected one of the provided options. */ export const zSelectedPermissionOutcome = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), optionId: zPermissionOptionId, }); /** * The outcome of a permission request. */ export const zRequestPermissionOutcome = z.union([ z.object({ outcome: z.literal("cancelled"), }), zSelectedPermissionOutcome.and(z.object({ outcome: z.literal("selected"), })), ]); /** * Response to a permission request. */ export const zRequestPermissionResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), outcome: zRequestPermissionOutcome, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Unique identifier for a session configuration option value group. * * @experimental */ export const zSessionConfigGroupId = z.string(); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Unique identifier for a session configuration option. * * @experimental */ export const zSessionConfigId = z.string(); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Semantic category for a session configuration option. * * This is intended to help Clients distinguish broadly common selectors (e.g. model selector vs * session mode selector vs thought/reasoning level) for UX purposes (keyboard shortcuts, icons, * placement). It MUST NOT be required for correctness. Clients MUST handle missing or unknown * categories gracefully. * * Category names beginning with `_` are free for custom use, like other ACP extension methods. * Category names that do not begin with `_` are reserved for the ACP spec. * * @experimental */ export const zSessionConfigOptionCategory = z.union([ z.literal("mode"), z.literal("model"), z.literal("thought_level"), z.string(), ]); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Unique identifier for a session configuration option value. * * @experimental */ export const zSessionConfigValueId = z.string(); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * A possible value for a session configuration option. * * @experimental */ export const zSessionConfigSelectOption = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), description: z.union([z.string(), z.null()]).optional(), name: z.string(), value: zSessionConfigValueId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * A group of possible values for a session configuration option. * * @experimental */ export const zSessionConfigSelectGroup = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), group: zSessionConfigGroupId, name: z.string(), options: z.array(zSessionConfigSelectOption), }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Possible values for a session configuration option. * * @experimental */ export const zSessionConfigSelectOptions = z.union([ z.array(zSessionConfigSelectOption), z.array(zSessionConfigSelectGroup), ]); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * A single-value selector (dropdown) session configuration option payload. * * @experimental */ export const zSessionConfigSelect = z.object({ currentValue: zSessionConfigValueId, options: zSessionConfigSelectOptions, }); export const zSessionConfigOption = zSessionConfigSelect .and(z.object({ type: z.literal("select"), })) .and(z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), category: z.union([zSessionConfigOptionCategory, z.null()]).optional(), description: z.union([z.string(), z.null()]).optional(), id: zSessionConfigId, name: z.string(), })); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Session configuration options have been updated. * * @experimental */ export const zConfigOptionUpdate = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), configOptions: z.array(zSessionConfigOption), }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Capabilities for the `session/fork` method. * * By supplying `{}` it means that the agent supports forking of sessions. * * @experimental */ export const zSessionForkCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * A unique identifier for a conversation session between a client and agent. * * Sessions maintain their own context, conversation history, and state, * allowing multiple independent interactions with the same agent. * * See protocol docs: [Session ID](https://agentclientprotocol.com/protocol/session-setup#session-id) */ export const zSessionId = z.string(); /** * Notification to cancel ongoing operations for a session. * * See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/prompt-turn#cancellation) */ export const zCancelNotification = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), sessionId: zSessionId, }); export const zClientNotification = z.object({ method: z.string(), params: z .union([z.union([zCancelNotification, zExtNotification]), z.null()]) .optional(), }); /** * Request to create a new terminal and execute a command. */ export const zCreateTerminalRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), args: z.array(z.string()).optional(), command: z.string(), cwd: z.union([z.string(), z.null()]).optional(), env: z.array(zEnvVariable).optional(), outputByteLimit: z .union([ z.coerce.bigint().gte(BigInt(0)).max(BigInt("18446744073709551615"), { message: "Invalid value: Expected uint64 to be <= 18446744073709551615", }), z.null(), ]) .optional(), sessionId: zSessionId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Request parameters for forking an existing session. * * Creates a new session based on the context of an existing one, allowing * operations like generating summaries without affecting the original session's history. * * Only available if the Agent supports the `session.fork` capability. * * @experimental */ export const zForkSessionRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), cwd: z.string(), mcpServers: z.array(zMcpServer).optional(), sessionId: zSessionId, }); /** * Request to kill a terminal command without releasing the terminal. */ export const zKillTerminalCommandRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), sessionId: zSessionId, terminalId: z.string(), }); /** * Request parameters for loading an existing session. * * Only available if the Agent supports the `loadSession` capability. * * See protocol docs: [Loading Sessions](https://agentclientprotocol.com/protocol/session-setup#loading-sessions) */ export const zLoadSessionRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), cwd: z.string(), mcpServers: z.array(zMcpServer), sessionId: zSessionId, }); /** * Request to read content from a text file. * * Only available if the client supports the `fs.readTextFile` capability. */ export const zReadTextFileRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), limit: z .union([ z.number().int().gte(0).max(4294967295, { message: "Invalid value: Expected uint32 to be <= 4294967295", }), z.null(), ]) .optional(), line: z .union([ z.number().int().gte(0).max(4294967295, { message: "Invalid value: Expected uint32 to be <= 4294967295", }), z.null(), ]) .optional(), path: z.string(), sessionId: zSessionId, }); /** * Request to release a terminal and free its resources. */ export const zReleaseTerminalRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), sessionId: zSessionId, terminalId: z.string(), }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Request parameters for resuming an existing session. * * Resumes an existing session without returning previous messages (unlike `session/load`). * This is useful for agents that can resume sessions but don't implement full session loading. * * Only available if the Agent supports the `session.resume` capability. * * @experimental */ export const zResumeSessionRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), cwd: z.string(), mcpServers: z.array(zMcpServer).optional(), sessionId: zSessionId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Information about a session returned by session/list * * @experimental */ export const zSessionInfo = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), cwd: z.string(), sessionId: zSessionId, title: z.union([z.string(), z.null()]).optional(), updatedAt: z.union([z.string(), z.null()]).optional(), }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Response from listing sessions. * * @experimental */ export const zListSessionsResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), nextCursor: z.union([z.string(), z.null()]).optional(), sessions: z.array(zSessionInfo), }); /** * Update to session metadata. All fields are optional to support partial updates. * * Agents send this notification to update session information like title or custom metadata. * This allows clients to display dynamic session names and track session state changes. */ export const zSessionInfoUpdate = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), title: z.union([z.string(), z.null()]).optional(), updatedAt: z.union([z.string(), z.null()]).optional(), }); /** * Capabilities for the `session/list` method. * * By supplying `{}` it means that the agent supports listing of sessions. * * Further capabilities can be added in the future for other means of filtering or searching the list. */ export const zSessionListCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * Unique identifier for a Session Mode. */ export const zSessionModeId = z.string(); /** * The current mode of the session has changed * * See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes) */ export const zCurrentModeUpdate = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), currentModeId: zSessionModeId, }); /** * A mode the agent can operate in. * * See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes) */ export const zSessionMode = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), description: z.union([z.string(), z.null()]).optional(), id: zSessionModeId, name: z.string(), }); /** * The set of modes and the one currently active. */ export const zSessionModeState = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), availableModes: z.array(zSessionMode), currentModeId: zSessionModeId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * The set of models and the one currently active. * * @experimental */ export const zSessionModelState = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), availableModels: z.array(zModelInfo), currentModelId: zModelId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Response from forking an existing session. * * @experimental */ export const zForkSessionResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), configOptions: z.union([z.array(zSessionConfigOption), z.null()]).optional(), models: z.union([zSessionModelState, z.null()]).optional(), modes: z.union([zSessionModeState, z.null()]).optional(), sessionId: zSessionId, }); /** * Response from loading an existing session. */ export const zLoadSessionResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), configOptions: z.union([z.array(zSessionConfigOption), z.null()]).optional(), models: z.union([zSessionModelState, z.null()]).optional(), modes: z.union([zSessionModeState, z.null()]).optional(), }); /** * Response from creating a new session. * * See protocol docs: [Creating a Session](https://agentclientprotocol.com/protocol/session-setup#creating-a-session) */ export const zNewSessionResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), configOptions: z.union([z.array(zSessionConfigOption), z.null()]).optional(), models: z.union([zSessionModelState, z.null()]).optional(), modes: z.union([zSessionModeState, z.null()]).optional(), sessionId: zSessionId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Response from resuming an existing session. * * @experimental */ export const zResumeSessionResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), configOptions: z.union([z.array(zSessionConfigOption), z.null()]).optional(), models: z.union([zSessionModelState, z.null()]).optional(), modes: z.union([zSessionModeState, z.null()]).optional(), }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Capabilities for the `session/resume` method. * * By supplying `{}` it means that the agent supports resuming of sessions. * * @experimental */ export const zSessionResumeCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * Session capabilities supported by the agent. * * As a baseline, all Agents **MUST** support `session/new`, `session/prompt`, `session/cancel`, and `session/update`. * * Optionally, they **MAY** support other session methods and notifications by specifying additional capabilities. * * Note: `session/load` is still handled by the top-level `load_session` capability. This will be unified in future versions of the protocol. * * See protocol docs: [Session Capabilities](https://agentclientprotocol.com/protocol/initialization#session-capabilities) */ export const zSessionCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), fork: z.union([zSessionForkCapabilities, z.null()]).optional(), list: z.union([zSessionListCapabilities, z.null()]).optional(), resume: z.union([zSessionResumeCapabilities, z.null()]).optional(), }); /** * Capabilities supported by the agent. * * Advertised during initialization to inform the client about * available features and content types. * * See protocol docs: [Agent Capabilities](https://agentclientprotocol.com/protocol/initialization#agent-capabilities) */ export const zAgentCapabilities = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), loadSession: z.boolean().optional().default(false), mcpCapabilities: zMcpCapabilities .optional() .default({ http: false, sse: false }), promptCapabilities: zPromptCapabilities.optional().default({ audio: false, embeddedContext: false, image: false, }), sessionCapabilities: zSessionCapabilities.optional().default({}), }); /** * Response to the `initialize` method. * * Contains the negotiated protocol version and agent capabilities. * * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization) */ export const zInitializeResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), agentCapabilities: zAgentCapabilities.optional().default({ loadSession: false, mcpCapabilities: { http: false, sse: false }, promptCapabilities: { audio: false, embeddedContext: false, image: false, }, sessionCapabilities: {}, }), agentInfo: z.union([zImplementation, z.null()]).optional(), authMethods: z.array(zAuthMethod).optional().default([]), protocolVersion: zProtocolVersion, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Request parameters for setting a session configuration option. * * @experimental */ export const zSetSessionConfigOptionRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), configId: zSessionConfigId, sessionId: zSessionId, value: zSessionConfigValueId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Response to `session/set_config_option` method. * * @experimental */ export const zSetSessionConfigOptionResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), configOptions: z.array(zSessionConfigOption), }); /** * Request parameters for setting a session mode. */ export const zSetSessionModeRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), modeId: zSessionModeId, sessionId: zSessionId, }); /** * Response to `session/set_mode` method. */ export const zSetSessionModeResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Request parameters for setting a session model. * * @experimental */ export const zSetSessionModelRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), modelId: zModelId, sessionId: zSessionId, }); /** * **UNSTABLE** * * This capability is not part of the spec yet, and may be removed or changed at any point. * * Response to `session/set_model` method. * * @experimental */ export const zSetSessionModelResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); /** * Reasons why an agent stops processing a prompt turn. * * See protocol docs: [Stop Reasons](https://agentclientprotocol.com/protocol/prompt-turn#stop-reasons) */ export const zStopReason = z.union([ z.literal("end_turn"), z.literal("max_tokens"), z.literal("max_turn_requests"), z.literal("refusal"), z.literal("cancelled"), ]); /** * Response from processing a user prompt. * * See protocol docs: [Check for Completion](https://agentclientprotocol.com/protocol/prompt-turn#4-check-for-completion) */ export const zPromptResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), stopReason: zStopReason, }); export const zAgentResponse = z.union([ z.object({ id: zRequestId, result: z.union([ zInitializeResponse, zAuthenticateResponse, zNewSessionResponse, zLoadSessionResponse, zListSessionsResponse, zForkSessionResponse, zResumeSessionResponse, zSetSessionModeResponse, zSetSessionConfigOptionResponse, zPromptResponse, zSetSessionModelResponse, zExtResponse, ]), }), z.object({ error: zError, id: zRequestId, }), ]); /** * Embed a terminal created with `terminal/create` by its id. * * The terminal must be added before calling `terminal/release`. * * See protocol docs: [Terminal](https://agentclientprotocol.com/protocol/terminals) */ export const zTerminal = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), terminalId: z.string(), }); /** * Exit status of a terminal command. */ export const zTerminalExitStatus = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), exitCode: z .union([ z.number().int().gte(0).max(4294967295, { message: "Invalid value: Expected uint32 to be <= 4294967295", }), z.null(), ]) .optional(), signal: z.union([z.string(), z.null()]).optional(), }); /** * Request to get the current output and status of a terminal. */ export const zTerminalOutputRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), sessionId: zSessionId, terminalId: z.string(), }); /** * Response containing the terminal output and exit status. */ export const zTerminalOutputResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), exitStatus: z.union([zTerminalExitStatus, z.null()]).optional(), output: z.string(), truncated: z.boolean(), }); /** * Text provided to or from an LLM. */ export const zTextContent = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), annotations: z.union([zAnnotations, z.null()]).optional(), text: z.string(), }); /** * Text-based resource contents. */ export const zTextResourceContents = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), mimeType: z.union([z.string(), z.null()]).optional(), text: z.string(), uri: z.string(), }); /** * Resource content that can be embedded in a message. */ export const zEmbeddedResourceResource = z.union([ zTextResourceContents, zBlobResourceContents, ]); /** * The contents of a resource, embedded into a prompt or tool call result. */ export const zEmbeddedResource = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), annotations: z.union([zAnnotations, z.null()]).optional(), resource: zEmbeddedResourceResource, }); /** * Content blocks represent displayable information in the Agent Client Protocol. * * They provide a structured way to handle various types of user-facing content—whether * it's text from language models, images for analysis, or embedded resources for context. * * Content blocks appear in: * - User prompts sent via `session/prompt` * - Language model output streamed through `session/update` notifications * - Progress updates and results from tool calls * * This structure is compatible with the Model Context Protocol (MCP), enabling * agents to seamlessly forward content from MCP tool outputs without transformation. * * See protocol docs: [Content](https://agentclientprotocol.com/protocol/content) */ export const zContentBlock = z.union([ zTextContent.and(z.object({ type: z.literal("text"), })), zImageContent.and(z.object({ type: z.literal("image"), })), zAudioContent.and(z.object({ type: z.literal("audio"), })), zResourceLink.and(z.object({ type: z.literal("resource_link"), })), zEmbeddedResource.and(z.object({ type: z.literal("resource"), })), ]); /** * Standard content block (text, images, resources). */ export const zContent = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), content: zContentBlock, }); /** * A streamed item of content */ export const zContentChunk = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), content: zContentBlock, }); /** * Request parameters for sending a user prompt to the agent. * * Contains the user's message and any additional context. * * See protocol docs: [User Message](https://agentclientprotocol.com/protocol/prompt-turn#1-user-message) */ export const zPromptRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), prompt: z.array(zContentBlock), sessionId: zSessionId, }); export const zClientRequest = z.object({ id: zRequestId, method: z.string(), params: z .union([ z.union([ zInitializeRequest, zAuthenticateRequest, zNewSessionRequest, zLoadSessionRequest, zListSessionsRequest, zForkSessionRequest, zResumeSessionRequest, zSetSessionModeRequest, zSetSessionConfigOptionRequest, zPromptRequest, zSetSessionModelRequest, zExtRequest, ]), z.null(), ]) .optional(), }); /** * Content produced by a tool call. * * Tool calls can produce different types of content including * standard content blocks (text, images) or file diffs. * * See protocol docs: [Content](https://agentclientprotocol.com/protocol/tool-calls#content) */ export const zToolCallContent = z.union([ zContent.and(z.object({ type: z.literal("content"), })), zDiff.and(z.object({ type: z.literal("diff"), })), zTerminal.and(z.object({ type: z.literal("terminal"), })), ]); /** * Unique identifier for a tool call within a session. */ export const zToolCallId = z.string(); /** * A file location being accessed or modified by a tool. * * Enables clients to implement "follow-along" features that track * which files the agent is working with in real-time. * * See protocol docs: [Following the Agent](https://agentclientprotocol.com/protocol/tool-calls#following-the-agent) */ export const zToolCallLocation = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), line: z .union([ z.number().int().gte(0).max(4294967295, { message: "Invalid value: Expected uint32 to be <= 4294967295", }), z.null(), ]) .optional(), path: z.string(), }); /** * Execution status of a tool call. * * Tool calls progress through different statuses during their lifecycle. * * See protocol docs: [Status](https://agentclientprotocol.com/protocol/tool-calls#status) */ export const zToolCallStatus = z.union([ z.literal("pending"), z.literal("in_progress"), z.literal("completed"), z.literal("failed"), ]); /** * Categories of tools that can be invoked. * * Tool kinds help clients choose appropriate icons and optimize how they * display tool execution progress. * * See protocol docs: [Creating](https://agentclientprotocol.com/protocol/tool-calls#creating) */ export const zToolKind = z.union([ z.literal("read"), z.literal("edit"), z.literal("delete"), z.literal("move"), z.literal("search"), z.literal("execute"), z.literal("think"), z.literal("fetch"), z.literal("switch_mode"), z.literal("other"), ]); /** * Represents a tool call that the language model has requested. * * Tool calls are actions that the agent executes on behalf of the language model, * such as reading files, executing code, or fetching data from external sources. * * See protocol docs: [Tool Calls](https://agentclientprotocol.com/protocol/tool-calls) */ export const zToolCall = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), content: z.array(zToolCallContent).optional(), kind: zToolKind.optional(), locations: z.array(zToolCallLocation).optional(), rawInput: z.unknown().optional(), rawOutput: z.unknown().optional(), status: zToolCallStatus.optional(), title: z.string(), toolCallId: zToolCallId, }); /** * An update to an existing tool call. * * Used to report progress and results as tools execute. All fields except * the tool call ID are optional - only changed fields need to be included. * * See protocol docs: [Updating](https://agentclientprotocol.com/protocol/tool-calls#updating) */ export const zToolCallUpdate = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), content: z.union([z.array(zToolCallContent), z.null()]).optional(), kind: z.union([zToolKind, z.null()]).optional(), locations: z.union([z.array(zToolCallLocation), z.null()]).optional(), rawInput: z.unknown().optional(), rawOutput: z.unknown().optional(), status: z.union([zToolCallStatus, z.null()]).optional(), title: z.union([z.string(), z.null()]).optional(), toolCallId: zToolCallId, }); /** * Request for user permission to execute a tool call. * * Sent when the agent needs authorization before performing a sensitive operation. * * See protocol docs: [Requesting Permission](https://agentclientprotocol.com/protocol/tool-calls#requesting-permission) */ export const zRequestPermissionRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), options: z.array(zPermissionOption), sessionId: zSessionId, toolCall: zToolCallUpdate, }); /** * All text that was typed after the command name is provided as input. */ export const zUnstructuredCommandInput = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), hint: z.string(), }); /** * unstructured * * All text that was typed after the command name is provided as input. */ export const zAvailableCommandInput = zUnstructuredCommandInput; /** * Information about a command. */ export const zAvailableCommand = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), description: z.string(), input: z.union([zAvailableCommandInput, z.null()]).optional(), name: z.string(), }); /** * Available commands are ready or have changed */ export const zAvailableCommandsUpdate = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), availableCommands: z.array(zAvailableCommand), }); /** * Different types of updates that can be sent during session processing. * * These updates provide real-time feedback about the agent's progress. * * See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-turn#3-agent-reports-output) */ export const zSessionUpdate = z.union([ zContentChunk.and(z.object({ sessionUpdate: z.literal("user_message_chunk"), })), zContentChunk.and(z.object({ sessionUpdate: z.literal("agent_message_chunk"), })), zContentChunk.and(z.object({ sessionUpdate: z.literal("agent_thought_chunk"), })), zToolCall.and(z.object({ sessionUpdate: z.literal("tool_call"), })), zToolCallUpdate.and(z.object({ sessionUpdate: z.literal("tool_call_update"), })), zPlan.and(z.object({ sessionUpdate: z.literal("plan"), })), zAvailableCommandsUpdate.and(z.object({ sessionUpdate: z.literal("available_commands_update"), })), zCurrentModeUpdate.and(z.object({ sessionUpdate: z.literal("current_mode_update"), })), zConfigOptionUpdate.and(z.object({ sessionUpdate: z.literal("config_option_update"), })), zSessionInfoUpdate.and(z.object({ sessionUpdate: z.literal("session_info_update"), })), ]); /** * Notification containing a session update from the agent. * * Used to stream real-time progress and results during prompt processing. * * See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-turn#3-agent-reports-output) */ export const zSessionNotification = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), sessionId: zSessionId, update: zSessionUpdate, }); export const zAgentNotification = z.object({ method: z.string(), params: z .union([z.union([zSessionNotification, zExtNotification]), z.null()]) .optional(), }); /** * Request to wait for a terminal command to exit. */ export const zWaitForTerminalExitRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), sessionId: zSessionId, terminalId: z.string(), }); /** * Response containing the exit status of a terminal command. */ export const zWaitForTerminalExitResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), exitCode: z .union([ z.number().int().gte(0).max(4294967295, { message: "Invalid value: Expected uint32 to be <= 4294967295", }), z.null(), ]) .optional(), signal: z.union([z.string(), z.null()]).optional(), }); /** * Request to write content to a text file. * * Only available if the client supports the `fs.writeTextFile` capability. */ export const zWriteTextFileRequest = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), content: z.string(), path: z.string(), sessionId: zSessionId, }); export const zAgentRequest = z.object({ id: zRequestId, method: z.string(), params: z .union([ z.union([ zWriteTextFileRequest, zReadTextFileRequest, zRequestPermissionRequest, zCreateTerminalRequest, zTerminalOutputRequest, zReleaseTerminalRequest, zWaitForTerminalExitRequest, zKillTerminalCommandRequest, zExtRequest, ]), z.null(), ]) .optional(), }); /** * Response to `fs/write_text_file` */ export const zWriteTextFileResponse = z.object({ _meta: z.union([z.record(z.string(), z.unknown()), z.null()]).optional(), }); export const zClientResponse = z.union([ z.object({ id: zRequestId, result: z.union([ zWriteTextFileResponse, zReadTextFileResponse, zRequestPermissionResponse, zCreateTerminalResponse, zTerminalOutputResponse, zReleaseTerminalResponse, zWaitForTerminalExitResponse, zKillTerminalCommandResponse, zExtResponse, ]), }), z.object({ error: zError, id: zRequestId, }), ]); //# sourceMappingURL=zod.gen.js.map