Session
Overview
ACP::Session is a convenience wrapper around ACP::Client that provides session-scoped operations. It manages the session ID and delegates to the underlying client.
Factory Methods
.create
ACP::Session.create(
client : ACP::Client,
cwd : String,
mcp_servers : Array(ACP::Protocol::McpServerConfig)? = nil
) : ACP::Session
Creates a new session and returns a Session instance.
.load
ACP::Session.load(
client : ACP::Client,
session_id : String,
cwd : String,
mcp_servers : Array(ACP::Protocol::McpServerConfig)? = nil
) : ACP::Session
Loads an existing session by ID and returns a Session instance.
Prompt Methods
#prompt(text)
session.prompt(text : String) : ACP::Protocol::SessionPromptResult
Sends a single text prompt.
#prompt(*texts)
session.prompt(*texts : String) : ACP::Protocol::SessionPromptResult
Sends multiple text blocks as a single prompt.
#prompt(blocks)
session.prompt(
blocks : Array(ACP::Protocol::ContentBlock)
) : ACP::Protocol::SessionPromptResult
Sends pre-built content blocks.
#prompt(&block)
session.prompt(
&block : ACP::PromptBuilder ->
) : ACP::Protocol::SessionPromptResult
Sends a prompt built using the PromptBuilder DSL.
result = session.prompt do |b|
b.text("Review this code")
b.resource_link("/path/to/file.cr", "text/x-crystal")
end
Session Control
#cancel
session.cancel : Nil
Cancels an in-progress generation.
#mode=
session.mode = (mode_id : String)
Switches the session mode.
#available_mode_ids
session.available_mode_ids : Array(String)
Returns the list of available mode IDs for the session.
#set_config_option
session.set_config_option(
config_id : String,
value : JSON::Any::Type
) : ACP::Protocol::SessionSetConfigOptionResult
Changes a configuration option.
#close
session.close : Nil
Marks the session as closed.
#closed?
session.closed? : Bool
Returns whether the session is closed.
Extension Methods
#ext_method
session.ext_method(
method : String,
params : Hash(String, JSON::Any::Type)? = nil
) : JSON::Any
Sends a custom extension request.
#ext_notification
session.ext_notification(
method : String,
params : Hash(String, JSON::Any::Type)? = nil
) : Nil
Sends a custom extension notification.
Properties
| Property | Type | Description |
|---|---|---|
id |
String |
Session ID |
client |
Client |
Underlying client |
modes |
SessionModeState? |
Available modes |
config_options |
Array(ConfigOption)? |
Configuration options |