@aiden-ade/sandbox-agent 0.1.22 → 0.1.24
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 +2 -6
- package/dist/core-agent.d.ts.map +1 -1
- package/dist/core-agent.js +21 -140
- package/dist/core-agent.js.map +1 -1
- package/dist/index.cjs +194 -36
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -107
- package/dist/index.js.map +1 -1
- package/dist/sandbox.d.ts +0 -6
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +10 -40
- package/dist/sandbox.js.map +1 -1
- package/dist/updater.d.ts.map +1 -1
- package/dist/updater.js +4 -0
- package/dist/updater.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/web-presenter.d.ts +4 -7
- package/dist/web-presenter.d.ts.map +1 -1
- package/dist/web-presenter.js +4 -29
- package/dist/web-presenter.js.map +1 -1
- package/dist/ws-client.d.ts +0 -35
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +9 -32
- package/dist/ws-client.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/cli-executable.test.d.ts +0 -2
- package/dist/__tests__/cli-executable.test.d.ts.map +0 -1
- package/dist/__tests__/cli-executable.test.js +0 -83
- package/dist/__tests__/cli-executable.test.js.map +0 -1
- package/dist/__tests__/cli-help.test.d.ts +0 -2
- package/dist/__tests__/cli-help.test.d.ts.map +0 -1
- package/dist/__tests__/cli-help.test.js +0 -33
- package/dist/__tests__/cli-help.test.js.map +0 -1
- package/dist/__tests__/core-agent-workflow-context.test.d.ts +0 -2
- package/dist/__tests__/core-agent-workflow-context.test.d.ts.map +0 -1
- package/dist/__tests__/core-agent-workflow-context.test.js +0 -50
- package/dist/__tests__/core-agent-workflow-context.test.js.map +0 -1
- package/dist/__tests__/daemon-socket.integration.test.d.ts +0 -2
- package/dist/__tests__/daemon-socket.integration.test.d.ts.map +0 -1
- package/dist/__tests__/daemon-socket.integration.test.js +0 -156
- package/dist/__tests__/daemon-socket.integration.test.js.map +0 -1
- package/dist/__tests__/daemon.test.d.ts +0 -2
- package/dist/__tests__/daemon.test.d.ts.map +0 -1
- package/dist/__tests__/daemon.test.js +0 -1014
- package/dist/__tests__/daemon.test.js.map +0 -1
- package/dist/__tests__/generated-images.test.d.ts +0 -2
- package/dist/__tests__/generated-images.test.d.ts.map +0 -1
- package/dist/__tests__/generated-images.test.js +0 -50
- package/dist/__tests__/generated-images.test.js.map +0 -1
- package/dist/__tests__/sandbox-workflow-context.test.d.ts +0 -2
- package/dist/__tests__/sandbox-workflow-context.test.d.ts.map +0 -1
- package/dist/__tests__/sandbox-workflow-context.test.js +0 -66
- package/dist/__tests__/sandbox-workflow-context.test.js.map +0 -1
- package/dist/aiden-system-prompt.d.ts +0 -6
- package/dist/aiden-system-prompt.d.ts.map +0 -1
- package/dist/aiden-system-prompt.js +0 -6
- package/dist/aiden-system-prompt.js.map +0 -1
- package/dist/cli-executable.d.ts +0 -58
- package/dist/cli-executable.d.ts.map +0 -1
- package/dist/cli-executable.js +0 -301
- package/dist/cli-executable.js.map +0 -1
- package/dist/cli-help.d.ts +0 -7
- package/dist/cli-help.d.ts.map +0 -1
- package/dist/cli-help.js +0 -45
- package/dist/cli-help.js.map +0 -1
- package/dist/daemon.d.ts +0 -46
- package/dist/daemon.d.ts.map +0 -1
- package/dist/daemon.js +0 -876
- package/dist/daemon.js.map +0 -1
- package/dist/generated-images.d.ts +0 -4
- package/dist/generated-images.d.ts.map +0 -1
- package/dist/generated-images.js +0 -142
- package/dist/generated-images.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -4855,6 +4855,7 @@ function resolveCommand(args, env) {
|
|
|
4855
4855
|
}
|
|
4856
4856
|
|
|
4857
4857
|
// src/daemon.ts
|
|
4858
|
+
var import_node_child_process3 = require("child_process");
|
|
4858
4859
|
var import_node_crypto2 = require("crypto");
|
|
4859
4860
|
var import_node_fs4 = require("fs");
|
|
4860
4861
|
var import_node_http = __toESM(require("http"), 1);
|
|
@@ -7234,12 +7235,13 @@ var Encoder = class {
|
|
|
7234
7235
|
var Decoder = class _Decoder extends Emitter {
|
|
7235
7236
|
/**
|
|
7236
7237
|
* Decoder constructor
|
|
7237
|
-
*
|
|
7238
|
-
* @param {function} reviver - custom reviver to pass down to JSON.stringify
|
|
7239
7238
|
*/
|
|
7240
|
-
constructor(
|
|
7239
|
+
constructor(opts) {
|
|
7241
7240
|
super();
|
|
7242
|
-
this.
|
|
7241
|
+
this.opts = Object.assign({
|
|
7242
|
+
reviver: void 0,
|
|
7243
|
+
maxAttachments: 10
|
|
7244
|
+
}, typeof opts === "function" ? { reviver: opts } : opts);
|
|
7243
7245
|
}
|
|
7244
7246
|
/**
|
|
7245
7247
|
* Decodes an encoded packet string into packet JSON.
|
|
@@ -7299,7 +7301,13 @@ var Decoder = class _Decoder extends Emitter {
|
|
|
7299
7301
|
if (buf != Number(buf) || str.charAt(i) !== "-") {
|
|
7300
7302
|
throw new Error("Illegal attachments");
|
|
7301
7303
|
}
|
|
7302
|
-
|
|
7304
|
+
const n = Number(buf);
|
|
7305
|
+
if (!isInteger(n) || n < 0) {
|
|
7306
|
+
throw new Error("Illegal attachments");
|
|
7307
|
+
} else if (n > this.opts.maxAttachments) {
|
|
7308
|
+
throw new Error("too many attachments");
|
|
7309
|
+
}
|
|
7310
|
+
p.attachments = n;
|
|
7303
7311
|
}
|
|
7304
7312
|
if ("/" === str.charAt(i + 1)) {
|
|
7305
7313
|
const start = i + 1;
|
|
@@ -7341,7 +7349,7 @@ var Decoder = class _Decoder extends Emitter {
|
|
|
7341
7349
|
}
|
|
7342
7350
|
tryParse(str) {
|
|
7343
7351
|
try {
|
|
7344
|
-
return JSON.parse(str, this.reviver);
|
|
7352
|
+
return JSON.parse(str, this.opts.reviver);
|
|
7345
7353
|
} catch (e) {
|
|
7346
7354
|
return false;
|
|
7347
7355
|
}
|
|
@@ -9354,6 +9362,10 @@ Deliverables persist as Aiden artifacts and documents \u2014 not as chat. Plans,
|
|
|
9354
9362
|
- Own mistakes. Wrong ID, jumped too fast \u2014 say so and fix it.
|
|
9355
9363
|
- Think visually. Mermaid over paragraphs for architecture, flows, state, and schema.
|
|
9356
9364
|
|
|
9365
|
+
## Task Logging
|
|
9366
|
+
|
|
9367
|
+
For non-trivial tasks, log high-signal events as they happen: decisions, changed assumptions, validation results, known-good IDs, blockers, risks, and direction changes. Keep one current task-state summary updated with current state, known-good IDs, open risks, and next action. Do not log routine commands or file reads. Before stopping, ensure the timeline and current state are enough for a human to understand progress and for another agent to resume. If a prior decision is stale, write a newer event that supersedes it.
|
|
9368
|
+
|
|
9357
9369
|
The specific work you do \u2014 implementation, planning, review, coordination, verification \u2014 is determined by your agent role, described next.`;
|
|
9358
9370
|
var PLAN_MODE_PROMPT = [
|
|
9359
9371
|
"You are in Aiden plan mode.",
|
|
@@ -9524,22 +9536,6 @@ var STATUS_OPTIONS = [
|
|
|
9524
9536
|
dotClass: "text-amber-700 dark:text-amber-400",
|
|
9525
9537
|
headerBg: "bg-amber-400/15"
|
|
9526
9538
|
},
|
|
9527
|
-
{
|
|
9528
|
-
value: "running",
|
|
9529
|
-
label: "Running",
|
|
9530
|
-
color: CATEGORICAL_COLORS.indigo,
|
|
9531
|
-
group: "active",
|
|
9532
|
-
dotClass: "text-indigo-500 dark:text-indigo-400",
|
|
9533
|
-
headerBg: "bg-indigo-400/15"
|
|
9534
|
-
},
|
|
9535
|
-
{
|
|
9536
|
-
value: "waiting",
|
|
9537
|
-
label: "Waiting",
|
|
9538
|
-
color: CATEGORICAL_COLORS.orangeDeep,
|
|
9539
|
-
group: "active",
|
|
9540
|
-
dotClass: "text-orange-500/80 dark:text-orange-400/80",
|
|
9541
|
-
headerBg: "bg-orange-400/15"
|
|
9542
|
-
},
|
|
9543
9539
|
{
|
|
9544
9540
|
value: "in_review",
|
|
9545
9541
|
label: "In Review",
|
|
@@ -9672,6 +9668,9 @@ function isLikelyProviderAuthError(stderr) {
|
|
|
9672
9668
|
}
|
|
9673
9669
|
function normalizeCodexCliErrorMessage(message) {
|
|
9674
9670
|
const lower = message.toLowerCase();
|
|
9671
|
+
if (lower.includes("reconnecting") && lower.includes("request timed out")) {
|
|
9672
|
+
return "Codex connection to OpenAI timed out while waiting for the turn to continue. Retry the message; if it repeats, check network/API latency or reduce slow MCP/tool calls in the turn.";
|
|
9673
|
+
}
|
|
9675
9674
|
if (lower.includes("access token could not be refreshed") || lower.includes("refresh_token_invalidated") || lower.includes("refresh token has been invalidated")) {
|
|
9676
9675
|
return "Codex CLI connection expired. Reconnect OpenAI Codex CLI in Cloud settings, then restart or recreate the machine.";
|
|
9677
9676
|
}
|
|
@@ -9708,7 +9707,7 @@ function classifyCliError(stderr, exitCode) {
|
|
|
9708
9707
|
}
|
|
9709
9708
|
function isTransientError(errorMessage) {
|
|
9710
9709
|
const lower = errorMessage.toLowerCase();
|
|
9711
|
-
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");
|
|
9710
|
+
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") || lower.includes("timeout") || lower.includes("timed out");
|
|
9712
9711
|
}
|
|
9713
9712
|
function planCliSpawn(command, args, env = process.env) {
|
|
9714
9713
|
const isWindows = process.platform === "win32";
|
|
@@ -11141,8 +11140,8 @@ function parseDroidStructuredLine(line, context, state) {
|
|
|
11141
11140
|
break;
|
|
11142
11141
|
}
|
|
11143
11142
|
}
|
|
11144
|
-
function droidExecPermissionArgs(
|
|
11145
|
-
if (
|
|
11143
|
+
function droidExecPermissionArgs(config) {
|
|
11144
|
+
if (shouldUseReadOnlyRuntimePermissions(config)) return [];
|
|
11146
11145
|
return ["--auto", "high"];
|
|
11147
11146
|
}
|
|
11148
11147
|
function createDroidCliBackend(command = "droid", defaultArgs = []) {
|
|
@@ -11165,7 +11164,7 @@ function createDroidCliBackend(command = "droid", defaultArgs = []) {
|
|
|
11165
11164
|
"exec",
|
|
11166
11165
|
"--output-format",
|
|
11167
11166
|
"stream-json",
|
|
11168
|
-
...droidExecPermissionArgs(ctx.config
|
|
11167
|
+
...droidExecPermissionArgs(ctx.config),
|
|
11169
11168
|
...defaultArgs
|
|
11170
11169
|
];
|
|
11171
11170
|
const resumeId = ctx.config.runtimeSessionId?.trim() || ctx.config.providerSessionId?.trim();
|
|
@@ -11309,7 +11308,7 @@ function createGeminiCliBackend(command = "gemini", defaultArgs = []) {
|
|
|
11309
11308
|
buildArgs: (ctx) => {
|
|
11310
11309
|
const args = ["-p", "", "--output-format", "stream-json"];
|
|
11311
11310
|
const resumeId = ctx.config.runtimeSessionId?.trim() || ctx.config.providerSessionId?.trim();
|
|
11312
|
-
const approvalMode = ctx.config
|
|
11311
|
+
const approvalMode = shouldUseReadOnlyRuntimePermissions(ctx.config) ? "plan" : "yolo";
|
|
11313
11312
|
args.push("--approval-mode", approvalMode);
|
|
11314
11313
|
if (resumeId) args.push("--resume", resumeId);
|
|
11315
11314
|
if (ctx.config.selectedModel?.trim())
|
|
@@ -11438,6 +11437,21 @@ function createKimiCliBackend(command = "kimi-cli", defaultArgs = []) {
|
|
|
11438
11437
|
}
|
|
11439
11438
|
};
|
|
11440
11439
|
}
|
|
11440
|
+
function getRecord(value2) {
|
|
11441
|
+
return typeof value2 === "object" && value2 !== null ? value2 : null;
|
|
11442
|
+
}
|
|
11443
|
+
function getString(value2) {
|
|
11444
|
+
return typeof value2 === "string" ? value2.trim() : "";
|
|
11445
|
+
}
|
|
11446
|
+
function getOpenCodeToolError(parsed, part) {
|
|
11447
|
+
const state = getRecord(part?.state) ?? getRecord(parsed.state);
|
|
11448
|
+
const error = getRecord(part?.error) ?? getRecord(parsed.error) ?? getRecord(state?.error);
|
|
11449
|
+
return getString(part?.error) || getString(state?.error) || getString(error?.message) || getString(parsed.error);
|
|
11450
|
+
}
|
|
11451
|
+
function isOpenCodeToolError(parsed, part) {
|
|
11452
|
+
const state = getRecord(part?.state) ?? getRecord(parsed.state);
|
|
11453
|
+
return part?.is_error === true || part?.isError === true || state?.status === "error" || Boolean(getOpenCodeToolError(parsed, part));
|
|
11454
|
+
}
|
|
11441
11455
|
function parseOpencodeStructuredLine(line, context, state) {
|
|
11442
11456
|
const presenter = context.presenter;
|
|
11443
11457
|
let parsed = null;
|
|
@@ -11468,16 +11482,44 @@ function parseOpencodeStructuredLine(line, context, state) {
|
|
|
11468
11482
|
}
|
|
11469
11483
|
case "tool_use":
|
|
11470
11484
|
case "tool.execute": {
|
|
11471
|
-
const toolName = part && typeof part.name === "string" ? part.name : "
|
|
11485
|
+
const toolName = getString(parsed.tool) || (part && typeof part.name === "string" ? part.name : "") || getString(parsed.name) || (part && typeof part.tool === "string" ? part.tool : "") || "Tool";
|
|
11472
11486
|
const toolId = part && typeof part.id === "string" ? part.id : `opencode-tool-${Date.now()}`;
|
|
11473
11487
|
void presenter.onToolUse(toolName, part ?? {}, toolId);
|
|
11474
11488
|
break;
|
|
11475
11489
|
}
|
|
11490
|
+
case "tool": {
|
|
11491
|
+
const stateRecord = getRecord(parsed.state);
|
|
11492
|
+
const toolName = getString(parsed.tool) || (part && typeof part.name === "string" ? part.name : "") || getString(parsed.name) || (part && typeof part.tool === "string" ? part.tool : "") || "Tool";
|
|
11493
|
+
const toolId = getString(parsed.id) || getString(parsed.callID) || `opencode-tool-${Date.now()}`;
|
|
11494
|
+
state.opencodeToolUseIds ??= /* @__PURE__ */ new Set();
|
|
11495
|
+
if (!state.opencodeToolUseIds.has(toolId)) {
|
|
11496
|
+
state.opencodeToolUseIds.add(toolId);
|
|
11497
|
+
void presenter.onToolUse(toolName, stateRecord?.input ?? part ?? parsed, toolId);
|
|
11498
|
+
}
|
|
11499
|
+
const status = getString(stateRecord?.status);
|
|
11500
|
+
if (status === "completed" || status === "error") {
|
|
11501
|
+
const toolError = isOpenCodeToolError(parsed, part);
|
|
11502
|
+
const output = getString(stateRecord?.output) || getString(stateRecord?.error) || JSON.stringify(stateRecord ?? part ?? parsed);
|
|
11503
|
+
void presenter.onToolResult?.(toolId, output, toolError);
|
|
11504
|
+
if (toolError && !state.error) {
|
|
11505
|
+
const message = getOpenCodeToolError(parsed, part) || "OpenCode tool call failed.";
|
|
11506
|
+
state.error = message;
|
|
11507
|
+
void presenter.onError(message);
|
|
11508
|
+
}
|
|
11509
|
+
}
|
|
11510
|
+
break;
|
|
11511
|
+
}
|
|
11476
11512
|
case "tool_result":
|
|
11477
11513
|
case "tool.result": {
|
|
11478
11514
|
const toolId = part && typeof part.id === "string" ? part.id : `opencode-tool-${Date.now()}`;
|
|
11479
11515
|
const output = part && typeof part.output === "string" ? part.output : JSON.stringify(part);
|
|
11480
|
-
|
|
11516
|
+
const toolError = isOpenCodeToolError(parsed, part);
|
|
11517
|
+
void presenter.onToolResult?.(toolId, output, toolError);
|
|
11518
|
+
if (toolError && !state.error) {
|
|
11519
|
+
const message = getOpenCodeToolError(parsed, part) || "OpenCode tool call failed.";
|
|
11520
|
+
state.error = message;
|
|
11521
|
+
void presenter.onError(message);
|
|
11522
|
+
}
|
|
11481
11523
|
break;
|
|
11482
11524
|
}
|
|
11483
11525
|
case "step_finish": {
|
|
@@ -11533,6 +11575,36 @@ function parseOpencodeStructuredLine(line, context, state) {
|
|
|
11533
11575
|
break;
|
|
11534
11576
|
}
|
|
11535
11577
|
}
|
|
11578
|
+
var AUTONOMOUS_OPENCODE_CONFIG_CONTENT = JSON.stringify({
|
|
11579
|
+
$schema: "https://opencode.ai/config.json",
|
|
11580
|
+
permission: "allow"
|
|
11581
|
+
});
|
|
11582
|
+
function buildAutonomousOpenCodeConfigContent(existing) {
|
|
11583
|
+
if (!existing?.trim()) return AUTONOMOUS_OPENCODE_CONFIG_CONTENT;
|
|
11584
|
+
try {
|
|
11585
|
+
const parsed = JSON.parse(existing);
|
|
11586
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
11587
|
+
return JSON.stringify({
|
|
11588
|
+
...parsed,
|
|
11589
|
+
permission: "allow"
|
|
11590
|
+
});
|
|
11591
|
+
}
|
|
11592
|
+
} catch {
|
|
11593
|
+
}
|
|
11594
|
+
return AUTONOMOUS_OPENCODE_CONFIG_CONTENT;
|
|
11595
|
+
}
|
|
11596
|
+
function withAutonomousOpenCodePermissions(context) {
|
|
11597
|
+
if (shouldUseReadOnlyRuntimePermissions(context.config)) return context;
|
|
11598
|
+
return {
|
|
11599
|
+
...context,
|
|
11600
|
+
env: {
|
|
11601
|
+
...context.env,
|
|
11602
|
+
OPENCODE_CONFIG_CONTENT: buildAutonomousOpenCodeConfigContent(
|
|
11603
|
+
context.env.OPENCODE_CONFIG_CONTENT
|
|
11604
|
+
)
|
|
11605
|
+
}
|
|
11606
|
+
};
|
|
11607
|
+
}
|
|
11536
11608
|
function createOpencodeCliBackend(command = "opencode", defaultArgs = []) {
|
|
11537
11609
|
return {
|
|
11538
11610
|
kind: "opencode_cli",
|
|
@@ -11543,6 +11615,7 @@ function createOpencodeCliBackend(command = "opencode", defaultArgs = []) {
|
|
|
11543
11615
|
context.cwd
|
|
11544
11616
|
);
|
|
11545
11617
|
try {
|
|
11618
|
+
const runContext = withAutonomousOpenCodePermissions(context);
|
|
11546
11619
|
return await createGenericCliBackend({
|
|
11547
11620
|
kind: "opencode_cli",
|
|
11548
11621
|
supportTier: "structured",
|
|
@@ -11550,6 +11623,9 @@ function createOpencodeCliBackend(command = "opencode", defaultArgs = []) {
|
|
|
11550
11623
|
args: [],
|
|
11551
11624
|
buildArgs: (ctx, prompt) => {
|
|
11552
11625
|
const args = ["run", "--format", "json"];
|
|
11626
|
+
if (!shouldUseReadOnlyRuntimePermissions(ctx.config)) {
|
|
11627
|
+
args.push("--dangerously-skip-permissions");
|
|
11628
|
+
}
|
|
11553
11629
|
const resumeId = ctx.config.runtimeSessionId?.trim() || ctx.config.providerSessionId?.trim();
|
|
11554
11630
|
if (resumeId) args.push("--session", resumeId);
|
|
11555
11631
|
const model = ctx.config.selectedModel?.trim();
|
|
@@ -11565,7 +11641,7 @@ function createOpencodeCliBackend(command = "opencode", defaultArgs = []) {
|
|
|
11565
11641
|
return ctx.config.mode === "plan" ? buildPlanModePrefix(base) : base;
|
|
11566
11642
|
},
|
|
11567
11643
|
parseStructuredLine: parseOpencodeStructuredLine
|
|
11568
|
-
}).run(
|
|
11644
|
+
}).run(runContext);
|
|
11569
11645
|
} finally {
|
|
11570
11646
|
cleanup();
|
|
11571
11647
|
}
|
|
@@ -11744,6 +11820,7 @@ function expandSkillInvocationPrompt(text, cwd) {
|
|
|
11744
11820
|
}
|
|
11745
11821
|
var DEFAULT_MODEL = "claude-sonnet-4-6";
|
|
11746
11822
|
var DROID_DEFAULT_MODEL = "claude-opus-4-7";
|
|
11823
|
+
var AGENT_ACTIVITY_HEARTBEAT_MS = 1e4;
|
|
11747
11824
|
function defaultSelectedModelForBackend(backendKind) {
|
|
11748
11825
|
switch (backendKind) {
|
|
11749
11826
|
case "claude_cli":
|
|
@@ -11754,6 +11831,8 @@ function defaultSelectedModelForBackend(backendKind) {
|
|
|
11754
11831
|
return "claude-sonnet-4.5";
|
|
11755
11832
|
case "kimi_cli":
|
|
11756
11833
|
return void 0;
|
|
11834
|
+
case "opencode_cli":
|
|
11835
|
+
return void 0;
|
|
11757
11836
|
case "supatest_cli":
|
|
11758
11837
|
return "medium";
|
|
11759
11838
|
default:
|
|
@@ -11857,6 +11936,26 @@ var BaseMachineAgent = class _BaseMachineAgent {
|
|
|
11857
11936
|
buildPromptText(config) {
|
|
11858
11937
|
return buildPromptWithFiles(config.task, config.files);
|
|
11859
11938
|
}
|
|
11939
|
+
getActivityHeartbeatIntervalMs() {
|
|
11940
|
+
return AGENT_ACTIVITY_HEARTBEAT_MS;
|
|
11941
|
+
}
|
|
11942
|
+
async runBackendWithActivityHeartbeat(backend, context) {
|
|
11943
|
+
const intervalMs = this.getActivityHeartbeatIntervalMs();
|
|
11944
|
+
let heartbeat = null;
|
|
11945
|
+
if (this.presenter.onActivity && intervalMs > 0) {
|
|
11946
|
+
void this.presenter.onActivity("background_work");
|
|
11947
|
+
heartbeat = setInterval(() => {
|
|
11948
|
+
if (!context.abortController.signal.aborted) {
|
|
11949
|
+
void this.presenter.onActivity?.("background_work");
|
|
11950
|
+
}
|
|
11951
|
+
}, intervalMs);
|
|
11952
|
+
}
|
|
11953
|
+
try {
|
|
11954
|
+
return await backend.run(context);
|
|
11955
|
+
} finally {
|
|
11956
|
+
if (heartbeat) clearInterval(heartbeat);
|
|
11957
|
+
}
|
|
11958
|
+
}
|
|
11860
11959
|
// ── Shared helpers ─────────────────────────────────────────────────────
|
|
11861
11960
|
abort() {
|
|
11862
11961
|
this.abortController?.abort();
|
|
@@ -11941,7 +12040,7 @@ Prefer relative paths and keep your work scoped to this project.`
|
|
|
11941
12040
|
let lastResult = null;
|
|
11942
12041
|
for (let attempt = 0; attempt <= _BaseMachineAgent.MAX_RETRIES; attempt++) {
|
|
11943
12042
|
if (this.abortController?.signal.aborted) break;
|
|
11944
|
-
const result = await
|
|
12043
|
+
const result = await this.runBackendWithActivityHeartbeat(backend, {
|
|
11945
12044
|
presenter: this.presenter,
|
|
11946
12045
|
config: runtimeConfig,
|
|
11947
12046
|
abortController: this.abortController,
|
|
@@ -11974,7 +12073,7 @@ Prefer relative paths and keep your work scoped to this project.`
|
|
|
11974
12073
|
runtimeSessionId: void 0,
|
|
11975
12074
|
providerSessionId: void 0
|
|
11976
12075
|
};
|
|
11977
|
-
const retryResult = await
|
|
12076
|
+
const retryResult = await this.runBackendWithActivityHeartbeat(backend, {
|
|
11978
12077
|
presenter: this.presenter,
|
|
11979
12078
|
config: runtimeConfig,
|
|
11980
12079
|
abortController: this.abortController,
|
|
@@ -12508,9 +12607,16 @@ function extractGeneratedImagesFromToolResult(toolId, content, cwd, toolName) {
|
|
|
12508
12607
|
}
|
|
12509
12608
|
|
|
12510
12609
|
// src/version.ts
|
|
12511
|
-
var AGENT_VERSION = "0.1.
|
|
12610
|
+
var AGENT_VERSION = "0.1.24";
|
|
12512
12611
|
|
|
12513
12612
|
// src/daemon.ts
|
|
12613
|
+
var OPENCODE_FREE_MODEL_IDS = [
|
|
12614
|
+
"opencode/north-mini-code-free",
|
|
12615
|
+
"opencode/nemotron-3-ultra-free",
|
|
12616
|
+
"opencode/deepseek-v4-flash-free",
|
|
12617
|
+
"opencode/mimo-v2.5-free",
|
|
12618
|
+
"opencode/big-pickle"
|
|
12619
|
+
];
|
|
12514
12620
|
var PRODUCTION_API_URL = "https://api.aiden-platform.com";
|
|
12515
12621
|
var PRODUCTION_WS_URL = "wss://ws.aiden-platform.com";
|
|
12516
12622
|
var LOCAL_API_URL = "http://localhost:8400";
|
|
@@ -12604,6 +12710,57 @@ function normalizeBackendKind(backendKind) {
|
|
|
12604
12710
|
if (backendKind === "codex") return "codex_app_server";
|
|
12605
12711
|
return backendKind;
|
|
12606
12712
|
}
|
|
12713
|
+
function readModelId(value2) {
|
|
12714
|
+
if (typeof value2 === "string") {
|
|
12715
|
+
const trimmed = value2.trim();
|
|
12716
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
12717
|
+
}
|
|
12718
|
+
if (!value2 || typeof value2 !== "object") return null;
|
|
12719
|
+
const record = value2;
|
|
12720
|
+
return readModelId(record.id) ?? readModelId(record.model) ?? readModelId(record.name) ?? readModelId(record.value);
|
|
12721
|
+
}
|
|
12722
|
+
function extractModelIdsFromJson(value2) {
|
|
12723
|
+
if (Array.isArray(value2)) {
|
|
12724
|
+
return [...new Set(value2.map(readModelId).filter((model) => Boolean(model)))];
|
|
12725
|
+
}
|
|
12726
|
+
if (!value2 || typeof value2 !== "object") return [];
|
|
12727
|
+
const record = value2;
|
|
12728
|
+
for (const key of ["models", "data", "items"]) {
|
|
12729
|
+
const nested = extractModelIdsFromJson(record[key]);
|
|
12730
|
+
if (nested.length > 0) return nested;
|
|
12731
|
+
}
|
|
12732
|
+
const byProvider = record.opencode ?? record.providers;
|
|
12733
|
+
if (byProvider) {
|
|
12734
|
+
const nested = extractModelIdsFromJson(byProvider);
|
|
12735
|
+
if (nested.length > 0) return nested;
|
|
12736
|
+
}
|
|
12737
|
+
return [];
|
|
12738
|
+
}
|
|
12739
|
+
function discoverOpenCodeModels(executable, env) {
|
|
12740
|
+
for (const args of [
|
|
12741
|
+
["models", "--json"],
|
|
12742
|
+
["models", "list", "--json"],
|
|
12743
|
+
["model", "list", "--json"]
|
|
12744
|
+
]) {
|
|
12745
|
+
const result = (0, import_node_child_process3.spawnSync)(executable, args, {
|
|
12746
|
+
encoding: "utf8",
|
|
12747
|
+
timeout: 5e3,
|
|
12748
|
+
env,
|
|
12749
|
+
windowsHide: true
|
|
12750
|
+
});
|
|
12751
|
+
if (!result || result.error || result.status !== 0 || !result.stdout.trim()) continue;
|
|
12752
|
+
try {
|
|
12753
|
+
const models = extractModelIdsFromJson(JSON.parse(result.stdout));
|
|
12754
|
+
if (models.length > 0) return models;
|
|
12755
|
+
} catch {
|
|
12756
|
+
}
|
|
12757
|
+
}
|
|
12758
|
+
return OPENCODE_FREE_MODEL_IDS;
|
|
12759
|
+
}
|
|
12760
|
+
function discoverProviderModels(provider, executable, env) {
|
|
12761
|
+
if (provider === "opencode_cli") return discoverOpenCodeModels(executable, env);
|
|
12762
|
+
return [];
|
|
12763
|
+
}
|
|
12607
12764
|
function discoverCapabilities() {
|
|
12608
12765
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
12609
12766
|
const env = getDaemonCliEnvironment();
|
|
@@ -12613,7 +12770,7 @@ function discoverCapabilities() {
|
|
|
12613
12770
|
return {
|
|
12614
12771
|
provider,
|
|
12615
12772
|
available: Boolean(executable),
|
|
12616
|
-
models: [],
|
|
12773
|
+
models: executable ? discoverProviderModels(provider, executable, env) : [],
|
|
12617
12774
|
lastCheckedAt: now
|
|
12618
12775
|
};
|
|
12619
12776
|
}),
|
|
@@ -12642,7 +12799,9 @@ function summarizeRunnerStatus(input) {
|
|
|
12642
12799
|
const lastRunActivityAtMs = activeEntries.reduce((latest, entry) => {
|
|
12643
12800
|
return latest === null ? entry.lastActivityAtMs : Math.max(latest, entry.lastActivityAtMs);
|
|
12644
12801
|
}, null);
|
|
12645
|
-
const staleRunCount =
|
|
12802
|
+
const staleRunCount = activeEntries.filter(
|
|
12803
|
+
(entry) => nowMs - entry.lastActivityAtMs >= RUNNER_RECOVERY_GRACE_MS
|
|
12804
|
+
).length;
|
|
12646
12805
|
const pastDisconnectGrace = input.disconnectedSinceMs !== null && nowMs - input.disconnectedSinceMs >= RUNNER_RECOVERY_GRACE_MS;
|
|
12647
12806
|
const restartRecommended = !input.connected && activeRunIds.length === 0 && pastDisconnectGrace;
|
|
12648
12807
|
return {
|
|
@@ -12657,7 +12816,6 @@ function summarizeRunnerStatus(input) {
|
|
|
12657
12816
|
};
|
|
12658
12817
|
}
|
|
12659
12818
|
function recoverStaleActiveRuns(input) {
|
|
12660
|
-
if (input.connected) return;
|
|
12661
12819
|
const nowMs = input.nowMs ?? Date.now();
|
|
12662
12820
|
for (const [runId, entry] of input.activeAgents.entries()) {
|
|
12663
12821
|
if (nowMs - entry.lastActivityAtMs < RUNNER_RECOVERY_GRACE_MS) continue;
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -2,117 +2,52 @@
|
|
|
2
2
|
* Aiden Sandbox Agent
|
|
3
3
|
* Runs inside E2B sandbox, connects to WS server, executes CoreAgent.
|
|
4
4
|
*/
|
|
5
|
-
import { HELP_TEXT, resolveCommand } from "./cli-help.js";
|
|
6
|
-
import { loginWithDeviceCode, logoutDaemon, printDoctor, printStatus, revokeRuntimeToken, rotateRuntimeToken, runDaemon, setupDaemon, stopDaemon, } from "./daemon.js";
|
|
7
5
|
import { runSandbox } from "./sandbox.js";
|
|
8
6
|
import { AGENT_VERSION } from "./version.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const sessionToken = process.env.AIDEN_SESSION_TOKEN;
|
|
14
|
-
const task = process.env.AIDEN_TASK;
|
|
15
|
-
const teamId = process.env.AIDEN_TEAM_ID || undefined;
|
|
16
|
-
const projectPath = process.env.AIDEN_PROJECT_PATH || "/home/user/workspace";
|
|
17
|
-
const backendKind = process.env.AIDEN_BACKEND_KIND || "claude_cli";
|
|
18
|
-
const agentId = process.env.AIDEN_AGENT_ID || undefined;
|
|
19
|
-
const agentPrompt = process.env.AIDEN_AGENT_PROMPT || undefined;
|
|
20
|
-
const mode = process.env.AIDEN_MODE || "agent";
|
|
21
|
-
const model = process.env.AIDEN_MODEL;
|
|
22
|
-
const contextWindow = process.env.AIDEN_CONTEXT_WINDOW || undefined;
|
|
23
|
-
const effortLevel = process.env.AIDEN_EFFORT_LEVEL || undefined;
|
|
24
|
-
const providerSessionId = process.env.AIDEN_PROVIDER_SESSION_ID || undefined;
|
|
25
|
-
const workflowId = process.env.AIDEN_WORKFLOW_ID || undefined;
|
|
26
|
-
const workflowExecutionId = process.env.AIDEN_WORKFLOW_EXECUTION_ID || undefined;
|
|
27
|
-
if (!wsUrl || !sessionId || !taskId || !sessionToken || task == null) {
|
|
28
|
-
throw new Error("run-session is an internal Aiden sandbox/session command and must be launched by Aiden with session env vars. " +
|
|
29
|
-
"Missing required env vars: AIDEN_WS_URL, AIDEN_SESSION_ID, AIDEN_TASK_ID, AIDEN_SESSION_TOKEN, AIDEN_TASK");
|
|
30
|
-
}
|
|
31
|
-
console.info("[aiden-agent] Starting", {
|
|
32
|
-
sessionId,
|
|
33
|
-
taskId,
|
|
34
|
-
projectPath,
|
|
35
|
-
backendKind,
|
|
36
|
-
agentId,
|
|
37
|
-
mode,
|
|
38
|
-
model,
|
|
39
|
-
version: AGENT_VERSION,
|
|
40
|
-
});
|
|
41
|
-
await runSandbox({
|
|
42
|
-
wsUrl,
|
|
43
|
-
sessionId,
|
|
44
|
-
taskId,
|
|
45
|
-
sessionToken,
|
|
46
|
-
task,
|
|
47
|
-
teamId,
|
|
48
|
-
projectPath,
|
|
49
|
-
backendKind,
|
|
50
|
-
agentId,
|
|
51
|
-
agentPrompt,
|
|
52
|
-
mode,
|
|
53
|
-
model,
|
|
54
|
-
contextWindow,
|
|
55
|
-
effortLevel,
|
|
56
|
-
providerSessionId,
|
|
57
|
-
workflowId,
|
|
58
|
-
workflowExecutionId,
|
|
59
|
-
maxIterations: 50,
|
|
60
|
-
});
|
|
7
|
+
// Support `aiden-agent --version` for version detection without starting the agent
|
|
8
|
+
if (process.argv.includes("--version")) {
|
|
9
|
+
process.stdout.write(`${AGENT_VERSION}\n`);
|
|
10
|
+
process.exit(0);
|
|
61
11
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (command === "daemon") {
|
|
81
|
-
await runDaemon(commandArgs);
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
if (command === "stop") {
|
|
85
|
-
await stopDaemon(commandArgs);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (command === "status") {
|
|
89
|
-
await printStatus();
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (command === "doctor") {
|
|
93
|
-
await printDoctor(commandArgs);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (command === "token" && commandArgs[0] === "rotate") {
|
|
97
|
-
await rotateRuntimeToken(commandArgs.slice(1));
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
if (command === "token" && commandArgs[0] === "revoke") {
|
|
101
|
-
await revokeRuntimeToken(commandArgs.slice(1));
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
if (command === "logout") {
|
|
105
|
-
logoutDaemon();
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
if (command === "run-session") {
|
|
109
|
-
await runSessionFromEnv();
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
throw new Error(`Unknown command: ${command}\n\n${HELP_TEXT}`);
|
|
12
|
+
const wsUrl = process.env.AIDEN_WS_URL;
|
|
13
|
+
const sessionId = process.env.AIDEN_SESSION_ID;
|
|
14
|
+
const taskId = process.env.AIDEN_TASK_ID;
|
|
15
|
+
const sessionToken = process.env.AIDEN_SESSION_TOKEN;
|
|
16
|
+
const task = process.env.AIDEN_TASK;
|
|
17
|
+
const teamId = process.env.AIDEN_TEAM_ID || undefined;
|
|
18
|
+
const projectPath = process.env.AIDEN_PROJECT_PATH || "/home/user/workspace";
|
|
19
|
+
const backendKind = process.env.AIDEN_BACKEND_KIND || "claude_cli";
|
|
20
|
+
const agentId = process.env.AIDEN_AGENT_ID || undefined;
|
|
21
|
+
const agentPrompt = process.env.AIDEN_AGENT_PROMPT || undefined;
|
|
22
|
+
const mode = process.env.AIDEN_MODE || "agent";
|
|
23
|
+
const model = process.env.AIDEN_MODEL;
|
|
24
|
+
const contextWindow = process.env.AIDEN_CONTEXT_WINDOW || undefined;
|
|
25
|
+
const effortLevel = process.env.AIDEN_EFFORT_LEVEL || undefined;
|
|
26
|
+
const providerSessionId = process.env.AIDEN_PROVIDER_SESSION_ID || undefined;
|
|
27
|
+
if (!wsUrl || !sessionId || !taskId || !sessionToken || task == null) {
|
|
28
|
+
console.error("[aiden-agent] Missing required env vars: AIDEN_WS_URL, AIDEN_SESSION_ID, AIDEN_TASK_ID, AIDEN_SESSION_TOKEN, AIDEN_TASK");
|
|
29
|
+
process.exit(1);
|
|
113
30
|
}
|
|
114
|
-
|
|
115
|
-
|
|
31
|
+
console.info("[aiden-agent] Starting", { sessionId, taskId, projectPath, backendKind, agentId, mode, model, version: AGENT_VERSION });
|
|
32
|
+
runSandbox({
|
|
33
|
+
wsUrl,
|
|
34
|
+
sessionId,
|
|
35
|
+
taskId,
|
|
36
|
+
sessionToken,
|
|
37
|
+
task,
|
|
38
|
+
teamId,
|
|
39
|
+
projectPath,
|
|
40
|
+
backendKind,
|
|
41
|
+
agentId,
|
|
42
|
+
agentPrompt,
|
|
43
|
+
mode,
|
|
44
|
+
model,
|
|
45
|
+
contextWindow,
|
|
46
|
+
effortLevel,
|
|
47
|
+
providerSessionId,
|
|
48
|
+
maxIterations: 50,
|
|
49
|
+
}).catch((error) => {
|
|
50
|
+
console.error("[aiden-agent] Fatal error:", error);
|
|
116
51
|
process.exit(1);
|
|
117
52
|
});
|
|
118
53
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,mFAAmF;AACnF,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACvC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AACzC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC;AACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,sBAAsB,CAAC;AAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,YAAY,CAAC;AACnE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC;AACxD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,CAAC;AAChE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC;AAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACtC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,CAAC;AACpE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,CAAC;AAChE,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,SAAS,CAAC;AAE7E,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACrE,OAAO,CAAC,KAAK,CAAC,yHAAyH,CAAC,CAAC;IACzI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AAEtI,UAAU,CAAC;IACT,KAAK;IACL,SAAS;IACT,MAAM;IACN,YAAY;IACZ,IAAI;IACJ,MAAM;IACN,WAAW;IACX,WAAW;IACX,OAAO;IACP,WAAW;IACX,IAAI;IACJ,KAAK;IACL,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,aAAa,EAAE,EAAE;CAClB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACjB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/sandbox.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sandbox mode: connects to WS server, runs CoreAgent in a multi-turn loop.
|
|
3
|
-
* Runs INSIDE the E2B sandbox.
|
|
4
|
-
*/
|
|
5
1
|
export interface SandboxConfig {
|
|
6
2
|
wsUrl: string;
|
|
7
3
|
sessionId: string;
|
|
@@ -24,8 +20,6 @@ export interface SandboxConfig {
|
|
|
24
20
|
email: string;
|
|
25
21
|
};
|
|
26
22
|
maxIterations?: number;
|
|
27
|
-
workflowId?: string;
|
|
28
|
-
workflowExecutionId?: string;
|
|
29
23
|
}
|
|
30
24
|
export declare function runSandbox(config: SandboxConfig): Promise<void>;
|
|
31
25
|
//# sourceMappingURL=sandbox.d.ts.map
|
package/dist/sandbox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4LrE"}
|