@bunny-agent/runner-cli 0.9.60-beta.1 → 0.9.60-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -12
- package/dist/__tests__/runner-cli.integration.test.js +99 -0
- package/dist/__tests__/runner-cli.integration.test.js.map +1 -1
- package/dist/acp.d.ts +12 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +15 -0
- package/dist/acp.js.map +1 -0
- package/dist/bundle.mjs +17470 -17120
- package/dist/cli.js +73 -4
- package/dist/cli.js.map +1 -1
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -2,29 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
Bunny Agent Runner CLI - A **lightweight, local** command-line interface for running AI agents in your terminal.
|
|
4
4
|
|
|
5
|
-
Like gemini-cli, claude-code, or codex-cli, this tool runs **directly on your local filesystem
|
|
5
|
+
Like gemini-cli, claude-code, or codex-cli, this tool runs **directly on your local filesystem**. It has two subcommands, one per output protocol: `run` streams AI SDK UI messages to stdout for a single task, and `acp` serves as a long-lived [Agent Client Protocol](https://agentclientprotocol.com) agent over stdio for editors like Zed and JetBrains.
|
|
6
6
|
|
|
7
7
|
## 🎯 Key Features
|
|
8
8
|
|
|
9
9
|
- 🔌 **Choose Different Runners**: Switch between Claude, Codex, Gemini, Copilot with `--runner` flag
|
|
10
10
|
- 🚀 **Local Execution**: Runs directly on your filesystem, no sandbox required
|
|
11
11
|
- 💨 **Lightweight**: No manager dependency, minimal overhead
|
|
12
|
-
- 📡 **Streaming**: Real-time AI SDK UI streaming
|
|
12
|
+
- 📡 **Streaming**: Real-time AI SDK UI streaming (`run`) or ACP JSON-RPC over stdio (`acp`)
|
|
13
13
|
|
|
14
14
|
## 📐 Architecture
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
runner-cli
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
├─ runner-gemini ✅
|
|
21
|
-
└─ runner-copilot ✅
|
|
17
|
+
runner-cli
|
|
18
|
+
├─ run → @bunny-agent/runner-harness → runner-claude / runner-codex / ...
|
|
19
|
+
└─ acp → @bunny-agent/server-acp → runner-harness → same runners
|
|
22
20
|
|
|
23
21
|
Dependencies:
|
|
24
|
-
✅ @bunny-agent/runner-
|
|
25
|
-
✅ @bunny-agent/
|
|
26
|
-
✅ @bunny-agent/runner-gemini (runtime)
|
|
27
|
-
✅ @bunny-agent/runner-copilot (runtime)
|
|
22
|
+
✅ @bunny-agent/runner-harness (dispatches to every runner)
|
|
23
|
+
✅ @bunny-agent/server-acp (the `acp` subcommand's ACP agent + stdio transport)
|
|
28
24
|
❌ NO @bunny-agent/manager
|
|
29
25
|
❌ NO @bunny-agent/sandbox-*
|
|
30
26
|
```
|
|
@@ -97,7 +93,8 @@ through the SDK `streamText({ tools })` API, not directly through runner-cli.
|
|
|
97
93
|
|
|
98
94
|
## Output Format
|
|
99
95
|
|
|
100
|
-
`bunny-agent run` always outputs AI SDK data stream (SSE) format
|
|
96
|
+
`bunny-agent run` always outputs AI SDK data stream (SSE) format, one-shot —
|
|
97
|
+
it runs the task and exits.
|
|
101
98
|
|
|
102
99
|
```bash
|
|
103
100
|
bunny-agent run -- "Calculate 2+2"
|
|
@@ -110,6 +107,54 @@ data: {"type":"text-delta","id":"text_1","delta":"The answer is 4."}
|
|
|
110
107
|
data: [DONE]
|
|
111
108
|
```
|
|
112
109
|
|
|
110
|
+
For the ACP protocol instead, use `bunny-agent acp` — see below. The two are
|
|
111
|
+
separate subcommands, not a flag on `run`: ACP is a long-lived session
|
|
112
|
+
(`initialize` → `session/new` → possibly many `session/prompt` calls from the
|
|
113
|
+
connected editor), not a single request/response.
|
|
114
|
+
|
|
115
|
+
## `bunny-agent acp`
|
|
116
|
+
|
|
117
|
+
Serves BunnyAgent as an [Agent Client Protocol](https://agentclientprotocol.com)
|
|
118
|
+
**agent** over stdio — the transport editors use when they spawn an agent
|
|
119
|
+
binary directly, e.g. Zed's "custom agent" setup or JetBrains' AI Assistant
|
|
120
|
+
agent integration. The process stays alive handling JSON-RPC over
|
|
121
|
+
stdin/stdout until the connecting client disconnects; it does not take a
|
|
122
|
+
task argument like `run` does.
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
bunny-agent acp --runner claude
|
|
126
|
+
bunny-agent acp --runner pi --model gemini-2.0-flash --cwd ./my-project
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
| Option | Short | Description | Default |
|
|
130
|
+
|--------|-------|--------------|---------|
|
|
131
|
+
| `--runner <runner>` | `-r` | Runner to use: `claude`, `codex`, `gemini`, `opencode`, `copilot`, `pi` | `claude` |
|
|
132
|
+
| `--model <model>` | `-m` | Model to use | `claude-sonnet-4-20250514` |
|
|
133
|
+
| `--cwd <path>` | `-c` | Working directory | Current directory |
|
|
134
|
+
| `--yolo` | - | Automatically approve tool permission requests | `false` |
|
|
135
|
+
| `--help` | `-h` | Show help message | - |
|
|
136
|
+
|
|
137
|
+
These flags set the **session default**. ACP's `session/new` has no native
|
|
138
|
+
runner/model field, so a connecting client can still override per-session
|
|
139
|
+
through the protocol's `_meta` extension, namespaced under `"bunny-agent"`:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{ "cwd": "/workspace", "mcpServers": [],
|
|
143
|
+
"_meta": { "bunny-agent": { "runner": "pi", "model": "gemini-2.0-flash" } } }
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Point an ACP client at the CLI itself as the agent command (exact
|
|
147
|
+
configuration is client-specific — see each editor's ACP docs):
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{ "command": "bunny-agent", "args": ["acp", "--runner", "claude"] }
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
For the HTTP equivalent (`POST /api/coding/acp`, used by the daemon instead
|
|
154
|
+
of a spawned subprocess), see
|
|
155
|
+
[`apps/daemon/README.md`](../daemon/README.md#post-apicodingacp). Both are
|
|
156
|
+
backed by `@bunny-agent/server-acp` and support every runner this CLI does.
|
|
157
|
+
|
|
113
158
|
## Environment Variables
|
|
114
159
|
|
|
115
160
|
| Variable | Description | Required |
|
|
@@ -178,3 +223,5 @@ bunny-agent image build --name vikadata/bunny-agent --tag 0.1.0
|
|
|
178
223
|
- [Skills](docs/SKILLS.md) — Where skills live and how they are loaded (local and Docker)
|
|
179
224
|
- [Claude Agent SDK](https://platform.claude.com/docs/agent-sdk/typescript)
|
|
180
225
|
- [AI SDK UI Stream Protocol](https://ai-sdk.dev/docs/ai-sdk-ui/stream-protocol)
|
|
226
|
+
- [Agent Client Protocol](https://agentclientprotocol.com) — the protocol `bunny-agent acp` speaks
|
|
227
|
+
- [Runner maturity / output protocols](../../docs/runner-maturity.md#output-protocols) — how `run` and `acp` compare
|
|
@@ -67,6 +67,45 @@ describe("runner-cli Integration Tests", () => {
|
|
|
67
67
|
expect(output.exitCode).toBe(0);
|
|
68
68
|
expect(output.stdout).toContain("data:");
|
|
69
69
|
}, TIMEOUT);
|
|
70
|
+
it("should list acp alongside run in top-level help", async () => {
|
|
71
|
+
const output = await runCLI(["--help"]);
|
|
72
|
+
expect(output.stdout).toContain("acp");
|
|
73
|
+
expect(output.exitCode).toBe(0);
|
|
74
|
+
}, TIMEOUT);
|
|
75
|
+
it("should display acp command options in acp --help", async () => {
|
|
76
|
+
const output = await runCLI(["acp", "--help"]);
|
|
77
|
+
expect(output.stdout).toContain("--runner");
|
|
78
|
+
expect(output.stdout).toContain("--model");
|
|
79
|
+
expect(output.stdout).toContain("stdio");
|
|
80
|
+
expect(output.exitCode).toBe(0);
|
|
81
|
+
}, TIMEOUT);
|
|
82
|
+
it("should reject an invalid runner for acp the same way run does", async () => {
|
|
83
|
+
const output = await runCLI(["acp", "--runner", "invalid"]);
|
|
84
|
+
expect(output.stderr).toContain("must be one of");
|
|
85
|
+
expect(output.exitCode).toBe(1);
|
|
86
|
+
}, TIMEOUT);
|
|
87
|
+
it("should serve a real ACP initialize + session/new handshake over stdio", async () => {
|
|
88
|
+
// initialize/session/new never touch the runner SDKs, so this needs no
|
|
89
|
+
// API credentials — only session/prompt would invoke createRunner().
|
|
90
|
+
const result = await runAcpHandshake([
|
|
91
|
+
{
|
|
92
|
+
jsonrpc: "2.0",
|
|
93
|
+
id: 1,
|
|
94
|
+
method: "initialize",
|
|
95
|
+
params: { protocolVersion: 1, clientCapabilities: {} },
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
jsonrpc: "2.0",
|
|
99
|
+
id: 2,
|
|
100
|
+
method: "session/new",
|
|
101
|
+
params: { cwd: process.cwd(), mcpServers: [] },
|
|
102
|
+
},
|
|
103
|
+
]);
|
|
104
|
+
expect(result.responses).toHaveLength(2);
|
|
105
|
+
expect(result.responses[0].result.agentInfo?.name).toBe("bunny-agent");
|
|
106
|
+
expect(typeof result.responses[1].result.sessionId).toBe("string");
|
|
107
|
+
expect(result.exitCode).toBe(0);
|
|
108
|
+
}, TIMEOUT);
|
|
70
109
|
});
|
|
71
110
|
/**
|
|
72
111
|
* Helper to run CLI and capture output
|
|
@@ -100,4 +139,64 @@ function runCLI(args, options = {}) {
|
|
|
100
139
|
}, 15000);
|
|
101
140
|
});
|
|
102
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Drives `bunny-agent acp` as a real subprocess: writes newline-delimited
|
|
144
|
+
* JSON-RPC requests to its stdin, collects matching responses from stdout by
|
|
145
|
+
* id, then closes stdin (how a disconnecting editor looks on the wire) and
|
|
146
|
+
* waits for the process to exit cleanly.
|
|
147
|
+
*/
|
|
148
|
+
function runAcpHandshake(requests) {
|
|
149
|
+
return new Promise((resolve, reject) => {
|
|
150
|
+
const proc = spawn("node", [CLI_PATH, "acp", "--runner", "claude"], {
|
|
151
|
+
env: process.env,
|
|
152
|
+
stdio: "pipe",
|
|
153
|
+
});
|
|
154
|
+
const pendingIds = new Set(requests.map((r) => r.id));
|
|
155
|
+
const responses = [];
|
|
156
|
+
let buffer = "";
|
|
157
|
+
let stderr = "";
|
|
158
|
+
proc.stdout?.on("data", (chunk) => {
|
|
159
|
+
buffer += chunk.toString();
|
|
160
|
+
const lines = buffer.split("\n");
|
|
161
|
+
buffer = lines.pop() ?? "";
|
|
162
|
+
for (const line of lines) {
|
|
163
|
+
if (!line.trim())
|
|
164
|
+
continue;
|
|
165
|
+
let msg;
|
|
166
|
+
try {
|
|
167
|
+
msg = JSON.parse(line);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
reject(new Error(`acp stdout emitted a non-JSON line, which would corrupt real ACP framing: ${line}`));
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if (typeof msg.id === "number" && pendingIds.has(msg.id)) {
|
|
174
|
+
responses.push(msg);
|
|
175
|
+
pendingIds.delete(msg.id);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (pendingIds.size === 0) {
|
|
179
|
+
proc.stdin?.end();
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
proc.stderr?.on("data", (chunk) => {
|
|
183
|
+
stderr += chunk.toString();
|
|
184
|
+
});
|
|
185
|
+
proc.on("close", (code) => {
|
|
186
|
+
if (pendingIds.size > 0) {
|
|
187
|
+
reject(new Error(`acp process exited before answering all requests (missing ids: ${[...pendingIds].join(",")}). stderr: ${stderr}`));
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
resolve({ responses, exitCode: code ?? 0 });
|
|
191
|
+
});
|
|
192
|
+
proc.on("error", reject);
|
|
193
|
+
for (const req of requests) {
|
|
194
|
+
proc.stdin?.write(`${JSON.stringify(req)}\n`);
|
|
195
|
+
}
|
|
196
|
+
setTimeout(() => {
|
|
197
|
+
proc.kill();
|
|
198
|
+
reject(new Error("acp handshake timed out"));
|
|
199
|
+
}, 15000);
|
|
200
|
+
});
|
|
201
|
+
}
|
|
103
202
|
//# sourceMappingURL=runner-cli.integration.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-cli.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/runner-cli.integration.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,2DAA2D;AAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAExD,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC;IAEtB,EAAE,CACA,+BAA+B,EAC/B,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,EACD,OAAO,CACR,CAAC;IAEF,EAAE,CACA,kDAAkD,EAClD,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,EACD,OAAO,CACR,CAAC;IAEF,EAAE,CACA,+CAA+C,EAC/C,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAErC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,EACD,OAAO,CACR,CAAC;IAEF,EAAE,CACA,sCAAsC,EACtC,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,KAAK;YACL,UAAU;YACV,SAAS;YACT,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,EACD,OAAO,CACR,CAAC;IAEF,EAAE,CACA,8CAA8C,EAC9C,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,KAAK;YACL,iBAAiB;YACjB,MAAM;YACN,IAAI;YACJ,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,EACD,OAAO,CACR,CAAC;IAEF,EAAE,CACA,oCAAoC,EACpC,KAAK,IAAI,EAAE;QACT,kEAAkE;QAClE,MAAM,MAAM,GAAG,MAAM,MAAM,CACzB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,EACjD;YACE,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,iBAAiB,EAAE,EAAE;gBACrB,wBAAwB,EAAE,EAAE;gBAC5B,oBAAoB,EAAE,EAAE;gBACxB,kBAAkB,EAAE,EAAE;gBACtB,uBAAuB,EAAE,EAAE;gBAC3B,0BAA0B,EAAE,EAAE;aAC/B;SACF,CACF,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,EACD,OAAO,CACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,MAAM,CACb,IAAc,EACd,UAA4C,EAAE;IAE9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE;YAC9C,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;YAC/B,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC;gBACN,MAAM;gBACN,MAAM;gBACN,QAAQ,EAAE,IAAI,IAAI,CAAC;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzB,UAAU;QACV,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACzC,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"runner-cli.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/runner-cli.integration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/acp.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface RunAcpOptions {
|
|
2
|
+
runner: string;
|
|
3
|
+
model: string;
|
|
4
|
+
cwd: string;
|
|
5
|
+
yolo?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Serves BunnyAgent as an ACP agent over stdio, so ACP clients (Zed,
|
|
9
|
+
* JetBrains, ...) can spawn this CLI as their agent subprocess.
|
|
10
|
+
*/
|
|
11
|
+
export declare function runAcpAgent(options: RunAcpOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=acp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../src/acp.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvE"}
|
package/dist/acp.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { runAcpOverStdio } from "@bunny-agent/server-acp";
|
|
2
|
+
/**
|
|
3
|
+
* Serves BunnyAgent as an ACP agent over stdio, so ACP clients (Zed,
|
|
4
|
+
* JetBrains, ...) can spawn this CLI as their agent subprocess.
|
|
5
|
+
*/
|
|
6
|
+
export async function runAcpAgent(options) {
|
|
7
|
+
await runAcpOverStdio({
|
|
8
|
+
defaultRunner: options.runner,
|
|
9
|
+
defaultModel: options.model,
|
|
10
|
+
defaultCwd: options.cwd,
|
|
11
|
+
yolo: options.yolo,
|
|
12
|
+
env: process.env,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=acp.js.map
|
package/dist/acp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../src/acp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAS1D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAsB;IACtD,MAAM,eAAe,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC,MAAM;QAC7B,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,UAAU,EAAE,OAAO,CAAC,GAAG;QACvB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAA6B;KAC3C,CAAC,CAAC;AACL,CAAC"}
|