diff --git a/Cargo.toml b/Cargo.toml
index 592903db..cb8f8e91 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,7 +16,6 @@ include = ["/src/**/*.rs", "/README.md", "/LICENSE", "/Cargo.toml"]
[features]
unstable = [
"unstable_cancel_request",
- "unstable_session_config_options",
"unstable_session_fork",
"unstable_session_info_update",
"unstable_session_list",
@@ -24,7 +23,6 @@ unstable = [
"unstable_session_resume",
]
unstable_cancel_request = []
-unstable_session_config_options = []
unstable_session_fork = []
unstable_session_info_update = []
unstable_session_list = []
diff --git a/docs/docs.json b/docs/docs.json
index 4c2db7e3..f2789805 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -124,8 +124,14 @@
"rfds/rust-sdk-v1"
]
},
- { "group": "Preview", "pages": ["rfds/session-config-options"] },
- { "group": "Completed", "pages": ["rfds/introduce-rfd-process"] }
+ { "group": "Preview", "pages": [] },
+ {
+ "group": "Completed",
+ "pages": [
+ "rfds/introduce-rfd-process",
+ "rfds/session-config-options"
+ ]
+ }
]
},
{
diff --git a/docs/protocol/draft/schema.mdx b/docs/protocol/draft/schema.mdx
index a90cfec6..58624f0f 100644
--- a/docs/protocol/draft/schema.mdx
+++ b/docs/protocol/draft/schema.mdx
@@ -267,12 +267,7 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
SessionConfigOption[] | null>} >
- **UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
-Initial session configuration options if supported by the Agent.
-
+ Initial session configuration options if supported by the Agent.
SessionModelState | null>} >
**UNSTABLE**
@@ -424,12 +419,7 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
SessionConfigOption[] | null>} >
- **UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
-Initial session configuration options if supported by the Agent.
-
+ Initial session configuration options if supported by the Agent.
SessionModelState | null>} >
**UNSTABLE**
@@ -507,12 +497,7 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
SessionConfigOption[] | null>} >
- **UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
-Initial session configuration options if supported by the Agent.
-
+ Initial session configuration options if supported by the Agent.
SessionModelState | null>} >
**UNSTABLE**
@@ -683,12 +668,7 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
SessionConfigOption[] | null>} >
- **UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
-Initial session configuration options if supported by the Agent.
-
+ Initial session configuration options if supported by the Agent.
SessionModelState | null>} >
**UNSTABLE**
@@ -708,18 +688,10 @@ See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/sess
### session/set_config_option
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Sets the current value for a session configuration option.
#### SetSessionConfigOptionRequest
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Request parameters for setting a session configuration option.
**Type:** Object
@@ -746,10 +718,6 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
#### SetSessionConfigOptionResponse
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Response to `session/set_config_option` method.
**Type:** Object
@@ -1729,10 +1697,6 @@ Determines which file operations the agent can request.
## ConfigOptionUpdate
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Session configuration options have been updated.
**Type:** Object
@@ -2980,30 +2944,18 @@ Whether the agent supports `session/resume`.
## SessionConfigGroupId
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Unique identifier for a session configuration option value group.
**Type:** `string`
## SessionConfigId
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Unique identifier for a session configuration option.
**Type:** `string`
## SessionConfigOption
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
A session configuration option selector and its current state.
**Type:** Union
@@ -3034,10 +2986,6 @@ Single-value selector (dropdown).
## SessionConfigOptionCategory
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Semantic category for a session configuration option.
This is intended to help Clients distinguish broadly common selectors (e.g. model selector vs
@@ -3068,10 +3016,6 @@ Category names that do not begin with `_` are reserved for the ACP spec.
## SessionConfigSelect
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
A single-value selector (dropdown) session configuration option payload.
**Type:** Object
@@ -3095,10 +3039,6 @@ A single-value selector (dropdown) session configuration option payload.
## SessionConfigSelectGroup
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
A group of possible values for a session configuration option.
**Type:** Object
@@ -3125,10 +3065,6 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
## SessionConfigSelectOption
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
A possible value for a session configuration option.
**Type:** Object
@@ -3155,10 +3091,6 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
## SessionConfigSelectOptions
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Possible values for a session configuration option.
**Type:** Union
@@ -3173,10 +3105,6 @@ Possible values for a session configuration option.
## SessionConfigValueId
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Unique identifier for a session configuration option value.
**Type:** `string`
@@ -3637,10 +3565,6 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
-**UNSTABLE**
-
-This capability is not part of the spec yet, and may be removed or changed at any point.
-
Session configuration options have been updated.
diff --git a/docs/protocol/schema.mdx b/docs/protocol/schema.mdx
index 4ce95265..2f7230ce 100644
--- a/docs/protocol/schema.mdx
+++ b/docs/protocol/schema.mdx
@@ -256,6 +256,9 @@ these keys.
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+SessionConfigOption[] | null>} >
+ Initial session configuration options if supported by the Agent.
SessionModeState | null>} >
Initial mode state if supported by the Agent
@@ -323,6 +326,9 @@ these keys.
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+SessionConfigOption[] | null>} >
+ Initial session configuration options if supported by the Agent.
SessionModeState | null>} >
Initial mode state if supported by the Agent
@@ -415,6 +421,57 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
Indicates why the agent stopped processing the turn.
+
+### session/set_config_option
+
+Sets the current value for a session configuration option.
+
+#### SetSessionConfigOptionRequest
+
+Request parameters for setting a session configuration option.
+
+**Type:** Object
+
+**Properties:**
+
+
+ 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
+these keys.
+
+See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+
+SessionConfigId} required>
+ The ID of the configuration option to set.
+
+SessionId} required>
+ The ID of the session to set the configuration option for.
+
+SessionConfigValueId} required>
+ The ID of the configuration option value to set.
+
+
+#### SetSessionConfigOptionResponse
+
+Response to `session/set_config_option` method.
+
+**Type:** Object
+
+**Properties:**
+
+
+ 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
+these keys.
+
+See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+
+SessionConfigOption[]} required>
+ The full set of configuration options and their current values.
+
+
### session/set_mode
@@ -1257,6 +1314,26 @@ Determines which file operations the agent can request.
+## ConfigOptionUpdate
+
+Session configuration options have been updated.
+
+**Type:** Object
+
+**Properties:**
+
+
+ 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
+these keys.
+
+See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+
+SessionConfigOption[]} required>
+ The full set of configuration options and their current values.
+
+
## Content
Standard content block (text, images, resources).
@@ -2410,6 +2487,173 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
+## SessionConfigGroupId
+
+Unique identifier for a session configuration option value group.
+
+**Type:** `string`
+
+## SessionConfigId
+
+Unique identifier for a session configuration option.
+
+**Type:** `string`
+
+## SessionConfigOption
+
+A session configuration option selector and its current state.
+
+**Type:** Union
+
+
+Single-value selector (dropdown).
+
+
+
+SessionConfigValueId}
+ required
+>
+ The currently selected value.
+
+SessionConfigSelectOptions}
+ required
+>
+ The set of selectable options.
+
+
+
+
+
+
+## SessionConfigOptionCategory
+
+Semantic category for a session configuration option.
+
+This is intended to help Clients distinguish broadly common selectors (e.g. model selector vs
+session mode selector vs thought/reasoning level) for UX purposes (keyboard shortcuts, icons,
+placement). It MUST NOT be required for correctness. Clients MUST handle missing or unknown
+categories gracefully.
+
+Category names beginning with `_` are free for custom use, like other ACP extension methods.
+Category names that do not begin with `_` are reserved for the ACP spec.
+
+**Type:** Union
+
+
+ Session mode selector.
+
+
+
+ Model selector.
+
+
+
+ Thought/reasoning level selector.
+
+
+
+ Unknown / uncategorized selector.
+
+
+## SessionConfigSelect
+
+A single-value selector (dropdown) session configuration option payload.
+
+**Type:** Object
+
+**Properties:**
+
+SessionConfigValueId}
+ required
+>
+ The currently selected value.
+
+SessionConfigSelectOptions}
+ required
+>
+ The set of selectable options.
+
+
+## SessionConfigSelectGroup
+
+A group of possible values for a session configuration option.
+
+**Type:** Object
+
+**Properties:**
+
+
+ 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
+these keys.
+
+See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+
+SessionConfigGroupId} required>
+ Unique identifier for this group.
+
+
+ Human-readable label for this group.
+
+SessionConfigSelectOption[]} required>
+ The set of option values in this group.
+
+
+## SessionConfigSelectOption
+
+A possible value for a session configuration option.
+
+**Type:** Object
+
+**Properties:**
+
+
+ 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
+these keys.
+
+See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+
+
+ Optional description for this option value.
+
+
+ Human-readable label for this option value.
+
+SessionConfigValueId} required>
+ Unique identifier for this option value.
+
+
+## SessionConfigSelectOptions
+
+Possible values for a session configuration option.
+
+**Type:** Union
+
+
+ A flat list of options with no grouping.
+
+
+
+ A list of options grouped under headers.
+
+
+## SessionConfigValueId
+
+Unique identifier for a session configuration option value.
+
+**Type:** `string`
+
## SessionId
A unique identifier for a conversation session between a client and agent.
@@ -2712,6 +2956,28 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
+
+Session configuration options have been updated.
+
+
+
+
+ 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
+these keys.
+
+See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
+
+
+SessionConfigOption[]} required>
+ The full set of configuration options and their current values.
+
+
+
+
+
+
+
## StopReason
Reasons why an agent stops processing a prompt turn.
diff --git a/docs/protocol/draft/session-config-options.mdx b/docs/protocol/session-config-options.mdx
similarity index 100%
rename from docs/protocol/draft/session-config-options.mdx
rename to docs/protocol/session-config-options.mdx
diff --git a/docs/protocol/session-modes.mdx b/docs/protocol/session-modes.mdx
index ddfb42bf..82dc1849 100644
--- a/docs/protocol/session-modes.mdx
+++ b/docs/protocol/session-modes.mdx
@@ -3,6 +3,12 @@ title: "Session Modes"
description: "Switch between different agent operating modes"
---
+
+ Session Modes have been replaced by [Session Config
+ Options](./session-config-options). Dedicated session mode methods will be
+ removed in a future version of the protocol.
+
+
Agents can provide a set of modes they can operate in. Modes often affect the system prompts used, the availability of tools, and whether they request permission before running.
## Initial state
diff --git a/schema/meta.json b/schema/meta.json
index ec0ba7db..186ea1bd 100644
--- a/schema/meta.json
+++ b/schema/meta.json
@@ -6,6 +6,7 @@
"session_load": "session/load",
"session_new": "session/new",
"session_prompt": "session/prompt",
+ "session_set_config_option": "session/set_config_option",
"session_set_mode": "session/set_mode"
},
"clientMethods": {
diff --git a/schema/schema.json b/schema/schema.json
index eba17945..ae008f8c 100644
--- a/schema/schema.json
+++ b/schema/schema.json
@@ -244,6 +244,14 @@
],
"title": "SetSessionModeResponse"
},
+ {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SetSessionConfigOptionResponse"
+ }
+ ],
+ "title": "SetSessionConfigOptionResponse"
+ },
{
"allOf": [
{
@@ -623,6 +631,15 @@
"description": "Sets the current mode for a session.\n\nAllows switching between different agent modes (e.g., \"ask\", \"architect\", \"code\")\nthat affect system prompts, tool availability, and permission behaviors.\n\nThe mode must be one of the modes advertised in `availableModes` during session\ncreation or loading. Agents may also change modes autonomously and notify the\nclient via `current_mode_update` notifications.\n\nThis method can be called at any time during a session, whether the Agent is\nidle or actively generating a response.\n\nSee protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)",
"title": "SetSessionModeRequest"
},
+ {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SetSessionConfigOptionRequest"
+ }
+ ],
+ "description": "Sets the current value for a session configuration option.",
+ "title": "SetSessionConfigOptionRequest"
+ },
{
"allOf": [
{
@@ -759,6 +776,25 @@
],
"x-docs-ignore": true
},
+ "ConfigOptionUpdate": {
+ "description": "Session configuration options have been updated.",
+ "properties": {
+ "_meta": {
+ "additionalProperties": true,
+ "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
+ "type": ["object", "null"]
+ },
+ "configOptions": {
+ "description": "The full set of configuration options and their current values.",
+ "items": {
+ "$ref": "#/$defs/SessionConfigOption"
+ },
+ "type": "array"
+ }
+ },
+ "required": ["configOptions"],
+ "type": "object"
+ },
"Content": {
"description": "Standard content block (text, images, resources).",
"properties": {
@@ -1442,6 +1478,13 @@
"description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
"type": ["object", "null"]
},
+ "configOptions": {
+ "description": "Initial session configuration options if supported by the Agent.",
+ "items": {
+ "$ref": "#/$defs/SessionConfigOption"
+ },
+ "type": ["array", "null"]
+ },
"modes": {
"anyOf": [
{
@@ -1646,6 +1689,13 @@
"description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
"type": ["object", "null"]
},
+ "configOptions": {
+ "description": "Initial session configuration options if supported by the Agent.",
+ "items": {
+ "$ref": "#/$defs/SessionConfigOption"
+ },
+ "type": ["array", "null"]
+ },
"modes": {
"anyOf": [
{
@@ -2190,6 +2240,206 @@
},
"type": "object"
},
+ "SessionConfigGroupId": {
+ "description": "Unique identifier for a session configuration option value group.",
+ "type": "string"
+ },
+ "SessionConfigId": {
+ "description": "Unique identifier for a session configuration option.",
+ "type": "string"
+ },
+ "SessionConfigOption": {
+ "description": "A session configuration option selector and its current state.",
+ "discriminator": {
+ "propertyName": "type"
+ },
+ "oneOf": [
+ {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigSelect"
+ }
+ ],
+ "description": "Single-value selector (dropdown).",
+ "properties": {
+ "type": {
+ "const": "select",
+ "type": "string"
+ }
+ },
+ "required": ["type"],
+ "type": "object"
+ }
+ ],
+ "properties": {
+ "_meta": {
+ "additionalProperties": true,
+ "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
+ "type": ["object", "null"]
+ },
+ "category": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/SessionConfigOptionCategory"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Optional semantic category for this option (UX only)."
+ },
+ "description": {
+ "description": "Optional description for the Client to display to the user.",
+ "type": ["string", "null"]
+ },
+ "id": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigId"
+ }
+ ],
+ "description": "Unique identifier for the configuration option."
+ },
+ "name": {
+ "description": "Human-readable label for the option.",
+ "type": "string"
+ }
+ },
+ "required": ["id", "name"],
+ "type": "object"
+ },
+ "SessionConfigOptionCategory": {
+ "anyOf": [
+ {
+ "const": "mode",
+ "description": "Session mode selector.",
+ "type": "string"
+ },
+ {
+ "const": "model",
+ "description": "Model selector.",
+ "type": "string"
+ },
+ {
+ "const": "thought_level",
+ "description": "Thought/reasoning level selector.",
+ "type": "string"
+ },
+ {
+ "description": "Unknown / uncategorized selector.",
+ "title": "other",
+ "type": "string"
+ }
+ ],
+ "description": "Semantic category for a session configuration option.\n\nThis is intended to help Clients distinguish broadly common selectors (e.g. model selector vs\nsession mode selector vs thought/reasoning level) for UX purposes (keyboard shortcuts, icons,\nplacement). It MUST NOT be required for correctness. Clients MUST handle missing or unknown\ncategories gracefully.\n\nCategory names beginning with `_` are free for custom use, like other ACP extension methods.\nCategory names that do not begin with `_` are reserved for the ACP spec."
+ },
+ "SessionConfigSelect": {
+ "description": "A single-value selector (dropdown) session configuration option payload.",
+ "properties": {
+ "currentValue": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigValueId"
+ }
+ ],
+ "description": "The currently selected value."
+ },
+ "options": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigSelectOptions"
+ }
+ ],
+ "description": "The set of selectable options."
+ }
+ },
+ "required": ["currentValue", "options"],
+ "type": "object"
+ },
+ "SessionConfigSelectGroup": {
+ "description": "A group of possible values for a session configuration option.",
+ "properties": {
+ "_meta": {
+ "additionalProperties": true,
+ "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
+ "type": ["object", "null"]
+ },
+ "group": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigGroupId"
+ }
+ ],
+ "description": "Unique identifier for this group."
+ },
+ "name": {
+ "description": "Human-readable label for this group.",
+ "type": "string"
+ },
+ "options": {
+ "description": "The set of option values in this group.",
+ "items": {
+ "$ref": "#/$defs/SessionConfigSelectOption"
+ },
+ "type": "array"
+ }
+ },
+ "required": ["group", "name", "options"],
+ "type": "object"
+ },
+ "SessionConfigSelectOption": {
+ "description": "A possible value for a session configuration option.",
+ "properties": {
+ "_meta": {
+ "additionalProperties": true,
+ "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
+ "type": ["object", "null"]
+ },
+ "description": {
+ "description": "Optional description for this option value.",
+ "type": ["string", "null"]
+ },
+ "name": {
+ "description": "Human-readable label for this option value.",
+ "type": "string"
+ },
+ "value": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigValueId"
+ }
+ ],
+ "description": "Unique identifier for this option value."
+ }
+ },
+ "required": ["value", "name"],
+ "type": "object"
+ },
+ "SessionConfigSelectOptions": {
+ "anyOf": [
+ {
+ "description": "A flat list of options with no grouping.",
+ "items": {
+ "$ref": "#/$defs/SessionConfigSelectOption"
+ },
+ "title": "Ungrouped",
+ "type": "array"
+ },
+ {
+ "description": "A list of options grouped under headers.",
+ "items": {
+ "$ref": "#/$defs/SessionConfigSelectGroup"
+ },
+ "title": "Grouped",
+ "type": "array"
+ }
+ ],
+ "description": "Possible values for a session configuration option."
+ },
+ "SessionConfigValueId": {
+ "description": "Unique identifier for a session configuration option value.",
+ "type": "string"
+ },
"SessionId": {
"description": "A unique identifier for a conversation session between a client and agent.\n\nSessions maintain their own context, conversation history, and state,\nallowing multiple independent interactions with the same agent.\n\nSee protocol docs: [Session ID](https://agentclientprotocol.com/protocol/session-setup#session-id)",
"type": "string"
@@ -2409,9 +2659,84 @@
},
"required": ["sessionUpdate"],
"type": "object"
+ },
+ {
+ "allOf": [
+ {
+ "$ref": "#/$defs/ConfigOptionUpdate"
+ }
+ ],
+ "description": "Session configuration options have been updated.",
+ "properties": {
+ "sessionUpdate": {
+ "const": "config_option_update",
+ "type": "string"
+ }
+ },
+ "required": ["sessionUpdate"],
+ "type": "object"
}
]
},
+ "SetSessionConfigOptionRequest": {
+ "description": "Request parameters for setting a session configuration option.",
+ "properties": {
+ "_meta": {
+ "additionalProperties": true,
+ "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
+ "type": ["object", "null"]
+ },
+ "configId": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigId"
+ }
+ ],
+ "description": "The ID of the configuration option to set."
+ },
+ "sessionId": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionId"
+ }
+ ],
+ "description": "The ID of the session to set the configuration option for."
+ },
+ "value": {
+ "allOf": [
+ {
+ "$ref": "#/$defs/SessionConfigValueId"
+ }
+ ],
+ "description": "The ID of the configuration option value to set."
+ }
+ },
+ "required": ["sessionId", "configId", "value"],
+ "type": "object",
+ "x-method": "session/set_config_option",
+ "x-side": "agent"
+ },
+ "SetSessionConfigOptionResponse": {
+ "description": "Response to `session/set_config_option` method.",
+ "properties": {
+ "_meta": {
+ "additionalProperties": true,
+ "description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
+ "type": ["object", "null"]
+ },
+ "configOptions": {
+ "description": "The full set of configuration options and their current values.",
+ "items": {
+ "$ref": "#/$defs/SessionConfigOption"
+ },
+ "type": "array"
+ }
+ },
+ "required": ["configOptions"],
+ "type": "object",
+ "x-method": "session/set_config_option",
+ "x-side": "agent"
+ },
"SetSessionModeRequest": {
"description": "Request parameters for setting a session mode.",
"properties": {
diff --git a/schema/schema.unstable.json b/schema/schema.unstable.json
index c7e8534c..e4a0e23c 100644
--- a/schema/schema.unstable.json
+++ b/schema/schema.unstable.json
@@ -718,7 +718,7 @@
"$ref": "#/$defs/SetSessionConfigOptionRequest"
}
],
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nSets the current value for a session configuration option.",
+ "description": "Sets the current value for a session configuration option.",
"title": "SetSessionConfigOptionRequest"
},
{
@@ -867,7 +867,7 @@
"x-docs-ignore": true
},
"ConfigOptionUpdate": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nSession configuration options have been updated.",
+ "description": "Session configuration options have been updated.",
"properties": {
"_meta": {
"additionalProperties": true,
@@ -1352,7 +1352,7 @@
"type": ["object", "null"]
},
"configOptions": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nInitial session configuration options if supported by the Agent.",
+ "description": "Initial session configuration options if supported by the Agent.",
"items": {
"$ref": "#/$defs/SessionConfigOption"
},
@@ -1706,7 +1706,7 @@
"type": ["object", "null"]
},
"configOptions": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nInitial session configuration options if supported by the Agent.",
+ "description": "Initial session configuration options if supported by the Agent.",
"items": {
"$ref": "#/$defs/SessionConfigOption"
},
@@ -1960,7 +1960,7 @@
"type": ["object", "null"]
},
"configOptions": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nInitial session configuration options if supported by the Agent.",
+ "description": "Initial session configuration options if supported by the Agent.",
"items": {
"$ref": "#/$defs/SessionConfigOption"
},
@@ -2527,7 +2527,7 @@
"type": ["object", "null"]
},
"configOptions": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nInitial session configuration options if supported by the Agent.",
+ "description": "Initial session configuration options if supported by the Agent.",
"items": {
"$ref": "#/$defs/SessionConfigOption"
},
@@ -2630,15 +2630,15 @@
"type": "object"
},
"SessionConfigGroupId": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nUnique identifier for a session configuration option value group.",
+ "description": "Unique identifier for a session configuration option value group.",
"type": "string"
},
"SessionConfigId": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nUnique identifier for a session configuration option.",
+ "description": "Unique identifier for a session configuration option.",
"type": "string"
},
"SessionConfigOption": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nA session configuration option selector and its current state.",
+ "description": "A session configuration option selector and its current state.",
"discriminator": {
"propertyName": "type"
},
@@ -2720,10 +2720,10 @@
"type": "string"
}
],
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nSemantic category for a session configuration option.\n\nThis is intended to help Clients distinguish broadly common selectors (e.g. model selector vs\nsession mode selector vs thought/reasoning level) for UX purposes (keyboard shortcuts, icons,\nplacement). It MUST NOT be required for correctness. Clients MUST handle missing or unknown\ncategories gracefully.\n\nCategory names beginning with `_` are free for custom use, like other ACP extension methods.\nCategory names that do not begin with `_` are reserved for the ACP spec."
+ "description": "Semantic category for a session configuration option.\n\nThis is intended to help Clients distinguish broadly common selectors (e.g. model selector vs\nsession mode selector vs thought/reasoning level) for UX purposes (keyboard shortcuts, icons,\nplacement). It MUST NOT be required for correctness. Clients MUST handle missing or unknown\ncategories gracefully.\n\nCategory names beginning with `_` are free for custom use, like other ACP extension methods.\nCategory names that do not begin with `_` are reserved for the ACP spec."
},
"SessionConfigSelect": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nA single-value selector (dropdown) session configuration option payload.",
+ "description": "A single-value selector (dropdown) session configuration option payload.",
"properties": {
"currentValue": {
"allOf": [
@@ -2746,7 +2746,7 @@
"type": "object"
},
"SessionConfigSelectGroup": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nA group of possible values for a session configuration option.",
+ "description": "A group of possible values for a session configuration option.",
"properties": {
"_meta": {
"additionalProperties": true,
@@ -2777,7 +2777,7 @@
"type": "object"
},
"SessionConfigSelectOption": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nA possible value for a session configuration option.",
+ "description": "A possible value for a session configuration option.",
"properties": {
"_meta": {
"additionalProperties": true,
@@ -2823,10 +2823,10 @@
"type": "array"
}
],
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nPossible values for a session configuration option."
+ "description": "Possible values for a session configuration option."
},
"SessionConfigValueId": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nUnique identifier for a session configuration option value.",
+ "description": "Unique identifier for a session configuration option value.",
"type": "string"
},
"SessionForkCapabilities": {
@@ -3166,7 +3166,7 @@
"$ref": "#/$defs/ConfigOptionUpdate"
}
],
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nSession configuration options have been updated.",
+ "description": "Session configuration options have been updated.",
"properties": {
"sessionUpdate": {
"const": "config_option_update",
@@ -3195,7 +3195,7 @@
]
},
"SetSessionConfigOptionRequest": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nRequest parameters for setting a session configuration option.",
+ "description": "Request parameters for setting a session configuration option.",
"properties": {
"_meta": {
"additionalProperties": true,
@@ -3233,7 +3233,7 @@
"x-side": "agent"
},
"SetSessionConfigOptionResponse": {
- "description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nResponse to `session/set_config_option` method.",
+ "description": "Response to `session/set_config_option` method.",
"properties": {
"_meta": {
"additionalProperties": true,
diff --git a/src/agent.rs b/src/agent.rs
index 6f5e5627..e05716ac 100644
--- a/src/agent.rs
+++ b/src/agent.rs
@@ -424,12 +424,7 @@ pub struct NewSessionResponse {
#[cfg(feature = "unstable_session_model")]
#[serde(skip_serializing_if = "Option::is_none")]
pub models: Option,
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[serde(skip_serializing_if = "Option::is_none")]
pub config_options: Option>,
/// The _meta property is reserved by ACP to allow clients and agents to attach additional
@@ -449,7 +444,6 @@ impl NewSessionResponse {
modes: None,
#[cfg(feature = "unstable_session_model")]
models: None,
- #[cfg(feature = "unstable_session_config_options")]
config_options: None,
meta: None,
}
@@ -476,12 +470,7 @@ impl NewSessionResponse {
self
}
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[must_use]
pub fn config_options(
mut self,
@@ -578,12 +567,7 @@ pub struct LoadSessionResponse {
#[cfg(feature = "unstable_session_model")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub models: Option,
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config_options: Option>,
/// The _meta property is reserved by ACP to allow clients and agents to attach additional
@@ -622,12 +606,7 @@ impl LoadSessionResponse {
self
}
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[must_use]
pub fn config_options(
mut self,
@@ -739,12 +718,7 @@ pub struct ForkSessionResponse {
#[cfg(feature = "unstable_session_model")]
#[serde(skip_serializing_if = "Option::is_none")]
pub models: Option,
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[serde(skip_serializing_if = "Option::is_none")]
pub config_options: Option>,
/// The _meta property is reserved by ACP to allow clients and agents to attach additional
@@ -765,7 +739,6 @@ impl ForkSessionResponse {
modes: None,
#[cfg(feature = "unstable_session_model")]
models: None,
- #[cfg(feature = "unstable_session_config_options")]
config_options: None,
meta: None,
}
@@ -792,12 +765,7 @@ impl ForkSessionResponse {
self
}
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[must_use]
pub fn config_options(
mut self,
@@ -907,12 +875,7 @@ pub struct ResumeSessionResponse {
#[cfg(feature = "unstable_session_model")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub models: Option,
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config_options: Option>,
/// The _meta property is reserved by ACP to allow clients and agents to attach additional
@@ -952,12 +915,7 @@ impl ResumeSessionResponse {
self
}
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Initial session configuration options if supported by the Agent.
- #[cfg(feature = "unstable_session_config_options")]
#[must_use]
pub fn config_options(
mut self,
@@ -1331,69 +1289,46 @@ impl SetSessionModeResponse {
// Session config options
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Unique identifier for a session configuration option.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq, Hash, From, Display)]
#[serde(transparent)]
#[from(Arc, String, &'static str)]
#[non_exhaustive]
pub struct SessionConfigId(pub Arc);
-#[cfg(feature = "unstable_session_config_options")]
impl SessionConfigId {
pub fn new(id: impl Into>) -> Self {
Self(id.into())
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Unique identifier for a session configuration option value.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq, Hash, From, Display)]
#[serde(transparent)]
#[from(Arc, String, &'static str)]
#[non_exhaustive]
pub struct SessionConfigValueId(pub Arc);
-#[cfg(feature = "unstable_session_config_options")]
impl SessionConfigValueId {
pub fn new(id: impl Into>) -> Self {
Self(id.into())
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Unique identifier for a session configuration option value group.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq, Hash, From, Display)]
#[serde(transparent)]
#[from(Arc, String, &'static str)]
#[non_exhaustive]
pub struct SessionConfigGroupId(pub Arc);
-#[cfg(feature = "unstable_session_config_options")]
impl SessionConfigGroupId {
pub fn new(id: impl Into>) -> Self {
Self(id.into())
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// A possible value for a session configuration option.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
@@ -1414,7 +1349,6 @@ pub struct SessionConfigSelectOption {
pub meta: Option,
}
-#[cfg(feature = "unstable_session_config_options")]
impl SessionConfigSelectOption {
#[must_use]
pub fn new(value: impl Into, name: impl Into) -> Self {
@@ -1444,12 +1378,7 @@ impl SessionConfigSelectOption {
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// A group of possible values for a session configuration option.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
@@ -1469,7 +1398,6 @@ pub struct SessionConfigSelectGroup {
pub meta: Option,
}
-#[cfg(feature = "unstable_session_config_options")]
impl SessionConfigSelectGroup {
#[must_use]
pub fn new(
@@ -1497,12 +1425,7 @@ impl SessionConfigSelectGroup {
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Possible values for a session configuration option.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(untagged)]
#[non_exhaustive]
@@ -1513,26 +1436,19 @@ pub enum SessionConfigSelectOptions {
Grouped(Vec),
}
-#[cfg(feature = "unstable_session_config_options")]
impl From> for SessionConfigSelectOptions {
fn from(options: Vec) -> Self {
SessionConfigSelectOptions::Ungrouped(options)
}
}
-#[cfg(feature = "unstable_session_config_options")]
impl From> for SessionConfigSelectOptions {
fn from(groups: Vec) -> Self {
SessionConfigSelectOptions::Grouped(groups)
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// A single-value selector (dropdown) session configuration option payload.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
@@ -1543,7 +1459,6 @@ pub struct SessionConfigSelect {
pub options: SessionConfigSelectOptions,
}
-#[cfg(feature = "unstable_session_config_options")]
impl SessionConfigSelect {
#[must_use]
pub fn new(
@@ -1557,10 +1472,6 @@ impl SessionConfigSelect {
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Semantic category for a session configuration option.
///
/// This is intended to help Clients distinguish broadly common selectors (e.g. model selector vs
@@ -1570,7 +1481,6 @@ impl SessionConfigSelect {
///
/// Category names beginning with `_` are free for custom use, like other ACP extension methods.
/// Category names that do not begin with `_` are reserved for the ACP spec.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
@@ -1586,12 +1496,7 @@ pub enum SessionConfigOptionCategory {
Other(String),
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Type-specific session configuration option payload.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(tag = "type", rename_all = "snake_case")]
#[schemars(extend("discriminator" = {"propertyName": "type"}))]
@@ -1601,12 +1506,7 @@ pub enum SessionConfigKind {
Select(SessionConfigSelect),
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// A session configuration option selector and its current state.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
@@ -1633,7 +1533,6 @@ pub struct SessionConfigOption {
pub meta: Option,
}
-#[cfg(feature = "unstable_session_config_options")]
impl SessionConfigOption {
#[must_use]
pub fn new(
@@ -1689,12 +1588,7 @@ impl SessionConfigOption {
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Request parameters for setting a session configuration option.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[schemars(extend("x-side" = "agent", "x-method" = SESSION_SET_CONFIG_OPTION_METHOD_NAME))]
#[serde(rename_all = "camelCase")]
@@ -1715,7 +1609,6 @@ pub struct SetSessionConfigOptionRequest {
pub meta: Option,
}
-#[cfg(feature = "unstable_session_config_options")]
impl SetSessionConfigOptionRequest {
#[must_use]
pub fn new(
@@ -1743,12 +1636,7 @@ impl SetSessionConfigOptionRequest {
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Response to `session/set_config_option` method.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[schemars(extend("x-side" = "agent", "x-method" = SESSION_SET_CONFIG_OPTION_METHOD_NAME))]
#[serde(rename_all = "camelCase")]
@@ -1765,7 +1653,6 @@ pub struct SetSessionConfigOptionResponse {
pub meta: Option,
}
-#[cfg(feature = "unstable_session_config_options")]
impl SetSessionConfigOptionResponse {
#[must_use]
pub fn new(config_options: Vec) -> Self {
@@ -2813,7 +2700,6 @@ pub struct AgentMethodNames {
/// Method for setting the mode for a session.
pub session_set_mode: &'static str,
/// Method for setting a configuration option for a session.
- #[cfg(feature = "unstable_session_config_options")]
pub session_set_config_option: &'static str,
/// Method for sending a prompt to the agent.
pub session_prompt: &'static str,
@@ -2840,7 +2726,6 @@ pub const AGENT_METHOD_NAMES: AgentMethodNames = AgentMethodNames {
session_new: SESSION_NEW_METHOD_NAME,
session_load: SESSION_LOAD_METHOD_NAME,
session_set_mode: SESSION_SET_MODE_METHOD_NAME,
- #[cfg(feature = "unstable_session_config_options")]
session_set_config_option: SESSION_SET_CONFIG_OPTION_METHOD_NAME,
session_prompt: SESSION_PROMPT_METHOD_NAME,
session_cancel: SESSION_CANCEL_METHOD_NAME,
@@ -2865,7 +2750,6 @@ pub(crate) const SESSION_LOAD_METHOD_NAME: &str = "session/load";
/// Method name for setting the mode for a session.
pub(crate) const SESSION_SET_MODE_METHOD_NAME: &str = "session/set_mode";
/// Method name for setting a configuration option for a session.
-#[cfg(feature = "unstable_session_config_options")]
pub(crate) const SESSION_SET_CONFIG_OPTION_METHOD_NAME: &str = "session/set_config_option";
/// Method name for sending a prompt.
pub(crate) const SESSION_PROMPT_METHOD_NAME: &str = "session/prompt";
@@ -2990,11 +2874,6 @@ pub enum ClientRequest {
///
/// See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)
SetSessionModeRequest(SetSessionModeRequest),
- #[cfg(feature = "unstable_session_config_options")]
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Sets the current value for a session configuration option.
SetSessionConfigOptionRequest(SetSessionConfigOptionRequest),
/// Processes a user prompt within a session.
@@ -3041,7 +2920,6 @@ impl ClientRequest {
#[cfg(feature = "unstable_session_resume")]
Self::ResumeSessionRequest(_) => AGENT_METHOD_NAMES.session_resume,
Self::SetSessionModeRequest(_) => AGENT_METHOD_NAMES.session_set_mode,
- #[cfg(feature = "unstable_session_config_options")]
Self::SetSessionConfigOptionRequest(_) => AGENT_METHOD_NAMES.session_set_config_option,
Self::PromptRequest(_) => AGENT_METHOD_NAMES.session_prompt,
#[cfg(feature = "unstable_session_model")]
@@ -3073,7 +2951,6 @@ pub enum AgentResponse {
#[cfg(feature = "unstable_session_resume")]
ResumeSessionResponse(#[serde(default)] ResumeSessionResponse),
SetSessionModeResponse(#[serde(default)] SetSessionModeResponse),
- #[cfg(feature = "unstable_session_config_options")]
SetSessionConfigOptionResponse(SetSessionConfigOptionResponse),
PromptResponse(PromptResponse),
#[cfg(feature = "unstable_session_model")]
@@ -3304,7 +3181,6 @@ mod test_serialization {
}
#[test]
- #[cfg(feature = "unstable_session_config_options")]
fn test_session_config_option_category_known_variants() {
// Test serialization of known variants
assert_eq!(
@@ -3336,7 +3212,6 @@ mod test_serialization {
}
#[test]
- #[cfg(feature = "unstable_session_config_options")]
fn test_session_config_option_category_unknown_variants() {
// Test that unknown strings are captured in Other variant
let unknown: SessionConfigOptionCategory =
@@ -3352,7 +3227,6 @@ mod test_serialization {
}
#[test]
- #[cfg(feature = "unstable_session_config_options")]
fn test_session_config_option_category_custom_categories() {
// Category names beginning with `_` are free for custom use
let custom: SessionConfigOptionCategory =
diff --git a/src/client.rs b/src/client.rs
index 94cf5644..0a9529f9 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -9,11 +9,9 @@ use derive_more::{Display, From};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
-#[cfg(feature = "unstable_session_config_options")]
-use crate::SessionConfigOption;
use crate::{
- ContentBlock, ExtNotification, ExtRequest, ExtResponse, IntoOption, Meta, Plan, SessionId,
- SessionModeId, ToolCall, ToolCallUpdate,
+ ContentBlock, ExtNotification, ExtRequest, ExtResponse, IntoOption, Meta, Plan,
+ SessionConfigOption, SessionId, SessionModeId, ToolCall, ToolCallUpdate,
};
#[cfg(feature = "unstable_session_info_update")]
use crate::{IntoMaybeUndefined, MaybeUndefined};
@@ -94,11 +92,6 @@ pub enum SessionUpdate {
///
/// See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)
CurrentModeUpdate(CurrentModeUpdate),
- #[cfg(feature = "unstable_session_config_options")]
- /// **UNSTABLE**
- ///
- /// This capability is not part of the spec yet, and may be removed or changed at any point.
- ///
/// Session configuration options have been updated.
ConfigOptionUpdate(ConfigOptionUpdate),
#[cfg(feature = "unstable_session_info_update")]
@@ -145,12 +138,7 @@ impl CurrentModeUpdate {
}
}
-/// **UNSTABLE**
-///
-/// This capability is not part of the spec yet, and may be removed or changed at any point.
-///
/// Session configuration options have been updated.
-#[cfg(feature = "unstable_session_config_options")]
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
@@ -166,7 +154,6 @@ pub struct ConfigOptionUpdate {
pub meta: Option,
}
-#[cfg(feature = "unstable_session_config_options")]
impl ConfigOptionUpdate {
#[must_use]
pub fn new(config_options: Vec) -> Self {
diff --git a/src/rpc.rs b/src/rpc.rs
index 1eed9eae..a4f56c5c 100644
--- a/src/rpc.rs
+++ b/src/rpc.rs
@@ -294,7 +294,6 @@ impl Side for AgentSide {
m if m == AGENT_METHOD_NAMES.session_set_mode => serde_json::from_str(params.get())
.map(ClientRequest::SetSessionModeRequest)
.map_err(Into::into),
- #[cfg(feature = "unstable_session_config_options")]
m if m == AGENT_METHOD_NAMES.session_set_config_option => {
serde_json::from_str(params.get())
.map(ClientRequest::SetSessionConfigOptionRequest)