ACP.Agent behaviour (agent_client_protocol v0.1.0)

Copy Markdown View Source

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

result(t)

@type result(t) :: {:ok, t} | {:error, ACP.Error.t()}

Callbacks

authenticate(t)

@callback authenticate(ACP.AuthenticateRequest.t()) ::
  result(ACP.AuthenticateResponse.t())

Authenticate the client.

cancel(t)

@callback cancel(ACP.CancelNotification.t()) :: :ok | {:error, ACP.Error.t()}

Cancel ongoing operations for a session.

ext_method(t)

(optional)
@callback ext_method(ACP.ExtRequest.t()) :: result(ACP.ExtResponse.t())

Handle extension method requests. Optional.

ext_notification(t)

(optional)
@callback ext_notification(ACP.ExtNotification.t()) :: :ok | {:error, ACP.Error.t()}

Handle extension notifications. Optional.

initialize(t)

@callback initialize(ACP.InitializeRequest.t()) :: result(ACP.InitializeResponse.t())

Negotiate protocol capabilities.

load_session(t)

(optional)
@callback load_session(ACP.LoadSessionRequest.t()) :: result(ACP.LoadSessionResponse.t())

Load an existing session. Optional - defaults to method_not_found error.

new_session(t)

@callback new_session(ACP.NewSessionRequest.t()) :: result(ACP.NewSessionResponse.t())

Create a new conversation session.

prompt(t)

@callback prompt(ACP.PromptRequest.t()) :: result(ACP.PromptResponse.t())

Process a user prompt within a session.

set_session_mode(t)

(optional)
@callback set_session_mode(ACP.SetSessionModeRequest.t()) ::
  result(ACP.SetSessionModeResponse.t())

Set the current mode for a session. Optional.