@mnemonik/shared 7.97.2 → 7.98.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.
Files changed (130) hide show
  1. package/dist/ambientPointer.d.ts.map +1 -1
  2. package/dist/ambientPointer.js +2 -1
  3. package/dist/ambientPointer.js.map +1 -1
  4. package/dist/apiOrigin.d.ts +3 -0
  5. package/dist/apiOrigin.d.ts.map +1 -0
  6. package/dist/apiOrigin.js +5 -0
  7. package/dist/apiOrigin.js.map +1 -0
  8. package/dist/ast/astChunker.d.ts +12 -12
  9. package/dist/ast/astChunker.js +32 -32
  10. package/dist/ast/grammars.d.ts +9 -9
  11. package/dist/ast/grammars.js +15 -15
  12. package/dist/codeScanner.d.ts +56 -43
  13. package/dist/codeScanner.d.ts.map +1 -1
  14. package/dist/codeScanner.js +262 -143
  15. package/dist/codeScanner.js.map +1 -1
  16. package/dist/contextBudget.js +2 -2
  17. package/dist/contextBudget.js.map +1 -1
  18. package/dist/gitEditDetector.d.ts +6 -6
  19. package/dist/gitEditDetector.js +7 -7
  20. package/dist/hookRuntime.d.ts +35 -2
  21. package/dist/hookRuntime.d.ts.map +1 -1
  22. package/dist/hookRuntime.js +127 -33
  23. package/dist/hookRuntime.js.map +1 -1
  24. package/dist/hookTimeouts.d.ts +6 -6
  25. package/dist/hookTimeouts.js +6 -6
  26. package/dist/hostAdapter.d.ts +135 -0
  27. package/dist/hostAdapter.d.ts.map +1 -0
  28. package/dist/hostAdapter.js +323 -0
  29. package/dist/hostAdapter.js.map +1 -0
  30. package/dist/hostBinary.d.ts +29 -0
  31. package/dist/hostBinary.d.ts.map +1 -0
  32. package/dist/hostBinary.js +179 -0
  33. package/dist/hostBinary.js.map +1 -0
  34. package/dist/index.d.ts +11 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +10 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/instructions.d.ts +26 -26
  39. package/dist/instructions.js +26 -26
  40. package/dist/jitDeliveryAck.d.ts.map +1 -1
  41. package/dist/jitDeliveryAck.js +2 -0
  42. package/dist/jitDeliveryAck.js.map +1 -1
  43. package/dist/projectIdentityFile.d.ts +25 -0
  44. package/dist/projectIdentityFile.d.ts.map +1 -0
  45. package/dist/projectIdentityFile.js +87 -0
  46. package/dist/projectIdentityFile.js.map +1 -0
  47. package/dist/projectSetupHandoff.d.ts +24 -0
  48. package/dist/projectSetupHandoff.d.ts.map +1 -0
  49. package/dist/projectSetupHandoff.js +249 -0
  50. package/dist/projectSetupHandoff.js.map +1 -0
  51. package/dist/protectedPaths.d.ts +9 -0
  52. package/dist/protectedPaths.d.ts.map +1 -0
  53. package/dist/protectedPaths.js +66 -0
  54. package/dist/protectedPaths.js.map +1 -0
  55. package/dist/readiness.d.ts +143 -0
  56. package/dist/readiness.d.ts.map +1 -0
  57. package/dist/readiness.js +304 -0
  58. package/dist/readiness.js.map +1 -0
  59. package/dist/repositoryFingerprint.d.ts +50 -0
  60. package/dist/repositoryFingerprint.d.ts.map +1 -0
  61. package/dist/repositoryFingerprint.js +160 -0
  62. package/dist/repositoryFingerprint.js.map +1 -0
  63. package/dist/repositoryRoot.d.ts +56 -0
  64. package/dist/repositoryRoot.d.ts.map +1 -0
  65. package/dist/repositoryRoot.js +226 -0
  66. package/dist/repositoryRoot.js.map +1 -0
  67. package/dist/runtimeReader.d.ts +102 -0
  68. package/dist/runtimeReader.d.ts.map +1 -0
  69. package/dist/runtimeReader.js +408 -0
  70. package/dist/runtimeReader.js.map +1 -0
  71. package/dist/runtimeSigners.d.ts +37 -0
  72. package/dist/runtimeSigners.d.ts.map +1 -0
  73. package/dist/runtimeSigners.js +507 -0
  74. package/dist/runtimeSigners.js.map +1 -0
  75. package/dist/scannerSupervisor.d.ts +35 -0
  76. package/dist/scannerSupervisor.d.ts.map +1 -0
  77. package/dist/scannerSupervisor.js +2 -0
  78. package/dist/scannerSupervisor.js.map +1 -0
  79. package/dist/secretPatterns.d.ts +9 -9
  80. package/dist/secretPatterns.d.ts.map +1 -1
  81. package/dist/secretPatterns.js +27 -25
  82. package/dist/secretPatterns.js.map +1 -1
  83. package/dist/testing/hostAdapterConformance.d.ts +17 -0
  84. package/dist/testing/hostAdapterConformance.d.ts.map +1 -0
  85. package/dist/testing/hostAdapterConformance.js +477 -0
  86. package/dist/testing/hostAdapterConformance.js.map +1 -0
  87. package/dist/usageGuide.d.ts +1 -1
  88. package/dist/usageGuide.d.ts.map +1 -1
  89. package/dist/usageGuide.js +4 -4
  90. package/package.json +7 -2
  91. package/queries/bash.tags.scm +1 -1
  92. package/queries/groovy.tags.scm +1 -1
  93. package/scripts/vendor-grammars.ts +13 -13
  94. package/src/ambientPointer.ts +2 -1
  95. package/src/apiOrigin.ts +4 -0
  96. package/src/ast/astChunker.ts +39 -39
  97. package/src/ast/grammars.ts +16 -16
  98. package/src/codeScanner.ts +274 -149
  99. package/src/contextBudget.ts +2 -2
  100. package/src/gitEditDetector.ts +7 -7
  101. package/src/hookRuntime.ts +162 -34
  102. package/src/hookTimeouts.ts +6 -6
  103. package/src/hostAdapter.ts +468 -0
  104. package/src/hostBinary.ts +205 -0
  105. package/src/index.ts +20 -0
  106. package/src/instructions.ts +26 -26
  107. package/src/jitDeliveryAck.ts +2 -0
  108. package/src/projectIdentityFile.ts +100 -0
  109. package/src/projectSetupHandoff.ts +275 -0
  110. package/src/protectedPaths.ts +88 -0
  111. package/src/readiness.ts +516 -0
  112. package/src/repositoryFingerprint.ts +199 -0
  113. package/src/repositoryRoot.ts +261 -0
  114. package/src/runtimeReader.ts +495 -0
  115. package/src/runtimeSigners.ts +577 -0
  116. package/src/scannerSupervisor.ts +26 -0
  117. package/src/secretPatterns.ts +27 -25
  118. package/src/testing/hostAdapterConformance.ts +538 -0
  119. package/src/usageGuide.ts +4 -4
  120. package/test-fixtures/identity/runner.d.mts +12 -0
  121. package/test-fixtures/identity/runner.mjs +282 -0
  122. package/tests/fixtures/repository-fingerprint-v1.golden.json +834 -0
  123. package/tests/projectIdentity.test.ts +56 -0
  124. package/tests/readiness.test.ts +158 -0
  125. package/tests/repositoryFingerprint.test.ts +26 -0
  126. package/tsconfig.test.json +9 -0
  127. package/wasm/bash.tags.scm +1 -1
  128. package/wasm/groovy.tags.scm +1 -1
  129. package/wasm/javascript.tags.scm +2 -2
  130. package/wasm/solidity.tags.scm +1 -1
