@aiden-ade/sandbox-agent 0.1.7 → 0.1.9
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 +7 -11
- package/dist/core-agent.d.ts.map +1 -1
- package/dist/core-agent.js +127 -68
- package/dist/core-agent.js.map +1 -1
- package/dist/index.cjs +1500 -206
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/sandbox.d.ts +10 -0
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +66 -36
- package/dist/sandbox.js.map +1 -1
- package/dist/updater.d.ts +15 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +54 -0
- package/dist/updater.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web-presenter.d.ts +0 -9
- package/dist/web-presenter.d.ts.map +1 -1
- package/dist/web-presenter.js +4 -24
- package/dist/web-presenter.js.map +1 -1
- package/dist/ws-client.d.ts +45 -0
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +13 -0
- package/dist/ws-client.js.map +1 -1
- package/package.json +15 -11
- 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/core-agent.d.ts
CHANGED
|
@@ -14,17 +14,13 @@ import type { ChildProcessWithoutNullStreams } from "node:child_process";
|
|
|
14
14
|
import type { AgentConfig } from "./types.js";
|
|
15
15
|
export declare class CoreAgent extends BaseMachineAgent {
|
|
16
16
|
private childProcess;
|
|
17
|
+
private _aborted;
|
|
18
|
+
/** How long to wait after SIGTERM before escalating to SIGKILL. */
|
|
19
|
+
private static readonly SIGKILL_DELAY_MS;
|
|
17
20
|
constructor(presenter: ConstructorParameters<typeof BaseMachineAgent>[0], runtime: AgentRuntimeConfig);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* completing a turn — the message is processed as the next conversation turn
|
|
22
|
-
* without spawning a new subprocess.
|
|
23
|
-
*/
|
|
24
|
-
sendUserMessage(text: string, images?: Array<{
|
|
25
|
-
data: string;
|
|
26
|
-
mimeType: string;
|
|
27
|
-
}>): boolean;
|
|
21
|
+
abort(): void;
|
|
22
|
+
kill(): boolean;
|
|
23
|
+
private killChildProcess;
|
|
28
24
|
/**
|
|
29
25
|
* Send a tool_result to the CLI's stdin (stream-json format).
|
|
30
26
|
* Used for interactive tools like AskUserQuestion.
|
|
@@ -32,6 +28,6 @@ export declare class CoreAgent extends BaseMachineAgent {
|
|
|
32
28
|
sendToolResponse(toolId: string, response: string): boolean;
|
|
33
29
|
protected getOnProcessSpawned(): ((child: ChildProcessWithoutNullStreams) => void) | undefined;
|
|
34
30
|
protected buildCliEnvironment(): Promise<Record<string, string>>;
|
|
35
|
-
protected buildExtraSystemPromptParts(
|
|
31
|
+
protected buildExtraSystemPromptParts(config: AgentConfig): string[];
|
|
36
32
|
}
|
|
37
33
|
//# sourceMappingURL=core-agent.d.ts.map
|
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,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
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
|
@@ -10,51 +10,69 @@
|
|
|
10
10
|
* in BaseMachineAgent.
|
|
11
11
|
*/
|
|
12
12
|
import { BaseMachineAgent } from "@aiden/agent-core";
|
|
13
|
-
import { accessSync, chmodSync, constants as fsConstants, statSync } from "node:fs";
|
|
14
13
|
export class CoreAgent extends BaseMachineAgent {
|
|
15
14
|
childProcess = null;
|
|
15
|
+
_aborted = false;
|
|
16
|
+
/** How long to wait after SIGTERM before escalating to SIGKILL. */
|
|
17
|
+
static SIGKILL_DELAY_MS = 3000;
|
|
16
18
|
constructor(presenter, runtime) {
|
|
17
19
|
super(presenter, runtime);
|
|
18
20
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!
|
|
21
|
+
abort() {
|
|
22
|
+
this._aborted = true;
|
|
23
|
+
super.abort();
|
|
24
|
+
}
|
|
25
|
+
kill() {
|
|
26
|
+
this._aborted = true;
|
|
27
|
+
super.abort();
|
|
28
|
+
const child = this.childProcess;
|
|
29
|
+
if (!child || child.killed || child.exitCode !== null)
|
|
28
30
|
return false;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
return this.killChildProcess(child);
|
|
32
|
+
}
|
|
33
|
+
killChildProcess(child) {
|
|
34
|
+
const pid = child.pid;
|
|
35
|
+
if (!pid)
|
|
31
36
|
return false;
|
|
37
|
+
console.info("[CoreAgent] Killing agent process", { pid });
|
|
32
38
|
try {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
source: { type: "base64", media_type: img.mimeType, data: img.data },
|
|
39
|
-
});
|
|
40
|
-
}
|
|
39
|
+
if (process.platform === "win32") {
|
|
40
|
+
child.kill("SIGTERM");
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
process.kill(-pid, "SIGTERM");
|
|
41
44
|
}
|
|
42
|
-
contentBlocks.push({ type: "text", text });
|
|
43
|
-
const message = JSON.stringify({
|
|
44
|
-
type: "user",
|
|
45
|
-
message: { role: "user", content: contentBlocks },
|
|
46
|
-
session_id: "default",
|
|
47
|
-
parent_tool_use_id: null,
|
|
48
|
-
});
|
|
49
|
-
stdin.write(message + "\n");
|
|
50
|
-
console.info("[CoreAgent] Sent user message to CLI stdin (continuation mode)");
|
|
51
|
-
return true;
|
|
52
45
|
}
|
|
53
46
|
catch (err) {
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
if (err.code !== "ESRCH") {
|
|
48
|
+
console.warn("[CoreAgent] SIGTERM failed", { pid, err });
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
child.kill("SIGTERM");
|
|
52
|
+
}
|
|
53
|
+
catch { /* already dead */ }
|
|
56
54
|
}
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
if (child.killed || child.exitCode !== null)
|
|
57
|
+
return;
|
|
58
|
+
console.warn("[CoreAgent] Escalating to SIGKILL", { pid });
|
|
59
|
+
try {
|
|
60
|
+
if (process.platform === "win32") {
|
|
61
|
+
child.kill("SIGKILL");
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
process.kill(-pid, "SIGKILL");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
if (err.code !== "ESRCH") {
|
|
69
|
+
console.warn("[CoreAgent] SIGKILL failed", { pid, err });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}, CoreAgent.SIGKILL_DELAY_MS);
|
|
73
|
+
return true;
|
|
57
74
|
}
|
|
75
|
+
// ── Interactive tool response (WS relay → stdin) ───────────────────────
|
|
58
76
|
/**
|
|
59
77
|
* Send a tool_result to the CLI's stdin (stream-json format).
|
|
60
78
|
* Used for interactive tools like AskUserQuestion.
|
|
@@ -95,6 +113,10 @@ export class CoreAgent extends BaseMachineAgent {
|
|
|
95
113
|
return (child) => {
|
|
96
114
|
this.childProcess = child;
|
|
97
115
|
child.on("exit", () => { this.childProcess = null; });
|
|
116
|
+
child.on("error", () => { this.childProcess = null; });
|
|
117
|
+
if (this._aborted) {
|
|
118
|
+
this.killChildProcess(child);
|
|
119
|
+
}
|
|
98
120
|
};
|
|
99
121
|
}
|
|
100
122
|
async buildCliEnvironment() {
|
|
@@ -113,47 +135,84 @@ export class CoreAgent extends BaseMachineAgent {
|
|
|
113
135
|
const existingSegments = new Set(basePath.split(":").filter(Boolean));
|
|
114
136
|
const missing = extraPaths.filter((p) => !existingSegments.has(p));
|
|
115
137
|
env.PATH = missing.length > 0 ? `${missing.join(":")}:${basePath}` : basePath;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
138
|
+
return env;
|
|
139
|
+
}
|
|
140
|
+
buildExtraSystemPromptParts(config) {
|
|
141
|
+
const parts = [];
|
|
142
|
+
// Inject current user identity so the agent knows who initiated the session.
|
|
143
|
+
if (config.currentUser) {
|
|
144
|
+
const u = config.currentUser;
|
|
145
|
+
const lines = ["# Current User"];
|
|
146
|
+
if (u.name)
|
|
147
|
+
lines.push(`- **Name**: ${u.name}`);
|
|
148
|
+
lines.push(`- **Email**: ${u.email}`);
|
|
149
|
+
lines.push(`- **User ID**: ${u.id}`);
|
|
150
|
+
lines.push("");
|
|
151
|
+
lines.push("This is the person who initiated this conversation. When creating tasks or assigning work, default to assigning to this user unless explicitly instructed otherwise.");
|
|
152
|
+
parts.push(lines.join("\n"));
|
|
153
|
+
}
|
|
154
|
+
// Inject task metadata so the agent has full context about the task it's working on.
|
|
155
|
+
// Prefer config.taskMeta (sent by the dispatch pipeline); fall back to env vars.
|
|
156
|
+
if (config.taskMeta) {
|
|
157
|
+
const meta = config.taskMeta;
|
|
158
|
+
const lines = ["# Task Context"];
|
|
159
|
+
lines.push(`- **Title**: ${meta.title}`);
|
|
160
|
+
lines.push(`- **Status**: ${meta.status.replace(/_/g, " ")}`);
|
|
161
|
+
if (meta.priority && meta.priority !== "none") {
|
|
162
|
+
lines.push(`- **Priority**: ${meta.priority.toUpperCase()}`);
|
|
163
|
+
}
|
|
164
|
+
if (meta.labels && meta.labels.length > 0) {
|
|
165
|
+
lines.push(`- **Labels**: ${meta.labels.join(", ")}`);
|
|
166
|
+
}
|
|
167
|
+
if (meta.assignees && meta.assignees.length > 0) {
|
|
168
|
+
const assigneeStr = meta.assignees.map((a) => a.name ?? a.email).join(", ");
|
|
169
|
+
lines.push(`- **Assignees**: ${assigneeStr}`);
|
|
170
|
+
}
|
|
171
|
+
if (meta.description) {
|
|
172
|
+
lines.push(`- **Description**:\n${meta.description}`);
|
|
173
|
+
}
|
|
174
|
+
if (meta.descriptionAttachmentIds && meta.descriptionAttachmentIds.length > 0) {
|
|
175
|
+
lines.push("");
|
|
176
|
+
lines.push("## Task Description Images");
|
|
177
|
+
lines.push("The task description contains images. Use the `attachment` MCP tool with op=\"get\" to view them:");
|
|
178
|
+
for (const att of meta.descriptionAttachmentIds) {
|
|
179
|
+
lines.push(`- Attachment ID: \`${att.id}\` (${att.filename})`);
|
|
136
180
|
}
|
|
137
181
|
}
|
|
182
|
+
parts.push(lines.join("\n"));
|
|
138
183
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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.
|
|
186
|
+
const taskId = config.taskId ?? process.env.AIDEN_TASK_ID;
|
|
187
|
+
const conversationId = config.conversationId ?? process.env.AIDEN_SESSION_ID;
|
|
188
|
+
const teamId = config.teamId;
|
|
142
189
|
const artifactIds = [];
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (
|
|
146
|
-
artifactIds.push(`- taskId: "${
|
|
147
|
-
if (
|
|
148
|
-
artifactIds.push(`- conversationId: "${
|
|
149
|
-
if (artifactIds.length
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
[
|
|
153
|
-
"When creating artifacts using MCP tools (create_plan, create_document_artifact, create_test_report), always pass these IDs:",
|
|
190
|
+
if (teamId)
|
|
191
|
+
artifactIds.push(`- teamId: "${teamId}"`);
|
|
192
|
+
if (taskId)
|
|
193
|
+
artifactIds.push(`- taskId: "${taskId}"`);
|
|
194
|
+
if (conversationId)
|
|
195
|
+
artifactIds.push(`- conversationId: "${conversationId}"`);
|
|
196
|
+
if (artifactIds.length > 0) {
|
|
197
|
+
parts.push([
|
|
198
|
+
"When creating artifacts using MCP tools (create_plan, create_document_artifact, create_test_report, upsert_prototype_version), always pass these IDs:",
|
|
154
199
|
...artifactIds,
|
|
155
|
-
].join("\n")
|
|
156
|
-
|
|
200
|
+
].join("\n"));
|
|
201
|
+
}
|
|
202
|
+
if (taskId && conversationId && teamId) {
|
|
203
|
+
parts.push([
|
|
204
|
+
"## Prototype Artifacts",
|
|
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.",
|
|
206
|
+
"Instead, generate a Vite React TypeScript source snapshot and call the Aiden MCP tool upsert_prototype_version with teamId, taskId, conversationId, title, sourceSnapshot, and packageJson.",
|
|
207
|
+
"For follow-up changes to the same prototype, call list_prototypes or get_prototype if needed, then call upsert_prototype_version again with the existing prototypeId and parentVersionId so the task Prototypes panel renders the new version.",
|
|
208
|
+
].join("\n"));
|
|
209
|
+
}
|
|
210
|
+
// Inject team context so the agent uses the active team as default for all MCP calls
|
|
211
|
+
// (list_tasks, search, start_task_session, etc.) without needing list_teams.
|
|
212
|
+
if (teamId) {
|
|
213
|
+
parts.push(`You are operating within team \`${teamId}\`. Always use this as the \`teamId\` for all MCP tool calls that accept it (list_tasks, search, start_task_session, etc.). Do not call list_teams.`);
|
|
214
|
+
}
|
|
215
|
+
return parts;
|
|
157
216
|
}
|
|
158
217
|
}
|
|
159
218
|
//# sourceMappingURL=core-agent.js.map
|
package/dist/core-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-agent.js","sourceRoot":"","sources":["../src/core-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAA2B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"core-agent.js","sourceRoot":"","sources":["../src/core-agent.ts"],"names":[],"mappings":"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"}
|