@aiden-ade/sandbox-agent 0.1.4 → 0.1.6
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/core-agent.d.ts +31 -0
- package/dist/core-agent.d.ts.map +1 -0
- package/dist/core-agent.js +238 -0
- package/dist/core-agent.js.map +1 -0
- package/dist/index.cjs +117 -101
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime-backends.d.ts +20 -0
- package/dist/runtime-backends.d.ts.map +1 -0
- package/dist/runtime-backends.js +769 -0
- package/dist/runtime-backends.js.map +1 -0
- package/dist/sandbox.d.ts +14 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +139 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/types.d.ts +210 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/updater.d.ts +15 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +50 -0
- package/dist/updater.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/web-presenter.d.ts +26 -0
- package/dist/web-presenter.d.ts.map +1 -0
- package/dist/web-presenter.js +73 -0
- package/dist/web-presenter.js.map +1 -0
- package/dist/ws-client.d.ts +27 -0
- package/dist/ws-client.d.ts.map +1 -0
- package/dist/ws-client.js +56 -0
- package/dist/ws-client.js.map +1 -0
- package/package.json +6 -7
package/dist/index.cjs
CHANGED
|
@@ -30,9 +30,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
30
30
|
mod
|
|
31
31
|
));
|
|
32
32
|
|
|
33
|
-
// ../../node_modules
|
|
33
|
+
// ../../node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js
|
|
34
34
|
var require_XMLHttpRequest = __commonJS({
|
|
35
|
-
"../../node_modules
|
|
35
|
+
"../../node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js"(exports2, module2) {
|
|
36
36
|
"use strict";
|
|
37
37
|
var fs = require("fs");
|
|
38
38
|
var Url = require("url");
|
|
@@ -434,9 +434,9 @@ var require_XMLHttpRequest = __commonJS({
|
|
|
434
434
|
}
|
|
435
435
|
});
|
|
436
436
|
|
|
437
|
-
// ../../node_modules
|
|
437
|
+
// ../../node_modules/ms/index.js
|
|
438
438
|
var require_ms = __commonJS({
|
|
439
|
-
"../../node_modules
|
|
439
|
+
"../../node_modules/ms/index.js"(exports2, module2) {
|
|
440
440
|
"use strict";
|
|
441
441
|
var s = 1e3;
|
|
442
442
|
var m = s * 60;
|
|
@@ -551,9 +551,9 @@ var require_ms = __commonJS({
|
|
|
551
551
|
}
|
|
552
552
|
});
|
|
553
553
|
|
|
554
|
-
// ../../node_modules
|
|
554
|
+
// ../../node_modules/debug/src/common.js
|
|
555
555
|
var require_common = __commonJS({
|
|
556
|
-
"../../node_modules
|
|
556
|
+
"../../node_modules/debug/src/common.js"(exports2, module2) {
|
|
557
557
|
"use strict";
|
|
558
558
|
function setup(env) {
|
|
559
559
|
createDebug.debug = createDebug;
|
|
@@ -729,9 +729,9 @@ var require_common = __commonJS({
|
|
|
729
729
|
}
|
|
730
730
|
});
|
|
731
731
|
|
|
732
|
-
// ../../node_modules
|
|
732
|
+
// ../../node_modules/debug/src/browser.js
|
|
733
733
|
var require_browser = __commonJS({
|
|
734
|
-
"../../node_modules
|
|
734
|
+
"../../node_modules/debug/src/browser.js"(exports2, module2) {
|
|
735
735
|
"use strict";
|
|
736
736
|
exports2.formatArgs = formatArgs;
|
|
737
737
|
exports2.save = save;
|
|
@@ -1015,9 +1015,9 @@ var require_supports_color = __commonJS({
|
|
|
1015
1015
|
}
|
|
1016
1016
|
});
|
|
1017
1017
|
|
|
1018
|
-
// ../../node_modules
|
|
1018
|
+
// ../../node_modules/debug/src/node.js
|
|
1019
1019
|
var require_node = __commonJS({
|
|
1020
|
-
"../../node_modules
|
|
1020
|
+
"../../node_modules/debug/src/node.js"(exports2, module2) {
|
|
1021
1021
|
"use strict";
|
|
1022
1022
|
var tty = require("tty");
|
|
1023
1023
|
var util = require("util");
|
|
@@ -1190,9 +1190,9 @@ var require_node = __commonJS({
|
|
|
1190
1190
|
}
|
|
1191
1191
|
});
|
|
1192
1192
|
|
|
1193
|
-
// ../../node_modules
|
|
1193
|
+
// ../../node_modules/debug/src/index.js
|
|
1194
1194
|
var require_src = __commonJS({
|
|
1195
|
-
"../../node_modules
|
|
1195
|
+
"../../node_modules/debug/src/index.js"(exports2, module2) {
|
|
1196
1196
|
"use strict";
|
|
1197
1197
|
if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
|
|
1198
1198
|
module2.exports = require_browser();
|
|
@@ -1202,9 +1202,9 @@ var require_src = __commonJS({
|
|
|
1202
1202
|
}
|
|
1203
1203
|
});
|
|
1204
1204
|
|
|
1205
|
-
// ../../node_modules
|
|
1205
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/constants.js
|
|
1206
1206
|
var require_constants = __commonJS({
|
|
1207
|
-
"../../node_modules
|
|
1207
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/constants.js"(exports2, module2) {
|
|
1208
1208
|
"use strict";
|
|
1209
1209
|
var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
|
|
1210
1210
|
var hasBlob = typeof Blob !== "undefined";
|
|
@@ -1224,9 +1224,9 @@ var require_constants = __commonJS({
|
|
|
1224
1224
|
}
|
|
1225
1225
|
});
|
|
1226
1226
|
|
|
1227
|
-
// ../../node_modules
|
|
1227
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/buffer-util.js
|
|
1228
1228
|
var require_buffer_util = __commonJS({
|
|
1229
|
-
"../../node_modules
|
|
1229
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/buffer-util.js"(exports2, module2) {
|
|
1230
1230
|
"use strict";
|
|
1231
1231
|
var { EMPTY_BUFFER } = require_constants();
|
|
1232
1232
|
var FastBuffer = Buffer[Symbol.species];
|
|
@@ -1299,9 +1299,9 @@ var require_buffer_util = __commonJS({
|
|
|
1299
1299
|
}
|
|
1300
1300
|
});
|
|
1301
1301
|
|
|
1302
|
-
// ../../node_modules
|
|
1302
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/limiter.js
|
|
1303
1303
|
var require_limiter = __commonJS({
|
|
1304
|
-
"../../node_modules
|
|
1304
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/limiter.js"(exports2, module2) {
|
|
1305
1305
|
"use strict";
|
|
1306
1306
|
var kDone = /* @__PURE__ */ Symbol("kDone");
|
|
1307
1307
|
var kRun = /* @__PURE__ */ Symbol("kRun");
|
|
@@ -1349,9 +1349,9 @@ var require_limiter = __commonJS({
|
|
|
1349
1349
|
}
|
|
1350
1350
|
});
|
|
1351
1351
|
|
|
1352
|
-
// ../../node_modules
|
|
1352
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/permessage-deflate.js
|
|
1353
1353
|
var require_permessage_deflate = __commonJS({
|
|
1354
|
-
"../../node_modules
|
|
1354
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/permessage-deflate.js"(exports2, module2) {
|
|
1355
1355
|
"use strict";
|
|
1356
1356
|
var zlib = require("zlib");
|
|
1357
1357
|
var bufferUtil = require_buffer_util();
|
|
@@ -1732,9 +1732,9 @@ var require_permessage_deflate = __commonJS({
|
|
|
1732
1732
|
}
|
|
1733
1733
|
});
|
|
1734
1734
|
|
|
1735
|
-
// ../../node_modules
|
|
1735
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/validation.js
|
|
1736
1736
|
var require_validation = __commonJS({
|
|
1737
|
-
"../../node_modules
|
|
1737
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/validation.js"(exports2, module2) {
|
|
1738
1738
|
"use strict";
|
|
1739
1739
|
var { isUtf8 } = require("buffer");
|
|
1740
1740
|
var { hasBlob } = require_constants();
|
|
@@ -1933,9 +1933,9 @@ var require_validation = __commonJS({
|
|
|
1933
1933
|
}
|
|
1934
1934
|
});
|
|
1935
1935
|
|
|
1936
|
-
// ../../node_modules
|
|
1936
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/receiver.js
|
|
1937
1937
|
var require_receiver = __commonJS({
|
|
1938
|
-
"../../node_modules
|
|
1938
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/receiver.js"(exports2, module2) {
|
|
1939
1939
|
"use strict";
|
|
1940
1940
|
var { Writable } = require("stream");
|
|
1941
1941
|
var PerMessageDeflate = require_permessage_deflate();
|
|
@@ -2525,9 +2525,9 @@ var require_receiver = __commonJS({
|
|
|
2525
2525
|
}
|
|
2526
2526
|
});
|
|
2527
2527
|
|
|
2528
|
-
// ../../node_modules
|
|
2528
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/sender.js
|
|
2529
2529
|
var require_sender = __commonJS({
|
|
2530
|
-
"../../node_modules
|
|
2530
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/sender.js"(exports2, module2) {
|
|
2531
2531
|
"use strict";
|
|
2532
2532
|
var { Duplex } = require("stream");
|
|
2533
2533
|
var { randomFillSync } = require("crypto");
|
|
@@ -3013,9 +3013,9 @@ var require_sender = __commonJS({
|
|
|
3013
3013
|
}
|
|
3014
3014
|
});
|
|
3015
3015
|
|
|
3016
|
-
// ../../node_modules
|
|
3016
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/event-target.js
|
|
3017
3017
|
var require_event_target = __commonJS({
|
|
3018
|
-
"../../node_modules
|
|
3018
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/event-target.js"(exports2, module2) {
|
|
3019
3019
|
"use strict";
|
|
3020
3020
|
var { kForOnEventAttribute, kListener } = require_constants();
|
|
3021
3021
|
var kCode = /* @__PURE__ */ Symbol("kCode");
|
|
@@ -3242,9 +3242,9 @@ var require_event_target = __commonJS({
|
|
|
3242
3242
|
}
|
|
3243
3243
|
});
|
|
3244
3244
|
|
|
3245
|
-
// ../../node_modules
|
|
3245
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/extension.js
|
|
3246
3246
|
var require_extension = __commonJS({
|
|
3247
|
-
"../../node_modules
|
|
3247
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/extension.js"(exports2, module2) {
|
|
3248
3248
|
"use strict";
|
|
3249
3249
|
var { tokenChars } = require_validation();
|
|
3250
3250
|
function push(dest, name, elem) {
|
|
@@ -3395,9 +3395,9 @@ var require_extension = __commonJS({
|
|
|
3395
3395
|
}
|
|
3396
3396
|
});
|
|
3397
3397
|
|
|
3398
|
-
// ../../node_modules
|
|
3398
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/websocket.js
|
|
3399
3399
|
var require_websocket = __commonJS({
|
|
3400
|
-
"../../node_modules
|
|
3400
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/websocket.js"(exports2, module2) {
|
|
3401
3401
|
"use strict";
|
|
3402
3402
|
var EventEmitter = require("events");
|
|
3403
3403
|
var https = require("https");
|
|
@@ -4278,9 +4278,9 @@ var require_websocket = __commonJS({
|
|
|
4278
4278
|
}
|
|
4279
4279
|
});
|
|
4280
4280
|
|
|
4281
|
-
// ../../node_modules
|
|
4281
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/stream.js
|
|
4282
4282
|
var require_stream = __commonJS({
|
|
4283
|
-
"../../node_modules
|
|
4283
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/stream.js"(exports2, module2) {
|
|
4284
4284
|
"use strict";
|
|
4285
4285
|
var WebSocket2 = require_websocket();
|
|
4286
4286
|
var { Duplex } = require("stream");
|
|
@@ -4376,9 +4376,9 @@ var require_stream = __commonJS({
|
|
|
4376
4376
|
}
|
|
4377
4377
|
});
|
|
4378
4378
|
|
|
4379
|
-
// ../../node_modules
|
|
4379
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/subprotocol.js
|
|
4380
4380
|
var require_subprotocol = __commonJS({
|
|
4381
|
-
"../../node_modules
|
|
4381
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/subprotocol.js"(exports2, module2) {
|
|
4382
4382
|
"use strict";
|
|
4383
4383
|
var { tokenChars } = require_validation();
|
|
4384
4384
|
function parse3(header) {
|
|
@@ -4421,9 +4421,9 @@ var require_subprotocol = __commonJS({
|
|
|
4421
4421
|
}
|
|
4422
4422
|
});
|
|
4423
4423
|
|
|
4424
|
-
// ../../node_modules
|
|
4424
|
+
// ../../node_modules/engine.io-client/node_modules/ws/lib/websocket-server.js
|
|
4425
4425
|
var require_websocket_server = __commonJS({
|
|
4426
|
-
"../../node_modules
|
|
4426
|
+
"../../node_modules/engine.io-client/node_modules/ws/lib/websocket-server.js"(exports2, module2) {
|
|
4427
4427
|
"use strict";
|
|
4428
4428
|
var EventEmitter = require("events");
|
|
4429
4429
|
var http = require("http");
|
|
@@ -4898,6 +4898,14 @@ function classifyCliError(stderr, exitCode) {
|
|
|
4898
4898
|
return "Rate limited by API. Try again shortly.";
|
|
4899
4899
|
if (isLikelyProviderAuthError(stderr))
|
|
4900
4900
|
return "API key invalid or expired. Check your provider settings.";
|
|
4901
|
+
if (lower.includes("not logged in") || lower.includes("login required") || lower.includes("please sign in") || lower.includes("please log in") || lower.includes("sign in to") || lower.includes("log in to"))
|
|
4902
|
+
return "Not logged in. Please authenticate with this provider first.";
|
|
4903
|
+
if (lower.includes("model not supported") || lower.includes("unsupported model") || lower.includes("model not found") || lower.includes("model not available") || lower.includes("model is not available") || lower.includes("invalid model") || lower.includes("unknown model") || lower.includes("no such model"))
|
|
4904
|
+
return "Model not supported by this provider. Check your provider's model list.";
|
|
4905
|
+
if (lower.includes("subscription") || lower.includes("paid plan") || lower.includes("plan required") || lower.includes("upgrade your plan") || lower.includes("only supports free") || lower.includes("not available on your") || lower.includes("requires a paid"))
|
|
4906
|
+
return "This model requires a paid subscription. Switch to a supported model or upgrade your plan.";
|
|
4907
|
+
if (lower.includes("quota exceeded") || lower.includes("quota limit") || lower.includes("daily limit") || lower.includes("monthly limit") || lower.includes("usage limit"))
|
|
4908
|
+
return "API quota exceeded. Wait for it to reset or check your billing.";
|
|
4901
4909
|
if (lower.includes("overloaded") || lower.includes("503") || lower.includes("service unavailable"))
|
|
4902
4910
|
return "API is overloaded. Will retry automatically.";
|
|
4903
4911
|
if (lower.includes("context_length") || lower.includes("too long") || lower.includes("max tokens") || lower.includes("context window"))
|
|
@@ -4908,11 +4916,12 @@ function classifyCliError(stderr, exitCode) {
|
|
|
4908
4916
|
return "Permission denied. Check file or command permissions.";
|
|
4909
4917
|
if (lower.includes("out of memory") || lower.includes("enomem"))
|
|
4910
4918
|
return "Out of memory. Close other applications and try again.";
|
|
4911
|
-
|
|
4919
|
+
const raw = stderr.trim().slice(0, 200);
|
|
4920
|
+
return raw || `Process exited with code ${exitCode}`;
|
|
4912
4921
|
}
|
|
4913
4922
|
function isTransientError(errorMessage) {
|
|
4914
4923
|
const lower = errorMessage.toLowerCase();
|
|
4915
|
-
return lower.includes("rate limit") || lower.includes("overloaded") || lower.includes("503") || lower.includes("429") || lower.includes("service unavailable") || lower.includes("etimedout") || lower.includes("econnreset") || lower.includes("econnrefused");
|
|
4924
|
+
return lower.includes("rate limit") || lower.includes("overloaded") || lower.includes("503") || lower.includes("429") || lower.includes("service unavailable") || lower.includes("etimedout") || lower.includes("econnreset") || lower.includes("econnrefused") || lower.includes("epipe");
|
|
4916
4925
|
}
|
|
4917
4926
|
function buildPromptWithSystem(config, promptText) {
|
|
4918
4927
|
const parts2 = [
|
|
@@ -5032,7 +5041,6 @@ function createGenericCliBackend(options) {
|
|
|
5032
5041
|
if (options.allowContinuation) {
|
|
5033
5042
|
const IDLE_MS = options.continuationIdleMs ?? 10 * 60 * 1e3;
|
|
5034
5043
|
let idleTimer = null;
|
|
5035
|
-
let heartbeatInterval = null;
|
|
5036
5044
|
const resetIdleTimer = () => {
|
|
5037
5045
|
if (idleTimer) clearTimeout(idleTimer);
|
|
5038
5046
|
idleTimer = setTimeout(() => {
|
|
@@ -5043,22 +5051,9 @@ function createGenericCliBackend(options) {
|
|
|
5043
5051
|
}, IDLE_MS);
|
|
5044
5052
|
};
|
|
5045
5053
|
state.onNewOutput = resetIdleTimer;
|
|
5046
|
-
state.stopHeartbeat = () => {
|
|
5047
|
-
if (heartbeatInterval) {
|
|
5048
|
-
clearInterval(heartbeatInterval);
|
|
5049
|
-
heartbeatInterval = null;
|
|
5050
|
-
}
|
|
5051
|
-
};
|
|
5052
|
-
state.startHeartbeat = () => {
|
|
5053
|
-
state.stopHeartbeat?.();
|
|
5054
|
-
heartbeatInterval = setInterval(() => {
|
|
5055
|
-
void presenter.onActivity?.("background_work");
|
|
5056
|
-
}, 3e4);
|
|
5057
|
-
};
|
|
5058
5054
|
resetIdleTimer();
|
|
5059
5055
|
exitCode = await exitPromise;
|
|
5060
5056
|
if (idleTimer) clearTimeout(idleTimer);
|
|
5061
|
-
state.stopHeartbeat?.();
|
|
5062
5057
|
} else {
|
|
5063
5058
|
const resultPromise = new Promise((resolve2) => {
|
|
5064
5059
|
state.onResultReceived = () => resolve2("result_received");
|
|
@@ -5181,7 +5176,6 @@ function parseClaudeStructuredLine(line, context, state) {
|
|
|
5181
5176
|
if (state.resultReceived && state.allowContinuation) {
|
|
5182
5177
|
console.info("[claude_cli] Continuation turn detected \u2014 restarting presenter");
|
|
5183
5178
|
state.resultReceived = false;
|
|
5184
|
-
state.stopHeartbeat?.();
|
|
5185
5179
|
void presenter.onStart(context.config);
|
|
5186
5180
|
}
|
|
5187
5181
|
state.onNewOutput?.();
|
|
@@ -5299,11 +5293,11 @@ function parseClaudeStructuredLine(line, context, state) {
|
|
|
5299
5293
|
if (state.allowContinuation) {
|
|
5300
5294
|
const continuationResult = {
|
|
5301
5295
|
success: !state.error,
|
|
5302
|
-
summary: state.summary || "",
|
|
5296
|
+
summary: state.summary || state.error || "",
|
|
5303
5297
|
filesModified: [],
|
|
5304
5298
|
planFilesCreated: [],
|
|
5305
5299
|
iterations: Math.max(state.iterations, 1),
|
|
5306
|
-
error: state.error,
|
|
5300
|
+
error: state.error ? classifyCliError(state.error, 0) : void 0,
|
|
5307
5301
|
providerSessionId: state.runtimeSessionId,
|
|
5308
5302
|
runtimeSessionId: state.runtimeSessionId,
|
|
5309
5303
|
backendKind: context.config.backendKind,
|
|
@@ -5312,7 +5306,6 @@ function parseClaudeStructuredLine(line, context, state) {
|
|
|
5312
5306
|
};
|
|
5313
5307
|
void presenter.onComplete(continuationResult);
|
|
5314
5308
|
state.onNewOutput?.();
|
|
5315
|
-
state.startHeartbeat?.();
|
|
5316
5309
|
console.info("[claude_cli] Result received in continuation mode \u2014 keeping stdin open for background work");
|
|
5317
5310
|
} else {
|
|
5318
5311
|
state.onResultReceived?.();
|
|
@@ -5490,13 +5483,19 @@ function parseCodexStructuredLine(line, context, state) {
|
|
|
5490
5483
|
}
|
|
5491
5484
|
case "error": {
|
|
5492
5485
|
const message = extractCodexErrorMessage(parsed.message) || extractCodexErrorMessage(parsed.error) || typeof parsed.detail === "string" && parsed.detail.trim() || "";
|
|
5493
|
-
if (message)
|
|
5486
|
+
if (message) {
|
|
5487
|
+
void presenter.onError(message);
|
|
5488
|
+
state.error = message;
|
|
5489
|
+
}
|
|
5494
5490
|
break;
|
|
5495
5491
|
}
|
|
5496
5492
|
case "turn.failed": {
|
|
5497
5493
|
const error = typeof parsed.error === "object" && parsed.error !== null ? parsed.error : {};
|
|
5498
5494
|
const message = extractCodexErrorMessage(error.message) || extractCodexErrorMessage(error.detail) || typeof parsed.message === "string" && parsed.message.trim() || "";
|
|
5499
|
-
if (message)
|
|
5495
|
+
if (message) {
|
|
5496
|
+
void presenter.onError(message);
|
|
5497
|
+
state.error = message;
|
|
5498
|
+
}
|
|
5500
5499
|
break;
|
|
5501
5500
|
}
|
|
5502
5501
|
default:
|
|
@@ -5611,6 +5610,7 @@ function parseCursorStructuredLine(line, context, state) {
|
|
|
5611
5610
|
if (resultText.trim().length > 0) state.summary = resultText;
|
|
5612
5611
|
if ((parsed.is_error === true || subtype === "error") && !state.error) {
|
|
5613
5612
|
state.error = resultText.trim() || "Cursor Agent run failed";
|
|
5613
|
+
void presenter.onError(state.error);
|
|
5614
5614
|
}
|
|
5615
5615
|
break;
|
|
5616
5616
|
}
|
|
@@ -5675,8 +5675,12 @@ function parseGeminiStructuredLine(line, context, state) {
|
|
|
5675
5675
|
const message = typeof parsed.message === "string" && parsed.message.trim() || errObj && typeof errObj.message === "string" && errObj.message.trim() || typeof parsed.error === "string" && parsed.error.trim() || typeof parsed.error_message === "string" && parsed.error_message.trim() || "";
|
|
5676
5676
|
const severity = typeof parsed.severity === "string" ? parsed.severity : "error";
|
|
5677
5677
|
if (message) {
|
|
5678
|
-
|
|
5679
|
-
|
|
5678
|
+
if (severity === "error") {
|
|
5679
|
+
void presenter.onError(message);
|
|
5680
|
+
state.error = message;
|
|
5681
|
+
} else {
|
|
5682
|
+
void presenter.onLog(`[gemini_cli/${severity}] ${message}`);
|
|
5683
|
+
}
|
|
5680
5684
|
}
|
|
5681
5685
|
break;
|
|
5682
5686
|
}
|
|
@@ -5794,6 +5798,8 @@ function createClaudeCliBackend(command = "claude", defaultArgs = []) {
|
|
|
5794
5798
|
args.push("--resume", resumeId);
|
|
5795
5799
|
console.info("[claude_cli] Resuming session", { resumeId });
|
|
5796
5800
|
}
|
|
5801
|
+
args.push("--chrome");
|
|
5802
|
+
console.info("[claude_cli] Chrome flag added \u2014 final args:", args.join(" "));
|
|
5797
5803
|
args.push(...defaultArgs);
|
|
5798
5804
|
return createGenericCliBackend({
|
|
5799
5805
|
kind: "claude_cli",
|
|
@@ -6060,9 +6066,14 @@ function parseOpencodeStructuredLine(line, context, state) {
|
|
|
6060
6066
|
case "session.error":
|
|
6061
6067
|
case "error": {
|
|
6062
6068
|
const errObj = typeof parsed.error === "object" && parsed.error !== null ? parsed.error : null;
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6069
|
+
if (!state.error) {
|
|
6070
|
+
console.error("[opencode] error event (raw):", JSON.stringify(parsed).slice(0, 500));
|
|
6071
|
+
}
|
|
6072
|
+
const rawMessage = typeof parsed.message === "string" && parsed.message.trim() || part && typeof part.message === "string" && part.message.trim() || typeof parsed.error === "string" && parsed.error.trim() || errObj && typeof errObj.message === "string" && errObj.message.trim() || part && typeof part.error === "string" && part.error.trim() || // Also try data.message — some opencode versions nest the message here
|
|
6073
|
+
(typeof parsed.data?.message === "string" ? parsed.data.message.trim() : "") || "";
|
|
6074
|
+
const message = rawMessage || "OpenCode encountered an error. Check your provider and model settings.";
|
|
6075
|
+
if (!state.error) {
|
|
6076
|
+
void presenter.onError(message);
|
|
6066
6077
|
state.error = message;
|
|
6067
6078
|
}
|
|
6068
6079
|
const pid = state.process?.pid;
|
|
@@ -6299,7 +6310,7 @@ Prefer relative paths and keep your work scoped to this project.`
|
|
|
6299
6310
|
}
|
|
6300
6311
|
let runtimeConfig = this.buildRuntimeConfig(config, safeProjectPath);
|
|
6301
6312
|
const cwd = runtimeConfig.worktreePath || safeProjectPath || runtimeConfig.cwd || defaultCwd;
|
|
6302
|
-
const env = this.buildCliEnvironment();
|
|
6313
|
+
const env = await this.buildCliEnvironment();
|
|
6303
6314
|
const promptText = this.buildPromptText(runtimeConfig);
|
|
6304
6315
|
const runtimeCommand = runtimeConfig.runtimeCommand || this.runtime.runtimeCommand;
|
|
6305
6316
|
const runtimeArgs = runtimeConfig.runtimeArgs || this.runtime.runtimeArgs || [];
|
|
@@ -6477,13 +6488,18 @@ var CoreAgent = class extends BaseMachineAgent {
|
|
|
6477
6488
|
});
|
|
6478
6489
|
};
|
|
6479
6490
|
}
|
|
6480
|
-
buildCliEnvironment() {
|
|
6491
|
+
async buildCliEnvironment() {
|
|
6481
6492
|
const loginEnv = process.env;
|
|
6482
6493
|
const env = {};
|
|
6483
6494
|
for (const [key, value2] of Object.entries(loginEnv)) {
|
|
6484
6495
|
if (value2 !== void 0) env[key] = value2;
|
|
6485
6496
|
}
|
|
6486
|
-
|
|
6497
|
+
const home = env.HOME ?? "/home/user";
|
|
6498
|
+
const extraPaths = [`${home}/.local/node/bin`, `${home}/.local/bin`];
|
|
6499
|
+
const basePath = env.PATH ?? "";
|
|
6500
|
+
const existingSegments = new Set(basePath.split(":").filter(Boolean));
|
|
6501
|
+
const missing = extraPaths.filter((p) => !existingSegments.has(p));
|
|
6502
|
+
env.PATH = missing.length > 0 ? `${missing.join(":")}:${basePath}` : basePath;
|
|
6487
6503
|
return env;
|
|
6488
6504
|
}
|
|
6489
6505
|
buildExtraSystemPromptParts(_config) {
|
|
@@ -6597,10 +6613,10 @@ var WebPresenter = class {
|
|
|
6597
6613
|
}
|
|
6598
6614
|
};
|
|
6599
6615
|
|
|
6600
|
-
// ../../node_modules
|
|
6616
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.js
|
|
6601
6617
|
var XMLHttpRequestModule = __toESM(require_XMLHttpRequest(), 1);
|
|
6602
6618
|
|
|
6603
|
-
// ../../node_modules
|
|
6619
|
+
// ../../node_modules/engine.io-parser/build/esm/commons.js
|
|
6604
6620
|
var PACKET_TYPES = /* @__PURE__ */ Object.create(null);
|
|
6605
6621
|
PACKET_TYPES["open"] = "0";
|
|
6606
6622
|
PACKET_TYPES["close"] = "1";
|
|
@@ -6615,7 +6631,7 @@ Object.keys(PACKET_TYPES).forEach((key) => {
|
|
|
6615
6631
|
});
|
|
6616
6632
|
var ERROR_PACKET = { type: "error", data: "parser error" };
|
|
6617
6633
|
|
|
6618
|
-
// ../../node_modules
|
|
6634
|
+
// ../../node_modules/engine.io-parser/build/esm/encodePacket.js
|
|
6619
6635
|
var encodePacket = ({ type, data }, supportsBinary, callback) => {
|
|
6620
6636
|
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {
|
|
6621
6637
|
return callback(supportsBinary ? data : "b" + toBuffer(data, true).toString("base64"));
|
|
@@ -6644,7 +6660,7 @@ function encodePacketToBinary(packet, callback) {
|
|
|
6644
6660
|
});
|
|
6645
6661
|
}
|
|
6646
6662
|
|
|
6647
|
-
// ../../node_modules
|
|
6663
|
+
// ../../node_modules/engine.io-parser/build/esm/decodePacket.js
|
|
6648
6664
|
var decodePacket = (encodedPacket, binaryType) => {
|
|
6649
6665
|
if (typeof encodedPacket !== "string") {
|
|
6650
6666
|
return {
|
|
@@ -6690,7 +6706,7 @@ var mapBinary = (data, binaryType) => {
|
|
|
6690
6706
|
}
|
|
6691
6707
|
};
|
|
6692
6708
|
|
|
6693
|
-
// ../../node_modules
|
|
6709
|
+
// ../../node_modules/engine.io-parser/build/esm/index.js
|
|
6694
6710
|
var SEPARATOR = String.fromCharCode(30);
|
|
6695
6711
|
var encodePayload = (packets, callback) => {
|
|
6696
6712
|
const length = packets.length;
|
|
@@ -6832,7 +6848,7 @@ function createPacketDecoderStream(maxPayload, binaryType) {
|
|
|
6832
6848
|
}
|
|
6833
6849
|
var protocol = 4;
|
|
6834
6850
|
|
|
6835
|
-
// ../../node_modules
|
|
6851
|
+
// ../../node_modules/@socket.io/component-emitter/lib/esm/index.js
|
|
6836
6852
|
function Emitter(obj) {
|
|
6837
6853
|
if (obj) return mixin(obj);
|
|
6838
6854
|
}
|
|
@@ -6904,7 +6920,7 @@ Emitter.prototype.hasListeners = function(event) {
|
|
|
6904
6920
|
return !!this.listeners(event).length;
|
|
6905
6921
|
};
|
|
6906
6922
|
|
|
6907
|
-
// ../../node_modules
|
|
6923
|
+
// ../../node_modules/engine.io-client/build/esm-debug/globals.node.js
|
|
6908
6924
|
var nextTick = process.nextTick;
|
|
6909
6925
|
var globalThisShim = global;
|
|
6910
6926
|
var defaultBinaryType = "nodebuffer";
|
|
@@ -6992,7 +7008,7 @@ var CookieJar = class {
|
|
|
6992
7008
|
}
|
|
6993
7009
|
};
|
|
6994
7010
|
|
|
6995
|
-
// ../../node_modules
|
|
7011
|
+
// ../../node_modules/engine.io-client/build/esm-debug/util.js
|
|
6996
7012
|
function pick(obj, ...attr) {
|
|
6997
7013
|
return attr.reduce((acc, k) => {
|
|
6998
7014
|
if (obj.hasOwnProperty(k)) {
|
|
@@ -7040,7 +7056,7 @@ function randomString() {
|
|
|
7040
7056
|
return Date.now().toString(36).substring(3) + Math.random().toString(36).substring(2, 5);
|
|
7041
7057
|
}
|
|
7042
7058
|
|
|
7043
|
-
// ../../node_modules
|
|
7059
|
+
// ../../node_modules/engine.io-client/build/esm-debug/contrib/parseqs.js
|
|
7044
7060
|
function encode(obj) {
|
|
7045
7061
|
let str = "";
|
|
7046
7062
|
for (let i in obj) {
|
|
@@ -7062,7 +7078,7 @@ function decode(qs) {
|
|
|
7062
7078
|
return qry;
|
|
7063
7079
|
}
|
|
7064
7080
|
|
|
7065
|
-
// ../../node_modules
|
|
7081
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transport.js
|
|
7066
7082
|
var import_debug = __toESM(require_src(), 1);
|
|
7067
7083
|
var debug = (0, import_debug.default)("engine.io-client:transport");
|
|
7068
7084
|
var TransportError = class extends Error {
|
|
@@ -7196,7 +7212,7 @@ var Transport = class extends Emitter {
|
|
|
7196
7212
|
}
|
|
7197
7213
|
};
|
|
7198
7214
|
|
|
7199
|
-
// ../../node_modules
|
|
7215
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/polling.js
|
|
7200
7216
|
var import_debug2 = __toESM(require_src(), 1);
|
|
7201
7217
|
var debug2 = (0, import_debug2.default)("engine.io-client:polling");
|
|
7202
7218
|
var Polling = class extends Transport {
|
|
@@ -7341,7 +7357,7 @@ var Polling = class extends Transport {
|
|
|
7341
7357
|
}
|
|
7342
7358
|
};
|
|
7343
7359
|
|
|
7344
|
-
// ../../node_modules
|
|
7360
|
+
// ../../node_modules/engine.io-client/build/esm-debug/contrib/has-cors.js
|
|
7345
7361
|
var value = false;
|
|
7346
7362
|
try {
|
|
7347
7363
|
value = typeof XMLHttpRequest !== "undefined" && "withCredentials" in new XMLHttpRequest();
|
|
@@ -7349,7 +7365,7 @@ try {
|
|
|
7349
7365
|
}
|
|
7350
7366
|
var hasCORS = value;
|
|
7351
7367
|
|
|
7352
|
-
// ../../node_modules
|
|
7368
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.js
|
|
7353
7369
|
var import_debug3 = __toESM(require_src(), 1);
|
|
7354
7370
|
var debug3 = (0, import_debug3.default)("engine.io-client:polling");
|
|
7355
7371
|
function empty() {
|
|
@@ -7584,7 +7600,7 @@ function newRequest(opts) {
|
|
|
7584
7600
|
}
|
|
7585
7601
|
}
|
|
7586
7602
|
|
|
7587
|
-
// ../../node_modules
|
|
7603
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/polling-xhr.node.js
|
|
7588
7604
|
var XMLHttpRequest2 = XMLHttpRequestModule.default || XMLHttpRequestModule;
|
|
7589
7605
|
var XHR = class extends BaseXHR {
|
|
7590
7606
|
request(opts = {}) {
|
|
@@ -7594,14 +7610,14 @@ var XHR = class extends BaseXHR {
|
|
|
7594
7610
|
}
|
|
7595
7611
|
};
|
|
7596
7612
|
|
|
7597
|
-
// ../../node_modules
|
|
7613
|
+
// ../../node_modules/engine.io-client/node_modules/ws/wrapper.mjs
|
|
7598
7614
|
var import_stream = __toESM(require_stream(), 1);
|
|
7599
7615
|
var import_receiver = __toESM(require_receiver(), 1);
|
|
7600
7616
|
var import_sender = __toESM(require_sender(), 1);
|
|
7601
7617
|
var import_websocket = __toESM(require_websocket(), 1);
|
|
7602
7618
|
var import_websocket_server = __toESM(require_websocket_server(), 1);
|
|
7603
7619
|
|
|
7604
|
-
// ../../node_modules
|
|
7620
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/websocket.js
|
|
7605
7621
|
var import_debug4 = __toESM(require_src(), 1);
|
|
7606
7622
|
var debug4 = (0, import_debug4.default)("engine.io-client:websocket");
|
|
7607
7623
|
var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative";
|
|
@@ -7690,7 +7706,7 @@ var BaseWS = class extends Transport {
|
|
|
7690
7706
|
};
|
|
7691
7707
|
var WebSocketCtor = globalThisShim.WebSocket || globalThisShim.MozWebSocket;
|
|
7692
7708
|
|
|
7693
|
-
// ../../node_modules
|
|
7709
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/websocket.node.js
|
|
7694
7710
|
var WS = class extends BaseWS {
|
|
7695
7711
|
createSocket(uri, protocols, opts) {
|
|
7696
7712
|
var _a;
|
|
@@ -7721,7 +7737,7 @@ var WS = class extends BaseWS {
|
|
|
7721
7737
|
}
|
|
7722
7738
|
};
|
|
7723
7739
|
|
|
7724
|
-
// ../../node_modules
|
|
7740
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/webtransport.js
|
|
7725
7741
|
var import_debug5 = __toESM(require_src(), 1);
|
|
7726
7742
|
var debug5 = (0, import_debug5.default)("engine.io-client:webtransport");
|
|
7727
7743
|
var WT = class extends Transport {
|
|
@@ -7791,14 +7807,14 @@ var WT = class extends Transport {
|
|
|
7791
7807
|
}
|
|
7792
7808
|
};
|
|
7793
7809
|
|
|
7794
|
-
// ../../node_modules
|
|
7810
|
+
// ../../node_modules/engine.io-client/build/esm-debug/transports/index.js
|
|
7795
7811
|
var transports = {
|
|
7796
7812
|
websocket: WS,
|
|
7797
7813
|
webtransport: WT,
|
|
7798
7814
|
polling: XHR
|
|
7799
7815
|
};
|
|
7800
7816
|
|
|
7801
|
-
// ../../node_modules
|
|
7817
|
+
// ../../node_modules/engine.io-client/build/esm-debug/contrib/parseuri.js
|
|
7802
7818
|
var re = /^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
|
|
7803
7819
|
var parts = [
|
|
7804
7820
|
"source",
|
|
@@ -7858,7 +7874,7 @@ function queryKey(uri, query) {
|
|
|
7858
7874
|
return data;
|
|
7859
7875
|
}
|
|
7860
7876
|
|
|
7861
|
-
// ../../node_modules
|
|
7877
|
+
// ../../node_modules/engine.io-client/build/esm-debug/socket.js
|
|
7862
7878
|
var import_debug6 = __toESM(require_src(), 1);
|
|
7863
7879
|
var debug6 = (0, import_debug6.default)("engine.io-client:socket");
|
|
7864
7880
|
var withEventListeners = typeof addEventListener === "function" && typeof removeEventListener === "function";
|
|
@@ -8454,10 +8470,10 @@ var Socket = class extends SocketWithUpgrade {
|
|
|
8454
8470
|
}
|
|
8455
8471
|
};
|
|
8456
8472
|
|
|
8457
|
-
// ../../node_modules
|
|
8473
|
+
// ../../node_modules/engine.io-client/build/esm-debug/index.js
|
|
8458
8474
|
var protocol2 = Socket.protocol;
|
|
8459
8475
|
|
|
8460
|
-
// ../../node_modules
|
|
8476
|
+
// ../../node_modules/socket.io-client/build/esm-debug/url.js
|
|
8461
8477
|
var import_debug7 = __toESM(require_src(), 1);
|
|
8462
8478
|
var debug7 = (0, import_debug7.default)("socket.io-client:url");
|
|
8463
8479
|
function url(uri, path = "", loc) {
|
|
@@ -8499,7 +8515,7 @@ function url(uri, path = "", loc) {
|
|
|
8499
8515
|
return obj;
|
|
8500
8516
|
}
|
|
8501
8517
|
|
|
8502
|
-
// ../../node_modules
|
|
8518
|
+
// ../../node_modules/socket.io-parser/build/esm-debug/index.js
|
|
8503
8519
|
var esm_debug_exports = {};
|
|
8504
8520
|
__export(esm_debug_exports, {
|
|
8505
8521
|
Decoder: () => Decoder,
|
|
@@ -8509,7 +8525,7 @@ __export(esm_debug_exports, {
|
|
|
8509
8525
|
protocol: () => protocol3
|
|
8510
8526
|
});
|
|
8511
8527
|
|
|
8512
|
-
// ../../node_modules
|
|
8528
|
+
// ../../node_modules/socket.io-parser/build/esm-debug/is-binary.js
|
|
8513
8529
|
var withNativeArrayBuffer = typeof ArrayBuffer === "function";
|
|
8514
8530
|
var isView = (obj) => {
|
|
8515
8531
|
return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;
|
|
@@ -8546,7 +8562,7 @@ function hasBinary(obj, toJSON) {
|
|
|
8546
8562
|
return false;
|
|
8547
8563
|
}
|
|
8548
8564
|
|
|
8549
|
-
// ../../node_modules
|
|
8565
|
+
// ../../node_modules/socket.io-parser/build/esm-debug/binary.js
|
|
8550
8566
|
function deconstructPacket(packet) {
|
|
8551
8567
|
const buffers = [];
|
|
8552
8568
|
const packetData = packet.data;
|
|
@@ -8608,7 +8624,7 @@ function _reconstructPacket(data, buffers) {
|
|
|
8608
8624
|
return data;
|
|
8609
8625
|
}
|
|
8610
8626
|
|
|
8611
|
-
// ../../node_modules
|
|
8627
|
+
// ../../node_modules/socket.io-parser/build/esm-debug/index.js
|
|
8612
8628
|
var import_debug8 = __toESM(require_src(), 1);
|
|
8613
8629
|
var debug8 = (0, import_debug8.default)("socket.io-parser");
|
|
8614
8630
|
var RESERVED_EVENTS = [
|
|
@@ -8902,7 +8918,7 @@ function isPacketValid(packet) {
|
|
|
8902
8918
|
return isNamespaceValid(packet.nsp) && isAckIdValid(packet.id) && isDataValid(packet.type, packet.data);
|
|
8903
8919
|
}
|
|
8904
8920
|
|
|
8905
|
-
// ../../node_modules
|
|
8921
|
+
// ../../node_modules/socket.io-client/build/esm-debug/on.js
|
|
8906
8922
|
function on(obj, ev, fn) {
|
|
8907
8923
|
obj.on(ev, fn);
|
|
8908
8924
|
return function subDestroy() {
|
|
@@ -8910,7 +8926,7 @@ function on(obj, ev, fn) {
|
|
|
8910
8926
|
};
|
|
8911
8927
|
}
|
|
8912
8928
|
|
|
8913
|
-
// ../../node_modules
|
|
8929
|
+
// ../../node_modules/socket.io-client/build/esm-debug/socket.js
|
|
8914
8930
|
var import_debug9 = __toESM(require_src(), 1);
|
|
8915
8931
|
var debug9 = (0, import_debug9.default)("socket.io-client:socket");
|
|
8916
8932
|
var RESERVED_EVENTS2 = Object.freeze({
|
|
@@ -9705,7 +9721,7 @@ var Socket2 = class extends Emitter {
|
|
|
9705
9721
|
}
|
|
9706
9722
|
};
|
|
9707
9723
|
|
|
9708
|
-
// ../../node_modules
|
|
9724
|
+
// ../../node_modules/socket.io-client/build/esm-debug/contrib/backo2.js
|
|
9709
9725
|
function Backoff(opts) {
|
|
9710
9726
|
opts = opts || {};
|
|
9711
9727
|
this.ms = opts.min || 100;
|
|
@@ -9736,7 +9752,7 @@ Backoff.prototype.setJitter = function(jitter) {
|
|
|
9736
9752
|
this.jitter = jitter;
|
|
9737
9753
|
};
|
|
9738
9754
|
|
|
9739
|
-
// ../../node_modules
|
|
9755
|
+
// ../../node_modules/socket.io-client/build/esm-debug/manager.js
|
|
9740
9756
|
var import_debug10 = __toESM(require_src(), 1);
|
|
9741
9757
|
var debug10 = (0, import_debug10.default)("socket.io-client:manager");
|
|
9742
9758
|
var Manager = class extends Emitter {
|
|
@@ -10105,7 +10121,7 @@ var Manager = class extends Emitter {
|
|
|
10105
10121
|
}
|
|
10106
10122
|
};
|
|
10107
10123
|
|
|
10108
|
-
// ../../node_modules
|
|
10124
|
+
// ../../node_modules/socket.io-client/build/esm-debug/index.js
|
|
10109
10125
|
var import_debug11 = __toESM(require_src(), 1);
|
|
10110
10126
|
var debug11 = (0, import_debug11.default)("socket.io-client");
|
|
10111
10127
|
var cache = {};
|
|
@@ -10226,7 +10242,7 @@ var WSClient = class {
|
|
|
10226
10242
|
};
|
|
10227
10243
|
|
|
10228
10244
|
// src/version.ts
|
|
10229
|
-
var AGENT_VERSION = "0.1.
|
|
10245
|
+
var AGENT_VERSION = "0.1.6";
|
|
10230
10246
|
|
|
10231
10247
|
// src/sandbox.ts
|
|
10232
10248
|
async function runSandbox(config) {
|