@synaplink/orqlaude 0.7.2 → 0.9.1

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.
@@ -1,13 +1,32 @@
1
1
  /**
2
- * Read the tail of a Claude Code session JSONL and derive a status snapshot.
2
+ * Read the tail of a Claude Code session event stream and derive a status
3
+ * snapshot.
3
4
  *
4
- * Session files live at:
5
- * ~/.claude/projects/<encoded-cwd>/<session-id>.jsonl
5
+ * TWO source files are supported:
6
+ * 1. ~/.claude/projects/<encoded-cwd>/<session-id>.jsonl
7
+ * Written by the Desktop app for sessions it hosts.
8
+ * 2. <worktree>/.orqlaude.stdout.log
9
+ * Written by `spawn_via_cli` when it pipes `claude -p
10
+ * --output-format stream-json` to a file inside the spawned Agnet's
11
+ * worktree. The event format is identical (one JSON event per line);
12
+ * only the storage location differs.
13
+ *
14
+ * The caller MAY pass `stdoutPath` as a hint. The resolver prefers the
15
+ * Desktop JSONL when present (canonical), and falls back to the stdout log
16
+ * when the JSONL is missing and the stdout log exists. Without the hint,
17
+ * only the JSONL is consulted - so for `spawn_via_cli` Agnets (which never
18
+ * produce a JSONL), the caller MUST pass the hint or status reads will
19
+ * always be empty. See `Task.stdoutPath` in state.ts.
6
20
  *
7
21
  * v0.2.0 optimization: per-session byte-offset cache. After the first full
8
22
  * read we remember where we stopped and only parse new bytes on subsequent
9
23
  * snapshots. This matters for long-running fleets where status() is polled
10
- * frequently against multi-MB JSONLs.
24
+ * frequently against multi-MB streams.
25
+ *
26
+ * v0.9.0: the cache is keyed by RESOLVED path, not session id - so if the
27
+ * resolver picks JSONL one call and stdout-log the next (e.g. when the
28
+ * Desktop app starts writing mid-fleet), each path gets its own cache entry
29
+ * and we don't double-count tokens.
11
30
  *
12
31
  * The cache lives in-process; on MCP server restart it's rebuilt by re-reading
13
32
  * the file once. Cache hit reduces a `status()` call from O(filesize) to
@@ -16,7 +35,16 @@
16
35
  export interface SessionSnapshot {
17
36
  exists: boolean;
18
37
  sessionId: string;
38
+ /** Canonical Desktop-app JSONL path (whether or not the file exists). */
19
39
  jsonlPath: string;
40
+ /**
41
+ * Which file we actually read from. Either `jsonlPath` (Desktop app) or
42
+ * the `<worktree>/.orqlaude.stdout.log` passed in by the caller.
43
+ * v0.9.0: surfaces the source so the orchestrator can distinguish
44
+ * "Agnet never produced output" from "we didn't know where to look."
45
+ */
46
+ source: "jsonl" | "stdout_log" | "none";
47
+ resolvedPath: string | null;
20
48
  totalCostUsd: number;
21
49
  inputTokens: number;
22
50
  outputTokens: number;
@@ -35,6 +63,16 @@ export interface SessionSnapshot {
35
63
  }
36
64
  export declare function encodeCwdForProjects(cwd: string): string;
37
65
  export declare function jsonlPathFor(cwd: string, sessionId: string): string;
38
- export declare function snapshotSession(cwd: string, sessionId: string): Promise<SessionSnapshot>;
66
+ export declare function snapshotSession(cwd: string, sessionId: string,
67
+ /**
68
+ * Optional hint pointing at the `<worktree>/.orqlaude.stdout.log` file for
69
+ * Agnets spawned via spawn_via_cli. When provided AND the canonical
70
+ * Desktop JSONL does not exist, the resolver tails this file instead.
71
+ *
72
+ * v0.9.0: required for spawn_via_cli observability - the prior versions
73
+ * always returned an empty snapshot for CLI-spawned Agnets because the
74
+ * JSONL is never written.
75
+ */
76
+ stdoutPath?: string): Promise<SessionSnapshot>;
39
77
  /** For tests / forced refresh. */
40
78
  export declare function clearTailCache(): void;
