@rk0429/agentic-relay 0.6.0 → 0.6.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/dist/relay.mjs +48 -2
- package/package.json +1 -1
package/dist/relay.mjs
CHANGED
|
@@ -1143,6 +1143,17 @@ var CLAUDE_NESTING_ENV_VARS = [
|
|
|
1143
1143
|
"CLAUDE_CODE_SSE_PORT",
|
|
1144
1144
|
"CLAUDE_CODE_ENTRYPOINT"
|
|
1145
1145
|
];
|
|
1146
|
+
var DEFAULT_CLAUDE_SDK_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
1147
|
+
function getClaudeSdkTimeoutMs() {
|
|
1148
|
+
const envVal = process.env["RELAY_CLAUDE_TIMEOUT_MS"];
|
|
1149
|
+
if (envVal) {
|
|
1150
|
+
const parsed = Number(envVal);
|
|
1151
|
+
if (!Number.isNaN(parsed) && parsed > 0) {
|
|
1152
|
+
return parsed;
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
return DEFAULT_CLAUDE_SDK_TIMEOUT_MS;
|
|
1156
|
+
}
|
|
1146
1157
|
var ClaudeAdapter = class extends BaseAdapter {
|
|
1147
1158
|
id = "claude";
|
|
1148
1159
|
command = "claude";
|
|
@@ -1211,11 +1222,16 @@ var ClaudeAdapter = class extends BaseAdapter {
|
|
|
1211
1222
|
}
|
|
1212
1223
|
const env = this.buildCleanEnv(flags);
|
|
1213
1224
|
const permissionMode = this.getPermissionMode();
|
|
1225
|
+
const timeoutMs = getClaudeSdkTimeoutMs();
|
|
1226
|
+
const abortController = new AbortController();
|
|
1227
|
+
const timer = setTimeout(() => abortController.abort(), timeoutMs);
|
|
1214
1228
|
try {
|
|
1215
1229
|
const { query } = await loadClaudeSDK();
|
|
1216
1230
|
const options = {
|
|
1231
|
+
abortController,
|
|
1217
1232
|
env,
|
|
1218
1233
|
cwd: process.cwd(),
|
|
1234
|
+
mcpServers: {},
|
|
1219
1235
|
...flags.model ? { model: flags.model } : {},
|
|
1220
1236
|
...flags.maxTurns ? { maxTurns: flags.maxTurns } : {},
|
|
1221
1237
|
...flags.systemPrompt ? { systemPrompt: flags.systemPrompt } : {}
|
|
@@ -1251,11 +1267,20 @@ var ClaudeAdapter = class extends BaseAdapter {
|
|
|
1251
1267
|
...sessionId ? { nativeSessionId: sessionId } : {}
|
|
1252
1268
|
};
|
|
1253
1269
|
} catch (error) {
|
|
1270
|
+
if (abortController.signal.aborted) {
|
|
1271
|
+
return {
|
|
1272
|
+
exitCode: 1,
|
|
1273
|
+
stdout: "",
|
|
1274
|
+
stderr: `Claude SDK query timed out after ${timeoutMs}ms`
|
|
1275
|
+
};
|
|
1276
|
+
}
|
|
1254
1277
|
return {
|
|
1255
1278
|
exitCode: 1,
|
|
1256
1279
|
stdout: "",
|
|
1257
1280
|
stderr: error instanceof Error ? error.message : String(error)
|
|
1258
1281
|
};
|
|
1282
|
+
} finally {
|
|
1283
|
+
clearTimeout(timer);
|
|
1259
1284
|
}
|
|
1260
1285
|
}
|
|
1261
1286
|
async *executeStreaming(flags) {
|
|
@@ -1264,11 +1289,16 @@ var ClaudeAdapter = class extends BaseAdapter {
|
|
|
1264
1289
|
}
|
|
1265
1290
|
const env = this.buildCleanEnv(flags);
|
|
1266
1291
|
const permissionMode = this.getPermissionMode();
|
|
1292
|
+
const timeoutMs = getClaudeSdkTimeoutMs();
|
|
1293
|
+
const abortController = new AbortController();
|
|
1294
|
+
const timer = setTimeout(() => abortController.abort(), timeoutMs);
|
|
1267
1295
|
try {
|
|
1268
1296
|
const { query } = await loadClaudeSDK();
|
|
1269
1297
|
const options = {
|
|
1298
|
+
abortController,
|
|
1270
1299
|
env,
|
|
1271
1300
|
cwd: process.cwd(),
|
|
1301
|
+
mcpServers: {},
|
|
1272
1302
|
...flags.model ? { model: flags.model } : {},
|
|
1273
1303
|
...flags.maxTurns ? { maxTurns: flags.maxTurns } : {},
|
|
1274
1304
|
...flags.systemPrompt ? { systemPrompt: flags.systemPrompt } : {}
|
|
@@ -1328,22 +1358,29 @@ var ClaudeAdapter = class extends BaseAdapter {
|
|
|
1328
1358
|
}
|
|
1329
1359
|
}
|
|
1330
1360
|
} catch (error) {
|
|
1331
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1361
|
+
const errorMessage = abortController.signal.aborted ? `Claude SDK query timed out after ${timeoutMs}ms` : error instanceof Error ? error.message : String(error);
|
|
1332
1362
|
yield { type: "error", message: errorMessage };
|
|
1333
1363
|
yield {
|
|
1334
1364
|
type: "done",
|
|
1335
1365
|
result: { exitCode: 1, stdout: "", stderr: errorMessage }
|
|
1336
1366
|
};
|
|
1367
|
+
} finally {
|
|
1368
|
+
clearTimeout(timer);
|
|
1337
1369
|
}
|
|
1338
1370
|
}
|
|
1339
1371
|
async continueSession(nativeSessionId, prompt) {
|
|
1372
|
+
const timeoutMs = getClaudeSdkTimeoutMs();
|
|
1373
|
+
const abortController = new AbortController();
|
|
1374
|
+
const timer = setTimeout(() => abortController.abort(), timeoutMs);
|
|
1340
1375
|
try {
|
|
1341
1376
|
const { query } = await loadClaudeSDK();
|
|
1342
1377
|
const permissionMode = this.getPermissionMode();
|
|
1343
1378
|
const options = {
|
|
1379
|
+
abortController,
|
|
1344
1380
|
resume: nativeSessionId,
|
|
1345
1381
|
maxTurns: 1,
|
|
1346
|
-
cwd: process.cwd()
|
|
1382
|
+
cwd: process.cwd(),
|
|
1383
|
+
mcpServers: {}
|
|
1347
1384
|
};
|
|
1348
1385
|
if (permissionMode === "bypassPermissions") {
|
|
1349
1386
|
options.permissionMode = "bypassPermissions";
|
|
@@ -1367,11 +1404,20 @@ var ClaudeAdapter = class extends BaseAdapter {
|
|
|
1367
1404
|
stderr: ""
|
|
1368
1405
|
};
|
|
1369
1406
|
} catch (error) {
|
|
1407
|
+
if (abortController.signal.aborted) {
|
|
1408
|
+
return {
|
|
1409
|
+
exitCode: 1,
|
|
1410
|
+
stdout: "",
|
|
1411
|
+
stderr: `Claude SDK query timed out after ${timeoutMs}ms`
|
|
1412
|
+
};
|
|
1413
|
+
}
|
|
1370
1414
|
return {
|
|
1371
1415
|
exitCode: 1,
|
|
1372
1416
|
stdout: "",
|
|
1373
1417
|
stderr: error instanceof Error ? error.message : String(error)
|
|
1374
1418
|
};
|
|
1419
|
+
} finally {
|
|
1420
|
+
clearTimeout(timer);
|
|
1375
1421
|
}
|
|
1376
1422
|
}
|
|
1377
1423
|
async resumeSession(sessionId, flags) {
|
package/package.json
CHANGED