@sandagent/runner-cli 0.1.1 → 0.1.2-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 +153 -0
- package/dist/__tests__/runner-cli.integration.test.d.ts +6 -0
- package/dist/__tests__/runner-cli.integration.test.d.ts.map +1 -0
- package/dist/__tests__/runner-cli.integration.test.js +76 -0
- package/dist/__tests__/runner-cli.integration.test.js.map +1 -0
- package/dist/__tests__/runner.test.js +7 -3
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/bundle.mjs +412 -212
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +34 -29
- package/dist/cli.js.map +1 -1
- package/dist/runner.d.ts +5 -13
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +31 -13
- package/dist/runner.js.map +1 -1
- package/package.json +29 -14
- package/LICENSE +0 -201
package/README.md
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# @sandagent/runner-cli
|
|
2
|
+
|
|
3
|
+
SandAgent Runner CLI - A **lightweight, local** command-line interface for running AI agents in your terminal.
|
|
4
|
+
|
|
5
|
+
Like gemini-cli, claude-code, or codex-cli, this tool runs **directly on your local filesystem** and streams AI SDK UI messages to stdout.
|
|
6
|
+
|
|
7
|
+
## 🎯 Key Features
|
|
8
|
+
|
|
9
|
+
- 🔌 **Choose Different Runners**: Switch between Claude, Codex, Copilot with `--runner` flag
|
|
10
|
+
- 🚀 **Local Execution**: Runs directly on your filesystem, no sandbox required
|
|
11
|
+
- 💨 **Lightweight**: No manager dependency, minimal overhead
|
|
12
|
+
- 📡 **Streaming**: Real-time AI SDK UI streaming
|
|
13
|
+
|
|
14
|
+
## 📐 Architecture
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
runner-cli → runner-* (direct, NO dependencies on manager or sandbox)
|
|
18
|
+
├─ runner-claude ✅
|
|
19
|
+
├─ runner-codex 🚧
|
|
20
|
+
└─ runner-copilot 🚧
|
|
21
|
+
|
|
22
|
+
Dependencies:
|
|
23
|
+
✅ @sandagent/runner-claude (runtime)
|
|
24
|
+
❌ NO @sandagent/manager
|
|
25
|
+
❌ NO @sandagent/sandbox-*
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Difference from manager-cli:**
|
|
29
|
+
- `runner-cli`: Local filesystem, no isolation, lightweight, direct runner usage
|
|
30
|
+
- `manager-cli`: Sandboxed execution, uses manager + sandbox adapters + runner
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pnpm add @sandagent/runner-cli
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Usage
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
sandagent run [options] -- "<user input>"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Basic Examples
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Using Claude (default)
|
|
48
|
+
sandagent run -- "Create a hello world script"
|
|
49
|
+
|
|
50
|
+
# Explicitly choose Claude
|
|
51
|
+
sandagent run --runner claude -- "Create a hello world script"
|
|
52
|
+
|
|
53
|
+
# Using Codex (when implemented)
|
|
54
|
+
sandagent run --runner codex -- "Build a REST API with Express"
|
|
55
|
+
|
|
56
|
+
# Using GitHub Copilot (when implemented)
|
|
57
|
+
sandagent run --runner copilot -- "Refactor this code"
|
|
58
|
+
|
|
59
|
+
# With custom system prompt
|
|
60
|
+
sandagent run --runner claude --system-prompt "You are a coding assistant" -- "Build a REST API with Express"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Options
|
|
64
|
+
|
|
65
|
+
| Option | Short | Description | Default |
|
|
66
|
+
|--------|-------|-------------|---------|
|
|
67
|
+
| `--runner <runner>` | `-r` | Runner to use: `claude`, `codex`, `copilot` | `claude` |
|
|
68
|
+
| `--model <model>` | `-m` | Model to use | `claude-sonnet-4-20250514` |
|
|
69
|
+
| `--cwd <path>` | `-c` | Working directory | Current directory |
|
|
70
|
+
| `--system-prompt <prompt>` | `-s` | Custom system prompt | - |
|
|
71
|
+
| `--max-turns <n>` | `-t` | Maximum conversation turns | - |
|
|
72
|
+
| `--allowed-tools <tools>` | `-a` | Comma-separated list of allowed tools | - |
|
|
73
|
+
| `--resume <session-id>` | `-r` | Resume a previous session | - |
|
|
74
|
+
| `--output-format <format>` | `-o` | Output format: `stream` or `json` | `stream` |
|
|
75
|
+
| `--help` | `-h` | Show help message | - |
|
|
76
|
+
|
|
77
|
+
## Output Formats
|
|
78
|
+
|
|
79
|
+
### Stream Format (Default)
|
|
80
|
+
|
|
81
|
+
Outputs Server-Sent Events (SSE) using the AI SDK UI Stream Protocol. Ideal for real-time UI streaming.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
sandagent run -- "Calculate 2+2"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Output:**
|
|
88
|
+
```
|
|
89
|
+
data: {"type":"start","messageId":"msg_123"}
|
|
90
|
+
data: {"type":"text-delta","id":"text_1","delta":"The answer is 4."}
|
|
91
|
+
data: [DONE]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### JSON Format
|
|
95
|
+
|
|
96
|
+
Outputs a structured JSON object with complete message content and metadata. Ideal for API integration and automation.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
sandagent run --output-format json -- "Calculate 2+2"
|
|
100
|
+
# or
|
|
101
|
+
sandagent run -o json -- "Calculate 2+2"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Environment Variables
|
|
105
|
+
|
|
106
|
+
| Variable | Description | Required |
|
|
107
|
+
|----------|-------------|----------|
|
|
108
|
+
| `ANTHROPIC_API_KEY` | Anthropic API key | Yes |
|
|
109
|
+
| `SANDAGENT_WORKSPACE` | Default workspace path | No |
|
|
110
|
+
| `SANDAGENT_LOG_LEVEL` | Logging level (debug, info, warn, error) | No |
|
|
111
|
+
|
|
112
|
+
## Advanced Examples
|
|
113
|
+
|
|
114
|
+
### Specify Working Directory
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
sandagent run --cwd ./my-project -- "Fix the bug in main.ts"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### JSON Output for Automation
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# Save result to file
|
|
124
|
+
sandagent run -o json -- "Generate UUID" > result.json
|
|
125
|
+
|
|
126
|
+
# Parse with jq
|
|
127
|
+
sandagent run -o json -- "What is 2+2?" | jq '.content[0].text'
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Combined Options
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
sandagent run \
|
|
134
|
+
-o json \
|
|
135
|
+
-m claude-sonnet-4-20250514 \
|
|
136
|
+
--system-prompt "You are a helpful coding assistant" \
|
|
137
|
+
--max-turns 10 \
|
|
138
|
+
-- "Build a REST API"
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Architecture
|
|
142
|
+
|
|
143
|
+
The CLI is designed to:
|
|
144
|
+
1. Execute in a specific working directory
|
|
145
|
+
2. Load settings from `.claude/settings.json` and `CLAUDE.md` in the project
|
|
146
|
+
3. Stream AI SDK UI messages directly to stdout
|
|
147
|
+
4. Support both SSE stream and JSON output formats
|
|
148
|
+
|
|
149
|
+
## Related Documentation
|
|
150
|
+
|
|
151
|
+
- [Claude Agent SDK](https://platform.claude.com/docs/agent-sdk/typescript)
|
|
152
|
+
- [AI SDK UI Stream Protocol](https://ai-sdk.dev/docs/ai-sdk-ui/stream-protocol)
|
|
153
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-cli.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/runner-cli.integration.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for runner-cli
|
|
3
|
+
* Tests actual process execution
|
|
4
|
+
*/
|
|
5
|
+
import { spawn } from "node:child_process";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
import { describe, expect, it } from "vitest";
|
|
8
|
+
// Get CLI path - works in both compiled and source context
|
|
9
|
+
const CLI_PATH = join(process.cwd(), "dist/bundle.mjs");
|
|
10
|
+
describe("runner-cli Integration Tests", () => {
|
|
11
|
+
const TIMEOUT = 10000;
|
|
12
|
+
it("should display help message", async () => {
|
|
13
|
+
const output = await runCLI(["--help"]);
|
|
14
|
+
expect(output.stdout).toContain("SandAgent Runner CLI");
|
|
15
|
+
expect(output.stdout).toContain("--runner");
|
|
16
|
+
expect(output.stdout).toContain("--model");
|
|
17
|
+
expect(output.exitCode).toBe(0);
|
|
18
|
+
}, TIMEOUT);
|
|
19
|
+
it("should show error when no user input provided", async () => {
|
|
20
|
+
const output = await runCLI(["run"]);
|
|
21
|
+
expect(output.stderr).toContain("User input is required");
|
|
22
|
+
expect(output.exitCode).toBe(1);
|
|
23
|
+
}, TIMEOUT);
|
|
24
|
+
it("should show error for invalid runner", async () => {
|
|
25
|
+
const output = await runCLI([
|
|
26
|
+
"run",
|
|
27
|
+
"--runner",
|
|
28
|
+
"invalid",
|
|
29
|
+
"--",
|
|
30
|
+
"test task",
|
|
31
|
+
]);
|
|
32
|
+
expect(output.stderr).toContain("must be one of");
|
|
33
|
+
expect(output.exitCode).toBe(1);
|
|
34
|
+
}, TIMEOUT);
|
|
35
|
+
it("should accept claude runner option", async () => {
|
|
36
|
+
// This will fail without API key, but should parse arguments correctly
|
|
37
|
+
const output = await runCLI(["run", "--runner", "claude", "--", "echo hello"], {
|
|
38
|
+
env: { ...process.env, ANTHROPIC_API_KEY: "" },
|
|
39
|
+
});
|
|
40
|
+
// Should fail due to missing API key, not argument parsing
|
|
41
|
+
expect(output.stderr).toContain("ANTHROPIC_API_KEY");
|
|
42
|
+
}, TIMEOUT);
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Helper to run CLI and capture output
|
|
46
|
+
*/
|
|
47
|
+
function runCLI(args, options = {}) {
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
const proc = spawn("node", [CLI_PATH, ...args], {
|
|
50
|
+
env: options.env || process.env,
|
|
51
|
+
stdio: "pipe",
|
|
52
|
+
});
|
|
53
|
+
let stdout = "";
|
|
54
|
+
let stderr = "";
|
|
55
|
+
proc.stdout?.on("data", (data) => {
|
|
56
|
+
stdout += data.toString();
|
|
57
|
+
});
|
|
58
|
+
proc.stderr?.on("data", (data) => {
|
|
59
|
+
stderr += data.toString();
|
|
60
|
+
});
|
|
61
|
+
proc.on("close", (code) => {
|
|
62
|
+
resolve({
|
|
63
|
+
stdout,
|
|
64
|
+
stderr,
|
|
65
|
+
exitCode: code || 0,
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
proc.on("error", reject);
|
|
69
|
+
// Timeout
|
|
70
|
+
setTimeout(() => {
|
|
71
|
+
proc.kill();
|
|
72
|
+
reject(new Error("Process timed out"));
|
|
73
|
+
}, 15000);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=runner-cli.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner-cli.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/runner-cli.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ describe("runAgent", () => {
|
|
|
27
27
|
});
|
|
28
28
|
it("should create a Claude runner with correct options (with default template)", async () => {
|
|
29
29
|
await runAgent({
|
|
30
|
+
runner: "claude",
|
|
30
31
|
model: "claude-sonnet-4-20250514",
|
|
31
32
|
userInput: "Hello, world!",
|
|
32
33
|
});
|
|
@@ -40,6 +41,7 @@ describe("runAgent", () => {
|
|
|
40
41
|
});
|
|
41
42
|
it("should pass optional parameters to runner (overriding template)", async () => {
|
|
42
43
|
await runAgent({
|
|
44
|
+
runner: "claude",
|
|
43
45
|
model: "claude-sonnet-4-20250514",
|
|
44
46
|
userInput: "Hello, world!",
|
|
45
47
|
systemPrompt: "You are a helpful assistant",
|
|
@@ -47,15 +49,16 @@ describe("runAgent", () => {
|
|
|
47
49
|
allowedTools: ["bash", "write_file"],
|
|
48
50
|
});
|
|
49
51
|
// Explicit parameters override template values
|
|
50
|
-
expect(createClaudeRunner).toHaveBeenCalledWith({
|
|
52
|
+
expect(createClaudeRunner).toHaveBeenCalledWith(expect.objectContaining({
|
|
51
53
|
model: "claude-sonnet-4-20250514",
|
|
52
54
|
systemPrompt: "You are a helpful assistant",
|
|
53
55
|
maxTurns: 5,
|
|
54
56
|
allowedTools: ["bash", "write_file"],
|
|
55
|
-
});
|
|
57
|
+
}));
|
|
56
58
|
});
|
|
57
59
|
it("should stream output to stdout without modification", async () => {
|
|
58
60
|
await runAgent({
|
|
61
|
+
runner: "claude",
|
|
59
62
|
model: "claude-sonnet-4-20250514",
|
|
60
63
|
userInput: "Hello, world!",
|
|
61
64
|
});
|
|
@@ -70,10 +73,11 @@ describe("runAgent", () => {
|
|
|
70
73
|
};
|
|
71
74
|
vi.mocked(createClaudeRunner).mockReturnValue(mockRunner);
|
|
72
75
|
await runAgent({
|
|
76
|
+
runner: "claude",
|
|
73
77
|
model: "claude-sonnet-4-20250514",
|
|
74
78
|
userInput: "Create a file",
|
|
75
79
|
});
|
|
76
|
-
expect(mockRunner.run).toHaveBeenCalledWith("Create a file"
|
|
80
|
+
expect(mockRunner.run).toHaveBeenCalledWith("Create a file");
|
|
77
81
|
});
|
|
78
82
|
});
|
|
79
83
|
//# sourceMappingURL=runner.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/__tests__/runner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,gCAAgC;AAChC,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QAC1C,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,SAAS,CAAC;YAC7C,MAAM,wBAAwB,CAAC;QACjC,CAAC,CAAC;KACH,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,aAA0C,CAAC;IAC/C,IAAI,WAAqB,CAAC;IAE1B,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,EAAE,CAAC;QACjB,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,oCAAoC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE;YAC5C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QACrC,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,QAAQ,CAAC;YACb,KAAK,EAAE,0BAA0B;YACjC,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAC;QAEH,0DAA0D;QAC1D,MAAM,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxD,uDAAuD;QACvD,uCAAuC;QACvC,MAAM,CACJ,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,CACzE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,QAAQ,CAAC;YACb,KAAK,EAAE,0BAA0B;YACjC,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,6BAA6B;YAC3C,QAAQ,EAAE,CAAC;YACX,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;SACrC,CAAC,CAAC;QAEH,+CAA+C;QAC/C,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/__tests__/runner.test.ts"],"names":[],"mappings":"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"}
|