@qvac/harness 0.6.0 → 0.7.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 (60) hide show
  1. package/CHANGELOG.md +91 -1
  2. package/README.md +32 -27
  3. package/dist-lib/index.d.ts +1 -0
  4. package/dist-lib/index.js +2 -2
  5. package/dist-lib/lib/capabilities/preview-model-source.d.ts +0 -1
  6. package/dist-lib/lib/connect.js +5 -2
  7. package/dist-lib/lib/contract-types.d.ts +1 -0
  8. package/dist-lib/lib/docx/index.d.ts +1 -1
  9. package/dist-lib/lib/docx/index.js +1 -1
  10. package/dist-lib/lib/hardware/capability-probe.js +9 -4
  11. package/dist-lib/lib/hooks/built-in/sandbox.js +0 -5
  12. package/dist-lib/lib/models/model-catalog-constants.d.ts +7 -0
  13. package/dist-lib/lib/models/model-catalog-constants.js +17 -0
  14. package/dist-lib/lib/models/model-catalog.d.ts +14 -6
  15. package/dist-lib/lib/models/model-catalog.js +14 -6
  16. package/dist-lib/lib/models/model-list.d.ts +2 -0
  17. package/dist-lib/lib/models/model-list.js +9 -4
  18. package/dist-lib/lib/models/model-task.d.ts +3 -0
  19. package/dist-lib/lib/models/model-task.js +14 -0
  20. package/dist-lib/lib/models/music-catalog.d.ts +2 -0
  21. package/dist-lib/lib/models/music-catalog.js +9 -0
  22. package/dist-lib/lib/office/index.d.ts +1 -1
  23. package/dist-lib/lib/office/index.js +1 -1
  24. package/dist-lib/lib/office/python.js +1 -2
  25. package/dist-lib/lib/tools/exec/adapters/python/deadline-state.d.ts +10 -0
  26. package/dist-lib/lib/tools/exec/adapters/python/deadline-state.js +5 -0
  27. package/dist-lib/lib/tools/exec/adapters/python/interrupt-timer.js +10 -17
  28. package/dist-lib/lib/tools/exec/adapters/python/loader.js +15 -11
  29. package/dist-lib/lib/tools/exec/adapters/python/pyodide.js +1 -15
  30. package/dist-lib/lib/tools/exec/adapters/python/python-adapter.d.ts +1 -0
  31. package/dist-lib/lib/tools/exec/adapters/python/python-adapter.js +13 -2
  32. package/dist-lib/lib/tools/exec/adapters/python/wheels.d.ts +3 -3
  33. package/dist-lib/lib/tools/exec/adapters/python/wheels.js +3 -14
  34. package/dist-lib/lib/tools/exec/adapters/python/worker/active.d.ts +19 -0
  35. package/dist-lib/lib/tools/exec/adapters/python/worker/active.js +72 -0
  36. package/dist-lib/lib/tools/exec/adapters/python/worker/client.d.ts +0 -1
  37. package/dist-lib/lib/tools/exec/adapters/python/worker/client.js +8 -76
  38. package/dist-lib/lib/tools/exec/adapters/python/worker/entry.js +2 -126
  39. package/dist-lib/lib/tools/exec/adapters/python/worker/interrupt-deadline.d.ts +1 -0
  40. package/dist-lib/lib/tools/exec/adapters/python/worker/interrupt-deadline.js +21 -0
  41. package/dist-lib/lib/tools/exec/adapters/python/worker/serve.d.ts +2 -0
  42. package/dist-lib/lib/tools/exec/adapters/python/worker/serve.js +90 -0
  43. package/dist-lib/lib/tools/exec/adapters/python/worker/{spawn-node.d.ts → spawn.d.ts} +0 -1
  44. package/dist-lib/lib/tools/exec/adapters/python/worker/{spawn-node.js → spawn.js} +0 -8
  45. package/dist-lib/lib/tools/exec/bare-runtime.d.ts +2 -0
  46. package/dist-lib/lib/tools/exec/bare-runtime.js +10 -0
  47. package/dist-lib/lib/tools/exec.d.ts +0 -2
  48. package/dist-lib/lib/tools/exec.js +6 -11
  49. package/dist-lib/schema/harness.js +2 -1
  50. package/dist-lib/spec/hrpc/messages.js +6 -5
  51. package/dist-lib/spec/hyperschema/index.js +6 -5
  52. package/dist-lib/spec/hyperschema/schema.json +6 -1
  53. package/dist-lib/spec/hyperschema/types.d.ts +2 -1
  54. package/package.json +39 -20
  55. package/dist/harness.bundle +0 -42313
  56. package/dist/harness.cjs +0 -18
  57. package/dist/harness.d.ts +0 -8
  58. package/dist/prebuilds-manifest.json +0 -372
  59. package/dist-lib/lib/tools/exec/adapters/python/worker/spawn-bare.d.ts +0 -3
  60. package/dist-lib/lib/tools/exec/adapters/python/worker/spawn-bare.js +0 -38
