@sandagent/runner-cli 0.5.0 → 0.5.1
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 +1 -0
- package/dist/__tests__/build-image.test.js +1 -1
- package/dist/__tests__/build-image.test.js.map +1 -1
- package/dist/bundle.mjs +180 -38
- package/dist/runner.d.ts +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +8 -7
- package/dist/runner.js.map +1 -1
- package/package.json +9 -8
package/README.md
CHANGED
|
@@ -168,5 +168,6 @@ sandagent image build --name vikadata/sandagent --tag 0.1.0
|
|
|
168
168
|
|
|
169
169
|
## Related Documentation
|
|
170
170
|
|
|
171
|
+
- [Skills](docs/SKILLS.md) — Where skills live and how they are loaded (local and Docker)
|
|
171
172
|
- [Claude Agent SDK](https://platform.claude.com/docs/agent-sdk/typescript)
|
|
172
173
|
- [AI SDK UI Stream Protocol](https://ai-sdk.dev/docs/ai-sdk-ui/stream-protocol)
|
|
@@ -61,7 +61,7 @@ describe("buildImage", () => {
|
|
|
61
61
|
const content = readFileSync(dockerfilePath, "utf8");
|
|
62
62
|
expect(content).toContain("FROM node:20-slim");
|
|
63
63
|
expect(content).toContain("@sandagent/runner-cli");
|
|
64
|
-
expect(content).toContain('CMD ["
|
|
64
|
+
expect(content).toContain('CMD ["bash", "-c", "start-cdp; sleep infinity"]');
|
|
65
65
|
});
|
|
66
66
|
it("uses --image override when provided", async () => {
|
|
67
67
|
await buildImage({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-image.test.js","sourceRoot":"","sources":["../../src/__tests__/build-image.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build-image.test.js","sourceRoot":"","sources":["../../src/__tests__/build-image.test.ts"],"names":[],"mappings":"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"}
|
package/dist/bundle.mjs
CHANGED
|
@@ -229,6 +229,8 @@ var AISDKStreamConverter = class {
|
|
|
229
229
|
systemMessage;
|
|
230
230
|
hasEmittedStart = false;
|
|
231
231
|
sessionId;
|
|
232
|
+
/** True after we emitted an error from a result message (e.g. API 400). Avoids emitting a second generic "exited with code 1" that would hide the real error. */
|
|
233
|
+
errorEmitted = false;
|
|
232
234
|
partIdMap = /* @__PURE__ */ new Map();
|
|
233
235
|
/**
|
|
234
236
|
* Get the current session ID from the stream
|
|
@@ -256,6 +258,13 @@ var AISDKStreamConverter = class {
|
|
|
256
258
|
}
|
|
257
259
|
throw new Error("Part ID not found");
|
|
258
260
|
}
|
|
261
|
+
/** Returns part ID for index or undefined if not tracked (e.g. content_block_stop without a prior start). */
|
|
262
|
+
tryGetPartId(index) {
|
|
263
|
+
if (!this.sessionId)
|
|
264
|
+
return void 0;
|
|
265
|
+
const partIdKey = `${this.sessionId}-${index}`;
|
|
266
|
+
return this.partIdMap.get(partIdKey);
|
|
267
|
+
}
|
|
259
268
|
/**
|
|
260
269
|
* Helper to emit tool call
|
|
261
270
|
*/
|
|
@@ -296,9 +305,18 @@ var AISDKStreamConverter = class {
|
|
|
296
305
|
delta: event.delta.text
|
|
297
306
|
});
|
|
298
307
|
}
|
|
308
|
+
if (event.type === "content_block_start" && event.content_block.type === "thinking") {
|
|
309
|
+
const partId = `reasoning_${generateId()}`;
|
|
310
|
+
this.setPartId(event.index, partId);
|
|
311
|
+
}
|
|
312
|
+
if (event.type === "content_block_delta" && event.delta?.type === "thinking_delta") {
|
|
313
|
+
if (event.delta.thinking) {
|
|
314
|
+
yield this.emit({ type: "reasoning", text: event.delta.thinking });
|
|
315
|
+
}
|
|
316
|
+
}
|
|
299
317
|
if (event.type === "content_block_stop") {
|
|
300
|
-
const partId = this.
|
|
301
|
-
if (partId
|
|
318
|
+
const partId = this.tryGetPartId(event.index);
|
|
319
|
+
if (partId?.startsWith("text_")) {
|
|
302
320
|
yield this.emit({ type: "text-end", id: partId });
|
|
303
321
|
}
|
|
304
322
|
}
|
|
@@ -370,6 +388,7 @@ var AISDKStreamConverter = class {
|
|
|
370
388
|
if (message.type === "result") {
|
|
371
389
|
const resultMsg = message;
|
|
372
390
|
if (resultMsg.is_error) {
|
|
391
|
+
this.errorEmitted = true;
|
|
373
392
|
const errorText = resultMsg.result || "Unknown error";
|
|
374
393
|
yield this.emit({
|
|
375
394
|
type: "error",
|
|
@@ -387,21 +406,53 @@ var AISDKStreamConverter = class {
|
|
|
387
406
|
}
|
|
388
407
|
}
|
|
389
408
|
} catch (error) {
|
|
390
|
-
|
|
409
|
+
if (process.env.DEBUG === "true") {
|
|
410
|
+
const errPayload = {
|
|
411
|
+
error: error instanceof Error ? error.message : String(error)
|
|
412
|
+
};
|
|
413
|
+
if (error instanceof Error) {
|
|
414
|
+
if (error.stack)
|
|
415
|
+
errPayload.stack = error.stack;
|
|
416
|
+
if (error.cause !== void 0) {
|
|
417
|
+
errPayload.cause = error.cause instanceof Error ? {
|
|
418
|
+
message: error.cause.message,
|
|
419
|
+
stack: error.cause.stack
|
|
420
|
+
} : String(error.cause);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
trace(errPayload);
|
|
424
|
+
} else {
|
|
425
|
+
trace({ error: String(error) });
|
|
426
|
+
}
|
|
391
427
|
if (isAbortError(error)) {
|
|
392
428
|
console.error("[AISDKStream] Operation aborted");
|
|
393
429
|
} else {
|
|
394
430
|
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
395
431
|
console.error("[AISDKStream] Error:", errorMessage);
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
finishReason: mapFinishReason("error_during_execution", true),
|
|
400
|
-
messageMetadata: {
|
|
401
|
-
usage: convertUsageToAISDK({}),
|
|
402
|
-
sessionId: this.sessionId
|
|
432
|
+
if (process.env.DEBUG === "true") {
|
|
433
|
+
if (error instanceof Error && error.stack) {
|
|
434
|
+
console.error("[AISDKStream] Stack:", error.stack);
|
|
403
435
|
}
|
|
404
|
-
|
|
436
|
+
if (error instanceof Error && error.cause) {
|
|
437
|
+
console.error("[AISDKStream] Cause:", error.cause);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
if ((errorMessage.includes("exited with code") || errorMessage.includes("process exited")) && this.errorEmitted) {
|
|
441
|
+
console.error("[AISDKStream] (Skipping duplicate error \u2014 already sent API/result error above. Check the first error in the stream.)");
|
|
442
|
+
} else if (errorMessage.includes("exited with code") || errorMessage.includes("process exited")) {
|
|
443
|
+
console.error("[AISDKStream] Hint: Verify ANTHROPIC_API_KEY, --model (proxy must support it), and network.");
|
|
444
|
+
}
|
|
445
|
+
if (!this.errorEmitted) {
|
|
446
|
+
yield this.emit({ type: "error", errorText: errorMessage });
|
|
447
|
+
yield this.emit({
|
|
448
|
+
type: "finish",
|
|
449
|
+
finishReason: mapFinishReason("error_during_execution", true),
|
|
450
|
+
messageMetadata: {
|
|
451
|
+
usage: convertUsageToAISDK({}),
|
|
452
|
+
sessionId: this.sessionId
|
|
453
|
+
}
|
|
454
|
+
});
|
|
455
|
+
}
|
|
405
456
|
}
|
|
406
457
|
} finally {
|
|
407
458
|
yield `data: [DONE]
|
|
@@ -531,6 +582,7 @@ async function* runWithClaudeAgentSDK(sdk, options, userInput) {
|
|
|
531
582
|
yield* runWithAISDKUIOutput(sdk, options, userInput);
|
|
532
583
|
}
|
|
533
584
|
function createSDKOptions(options) {
|
|
585
|
+
const isRoot = typeof process.getuid === "function" && process.getuid() === 0;
|
|
534
586
|
return {
|
|
535
587
|
model: options.model,
|
|
536
588
|
systemPrompt: options.systemPrompt,
|
|
@@ -546,10 +598,8 @@ function createSDKOptions(options) {
|
|
|
546
598
|
resume: options.resume,
|
|
547
599
|
settingSources: ["project", "user"],
|
|
548
600
|
canUseTool: createCanUseToolCallback(options),
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
allowDangerouslySkipPermissions: true,
|
|
552
|
-
// Enable partial messages for streaming
|
|
601
|
+
permissionMode: isRoot ? "default" : "bypassPermissions",
|
|
602
|
+
allowDangerouslySkipPermissions: !isRoot,
|
|
553
603
|
includePartialMessages: options.includePartialMessages
|
|
554
604
|
};
|
|
555
605
|
}
|
|
@@ -1106,9 +1156,10 @@ function createOpenCodeRunner(options = {}) {
|
|
|
1106
1156
|
}
|
|
1107
1157
|
|
|
1108
1158
|
// ../../packages/runner-pi/dist/pi-runner.js
|
|
1109
|
-
import {
|
|
1159
|
+
import { appendFileSync as appendFileSync2, existsSync as existsSync3, unlinkSync as unlinkSync2 } from "node:fs";
|
|
1160
|
+
import { join as join3 } from "node:path";
|
|
1110
1161
|
import { getModel } from "@mariozechner/pi-ai";
|
|
1111
|
-
import {
|
|
1162
|
+
import { SessionManager, createAgentSession } from "@mariozechner/pi-coding-agent";
|
|
1112
1163
|
function parseModelSpec(model) {
|
|
1113
1164
|
const trimmed = model.trim();
|
|
1114
1165
|
const separator = trimmed.indexOf(":");
|
|
@@ -1124,6 +1175,8 @@ function getEnvValue(optionsEnv, name) {
|
|
|
1124
1175
|
return optionsEnv?.[name] ?? process.env[name];
|
|
1125
1176
|
}
|
|
1126
1177
|
function applyModelOverrides(model, provider, optionsEnv) {
|
|
1178
|
+
if (model == null)
|
|
1179
|
+
return;
|
|
1127
1180
|
const openAiBaseUrl = getEnvValue(optionsEnv, "OPENAI_BASE_URL");
|
|
1128
1181
|
const geminiBaseUrl = getEnvValue(optionsEnv, "GEMINI_BASE_URL");
|
|
1129
1182
|
const anthropicBaseUrl = getEnvValue(optionsEnv, "ANTHROPIC_BASE_URL");
|
|
@@ -1146,21 +1199,88 @@ function emitStreamError(errorText) {
|
|
|
1146
1199
|
"data: [DONE]\n\n"
|
|
1147
1200
|
];
|
|
1148
1201
|
}
|
|
1202
|
+
function usageToMessageMetadata(usage) {
|
|
1203
|
+
return {
|
|
1204
|
+
input_tokens: usage.input,
|
|
1205
|
+
output_tokens: usage.output,
|
|
1206
|
+
cache_read_input_tokens: usage.cacheRead,
|
|
1207
|
+
cache_creation_input_tokens: usage.cacheWrite
|
|
1208
|
+
};
|
|
1209
|
+
}
|
|
1210
|
+
function getUsageFromAgentEndMessages(messages) {
|
|
1211
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
1212
|
+
const m = messages[i];
|
|
1213
|
+
if (m.role === "assistant" && m.usage != null) {
|
|
1214
|
+
return m.usage;
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1217
|
+
return void 0;
|
|
1218
|
+
}
|
|
1219
|
+
function getErrorFromAgentEndMessages(messages) {
|
|
1220
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
1221
|
+
const m = messages[i];
|
|
1222
|
+
if (m.role === "assistant" && m.errorMessage) {
|
|
1223
|
+
return m.errorMessage;
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
return void 0;
|
|
1227
|
+
}
|
|
1228
|
+
function traceRawMessage(debugCwd, data, reset = false) {
|
|
1229
|
+
const enabled = process.env.DEBUG === "true" || process.env.DEBUG === "1";
|
|
1230
|
+
if (!enabled)
|
|
1231
|
+
return;
|
|
1232
|
+
try {
|
|
1233
|
+
const file = join3(debugCwd, "pi-message-stream-debug.json");
|
|
1234
|
+
if (reset && existsSync3(file))
|
|
1235
|
+
unlinkSync2(file);
|
|
1236
|
+
const type = data !== null && typeof data === "object" ? data.type : void 0;
|
|
1237
|
+
let payload = data;
|
|
1238
|
+
try {
|
|
1239
|
+
payload = data !== void 0 ? JSON.parse(JSON.stringify(data)) : void 0;
|
|
1240
|
+
} catch {
|
|
1241
|
+
payload = "[non-serializable]";
|
|
1242
|
+
}
|
|
1243
|
+
const entry = { _t: (/* @__PURE__ */ new Date()).toISOString(), type, payload };
|
|
1244
|
+
appendFileSync2(file, JSON.stringify(entry, null, 2) + ",\n");
|
|
1245
|
+
} catch {
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1149
1248
|
function createPiRunner(options = {}) {
|
|
1150
|
-
const modelSpec = options.model
|
|
1151
|
-
|
|
1249
|
+
const modelSpec = options.model;
|
|
1250
|
+
if (modelSpec == null || modelSpec.trim() === "") {
|
|
1251
|
+
throw new Error("Pi runner: model is required. Pass a model in the form <provider>:<model>, e.g. openai:gpt-4o or google:gemini-2.5-flash.");
|
|
1252
|
+
}
|
|
1253
|
+
const { provider, modelName } = parseModelSpec(modelSpec.trim());
|
|
1152
1254
|
const cwd = options.cwd || process.cwd();
|
|
1153
1255
|
const model = getModel(provider, modelName);
|
|
1256
|
+
if (model == null) {
|
|
1257
|
+
throw new Error(`Pi runner: unsupported model "${modelSpec}". getModel("${provider}", "${modelName}") returned undefined. Use a model from the pi-ai catalog; supported providers are typically: google, openai.`);
|
|
1258
|
+
}
|
|
1154
1259
|
applyModelOverrides(model, provider, options.env);
|
|
1155
|
-
const agent = new Agent({
|
|
1156
|
-
initialState: {
|
|
1157
|
-
systemPrompt: options.systemPrompt || "You are a helpful coding assistant.",
|
|
1158
|
-
model,
|
|
1159
|
-
tools: createCodingTools(cwd)
|
|
1160
|
-
}
|
|
1161
|
-
});
|
|
1162
1260
|
return {
|
|
1163
1261
|
async *run(userInput) {
|
|
1262
|
+
const resume = options.sessionId?.trim();
|
|
1263
|
+
const sessionManager = await (async () => {
|
|
1264
|
+
if (resume !== void 0 && resume !== "") {
|
|
1265
|
+
if (resume.includes("/")) {
|
|
1266
|
+
return SessionManager.open(resume);
|
|
1267
|
+
}
|
|
1268
|
+
const sessions = await SessionManager.list(cwd);
|
|
1269
|
+
const found = sessions.find((s) => s.id === resume);
|
|
1270
|
+
return found ? SessionManager.open(found.path) : SessionManager.continueRecent(cwd);
|
|
1271
|
+
}
|
|
1272
|
+
return SessionManager.continueRecent(cwd);
|
|
1273
|
+
})();
|
|
1274
|
+
const { session } = await createAgentSession({
|
|
1275
|
+
cwd,
|
|
1276
|
+
model,
|
|
1277
|
+
sessionManager
|
|
1278
|
+
});
|
|
1279
|
+
if (options.systemPrompt != null && options.systemPrompt !== "") {
|
|
1280
|
+
session.agent.setSystemPrompt(options.systemPrompt);
|
|
1281
|
+
} else {
|
|
1282
|
+
session.agent.setSystemPrompt("You are a helpful coding assistant.");
|
|
1283
|
+
}
|
|
1164
1284
|
const eventQueue = [];
|
|
1165
1285
|
let isComplete = false;
|
|
1166
1286
|
let aborted = false;
|
|
@@ -1169,7 +1289,7 @@ function createPiRunner(options = {}) {
|
|
|
1169
1289
|
wakeConsumer?.();
|
|
1170
1290
|
wakeConsumer = null;
|
|
1171
1291
|
};
|
|
1172
|
-
const unsubscribe =
|
|
1292
|
+
const unsubscribe = session.subscribe((e) => {
|
|
1173
1293
|
eventQueue.push(e);
|
|
1174
1294
|
if (e.type === "agent_end") {
|
|
1175
1295
|
isComplete = true;
|
|
@@ -1180,7 +1300,7 @@ function createPiRunner(options = {}) {
|
|
|
1180
1300
|
const abortHandler = () => {
|
|
1181
1301
|
aborted = true;
|
|
1182
1302
|
isComplete = true;
|
|
1183
|
-
|
|
1303
|
+
void session.abort();
|
|
1184
1304
|
notify();
|
|
1185
1305
|
};
|
|
1186
1306
|
if (abortSignal) {
|
|
@@ -1190,7 +1310,8 @@ function createPiRunner(options = {}) {
|
|
|
1190
1310
|
}
|
|
1191
1311
|
}
|
|
1192
1312
|
try {
|
|
1193
|
-
|
|
1313
|
+
traceRawMessage(cwd, null, true);
|
|
1314
|
+
const promptPromise = session.prompt(userInput);
|
|
1194
1315
|
const messageId = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
1195
1316
|
const textId = `text_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
1196
1317
|
let hasStarted = false;
|
|
@@ -1200,17 +1321,29 @@ function createPiRunner(options = {}) {
|
|
|
1200
1321
|
if (!hasStarted) {
|
|
1201
1322
|
yield `data: ${JSON.stringify({ type: "start", messageId })}
|
|
1202
1323
|
|
|
1324
|
+
`;
|
|
1325
|
+
yield `data: ${JSON.stringify({
|
|
1326
|
+
type: "message-metadata",
|
|
1327
|
+
messageMetadata: { sessionId: session.sessionId }
|
|
1328
|
+
})}
|
|
1329
|
+
|
|
1203
1330
|
`;
|
|
1204
1331
|
hasStarted = true;
|
|
1205
1332
|
}
|
|
1206
1333
|
};
|
|
1207
|
-
const finishSuccess = async function* () {
|
|
1334
|
+
const finishSuccess = async function* (usage) {
|
|
1208
1335
|
if (hasTextStarted) {
|
|
1209
1336
|
yield `data: ${JSON.stringify({ type: "text-end", id: textId })}
|
|
1210
1337
|
|
|
1211
1338
|
`;
|
|
1212
1339
|
}
|
|
1213
|
-
|
|
1340
|
+
const finishPayload = { type: "finish", finishReason: "stop" };
|
|
1341
|
+
if (usage != null) {
|
|
1342
|
+
finishPayload.messageMetadata = {
|
|
1343
|
+
usage: usageToMessageMetadata(usage)
|
|
1344
|
+
};
|
|
1345
|
+
}
|
|
1346
|
+
yield `data: ${JSON.stringify(finishPayload)}
|
|
1214
1347
|
|
|
1215
1348
|
`;
|
|
1216
1349
|
yield "data: [DONE]\n\n";
|
|
@@ -1225,6 +1358,7 @@ function createPiRunner(options = {}) {
|
|
|
1225
1358
|
while (!isComplete || eventQueue.length > 0) {
|
|
1226
1359
|
while (eventQueue.length > 0) {
|
|
1227
1360
|
const event = eventQueue.shift();
|
|
1361
|
+
traceRawMessage(cwd, event);
|
|
1228
1362
|
yield* ensureStartEvent();
|
|
1229
1363
|
if (event.type === "message_update") {
|
|
1230
1364
|
if (event.assistantMessageEvent.type === "text_delta") {
|
|
@@ -1242,21 +1376,27 @@ function createPiRunner(options = {}) {
|
|
|
1242
1376
|
}
|
|
1243
1377
|
}
|
|
1244
1378
|
} else if (event.type === "tool_execution_start") {
|
|
1245
|
-
yield `data: ${JSON.stringify({ type: "tool-input-start", toolCallId: event.toolCallId, toolName: event.toolName })}
|
|
1379
|
+
yield `data: ${JSON.stringify({ type: "tool-input-start", toolCallId: event.toolCallId, toolName: event.toolName, dynamic: true })}
|
|
1246
1380
|
|
|
1247
1381
|
`;
|
|
1248
|
-
yield `data: ${JSON.stringify({ type: "tool-input-available", toolCallId: event.toolCallId, toolName: event.toolName, input: event.args })}
|
|
1382
|
+
yield `data: ${JSON.stringify({ type: "tool-input-available", toolCallId: event.toolCallId, toolName: event.toolName, input: event.args, dynamic: true })}
|
|
1249
1383
|
|
|
1250
1384
|
`;
|
|
1251
1385
|
} else if (event.type === "tool_execution_end") {
|
|
1252
|
-
yield `data: ${JSON.stringify({ type: "tool-output-available", toolCallId: event.toolCallId, output: event.result })}
|
|
1386
|
+
yield `data: ${JSON.stringify({ type: "tool-output-available", toolCallId: event.toolCallId, output: event.result, dynamic: true })}
|
|
1253
1387
|
|
|
1254
1388
|
`;
|
|
1255
1389
|
} else if (event.type === "agent_end") {
|
|
1256
1390
|
if (aborted) {
|
|
1257
1391
|
yield* finishError("Run aborted by signal.");
|
|
1258
1392
|
} else {
|
|
1259
|
-
|
|
1393
|
+
const errorMsg = getErrorFromAgentEndMessages(event.messages);
|
|
1394
|
+
if (errorMsg) {
|
|
1395
|
+
yield* finishError(errorMsg);
|
|
1396
|
+
} else {
|
|
1397
|
+
const usage = getUsageFromAgentEndMessages(event.messages);
|
|
1398
|
+
yield* finishSuccess(usage);
|
|
1399
|
+
}
|
|
1260
1400
|
}
|
|
1261
1401
|
}
|
|
1262
1402
|
}
|
|
@@ -1284,15 +1424,16 @@ function createPiRunner(options = {}) {
|
|
|
1284
1424
|
}
|
|
1285
1425
|
return;
|
|
1286
1426
|
}
|
|
1287
|
-
if (!hasFinished && agent.state.error) {
|
|
1427
|
+
if (!hasFinished && session.agent.state.error) {
|
|
1288
1428
|
yield* ensureStartEvent();
|
|
1289
|
-
yield* finishError(agent.state.error);
|
|
1429
|
+
yield* finishError(session.agent.state.error);
|
|
1290
1430
|
}
|
|
1291
1431
|
} finally {
|
|
1292
1432
|
if (abortSignal) {
|
|
1293
1433
|
abortSignal.removeEventListener("abort", abortHandler);
|
|
1294
1434
|
}
|
|
1295
1435
|
unsubscribe();
|
|
1436
|
+
session.dispose();
|
|
1296
1437
|
}
|
|
1297
1438
|
}
|
|
1298
1439
|
};
|
|
@@ -1358,7 +1499,8 @@ async function runAgent(options) {
|
|
|
1358
1499
|
systemPrompt: options.systemPrompt,
|
|
1359
1500
|
cwd: process.cwd(),
|
|
1360
1501
|
env: process.env,
|
|
1361
|
-
abortController
|
|
1502
|
+
abortController,
|
|
1503
|
+
sessionId: options.resume
|
|
1362
1504
|
});
|
|
1363
1505
|
break;
|
|
1364
1506
|
}
|
package/dist/runner.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { BaseRunnerOptions } from "@sandagent/runner-claude";
|
|
|
4
4
|
* Extends BaseRunnerOptions with CLI-specific fields
|
|
5
5
|
*/
|
|
6
6
|
export interface RunAgentOptions extends BaseRunnerOptions {
|
|
7
|
-
/** Which runner to use: claude, codex, gemini, 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,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import { createClaudeRunner
|
|
2
|
-
import { createCodexRunner
|
|
1
|
+
import { createClaudeRunner } from "@sandagent/runner-claude";
|
|
2
|
+
import { createCodexRunner } from "@sandagent/runner-codex";
|
|
3
3
|
import { createGeminiRunner } from "@sandagent/runner-gemini";
|
|
4
4
|
import { createOpenCodeRunner } from "@sandagent/runner-opencode";
|
|
5
5
|
import { createPiRunner } from "@sandagent/runner-pi";
|
|
@@ -40,7 +40,7 @@ export async function runAgent(options) {
|
|
|
40
40
|
allowedTools: options.allowedTools,
|
|
41
41
|
resume: options.resume,
|
|
42
42
|
env: process.env,
|
|
43
|
-
abortController
|
|
43
|
+
abortController,
|
|
44
44
|
});
|
|
45
45
|
break;
|
|
46
46
|
}
|
|
@@ -53,7 +53,7 @@ export async function runAgent(options) {
|
|
|
53
53
|
resume: options.resume,
|
|
54
54
|
cwd: process.cwd(),
|
|
55
55
|
env: process.env,
|
|
56
|
-
abortController
|
|
56
|
+
abortController,
|
|
57
57
|
});
|
|
58
58
|
break;
|
|
59
59
|
}
|
|
@@ -64,7 +64,7 @@ export async function runAgent(options) {
|
|
|
64
64
|
model: options.model,
|
|
65
65
|
cwd: process.cwd(),
|
|
66
66
|
env: process.env,
|
|
67
|
-
abortController
|
|
67
|
+
abortController,
|
|
68
68
|
});
|
|
69
69
|
break;
|
|
70
70
|
}
|
|
@@ -74,7 +74,8 @@ export async function runAgent(options) {
|
|
|
74
74
|
systemPrompt: options.systemPrompt,
|
|
75
75
|
cwd: process.cwd(),
|
|
76
76
|
env: process.env,
|
|
77
|
-
abortController
|
|
77
|
+
abortController,
|
|
78
|
+
sessionId: options.resume,
|
|
78
79
|
});
|
|
79
80
|
break;
|
|
80
81
|
}
|
|
@@ -83,7 +84,7 @@ export async function runAgent(options) {
|
|
|
83
84
|
model: options.model,
|
|
84
85
|
cwd: process.cwd(),
|
|
85
86
|
env: process.env,
|
|
86
|
-
abortController
|
|
87
|
+
abortController,
|
|
87
88
|
});
|
|
88
89
|
break;
|
|
89
90
|
}
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
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.5.
|
|
3
|
+
"version": "0.5.1",
|
|
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": {
|
|
@@ -41,23 +41,24 @@
|
|
|
41
41
|
"anthropic"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@anthropic-ai/claude-agent-sdk": "0.2.
|
|
44
|
+
"@anthropic-ai/claude-agent-sdk": "0.2.70",
|
|
45
45
|
"@openai/codex-sdk": "^0.110.0",
|
|
46
46
|
"@mariozechner/pi-agent-core": "^0.56.1",
|
|
47
47
|
"@mariozechner/pi-ai": "^0.56.1",
|
|
48
48
|
"@mariozechner/pi-coding-agent": "^0.56.1",
|
|
49
49
|
"dotenv": "^17.3.1",
|
|
50
|
-
"
|
|
51
|
-
"@sandagent/runner-gemini": "0.1.0",
|
|
52
|
-
"@sandagent/runner-codex": "0.1.0",
|
|
53
|
-
"@sandagent/runner-opencode": "0.1.0",
|
|
54
|
-
"@sandagent/runner-pi": "0.1.0"
|
|
50
|
+
"zod": "^4.0.0"
|
|
55
51
|
},
|
|
56
52
|
"devDependencies": {
|
|
57
53
|
"@types/node": "^20.10.0",
|
|
58
54
|
"esbuild": "^0.27.2",
|
|
59
55
|
"typescript": "^5.3.0",
|
|
60
|
-
"vitest": "^1.6.1"
|
|
56
|
+
"vitest": "^1.6.1",
|
|
57
|
+
"@sandagent/runner-claude": "0.1.2",
|
|
58
|
+
"@sandagent/runner-codex": "0.1.0",
|
|
59
|
+
"@sandagent/runner-gemini": "0.1.0",
|
|
60
|
+
"@sandagent/runner-opencode": "0.1.0",
|
|
61
|
+
"@sandagent/runner-pi": "0.5.1"
|
|
61
62
|
},
|
|
62
63
|
"scripts": {
|
|
63
64
|
"build": "tsc && pnpm bundle",
|