@sandagent/runner-cli 0.8.2 → 0.8.4
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/dist/__tests__/runner.test.js +0 -1
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/build-image.js +1 -1
- package/dist/build-image.js.map +1 -1
- package/dist/bundle.mjs +152 -98
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runner.d.ts +4 -25
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +5 -92
- package/dist/runner.js.map +1 -1
- package/package.json +5 -4
|
@@ -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,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QACzC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,SAAS,CAAC;YAC7C,MAAM,sBAAsB,CAAC;YAC7B,MAAM,8BAA8B,CAAC;QACvC,CAAC,CAAC;KACH,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,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,uBAAuB,CAAC;YAC9B,MAAM,8BAA8B,CAAC;QACvC,CAAC,CAAC;KACH,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,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,
|
|
1
|
+
{"version":3,"file":"runner.test.js","sourceRoot":"","sources":["../../src/__tests__/runner.test.ts"],"names":[],"mappings":"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"}
|
package/dist/build-image.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
|
-
import { copyFileSync, existsSync, mkdirSync,
|
|
2
|
+
import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
|
|
3
3
|
import { basename, dirname, join, resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
// ---------------------------------------------------------------------------
|
package/dist/build-image.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-image.js","sourceRoot":"","sources":["../src/build-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"build-image.js","sourceRoot":"","sources":["../src/build-image.ts"],"names":[],"mappings":"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"}
|
package/dist/bundle.mjs
CHANGED
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
copyFileSync,
|
|
12
12
|
existsSync,
|
|
13
13
|
mkdirSync,
|
|
14
|
-
readFileSync,
|
|
15
14
|
readdirSync,
|
|
15
|
+
readFileSync,
|
|
16
16
|
statSync,
|
|
17
17
|
writeFileSync
|
|
18
18
|
} from "node:fs";
|
|
@@ -477,20 +477,20 @@ function createCanUseToolCallback(claudeOptions) {
|
|
|
477
477
|
}
|
|
478
478
|
const cwd = claudeOptions.cwd || process.cwd();
|
|
479
479
|
try {
|
|
480
|
-
const
|
|
481
|
-
const
|
|
482
|
-
const approvalDir =
|
|
483
|
-
const approvalFile =
|
|
480
|
+
const fs2 = await import("node:fs");
|
|
481
|
+
const path2 = await import("node:path");
|
|
482
|
+
const approvalDir = path2.join(cwd, ".sandagent", "approvals");
|
|
483
|
+
const approvalFile = path2.join(approvalDir, `${toolUseID}.json`);
|
|
484
484
|
const timeout = Date.now() + 6e4;
|
|
485
485
|
let lastApproval = null;
|
|
486
486
|
while (Date.now() < timeout) {
|
|
487
487
|
try {
|
|
488
|
-
const data =
|
|
488
|
+
const data = fs2.readFileSync(approvalFile, "utf-8");
|
|
489
489
|
const approval = JSON.parse(data);
|
|
490
490
|
lastApproval = approval;
|
|
491
491
|
if (approval.status === "completed") {
|
|
492
492
|
try {
|
|
493
|
-
|
|
493
|
+
fs2.unlinkSync(approvalFile);
|
|
494
494
|
} catch {
|
|
495
495
|
}
|
|
496
496
|
return {
|
|
@@ -506,7 +506,7 @@ function createCanUseToolCallback(claudeOptions) {
|
|
|
506
506
|
await new Promise((resolve3) => setTimeout(resolve3, 500));
|
|
507
507
|
}
|
|
508
508
|
try {
|
|
509
|
-
|
|
509
|
+
fs2.unlinkSync(approvalFile);
|
|
510
510
|
} catch {
|
|
511
511
|
}
|
|
512
512
|
if (lastApproval && Object.keys(lastApproval.answers).length > 0) {
|
|
@@ -708,6 +708,9 @@ Documentation: https://platform.claude.com/docs/en/agent-sdk/typescript-v2-previ
|
|
|
708
708
|
}
|
|
709
709
|
|
|
710
710
|
// ../../packages/runner-codex/dist/codex-runner.js
|
|
711
|
+
import * as fs from "node:fs";
|
|
712
|
+
import * as os from "node:os";
|
|
713
|
+
import * as path from "node:path";
|
|
711
714
|
import { Codex } from "@openai/codex-sdk";
|
|
712
715
|
function normalizeCodexModel(model) {
|
|
713
716
|
const trimmed = model.trim();
|
|
@@ -817,7 +820,36 @@ function createCodexRunner(options) {
|
|
|
817
820
|
approvalPolicy: options.approvalPolicy
|
|
818
821
|
};
|
|
819
822
|
const thread = options.resume ? codex.resumeThread(options.resume, threadOptions) : codex.startThread(threadOptions);
|
|
820
|
-
|
|
823
|
+
let inputToCodex = userInput;
|
|
824
|
+
const tempFiles = [];
|
|
825
|
+
try {
|
|
826
|
+
if (userInput.startsWith("[") && userInput.endsWith("]")) {
|
|
827
|
+
const parsed = JSON.parse(userInput);
|
|
828
|
+
if (Array.isArray(parsed)) {
|
|
829
|
+
const parts = [];
|
|
830
|
+
for (const p of parsed) {
|
|
831
|
+
if (p.type === "image" && typeof p.data === "string") {
|
|
832
|
+
const match = /^data:([^;]+);base64,(.+)$/.exec(p.data);
|
|
833
|
+
if (match) {
|
|
834
|
+
const ext = match[1].split("/")[1] ?? "png";
|
|
835
|
+
const tmpPath = path.join(os.tmpdir(), `sandagent-img-${Date.now()}-${Math.random().toString(36).slice(2)}.${ext}`);
|
|
836
|
+
fs.writeFileSync(tmpPath, Buffer.from(match[2], "base64"));
|
|
837
|
+
tempFiles.push(tmpPath);
|
|
838
|
+
parts.push({ type: "local_image", path: tmpPath });
|
|
839
|
+
}
|
|
840
|
+
} else {
|
|
841
|
+
const text = typeof p.text === "string" ? p.text : JSON.stringify(p);
|
|
842
|
+
parts.push({ type: "text", text });
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
if (parts.length > 0) {
|
|
846
|
+
inputToCodex = parts;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
} catch (e) {
|
|
851
|
+
}
|
|
852
|
+
const streamedTurn = await thread.runStreamed(inputToCodex, {
|
|
821
853
|
signal: options.abortController?.signal
|
|
822
854
|
});
|
|
823
855
|
for await (const event of streamedTurn.events) {
|
|
@@ -873,6 +905,12 @@ function createCodexRunner(options) {
|
|
|
873
905
|
`;
|
|
874
906
|
}
|
|
875
907
|
}
|
|
908
|
+
for (const tmpFile of tempFiles) {
|
|
909
|
+
try {
|
|
910
|
+
fs.unlinkSync(tmpFile);
|
|
911
|
+
} catch {
|
|
912
|
+
}
|
|
913
|
+
}
|
|
876
914
|
}
|
|
877
915
|
};
|
|
878
916
|
}
|
|
@@ -1158,19 +1196,19 @@ function createOpenCodeRunner(options = {}) {
|
|
|
1158
1196
|
}
|
|
1159
1197
|
|
|
1160
1198
|
// ../../packages/runner-pi/dist/pi-runner.js
|
|
1161
|
-
import { appendFileSync as appendFileSync2, existsSync as existsSync3, unlinkSync as
|
|
1162
|
-
import { join as
|
|
1199
|
+
import { appendFileSync as appendFileSync2, existsSync as existsSync3, unlinkSync as unlinkSync3 } from "node:fs";
|
|
1200
|
+
import { join as join5 } from "node:path";
|
|
1163
1201
|
import { getModel } from "@mariozechner/pi-ai";
|
|
1164
|
-
import { AuthStorage, ModelRegistry, SessionManager
|
|
1202
|
+
import { AuthStorage, createAgentSession, ModelRegistry, SessionManager } from "@mariozechner/pi-coding-agent";
|
|
1165
1203
|
|
|
1166
1204
|
// ../../packages/runner-pi/dist/sandagent-resource-loader.js
|
|
1167
1205
|
import { homedir } from "node:os";
|
|
1168
|
-
import { join as
|
|
1206
|
+
import { join as join4 } from "node:path";
|
|
1169
1207
|
import { DefaultResourceLoader, loadSkills } from "@mariozechner/pi-coding-agent";
|
|
1170
1208
|
var SandagentResourceLoader = class {
|
|
1171
1209
|
constructor(options = {}) {
|
|
1172
1210
|
this.cwd = options.cwd ?? process.cwd();
|
|
1173
|
-
this.agentDir = options.agentDir ??
|
|
1211
|
+
this.agentDir = options.agentDir ?? join4(homedir(), ".pi", "agent");
|
|
1174
1212
|
this.skillPaths = options.skillPaths ?? [];
|
|
1175
1213
|
this.delegate = new DefaultResourceLoader({
|
|
1176
1214
|
cwd: this.cwd,
|
|
@@ -1259,6 +1297,24 @@ function emitStreamError(errorText) {
|
|
|
1259
1297
|
"data: [DONE]\n\n"
|
|
1260
1298
|
];
|
|
1261
1299
|
}
|
|
1300
|
+
function extractToolResultText(result) {
|
|
1301
|
+
if (result !== null && typeof result === "object") {
|
|
1302
|
+
const r = result;
|
|
1303
|
+
if (Array.isArray(r.content) && r.content.length > 0) {
|
|
1304
|
+
const text = r.content.filter((c) => c.type === "text" && typeof c.text === "string").map((c) => c.text).join("\n");
|
|
1305
|
+
if (text.length > 0) {
|
|
1306
|
+
return text;
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
if (typeof result === "string")
|
|
1311
|
+
return result;
|
|
1312
|
+
try {
|
|
1313
|
+
return JSON.stringify(result);
|
|
1314
|
+
} catch {
|
|
1315
|
+
return String(result);
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1262
1318
|
function usageToMessageMetadata(usage) {
|
|
1263
1319
|
return {
|
|
1264
1320
|
input_tokens: usage.input,
|
|
@@ -1290,9 +1346,9 @@ function traceRawMessage(debugCwd, data, reset = false) {
|
|
|
1290
1346
|
if (!enabled)
|
|
1291
1347
|
return;
|
|
1292
1348
|
try {
|
|
1293
|
-
const file =
|
|
1349
|
+
const file = join5(debugCwd, "pi-message-stream-debug.json");
|
|
1294
1350
|
if (reset && existsSync3(file))
|
|
1295
|
-
|
|
1351
|
+
unlinkSync3(file);
|
|
1296
1352
|
const type = data !== null && typeof data === "object" ? data.type : void 0;
|
|
1297
1353
|
let payload = data;
|
|
1298
1354
|
try {
|
|
@@ -1355,16 +1411,20 @@ function createPiRunner(options = {}) {
|
|
|
1355
1411
|
}
|
|
1356
1412
|
const sessions = await SessionManager.list(cwd);
|
|
1357
1413
|
const found = sessions.find((s) => s.id === resume);
|
|
1358
|
-
return found ? SessionManager.open(found.path) : SessionManager.
|
|
1414
|
+
return found ? SessionManager.open(found.path) : SessionManager.create(cwd);
|
|
1359
1415
|
}
|
|
1360
|
-
return SessionManager.
|
|
1416
|
+
return SessionManager.create(cwd);
|
|
1361
1417
|
})();
|
|
1418
|
+
const resourceLoader = options.skillPaths ? new SandagentResourceLoader({ cwd, skillPaths: options.skillPaths }) : void 0;
|
|
1419
|
+
if (resourceLoader) {
|
|
1420
|
+
await resourceLoader.reload();
|
|
1421
|
+
}
|
|
1362
1422
|
const { session } = await createAgentSession({
|
|
1363
1423
|
cwd,
|
|
1364
1424
|
model,
|
|
1365
1425
|
sessionManager,
|
|
1366
1426
|
modelRegistry,
|
|
1367
|
-
resourceLoader
|
|
1427
|
+
resourceLoader
|
|
1368
1428
|
});
|
|
1369
1429
|
if (options.systemPrompt != null && options.systemPrompt !== "") {
|
|
1370
1430
|
session.agent.setSystemPrompt(options.systemPrompt);
|
|
@@ -1401,7 +1461,26 @@ function createPiRunner(options = {}) {
|
|
|
1401
1461
|
}
|
|
1402
1462
|
try {
|
|
1403
1463
|
traceRawMessage(cwd, null, true);
|
|
1404
|
-
|
|
1464
|
+
let promptText = userInput;
|
|
1465
|
+
let images;
|
|
1466
|
+
try {
|
|
1467
|
+
if (userInput.startsWith("[") && userInput.endsWith("]")) {
|
|
1468
|
+
const parsed = JSON.parse(userInput);
|
|
1469
|
+
if (Array.isArray(parsed)) {
|
|
1470
|
+
promptText = parsed.filter((p) => p.type === "text").map((p) => p.text).join("\n");
|
|
1471
|
+
const imageParts = parsed.filter((p) => p.type === "image");
|
|
1472
|
+
if (imageParts.length > 0) {
|
|
1473
|
+
images = imageParts.map((p) => ({
|
|
1474
|
+
type: "image",
|
|
1475
|
+
data: p.data,
|
|
1476
|
+
mimeType: p.mimeType
|
|
1477
|
+
}));
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
} catch (e) {
|
|
1482
|
+
}
|
|
1483
|
+
const promptPromise = session.prompt(promptText, images ? { images } : void 0);
|
|
1405
1484
|
const messageId = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
1406
1485
|
const textId = `text_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
1407
1486
|
let hasStarted = false;
|
|
@@ -1466,14 +1545,15 @@ function createPiRunner(options = {}) {
|
|
|
1466
1545
|
}
|
|
1467
1546
|
}
|
|
1468
1547
|
} else if (event.type === "tool_execution_start") {
|
|
1469
|
-
yield `data: ${JSON.stringify({ type: "tool-input-start", toolCallId: event.toolCallId, toolName: event.toolName, dynamic: true })}
|
|
1548
|
+
yield `data: ${JSON.stringify({ type: "tool-input-start", toolCallId: event.toolCallId, toolName: event.toolName, dynamic: true, providerExecuted: true })}
|
|
1470
1549
|
|
|
1471
1550
|
`;
|
|
1472
|
-
yield `data: ${JSON.stringify({ type: "tool-input-available", toolCallId: event.toolCallId, toolName: event.toolName, input: event.args, dynamic: true })}
|
|
1551
|
+
yield `data: ${JSON.stringify({ type: "tool-input-available", toolCallId: event.toolCallId, toolName: event.toolName, input: event.args, dynamic: true, providerExecuted: true })}
|
|
1473
1552
|
|
|
1474
1553
|
`;
|
|
1475
1554
|
} else if (event.type === "tool_execution_end") {
|
|
1476
|
-
|
|
1555
|
+
const output = extractToolResultText(event.result);
|
|
1556
|
+
yield `data: ${JSON.stringify({ type: "tool-output-available", toolCallId: event.toolCallId, output, isError: event.isError, dynamic: true, providerExecuted: true })}
|
|
1477
1557
|
|
|
1478
1558
|
`;
|
|
1479
1559
|
} else if (event.type === "agent_end") {
|
|
@@ -1529,87 +1609,61 @@ function createPiRunner(options = {}) {
|
|
|
1529
1609
|
};
|
|
1530
1610
|
}
|
|
1531
1611
|
|
|
1612
|
+
// ../../packages/runner-core/dist/index.js
|
|
1613
|
+
function createRunner(options) {
|
|
1614
|
+
const cwd = options.cwd ?? process.cwd();
|
|
1615
|
+
const env = options.env ?? process.env;
|
|
1616
|
+
const abortController = options.abortController ?? new AbortController();
|
|
1617
|
+
const base = {
|
|
1618
|
+
model: options.model,
|
|
1619
|
+
systemPrompt: options.systemPrompt,
|
|
1620
|
+
maxTurns: options.maxTurns,
|
|
1621
|
+
allowedTools: options.allowedTools,
|
|
1622
|
+
resume: options.resume,
|
|
1623
|
+
env,
|
|
1624
|
+
abortController
|
|
1625
|
+
};
|
|
1626
|
+
switch (options.runner) {
|
|
1627
|
+
case "claude":
|
|
1628
|
+
return createClaudeRunner(base).run(options.userInput);
|
|
1629
|
+
case "codex":
|
|
1630
|
+
return createCodexRunner({ ...base, cwd }).run(options.userInput);
|
|
1631
|
+
case "gemini":
|
|
1632
|
+
return createGeminiRunner({
|
|
1633
|
+
model: options.model,
|
|
1634
|
+
cwd,
|
|
1635
|
+
env,
|
|
1636
|
+
abortController
|
|
1637
|
+
}).run(options.userInput);
|
|
1638
|
+
case "pi":
|
|
1639
|
+
return createPiRunner({
|
|
1640
|
+
...base,
|
|
1641
|
+
cwd,
|
|
1642
|
+
sessionId: options.resume,
|
|
1643
|
+
skillPaths: options.skillPaths
|
|
1644
|
+
}).run(options.userInput);
|
|
1645
|
+
case "opencode":
|
|
1646
|
+
return createOpenCodeRunner({
|
|
1647
|
+
model: options.model,
|
|
1648
|
+
cwd,
|
|
1649
|
+
env,
|
|
1650
|
+
abortController
|
|
1651
|
+
}).run(options.userInput);
|
|
1652
|
+
case "copilot":
|
|
1653
|
+
throw new Error("Copilot runner not yet implemented");
|
|
1654
|
+
default:
|
|
1655
|
+
throw new Error(`Unknown runner: ${options.runner}`);
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
|
|
1532
1659
|
// src/runner.ts
|
|
1533
1660
|
async function runAgent(options) {
|
|
1534
1661
|
const abortController = new AbortController();
|
|
1535
|
-
const signalHandler =
|
|
1536
|
-
console.error("[Runner] Received termination signal, stopping...");
|
|
1537
|
-
abortController.abort();
|
|
1538
|
-
console.error(
|
|
1539
|
-
"[Runner] AbortController.abort() completed (listeners triggered)"
|
|
1540
|
-
);
|
|
1541
|
-
};
|
|
1662
|
+
const signalHandler = () => abortController.abort();
|
|
1542
1663
|
process.on("SIGTERM", signalHandler);
|
|
1543
1664
|
process.on("SIGINT", signalHandler);
|
|
1544
|
-
console.error("[Runner] Signal handlers registered");
|
|
1545
1665
|
try {
|
|
1546
|
-
|
|
1547
|
-
switch (options.runner) {
|
|
1548
|
-
case "claude": {
|
|
1549
|
-
runner = createClaudeRunner({
|
|
1550
|
-
model: options.model,
|
|
1551
|
-
systemPrompt: options.systemPrompt,
|
|
1552
|
-
maxTurns: options.maxTurns,
|
|
1553
|
-
allowedTools: options.allowedTools,
|
|
1554
|
-
resume: options.resume,
|
|
1555
|
-
env: process.env,
|
|
1556
|
-
abortController
|
|
1557
|
-
});
|
|
1558
|
-
break;
|
|
1559
|
-
}
|
|
1560
|
-
case "codex": {
|
|
1561
|
-
runner = createCodexRunner({
|
|
1562
|
-
model: options.model,
|
|
1563
|
-
systemPrompt: options.systemPrompt,
|
|
1564
|
-
maxTurns: options.maxTurns,
|
|
1565
|
-
allowedTools: options.allowedTools,
|
|
1566
|
-
resume: options.resume,
|
|
1567
|
-
cwd: process.cwd(),
|
|
1568
|
-
env: process.env,
|
|
1569
|
-
abortController
|
|
1570
|
-
});
|
|
1571
|
-
break;
|
|
1572
|
-
}
|
|
1573
|
-
case "copilot":
|
|
1574
|
-
throw new Error(
|
|
1575
|
-
"Copilot runner not yet implemented. Use --runner=claude for now."
|
|
1576
|
-
);
|
|
1577
|
-
case "gemini": {
|
|
1578
|
-
runner = createGeminiRunner({
|
|
1579
|
-
model: options.model,
|
|
1580
|
-
cwd: process.cwd(),
|
|
1581
|
-
env: process.env,
|
|
1582
|
-
abortController
|
|
1583
|
-
});
|
|
1584
|
-
break;
|
|
1585
|
-
}
|
|
1586
|
-
case "pi": {
|
|
1587
|
-
runner = createPiRunner({
|
|
1588
|
-
model: options.model,
|
|
1589
|
-
systemPrompt: options.systemPrompt,
|
|
1590
|
-
cwd: process.cwd(),
|
|
1591
|
-
env: process.env,
|
|
1592
|
-
abortController,
|
|
1593
|
-
sessionId: options.resume,
|
|
1594
|
-
skillPaths: options.skillPaths
|
|
1595
|
-
});
|
|
1596
|
-
break;
|
|
1597
|
-
}
|
|
1598
|
-
case "opencode": {
|
|
1599
|
-
runner = createOpenCodeRunner({
|
|
1600
|
-
model: options.model,
|
|
1601
|
-
cwd: process.cwd(),
|
|
1602
|
-
env: process.env,
|
|
1603
|
-
abortController
|
|
1604
|
-
});
|
|
1605
|
-
break;
|
|
1606
|
-
}
|
|
1607
|
-
default:
|
|
1608
|
-
throw new Error(
|
|
1609
|
-
`Unknown runner: ${options.runner}. Supported runners: claude, codex, gemini, opencode, copilot, pi`
|
|
1610
|
-
);
|
|
1611
|
-
}
|
|
1612
|
-
for await (const chunk of runner.run(options.userInput)) {
|
|
1666
|
+
for await (const chunk of createRunner({ ...options, abortController })) {
|
|
1613
1667
|
process.stdout.write(chunk);
|
|
1614
1668
|
}
|
|
1615
1669
|
} finally {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { type BuildImageOptions, buildImage } from "./build-image.js";
|
|
2
|
+
export { type RunAgentOptions, runAgent } from "./runner.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAwB,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/runner.d.ts
CHANGED
|
@@ -1,29 +1,8 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type RunnerCoreOptions } from "@sandagent/runner-core";
|
|
2
|
+
export type RunAgentOptions = RunnerCoreOptions;
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
export interface RunAgentOptions extends BaseRunnerOptions {
|
|
7
|
-
/** Which runner to use: claude, codex, gemini, opencode, copilot, pi */
|
|
8
|
-
runner: string;
|
|
9
|
-
/** User input/task */
|
|
10
|
-
userInput: string;
|
|
11
|
-
/** Template to use (e.g., "default", "coder", "analyst", "researcher") */
|
|
12
|
-
template?: string;
|
|
13
|
-
/** Additional skill paths (for pi runner) */
|
|
14
|
-
skillPaths?: string[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Run the agent and stream AI SDK UI messages to stdout.
|
|
18
|
-
*
|
|
19
|
-
* This function:
|
|
20
|
-
* 1. Uses process.cwd() as project directory (set by cli.ts via --cwd)
|
|
21
|
-
* 2. Creates a Claude runner with settingSources: ["project"]
|
|
22
|
-
* 3. SDK automatically loads CLAUDE.md, .claude/settings.json, .claude/skills/*.skill.md
|
|
23
|
-
* 4. Streams messages directly to stdout
|
|
24
|
-
* 5. Handles SIGTERM/SIGINT signals to gracefully stop the runner
|
|
25
|
-
*
|
|
26
|
-
* The output is a valid AI SDK UI stream.
|
|
4
|
+
* Run the agent, stream AI SDK UI messages to stdout.
|
|
5
|
+
* Handles SIGTERM/SIGINT signals.
|
|
27
6
|
*/
|
|
28
7
|
export declare function runAgent(options: RunAgentOptions): Promise<void>;
|
|
29
8
|
//# sourceMappingURL=runner.d.ts.map
|
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,KAAK,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CActE"}
|
package/dist/runner.js
CHANGED
|
@@ -1,106 +1,19 @@
|
|
|
1
|
-
import {
|
|
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";
|
|
1
|
+
import { createRunner } from "@sandagent/runner-core";
|
|
6
2
|
/**
|
|
7
|
-
* Run the agent
|
|
8
|
-
*
|
|
9
|
-
* This function:
|
|
10
|
-
* 1. Uses process.cwd() as project directory (set by cli.ts via --cwd)
|
|
11
|
-
* 2. Creates a Claude runner with settingSources: ["project"]
|
|
12
|
-
* 3. SDK automatically loads CLAUDE.md, .claude/settings.json, .claude/skills/*.skill.md
|
|
13
|
-
* 4. Streams messages directly to stdout
|
|
14
|
-
* 5. Handles SIGTERM/SIGINT signals to gracefully stop the runner
|
|
15
|
-
*
|
|
16
|
-
* The output is a valid AI SDK UI stream.
|
|
3
|
+
* Run the agent, stream AI SDK UI messages to stdout.
|
|
4
|
+
* Handles SIGTERM/SIGINT signals.
|
|
17
5
|
*/
|
|
18
6
|
export async function runAgent(options) {
|
|
19
|
-
// Create an AbortController to handle process signals
|
|
20
7
|
const abortController = new AbortController();
|
|
21
|
-
|
|
22
|
-
const signalHandler = async () => {
|
|
23
|
-
console.error("[Runner] Received termination signal, stopping...");
|
|
24
|
-
// Note: abort() synchronously triggers all abort event listeners,
|
|
25
|
-
abortController.abort();
|
|
26
|
-
console.error("[Runner] AbortController.abort() completed (listeners triggered)");
|
|
27
|
-
};
|
|
8
|
+
const signalHandler = () => abortController.abort();
|
|
28
9
|
process.on("SIGTERM", signalHandler);
|
|
29
10
|
process.on("SIGINT", signalHandler);
|
|
30
|
-
console.error("[Runner] Signal handlers registered");
|
|
31
11
|
try {
|
|
32
|
-
|
|
33
|
-
let runner;
|
|
34
|
-
switch (options.runner) {
|
|
35
|
-
case "claude": {
|
|
36
|
-
runner = createClaudeRunner({
|
|
37
|
-
model: options.model,
|
|
38
|
-
systemPrompt: options.systemPrompt,
|
|
39
|
-
maxTurns: options.maxTurns,
|
|
40
|
-
allowedTools: options.allowedTools,
|
|
41
|
-
resume: options.resume,
|
|
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
|
-
});
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
case "copilot":
|
|
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
|
-
skillPaths: options.skillPaths,
|
|
80
|
-
});
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
case "opencode": {
|
|
84
|
-
runner = createOpenCodeRunner({
|
|
85
|
-
model: options.model,
|
|
86
|
-
cwd: process.cwd(),
|
|
87
|
-
env: process.env,
|
|
88
|
-
abortController,
|
|
89
|
-
});
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
default:
|
|
93
|
-
throw new Error(`Unknown runner: ${options.runner}. Supported runners: claude, codex, gemini, opencode, copilot, pi`);
|
|
94
|
-
}
|
|
95
|
-
// Stream AI SDK UI messages to stdout
|
|
96
|
-
for await (const chunk of runner.run(options.userInput)) {
|
|
97
|
-
// Write directly to stdout without modification
|
|
98
|
-
// This ensures the stream is a valid AI SDK UI stream
|
|
12
|
+
for await (const chunk of createRunner({ ...options, abortController })) {
|
|
99
13
|
process.stdout.write(chunk);
|
|
100
14
|
}
|
|
101
15
|
}
|
|
102
16
|
finally {
|
|
103
|
-
// Clean up signal handlers
|
|
104
17
|
process.off("SIGTERM", signalHandler);
|
|
105
18
|
process.off("SIGINT", signalHandler);
|
|
106
19
|
}
|
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":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,wBAAwB,CAAC;AAI9E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACpD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEpC,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;YACxE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sandagent/runner-cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
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": {
|
|
@@ -46,7 +46,8 @@
|
|
|
46
46
|
"@mariozechner/pi-ai": "^0.56.1",
|
|
47
47
|
"@mariozechner/pi-coding-agent": "^0.56.1",
|
|
48
48
|
"dotenv": "^17.3.1",
|
|
49
|
-
"zod": "^4.0.0"
|
|
49
|
+
"zod": "^4.0.0",
|
|
50
|
+
"@sandagent/runner-core": "0.1.0"
|
|
50
51
|
},
|
|
51
52
|
"devDependencies": {
|
|
52
53
|
"@types/node": "^20.10.0",
|
|
@@ -54,10 +55,10 @@
|
|
|
54
55
|
"typescript": "^5.3.0",
|
|
55
56
|
"vitest": "^1.6.1",
|
|
56
57
|
"@sandagent/runner-claude": "0.6.2",
|
|
57
|
-
"@sandagent/runner-codex": "0.6.2",
|
|
58
58
|
"@sandagent/runner-gemini": "0.6.2",
|
|
59
59
|
"@sandagent/runner-opencode": "0.6.2",
|
|
60
|
-
"@sandagent/runner-pi": "0.6.3"
|
|
60
|
+
"@sandagent/runner-pi": "0.6.3",
|
|
61
|
+
"@sandagent/runner-codex": "0.6.2"
|
|
61
62
|
},
|
|
62
63
|
"scripts": {
|
|
63
64
|
"build": "tsc && pnpm bundle",
|