ccgateway 0.1.9 → 0.2.2

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/spawner.js CHANGED
@@ -1,118 +1,327 @@
1
- import { spawn, execSync } from "node:child_process";
2
- import { writeFileSync, mkdirSync } from "node:fs";
1
+ import { spawn, execFile } from "node:child_process";
2
+ import { writeFile, mkdir } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { randomBytes } from "node:crypto";
5
5
  // ── CCSpawner ──────────────────────────────────────────────────────────────
6
6
  const DEFAULT_TIMEOUT_MS = 300_000; // 5 minutes
7
7
  const IMAGE_TIMEOUT_MS = 600_000; // 10 minutes — vision calls on Opus are slower
8
+ /** Inactivity timeout: kill if no stdout data for this long. */
9
+ const INACTIVITY_TIMEOUT_MS = 900_000; // 15 minutes of silence
10
+ /** Absolute safety cap so processes can't run forever. */
11
+ const MAX_ABSOLUTE_TIMEOUT_MS = 1_800_000; // 30 minutes
8
12
  export class CCSpawner {
9
- static TRIAGE_TIMEOUT_MS = 15_000;
10
- static TRIAGE_PROMPT = `Given this user request, will it require intensive coding work (multiple file edits, building features, refactoring, debugging across files) or is it a quick task (answering questions, small edits, short explanations)?
11
-
12
- Respond with ONLY the single word "async" or "sync". Nothing else.
13
-
14
- User request:`;
13
+ _muxBinary = undefined; // undefined = not detected yet
14
+ // ── Triage ───────────────────────────────────────────────────────────────
15
15
  /**
16
- * Run a quick `claude --print` with Sonnet to classify a message as
17
- * "sync" (quick task) or "async" (intensive, long-running).
18
- *
19
- * Defaults to "sync" on timeout, unexpected output, or errors.
16
+ * Quick Sonnet call to classify a message as "sync" or "async".
17
+ * Defaults to "sync" on any failure (timeout, parse error, etc.).
20
18
  */
21
- async triage(message, _model) {
22
- const triageModel = "sonnet";
23
- const args = [
24
- "--print",
25
- "--dangerously-skip-permissions",
26
- "-p",
27
- `${CCSpawner.TRIAGE_PROMPT} ${message}`,
28
- "--model",
29
- triageModel,
30
- "--bare",
31
- ];
32
- return new Promise((resolve) => {
33
- const child = spawn("claude", args, {
34
- stdio: ["ignore", "pipe", "pipe"],
35
- });
36
- let stdout = "";
37
- let timedOut = false;
38
- child.stdout.on("data", (chunk) => {
39
- stdout += chunk.toString();
40
- });
41
- const timer = setTimeout(() => {
42
- timedOut = true;
43
- child.kill("SIGTERM");
44
- }, CCSpawner.TRIAGE_TIMEOUT_MS);
45
- child.on("close", () => {
46
- clearTimeout(timer);
47
- if (timedOut) {
48
- resolve("sync");
49
- return;
50
- }
51
- const trimmed = stdout.trim().toLowerCase();
52
- resolve(trimmed === "async" ? "async" : "sync");
53
- });
54
- child.on("error", () => {
55
- clearTimeout(timer);
56
- resolve("sync");
19
+ async triage(message) {
20
+ const triagePrompt = [
21
+ "Classify this user message as either sync or async.",
22
+ "Reply with ONLY the word 'sync' or 'async', nothing else.",
23
+ "",
24
+ "sync = quick question, greeting, short answer, status check, clarification",
25
+ "async = intensive coding task, refactor, build feature, multi-file edit, debugging, long-running work",
26
+ ].join("\n");
27
+ try {
28
+ const result = await this.spawnText({
29
+ workspace: "/tmp",
30
+ message,
31
+ systemPrompt: triagePrompt,
32
+ model: "claude-haiku-4-5-20251001",
33
+ allowedTools: [],
34
+ timeoutMs: 15_000,
57
35
  });
58
- });
36
+ const answer = result.response.trim().toLowerCase();
37
+ if (answer === "async")
38
+ return "async";
39
+ return "sync";
40
+ }
41
+ catch {
42
+ return "sync";
43
+ }
59
44
  }
45
+ // ── Async spawn (tmux interactive mode) ──────────────────────────────────
60
46
  /**
61
- * Spawn a `claude --print` invocation.
47
+ * Launch Claude Code in interactive mode inside a detached tmux session.
62
48
  *
63
- * When `images` are provided, uses `--input-format stream-json` to pass
64
- * image content blocks directly via stdin (avoids the Read-tool
65
- * round-trip). Otherwise falls back to the simpler `-p "<message>"` form
66
- * with stdin closed.
49
+ * - No `--print` flag runs the full interactive REPL
50
+ * - `--dangerously-skip-permissions` so it won't block on tool approvals
51
+ * - System prompt injected via `--append-system-prompt-file`
52
+ * - User's message sent via `tmux send-keys` after a short init delay
53
+ * - Returns immediately with the session name and task directory
67
54
  */
68
- async spawn(options) {
69
- const hasImages = options.images && options.images.length > 0;
70
- return hasImages ? this.spawnStreamJson(options) : this.spawnText(options);
55
+ async spawnAsync(options) {
56
+ const mux = await this.detectMux();
57
+ if (!mux) {
58
+ throw new Error("Neither tmux nor screen is available. Install tmux to use async spawn.");
59
+ }
60
+ const { workspace, message, systemPrompt, model, agentId, ccgHome } = options;
61
+ // Session naming: ccg-<agentId>-<shortId>
62
+ const shortId = randomBytes(2).toString("hex");
63
+ const sessionName = `ccg-${agentId}-${shortId}`;
64
+ // Task directory
65
+ const taskDir = join(ccgHome, "async-tasks", sessionName);
66
+ await mkdir(taskDir, { recursive: true });
67
+ // Write system prompt as INSTRUCTIONS.md
68
+ await writeFile(join(taskDir, "INSTRUCTIONS.md"), systemPrompt, "utf-8");
69
+ // Write the user's message to PROMPT.txt for send-keys
70
+ const promptFile = join(taskDir, "PROMPT.txt");
71
+ await writeFile(promptFile, message, "utf-8");
72
+ const outputLog = join(taskDir, "output.log");
73
+ const instructionsFile = join(taskDir, "INSTRUCTIONS.md");
74
+ if (mux === "tmux") {
75
+ // Launch tmux session with claude in interactive mode
76
+ const tmuxCmd = [
77
+ `claude --dangerously-skip-permissions`,
78
+ `--append-system-prompt-file ${instructionsFile}`,
79
+ `--model ${model}`,
80
+ `2>&1 | tee ${outputLog}`,
81
+ ].join(" ");
82
+ await execAsync("tmux", [
83
+ "new-session", "-d",
84
+ "-s", sessionName,
85
+ "-c", workspace,
86
+ tmuxCmd,
87
+ ]);
88
+ // Wait for claude to initialize, then send the prompt + Enter
89
+ await sleep(3000);
90
+ // Use tmux load-buffer + paste-buffer for reliable long message delivery
91
+ await execAsync("tmux", ["load-buffer", "-b", "ccg-prompt", promptFile]);
92
+ await execAsync("tmux", ["paste-buffer", "-b", "ccg-prompt", "-d", "-t", sessionName]);
93
+ await execAsync("tmux", ["send-keys", "-t", sessionName, "Enter"]);
94
+ }
95
+ else {
96
+ // screen fallback
97
+ const screenCmd = [
98
+ `cd ${workspace} &&`,
99
+ `claude --dangerously-skip-permissions`,
100
+ `--append-system-prompt-file ${instructionsFile}`,
101
+ `--model ${model}`,
102
+ `2>&1 | tee ${outputLog}`,
103
+ ].join(" ");
104
+ await execAsync("screen", [
105
+ "-dmS", sessionName,
106
+ "bash", "-c", screenCmd,
107
+ ]);
108
+ // Wait for claude to initialize, then stuff the prompt
109
+ await sleep(3000);
110
+ // screen uses -X stuff to send text
111
+ await execAsync("screen", [
112
+ "-S", sessionName,
113
+ "-X", "stuff",
114
+ message + "\n",
115
+ ]);
116
+ }
117
+ return { sessionName, taskDir };
71
118
  }
72
- // ── Multiplexer detection ────────────────────────────────────────────
73
- detectMultiplexer() {
119
+ /**
120
+ * Detect available terminal multiplexer. Cached after first call.
121
+ * Returns "tmux", "screen", or null.
122
+ */
123
+ async detectMux() {
124
+ if (this._muxBinary !== undefined)
125
+ return this._muxBinary;
74
126
  try {
75
- execSync("which tmux", { stdio: "pipe" });
127
+ await execAsync("which", ["tmux"]);
128
+ this._muxBinary = "tmux";
76
129
  return "tmux";
77
130
  }
78
131
  catch {
79
132
  // tmux not found, try screen
80
133
  }
81
134
  try {
82
- execSync("which screen", { stdio: "pipe" });
135
+ await execAsync("which", ["screen"]);
136
+ this._muxBinary = "screen";
83
137
  return "screen";
84
138
  }
85
139
  catch {
86
140
  // screen not found either
87
141
  }
88
- throw new Error("Neither tmux nor screen is installed. Install one to use async tasks.");
142
+ this._muxBinary = null;
143
+ return null;
89
144
  }
90
- // ── Async spawn (background task via tmux/screen) ───────────────────
91
- async spawnAsync(options) {
92
- const { workspace, message, systemPrompt, model, ccgHome, agentId } = options;
93
- const mux = this.detectMultiplexer();
94
- const shortId = randomBytes(2).toString("hex");
95
- const sessionName = `ccg-${agentId}-${shortId}`;
96
- const taskDir = join(ccgHome, "async-tasks", sessionName);
97
- mkdirSync(taskDir, { recursive: true });
98
- // Write system prompt + result instruction
99
- const instructions = `${systemPrompt}\n\nWhen you are completely finished with the task, write a concise summary of what you did to: ${join(taskDir, "RESULT.md")}`;
100
- writeFileSync(join(taskDir, "INSTRUCTIONS.md"), instructions, "utf-8");
101
- const outputLog = join(taskDir, "output.log");
102
- const instructionsFile = join(taskDir, "INSTRUCTIONS.md");
103
- // Escape single quotes in message for shell
104
- const escapedMessage = message.replace(/'/g, "'\\''");
105
- if (mux === "tmux") {
106
- const cmd = `tmux new-session -d -s ${sessionName} -c '${workspace}' "claude --dangerously-skip-permissions --append-system-prompt-file '${instructionsFile}' --model ${model} -p '${escapedMessage}' 2>&1 | tee '${outputLog}'"`;
107
- execSync(cmd, { stdio: "pipe" });
145
+ /**
146
+ * Check if a tmux/screen session is still alive.
147
+ */
148
+ async isSessionAlive(sessionName) {
149
+ const mux = await this.detectMux();
150
+ if (!mux)
151
+ return false;
152
+ try {
153
+ if (mux === "tmux") {
154
+ await execAsync("tmux", ["has-session", "-t", sessionName]);
155
+ return true;
156
+ }
157
+ else {
158
+ const { stdout } = await execAsyncOutput("screen", ["-ls", sessionName]);
159
+ return stdout.includes(sessionName);
160
+ }
161
+ }
162
+ catch {
163
+ return false;
164
+ }
165
+ }
166
+ // ── Batch spawn ──────────────────────────────────────────────────────────
167
+ /**
168
+ * Spawn a `claude --print` invocation (batch mode — collects full output).
169
+ *
170
+ * Used by CLI chat. For gateway streaming, use `spawnStreaming()` instead.
171
+ */
172
+ async spawn(options) {
173
+ const hasImages = options.images && options.images.length > 0;
174
+ return hasImages ? this.spawnStreamJson(options) : this.spawnText(options);
175
+ }
176
+ /**
177
+ * Spawn claude with `--output-format stream-json --include-partial-messages`
178
+ * and relay incremental text to the caller via `onChunk`.
179
+ *
180
+ * Uses an **activity-based timeout**: the process is killed only after
181
+ * `INACTIVITY_TIMEOUT_MS` of silence (no stdout data), not after an
182
+ * absolute duration. A safety cap of `MAX_ABSOLUTE_TIMEOUT_MS` prevents
183
+ * runaway processes.
184
+ */
185
+ async spawnStreaming(options, onChunk) {
186
+ const { workspace, message, systemPrompt, model, images = [], } = options;
187
+ const hasImages = images.length > 0;
188
+ const args = [
189
+ "--print",
190
+ "--dangerously-skip-permissions",
191
+ "--output-format",
192
+ "stream-json",
193
+ "--verbose",
194
+ "--include-partial-messages",
195
+ "--append-system-prompt",
196
+ systemPrompt,
197
+ "--model",
198
+ model,
199
+ ];
200
+ if (hasImages) {
201
+ args.push("--input-format", "stream-json");
108
202
  }
109
203
  else {
110
- const cmd = `screen -dmS ${sessionName} bash -c "cd '${workspace}' && claude --dangerously-skip-permissions --append-system-prompt-file '${instructionsFile}' --model ${model} -p '${escapedMessage}' 2>&1 | tee '${outputLog}'"`;
111
- execSync(cmd, { stdio: "pipe" });
204
+ args.push("-p", message);
112
205
  }
113
- return { sessionName, taskDir };
206
+ return new Promise((resolve) => {
207
+ const child = spawn("claude", args, {
208
+ cwd: workspace,
209
+ stdio: [hasImages ? "pipe" : "ignore", "pipe", "pipe"],
210
+ });
211
+ let accumulated = "";
212
+ let stderr = "";
213
+ let lastActivity = Date.now();
214
+ let timedOut = false;
215
+ let lineBuffer = "";
216
+ let finalResult = "";
217
+ // If images, send content via stdin
218
+ if (hasImages && child.stdin) {
219
+ const content = [];
220
+ for (const img of images) {
221
+ content.push({
222
+ type: "image",
223
+ source: {
224
+ type: "base64",
225
+ media_type: img.mediaType,
226
+ data: img.base64,
227
+ },
228
+ });
229
+ }
230
+ content.push({ type: "text", text: message });
231
+ const stdinPayload = JSON.stringify({
232
+ type: "user",
233
+ message: { role: "user", content },
234
+ }) + "\n";
235
+ child.stdin.write(stdinPayload);
236
+ child.stdin.end();
237
+ }
238
+ child.stdout.on("data", (chunk) => {
239
+ lastActivity = Date.now();
240
+ lineBuffer += chunk.toString();
241
+ // Parse complete JSONL lines
242
+ const lines = lineBuffer.split("\n");
243
+ lineBuffer = lines.pop(); // keep incomplete line in buffer
244
+ for (const line of lines) {
245
+ if (!line.trim())
246
+ continue;
247
+ try {
248
+ const event = JSON.parse(line);
249
+ // Partial text delta — relay to caller
250
+ if (event.type === "stream_event" &&
251
+ event.event?.type === "content_block_delta" &&
252
+ event.event?.delta?.type === "text_delta") {
253
+ accumulated += event.event.delta.text;
254
+ onChunk?.(accumulated);
255
+ }
256
+ // Final result event
257
+ if (event.type === "result" && typeof event.result === "string") {
258
+ finalResult = event.result;
259
+ }
260
+ }
261
+ catch {
262
+ // skip non-JSON lines
263
+ }
264
+ }
265
+ });
266
+ child.stderr.on("data", (chunk) => {
267
+ stderr += chunk.toString();
268
+ });
269
+ // Activity-based timeout: kill only on silence
270
+ const activityCheck = setInterval(() => {
271
+ if (Date.now() - lastActivity > INACTIVITY_TIMEOUT_MS) {
272
+ timedOut = true;
273
+ child.kill("SIGTERM");
274
+ setTimeout(() => {
275
+ if (!child.killed)
276
+ child.kill("SIGKILL");
277
+ }, 5000);
278
+ clearInterval(activityCheck);
279
+ }
280
+ }, 10_000);
281
+ // Absolute safety cap
282
+ const absoluteTimer = setTimeout(() => {
283
+ if (!child.killed) {
284
+ timedOut = true;
285
+ child.kill("SIGTERM");
286
+ setTimeout(() => {
287
+ if (!child.killed)
288
+ child.kill("SIGKILL");
289
+ }, 5000);
290
+ }
291
+ }, MAX_ABSOLUTE_TIMEOUT_MS);
292
+ child.on("close", (code) => {
293
+ clearInterval(activityCheck);
294
+ clearTimeout(absoluteTimer);
295
+ const exitCode = timedOut ? 124 : (code ?? 1);
296
+ const response = finalResult || accumulated || "";
297
+ const inputChars = message.length + systemPrompt.length;
298
+ const outputChars = response.length;
299
+ resolve({
300
+ response,
301
+ stderr,
302
+ exitCode,
303
+ tokensEstimate: {
304
+ in: Math.ceil(inputChars / 4),
305
+ out: Math.ceil(outputChars / 4),
306
+ },
307
+ });
308
+ });
309
+ child.on("error", (err) => {
310
+ clearInterval(activityCheck);
311
+ clearTimeout(absoluteTimer);
312
+ resolve({
313
+ response: "",
314
+ stderr: err.message,
315
+ exitCode: 1,
316
+ tokensEstimate: {
317
+ in: Math.ceil((message.length + systemPrompt.length) / 4),
318
+ out: 0,
319
+ },
320
+ });
321
+ });
322
+ });
114
323
  }
115
- // ── Text-only path ────────────────────────────────────────────────────
324
+ // ── Text-only path (batch — used by CLI chat via spawn()) ───────────────
116
325
  spawnText(options) {
117
326
  const { workspace, message, systemPrompt, model, timeoutMs = DEFAULT_TIMEOUT_MS, } = options;
118
327
  const args = [
@@ -176,7 +385,7 @@ User request:`;
176
385
  });
177
386
  });
178
387
  }
179
- // ── Image-aware path (stream-json) ────────────────────────────────────
388
+ // ── Image-aware path (stream-json, batch — used by CLI chat via spawn())
180
389
  spawnStreamJson(options) {
181
390
  const { workspace, message, systemPrompt, model, images = [], timeoutMs = IMAGE_TIMEOUT_MS, } = options;
182
391
  const args = [
@@ -265,6 +474,32 @@ User request:`;
265
474
  });
266
475
  }
267
476
  }
477
+ // ── Utility functions ─────────────────────────────────────────────────────
478
+ /** Promise wrapper around execFile. */
479
+ function execAsync(cmd, args) {
480
+ return new Promise((resolve, reject) => {
481
+ execFile(cmd, args, (error) => {
482
+ if (error)
483
+ reject(error);
484
+ else
485
+ resolve();
486
+ });
487
+ });
488
+ }
489
+ /** Promise wrapper around execFile that returns stdout. */
490
+ function execAsyncOutput(cmd, args) {
491
+ return new Promise((resolve, reject) => {
492
+ execFile(cmd, args, (error, stdout) => {
493
+ if (error)
494
+ reject(error);
495
+ else
496
+ resolve({ stdout });
497
+ });
498
+ });
499
+ }
500
+ function sleep(ms) {
501
+ return new Promise((resolve) => setTimeout(resolve, ms));
502
+ }
268
503
  // ── Stream-json output parser ─────────────────────────────────────────────
269
504
  /**
270
505
  * Extract the assistant's text response from stream-json JSONL output.
@@ -1 +1 @@
1
- {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccgateway",
3
- "version": "0.1.9",
3
+ "version": "0.2.2",
4
4
  "description": "Multi-agent orchestration layer built on Claude Code CLI",
5
5
  "type": "module",
6
6
  "license": "MIT",