From 41519269f72f02fa35343117fd0786737c25e3f7 Mon Sep 17 00:00:00 2001 From: Ben Brandt Date: Fri, 26 Jun 2026 12:40:27 +0200 Subject: [PATCH 1/3] fix(schema): Default malformed capabilities on error --- agent-client-protocol-schema/src/v1/agent.rs | 76 +++++++++++++++++++ agent-client-protocol-schema/src/v1/client.rs | 53 +++++++++++++ agent-client-protocol-schema/src/v2/agent.rs | 43 +++++++++++ agent-client-protocol-schema/src/v2/client.rs | 15 ++++ schema/v1/schema.json | 34 ++++++--- schema/v1/schema.unstable.json | 41 +++++++--- schema/v2/schema.json | 3 + schema/v2/schema.unstable.json | 4 + 8 files changed, 249 insertions(+), 20 deletions(-) diff --git a/agent-client-protocol-schema/src/v1/agent.rs b/agent-client-protocol-schema/src/v1/agent.rs index 5da02c032..bc89cb32c 100644 --- a/agent-client-protocol-schema/src/v1/agent.rs +++ b/agent-client-protocol-schema/src/v1/agent.rs @@ -57,6 +57,8 @@ pub struct InitializeRequest { /// The latest protocol version supported by the client. pub protocol_version: ProtocolVersion, /// Capabilities supported by the client. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub client_capabilities: ClientCapabilities, /// Information about the Client name and version sent to the Agent. @@ -131,6 +133,8 @@ pub struct InitializeResponse { /// The client should disconnect, if it doesn't support this version. pub protocol_version: ProtocolVersion, /// Capabilities supported by the agent. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub agent_capabilities: AgentCapabilities, /// Authentication methods supported by the agent. @@ -3697,18 +3701,28 @@ impl DisableProviderResponse { #[non_exhaustive] pub struct AgentCapabilities { /// Whether the agent supports `session/load`. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub load_session: bool, /// Prompt capabilities supported by the agent. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub prompt_capabilities: PromptCapabilities, /// MCP capabilities supported by the agent. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub mcp_capabilities: McpCapabilities, /// Session lifecycle and prompt capabilities advertised by the agent. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub session_capabilities: SessionCapabilities, /// Authentication-related capabilities supported by the agent. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub auth: AgentAuthCapabilities, /// **UNSTABLE** @@ -4253,21 +4267,28 @@ impl SessionCloseCapabilities { /// the agent can process. /// /// See protocol docs: [Prompt Capabilities](https://agentclientprotocol.com/protocol/initialization#prompt-capabilities) +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] #[non_exhaustive] pub struct PromptCapabilities { /// Agent supports [`ContentBlock::Image`]. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub image: bool, /// Agent supports [`ContentBlock::Audio`]. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub audio: bool, /// Agent supports embedded context in `session/prompt` requests. /// /// When enabled, the Client is allowed to include [`ContentBlock::Resource`] /// in prompt requests for pieces of context that are referenced in the message. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub embedded_context: bool, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -4323,15 +4344,20 @@ impl PromptCapabilities { } /// MCP capabilities supported by the agent +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] #[non_exhaustive] pub struct McpCapabilities { /// Agent supports [`McpServer::Http`]. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub http: bool, /// Agent supports [`McpServer::Sse`]. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub sse: bool, /// **UNSTABLE** @@ -4340,6 +4366,8 @@ pub struct McpCapabilities { /// /// Agent supports [`McpServer::Acp`]. #[cfg(feature = "unstable_mcp_over_acp")] + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub acp: bool, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -5015,6 +5043,54 @@ mod test_serialization { .count() } + #[test] + fn test_initialize_capabilities_default_on_malformed_values() { + let request: InitializeRequest = serde_json::from_value(json!({ + "protocolVersion": 1, + "clientCapabilities": false + })) + .unwrap(); + assert_eq!(request.client_capabilities, ClientCapabilities::default()); + + let response: InitializeResponse = serde_json::from_value(json!({ + "protocolVersion": 1, + "agentCapabilities": false + })) + .unwrap(); + assert_eq!(response.agent_capabilities, AgentCapabilities::default()); + } + + #[test] + fn test_agent_capabilities_default_on_malformed_values() { + let capabilities: AgentCapabilities = serde_json::from_value(json!({ + "loadSession": "yes", + "promptCapabilities": { + "image": "yes", + "audio": true, + "embeddedContext": {} + }, + "mcpCapabilities": { + "http": "yes", + "sse": true + }, + "sessionCapabilities": false, + "auth": false + })) + .unwrap(); + + assert!(!capabilities.load_session); + assert!(!capabilities.prompt_capabilities.image); + assert!(capabilities.prompt_capabilities.audio); + assert!(!capabilities.prompt_capabilities.embedded_context); + assert!(!capabilities.mcp_capabilities.http); + assert!(capabilities.mcp_capabilities.sse); + assert_eq!( + capabilities.session_capabilities, + SessionCapabilities::default() + ); + assert_eq!(capabilities.auth, AgentAuthCapabilities::default()); + } + #[test] fn test_mcp_server_stdio_serialization() { let server = McpServer::Stdio( diff --git a/agent-client-protocol-schema/src/v1/client.rs b/agent-client-protocol-schema/src/v1/client.rs index 7075a7350..a9212bf28 100644 --- a/agent-client-protocol-schema/src/v1/client.rs +++ b/agent-client-protocol-schema/src/v1/client.rs @@ -1586,9 +1586,13 @@ impl TerminalExitStatus { pub struct ClientCapabilities { /// File system capabilities supported by the client. /// Determines which file operations the agent can request. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub fs: FileSystemCapabilities, /// Whether the Client support all `terminal/*` methods. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub terminal: bool, /// **UNSTABLE** @@ -1622,6 +1626,8 @@ pub struct ClientCapabilities { /// Determines which authentication method types the agent may include /// in its `InitializeResponse`. #[cfg(feature = "unstable_auth_methods")] + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub auth: AuthCapabilities, /// **UNSTABLE** @@ -1949,6 +1955,7 @@ impl BooleanConfigOptionCapabilities { /// method types the client can handle. This governs opt-in types that require /// additional client-side support. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1957,6 +1964,8 @@ pub struct AuthCapabilities { /// Whether the client supports `terminal` authentication methods. /// /// When `true`, the agent may include `terminal` entries in its authentication methods. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub terminal: bool, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -2001,15 +2010,20 @@ impl AuthCapabilities { /// File system capabilities that a client may support. /// /// See protocol docs: [FileSystem](https://agentclientprotocol.com/protocol/initialization#filesystem) +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] #[non_exhaustive] pub struct FileSystemCapabilities { /// Whether the Client supports `fs/read_text_file` requests. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub read_text_file: bool, /// Whether the Client supports `fs/write_text_file` requests. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub write_text_file: bool, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -2408,6 +2422,45 @@ impl AgentNotification { mod tests { use super::*; + #[test] + fn test_client_capabilities_default_on_malformed_values() { + use serde_json::json; + + let capabilities: ClientCapabilities = serde_json::from_value(json!({ + "fs": { + "readTextFile": "yes", + "writeTextFile": true + }, + "terminal": {} + })) + .unwrap(); + + assert!(!capabilities.fs.read_text_file); + assert!(capabilities.fs.write_text_file); + assert!(!capabilities.terminal); + + let capabilities: ClientCapabilities = serde_json::from_value(json!({ + "fs": false + })) + .unwrap(); + assert_eq!(capabilities.fs, FileSystemCapabilities::default()); + + #[cfg(feature = "unstable_auth_methods")] + { + let capabilities: ClientCapabilities = serde_json::from_value(json!({ + "auth": false + })) + .unwrap(); + assert_eq!(capabilities.auth, AuthCapabilities::default()); + + let capabilities: AuthCapabilities = serde_json::from_value(json!({ + "terminal": {} + })) + .unwrap(); + assert!(!capabilities.terminal); + } + } + #[test] fn test_serialization_behavior() { use serde_json::json; diff --git a/agent-client-protocol-schema/src/v2/agent.rs b/agent-client-protocol-schema/src/v2/agent.rs index 4c4ea8749..a1e91a211 100644 --- a/agent-client-protocol-schema/src/v2/agent.rs +++ b/agent-client-protocol-schema/src/v2/agent.rs @@ -56,6 +56,8 @@ pub struct InitializeRequest { /// The latest protocol version supported by the client. pub protocol_version: ProtocolVersion, /// Capabilities supported by the client. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub capabilities: ClientCapabilities, /// Information about the implementation sending this initialize request. @@ -118,6 +120,8 @@ pub struct InitializeResponse { /// The client should disconnect, if it doesn't support this version. pub protocol_version: ProtocolVersion, /// Capabilities supported by the agent. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub capabilities: AgentCapabilities, /// Authentication methods supported by the agent. @@ -3629,6 +3633,8 @@ pub struct AgentCapabilities { #[serde(default)] pub session: Option, /// Authentication-related capabilities supported by the agent. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub auth: AgentAuthCapabilities, /// **UNSTABLE** @@ -5255,6 +5261,43 @@ mod test_serialization { .count() } + #[test] + fn test_initialize_capabilities_default_on_malformed_values() { + let request: InitializeRequest = serde_json::from_value(json!({ + "protocolVersion": 2, + "capabilities": false, + "info": { + "name": "client", + "version": "1.0.0" + } + })) + .unwrap(); + assert_eq!(request.capabilities, ClientCapabilities::default()); + + let response: InitializeResponse = serde_json::from_value(json!({ + "protocolVersion": 2, + "capabilities": false, + "info": { + "name": "agent", + "version": "1.0.0" + } + })) + .unwrap(); + assert_eq!(response.capabilities, AgentCapabilities::default()); + } + + #[test] + fn test_agent_capabilities_default_on_malformed_values() { + let capabilities: AgentCapabilities = serde_json::from_value(json!({ + "session": false, + "auth": false + })) + .unwrap(); + + assert!(capabilities.session.is_none()); + assert_eq!(capabilities.auth, AgentAuthCapabilities::default()); + } + #[test] fn test_mcp_server_stdio_serialization() { let server = McpServer::Stdio( diff --git a/agent-client-protocol-schema/src/v2/client.rs b/agent-client-protocol-schema/src/v2/client.rs index 520e9efba..acc1928b1 100644 --- a/agent-client-protocol-schema/src/v2/client.rs +++ b/agent-client-protocol-schema/src/v2/client.rs @@ -1473,6 +1473,8 @@ pub struct ClientCapabilities { /// Determines which authentication method types the agent may include /// in its `InitializeResponse`. #[cfg(feature = "unstable_auth_methods")] + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub auth: AuthCapabilities, /// **UNSTABLE** @@ -1917,6 +1919,19 @@ impl AgentNotification { mod tests { use super::*; + #[cfg(feature = "unstable_auth_methods")] + #[test] + fn test_client_capabilities_auth_defaults_on_malformed_value() { + use serde_json::json; + + let capabilities: ClientCapabilities = serde_json::from_value(json!({ + "auth": false + })) + .unwrap(); + + assert_eq!(capabilities.auth, AuthCapabilities::default()); + } + #[test] fn test_serialization_behavior() { use serde_json::json; diff --git a/schema/v1/schema.json b/schema/v1/schema.json index 8654f488c..9a774017c 100644 --- a/schema/v1/schema.json +++ b/schema/v1/schema.json @@ -1442,6 +1442,7 @@ }, "agentCapabilities": { "description": "Capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "loadSession": false, "promptCapabilities": { @@ -1508,10 +1509,12 @@ "loadSession": { "description": "Whether the agent supports `session/load`.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "promptCapabilities": { "description": "Prompt capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "image": false, "audio": false, @@ -1525,6 +1528,7 @@ }, "mcpCapabilities": { "description": "MCP capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "http": false, "sse": false @@ -1537,6 +1541,7 @@ }, "sessionCapabilities": { "description": "Session lifecycle and prompt capabilities advertised by the agent.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { @@ -1546,6 +1551,7 @@ }, "auth": { "description": "Authentication-related capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { @@ -1567,17 +1573,20 @@ "image": { "description": "Agent supports [`ContentBlock::Image`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "audio": { "description": "Agent supports [`ContentBlock::Audio`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "embeddedContext": { "description": "Agent supports embedded context in `session/prompt` requests.\n\nWhen enabled, the Client is allowed to include [`ContentBlock::Resource`]\nin prompt requests for pieces of context that are referenced in the message.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1593,12 +1602,14 @@ "http": { "description": "Agent supports [`McpServer::Http`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "sse": { "description": "Agent supports [`McpServer::Sse`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3324,6 +3335,7 @@ }, "clientCapabilities": { "description": "Capabilities supported by the client.", + "x-deserialize-default-on-error": true, "default": { "fs": { "readTextFile": false, @@ -3365,6 +3377,7 @@ "properties": { "fs": { "description": "File system capabilities supported by the client.\nDetermines which file operations the agent can request.", + "x-deserialize-default-on-error": true, "default": { "readTextFile": false, "writeTextFile": false @@ -3378,7 +3391,8 @@ "terminal": { "description": "Whether the Client support all `terminal/*` methods.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3394,12 +3408,14 @@ "readTextFile": { "description": "Whether the Client supports `fs/read_text_file` requests.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "writeTextFile": { "description": "Whether the Client supports `fs/write_text_file` requests.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", diff --git a/schema/v1/schema.unstable.json b/schema/v1/schema.unstable.json index d0655f2d9..18a318a5e 100644 --- a/schema/v1/schema.unstable.json +++ b/schema/v1/schema.unstable.json @@ -2314,6 +2314,7 @@ }, "agentCapabilities": { "description": "Capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "loadSession": false, "promptCapabilities": { @@ -2381,10 +2382,12 @@ "loadSession": { "description": "Whether the agent supports `session/load`.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "promptCapabilities": { "description": "Prompt capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "image": false, "audio": false, @@ -2398,6 +2401,7 @@ }, "mcpCapabilities": { "description": "MCP capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "http": false, "sse": false, @@ -2411,6 +2415,7 @@ }, "sessionCapabilities": { "description": "Session lifecycle and prompt capabilities advertised by the agent.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { @@ -2420,6 +2425,7 @@ }, "auth": { "description": "Authentication-related capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { @@ -2477,17 +2483,20 @@ "image": { "description": "Agent supports [`ContentBlock::Image`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "audio": { "description": "Agent supports [`ContentBlock::Audio`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "embeddedContext": { "description": "Agent supports embedded context in `session/prompt` requests.\n\nWhen enabled, the Client is allowed to include [`ContentBlock::Resource`]\nin prompt requests for pieces of context that are referenced in the message.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2503,17 +2512,20 @@ "http": { "description": "Agent supports [`McpServer::Http`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "sse": { "description": "Agent supports [`McpServer::Sse`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "acp": { "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nAgent supports [`McpServer::Acp`].", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -5797,6 +5809,7 @@ }, "clientCapabilities": { "description": "Capabilities supported by the client.", + "x-deserialize-default-on-error": true, "default": { "fs": { "readTextFile": false, @@ -5841,6 +5854,7 @@ "properties": { "fs": { "description": "File system capabilities supported by the client.\nDetermines which file operations the agent can request.", + "x-deserialize-default-on-error": true, "default": { "readTextFile": false, "writeTextFile": false @@ -5854,7 +5868,8 @@ "terminal": { "description": "Whether the Client support all `terminal/*` methods.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "session": { "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nSession-related capabilities supported by the client.", @@ -5882,6 +5897,7 @@ }, "auth": { "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nAuthentication capabilities supported by the client.\nDetermines which authentication method types the agent may include\nin its `InitializeResponse`.", + "x-deserialize-default-on-error": true, "default": { "terminal": false }, @@ -5938,12 +5954,14 @@ "readTextFile": { "description": "Whether the Client supports `fs/read_text_file` requests.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "writeTextFile": { "description": "Whether the Client supports `fs/write_text_file` requests.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6027,7 +6045,8 @@ "terminal": { "description": "Whether the client supports `terminal` authentication methods.\n\nWhen `true`, the agent may include `terminal` entries in its authentication methods.", "type": "boolean", - "default": false + "default": false, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", diff --git a/schema/v2/schema.json b/schema/v2/schema.json index e2e11e0de..d370d26d7 100644 --- a/schema/v2/schema.json +++ b/schema/v2/schema.json @@ -1520,6 +1520,7 @@ }, "capabilities": { "description": "Capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "auth": {} }, @@ -1582,6 +1583,7 @@ }, "auth": { "description": "Authentication-related capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { @@ -3952,6 +3954,7 @@ }, "capabilities": { "description": "Capabilities supported by the client.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { diff --git a/schema/v2/schema.unstable.json b/schema/v2/schema.unstable.json index eae95e0f8..1db4c15b1 100644 --- a/schema/v2/schema.unstable.json +++ b/schema/v2/schema.unstable.json @@ -2521,6 +2521,7 @@ }, "capabilities": { "description": "Capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": { "auth": {} }, @@ -2583,6 +2584,7 @@ }, "auth": { "description": "Authentication-related capabilities supported by the agent.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { @@ -6582,6 +6584,7 @@ }, "capabilities": { "description": "Capabilities supported by the client.", + "x-deserialize-default-on-error": true, "default": { "auth": {} }, @@ -6615,6 +6618,7 @@ "properties": { "auth": { "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nAuthentication capabilities supported by the client.\nDetermines which authentication method types the agent may include\nin its `InitializeResponse`.", + "x-deserialize-default-on-error": true, "default": {}, "allOf": [ { From 74f09f10a258ba81efa98a07a3e550e001a18498 Mon Sep 17 00:00:00 2001 From: Ben Brandt Date: Fri, 26 Jun 2026 12:57:33 +0200 Subject: [PATCH 2/3] fix(schema): Default invalid meta to None --- agent-client-protocol-schema/src/v1/agent.rs | 244 +++++++++++++++++ agent-client-protocol-schema/src/v1/client.rs | 131 +++++++++ .../src/v1/content.rs | 42 +++ .../src/v1/elicitation.rs | 59 ++++ agent-client-protocol-schema/src/v1/mcp.rs | 26 +- agent-client-protocol-schema/src/v1/nes.rs | 188 +++++++++++++ agent-client-protocol-schema/src/v1/plan.rs | 30 +++ .../src/v1/protocol_level.rs | 6 +- .../src/v1/tool_call.rs | 23 ++ agent-client-protocol-schema/src/v2/agent.rs | 254 ++++++++++++++++++ agent-client-protocol-schema/src/v2/client.rs | 89 ++++++ .../src/v2/content.rs | 42 +++ .../src/v2/elicitation.rs | 59 ++++ agent-client-protocol-schema/src/v2/mcp.rs | 26 +- agent-client-protocol-schema/src/v2/nes.rs | 188 +++++++++++++ agent-client-protocol-schema/src/v2/plan.rs | 23 ++ .../src/v2/protocol_level.rs | 6 +- .../src/v2/tool_call.rs | 19 ++ schema-generator/src/main.rs | 72 +++++ schema/v1/schema.json | 96 +++++++ schema/v1/schema.unstable.json | 195 ++++++++++++++ schema/v2/schema.json | 86 ++++++ schema/v2/schema.unstable.json | 181 +++++++++++++ 23 files changed, 2081 insertions(+), 4 deletions(-) diff --git a/agent-client-protocol-schema/src/v1/agent.rs b/agent-client-protocol-schema/src/v1/agent.rs index bc89cb32c..53ff7f341 100644 --- a/agent-client-protocol-schema/src/v1/agent.rs +++ b/agent-client-protocol-schema/src/v1/agent.rs @@ -73,6 +73,9 @@ pub struct InitializeRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -154,6 +157,9 @@ pub struct InitializeResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -207,6 +213,7 @@ impl InitializeResponse { /// Metadata about the implementation of the client or agent. /// Describes the name and version of an ACP implementation, with an optional /// title for UI representation. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -228,6 +235,9 @@ pub struct Implementation { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -271,6 +281,7 @@ impl Implementation { /// Request parameters for the authenticate method. /// /// Specifies which authentication method to use. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = AUTHENTICATE_METHOD_NAME))] @@ -285,6 +296,9 @@ pub struct AuthenticateRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -312,6 +326,7 @@ impl AuthenticateRequest { } /// Response to the `authenticate` method. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = AUTHENTICATE_METHOD_NAME))] @@ -323,6 +338,9 @@ pub struct AuthenticateResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -351,6 +369,7 @@ impl AuthenticateResponse { /// Request parameters for the logout method. /// /// Terminates the current authenticated session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = LOGOUT_METHOD_NAME))] @@ -362,6 +381,9 @@ pub struct LogoutRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -386,6 +408,7 @@ impl LogoutRequest { } /// Response to the `logout` method. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = LOGOUT_METHOD_NAME))] @@ -397,6 +420,9 @@ pub struct LogoutResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -439,6 +465,9 @@ pub struct AgentAuthCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -472,6 +501,7 @@ impl AgentAuthCapabilities { /// Logout capabilities supported by the agent. /// /// By supplying `{}` it means that the agent supports the logout method. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -481,6 +511,9 @@ pub struct LogoutCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -605,6 +638,7 @@ impl AuthMethod { /// Agent handles authentication itself. /// /// This is the default authentication method type. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -621,6 +655,9 @@ pub struct AuthMethodAgent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -664,6 +701,7 @@ impl AuthMethodAgent { /// /// The user provides credentials that the client passes to the agent as environment variables. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -684,6 +722,9 @@ pub struct AuthMethodEnvVar { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -739,6 +780,7 @@ impl AuthMethodEnvVar { /// /// Describes a single environment variable for an [`AuthMethodEnvVar`] authentication method. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -766,6 +808,9 @@ pub struct AuthEnvVar { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -843,6 +888,7 @@ impl AuthEnvVar { /// /// The client runs an interactive terminal for the user to authenticate via a TUI. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -865,6 +911,9 @@ pub struct AuthMethodTerminal { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -949,6 +998,9 @@ pub struct NewSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1022,6 +1074,9 @@ pub struct NewSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1076,6 +1131,7 @@ impl NewSessionResponse { /// Only available if the Agent supports the `loadSession` capability. /// /// See protocol docs: [Loading Sessions](https://agentclientprotocol.com/protocol/session-setup#loading-sessions) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_LOAD_METHOD_NAME))] @@ -1101,6 +1157,9 @@ pub struct LoadSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1169,6 +1228,9 @@ pub struct LoadSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1224,6 +1286,7 @@ impl LoadSessionResponse { /// /// Only available if the Agent supports the `session.fork` capability. #[cfg(feature = "unstable_session_fork")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_FORK_METHOD_NAME))] @@ -1249,6 +1312,9 @@ pub struct ForkSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1325,6 +1391,9 @@ pub struct ForkSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1381,6 +1450,7 @@ impl ForkSessionResponse { /// This is useful for agents that can resume sessions but don't implement full session loading. /// /// Only available if the Agent supports the `sessionCapabilities.resume` capability. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_RESUME_METHOD_NAME))] @@ -1407,6 +1477,9 @@ pub struct ResumeSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1475,6 +1548,9 @@ pub struct ResumeSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1526,6 +1602,7 @@ impl ResumeSessionResponse { /// associated with the session. /// /// Only available if the Agent supports the `sessionCapabilities.close` capability. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_CLOSE_METHOD_NAME))] @@ -1539,6 +1616,9 @@ pub struct CloseSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1566,6 +1646,7 @@ impl CloseSessionRequest { } /// Response from closing a session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_CLOSE_METHOD_NAME))] @@ -1577,6 +1658,9 @@ pub struct CloseSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1605,6 +1689,7 @@ impl CloseSessionResponse { /// Request parameters for listing existing sessions. /// /// Only available if the Agent supports the `sessionCapabilities.list` capability. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_LIST_METHOD_NAME))] @@ -1620,6 +1705,9 @@ pub struct ListSessionsRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1677,6 +1765,9 @@ pub struct ListSessionsResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1716,6 +1807,7 @@ impl ListSessionsResponse { /// Request parameters for deleting an existing session from `session/list`. /// /// Only available if the Agent supports the `sessionCapabilities.delete` capability. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_DELETE_METHOD_NAME))] @@ -1729,6 +1821,9 @@ pub struct DeleteSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1756,6 +1851,7 @@ impl DeleteSessionRequest { } /// Response from deleting a session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_DELETE_METHOD_NAME))] @@ -1767,6 +1863,9 @@ pub struct DeleteSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1824,6 +1923,9 @@ pub struct SessionInfo { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1895,6 +1997,9 @@ pub struct SessionModeState { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1928,6 +2033,7 @@ impl SessionModeState { /// A mode the agent can operate in. /// /// See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1945,6 +2051,9 @@ pub struct SessionMode { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1996,6 +2105,7 @@ impl SessionModeId { } /// Request parameters for setting a session mode. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_SET_MODE_METHOD_NAME))] @@ -2011,6 +2121,9 @@ pub struct SetSessionModeRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2035,6 +2148,7 @@ impl SetSessionModeRequest { } /// Response to `session/set_mode` method. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_SET_MODE_METHOD_NAME))] @@ -2046,6 +2160,9 @@ pub struct SetSessionModeResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2117,6 +2234,7 @@ impl SessionConfigGroupId { } /// A possible value for a session configuration option. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2134,6 +2252,9 @@ pub struct SessionConfigSelectOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2170,6 +2291,7 @@ impl SessionConfigSelectOption { } /// A group of possible values for a session configuration option. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2186,6 +2308,9 @@ pub struct SessionConfigSelectGroup { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2361,6 +2486,9 @@ pub struct SessionConfigOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2535,6 +2663,7 @@ impl From<&str> for SessionConfigOptionValue { } /// Request parameters for setting a session configuration option. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_SET_CONFIG_OPTION_METHOD_NAME))] @@ -2560,6 +2689,9 @@ pub struct SetSessionConfigOptionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2627,6 +2759,9 @@ pub struct SetSessionConfigOptionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2691,6 +2826,7 @@ pub enum McpServer { } /// HTTP transport configuration for MCP. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2707,6 +2843,9 @@ pub struct McpServerHttp { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2743,6 +2882,7 @@ impl McpServerHttp { } /// SSE transport configuration for MCP. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2759,6 +2899,9 @@ pub struct McpServerSse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2827,6 +2970,7 @@ impl McpServerAcpId { /// /// The MCP server is provided by an ACP component and communicates over the ACP channel /// using `mcp/connect`, `mcp/message`, and `mcp/disconnect`. +#[serde_as] #[skip_serializing_none] #[cfg(feature = "unstable_mcp_over_acp")] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] @@ -2845,6 +2989,9 @@ pub struct McpServerAcp { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2874,6 +3021,7 @@ impl McpServerAcp { } /// Stdio transport configuration for MCP. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2892,6 +3040,9 @@ pub struct McpServerStdio { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2936,6 +3087,7 @@ impl McpServerStdio { } /// An environment variable to set when launching an MCP server. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2950,6 +3102,9 @@ pub struct EnvVariable { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2978,6 +3133,7 @@ impl EnvVariable { } /// An HTTP header to set when making requests to the MCP server. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2992,6 +3148,9 @@ pub struct HttpHeader { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3026,6 +3185,7 @@ impl HttpHeader { /// Contains the user's message and any additional context. /// /// See protocol docs: [User Message](https://agentclientprotocol.com/protocol/prompt-turn#1-user-message) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_PROMPT_METHOD_NAME))] @@ -3053,6 +3213,9 @@ pub struct PromptRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3107,6 +3270,9 @@ pub struct PromptResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3180,6 +3346,7 @@ pub enum StopReason { /// /// Token usage information for a prompt turn. #[cfg(feature = "unstable_end_turn_token_usage")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -3202,6 +3369,9 @@ pub struct Usage { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3295,6 +3465,7 @@ pub enum LlmProtocol { /// /// Current effective non-secret routing configuration for a provider. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -3309,6 +3480,9 @@ pub struct ProviderCurrentConfig { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3366,6 +3540,9 @@ pub struct ProviderInfo { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3407,6 +3584,7 @@ impl ProviderInfo { /// /// Request parameters for `providers/list`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_LIST_METHOD_NAME))] @@ -3418,6 +3596,9 @@ pub struct ListProvidersRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3464,6 +3645,9 @@ pub struct ListProvidersResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3499,6 +3683,7 @@ impl ListProvidersResponse { /// /// Replaces the full configuration for one provider id. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_SET_METHOD_NAME))] @@ -3520,6 +3705,9 @@ pub struct SetProviderRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3564,6 +3752,7 @@ impl SetProviderRequest { /// /// Response to `providers/set`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_SET_METHOD_NAME))] @@ -3575,6 +3764,9 @@ pub struct SetProviderResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3605,6 +3797,7 @@ impl SetProviderResponse { /// /// Request parameters for `providers/disable`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_DISABLE_METHOD_NAME))] @@ -3618,6 +3811,9 @@ pub struct DisableProviderRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3651,6 +3847,7 @@ impl DisableProviderRequest { /// /// Response to `providers/disable`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_DISABLE_METHOD_NAME))] @@ -3662,6 +3859,9 @@ pub struct DisableProviderResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3762,6 +3962,9 @@ pub struct AgentCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3865,6 +4068,7 @@ impl AgentCapabilities { /// /// By supplying `{}` it means that the agent supports provider configuration methods. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -3874,6 +4078,9 @@ pub struct ProvidersCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3960,6 +4167,9 @@ pub struct SessionCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4039,6 +4249,7 @@ impl SessionCapabilities { /// Capabilities for the `session/list` method. /// /// By supplying `{}` it means that the agent supports listing of sessions. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4048,6 +4259,9 @@ pub struct SessionListCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4074,6 +4288,7 @@ impl SessionListCapabilities { /// Capabilities for the `session/delete` method. /// /// Supplying `{}` means the agent supports deleting sessions from `session/list`. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4083,6 +4298,9 @@ pub struct SessionDeleteCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4112,6 +4330,7 @@ impl SessionDeleteCapabilities { /// field on supported session lifecycle requests. Agents that also support /// `session/list` may return `SessionInfo.additionalDirectories` to report the /// complete ordered additional-root list associated with a listed session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4121,6 +4340,9 @@ pub struct SessionAdditionalDirectoriesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4152,6 +4374,7 @@ impl SessionAdditionalDirectoriesCapabilities { /// /// By supplying `{}` it means that the agent supports forking of sessions. #[cfg(feature = "unstable_session_fork")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4161,6 +4384,9 @@ pub struct SessionForkCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4188,6 +4414,7 @@ impl SessionForkCapabilities { /// Capabilities for the `session/resume` method. /// /// By supplying `{}` it means that the agent supports resuming of sessions. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4197,6 +4424,9 @@ pub struct SessionResumeCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4223,6 +4453,7 @@ impl SessionResumeCapabilities { /// Capabilities for the `session/close` method. /// /// By supplying `{}` it means that the agent supports closing of sessions. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4232,6 +4463,9 @@ pub struct SessionCloseCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4296,6 +4530,9 @@ pub struct PromptCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4375,6 +4612,9 @@ pub struct McpCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4986,6 +5226,7 @@ impl ClientNotification { /// Notification to cancel ongoing operations for a session. /// /// See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/prompt-turn#cancellation) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_CANCEL_METHOD_NAME))] @@ -4999,6 +5240,9 @@ pub struct CancelNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v1/client.rs b/agent-client-protocol-schema/src/v1/client.rs index a9212bf28..7670b270f 100644 --- a/agent-client-protocol-schema/src/v1/client.rs +++ b/agent-client-protocol-schema/src/v1/client.rs @@ -41,6 +41,7 @@ use super::{ClientNesCapabilities, PositionEncodingKind}; /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = SESSION_UPDATE_NOTIFICATION))] @@ -56,6 +57,9 @@ pub struct SessionNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -137,6 +141,7 @@ pub enum SessionUpdate { /// The current mode of the session has changed /// /// See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -149,6 +154,9 @@ pub struct CurrentModeUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -191,6 +199,9 @@ pub struct ConfigOptionUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -221,6 +232,7 @@ impl ConfigOptionUpdate { /// /// 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. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -237,6 +249,9 @@ pub struct SessionInfoUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -295,6 +310,9 @@ pub struct UsageUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -331,6 +349,7 @@ impl UsageUpdate { } /// Cost information for a session. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -345,6 +364,9 @@ pub struct Cost { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -373,6 +395,7 @@ impl Cost { } /// A streamed item of content +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -390,6 +413,9 @@ pub struct ContentChunk { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -464,6 +490,9 @@ pub struct AvailableCommandsUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -511,6 +540,9 @@ pub struct AvailableCommand { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -556,6 +588,7 @@ pub enum AvailableCommandInput { } /// All text that was typed after the command name is provided as input. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -568,6 +601,9 @@ pub struct UnstructuredCommandInput { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -601,6 +637,7 @@ impl UnstructuredCommandInput { /// Sent when the agent needs authorization before performing a sensitive operation. /// /// See protocol docs: [Requesting Permission](https://agentclientprotocol.com/protocol/tool-calls#requesting-permission) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = SESSION_REQUEST_PERMISSION_METHOD_NAME))] @@ -618,6 +655,9 @@ pub struct RequestPermissionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -651,6 +691,7 @@ impl RequestPermissionRequest { } /// An option presented to the user when requesting permission. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -667,6 +708,9 @@ pub struct PermissionOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -732,6 +776,7 @@ pub enum PermissionOptionKind { } /// Response to a permission request. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "client", "x-method" = SESSION_REQUEST_PERMISSION_METHOD_NAME))] @@ -746,6 +791,9 @@ pub struct RequestPermissionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -792,6 +840,7 @@ pub enum RequestPermissionOutcome { } /// The user selected one of the provided options. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -804,6 +853,9 @@ pub struct SelectedPermissionOutcome { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -835,6 +887,7 @@ impl SelectedPermissionOutcome { /// Request to write content to a text file. /// /// Only available if the client supports the `fs.writeTextFile` capability. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "client", "x-method" = FS_WRITE_TEXT_FILE_METHOD_NAME))] @@ -852,6 +905,9 @@ pub struct WriteTextFileRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -885,6 +941,7 @@ impl WriteTextFileRequest { } /// Response to `fs/write_text_file` +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -896,6 +953,9 @@ pub struct WriteTextFileResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -924,6 +984,7 @@ impl WriteTextFileResponse { /// Request to read content from a text file. /// /// Only available if the client supports the `fs.readTextFile` capability. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "client", "x-method" = FS_READ_TEXT_FILE_METHOD_NAME))] @@ -943,6 +1004,9 @@ pub struct ReadTextFileRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -987,6 +1051,7 @@ impl ReadTextFileRequest { } /// Response containing the contents of a text file. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "client", "x-method" = FS_READ_TEXT_FILE_METHOD_NAME))] @@ -1000,6 +1065,9 @@ pub struct ReadTextFileResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1044,6 +1112,7 @@ impl TerminalId { } /// Request to create a new terminal and execute a command. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1076,6 +1145,9 @@ pub struct CreateTerminalRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1143,6 +1215,7 @@ impl CreateTerminalRequest { } /// Response containing the ID of the created terminal. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1156,6 +1229,9 @@ pub struct CreateTerminalResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1183,6 +1259,7 @@ impl CreateTerminalResponse { } /// Request to get the current output and status of a terminal. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1198,6 +1275,9 @@ pub struct TerminalOutputRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1226,6 +1306,7 @@ impl TerminalOutputRequest { } /// Response containing the terminal output and exit status. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1243,6 +1324,9 @@ pub struct TerminalOutputResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1279,6 +1363,7 @@ impl TerminalOutputResponse { } /// Request to release a terminal and free its resources. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1294,6 +1379,9 @@ pub struct ReleaseTerminalRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1322,6 +1410,7 @@ impl ReleaseTerminalRequest { } /// Response to terminal/release method +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1333,6 +1422,9 @@ pub struct ReleaseTerminalResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1357,6 +1449,7 @@ impl ReleaseTerminalResponse { } /// Request to kill a terminal without releasing it. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1372,6 +1465,9 @@ pub struct KillTerminalRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1400,6 +1496,7 @@ impl KillTerminalRequest { } /// Response to `terminal/kill` method +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1411,6 +1508,9 @@ pub struct KillTerminalResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1435,6 +1535,7 @@ impl KillTerminalResponse { } /// Request to wait for a terminal command to exit. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1450,6 +1551,9 @@ pub struct WaitForTerminalExitRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1478,6 +1582,7 @@ impl WaitForTerminalExitRequest { } /// Response containing the exit status of a terminal command. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1492,6 +1597,9 @@ pub struct WaitForTerminalExitResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1519,6 +1627,7 @@ impl WaitForTerminalExitResponse { } /// Exit status of a terminal command. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1533,6 +1642,9 @@ pub struct TerminalExitStatus { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1667,6 +1779,9 @@ pub struct ClientCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1804,6 +1919,9 @@ pub struct ClientSessionCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1868,6 +1986,9 @@ pub struct SessionConfigOptionsCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1912,6 +2033,7 @@ impl SessionConfigOptionsCapabilities { /// /// Supplying `{}` means the client supports boolean session configuration options. #[cfg(feature = "unstable_boolean_config")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -1921,6 +2043,9 @@ pub struct BooleanConfigOptionCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1973,6 +2098,9 @@ pub struct AuthCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2031,6 +2159,9 @@ pub struct FileSystemCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v1/content.rs b/agent-client-protocol-schema/src/v1/content.rs index dc4ce6943..38716b736 100644 --- a/agent-client-protocol-schema/src/v1/content.rs +++ b/agent-client-protocol-schema/src/v1/content.rs @@ -79,6 +79,9 @@ pub struct TextContent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -142,6 +145,9 @@ pub struct ImageContent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -206,6 +212,9 @@ pub struct AudioContent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -259,6 +268,9 @@ pub struct EmbeddedResource { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -305,6 +317,7 @@ pub enum EmbeddedResourceResource { } /// Text-based resource contents. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Deserialize, Serialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -321,6 +334,9 @@ pub struct TextResourceContents { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -357,6 +373,7 @@ impl TextResourceContents { } /// Binary resource contents. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Deserialize, Serialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -373,6 +390,9 @@ pub struct BlobResourceContents { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -437,6 +457,9 @@ pub struct ResourceLink { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -525,6 +548,9 @@ pub struct Annotations { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -600,6 +626,22 @@ mod tests { assert!(!json.as_object().unwrap().contains_key("meta")); } + #[test] + fn test_text_content_meta_defaults_on_missing_or_malformed_value() { + let missing: TextContent = serde_json::from_value(serde_json::json!({ + "text": "hello" + })) + .unwrap(); + assert_eq!(missing.meta, None); + + let malformed: TextContent = serde_json::from_value(serde_json::json!({ + "text": "hello", + "_meta": false + })) + .unwrap(); + assert_eq!(malformed.meta, None); + } + #[test] fn test_text_content_from_string() { let block: ContentBlock = "hello".into(); diff --git a/agent-client-protocol-schema/src/v1/elicitation.rs b/agent-client-protocol-schema/src/v1/elicitation.rs index 234c348b6..25ffc3ef7 100644 --- a/agent-client-protocol-schema/src/v1/elicitation.rs +++ b/agent-client-protocol-schema/src/v1/elicitation.rs @@ -64,6 +64,7 @@ pub enum ElicitationSchemaType { } /// A titled enum option with a const value and human-readable title. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[non_exhaustive] @@ -78,6 +79,9 @@ pub struct EnumOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -109,6 +113,7 @@ impl EnumOption { /// /// When `enum` or `oneOf` is set, this represents a single-select enum /// with `"type": "string"`. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -139,6 +144,9 @@ pub struct StringPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -262,6 +270,7 @@ impl StringPropertySchema { } /// Schema for number (floating-point) properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -282,6 +291,9 @@ pub struct NumberPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -341,6 +353,7 @@ impl NumberPropertySchema { } /// Schema for integer properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -361,6 +374,9 @@ pub struct IntegerPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -420,6 +436,7 @@ impl IntegerPropertySchema { } /// Schema for boolean properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -436,6 +453,9 @@ pub struct BooleanPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -491,6 +511,7 @@ pub enum ElicitationStringType { } /// Items definition for untitled multi-select enum properties. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[non_exhaustive] @@ -506,6 +527,9 @@ pub struct UntitledMultiSelectItems { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -534,6 +558,7 @@ impl UntitledMultiSelectItems { } /// Items definition for titled multi-select enum properties. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[non_exhaustive] @@ -546,6 +571,9 @@ pub struct TitledMultiSelectItems { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -584,6 +612,7 @@ pub enum MultiSelectItems { } /// Schema for multi-select (array) properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -606,6 +635,9 @@ pub struct MultiSelectPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -749,6 +781,7 @@ fn default_object_type() -> ElicitationSchemaType { /// /// This represents a JSON Schema object with primitive-typed properties, /// as required by the elicitation specification. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -771,6 +804,9 @@ pub struct ElicitationSchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -928,6 +964,9 @@ pub struct ElicitationCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -970,6 +1009,7 @@ impl ElicitationCapabilities { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Form-based elicitation capabilities. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -980,6 +1020,9 @@ pub struct ElicitationFormCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1008,6 +1051,7 @@ impl ElicitationFormCapabilities { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// URL-based elicitation capabilities. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1018,6 +1062,9 @@ pub struct ElicitationUrlCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1140,6 +1187,7 @@ impl From for ElicitationScope { /// The agent sends this to the client to request information from the user, /// either via a form or by directing them to a URL. /// Elicitations are tied to a session (optionally a tool call) or a request. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = ELICITATION_CREATE_METHOD_NAME))] @@ -1156,6 +1204,9 @@ pub struct CreateElicitationRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1295,6 +1346,7 @@ impl ElicitationUrlMode { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Response from the client to an elicitation request. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = ELICITATION_CREATE_METHOD_NAME))] @@ -1309,6 +1361,9 @@ pub struct CreateElicitationResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1459,6 +1514,7 @@ impl Default for ElicitationAcceptAction { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Notification sent by the agent when a URL-based elicitation is complete. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "client", "x-method" = ELICITATION_COMPLETE_NOTIFICATION))] @@ -1472,6 +1528,9 @@ pub struct CompleteElicitationNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v1/mcp.rs b/agent-client-protocol-schema/src/v1/mcp.rs index a9e84a29d..ddfbbd907 100644 --- a/agent-client-protocol-schema/src/v1/mcp.rs +++ b/agent-client-protocol-schema/src/v1/mcp.rs @@ -6,7 +6,7 @@ use derive_more::{Display, From}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue; -use serde_with::skip_serializing_none; +use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; use crate::IntoOption; @@ -36,6 +36,7 @@ impl McpConnectionId { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Request parameters for `mcp/connect`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -49,6 +50,9 @@ pub struct ConnectMcpRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -80,6 +84,7 @@ impl ConnectMcpRequest { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Response to `mcp/connect`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -93,6 +98,9 @@ pub struct ConnectMcpResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -124,6 +132,7 @@ impl ConnectMcpResponse { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Request parameters for `mcp/message`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -144,6 +153,9 @@ pub struct MessageMcpRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -192,6 +204,7 @@ impl MessageMcpRequest { /// /// This is used when the wrapped MCP message is a notification and the outer JSON-RPC /// envelope has no `id`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -212,6 +225,9 @@ pub struct MessageMcpNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -278,6 +294,7 @@ impl MessageMcpResponse { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Request parameters for `mcp/disconnect`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -291,6 +308,9 @@ pub struct DisconnectMcpRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -322,6 +342,7 @@ impl DisconnectMcpRequest { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Response to `mcp/disconnect`. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -333,6 +354,9 @@ pub struct DisconnectMcpResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v1/nes.rs b/agent-client-protocol-schema/src/v1/nes.rs index f0553a633..03de700bb 100644 --- a/agent-client-protocol-schema/src/v1/nes.rs +++ b/agent-client-protocol-schema/src/v1/nes.rs @@ -57,6 +57,7 @@ pub enum PositionEncodingKind { /// A zero-based position in a text document. /// /// The meaning of `character` depends on the negotiated position encoding. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -71,6 +72,9 @@ pub struct Position { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -99,6 +103,7 @@ impl Position { } /// A range in a text document, expressed as start and end positions. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -113,6 +118,9 @@ pub struct Range { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -164,6 +172,9 @@ pub struct NesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -218,6 +229,9 @@ pub struct NesEventCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -285,6 +299,9 @@ pub struct NesDocumentEventCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -353,6 +370,7 @@ impl NesDocumentEventCapabilities { } /// Marker for `document/didOpen` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -363,6 +381,9 @@ pub struct NesDocumentDidOpenCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -376,6 +397,7 @@ impl NesDocumentDidOpenCapabilities { } /// Capabilities for `document/didChange` events. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -388,6 +410,9 @@ pub struct NesDocumentDidChangeCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -427,6 +452,7 @@ pub enum TextDocumentSyncKind { } /// Marker for `document/didClose` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -437,6 +463,9 @@ pub struct NesDocumentDidCloseCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -450,6 +479,7 @@ impl NesDocumentDidCloseCapabilities { } /// Marker for `document/didSave` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -460,6 +490,9 @@ pub struct NesDocumentDidSaveCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -473,6 +506,7 @@ impl NesDocumentDidSaveCapabilities { } /// Marker for `document/didFocus` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -483,6 +517,9 @@ pub struct NesDocumentDidFocusCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -537,6 +574,9 @@ pub struct NesContextCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -615,6 +655,7 @@ impl NesContextCapabilities { } /// Capabilities for recent files context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -627,6 +668,9 @@ pub struct NesRecentFilesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -640,6 +684,7 @@ impl NesRecentFilesCapabilities { } /// Capabilities for related snippets context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -650,6 +695,9 @@ pub struct NesRelatedSnippetsCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -663,6 +711,7 @@ impl NesRelatedSnippetsCapabilities { } /// Capabilities for edit history context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -675,6 +724,9 @@ pub struct NesEditHistoryCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -688,6 +740,7 @@ impl NesEditHistoryCapabilities { } /// Capabilities for user actions context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -700,6 +753,9 @@ pub struct NesUserActionsCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -713,6 +769,7 @@ impl NesUserActionsCapabilities { } /// Capabilities for open files context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -723,6 +780,9 @@ pub struct NesOpenFilesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -736,6 +796,7 @@ impl NesOpenFilesCapabilities { } /// Capabilities for diagnostics context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -746,6 +807,9 @@ pub struct NesDiagnosticsCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -787,6 +851,9 @@ pub struct ClientNesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -835,6 +902,7 @@ impl ClientNesCapabilities { } /// Marker for jump suggestion support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -845,6 +913,9 @@ pub struct NesJumpCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -858,6 +929,7 @@ impl NesJumpCapabilities { } /// Marker for rename suggestion support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -868,6 +940,9 @@ pub struct NesRenameCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -881,6 +956,7 @@ impl NesRenameCapabilities { } /// Marker for search and replace suggestion support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -891,6 +967,9 @@ pub struct NesSearchAndReplaceCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -906,6 +985,7 @@ impl NesSearchAndReplaceCapabilities { // Document event notifications (client -> agent) /// Notification sent when a file is opened in the editor. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_OPEN_METHOD_NAME))] @@ -927,6 +1007,9 @@ pub struct DidOpenDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -964,6 +1047,7 @@ impl DidOpenDocumentNotification { } /// Notification sent when a file is edited. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_CHANGE_METHOD_NAME))] @@ -983,6 +1067,9 @@ pub struct DidChangeDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1021,6 +1108,7 @@ impl DidChangeDocumentNotification { /// /// When `range` is `None`, `text` is the full content of the document. /// When `range` is `Some`, `text` replaces the given range. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1035,6 +1123,9 @@ pub struct TextDocumentContentChangeEvent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1073,6 +1164,7 @@ impl TextDocumentContentChangeEvent { } /// Notification sent when a file is closed. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_CLOSE_METHOD_NAME))] @@ -1088,6 +1180,9 @@ pub struct DidCloseDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1116,6 +1211,7 @@ impl DidCloseDocumentNotification { } /// Notification sent when a file is saved. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_SAVE_METHOD_NAME))] @@ -1131,6 +1227,9 @@ pub struct DidSaveDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1159,6 +1258,7 @@ impl DidSaveDocumentNotification { } /// Notification sent when a file becomes the active editor tab. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_FOCUS_METHOD_NAME))] @@ -1180,6 +1280,9 @@ pub struct DidFocusDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1243,6 +1346,9 @@ pub struct StartNesRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1302,6 +1408,7 @@ impl Default for StartNesRequest { } /// A workspace folder. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1316,6 +1423,9 @@ pub struct WorkspaceFolder { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1344,6 +1454,7 @@ impl WorkspaceFolder { } /// Repository metadata for an NES session. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1360,6 +1471,9 @@ pub struct NesRepository { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1393,6 +1507,7 @@ impl NesRepository { } /// Response to `nes/start`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_START_METHOD_NAME))] @@ -1406,6 +1521,9 @@ pub struct StartNesResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1438,6 +1556,7 @@ impl StartNesResponse { /// /// The agent **must** cancel any ongoing work related to the NES session /// and then free up any resources associated with the session. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_CLOSE_METHOD_NAME))] @@ -1451,6 +1570,9 @@ pub struct CloseNesRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1478,6 +1600,7 @@ impl CloseNesRequest { } /// Response from closing an NES session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_CLOSE_METHOD_NAME))] @@ -1489,6 +1612,9 @@ pub struct CloseNesResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1562,6 +1688,9 @@ pub struct SuggestNesRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1656,6 +1785,9 @@ pub struct NesSuggestContext { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1725,6 +1857,7 @@ impl NesSuggestContext { } /// A recently accessed file. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1741,6 +1874,9 @@ pub struct NesRecentFile { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1774,6 +1910,7 @@ impl NesRecentFile { } /// A related code snippet from a file. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1788,6 +1925,9 @@ pub struct NesRelatedSnippet { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1816,6 +1956,7 @@ impl NesRelatedSnippet { } /// A code excerpt from a file. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1832,6 +1973,9 @@ pub struct NesExcerpt { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1861,6 +2005,7 @@ impl NesExcerpt { } /// An entry in the edit history. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1875,6 +2020,9 @@ pub struct NesEditHistoryEntry { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1903,6 +2051,7 @@ impl NesEditHistoryEntry { } /// A user action (typing, cursor movement, etc.). +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1921,6 +2070,9 @@ pub struct NesUserAction { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1981,6 +2133,9 @@ pub struct NesOpenFile { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2025,6 +2180,7 @@ impl NesOpenFile { } /// A diagnostic (error, warning, etc.). +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2043,6 +2199,9 @@ pub struct NesDiagnostic { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2114,6 +2273,9 @@ pub struct SuggestNesResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2179,6 +2341,9 @@ pub struct NesEditSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2216,6 +2381,7 @@ impl NesEditSuggestion { } /// A text edit within a suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2230,6 +2396,9 @@ pub struct NesTextEdit { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2258,6 +2427,7 @@ impl NesTextEdit { } /// A jump-to-location suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2274,6 +2444,9 @@ pub struct NesJumpSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2303,6 +2476,7 @@ impl NesJumpSuggestion { } /// A rename symbol suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2321,6 +2495,9 @@ pub struct NesRenameSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2356,6 +2533,7 @@ impl NesRenameSuggestion { } /// A search-and-replace suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2376,6 +2554,9 @@ pub struct NesSearchAndReplaceSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2421,6 +2602,7 @@ impl NesSearchAndReplaceSuggestion { // NES accept/reject notifications /// Notification sent when a suggestion is accepted. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_ACCEPT_METHOD_NAME))] @@ -2436,6 +2618,9 @@ pub struct AcceptNesNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2485,6 +2670,9 @@ pub struct RejectNesNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v1/plan.rs b/agent-client-protocol-schema/src/v1/plan.rs index 9f21f1673..954e87468 100644 --- a/agent-client-protocol-schema/src/v1/plan.rs +++ b/agent-client-protocol-schema/src/v1/plan.rs @@ -43,6 +43,9 @@ pub struct Plan { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -96,6 +99,7 @@ impl PlanId { /// /// A content update for a plan identified by ID. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -108,6 +112,9 @@ pub struct PlanUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -198,6 +205,9 @@ pub struct PlanItems { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -232,6 +242,7 @@ impl PlanItems { /// /// A plan represented by a file URI. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -246,6 +257,9 @@ pub struct PlanFile { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -280,6 +294,7 @@ impl PlanFile { /// /// A plan represented as raw markdown content. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -294,6 +309,9 @@ pub struct PlanMarkdown { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -328,6 +346,7 @@ impl PlanMarkdown { /// /// Removal notice for a plan identified by ID. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -340,6 +359,9 @@ pub struct PlanRemoved { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -373,6 +395,7 @@ impl PlanRemoved { /// /// Capabilities for receiving `plan_update` and `plan_removed` session updates. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -383,6 +406,9 @@ pub struct PlanCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -412,6 +438,7 @@ impl PlanCapabilities { /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -429,6 +456,9 @@ pub struct PlanEntry { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v1/protocol_level.rs b/agent-client-protocol-schema/src/v1/protocol_level.rs index d7385b0e4..a49d3a78f 100644 --- a/agent-client-protocol-schema/src/v1/protocol_level.rs +++ b/agent-client-protocol-schema/src/v1/protocol_level.rs @@ -1,6 +1,6 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use serde_with::skip_serializing_none; +use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; use crate::IntoOption; @@ -14,6 +14,7 @@ use super::{Meta, RequestId}; /// /// See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/cancellation) #[cfg(feature = "unstable_cancel_request")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "protocol", "x-method" = CANCEL_REQUEST_METHOD_NAME))] @@ -27,6 +28,9 @@ pub struct CancelRequestNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v1/tool_call.rs b/agent-client-protocol-schema/src/v1/tool_call.rs index 7b398b1f5..d664c9c1a 100644 --- a/agent-client-protocol-schema/src/v1/tool_call.rs +++ b/agent-client-protocol-schema/src/v1/tool_call.rs @@ -58,6 +58,9 @@ pub struct ToolCall { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -167,6 +170,7 @@ impl ToolCall { /// the tool call ID are optional - only changed fields need to be included. /// /// See protocol docs: [Updating](https://agentclientprotocol.com/protocol/tool-calls#updating) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -182,6 +186,9 @@ pub struct ToolCallUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -499,6 +506,7 @@ impl From for ToolCallContent { } /// Standard content block (text, images, resources). +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -511,6 +519,9 @@ pub struct Content { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -542,6 +553,7 @@ impl Content { /// The terminal must be added before calling `terminal/release`. /// /// See protocol docs: [Terminal](https://agentclientprotocol.com/protocol/terminals) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -554,6 +566,9 @@ pub struct Terminal { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -585,6 +600,7 @@ impl Terminal { /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -601,6 +617,9 @@ pub struct Diff { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -642,6 +661,7 @@ impl Diff { /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -657,6 +677,9 @@ pub struct ToolCallLocation { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v2/agent.rs b/agent-client-protocol-schema/src/v2/agent.rs index a1e91a211..41786b0f9 100644 --- a/agent-client-protocol-schema/src/v2/agent.rs +++ b/agent-client-protocol-schema/src/v2/agent.rs @@ -67,6 +67,9 @@ pub struct InitializeRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -136,6 +139,9 @@ pub struct InitializeResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -182,6 +188,7 @@ impl InitializeResponse { /// Metadata about the implementation of the client or agent. /// Describes the name and version of an ACP implementation, with an optional /// title for UI representation. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -203,6 +210,9 @@ pub struct Implementation { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -246,6 +256,7 @@ impl Implementation { /// Request parameters for the `auth/login` method. /// /// Specifies which authentication method to use. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = AUTH_LOGIN_METHOD_NAME))] @@ -260,6 +271,9 @@ pub struct LoginAuthRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -287,6 +301,7 @@ impl LoginAuthRequest { } /// Response to the `auth/login` method. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = AUTH_LOGIN_METHOD_NAME))] @@ -298,6 +313,9 @@ pub struct LoginAuthResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -326,6 +344,7 @@ impl LoginAuthResponse { /// Request parameters for the `auth/logout` method. /// /// Terminates the current authenticated session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = AUTH_LOGOUT_METHOD_NAME))] @@ -337,6 +356,9 @@ pub struct LogoutAuthRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -361,6 +383,7 @@ impl LogoutAuthRequest { } /// Response to the `auth/logout` method. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = AUTH_LOGOUT_METHOD_NAME))] @@ -372,6 +395,9 @@ pub struct LogoutAuthResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -407,6 +433,9 @@ pub struct AgentAuthCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -542,6 +571,7 @@ impl AuthMethod { } /// Custom or future authentication method payload. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, JsonSchema, PartialEq, Eq)] #[schemars(inline)] @@ -567,6 +597,9 @@ pub struct OtherAuthMethod { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, /// Additional fields from the unknown authentication method payload. @@ -681,6 +714,7 @@ fn other_auth_method_schema(schema: &mut Schema) { /// Agent handles authentication itself. /// /// The `type` discriminator value is `agent`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -697,6 +731,9 @@ pub struct AuthMethodAgent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -740,6 +777,7 @@ impl AuthMethodAgent { /// /// The user provides credentials that the client passes to the agent as environment variables. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -760,6 +798,9 @@ pub struct AuthMethodEnvVar { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -815,6 +856,7 @@ impl AuthMethodEnvVar { /// /// Describes a single environment variable for an [`AuthMethodEnvVar`] authentication method. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -842,6 +884,9 @@ pub struct AuthEnvVar { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -919,6 +964,7 @@ impl AuthEnvVar { /// /// The client runs an interactive terminal for the user to authenticate via a TUI. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -941,6 +987,9 @@ pub struct AuthMethodTerminal { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1026,6 +1075,9 @@ pub struct NewSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1092,6 +1144,9 @@ pub struct NewSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1136,6 +1191,7 @@ impl NewSessionResponse { /// Only available if the Agent supports the `session.load` capability. /// /// See protocol docs: [Loading Sessions](https://agentclientprotocol.com/protocol/session-setup#loading-sessions) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_LOAD_METHOD_NAME))] @@ -1161,6 +1217,9 @@ pub struct LoadSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1222,6 +1281,9 @@ pub struct LoadSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1268,6 +1330,7 @@ impl LoadSessionResponse { /// /// Only available if the Agent supports the `session.fork` capability. #[cfg(feature = "unstable_session_fork")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_FORK_METHOD_NAME))] @@ -1293,6 +1356,9 @@ pub struct ForkSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1362,6 +1428,9 @@ pub struct ForkSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1408,6 +1477,7 @@ impl ForkSessionResponse { /// 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. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_RESUME_METHOD_NAME))] @@ -1434,6 +1504,9 @@ pub struct ResumeSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1495,6 +1568,9 @@ pub struct ResumeSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1537,6 +1613,7 @@ impl ResumeSessionResponse { /// associated with the session. /// /// Only available if the Agent supports the `session.close` capability. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_CLOSE_METHOD_NAME))] @@ -1550,6 +1627,9 @@ pub struct CloseSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1577,6 +1657,7 @@ impl CloseSessionRequest { } /// Response from closing a session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_CLOSE_METHOD_NAME))] @@ -1588,6 +1669,9 @@ pub struct CloseSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1616,6 +1700,7 @@ impl CloseSessionResponse { /// Request parameters for listing existing sessions. /// /// Only available if the Agent supports the `session.list` capability. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_LIST_METHOD_NAME))] @@ -1631,6 +1716,9 @@ pub struct ListSessionsRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1688,6 +1776,9 @@ pub struct ListSessionsResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1727,6 +1818,7 @@ impl ListSessionsResponse { /// Request parameters for deleting an existing session from `session/list`. /// /// Only available if the Agent supports the `session.delete` capability. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_DELETE_METHOD_NAME))] @@ -1740,6 +1832,9 @@ pub struct DeleteSessionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1767,6 +1862,7 @@ impl DeleteSessionRequest { } /// Response from deleting a session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_DELETE_METHOD_NAME))] @@ -1778,6 +1874,9 @@ pub struct DeleteSessionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1835,6 +1934,9 @@ pub struct SessionInfo { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1934,6 +2036,7 @@ impl SessionConfigGroupId { } /// A possible value for a session configuration option. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1951,6 +2054,9 @@ pub struct SessionConfigSelectOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1987,6 +2093,7 @@ impl SessionConfigSelectOption { } /// A group of possible values for a session configuration option. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2003,6 +2110,9 @@ pub struct SessionConfigSelectGroup { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2269,6 +2379,9 @@ pub struct SessionConfigOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2443,6 +2556,7 @@ impl From<&str> for SessionConfigOptionValue { } /// Request parameters for setting a session configuration option. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_SET_CONFIG_OPTION_METHOD_NAME))] @@ -2468,6 +2582,9 @@ pub struct SetSessionConfigOptionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2535,6 +2652,9 @@ pub struct SetSessionConfigOptionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2682,6 +2802,7 @@ fn other_mcp_server_schema(schema: &mut Schema) { } /// HTTP transport configuration for MCP. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2698,6 +2819,9 @@ pub struct McpServerHttp { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2766,6 +2890,7 @@ impl McpServerAcpId { /// /// The MCP server is provided by an ACP component and communicates over the ACP channel /// using `mcp/connect`, `mcp/message`, and `mcp/disconnect`. +#[serde_as] #[skip_serializing_none] #[cfg(feature = "unstable_mcp_over_acp")] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] @@ -2784,6 +2909,9 @@ pub struct McpServerAcp { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2813,6 +2941,7 @@ impl McpServerAcp { } /// Stdio transport configuration for MCP. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2831,6 +2960,9 @@ pub struct McpServerStdio { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2875,6 +3007,7 @@ impl McpServerStdio { } /// An environment variable to set when launching an MCP server. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2889,6 +3022,9 @@ pub struct EnvVariable { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2917,6 +3053,7 @@ impl EnvVariable { } /// An HTTP header to set when making requests to the MCP server. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2931,6 +3068,9 @@ pub struct HttpHeader { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2965,6 +3105,7 @@ impl HttpHeader { /// Contains the user's message and any additional context. /// /// See protocol docs: [User Message](https://agentclientprotocol.com/protocol/prompt-lifecycle#1-user-message) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_PROMPT_METHOD_NAME))] @@ -2992,6 +3133,9 @@ pub struct PromptRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3025,6 +3169,7 @@ impl PromptRequest { /// Agents report session state through `state_update` session updates. /// /// See protocol docs: [Prompt Accepted](https://agentclientprotocol.com/protocol/prompt-lifecycle#2-prompt-accepted) +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_PROMPT_METHOD_NAME))] @@ -3036,6 +3181,9 @@ pub struct PromptResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3098,6 +3246,7 @@ pub enum StopReason { /// /// Token usage information for completed session work. #[cfg(feature = "unstable_end_turn_token_usage")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -3120,6 +3269,9 @@ pub struct Usage { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3217,6 +3369,7 @@ pub enum LlmProtocol { /// /// Current effective non-secret routing configuration for a provider. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -3231,6 +3384,9 @@ pub struct ProviderCurrentConfig { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3288,6 +3444,9 @@ pub struct ProviderInfo { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3329,6 +3488,7 @@ impl ProviderInfo { /// /// Request parameters for `providers/list`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_LIST_METHOD_NAME))] @@ -3340,6 +3500,9 @@ pub struct ListProvidersRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3386,6 +3549,9 @@ pub struct ListProvidersResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3421,6 +3587,7 @@ impl ListProvidersResponse { /// /// Replaces the full configuration for one provider id. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_SET_METHOD_NAME))] @@ -3442,6 +3609,9 @@ pub struct SetProviderRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3486,6 +3656,7 @@ impl SetProviderRequest { /// /// Response to `providers/set`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_SET_METHOD_NAME))] @@ -3497,6 +3668,9 @@ pub struct SetProviderResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3527,6 +3701,7 @@ impl SetProviderResponse { /// /// Request parameters for `providers/disable`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_DISABLE_METHOD_NAME))] @@ -3540,6 +3715,9 @@ pub struct DisableProviderRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3573,6 +3751,7 @@ impl DisableProviderRequest { /// /// Response to `providers/disable`. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = PROVIDERS_DISABLE_METHOD_NAME))] @@ -3584,6 +3763,9 @@ pub struct DisableProviderResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3674,6 +3856,9 @@ pub struct AgentCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3761,6 +3946,7 @@ impl AgentCapabilities { /// /// By supplying `{}` it means that the agent supports provider configuration methods. #[cfg(feature = "unstable_llm_providers")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -3770,6 +3956,9 @@ pub struct ProvidersCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3882,6 +4071,9 @@ pub struct SessionCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -3992,6 +4184,7 @@ impl SessionCapabilities { /// Capabilities for the `session/load` method. /// /// Supplying `{}` means the agent supports loading sessions. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4001,6 +4194,9 @@ pub struct SessionLoadCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4027,6 +4223,7 @@ impl SessionLoadCapabilities { /// Capabilities for the `session/list` method. /// /// By supplying `{}` it means that the agent supports listing of sessions. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4036,6 +4233,9 @@ pub struct SessionListCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4062,6 +4262,7 @@ impl SessionListCapabilities { /// Capabilities for the `session/delete` method. /// /// Supplying `{}` means the agent supports deleting sessions from `session/list`. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4071,6 +4272,9 @@ pub struct SessionDeleteCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4100,6 +4304,7 @@ impl SessionDeleteCapabilities { /// field on supported session lifecycle requests. Agents that also support /// `session/list` may return `SessionInfo.additionalDirectories` to report the /// complete ordered additional-root list associated with a listed session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4109,6 +4314,9 @@ pub struct SessionAdditionalDirectoriesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4140,6 +4348,7 @@ impl SessionAdditionalDirectoriesCapabilities { /// /// By supplying `{}` it means that the agent supports forking of sessions. #[cfg(feature = "unstable_session_fork")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4149,6 +4358,9 @@ pub struct SessionForkCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4176,6 +4388,7 @@ impl SessionForkCapabilities { /// Capabilities for the `session/resume` method. /// /// By supplying `{}` it means that the agent supports resuming of sessions. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4185,6 +4398,9 @@ pub struct SessionResumeCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4211,6 +4427,7 @@ impl SessionResumeCapabilities { /// Capabilities for the `session/close` method. /// /// By supplying `{}` it means that the agent supports closing of sessions. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4220,6 +4437,9 @@ pub struct SessionCloseCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4293,6 +4513,9 @@ pub struct PromptCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4355,6 +4578,7 @@ impl PromptCapabilities { /// Capabilities for image content in prompt requests. /// /// Supplying `{}` means the agent supports image content in prompts. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4364,6 +4588,9 @@ pub struct PromptImageCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4390,6 +4617,7 @@ impl PromptImageCapabilities { /// Capabilities for audio content in prompt requests. /// /// Supplying `{}` means the agent supports audio content in prompts. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4399,6 +4627,9 @@ pub struct PromptAudioCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4425,6 +4656,7 @@ impl PromptAudioCapabilities { /// Capabilities for embedded context in prompt requests. /// /// Supplying `{}` means the agent supports embedded context in prompts. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4434,6 +4666,9 @@ pub struct PromptEmbeddedContextCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4498,6 +4733,9 @@ pub struct McpCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4559,6 +4797,7 @@ impl McpCapabilities { /// Capabilities for stdio MCP server transports. /// /// Supplying `{}` means the agent supports stdio MCP server transports. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4568,6 +4807,9 @@ pub struct McpStdioCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4594,6 +4836,7 @@ impl McpStdioCapabilities { /// Capabilities for HTTP MCP server transports. /// /// Supplying `{}` means the agent supports HTTP MCP server transports. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4603,6 +4846,9 @@ pub struct McpHttpCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -4634,6 +4880,7 @@ impl McpHttpCapabilities { /// /// Supplying `{}` means the agent supports ACP MCP server transports. #[cfg(feature = "unstable_mcp_over_acp")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -4643,6 +4890,9 @@ pub struct McpAcpCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -5206,6 +5456,7 @@ impl ClientNotification { /// Notification to cancel ongoing operations for a session. /// /// See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/prompt-lifecycle#cancellation) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = SESSION_CANCEL_METHOD_NAME))] @@ -5219,6 +5470,9 @@ pub struct CancelNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v2/client.rs b/agent-client-protocol-schema/src/v2/client.rs index acc1928b1..9d7857237 100644 --- a/agent-client-protocol-schema/src/v2/client.rs +++ b/agent-client-protocol-schema/src/v2/client.rs @@ -42,6 +42,7 @@ use super::{ClientNesCapabilities, PositionEncodingKind}; /// Used to stream real-time progress and results during prompt processing. /// /// See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-lifecycle#3-agent-reports-output) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = SESSION_UPDATE_NOTIFICATION))] @@ -57,6 +58,9 @@ pub struct SessionNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -284,6 +288,9 @@ pub struct ConfigOptionUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -314,6 +321,7 @@ impl ConfigOptionUpdate { /// /// 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. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -330,6 +338,9 @@ pub struct SessionInfoUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -388,6 +399,9 @@ pub struct UsageUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -450,6 +464,7 @@ pub enum StateUpdate { } /// The agent is actively processing work in the session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -460,6 +475,9 @@ pub struct RunningStateUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -516,6 +534,9 @@ pub struct IdleStateUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -559,6 +580,7 @@ impl IdleStateUpdate { } /// The agent is waiting on user action before it can continue. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -569,6 +591,9 @@ pub struct RequiresActionStateUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -662,6 +687,7 @@ fn other_state_update_schema(schema: &mut Schema) { } /// Cost information for a session. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -676,6 +702,9 @@ pub struct Cost { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -704,6 +733,7 @@ impl Cost { } /// A streamed item of content +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -721,6 +751,9 @@ pub struct ContentChunk { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -779,6 +812,8 @@ pub struct UserMessage { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde( rename = "_meta", default, @@ -848,6 +883,8 @@ pub struct AgentMessage { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde( rename = "_meta", default, @@ -917,6 +954,8 @@ pub struct AgentThought { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde( rename = "_meta", default, @@ -986,6 +1025,9 @@ pub struct AvailableCommandsUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1033,6 +1075,9 @@ pub struct AvailableCommand { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1136,6 +1181,7 @@ impl<'de> Deserialize<'de> for OtherAvailableCommandInput { } /// All text that was typed after the command name is provided as input. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, JsonSchema, PartialEq, Eq)] #[schemars(transform = unstructured_command_input_schema)] @@ -1149,6 +1195,9 @@ pub struct UnstructuredCommandInput { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1215,6 +1264,7 @@ fn unstructured_command_input_schema(schema: &mut Schema) { /// Sent when the agent needs authorization before performing a sensitive operation. /// /// See protocol docs: [Requesting Permission](https://agentclientprotocol.com/protocol/tool-calls#requesting-permission) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = SESSION_REQUEST_PERMISSION_METHOD_NAME))] @@ -1232,6 +1282,9 @@ pub struct RequestPermissionRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1265,6 +1318,7 @@ impl RequestPermissionRequest { } /// An option presented to the user when requesting permission. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1281,6 +1335,9 @@ pub struct PermissionOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1353,6 +1410,7 @@ pub enum PermissionOptionKind { } /// Response to a permission request. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "client", "x-method" = SESSION_REQUEST_PERMISSION_METHOD_NAME))] @@ -1367,6 +1425,9 @@ pub struct RequestPermissionResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1413,6 +1474,7 @@ pub enum RequestPermissionOutcome { } /// The user selected one of the provided options. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1425,6 +1487,9 @@ pub struct SelectedPermissionOutcome { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1514,6 +1579,9 @@ pub struct ClientCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1613,6 +1681,9 @@ pub struct AuthCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1655,6 +1726,7 @@ impl AuthCapabilities { /// /// Supplying `{}` means the client supports terminal authentication methods. #[cfg(feature = "unstable_auth_methods")] +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -1664,6 +1736,9 @@ pub struct TerminalAuthCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2153,6 +2228,13 @@ mod tests { assert_eq!(patch.content, MaybeUndefined::Undefined); assert_eq!(patch.meta, MaybeUndefined::Undefined); + let malformed_meta = serde_json::from_value::(json!({ + "messageId": "msg_agent_c42b9", + "_meta": false + })) + .unwrap(); + assert_eq!(malformed_meta.meta, MaybeUndefined::Undefined); + let patch = serde_json::from_value::(json!({ "messageId": "msg_thought_a12" })) @@ -2166,6 +2248,13 @@ mod tests { .unwrap(); assert_eq!(clear.content, MaybeUndefined::Null); + let clear_meta = serde_json::from_value::(json!({ + "messageId": "msg_user_8f7a1", + "_meta": null + })) + .unwrap(); + assert_eq!(clear_meta.meta, MaybeUndefined::Null); + let mut meta = Meta::new(); meta.insert("source".to_string(), json!("replay")); diff --git a/agent-client-protocol-schema/src/v2/content.rs b/agent-client-protocol-schema/src/v2/content.rs index 9973fb9c4..5f8f46548 100644 --- a/agent-client-protocol-schema/src/v2/content.rs +++ b/agent-client-protocol-schema/src/v2/content.rs @@ -161,6 +161,9 @@ pub struct TextContent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -224,6 +227,9 @@ pub struct ImageContent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -288,6 +294,9 @@ pub struct AudioContent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -341,6 +350,9 @@ pub struct EmbeddedResource { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -387,6 +399,7 @@ pub enum EmbeddedResourceResource { } /// Text-based resource contents. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Deserialize, Serialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -403,6 +416,9 @@ pub struct TextResourceContents { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -439,6 +455,7 @@ impl TextResourceContents { } /// Binary resource contents. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Deserialize, Serialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -455,6 +472,9 @@ pub struct BlobResourceContents { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -519,6 +539,9 @@ pub struct ResourceLink { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -607,6 +630,9 @@ pub struct Annotations { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -689,6 +715,22 @@ mod tests { assert!(!json.as_object().unwrap().contains_key("meta")); } + #[test] + fn test_text_content_meta_defaults_on_missing_or_malformed_value() { + let missing: TextContent = serde_json::from_value(serde_json::json!({ + "text": "hello" + })) + .unwrap(); + assert_eq!(missing.meta, None); + + let malformed: TextContent = serde_json::from_value(serde_json::json!({ + "text": "hello", + "_meta": false + })) + .unwrap(); + assert_eq!(malformed.meta, None); + } + #[test] fn test_text_content_from_string() { let block: ContentBlock = "hello".into(); diff --git a/agent-client-protocol-schema/src/v2/elicitation.rs b/agent-client-protocol-schema/src/v2/elicitation.rs index 295424f1d..2bb28d742 100644 --- a/agent-client-protocol-schema/src/v2/elicitation.rs +++ b/agent-client-protocol-schema/src/v2/elicitation.rs @@ -69,6 +69,7 @@ pub enum ElicitationSchemaType { } /// A titled enum option with a const value and human-readable title. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[non_exhaustive] @@ -83,6 +84,9 @@ pub struct EnumOption { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -114,6 +118,7 @@ impl EnumOption { /// /// When `enum` or `oneOf` is set, this represents a single-select enum /// with `"type": "string"`. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -144,6 +149,9 @@ pub struct StringPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -267,6 +275,7 @@ impl StringPropertySchema { } /// Schema for number (floating-point) properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -287,6 +296,9 @@ pub struct NumberPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -346,6 +358,7 @@ impl NumberPropertySchema { } /// Schema for integer properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -366,6 +379,9 @@ pub struct IntegerPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -425,6 +441,7 @@ impl IntegerPropertySchema { } /// Schema for boolean properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -441,6 +458,9 @@ pub struct BooleanPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -496,6 +516,7 @@ pub enum ElicitationStringType { } /// Items definition for untitled multi-select enum properties. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[non_exhaustive] @@ -511,6 +532,9 @@ pub struct UntitledMultiSelectItems { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -529,6 +553,7 @@ impl UntitledMultiSelectItems { } /// Items definition for titled multi-select enum properties. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[non_exhaustive] @@ -541,6 +566,9 @@ pub struct TitledMultiSelectItems { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -579,6 +607,7 @@ pub enum MultiSelectItems { } /// Schema for multi-select (array) properties in an elicitation form. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -601,6 +630,9 @@ pub struct MultiSelectPropertySchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -748,6 +780,7 @@ fn default_object_type() -> ElicitationSchemaType { /// /// This represents a JSON Schema object with primitive-typed properties, /// as required by the elicitation specification. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -770,6 +803,9 @@ pub struct ElicitationSchema { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -927,6 +963,9 @@ pub struct ElicitationCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -969,6 +1008,7 @@ impl ElicitationCapabilities { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Form-based elicitation capabilities. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -979,6 +1019,9 @@ pub struct ElicitationFormCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1007,6 +1050,7 @@ impl ElicitationFormCapabilities { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// URL-based elicitation capabilities. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1017,6 +1061,9 @@ pub struct ElicitationUrlCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1139,6 +1186,7 @@ impl From for ElicitationScope { /// The agent sends this to the client to request information from the user, /// either via a form or by directing them to a URL. /// Elicitations are tied to a session (optionally a tool call) or a request. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = ELICITATION_CREATE_METHOD_NAME))] @@ -1155,6 +1203,9 @@ pub struct CreateElicitationRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1294,6 +1345,7 @@ impl ElicitationUrlMode { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Response from the client to an elicitation request. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[schemars(extend("x-side" = "client", "x-method" = ELICITATION_CREATE_METHOD_NAME))] @@ -1308,6 +1360,9 @@ pub struct CreateElicitationResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1458,6 +1513,7 @@ impl Default for ElicitationAcceptAction { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Notification sent by the agent when a URL-based elicitation is complete. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "client", "x-method" = ELICITATION_COMPLETE_NOTIFICATION))] @@ -1471,6 +1527,9 @@ pub struct CompleteElicitationNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v2/mcp.rs b/agent-client-protocol-schema/src/v2/mcp.rs index fa3d3a980..06afdf704 100644 --- a/agent-client-protocol-schema/src/v2/mcp.rs +++ b/agent-client-protocol-schema/src/v2/mcp.rs @@ -6,7 +6,7 @@ use derive_more::{Display, From}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use serde_json::value::RawValue; -use serde_with::skip_serializing_none; +use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; use super::{McpServerAcpId, Meta}; use crate::IntoOption; @@ -35,6 +35,7 @@ impl McpConnectionId { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Request parameters for `mcp/connect`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -48,6 +49,9 @@ pub struct ConnectMcpRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -79,6 +83,7 @@ impl ConnectMcpRequest { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Response to `mcp/connect`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -92,6 +97,9 @@ pub struct ConnectMcpResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -123,6 +131,7 @@ impl ConnectMcpResponse { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Request parameters for `mcp/message`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -143,6 +152,9 @@ pub struct MessageMcpRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -191,6 +203,7 @@ impl MessageMcpRequest { /// /// This is used when the wrapped MCP message is a notification and the outer JSON-RPC /// envelope has no `id`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] @@ -211,6 +224,9 @@ pub struct MessageMcpNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -277,6 +293,7 @@ impl MessageMcpResponse { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Request parameters for `mcp/disconnect`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -290,6 +307,9 @@ pub struct DisconnectMcpRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -321,6 +341,7 @@ impl DisconnectMcpRequest { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// Response to `mcp/disconnect`. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -332,6 +353,9 @@ pub struct DisconnectMcpResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v2/nes.rs b/agent-client-protocol-schema/src/v2/nes.rs index b8139b192..80f5986bd 100644 --- a/agent-client-protocol-schema/src/v2/nes.rs +++ b/agent-client-protocol-schema/src/v2/nes.rs @@ -58,6 +58,7 @@ pub enum PositionEncodingKind { /// A zero-based position in a text document. /// /// The meaning of `character` depends on the negotiated position encoding. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -72,6 +73,9 @@ pub struct Position { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -100,6 +104,7 @@ impl Position { } /// A range in a text document, expressed as start and end positions. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -114,6 +119,9 @@ pub struct Range { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -168,6 +176,9 @@ pub struct NesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -222,6 +233,9 @@ pub struct NesEventCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -289,6 +303,9 @@ pub struct NesDocumentEventCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -357,6 +374,7 @@ impl NesDocumentEventCapabilities { } /// Marker for `document/didOpen` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -367,6 +385,9 @@ pub struct NesDocumentDidOpenCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -380,6 +401,7 @@ impl NesDocumentDidOpenCapabilities { } /// Capabilities for `document/didChange` events. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -392,6 +414,9 @@ pub struct NesDocumentDidChangeCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -431,6 +456,7 @@ pub enum TextDocumentSyncKind { } /// Marker for `document/didClose` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -441,6 +467,9 @@ pub struct NesDocumentDidCloseCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -454,6 +483,7 @@ impl NesDocumentDidCloseCapabilities { } /// Marker for `document/didSave` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -464,6 +494,9 @@ pub struct NesDocumentDidSaveCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -477,6 +510,7 @@ impl NesDocumentDidSaveCapabilities { } /// Marker for `document/didFocus` capability support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -487,6 +521,9 @@ pub struct NesDocumentDidFocusCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -541,6 +578,9 @@ pub struct NesContextCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -619,6 +659,7 @@ impl NesContextCapabilities { } /// Capabilities for recent files context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -631,6 +672,9 @@ pub struct NesRecentFilesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -644,6 +688,7 @@ impl NesRecentFilesCapabilities { } /// Capabilities for related snippets context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -654,6 +699,9 @@ pub struct NesRelatedSnippetsCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -667,6 +715,7 @@ impl NesRelatedSnippetsCapabilities { } /// Capabilities for edit history context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -679,6 +728,9 @@ pub struct NesEditHistoryCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -692,6 +744,7 @@ impl NesEditHistoryCapabilities { } /// Capabilities for user actions context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -704,6 +757,9 @@ pub struct NesUserActionsCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -717,6 +773,7 @@ impl NesUserActionsCapabilities { } /// Capabilities for open files context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -727,6 +784,9 @@ pub struct NesOpenFilesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -740,6 +800,7 @@ impl NesOpenFilesCapabilities { } /// Capabilities for diagnostics context. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -750,6 +811,9 @@ pub struct NesDiagnosticsCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -791,6 +855,9 @@ pub struct ClientNesCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -839,6 +906,7 @@ impl ClientNesCapabilities { } /// Marker for jump suggestion support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -849,6 +917,9 @@ pub struct NesJumpCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -862,6 +933,7 @@ impl NesJumpCapabilities { } /// Marker for rename suggestion support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -872,6 +944,9 @@ pub struct NesRenameCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -885,6 +960,7 @@ impl NesRenameCapabilities { } /// Marker for search and replace suggestion support. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -895,6 +971,9 @@ pub struct NesSearchAndReplaceCapabilities { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -910,6 +989,7 @@ impl NesSearchAndReplaceCapabilities { // Document event notifications (client -> agent) /// Notification sent when a file is opened in the editor. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_OPEN_METHOD_NAME))] @@ -931,6 +1011,9 @@ pub struct DidOpenDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -968,6 +1051,7 @@ impl DidOpenDocumentNotification { } /// Notification sent when a file is edited. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_CHANGE_METHOD_NAME))] @@ -987,6 +1071,9 @@ pub struct DidChangeDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1025,6 +1112,7 @@ impl DidChangeDocumentNotification { /// /// When `range` is `None`, `text` is the full content of the document. /// When `range` is `Some`, `text` replaces the given range. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1039,6 +1127,9 @@ pub struct TextDocumentContentChangeEvent { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1077,6 +1168,7 @@ impl TextDocumentContentChangeEvent { } /// Notification sent when a file is closed. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_CLOSE_METHOD_NAME))] @@ -1092,6 +1184,9 @@ pub struct DidCloseDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1120,6 +1215,7 @@ impl DidCloseDocumentNotification { } /// Notification sent when a file is saved. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_SAVE_METHOD_NAME))] @@ -1135,6 +1231,9 @@ pub struct DidSaveDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1163,6 +1262,7 @@ impl DidSaveDocumentNotification { } /// Notification sent when a file becomes the active editor tab. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = DOCUMENT_DID_FOCUS_METHOD_NAME))] @@ -1184,6 +1284,9 @@ pub struct DidFocusDocumentNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1247,6 +1350,9 @@ pub struct StartNesRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1306,6 +1412,7 @@ impl Default for StartNesRequest { } /// A workspace folder. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1320,6 +1427,9 @@ pub struct WorkspaceFolder { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1348,6 +1458,7 @@ impl WorkspaceFolder { } /// Repository metadata for an NES session. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1364,6 +1475,9 @@ pub struct NesRepository { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1397,6 +1511,7 @@ impl NesRepository { } /// Response to `nes/start`. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_START_METHOD_NAME))] @@ -1410,6 +1525,9 @@ pub struct StartNesResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1442,6 +1560,7 @@ impl StartNesResponse { /// /// The agent **must** cancel any ongoing work related to the NES session /// and then free up any resources associated with the session. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_CLOSE_METHOD_NAME))] @@ -1455,6 +1574,9 @@ pub struct CloseNesRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1482,6 +1604,7 @@ impl CloseNesRequest { } /// Response from closing an NES session. +#[serde_as] #[skip_serializing_none] #[derive(Default, Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_CLOSE_METHOD_NAME))] @@ -1493,6 +1616,9 @@ pub struct CloseNesResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1573,6 +1699,9 @@ pub struct SuggestNesRequest { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1667,6 +1796,9 @@ pub struct NesSuggestContext { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1736,6 +1868,7 @@ impl NesSuggestContext { } /// A recently accessed file. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1752,6 +1885,9 @@ pub struct NesRecentFile { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1785,6 +1921,7 @@ impl NesRecentFile { } /// A related code snippet from a file. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1799,6 +1936,9 @@ pub struct NesRelatedSnippet { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1827,6 +1967,7 @@ impl NesRelatedSnippet { } /// A code excerpt from a file. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1843,6 +1984,9 @@ pub struct NesExcerpt { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1872,6 +2016,7 @@ impl NesExcerpt { } /// An entry in the edit history. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1886,6 +2031,9 @@ pub struct NesEditHistoryEntry { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1914,6 +2062,7 @@ impl NesEditHistoryEntry { } /// A user action (typing, cursor movement, etc.). +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1932,6 +2081,9 @@ pub struct NesUserAction { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -1992,6 +2144,9 @@ pub struct NesOpenFile { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2036,6 +2191,7 @@ impl NesOpenFile { } /// A diagnostic (error, warning, etc.). +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2054,6 +2210,9 @@ pub struct NesDiagnostic { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2132,6 +2291,9 @@ pub struct SuggestNesResponse { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2273,6 +2435,9 @@ pub struct NesEditSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2310,6 +2475,7 @@ impl NesEditSuggestion { } /// A text edit within a suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2324,6 +2490,9 @@ pub struct NesTextEdit { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2352,6 +2521,7 @@ impl NesTextEdit { } /// A jump-to-location suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2368,6 +2538,9 @@ pub struct NesJumpSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2397,6 +2570,7 @@ impl NesJumpSuggestion { } /// A rename symbol suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2415,6 +2589,9 @@ pub struct NesRenameSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2450,6 +2627,7 @@ impl NesRenameSuggestion { } /// A search-and-replace suggestion. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -2470,6 +2648,9 @@ pub struct NesSearchAndReplaceSuggestion { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2515,6 +2696,7 @@ impl NesSearchAndReplaceSuggestion { // NES accept/reject notifications /// Notification sent when a suggestion is accepted. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "agent", "x-method" = NES_ACCEPT_METHOD_NAME))] @@ -2530,6 +2712,9 @@ pub struct AcceptNesNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -2579,6 +2764,9 @@ pub struct RejectNesNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v2/plan.rs b/agent-client-protocol-schema/src/v2/plan.rs index 1bf223cf8..fd150b66a 100644 --- a/agent-client-protocol-schema/src/v2/plan.rs +++ b/agent-client-protocol-schema/src/v2/plan.rs @@ -32,6 +32,7 @@ impl PlanId { } /// A content update for a plan identified by ID. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -44,6 +45,9 @@ pub struct PlanUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -231,6 +235,9 @@ pub struct PlanItems { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -264,6 +271,7 @@ impl PlanItems { /// /// A plan represented by a file URI. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -278,6 +286,9 @@ pub struct PlanFile { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -312,6 +323,7 @@ impl PlanFile { /// /// A plan represented as raw markdown content. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -326,6 +338,9 @@ pub struct PlanMarkdown { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -360,6 +375,7 @@ impl PlanMarkdown { /// /// Removal notice for a plan identified by ID. #[cfg(feature = "unstable_plan_operations")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -372,6 +388,9 @@ pub struct PlanRemoved { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -404,6 +423,7 @@ impl PlanRemoved { /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -421,6 +441,9 @@ pub struct PlanEntry { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v2/protocol_level.rs b/agent-client-protocol-schema/src/v2/protocol_level.rs index 2b778ac1d..714290b6b 100644 --- a/agent-client-protocol-schema/src/v2/protocol_level.rs +++ b/agent-client-protocol-schema/src/v2/protocol_level.rs @@ -1,6 +1,6 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use serde_with::skip_serializing_none; +use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; use super::{Meta, RequestId}; use crate::IntoOption; @@ -13,6 +13,7 @@ use crate::IntoOption; /// /// See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/cancellation) #[cfg(feature = "unstable_cancel_request")] +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[schemars(extend("x-side" = "protocol", "x-method" = CANCEL_REQUEST_METHOD_NAME))] @@ -26,6 +27,9 @@ pub struct CancelRequestNotification { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/agent-client-protocol-schema/src/v2/tool_call.rs b/agent-client-protocol-schema/src/v2/tool_call.rs index fdb489e4f..95b162e30 100644 --- a/agent-client-protocol-schema/src/v2/tool_call.rs +++ b/agent-client-protocol-schema/src/v2/tool_call.rs @@ -67,6 +67,9 @@ pub struct ToolCallUpdate { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -186,6 +189,7 @@ impl ToolCallUpdate { /// content for the matching [`ToolCallId`]. Agents can use /// [`ToolCallUpdate::content`] when they need to replace the whole content /// collection instead. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -201,6 +205,9 @@ pub struct ToolCallContentChunk { /// chunk-level metadata. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -420,6 +427,7 @@ impl From for ToolCallContent { } /// Standard content block (text, images, resources). +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -432,6 +440,9 @@ pub struct Content { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -463,6 +474,7 @@ impl Content { /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -479,6 +491,9 @@ pub struct Diff { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } @@ -520,6 +535,7 @@ impl Diff { /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] #[serde(rename_all = "camelCase")] @@ -535,6 +551,9 @@ pub struct ToolCallLocation { /// these keys. /// /// See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility) + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] #[serde(rename = "_meta")] pub meta: Option, } diff --git a/schema-generator/src/main.rs b/schema-generator/src/main.rs index c5c20ed07..9678ae4fa 100644 --- a/schema-generator/src/main.rs +++ b/schema-generator/src/main.rs @@ -466,6 +466,55 @@ mod schema_annotation_tests { } } + #[test] + fn source_meta_fields_are_default_on_error_annotated() { + let root = schema_crate_dir(); + for module_dir in ["src/v1", "src/v2"] { + for entry in fs::read_dir(root.join(module_dir)).unwrap() { + let path = entry.unwrap().path(); + if path.extension().and_then(|ext| ext.to_str()) != Some("rs") { + continue; + } + + let source = fs::read_to_string(&path).unwrap(); + let lines: Vec<_> = source.lines().collect(); + for (line_index, line) in lines.iter().enumerate() { + if !line.trim_start().starts_with("pub meta:") || !line.contains("Meta") { + continue; + } + + let annotations = lines + .get(line_index.saturating_sub(8)..line_index) + .unwrap_or_default() + .join("\n"); + + assert!( + annotations.contains(r#"#[serde_as(deserialize_as = "DefaultOnError"#), + "{}:{} missing DefaultOnError on meta field", + path.display(), + line_index + 1 + ); + assert!( + annotations.contains(r#""x-deserialize-default-on-error" = true"#), + "{}:{} missing {DEFAULT_ON_ERROR_EXTENSION} on meta field", + path.display(), + line_index + 1 + ); + } + } + } + } + + #[test] + fn generated_schema_meta_fields_are_default_on_error_annotated() { + let schema = root_schema_value(); + let mut checked = 0; + + assert_meta_properties_are_annotated(&schema, &mut checked); + + assert!(checked > 0, "expected at least one _meta schema property"); + } + fn property_schema<'a>(schema: &'a Value, def_name: &str, prop_name: &str) -> &'a Value { def_schema(schema, def_name) .pointer(&format!("/properties/{prop_name}")) @@ -499,6 +548,29 @@ mod schema_annotation_tests { ); } + fn assert_meta_properties_are_annotated(schema: &Value, checked: &mut usize) { + match schema { + Value::Object(object) => { + if let Some(properties) = object.get("properties").and_then(Value::as_object) + && let Some(meta) = properties.get("_meta") + { + *checked += 1; + assert_bool_extension(meta, DEFAULT_ON_ERROR_EXTENSION); + } + + for value in object.values() { + assert_meta_properties_are_annotated(value, checked); + } + } + Value::Array(values) => { + for value in values { + assert_meta_properties_are_annotated(value, checked); + } + } + Value::Null | Value::Bool(_) | Value::Number(_) | Value::String(_) => {} + } + } + fn assert_no_extension(schema: &Value, extension: &str) { assert!( schema.get(extension).is_none(), diff --git a/schema/v1/schema.json b/schema/v1/schema.json index 9a774017c..90f3c07d1 100644 --- a/schema/v1/schema.json +++ b/schema/v1/schema.json @@ -238,6 +238,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -280,6 +281,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -317,6 +319,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -391,6 +394,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -649,6 +653,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -691,6 +696,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -727,6 +733,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -759,6 +766,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -808,6 +816,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -855,6 +864,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -879,6 +889,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -911,6 +922,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -931,6 +943,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -955,6 +968,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -979,6 +993,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1001,6 +1016,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1033,6 +1049,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1110,6 +1127,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1132,6 +1150,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1160,6 +1179,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1190,6 +1210,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1220,6 +1241,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1250,6 +1272,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1488,6 +1511,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1562,6 +1586,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1591,6 +1616,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1614,6 +1640,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1685,6 +1712,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1696,6 +1724,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1707,6 +1736,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1718,6 +1748,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1729,6 +1760,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1740,6 +1772,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1763,6 +1796,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1774,6 +1808,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1815,6 +1850,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1843,6 +1879,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1855,6 +1892,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1868,6 +1906,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1910,6 +1949,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1941,6 +1981,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1973,6 +2014,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2013,6 +2055,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2121,6 +2164,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2152,6 +2196,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2212,6 +2257,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2238,6 +2284,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2281,6 +2328,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2293,6 +2341,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2327,6 +2376,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2340,6 +2390,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2353,6 +2404,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2375,6 +2427,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2397,6 +2450,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2585,6 +2639,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2806,6 +2861,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2870,6 +2926,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2902,6 +2959,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2963,6 +3021,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2995,6 +3054,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3025,6 +3085,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3046,6 +3107,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3066,6 +3128,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3087,6 +3150,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3107,6 +3171,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3127,6 +3192,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3163,6 +3229,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3364,6 +3431,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3397,6 +3465,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3420,6 +3489,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3439,6 +3509,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3453,6 +3524,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3488,6 +3560,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3556,6 +3629,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3583,6 +3657,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3610,6 +3685,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3644,6 +3720,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3682,6 +3759,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3704,6 +3782,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3725,6 +3804,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3765,6 +3845,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3787,6 +3868,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3817,6 +3899,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3855,6 +3938,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3884,6 +3968,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4030,6 +4115,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4047,6 +4133,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4069,6 +4156,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4126,6 +4214,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4146,6 +4235,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4179,6 +4269,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4203,6 +4294,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -4214,6 +4306,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4237,6 +4330,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4250,6 +4344,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4314,6 +4409,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, diff --git a/schema/v1/schema.unstable.json b/schema/v1/schema.unstable.json index 18a318a5e..73361b2df 100644 --- a/schema/v1/schema.unstable.json +++ b/schema/v1/schema.unstable.json @@ -313,6 +313,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -355,6 +356,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -392,6 +394,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -466,6 +469,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -724,6 +728,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -766,6 +771,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -802,6 +808,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -834,6 +841,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -883,6 +891,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -930,6 +939,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -954,6 +964,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -986,6 +997,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1006,6 +1018,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1030,6 +1043,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1054,6 +1068,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1076,6 +1091,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1108,6 +1124,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1185,6 +1202,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1207,6 +1225,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1235,6 +1254,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1265,6 +1285,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1295,6 +1316,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1325,6 +1347,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1343,6 +1366,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1467,6 +1491,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1609,6 +1634,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1674,6 +1700,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1708,6 +1735,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1742,6 +1770,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1765,6 +1794,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1814,6 +1844,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1843,6 +1874,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1890,6 +1922,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1989,6 +2022,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2024,6 +2058,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2050,6 +2085,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2361,6 +2397,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2472,6 +2509,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2501,6 +2539,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2530,6 +2569,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2613,6 +2653,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2624,6 +2665,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2635,6 +2677,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2646,6 +2689,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2657,6 +2701,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2668,6 +2713,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2679,6 +2725,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2702,6 +2749,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2713,6 +2761,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2724,6 +2773,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2759,6 +2809,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2782,6 +2833,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2853,6 +2905,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2864,6 +2917,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2883,6 +2937,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2910,6 +2965,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2921,6 +2977,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2932,6 +2989,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3015,6 +3073,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3032,6 +3091,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3043,6 +3103,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3060,6 +3121,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3077,6 +3139,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3088,6 +3151,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3099,6 +3163,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3198,6 +3263,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3237,6 +3303,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3279,6 +3346,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3307,6 +3375,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3331,6 +3400,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3343,6 +3413,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3365,6 +3436,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3407,6 +3479,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3466,6 +3539,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3478,6 +3552,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3491,6 +3566,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3504,6 +3580,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3546,6 +3623,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3577,6 +3655,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3609,6 +3688,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3649,6 +3729,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3773,6 +3854,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3804,6 +3886,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3875,6 +3958,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3901,6 +3985,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3944,6 +4029,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3956,6 +4042,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3998,6 +4085,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4033,6 +4121,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4046,6 +4135,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4059,6 +4149,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4081,6 +4172,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4115,6 +4207,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4195,6 +4288,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4215,6 +4309,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4238,6 +4333,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4336,6 +4432,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4364,6 +4461,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4388,6 +4486,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4427,6 +4526,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4455,6 +4555,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4487,6 +4588,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4519,6 +4621,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4531,6 +4634,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4725,6 +4829,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4978,6 +5083,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5042,6 +5148,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5074,6 +5181,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5135,6 +5243,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5224,6 +5333,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5248,6 +5358,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5272,6 +5383,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5292,6 +5404,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5312,6 +5425,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5344,6 +5458,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5374,6 +5489,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5395,6 +5511,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5415,6 +5532,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5436,6 +5554,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5456,6 +5575,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -5476,6 +5596,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5512,6 +5633,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5532,6 +5654,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5563,6 +5686,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5841,6 +5965,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5943,6 +6068,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -5966,6 +6092,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -5989,6 +6116,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6012,6 +6140,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6023,6 +6152,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6034,6 +6164,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6051,6 +6182,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6086,6 +6218,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6097,6 +6230,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6108,6 +6242,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6155,6 +6290,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6166,6 +6302,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6177,6 +6314,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6188,6 +6326,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6207,6 +6346,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6221,6 +6361,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6257,6 +6398,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6275,6 +6417,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6289,6 +6432,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6324,6 +6468,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6408,6 +6553,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6435,6 +6581,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6462,6 +6609,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6486,6 +6634,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6520,6 +6669,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6558,6 +6708,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6580,6 +6731,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6601,6 +6753,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6641,6 +6794,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6681,6 +6835,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6703,6 +6858,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6733,6 +6889,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6763,6 +6920,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6825,6 +6983,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6864,6 +7023,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6885,6 +7045,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6909,6 +7070,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6978,6 +7140,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7066,6 +7229,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -7089,6 +7253,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7112,6 +7277,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7140,6 +7306,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7160,6 +7327,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7194,6 +7362,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7233,6 +7402,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7269,6 +7439,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7314,6 +7485,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7496,6 +7668,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7513,6 +7686,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7535,6 +7709,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7592,6 +7767,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7612,6 +7788,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7645,6 +7822,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7669,6 +7847,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -7680,6 +7859,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7703,6 +7883,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7716,6 +7897,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7729,6 +7911,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7841,6 +8024,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7855,6 +8039,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7991,6 +8176,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8030,6 +8216,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8068,6 +8255,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8097,6 +8285,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8121,6 +8310,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8147,6 +8337,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8194,6 +8385,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8220,6 +8412,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8258,6 +8451,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8305,6 +8499,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, diff --git a/schema/v2/schema.json b/schema/v2/schema.json index d370d26d7..b7591d119 100644 --- a/schema/v2/schema.json +++ b/schema/v2/schema.json @@ -508,6 +508,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -584,6 +585,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -940,6 +942,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -987,6 +990,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1023,6 +1027,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1055,6 +1060,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1104,6 +1110,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1151,6 +1158,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1175,6 +1183,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1207,6 +1216,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1227,6 +1237,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1251,6 +1262,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1273,6 +1285,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1305,6 +1318,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1551,6 +1565,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1594,6 +1609,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1701,6 +1717,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1748,6 +1765,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1759,6 +1777,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1770,6 +1789,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1781,6 +1801,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1816,6 +1837,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1827,6 +1849,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1838,6 +1861,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1849,6 +1873,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1860,6 +1885,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1871,6 +1897,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1882,6 +1909,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1893,6 +1921,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1904,6 +1933,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1915,6 +1945,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1966,6 +1997,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2015,6 +2047,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2039,6 +2072,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2051,6 +2085,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2064,6 +2099,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2094,6 +2130,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2136,6 +2173,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2271,6 +2309,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2302,6 +2341,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2350,6 +2390,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2376,6 +2417,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2419,6 +2461,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2431,6 +2474,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2453,6 +2497,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2466,6 +2511,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2488,6 +2534,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2502,6 +2549,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2659,6 +2707,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3082,6 +3131,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3111,6 +3161,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3140,6 +3191,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3169,6 +3221,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3181,6 +3234,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3239,6 +3293,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3250,6 +3305,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3380,6 +3436,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys. This field is optional; omitted or `null` means there is no\nchunk-level metadata.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3495,6 +3552,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3574,6 +3632,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3594,6 +3653,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3626,6 +3686,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3669,6 +3730,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3694,6 +3756,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3715,6 +3778,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3735,6 +3799,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3755,6 +3820,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3791,6 +3857,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3973,6 +4040,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3987,6 +4055,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -4006,6 +4075,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4020,6 +4090,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4055,6 +4126,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4154,6 +4226,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4181,6 +4254,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4201,6 +4275,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4235,6 +4310,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4273,6 +4349,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4295,6 +4372,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4316,6 +4394,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4356,6 +4435,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4378,6 +4458,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4416,6 +4497,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4445,6 +4527,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4536,6 +4619,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4593,6 +4677,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4656,6 +4741,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, diff --git a/schema/v2/schema.unstable.json b/schema/v2/schema.unstable.json index 1db4c15b1..337bb8d64 100644 --- a/schema/v2/schema.unstable.json +++ b/schema/v2/schema.unstable.json @@ -707,6 +707,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -783,6 +784,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1139,6 +1141,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1186,6 +1189,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1222,6 +1226,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1254,6 +1259,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1303,6 +1309,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1350,6 +1357,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1374,6 +1382,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1406,6 +1415,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1426,6 +1436,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1450,6 +1461,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1472,6 +1484,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1504,6 +1517,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1554,6 +1568,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1678,6 +1693,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1825,6 +1841,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -1890,6 +1907,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1924,6 +1942,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1958,6 +1977,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -1981,6 +2001,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2030,6 +2051,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2059,6 +2081,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2106,6 +2129,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2205,6 +2229,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2240,6 +2265,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2266,6 +2292,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2552,6 +2579,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -2631,6 +2659,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2750,6 +2779,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2797,6 +2827,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2808,6 +2839,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2819,6 +2851,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2830,6 +2863,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2877,6 +2911,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2888,6 +2923,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2899,6 +2935,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2910,6 +2947,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2921,6 +2959,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2932,6 +2971,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2943,6 +2983,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2954,6 +2995,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2965,6 +3007,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2976,6 +3019,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2987,6 +3031,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -2998,6 +3043,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3009,6 +3055,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3044,6 +3091,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3067,6 +3115,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3138,6 +3187,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3149,6 +3199,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3168,6 +3219,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3195,6 +3247,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3206,6 +3259,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3217,6 +3271,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3300,6 +3355,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3317,6 +3373,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3328,6 +3385,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3345,6 +3403,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3362,6 +3421,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3373,6 +3433,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3384,6 +3445,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -3487,6 +3549,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3558,6 +3621,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3597,6 +3661,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3617,6 +3682,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3659,6 +3725,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3687,6 +3754,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3711,6 +3779,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3723,6 +3792,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3745,6 +3815,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3787,6 +3858,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3846,6 +3918,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3858,6 +3931,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3871,6 +3945,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3884,6 +3959,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3914,6 +3990,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -3956,6 +4033,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4117,6 +4195,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4148,6 +4227,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4207,6 +4287,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4233,6 +4314,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4276,6 +4358,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4288,6 +4371,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4318,6 +4402,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4341,6 +4426,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4354,6 +4440,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4376,6 +4463,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4390,6 +4478,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4411,6 +4500,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4434,6 +4524,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4589,6 +4680,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4617,6 +4709,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4641,6 +4734,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4680,6 +4774,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4708,6 +4803,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4740,6 +4836,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4772,6 +4869,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4784,6 +4882,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -4978,6 +5077,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5427,6 +5527,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5456,6 +5557,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5485,6 +5587,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5514,6 +5617,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5526,6 +5630,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -5608,6 +5713,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5644,6 +5750,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -5655,6 +5762,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -5785,6 +5893,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys. This field is optional; omitted or `null` means there is no\nchunk-level metadata.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -5932,6 +6041,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6011,6 +6121,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6035,6 +6146,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6059,6 +6171,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6079,6 +6192,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6099,6 +6213,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6131,6 +6246,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6174,6 +6290,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6199,6 +6316,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6220,6 +6338,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6240,6 +6359,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6260,6 +6380,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6296,6 +6417,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6316,6 +6438,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6347,6 +6470,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6605,6 +6729,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6662,6 +6787,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6685,6 +6811,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6696,6 +6823,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6731,6 +6859,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6742,6 +6871,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6753,6 +6883,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6800,6 +6931,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6811,6 +6943,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6822,6 +6955,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6833,6 +6967,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -6852,6 +6987,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6866,6 +7002,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6902,6 +7039,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6920,6 +7058,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6934,6 +7073,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -6969,6 +7109,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7094,6 +7235,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7121,6 +7263,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7145,6 +7288,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7179,6 +7323,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7217,6 +7362,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7239,6 +7385,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7260,6 +7407,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7300,6 +7448,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7340,6 +7489,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7362,6 +7512,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7392,6 +7543,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7454,6 +7606,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7493,6 +7646,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7514,6 +7668,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7538,6 +7693,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7607,6 +7763,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7700,6 +7857,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } } @@ -7723,6 +7881,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7746,6 +7905,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7774,6 +7934,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7794,6 +7955,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7828,6 +7990,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7867,6 +8030,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7903,6 +8067,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -7953,6 +8118,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8080,6 +8246,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8137,6 +8304,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8149,6 +8317,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8261,6 +8430,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8275,6 +8445,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8411,6 +8582,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8450,6 +8622,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8488,6 +8661,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8517,6 +8691,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8541,6 +8716,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8567,6 +8743,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8614,6 +8791,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8640,6 +8818,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8678,6 +8857,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, @@ -8764,6 +8944,7 @@ "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true } }, From e0261f40c8fdf462972c418ae674875087ce3671 Mon Sep 17 00:00:00 2001 From: Ben Brandt Date: Fri, 26 Jun 2026 13:27:30 +0200 Subject: [PATCH 3/3] fix(schema): Make defaultable fields lenient --- agent-client-protocol-schema/src/lib.rs | 2 + .../src/serde_util.rs | 55 +++ agent-client-protocol-schema/src/v1/agent.rs | 85 +++++ agent-client-protocol-schema/src/v1/client.rs | 34 ++ .../src/v1/content.rs | 27 ++ .../src/v1/elicitation.rs | 142 ++++++- agent-client-protocol-schema/src/v1/error.rs | 6 +- agent-client-protocol-schema/src/v1/mcp.rs | 4 + agent-client-protocol-schema/src/v1/nes.rs | 24 ++ .../src/v1/tool_call.rs | 24 ++ agent-client-protocol-schema/src/v2/agent.rs | 84 +++++ agent-client-protocol-schema/src/v2/client.rs | 6 + .../src/v2/content.rs | 27 ++ .../src/v2/elicitation.rs | 142 ++++++- agent-client-protocol-schema/src/v2/error.rs | 6 +- agent-client-protocol-schema/src/v2/mcp.rs | 4 + agent-client-protocol-schema/src/v2/nes.rs | 24 ++ .../src/v2/tool_call.rs | 15 + schema-generator/src/main.rs | 172 +++++++++ schema/v1/schema.json | 169 ++++++--- schema/v1/schema.unstable.json | 353 ++++++++++++------ schema/v2/schema.json | 125 +++++-- schema/v2/schema.unstable.json | 312 +++++++++++----- 23 files changed, 1527 insertions(+), 315 deletions(-) diff --git a/agent-client-protocol-schema/src/lib.rs b/agent-client-protocol-schema/src/lib.rs index 118800614..307b93572 100644 --- a/agent-client-protocol-schema/src/lib.rs +++ b/agent-client-protocol-schema/src/lib.rs @@ -45,6 +45,8 @@ pub mod v1; pub mod v2; mod version; +#[cfg(feature = "unstable_auth_methods")] +pub(crate) use serde_util::DefaultTrueOnError; pub(crate) use serde_util::SkipListener; pub use serde_util::{IntoMaybeUndefined, IntoOption, MaybeUndefined}; pub use version::*; diff --git a/agent-client-protocol-schema/src/serde_util.rs b/agent-client-protocol-schema/src/serde_util.rs index c5423b48f..365d881e2 100644 --- a/agent-client-protocol-schema/src/serde_util.rs +++ b/agent-client-protocol-schema/src/serde_util.rs @@ -57,6 +57,37 @@ impl serde_with::InspectError for SkipListener { #[cfg(not(feature = "tracing"))] pub(crate) type SkipListener = (); +// ---- DefaultTrueOnError ---- + +#[cfg(any(feature = "unstable_auth_methods", test))] +#[derive(Deserialize)] +#[serde(transparent)] +struct BoolDefaultTrue(bool); + +#[cfg(any(feature = "unstable_auth_methods", test))] +impl Default for BoolDefaultTrue { + fn default() -> Self { + Self(true) + } +} + +/// Deserializes a boolean, falling back to `true` when the input is malformed. +#[cfg(any(feature = "unstable_auth_methods", test))] +pub(crate) struct DefaultTrueOnError; + +#[cfg(any(feature = "unstable_auth_methods", test))] +impl<'de> DeserializeAs<'de, bool> for DefaultTrueOnError { + fn deserialize_as(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + >::deserialize_as( + deserializer, + ) + .map(|value| value.0) + } +} + #[cfg(test)] mod skip_listener_tests { use std::cell::Cell; @@ -192,6 +223,30 @@ mod skip_listener_tests { assert_eq!(r.values, Some(vec![1, 2, 3])); assert_eq!(SKIP_COUNT.with(Cell::get), 2); } + + fn default_true() -> bool { + true + } + + #[serde_as] + #[derive(Deserialize, Debug, PartialEq)] + struct DefaultTrueWrapper { + #[serde_as(deserialize_as = "super::DefaultTrueOnError")] + #[serde(default = "default_true")] + value: bool, + } + + #[test] + fn default_true_on_error_uses_true_for_missing_and_malformed_values() { + let wrapper: DefaultTrueWrapper = serde_json::from_value(json!({})).unwrap(); + assert!(wrapper.value); + + let wrapper: DefaultTrueWrapper = serde_json::from_value(json!({"value": false})).unwrap(); + assert!(!wrapper.value); + + let wrapper: DefaultTrueWrapper = serde_json::from_value(json!({"value": "oops"})).unwrap(); + assert!(wrapper.value); + } } // ---- IntoOption ---- diff --git a/agent-client-protocol-schema/src/v1/agent.rs b/agent-client-protocol-schema/src/v1/agent.rs index 53ff7f341..e0d838725 100644 --- a/agent-client-protocol-schema/src/v1/agent.rs +++ b/agent-client-protocol-schema/src/v1/agent.rs @@ -13,6 +13,8 @@ use schemars::JsonSchema; use serde::{Deserialize, Serialize}; use serde_with::{DefaultOnError, VecSkipError, serde_as, skip_serializing_none}; +#[cfg(feature = "unstable_auth_methods")] +use crate::DefaultTrueOnError; use crate::{IntoOption, ProtocolVersion, SkipListener}; use super::{ @@ -226,6 +228,9 @@ pub struct Implementation { /// and easily understood. /// /// If not provided, the name should be used for display. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Version of the implementation. Can be displayed to the user or used /// for debugging or metrics purposes. (e.g. "1.0.0"). @@ -649,6 +654,9 @@ pub struct AuthMethodAgent { /// Human-readable name of the authentication method. pub name: String, /// Optional description providing more details about this authentication method. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -712,10 +720,18 @@ pub struct AuthMethodEnvVar { /// Human-readable name of the authentication method. pub name: String, /// Optional description providing more details about this authentication method. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// The environment variables the client should set. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub vars: Vec, /// Optional link to a page where the user can obtain their credentials. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub link: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -789,17 +805,24 @@ pub struct AuthEnvVar { /// The environment variable name (e.g. `"OPENAI_API_KEY"`). pub name: String, /// Human-readable label for this variable, displayed in client UI. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub label: Option, /// Whether this value is a secret (e.g. API key, token). /// Clients should use a password-style input for secret vars. /// /// Defaults to `true`. + #[serde_as(deserialize_as = "DefaultTrueOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default = "default_true", skip_serializing_if = "is_true")] #[schemars(extend("default" = true))] pub secret: bool, /// Whether this variable is optional. /// /// Defaults to `false`. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "is_false")] #[schemars(extend("default" = false))] pub optional: bool, @@ -899,11 +922,18 @@ pub struct AuthMethodTerminal { /// Human-readable name of the authentication method. pub name: String, /// Optional description providing more details about this authentication method. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Additional arguments to pass when running the agent binary for terminal auth. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub args: Vec, /// Additional environment variables to set when running the agent binary for terminal auth. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub env: HashMap, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -1139,6 +1169,8 @@ impl NewSessionResponse { #[non_exhaustive] pub struct LoadSessionRequest { /// List of MCP servers to connect to for this session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub mcp_servers: Vec, /// The working directory for this session. pub cwd: PathBuf, @@ -1148,6 +1180,8 @@ pub struct LoadSessionRequest { /// this is the complete resulting additional-root list for the loaded /// session. It may differ from any previously used or reported list as long as /// the request `cwd` matches the session's `cwd`. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, /// The ID of the session to load. @@ -1302,9 +1336,13 @@ pub struct ForkSessionRequest { /// When omitted or empty, no additional roots are activated. When non-empty, /// this is the complete resulting additional-root list for the forked /// session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, /// List of MCP servers to connect to for this session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub mcp_servers: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -1467,9 +1505,13 @@ pub struct ResumeSessionRequest { /// this is the complete resulting additional-root list for the resumed /// session. It may differ from any previously used or reported list as long as /// the request `cwd` matches the session's `cwd`. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, /// List of MCP servers to connect to for this session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub mcp_servers: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -1697,8 +1739,14 @@ impl CloseSessionResponse { #[non_exhaustive] pub struct ListSessionsRequest { /// Filter sessions by working directory. Must be an absolute path. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cwd: Option, /// Opaque cursor token from a previous response's nextCursor field for cursor-based pagination + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cursor: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1759,6 +1807,9 @@ pub struct ListSessionsResponse { pub sessions: Vec, /// Opaque cursor token. If present, pass this in the next request's cursor parameter /// to fetch the next page. If absent, there are no more results. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub next_cursor: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1905,6 +1956,8 @@ pub struct SessionInfo { /// When present, this is the complete ordered additional-root list reported /// by the Agent. Omitted and empty values are equivalent: the response /// reports no additional roots. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, @@ -2044,6 +2097,8 @@ pub struct SessionMode { /// Human-readable name shown for this protocol object. pub name: String, /// Optional human-readable details shown with this protocol object. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -2245,6 +2300,8 @@ pub struct SessionConfigSelectOption { /// Human-readable label for this option value. pub name: String, /// Optional description for this option value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -2302,6 +2359,8 @@ pub struct SessionConfigSelectGroup { /// Human-readable label for this group. pub name: String, /// The set of option values in this group. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub options: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -2471,6 +2530,8 @@ pub struct SessionConfigOption { /// Human-readable label for the option. pub name: String, /// Optional description for the Client to display to the user. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub description: Option, /// Optional semantic category for this option (UX only). @@ -2837,6 +2898,8 @@ pub struct McpServerHttp { /// URL to the MCP server. pub url: String, /// HTTP headers to set when making requests to the MCP server. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub headers: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -2893,6 +2956,8 @@ pub struct McpServerSse { /// URL to the MCP server. pub url: String, /// HTTP headers to set when making requests to the MCP server. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub headers: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3032,8 +3097,12 @@ pub struct McpServerStdio { /// Path to the MCP server executable. pub command: PathBuf, /// Command-line arguments to pass to the MCP server. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub args: Vec, /// Environment variables to set when launching the MCP server. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub env: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3207,6 +3276,8 @@ pub struct PromptRequest { /// When available, [`ContentBlock::Resource`] is preferred /// as it avoids extra round-trips and allows the message to include /// pieces of context from sources the agent may not have access to. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub prompt: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3359,10 +3430,19 @@ pub struct Usage { /// Total output tokens across all turns. pub output_tokens: u64, /// Total thought/reasoning tokens + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub thought_tokens: Option, /// Total cache read tokens. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cached_read_tokens: Option, /// Total cache write tokens. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cached_write_tokens: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3534,6 +3614,9 @@ pub struct ProviderInfo { pub required: bool, /// Current effective non-secret routing config. /// Null or omitted means provider is disabled. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub current: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3698,6 +3781,8 @@ pub struct SetProviderRequest { pub base_url: String, /// Full headers map for this provider. /// May include authorization, routing, or other integration-specific headers. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub headers: HashMap, /// The _meta property is reserved by ACP to allow clients and agents to attach additional diff --git a/agent-client-protocol-schema/src/v1/client.rs b/agent-client-protocol-schema/src/v1/client.rs index 7670b270f..2c41319e5 100644 --- a/agent-client-protocol-schema/src/v1/client.rs +++ b/agent-client-protocol-schema/src/v1/client.rs @@ -239,9 +239,13 @@ impl ConfigOptionUpdate { #[non_exhaustive] pub struct SessionInfoUpdate { /// Human-readable title for the session. Set to null to clear. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub title: MaybeUndefined, /// ISO 8601 timestamp of last activity. Set to null to clear. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub updated_at: MaybeUndefined, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -407,6 +411,9 @@ pub struct ContentChunk { /// /// All chunks belonging to the same message share the same `messageId`. /// A change in `messageId` indicates a new message has started. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub message_id: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -649,6 +656,8 @@ pub struct RequestPermissionRequest { /// Details about the tool call requiring permission. pub tool_call: ToolCallUpdate, /// Available permission options for the user to choose from. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub options: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -996,8 +1005,14 @@ pub struct ReadTextFileRequest { /// Absolute path to the file to read. pub path: PathBuf, /// Line number to start reading from (1-based). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub line: Option, /// Maximum number of lines to read. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub limit: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1124,12 +1139,19 @@ pub struct CreateTerminalRequest { /// The command to execute. pub command: String, /// Array of command arguments. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub args: Vec, /// Environment variables for the command. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub env: Vec, /// Working directory for the command (absolute path). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cwd: Option, /// Maximum number of output bytes to retain. /// @@ -1139,6 +1161,9 @@ pub struct CreateTerminalRequest { /// The Client MUST ensure truncation happens at a character boundary to maintain valid /// string output, even if this means the retained output is slightly less than the /// specified limit. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub output_byte_limit: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1318,6 +1343,9 @@ pub struct TerminalOutputResponse { /// Whether the output was truncated due to byte limits. pub truncated: bool, /// Exit status if the command has completed. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub exit_status: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1634,8 +1662,14 @@ impl WaitForTerminalExitResponse { #[non_exhaustive] pub struct TerminalExitStatus { /// The process exit code (may be null if terminated by signal). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub exit_code: Option, /// The signal that terminated the process (may be null if exited normally). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub signal: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at diff --git a/agent-client-protocol-schema/src/v1/content.rs b/agent-client-protocol-schema/src/v1/content.rs index 38716b736..6f6477f5e 100644 --- a/agent-client-protocol-schema/src/v1/content.rs +++ b/agent-client-protocol-schema/src/v1/content.rs @@ -139,6 +139,9 @@ pub struct ImageContent { /// MIME type describing the encoded media payload. pub mime_type: String, /// URI associated with this resource or media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub uri: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -324,6 +327,9 @@ pub enum EmbeddedResourceResource { #[non_exhaustive] pub struct TextResourceContents { /// MIME type describing the encoded media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub mime_type: Option, /// Text payload carried by this content block. pub text: String, @@ -382,6 +388,9 @@ pub struct BlobResourceContents { /// Base64-encoded bytes for a binary resource payload. pub blob: String, /// MIME type describing the encoded media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub mime_type: Option, /// URI associated with this resource or media payload. pub uri: String, @@ -441,14 +450,26 @@ pub struct ResourceLink { #[serde(default)] pub annotations: Option, /// Optional human-readable details shown with this protocol object. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// MIME type describing the encoded media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub mime_type: Option, /// Human-readable name shown for this protocol object. pub name: String, /// Optional size of the linked resource in bytes, if known. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub size: Option, /// Optional display title for end-user UI. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// URI associated with this resource or media payload. pub uri: String, @@ -540,8 +561,14 @@ pub struct Annotations { #[serde(default)] pub audience: Option>, /// Timestamp indicating when the underlying resource was last modified. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub last_modified: Option, /// Relative importance of this content when clients choose what to surface. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub priority: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at diff --git a/agent-client-protocol-schema/src/v1/elicitation.rs b/agent-client-protocol-schema/src/v1/elicitation.rs index 25ffc3ef7..153b64aad 100644 --- a/agent-client-protocol-schema/src/v1/elicitation.rs +++ b/agent-client-protocol-schema/src/v1/elicitation.rs @@ -10,9 +10,10 @@ use std::{collections::BTreeMap, sync::Arc}; use derive_more::{Display, From}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; +use serde_with::{DefaultOnError, VecSkipError, serde_as, skip_serializing_none}; use crate::IntoOption; +use crate::SkipListener; use super::{ ELICITATION_COMPLETE_NOTIFICATION, ELICITATION_CREATE_METHOD_NAME, Meta, RequestId, SessionId, @@ -120,23 +121,50 @@ impl EnumOption { #[non_exhaustive] pub struct StringPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum string length. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub min_length: Option, /// Maximum string length. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_length: Option, /// Pattern the string must match. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub pattern: Option, /// String format. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub format: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// Enum values for untitled single-select enums. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] #[serde(rename = "enum")] pub enum_values: Option>, /// Titled enum options for titled single-select enums. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] #[serde(rename = "oneOf")] pub one_of: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -277,14 +305,29 @@ impl StringPropertySchema { #[non_exhaustive] pub struct NumberPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub minimum: Option, /// Maximum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub maximum: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -360,14 +403,29 @@ impl NumberPropertySchema { #[non_exhaustive] pub struct IntegerPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub minimum: Option, /// Maximum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub maximum: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -443,10 +501,19 @@ impl IntegerPropertySchema { #[non_exhaustive] pub struct BooleanPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -520,6 +587,8 @@ pub struct UntitledMultiSelectItems { #[serde(rename = "type")] pub type_: ElicitationStringType, /// Allowed enum values. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(rename = "enum")] pub values: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -564,6 +633,8 @@ impl UntitledMultiSelectItems { #[non_exhaustive] pub struct TitledMultiSelectItems { /// Titled enum options. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(rename = "anyOf")] pub options: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -619,16 +690,31 @@ pub enum MultiSelectItems { #[non_exhaustive] pub struct MultiSelectPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum number of items to select. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub min_items: Option, /// Maximum number of items to select. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_items: Option, /// The items definition describing allowed values. pub items: MultiSelectItems, /// Default selected values. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] pub default: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -788,16 +874,29 @@ fn default_object_type() -> ElicitationSchemaType { #[non_exhaustive] pub struct ElicitationSchema { /// Type discriminator. Always `"object"`. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(rename = "type", default = "default_object_type")] pub type_: ElicitationSchemaType, /// Optional title for the schema. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Property definitions (must be primitive types). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub properties: BTreeMap, /// List of required property names. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] pub required: Option>, /// Optional description of what this schema represents. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1113,6 +1212,7 @@ pub enum ElicitationScope { /// When `tool_call_id` is set, the elicitation is tied to a specific tool call. /// This is useful when an agent receives an elicitation from an MCP server /// during a tool call and needs to redirect it to the user. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1121,6 +1221,9 @@ pub struct ElicitationSessionScope { /// The session this elicitation is tied to. pub session_id: SessionId, /// Optional tool call within the session. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub tool_call_id: Option, } @@ -1410,12 +1513,15 @@ pub enum ElicitationAction { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// The user accepted the elicitation and provided content. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] #[non_exhaustive] pub struct ElicitationAcceptAction { /// The user-provided content, if any, as an object matching the requested schema. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub content: Option>, } @@ -1563,11 +1669,14 @@ impl CompleteElicitationNotification { /// /// Data payload for the `UrlElicitationRequired` error, describing the URL elicitations /// the user must complete. +#[serde_as] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] #[non_exhaustive] pub struct UrlElicitationRequiredData { /// The URL elicitations the user must complete. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub elicitations: Vec, } @@ -2130,8 +2239,8 @@ mod tests { } #[test] - fn schema_rejects_invalid_object_type() { - let err = serde_json::from_value::(json!({ + fn schema_defaults_invalid_object_type() { + let schema = serde_json::from_value::(json!({ "type": "array", "properties": { "name": { @@ -2139,9 +2248,10 @@ mod tests { } } })) - .unwrap_err(); + .unwrap(); - assert!(err.to_string().contains("unknown variant")); + assert_eq!(schema.type_, ElicitationSchemaType::Object); + assert!(schema.properties.contains_key("name")); } #[test] @@ -2160,19 +2270,22 @@ mod tests { } #[test] - fn response_accept_rejects_non_object_content() { - let err = serde_json::from_value::(json!({ + fn response_accept_defaults_non_object_content() { + let response = serde_json::from_value::(json!({ "action": "accept", "content": "Alice" })) - .unwrap_err(); + .unwrap(); - assert!(err.to_string().contains("invalid type")); + assert_eq!( + response.action, + ElicitationAction::Accept(ElicitationAcceptAction::new()) + ); } #[test] - fn response_accept_rejects_nested_object_content() { - let err = serde_json::from_value::(json!({ + fn response_accept_defaults_nested_object_content() { + let response = serde_json::from_value::(json!({ "action": "accept", "content": { "profile": { @@ -2180,9 +2293,12 @@ mod tests { } } })) - .unwrap_err(); + .unwrap(); - assert!(err.to_string().contains("data did not match any variant")); + assert_eq!( + response.action, + ElicitationAction::Accept(ElicitationAcceptAction::new()) + ); } #[test] diff --git a/agent-client-protocol-schema/src/v1/error.rs b/agent-client-protocol-schema/src/v1/error.rs index fc425c00a..dc688e4f4 100644 --- a/agent-client-protocol-schema/src/v1/error.rs +++ b/agent-client-protocol-schema/src/v1/error.rs @@ -14,7 +14,7 @@ use std::{fmt::Display, str}; use schemars::{JsonSchema, Schema}; use serde::{Deserialize, Serialize}; -use serde_with::skip_serializing_none; +use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; use crate::IntoOption; @@ -27,6 +27,7 @@ pub type Result = std::result::Result; /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -39,6 +40,9 @@ pub struct Error { pub message: String, /// Optional primitive or structured value that contains additional information about the error. /// This may include debugging information or context-specific details. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub data: Option, } diff --git a/agent-client-protocol-schema/src/v1/mcp.rs b/agent-client-protocol-schema/src/v1/mcp.rs index ddfbbd907..0f93fe828 100644 --- a/agent-client-protocol-schema/src/v1/mcp.rs +++ b/agent-client-protocol-schema/src/v1/mcp.rs @@ -146,6 +146,8 @@ pub struct MessageMcpRequest { /// Optional inner MCP params. /// /// If omitted or set to `null`, the inner MCP message has no params. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub params: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -218,6 +220,8 @@ pub struct MessageMcpNotification { /// Optional inner MCP params. /// /// If omitted or set to `null`, the inner MCP message has no params. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub params: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional diff --git a/agent-client-protocol-schema/src/v1/nes.rs b/agent-client-protocol-schema/src/v1/nes.rs index 03de700bb..198773d03 100644 --- a/agent-client-protocol-schema/src/v1/nes.rs +++ b/agent-client-protocol-schema/src/v1/nes.rs @@ -662,6 +662,9 @@ impl NesContextCapabilities { #[non_exhaustive] pub struct NesRecentFilesCapabilities { /// Maximum number of recent files the agent can use. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_count: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -718,6 +721,9 @@ impl NesRelatedSnippetsCapabilities { #[non_exhaustive] pub struct NesEditHistoryCapabilities { /// Maximum number of edit history entries the agent can use. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_count: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -747,6 +753,9 @@ impl NesEditHistoryCapabilities { #[non_exhaustive] pub struct NesUserActionsCapabilities { /// Maximum number of user actions the agent can use. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_count: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1061,6 +1070,8 @@ pub struct DidChangeDocumentNotification { /// The new version number of the document. pub version: i64, /// The content changes. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub content_changes: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1115,6 +1126,9 @@ impl DidChangeDocumentNotification { #[non_exhaustive] pub struct TextDocumentContentChangeEvent { /// The range of the document that changed. If `None`, the entire content is replaced. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub range: Option, /// The new text for the range, or the full document content if `range` is `None`. pub text: String, @@ -1330,6 +1344,9 @@ impl DidFocusDocumentNotification { #[non_exhaustive] pub struct StartNesRequest { /// The root URI of the workspace. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub workspace_uri: Option, /// The workspace folders. #[serde_as(deserialize_as = "DefaultOnError>>")] @@ -1919,6 +1936,8 @@ pub struct NesRelatedSnippet { /// The URI of the file containing the snippets. pub uri: String, /// The code excerpts. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub excerpts: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -2330,6 +2349,8 @@ pub struct NesEditSuggestion { /// The URI of the file to edit. pub uri: String, /// The text edits to apply. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub edits: Vec, /// Optional suggested cursor position after applying edits. #[serde_as(deserialize_as = "DefaultOnError")] @@ -2548,6 +2569,9 @@ pub struct NesSearchAndReplaceSuggestion { /// The replacement text. pub replace: String, /// Whether `search` is a regular expression. Defaults to `false`. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub is_regex: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at diff --git a/agent-client-protocol-schema/src/v1/tool_call.rs b/agent-client-protocol-schema/src/v1/tool_call.rs index d664c9c1a..30495a3a6 100644 --- a/agent-client-protocol-schema/src/v1/tool_call.rs +++ b/agent-client-protocol-schema/src/v1/tool_call.rs @@ -33,9 +33,13 @@ pub struct ToolCall { pub title: String, /// The category of tool being invoked. /// Helps clients choose appropriate icons and UI treatment. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "ToolKind::is_default")] pub kind: ToolKind, /// Current execution status of the tool call. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "ToolCallStatus::is_default")] pub status: ToolCallStatus, /// Content produced by the tool call. @@ -50,8 +54,14 @@ pub struct ToolCall { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub locations: Vec, /// Raw input parameters sent to the tool. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub raw_input: Option, /// Raw output returned by the tool. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub raw_output: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -239,6 +249,9 @@ pub struct ToolCallUpdateFields { #[serde(default)] pub status: Option, /// Update the human-readable title. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Replace the content collection. #[serde_as(deserialize_as = "DefaultOnError>>")] @@ -251,8 +264,14 @@ pub struct ToolCallUpdateFields { #[serde(default)] pub locations: Option>, /// Update the raw input. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub raw_input: Option, /// Update the raw output. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub raw_output: Option, } @@ -609,6 +628,9 @@ pub struct Diff { /// The file path being modified. pub path: PathBuf, /// The original content (None for new files). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub old_text: Option, /// The new content after modification. pub new_text: String, @@ -670,6 +692,8 @@ pub struct ToolCallLocation { /// The file path being accessed or modified. pub path: PathBuf, /// Optional line number within the file. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub line: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional diff --git a/agent-client-protocol-schema/src/v2/agent.rs b/agent-client-protocol-schema/src/v2/agent.rs index 41786b0f9..1d27cb13e 100644 --- a/agent-client-protocol-schema/src/v2/agent.rs +++ b/agent-client-protocol-schema/src/v2/agent.rs @@ -16,6 +16,8 @@ use serde_with::{DefaultOnError, VecSkipError, serde_as, skip_serializing_none}; use super::{ ClientCapabilities, ContentBlock, ExtNotification, ExtRequest, ExtResponse, Meta, SessionId, }; +#[cfg(feature = "unstable_auth_methods")] +use crate::DefaultTrueOnError; use crate::{IntoOption, ProtocolVersion, SkipListener}; #[cfg(feature = "unstable_mcp_over_acp")] @@ -201,6 +203,9 @@ pub struct Implementation { /// and easily understood. /// /// If not provided, the name should be used for display. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Version of the implementation. Can be displayed to the user or used /// for debugging or metrics purposes. (e.g. "1.0.0"). @@ -591,6 +596,9 @@ pub struct OtherAuthMethod { /// Human-readable name of the authentication method. pub name: String, /// Optional description providing more details about this authentication method. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -725,6 +733,9 @@ pub struct AuthMethodAgent { /// Human-readable name of the authentication method. pub name: String, /// Optional description providing more details about this authentication method. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -788,10 +799,18 @@ pub struct AuthMethodEnvVar { /// Human-readable name of the authentication method. pub name: String, /// Optional description providing more details about this authentication method. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// The environment variables the client should set. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub vars: Vec, /// Optional link to a page where the user can obtain their credentials. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub link: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -865,17 +884,24 @@ pub struct AuthEnvVar { /// The environment variable name (e.g. `"OPENAI_API_KEY"`). pub name: String, /// Human-readable label for this variable, displayed in client UI. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub label: Option, /// Whether this value is a secret (e.g. API key, token). /// Clients should use a password-style input for secret vars. /// /// Defaults to `true`. + #[serde_as(deserialize_as = "DefaultTrueOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default = "default_true", skip_serializing_if = "is_true")] #[schemars(extend("default" = true))] pub secret: bool, /// Whether this variable is optional. /// /// Defaults to `false`. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "is_false")] #[schemars(extend("default" = false))] pub optional: bool, @@ -975,11 +1001,18 @@ pub struct AuthMethodTerminal { /// Human-readable name of the authentication method. pub name: String, /// Optional description providing more details about this authentication method. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Additional arguments to pass when running the agent binary for terminal auth. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub args: Vec, /// Additional environment variables to set when running the agent binary for terminal auth. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub env: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -1199,6 +1232,8 @@ impl NewSessionResponse { #[non_exhaustive] pub struct LoadSessionRequest { /// List of MCP servers to connect to for this session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub mcp_servers: Vec, /// The working directory for this session. pub cwd: PathBuf, @@ -1208,6 +1243,8 @@ pub struct LoadSessionRequest { /// this is the complete resulting additional-root list for the loaded /// session. It may differ from any previously used or reported list as long as /// the request `cwd` matches the session's `cwd`. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, /// The ID of the session to load. @@ -1346,9 +1383,13 @@ pub struct ForkSessionRequest { /// When omitted or empty, no additional roots are activated. When non-empty, /// this is the complete resulting additional-root list for the forked /// session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, /// List of MCP servers to connect to for this session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub mcp_servers: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -1494,9 +1535,13 @@ pub struct ResumeSessionRequest { /// this is the complete resulting additional-root list for the resumed /// session. It may differ from any previously used or reported list as long as /// the request `cwd` matches the session's `cwd`. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, /// List of MCP servers to connect to for this session. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub mcp_servers: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -1708,8 +1753,14 @@ impl CloseSessionResponse { #[non_exhaustive] pub struct ListSessionsRequest { /// Filter sessions by working directory. Must be an absolute path. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cwd: Option, /// Opaque cursor token from a previous response's nextCursor field for cursor-based pagination + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cursor: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1770,6 +1821,9 @@ pub struct ListSessionsResponse { pub sessions: Vec, /// Opaque cursor token. If present, pass this in the next request's cursor parameter /// to fetch the next page. If absent, there are no more results. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub next_cursor: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1916,6 +1970,8 @@ pub struct SessionInfo { /// When present, this is the complete ordered additional-root list reported /// by the Agent. Omitted and empty values are equivalent: the response /// reports no additional roots. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(default, skip_serializing_if = "Vec::is_empty")] pub additional_directories: Vec, @@ -2047,6 +2103,8 @@ pub struct SessionConfigSelectOption { /// Human-readable label for this option value. pub name: String, /// Optional description for this option value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -2104,6 +2162,8 @@ pub struct SessionConfigSelectGroup { /// Human-readable label for this group. pub name: String, /// The set of option values in this group. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub options: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -2364,6 +2424,8 @@ pub struct SessionConfigOption { /// Human-readable label for the option. pub name: String, /// Optional description for the Client to display to the user. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub description: Option, /// Optional semantic category for this option (UX only). @@ -2813,6 +2875,8 @@ pub struct McpServerHttp { /// URL to the MCP server. pub url: String, /// HTTP headers to set when making requests to the MCP server. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub headers: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -2952,8 +3016,12 @@ pub struct McpServerStdio { /// Path to the MCP server executable. pub command: PathBuf, /// Command-line arguments to pass to the MCP server. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub args: Vec, /// Environment variables to set when launching the MCP server. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub env: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3127,6 +3195,8 @@ pub struct PromptRequest { /// When available, [`ContentBlock::Resource`] is preferred /// as it avoids extra round-trips and allows the message to include /// pieces of context from sources the agent may not have access to. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub prompt: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3259,10 +3329,19 @@ pub struct Usage { /// Total output tokens. pub output_tokens: u64, /// Total thought/reasoning tokens + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub thought_tokens: Option, /// Total cache read tokens. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cached_read_tokens: Option, /// Total cache write tokens. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub cached_write_tokens: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3438,6 +3517,9 @@ pub struct ProviderInfo { pub required: bool, /// Current effective non-secret routing config. /// Null or omitted means provider is disabled. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub current: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -3602,6 +3684,8 @@ pub struct SetProviderRequest { pub base_url: String, /// Full headers map for this provider. /// May include authorization, routing, or other integration-specific headers. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub headers: HashMap, /// The _meta property is reserved by ACP to allow clients and agents to attach additional diff --git a/agent-client-protocol-schema/src/v2/client.rs b/agent-client-protocol-schema/src/v2/client.rs index 9d7857237..4d2a1e60b 100644 --- a/agent-client-protocol-schema/src/v2/client.rs +++ b/agent-client-protocol-schema/src/v2/client.rs @@ -328,9 +328,13 @@ impl ConfigOptionUpdate { #[non_exhaustive] pub struct SessionInfoUpdate { /// Human-readable title for the session. Set to null to clear. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub title: MaybeUndefined, /// ISO 8601 timestamp of last activity. Set to null to clear. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub updated_at: MaybeUndefined, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -1276,6 +1280,8 @@ pub struct RequestPermissionRequest { /// Details about the tool call requiring permission. pub tool_call: ToolCallUpdate, /// Available permission options for the user to choose from. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub options: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at diff --git a/agent-client-protocol-schema/src/v2/content.rs b/agent-client-protocol-schema/src/v2/content.rs index 5f8f46548..55a6c446a 100644 --- a/agent-client-protocol-schema/src/v2/content.rs +++ b/agent-client-protocol-schema/src/v2/content.rs @@ -221,6 +221,9 @@ pub struct ImageContent { /// MIME type describing the encoded media payload. pub mime_type: String, /// URI associated with this resource or media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub uri: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -406,6 +409,9 @@ pub enum EmbeddedResourceResource { #[non_exhaustive] pub struct TextResourceContents { /// MIME type describing the encoded media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub mime_type: Option, /// Text payload carried by this content block. pub text: String, @@ -464,6 +470,9 @@ pub struct BlobResourceContents { /// Base64-encoded bytes for a binary resource payload. pub blob: String, /// MIME type describing the encoded media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub mime_type: Option, /// URI associated with this resource or media payload. pub uri: String, @@ -523,14 +532,26 @@ pub struct ResourceLink { #[serde(default)] pub annotations: Option, /// Optional human-readable details shown with this protocol object. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// MIME type describing the encoded media payload. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub mime_type: Option, /// Human-readable name shown for this protocol object. pub name: String, /// Optional size of the linked resource in bytes, if known. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub size: Option, /// Optional display title for end-user UI. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// URI associated with this resource or media payload. pub uri: String, @@ -622,8 +643,14 @@ pub struct Annotations { #[serde(default)] pub audience: Option>, /// Timestamp indicating when the underlying resource was last modified. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub last_modified: Option, /// Relative importance of this content when clients choose what to surface. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub priority: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at diff --git a/agent-client-protocol-schema/src/v2/elicitation.rs b/agent-client-protocol-schema/src/v2/elicitation.rs index 2bb28d742..cba6c5c11 100644 --- a/agent-client-protocol-schema/src/v2/elicitation.rs +++ b/agent-client-protocol-schema/src/v2/elicitation.rs @@ -10,13 +10,14 @@ use std::{collections::BTreeMap, sync::Arc}; use derive_more::{Display, From}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; -use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; +use serde_with::{DefaultOnError, VecSkipError, serde_as, skip_serializing_none}; use super::{ ELICITATION_COMPLETE_NOTIFICATION, ELICITATION_CREATE_METHOD_NAME, Meta, RequestId, SessionId, ToolCallId, }; use crate::IntoOption; +use crate::SkipListener; /// **UNSTABLE** /// @@ -125,23 +126,50 @@ impl EnumOption { #[non_exhaustive] pub struct StringPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum string length. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub min_length: Option, /// Maximum string length. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_length: Option, /// Pattern the string must match. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub pattern: Option, /// String format. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub format: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// Enum values for untitled single-select enums. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] #[serde(rename = "enum")] pub enum_values: Option>, /// Titled enum options for titled single-select enums. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] #[serde(rename = "oneOf")] pub one_of: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -282,14 +310,29 @@ impl StringPropertySchema { #[non_exhaustive] pub struct NumberPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub minimum: Option, /// Maximum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub maximum: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -365,14 +408,29 @@ impl NumberPropertySchema { #[non_exhaustive] pub struct IntegerPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub minimum: Option, /// Maximum value (inclusive). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub maximum: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -448,10 +506,19 @@ impl IntegerPropertySchema { #[non_exhaustive] pub struct BooleanPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Default value. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub default: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -525,6 +592,8 @@ pub struct UntitledMultiSelectItems { #[serde(rename = "type")] pub type_: ElicitationStringType, /// Allowed enum values. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(rename = "enum")] pub values: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -559,6 +628,8 @@ impl UntitledMultiSelectItems { #[non_exhaustive] pub struct TitledMultiSelectItems { /// Titled enum options. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] #[serde(rename = "anyOf")] pub options: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -614,16 +685,31 @@ pub enum MultiSelectItems { #[non_exhaustive] pub struct MultiSelectPropertySchema { /// Optional title for the property. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Human-readable description. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// Minimum number of items to select. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub min_items: Option, /// Maximum number of items to select. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_items: Option, /// The items definition describing allowed values. pub items: MultiSelectItems, /// Default selected values. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] pub default: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -787,16 +873,29 @@ fn default_object_type() -> ElicitationSchemaType { #[non_exhaustive] pub struct ElicitationSchema { /// Type discriminator. Always `"object"`. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(rename = "type", default = "default_object_type")] pub type_: ElicitationSchemaType, /// Optional title for the schema. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub title: Option, /// Property definitions (must be primitive types). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub properties: BTreeMap, /// List of required property names. + #[serde_as(deserialize_as = "DefaultOnError>>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] + #[serde(default)] pub required: Option>, /// Optional description of what this schema represents. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub description: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1112,6 +1211,7 @@ pub enum ElicitationScope { /// When `tool_call_id` is set, the elicitation is tied to a specific tool call. /// This is useful when an agent receives an elicitation from an MCP server /// during a tool call and needs to redirect it to the user. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] @@ -1120,6 +1220,9 @@ pub struct ElicitationSessionScope { /// The session this elicitation is tied to. pub session_id: SessionId, /// Optional tool call within the session. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub tool_call_id: Option, } @@ -1409,12 +1512,15 @@ pub enum ElicitationAction { /// This capability is not part of the spec yet, and may be removed or changed at any point. /// /// The user accepted the elicitation and provided content. +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq)] #[serde(rename_all = "camelCase")] #[non_exhaustive] pub struct ElicitationAcceptAction { /// The user-provided content, if any, as an object matching the requested schema. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub content: Option>, } @@ -1562,11 +1668,14 @@ impl CompleteElicitationNotification { /// /// Data payload for the `UrlElicitationRequired` error, describing the URL elicitations /// the user must complete. +#[serde_as] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[serde(rename_all = "camelCase")] #[non_exhaustive] pub struct UrlElicitationRequiredData { /// The URL elicitations the user must complete. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub elicitations: Vec, } @@ -2126,8 +2235,8 @@ mod tests { } #[test] - fn schema_rejects_invalid_object_type() { - let err = serde_json::from_value::(json!({ + fn schema_defaults_invalid_object_type() { + let schema = serde_json::from_value::(json!({ "type": "array", "properties": { "name": { @@ -2135,9 +2244,10 @@ mod tests { } } })) - .unwrap_err(); + .unwrap(); - assert!(err.to_string().contains("unknown variant")); + assert_eq!(schema.type_, ElicitationSchemaType::Object); + assert!(schema.properties.contains_key("name")); } #[test] @@ -2156,19 +2266,22 @@ mod tests { } #[test] - fn response_accept_rejects_non_object_content() { - let err = serde_json::from_value::(json!({ + fn response_accept_defaults_non_object_content() { + let response = serde_json::from_value::(json!({ "action": "accept", "content": "Alice" })) - .unwrap_err(); + .unwrap(); - assert!(err.to_string().contains("invalid type")); + assert_eq!( + response.action, + ElicitationAction::Accept(ElicitationAcceptAction::new()) + ); } #[test] - fn response_accept_rejects_nested_object_content() { - let err = serde_json::from_value::(json!({ + fn response_accept_defaults_nested_object_content() { + let response = serde_json::from_value::(json!({ "action": "accept", "content": { "profile": { @@ -2176,9 +2289,12 @@ mod tests { } } })) - .unwrap_err(); + .unwrap(); - assert!(err.to_string().contains("data did not match any variant")); + assert_eq!( + response.action, + ElicitationAction::Accept(ElicitationAcceptAction::new()) + ); } #[test] diff --git a/agent-client-protocol-schema/src/v2/error.rs b/agent-client-protocol-schema/src/v2/error.rs index fc425c00a..dc688e4f4 100644 --- a/agent-client-protocol-schema/src/v2/error.rs +++ b/agent-client-protocol-schema/src/v2/error.rs @@ -14,7 +14,7 @@ use std::{fmt::Display, str}; use schemars::{JsonSchema, Schema}; use serde::{Deserialize, Serialize}; -use serde_with::skip_serializing_none; +use serde_with::{DefaultOnError, serde_as, skip_serializing_none}; use crate::IntoOption; @@ -27,6 +27,7 @@ pub type Result = std::result::Result; /// 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) +#[serde_as] #[skip_serializing_none] #[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)] #[non_exhaustive] @@ -39,6 +40,9 @@ pub struct Error { pub message: String, /// Optional primitive or structured value that contains additional information about the error. /// This may include debugging information or context-specific details. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub data: Option, } diff --git a/agent-client-protocol-schema/src/v2/mcp.rs b/agent-client-protocol-schema/src/v2/mcp.rs index 06afdf704..8ff63a242 100644 --- a/agent-client-protocol-schema/src/v2/mcp.rs +++ b/agent-client-protocol-schema/src/v2/mcp.rs @@ -145,6 +145,8 @@ pub struct MessageMcpRequest { /// Optional inner MCP params. /// /// If omitted or set to `null`, the inner MCP message has no params. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub params: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -217,6 +219,8 @@ pub struct MessageMcpNotification { /// Optional inner MCP params. /// /// If omitted or set to `null`, the inner MCP message has no params. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub params: Option>, /// The _meta property is reserved by ACP to allow clients and agents to attach additional diff --git a/agent-client-protocol-schema/src/v2/nes.rs b/agent-client-protocol-schema/src/v2/nes.rs index 80f5986bd..958c62f7e 100644 --- a/agent-client-protocol-schema/src/v2/nes.rs +++ b/agent-client-protocol-schema/src/v2/nes.rs @@ -666,6 +666,9 @@ impl NesContextCapabilities { #[non_exhaustive] pub struct NesRecentFilesCapabilities { /// Maximum number of recent files the agent can use. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_count: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -722,6 +725,9 @@ impl NesRelatedSnippetsCapabilities { #[non_exhaustive] pub struct NesEditHistoryCapabilities { /// Maximum number of edit history entries the agent can use. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_count: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -751,6 +757,9 @@ impl NesEditHistoryCapabilities { #[non_exhaustive] pub struct NesUserActionsCapabilities { /// Maximum number of user actions the agent can use. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub max_count: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1065,6 +1074,8 @@ pub struct DidChangeDocumentNotification { /// The new version number of the document. pub version: i64, /// The content changes. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub content_changes: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -1119,6 +1130,9 @@ impl DidChangeDocumentNotification { #[non_exhaustive] pub struct TextDocumentContentChangeEvent { /// The range of the document that changed. If `None`, the entire content is replaced. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub range: Option, /// The new text for the range, or the full document content if `range` is `None`. pub text: String, @@ -1334,6 +1348,9 @@ impl DidFocusDocumentNotification { #[non_exhaustive] pub struct StartNesRequest { /// The root URI of the workspace. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub workspace_uri: Option, /// The workspace folders. #[serde_as(deserialize_as = "DefaultOnError>>")] @@ -1930,6 +1947,8 @@ pub struct NesRelatedSnippet { /// The URI of the file containing the snippets. pub uri: String, /// The code excerpts. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub excerpts: Vec, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at @@ -2424,6 +2443,8 @@ pub struct NesEditSuggestion { /// The URI of the file to edit. pub uri: String, /// The text edits to apply. + #[serde_as(deserialize_as = "DefaultOnError>")] + #[schemars(extend("x-deserialize-default-on-error" = true, "x-deserialize-skip-invalid-items" = true))] pub edits: Vec, /// Optional suggested cursor position after applying edits. #[serde_as(deserialize_as = "DefaultOnError")] @@ -2642,6 +2663,9 @@ pub struct NesSearchAndReplaceSuggestion { /// The replacement text. pub replace: String, /// Whether `search` is a regular expression. Defaults to `false`. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub is_regex: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional /// metadata to their interactions. Implementations MUST NOT make assumptions about values at diff --git a/agent-client-protocol-schema/src/v2/tool_call.rs b/agent-client-protocol-schema/src/v2/tool_call.rs index 95b162e30..595cece6c 100644 --- a/agent-client-protocol-schema/src/v2/tool_call.rs +++ b/agent-client-protocol-schema/src/v2/tool_call.rs @@ -36,13 +36,19 @@ pub struct ToolCallUpdate { /// Unique identifier for this tool call within the session. pub tool_call_id: ToolCallId, /// Human-readable title describing what the tool is doing. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub title: MaybeUndefined, /// The category of tool being invoked. /// Helps clients choose appropriate icons and UI treatment. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub kind: MaybeUndefined, /// Current execution status of the tool call. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub status: MaybeUndefined, /// Content produced by the tool call. @@ -57,9 +63,13 @@ pub struct ToolCallUpdate { #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub locations: MaybeUndefined>, /// Raw input parameters sent to the tool. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub raw_input: MaybeUndefined, /// Raw output returned by the tool. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default, skip_serializing_if = "MaybeUndefined::is_undefined")] pub raw_output: MaybeUndefined, /// The _meta property is reserved by ACP to allow clients and agents to attach additional @@ -483,6 +493,9 @@ pub struct Diff { /// The file path being modified. pub path: PathBuf, /// The original content (None for new files). + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] + #[serde(default)] pub old_text: Option, /// The new content after modification. pub new_text: String, @@ -544,6 +557,8 @@ pub struct ToolCallLocation { /// The file path being accessed or modified. pub path: PathBuf, /// Optional line number within the file. + #[serde_as(deserialize_as = "DefaultOnError")] + #[schemars(extend("x-deserialize-default-on-error" = true))] #[serde(default)] pub line: Option, /// The _meta property is reserved by ACP to allow clients and agents to attach additional diff --git a/schema-generator/src/main.rs b/schema-generator/src/main.rs index 9678ae4fa..d2575e2c0 100644 --- a/schema-generator/src/main.rs +++ b/schema-generator/src/main.rs @@ -466,6 +466,84 @@ mod schema_annotation_tests { } } + #[test] + fn source_defaultable_and_vec_fields_are_lenient() { + let root = schema_crate_dir(); + let mut checked_defaultable = 0; + let mut checked_vec = 0; + + for module_dir in ["src/v1", "src/v2"] { + for entry in fs::read_dir(root.join(module_dir)).unwrap() { + let path = entry.unwrap().path(); + if path.extension().and_then(|ext| ext.to_str()) != Some("rs") { + continue; + } + + let source = fs::read_to_string(&path).unwrap(); + let lines: Vec<_> = source.lines().collect(); + for (line_index, line) in lines.iter().enumerate() { + let Some(field_type) = public_struct_field_type(line) else { + continue; + }; + + let annotations = field_annotations(&lines, line_index); + let has_serde_default = serde_annotations_contain_default(&annotations); + let is_option_like = field_type.starts_with("Option<") + || field_type.starts_with("MaybeUndefined<"); + let is_defaultable = is_option_like || has_serde_default; + let is_vec = is_top_level_vec(field_type); + + if is_defaultable { + checked_defaultable += 1; + assert!( + annotations.contains("DefaultOnError") + || annotations.contains("DefaultTrueOnError"), + "{}:{} defaultable field missing lenient deserialization", + path.display(), + line_index + 1 + ); + assert!( + annotations.contains(r#""x-deserialize-default-on-error" = true"#), + "{}:{} defaultable field missing {DEFAULT_ON_ERROR_EXTENSION}", + path.display(), + line_index + 1 + ); + if is_option_like { + assert!( + has_serde_default, + "{}:{} option-like field needs #[serde(default)] with serde_as", + path.display(), + line_index + 1 + ); + } + } + + if is_vec { + checked_vec += 1; + assert!( + annotations.contains("VecSkipError"), + "{}:{} vector field missing VecSkipError", + path.display(), + line_index + 1 + ); + assert!( + annotations.contains(r#""x-deserialize-skip-invalid-items" = true"#), + "{}:{} vector field missing {SKIP_INVALID_ITEMS_EXTENSION}", + path.display(), + line_index + 1 + ); + } + } + } + } + + assert!( + checked_defaultable > 0, + "expected at least one defaultable field" + ); + assert!(checked_vec > 0, "expected at least one vector field"); + } + #[test] fn source_meta_fields_are_default_on_error_annotated() { let root = schema_crate_dir(); @@ -571,6 +649,100 @@ mod schema_annotation_tests { } } + fn public_struct_field_type(line: &str) -> Option<&str> { + let line = line.trim(); + if !line.starts_with("pub ") || !line.ends_with(',') { + return None; + } + + let (_, field_type) = line.split_once(':')?; + Some(field_type.trim_end_matches(',').trim()) + } + + fn field_annotations(lines: &[&str], line_index: usize) -> String { + let mut start = line_index; + let mut cursor = line_index; + while cursor > 0 { + let previous = lines[cursor - 1].trim(); + if previous.is_empty() || previous.starts_with("///") || previous.starts_with("//!") { + break; + } + + if previous.starts_with("#[") { + start = cursor - 1; + cursor -= 1; + continue; + } + + if previous.ends_with(']') { + cursor -= 1; + while cursor > 0 && !lines[cursor].trim_start().starts_with("#[") { + cursor -= 1; + } + start = cursor; + continue; + } + + break; + } + + lines[start..line_index].join("\n") + } + + fn serde_annotations_contain_default(annotations: &str) -> bool { + let mut in_serde = false; + for line in annotations.lines() { + let line = line.trim(); + if line.starts_with("#[serde") { + if line.contains("default") { + return true; + } + in_serde = !line.ends_with(']'); + } else if in_serde { + if line.contains("default") { + return true; + } + if line.ends_with(']') { + in_serde = false; + } + } + } + false + } + + fn is_top_level_vec(field_type: &str) -> bool { + let mut field_type = field_type.trim(); + while let Some(inner) = strip_outer_type(field_type, "Option") + .or_else(|| strip_outer_type(field_type, "MaybeUndefined")) + { + field_type = inner; + } + field_type.starts_with("Vec<") + } + + fn strip_outer_type<'a>(field_type: &'a str, wrapper: &str) -> Option<&'a str> { + let prefix = format!("{wrapper}<"); + if !field_type.starts_with(&prefix) { + return None; + } + + let mut depth = 0; + for (index, character) in field_type[prefix.len() - 1..].char_indices() { + match character { + '<' => depth += 1, + '>' => { + depth -= 1; + if depth == 0 { + let end = prefix.len() - 1 + index; + return Some(field_type[prefix.len()..end].trim()); + } + } + _ => {} + } + } + None + } + fn assert_no_extension(schema: &Value, extension: &str) { assert!( schema.get(extension).is_none(), diff --git a/schema/v1/schema.json b/schema/v1/schema.json index 90f3c07d1..6d1baa89c 100644 --- a/schema/v1/schema.json +++ b/schema/v1/schema.json @@ -270,13 +270,15 @@ "description": "Line number to start reading from (1-based).", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "limit": { "description": "Maximum number of lines to read.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -314,7 +316,9 @@ "type": "array", "items": { "$ref": "#/$defs/PermissionOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -365,7 +369,8 @@ }, "title": { "description": "Update the human-readable title.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "content": { "description": "Replace the content collection.", @@ -386,10 +391,12 @@ "x-deserialize-skip-invalid-items": true }, "rawInput": { - "description": "Update the raw input." + "description": "Update the raw input.", + "x-deserialize-default-on-error": true }, "rawOutput": { - "description": "Update the raw output." + "description": "Update the raw output.", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -643,12 +650,14 @@ }, "lastModified": { "description": "Timestamp indicating when the underlying resource was last modified.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "priority": { "description": "Relative importance of this content when clients choose what to surface.", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -728,7 +737,8 @@ }, "uri": { "description": "URI associated with this resource or media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -790,11 +800,13 @@ }, "description": { "description": "Optional human-readable details shown with this protocol object.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "name": { "description": "Human-readable name shown for this protocol object.", @@ -803,11 +815,13 @@ "size": { "description": "Optional size of the linked resource in bytes, if known.", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "title": { "description": "Optional display title for end-user UI.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -851,7 +865,8 @@ "properties": { "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "text": { "description": "Text payload carried by this content block.", @@ -880,7 +895,8 @@ }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -959,7 +975,8 @@ }, "oldText": { "description": "The original content (None for new files).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "newText": { "description": "The new content after modification.", @@ -1011,7 +1028,8 @@ "description": "Optional line number within the file.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1105,24 +1123,30 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Environment variables for the command.", "type": "array", "items": { "$ref": "#/$defs/EnvVariable" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cwd": { "description": "Working directory for the command (absolute path).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "outputByteLimit": { "description": "Maximum number of output bytes to retain.\n\nWhen the limit is exceeded, the Client truncates from the beginning of the output\nto stay within the limit.\n\nThe Client MUST ensure truncation happens at a character boundary to maintain valid\nstring output, even if this means the retained output is slightly less than the\nspecified limit.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1845,7 +1869,8 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1870,7 +1895,8 @@ }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable\nand easily understood.\n\nIf not provided, the name should be used for display.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "version": { "description": "Version of the implementation. Can be displayed to the user or used\nfor debugging or metrics purposes. (e.g. \"1.0.0\").", @@ -2009,7 +2035,8 @@ }, "description": { "description": "Optional human-readable details shown with this protocol object.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2038,7 +2065,8 @@ }, "description": { "description": "Optional description for the Client to display to the user.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "category": { "description": "Optional semantic category for this option (UX only).", @@ -2159,7 +2187,8 @@ }, "description": { "description": "Optional description for this option value.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2191,7 +2220,9 @@ "type": "array", "items": { "$ref": "#/$defs/SessionConfigSelectOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2279,7 +2310,8 @@ }, "nextCursor": { "description": "Opaque cursor token. If present, pass this in the next request's cursor parameter\nto fetch the next page. If absent, there are no more results.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2313,7 +2345,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "title": { "description": "Human-readable title for the session", @@ -2508,7 +2542,8 @@ "type": "string" }, "data": { - "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details." + "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details.", + "x-deserialize-default-on-error": true } }, "required": ["code", "message"] @@ -2856,7 +2891,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2885,6 +2921,7 @@ }, "kind": { "description": "The category of tool being invoked.\nHelps clients choose appropriate icons and UI treatment.", + "x-deserialize-default-on-error": true, "allOf": [ { "$ref": "#/$defs/ToolKind" @@ -2893,6 +2930,7 @@ }, "status": { "description": "Current execution status of the tool call.", + "x-deserialize-default-on-error": true, "allOf": [ { "$ref": "#/$defs/ToolCallStatus" @@ -2918,10 +2956,12 @@ "x-deserialize-skip-invalid-items": true }, "rawInput": { - "description": "Raw input parameters sent to the tool." + "description": "Raw input parameters sent to the tool.", + "x-deserialize-default-on-error": true }, "rawOutput": { - "description": "Raw output returned by the tool." + "description": "Raw output returned by the tool.", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3162,11 +3202,13 @@ "properties": { "title": { "description": "Human-readable title for the session. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "updatedAt": { "description": "ISO 8601 timestamp of last activity. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3652,7 +3694,9 @@ "type": "array", "items": { "$ref": "#/$defs/HttpHeader" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3680,7 +3724,9 @@ "type": "array", "items": { "$ref": "#/$defs/HttpHeader" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3708,14 +3754,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Environment variables to set when launching the MCP server.", "type": "array", "items": { "$ref": "#/$defs/EnvVariable" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3735,7 +3785,9 @@ "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cwd": { "description": "The working directory for this session.", @@ -3746,7 +3798,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "sessionId": { "description": "The ID of the session to load.", @@ -3773,11 +3827,13 @@ "properties": { "cwd": { "description": "Filter sessions by working directory. Must be an absolute path.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "cursor": { "description": "Opaque cursor token from a previous response's nextCursor field for cursor-based pagination", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3833,14 +3889,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "mcpServers": { "description": "List of MCP servers to connect to for this session.", "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3963,7 +4023,9 @@ "type": "array", "items": { "$ref": "#/$defs/ContentBlock" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4264,7 +4326,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4285,11 +4348,13 @@ "description": "The process exit code (may be null if terminated by signal).", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "signal": { "description": "The signal that terminated the process (may be null if exited normally).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4321,11 +4386,13 @@ "description": "The process exit code (may be null if terminated by signal).", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "signal": { "description": "The signal that terminated the process (may be null if exited normally).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", diff --git a/schema/v1/schema.unstable.json b/schema/v1/schema.unstable.json index 73361b2df..6b9174e5b 100644 --- a/schema/v1/schema.unstable.json +++ b/schema/v1/schema.unstable.json @@ -345,13 +345,15 @@ "description": "Line number to start reading from (1-based).", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "limit": { "description": "Maximum number of lines to read.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -389,7 +391,9 @@ "type": "array", "items": { "$ref": "#/$defs/PermissionOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -440,7 +444,8 @@ }, "title": { "description": "Update the human-readable title.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "content": { "description": "Replace the content collection.", @@ -461,10 +466,12 @@ "x-deserialize-skip-invalid-items": true }, "rawInput": { - "description": "Update the raw input." + "description": "Update the raw input.", + "x-deserialize-default-on-error": true }, "rawOutput": { - "description": "Update the raw output." + "description": "Update the raw output.", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -718,12 +725,14 @@ }, "lastModified": { "description": "Timestamp indicating when the underlying resource was last modified.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "priority": { "description": "Relative importance of this content when clients choose what to surface.", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -803,7 +812,8 @@ }, "uri": { "description": "URI associated with this resource or media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -865,11 +875,13 @@ }, "description": { "description": "Optional human-readable details shown with this protocol object.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "name": { "description": "Human-readable name shown for this protocol object.", @@ -878,11 +890,13 @@ "size": { "description": "Optional size of the linked resource in bytes, if known.", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "title": { "description": "Optional display title for end-user UI.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -926,7 +940,8 @@ "properties": { "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "text": { "description": "Text payload carried by this content block.", @@ -955,7 +970,8 @@ }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -1034,7 +1050,8 @@ }, "oldText": { "description": "The original content (None for new files).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "newText": { "description": "The new content after modification.", @@ -1086,7 +1103,8 @@ "description": "Optional line number within the file.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1180,24 +1198,30 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Environment variables for the command.", "type": "array", "items": { "$ref": "#/$defs/EnvVariable" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cwd": { "description": "Working directory for the command (absolute path).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "outputByteLimit": { "description": "Maximum number of output bytes to retain.\n\nWhen the limit is exceeded, the Client truncates from the beginning of the output\nto stay within the limit.\n\nThe Client MUST ensure truncation happens at a character boundary to maintain valid\nstring output, even if this means the retained output is slightly less than the\nspecified limit.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1432,7 +1456,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true } }, "required": ["sessionId"] @@ -1458,6 +1483,7 @@ "properties": { "type": { "description": "Type discriminator. Always `\"object\"`.", + "x-deserialize-default-on-error": true, "default": "object", "allOf": [ { @@ -1467,11 +1493,13 @@ }, "title": { "description": "Optional title for the schema.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "properties": { "description": "Property definitions (must be primitive types).", "type": "object", + "x-deserialize-default-on-error": true, "default": {}, "additionalProperties": { "$ref": "#/$defs/ElicitationPropertySchema" @@ -1482,11 +1510,14 @@ "type": ["array", "null"], "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "description": { "description": "Optional description of what this schema represents.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1646,27 +1677,32 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minLength": { "description": "Minimum string length.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "maxLength": { "description": "Maximum string length.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "pattern": { "description": "Pattern the string must match.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "format": { "description": "String format.", @@ -1677,25 +1713,31 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "enum": { "description": "Enum values for untitled single-select enums.", "type": ["array", "null"], "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "oneOf": { "description": "Titled enum options for titled single-select enums.", "type": ["array", "null"], "items": { "$ref": "#/$defs/EnumOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1711,26 +1753,31 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minimum": { "description": "Minimum value (inclusive).", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "maximum": { "description": "Maximum value (inclusive).", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1746,26 +1793,31 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minimum": { "description": "Minimum value (inclusive).", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "maximum": { "description": "Maximum value (inclusive).", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1781,15 +1833,18 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", - "type": ["boolean", "null"] + "type": ["boolean", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1839,7 +1894,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1869,7 +1926,9 @@ "type": "array", "items": { "$ref": "#/$defs/EnumOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1886,23 +1945,27 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minItems": { "description": "Minimum number of items to select.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "maxItems": { "description": "Maximum number of items to select.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "items": { "description": "The items definition describing allowed values.", @@ -1917,7 +1980,9 @@ "type": ["array", "null"], "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2053,6 +2118,7 @@ "params": { "description": "Optional inner MCP params.\n\nIf omitted or set to `null`, the inner MCP message has no params.", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true }, "_meta": { @@ -3086,7 +3152,8 @@ "description": "Maximum number of recent files the agent can use.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3116,7 +3183,8 @@ "description": "Maximum number of edit history entries the agent can use.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3134,7 +3202,8 @@ "description": "Maximum number of user actions the agent can use.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3248,16 +3317,19 @@ }, "label": { "description": "Human-readable label for this variable, displayed in client UI.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "secret": { "description": "Whether this value is a secret (e.g. API key, token).\nClients should use a password-style input for secret vars.\n\nDefaults to `true`.", "type": "boolean", + "x-deserialize-default-on-error": true, "default": true }, "optional": { "description": "Whether this variable is optional.\n\nDefaults to `false`.", "type": "boolean", + "x-deserialize-default-on-error": true, "default": false }, "_meta": { @@ -3287,18 +3359,22 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "vars": { "description": "The environment variables the client should set.", "type": "array", "items": { "$ref": "#/$defs/AuthEnvVar" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "link": { "description": "Optional link to a page where the user can obtain their credentials.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3327,18 +3403,22 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "args": { "description": "Additional arguments to pass when running the agent binary for terminal auth.", "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Additional environment variables to set when running the agent binary for terminal auth.", "type": "object", + "x-deserialize-default-on-error": true, "additionalProperties": { "type": "string" } @@ -3370,7 +3450,8 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3391,7 +3472,8 @@ }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable\nand easily understood.\n\nIf not provided, the name should be used for display.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "version": { "description": "Version of the implementation. Can be displayed to the user or used\nfor debugging or metrics purposes. (e.g. \"1.0.0\").", @@ -3474,7 +3556,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3683,7 +3766,8 @@ }, "description": { "description": "Optional human-readable details shown with this protocol object.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3712,7 +3796,8 @@ }, "description": { "description": "Optional description for the Client to display to the user.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "category": { "description": "Optional semantic category for this option (UX only).", @@ -3849,7 +3934,8 @@ }, "description": { "description": "Optional description for this option value.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3881,7 +3967,9 @@ "type": "array", "items": { "$ref": "#/$defs/SessionConfigSelectOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3980,7 +4068,8 @@ }, "nextCursor": { "description": "Opaque cursor token. If present, pass this in the next request's cursor parameter\nto fetch the next page. If absent, there are no more results.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4014,7 +4103,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "title": { "description": "Human-readable title for the session", @@ -4271,19 +4362,22 @@ "description": "Total thought/reasoning tokens", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "cachedReadTokens": { "description": "Total cache read tokens.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "cachedWriteTokens": { "description": "Total cache write tokens.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4509,7 +4603,9 @@ "type": "array", "items": { "$ref": "#/$defs/NesTextEdit" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cursorPosition": { "description": "Optional suggested cursor position after applying edits.", @@ -4616,7 +4712,8 @@ }, "isRegex": { "description": "Whether `search` is a regular expression. Defaults to `false`.", - "type": ["boolean", "null"] + "type": ["boolean", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4666,7 +4763,8 @@ "type": "string" }, "data": { - "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details." + "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details.", + "x-deserialize-default-on-error": true } }, "required": ["code", "message"] @@ -5078,7 +5176,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -5107,6 +5206,7 @@ }, "kind": { "description": "The category of tool being invoked.\nHelps clients choose appropriate icons and UI treatment.", + "x-deserialize-default-on-error": true, "allOf": [ { "$ref": "#/$defs/ToolKind" @@ -5115,6 +5215,7 @@ }, "status": { "description": "Current execution status of the tool call.", + "x-deserialize-default-on-error": true, "allOf": [ { "$ref": "#/$defs/ToolCallStatus" @@ -5140,10 +5241,12 @@ "x-deserialize-skip-invalid-items": true }, "rawInput": { - "description": "Raw input parameters sent to the tool." + "description": "Raw input parameters sent to the tool.", + "x-deserialize-default-on-error": true }, "rawOutput": { - "description": "Raw output returned by the tool." + "description": "Raw output returned by the tool.", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -5566,11 +5669,13 @@ "properties": { "title": { "description": "Human-readable title for the session. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "updatedAt": { "description": "ISO 8601 timestamp of last activity. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -5681,6 +5786,7 @@ "params": { "description": "Optional inner MCP params.\n\nIf omitted or set to `null`, the inner MCP message has no params.", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true }, "_meta": { @@ -6391,6 +6497,7 @@ "headers": { "description": "Full headers map for this provider.\nMay include authorization, routing, or other integration-specific headers.", "type": "object", + "x-deserialize-default-on-error": true, "additionalProperties": { "type": "string" } @@ -6576,7 +6683,9 @@ "type": "array", "items": { "$ref": "#/$defs/HttpHeader" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6604,7 +6713,9 @@ "type": "array", "items": { "$ref": "#/$defs/HttpHeader" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6657,14 +6768,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Environment variables to set when launching the MCP server.", "type": "array", "items": { "$ref": "#/$defs/EnvVariable" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6684,7 +6799,9 @@ "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cwd": { "description": "The working directory for this session.", @@ -6695,7 +6812,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "sessionId": { "description": "The ID of the session to load.", @@ -6722,11 +6841,13 @@ "properties": { "cwd": { "description": "Filter sessions by working directory. Must be an absolute path.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "cursor": { "description": "Opaque cursor token from a previous response's nextCursor field for cursor-based pagination", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6782,14 +6903,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "mcpServers": { "description": "List of MCP servers to connect to for this session.", "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6823,14 +6948,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "mcpServers": { "description": "List of MCP servers to connect to for this session.", "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6978,7 +7107,9 @@ "type": "array", "items": { "$ref": "#/$defs/ContentBlock" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6997,7 +7128,8 @@ "properties": { "workspaceUri": { "description": "The root URI of the workspace.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "workspaceFolders": { "description": "The workspace folders.", @@ -7272,7 +7404,9 @@ "type": "array", "items": { "$ref": "#/$defs/NesExcerpt" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7817,7 +7951,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7838,11 +7973,13 @@ "description": "The process exit code (may be null if terminated by signal).", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "signal": { "description": "The signal that terminated the process (may be null if exited normally).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7874,11 +8011,13 @@ "description": "The process exit code (may be null if terminated by signal).", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "signal": { "description": "The signal that terminated the process (may be null if exited normally).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -8003,6 +8142,7 @@ "content": { "description": "The user-provided content, if any, as an object matching the requested schema.", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": { "$ref": "#/$defs/ElicitationContentValue" } @@ -8250,7 +8390,9 @@ "type": "array", "items": { "$ref": "#/$defs/TextDocumentContentChangeEvent" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -8276,7 +8418,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "text": { "description": "The new text for the range, or the full document content if `range` is `None`.", diff --git a/schema/v2/schema.json b/schema/v2/schema.json index b7591d119..c0567b896 100644 --- a/schema/v2/schema.json +++ b/schema/v2/schema.json @@ -503,7 +503,9 @@ "type": "array", "items": { "$ref": "#/$defs/PermissionOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -534,7 +536,8 @@ }, "title": { "description": "Human-readable title describing what the tool is doing.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "kind": { "description": "The category of tool being invoked.\nHelps clients choose appropriate icons and UI treatment.", @@ -545,7 +548,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "status": { "description": "Current execution status of the tool call.", @@ -556,7 +560,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "content": { "description": "Content produced by the tool call.", @@ -577,10 +582,12 @@ "x-deserialize-skip-invalid-items": true }, "rawInput": { - "description": "Raw input parameters sent to the tool." + "description": "Raw input parameters sent to the tool.", + "x-deserialize-default-on-error": true }, "rawOutput": { - "description": "Raw output returned by the tool." + "description": "Raw output returned by the tool.", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -932,12 +939,14 @@ }, "lastModified": { "description": "Timestamp indicating when the underlying resource was last modified.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "priority": { "description": "Relative importance of this content when clients choose what to surface.", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1022,7 +1031,8 @@ }, "uri": { "description": "URI associated with this resource or media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1084,11 +1094,13 @@ }, "description": { "description": "Optional human-readable details shown with this protocol object.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "name": { "description": "Human-readable name shown for this protocol object.", @@ -1097,11 +1109,13 @@ "size": { "description": "Optional size of the linked resource in bytes, if known.", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "title": { "description": "Optional display title for end-user UI.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -1145,7 +1159,8 @@ "properties": { "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "text": { "description": "Text payload carried by this content block.", @@ -1174,7 +1189,8 @@ }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -1253,7 +1269,8 @@ }, "oldText": { "description": "The original content (None for new files).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "newText": { "description": "The new content after modification.", @@ -1280,7 +1297,8 @@ "description": "Optional line number within the file.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1992,7 +2010,8 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2042,7 +2061,8 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2063,7 +2083,8 @@ }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable\nand easily understood.\n\nIf not provided, the name should be used for display.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "version": { "description": "Version of the implementation. Can be displayed to the user or used\nfor debugging or metrics purposes. (e.g. \"1.0.0\").", @@ -2156,7 +2177,8 @@ }, "description": { "description": "Optional description for the Client to display to the user.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "category": { "description": "Optional semantic category for this option (UX only).", @@ -2304,7 +2326,8 @@ }, "description": { "description": "Optional description for this option value.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2336,7 +2359,9 @@ "type": "array", "items": { "$ref": "#/$defs/SessionConfigSelectOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2412,7 +2437,8 @@ }, "nextCursor": { "description": "Opaque cursor token. If present, pass this in the next request's cursor parameter\nto fetch the next page. If absent, there are no more results.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2446,7 +2472,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "title": { "description": "Human-readable title for the session", @@ -2576,7 +2604,8 @@ "type": "string" }, "data": { - "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details." + "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details.", + "x-deserialize-default-on-error": true } }, "required": ["code", "message"] @@ -3790,11 +3819,13 @@ "properties": { "title": { "description": "Human-readable title for the session. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "updatedAt": { "description": "ISO 8601 timestamp of last activity. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4249,7 +4280,9 @@ "type": "array", "items": { "$ref": "#/$defs/HttpHeader" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4298,14 +4331,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Environment variables to set when launching the MCP server.", "type": "array", "items": { "$ref": "#/$defs/EnvVariable" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4325,7 +4362,9 @@ "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cwd": { "description": "The working directory for this session.", @@ -4336,7 +4375,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "sessionId": { "description": "The ID of the session to load.", @@ -4363,11 +4404,13 @@ "properties": { "cwd": { "description": "Filter sessions by working directory. Must be an absolute path.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "cursor": { "description": "Opaque cursor token from a previous response's nextCursor field for cursor-based pagination", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4423,14 +4466,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "mcpServers": { "description": "List of MCP servers to connect to for this session.", "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4522,7 +4569,9 @@ "type": "array", "items": { "$ref": "#/$defs/ContentBlock" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", diff --git a/schema/v2/schema.unstable.json b/schema/v2/schema.unstable.json index 337bb8d64..466cb5ad3 100644 --- a/schema/v2/schema.unstable.json +++ b/schema/v2/schema.unstable.json @@ -702,7 +702,9 @@ "type": "array", "items": { "$ref": "#/$defs/PermissionOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -733,7 +735,8 @@ }, "title": { "description": "Human-readable title describing what the tool is doing.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "kind": { "description": "The category of tool being invoked.\nHelps clients choose appropriate icons and UI treatment.", @@ -744,7 +747,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "status": { "description": "Current execution status of the tool call.", @@ -755,7 +759,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "content": { "description": "Content produced by the tool call.", @@ -776,10 +781,12 @@ "x-deserialize-skip-invalid-items": true }, "rawInput": { - "description": "Raw input parameters sent to the tool." + "description": "Raw input parameters sent to the tool.", + "x-deserialize-default-on-error": true }, "rawOutput": { - "description": "Raw output returned by the tool." + "description": "Raw output returned by the tool.", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1131,12 +1138,14 @@ }, "lastModified": { "description": "Timestamp indicating when the underlying resource was last modified.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "priority": { "description": "Relative importance of this content when clients choose what to surface.", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1221,7 +1230,8 @@ }, "uri": { "description": "URI associated with this resource or media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1283,11 +1293,13 @@ }, "description": { "description": "Optional human-readable details shown with this protocol object.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "name": { "description": "Human-readable name shown for this protocol object.", @@ -1296,11 +1308,13 @@ "size": { "description": "Optional size of the linked resource in bytes, if known.", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "title": { "description": "Optional display title for end-user UI.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -1344,7 +1358,8 @@ "properties": { "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "text": { "description": "Text payload carried by this content block.", @@ -1373,7 +1388,8 @@ }, "mimeType": { "description": "MIME type describing the encoded media payload.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "uri": { "description": "URI associated with this resource or media payload.", @@ -1452,7 +1468,8 @@ }, "oldText": { "description": "The original content (None for new files).", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "newText": { "description": "The new content after modification.", @@ -1479,7 +1496,8 @@ "description": "Optional line number within the file.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1634,7 +1652,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true } }, "required": ["sessionId"] @@ -1660,6 +1679,7 @@ "properties": { "type": { "description": "Type discriminator. Always `\"object\"`.", + "x-deserialize-default-on-error": true, "default": "object", "allOf": [ { @@ -1669,11 +1689,13 @@ }, "title": { "description": "Optional title for the schema.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "properties": { "description": "Property definitions (must be primitive types).", "type": "object", + "x-deserialize-default-on-error": true, "default": {}, "additionalProperties": { "$ref": "#/$defs/ElicitationPropertySchema" @@ -1684,11 +1706,14 @@ "type": ["array", "null"], "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "description": { "description": "Optional description of what this schema represents.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1853,27 +1878,32 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minLength": { "description": "Minimum string length.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "maxLength": { "description": "Maximum string length.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "pattern": { "description": "Pattern the string must match.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "format": { "description": "String format.", @@ -1884,25 +1914,31 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "enum": { "description": "Enum values for untitled single-select enums.", "type": ["array", "null"], "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "oneOf": { "description": "Titled enum options for titled single-select enums.", "type": ["array", "null"], "items": { "$ref": "#/$defs/EnumOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1918,26 +1954,31 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minimum": { "description": "Minimum value (inclusive).", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "maximum": { "description": "Maximum value (inclusive).", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", "type": ["number", "null"], - "format": "double" + "format": "double", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1953,26 +1994,31 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minimum": { "description": "Minimum value (inclusive).", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "maximum": { "description": "Maximum value (inclusive).", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", "type": ["integer", "null"], - "format": "int64" + "format": "int64", + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -1988,15 +2034,18 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "default": { "description": "Default value.", - "type": ["boolean", "null"] + "type": ["boolean", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2046,7 +2095,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2076,7 +2127,9 @@ "type": "array", "items": { "$ref": "#/$defs/EnumOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2093,23 +2146,27 @@ "properties": { "title": { "description": "Optional title for the property.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "description": { "description": "Human-readable description.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "minItems": { "description": "Minimum number of items to select.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "maxItems": { "description": "Maximum number of items to select.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "items": { "description": "The items definition describing allowed values.", @@ -2124,7 +2181,9 @@ "type": ["array", "null"], "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -2260,6 +2319,7 @@ "params": { "description": "Optional inner MCP params.\n\nIf omitted or set to `null`, the inner MCP message has no params.", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true }, "_meta": { @@ -3368,7 +3428,8 @@ "description": "Maximum number of recent files the agent can use.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3398,7 +3459,8 @@ "description": "Maximum number of edit history entries the agent can use.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3416,7 +3478,8 @@ "description": "Maximum number of user actions the agent can use.", "type": ["integer", "null"], "format": "uint32", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3544,7 +3607,8 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3606,16 +3670,19 @@ }, "label": { "description": "Human-readable label for this variable, displayed in client UI.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "secret": { "description": "Whether this value is a secret (e.g. API key, token).\nClients should use a password-style input for secret vars.\n\nDefaults to `true`.", "type": "boolean", + "x-deserialize-default-on-error": true, "default": true }, "optional": { "description": "Whether this variable is optional.\n\nDefaults to `false`.", "type": "boolean", + "x-deserialize-default-on-error": true, "default": false }, "_meta": { @@ -3645,18 +3712,22 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "vars": { "description": "The environment variables the client should set.", "type": "array", "items": { "$ref": "#/$defs/AuthEnvVar" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "link": { "description": "Optional link to a page where the user can obtain their credentials.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3706,21 +3777,26 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "args": { "description": "Additional arguments to pass when running the agent binary for terminal auth.", "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Additional environment variables to set when running the agent binary for terminal auth.", "type": "array", "items": { "$ref": "#/$defs/EnvVariable" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3749,7 +3825,8 @@ }, "description": { "description": "Optional description providing more details about this authentication method.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -3770,7 +3847,8 @@ }, "title": { "description": "Intended for UI and end-user contexts — optimized to be human-readable\nand easily understood.\n\nIf not provided, the name should be used for display.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "version": { "description": "Version of the implementation. Can be displayed to the user or used\nfor debugging or metrics purposes. (e.g. \"1.0.0\").", @@ -3853,7 +3931,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4016,7 +4095,8 @@ }, "description": { "description": "Optional description for the Client to display to the user.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "category": { "description": "Optional semantic category for this option (UX only).", @@ -4190,7 +4270,8 @@ }, "description": { "description": "Optional description for this option value.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4222,7 +4303,9 @@ "type": "array", "items": { "$ref": "#/$defs/SessionConfigSelectOption" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4309,7 +4392,8 @@ }, "nextCursor": { "description": "Opaque cursor token. If present, pass this in the next request's cursor parameter\nto fetch the next page. If absent, there are no more results.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4343,7 +4427,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "title": { "description": "Human-readable title for the session", @@ -4757,7 +4843,9 @@ "type": "array", "items": { "$ref": "#/$defs/NesTextEdit" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cursorPosition": { "description": "Optional suggested cursor position after applying edits.", @@ -4864,7 +4952,8 @@ }, "isRegex": { "description": "Whether `search` is a regular expression. Defaults to `false`.", - "type": ["boolean", "null"] + "type": ["boolean", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -4914,7 +5003,8 @@ "type": "string" }, "data": { - "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details." + "description": "Optional primitive or structured value that contains additional information about the error.\nThis may include debugging information or context-specific details.", + "x-deserialize-default-on-error": true } }, "required": ["code", "message"] @@ -5696,19 +5786,22 @@ "description": "Total thought/reasoning tokens", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "cachedReadTokens": { "description": "Total cache read tokens.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "cachedWriteTokens": { "description": "Total cache write tokens.", "type": ["integer", "null"], "format": "uint64", - "minimum": 0 + "minimum": 0, + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6350,11 +6443,13 @@ "properties": { "title": { "description": "Human-readable title for the session. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "updatedAt": { "description": "ISO 8601 timestamp of last activity. Set to null to clear.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -6465,6 +6560,7 @@ "params": { "description": "Optional inner MCP params.\n\nIf omitted or set to `null`, the inner MCP message has no params.", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": true }, "_meta": { @@ -7032,6 +7128,7 @@ "headers": { "description": "Full headers map for this provider.\nMay include authorization, routing, or other integration-specific headers.", "type": "object", + "x-deserialize-default-on-error": true, "additionalProperties": { "type": "string" } @@ -7258,7 +7355,9 @@ "type": "array", "items": { "$ref": "#/$defs/HttpHeader" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7311,14 +7410,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "env": { "description": "Environment variables to set when launching the MCP server.", "type": "array", "items": { "$ref": "#/$defs/EnvVariable" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7338,7 +7441,9 @@ "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "cwd": { "description": "The working directory for this session.", @@ -7349,7 +7454,9 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "sessionId": { "description": "The ID of the session to load.", @@ -7376,11 +7483,13 @@ "properties": { "cwd": { "description": "Filter sessions by working directory. Must be an absolute path.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "cursor": { "description": "Opaque cursor token from a previous response's nextCursor field for cursor-based pagination", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7436,14 +7545,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "mcpServers": { "description": "List of MCP servers to connect to for this session.", "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7477,14 +7590,18 @@ "type": "array", "items": { "type": "string" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "mcpServers": { "description": "List of MCP servers to connect to for this session.", "type": "array", "items": { "$ref": "#/$defs/McpServer" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7601,7 +7718,9 @@ "type": "array", "items": { "$ref": "#/$defs/ContentBlock" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -7620,7 +7739,8 @@ "properties": { "workspaceUri": { "description": "The root URI of the workspace.", - "type": ["string", "null"] + "type": ["string", "null"], + "x-deserialize-default-on-error": true }, "workspaceFolders": { "description": "The workspace folders.", @@ -7900,7 +8020,9 @@ "type": "array", "items": { "$ref": "#/$defs/NesExcerpt" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -8409,6 +8531,7 @@ "content": { "description": "The user-provided content, if any, as an object matching the requested schema.", "type": ["object", "null"], + "x-deserialize-default-on-error": true, "additionalProperties": { "$ref": "#/$defs/ElicitationContentValue" } @@ -8656,7 +8779,9 @@ "type": "array", "items": { "$ref": "#/$defs/TextDocumentContentChangeEvent" - } + }, + "x-deserialize-default-on-error": true, + "x-deserialize-skip-invalid-items": true }, "_meta": { "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)", @@ -8682,7 +8807,8 @@ { "type": "null" } - ] + ], + "x-deserialize-default-on-error": true }, "text": { "description": "The new text for the range, or the full document content if `range` is `None`.",