Behaviour defining the interface that all ACP-compliant agents must implement.
Agents handle requests from clients and execute tasks using language models and tools.
Required callbacks: initialize/1, authenticate/1, new_session/1, prompt/1, cancel/1.
Optional callbacks have default implementations that return {:error, method_not_found}.
Summary
Callbacks
Authenticate the client.
Cancel ongoing operations for a session.
Handle extension method requests. Optional.
Handle extension notifications. Optional.
Negotiate protocol capabilities.
Load an existing session. Optional - defaults to method_not_found error.
Create a new conversation session.
Process a user prompt within a session.
Set the current mode for a session. Optional.
Types
@type result(t) :: {:ok, t} | {:error, ACP.Error.t()}
Callbacks
@callback authenticate(ACP.AuthenticateRequest.t()) :: result(ACP.AuthenticateResponse.t())
Authenticate the client.
@callback cancel(ACP.CancelNotification.t()) :: :ok | {:error, ACP.Error.t()}
Cancel ongoing operations for a session.
@callback ext_method(ACP.ExtRequest.t()) :: result(ACP.ExtResponse.t())
Handle extension method requests. Optional.
@callback ext_notification(ACP.ExtNotification.t()) :: :ok | {:error, ACP.Error.t()}
Handle extension notifications. Optional.
@callback initialize(ACP.InitializeRequest.t()) :: result(ACP.InitializeResponse.t())
Negotiate protocol capabilities.
@callback load_session(ACP.LoadSessionRequest.t()) :: result(ACP.LoadSessionResponse.t())
Load an existing session. Optional - defaults to method_not_found error.
@callback new_session(ACP.NewSessionRequest.t()) :: result(ACP.NewSessionResponse.t())
Create a new conversation session.
@callback prompt(ACP.PromptRequest.t()) :: result(ACP.PromptResponse.t())
Process a user prompt within a session.
@callback set_session_mode(ACP.SetSessionModeRequest.t()) :: result(ACP.SetSessionModeResponse.t())
Set the current mode for a session. Optional.