@inventarch/steward-hook 0.0.0-stage → 1.1.0

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/main.js ADDED
@@ -0,0 +1,508 @@
1
+ import { closeSync, fstatSync, lstatSync, openSync, readSync, readdirSync, readFileSync, realpathSync, } from 'node:fs';
2
+ import { basename, dirname, isAbsolute, relative, resolve, sep } from 'node:path';
3
+ import { evaluateSteward, isEntry, openDatabase } from '@inventarch/runtime';
4
+ import { pathKey, sameFile, unaliased } from '@inventarch/db';
5
+ import { decodeDistributionJson } from '@inventarch/db/distribution';
6
+ export function deny(code, message) {
7
+ return {
8
+ hookSpecificOutput: {
9
+ hookEventName: 'PreToolUse',
10
+ permissionDecision: 'deny',
11
+ permissionDecisionReason: `${code}: ${message}`,
12
+ },
13
+ };
14
+ }
15
+ function object(value) {
16
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
17
+ }
18
+ /** Rules match names as the volume does: case on win32; normalization and full case folding on darwin (#315, #323). */
19
+ const fold = pathKey;
20
+ function local(root, target) {
21
+ const rel = relative(fold(root), fold(target));
22
+ return isAbsolute(rel) || rel === '..' || rel.startsWith('..' + sep) ? undefined : rel.replaceAll('\\', '/');
23
+ }
24
+ function physical(path) {
25
+ try {
26
+ lstatSync(path);
27
+ return realpathSync.native(path);
28
+ }
29
+ catch (error) {
30
+ if (error.code !== 'ENOENT')
31
+ throw error;
32
+ const parent = dirname(path);
33
+ if (parent === path)
34
+ throw error;
35
+ return resolve(physical(parent), relative(parent, path));
36
+ }
37
+ }
38
+ /** Paths every workspace protects: the native installation state. */
39
+ function installation(path) {
40
+ return (path === '.ia/distributions.lock.json' || path === '.ia/distributions' || path.startsWith('.ia/distributions/'));
41
+ }
42
+ /** The projection list written for this repository; in a consumer workspace only its owned subset stays protected. */
43
+ function projectionCandidate(path) {
44
+ return (path === '.codex/config.toml' ||
45
+ /^\.codex\/agents\//.test(path) ||
46
+ /^\.(?:agents|claude)\/skills\//.test(path) ||
47
+ path === 'claude.md' ||
48
+ path === 'CLAUDE.md' ||
49
+ /^\.claude\/agents\/[^/]+\.md$/.test(path) ||
50
+ ['.agents/skills/ia-authoring/SKILL.md', '.claude/skills/ia-authoring/SKILL.md'].some((p) => fold(p) === path) ||
51
+ fold('.claude/rules/ia-workspace.md') === path ||
52
+ fold('AGENTS.md') === path);
53
+ }
54
+ /** `ownership` is undefined in a legacy workspace (no projection state) and is read only when a candidate path needs it. */
55
+ function protection(path, ownership) {
56
+ if (path === undefined)
57
+ return undefined;
58
+ if (installation(path))
59
+ return { projection: true };
60
+ if (projectionCandidate(path)) {
61
+ const owned = ownership();
62
+ if (owned === undefined || owned.files.has(path) || (path === '.codex/config.toml' && owned.codex))
63
+ return { projection: true };
64
+ }
65
+ if (path === '.ia/src/systems' || path.startsWith('.ia/src/systems/')) {
66
+ const system = path.split('/')[3];
67
+ return system !== undefined && /^[a-z][a-z0-9-]*$/.test(system) ? { system } : { invalid: true };
68
+ }
69
+ return undefined;
70
+ }
71
+ /** The hosts area, or undefined when absent; an aliased area is refused. */
72
+ function hostsArea(root) {
73
+ const directory = resolve(root, '.ia/distributions/hosts');
74
+ try {
75
+ if (!unaliased(directory, physical(directory)))
76
+ throw new Error('Host ownership directory is aliased');
77
+ lstatSync(directory);
78
+ }
79
+ catch (error) {
80
+ if (error.code === 'ENOENT')
81
+ return undefined;
82
+ throw error;
83
+ }
84
+ return directory;
85
+ }
86
+ /** The same projection allowlist `@inventarch/distribution` writes (projection.ts), so a state cannot claim other paths. */
87
+ const PROJECTION_OWNED = {
88
+ claude: (path) => path === '.claude/rules/ia-workspace.md' ||
89
+ path === '.claude/skills/ia-authoring/SKILL.md' ||
90
+ /^\.claude\/agents\/[a-z][a-z0-9-]*\.md$/.test(path),
91
+ codex: (path) => path === 'AGENTS.md' || path === '.agents/skills/ia-authoring/SKILL.md',
92
+ };
93
+ /**
94
+ * A bounded read of the projection ownership states, not a validation of the projected bytes. Undefined when neither
95
+ * state exists (legacy mode); a state that is not a plain, unaliased, well-formed file throws, so the caller fails closed.
96
+ */
97
+ function projectionOwnership(root) {
98
+ const directory = hostsArea(root);
99
+ if (directory === undefined)
100
+ return undefined;
101
+ const files = new Set();
102
+ let found = false;
103
+ for (const host of ['claude', 'codex']) {
104
+ const path = resolve(directory, `${host}-projection.json`);
105
+ let stat;
106
+ try {
107
+ stat = lstatSync(path);
108
+ }
109
+ catch (error) {
110
+ if (error.code === 'ENOENT')
111
+ continue;
112
+ throw error;
113
+ }
114
+ if (!stat.isFile() || stat.nlink !== 1 || stat.size > 1024 * 1024 || !unaliased(path, physical(path)))
115
+ throw new Error('Unsafe projection ownership state');
116
+ const content = readFileSync(path);
117
+ if (content.length > 1024 * 1024)
118
+ throw new Error('Projection ownership state exceeds its bound');
119
+ const row = decodeDistributionJson(new TextDecoder('utf-8', { fatal: true }).decode(content));
120
+ if (!object(row) ||
121
+ Object.keys(row).sort().join('|') !== 'files|format|host' ||
122
+ row['format'] !== 'ia.host-projection-state.v1' ||
123
+ row['host'] !== host ||
124
+ !object(row['files']))
125
+ throw new Error('Invalid projection ownership state');
126
+ for (const [owned, value] of Object.entries(row['files'])) {
127
+ const hashes = Array.isArray(value) ? value : [value];
128
+ if (!PROJECTION_OWNED[host](owned) ||
129
+ !hashes.length ||
130
+ hashes.length > 2 ||
131
+ hashes.some((h) => typeof h !== 'string' || !/^[a-f0-9]{64}$/.test(h)) ||
132
+ new Set(hashes).size !== hashes.length)
133
+ throw new Error('Invalid projection ownership state');
134
+ files.add(fold(owned));
135
+ }
136
+ found = true;
137
+ }
138
+ if (!found)
139
+ return undefined;
140
+ let codex = true;
141
+ try {
142
+ lstatSync(resolve(directory, 'codex-workspace.json'));
143
+ }
144
+ catch (error) {
145
+ if (error.code !== 'ENOENT')
146
+ throw error;
147
+ codex = false;
148
+ }
149
+ return { files, codex };
150
+ }
151
+ function contextSettingsManaged(root, includeContext = true) {
152
+ const directory = resolve(root, '.ia/distributions/hosts');
153
+ let names;
154
+ try {
155
+ if (!unaliased(directory, physical(directory)))
156
+ throw new Error('Context ownership directory is aliased');
157
+ names = readdirSync(directory);
158
+ }
159
+ catch (error) {
160
+ if (error.code === 'ENOENT')
161
+ return { settings: false, guard: false, launchers: [] };
162
+ throw error;
163
+ }
164
+ if (names.length > 4096)
165
+ throw new Error('Context ownership inventory exceeds its bound');
166
+ let managed = false, guardManaged = false;
167
+ const launchers = [];
168
+ for (const name of names) {
169
+ const match = /^claude-context-([a-z][a-z0-9-]{0,63})\.json$/.exec(fold(name)), pending = fold(name) === 'lifecycle-pending.json';
170
+ const guard = /^claude-guard-([a-z][a-z0-9-]{0,63})\.json$/.exec(fold(name)), guardPending = fold(name) === 'guard-pending.json';
171
+ if (!guard && !guardPending && (!includeContext || (!match && !pending)))
172
+ continue;
173
+ const path = resolve(directory, name), stat = lstatSync(path), limit = pending || guardPending ? 8 * 1024 * 1024 : 1024 * 1024;
174
+ if (name !== name.toLowerCase() ||
175
+ !stat.isFile() ||
176
+ stat.nlink !== 1 ||
177
+ stat.size > limit ||
178
+ !unaliased(path, physical(path)))
179
+ throw new Error('Unsafe context ownership marker');
180
+ const content = readFileSync(path);
181
+ if (content.length > limit)
182
+ throw new Error('Context ownership marker exceeds its bound');
183
+ const row = decodeDistributionJson(new TextDecoder('utf-8', { fatal: true }).decode(content));
184
+ if (!object(row) || typeof row['id'] !== 'string' || !/^[a-z][a-z0-9-]{0,63}$/.test(row['id']))
185
+ throw new Error('Invalid context ownership marker');
186
+ if (pending) {
187
+ if (Object.keys(row).sort().join('|') !== 'after|before|format|id' ||
188
+ row['format'] !== 'ia.lifecycle-registration-pending.v1')
189
+ throw new Error('Invalid pending context ownership');
190
+ for (const key of ['before', 'after']) {
191
+ const side = row[key];
192
+ if (!object(side) ||
193
+ Object.keys(side).sort().join('|') !== 'binding|config|state' ||
194
+ Object.values(side).some((value) => value !== null && typeof value !== 'string'))
195
+ throw new Error('Invalid pending context bytes');
196
+ }
197
+ }
198
+ else if (guardPending) {
199
+ if (Object.keys(row).sort().join('|') !== 'after|before|format|id' ||
200
+ row['format'] !== 'ia.guard-registration-pending.v1')
201
+ throw new Error('Invalid pending guard ownership');
202
+ for (const key of ['before', 'after']) {
203
+ const side = row[key];
204
+ if (!object(side) ||
205
+ Object.keys(side).sort().join('|') !== 'config|state' ||
206
+ Object.values(side).some((value) => value !== null && typeof value !== 'string'))
207
+ throw new Error('Invalid pending guard bytes');
208
+ guardManaged = true;
209
+ if (typeof side['state'] === 'string') {
210
+ const state = decodeDistributionJson(side['state']);
211
+ if (!object(state) ||
212
+ state['format'] !== 'ia.guard-registration-state.v1' ||
213
+ state['id'] !== row['id'] ||
214
+ typeof state['cache'] !== 'string' ||
215
+ !isAbsolute(state['cache']))
216
+ throw new Error('Invalid pending guard owner');
217
+ launchers.push(resolve(state['cache'], 'scripts/ia.mjs'));
218
+ }
219
+ }
220
+ }
221
+ else if (guard) {
222
+ if (Object.keys(row)
223
+ .filter((key) => key !== 'existing')
224
+ .sort()
225
+ .join('|') !== 'cache|created|format|group|id|release' ||
226
+ (row['existing'] !== undefined && !Array.isArray(row['existing'])) ||
227
+ row['format'] !== 'ia.guard-registration-state.v1' ||
228
+ row['id'] !== guard[1] ||
229
+ typeof row['cache'] !== 'string' ||
230
+ !isAbsolute(row['cache']) ||
231
+ typeof row['created'] !== 'boolean' ||
232
+ !object(row['group']) ||
233
+ typeof row['release'] !== 'string' ||
234
+ !/^[a-f0-9]{64}$/.test(row['release']))
235
+ throw new Error('Invalid guard ownership state');
236
+ guardManaged = true;
237
+ launchers.push(resolve(row['cache'], 'scripts/ia.mjs'));
238
+ }
239
+ else if (Object.keys(row)
240
+ .filter((key) => key !== 'existing')
241
+ .sort()
242
+ .join('|') !== 'binding|cache|created|format|groups|id|release|revision' ||
243
+ (row['existing'] !== undefined && !Array.isArray(row['existing'])) ||
244
+ !['ia.lifecycle-registration-state.v1', 'ia.lifecycle-registration-state.v2'].includes(row['format']) ||
245
+ row['id'] !== match[1] ||
246
+ !Number.isSafeInteger(row['revision']) ||
247
+ row['revision'] < 1 ||
248
+ typeof row['cache'] !== 'string' ||
249
+ !isAbsolute(row['cache']) ||
250
+ typeof row['created'] !== 'boolean' ||
251
+ !object(row['groups']) ||
252
+ Object.keys(row['groups']).sort().join('|') !== 'SessionStart|UserPromptSubmit' ||
253
+ !['binding', 'release'].every((key) => typeof row[key] === 'string' && /^[a-f0-9]{64}$/.test(row[key])))
254
+ throw new Error('Invalid context ownership state');
255
+ managed = true;
256
+ }
257
+ return { settings: managed, guard: guardManaged, launchers };
258
+ }
259
+ /** Descriptor-bounded read; configuration changes during ownership detection refuse. */
260
+ function sourceGuardSettings(path) {
261
+ let before;
262
+ try {
263
+ before = lstatSync(path);
264
+ }
265
+ catch (error) {
266
+ if (error.code === 'ENOENT')
267
+ return undefined;
268
+ throw error;
269
+ }
270
+ const limit = 1024 * 1024;
271
+ if (!before.isFile() || before.nlink !== 1 || before.size > limit || !unaliased(path, physical(path)))
272
+ throw new Error('Unsafe source guard registration');
273
+ const fd = openSync(path, 'r');
274
+ try {
275
+ const opened = fstatSync(fd), same = (value) => value.isFile() &&
276
+ value.nlink === 1 &&
277
+ value.dev === before.dev &&
278
+ value.ino === before.ino &&
279
+ value.size === before.size &&
280
+ value.mtimeMs === before.mtimeMs &&
281
+ value.ctimeMs === before.ctimeMs;
282
+ if (!same(opened))
283
+ throw new Error('Source guard registration changed before read');
284
+ const content = Buffer.alloc(limit + 1);
285
+ let size = 0;
286
+ while (size <= limit) {
287
+ const read = readSync(fd, content, size, content.length - size, null);
288
+ if (read === 0)
289
+ break;
290
+ size += read;
291
+ }
292
+ if (size > limit || !same(fstatSync(fd)) || !same(lstatSync(path)) || !unaliased(path, physical(path)))
293
+ throw new Error('Source guard registration changed while reading');
294
+ return new TextDecoder('utf-8', { fatal: true }).decode(content.subarray(0, size));
295
+ }
296
+ finally {
297
+ closeSync(fd);
298
+ }
299
+ }
300
+ /** Recognize only the fixed source-launcher registration; an unrelated hook or filename establishes no ownership. */
301
+ function sourceGuardRegistered(root) {
302
+ const launcher = resolve(root, '.claude/hooks/steward-write.mjs');
303
+ try {
304
+ lstatSync(launcher);
305
+ }
306
+ catch (error) {
307
+ if (error.code === 'ENOENT')
308
+ return false;
309
+ throw error;
310
+ }
311
+ for (const name of ['.claude/settings.json', '.claude/settings.local.json']) {
312
+ const content = sourceGuardSettings(resolve(root, name));
313
+ if (content === undefined || !content.includes('steward-write.mjs'))
314
+ continue;
315
+ const value = decodeDistributionJson(content);
316
+ if (!object(value) || !object(value['hooks']) || !Array.isArray(value['hooks']['PreToolUse']))
317
+ continue;
318
+ for (const group of value['hooks']['PreToolUse']) {
319
+ if (!object(group) || group['matcher'] !== 'Write|Edit|MultiEdit' || !Array.isArray(group['hooks']))
320
+ continue;
321
+ for (const hook of group['hooks']) {
322
+ if (!object(hook) ||
323
+ hook['type'] !== 'command' ||
324
+ typeof hook['command'] !== 'string' ||
325
+ !hook['command'] ||
326
+ !Array.isArray(hook['args']) ||
327
+ hook['args'].length !== 3)
328
+ continue;
329
+ if (hook['command'] !== 'node' &&
330
+ !(isAbsolute(hook['command']) && ['node', 'node.exe'].includes(fold(basename(hook['command'])))))
331
+ continue;
332
+ const [entry, flag, selectedRoot] = hook['args'];
333
+ const samePath = (input, expected) => typeof input === 'string' && isAbsolute(input) && fold(resolve(input)) === fold(expected);
334
+ if (flag === '--root' &&
335
+ (entry === `\${CLAUDE_PROJECT_DIR}/.claude/hooks/steward-write.mjs` || samePath(entry, launcher)) &&
336
+ (selectedRoot === `\${CLAUDE_PROJECT_DIR}` || samePath(selectedRoot, root)))
337
+ return true;
338
+ }
339
+ }
340
+ }
341
+ return false;
342
+ }
343
+ function actorMap(path, revision) {
344
+ if (!isAbsolute(path) || !unaliased(path, physical(path)))
345
+ throw new Error('Actor map must be an absolute unaliased file');
346
+ const stat = lstatSync(path);
347
+ if (!stat.isFile() || stat.nlink !== 1 || stat.size > 1024 * 1024)
348
+ throw new Error('Invalid actor map file');
349
+ const content = readFileSync(path);
350
+ if (content.length > 1024 * 1024)
351
+ throw new Error('Actor map exceeds 1 MiB');
352
+ const value = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(content));
353
+ if (!object(value) ||
354
+ Object.keys(value).sort().join('|') !== 'actors|format|revision' ||
355
+ value['format'] !== 'ia.steward-actors.v1' ||
356
+ value['revision'] !== revision ||
357
+ !Array.isArray(value['actors']) ||
358
+ value['actors'].length > 256)
359
+ throw new Error('Actor map is malformed or stale');
360
+ const entries = new Map();
361
+ for (const entry of value['actors']) {
362
+ if (!object(entry) ||
363
+ Object.keys(entry).sort().join('|') !== 'host|identity' ||
364
+ typeof entry['host'] !== 'string' ||
365
+ !/^[a-z][a-z0-9-]{0,63}(?::[a-z][a-z0-9-]{0,63})?$/.test(entry['host']) ||
366
+ typeof entry['identity'] !== 'string' ||
367
+ entry['identity'].length > 512 ||
368
+ entries.has(entry['host']))
369
+ throw new Error('Invalid or duplicate actor mapping');
370
+ entries.set(entry['host'], entry['identity']);
371
+ }
372
+ return entries;
373
+ }
374
+ /**
375
+ * `target` under `root` placed by identity rather than spelling: from the nearest ancestor that is the root's own directory
376
+ * (`sameFile`, by device and inode), the rest of the path. It places a spelling in another namespace that
377
+ * `realpathSync.native` keeps, such as the loopback admin share `\\localhost\C$\…` or a root registered in that form, which
378
+ * no string comparison puts under the root.
379
+ */
380
+ function anchored(root, target) {
381
+ for (let current = target;;) {
382
+ if (sameFile(current, root))
383
+ return local(current, target);
384
+ const parent = dirname(current);
385
+ if (parent === current)
386
+ return undefined;
387
+ current = parent;
388
+ }
389
+ }
390
+ export function evaluateHook(root, event, actorsPath) {
391
+ if (!object(event) ||
392
+ event['hook_event_name'] !== 'PreToolUse' ||
393
+ !['Write', 'Edit', 'MultiEdit'].includes(String(event['tool_name'])) ||
394
+ !object(event['tool_input']) ||
395
+ typeof event['tool_input']['file_path'] !== 'string' ||
396
+ !event['tool_input']['file_path'].trim() ||
397
+ event['tool_input']['file_path'].includes('\0') ||
398
+ (event['tool_name'] === 'MultiEdit' && !Array.isArray(event['tool_input']['edits'])))
399
+ return deny('IA-HOOK-INPUT-INVALID', 'Expected a PreToolUse file edit event');
400
+ let rule, base;
401
+ try {
402
+ if (!isAbsolute(root))
403
+ throw new Error('Binding requires an absolute fixed project root');
404
+ // The registered root as the volume stores it: another case or normalization of the same directory is the same
405
+ // project, and every rule below compares against this spelling; a link or junction anywhere in it is still refused.
406
+ base = resolve(root);
407
+ const real = realpathSync.native(base);
408
+ if (!unaliased(base, real))
409
+ throw new Error('Project root is aliased');
410
+ base = real;
411
+ const path = event['tool_input']['file_path'];
412
+ if (!isAbsolute(path) &&
413
+ (typeof event['cwd'] !== 'string' ||
414
+ !isAbsolute(event['cwd']) ||
415
+ local(base, physical(resolve(event['cwd']))) === undefined))
416
+ throw new Error('Relative input requires cwd inside the fixed root');
417
+ // A relative path lands where the kernel puts it: POSIX follows the cwd's links before `..`, Windows removes `..` first.
418
+ const target = isAbsolute(path)
419
+ ? resolve(path)
420
+ : resolve(process.platform === 'win32' ? resolve(event['cwd']) : physical(resolve(event['cwd'])), path), actual = physical(target);
421
+ // With neither spelling under the root as a string, either may still reach it through another namespace, so both are
422
+ // placed by identity too (`anchored`); a rule found that way is held to the same alias check as any other.
423
+ const lexical = local(base, target), physicalPath = local(base, actual), spellings = [lexical, physicalPath];
424
+ if (lexical === undefined && physicalPath === undefined)
425
+ spellings.push(anchored(base, target), anchored(base, actual));
426
+ let read = false, owned;
427
+ const ownership = () => {
428
+ if (!read) {
429
+ owned = projectionOwnership(base);
430
+ read = true;
431
+ }
432
+ return owned;
433
+ };
434
+ rule = spellings.reduce((found, spelling) => found ?? protection(spelling, ownership), undefined);
435
+ const localSettings = spellings.includes('.claude/settings.local.json'), projectSettings = spellings.includes('.claude/settings.json');
436
+ const sourceLauncher = spellings.includes('.claude/hooks/steward-write.mjs');
437
+ // A cached launcher can be outside the consumer root. Only the exact path in its owned guard marker is managed.
438
+ const possibleCacheLauncher = [target, actual].some((path) => fold(path).replaceAll('\\', '/').endsWith('/scripts/ia.mjs'));
439
+ if (localSettings || projectSettings || sourceLauncher || possibleCacheLauncher) {
440
+ const controls = contextSettingsManaged(base, localSettings), sourceGuard = (localSettings || projectSettings || sourceLauncher) && sourceGuardRegistered(base);
441
+ const cacheLauncher = possibleCacheLauncher &&
442
+ controls.launchers.some((path) => [target, actual].some((value) => fold(resolve(value)) === fold(resolve(path))));
443
+ if ((localSettings && controls.settings) ||
444
+ ((localSettings || projectSettings) && (controls.guard || sourceGuard)) ||
445
+ (sourceLauncher && sourceGuard) ||
446
+ cacheLauncher)
447
+ rule = { projection: true };
448
+ }
449
+ if (rule !== undefined && !unaliased(target, actual))
450
+ throw new Error('Protected path has an aliased ancestor or target');
451
+ if (rule?.invalid)
452
+ throw new Error('Cannot identify the owning system');
453
+ }
454
+ catch (error) {
455
+ return deny('IA-HOOK-PATH-UNSAFE', error instanceof Error ? error.message : String(error));
456
+ }
457
+ if (rule?.projection)
458
+ return deny('IA-HOOK-PROJECTION-MANAGED', 'Use the owning command for generated state. Guard settings require a trusted operator edit outside intercepted assistant tools, preserving the guard, followed by registration qualification');
459
+ if (rule?.system === undefined)
460
+ return {};
461
+ try {
462
+ const db = openDatabase(base, { cache: false });
463
+ try {
464
+ const records = db.records();
465
+ const mapping = actorsPath === undefined ? undefined : actorMap(actorsPath, db.revision);
466
+ const host = event['agent_type'], identity = typeof host === 'string' ? mapping?.get(host) : undefined;
467
+ const actors = typeof host === 'string'
468
+ ? records.filter((r) => r.discriminator === 'agent' &&
469
+ (mapping === undefined ? r.name === host : identity !== undefined && r.identity === identity))
470
+ : [];
471
+ const decision = evaluateSteward(records, rule.system, actors.length === 1 ? { kind: 'agent', identity: actors[0].identity } : undefined);
472
+ return decision.allowed ? {} : deny(decision.code, decision.message);
473
+ }
474
+ finally {
475
+ db.close();
476
+ }
477
+ }
478
+ catch (error) {
479
+ return deny('IA-HOOK-STEWARD-UNAVAILABLE', error instanceof Error ? error.message : String(error));
480
+ }
481
+ }
482
+ export function runHook(args, input) {
483
+ try {
484
+ if (!(args.length === 2 || (args.length === 4 && args[2] === '--actors' && args[3])) ||
485
+ args[0] !== '--root' ||
486
+ !args[1] ||
487
+ Buffer.byteLength(input) > 1024 * 1024)
488
+ return deny('IA-HOOK-INPUT-INVALID', 'Usage: steward-hook --root <fixed absolute root> [--actors <trusted absolute mapping>] (input limit 1 MiB)');
489
+ return evaluateHook(args[1], JSON.parse(input), args[3]);
490
+ }
491
+ catch {
492
+ return deny('IA-HOOK-INPUT-INVALID', 'Invalid JSON input');
493
+ }
494
+ }
495
+ if (isEntry(process.argv[1], import.meta.url)) {
496
+ const chunks = [];
497
+ let size = 0;
498
+ for await (const chunk of process.stdin) {
499
+ size += Buffer.byteLength(chunk);
500
+ if (size > 1024 * 1024)
501
+ break;
502
+ chunks.push(Buffer.from(chunk));
503
+ }
504
+ process.stdout.write(JSON.stringify(size > 1024 * 1024
505
+ ? deny('IA-HOOK-INPUT-INVALID', 'Input exceeds 1 MiB')
506
+ : runHook(process.argv.slice(2), Buffer.concat(chunks).toString('utf8'))) + '\n');
507
+ }
508
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,61 @@
1
1
  {
2
2
  "name": "@inventarch/steward-hook",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.1.0",
4
+ "type": "module",
5
+ "main": "./dist/main.js",
6
+ "types": "./dist/main.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "SPEC.md",
11
+ "LICENSE",
12
+ "NOTICE",
13
+ "LANGUAGE.md"
14
+ ],
15
+ "dependencies": {
16
+ "@inventarch/runtime": "1.1.0",
17
+ "@inventarch/agent-composition-system": "1.1.0",
18
+ "@inventarch/db": "1.1.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^22.19.0",
22
+ "typescript": "^5.9.3",
23
+ "vitest": "^4.1.4"
24
+ },
25
+ "license": "Apache-2.0",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/main.d.ts",
29
+ "default": "./dist/main.js"
30
+ },
31
+ "./context": {
32
+ "types": "./dist/context.d.ts",
33
+ "default": "./dist/context.js"
34
+ },
35
+ "./internal/context": {
36
+ "types": "./dist/context.d.ts",
37
+ "default": "./dist/context.js"
38
+ },
39
+ "./internal/main": {
40
+ "types": "./dist/main.d.ts",
41
+ "default": "./dist/main.js"
42
+ }
43
+ },
44
+ "engines": {
45
+ "node": ">=22.22.0 <23"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public",
49
+ "registry": "https://registry.npmjs.org"
50
+ },
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "git+https://github.com/inventarch/ia.git",
54
+ "directory": "apps/steward-hook"
55
+ },
56
+ "scripts": {
57
+ "build": "tsc -p tsconfig.json",
58
+ "typecheck": "tsc --noEmit -p tsconfig.json && tsc -p tsconfig.tests.json",
59
+ "test": "vitest run --config vitest.config.mts"
60
+ }
6
61
  }