@cortexkit/aft-bridge 0.39.4 → 0.40.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 (49) hide show
  1. package/dist/bash-format.d.ts +0 -1
  2. package/dist/bash-format.d.ts.map +1 -1
  3. package/dist/bash-format.js +0 -3
  4. package/dist/bash-format.js.map +1 -1
  5. package/dist/bash-hints.js +97 -9
  6. package/dist/bash-hints.js.map +1 -1
  7. package/dist/bridge.d.ts +7 -1
  8. package/dist/bridge.d.ts.map +1 -1
  9. package/dist/bridge.js +39 -42
  10. package/dist/bridge.js.map +1 -1
  11. package/dist/coerce.d.ts +39 -0
  12. package/dist/coerce.d.ts.map +1 -1
  13. package/dist/coerce.js +82 -0
  14. package/dist/coerce.js.map +1 -1
  15. package/dist/command-timeouts.d.ts.map +1 -1
  16. package/dist/command-timeouts.js +1 -0
  17. package/dist/command-timeouts.js.map +1 -1
  18. package/dist/config-tiers.d.ts +19 -0
  19. package/dist/config-tiers.d.ts.map +1 -0
  20. package/dist/config-tiers.js +45 -0
  21. package/dist/config-tiers.js.map +1 -0
  22. package/dist/index.d.ts +10 -8
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +7 -5
  25. package/dist/index.js.map +1 -1
  26. package/dist/migration.d.ts +27 -0
  27. package/dist/migration.d.ts.map +1 -1
  28. package/dist/migration.js +384 -2
  29. package/dist/migration.js.map +1 -1
  30. package/dist/onnx-runtime.d.ts +4 -6
  31. package/dist/onnx-runtime.d.ts.map +1 -1
  32. package/dist/onnx-runtime.js +13 -15
  33. package/dist/onnx-runtime.js.map +1 -1
  34. package/dist/paths.d.ts +17 -0
  35. package/dist/paths.d.ts.map +1 -1
  36. package/dist/paths.js +52 -1
  37. package/dist/paths.js.map +1 -1
  38. package/dist/pool.d.ts.map +1 -1
  39. package/dist/pool.js +15 -16
  40. package/dist/pool.js.map +1 -1
  41. package/dist/project-identity.d.ts +30 -0
  42. package/dist/project-identity.d.ts.map +1 -0
  43. package/dist/project-identity.js +69 -0
  44. package/dist/project-identity.js.map +1 -0
  45. package/package.json +1 -1
  46. package/dist/pipe-strip.d.ts +0 -7
  47. package/dist/pipe-strip.d.ts.map +0 -1
  48. package/dist/pipe-strip.js +0 -688
  49. package/dist/pipe-strip.js.map +0 -1
package/dist/migration.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { spawnSync } from "node:child_process";
2
- import { existsSync, mkdirSync } from "node:fs";
2
+ import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
3
3
  import { homedir, tmpdir } from "node:os";
4
- import { dirname, join } from "node:path";
4
+ import { basename, dirname, join, resolve } from "node:path";
5
5
  import { resolveHarnessStoragePath } from "./paths.js";
6
6
  import { findBinary } from "./resolver.js";
7
7
  let spawnSyncForMigration = spawnSync;
