@monoes/monomindcli 2.16.9 → 2.16.10

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.
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Mount-point stubs for the SDK sandbox's write-denies, held for the whole run.
3
+ *
4
+ * The Claude Code sandbox (bubblewrap) denies writes to a fixed set of
5
+ * "dangerous" paths: in the role's cwd, in every directory above it that is
6
+ * writable in the sandbox, in the Claude config dir and in $HOME. For one that
7
+ * does not exist it binds /dev/null onto it, so bwrap creates a 0-byte,
8
+ * mode-0444 file there as the mount point (an empty directory for a missing
9
+ * `.claude/`), and the SDK deletes it again when the command ends
10
+ * (sandbox-runtime cleanupBwrapMountPoints). The SDK only coordinates that
11
+ * within one process. Every role is its own CLI process sharing one cwd and
12
+ * one ~/.claude, so role B, wrapping a command while role A's stub exists,
13
+ * takes the stub for a real file and binds it onto itself (`--ro-bind P P`);
14
+ * A's command ends, A deletes it, and B's bwrap dies with "Can't find source
15
+ * path ~/.claude/local" (release runs since 2.16.x: 0–5 per run, each a
16
+ * sandbox-fault).
17
+ *
18
+ * So before a sandboxed role starts, the runtime creates every such path that
19
+ * is missing, the way bwrap would (an empty 0444 file; a plain `.claude/`
20
+ * directory to hold them), and keeps it until the run ends. The SDK then only
21
+ * ever finds an existing path, which it binds read-only and never tracks or
22
+ * deletes, so no process removes a mount source another one is about to use.
23
+ * At the end the runtime removes only what it created itself — still the same
24
+ * inode, still empty; a path that already existed is never touched. Every
25
+ * stub is also written to a per-machine ledger (defaultStubLedger()), so the
26
+ * ones a SIGKILL'd daemon or a reboot leaves behind (an empty read-only file
27
+ * at ~/.claude/commands would break the user's own Claude config for good)
28
+ * are reclaimed by the next runtime under the same rule (reclaim()).
29
+ *
30
+ * The lists are what claude-agent-sdk 0.3.226 binds (read off /proc/self/
31
+ * mountinfo inside its sandbox; sandbox-stubs-sdk.test.ts fails when an SDK
32
+ * upgrade adds one). Left out on purpose: `.git/config.lock` (held, it makes
33
+ * every `git config` write fail), the dirs the CLI writes into itself
34
+ * (projects, shell-snapshots, session-env, plugins, backups), which a file
35
+ * would break, and the state files it writes itself (.claude.json,
36
+ * .config.json, .credentials.json): a CLI starting on an empty .config.json
37
+ * exits with "configuration file … is corrupted". A path whose parent does not
38
+ * exist is skipped.
39
+ */
40
+ /** Relative to the role's cwd. Also what git-guard.ts hides from `git add`. */
41
+ export declare const CWD_STUBS: string[];
42
+ /** Relative to the Claude config dir ($CLAUDE_CONFIG_DIR, else ~/.claude). */
43
+ export declare const CONFIG_DIR_STUBS: string[];
44
+ /** Relative to where the global config file lives ($CLAUDE_CONFIG_DIR, else $HOME). */
45
+ export declare const GLOBAL_CONFIG_STUBS: string[];
46
+ /** Every stub path the sandbox binds for a role with this cwd and HOME, where
47
+ * `writableRoots` is the sandbox's `filesystem.allowWrite`. A `.claude`
48
+ * directory comes before the files in it. */
49
+ export declare function sandboxStubPaths(ctx: {
50
+ cwd: string;
51
+ home: string;
52
+ writableRoots: string[];
53
+ env?: NodeJS.ProcessEnv;
54
+ }): string[];
55
+ /** The per-machine crash ledger: `MONOMIND_ORGRT_STUBS_DIR`, else
56
+ * ~/.monomind/orgrt-sandbox-stubs (next to orgrt-broker and orgrt-operator). */
57
+ export declare function defaultStubLedger(env?: NodeJS.ProcessEnv): string;
58
+ export interface LedgerEntry {
59
+ path: string;
60
+ ino: number;
61
+ dev: number;
62
+ kind: 'file' | 'dir';
63
+ pid: number;
64
+ /** This pid's namespace and boot, so a later reclaim() can tell a dead pid
65
+ * in our own namespace apart from a live one we simply cannot see from a
66
+ * different namespace. Absent on an entry written before this field
67
+ * existed (see isLegacy). */
68
+ pidNamespace?: string;
69
+ bootId?: string;
70
+ runId: string;
71
+ createdAt: string;
72
+ }
73
+ /** Reads what identifies THIS process's pid namespace and boot, so a ledger
74
+ * entry can later tell a dead pid in our own namespace (safe to reclaim)
75
+ * apart from a live daemon's pid that we simply cannot see (the Claude SDK
76
+ * sandbox runs every role with `bwrap --unshare-pid`: `process.kill(pid, 0)`
77
+ * on a pid outside our namespace always throws ESRCH, alive or not). */
78
+ export interface IdentitySource {
79
+ /** `/proc/self/ns/pid`'s target, e.g. `pid:[4026531836]`; undefined if it
80
+ * cannot be read (older kernel, no /proc). */
81
+ pidNamespace(): string | undefined;
82
+ /** `/proc/sys/kernel/random/boot_id`, stable for one boot and never reused
83
+ * across a reboot — unlike a pid, which is. */
84
+ bootId(): string | undefined;
85
+ }
86
+ /** The stubs this process created, and which runs still need each one. */
87
+ export declare class SandboxStubs {
88
+ private readonly ledger?;
89
+ private readonly identity;
90
+ private readonly stubs;
91
+ private exitHook;
92
+ private reclaimed;
93
+ /** `ledger`: the crash-ledger file (default defaultStubLedger(), read when
94
+ * first needed); null keeps no ledger. `identity`: overridable in tests;
95
+ * defaults to reading this process's real pid namespace and boot id. */
96
+ constructor(ledger?: string | null | undefined, identity?: IdentitySource);
97
+ private get ledgerFile();
98
+ /** Creates each missing path — a `.claude` path as a directory, anything
99
+ * else as an empty 0444 file — and records `owner` on every path this
100
+ * process created. The first call reclaims a dead runtime's stubs first.
101
+ * Returns the paths created now. */
102
+ hold(owner: string, paths: string[]): string[];
103
+ /** Drops `owner`; removes the stubs no other run holds. Returns them. */
104
+ release(owner: string): string[];
105
+ releaseAll(): void;
106
+ /**
107
+ * Stubs a runtime that died without cleaning up (SIGKILL, reboot) left in
108
+ * the ledger. Each is removed under the same rule as our own — same inode,
109
+ * still empty — and forgotten either way: a changed path is no longer a
110
+ * stub. While another live runtime has stubs in the ledger, its roles may
111
+ * be binding the dead one's as existing files, so they are adopted instead:
112
+ * held by this process and removed when its first run ends. Entries of live
113
+ * runtimes are kept. Returns the paths removed.
114
+ */
115
+ reclaim(): string[];
116
+ private entry;
117
+ /** Is `e` an entry this process itself wrote? For a modern entry that also
118
+ * requires our current namespace and boot to match — a matching pid alone
119
+ * can be a different process after a pid wrap, or the same-numbered pid in
120
+ * an unrelated namespace. A legacy entry (no pidNamespace/bootId) falls
121
+ * back to the bare pid check it was written under — and so does every
122
+ * entry when OUR OWN identity could not be read (older kernel, no /proc):
123
+ * with no `ourNs`/`ourBootId` to compare against, a modern entry's real
124
+ * values would always look "different", which is not a safe basis for
125
+ * ownership either. */
126
+ private isOwn;
127
+ /** Is `e` safe to reclaim? A different boot always is (pids and namespace
128
+ * ids are meaningless across a reboot). Same boot but a different pid
129
+ * namespace never is — we cannot tell alive from dead across namespaces
130
+ * (`process.kill` always throws ESRCH there), so it is left alone rather
131
+ * than guessed at. Same boot and same namespace (or a legacy entry) falls
132
+ * back to the bare pid-alive check — and so does every entry when OUR OWN
133
+ * identity could not be read (older kernel, no /proc): without `ourNs`/
134
+ * `ourBootId` to compare against, a modern entry's real boot/namespace
135
+ * ids would always compare unequal, which would misjudge every live
136
+ * entry as a different boot and reclaim it. */
137
+ private isDead;
138
+ private updateLedger;
139
+ /** Files before the directories holding them; each only while unchanged. */
140
+ private remove;
141
+ }
142
+ /** One per process: every org run in it shares the cwd and ~/.claude stubs. */
143
+ export declare const sandboxStubs: SandboxStubs;
144
+ //# sourceMappingURL=sandbox-stubs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-stubs.d.ts","sourceRoot":"","sources":["../../../src/orgrt/sandbox-stubs.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAoCH,+EAA+E;AAC/E,eAAO,MAAM,SAAS,UAYrB,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,UAqB5B,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAKF;;8CAE8C;AAC9C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GAAG,MAAM,EAAE,CAoBX;AAWD;iFACiF;AACjF,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAK9E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ;;;kCAG8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AA6CD;;;;yEAIyE;AACzE,MAAM,WAAW,cAAc;IAC7B;mDAC+C;IAC/C,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IACnC;oDACgD;IAChD,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;CAC9B;AAiCD,0EAA0E;AAC1E,qBAAa,YAAY;IASrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAE1B;;6EAEyE;IACzE,YACmB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,YAAA,EACtB,QAAQ,GAAE,cAAgC,EACzD;IAEJ,OAAO,KAAK,UAAU,GAErB;IAED;;;yCAGqC;IACrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA+B7C;IAED,yEAAyE;IACzE,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/B;IAED,UAAU,IAAI,IAAI,CAEjB;IAED;;;;;;;;OAQG;IACH,OAAO,IAAI,MAAM,EAAE,CA4BlB;IAED,OAAO,CAAC,KAAK;IAeb;;;;;;;;4BAQwB;IACxB,OAAO,CAAC,KAAK;IAKb;;;;;;;;;oDASgD;IAChD,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,YAAY;IAWpB,4EAA4E;IAC5E,OAAO,CAAC,MAAM;CAiBf;AA6BD,+EAA+E;AAC/E,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,424 @@
1
+ // packages/@monomind/cli/src/orgrt/sandbox-stubs.ts
2
+ /**
3
+ * Mount-point stubs for the SDK sandbox's write-denies, held for the whole run.
4
+ *
5
+ * The Claude Code sandbox (bubblewrap) denies writes to a fixed set of
6
+ * "dangerous" paths: in the role's cwd, in every directory above it that is
7
+ * writable in the sandbox, in the Claude config dir and in $HOME. For one that
8
+ * does not exist it binds /dev/null onto it, so bwrap creates a 0-byte,
9
+ * mode-0444 file there as the mount point (an empty directory for a missing
10
+ * `.claude/`), and the SDK deletes it again when the command ends
11
+ * (sandbox-runtime cleanupBwrapMountPoints). The SDK only coordinates that
12
+ * within one process. Every role is its own CLI process sharing one cwd and
13
+ * one ~/.claude, so role B, wrapping a command while role A's stub exists,
14
+ * takes the stub for a real file and binds it onto itself (`--ro-bind P P`);
15
+ * A's command ends, A deletes it, and B's bwrap dies with "Can't find source
16
+ * path ~/.claude/local" (release runs since 2.16.x: 0–5 per run, each a
17
+ * sandbox-fault).
18
+ *
19
+ * So before a sandboxed role starts, the runtime creates every such path that
20
+ * is missing, the way bwrap would (an empty 0444 file; a plain `.claude/`
21
+ * directory to hold them), and keeps it until the run ends. The SDK then only
22
+ * ever finds an existing path, which it binds read-only and never tracks or
23
+ * deletes, so no process removes a mount source another one is about to use.
24
+ * At the end the runtime removes only what it created itself — still the same
25
+ * inode, still empty; a path that already existed is never touched. Every
26
+ * stub is also written to a per-machine ledger (defaultStubLedger()), so the
27
+ * ones a SIGKILL'd daemon or a reboot leaves behind (an empty read-only file
28
+ * at ~/.claude/commands would break the user's own Claude config for good)
29
+ * are reclaimed by the next runtime under the same rule (reclaim()).
30
+ *
31
+ * The lists are what claude-agent-sdk 0.3.226 binds (read off /proc/self/
32
+ * mountinfo inside its sandbox; sandbox-stubs-sdk.test.ts fails when an SDK
33
+ * upgrade adds one). Left out on purpose: `.git/config.lock` (held, it makes
34
+ * every `git config` write fail), the dirs the CLI writes into itself
35
+ * (projects, shell-snapshots, session-env, plugins, backups), which a file
36
+ * would break, and the state files it writes itself (.claude.json,
37
+ * .config.json, .credentials.json): a CLI starting on an empty .config.json
38
+ * exits with "configuration file … is corrupted". A path whose parent does not
39
+ * exist is skipped.
40
+ */
41
+ import { closeSync, constants, lstatSync, mkdirSync, openSync, readdirSync, readFileSync, readlinkSync, renameSync, rmdirSync, unlinkSync, writeFileSync, } from 'node:fs';
42
+ import { homedir } from 'node:os';
43
+ import { basename, dirname, isAbsolute, join, sep } from 'node:path';
44
+ /** Relative to the role's cwd and to each sandbox-writable directory above it. */
45
+ const PROJECT_STUBS = [
46
+ '.mcp.json',
47
+ '.claude/settings.json',
48
+ '.claude/settings.local.json',
49
+ '.claude/agents',
50
+ '.claude/commands',
51
+ '.claude/hooks',
52
+ '.claude/skills',
53
+ '.claude/workflows',
54
+ '.claude/routines',
55
+ '.claude/output-styles',
56
+ '.claude/launch.json',
57
+ '.claude/loop.md',
58
+ '.claude/scheduled_tasks.json',
59
+ ];
60
+ /** Relative to the role's cwd. Also what git-guard.ts hides from `git add`. */
61
+ export const CWD_STUBS = [
62
+ '.bashrc',
63
+ '.bash_profile',
64
+ '.profile',
65
+ '.zshrc',
66
+ '.zprofile',
67
+ '.gitconfig',
68
+ '.gitmodules',
69
+ '.ripgreprc',
70
+ '.idea',
71
+ '.vscode',
72
+ ...PROJECT_STUBS,
73
+ ];
74
+ /** Relative to the Claude config dir ($CLAUDE_CONFIG_DIR, else ~/.claude). */
75
+ export const CONFIG_DIR_STUBS = [
76
+ 'settings.json',
77
+ 'settings.local.json',
78
+ 'CLAUDE.md',
79
+ 'agents',
80
+ 'commands',
81
+ 'hooks',
82
+ 'skills',
83
+ 'rules',
84
+ 'workflows',
85
+ 'routines',
86
+ 'output-styles',
87
+ 'ide',
88
+ 'local',
89
+ 'jobs',
90
+ 'daemon',
91
+ 'daemon.json',
92
+ 'launch.json',
93
+ 'loop.md',
94
+ 'policy-limits.json',
95
+ 'scheduled_tasks.json',
96
+ ];
97
+ /** Relative to where the global config file lives ($CLAUDE_CONFIG_DIR, else $HOME). */
98
+ export const GLOBAL_CONFIG_STUBS = [
99
+ '.claude-custom-oauth.json',
100
+ '.claude-local-oauth.json',
101
+ '.claude-staging-oauth.json',
102
+ ];
103
+ const within = (root, p) => p === root || p.startsWith(root.endsWith(sep) ? root : root + sep);
104
+ /** Every stub path the sandbox binds for a role with this cwd and HOME, where
105
+ * `writableRoots` is the sandbox's `filesystem.allowWrite`. A `.claude`
106
+ * directory comes before the files in it. */
107
+ export function sandboxStubPaths(ctx) {
108
+ const configDir = ctx.env?.CLAUDE_CONFIG_DIR;
109
+ const above = [];
110
+ for (let d = dirname(ctx.cwd);; d = dirname(d)) {
111
+ if (ctx.writableRoots.some((r) => within(r, d)))
112
+ above.push(d);
113
+ if (d === dirname(d))
114
+ break;
115
+ }
116
+ const project = (dir) => [
117
+ join(dir, '.claude'),
118
+ ...PROJECT_STUBS.map((p) => join(dir, p)),
119
+ ];
120
+ return [
121
+ ...project(ctx.cwd),
122
+ ...CWD_STUBS.filter((p) => !PROJECT_STUBS.includes(p)).map((p) => join(ctx.cwd, p)),
123
+ join(ctx.cwd, '.git', 'config.worktree'),
124
+ ...above.flatMap(project),
125
+ ...CONFIG_DIR_STUBS.map((p) => join(configDir ?? join(ctx.home, '.claude'), p)),
126
+ ...GLOBAL_CONFIG_STUBS.map((p) => join(configDir ?? ctx.home, p)),
127
+ join(ctx.home, '.mcp.json'),
128
+ ];
129
+ }
130
+ /** Every name a stub can have: a ledger entry naming anything else is not
131
+ * reclaimed, whatever it says (the ledger lives in a directory the roles'
132
+ * sandboxed shells can write). */
133
+ const STUB_NAMES = new Set(['.claude', 'config.worktree', ...CWD_STUBS, ...CONFIG_DIR_STUBS, ...GLOBAL_CONFIG_STUBS].map((p) => basename(p)));
134
+ /** The per-machine crash ledger: `MONOMIND_ORGRT_STUBS_DIR`, else
135
+ * ~/.monomind/orgrt-sandbox-stubs (next to orgrt-broker and orgrt-operator). */
136
+ export function defaultStubLedger(env = process.env) {
137
+ return join(env.MONOMIND_ORGRT_STUBS_DIR || join(homedir(), '.monomind', 'orgrt-sandbox-stubs'), 'ledger.json');
138
+ }
139
+ function readLedger(file) {
140
+ try {
141
+ const entries = JSON.parse(readFileSync(file, 'utf8')).entries;
142
+ if (!Array.isArray(entries))
143
+ return [];
144
+ return entries.filter((e) => !!e &&
145
+ typeof e.path === 'string' &&
146
+ isAbsolute(e.path) &&
147
+ typeof e.ino === 'number' &&
148
+ typeof e.dev === 'number' &&
149
+ (e.kind === 'file' || e.kind === 'dir') &&
150
+ Number.isInteger(e.pid) &&
151
+ (e.pidNamespace === undefined || typeof e.pidNamespace === 'string') &&
152
+ (e.bootId === undefined || typeof e.bootId === 'string'));
153
+ }
154
+ catch {
155
+ return []; // missing or corrupt: nothing to reclaim
156
+ }
157
+ }
158
+ /** Atomic (tmp + rename). Only a write that adds entries makes the dir: a
159
+ * removal has nothing to record where there is no ledger. */
160
+ function writeLedger(file, entries, create) {
161
+ try {
162
+ if (create)
163
+ mkdirSync(dirname(file), { recursive: true });
164
+ const tmp = `${file}.${process.pid}.tmp`;
165
+ writeFileSync(tmp, `${JSON.stringify({ entries }, null, 2)}\n`);
166
+ renameSync(tmp, file);
167
+ }
168
+ catch {
169
+ /* best-effort: the stubs still work, only crash recovery is lost */
170
+ }
171
+ }
172
+ const alive = (pid) => {
173
+ try {
174
+ process.kill(pid, 0);
175
+ return true;
176
+ }
177
+ catch (err) {
178
+ return err.code === 'EPERM';
179
+ }
180
+ };
181
+ const defaultIdentity = {
182
+ pidNamespace() {
183
+ try {
184
+ return readlinkSync('/proc/self/ns/pid');
185
+ }
186
+ catch {
187
+ return undefined;
188
+ }
189
+ },
190
+ bootId() {
191
+ try {
192
+ return readFileSync('/proc/sys/kernel/random/boot_id', 'utf8').trim();
193
+ }
194
+ catch {
195
+ return undefined;
196
+ }
197
+ },
198
+ };
199
+ /** An entry recorded before pid-namespace awareness (no `pidNamespace`/
200
+ * `bootId`), or one whose reader could not read them: falls back to the
201
+ * bare pid check (today's behavior, and correct outside any sandbox). */
202
+ function isLegacy(e) {
203
+ return e.pidNamespace === undefined || e.bootId === undefined;
204
+ }
205
+ /** The stubs this process created, and which runs still need each one. */
206
+ export class SandboxStubs {
207
+ ledger;
208
+ identity;
209
+ stubs = new Map();
210
+ exitHook = false;
211
+ reclaimed = false;
212
+ /** `ledger`: the crash-ledger file (default defaultStubLedger(), read when
213
+ * first needed); null keeps no ledger. `identity`: overridable in tests;
214
+ * defaults to reading this process's real pid namespace and boot id. */
215
+ constructor(ledger, identity = defaultIdentity) {
216
+ this.ledger = ledger;
217
+ this.identity = identity;
218
+ }
219
+ get ledgerFile() {
220
+ return this.ledger === undefined ? defaultStubLedger() : this.ledger;
221
+ }
222
+ /** Creates each missing path — a `.claude` path as a directory, anything
223
+ * else as an empty 0444 file — and records `owner` on every path this
224
+ * process created. The first call reclaims a dead runtime's stubs first.
225
+ * Returns the paths created now. */
226
+ hold(owner, paths) {
227
+ if (!this.reclaimed)
228
+ this.reclaim();
229
+ const created = [];
230
+ for (const p of paths) {
231
+ const mine = this.stubs.get(p);
232
+ if (mine) {
233
+ mine.owners.add(owner);
234
+ continue;
235
+ }
236
+ const dir = p.endsWith(`${sep}.claude`);
237
+ try {
238
+ if (!lstatSync(dirname(p)).isDirectory())
239
+ continue;
240
+ // Exclusive: a path that exists in any form is not ours.
241
+ if (dir)
242
+ mkdirSync(p);
243
+ else
244
+ closeSync(openSync(p, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY, 0o444));
245
+ const st = lstatSync(p);
246
+ this.stubs.set(p, { dev: st.dev, ino: st.ino, dir, owners: new Set([owner]) });
247
+ created.push(p);
248
+ }
249
+ catch {
250
+ /* exists, no parent, or not writable: the SDK handles it as before */
251
+ }
252
+ }
253
+ if (created.length) {
254
+ this.updateLedger((entries) => [...entries, ...created.map((p) => this.entry(p, owner))]);
255
+ if (!this.exitHook) {
256
+ this.exitHook = true;
257
+ process.on('exit', () => this.releaseAll());
258
+ }
259
+ }
260
+ return created;
261
+ }
262
+ /** Drops `owner`; removes the stubs no other run holds. Returns them. */
263
+ release(owner) {
264
+ const free = [];
265
+ for (const [p, stub] of this.stubs) {
266
+ stub.owners.delete(owner);
267
+ if (!stub.owners.size)
268
+ free.push([p, stub]);
269
+ }
270
+ return this.remove(free);
271
+ }
272
+ releaseAll() {
273
+ this.remove([...this.stubs]);
274
+ }
275
+ /**
276
+ * Stubs a runtime that died without cleaning up (SIGKILL, reboot) left in
277
+ * the ledger. Each is removed under the same rule as our own — same inode,
278
+ * still empty — and forgotten either way: a changed path is no longer a
279
+ * stub. While another live runtime has stubs in the ledger, its roles may
280
+ * be binding the dead one's as existing files, so they are adopted instead:
281
+ * held by this process and removed when its first run ends. Entries of live
282
+ * runtimes are kept. Returns the paths removed.
283
+ */
284
+ reclaim() {
285
+ this.reclaimed = true;
286
+ const file = this.ledgerFile;
287
+ if (!file)
288
+ return [];
289
+ const entries = readLedger(file);
290
+ const ourNs = this.identity.pidNamespace();
291
+ const ourBootId = this.identity.bootId();
292
+ const dead = entries.filter((e) => this.isDead(e, ourNs, ourBootId));
293
+ if (!dead.length)
294
+ return [];
295
+ const othersLive = entries.some((e) => !this.isOwn(e, ourNs, ourBootId) && !dead.includes(e));
296
+ const stale = dead
297
+ .filter((e) => STUB_NAMES.has(basename(e.path)) && !this.stubs.has(e.path))
298
+ .map((e) => [
299
+ e.path,
300
+ { dev: e.dev, ino: e.ino, dir: e.kind === 'dir', owners: new Set() },
301
+ ]);
302
+ const removed = [];
303
+ const adopted = [];
304
+ for (const [p, stub] of stale.sort(([a], [b]) => b.length - a.length)) {
305
+ if (othersLive) {
306
+ if (unchanged(p, stub, true)) {
307
+ this.stubs.set(p, stub);
308
+ adopted.push(this.entry(p, 'adopted'));
309
+ }
310
+ }
311
+ else if (removeIfUnchanged(p, stub))
312
+ removed.push(p);
313
+ }
314
+ this.updateLedger((all) => [...all.filter((e) => !dead.includes(e)), ...adopted], entries);
315
+ return removed;
316
+ }
317
+ entry(p, runId) {
318
+ const s = this.stubs.get(p);
319
+ return {
320
+ path: p,
321
+ ino: s.ino,
322
+ dev: s.dev,
323
+ kind: s.dir ? 'dir' : 'file',
324
+ pid: process.pid,
325
+ pidNamespace: this.identity.pidNamespace(),
326
+ bootId: this.identity.bootId(),
327
+ runId,
328
+ createdAt: new Date().toISOString(),
329
+ };
330
+ }
331
+ /** Is `e` an entry this process itself wrote? For a modern entry that also
332
+ * requires our current namespace and boot to match — a matching pid alone
333
+ * can be a different process after a pid wrap, or the same-numbered pid in
334
+ * an unrelated namespace. A legacy entry (no pidNamespace/bootId) falls
335
+ * back to the bare pid check it was written under — and so does every
336
+ * entry when OUR OWN identity could not be read (older kernel, no /proc):
337
+ * with no `ourNs`/`ourBootId` to compare against, a modern entry's real
338
+ * values would always look "different", which is not a safe basis for
339
+ * ownership either. */
340
+ isOwn(e, ourNs, ourBootId) {
341
+ if (isLegacy(e) || ourNs === undefined || ourBootId === undefined)
342
+ return e.pid === process.pid;
343
+ return e.pid === process.pid && e.pidNamespace === ourNs && e.bootId === ourBootId;
344
+ }
345
+ /** Is `e` safe to reclaim? A different boot always is (pids and namespace
346
+ * ids are meaningless across a reboot). Same boot but a different pid
347
+ * namespace never is — we cannot tell alive from dead across namespaces
348
+ * (`process.kill` always throws ESRCH there), so it is left alone rather
349
+ * than guessed at. Same boot and same namespace (or a legacy entry) falls
350
+ * back to the bare pid-alive check — and so does every entry when OUR OWN
351
+ * identity could not be read (older kernel, no /proc): without `ourNs`/
352
+ * `ourBootId` to compare against, a modern entry's real boot/namespace
353
+ * ids would always compare unequal, which would misjudge every live
354
+ * entry as a different boot and reclaim it. */
355
+ isDead(e, ourNs, ourBootId) {
356
+ if (isLegacy(e) || ourNs === undefined || ourBootId === undefined) {
357
+ return e.pid === process.pid || !alive(e.pid);
358
+ }
359
+ if (e.bootId !== ourBootId)
360
+ return true;
361
+ if (e.pidNamespace !== ourNs)
362
+ return false;
363
+ return e.pid === process.pid || !alive(e.pid);
364
+ }
365
+ updateLedger(change, current) {
366
+ const file = this.ledgerFile;
367
+ if (!file)
368
+ return;
369
+ const before = current ?? readLedger(file);
370
+ const after = change(before);
371
+ writeLedger(file, after, after.length > before.length);
372
+ }
373
+ /** Files before the directories holding them; each only while unchanged. */
374
+ remove(entries) {
375
+ const removed = [];
376
+ entries.sort(([a], [b]) => b.length - a.length);
377
+ for (const [p, stub] of entries) {
378
+ this.stubs.delete(p);
379
+ if (removeIfUnchanged(p, stub))
380
+ removed.push(p);
381
+ }
382
+ if (entries.length) {
383
+ const gone = new Set(entries.map(([p]) => p));
384
+ const ourNs = this.identity.pidNamespace();
385
+ const ourBootId = this.identity.bootId();
386
+ this.updateLedger((all) => all.filter((e) => !this.isOwn(e, ourNs, ourBootId) || !gone.has(e.path)));
387
+ }
388
+ return removed;
389
+ }
390
+ }
391
+ /** Is `p` still the empty file or directory recorded in `stub`? A directory
392
+ * that still holds stubs counts with `filledDir` (adoption: its stubs are
393
+ * adopted with it). */
394
+ function unchanged(p, stub, filledDir = false) {
395
+ try {
396
+ const st = lstatSync(p);
397
+ if (st.dev !== stub.dev || st.ino !== stub.ino)
398
+ return false;
399
+ if (stub.dir)
400
+ return st.isDirectory() && (filledDir || readdirSync(p).length === 0);
401
+ return st.isFile() && st.size === 0;
402
+ }
403
+ catch {
404
+ return false;
405
+ }
406
+ }
407
+ /** Removes `p` only while it is still the empty file or directory recorded. */
408
+ function removeIfUnchanged(p, stub) {
409
+ if (!unchanged(p, stub))
410
+ return false;
411
+ try {
412
+ if (stub.dir)
413
+ rmdirSync(p); // fails unless (still) empty
414
+ else
415
+ unlinkSync(p);
416
+ return true;
417
+ }
418
+ catch {
419
+ return false;
420
+ }
421
+ }
422
+ /** One per process: every org run in it shares the cwd and ~/.claude stubs. */
423
+ export const sandboxStubs = new SandboxStubs();
424
+ //# sourceMappingURL=sandbox-stubs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-stubs.js","sourceRoot":"","sources":["../../../src/orgrt/sandbox-stubs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/orgrt/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/orgrt/session.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { scanInput } from './fence.js';
7
7
  import { Mailbox } from './mailbox.js';
