mirror of
https://github.com/block/buzz.git
synced 2026-11-13 04:41:12 +00:00
Add Amp as a known ACP provider
Register amp-acp (https://github.com/tao12345666333/amp-acp) as a known ACP provider alongside Goose, Claude Code, and Codex. - Add Amp to KNOWN_ACP_PROVIDERS in the desktop discovery module - Add amp-acp to default_agent_args in both sprout-acp and desktop - Add 'Running with Amp' section to the sprout-acp README Amp-Thread-ID: https://ampcode.com/threads/T-019d4e6c-6235-76b4-aaf3-63baf10304d0 Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
@@ -9,7 +9,7 @@ Sprout Relay ──WS──→ sprout-acp ──stdio──→ Your Agent
|
||||
(send_message, etc.)
|
||||
```
|
||||
|
||||
Supports any agent that speaks [ACP](https://agentclientprotocol.com/) over stdio: **goose**, **codex** (via [codex-acp](https://github.com/zed-industries/codex-acp)), and **claude code** (via [claude-agent-acp](https://github.com/agentclientprotocol/claude-agent-acp)).
|
||||
Supports any agent that speaks [ACP](https://agentclientprotocol.com/) over stdio: **goose**, **codex** (via [codex-acp](https://github.com/zed-industries/codex-acp)), **claude code** (via [claude-agent-acp](https://github.com/agentclientprotocol/claude-agent-acp)), and **amp** (via [amp-acp](https://github.com/tao12345666333/amp-acp)).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -92,6 +92,21 @@ sprout-acp
|
||||
Older installs that still expose `claude-code-acp` are also supported. `sprout-acp`
|
||||
treats both Claude ACP command names as the same zero-arg runtime.
|
||||
|
||||
## Running with Amp
|
||||
|
||||
[amp-acp](https://github.com/tao12345666333/amp-acp) wraps Sourcegraph's Amp coding agent in an ACP interface.
|
||||
|
||||
```bash
|
||||
# Install the adapter
|
||||
npm install -g amp-acp
|
||||
|
||||
# Run
|
||||
export AMP_API_KEY="..." # your Amp API key
|
||||
export SPROUT_ACP_AGENT_COMMAND="amp-acp"
|
||||
|
||||
sprout-acp
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
All configuration is via environment variables (or CLI flags — every env var has a matching flag).
|
||||
|
||||
@@ -151,7 +151,7 @@ impl std::fmt::Display for PermissionMode {
|
||||
about = "Query available models from the configured agent"
|
||||
)]
|
||||
pub struct ModelsArgs {
|
||||
/// Agent binary to spawn (e.g. "goose", "claude-agent-acp", "codex-acp").
|
||||
/// Agent binary to spawn (e.g. "goose", "claude-agent-acp", "codex-acp", "amp-acp").
|
||||
#[arg(long, env = "SPROUT_ACP_AGENT_COMMAND", default_value = "goose")]
|
||||
pub agent_command: String,
|
||||
|
||||
@@ -439,7 +439,7 @@ fn default_agent_args(command: &str) -> Option<Vec<String>> {
|
||||
match normalize_agent_command_identity(command).as_str() {
|
||||
"goose" => Some(vec!["acp".to_string()]),
|
||||
"codex" | "codex-acp" | "claude-agent-acp" | "claude-code-acp" | "claude-code"
|
||||
| "claudecode" => Some(Vec::new()),
|
||||
| "claudecode" | "amp-acp" => Some(Vec::new()),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ struct KnownAcpProvider {
|
||||
const GOOSE_AVATAR_URL: &str = "https://block.github.io/goose/img/logo_dark.png";
|
||||
const CLAUDE_CODE_AVATAR_URL: &str = "https://anthropic.gallerycdn.vsassets.io/extensions/anthropic/claude-code/2.1.77/1773707456892/Microsoft.VisualStudio.Services.Icons.Default";
|
||||
const CODEX_AVATAR_URL: &str = "https://openai.gallerycdn.vsassets.io/extensions/openai/chatgpt/26.5313.41514/1773706730621/Microsoft.VisualStudio.Services.Icons.Default";
|
||||
const AMP_AVATAR_URL: &str = "https://ampcode.com/img/amp-logo.png";
|
||||
|
||||
const COMMON_BINARY_PATHS: &[&str] = &[
|
||||
"/opt/homebrew/bin",
|
||||
@@ -55,6 +56,13 @@ const KNOWN_ACP_PROVIDERS: &[KnownAcpProvider] = &[
|
||||
aliases: &[],
|
||||
avatar_url: CODEX_AVATAR_URL,
|
||||
},
|
||||
KnownAcpProvider {
|
||||
id: "amp",
|
||||
label: "Amp",
|
||||
commands: &["amp-acp"],
|
||||
aliases: &[],
|
||||
avatar_url: AMP_AVATAR_URL,
|
||||
},
|
||||
];
|
||||
|
||||
fn workspace_root_dir() -> PathBuf {
|
||||
@@ -121,7 +129,7 @@ fn default_agent_args(command: &str) -> Option<Vec<String>> {
|
||||
match normalize_command_identity(command).as_str() {
|
||||
"goose" => Some(vec!["acp".to_string()]),
|
||||
"codex" | "codex-acp" | "claude-agent-acp" | "claude-code-acp" | "claude-code"
|
||||
| "claudecode" => Some(Vec::new()),
|
||||
| "claudecode" | "amp-acp" => Some(Vec::new()),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user