@@ -38,6 +38,388 @@ export function resolveLegacyStorageRoot(harness) {
38
38
  export function resolveCortexKitStorageRoot() {
39
39
  return join(dataHome(), "cortexkit", "aft");
40
40
  }
41
+ function stripJsoncForParse(input) {
42
+ let out = "";
43
+ let inString = false;
44
+ let escaped = false;
45
+ for (let i = 0; i < input.length; i++) {
46
+ const ch = input[i];
47
+ const next = input[i + 1];
48
+ if (inString) {
49
+ out += ch;
50
+ if (escaped) {
51
+ escaped = false;
52
+ }
53
+ else if (ch === "\\") {
54
+ escaped = true;
55
+ }
56
+ else if (ch === '"') {
57
+ inString = false;
58
+ }
59
+ continue;
60
+ }
61
+ if (ch === '"') {
62
+ inString = true;
63
+ out += ch;
64
+ continue;
65
+ }
66
+ if (ch === "/" && next === "/") {
67
+ while (i < input.length && input[i] !== "\n")
68
+ i++;
69
+ out += "\n";
70
+ continue;
71
+ }
72
+ if (ch === "/" && next === "*") {
73
+ i += 2;
74
+ while (i < input.length && !(input[i] === "*" && input[i + 1] === "/"))
75
+ i++;
76
+ i++;
77
+ out += " ";
78
+ continue;
79
+ }
80
+ out += ch;
81
+ }
82
+ let withoutTrailingCommas = "";
83
+ inString = false;
84
+ escaped = false;
85
+ for (let i = 0; i < out.length; i++) {
86
+ const ch = out[i];
87
+ if (inString) {
88
+ withoutTrailingCommas += ch;
89
+ if (escaped) {
90
+ escaped = false;
91
+ }
92
+ else if (ch === "\\") {
93
+ escaped = true;
94
+ }
95
+ else if (ch === '"') {
96
+ inString = false;
97
+ }
98
+ continue;
99
+ }
100
+ if (ch === '"') {
101
+ inString = true;
102
+ withoutTrailingCommas += ch;
103
+ continue;
104
+ }
105
+ if (ch === ",") {
106
+ let j = i + 1;
107
+ while (j < out.length && /\s/.test(out[j]))
108
+ j++;
109
+ if (out[j] === "}" || out[j] === "]")
110
+ continue;
111
+ }
112
+ withoutTrailingCommas += ch;
113
+ }
114
+ return withoutTrailingCommas;
115
+ }
116
+ function sortJson(value) {
117
+ if (Array.isArray(value))
118
+ return value.map(sortJson);
119
+ if (value && typeof value === "object") {
120
+ const sorted = {};
121
+ for (const key of Object.keys(value).sort()) {
122
+ sorted[key] = sortJson(value[key]);
123
+ }
124
+ return sorted;
125
+ }
126
+ return value;
127
+ }
128
+ function normalizedJsoncSemantics(content) {
129
+ return JSON.stringify(sortJson(JSON.parse(stripJsoncForParse(content))));
130
+ }
131
+ function fileSemanticsMatch(a, b) {
132
+ try {
133
+ return normalizedJsoncSemantics(a) === normalizedJsoncSemantics(b);
134
+ }
135
+ catch {
136
+ return a === b;
137
+ }
138
+ }
139
+ function sleepSync(ms) {
140
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
141
+ }
142
+ function acquireConfigMigrationLock(lockDir) {
143
+ const deadline = Date.now() + 30_000;
144
+ while (true) {
145
+ try {
146
+ mkdirSync(lockDir, { recursive: false });
147
+ return () => {
148
+ try {
149
+ rmSync(lockDir, { recursive: true, force: true });
150
+ }
151
+ catch {
152
+ // best-effort lock cleanup
153
+ }
154
+ };
155
+ }
156
+ catch (err) {
157
+ const code = err?.code;
158
+ if (code !== "EEXIST")
159
+ throw err;
160
+ try {
161
+ const ageMs = Date.now() - statSync(lockDir).mtimeMs;
162
+ if (ageMs > 60_000) {
163
+ rmSync(lockDir, { recursive: true, force: true });
164
+ continue;
165
+ }
166
+ }
167
+ catch {
168
+ // If the lock disappeared between mkdir attempts, retry immediately.
169
+ }
170
+ if (Date.now() >= deadline) {
171
+ throw new Error(`timed out waiting for config migration lock ${lockDir}`);
172
+ }
173
+ sleepSync(25);
174
+ }
175
+ }
176
+ }
177
+ function atomicCopyConfigFile(sourcePath, targetPath) {
178
+ mkdirSync(dirname(targetPath), { recursive: true });
179
+ const tmpPath = join(dirname(targetPath), `.${basename(targetPath)}.${process.pid}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`);
180
+ let fd = null;
181
+ try {
182
+ fd = openSync(tmpPath, "wx", 0o600);
183
+ writeFileSync(fd, readFileSync(sourcePath));
184
+ closeSync(fd);
185
+ fd = null;
186
+ renameSync(tmpPath, targetPath);
187
+ }
188
+ catch (err) {
189
+ if (fd !== null) {
190
+ try {
191
+ closeSync(fd);
192
+ }
193
+ catch {
194
+ // best-effort close before cleanup
195
+ }
196
+ }
197
+ try {
198
+ unlinkSync(tmpPath);
199
+ }
200
+ catch {
201
+ // best-effort temp cleanup
202
+ }
203
+ throw err;
204
+ }
205
+ }
206
+ function atomicWriteConfigFile(targetPath, content) {
207
+ mkdirSync(dirname(targetPath), { recursive: true });
208
+ const tmpPath = join(dirname(targetPath), `.${basename(targetPath)}.${process.pid}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`);
209
+ let fd = null;
210
+ try {
211
+ fd = openSync(tmpPath, "wx", 0o600);
212
+ writeFileSync(fd, content);
213
+ closeSync(fd);
214
+ fd = null;
215
+ renameSync(tmpPath, targetPath);
216
+ }
217
+ catch (err) {
218
+ if (fd !== null) {
219
+ try {
220
+ closeSync(fd);
221
+ }
222
+ catch {
223
+ // best-effort close before cleanup
224
+ }
225
+ }
226
+ try {
227
+ unlinkSync(tmpPath);
228
+ }
229
+ catch {
230
+ // best-effort temp cleanup
231
+ }
232
+ throw err;
233
+ }
234
+ }
235
+ const MOVED_MARKER_SUFFIX = ".MOVED_READPLEASE";
236
+ function nonClobberingSidecarPath(desiredPath) {
237
+ if (!existsSync(desiredPath))
238
+ return desiredPath;
239
+ for (let index = 1; index < Number.MAX_SAFE_INTEGER; index++) {
240
+ const candidate = `${desiredPath}.${index}`;
241
+ if (!existsSync(candidate))
242
+ return candidate;
243
+ }
244
+ throw new Error(`could not find available preservation sidecar path for ${desiredPath}`);
245
+ }
246
+ function movedMarkerContent(targetPath, originalName, originalContent) {
247
+ const header = [
248
+ "// AFT configuration moved.",
249
+ "//",
250
+ "// AFT now reads its configuration from one shared CortexKit location",
251
+ "// instead of a per-agent path. The settings that were in this file have",
252
+ "// been moved to:",
253
+ "//",
254
+ `// ${targetPath}`,
255
+ "//",
256
+ "// Edit that file to change AFT settings. This location is no longer read",
257
+ "// by AFT.",
258
+ "//",
259
+ `// To undo, rename this file back to "${originalName}" (and remove the`,
260
+ "// CortexKit copy above if you want this location to take precedence).",
261
+ "//",
262
+ "// Your original settings are preserved below for reference.",
263
+ "",
264
+ "",
265
+ ].join("\n");
266
+ return `${header}${originalContent}`;
267
+ }
268
+ // After the live config is safely at the CortexKit target, rename each legacy
269
+ // source aside to a "<name>.MOVED_READPLEASE" marker so a user editing the old
270
+ // path notices it is no longer read (a copy-in-place leaves a silent stale-edit
271
+ // trap). The marker preserves the original settings and documents how to undo.
272
+ // A failure here is non-fatal: the content is already at the target, so we warn
273
+ // and leave the legacy file in place rather than failing the migration.
274
+ function markLegacySourcesMovedAside(sources, targetPath, logger) {
275
+ const warnings = [];
276
+ const info = logger?.info ?? logger?.log;
277
+ for (const source of sources) {
278
+ const desiredMarkerPath = `${source.path}${MOVED_MARKER_SUFFIX}`;
279
+ const markerPath = nonClobberingSidecarPath(desiredMarkerPath);
280
+ try {
281
+ const original = readFileSync(source.path, "utf-8");
282
+ if (markerPath !== desiredMarkerPath) {
283
+ logger?.warn?.(`Preserving existing legacy AFT marker ${desiredMarkerPath}; writing new marker to ${markerPath}`);
284
+ }
285
+ atomicWriteConfigFile(markerPath, movedMarkerContent(targetPath, basename(source.path), original));
286
+ unlinkSync(source.path);
287
+ info?.(`Moved legacy AFT config ${source.path} aside to ${markerPath}; AFT now reads ${targetPath}`);
288
+ }
289
+ catch (err) {
290
+ const msg = err instanceof Error ? err.message : String(err);
291
+ warnings.push(`AFT could not move legacy config ${source.path} aside (${msg}); it is now stale and ignored. Delete it manually — AFT reads ${targetPath}.`);
292
+ logger?.warn?.(`Could not move legacy AFT config ${source.path} aside (${msg}); AFT reads ${targetPath}`);
293
+ }
294
+ }
295
+ return warnings;
296
+ }
297
+ const PRESERVED_OLD_SUFFIX = "_OLD";
298
+ function preservedOldContent(losingHarness, winningHarness, targetPath, originalContent) {
299
+ const winnerLine = winningHarness
300
+ ? `// configs differed, so ${winningHarness}'s config won (first harness to run the`
301
+ : "// configs differed, so the config that was migrated first won and is the";
302
+ const header = [
303
+ `// AFT config from ${losingHarness} — preserved, NOT read.`,
304
+ "//",
305
+ "// AFT now reads one shared config for all harnesses. Your OpenCode and Pi",
306
+ winnerLine,
307
+ winningHarness ? "// migration) and is now the active config at:" : "// active config at:",
308
+ "//",
309
+ `// ${targetPath}`,
310
+ "//",
311
+ `// This file holds ${losingHarness}'s previous settings. Merge anything you`,
312
+ "// want to keep into the active config above, then delete this file. AFT does",
313
+ "// not read this path.",
314
+ "",
315
+ "",
316
+ ].join("\n");
317
+ return `${header}${originalContent}`;
318
+ }
319
+ // When two harnesses have DIFFERENT legacy configs, the operating harness's
320
+ // config wins (becomes the shared target) and the other's is preserved beside
321
+ // the target as `<target>.<harness>_OLD` so the user can merge it. This replaces
322
+ // the old refuse-and-write-nothing behavior, which dropped the plugin to default
323
+ // config and could wipe a fingerprint-keyed semantic index. `winningHarness` is
324
+ // undefined when the target already existed (we don't know which harness wrote
325
+ // it first), in which case the message describes the existing shared config.
326
+ function preserveDifferingSourceAsOld(source, winningHarness, targetPath, logger) {
327
+ const losingHarness = source.harness ?? "pi";
328
+ const desiredOldPath = `${targetPath}.${losingHarness}${PRESERVED_OLD_SUFFIX}`;
329
+ const oldPath = nonClobberingSidecarPath(desiredOldPath);
330
+ try {
331
+ if (oldPath !== desiredOldPath) {
332
+ logger?.warn?.(`Preserving existing ${losingHarness} config sidecar ${desiredOldPath}; writing new preserved config to ${oldPath}`);
333
+ }
334
+ atomicWriteConfigFile(oldPath, preservedOldContent(losingHarness, winningHarness, targetPath, source.content));
335
+ }
336
+ catch (err) {
337
+ const msg = err instanceof Error ? err.message : String(err);
338
+ logger?.warn?.(`Could not preserve ${losingHarness} config as ${oldPath} (${msg})`);
339
+ }
340
+ const usingDesc = winningHarness ? `${winningHarness}'s config` : "the existing shared config";
341
+ return (`AFT found different OpenCode and Pi configs during config unification. ` +
342
+ `Using ${usingDesc} at ${targetPath}; preserved ${losingHarness}'s previous ` +
343
+ `config at ${oldPath} — merge any settings you want to keep, then delete it.`);
344
+ }
345
+ function visibleConfigMigrationWarning(scope, targetPath, paths, reason) {
346
+ const uniquePaths = [...new Set([targetPath, ...paths])];
347
+ return (`AFT ${scope} config migration refused: ${reason}. ` +
348
+ `Legacy and CortexKit config paths collapse to one file, but AFT will not overwrite or merge them automatically. ` +
349
+ `Please consolidate manually into ${targetPath}. Paths: ${uniquePaths.join(" ; ")}`);
350
+ }
351
+ export function migrateAftConfigFile(opts) {
352
+ const warnings = [];
353
+ // A legacy source path can resolve to the SAME file as the CortexKit target
354
+ // (e.g. OPENCODE_CONFIG_DIR pointed at ~/.config/cortexkit, so the legacy
355
+ // `<opencode-config>/aft.jsonc` IS `~/.config/cortexkit/aft.jsonc`). That file
356
+ // is the live, already-migrated config — never a legacy source to copy from,
357
+ // preserve, or (critically) `unlinkSync` aside. Dropping it here prevents the
358
+ // active config from being deleted, which would fall the plugin back to
359
+ // defaults and wipe the fingerprint-keyed semantic index (the MC incident).
360
+ const resolvedTarget = resolve(opts.targetPath);
361
+ const existingSources = opts.legacySources.filter((source) => existsSync(source.path) && resolve(source.path) !== resolvedTarget);
362
+ const info = opts.logger?.info ?? opts.logger?.log;
363
+ if (existingSources.length === 0) {
364
+ return { migrated: false, conflict: false, targetPath: opts.targetPath, warnings };
365
+ }
366
+ mkdirSync(dirname(opts.targetPath), { recursive: true });
367
+ const release = acquireConfigMigrationLock(`${opts.targetPath}.lock`);
368
+ try {
369
+ const sources = existingSources.map((source) => ({
370
+ ...source,
371
+ content: readFileSync(source.path, "utf-8"),
372
+ }));
373
+ // Target already exists: first-opened wins permanently. We never overwrite
374
+ // it (whichever harness migrated first owns the shared config). Any legacy
375
+ // source that DIFFERS from it is preserved beside the target as
376
+ // `<target>.<harness>_OLD` for manual merge; matching ones are just cleared.
377
+ if (existsSync(opts.targetPath)) {
378
+ const targetContent = readFileSync(opts.targetPath, "utf-8");
379
+ for (const source of sources) {
380
+ if (fileSemanticsMatch(source.content, targetContent))
381
+ continue;
382
+ warnings.push(preserveDifferingSourceAsOld(source, undefined, opts.targetPath, opts.logger));
383
+ }
384
+ info?.(`AFT ${opts.scope} config already present at ${opts.targetPath}; reconciled ${sources.length} legacy source(s)`);
385
+ warnings.push(...markLegacySourcesMovedAside(sources, opts.targetPath, opts.logger));
386
+ return { migrated: false, conflict: false, targetPath: opts.targetPath, warnings };
387
+ }
388
+ // Target does not exist yet. Pick the winner: the operating harness's source
389
+ // if present, else the first source by list order (back-compat for callers
390
+ // that don't pass operatingHarness). The winner's config becomes the shared
391
+ // target; any OTHER source that differs is preserved as `<target>.<harness>_OLD`.
392
+ const winner = (opts.operatingHarness
393
+ ? sources.find((source) => source.harness === opts.operatingHarness)
394
+ : undefined) ?? sources[0];
395
+ atomicCopyConfigFile(winner.path, opts.targetPath);
396
+ info?.(`Migrated AFT ${opts.scope} config from ${winner.path} to ${opts.targetPath}`);
397
+ for (const source of sources) {
398
+ if (source.path === winner.path)
399
+ continue;
400
+ if (fileSemanticsMatch(source.content, winner.content))
401
+ continue;
402
+ warnings.push(preserveDifferingSourceAsOld(source, winner.harness, opts.targetPath, opts.logger));
403
+ }
404
+ warnings.push(...markLegacySourcesMovedAside(sources, opts.targetPath, opts.logger));
405
+ return {
406
+ migrated: true,
407
+ conflict: false,
408
+ sourcePath: winner.path,
409
+ targetPath: opts.targetPath,
410
+ warnings,
411
+ };
412
+ }
413
+ catch (err) {
414
+ const message = visibleConfigMigrationWarning(opts.scope, opts.targetPath, existingSources.map((source) => source.path), `migration failed (${err instanceof Error ? err.message : String(err)})`);
415
+ warnings.push(message);
416
+ opts.logger?.warn?.(message);
417
+ return { migrated: false, conflict: true, targetPath: opts.targetPath, warnings };
418
+ }
419
+ finally {
420
+ release();
421
+ }
422
+ }
41
423
  function tail(value) {
42
424
  if (!value)
43
425
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,10 @@
4
4
  * Downloads the CPU-only ONNX Runtime from Microsoft's GitHub releases.
5
5
  * The library is cached in the storage directory alongside semantic index data.
6
6
  *
7
- * Audit-3 v0.17 #1 hardening (v0.17.1): the previous implementation used
8
- * `curl` with no size cap, no archive containment validation, no install
9
- * lock, and no integrity verification leaving an entire parallel install
10
- * path that bypassed every defense the LSP GitHub installer had earned in
11
- * Phase A through Phase E. This rewrite brings ONNX onto the same security
12
- * floor:
7
+ * Security hardening: an earlier implementation used `curl` with no size cap,
8
+ * no archive containment validation, no install lock, and no integrity
9
+ * verification an install path that bypassed every defense the LSP GitHub
10
+ * installer already had. This brings ONNX onto the same security floor:
13
11
  *
14
12
  * - Streaming size cap via fetch + ReadableStream transformer (`MAX_DOWNLOAD_BYTES`).
15
13
  * - Streaming SHA-256 of the downloaded archive, persisted in `.aft-onnx-installed`.
@@ -1 +1 @@
1
- {"version":3,"file":"onnx-runtime.d.ts","sourceRoot":"","sources":["../src/onnx-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,OAAO,EAGL,YAAY,EAeb,MAAM,SAAS,CAAC;AA4BjB,wFAAwF;AACxF,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC;CAC5B;AAkED,4DAA4D;AAC5D,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,IAAI,MAAM,CAQ7C;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiGlF;AAED;;;;;;GAMG;AACH,iBAAS,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA8C9D;AAED,iBAAS,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAW9D;AAED,iBAAS,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/E;AAiBD,iBAAS,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9D;AA0BD;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyCzE;AAED,iBAAS,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMzD;AA8BD,iBAAS,2BAA2B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQnF;AAED,iBAAS,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyG9D;AA0PD,iBAAS,iBAAiB,CACxB,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACjD,QAAQ,GAAE,OAAO,YAA2B,GAC3C,IAAI,CA6DN;AAwFD;;;;;GAKG;AACH,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgD9C;AAED,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAgC3C;AAoCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAS3D;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAgBpB,CAAC"}
1
+ {"version":3,"file":"onnx-runtime.d.ts","sourceRoot":"","sources":["../src/onnx-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,EAGL,YAAY,EAeb,MAAM,SAAS,CAAC;AA4BjB,wFAAwF;AACxF,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC;CAC5B;AAkED,4DAA4D;AAC5D,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,IAAI,MAAM,CAQ7C;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiGlF;AAED;;;;;;GAMG;AACH,iBAAS,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA8C9D;AAED,iBAAS,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAW9D;AAED,iBAAS,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAG/E;AAiBD,iBAAS,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO9D;AA0BD;;;;;;;;GAQG;AACH,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyCzE;AAED,iBAAS,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMzD;AA8BD,iBAAS,2BAA2B,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQnF;AAED,iBAAS,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyG9D;AA0PD,iBAAS,iBAAiB,CACxB,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACjD,QAAQ,GAAE,OAAO,YAA2B,GAC3C,IAAI,CA6DN;AAwFD;;;;;GAKG;AACH,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgD9C;AAED,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAgC3C;AAoCD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAS3D;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAgBpB,CAAC"}
@@ -4,12 +4,10 @@
4
4
  * Downloads the CPU-only ONNX Runtime from Microsoft's GitHub releases.
5
5
  * The library is cached in the storage directory alongside semantic index data.
6
6
  *
7
- * Audit-3 v0.17 #1 hardening (v0.17.1): the previous implementation used
8
- * `curl` with no size cap, no archive containment validation, no install
9
- * lock, and no integrity verification leaving an entire parallel install
10
- * path that bypassed every defense the LSP GitHub installer had earned in
11
- * Phase A through Phase E. This rewrite brings ONNX onto the same security
12
- * floor:
7
+ * Security hardening: an earlier implementation used `curl` with no size cap,
8
+ * no archive containment validation, no install lock, and no integrity
9
+ * verification an install path that bypassed every defense the LSP GitHub
10
+ * installer already had. This brings ONNX onto the same security floor:
13
11
  *
14
12
  * - Streaming size cap via fetch + ReadableStream transformer (`MAX_DOWNLOAD_BYTES`).
15
13
  * - Streaming SHA-256 of the downloaded archive, persisted in `.aft-onnx-installed`.
@@ -41,7 +39,7 @@ import { error, log, warn } from "./active-logger.js";
41
39
  import { PLATFORM_ARCH_MAP } from "./platform.js";
42
40
  const ORT_VERSION = "1.24.4";
43
41
  const ORT_REPO = "microsoft/onnxruntime";
44
- // Audit-3 v0.17 #1: streaming + extraction size caps.
42
+ // Streaming + extraction size caps.
45
43
  //
46
44
  // ONNX Runtime archives are around 60–80 MB on most platforms and 250 MB
47
45
  // extracted (Windows ships extra debug binaries). 256 MB and 1 GiB give
@@ -155,7 +153,7 @@ export async function ensureOnnxRuntime(storageDir) {
155
153
  const resolvedOrtDir = resolveCachedOnnxRuntimeDir(ortVersionDir, libName);
156
154
  const libPath = join(resolvedOrtDir, libName);
157
155
  if (existsSync(libPath)) {
158
- // Audit-3 v0.17 #1 (TOFU): if we recorded a hash for this version,
156
+ // TOFU: if we recorded a hash for this version,
159
157
  // verify the library still matches. A mismatch means tampering or
160
158
  // partial install corruption. Refuse to use it and let the caller
161
159
  // either retry the download (after the user clears the cache) or
@@ -200,7 +198,7 @@ export async function ensureOnnxRuntime(storageDir) {
200
198
  warn(`ONNX Runtime auto-download not available for ${process.platform}/${process.arch}. Install manually: ${getManualInstallHint()}`);
201
199
  return null;
202
200
  }
203
- // Audit-3 v0.17 #1: serialize concurrent installs.
201
+ // Serialize concurrent installs.
204
202
  //
205
203
  // Two AFT plugin instances starting at the same time would otherwise both
206
204
  // download and extract into overlapping temp dirs and clobber each other.
@@ -607,7 +605,7 @@ async function downloadFileWithCap(url, destPath) {
607
605
  * Validate that every file/dir under `stagingRoot` is contained inside it
608
606
  * AND that the total extracted bytes do not exceed `MAX_EXTRACT_BYTES`.
609
607
  *
610
- * Audit-3 v0.17 #1: zip-slip + symlink containment + decompression-bomb
608
+ * zip-slip + symlink containment + decompression-bomb
611
609
  * defense. tar and unzip both can produce paths like `../../etc/passwd`;
612
610
  * Windows tar.exe and unzip can also produce symlinks that point outside
613
611
  * the destination. We walk the tree post-extraction and reject anything
@@ -668,9 +666,9 @@ async function downloadOnnxRuntime(info, targetDir) {
668
666
  try {
669
667
  mkdirSync(tmpDir, { recursive: true });
670
668
  const archivePath = join(tmpDir, `onnxruntime.${info.archiveType}`);
671
- // Audit-3 v0.17 #1: download with streaming size cap (no more curl).
669
+ // Download with a streaming size cap.
672
670
  await downloadFileWithCap(url, archivePath);
673
- // Audit-3 v0.17 #1: hash the archive for TOFU.
671
+ // Hash the archive for TOFU.
674
672
  const archiveSha256 = sha256File(archivePath);
675
673
  log(`ONNX Runtime archive sha256=${archiveSha256}`);
676
674
  // Extract.
@@ -691,7 +689,7 @@ async function downloadOnnxRuntime(info, targetDir) {
691
689
  catch {
692
690
  // ignore
693
691
  }
694
- // Audit-3 v0.17 #1: containment + size-bomb check.
692
+ // Containment + size-bomb check.
695
693
  validateExtractedTree(tmpDir);
696
694
  // Find and copy the library file.
697
695
  const extractedDir = join(tmpDir, info.assetName, "lib");
@@ -726,7 +724,7 @@ async function downloadOnnxRuntime(info, targetDir) {
726
724
  }
727
725
  }
728
726
  copyOnnxLibraries(info, extractedDir, targetDir, realFiles, symlinks);
729
- // Audit-3 v0.17 #1: persist version + archive sha256 for TOFU on
727
+ // Persist version + archive sha256 for TOFU on
730
728
  // future sessions. Hash the actual main library file (not the
731
729
  // archive) because that's what we'll re-hash on the next ensure call.
732
730
  const libPath = join(targetDir, info.libName);
@@ -826,7 +824,7 @@ function copyOnnxLibraries(info, extractedDir, targetDir, realFiles, symlinks, c
826
824
  }
827
825
  async function extractZipArchive(archivePath, destinationDir) {
828
826
  if (process.platform === "win32") {
829
- // Audit-2 v0.17 #12: drop PowerShell. Even via execFileSync, PowerShell
827
+ // Avoid PowerShell. Even via execFileSync, PowerShell
830
828
  // applies its own quoting rules to `$args[N]` lookups that could allow
831
829
  // attacker-controlled fragments to escape into command interpretation.
832
830
  // tar.exe ships in System32 on Windows 10 build 17063+ — execFileSync