@monoes/monomindcli 2.16.8 → 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.
- package/dist/src/commands/cleanup.d.ts +8 -1
- package/dist/src/commands/cleanup.d.ts.map +1 -1
- package/dist/src/commands/cleanup.js +113 -15
- package/dist/src/commands/cleanup.js.map +1 -1
- package/dist/src/orgrt/agent-runner.d.ts +6 -0
- package/dist/src/orgrt/agent-runner.d.ts.map +1 -1
- package/dist/src/orgrt/agent-runner.js +20 -7
- package/dist/src/orgrt/agent-runner.js.map +1 -1
- package/dist/src/orgrt/daemon.d.ts.map +1 -1
- package/dist/src/orgrt/daemon.js +3 -0
- package/dist/src/orgrt/daemon.js.map +1 -1
- package/dist/src/orgrt/git-guard.d.ts.map +1 -1
- package/dist/src/orgrt/git-guard.js +9 -23
- package/dist/src/orgrt/git-guard.js.map +1 -1
- package/dist/src/orgrt/policy-hook.d.ts +35 -0
- package/dist/src/orgrt/policy-hook.d.ts.map +1 -0
- package/dist/src/orgrt/policy-hook.js +62 -0
- package/dist/src/orgrt/policy-hook.js.map +1 -0
- package/dist/src/orgrt/policy.d.ts.map +1 -1
- package/dist/src/orgrt/policy.js +1 -0
- package/dist/src/orgrt/policy.js.map +1 -1
- package/dist/src/orgrt/sandbox-stubs.d.ts +144 -0
- package/dist/src/orgrt/sandbox-stubs.d.ts.map +1 -0
- package/dist/src/orgrt/sandbox-stubs.js +424 -0
- package/dist/src/orgrt/sandbox-stubs.js.map +1 -0
- package/dist/src/orgrt/session.d.ts.map +1 -1
- package/dist/src/orgrt/session.js +25 -11
- package/dist/src/orgrt/session.js.map +1 -1
- package/dist/src/orgrt/task-tools.d.ts.map +1 -1
- package/dist/src/orgrt/task-tools.js +1 -0
- package/dist/src/orgrt/task-tools.js.map +1 -1
- package/dist/src/orgrt/tool-fence.d.ts +6 -1
- package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
- package/dist/src/orgrt/tool-fence.js +19 -3
- package/dist/src/orgrt/tool-fence.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -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":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,KAAK,EAAgB,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;
|
|
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';
|
|
@@ -31,6 +32,7 @@ import { resolveRoleGitEnforcement, roleAuthorityMask } from './role-sandbox.js'
|
|
|
31
32
|
import { mailRouteKey, ROLE_SESSION_KEY, resolveSessionScope, SessionLedger, } from './session-ledger.js';
|
|
32
33
|
import { roleSkillGuidance } from './skill-library.js';
|
|
33
34
|
import { skillTools } from './skill-tools.js';
|
|
35
|
+
import { strictArgs } from './tool-fence.js';
|
|
34
36
|
import { DEFAULT_CLAUDE_MODEL, VERCEL_PROVIDERS } from './vercel-providers.js';
|
|
35
37
|
/**
|
|
36
38
|
* Resolves the extra system-prompt block for a role: its pinned library
|
|
@@ -751,6 +753,16 @@ async function runOneSession(opts, resume, costTotals, progress, tokenTotals, st
|
|
|
751
753
|
claudeRuntime: runner instanceof ClaudeAgentRunner,
|
|
752
754
|
runtime: role.runtime ?? opts.def?.runtime,
|
|
753
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
|
+
}));
|
|
754
766
|
// What this session really got, not what the config asked for (policy-git.ts).
|
|
755
767
|
policy.setOsSandboxed(!!gitEnforcement.claudeRestrictions?.sandbox);
|
|
756
768
|
const authorityMask = roleAuthorityMask({
|
|
@@ -1241,21 +1253,21 @@ export function buildOrgTools(opts) {
|
|
|
1241
1253
|
description: "Persist durable knowledge from this run into the org's knowledge graph: entities ({name, type?, description?}), relationships ({source, target, relation, description?}) and reusable rules ({rule, context?}). Entities merge by name across runs - reuse the exact names listed in your briefing. Call once, before org_complete.",
|
|
1242
1254
|
schema: {
|
|
1243
1255
|
nodes: z
|
|
1244
|
-
.array(
|
|
1256
|
+
.array(strictArgs({
|
|
1245
1257
|
name: z.string(),
|
|
1246
1258
|
type: z.string().optional(),
|
|
1247
1259
|
description: z.string().optional(),
|
|
1248
1260
|
}))
|
|
1249
1261
|
.optional(),
|
|
1250
1262
|
edges: z
|
|
1251
|
-
.array(
|
|
1263
|
+
.array(strictArgs({
|
|
1252
1264
|
source: z.string(),
|
|
1253
1265
|
target: z.string(),
|
|
1254
1266
|
relation: z.string(),
|
|
1255
1267
|
description: z.string().optional(),
|
|
1256
1268
|
}))
|
|
1257
1269
|
.optional(),
|
|
1258
|
-
rules: z.array(
|
|
1270
|
+
rules: z.array(strictArgs({ rule: z.string(), context: z.string().optional() })).optional(),
|
|
1259
1271
|
},
|
|
1260
1272
|
handler: async (args) => text(await learn(role.id, args)),
|
|
1261
1273
|
});
|
|
@@ -1343,12 +1355,11 @@ export function buildOrgTools(opts) {
|
|
|
1343
1355
|
schema: {
|
|
1344
1356
|
taskId: z.string(),
|
|
1345
1357
|
result: z.string().optional(),
|
|
1346
|
-
evidence:
|
|
1347
|
-
.object({
|
|
1358
|
+
evidence: strictArgs({
|
|
1348
1359
|
headSha: z.string(),
|
|
1349
1360
|
worktree: z.string().optional(),
|
|
1350
1361
|
checks: z
|
|
1351
|
-
.array(
|
|
1362
|
+
.array(strictArgs({
|
|
1352
1363
|
command: z.string(),
|
|
1353
1364
|
exitCode: z.number().int(),
|
|
1354
1365
|
expectExit: z.number().int().optional(),
|
|
@@ -1356,8 +1367,7 @@ export function buildOrgTools(opts) {
|
|
|
1356
1367
|
output: z.string().optional(),
|
|
1357
1368
|
}))
|
|
1358
1369
|
.default([]),
|
|
1359
|
-
})
|
|
1360
|
-
.optional(),
|
|
1370
|
+
}).optional(),
|
|
1361
1371
|
},
|
|
1362
1372
|
handler: async (args) => text(completeTask(role.id, args.taskId, args.result, args.evidence)),
|
|
1363
1373
|
});
|
|
@@ -1391,7 +1401,7 @@ export function buildOrgTools(opts) {
|
|
|
1391
1401
|
description: 'Split a task into parallel children when scope expands. The parent becomes "split"; children inherit its deps; downstream tasks are rewired to depend on all children.',
|
|
1392
1402
|
schema: {
|
|
1393
1403
|
parentId: z.string(),
|
|
1394
|
-
children: z.array(
|
|
1404
|
+
children: z.array(strictArgs({ title: z.string(), assignee: z.string() })).min(1),
|
|
1395
1405
|
},
|
|
1396
1406
|
handler: async (args) => text(splitTask(role.id, args.parentId, args.children ?? [])),
|
|
1397
1407
|
});
|
|
@@ -1436,14 +1446,14 @@ export function buildOrgTools(opts) {
|
|
|
1436
1446
|
(catalog ? ' Each spec may select a "loadout" exactly as org_task does.' : ''),
|
|
1437
1447
|
schema: {
|
|
1438
1448
|
tasks: z
|
|
1439
|
-
.array(
|
|
1449
|
+
.array(strictArgs({
|
|
1440
1450
|
name: z.string(),
|
|
1441
1451
|
title: z.string(),
|
|
1442
1452
|
assignee: z.string(),
|
|
1443
1453
|
after: z.array(z.string()).default([]),
|
|
1444
1454
|
brief: briefArg,
|
|
1445
1455
|
...loadoutArg,
|
|
1446
|
-
}))
|
|
1456
|
+
}, { deps: 'use `after` with node names' }))
|
|
1447
1457
|
.min(1),
|
|
1448
1458
|
},
|
|
1449
1459
|
handler: async (args) => text(planGraph(role.id, args.tasks ?? [])),
|
|
@@ -1486,6 +1496,10 @@ export function buildOrgTools(opts) {
|
|
|
1486
1496
|
return text(receipt);
|
|
1487
1497
|
},
|
|
1488
1498
|
});
|
|
1499
|
+
// Built-in org tools reject undeclared keys instead of stripping them: a
|
|
1500
|
+
// stripped `deps` on an org_plan_graph node silently dropped every edge.
|
|
1501
|
+
for (const t of tools)
|
|
1502
|
+
t.strict ??= {};
|
|
1489
1503
|
return tools;
|
|
1490
1504
|
}
|
|
1491
1505
|
//# sourceMappingURL=session.js.map
|