AgentSessionManager.Adapters.AmpAdapter (AgentSessionManager v0.8.0)

Copy Markdown View Source

Provider adapter for Amp (Sourcegraph) AI agent integration.

This adapter implements the ProviderAdapter behaviour and provides:

  • Streaming execution via AmpSdk.execute/2
  • Tool use support with proper event mapping
  • Interrupt/cancel capability
  • Accurate capability advertisement

Event Mapping

Amp SDK message types are mapped to normalized events as follows:

Amp MessageNormalized EventNotes
SystemMessagerun_startedSignals execution has begun
AssistantMessage (text)message_streamedEach text block emits a stream
AssistantMessage (tool)tool_call_startedTool invocation requested
UserMessage (result, ok)tool_call_completedTool finished successfully
UserMessage (result, err)tool_call_failedTool failed with error
ResultMessagemessage_received,Emits full message then completion
token_usage_updated,
run_completed
ErrorResultMessageerror_occurred,Error handling
run_failed

Usage

{:ok, adapter} = AmpAdapter.start_link(cwd: "/path/to/project")
{:ok, capabilities} = AmpAdapter.capabilities(adapter)

{:ok, session} = Session.new(%{agent_id: "my-agent"})
{:ok, run} = Run.new(%{session_id: session.id, input: "Hello"})

{:ok, result} = AmpAdapter.execute(adapter, run, session,
  event_callback: fn event -> IO.inspect(event) end
)

Configuration

Required:

  • :cwd - Working directory for Amp operations

Optional:

  • :mode - Execution mode (default: "smart")
  • :permissions - Permission rules for tool access
  • :mcp_config - MCP server configuration
  • :thinking - Enable thinking mode (default: false)
  • :sdk_module - SDK module for testing (default: real Amp SDK)
  • :sdk_pid - SDK process for testing

Summary

Functions

Returns a specification to start this module under a supervisor.

Starts the Amp adapter.

Stops the adapter.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

start_link(opts)

@spec start_link(keyword()) :: GenServer.on_start()

Starts the Amp adapter.

Options

  • :cwd - Required. The working directory for Amp operations.
  • :mode - Optional. Execution mode (default: "smart").
  • :permission_mode - Optional. Normalized permission mode (see AgentSessionManager.PermissionMode).
  • :permissions - Optional. Permission rules.
  • :mcp_config - Optional. MCP server configuration.
  • :model - Optional. Model identifier for metadata/cost tracking.
  • :thinking - Optional. Enable thinking mode.
  • :sdk_module - Optional. Mock SDK module for testing.
  • :sdk_pid - Optional. Mock SDK process for testing.
  • :name - Optional. GenServer name for registration.

stop(server)

@spec stop(GenServer.server()) :: :ok

Stops the adapter.