struct ACP::Protocol::ConfigOption

Overview

A single session configuration option and its current state. Matches the Rust SDK's SessionConfigOption + SessionConfigSelect. See: https://agentclientprotocol.com/protocol/session-config-options#configoption

Included Modules

Defined in:

acp/protocol/types.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(id : String, name : String, config_type : String = "select", current_value : String | Nil = nil, options : Array(ConfigOptionValue) | Nil = nil, groups : Array(ConfigOptionGroup) | Nil = nil, description : String | Nil = nil, category : String | Nil = nil, meta : Hash(String, JSON::Any) | Nil = nil) #

[View source]
def self.new(pull : JSON::PullParser) #

[View source]

Instance Method Detail

def after_initialize : Nil #

Populate the typed #options/#groups views from the raw wire array after JSON deserialization. A group element is identified by the presence of the "group" key (per SessionConfigSelectGroup).


[View source]
def all_values : Array(ConfigOptionValue) #

Returns all option values across all groups (flattened). If the option has flat #options, returns those. If the option has #groups, returns all values from all groups.


[View source]
def category : String | Nil #

Optional semantic category to help Clients provide consistent UX. Reserved categories: "mode", "model", "thought_level". Names beginning with _ are free for custom use. See: https://agentclientprotocol.com/protocol/session-config-options#option-categories


[View source]
def category=(category : String | Nil) #

Optional semantic category to help Clients provide consistent UX. Reserved categories: "mode", "model", "thought_level". Names beginning with _ are free for custom use. See: https://agentclientprotocol.com/protocol/session-config-options#option-categories


[View source]
def config_type : String #

The type of input control (required). Currently only "select" is supported. Maps to the Rust SDK's SessionConfigKind.


[View source]
def config_type=(config_type : String) #

The type of input control (required). Currently only "select" is supported. Maps to the Rust SDK's SessionConfigKind.


[View source]
def current_value : String | Nil #

The currently selected value (required). Maps to the Rust SDK's SessionConfigSelect.current_value.


[View source]
def current_value=(current_value : String | Nil) #

The currently selected value (required). Maps to the Rust SDK's SessionConfigSelect.current_value.


[View source]
def description : String | Nil #

Optional description providing more details.


[View source]
def description=(description : String | Nil) #

Optional description providing more details.


[View source]
def grouped? : Bool #

Returns true if this option uses grouped values.


[View source]
def groups : Array(ConfigOptionGroup) | Nil #

Grouped list of available values for this option (nil when flat). Used when options are organized into logical sections (e.g., by provider). Maps to the Rust SDK's SessionConfigSelectOptions::Grouped.


[View source]
def id : String #

Unique identifier for this config option (required). Maps to the Rust SDK's SessionConfigId.


[View source]
def id=(id : String) #

Unique identifier for this config option (required). Maps to the Rust SDK's SessionConfigId.


[View source]
def label : String #

Backward-compatible alias for #name.


[View source]
def meta : Hash(String, JSON::Any) | Nil #

Extension metadata.


[View source]
def meta=(meta : Hash(String, JSON::Any) | Nil) #

Extension metadata.


[View source]
def name : String #

Human-readable label (required).


[View source]
def name=(name : String) #

Human-readable label (required).


[View source]
def options : Array(ConfigOptionValue) | Nil #

Flat list of available values for this option (nil when grouped). Maps to the Rust SDK's SessionConfigSelectOptions::Ungrouped.


[View source]
def options_raw : Array(JSON::Any) | Nil #

Raw wire form of the selectable values. Per the ACP schema (SessionConfigSelect.options -> SessionConfigSelectOptions) this is a SINGLE "options" array that is EITHER a flat list of SessionConfigSelectOption values OR a list of SessionConfigSelectGroup groups. There is NO separate "groups" key. We keep the raw array here and expose typed #options/#groups views. Exposed read-only: the typed views and this wire array are derived from each other at construction / deserialization, so a public setter could silently desync them. Construct a new ConfigOption to change the values.


[View source]
def value : String | Nil #

Backward-compatible alias for #current_value.


[View source]