@@ -0,0 +1,90 @@
1
+ import { parentPort, workerData } from 'worker_threads';
2
+ import { errorMessage, isRecord } from '../../../../../guards.js';
3
+ import { setHarnessLog, setHarnessLogSink } from '../../../../../log.js';
4
+ import { performRun } from '../run-session.js';
5
+ import { asHostMessage, toWireResult } from './protocol.js';
6
+ function narrowThreadData(data) {
7
+ if (isRecord(data) && 'sab' in data) {
8
+ const sab = data.sab;
9
+ const log = 'log' in data && data.log === true;
10
+ if (sab instanceof SharedArrayBuffer) {
11
+ return { sab, log };
12
+ }
13
+ }
14
+ throw new Error('python worker started without { sab } worker data');
15
+ }
16
+ function openPort() {
17
+ const parent = parentPort;
18
+ if (!parent) {
19
+ throw new Error('python worker entry loaded on the main thread');
20
+ }
21
+ const queued = [];
22
+ const waiting = [];
23
+ parent.on('message', (value) => {
24
+ const next = waiting.shift();
25
+ if (next) {
26
+ next(value);
27
+ }
28
+ else {
29
+ queued.push(value);
30
+ }
31
+ });
32
+ return {
33
+ port: {
34
+ read() {
35
+ if (queued.length > 0) {
36
+ return Promise.resolve(queued.shift());
37
+ }
38
+ return new Promise((resolve) => waiting.push(resolve));
39
+ },
40
+ write: (message) => parent.postMessage(message),
41
+ close: () => parent.close()
42
+ },
43
+ ...narrowThreadData(workerData)
44
+ };
45
+ }
46
+ async function serveRuns(port, py) {
47
+ for (;;) {
48
+ const message = asHostMessage(await port.read());
49
+ if (!message || message.type === 'close') {
50
+ break;
51
+ }
52
+ if (message.type === 'connect-answer') {
53
+ continue;
54
+ }
55
+ let closing = false;
56
+ const askConnect = async (host) => {
57
+ if (closing)
58
+ return false;
59
+ port.write({ type: 'connect-ask', host });
60
+ const answer = asHostMessage(await port.read());
61
+ if (answer?.type === 'connect-answer') {
62
+ return answer.allowed;
63
+ }
64
+ closing = true;
65
+ return false;
66
+ };
67
+ const { result, evict } = await performRun(py, message.spec, { askConnect });
68
+ port.write({ type: 'result', id: message.id, result: toWireResult(result), evict });
69
+ if (evict || closing) {
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ export async function serve(load) {
75
+ const { port, sab, log } = openPort();
76
+ setHarnessLog(log);
77
+ setHarnessLogSink((message) => port.write({ type: 'log', message }));
78
+ try {
79
+ const py = await load();
80
+ py.setInterruptBuffer(new Uint8Array(sab));
81
+ port.write({ type: 'ready' });
82
+ await serveRuns(port, py);
83
+ }
84
+ catch (error) {
85
+ port.write({ type: 'boot-error', message: errorMessage(error) });
86
+ }
87
+ finally {
88
+ port.close();
89
+ }
90
+ }
@@ -11,4 +11,3 @@ export interface WorkerData {
11
11
  readonly log: boolean;
12
12
  }
13
13
  export declare function spawnPythonWorker(entry: string, data: WorkerData): WorkerLink;
14
- export declare function spawnInlineThread(source: string, data: object): () => void;
@@ -48,11 +48,3 @@ export function spawnPythonWorker(entry, data) {
48
48
  unref: () => worker.unref()
49
49
  };
50
50
  }
51
- export function spawnInlineThread(source, data) {
52
- const worker = new Worker(`const data = require('worker_threads').workerData\n${source}`, {
53
- eval: true,
54
- workerData: data
55
- });
56
- worker.unref();
57
- return () => { };
58
- }
@@ -0,0 +1,2 @@
1
+ import type { ShellRuntime } from './adapters/shell/shell-adapter.ts';
2
+ export declare function bareRuntime(): Promise<Required<ShellRuntime>>;
@@ -0,0 +1,10 @@
1
+ import { spawnEnv } from '../../helpers/spawn-path.js';
2
+ export async function bareRuntime() {
3
+ const [{ spawn }, { default: process }] = await Promise.all([
4
+ import('bare-subprocess'),
5
+ import('bare-process')
6
+ ]);
7
+ const rawSpawn = spawn;
8
+ const spawnFn = (command, opts = {}) => rawSpawn(command, { ...opts, env: spawnEnv(process.env, process.platform, opts.env) });
9
+ return { spawn: spawnFn, killProcess: process.kill.bind(process) };
10
+ }
@@ -1,7 +1,6 @@
1
1
  import type { ToolDefinition } from '../capabilities/completion.ts';
2
2
  import type { ExecError } from './exec/adapters/python/output-policy.ts';
3
3
  import type { LoadPyodideFn } from './exec/adapters/python/pyodide.ts';
4
- import { type ShellRuntime } from './exec/adapters/shell/shell-adapter.ts';
5
4
  import { type KillProcess, type SpawnFn } from './exec/runner.ts';
6
5
  import { type Realpath } from './fs/scope.ts';
7
6
  import type { CredentialStoreFn } from './skills/auth-resolver.ts';
@@ -19,7 +18,6 @@ export interface ExecToolOptions {
19
18
  readonly deniedRoots?: readonly string[];
20
19
  readonly skillsDir?: string;
21
20
  }
22
- export declare function bareRuntime(): Promise<Required<ShellRuntime>>;
23
21
  export interface ScriptRun {
24
22
  args: Record<string, unknown>;
25
23
  trusted: boolean;
@@ -1,8 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { AbortedError } from '../helpers/race-abort.js';
4
- import { spawnEnv } from '../helpers/spawn-path.js';
5
- import { checkPdfBuildSource, checkBareLengthArgs, checkPptxBuildSource, checkPythonSource, checkUnstagedRead, createPythonAdapter, isPythonLanguage, parseInputs, parseOutputs, parsePackages, parseWorkdir, pinned, runsThroughPyodide, unwrapPythonSource } from './exec/adapters/python/python-adapter.js';
4
+ import { checkPdfBuildSource, checkBareLengthArgs, checkPptxBuildSource, checkPythonSource, checkUnstagedRead, createPythonAdapter, isPythonLanguage, parseInputs, parseOutputs, parsePackages, parseWorkdir, pinned, runsThroughPyodide, sandboxInstallError, unwrapPythonSource } from './exec/adapters/python/python-adapter.js';
6
5
  import { pythonCreateEffect } from './exec/adapters/python/create-effect.js';
7
6
  import { namedHosts } from './exec/adapters/python/named-hosts.js';
8
7
  import { pythonReachesNetwork } from './exec/adapters/python/net-shim.js';
@@ -12,6 +11,7 @@ import { MAX_OUTPUT_CHARS_LIMIT } from './exec/runner.js';
12
11
  import { bareBin, firstCommandToken, sanitizeCommand } from './exec/scope.js';
13
12
  import { FILES_NEED_PYTHON_ERROR, isPythonSourceShaped, PACKAGES_NEED_PYTHON_ERROR, pythonRedirectError, startsLikePython, videoToolError } from './exec/shell-guidance.js';
14
13
  import { shellArgv } from './exec/shell-argv.js';
14
+ import { bareRuntime } from './exec/bare-runtime.js';
15
15
  import { canonicalDenyRoots, defaultRealpath, hostPath, resolveKey } from './fs/scope.js';
16
16
  import { unquoteArg } from './model-args.js';
17
17
  import { settingsEnv } from './skills/skill-settings.js';
@@ -48,15 +48,6 @@ function shellEffect(command, toolOps) {
48
48
  }
49
49
  return matched.every((op) => op.annotation(argv) === 'read') ? 'read' : 'write';
50
50
  }
51
- export async function bareRuntime() {
52
- const [{ spawn }, { default: process }] = await Promise.all([
53
- import('bare-subprocess'),
54
- import('bare-process')
55
- ]);
56
- const rawSpawn = spawn;
57
- const spawnFn = (command, opts = {}) => rawSpawn(command, { ...opts, env: spawnEnv(process.env, process.platform, opts.env) });
58
- return { spawn: spawnFn, killProcess: process.kill.bind(process) };
59
- }
60
51
  function resolveExecution({ adapters, fallback }, args, ctx) {
61
52
  for (const adapter of adapters) {
62
53
  const plan = adapter.resolve(args, ctx);
@@ -468,6 +459,10 @@ export function createExecTool({ spawn, killProcess, loadPyodide, disablePyodide
468
459
  if (packages && 'error' in packages) {
469
460
  return packages.error;
470
461
  }
462
+ const refusal = ctx?.sandboxMode === true ? sandboxInstallError(command, packages) : null;
463
+ if (refusal) {
464
+ return refusal;
465
+ }
471
466
  if (!scriptRun || !scriptRun.trusted) {
472
467
  const sourceError = checkPythonSource(command);
473
468
  if (sourceError) {
@@ -450,7 +450,8 @@ export function registerHarnessTypes(ns) {
450
450
  fields: [
451
451
  { name: 'capabilityProfile', type: '@harness/capability-profile', required: true },
452
452
  { name: 'recommendedModelName', type: 'string', required: true },
453
- { name: 'memoryBudget', type: '@harness/memory-budget' }
453
+ { name: 'memoryBudget', type: '@harness/memory-budget' },
454
+ { name: 'mobile', type: 'bool' }
454
455
  ]
455
456
  });
456
457
  ns.register({
@@ -1,12 +1,12 @@
1
1
  // This file is autogenerated by the hyperschema compiler
2
- // Schema Version: 16
2
+ // Schema Version: 17
3
3
  /* eslint-disable camelcase */
4
4
  /* eslint-disable quotes */
5
5
  /* eslint-disable space-before-function-paren */
6
6
 
7
7
  import { c } from 'hyperschema/runtime'
8
8
 
9
- const VERSION = 16
9
+ const VERSION = 17
10
10
 
11
11
  // eslint-disable-next-line no-unused-vars
12
12
  let version = VERSION
@@ -1919,12 +1919,12 @@ const encoding42 = {
1919
1919
  preencode(state, m) {
1920
1920
  encoding38.preencode(state, m.capabilityProfile)
1921
1921
  c.string.preencode(state, m.recommendedModelName)
1922
- state.end++ // max flag is 1 so always one byte
1922
+ state.end++ // max flag is 2 so always one byte
1923
1923
 
1924
1924
  if (version >= 2 && m.memoryBudget) encoding42_2.preencode(state, m.memoryBudget)
1925
1925
  },
1926
1926
  encode(state, m) {
1927
- const flags = (version >= 2 && m.memoryBudget) ? 1 : 0
1927
+ const flags = ((version >= 2 && m.memoryBudget) ? 1 : 0) | ((version >= 17 && m.mobile) ? 2 : 0)
1928
1928
 
1929
1929
  encoding38.encode(state, m.capabilityProfile)
1930
1930
  c.string.encode(state, m.recommendedModelName)
@@ -1940,7 +1940,8 @@ const encoding42 = {
1940
1940
  return {
1941
1941
  capabilityProfile: r0,
1942
1942
  recommendedModelName: r1,
1943
- memoryBudget: (version >= 2 && (flags & 1) !== 0) ? encoding42_2.decode(state) : null
1943
+ memoryBudget: (version >= 2 && (flags & 1) !== 0) ? encoding42_2.decode(state) : null,
1944
+ mobile: (version >= 17 && (flags & 2) !== 0)
1944
1945
  }
1945
1946
  }
1946
1947
  }
@@ -1,12 +1,12 @@
1
1
  // This file is autogenerated by the hyperschema compiler
2
- // Schema Version: 16
2
+ // Schema Version: 17
3
3
  /* eslint-disable camelcase */
4
4
  /* eslint-disable quotes */
5
5
  /* eslint-disable space-before-function-paren */
6
6
 
7
7
  import { c } from 'hyperschema/runtime'
8
8
 
9
- const VERSION = 16
9
+ const VERSION = 17
10
10
 
11
11
  // eslint-disable-next-line no-unused-vars
12
12
  let version = VERSION
@@ -1919,12 +1919,12 @@ const encoding42 = {
1919
1919
  preencode(state, m) {
1920
1920
  encoding38.preencode(state, m.capabilityProfile)
1921
1921
  c.string.preencode(state, m.recommendedModelName)
1922
- state.end++ // max flag is 1 so always one byte
1922
+ state.end++ // max flag is 2 so always one byte
1923
1923
 
1924
1924
  if (version >= 2 && m.memoryBudget) encoding42_2.preencode(state, m.memoryBudget)
1925
1925
  },
1926
1926
  encode(state, m) {
1927
- const flags = (version >= 2 && m.memoryBudget) ? 1 : 0
1927
+ const flags = ((version >= 2 && m.memoryBudget) ? 1 : 0) | ((version >= 17 && m.mobile) ? 2 : 0)
1928
1928
 
1929
1929
  encoding38.encode(state, m.capabilityProfile)
1930
1930
  c.string.encode(state, m.recommendedModelName)
@@ -1940,7 +1940,8 @@ const encoding42 = {
1940
1940
  return {
1941
1941
  capabilityProfile: r0,
1942
1942
  recommendedModelName: r1,
1943
- memoryBudget: (version >= 2 && (flags & 1) !== 0) ? encoding42_2.decode(state) : null
1943
+ memoryBudget: (version >= 2 && (flags & 1) !== 0) ? encoding42_2.decode(state) : null,
1944
+ mobile: (version >= 17 && (flags & 2) !== 0)
1944
1945
  }
1945
1946
  }
1946
1947
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": 16,
2
+ "version": 17,
3
3
  "schema": [
4
4
  {
5
5
  "name": "empty",
@@ -1580,6 +1580,11 @@
1580
1580
  "name": "memoryBudget",
1581
1581
  "type": "@harness/memory-budget",
1582
1582
  "version": 2
1583
+ },
1584
+ {
1585
+ "name": "mobile",
1586
+ "type": "bool",
1587
+ "version": 17
1583
1588
  }
1584
1589
  ]
1585
1590
  },
@@ -1,5 +1,5 @@
1
1
  // This file is autogenerated by hyperschema-ts
2
- // Schema version: 16
2
+ // Schema version: 17
3
3
  // Do not edit manually.
4
4
 
5
5
  export interface HarnessEmpty {
@@ -312,6 +312,7 @@ export interface HarnessCapabilityResponse {
312
312
  capabilityProfile: HarnessCapabilityProfile
313
313
  recommendedModelName: string
314
314
  memoryBudget?: HarnessMemoryBudget | null
315
+ mobile?: boolean
315
316
  }
316
317
 
317
318
  export interface HarnessTranscribeRequest {
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "@qvac/harness",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
+ "engines": {
6
+ "bare": ">=1.34.0"
7
+ },
5
8
  "description": "An AI harness implementing generate(context) via @qvac/sdk. Knows nothing about workbench, hyperdb, or chunks — just inference in, events out.",
6
9
  "exports": {
7
10
  ".": {
@@ -182,7 +185,6 @@
182
185
  "types": "./dist-lib/schema/release-tags.d.ts",
183
186
  "default": "./dist-lib/schema/release-tags.js"
184
187
  },
185
- "./dist/harness.cjs": "./dist/harness.cjs",
186
188
  "./worker/stow-entry.mjs": "./worker/stow-entry.mjs",
187
189
  "./lib/tools/catalog.ts": {
188
190
  "types": "./dist-lib/lib/tools/catalog.d.ts",
@@ -212,6 +214,10 @@
212
214
  "types": "./dist-lib/lib/tools/exec/adapters/python/create-effect.d.ts",
213
215
  "default": "./dist-lib/lib/tools/exec/adapters/python/create-effect.js"
214
216
  },
217
+ "./lib/tools/exec/adapters/python/deadline-state.ts": {
218
+ "types": "./dist-lib/lib/tools/exec/adapters/python/deadline-state.d.ts",
219
+ "default": "./dist-lib/lib/tools/exec/adapters/python/deadline-state.js"
220
+ },
215
221
  "./lib/tools/exec/adapters/python/distributions.ts": {
216
222
  "types": "./dist-lib/lib/tools/exec/adapters/python/distributions.d.ts",
217
223
  "default": "./dist-lib/lib/tools/exec/adapters/python/distributions.js"
@@ -264,6 +270,10 @@
264
270
  "types": "./dist-lib/lib/tools/exec/adapters/python/wheels.d.ts",
265
271
  "default": "./dist-lib/lib/tools/exec/adapters/python/wheels.js"
266
272
  },
273
+ "./lib/tools/exec/adapters/python/worker/active.ts": {
274
+ "types": "./dist-lib/lib/tools/exec/adapters/python/worker/active.d.ts",
275
+ "default": "./dist-lib/lib/tools/exec/adapters/python/worker/active.js"
276
+ },
267
277
  "./lib/tools/exec/adapters/python/worker/client.ts": {
268
278
  "types": "./dist-lib/lib/tools/exec/adapters/python/worker/client.d.ts",
269
279
  "default": "./dist-lib/lib/tools/exec/adapters/python/worker/client.js"
@@ -272,22 +282,30 @@
272
282
  "types": "./dist-lib/lib/tools/exec/adapters/python/worker/entry.d.ts",
273
283
  "default": "./dist-lib/lib/tools/exec/adapters/python/worker/entry.js"
274
284
  },
285
+ "./lib/tools/exec/adapters/python/worker/interrupt-deadline.ts": {
286
+ "types": "./dist-lib/lib/tools/exec/adapters/python/worker/interrupt-deadline.d.ts",
287
+ "default": "./dist-lib/lib/tools/exec/adapters/python/worker/interrupt-deadline.js"
288
+ },
275
289
  "./lib/tools/exec/adapters/python/worker/protocol.ts": {
276
290
  "types": "./dist-lib/lib/tools/exec/adapters/python/worker/protocol.d.ts",
277
291
  "default": "./dist-lib/lib/tools/exec/adapters/python/worker/protocol.js"
278
292
  },
279
- "./lib/tools/exec/adapters/python/worker/spawn-bare.ts": {
280
- "types": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn-bare.d.ts",
281
- "default": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn-bare.js"
293
+ "./lib/tools/exec/adapters/python/worker/serve.ts": {
294
+ "types": "./dist-lib/lib/tools/exec/adapters/python/worker/serve.d.ts",
295
+ "default": "./dist-lib/lib/tools/exec/adapters/python/worker/serve.js"
282
296
  },
283
- "./lib/tools/exec/adapters/python/worker/spawn-node.ts": {
284
- "types": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn-node.d.ts",
285
- "default": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn-node.js"
297
+ "./lib/tools/exec/adapters/python/worker/spawn.ts": {
298
+ "types": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn.d.ts",
299
+ "default": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn.js"
286
300
  },
287
301
  "./lib/tools/exec/adapters/shell/shell-adapter.ts": {
288
302
  "types": "./dist-lib/lib/tools/exec/adapters/shell/shell-adapter.d.ts",
289
303
  "default": "./dist-lib/lib/tools/exec/adapters/shell/shell-adapter.js"
290
304
  },
305
+ "./lib/tools/exec/bare-runtime.ts": {
306
+ "types": "./dist-lib/lib/tools/exec/bare-runtime.d.ts",
307
+ "default": "./dist-lib/lib/tools/exec/bare-runtime.js"
308
+ },
291
309
  "./lib/tools/exec/obsidian/cli-process.ts": {
292
310
  "types": "./dist-lib/lib/tools/exec/obsidian/cli-process.d.ts",
293
311
  "default": "./dist-lib/lib/tools/exec/obsidian/cli-process.js"
@@ -607,7 +625,7 @@
607
625
  "skill-eval": "bare examples/skill-eval/run.ts",
608
626
  "translate-eval": "bare examples/translate-eval/run.ts",
609
627
  "model-residency": "bare examples/model-residency/run.ts",
610
- "prepack": "node scripts/vendor-python-wheels.mjs && node scripts/build-lib.mjs && node scripts/build-bundle.mjs --minify",
628
+ "prepack": "node scripts/vendor-python-wheels.mjs && node scripts/build-lib.mjs",
611
629
  "vendor:wheels": "node scripts/vendor-python-wheels.mjs",
612
630
  "build:lib": "node scripts/build-lib.mjs",
613
631
  "test:addons": "node --test scripts/addon-externals.test.cjs"
@@ -672,9 +690,11 @@
672
690
  "bare": "./dist-lib/lib/audio-transcode-bare.js",
673
691
  "default": "./dist-lib/lib/audio-transcode-node.js"
674
692
  },
675
- "#pyodide-worker-spawn": {
676
- "bare": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn-bare.js",
677
- "default": "./dist-lib/lib/tools/exec/adapters/python/worker/spawn-node.js"
693
+ "#pyodide-worker-entry": "./dist-lib/lib/tools/exec/adapters/python/worker/entry.js",
694
+ "#pyodide-interrupt-deadline": "./dist-lib/lib/tools/exec/adapters/python/worker/interrupt-deadline.js",
695
+ "#pyodide-wheels": "./wheels/",
696
+ "worker_threads": {
697
+ "bare": "bare-worker"
678
698
  },
679
699
  "#sdk-config-loader": {
680
700
  "bare": "./dist-lib/lib/sdk-config-loader.bare.js",
@@ -716,12 +736,11 @@
716
736
  "bare-https": "^3.0.0",
717
737
  "bare-image-resample": "^1.0.2",
718
738
  "bare-media": "^2.10.0",
719
- "bare-module": "6.4.0",
720
739
  "bare-net": "^2.3.2",
721
740
  "bare-os": "^3.9.1",
722
741
  "bare-path": "^3.0.1",
723
742
  "bare-process": "4.4.1",
724
- "bare-sidecar": "^0.5.2",
743
+ "bare-sidecar": "0.5.7",
725
744
  "bare-storage": "^1.1.0",
726
745
  "bare-stow": "^0.1.4",
727
746
  "bare-stream": "^2.13.3",
@@ -730,6 +749,7 @@
730
749
  "bare-tls": "^3.1.7",
731
750
  "bare-tty": "^5.1.2",
732
751
  "bare-url": "^2.4.5",
752
+ "bare-worker": "^4.5.0",
733
753
  "compact-encoding": "^3.4.0",
734
754
  "hrpc": "^4.3.0",
735
755
  "hyperschema": "^1.23.0",
@@ -749,8 +769,7 @@
749
769
  },
750
770
  "devDependencies": {
751
771
  "bare-bundle": "^1.10.0",
752
- "bare-module-lexer": "^1.6.3",
753
- "bare-runtime": "^1.30.0",
772
+ "bare-runtime": "1.34.0",
754
773
  "bare-semver": "^1.1.0",
755
774
  "brittle": "^4.0.2",
756
775
  "brittle-jobs": "^0.2.1",
@@ -763,12 +782,10 @@
763
782
  "mermaid": "~11.16.1",
764
783
  "prettier": "^3.6.2",
765
784
  "prettier-config-holepunch": "^2.0.0",
766
- "terser": "^5.51.2",
767
785
  "typescript": "^7.0.2"
768
786
  },
769
787
  "patchedDependencies": {
770
788
  "pyodide@314.0.2": "patches/pyodide@314.0.2.patch",
771
- "bare-sidecar@0.5.4": "patches/bare-sidecar@0.5.4.patch",
772
789
  "localwatch@1.4.3": "patches/localwatch@1.4.3.patch",
773
790
  "hypercore-blob-server@1.15.0": "patches/hypercore-blob-server@1.15.0.patch",
774
791
  "bare-stow@0.1.5": "patches/bare-stow@0.1.5.patch",
@@ -785,8 +802,10 @@
785
802
  },
786
803
  "homepage": "https://github.com/tetherto/qvac-harness",
787
804
  "overrides": {
788
- "bare-runtime": "^1.30.0",
789
- "bare-module": "6.4.0",
805
+ "bare-sidecar": "0.5.7",
806
+ "bare-module-traverse": "~2.5.8",
807
+ "bare-thread": "^1.2.7",
808
+ "bare-runtime": "1.34.0",
790
809
  "bare-process": "4.4.1",
791
810
  "lodash": "4.18.1",
792
811
  "hyperschema": "^1.23.0",