8
8
  import { summarizeToolOutput } from './policy.js';
9
9
  import { FaultRestarts, ProcessFaultError } from './sandbox-fault.js';
10
+ import { sandboxStubPaths, sandboxStubs } from './sandbox-stubs.js';
10
11
  import { StateDetector } from './state-detector.js';
11
12
  import { linkAbort, queueCancelNotice, TaskCancelledError, trackTaskProcess, } from './task-cancel.js';
12
13
  import { MAX_TASK_BRIEF } from './task-dag.js';
@@ -752,6 +753,16 @@ async function runOneSession(opts, resume, costTotals, progress, tokenTotals, st
752
753
  claudeRuntime: runner instanceof ClaudeAgentRunner,
753
754
  runtime: role.runtime ?? opts.def?.runtime,
754
755
  });
756
+ // The sandbox's mount-point stubs, created once and kept until the run
757
+ // ends, so no other role's process deletes one mid-bind (sandbox-stubs.ts).
758
+ const osSandbox = gitEnforcement.claudeRestrictions?.sandbox;
759
+ if (osSandbox && process.platform === 'linux')
760
+ sandboxStubs.hold(`${org}:${opts.run ?? ''}`, sandboxStubPaths({
761
+ cwd,
762
+ home: homedir(),
763
+ writableRoots: osSandbox.filesystem?.allowWrite ?? [],
764
+ env: process.env,
765
+ }));
755
766
  // What this session really got, not what the config asked for (policy-git.ts).
756
767
  policy.setOsSandboxed(!!gitEnforcement.claudeRestrictions?.sandbox);
757
768
  const authorityMask = roleAuthorityMask({