@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.
- package/dist/__tests__/v07.test.js +28 -0
- package/dist/__tests__/v07.test.js.map +1 -1
- package/dist/__tests__/v08.test.d.ts +1 -0
- package/dist/__tests__/v08.test.js +175 -0
- package/dist/__tests__/v08.test.js.map +1 -0
- package/dist/__tests__/v09.test.d.ts +1 -0
- package/dist/__tests__/v09.test.js +189 -0
- package/dist/__tests__/v09.test.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/lib/jsonl_tail.d.ts +43 -5
- package/dist/lib/jsonl_tail.js +66 -11
- package/dist/lib/jsonl_tail.js.map +1 -1
- package/dist/lib/spawn_cli.d.ts +27 -0
- package/dist/lib/spawn_cli.js +138 -14
- package/dist/lib/spawn_cli.js.map +1 -1
- package/dist/lib/state.d.ts +22 -0
- package/dist/lib/state.js +60 -21
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/telegram_status.js +7 -1
- package/dist/lib/telegram_status.js.map +1 -1
- package/dist/lib/version.d.ts +18 -0
- package/dist/lib/version.js +19 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/telegram/notifier.js +33 -1
- package/dist/telegram/notifier.js.map +1 -1
- package/dist/tools/dispatch.js +321 -8
- package/dist/tools/dispatch.js.map +1 -1
- package/dist/tools/lifecycle.js +44 -2
- package/dist/tools/lifecycle.js.map +1 -1
- package/dist/tools/ping.js +2 -1
- package/dist/tools/ping.js.map +1 -1
- package/dist/tools/userio.js +16 -6
- package/dist/tools/userio.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/jsonl_tail.d.ts
CHANGED
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Read the tail of a Claude Code session
|
|
2
|
+
* Read the tail of a Claude Code session event stream and derive a status
|
|
3
|
+
* snapshot.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
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
|
|
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
|
|
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;
|
package/dist/lib/jsonl_tail.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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(
|
|
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(
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
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
|
|
54
|
-
|
|
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(
|
|
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":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"jsonl_tail.js","sourceRoot":"","sources":["../../src/lib/jsonl_tail.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/spawn_cli.d.ts
CHANGED
|
@@ -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";
|
package/dist/lib/spawn_cli.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
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
|
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"spawn_cli.js","sourceRoot":"","sources":["../../src/lib/spawn_cli.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/state.d.ts
CHANGED
|
@@ -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;
|