@@ -0,0 +1,408 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { constants } from 'node:fs';
3
+ import { lstat, open, readdir } from 'node:fs/promises';
4
+ import { dirname, join, parse, resolve, sep } from 'node:path';
5
+ import { verifySigner, verifyWindowsPermission, verifyWindowsAcl, prepareWindowsAclDirectory, auditWindowsPermissions, } from './runtimeSigners.js';
6
+ export class RuntimeError extends Error {
7
+ reason;
8
+ constructor(reason) {
9
+ super(reason);
10
+ this.reason = reason;
11
+ this.name = 'RuntimeError';
12
+ }
13
+ }
14
+ export const hash = (bytes) => createHash('sha256').update(bytes).digest('hex');
15
+ export function safePath(path) {
16
+ if (typeof path !== 'string' ||
17
+ !/^[a-zA-Z0-9_@.+/-]+$/.test(path) ||
18
+ path.split('/').some((p) => !p || p === '.' || p === '..') ||
19
+ path.includes(':'))
20
+ throw new RuntimeError('permission');
21
+ return path;
22
+ }
23
+ export const missing = (e) => e.code === 'ENOENT';
24
+ export const versionName = (v) => {
25
+ if (!/^\d+\.\d+\.\d+(?:-[\w.-]+)?$/.test(v))
26
+ throw new RuntimeError('permission');
27
+ return v;
28
+ };
29
+ const statIdentity = (stat) => [stat.dev, stat.ino, stat.mode, stat.uid, stat.size, stat.mtimeMs, stat.ctimeMs].join(':');
30
+ /** Only stdlib and the accepted bootstrap's signer adapter may load before verifyRuntime returns. */
31
+ export class RuntimeReader {
32
+ run;
33
+ options;
34
+ now;
35
+ state;
36
+ static windowsSignatures = new Map();
37
+ // Omitted batch verdicts use the per-path fallback before entering the cache.
38
+ windowsAudit = new Map();
39
+ windowsStats = new Map();
40
+ windowsDirectories = new Set();
41
+ audits = Promise.resolve();
42
+ auditsInFlight = new Map();
43
+ activeOperation = false;
44
+ operations = Promise.resolve();
45
+ constructor(state, run, options = {}, now = () => performance.now()) {
46
+ this.run = run;
47
+ this.options = options;
48
+ this.now = now;
49
+ this.state = resolve(state);
50
+ }
51
+ pointerPath(artifact) {
52
+ if (!['cli', 'scanner', 'claude-code', 'codex', 'cursor', 'grok'].includes(artifact))
53
+ throw new RuntimeError('permission');
54
+ return join(this.state, 'runtimes', artifact, 'current');
55
+ }
56
+ guardedPath(path) {
57
+ const absolute = resolve(path);
58
+ if ((absolute !== this.state && !absolute.startsWith(this.state + sep)) ||
59
+ (process.platform === 'win32' && /[\r\n\t]/.test(absolute)))
60
+ throw new RuntimeError('permission');
61
+ return absolute;
62
+ }
63
+ auditRoot(path) {
64
+ const [area, artifact] = path.slice(this.state.length + 1).split(sep);
65
+ return area === 'runtimes' ? join(this.state, area, ...(artifact ? [artifact] : [])) : path;
66
+ }
67
+ traceAudit(event) {
68
+ const level = process.env.MNEMONIK_AUDIT_TRACE;
69
+ if (level !== '1' && (level !== 'misses' || event.cache === 'hit'))
70
+ return;
71
+ process.stderr.write(JSON.stringify({
72
+ type: 'runtime-audit',
73
+ pid: process.pid,
74
+ module: import.meta.url,
75
+ activeOperation: this.activeOperation,
76
+ ...event,
77
+ }) + '\n');
78
+ }
79
+ invalidateAudit(path) {
80
+ const root = this.auditRoot(path);
81
+ for (const key of this.windowsAudit.keys())
82
+ if (key === root ||
83
+ ((!this.options.cacheDirectories || root.startsWith(join(this.state, 'runtimes') + sep)) &&
84
+ key.startsWith(root + sep)))
85
+ this.windowsAudit.delete(key);
86
+ }
87
+ audit(paths) {
88
+ const root = this.auditRoot(paths.at(-1) ?? this.state);
89
+ const pending = this.auditsInFlight.get(root);
90
+ if (pending)
91
+ return pending;
92
+ const audit = this.audits
93
+ .then(() => this.auditPending(paths))
94
+ .finally(() => this.auditsInFlight.delete(root));
95
+ this.auditsInFlight.set(root, audit);
96
+ this.audits = audit.catch(() => { });
97
+ return audit;
98
+ }
99
+ async auditPending(paths) {
100
+ if (process.platform !== 'win32')
101
+ return;
102
+ const pending = new Set();
103
+ for (const path of paths) {
104
+ let part = this.guardedPath(path);
105
+ while (true) {
106
+ const cached = this.windowsAudit.get(part);
107
+ const expired = !!cached &&
108
+ !this.activeOperation &&
109
+ !(this.options.cacheDirectories && this.windowsDirectories.has(part)) &&
110
+ this.now() - cached.checkedAt >= 2_000;
111
+ this.traceAudit({
112
+ event: 'cache',
113
+ requested: path,
114
+ path: part,
115
+ root: this.auditRoot(path),
116
+ cache: !cached ? 'miss' : expired ? 'ttl-expired' : 'hit',
117
+ });
118
+ if (!cached || expired)
119
+ pending.add(part);
120
+ if (part === this.state)
121
+ break;
122
+ part = dirname(part);
123
+ }
124
+ }
125
+ if (!pending.size)
126
+ return;
127
+ try {
128
+ const root = this.auditRoot(paths.at(-1) ?? this.state);
129
+ const ancestors = [...pending].filter((path) => path !== root && !path.startsWith(root + sep));
130
+ const tree = [...pending].filter((path) => !ancestors.includes(path));
131
+ for (const part of [...ancestors, ...(tree.length ? [root] : [])]) {
132
+ const recursive = part === root && root.startsWith(join(this.state, 'runtimes') + sep);
133
+ this.traceAudit({ event: 'audit', root: part, recursive });
134
+ const requested = part === root ? tree : [part];
135
+ if (this.options.cacheDirectories &&
136
+ !this.windowsDirectories.has(part) &&
137
+ this.windowsAudit.get(part)?.verdict === 'ok') {
138
+ await verifyWindowsAcl(part, this.run, this.state);
139
+ this.windowsAudit.set(part, { verdict: 'ok', checkedAt: this.now() });
140
+ continue;
141
+ }
142
+ const verdicts = await auditWindowsPermissions(part, requested, this.run, recursive, this.state);
143
+ const checkedAt = this.now();
144
+ for (const path of new Set([...requested, ...verdicts.keys()])) {
145
+ let verdict = verdicts.get(path);
146
+ if (verdict === undefined) {
147
+ await verifyWindowsPermission(path, this.run, this.state);
148
+ verdict = 'ok';
149
+ }
150
+ this.windowsAudit.set(path, { verdict, checkedAt });
151
+ }
152
+ }
153
+ }
154
+ catch (error) {
155
+ throw new RuntimeError(error instanceof Error && error.message === 'acl_permissions'
156
+ ? 'permission'
157
+ : 'acl_unavailable');
158
+ }
159
+ }
160
+ async inspect(path, directory = false, allowMissing = false, replacing = false) {
161
+ const absolute = this.guardedPath(path);
162
+ const windowsPaths = [];
163
+ let part = parse(absolute).root;
164
+ for (const name of absolute.slice(part.length).split(sep)) {
165
+ part = join(part, name);
166
+ const stat = await lstat(part).catch((e) => {
167
+ if (allowMissing && missing(e))
168
+ return null;
169
+ throw e;
170
+ });
171
+ if (!stat)
172
+ break;
173
+ if (stat.isSymbolicLink() ||
174
+ (part === absolute
175
+ ? directory
176
+ ? !stat.isDirectory()
177
+ : !stat.isFile()
178
+ : !stat.isDirectory()))
179
+ throw new RuntimeError('permission');
180
+ if (part !== this.state && !part.startsWith(this.state + sep))
181
+ continue;
182
+ if (process.platform === 'win32') {
183
+ if (replacing && part === absolute)
184
+ continue;
185
+ if (part === this.state && !this.windowsStats.has(part)) {
186
+ await prepareWindowsAclDirectory(this.state, this.run).catch((error) => {
187
+ throw new RuntimeError(error instanceof Error && error.message === 'acl_permissions'
188
+ ? 'permission'
189
+ : 'acl_unavailable');
190
+ });
191
+ // Initial creation is our own write, before this directory enters the cache.
192
+ Object.assign(stat, await lstat(part));
193
+ }
194
+ if (stat.isDirectory())
195
+ this.windowsDirectories.add(part);
196
+ const identity = statIdentity(stat);
197
+ const previous = this.windowsStats.get(part);
198
+ if (previous !== undefined && previous !== identity) {
199
+ this.traceAudit({
200
+ event: 'invalidate',
201
+ requested: absolute,
202
+ path: part,
203
+ root: this.auditRoot(part),
204
+ reason: 'stat-identity',
205
+ previous,
206
+ current: identity,
207
+ });
208
+ this.invalidateAudit(part);
209
+ }
210
+ this.windowsStats.set(part, identity);
211
+ windowsPaths.push(part);
212
+ }
213
+ else if (stat.uid !== process.getuid?.() || (stat.mode & 0o077) !== 0)
214
+ throw new RuntimeError('permission');
215
+ }
216
+ await this.audit(windowsPaths);
217
+ for (const part of windowsPaths) {
218
+ const verdict = this.windowsAudit.get(part)?.verdict;
219
+ if (verdict !== 'ok')
220
+ throw new RuntimeError(verdict === undefined || verdict === 'acl_unavailable' ? 'acl_unavailable' : 'permission');
221
+ }
222
+ }
223
+ /** Call only after an owned atomic replacement: its parent ctime is our own write. */
224
+ async recordReplacement(path) {
225
+ if (process.platform !== 'win32' || !this.options.cacheDirectories)
226
+ return;
227
+ const absolute = this.guardedPath(path);
228
+ const parent = dirname(absolute);
229
+ const stat = await lstat(parent);
230
+ if (!stat.isDirectory() ||
231
+ stat.isSymbolicLink() ||
232
+ !this.windowsStats.get(parent)?.startsWith(`${stat.dev}:${stat.ino}:`))
233
+ throw new RuntimeError('permission');
234
+ this.windowsStats.set(parent, statIdentity(stat));
235
+ this.windowsAudit.delete(absolute);
236
+ this.windowsStats.delete(absolute);
237
+ }
238
+ async bytes(path) {
239
+ await this.inspect(path);
240
+ const fd = await open(path, constants.O_RDONLY | (process.platform === 'win32' ? 0 : constants.O_NOFOLLOW));
241
+ try {
242
+ return await fd.readFile();
243
+ }
244
+ finally {
245
+ await fd.close();
246
+ }
247
+ }
248
+ /** An owned inheritable ACL update can change every cached descendant's ctime. */
249
+ async recordAclWrite(path) {
250
+ const root = this.guardedPath(path);
251
+ for (const known of this.windowsStats.keys())
252
+ if (known === root || known.startsWith(root + sep))
253
+ this.windowsStats.set(known, statIdentity(await lstat(known)));
254
+ this.invalidateAudit(root);
255
+ }
256
+ async pointer(artifact) {
257
+ try {
258
+ const p = JSON.parse((await this.bytes(this.pointerPath(artifact))).toString());
259
+ for (const ref of [p.current, ...(p.previous ? [p.previous] : [])]) {
260
+ versionName(ref.version);
261
+ if (!/^[a-f0-9]{64}$/.test(ref.manifestSha256))
262
+ throw new RuntimeError('digest_mismatch');
263
+ }
264
+ return p;
265
+ }
266
+ catch (e) {
267
+ if (missing(e))
268
+ return undefined;
269
+ throw e instanceof RuntimeError ? e : new RuntimeError('digest_mismatch');
270
+ }
271
+ }
272
+ async operation(work) {
273
+ const operation = this.operations.then(async () => {
274
+ // Reuse this process's audit across inspect/install/verify; stat drift invalidates it.
275
+ this.activeOperation = true;
276
+ try {
277
+ return await work();
278
+ }
279
+ finally {
280
+ this.activeOperation = false;
281
+ }
282
+ });
283
+ this.operations = operation.catch(() => undefined);
284
+ return operation;
285
+ }
286
+ verifyAt(artifact, ref, directory) {
287
+ return this.operation(() => this.verifyOpen(artifact, ref, directory));
288
+ }
289
+ async verifyOpen(artifact, ref, directory) {
290
+ let bytes;
291
+ try {
292
+ bytes = await this.bytes(join(directory, 'manifest.json'));
293
+ }
294
+ catch (e) {
295
+ if (missing(e))
296
+ throw new RuntimeError('manifest_missing');
297
+ throw e;
298
+ }
299
+ if (hash(bytes) !== ref.manifestSha256)
300
+ throw new RuntimeError('digest_mismatch');
301
+ let m;
302
+ try {
303
+ m = JSON.parse(bytes.toString());
304
+ }
305
+ catch {
306
+ throw new RuntimeError('digest_mismatch');
307
+ }
308
+ if (!m ||
309
+ m.schemaVersion !== 1 ||
310
+ !m.source ||
311
+ m.artifact !== artifact ||
312
+ m.version !== ref.version ||
313
+ !m.files ||
314
+ !m.files[safePath(m.entry)])
315
+ throw new RuntimeError('digest_mismatch');
316
+ if (artifact === 'scanner' &&
317
+ (m.source.kind !== 'release' ||
318
+ typeof m.source.url !== 'string' ||
319
+ !m.source.url.startsWith('https://') ||
320
+ ((!m.signer || m.signer.platform !== process.platform) &&
321
+ !(this.options.allowUnsigned && !m.signer && m.signingStatus === 'unsigned'))))
322
+ throw new RuntimeError('unsigned');
323
+ if (artifact === 'cli' &&
324
+ (m.source.kind !== 'npm' ||
325
+ !Array.isArray(m.source.packages) ||
326
+ !m.source.packages.some((p) => p.name === '@mnemonik/cli' && p.version === m.version)))
327
+ throw new RuntimeError('unsigned');
328
+ if (process.platform === 'win32')
329
+ await this.audit(Object.keys(m.files).map((name) => join(directory, safePath(name))));
330
+ const actual = [];
331
+ const walk = async (dir, prefix = '') => {
332
+ await this.inspect(dir, true);
333
+ for (const name of await readdir(dir)) {
334
+ const key = prefix + name;
335
+ if (!prefix && name === 'manifest.json')
336
+ continue;
337
+ const path = join(dir, name);
338
+ if ((await lstat(path)).isDirectory())
339
+ await walk(path, key + '/');
340
+ else {
341
+ await this.inspect(path);
342
+ actual.push(key);
343
+ }
344
+ }
345
+ };
346
+ await walk(directory);
347
+ if (actual.sort().join('\n') !== Object.keys(m.files).sort().join('\n'))
348
+ throw new RuntimeError('digest_mismatch');
349
+ let total = 0;
350
+ for (const [name, expected] of Object.entries(m.files)) {
351
+ if (!expected ||
352
+ !/^[a-f0-9]{64}$/.test(expected.sha256) ||
353
+ !Number.isSafeInteger(expected.size) ||
354
+ expected.size < 0 ||
355
+ typeof expected.executable !== 'boolean')
356
+ throw new RuntimeError('digest_mismatch');
357
+ const path = join(directory, safePath(name));
358
+ const contents = await this.bytes(path);
359
+ if (hash(contents) !== expected.sha256 || contents.length !== expected.size)
360
+ throw new RuntimeError('digest_mismatch');
361
+ if (process.platform !== 'win32' &&
362
+ ((await lstat(path)).mode & 0o777) !== (expected.executable ? 0o700 : 0o600))
363
+ throw new RuntimeError('permission');
364
+ total += contents.length;
365
+ }
366
+ if (total !== m.totalSize)
367
+ throw new RuntimeError('digest_mismatch');
368
+ if (m.signer) {
369
+ const signer = m.signer.platform === 'linux'
370
+ ? { ...m.signer, signature: join(directory, safePath(m.signer.signature)) }
371
+ : m.signer;
372
+ if (m.signer.platform === 'linux' && !m.files[m.signer.signature])
373
+ throw new RuntimeError('unsigned');
374
+ try {
375
+ const entry = join(directory, m.entry);
376
+ if (signer.platform === 'win32') {
377
+ const key = JSON.stringify([entry, m.files[m.entry]?.sha256, signer.identity]);
378
+ let verification = RuntimeReader.windowsSignatures.get(key);
379
+ if (!verification) {
380
+ verification = verifySigner(entry, signer, this.run).catch((error) => {
381
+ RuntimeReader.windowsSignatures.delete(key);
382
+ throw error;
383
+ });
384
+ RuntimeReader.windowsSignatures.set(key, verification);
385
+ }
386
+ await verification;
387
+ }
388
+ else
389
+ await verifySigner(entry, signer, this.run);
390
+ }
391
+ catch {
392
+ throw new RuntimeError('unsigned');
393
+ }
394
+ }
395
+ return { directory, manifest: m, entry: join(directory, m.entry), reference: ref };
396
+ }
397
+ async verifyRuntime(artifact) {
398
+ return this.operation(async () => {
399
+ const p = await this.pointer(artifact);
400
+ if (!p)
401
+ throw new RuntimeError('manifest_missing');
402
+ // Reading the pointer is not permission to import its target. Only return a verified path.
403
+ return this.verifyOpen(artifact, p.current, join(dirname(this.pointerPath(artifact)), p.current.version));
404
+ });
405
+ }
406
+ }
407
+ export * from './runtimeSigners.js';
408
+ //# sourceMappingURL=runtimeReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeReader.js","sourceRoot":"","sources":["../src/runtimeReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export type Signer = {
2
+ platform: 'darwin';
3
+ identity: string;
4
+ } | {
5
+ platform: 'win32';
6
+ identity: string;
7
+ } | {
8
+ platform: 'linux';
9
+ identity: string;
10
+ signature: string;
11
+ };
12
+ export type Execute = (file: string, args: string[], input?: string) => Promise<unknown>;
13
+ export declare const execute: Execute;
14
+ /** Release tooling supplies the real identity and artifacts. These checks do not sign anything. */
15
+ export declare function verifySigner(path: string, signer: Signer, run?: Execute): Promise<void>;
16
+ /** Windows stat mode/uid are not ACL evidence. */
17
+ export declare function verifyWindowsPermission(path: string, run?: Execute, state?: string): Promise<void>;
18
+ type HookIdentity = {
19
+ name: string;
20
+ sid: string;
21
+ };
22
+ export declare function windowsCurrentAccountSync(): HookIdentity;
23
+ /** Frequent config polling checks fresh ACEs; stat changes trigger a full owner audit. */
24
+ export declare function verifyWindowsAcl(path: string, run?: Execute, state?: string): Promise<void>;
25
+ /** icacls /save writes alternating relative paths and SDDL in UTF-16LE. */
26
+ export declare function aclRecords(output: string, root: string, paths: string[], onLookup?: () => void): Map<string, string[]>;
27
+ export declare function prepareWindowsAclDirectory(state: string, run?: Execute): Promise<void>;
28
+ export declare function windowsCurrentUserDirectoryAcl(path: string, run?: Execute): Promise<void>;
29
+ export declare function protectWindowsDirectory(path: string, created: boolean, run?: Execute, session?: string): Promise<void>;
30
+ /** File ACEs may inherit from their already-private parent. */
31
+ export declare function verifyWindowsPermissionSync(path: string): void;
32
+ export declare function ensureWindowsPrivateDirectorySync(path: string, session?: string): void;
33
+ export type WindowsPermission = 'ok' | 'owner' | 'ace' | 'acl_unavailable';
34
+ /** Recursive native listings are attributed by absolute path; missing entries fall back. */
35
+ export declare function auditWindowsPermissions(state: string, paths: string[], run?: Execute, recursive?: boolean, tempState?: string): Promise<Map<string, WindowsPermission>>;
36
+ export {};
37
+ //# sourceMappingURL=runtimeSigners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeSigners.d.ts","sourceRoot":"","sources":["../src/runtimeSigners.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,MAAM,GACd;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/D,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACzF,eAAO,MAAM,OAAO,EAAE,OAQrB,CAAC;AAuDF,mGAAmG;AACnG,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB7F;AAED,kDAAkD;AAClD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,GAAG,UAAc,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAIf;AAQD,KAAK,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAYlD,wBAAgB,yBAAyB,IAAI,YAAY,CAIxD;AAWD,0FAA0F;AAC1F,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,GAAG,UAAc,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAMf;AAsDD,2EAA2E;AAC3E,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAoBvB;AA2DD,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAShG;AAkKD,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,MAAM,EACZ,GAAG,UAAc,GAChB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,GAAG,UAAc,EACjB,OAAO,SAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAEf;AAUD,+DAA+D;AAC/D,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9D;AACD,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAO,GAAG,IAAI,CAIpF;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;AAC3E,4FAA4F;AAC5F,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,UAAc,EACjB,SAAS,UAAO,EAChB,SAAS,SAA0D,GAClE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CA4DzC"}