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 Message | Normalized Event | Notes |
|---|---|---|
| SystemMessage | run_started | Signals execution has begun |
| AssistantMessage (text) | message_streamed | Each text block emits a stream |
| AssistantMessage (tool) | tool_call_started | Tool invocation requested |
| UserMessage (result, ok) | tool_call_completed | Tool finished successfully |
| UserMessage (result, err) | tool_call_failed | Tool failed with error |
| ResultMessage | message_received, | Emits full message then completion |
| token_usage_updated, | ||
| run_completed | ||
| ErrorResultMessage | error_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
Returns a specification to start this module under a supervisor.
See Supervisor.
@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 (seeAgentSessionManager.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.
@spec stop(GenServer.server()) :: :ok
Stops the adapter.