@@ -7,12 +7,14 @@ export function encodeCwdForProjects(cwd) {
7
7
  export function jsonlPathFor(cwd, sessionId) {
8
8
  return path.join(HOME, ".claude", "projects", encodeCwdForProjects(cwd), `${sessionId}.jsonl`);
9
9
  }
10
- const cache = new Map(); // keyed by jsonlPath
10
+ const cache = new Map(); // keyed by RESOLVED path
11
11
  function emptySnap(sessionId, jsonlPath) {
12
12
  return {
13
13
  exists: false,
14
14
  sessionId,
15
15
  jsonlPath,
16
+ source: "none",
17
+ resolvedPath: null,
16
18
  totalCostUsd: 0,
17
19
  inputTokens: 0,
18
20
  outputTokens: 0,
@@ -27,31 +29,78 @@ function emptySnap(sessionId, jsonlPath) {
27
29
  terminationReason: null,
28
30
  };
29
31
  }
30
- export async function snapshotSession(cwd, sessionId) {
32
+ /**
33
+ * Pick which stream file to tail. Prefer the canonical Desktop JSONL when it
34
+ * exists; otherwise fall back to the spawn_via_cli stdout log when the
35
+ * caller has it on hand.
36
+ */
37
+ async function resolveStreamSource(jsonlPath, stdoutPath) {
38
+ try {
39
+ await fs.access(jsonlPath);
40
+ return { path: jsonlPath, source: "jsonl" };
41
+ }
42
+ catch {
43
+ /* JSONL missing - try the stdout-log hint. */
44
+ }
45
+ if (stdoutPath) {
46
+ try {
47
+ await fs.access(stdoutPath);
48
+ return { path: stdoutPath, source: "stdout_log" };
49
+ }
50
+ catch {
51
+ /* both gone */
52
+ }
53
+ }
54
+ return null;
55
+ }
56
+ export async function snapshotSession(cwd, sessionId,
57
+ /**
58
+ * Optional hint pointing at the `<worktree>/.orqlaude.stdout.log` file for
59
+ * Agnets spawned via spawn_via_cli. When provided AND the canonical
60
+ * Desktop JSONL does not exist, the resolver tails this file instead.
61
+ *
62
+ * v0.9.0: required for spawn_via_cli observability - the prior versions
63
+ * always returned an empty snapshot for CLI-spawned Agnets because the
64
+ * JSONL is never written.
65
+ */
66
+ stdoutPath) {
31
67
  const jsonlPath = jsonlPathFor(cwd, sessionId);
68
+ const resolved = await resolveStreamSource(jsonlPath, stdoutPath);
69
+ if (!resolved) {
70
+ // Neither file exists - empty snapshot.
71
+ return emptySnap(sessionId, jsonlPath);
72
+ }
73
+ const { path: streamPath, source } = resolved;
32
74
  let stat;
33
75
  try {
34
- stat = await fs.stat(jsonlPath);
76
+ stat = await fs.stat(streamPath);
35
77
  }
36
78
  catch (err) {
37
79
  if (err.code === "ENOENT")
38
80
  return emptySnap(sessionId, jsonlPath);
39
81
  throw err;
40
82
  }
41
- let entry = cache.get(jsonlPath);
42
- // If the file shrank or rotated, reset.
43
- if (entry && entry.byteOffset > stat.size) {
44
- cache.delete(jsonlPath);
83
+ let entry = cache.get(streamPath);
84
+ // v0.8.0: invalidate on inode change (file was replaced) OR mtime regression
85
+ // (clock rewind or replace) OR file-shrank (truncate). Catches the same-size
86
+ // truncation case the v0.2 cache missed.
87
+ if (entry &&
88
+ (entry.byteOffset > stat.size ||
89
+ entry.inode !== stat.ino ||
90
+ entry.mtimeMs > stat.mtimeMs)) {
91
+ cache.delete(streamPath);
45
92
  entry = undefined;
46
93
  }
47
- if (entry && entry.byteOffset === stat.size) {
94
+ if (entry && entry.byteOffset === stat.size && entry.mtimeMs === stat.mtimeMs) {
48
95
  return entry.snap; // no new data
49
96
  }
50
97
  // Read only the new bytes since last visit.
51
98
  const startOffset = entry?.byteOffset ?? 0;
52
99
  const carry = entry?.carry ?? "";
53
- const snap = entry ? { ...entry.snap, exists: true } : { ...emptySnap(sessionId, jsonlPath), exists: true };
54
- const fh = await fs.open(jsonlPath, "r");
100
+ const snap = entry
101
+ ? { ...entry.snap, exists: true, source, resolvedPath: streamPath }
102
+ : { ...emptySnap(sessionId, jsonlPath), exists: true, source, resolvedPath: streamPath };
103
+ const fh = await fs.open(streamPath, "r");
55
104
  try {
56
105
  const buf = Buffer.alloc(stat.size - startOffset);
57
106
  if (buf.byteLength > 0) {
@@ -73,7 +122,13 @@ export async function snapshotSession(cwd, sessionId) {
73
122
  }
74
123
  applyEvent(snap, evt);
75
124
  }
76
- cache.set(jsonlPath, { byteOffset: stat.size, carry: newCarry, snap });
125
+ cache.set(streamPath, {
126
+ byteOffset: stat.size,
127
+ carry: newCarry,
128
+ inode: stat.ino,
129
+ mtimeMs: stat.mtimeMs,
130
+ snap,
131
+ });
77
132
  }
78
133
  finally {
79
134
  await fh.close();
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl_tail.js","sourceRoot":"","sources":["../../src/lib/jsonl_tail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonl_tail.js","sourceRoot":"","sources":["../../src/lib/jsonl_tail.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,25 @@ export interface SpawnViaCliResult {
29
29
  stdoutPath: string;
30
30
  /** v0.7.1+: path to the file we wrote with the --mcp-config payload. */
31
31
  mcpConfigPath: string;
32
+ /**
33
+ * v0.9.0: path the parent process writes a JSON exit record to when the
34
+ * child terminates. Shape:
35
+ * { exit_code: number|null, signal: string|null, terminated_at: number,
36
+ * success: boolean }
37
+ * Persistent so a restarted orqlaude server can recover terminal state
38
+ * without waiting for the next status() poll.
39
+ */
40
+ exitJsonPath: string;
41
+ }
42
+ /**
43
+ * Shape persisted to `<worktree>/.orqlaude.exit.json` when the child exits.
44
+ * Read by status() / collect() to short-circuit PID-liveness checks.
45
+ */
46
+ export interface ChildExitRecord {
47
+ exit_code: number | null;
48
+ signal: string | null;
49
+ terminated_at: number;
50
+ success: boolean;
32
51
  }
33
52
  export interface SpawnViaCliInput {
34
53
  projectRoot: string;
@@ -68,5 +87,13 @@ export declare function createWorktreeForTask(input: {
68
87
  * stderr, throw with full context.
69
88
  */
70
89
  export declare function spawnAgnetViaCli(input: SpawnViaCliInput): Promise<SpawnViaCliResult>;
90
+ /**
91
+ * Read the child-exit record written by the `child.on('exit')` handler in
92
+ * `spawnAgnetViaCli`. Returns `null` if the file does not exist (child
93
+ * still running, OR the orqlaude server that owns the listener restarted
94
+ * before the child exited, OR the worktree was cleaned up).
95
+ */
96
+ export declare function readChildExitRecord(exitJsonPath: string): Promise<ChildExitRecord | null>;
71
97
  export declare function cleanupPlanWorktrees(projectRoot: string, planId: string): Promise<string[]>;
98
+ export declare function sanitizeChildEnv(overrides?: Record<string, string>): NodeJS.ProcessEnv;
72
99
  export { isProcessAlive } from "./process_lib.js";
@@ -1,5 +1,5 @@
1
- import { execSync, spawn } from "node:child_process";
2
- import { promises as fs, existsSync, readdirSync, statSync, readFileSync, accessSync, constants } from "node:fs";
1
+ import { execSync, spawn, spawnSync } from "node:child_process";
2
+ import { promises as fs, existsSync, readdirSync, statSync, readFileSync, writeFileSync, accessSync, constants, } from "node:fs";
3
3
  import path from "node:path";
4
4
  import os from "node:os";
5
5
  import { randomUUID } from "node:crypto";
@@ -53,6 +53,22 @@ export function findGitRoot(start) {
53
53
  dir = parent;
54
54
  }
55
55
  }
56
+ /**
57
+ * Git branch names have to satisfy git-check-ref-format. Most plain ASCII is
58
+ * OK; rejected: spaces, ASCII control chars, `:`, `?`, `*`, `[`, `\`, `~`,
59
+ * `^`, two consecutive dots, leading slash, trailing slash, trailing `.lock`,
60
+ * and `@{`. We strip anything not in a safe whitelist instead of trying to
61
+ * match git's rules exactly.
62
+ */
63
+ function sanitizeBranchName(name, fallback) {
64
+ const cleaned = name
65
+ .replace(/[^A-Za-z0-9._/-]/g, "-")
66
+ .replace(/\.\./g, ".")
67
+ .replace(/^[./-]+/, "")
68
+ .replace(/[./-]+$/, "")
69
+ .replace(/-+/g, "-");
70
+ return cleaned || fallback;
71
+ }
56
72
  export async function createWorktreeForTask(input) {
57
73
  const planShort = input.planId.slice(0, 8);
58
74
  const agnetSlug = (input.agnetName ?? input.taskId.slice(0, 8))
@@ -62,20 +78,35 @@ export async function createWorktreeForTask(input) {
62
78
  const worktreeBase = path.join(input.projectRoot, ".orqlaude-worktrees");
63
79
  await fs.mkdir(worktreeBase, { recursive: true });
64
80
  const wtPath = path.join(worktreeBase, `${planShort}-${agnetSlug}`);
65
- const branch = input.branchHint ? input.branchHint : `fleet/${planShort}/${agnetSlug}`;
81
+ const rawBranch = input.branchHint ? input.branchHint : `fleet/${planShort}/${agnetSlug}`;
82
+ // v0.8.0: defense-in-depth even though we spawn without a shell. A
83
+ // pathological branchHint can still break git itself if it contains
84
+ // characters git refuses. Sanitize aggressively.
85
+ const branch = sanitizeBranchName(rawBranch, `fleet/${planShort}/${agnetSlug}`);
66
86
  if (existsSync(wtPath)) {
67
87
  return { path: wtPath, branch };
68
88
  }
69
- try {
70
- execSync(`git worktree add "${wtPath}" -b "${branch}"`, { cwd: input.projectRoot, stdio: "pipe" });
71
- }
72
- catch (err) {
73
- const msg = (err.stderr?.toString?.() ?? err.message ?? "").toLowerCase();
89
+ // v0.8.0: use spawnSync with shell:false to defeat shell-injection via
90
+ // crafted branchHint or projectRoot paths. The previous code spliced both
91
+ // into a template string passed to execSync, which was vulnerable.
92
+ const result = spawnSync("git", ["worktree", "add", wtPath, "-b", branch], {
93
+ cwd: input.projectRoot,
94
+ stdio: "pipe",
95
+ });
96
+ if (result.status !== 0) {
97
+ const msg = (result.stderr?.toString() ?? "").toLowerCase();
74
98
  if (msg.includes("already exists")) {
75
- execSync(`git worktree add "${wtPath}" "${branch}"`, { cwd: input.projectRoot, stdio: "pipe" });
99
+ // Branch exists already check it out into the worktree without -b.
100
+ const retry = spawnSync("git", ["worktree", "add", wtPath, branch], {
101
+ cwd: input.projectRoot,
102
+ stdio: "pipe",
103
+ });
104
+ if (retry.status !== 0) {
105
+ throw new Error(`git worktree add failed (status ${retry.status}): ${retry.stderr?.toString() ?? "(no stderr)"}`);
106
+ }
76
107
  }
77
108
  else {
78
- throw err;
109
+ throw new Error(`git worktree add failed (status ${result.status}): ${result.stderr?.toString() ?? "(no stderr)"}`);
79
110
  }
80
111
  }
81
112
  return { path: wtPath, branch };
@@ -176,6 +207,11 @@ export async function spawnAgnetViaCli(input) {
176
207
  sessionId,
177
208
  "--output-format",
178
209
  "stream-json",
210
+ // v0.7.3: claude CLI now requires --verbose whenever
211
+ // --output-format=stream-json is used. Without it the child bails
212
+ // with: "Error: When using --print, --output-format=stream-json
213
+ // requires --verbose". Always emit them as a pair.
214
+ "--verbose",
179
215
  "--permission-mode",
180
216
  input.permissionMode ?? "bypassPermissions",
181
217
  "--mcp-config",
@@ -188,19 +224,46 @@ export async function spawnAgnetViaCli(input) {
188
224
  args.push(input.prompt); // positional — must be LAST and after `--`
189
225
  const commandLine = `${quoteArg(claudeBin)} ${args.map(quoteArg).join(" ")}`;
190
226
  // 6. Spawn detached with stdio piped to our log files.
227
+ // v0.8.0: sanitize the env first. orqlaude runs inside the Claude Desktop
228
+ // app, which sets a long list of CLAUDE_CODE_* vars (entrypoint, session
229
+ // id, provider-managed-by-host) intended for that hosted runtime. If those
230
+ // bleed into a spawned standalone `claude -p`, the child either fails to
231
+ // authenticate or behaves like a sub-session of a host that isn't there.
191
232
  const child = spawn(claudeBin, args, {
192
233
  cwd: wt.path,
193
234
  detached: true,
194
235
  stdio: ["ignore", stdoutFh.fd, stderrFh.fd],
195
- env: {
196
- ...process.env,
197
- ORQLAUDE_STATE_DIR: input.stateDir,
198
- },
236
+ env: sanitizeChildEnv({ ORQLAUDE_STATE_DIR: input.stateDir }),
199
237
  });
200
238
  // Close our FDs — the child holds its own dup'd copies via stdio.
201
239
  await stderrFh.close().catch(() => { });
202
240
  await stdoutFh.close().catch(() => { });
203
241
  const pid = child.pid ?? -1;
242
+ // v0.9.0: write a terminal-state record when the child exits, so
243
+ // status() / collect() can short-circuit PID-liveness polling.
244
+ // Registered BEFORE unref() so the listener survives. The orqlaude server
245
+ // is long-lived, so it WILL receive this event in the same process that
246
+ // spawned the child. If the server itself restarts before the child
247
+ // exits, status() falls back to PID-liveness polling - the exit file is
248
+ // a fast-path optimization, not the source of truth.
249
+ const exitJsonPath = path.join(wt.path, ".orqlaude.exit.json");
250
+ child.on("exit", (code, signal) => {
251
+ const record = {
252
+ exit_code: code,
253
+ signal,
254
+ terminated_at: Date.now(),
255
+ success: code === 0 && !signal,
256
+ };
257
+ // Best-effort write — if the worktree was already cleaned up by the
258
+ // orchestrator, this silently no-ops. We use the sync API because
259
+ // 'exit' fires during shutdown and the async fs queue may not flush.
260
+ try {
261
+ writeFileSync(exitJsonPath, JSON.stringify(record, null, 2));
262
+ }
263
+ catch {
264
+ /* worktree gone, or perms issue - status() will fall back to PID poll */
265
+ }
266
+ });
204
267
  child.unref();
205
268
  // 7. Healthcheck.
206
269
  const delay = input.healthCheckDelayMs ?? DEFAULT_HEALTHCHECK_MS;
@@ -229,8 +292,27 @@ export async function spawnAgnetViaCli(input) {
229
292
  stderrPath,
230
293
  stdoutPath,
231
294
  mcpConfigPath,
295
+ exitJsonPath,
232
296
  };
233
297
  }
298
+ /**
299
+ * Read the child-exit record written by the `child.on('exit')` handler in
300
+ * `spawnAgnetViaCli`. Returns `null` if the file does not exist (child
301
+ * still running, OR the orqlaude server that owns the listener restarted
302
+ * before the child exited, OR the worktree was cleaned up).
303
+ */
304
+ export async function readChildExitRecord(exitJsonPath) {
305
+ try {
306
+ const content = await fs.readFile(exitJsonPath, "utf8");
307
+ const parsed = JSON.parse(content);
308
+ if (typeof parsed.terminated_at !== "number")
309
+ return null;
310
+ return parsed;
311
+ }
312
+ catch {
313
+ return null;
314
+ }
315
+ }
234
316
  export async function cleanupPlanWorktrees(projectRoot, planId) {
235
317
  const planShort = planId.slice(0, 8);
236
318
  const base = path.join(projectRoot, ".orqlaude-worktrees");
@@ -271,6 +353,48 @@ async function readSafe(p, maxBytes) {
271
353
  return "";
272
354
  }
273
355
  }
356
+ /**
357
+ * Env vars to STRIP when spawning a standalone `claude -p` child.
358
+ *
359
+ * These come from orqlaude running inside the Claude Desktop app's
360
+ * embedded runtime. The Desktop app talks to its hosted CLI via stdio +
361
+ * these env-var hints. When we spawn a fresh detached claude process, those
362
+ * hints make the child think it's still attached to the host — typical
363
+ * symptom is "Not logged in" because CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST=1
364
+ * tells the child to defer authentication to the host's IPC channel, which
365
+ * doesn't exist for our detached spawn.
366
+ *
367
+ * We keep HOME, USER, PATH, LANG, LC_*, TERM, SHELL, and the user's own
368
+ * Anthropic auth env vars (unless they're empty, which signals the host was
369
+ * managing them).
370
+ */
371
+ const HOST_ENV_STRIP_PREFIXES = ["CLAUDE_CODE_", "CLAUDE_AGENT_"];
372
+ const HOST_ENV_STRIP_KEYS = new Set([
373
+ "CLAUDECODE",
374
+ "CLAUDE_EFFORT",
375
+ "AI_AGENT",
376
+ "BAGGAGE",
377
+ ]);
378
+ export function sanitizeChildEnv(overrides = {}) {
379
+ const out = {};
380
+ for (const [k, v] of Object.entries(process.env)) {
381
+ if (v === undefined)
382
+ continue;
383
+ if (HOST_ENV_STRIP_KEYS.has(k))
384
+ continue;
385
+ if (HOST_ENV_STRIP_PREFIXES.some((p) => k.startsWith(p)))
386
+ continue;
387
+ // Drop empty Anthropic auth env vars — they're placeholders the host
388
+ // sets when it manages auth itself. Real values are kept.
389
+ if ((k === "ANTHROPIC_API_KEY" || k === "ANTHROPIC_AUTH_TOKEN") && v.trim() === "")
390
+ continue;
391
+ out[k] = v;
392
+ }
393
+ for (const [k, v] of Object.entries(overrides)) {
394
+ out[k] = v;
395
+ }
396
+ return out;
397
+ }
274
398
  // Re-export for callers who used to import these from spawn_cli.
275
399
  export { isProcessAlive } from "./process_lib.js";
276
400
  //# sourceMappingURL=spawn_cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spawn_cli.js","sourceRoot":"","sources":["../../src/lib/spawn_cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAmDzD,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,UAAU,oBAAoB;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtG,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAC/E,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACxF,IAAI,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,4KAA4K,CAC7K,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;gBACtE,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QAChF,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAM3C;IACC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,SAAS,GACb,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC1C,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,SAAS,IAAI,SAAS,EAAE,CAAC;IACvF,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,CAAC;QACH,QAAQ,CAAC,qBAAqB,MAAM,SAAS,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACrG,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1E,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,qBAAqB,MAAM,MAAM,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAClG,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,cAAc,CAAC,eAAuB,EAAE,QAAgB;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,CAAC,eAAe,CAAC;gBACvB,GAAG,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE;aACtC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,sEAAsE;IACtE,wEAAwE;IACxE,wCAAwC;IACxC,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AACzC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAuB;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,oBAAoB,EAAE,CAAC;IAC5D,yCAAyC;IACzC,IAAI,CAAC;QACH,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,iBAAiB,SAAS,8EAA8E,CACzG,CAAC;IACJ,CAAC;IACD,uEAAuE;IACvE,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gDAAiD,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,qFAAqF;IACrF,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,2CAA2C,CAAC,CAAC;IAChH,CAAC;IAED,eAAe;IACf,MAAM,EAAE,GAAG,MAAM,qBAAqB,CAAC;QACrC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;IAE5G,kCAAkC;IAClC,0EAA0E;IAC1E,0EAA0E;IAC1E,kEAAkE;IAClE,uEAAuE;IACvE,qBAAqB;IACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAEhD,wEAAwE;IACxE,yEAAyE;IACzE,mDAAmD;IACnD,EAAE;IACF,uEAAuE;IACvE,0EAA0E;IAC1E,2EAA2E;IAC3E,sEAAsE;IACtE,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,sCAAsC;IACtC,MAAM,IAAI,GAAa;QACrB,SAAS;QACT,cAAc;QACd,SAAS;QACT,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,KAAK,CAAC,cAAc,IAAI,mBAAmB;QAC3C,cAAc;QACd,aAAa,EAAE,wCAAwC;KACxD,CAAC;IACF,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;IACtE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,2CAA2C;IAEpE,MAAM,WAAW,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE7E,uDAAuD;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE;QACnC,GAAG,EAAE,EAAE,CAAC,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3C,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,kBAAkB,EAAE,KAAK,CAAC,QAAQ;SACnC;KACF,CAAC,CAAC;IACH,kEAAkE;IAClE,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,kBAAkB;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,IAAI,sBAAsB,CAAC;IACjE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,uEAAuE;YACvE,mEAAmE;YACnE,8CAA8C;YAC9C,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,qCAAqC,GAAG,iCAAiC,KAAK,sEAAsE;gBAClJ,oBAAoB,WAAW,MAAM;gBACrC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,UAAU,OAAO,aAAa,MAAM,CAAC,CAAC,CAAC,WAAW,UAAU,iBAAiB,CAAC;gBAC1G,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,UAAU,OAAO,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,EAAE,CAAC,IAAI;QACrB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,SAAS;QACT,GAAG;QACH,SAAS;QACT,WAAW;QACX,UAAU;QACV,UAAU;QACV,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,MAAc;IAC5E,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACrF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,CAAS,EAAE,QAAgB;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"spawn_cli.js","sourceRoot":"","sources":["../../src/lib/spawn_cli.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,12 @@ export interface Task {
45
45
  /** v0.7.0+: paths to the captured stdout/stderr log files. */
46
46
  stderrPath?: string;
47
47
  stdoutPath?: string;
48
+ /**
49
+ * v0.9.0+: path to the per-task exit-record file written by the
50
+ * `child.on('exit')` handler in spawn_via_cli. Read as a fast-path
51
+ * in status() instead of waiting on a poll cycle.
52
+ */
53
+ exitJsonPath?: string;
48
54
  /** v0.5+: Human-friendly Agnet designation (e.g. "Zenith"). Used in CLI
49
55
  * output and Telegram notifications. Stable per task_id. */
50
56
  agnetName?: string;
@@ -205,6 +211,14 @@ export interface Plan {
205
211
  export interface State {
206
212
  schemaVersion: 3;
207
213
  plans: Record<string, Plan>;
214
+ /**
215
+ * v0.9.0+: notifications + response requests that aren't bound to any
216
+ * plan (e.g. session-startup pings, ad-hoc "I'm done" messages from the
217
+ * orchestrator). The notifier daemon drains these the same way it
218
+ * drains per-plan notifications.
219
+ */
220
+ orphanNotifications?: UserNotification[];
221
+ orphanResponseRequests?: UserResponseRequest[];
208
222
  }
209
223
  export declare class StateStore {
210
224
  private filePath;
@@ -226,6 +240,14 @@ export declare class StateStore {
226
240
  * restores the in-memory cache from the pre-mutation snapshot.
227
241
  */
228
242
  update<T>(mutator: (state: State) => T | Promise<T>): Promise<T>;
243
+ /**
244
+ * v0.8.0: every acquisition mints a fresh per-instance UUID and writes it
245
+ * into the lock file alongside the PID. Release uses that UUID to confirm
246
+ * we still own the lock before deleting; if another process reclaimed
247
+ * the lock as "stale" while we were working, we leave it alone instead of
248
+ * deleting THEIR lock and exposing a race window to a third process.
249
+ */
250
+ private currentLockToken;
229
251
  private acquireFileLock;
230
252
  private releaseFileLock;
231
253
  private persist;