@electric-agent/studio 1.1.0 → 1.3.0
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/bridge/claude-code-docker.d.ts +27 -1
- package/dist/bridge/claude-code-docker.d.ts.map +1 -1
- package/dist/bridge/claude-code-docker.js +171 -43
- package/dist/bridge/claude-code-docker.js.map +1 -1
- package/dist/bridge/claude-code-sprites.d.ts +24 -0
- package/dist/bridge/claude-code-sprites.d.ts.map +1 -1
- package/dist/bridge/claude-code-sprites.js +177 -39
- package/dist/bridge/claude-code-sprites.js.map +1 -1
- package/dist/bridge/claude-md-generator.d.ts +1 -0
- package/dist/bridge/claude-md-generator.d.ts.map +1 -1
- package/dist/bridge/claude-md-generator.js +64 -7
- package/dist/bridge/claude-md-generator.js.map +1 -1
- package/dist/bridge/codex-docker.d.ts +65 -0
- package/dist/bridge/codex-docker.d.ts.map +1 -0
- package/dist/bridge/codex-docker.js +242 -0
- package/dist/bridge/codex-docker.js.map +1 -0
- package/dist/bridge/codex-json-parser.d.ts +31 -0
- package/dist/bridge/codex-json-parser.d.ts.map +1 -0
- package/dist/bridge/codex-json-parser.js +274 -0
- package/dist/bridge/codex-json-parser.js.map +1 -0
- package/dist/bridge/codex-md-generator.d.ts +14 -0
- package/dist/bridge/codex-md-generator.d.ts.map +1 -0
- package/dist/bridge/codex-md-generator.js +45 -0
- package/dist/bridge/codex-md-generator.js.map +1 -0
- package/dist/bridge/codex-sprites.d.ts +59 -0
- package/dist/bridge/codex-sprites.d.ts.map +1 -0
- package/dist/bridge/codex-sprites.js +237 -0
- package/dist/bridge/codex-sprites.js.map +1 -0
- package/dist/bridge/create-app-skill.d.ts +11 -0
- package/dist/bridge/create-app-skill.d.ts.map +1 -0
- package/dist/bridge/create-app-skill.js +39 -0
- package/dist/bridge/create-app-skill.js.map +1 -0
- package/dist/bridge/index.d.ts +0 -3
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/index.js +0 -3
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/stream-json-parser.d.ts +0 -2
- package/dist/bridge/stream-json-parser.d.ts.map +1 -1
- package/dist/bridge/stream-json-parser.js +0 -18
- package/dist/bridge/stream-json-parser.js.map +1 -1
- package/dist/client/assets/index-Bq9zwhHj.css +1 -0
- package/dist/client/assets/index-Dgpqg5fv.js +234 -0
- package/dist/client/index.html +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/sandbox/daytona.js +4 -4
- package/dist/sandbox/daytona.js.map +1 -1
- package/dist/sandbox/docker.d.ts +0 -1
- package/dist/sandbox/docker.d.ts.map +1 -1
- package/dist/sandbox/docker.js +10 -42
- package/dist/sandbox/docker.js.map +1 -1
- package/dist/sandbox/sprites.d.ts +0 -6
- package/dist/sandbox/sprites.d.ts.map +1 -1
- package/dist/sandbox/sprites.js +4 -36
- package/dist/sandbox/sprites.js.map +1 -1
- package/dist/sandbox/types.d.ts +0 -8
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/server.d.ts +2 -5
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +195 -160
- package/dist/server.js.map +1 -1
- package/dist/session-auth.d.ts +3 -0
- package/dist/session-auth.d.ts.map +1 -0
- package/dist/session-auth.js +11 -0
- package/dist/session-auth.js.map +1 -0
- package/dist/sessions.d.ts +0 -2
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js.map +1 -1
- package/package.json +2 -2
- package/dist/client/assets/index-BeZ6CTGd.css +0 -1
- package/dist/client/assets/index-DRLXdDNp.js +0 -241
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
* The bridge translates Claude Code's stream-json output into EngineEvents
|
|
6
6
|
* and writes them to the Durable Stream for the UI. User messages and
|
|
7
7
|
* gate responses are sent to Claude Code's stdin.
|
|
8
|
+
*
|
|
9
|
+
* Claude Code runs in one-shot mode (`-p`) and exits after completing.
|
|
10
|
+
* On iterate (follow-up message), the bridge respawns Claude Code with
|
|
11
|
+
* `--resume <sessionId>` so it picks up the previous conversation context.
|
|
8
12
|
*/
|
|
9
13
|
import type { EngineEvent } from "@electric-agent/protocol";
|
|
10
14
|
import type { StreamConnectionInfo } from "../streams.js";
|
|
@@ -20,6 +24,8 @@ export interface ClaudeCodeDockerConfig {
|
|
|
20
24
|
allowedTools?: string[];
|
|
21
25
|
/** Additional CLI flags */
|
|
22
26
|
extraFlags?: string[];
|
|
27
|
+
/** Studio server port — used to set up AskUserQuestion hooks inside the container */
|
|
28
|
+
studioPort?: number;
|
|
23
29
|
}
|
|
24
30
|
export declare class ClaudeCodeDockerBridge implements SessionBridge {
|
|
25
31
|
readonly sessionId: string;
|
|
@@ -33,10 +39,18 @@ export declare class ClaudeCodeDockerBridge implements SessionBridge {
|
|
|
33
39
|
private completeCallbacks;
|
|
34
40
|
private closed;
|
|
35
41
|
private proc;
|
|
42
|
+
/** Claude Code session ID captured from stream-json system.init — used for --resume */
|
|
43
|
+
private claudeSessionId;
|
|
44
|
+
/** Whether a Claude Code process is currently running */
|
|
45
|
+
private running;
|
|
46
|
+
/** Whether the parser already emitted a session_end (from a "result" message) */
|
|
47
|
+
private resultReceived;
|
|
48
|
+
/** Whether hooks have been installed in the container */
|
|
49
|
+
private hooksInstalled;
|
|
36
50
|
constructor(sessionId: string, connection: StreamConnectionInfo, containerId: string, config: ClaudeCodeDockerConfig);
|
|
37
51
|
emit(event: EngineEvent): Promise<void>;
|
|
38
52
|
/**
|
|
39
|
-
* Send a follow-up user message to Claude Code
|
|
53
|
+
* Send a follow-up user message to Claude Code by respawning with --resume.
|
|
40
54
|
* Used for iteration requests (the user types a new message in the UI).
|
|
41
55
|
*/
|
|
42
56
|
sendCommand(cmd: Record<string, unknown>): Promise<void>;
|
|
@@ -49,6 +63,18 @@ export declare class ClaudeCodeDockerBridge implements SessionBridge {
|
|
|
49
63
|
onComplete(cb: (success: boolean) => void): void;
|
|
50
64
|
start(): Promise<void>;
|
|
51
65
|
close(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Install Claude Code hooks inside the container so that AskUserQuestion
|
|
68
|
+
* blocks until the user answers in the studio UI.
|
|
69
|
+
* The hook script forwards the PreToolUse event to the studio server via HTTP,
|
|
70
|
+
* which blocks the response until the gate is resolved.
|
|
71
|
+
*/
|
|
72
|
+
private installHooks;
|
|
73
|
+
/**
|
|
74
|
+
* Spawn a new Claude Code process. Called for both the initial prompt
|
|
75
|
+
* and follow-up iterate messages (with --resume).
|
|
76
|
+
*/
|
|
77
|
+
private spawnClaude;
|
|
52
78
|
private handleLine;
|
|
53
79
|
private dispatchEvent;
|
|
54
80
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-docker.d.ts","sourceRoot":"","sources":["../../src/bridge/claude-code-docker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-code-docker.d.ts","sourceRoot":"","sources":["../../src/bridge/claude-code-docker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAE9D,MAAM,WAAW,sBAAsB;IACtC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAeD,qBAAa,sBAAuB,YAAW,aAAa;IAC3D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9C,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,mBAAmB,CAA0C;IACrE,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,IAAI,CAA4B;IAExC,uFAAuF;IACvF,OAAO,CAAC,eAAe,CAAsB;IAC7C,yDAAyD;IACzD,OAAO,CAAC,OAAO,CAAQ;IACvB,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAQ;IAC9B,yDAAyD;IACzD,OAAO,CAAC,cAAc,CAAQ;gBAG7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,sBAAsB;IAezB,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C;;;OAGG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D;;;OAGG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnF,YAAY,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIpD,UAAU,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,KAAK,IAAI,IAAI;IAiBb;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAgEpB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAuHnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;IAiDrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAQxB"}
|
|
@@ -5,8 +5,12 @@
|
|
|
5
5
|
* The bridge translates Claude Code's stream-json output into EngineEvents
|
|
6
6
|
* and writes them to the Durable Stream for the UI. User messages and
|
|
7
7
|
* gate responses are sent to Claude Code's stdin.
|
|
8
|
+
*
|
|
9
|
+
* Claude Code runs in one-shot mode (`-p`) and exits after completing.
|
|
10
|
+
* On iterate (follow-up message), the bridge respawns Claude Code with
|
|
11
|
+
* `--resume <sessionId>` so it picks up the previous conversation context.
|
|
8
12
|
*/
|
|
9
|
-
import { spawn } from "node:child_process";
|
|
13
|
+
import { execFileSync, spawn } from "node:child_process";
|
|
10
14
|
import * as readline from "node:readline";
|
|
11
15
|
import { DurableStream } from "@durable-streams/client";
|
|
12
16
|
import { ts } from "@electric-agent/protocol";
|
|
@@ -21,6 +25,7 @@ const DEFAULT_ALLOWED_TOOLS = [
|
|
|
21
25
|
"WebSearch",
|
|
22
26
|
"TodoWrite",
|
|
23
27
|
"AskUserQuestion",
|
|
28
|
+
"Skill",
|
|
24
29
|
];
|
|
25
30
|
export class ClaudeCodeDockerBridge {
|
|
26
31
|
sessionId;
|
|
@@ -34,6 +39,14 @@ export class ClaudeCodeDockerBridge {
|
|
|
34
39
|
completeCallbacks = [];
|
|
35
40
|
closed = false;
|
|
36
41
|
proc = null;
|
|
42
|
+
/** Claude Code session ID captured from stream-json system.init — used for --resume */
|
|
43
|
+
claudeSessionId = null;
|
|
44
|
+
/** Whether a Claude Code process is currently running */
|
|
45
|
+
running = false;
|
|
46
|
+
/** Whether the parser already emitted a session_end (from a "result" message) */
|
|
47
|
+
resultReceived = false;
|
|
48
|
+
/** Whether hooks have been installed in the container */
|
|
49
|
+
hooksInstalled = false;
|
|
37
50
|
constructor(sessionId, connection, containerId, config) {
|
|
38
51
|
this.sessionId = sessionId;
|
|
39
52
|
this.streamUrl = connection.url;
|
|
@@ -53,15 +66,15 @@ export class ClaudeCodeDockerBridge {
|
|
|
53
66
|
await this.writer.append(JSON.stringify(msg));
|
|
54
67
|
}
|
|
55
68
|
/**
|
|
56
|
-
* Send a follow-up user message to Claude Code
|
|
69
|
+
* Send a follow-up user message to Claude Code by respawning with --resume.
|
|
57
70
|
* Used for iteration requests (the user types a new message in the UI).
|
|
58
71
|
*/
|
|
59
72
|
async sendCommand(cmd) {
|
|
60
|
-
if (this.closed
|
|
73
|
+
if (this.closed)
|
|
61
74
|
return;
|
|
62
|
-
// For iteration:
|
|
75
|
+
// For iteration: respawn Claude Code with --resume
|
|
63
76
|
if (cmd.command === "iterate" && typeof cmd.request === "string") {
|
|
64
|
-
this.
|
|
77
|
+
this.spawnClaude(cmd.request, this.claudeSessionId ?? undefined);
|
|
65
78
|
return;
|
|
66
79
|
}
|
|
67
80
|
// For initial "new" command: this is handled in start() via the prompt
|
|
@@ -109,22 +122,139 @@ export class ClaudeCodeDockerBridge {
|
|
|
109
122
|
async start() {
|
|
110
123
|
if (this.closed)
|
|
111
124
|
return;
|
|
112
|
-
|
|
125
|
+
this.spawnClaude(this.config.prompt);
|
|
126
|
+
}
|
|
127
|
+
close() {
|
|
128
|
+
this.closed = true;
|
|
129
|
+
if (this.proc) {
|
|
130
|
+
try {
|
|
131
|
+
this.proc.stdin?.end();
|
|
132
|
+
this.proc.kill("SIGTERM");
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Process may already be dead
|
|
136
|
+
}
|
|
137
|
+
this.proc = null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// -----------------------------------------------------------------------
|
|
141
|
+
// Private helpers
|
|
142
|
+
// -----------------------------------------------------------------------
|
|
143
|
+
/**
|
|
144
|
+
* Install Claude Code hooks inside the container so that AskUserQuestion
|
|
145
|
+
* blocks until the user answers in the studio UI.
|
|
146
|
+
* The hook script forwards the PreToolUse event to the studio server via HTTP,
|
|
147
|
+
* which blocks the response until the gate is resolved.
|
|
148
|
+
*/
|
|
149
|
+
installHooks() {
|
|
150
|
+
const port = this.config.studioPort;
|
|
151
|
+
if (!port)
|
|
152
|
+
return;
|
|
153
|
+
const hookDir = `${this.config.cwd}/.claude/hooks`;
|
|
154
|
+
const settingsFile = `${this.config.cwd}/.claude/settings.local.json`;
|
|
155
|
+
// Studio server is on the host — use host.docker.internal to reach it
|
|
156
|
+
const studioUrl = `http://host.docker.internal:${port}`;
|
|
157
|
+
const forwardScript = `#!/bin/bash
|
|
158
|
+
# Forward AskUserQuestion hook events to Electric Agent studio.
|
|
159
|
+
# Blocks until the user answers in the web UI.
|
|
160
|
+
BODY="$(cat)"
|
|
161
|
+
RESPONSE=$(curl -s -X POST "${studioUrl}/api/sessions/${this.sessionId}/hook-event" \\
|
|
162
|
+
-H "Content-Type: application/json" \\
|
|
163
|
+
-d "\${BODY}" \\
|
|
164
|
+
--max-time 360 \\
|
|
165
|
+
--connect-timeout 5 \\
|
|
166
|
+
2>/dev/null)
|
|
167
|
+
if echo "\${RESPONSE}" | grep -q '"hookSpecificOutput"'; then
|
|
168
|
+
echo "\${RESPONSE}"
|
|
169
|
+
fi
|
|
170
|
+
exit 0`;
|
|
171
|
+
// Configure hooks in settings.local.json.
|
|
172
|
+
// Tool permissions come from --allowedTools CLI flag instead.
|
|
173
|
+
// Hook format: each event has matcher groups, each with a `hooks` array.
|
|
174
|
+
const settings = JSON.stringify({
|
|
175
|
+
hooks: {
|
|
176
|
+
PreToolUse: [
|
|
177
|
+
{
|
|
178
|
+
matcher: "AskUserQuestion",
|
|
179
|
+
hooks: [
|
|
180
|
+
{
|
|
181
|
+
type: "command",
|
|
182
|
+
command: `${hookDir}/forward.sh`,
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
try {
|
|
190
|
+
// Use base64 encoding to avoid heredoc delimiter issues in docker exec
|
|
191
|
+
const forwardB64 = Buffer.from(forwardScript).toString("base64");
|
|
192
|
+
const settingsB64 = Buffer.from(settings).toString("base64");
|
|
193
|
+
const setupCmd = [
|
|
194
|
+
`mkdir -p '${hookDir}'`,
|
|
195
|
+
`echo '${forwardB64}' | base64 -d > '${hookDir}/forward.sh'`,
|
|
196
|
+
`chmod +x '${hookDir}/forward.sh'`,
|
|
197
|
+
`echo '${settingsB64}' | base64 -d > '${settingsFile}'`,
|
|
198
|
+
].join(" && ");
|
|
199
|
+
execFileSync("docker", ["exec", this.containerId, "bash", "-c", setupCmd], {
|
|
200
|
+
timeout: 10_000,
|
|
201
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
202
|
+
});
|
|
203
|
+
console.log(`[claude-code-docker] Installed AskUserQuestion hooks in container`);
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
console.error(`[claude-code-docker] Failed to install hooks:`, err);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Spawn a new Claude Code process. Called for both the initial prompt
|
|
211
|
+
* and follow-up iterate messages (with --resume).
|
|
212
|
+
*/
|
|
213
|
+
spawnClaude(prompt, resumeSessionId) {
|
|
214
|
+
// Kill any existing process
|
|
215
|
+
if (this.proc) {
|
|
216
|
+
try {
|
|
217
|
+
this.proc.stdin?.end();
|
|
218
|
+
this.proc.kill("SIGTERM");
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
// Already dead
|
|
222
|
+
}
|
|
223
|
+
this.proc = null;
|
|
224
|
+
}
|
|
225
|
+
// Install hooks on first spawn (they persist for resume spawns)
|
|
226
|
+
if (!this.hooksInstalled) {
|
|
227
|
+
this.installHooks();
|
|
228
|
+
this.hooksInstalled = true;
|
|
229
|
+
}
|
|
230
|
+
// Reset parser state for the new process
|
|
231
|
+
this.parser = createStreamJsonParser();
|
|
232
|
+
this.resultReceived = false;
|
|
233
|
+
this.running = true;
|
|
113
234
|
const model = this.config.model ?? "claude-sonnet-4-6";
|
|
114
|
-
// Build the claude CLI command
|
|
235
|
+
// Build the claude CLI command.
|
|
236
|
+
// Use --allowedTools to grant permissions (keeps hooks firing, unlike
|
|
237
|
+
// --dangerously-skip-permissions which bypasses hooks entirely).
|
|
238
|
+
// Use --settings to pass hook configuration directly (more reliable
|
|
239
|
+
// than settings.local.json which may not be loaded by all versions).
|
|
240
|
+
const allowedTools = this.config.allowedTools ?? DEFAULT_ALLOWED_TOOLS;
|
|
115
241
|
const claudeArgs = [
|
|
116
242
|
"-p",
|
|
117
|
-
|
|
243
|
+
prompt,
|
|
118
244
|
"--output-format",
|
|
119
245
|
"stream-json",
|
|
120
246
|
"--verbose",
|
|
121
247
|
"--model",
|
|
122
248
|
model,
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
249
|
+
...(this.hooksInstalled
|
|
250
|
+
? ["--allowedTools", allowedTools.join(",")]
|
|
251
|
+
: ["--dangerously-skip-permissions"]),
|
|
126
252
|
...(this.config.extraFlags ?? []),
|
|
127
253
|
];
|
|
254
|
+
// Add --resume if we have a previous session ID
|
|
255
|
+
if (resumeSessionId) {
|
|
256
|
+
claudeArgs.push("--resume", resumeSessionId);
|
|
257
|
+
}
|
|
128
258
|
// Escape for bash
|
|
129
259
|
const escapedArgs = claudeArgs.map((a) => `'${a.replace(/'/g, "'\\''")}'`).join(" ");
|
|
130
260
|
const cmd = `cd '${this.config.cwd}' && claude ${escapedArgs}`;
|
|
@@ -133,12 +263,13 @@ export class ClaudeCodeDockerBridge {
|
|
|
133
263
|
this.proc = spawn("docker", ["exec", this.containerId, "bash", "-c", cmd], {
|
|
134
264
|
stdio: ["pipe", "pipe", "pipe"],
|
|
135
265
|
});
|
|
136
|
-
console.log(`[claude-code-docker] Started: session=${this.sessionId} container=${this.containerId} pid=${this.proc.pid}`);
|
|
266
|
+
console.log(`[claude-code-docker] Started: session=${this.sessionId} container=${this.containerId} pid=${this.proc.pid} resume=${resumeSessionId ?? "none"}`);
|
|
137
267
|
console.log(`[claude-code-docker] cmd: ${cmd}`);
|
|
268
|
+
const currentProc = this.proc;
|
|
138
269
|
// Read stdout line by line (stream-json NDJSON)
|
|
139
|
-
if (
|
|
270
|
+
if (currentProc.stdout) {
|
|
140
271
|
const rl = readline.createInterface({
|
|
141
|
-
input:
|
|
272
|
+
input: currentProc.stdout,
|
|
142
273
|
terminal: false,
|
|
143
274
|
});
|
|
144
275
|
rl.on("line", (line) => {
|
|
@@ -149,9 +280,9 @@ export class ClaudeCodeDockerBridge {
|
|
|
149
280
|
});
|
|
150
281
|
}
|
|
151
282
|
// Log stderr
|
|
152
|
-
if (
|
|
283
|
+
if (currentProc.stderr) {
|
|
153
284
|
const stderrRl = readline.createInterface({
|
|
154
|
-
input:
|
|
285
|
+
input: currentProc.stderr,
|
|
155
286
|
terminal: false,
|
|
156
287
|
});
|
|
157
288
|
stderrRl.on("line", (line) => {
|
|
@@ -160,36 +291,29 @@ export class ClaudeCodeDockerBridge {
|
|
|
160
291
|
}
|
|
161
292
|
});
|
|
162
293
|
}
|
|
163
|
-
// Handle process exit
|
|
164
|
-
|
|
294
|
+
// Handle process exit — defer to let pending readline events flush first,
|
|
295
|
+
// which prevents duplicate session_end (the parser emits one from "result").
|
|
296
|
+
currentProc.on("exit", (code) => {
|
|
165
297
|
console.log(`[claude-code-docker] Process exited: code=${code} session=${this.sessionId}`);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
298
|
+
setTimeout(() => {
|
|
299
|
+
// Capture session ID from parser state before marking not running
|
|
300
|
+
if (this.parser.state.sessionId) {
|
|
301
|
+
this.claudeSessionId = this.parser.state.sessionId;
|
|
302
|
+
}
|
|
303
|
+
this.running = false;
|
|
304
|
+
// Only emit session_end from exit handler if the parser didn't already
|
|
305
|
+
// emit one (via a "result" message). This prevents double session_end.
|
|
306
|
+
if (!this.closed && !this.resultReceived) {
|
|
307
|
+
const endEvent = {
|
|
308
|
+
type: "session_end",
|
|
309
|
+
success: code === 0,
|
|
310
|
+
ts: ts(),
|
|
311
|
+
};
|
|
312
|
+
this.dispatchEvent(endEvent);
|
|
313
|
+
}
|
|
314
|
+
}, 100);
|
|
175
315
|
});
|
|
176
316
|
}
|
|
177
|
-
close() {
|
|
178
|
-
this.closed = true;
|
|
179
|
-
if (this.proc) {
|
|
180
|
-
try {
|
|
181
|
-
this.proc.stdin?.end();
|
|
182
|
-
this.proc.kill("SIGTERM");
|
|
183
|
-
}
|
|
184
|
-
catch {
|
|
185
|
-
// Process may already be dead
|
|
186
|
-
}
|
|
187
|
-
this.proc = null;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
// -----------------------------------------------------------------------
|
|
191
|
-
// Private helpers
|
|
192
|
-
// -----------------------------------------------------------------------
|
|
193
317
|
handleLine(line) {
|
|
194
318
|
const trimmed = line.trim();
|
|
195
319
|
if (!trimmed)
|
|
@@ -203,6 +327,10 @@ export class ClaudeCodeDockerBridge {
|
|
|
203
327
|
// Write to Durable Stream for UI
|
|
204
328
|
const msg = { source: "agent", ...event };
|
|
205
329
|
this.writer.append(JSON.stringify(msg)).catch(() => { });
|
|
330
|
+
// Track session_end from result messages to prevent duplicates
|
|
331
|
+
if (event.type === "session_end") {
|
|
332
|
+
this.resultReceived = true;
|
|
333
|
+
}
|
|
206
334
|
// Detect dev:start in Bash tool_use → emit app_ready for the UI preview
|
|
207
335
|
if (event.type === "pre_tool_use" && event.tool_name === "Bash") {
|
|
208
336
|
const cmd = event.tool_input?.command;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-docker.js","sourceRoot":"","sources":["../../src/bridge/claude-code-docker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-code-docker.js","sourceRoot":"","sources":["../../src/bridge/claude-code-docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
* The bridge translates Claude Code's stream-json output into EngineEvents
|
|
6
6
|
* and writes them to the Durable Stream for the UI. User messages and
|
|
7
7
|
* gate responses are sent to Claude Code's stdin.
|
|
8
|
+
*
|
|
9
|
+
* Claude Code runs in one-shot mode (`-p`) and exits after completing.
|
|
10
|
+
* On iterate (follow-up message), the bridge respawns Claude Code with
|
|
11
|
+
* `--resume <sessionId>` so it picks up the previous conversation context.
|
|
8
12
|
*/
|
|
9
13
|
import type { EngineEvent } from "@electric-agent/protocol";
|
|
10
14
|
import type { Sprite } from "@fly/sprites";
|
|
@@ -21,6 +25,8 @@ export interface ClaudeCodeSpritesConfig {
|
|
|
21
25
|
allowedTools?: string[];
|
|
22
26
|
/** Additional CLI flags */
|
|
23
27
|
extraFlags?: string[];
|
|
28
|
+
/** Studio server URL — used to set up AskUserQuestion hooks inside the sprite */
|
|
29
|
+
studioUrl?: string;
|
|
24
30
|
}
|
|
25
31
|
export declare class ClaudeCodeSpritesBridge implements SessionBridge {
|
|
26
32
|
readonly sessionId: string;
|
|
@@ -34,6 +40,14 @@ export declare class ClaudeCodeSpritesBridge implements SessionBridge {
|
|
|
34
40
|
private completeCallbacks;
|
|
35
41
|
private closed;
|
|
36
42
|
private cmd;
|
|
43
|
+
/** Claude Code session ID captured from stream-json system.init — used for --resume */
|
|
44
|
+
private claudeSessionId;
|
|
45
|
+
/** Whether a Claude Code process is currently running */
|
|
46
|
+
private running;
|
|
47
|
+
/** Whether the parser already emitted a session_end (from a "result" message) */
|
|
48
|
+
private resultReceived;
|
|
49
|
+
/** Whether hooks have been installed in the sprite */
|
|
50
|
+
private hooksInstalled;
|
|
37
51
|
constructor(sessionId: string, connection: StreamConnectionInfo, sprite: Sprite, config: ClaudeCodeSpritesConfig);
|
|
38
52
|
emit(event: EngineEvent): Promise<void>;
|
|
39
53
|
sendCommand(cmd: Record<string, unknown>): Promise<void>;
|
|
@@ -42,6 +56,16 @@ export declare class ClaudeCodeSpritesBridge implements SessionBridge {
|
|
|
42
56
|
onComplete(cb: (success: boolean) => void): void;
|
|
43
57
|
start(): Promise<void>;
|
|
44
58
|
close(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Install Claude Code hooks inside the sprite so that AskUserQuestion
|
|
61
|
+
* blocks until the user answers in the studio UI.
|
|
62
|
+
*/
|
|
63
|
+
private installHooks;
|
|
64
|
+
/**
|
|
65
|
+
* Spawn a new Claude Code process. Called for both the initial prompt
|
|
66
|
+
* and follow-up iterate messages (with --resume).
|
|
67
|
+
*/
|
|
68
|
+
private spawnClaudeAsync;
|
|
45
69
|
private handleLine;
|
|
46
70
|
private dispatchEvent;
|
|
47
71
|
private writeUserMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-sprites.d.ts","sourceRoot":"","sources":["../../src/bridge/claude-code-sprites.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-code-sprites.d.ts","sourceRoot":"","sources":["../../src/bridge/claude-code-sprites.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEzD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAI9D,MAAM,WAAW,uBAAuB;IACvC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAeD,qBAAa,uBAAwB,YAAW,aAAa;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE9C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,mBAAmB,CAA0C;IACrE,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,GAAG,CAA6B;IAExC,uFAAuF;IACvF,OAAO,CAAC,eAAe,CAAsB;IAC7C,yDAAyD;IACzD,OAAO,CAAC,OAAO,CAAQ;IACvB,iFAAiF;IACjF,OAAO,CAAC,cAAc,CAAQ;IAC9B,sDAAsD;IACtD,OAAO,CAAC,cAAc,CAAQ;gBAG7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,oBAAoB,EAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,uBAAuB;IAe1B,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCnF,YAAY,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIpD,UAAU,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,KAAK,IAAI,IAAI;IAgBb;;;OAGG;YACW,YAAY;IA0D1B;;;OAGG;YACW,gBAAgB;IAmI9B,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;IA8CrB,OAAO,CAAC,gBAAgB;CAQxB"}
|