@aiden-ade/sandbox-agent 0.1.23 → 0.1.25
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 +99 -14
- 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 +3 -3
- 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/core-agent.d.ts
CHANGED
|
@@ -9,18 +9,15 @@
|
|
|
9
9
|
* Everything else (retry loop, system-prompt assembly, backend selection) lives
|
|
10
10
|
* in BaseMachineAgent.
|
|
11
11
|
*/
|
|
12
|
+
import { BaseMachineAgent, type AgentRuntimeConfig } from "@aiden/agent-core";
|
|
12
13
|
import type { ChildProcessWithoutNullStreams } from "node:child_process";
|
|
13
|
-
import { type AgentRuntimeConfig, BaseMachineAgent } from "@aiden/agent-core";
|
|
14
14
|
import type { AgentConfig } from "./types.js";
|
|
15
15
|
export declare class CoreAgent extends BaseMachineAgent {
|
|
16
16
|
private childProcess;
|
|
17
17
|
private _aborted;
|
|
18
|
-
private providerApiKey;
|
|
19
18
|
/** How long to wait after SIGTERM before escalating to SIGKILL. */
|
|
20
19
|
private static readonly SIGKILL_DELAY_MS;
|
|
21
|
-
constructor(presenter: ConstructorParameters<typeof BaseMachineAgent>[0], runtime: AgentRuntimeConfig
|
|
22
|
-
providerApiKey?: string;
|
|
23
|
-
});
|
|
20
|
+
constructor(presenter: ConstructorParameters<typeof BaseMachineAgent>[0], runtime: AgentRuntimeConfig);
|
|
24
21
|
abort(): void;
|
|
25
22
|
kill(): boolean;
|
|
26
23
|
private killChildProcess;
|
|
@@ -29,7 +26,6 @@ export declare class CoreAgent extends BaseMachineAgent {
|
|
|
29
26
|
* Used for interactive tools like AskUserQuestion.
|
|
30
27
|
*/
|
|
31
28
|
sendToolResponse(toolId: string, response: string): boolean;
|
|
32
|
-
sendUserMessage(text: string): boolean;
|
|
33
29
|
protected getOnProcessSpawned(): ((child: ChildProcessWithoutNullStreams) => void) | undefined;
|
|
34
30
|
protected buildCliEnvironment(): Promise<Record<string, string>>;
|
|
35
31
|
protected buildExtraSystemPromptParts(config: AgentConfig): string[];
|
package/dist/core-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-agent.d.ts","sourceRoot":"","sources":["../src/core-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"core-agent.d.ts","sourceRoot":"","sources":["../src/core-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,SAAU,SAAQ,gBAAgB;IAC7C,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAS;IAEzB,mEAAmE;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;gBAEpC,SAAS,EAAE,qBAAqB,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB;IAI9F,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,OAAO;IAStB,OAAO,CAAC,gBAAgB;IAyCxB;;;OAGG;IACI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAgClE,SAAS,CAAC,mBAAmB,IAAI,CAAC,CAAC,KAAK,EAAE,8BAA8B,KAAK,IAAI,CAAC,GAAG,SAAS;cAW9E,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAkBtE,SAAS,CAAC,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE;CAuFrE"}
|
package/dist/core-agent.js
CHANGED
|
@@ -9,18 +9,14 @@
|
|
|
9
9
|
* Everything else (retry loop, system-prompt assembly, backend selection) lives
|
|
10
10
|
* in BaseMachineAgent.
|
|
11
11
|
*/
|
|
12
|
-
import { platform } from "node:os";
|
|
13
12
|
import { BaseMachineAgent } from "@aiden/agent-core";
|
|
14
|
-
import { getDaemonCliEnvironment } from "./cli-executable.js";
|
|
15
13
|
export class CoreAgent extends BaseMachineAgent {
|
|
16
14
|
childProcess = null;
|
|
17
15
|
_aborted = false;
|
|
18
|
-
providerApiKey;
|
|
19
16
|
/** How long to wait after SIGTERM before escalating to SIGKILL. */
|
|
20
17
|
static SIGKILL_DELAY_MS = 3000;
|
|
21
18
|
constructor(presenter, runtime) {
|
|
22
19
|
super(presenter, runtime);
|
|
23
|
-
this.providerApiKey = runtime.providerApiKey;
|
|
24
20
|
}
|
|
25
21
|
abort() {
|
|
26
22
|
this._aborted = true;
|
|
@@ -54,9 +50,7 @@ export class CoreAgent extends BaseMachineAgent {
|
|
|
54
50
|
try {
|
|
55
51
|
child.kill("SIGTERM");
|
|
56
52
|
}
|
|
57
|
-
catch {
|
|
58
|
-
/* already dead */
|
|
59
|
-
}
|
|
53
|
+
catch { /* already dead */ }
|
|
60
54
|
}
|
|
61
55
|
setTimeout(() => {
|
|
62
56
|
if (child.killed || child.exitCode !== null)
|
|
@@ -105,7 +99,7 @@ export class CoreAgent extends BaseMachineAgent {
|
|
|
105
99
|
session_id: "default",
|
|
106
100
|
parent_tool_use_id: null,
|
|
107
101
|
});
|
|
108
|
-
stdin.write(
|
|
102
|
+
stdin.write(message + "\n");
|
|
109
103
|
console.info(`[CoreAgent] Sent tool_response for tool ${toolId}`);
|
|
110
104
|
return true;
|
|
111
105
|
}
|
|
@@ -114,68 +108,34 @@ export class CoreAgent extends BaseMachineAgent {
|
|
|
114
108
|
return false;
|
|
115
109
|
}
|
|
116
110
|
}
|
|
117
|
-
sendUserMessage(text) {
|
|
118
|
-
if (!this.childProcess || this._aborted)
|
|
119
|
-
return false;
|
|
120
|
-
const stdin = this.childProcess.stdin;
|
|
121
|
-
if (!stdin || stdin.destroyed)
|
|
122
|
-
return false;
|
|
123
|
-
try {
|
|
124
|
-
const message = JSON.stringify({
|
|
125
|
-
type: "user",
|
|
126
|
-
message: {
|
|
127
|
-
role: "user",
|
|
128
|
-
content: [{ type: "text", text }],
|
|
129
|
-
},
|
|
130
|
-
session_id: "default",
|
|
131
|
-
parent_tool_use_id: null,
|
|
132
|
-
});
|
|
133
|
-
stdin.write(`${message}\n`);
|
|
134
|
-
console.info(`[CoreAgent] Appended user message to live CLI stdin (${text.length} chars)`);
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
console.error("[CoreAgent] Failed to append user message to stdin", err);
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
111
|
// ── BaseMachineAgent hooks ─────────────────────────────────────────────
|
|
143
112
|
getOnProcessSpawned() {
|
|
144
113
|
return (child) => {
|
|
145
114
|
this.childProcess = child;
|
|
146
|
-
child.on("exit", () => {
|
|
147
|
-
|
|
148
|
-
});
|
|
149
|
-
child.on("error", () => {
|
|
150
|
-
this.childProcess = null;
|
|
151
|
-
});
|
|
115
|
+
child.on("exit", () => { this.childProcess = null; });
|
|
116
|
+
child.on("error", () => { this.childProcess = null; });
|
|
152
117
|
if (this._aborted) {
|
|
153
118
|
this.killChildProcess(child);
|
|
154
119
|
}
|
|
155
120
|
};
|
|
156
121
|
}
|
|
157
122
|
async buildCliEnvironment() {
|
|
123
|
+
const loginEnv = process.env;
|
|
158
124
|
const env = {};
|
|
159
|
-
for (const [key, value] of Object.entries(
|
|
125
|
+
for (const [key, value] of Object.entries(loginEnv)) {
|
|
160
126
|
if (value !== undefined)
|
|
161
127
|
env[key] = value;
|
|
162
128
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const missing = extraPaths.filter((p) => !existingSegments.has(p));
|
|
174
|
-
if (missing.length > 0) {
|
|
175
|
-
augmented.PATH = `${missing.join(separator)}${separator}${basePath}`;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return augmented;
|
|
129
|
+
// Guarantee CLI runtime bin dirs are in PATH regardless of how the agent
|
|
130
|
+
// was launched. Uses HOME from the inherited env so this works for both
|
|
131
|
+
// E2B (/home/user) and Daytona (/home/daytona) without hardcoding.
|
|
132
|
+
const home = env.HOME ?? "/home/user";
|
|
133
|
+
const extraPaths = [`${home}/.local/node/bin`, `${home}/.local/bin`];
|
|
134
|
+
const basePath = env.PATH ?? "";
|
|
135
|
+
const existingSegments = new Set(basePath.split(":").filter(Boolean));
|
|
136
|
+
const missing = extraPaths.filter((p) => !existingSegments.has(p));
|
|
137
|
+
env.PATH = missing.length > 0 ? `${missing.join(":")}:${basePath}` : basePath;
|
|
138
|
+
return env;
|
|
179
139
|
}
|
|
180
140
|
buildExtraSystemPromptParts(config) {
|
|
181
141
|
const parts = [];
|
|
@@ -214,94 +174,23 @@ export class CoreAgent extends BaseMachineAgent {
|
|
|
214
174
|
if (meta.descriptionAttachmentIds && meta.descriptionAttachmentIds.length > 0) {
|
|
215
175
|
lines.push("");
|
|
216
176
|
lines.push("## Task Description Images");
|
|
217
|
-
lines.push(
|
|
177
|
+
lines.push("The task description contains images. Use the `attachment` MCP tool with op=\"get\" to view them:");
|
|
218
178
|
for (const att of meta.descriptionAttachmentIds) {
|
|
219
179
|
lines.push(`- Attachment ID: \`${att.id}\` (${att.filename})`);
|
|
220
180
|
}
|
|
221
181
|
}
|
|
222
|
-
if (meta.linkedResources && meta.linkedResources.length > 0) {
|
|
223
|
-
lines.push("");
|
|
224
|
-
lines.push("## Linked Task Resources");
|
|
225
|
-
for (const resource of meta.linkedResources) {
|
|
226
|
-
lines.push(`- ${resource.type}: "${resource.title}" (${resource.url ?? resource.id})`);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
182
|
parts.push(lines.join("\n"));
|
|
230
183
|
}
|
|
231
|
-
// Inject
|
|
232
|
-
|
|
233
|
-
const pr = config.prMeta;
|
|
234
|
-
const lines = ["# Pull Request Context"];
|
|
235
|
-
lines.push(`- **Repo**: ${pr.owner}/${pr.repo}`);
|
|
236
|
-
lines.push(`- **PR**: #${pr.prNumber} — ${pr.title}`);
|
|
237
|
-
lines.push(`- **State**: ${pr.state}`);
|
|
238
|
-
if (pr.author)
|
|
239
|
-
lines.push(`- **Author**: ${pr.author}`);
|
|
240
|
-
const baseHead = `${pr.baseBranch || "?"} ← ${pr.headBranch || "?"}`;
|
|
241
|
-
lines.push(`- **Base ← Head**: ${baseHead}`);
|
|
242
|
-
if (pr.mergeable === false) {
|
|
243
|
-
lines.push(`- **Mergeable**: no`);
|
|
244
|
-
}
|
|
245
|
-
else if (pr.mergeable === true) {
|
|
246
|
-
lines.push(`- **Mergeable**: yes`);
|
|
247
|
-
}
|
|
248
|
-
if (pr.labels && pr.labels.length > 0) {
|
|
249
|
-
lines.push(`- **Labels**: ${pr.labels.join(", ")}`);
|
|
250
|
-
}
|
|
251
|
-
const sizeBits = [];
|
|
252
|
-
if (typeof pr.changedFilesCount === "number")
|
|
253
|
-
sizeBits.push(`${pr.changedFilesCount} files`);
|
|
254
|
-
if (typeof pr.additions === "number")
|
|
255
|
-
sizeBits.push(`+${pr.additions}`);
|
|
256
|
-
if (typeof pr.deletions === "number")
|
|
257
|
-
sizeBits.push(`-${pr.deletions}`);
|
|
258
|
-
if (sizeBits.length > 0)
|
|
259
|
-
lines.push(`- **Size**: ${sizeBits.join(" / ")}`);
|
|
260
|
-
if (pr.linkedTaskReadableId) {
|
|
261
|
-
lines.push(`- **Linked task**: ${pr.linkedTaskReadableId}`);
|
|
262
|
-
}
|
|
263
|
-
if (pr.htmlUrl)
|
|
264
|
-
lines.push(`- **URL**: ${pr.htmlUrl}`);
|
|
265
|
-
if (pr.body) {
|
|
266
|
-
lines.push("");
|
|
267
|
-
lines.push("## PR Description");
|
|
268
|
-
lines.push(pr.body);
|
|
269
|
-
}
|
|
270
|
-
if (pr.changedFiles && pr.changedFiles.length > 0) {
|
|
271
|
-
lines.push("");
|
|
272
|
-
lines.push("## Changed Files (first 50)");
|
|
273
|
-
for (const file of pr.changedFiles) {
|
|
274
|
-
lines.push(`- ${file.status}: \`${file.path}\` (+${file.additions} / -${file.deletions})`);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
parts.push(lines.join("\n"));
|
|
278
|
-
}
|
|
279
|
-
// Inject artifact context so the agent associates MCP artifacts with the right owner.
|
|
280
|
-
// Session context dictates ownership: task session → taskId; workflow session →
|
|
281
|
-
// workflowId + workflowExecutionId. Never both. Prefer config fields (sent by
|
|
282
|
-
// dispatch pipeline); fall back to AIDEN_* env vars.
|
|
184
|
+
// Inject artifact context so the agent associates MCP artifacts with the right task.
|
|
185
|
+
// Prefer config fields (sent by dispatch pipeline); fall back to AIDEN_* env vars.
|
|
283
186
|
const taskId = config.taskId ?? process.env.AIDEN_TASK_ID;
|
|
284
|
-
const workflowId = config.workflowId ?? process.env.AIDEN_WORKFLOW_ID;
|
|
285
|
-
const workflowExecutionId = config.workflowExecutionId ?? process.env.AIDEN_WORKFLOW_EXECUTION_ID;
|
|
286
187
|
const conversationId = config.conversationId ?? process.env.AIDEN_SESSION_ID;
|
|
287
188
|
const teamId = config.teamId;
|
|
288
189
|
const artifactIds = [];
|
|
289
190
|
if (teamId)
|
|
290
191
|
artifactIds.push(`- teamId: "${teamId}"`);
|
|
291
|
-
|
|
292
|
-
// (not a real task), so taskId must not shadow workflowId for artifact routing.
|
|
293
|
-
// When workflowExecutionId is set but workflowId is missing, this is a workflow session
|
|
294
|
-
// where AIDEN_WORKFLOW_ID wasn't injected — skip taskId entirely so the backend can
|
|
295
|
-
// auto-resolve workflow context from conversationId.
|
|
296
|
-
const isWorkflowSession = !!(workflowId || workflowExecutionId);
|
|
297
|
-
if (workflowId) {
|
|
298
|
-
artifactIds.push(`- workflowId: "${workflowId}"`);
|
|
299
|
-
if (workflowExecutionId)
|
|
300
|
-
artifactIds.push(`- workflowExecutionId: "${workflowExecutionId}"`);
|
|
301
|
-
}
|
|
302
|
-
else if (taskId && !isWorkflowSession) {
|
|
192
|
+
if (taskId)
|
|
303
193
|
artifactIds.push(`- taskId: "${taskId}"`);
|
|
304
|
-
}
|
|
305
194
|
if (conversationId)
|
|
306
195
|
artifactIds.push(`- conversationId: "${conversationId}"`);
|
|
307
196
|
if (artifactIds.length > 0) {
|
|
@@ -310,15 +199,7 @@ export class CoreAgent extends BaseMachineAgent {
|
|
|
310
199
|
...artifactIds,
|
|
311
200
|
].join("\n"));
|
|
312
201
|
}
|
|
313
|
-
if (
|
|
314
|
-
parts.push([
|
|
315
|
-
"## Prototype Artifacts",
|
|
316
|
-
"When the user asks to create, build, modify, or iterate on a prototype, do not create local prototype files such as prototype/index.html.",
|
|
317
|
-
"Instead, generate a Vite React TypeScript source snapshot and call the Aiden MCP tool upsert_prototype_version with teamId, workflowId, workflowExecutionId, conversationId, title, sourceSnapshot, and packageJson.",
|
|
318
|
-
"For follow-up changes to the same prototype, call list_prototypes (with workflowId) or get_prototype if needed, then call upsert_prototype_version again with the existing prototypeId and parentVersionId.",
|
|
319
|
-
].join("\n"));
|
|
320
|
-
}
|
|
321
|
-
else if (taskId && conversationId && teamId) {
|
|
202
|
+
if (taskId && conversationId && teamId) {
|
|
322
203
|
parts.push([
|
|
323
204
|
"## Prototype Artifacts",
|
|
324
205
|
"When the user asks to create, build, modify, or iterate on a prototype, do not create local prototype files such as prototype/index.html.",
|
package/dist/core-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-agent.js","sourceRoot":"","sources":["../src/core-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core-agent.js","sourceRoot":"","sources":["../src/core-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -9362,6 +9362,10 @@ Deliverables persist as Aiden artifacts and documents \u2014 not as chat. Plans,
|
|
|
9362
9362
|
- Own mistakes. Wrong ID, jumped too fast \u2014 say so and fix it.
|
|
9363
9363
|
- Think visually. Mermaid over paragraphs for architecture, flows, state, and schema.
|
|
9364
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
|
+
|
|
9365
9369
|
The specific work you do \u2014 implementation, planning, review, coordination, verification \u2014 is determined by your agent role, described next.`;
|
|
9366
9370
|
var PLAN_MODE_PROMPT = [
|
|
9367
9371
|
"You are in Aiden plan mode.",
|
|
@@ -9594,7 +9598,7 @@ var PRIORITY_OPTIONS = [
|
|
|
9594
9598
|
detail: "Low",
|
|
9595
9599
|
color: CATEGORICAL_COLORS.blueBright,
|
|
9596
9600
|
iconClass: "text-blue-500/70 dark:text-blue-400/70",
|
|
9597
|
-
flagClass: "text-
|
|
9601
|
+
flagClass: "text-blue-600 dark:text-blue-400"
|
|
9598
9602
|
},
|
|
9599
9603
|
{
|
|
9600
9604
|
value: "none",
|
|
@@ -9664,6 +9668,9 @@ function isLikelyProviderAuthError(stderr) {
|
|
|
9664
9668
|
}
|
|
9665
9669
|
function normalizeCodexCliErrorMessage(message) {
|
|
9666
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
|
+
}
|
|
9667
9674
|
if (lower.includes("access token could not be refreshed") || lower.includes("refresh_token_invalidated") || lower.includes("refresh token has been invalidated")) {
|
|
9668
9675
|
return "Codex CLI connection expired. Reconnect OpenAI Codex CLI in Cloud settings, then restart or recreate the machine.";
|
|
9669
9676
|
}
|
|
@@ -9700,7 +9707,7 @@ function classifyCliError(stderr, exitCode) {
|
|
|
9700
9707
|
}
|
|
9701
9708
|
function isTransientError(errorMessage) {
|
|
9702
9709
|
const lower = errorMessage.toLowerCase();
|
|
9703
|
-
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");
|
|
9704
9711
|
}
|
|
9705
9712
|
function planCliSpawn(command, args, env = process.env) {
|
|
9706
9713
|
const isWindows = process.platform === "win32";
|
|
@@ -10244,6 +10251,10 @@ function createImageTempDirectory(cwd) {
|
|
|
10244
10251
|
}
|
|
10245
10252
|
return (0, import_fs2.mkdtempSync)((0, import_path2.join)((0, import_os2.tmpdir)(), "aiden-images-"));
|
|
10246
10253
|
}
|
|
10254
|
+
function safeFilename(filename) {
|
|
10255
|
+
const safe = filename.replace(/[^a-zA-Z0-9._-]/g, "_").replace(/^_+/, "");
|
|
10256
|
+
return safe || "attachment";
|
|
10257
|
+
}
|
|
10247
10258
|
function writeImagesToTempFiles(images, cwd) {
|
|
10248
10259
|
if (!images?.length) return { paths: [], files: [], cleanup: () => {
|
|
10249
10260
|
} };
|
|
@@ -10274,6 +10285,48 @@ function writeImagesToTempFiles(images, cwd) {
|
|
|
10274
10285
|
}
|
|
10275
10286
|
};
|
|
10276
10287
|
}
|
|
10288
|
+
function writeFilesToTempFiles(files, cwd) {
|
|
10289
|
+
if (!files?.length) return { paths: [], files: [], cleanup: () => {
|
|
10290
|
+
} };
|
|
10291
|
+
const dataFiles = files.filter((file) => file.data !== void 0);
|
|
10292
|
+
const existingFiles = files.filter((file) => file.tempPath && file.data === void 0);
|
|
10293
|
+
const directory = dataFiles.length > 0 ? createImageTempDirectory(cwd) : null;
|
|
10294
|
+
const paths = [];
|
|
10295
|
+
const tempFiles = [];
|
|
10296
|
+
for (const file of existingFiles) {
|
|
10297
|
+
if (!file.tempPath) continue;
|
|
10298
|
+
paths.push(file.tempPath);
|
|
10299
|
+
tempFiles.push({
|
|
10300
|
+
filename: file.filename,
|
|
10301
|
+
mimeType: file.mimeType,
|
|
10302
|
+
label: file.label,
|
|
10303
|
+
path: file.tempPath
|
|
10304
|
+
});
|
|
10305
|
+
}
|
|
10306
|
+
for (const file of dataFiles) {
|
|
10307
|
+
if (!directory || file.data === void 0) continue;
|
|
10308
|
+
const filePath = (0, import_path2.join)(directory, `${file.id}-${safeFilename(file.filename)}`);
|
|
10309
|
+
(0, import_fs2.writeFileSync)(filePath, Buffer.from(file.data, "base64"));
|
|
10310
|
+
paths.push(filePath);
|
|
10311
|
+
tempFiles.push({
|
|
10312
|
+
filename: file.filename,
|
|
10313
|
+
mimeType: file.mimeType,
|
|
10314
|
+
label: file.label,
|
|
10315
|
+
path: filePath
|
|
10316
|
+
});
|
|
10317
|
+
}
|
|
10318
|
+
return {
|
|
10319
|
+
paths,
|
|
10320
|
+
files: tempFiles,
|
|
10321
|
+
cleanup: () => {
|
|
10322
|
+
if (!directory) return;
|
|
10323
|
+
try {
|
|
10324
|
+
(0, import_fs2.rmSync)(directory, { recursive: true, force: true });
|
|
10325
|
+
} catch {
|
|
10326
|
+
}
|
|
10327
|
+
}
|
|
10328
|
+
};
|
|
10329
|
+
}
|
|
10277
10330
|
function appendImagePathReferences(prompt, images) {
|
|
10278
10331
|
if (images.length === 0) return prompt;
|
|
10279
10332
|
const imageLines = images.map((img) => {
|
|
@@ -11445,6 +11498,17 @@ function isOpenCodeToolError(parsed, part) {
|
|
|
11445
11498
|
const state = getRecord(part?.state) ?? getRecord(parsed.state);
|
|
11446
11499
|
return part?.is_error === true || part?.isError === true || state?.status === "error" || Boolean(getOpenCodeToolError(parsed, part));
|
|
11447
11500
|
}
|
|
11501
|
+
function getOpenCodePartId(parsed, part) {
|
|
11502
|
+
return getString(part?.id) || getString(parsed.id) || getString(parsed.partID);
|
|
11503
|
+
}
|
|
11504
|
+
function resolveOpenCodeTextDelta(text, partId, state) {
|
|
11505
|
+
if (!partId) return text;
|
|
11506
|
+
state.opencodeTextByPartId ??= /* @__PURE__ */ new Map();
|
|
11507
|
+
const previous = state.opencodeTextByPartId.get(partId) ?? "";
|
|
11508
|
+
state.opencodeTextByPartId.set(partId, text);
|
|
11509
|
+
if (!previous || !text.startsWith(previous)) return text;
|
|
11510
|
+
return text.slice(previous.length);
|
|
11511
|
+
}
|
|
11448
11512
|
function parseOpencodeStructuredLine(line, context, state) {
|
|
11449
11513
|
const presenter = context.presenter;
|
|
11450
11514
|
let parsed = null;
|
|
@@ -11468,8 +11532,10 @@ function parseOpencodeStructuredLine(line, context, state) {
|
|
|
11468
11532
|
case "text": {
|
|
11469
11533
|
const text = part && typeof part.text === "string" ? part.text : "";
|
|
11470
11534
|
if (text) {
|
|
11471
|
-
|
|
11472
|
-
|
|
11535
|
+
const delta = resolveOpenCodeTextDelta(text, getOpenCodePartId(parsed, part), state);
|
|
11536
|
+
if (!delta) break;
|
|
11537
|
+
state.summary += delta;
|
|
11538
|
+
void presenter.onAssistantText(delta);
|
|
11473
11539
|
}
|
|
11474
11540
|
break;
|
|
11475
11541
|
}
|
|
@@ -11607,6 +11673,10 @@ function createOpencodeCliBackend(command = "opencode", defaultArgs = []) {
|
|
|
11607
11673
|
context.config.images,
|
|
11608
11674
|
context.cwd
|
|
11609
11675
|
);
|
|
11676
|
+
const { paths: filePaths, cleanup: cleanupFiles } = writeFilesToTempFiles(
|
|
11677
|
+
context.config.files,
|
|
11678
|
+
context.cwd
|
|
11679
|
+
);
|
|
11610
11680
|
try {
|
|
11611
11681
|
const runContext = withAutonomousOpenCodePermissions(context);
|
|
11612
11682
|
return await createGenericCliBackend({
|
|
@@ -11623,7 +11693,8 @@ function createOpencodeCliBackend(command = "opencode", defaultArgs = []) {
|
|
|
11623
11693
|
if (resumeId) args.push("--session", resumeId);
|
|
11624
11694
|
const model = ctx.config.selectedModel?.trim();
|
|
11625
11695
|
if (model?.includes("/")) args.push("--model", model);
|
|
11626
|
-
const
|
|
11696
|
+
const attachmentPaths = [...imagePaths, ...filePaths];
|
|
11697
|
+
const fileArgs = attachmentPaths.flatMap((p) => ["--file", p]);
|
|
11627
11698
|
if (fileArgs.length > 0) {
|
|
11628
11699
|
return [...args, ...fileArgs, ...defaultArgs, "--", prompt];
|
|
11629
11700
|
}
|
|
@@ -11637,6 +11708,7 @@ function createOpencodeCliBackend(command = "opencode", defaultArgs = []) {
|
|
|
11637
11708
|
}).run(runContext);
|
|
11638
11709
|
} finally {
|
|
11639
11710
|
cleanup();
|
|
11711
|
+
cleanupFiles();
|
|
11640
11712
|
}
|
|
11641
11713
|
}
|
|
11642
11714
|
};
|
|
@@ -11842,7 +11914,8 @@ function canonicalizePath(inputPath) {
|
|
|
11842
11914
|
}
|
|
11843
11915
|
function buildPromptWithFiles(task, files) {
|
|
11844
11916
|
if (!files || files.length === 0) return task;
|
|
11845
|
-
const fileList = files.map((file) => `- ${file.filename} (${file.label}): ${file.tempPath}`).join("\n");
|
|
11917
|
+
const fileList = files.filter((file) => file.tempPath).map((file) => `- ${file.filename} (${file.label}): ${file.tempPath}`).join("\n");
|
|
11918
|
+
if (!fileList) return task;
|
|
11846
11919
|
return `${task}
|
|
11847
11920
|
|
|
11848
11921
|
The user has attached the following files. You can read them using your available tools:
|
|
@@ -12600,7 +12673,7 @@ function extractGeneratedImagesFromToolResult(toolId, content, cwd, toolName) {
|
|
|
12600
12673
|
}
|
|
12601
12674
|
|
|
12602
12675
|
// src/version.ts
|
|
12603
|
-
var AGENT_VERSION = "0.1.
|
|
12676
|
+
var AGENT_VERSION = "0.1.25";
|
|
12604
12677
|
|
|
12605
12678
|
// src/daemon.ts
|
|
12606
12679
|
var OPENCODE_FREE_MODEL_IDS = [
|
|
@@ -12792,7 +12865,9 @@ function summarizeRunnerStatus(input) {
|
|
|
12792
12865
|
const lastRunActivityAtMs = activeEntries.reduce((latest, entry) => {
|
|
12793
12866
|
return latest === null ? entry.lastActivityAtMs : Math.max(latest, entry.lastActivityAtMs);
|
|
12794
12867
|
}, null);
|
|
12795
|
-
const staleRunCount =
|
|
12868
|
+
const staleRunCount = activeEntries.filter(
|
|
12869
|
+
(entry) => nowMs - entry.lastActivityAtMs >= RUNNER_RECOVERY_GRACE_MS
|
|
12870
|
+
).length;
|
|
12796
12871
|
const pastDisconnectGrace = input.disconnectedSinceMs !== null && nowMs - input.disconnectedSinceMs >= RUNNER_RECOVERY_GRACE_MS;
|
|
12797
12872
|
const restartRecommended = !input.connected && activeRunIds.length === 0 && pastDisconnectGrace;
|
|
12798
12873
|
return {
|
|
@@ -12807,7 +12882,6 @@ function summarizeRunnerStatus(input) {
|
|
|
12807
12882
|
};
|
|
12808
12883
|
}
|
|
12809
12884
|
function recoverStaleActiveRuns(input) {
|
|
12810
|
-
if (input.connected) return;
|
|
12811
12885
|
const nowMs = input.nowMs ?? Date.now();
|
|
12812
12886
|
for (const [runId, entry] of input.activeAgents.entries()) {
|
|
12813
12887
|
if (nowMs - entry.lastActivityAtMs < RUNNER_RECOVERY_GRACE_MS) continue;
|
|
@@ -12949,7 +13023,6 @@ async function setupDaemon(args) {
|
|
|
12949
13023
|
const setupToken = argValue(args, "--setup-token") ?? process.env.AIDEN_RUNTIME_SETUP_TOKEN;
|
|
12950
13024
|
const token = argValue(args, "--token") ?? process.env.AIDEN_SETUP_TOKEN;
|
|
12951
13025
|
const displayName = argValue(args, "--name") ?? (0, import_node_os4.hostname)();
|
|
12952
|
-
const legacyLocalMachineId = argValue(args, "--legacy-local-machine-id") ?? process.env.AIDEN_LEGACY_LOCAL_MACHINE_ID;
|
|
12953
13026
|
const scope = argValue(args, "--scope") ?? process.env.AIDEN_RUNTIME_SCOPE ?? "team";
|
|
12954
13027
|
if (scope !== "team" && scope !== "user") {
|
|
12955
13028
|
throw new Error("setup --scope must be either 'team' or 'user'");
|
|
@@ -12972,7 +13045,6 @@ async function setupDaemon(args) {
|
|
|
12972
13045
|
...setupToken ? { setupToken } : {},
|
|
12973
13046
|
displayName,
|
|
12974
13047
|
hostname: (0, import_node_os4.hostname)(),
|
|
12975
|
-
...legacyLocalMachineId ? { legacyLocalMachineId } : {},
|
|
12976
13048
|
runtimeKind: "machine",
|
|
12977
13049
|
managementKind: "user_managed",
|
|
12978
13050
|
hostKind: "daemon",
|
|
@@ -13186,7 +13258,8 @@ async function startDaemon(args) {
|
|
|
13186
13258
|
teamId: payload.teamId,
|
|
13187
13259
|
currentUser: payload.currentUser,
|
|
13188
13260
|
workflowTools: payload.workflowTools,
|
|
13189
|
-
images: payload.images
|
|
13261
|
+
images: payload.images,
|
|
13262
|
+
files: payload.files
|
|
13190
13263
|
}).catch((error) => {
|
|
13191
13264
|
const message = error instanceof Error ? error.message : String(error);
|
|
13192
13265
|
pushLog(`failed run=${payload.runId} ${message}`);
|
|
@@ -13716,6 +13789,7 @@ var WSClient = class {
|
|
|
13716
13789
|
callbacks.onUserMessage({
|
|
13717
13790
|
text: data.text,
|
|
13718
13791
|
images: data.images,
|
|
13792
|
+
files: data.files,
|
|
13719
13793
|
providerSessionId: data.providerSessionId,
|
|
13720
13794
|
backendKind: data.backendKind,
|
|
13721
13795
|
agentId: data.agentId,
|
|
@@ -13755,8 +13829,10 @@ var WSClient = class {
|
|
|
13755
13829
|
async function runSandbox(config) {
|
|
13756
13830
|
let currentTask = config.task;
|
|
13757
13831
|
let currentImages = [];
|
|
13832
|
+
let currentFiles = [];
|
|
13758
13833
|
const stopped = false;
|
|
13759
13834
|
let pendingMessageResolve = null;
|
|
13835
|
+
const queuedMessages = [];
|
|
13760
13836
|
let currentAgent = null;
|
|
13761
13837
|
let currentTaskMeta;
|
|
13762
13838
|
let currentPrMeta;
|
|
@@ -13786,7 +13862,7 @@ async function runSandbox(config) {
|
|
|
13786
13862
|
pendingMessageResolve = null;
|
|
13787
13863
|
resolve2(payload);
|
|
13788
13864
|
} else {
|
|
13789
|
-
|
|
13865
|
+
queuedMessages.push(payload);
|
|
13790
13866
|
}
|
|
13791
13867
|
},
|
|
13792
13868
|
onStop: () => {
|
|
@@ -13866,6 +13942,14 @@ async function runSandbox(config) {
|
|
|
13866
13942
|
filename: img.filename,
|
|
13867
13943
|
width: 0,
|
|
13868
13944
|
height: 0
|
|
13945
|
+
})) : void 0,
|
|
13946
|
+
files: currentFiles.length > 0 ? currentFiles.map((file) => ({
|
|
13947
|
+
id: file.id,
|
|
13948
|
+
data: file.data,
|
|
13949
|
+
mimeType: file.mimeType,
|
|
13950
|
+
filename: file.filename,
|
|
13951
|
+
size: file.size,
|
|
13952
|
+
label: file.label
|
|
13869
13953
|
})) : void 0
|
|
13870
13954
|
});
|
|
13871
13955
|
} catch (error) {
|
|
@@ -13886,7 +13970,7 @@ async function runSandbox(config) {
|
|
|
13886
13970
|
}
|
|
13887
13971
|
if (stopped) break;
|
|
13888
13972
|
}
|
|
13889
|
-
const nextPayload = await new Promise((resolve2) => {
|
|
13973
|
+
const nextPayload = queuedMessages.shift() ?? await new Promise((resolve2) => {
|
|
13890
13974
|
pendingMessageResolve = resolve2;
|
|
13891
13975
|
});
|
|
13892
13976
|
if (nextPayload === null || stopped) {
|
|
@@ -13894,6 +13978,7 @@ async function runSandbox(config) {
|
|
|
13894
13978
|
}
|
|
13895
13979
|
currentTask = nextPayload.text;
|
|
13896
13980
|
currentImages = nextPayload.images ?? [];
|
|
13981
|
+
currentFiles = nextPayload.files ?? [];
|
|
13897
13982
|
if (nextPayload.providerSessionId) {
|
|
13898
13983
|
lastProviderSessionId = nextPayload.providerSessionId;
|
|
13899
13984
|
}
|
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":""}
|