GitHub
ESC

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