@sandagent/runner-cli 0.2.24 → 0.5.1-beta.0
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/LICENSE +201 -0
- package/README.md +17 -33
- package/dist/__tests__/build-image.test.js +1 -1
- package/dist/__tests__/build-image.test.js.map +1 -1
- package/dist/__tests__/runner-cli.integration.test.js +23 -4
- package/dist/__tests__/runner-cli.integration.test.js.map +1 -1
- package/dist/__tests__/runner.test.js +38 -0
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/bundle.mjs +795 -93
- package/dist/cli.js +14 -14
- package/dist/cli.js.map +1 -1
- package/dist/runner.d.ts +2 -2
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +52 -12
- package/dist/runner.js.map +1 -1
- package/package.json +28 -14
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,13 @@
|
|
|
6
6
|
* sandagent run [options] -- "<user input>" Run an agent locally
|
|
7
7
|
* sandagent image build [options] Build (and optionally push) a Docker image
|
|
8
8
|
*/
|
|
9
|
+
import { resolve } from "node:path";
|
|
10
|
+
// Load environment variables from .env file
|
|
11
|
+
import { config } from "dotenv";
|
|
12
|
+
// Try loading .env from current directory and project root
|
|
13
|
+
config({ path: resolve(process.cwd(), ".env") });
|
|
14
|
+
config({ path: resolve(process.cwd(), "../.env") });
|
|
15
|
+
config({ path: resolve(process.cwd(), "../../.env") });
|
|
9
16
|
import { parseArgs } from "node:util";
|
|
10
17
|
import { buildImage } from "./build-image.js";
|
|
11
18
|
import { runAgent } from "./runner.js";
|
|
@@ -69,7 +76,6 @@ function parseRunArgs() {
|
|
|
69
76
|
"max-turns": { type: "string", short: "t" },
|
|
70
77
|
"allowed-tools": { type: "string", short: "a" },
|
|
71
78
|
resume: { type: "string" },
|
|
72
|
-
"output-format": { type: "string", short: "o" },
|
|
73
79
|
help: { type: "boolean", short: "h" },
|
|
74
80
|
},
|
|
75
81
|
allowPositionals: true,
|
|
@@ -93,14 +99,8 @@ function parseRunArgs() {
|
|
|
93
99
|
process.exit(1);
|
|
94
100
|
}
|
|
95
101
|
const runner = values.runner;
|
|
96
|
-
if (!["claude", "codex", "copilot"].includes(runner)) {
|
|
97
|
-
console.error('Error: --runner must be one of: "claude", "codex", "copilot"');
|
|
98
|
-
process.exit(1);
|
|
99
|
-
}
|
|
100
|
-
const outputFormat = values["output-format"];
|
|
101
|
-
if (outputFormat &&
|
|
102
|
-
!["text", "json", "stream-json", "stream"].includes(outputFormat)) {
|
|
103
|
-
console.error('Error: --output-format must be one of: "text", "json", "stream-json", "stream"');
|
|
102
|
+
if (!["claude", "codex", "gemini", "opencode", "copilot", "pi"].includes(runner)) {
|
|
103
|
+
console.error('Error: --runner must be one of: "claude", "codex", "gemini", "opencode", "copilot", "pi"');
|
|
104
104
|
process.exit(1);
|
|
105
105
|
}
|
|
106
106
|
return {
|
|
@@ -113,7 +113,6 @@ function parseRunArgs() {
|
|
|
113
113
|
: undefined,
|
|
114
114
|
allowedTools: values["allowed-tools"]?.split(",").map((t) => t.trim()),
|
|
115
115
|
resume: values.resume,
|
|
116
|
-
outputFormat: outputFormat ?? "stream",
|
|
117
116
|
userInput,
|
|
118
117
|
};
|
|
119
118
|
}
|
|
@@ -158,18 +157,20 @@ Usage:
|
|
|
158
157
|
sandagent run [options] -- "<user input>"
|
|
159
158
|
|
|
160
159
|
Options:
|
|
161
|
-
-r, --runner <runner> Runner: claude, codex, copilot (default: claude)
|
|
160
|
+
-r, --runner <runner> Runner: claude, codex, gemini, opencode, copilot, pi (default: claude)
|
|
162
161
|
-m, --model <model> Model (default: claude-sonnet-4-20250514)
|
|
163
162
|
-c, --cwd <path> Working directory (default: cwd)
|
|
164
163
|
-s, --system-prompt <prompt> Custom system prompt
|
|
165
164
|
-t, --max-turns <n> Max conversation turns
|
|
166
165
|
-a, --allowed-tools <tools> Comma-separated allowed tools
|
|
167
166
|
--resume <session-id> Resume a previous session
|
|
168
|
-
-o, --output-format <fmt> text | json | stream-json | stream (default: stream)
|
|
169
167
|
-h, --help Show this help
|
|
170
168
|
|
|
171
169
|
Environment:
|
|
172
|
-
ANTHROPIC_API_KEY Anthropic API key (
|
|
170
|
+
ANTHROPIC_API_KEY Anthropic API key (for claude runner)
|
|
171
|
+
OPENAI_API_KEY OpenAI API key (for codex runner)
|
|
172
|
+
CODEX_API_KEY OpenAI API key alias (for codex runner)
|
|
173
|
+
GEMINI_API_KEY Gemini API key (for gemini runner)
|
|
173
174
|
SANDAGENT_WORKSPACE Default workspace path
|
|
174
175
|
`);
|
|
175
176
|
}
|
|
@@ -248,7 +249,6 @@ async function main() {
|
|
|
248
249
|
maxTurns: args.maxTurns,
|
|
249
250
|
allowedTools: args.allowedTools,
|
|
250
251
|
resume: args.resume,
|
|
251
|
-
outputFormat: args.outputFormat,
|
|
252
252
|
});
|
|
253
253
|
break;
|
|
254
254
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { BaseRunnerOptions } from "@sandagent/runner-claude";
|
|
2
2
|
/**
|
|
3
3
|
* Options for running the agent
|
|
4
4
|
* Extends BaseRunnerOptions with CLI-specific fields
|
|
5
5
|
*/
|
|
6
6
|
export interface RunAgentOptions extends BaseRunnerOptions {
|
|
7
|
-
/** Which runner to use: claude, codex, copilot */
|
|
7
|
+
/** Which runner to use: claude, codex, gemini, opencode, copilot, pi */
|
|
8
8
|
runner: string;
|
|
9
9
|
/** User input/task */
|
|
10
10
|
userInput: string;
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAOlE;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGtE"}
|
package/dist/runner.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { createClaudeRunner
|
|
1
|
+
import { createClaudeRunner } from "@sandagent/runner-claude";
|
|
2
|
+
import { createCodexRunner } from "@sandagent/runner-codex";
|
|
3
|
+
import { createGeminiRunner } from "@sandagent/runner-gemini";
|
|
4
|
+
import { createOpenCodeRunner } from "@sandagent/runner-opencode";
|
|
5
|
+
import { createPiRunner } from "@sandagent/runner-pi";
|
|
2
6
|
/**
|
|
3
7
|
* Run the agent and stream AI SDK UI messages to stdout.
|
|
4
8
|
*
|
|
@@ -29,27 +33,63 @@ export async function runAgent(options) {
|
|
|
29
33
|
let runner;
|
|
30
34
|
switch (options.runner) {
|
|
31
35
|
case "claude": {
|
|
32
|
-
|
|
33
|
-
const runnerOptions = {
|
|
36
|
+
runner = createClaudeRunner({
|
|
34
37
|
model: options.model,
|
|
35
38
|
systemPrompt: options.systemPrompt,
|
|
36
39
|
maxTurns: options.maxTurns,
|
|
37
40
|
allowedTools: options.allowedTools,
|
|
38
41
|
resume: options.resume,
|
|
39
|
-
|
|
40
|
-
abortController
|
|
41
|
-
};
|
|
42
|
-
|
|
42
|
+
env: process.env,
|
|
43
|
+
abortController,
|
|
44
|
+
});
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case "codex": {
|
|
48
|
+
runner = createCodexRunner({
|
|
49
|
+
model: options.model,
|
|
50
|
+
systemPrompt: options.systemPrompt,
|
|
51
|
+
maxTurns: options.maxTurns,
|
|
52
|
+
allowedTools: options.allowedTools,
|
|
53
|
+
resume: options.resume,
|
|
54
|
+
cwd: process.cwd(),
|
|
55
|
+
env: process.env,
|
|
56
|
+
abortController,
|
|
57
|
+
});
|
|
43
58
|
break;
|
|
44
59
|
}
|
|
45
|
-
case "codex":
|
|
46
|
-
// TODO: Implement Codex runner
|
|
47
|
-
throw new Error("Codex runner not yet implemented. Use --runner=claude for now.");
|
|
48
60
|
case "copilot":
|
|
49
|
-
// TODO: Implement Copilot runner
|
|
50
61
|
throw new Error("Copilot runner not yet implemented. Use --runner=claude for now.");
|
|
62
|
+
case "gemini": {
|
|
63
|
+
runner = createGeminiRunner({
|
|
64
|
+
model: options.model,
|
|
65
|
+
cwd: process.cwd(),
|
|
66
|
+
env: process.env,
|
|
67
|
+
abortController,
|
|
68
|
+
});
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case "pi": {
|
|
72
|
+
runner = createPiRunner({
|
|
73
|
+
model: options.model,
|
|
74
|
+
systemPrompt: options.systemPrompt,
|
|
75
|
+
cwd: process.cwd(),
|
|
76
|
+
env: process.env,
|
|
77
|
+
abortController,
|
|
78
|
+
sessionId: options.resume,
|
|
79
|
+
});
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case "opencode": {
|
|
83
|
+
runner = createOpenCodeRunner({
|
|
84
|
+
model: options.model,
|
|
85
|
+
cwd: process.cwd(),
|
|
86
|
+
env: process.env,
|
|
87
|
+
abortController,
|
|
88
|
+
});
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
51
91
|
default:
|
|
52
|
-
throw new Error(`Unknown runner: ${options.runner}. Supported runners: claude, codex, copilot`);
|
|
92
|
+
throw new Error(`Unknown runner: ${options.runner}. Supported runners: claude, codex, gemini, opencode, copilot, pi`);
|
|
53
93
|
}
|
|
54
94
|
// Stream AI SDK UI messages to stdout
|
|
55
95
|
for await (const chunk of runner.run(options.userInput)) {
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sandagent/runner-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1-beta.0",
|
|
4
4
|
"description": "SandAgent Runner CLI - Like gemini-cli or claude-code, runs in your local terminal with AI SDK UI streaming",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,20 +19,14 @@
|
|
|
19
19
|
"dist",
|
|
20
20
|
"Dockerfile"
|
|
21
21
|
],
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"dev": "tsc --watch",
|
|
27
|
-
"clean": "rm -rf dist",
|
|
28
|
-
"typecheck": "tsc --noEmit",
|
|
29
|
-
"lint": "echo 'no lint configured'",
|
|
30
|
-
"test": "vitest run --passWithNoTests"
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "https://github.com/vikadata/sandagent.git",
|
|
25
|
+
"directory": "apps/runner-cli"
|
|
31
26
|
},
|
|
32
27
|
"license": "Apache-2.0",
|
|
33
28
|
"publishConfig": {
|
|
34
29
|
"access": "public",
|
|
35
|
-
"registry": "https://registry.npmjs.org/",
|
|
36
30
|
"tag": "beta"
|
|
37
31
|
},
|
|
38
32
|
"engines": {
|
|
@@ -47,13 +41,33 @@
|
|
|
47
41
|
"anthropic"
|
|
48
42
|
],
|
|
49
43
|
"dependencies": {
|
|
50
|
-
"@anthropic-ai/claude-agent-sdk": "0.2.
|
|
44
|
+
"@anthropic-ai/claude-agent-sdk": "0.2.70",
|
|
45
|
+
"@openai/codex-sdk": "^0.110.0",
|
|
46
|
+
"@mariozechner/pi-agent-core": "^0.56.1",
|
|
47
|
+
"@mariozechner/pi-ai": "^0.56.1",
|
|
48
|
+
"@mariozechner/pi-coding-agent": "^0.56.1",
|
|
49
|
+
"dotenv": "^17.3.1",
|
|
50
|
+
"zod": "^4.0.0",
|
|
51
|
+
"@sandagent/runner-gemini": "0.1.0",
|
|
52
|
+
"@sandagent/runner-claude": "0.1.2",
|
|
53
|
+
"@sandagent/runner-opencode": "0.1.0",
|
|
54
|
+
"@sandagent/runner-pi": "0.5.1-beta.0",
|
|
55
|
+
"@sandagent/runner-codex": "0.1.0"
|
|
51
56
|
},
|
|
52
57
|
"devDependencies": {
|
|
53
|
-
"@sandagent/runner-claude": "workspace:*",
|
|
54
58
|
"@types/node": "^20.10.0",
|
|
55
59
|
"esbuild": "^0.27.2",
|
|
56
60
|
"typescript": "^5.3.0",
|
|
57
61
|
"vitest": "^1.6.1"
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "tsc && pnpm bundle",
|
|
65
|
+
"build:bundle": "tsc && pnpm bundle",
|
|
66
|
+
"bundle": "esbuild src/cli.ts --bundle --platform=node --format=esm --external:dotenv --external:@anthropic-ai/claude-agent-sdk --external:@openai/codex-sdk --external:@mariozechner/pi-agent-core --external:@mariozechner/pi-ai --external:@mariozechner/pi-coding-agent --outfile=dist/bundle.mjs",
|
|
67
|
+
"dev": "tsc --watch",
|
|
68
|
+
"clean": "rm -rf dist",
|
|
69
|
+
"typecheck": "tsc --noEmit",
|
|
70
|
+
"lint": "echo 'no lint configured'",
|
|
71
|
+
"test": "vitest run --passWithNoTests"
|
|
58
72
|
}
|
|
59
|
-
}
|
|
73
|
+
}
|