Run daemon on packaged Bare runtime
This commit is contained in:
@@ -30,7 +30,7 @@ JARVIS-QVAC has one cognitive loop and one QVAC authority.
|
||||
~~~mermaid
|
||||
flowchart LR
|
||||
U[User] --> G[GNOME Shell / ARC]
|
||||
G <--> D[jarvisd / Node 22]
|
||||
G <--> D[jarvisd / packaged Bare]
|
||||
D --> H[agent-harness]
|
||||
D --> M[Single QVAC master]
|
||||
D --> V[Voice + PipeWire]
|
||||
@@ -62,7 +62,7 @@ desktop permission.
|
||||
Full runtime support requires:
|
||||
|
||||
- Ubuntu GNOME 24.04 or newer, GNOME Shell 46+, and a logged-in user session.
|
||||
- Node.js 22.17 or newer.
|
||||
- Bare 1.32.0 or newer, packaged with the application bundle.
|
||||
- PipeWire and WirePlumber.
|
||||
- xdg-desktop-portal with the GNOME backend.
|
||||
- AT-SPI2 and, for primary Wayland actuation, libei/libeis plus a local EIS
|
||||
@@ -95,9 +95,11 @@ bash ~/.local/share/jarvis-qvac/packaging/first-run.sh
|
||||
gnome-extensions enable jarvis@qvac.local
|
||||
~~~
|
||||
|
||||
The installer requires Node.js 22.17+, npm, curl, and tar. For a mirror or a
|
||||
specific Gitea ref, set `JARVIS_SERVER`, `JARVIS_REPO`, or `JARVIS_REF` before
|
||||
the command. The downloaded ref must contain the repository packaging files.
|
||||
The rolling installer first downloads a self-contained architecture bundle
|
||||
with the Bare ELF runtime and all application dependencies. It therefore needs
|
||||
only curl and tar at runtime. A source fallback needs Node.js/npm when no
|
||||
published bundle exists for the requested ref. Set `JARVIS_SERVER`,
|
||||
`JARVIS_REPO`, or `JARVIS_BUNDLE_URL` for a mirror or a specific bundle.
|
||||
|
||||
## Install from a checkout
|
||||
|
||||
@@ -142,6 +144,7 @@ under the user's cache directory, and user data paths described in
|
||||
|
||||
~~~bash
|
||||
npm test # Node tests, including the vendored harness test
|
||||
npm run bare:smoke # Bare runtime and builtin mapping smoke test
|
||||
npm run gpu-doctor # QVAC GPU, VRAM, and profile diagnostics
|
||||
npm run cu-doctor # Wayland/X11, portals, AT-SPI, and libei
|
||||
npm run voice-doctor # PipeWire, wake bridge, and playback diagnostics
|
||||
@@ -204,6 +207,7 @@ Artifacts in dist are:
|
||||
|
||||
- jarvis-qvac_<version>_<arch>.deb
|
||||
- jarvis-qvac-extension.zip
|
||||
- jarvis-qvac-bare-linux-<arch>.tar.gz (self-contained runtime bundle)
|
||||
- SHA256SUMS
|
||||
|
||||
Gitea Actions workflows live under .gitea/workflows. CI runs tests, Python
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
import { access } from 'node:fs/promises';
|
||||
import { constants } from 'node:fs';
|
||||
import { execFile } from 'node:child_process';
|
||||
import { promisify } from 'node:util';
|
||||
import { spawn } from 'node:child_process';
|
||||
|
||||
const run = promisify(execFile);
|
||||
const run = (file, args) => new Promise((resolve, reject) => {
|
||||
const child = spawn(file, args, { stdio: ['ignore', 'pipe', 'pipe'] });
|
||||
let stdout = ''; let stderr = '';
|
||||
child.stdout?.on('data', (chunk) => { stdout += chunk; });
|
||||
child.stderr?.on('data', (chunk) => { stderr += chunk; });
|
||||
child.once('error', reject);
|
||||
child.once('close', (code) => code === 0 ? resolve({ stdout, stderr }) : reject(new Error(stderr || `${file} exited ${code}`)));
|
||||
});
|
||||
const checks = [
|
||||
['session', false, async () => process.env.XDG_SESSION_TYPE || 'unknown'],
|
||||
['portal', false, async () => { await access('/usr/share/dbus-1/services/org.freedesktop.portal.Desktop.service', constants.F_OK); return 'installed'; }],
|
||||
|
||||
+467
-1
@@ -2,5 +2,471 @@
|
||||
"name": "@jarvis-qvac/computer-use",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "session.js"
|
||||
"main": "session.js",
|
||||
"imports": {
|
||||
"assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"node:assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"node:assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"node:async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"node:buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"node:child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"node:cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"node:console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"node:constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"node:crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"node:dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"node:diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"node:dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"node:dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"node:domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"node:events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"node:fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"node:fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"node:http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"node:http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"node:https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"node:inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"node:inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"node:module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"node:net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"node:os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"node:path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"node:path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"node:path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"node:perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"node:process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"node:punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"node:querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"node:readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"node:readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"node:repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"node:sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"node:sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"node:stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"node:stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"node:stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"node:stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"node:string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"node:sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"node:test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"node:test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"node:timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"node:timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"node:tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"node:trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"node:tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"node:url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"node:util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"node:util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"node:v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"node:vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"node:wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"node:worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
},
|
||||
"node:zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
// Bare entrypoint. Keep compatibility globals in this process, then load the
|
||||
// daemon only after the mapping has been installed. This keeps Node out of the
|
||||
// installed runtime while allowing the copied CommonJS harness to keep its
|
||||
// upstream package shape.
|
||||
await import('bare-node-runtime/global');
|
||||
const { startDaemon } = await import('./index.js');
|
||||
await startDaemon();
|
||||
@@ -3,7 +3,11 @@ const OBJECT = '/io/qvac/Jarvis';
|
||||
const BUS_NAME = 'io.qvac.Jarvis';
|
||||
|
||||
export async function serveOnSessionBus(daemon) {
|
||||
const dbus = await import('dbus-next');
|
||||
// dbus-next is CommonJS. Load it through Bare's Node compatibility map so
|
||||
// its builtin imports use bare-* implementations where supported.
|
||||
const { createRequire } = await import('node:module');
|
||||
const require = createRequire(import.meta.url);
|
||||
const dbus = require('dbus-next', { with: { imports: 'bare-node-runtime/imports' } });
|
||||
const { Interface } = dbus.interface;
|
||||
class Session extends Interface {
|
||||
constructor() { super(IFACE); }
|
||||
|
||||
+2
-1
@@ -75,7 +75,7 @@ export class JarvisDaemon extends EventEmitter {
|
||||
async close() { clearInterval(this._idleTimer); clearInterval(this._telemetryTimer); this.computerRevoke(); this.recovery.save({ state: 'ARMED', mode: this.mode }); await this.voiceLoop?.stop?.(); await this.harness.close(); }
|
||||
}
|
||||
|
||||
if (import.meta.url === `file://${process.argv[1]}`) {
|
||||
export async function startDaemon() {
|
||||
const daemon = new JarvisDaemon();
|
||||
daemon.startVoice().catch((error) => console.error(`jarvisd: voice unavailable: ${error.message}`));
|
||||
import('./dbus-service.js').then(({ serveOnSessionBus }) => serveOnSessionBus(daemon)).catch((error) => {
|
||||
@@ -84,4 +84,5 @@ if (import.meta.url === `file://${process.argv[1]}`) {
|
||||
});
|
||||
process.on('SIGINT', () => daemon.close().finally(() => process.exit(0)));
|
||||
console.log('jarvisd ready; QVAC inference remains GPU-gated');
|
||||
return daemon;
|
||||
}
|
||||
|
||||
+467
-1
@@ -2,5 +2,471 @@
|
||||
"name": "@jarvis-qvac/daemon",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "index.js"
|
||||
"main": "index.js",
|
||||
"imports": {
|
||||
"assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"node:assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"node:assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"node:async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"node:buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"node:child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"node:cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"node:console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"node:constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"node:crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"node:dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"node:diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"node:dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"node:dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"node:domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"node:events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"node:fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"node:fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"node:http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"node:http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"node:https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"node:inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"node:inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"node:module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"node:net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"node:os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"node:path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"node:path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"node:path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"node:perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"node:process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"node:punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"node:querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"node:readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"node:readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"node:repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"node:sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"node:sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"node:stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"node:stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"node:stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"node:stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"node:string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"node:sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"node:test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"node:test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"node:timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"node:timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"node:tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"node:trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"node:tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"node:url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"node:util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"node:util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"node:v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"node:vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"node:wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"node:worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
},
|
||||
"node:zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,12 @@ import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
|
||||
const harnessPath = process.env.JARVIS_HARNESS_PATH || path.resolve(new URL('../vendor/agent-harness', import.meta.url).pathname);
|
||||
// Bare's module loader accepts the maintained Holepunch compatibility map. The
|
||||
// second argument is essential for the copied CommonJS harness: it maps its
|
||||
// Node builtin requests to bare-* modules without creating a second runtime.
|
||||
const require = createRequire(import.meta.url);
|
||||
process.env.QVAC_CONFIG_PATH ||= path.resolve(new URL('../qvac.config.json', import.meta.url).pathname);
|
||||
const Agent = require(path.join(harnessPath, 'index.js'));
|
||||
const Agent = require(path.join(harnessPath, 'index.js'), { with: { imports: 'bare-node-runtime/imports' } });
|
||||
|
||||
let loadPromise = null;
|
||||
let ownerCount = 0;
|
||||
@@ -33,7 +36,7 @@ export function sdkPackagePath() {
|
||||
}
|
||||
|
||||
export function assertSdkVersion() {
|
||||
const sdkPackage = require(sdkPackagePath());
|
||||
const sdkPackage = require(sdkPackagePath(), { with: { imports: 'bare-node-runtime/imports' } });
|
||||
if (!/^0\.19\./.test(sdkPackage.version)) {
|
||||
throw new Error(`Jarvis requires vendored @qvac/sdk in the 0.19.x series; found ${sdkPackage.version}`);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
await import('bare-node-runtime/global');
|
||||
const { qvacStatus } = await import('./qvac-master.js');
|
||||
console.log(JSON.stringify(qvacStatus(), null, 2));
|
||||
+10
-4
@@ -1,13 +1,19 @@
|
||||
import { spawnSync } from 'node:child_process';
|
||||
import { access } from 'node:fs/promises';
|
||||
|
||||
const commandAvailable = (command) => spawnSync('which', [command], { stdio: 'ignore' }).status === 0;
|
||||
const commandAvailable = async (command) => {
|
||||
for (const dir of ['/usr/bin', '/usr/local/bin', '/bin']) {
|
||||
try { await access(`${dir}/${command}`); return true; } catch {}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
const pipewire = await commandAvailable('pw-cat');
|
||||
const report = {
|
||||
pipewireCapture: commandAvailable('pw-cat'),
|
||||
pipewireCapture: pipewire,
|
||||
wakeEngine: Boolean(process.env.JARVIS_WAKE_COMMAND),
|
||||
wakeCommand: process.env.JARVIS_WAKE_COMMAND || null,
|
||||
sampleRate: 16000,
|
||||
channels: 1,
|
||||
ttsPlayback: commandAvailable('pw-cat'),
|
||||
ttsPlayback: pipewire,
|
||||
gpuRequired: true,
|
||||
};
|
||||
console.log(JSON.stringify(report, null, 2));
|
||||
|
||||
+2
-1
@@ -12,6 +12,7 @@ This directory is the maintained technical reference for the repository.
|
||||
| Understand the voice loop | [Voice pipeline](voice-pipeline.md) |
|
||||
| Build desktop control | [Computer use](computer-use.md) |
|
||||
| Integrate QVAC | [QVAC runtime](qvac-runtime.md) |
|
||||
| Run the packaged runtime | [Bare runtime](bare-runtime.md) |
|
||||
| Understand the agent | [Harness integration](harness-integration.md) |
|
||||
| Use the D-Bus API | [API reference](api.md) |
|
||||
| Build and release with Gitea | [CI and releases](ci-gitea.md) |
|
||||
@@ -51,6 +52,6 @@ must be verified on the target GNOME session.
|
||||
|
||||
- Commands are run from the repository root unless stated otherwise.
|
||||
- Paths beginning with `~` are user-scoped paths.
|
||||
- `jarvisd` means the user service and its Node process.
|
||||
- `jarvisd` means the user service and its packaged Bare process.
|
||||
- “Master” means the singleton in `daemon/qvac-master.js`.
|
||||
- Mermaid diagrams use Gitea-compatible fenced Markdown.
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# Bare runtime
|
||||
|
||||
The installed JARVIS daemon runs on the packaged Bare ELF runtime. Node.js is
|
||||
used in CI for npm dependency resolution and the portable test suite; it is not
|
||||
required on an end user’s machine.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
Install[web installer] --> Bundle[rolling Bare bundle]
|
||||
Bundle --> ELF[bare-runtime ELF]
|
||||
ELF --> Entry[daemon/bare-entry.js]
|
||||
Entry --> Compat[bare-node-runtime map]
|
||||
Compat --> Harness[copied agent harness]
|
||||
Entry --> QVAC[@qvac/inference in process]
|
||||
QVAC --> GPU[QVAC GPU backend]
|
||||
```
|
||||
|
||||
Bare has no Node standard library. JARVIS carries the official
|
||||
`bare-node-runtime` conditional map at the root, daemon, computer-use, and
|
||||
copied harness package boundaries. Portable source imports such as
|
||||
`node:fs`, `node:path`, and `node:events` resolve to `bare-fs`, `bare-path`,
|
||||
and `bare-events`. Process execution resolves to `bare-subprocess`. New direct
|
||||
runtime code should prefer `bare-*` names when it has no Node test counterpart.
|
||||
|
||||
The QVAC boundary has one deliberate runtime switch. Node uses the existing
|
||||
`@qvac/sdk` surface. Bare uses `@qvac/inference` in process and registers the
|
||||
LLM plugin once inside the copied harness engine. The daemon remains the single
|
||||
QVAC owner: no skill, job, or extension creates another inference runtime.
|
||||
|
||||
`packaging/prepare-bare-deps.py` applies the same official map to CommonJS
|
||||
dependencies at bundle-build time. Bare resolves imports at each package
|
||||
boundary, and some third party CommonJS packages do not declare their own map.
|
||||
The preparation changes only the release copy under `node_modules`.
|
||||
|
||||
Build and verify the bundle with:
|
||||
|
||||
```bash
|
||||
npm ci
|
||||
npm run bare:smoke
|
||||
npm run package:bare
|
||||
```
|
||||
|
||||
The installer executes `node_modules/bare-runtime-linux-*/bin/bare` directly.
|
||||
The `node_modules/.bin/bare` convenience script is a Node launcher and is not
|
||||
used by the service. The generated systemd unit therefore has no Node
|
||||
executable in its `ExecStart` line.
|
||||
|
||||
GPU policy remains strict. The Bare QVAC engine must report a visible GPU and
|
||||
the master load path passes `device: "gpu"`, full GPU layer offload, and GPU
|
||||
multimodal projection settings. A missing or unusable GPU stops inference and
|
||||
is reported by `gpu-doctor`; it never silently falls back to CPU.
|
||||
+9
-8
@@ -2,9 +2,10 @@
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Ubuntu GNOME 24.04 or newer, Node.js 22.17+, PipeWire/WirePlumber, GNOME
|
||||
desktop portals, GTK4/libadwaita, AT-SPI2, and a QVAC-visible GPU are required
|
||||
for the full runtime. See [hardware compatibility](hardware-compatibility.md).
|
||||
Ubuntu GNOME 24.04 or newer, the packaged Bare runtime, PipeWire/WirePlumber,
|
||||
GNOME desktop portals, GTK4/libadwaita, AT-SPI2, and a QVAC-visible GPU are
|
||||
required for the full runtime. Node.js is a build and test dependency only.
|
||||
See [hardware compatibility](hardware-compatibility.md).
|
||||
|
||||
## Web installation
|
||||
|
||||
@@ -14,10 +15,10 @@ For the current Gitea rolling build:
|
||||
curl -fsSL https://git.ssh.surf/snxraven/gnome-jarvis/raw/branch/main/packaging/web-installer.sh | bash -s -- --enable
|
||||
~~~
|
||||
|
||||
The installer downloads the source archive at the `rolling` ref and delegates
|
||||
to the repository installer. Omit `--enable` to copy files without starting
|
||||
the service. Pin a reviewed ref or use a mirror with `JARVIS_REF`,
|
||||
`JARVIS_SERVER`, and `JARVIS_REPO`.
|
||||
The installer downloads the self-contained Bare bundle from the `rolling`
|
||||
release and delegates to the repository installer. Omit `--enable` to copy
|
||||
files without starting the service. Use `JARVIS_SERVER`, `JARVIS_REPO`, and
|
||||
`JARVIS_BUNDLE_URL` for a mirror.
|
||||
|
||||
## Development start
|
||||
|
||||
@@ -27,7 +28,7 @@ npm test
|
||||
npm run gpu-doctor
|
||||
npm run cu-doctor
|
||||
npm run voice-doctor
|
||||
node daemon/index.js
|
||||
bare daemon/bare-entry.js
|
||||
```
|
||||
|
||||
Use `npm run qvac:serve:diagnostic` only when a separate local client needs the
|
||||
|
||||
Generated
+335
-3
@@ -10,15 +10,18 @@
|
||||
"workspaces": [
|
||||
"daemon",
|
||||
"computer-use",
|
||||
"apps/control-center"
|
||||
"apps/control-center",
|
||||
"vendor/agent-harness"
|
||||
],
|
||||
"dependencies": {
|
||||
"@qvac/cli": "0.13.0",
|
||||
"@qvac/sdk": "0.19.1",
|
||||
"bare-node-runtime": "1.5.0",
|
||||
"bare-runtime": "1.32.0",
|
||||
"dbus-next": "^0.10.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22.17.0"
|
||||
"bare": ">=1.30.3"
|
||||
}
|
||||
},
|
||||
"apps/control-center": {
|
||||
@@ -1741,6 +1744,10 @@
|
||||
"xache": "^1.2.1"
|
||||
}
|
||||
},
|
||||
"node_modules/agent-harness": {
|
||||
"resolved": "vendor/agent-harness",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/ajv": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
|
||||
@@ -1980,6 +1987,23 @@
|
||||
"bare-inspect": "^3.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-async-hooks": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-async-hooks/-/bare-async-hooks-0.0.0.tgz",
|
||||
"integrity": "sha512-xNfGwUobaomCGMGAqohAekS3uMCj+4tvI4AoOaJnO7NfpN+dvFdkC5xkeQtmZzs2vxf2TR5J6i5FDd1ImCZERw==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/bare-broadcast-channel": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-broadcast-channel/-/bare-broadcast-channel-0.2.0.tgz",
|
||||
"integrity": "sha512-MuAwdKWr4cSjNwqvbE3tA9Wn6w69q6iXYnP2Wb0nlDa6sKNSMSfY7LXkV4FzWlq9JFP9d0HkCAKPboTLKnUfWQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-events": "^2.0.0",
|
||||
"bare-stream": "^2.7.0",
|
||||
"bare-structured-clone": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-buffer": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-buffer/-/bare-buffer-3.7.1.tgz",
|
||||
@@ -2020,6 +2044,33 @@
|
||||
"bare-bundle": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-channel": {
|
||||
"version": "5.2.4",
|
||||
"resolved": "https://registry.npmjs.org/bare-channel/-/bare-channel-5.2.4.tgz",
|
||||
"integrity": "sha512-enkaOtvXUiZsLBSbataxV/QBjehCOK+SUTd2JQWUYW2iIOufpPu9jyZ9bqJqkEquktrK/rpEMVEmKsPzoci/sA==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-events": "^2.0.0",
|
||||
"bare-stream": "^2.7.0",
|
||||
"bare-structured-clone": "^1.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"bare": ">=1.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-console": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-console/-/bare-console-6.2.0.tgz",
|
||||
"integrity": "sha512-qQ+Vasa3NwNdVDcUWKIIEG5p7MKO7uABcV/xBR9MDwQg3QklC5ayemaHzBa/ER4h6TKN2PRQN5IppNwUAMtb8Q==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-format": "^1.0.2",
|
||||
"bare-hrtime": "^2.0.0",
|
||||
"bare-logger": "^2.0.0",
|
||||
"bare-system-logger": "^1.0.2",
|
||||
"bare-type": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-cov": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/bare-cov/-/bare-cov-1.2.2.tgz",
|
||||
@@ -2072,6 +2123,37 @@
|
||||
"bare-os": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-dgram": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-dgram/-/bare-dgram-1.1.1.tgz",
|
||||
"integrity": "sha512-fqL5xD7k6iGL4SdmkW9LXCoMEbrk1Fwg6ZLN0vEG1XaFtTFUmgXxAfbZ6kL+385TZ+nRfLz32xeBZV9gs6lmsw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-dns": "^2.0.4",
|
||||
"bare-events": "^2.5.4"
|
||||
},
|
||||
"engines": {
|
||||
"bare": ">=1.16.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bare-buffer": "*",
|
||||
"bare-pipe": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bare-buffer": {
|
||||
"optional": true
|
||||
},
|
||||
"bare-pipe": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-diagnostics-channel": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-diagnostics-channel/-/bare-diagnostics-channel-1.1.0.tgz",
|
||||
"integrity": "sha512-Reu+EQo+eLpB+a5p8UykFEdXndFaRaSgKV38uAMh/qhE2eTeJcdwAwo74hKYyeN8GD3DIFqC9ZlM4bnDc03CIg==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/bare-dns": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-dns/-/bare-dns-2.2.0.tgz",
|
||||
@@ -2297,6 +2379,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-logger": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/bare-logger/-/bare-logger-2.0.4.tgz",
|
||||
"integrity": "sha512-HZB3jmnu0C/hcN4HPtBLe7MA6TuwWHzjn4xalExMLlt20URKNKvRCNEMRsWrcFuBKx3wfC6oWySmGpqpaFcjRg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-format": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-mime": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-mime/-/bare-mime-1.0.0.tgz",
|
||||
@@ -2398,6 +2489,79 @@
|
||||
"bare-tcp": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-node-runtime": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-node-runtime/-/bare-node-runtime-1.5.0.tgz",
|
||||
"integrity": "sha512-eMRq9WDYd+E0IZ8EG/8iCozZJl511z6vp7kxZyxjDw77ggOZ7bThFpJ72Kztjs8sh0hoe+xhFyZmoqAdVE/Ziw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-abort-controller": "^1.0.0",
|
||||
"bare-assert": "^1.1.0",
|
||||
"bare-async-hooks": "^0.0.0",
|
||||
"bare-buffer": "^3.3.1",
|
||||
"bare-console": "^6.0.1",
|
||||
"bare-crypto": "^1.11.2",
|
||||
"bare-dgram": "^1.0.1",
|
||||
"bare-diagnostics-channel": "^1.1.0",
|
||||
"bare-dns": "^2.1.4",
|
||||
"bare-events": "^2.7.0",
|
||||
"bare-fetch": "^3.0.0",
|
||||
"bare-fs": "^4.2.3",
|
||||
"bare-http1": "^4.0.4",
|
||||
"bare-https": "^3.0.0",
|
||||
"bare-inspector": "^6.0.1",
|
||||
"bare-module": "^6.1.2",
|
||||
"bare-net": "^2.0.2",
|
||||
"bare-os": "^3.6.2",
|
||||
"bare-path": "^3.0.0",
|
||||
"bare-performance": "^2.0.0",
|
||||
"bare-process": "^4.2.1",
|
||||
"bare-punycode": "^0.0.0",
|
||||
"bare-querystring": "^1.0.0",
|
||||
"bare-readline": "^1.1.0",
|
||||
"bare-repl": "^6.0.1",
|
||||
"bare-sqlite": "^0.1.4",
|
||||
"bare-stream": "^2.7.0",
|
||||
"bare-string-decoder": "^1.0.0",
|
||||
"bare-subprocess": "^6.0.0",
|
||||
"bare-timers": "^3.0.3",
|
||||
"bare-tls": "^3.0.0",
|
||||
"bare-tty": "^5.0.3",
|
||||
"bare-url": "^2.2.2",
|
||||
"bare-utils": "^1.5.1",
|
||||
"bare-v8": "^1.0.1",
|
||||
"bare-vm": "^1.0.0",
|
||||
"bare-worker": "^4.0.0",
|
||||
"bare-ws": "^3.0.0",
|
||||
"bare-zlib": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-node-runtime/node_modules/bare-subprocess": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-subprocess/-/bare-subprocess-6.1.0.tgz",
|
||||
"integrity": "sha512-8L6KtbmreDy4Fc1BdDqaDo9fg0nbedUmTSFQxYPV0uHIM2BBAX8+E0LyMDKgkk0I+mlKto80WYzOnIhT8VDdOg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-env": "^3.0.0",
|
||||
"bare-events": "^2.5.4",
|
||||
"bare-os": "^3.0.1",
|
||||
"bare-pipe": "^4.2.0",
|
||||
"bare-structured-clone": "^1.5.2",
|
||||
"bare-tcp": "^2.4.1",
|
||||
"bare-url": "^2.2.2"
|
||||
},
|
||||
"engines": {
|
||||
"bare": ">=1.7.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bare-buffer": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bare-buffer": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-os": {
|
||||
"version": "3.9.3",
|
||||
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.3.tgz",
|
||||
@@ -2510,6 +2674,55 @@
|
||||
"bare": ">=1.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-punycode": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-punycode/-/bare-punycode-0.0.0.tgz",
|
||||
"integrity": "sha512-PC2Y6mGLytZPJCB9M7CvO5Zb6uWYVUZ+5t3L6vePFuFM6tdC6SsQ+sIsuf0Sa6LHBoWURX7I9yMMbPXMv7TIdQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"punycode": "^2.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-querystring": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-querystring/-/bare-querystring-1.1.0.tgz",
|
||||
"integrity": "sha512-pUtEM6JrX53MbEJFwO92F0Ch7BwZ67KD7LyglcB8/tvkkVdwTgN1f7oIklRe+NTT/WCYZgwjDFYS9efBxDSq8g==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/bare-readline": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-readline/-/bare-readline-1.3.1.tgz",
|
||||
"integrity": "sha512-QtSU4ZfgQcDI6AQssjDFqTiRe4rCiciMn+Yqx6siMJZBIftAIFrNSOK0sa5SBrmNv/a7CD9Dm0onUDCRyn5Fdg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-ansi-escapes": "^2.0.0",
|
||||
"bare-stream": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-realm": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-realm/-/bare-realm-2.0.1.tgz",
|
||||
"integrity": "sha512-kQbYU6AAQu4XBTQesuz2+PpjBx7MJzf5Qw3nSLzQCzbVglx7Ml85MtWEjUe1AeslXqrd+nFPHMEbL55ouISscA==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"bare": ">=1.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-repl": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-repl/-/bare-repl-6.1.1.tgz",
|
||||
"integrity": "sha512-vV52s+zLcwf9WB6y09KwHrqHrCR0UUgcKz3NPhPAwmO62ctFYbBfjskBch92wWk7vRrF68dHJj3hmYNCe8d18g==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-inspect": "^3.0.0",
|
||||
"bare-module": "^6.4.0",
|
||||
"bare-path": "^3.0.0",
|
||||
"bare-pipe": "^4.0.0",
|
||||
"bare-readline": "^1.0.0",
|
||||
"bare-stream": "^2.0.0",
|
||||
"bare-tty": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-rpc": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/bare-rpc/-/bare-rpc-1.3.8.tgz",
|
||||
@@ -2856,6 +3069,20 @@
|
||||
"bare": ">=1.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-sqlite": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/bare-sqlite/-/bare-sqlite-0.1.4.tgz",
|
||||
"integrity": "sha512-h2UdmQohSQG98lrMZ31PnhKIZRNT+1cDUZRzboHmsXKp+l4N4UBSJylMDEGL+D4fw6MJfOHWFIzUG20pITGy8Q==",
|
||||
"license": "Apache-2.0",
|
||||
"peerDependencies": {
|
||||
"bare-buffer": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bare-buffer": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-stdio": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/bare-stdio/-/bare-stdio-1.0.3.tgz",
|
||||
@@ -2894,6 +3121,23 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-string-decoder": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-string-decoder/-/bare-string-decoder-1.0.0.tgz",
|
||||
"integrity": "sha512-FjFvfHo88U7borNQSj9ijP2JTb1asqY6K28OZrix4dF9iZf5D2wi1+99CgLlHT3HtYqdwxRhDAiKu8rVstt5rQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"text-decoder": "^1.2.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bare-buffer": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bare-buffer": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-structured-clone": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-structured-clone/-/bare-structured-clone-1.6.0.tgz",
|
||||
@@ -2943,6 +3187,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-system-logger": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/bare-system-logger/-/bare-system-logger-1.0.5.tgz",
|
||||
"integrity": "sha512-Xnjk5jFJWKrfVfHfusHwUpfiPmZqWUm9gaCUolTlN1pxxf7yDn7mhC+pr885j6VVSLzZwfZYi9nywVI+VakxVg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-logger": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-tcp": {
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-tcp/-/bare-tcp-2.6.1.tgz",
|
||||
@@ -2965,6 +3218,43 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-thread": {
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/bare-thread/-/bare-thread-1.2.6.tgz",
|
||||
"integrity": "sha512-191LkhyfdBufeXaVAWWeeJgc3UhG+9FpLGfJDBwHh9KC19dRyUeYOUzOBBDY6nl8xpm/cJyOBmsWiqo55crKxQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-bundle": "^1.9.0",
|
||||
"bare-module-resolve": "^1.11.2",
|
||||
"bare-module-traverse": "^2.0.0",
|
||||
"bare-url": "^2.4.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bare-buffer": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bare-buffer": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-timers": {
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/bare-timers/-/bare-timers-3.2.3.tgz",
|
||||
"integrity": "sha512-PW36nOU4AKbQSrbWlrYhDJgsEWbZST0v8s8FvlgVySUby7CfXdUpXVCTFmgXcpZevQx7BCXqKM/A8NJDHPGkzQ==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"bare": ">=1.7.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bare-abort-controller": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bare-abort-controller": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/bare-tls": {
|
||||
"version": "3.1.10",
|
||||
"resolved": "https://registry.npmjs.org/bare-tls/-/bare-tls-3.1.10.tgz",
|
||||
@@ -3053,6 +3343,12 @@
|
||||
"bare-type": "^1.0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-v8": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-v8/-/bare-v8-1.0.1.tgz",
|
||||
"integrity": "sha512-/cR5ZvFWQRdtTZ4tx0j7TKvTWce8UnnLqm88fwHtJmfM7HODIBVjQGDT7KkDLeD2d/eHP2pzB71Y8/QyiMMKrQ==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/bare-v8-to-istanbul": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/bare-v8-to-istanbul/-/bare-v8-to-istanbul-1.0.4.tgz",
|
||||
@@ -3070,6 +3366,29 @@
|
||||
"which-runtime": "^1.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-vm": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bare-vm/-/bare-vm-1.0.1.tgz",
|
||||
"integrity": "sha512-yLnbRvKt3AhRTmtfTIrYfdTHqGEfIJc+Fgb2DcHejE0HJ+p5adGxxPMvd3893Z7iXVYnalxukNARn4oJSZELHQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-realm": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-worker": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-worker/-/bare-worker-4.4.0.tgz",
|
||||
"integrity": "sha512-zSc1biis9ks03nj/24M7tYS2V0CPhefizzRIxVYdglbbUAgA0zakwSgTKLJshZ6P+9NA55M/eG4k/rBALZVbxg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"bare-broadcast-channel": "^0.2.0",
|
||||
"bare-channel": "^5.1.5",
|
||||
"bare-events": "^2.2.1",
|
||||
"bare-module": "^6.4.0",
|
||||
"bare-stream": "^2.13.3",
|
||||
"bare-thread": "^1.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/bare-ws": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bare-ws/-/bare-ws-3.1.0.tgz",
|
||||
@@ -5232,7 +5551,6 @@
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
||||
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
@@ -6383,6 +6701,20 @@
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/colinhacks"
|
||||
}
|
||||
},
|
||||
"vendor/agent-harness": {
|
||||
"version": "0.1.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@qvac/sdk": "0.19.1",
|
||||
"hyperdispatch": "^1.6.0"
|
||||
},
|
||||
"bin": {
|
||||
"agent-harness": "bin/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+486
-9
@@ -4,27 +4,504 @@
|
||||
"private": true,
|
||||
"description": "Local-first GNOME voice assistant powered by QVAC and agent-harness.",
|
||||
"type": "module",
|
||||
"engines": { "node": ">=22.17.0" },
|
||||
"workspaces": ["daemon", "computer-use", "apps/control-center"],
|
||||
"engines": {
|
||||
"bare": ">=1.30.3"
|
||||
},
|
||||
"workspaces": [
|
||||
"daemon",
|
||||
"computer-use",
|
||||
"apps/control-center",
|
||||
"vendor/agent-harness"
|
||||
],
|
||||
"scripts": {
|
||||
"start": "node daemon/index.js",
|
||||
"start": "bash packaging/bare-launch.sh daemon/bare-entry.js",
|
||||
"test": "node --test",
|
||||
"cu-doctor": "node computer-use/doctor.js",
|
||||
"voice-doctor": "node daemon/voice-doctor.js",
|
||||
"gpu-doctor": "node daemon/gpu-doctor.js",
|
||||
"cu-doctor": "bash packaging/bare-launch.sh packaging/bare-run.js computer-use/doctor.js",
|
||||
"voice-doctor": "bash packaging/bare-launch.sh packaging/bare-run.js daemon/voice-doctor.js",
|
||||
"gpu-doctor": "bash packaging/bare-launch.sh packaging/bare-run.js daemon/gpu-doctor.js",
|
||||
"qvac:doctor": "qvac doctor",
|
||||
"qvac:serve:diagnostic": "qvac serve --openai --host 127.0.0.1",
|
||||
"qvac:status": "node -e \"import('./daemon/qvac-master.js').then(({qvacStatus})=>console.log(JSON.stringify(qvacStatus(), null, 2)))\"",
|
||||
"qvac:status": "bash packaging/bare-launch.sh daemon/status-entry.js",
|
||||
"package:extension": "bash packaging/build-extension.sh",
|
||||
"package": "bash packaging/build-release.sh",
|
||||
"package:bare": "bash packaging/build-runtime-bundle.sh",
|
||||
"package:test": "bash packaging/test-package.sh",
|
||||
"first-run": "bash packaging/first-run.sh",
|
||||
"install:user": "bash packaging/install.sh",
|
||||
"uninstall:user": "bash packaging/uninstall.sh"
|
||||
"uninstall:user": "bash packaging/uninstall.sh",
|
||||
"bare:smoke": "bash packaging/bare-launch.sh packaging/bare-smoke.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@qvac/cli": "0.13.0",
|
||||
"@qvac/sdk": "0.19.1",
|
||||
"dbus-next": "^0.10.2"
|
||||
"dbus-next": "^0.10.2",
|
||||
"bare-node-runtime": "1.5.0",
|
||||
"bare-runtime": "1.32.0"
|
||||
},
|
||||
"imports": {
|
||||
"assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"node:assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"node:assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"node:async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"node:buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"node:child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"node:cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"node:console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"node:constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"node:crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"node:dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"node:diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"node:dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"node:dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"node:domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"node:events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"node:fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"node:fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"node:http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"node:http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"node:https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"node:inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"node:inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"node:module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"node:net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"node:os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"node:path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"node:path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"node:path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"node:perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"node:process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"node:punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"node:querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"node:readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"node:readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"node:repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"node:sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"node:sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"node:stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"node:stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"node:stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"node:stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"node:string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"node:sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"node:test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"node:test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"node:timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"node:timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"node:tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"node:trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"node:tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"node:url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"node:util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"node:util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"node:v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"node:vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"node:wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"node:worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
},
|
||||
"node:zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,466 @@
|
||||
{
|
||||
"assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"node:assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"node:assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"node:async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"node:buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"node:child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"node:cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"node:console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"node:constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"node:crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"node:dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"node:diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"node:dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"node:dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"node:domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"node:events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"node:fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"node:fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"node:http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"node:http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"node:https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"node:inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"node:inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"node:module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"node:net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"node:os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"node:path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"node:path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"node:path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"node:perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"node:process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"node:punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"node:querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"node:readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"node:readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"node:repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"node:sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"node:sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"node:stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"node:stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"node:stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"node:stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"node:string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"node:sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"node:test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"node:test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"node:timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"node:timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"node:tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"node:trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"node:tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"node:url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"node:util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"node:util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"node:v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"node:vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"node:wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"node:worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
},
|
||||
"node:zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
}
|
||||
}
|
||||
Executable
+11
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
case "$(uname -m)" in
|
||||
x86_64|amd64) BARE="${ROOT_DIR}/node_modules/bare-runtime-linux-x64/bin/bare" ;;
|
||||
aarch64|arm64) BARE="${ROOT_DIR}/node_modules/bare-runtime-linux-arm64/bin/bare" ;;
|
||||
*) BARE="" ;;
|
||||
esac
|
||||
if [[ -f "${BARE}" ]]; then chmod 755 "${BARE}"; else BARE="$(command -v bare || true)"; fi
|
||||
[[ -x "${BARE}" ]] || { echo "Bare runtime not found; run npm ci or install the rolling bundle." >&2; exit 1; }
|
||||
exec "${BARE}" "$@"
|
||||
@@ -0,0 +1,5 @@
|
||||
await import('bare-node-runtime/global');
|
||||
const [target, ...args] = Bare.argv.slice(2);
|
||||
if (!target) throw new Error('bare-run requires a module path');
|
||||
if (globalThis.process?.argv) process.argv.splice(0, process.argv.length, Bare.argv[0], target, ...args);
|
||||
await import(new URL(`../${target}`, import.meta.url));
|
||||
@@ -0,0 +1,11 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import os from 'node:os';
|
||||
import { EventEmitter } from 'node:events';
|
||||
|
||||
if (!globalThis.Bare) throw new Error('Bare runtime was not detected');
|
||||
if (typeof fs.readFileSync !== 'function') throw new Error('bare-fs mapping is missing');
|
||||
if (path.join('jarvis', 'qvac') !== 'jarvis/qvac') throw new Error('bare-path mapping is missing');
|
||||
if (typeof os.tmpdir !== 'function') throw new Error('bare-os mapping is missing');
|
||||
if (typeof EventEmitter !== 'function') throw new Error('bare-events mapping is missing');
|
||||
console.log(JSON.stringify({ runtime: 'bare', version: Bare.version, tmpdir: os.tmpdir() }));
|
||||
@@ -3,8 +3,9 @@ set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "${ROOT_DIR}"
|
||||
mkdir -p dist
|
||||
rm -f dist/jarvis-qvac_*.deb dist/jarvis-qvac-extension.zip dist/SHA256SUMS
|
||||
rm -f dist/jarvis-qvac_*.deb dist/jarvis-qvac-extension.zip dist/jarvis-qvac-bare-*.tar.gz dist/SHA256SUMS
|
||||
bash packaging/build-extension.sh
|
||||
bash packaging/build-deb.sh
|
||||
(cd dist && sha256sum jarvis-qvac_*.deb jarvis-qvac-extension.zip > SHA256SUMS)
|
||||
bash packaging/build-runtime-bundle.sh
|
||||
(cd dist && sha256sum jarvis-qvac_*.deb jarvis-qvac-extension.zip jarvis-qvac-bare-*.tar.gz > SHA256SUMS)
|
||||
echo "Release artifacts written to ${ROOT_DIR}/dist"
|
||||
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
OUT_DIR="${ROOT_DIR}/dist"
|
||||
case "$(uname -m)" in
|
||||
x86_64|amd64) PLATFORM="linux-x64" ;;
|
||||
aarch64|arm64) PLATFORM="linux-arm64" ;;
|
||||
*) echo "Unsupported host architecture: $(uname -m)" >&2; exit 2 ;;
|
||||
esac
|
||||
BINARY="${ROOT_DIR}/node_modules/bare-runtime-${PLATFORM}/bin/bare"
|
||||
[[ -f "${BINARY}" ]] || { echo "Bare platform binary missing; run npm ci first." >&2; exit 1; }
|
||||
chmod 755 "${BINARY}"
|
||||
python3 "${ROOT_DIR}/packaging/prepare-bare-deps.py" "${ROOT_DIR}/node_modules"
|
||||
mkdir -p "${OUT_DIR}"
|
||||
BUNDLE_DIR="${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}"
|
||||
rm -rf "${BUNDLE_DIR}" "${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}.tar.gz"
|
||||
mkdir -p "${BUNDLE_DIR}"
|
||||
tar --exclude='.git' --exclude='./.agents' --exclude='./.codex' --exclude='./dist' --exclude='./vendor/agent-harness/node_modules' --exclude='*/__pycache__' --exclude='*.pyc' -cf - -C "${ROOT_DIR}" . | tar -xf - -C "${BUNDLE_DIR}"
|
||||
cp -a "${ROOT_DIR}/node_modules" "${BUNDLE_DIR}/"
|
||||
tar -C "${OUT_DIR}" -czf "${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}.tar.gz" "jarvis-qvac-bare-${PLATFORM}"
|
||||
rm -rf "${BUNDLE_DIR}"
|
||||
echo "${OUT_DIR}/jarvis-qvac-bare-${PLATFORM}.tar.gz"
|
||||
+10
-8
@@ -2,19 +2,21 @@
|
||||
set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "${ROOT_DIR}"
|
||||
case "$(uname -m)" in
|
||||
x86_64|amd64) BARE="${ROOT_DIR}/node_modules/bare-runtime-linux-x64/bin/bare" ;;
|
||||
aarch64|arm64) BARE="${ROOT_DIR}/node_modules/bare-runtime-linux-arm64/bin/bare" ;;
|
||||
*) BARE="" ;;
|
||||
esac
|
||||
BARE="${BARE:-$(command -v bare || true)}"
|
||||
[[ -x "${BARE}" ]] || { echo "Packaged Bare runtime not found; reinstall the rolling bundle." >&2; exit 1; }
|
||||
echo "JARVIS-QVAC first-run setup"
|
||||
echo "The daemon is GPU-gated and keeps QVAC behind one master owner."
|
||||
echo
|
||||
echo "[1/5] GPU and QVAC preflight"
|
||||
npm run gpu-doctor || true
|
||||
if command -v timeout >/dev/null; then
|
||||
timeout --foreground 30s npm run qvac:doctor || echo "QVAC doctor timed out or reported an unavailable host dependency; continuing with local setup."
|
||||
else
|
||||
npm run qvac:doctor || true
|
||||
fi
|
||||
"${BARE}" packaging/bare-run.js daemon/gpu-doctor.js || true
|
||||
echo
|
||||
echo "[2/5] Microphone and PipeWire preflight"
|
||||
npm run voice-doctor || true
|
||||
"${BARE}" packaging/bare-run.js daemon/voice-doctor.js || true
|
||||
echo
|
||||
echo "[3/5] Wake phrase and model profile"
|
||||
read -r -p "Wake phrase [hey jarvis]: " WAKE_PHRASE
|
||||
@@ -29,7 +31,7 @@ read -r -p "Enable TTS preview? [Y/n]: " TTS_CHOICE
|
||||
TTS_ENABLED=true
|
||||
[[ "${TTS_CHOICE:-Y}" =~ ^[Nn]$ ]] && TTS_ENABLED=false
|
||||
mkdir -p "${HOME}/.config/jarvis"
|
||||
node -e 'const fs=require("fs"); const p=process.argv[1], phrase=process.argv[2], profile=process.argv[3], tts=process.argv[4]==="true"; let c={}; try{c=JSON.parse(fs.readFileSync(p,"utf8"))}catch{}; Object.assign(c,{wakePhrase:phrase,modelProfile:profile,ttsEnabled:tts}); fs.writeFileSync(p,JSON.stringify(c,null,2)+"\n")' "${HOME}/.config/jarvis/config.json" "${WAKE_PHRASE}" "${MODEL_PROFILE}" "${TTS_ENABLED}"
|
||||
"${BARE}" packaging/write-config.js "${HOME}/.config/jarvis/config.json" "${WAKE_PHRASE}" "${MODEL_PROFILE}" "${TTS_ENABLED}"
|
||||
echo "Saved wake phrase: ${WAKE_PHRASE}; model profile: ${MODEL_PROFILE}; TTS: ${TTS_ENABLED}"
|
||||
echo
|
||||
echo "[4/5] TTS preview"
|
||||
|
||||
+16
-9
@@ -1,21 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
NODE_BIN="$(command -v node || true)"
|
||||
if [[ -z "${NODE_BIN}" ]]; then
|
||||
echo "Node.js is required" >&2
|
||||
exit 1
|
||||
fi
|
||||
command -v zip >/dev/null || { echo "zip is required to register the GNOME extension" >&2; exit 1; }
|
||||
APP_DIR="${HOME}/.local/share/jarvis-qvac"
|
||||
EXT_DIR="${HOME}/.local/share/gnome-shell/extensions/[email protected]"
|
||||
CONFIG_DIR="${HOME}/.config/jarvis"
|
||||
CACHE_DIR="${XDG_CACHE_HOME:-${HOME}/.cache}/jarvis/models"
|
||||
mkdir -p "${APP_DIR}" "${EXT_DIR}" "${CONFIG_DIR}" "${HOME}/.config/systemd/user" "${CACHE_DIR}"
|
||||
tar --exclude='.git' --exclude='./.agents' --exclude='./.codex' --exclude='./dist' --exclude='./node_modules' --exclude='*/node_modules' --exclude='*/__pycache__' --exclude='*.pyc' -cf - -C "${ROOT_DIR}" . | tar -xf - -C "${APP_DIR}"
|
||||
if [[ ! -d "${APP_DIR}/node_modules" ]]; then
|
||||
( cd "${APP_DIR}" && npm ci --omit=dev --ignore-scripts )
|
||||
if [[ -f "${ROOT_DIR}/node_modules/bare-runtime-linux-x64/bin/bare" || -f "${ROOT_DIR}/node_modules/bare-runtime-linux-arm64/bin/bare" ]]; then
|
||||
tar --exclude='.git' --exclude='./.agents' --exclude='./.codex' --exclude='./dist' --exclude='./vendor/agent-harness/node_modules' --exclude='*/__pycache__' --exclude='*.pyc' -cf - -C "${ROOT_DIR}" . | tar -xf - -C "${APP_DIR}"
|
||||
else
|
||||
tar --exclude='.git' --exclude='./.agents' --exclude='./.codex' --exclude='./dist' --exclude='./node_modules' --exclude='*/node_modules' --exclude='*/__pycache__' --exclude='*.pyc' -cf - -C "${ROOT_DIR}" . | tar -xf - -C "${APP_DIR}"
|
||||
fi
|
||||
case "$(uname -m)" in
|
||||
x86_64|amd64) BARE_BIN="${APP_DIR}/node_modules/bare-runtime-linux-x64/bin/bare" ;;
|
||||
aarch64|arm64) BARE_BIN="${APP_DIR}/node_modules/bare-runtime-linux-arm64/bin/bare" ;;
|
||||
*) BARE_BIN="" ;;
|
||||
esac
|
||||
if [[ ! -x "${BARE_BIN}" ]]; then BARE_BIN="$(command -v bare || true)"; fi
|
||||
if [[ -z "${BARE_BIN}" || ! -x "${BARE_BIN}" ]]; then
|
||||
echo "The installed bundle does not contain a Bare runtime for $(uname -m). Install the official rolling bundle or build it with npm run package:bare." >&2
|
||||
exit 1
|
||||
fi
|
||||
chmod 755 "${BARE_BIN}"
|
||||
rm -rf "${EXT_DIR}"
|
||||
mkdir -p "${EXT_DIR}"
|
||||
EXT_TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/jarvis-extension.XXXXXX")"
|
||||
@@ -28,7 +35,7 @@ if command -v gnome-extensions >/dev/null && gnome-extensions install --force "$
|
||||
else
|
||||
cp -a "${ROOT_DIR}/apps/gnome-extension/[email protected]/." "${EXT_DIR}/"
|
||||
fi
|
||||
sed "s#__JARVIS_NODE__#${NODE_BIN}#" "${ROOT_DIR}/packaging/jarvisd.service" > "${HOME}/.config/systemd/user/jarvisd.service"
|
||||
sed "s#__JARVIS_BARE__#${BARE_BIN}#" "${ROOT_DIR}/packaging/jarvisd.service" > "${HOME}/.config/systemd/user/jarvisd.service"
|
||||
if [[ ! -f "${CONFIG_DIR}/qvac.config.json" ]]; then
|
||||
sed "s#__JARVIS_CACHE__#${CACHE_DIR}#g" "${ROOT_DIR}/packaging/qvac.config.template.json" > "${CONFIG_DIR}/qvac.config.json"
|
||||
fi
|
||||
|
||||
@@ -6,7 +6,7 @@ Wants=pipewire.service
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=%h/.local/share/jarvis-qvac
|
||||
ExecStart=__JARVIS_NODE__ %h/.local/share/jarvis-qvac/daemon/index.js
|
||||
ExecStart=__JARVIS_BARE__ %h/.local/share/jarvis-qvac/daemon/bare-entry.js
|
||||
Environment=QVAC_CONFIG_PATH=%h/.config/jarvis/qvac.config.json
|
||||
Environment=JARVIS_GPU_REQUIRED=1
|
||||
Environment=JARVIS_QVAC_OWNER=jarvisd
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Add Bare's conditional builtin map to CommonJS packages in node_modules.
|
||||
|
||||
Bare resolves package imports at the package boundary. A number of otherwise
|
||||
portable npm packages (notably dbus-next's XML parser dependency) still use
|
||||
bare Node builtin specifiers without declaring a map. Applying the official
|
||||
bare-node-runtime map at build time keeps those packages usable in the shipped
|
||||
bundle while leaving the source packages untouched.
|
||||
"""
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
root = Path(sys.argv[1] if len(sys.argv) > 1 else "node_modules")
|
||||
mapping = json.loads(Path(__file__).with_name("bare-imports.json").read_text())
|
||||
changed = 0
|
||||
for package_json in root.rglob("package.json"):
|
||||
if "/.cache/" in str(package_json) or "/.bin/" in str(package_json):
|
||||
continue
|
||||
try:
|
||||
package = json.loads(package_json.read_text())
|
||||
except (OSError, json.JSONDecodeError):
|
||||
continue
|
||||
imports = package.get("imports")
|
||||
if imports is not None and not isinstance(imports, dict):
|
||||
continue
|
||||
merged = dict(mapping)
|
||||
if isinstance(imports, dict):
|
||||
merged.update(imports)
|
||||
if imports == merged:
|
||||
continue
|
||||
package["imports"] = merged
|
||||
package_json.write_text(json.dumps(package, indent=2) + "\n")
|
||||
changed += 1
|
||||
print(f"prepared {changed} package import maps for Bare")
|
||||
@@ -32,7 +32,7 @@ created="$(curl -fsS -X POST "${AUTH[@]}" "${JSON[@]}" "${API}/releases" --data
|
||||
release_id="$(jq -r '.id // empty' <<<"${created}")"
|
||||
test -n "${release_id}"
|
||||
|
||||
for asset in dist/jarvis-qvac_*.deb dist/jarvis-qvac-extension.zip dist/SHA256SUMS; do
|
||||
for asset in dist/jarvis-qvac_*.deb dist/jarvis-qvac-extension.zip dist/jarvis-qvac-bare-*.tar.gz dist/SHA256SUMS; do
|
||||
[[ -f "${asset}" ]] || continue
|
||||
curl -fsS -X POST "${AUTH[@]}" \
|
||||
"${API}/releases/${release_id}/assets?name=$(basename "${asset}")" \
|
||||
|
||||
@@ -40,16 +40,36 @@ done
|
||||
|
||||
command -v curl >/dev/null || { echo "curl is required" >&2; exit 1; }
|
||||
command -v tar >/dev/null || { echo "tar is required" >&2; exit 1; }
|
||||
command -v npm >/dev/null || { echo "Node.js/npm 22.17+ is required" >&2; exit 1; }
|
||||
node -e 'const [major,minor]=process.versions.node.split(".").map(Number); if (major < 22 || (major === 22 && minor < 17)) process.exit(1)' \
|
||||
|| { echo "Node.js 22.17+ is required" >&2; exit 1; }
|
||||
|
||||
TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/jarvis-web-install.XXXXXX")"
|
||||
cleanup() { rm -rf "$TMP_DIR"; }
|
||||
trap cleanup EXIT
|
||||
|
||||
ARCHIVE_URL="${SERVER%/}/${REPO}/archive/${REF}.tar.gz"
|
||||
ARCHIVE="${TMP_DIR}/jarvis.tar.gz"
|
||||
case "$(uname -m)" in
|
||||
x86_64|amd64) BUNDLE_NAME="jarvis-qvac-bare-linux-x64.tar.gz" ;;
|
||||
aarch64|arm64) BUNDLE_NAME="jarvis-qvac-bare-linux-arm64.tar.gz" ;;
|
||||
*) BUNDLE_NAME="" ;;
|
||||
esac
|
||||
BUNDLE_URL="${JARVIS_BUNDLE_URL:-${SERVER%/}/${REPO}/releases/download/rolling/${BUNDLE_NAME}}"
|
||||
BUNDLE="${TMP_DIR}/${BUNDLE_NAME}"
|
||||
if [[ -n "${BUNDLE_NAME}" ]]; then
|
||||
echo "Trying the self-contained Bare bundle ${BUNDLE_NAME}"
|
||||
if curl --fail --location --silent --show-error --retry 3 --proto '=https' --tlsv1.2 \
|
||||
--user-agent "${USER_AGENT}" "${BUNDLE_URL}" -o "${BUNDLE}" && test -s "${BUNDLE}"; then
|
||||
mkdir -p "${TMP_DIR}/bundle"
|
||||
tar -xzf "${BUNDLE}" -C "${TMP_DIR}/bundle"
|
||||
SOURCE_DIR="$(find "${TMP_DIR}/bundle" -mindepth 1 -maxdepth 1 -type d -print -quit)"
|
||||
test -n "${SOURCE_DIR}" || { echo "Bare bundle contained no application directory" >&2; exit 1; }
|
||||
test -x "${SOURCE_DIR}/packaging/install.sh" || { echo "Bare bundle contained no installer" >&2; exit 1; }
|
||||
echo "Installing the bundled Bare runtime; Node.js is not required"
|
||||
exec bash "${SOURCE_DIR}/packaging/install.sh" "$@"
|
||||
fi
|
||||
fi
|
||||
if ! command -v npm >/dev/null || ! command -v node >/dev/null; then
|
||||
echo "No published Bare bundle was found. Use JARVIS_REF=rolling or set JARVIS_BUNDLE_URL; Node.js is only needed for a source fallback." >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Downloading JARVIS-QVAC source ref '${REF}' from ${SERVER}"
|
||||
curl --fail --location --silent --show-error --retry 3 --proto '=https' --tlsv1.2 \
|
||||
--user-agent "${USER_AGENT}" \
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
import fs from 'node:fs';
|
||||
const [file, phrase, profile, tts] = Bare.argv.slice(2);
|
||||
let config = {};
|
||||
try { config = JSON.parse(fs.readFileSync(file, 'utf8')); } catch {}
|
||||
Object.assign(config, { wakePhrase: phrase, modelProfile: profile, ttsEnabled: tts === 'true' });
|
||||
fs.writeFileSync(file, JSON.stringify(config, null, 2) + '\n');
|
||||
Vendored
+9
-1
@@ -74,7 +74,15 @@ async function ensureInit() {
|
||||
paths.ensureQvacRoot();
|
||||
let mod;
|
||||
try {
|
||||
mod = await import('@qvac/sdk');
|
||||
if (typeof Bare !== 'undefined') {
|
||||
// @qvac/sdk's Bare RPC client is intentionally a stub. Bare hosts use
|
||||
// the in-process inference surface and register the engines they own.
|
||||
mod = await import('@qvac/inference');
|
||||
const { llmPlugin } = await import('@qvac/inference/llamacpp-completion/plugin');
|
||||
mod.registerPlugin(llmPlugin);
|
||||
} else {
|
||||
mod = await import('@qvac/sdk');
|
||||
}
|
||||
} catch (err) {
|
||||
initError = flattenError(err);
|
||||
log('sdk import failed: ' + initError);
|
||||
|
||||
Vendored
+466
@@ -19,5 +19,471 @@
|
||||
"dependencies": {
|
||||
"@qvac/sdk": "0.19.1",
|
||||
"hyperdispatch": "^1.6.0"
|
||||
},
|
||||
"imports": {
|
||||
"assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"node:assert": {
|
||||
"bare": "bare-assert",
|
||||
"default": "assert"
|
||||
},
|
||||
"assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"node:assert/strict": {
|
||||
"bare": "bare-assert/strict",
|
||||
"default": "assert/strict"
|
||||
},
|
||||
"async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"node:async_hooks": {
|
||||
"bare": "bare-async-hooks",
|
||||
"default": "async_hooks"
|
||||
},
|
||||
"buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"node:buffer": {
|
||||
"bare": "bare-buffer",
|
||||
"default": "buffer"
|
||||
},
|
||||
"child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"node:child_process": {
|
||||
"bare": "bare-subprocess",
|
||||
"default": "child_process"
|
||||
},
|
||||
"cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"node:cluster": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "cluster"
|
||||
},
|
||||
"console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"node:console": {
|
||||
"bare": "bare-console",
|
||||
"default": "console"
|
||||
},
|
||||
"constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"node:constants": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "constants"
|
||||
},
|
||||
"crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"node:crypto": {
|
||||
"bare": "bare-crypto",
|
||||
"default": "crypto"
|
||||
},
|
||||
"dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"node:dgram": {
|
||||
"bare": "bare-dgram",
|
||||
"default": "dgram"
|
||||
},
|
||||
"diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"node:diagnostics_channel": {
|
||||
"bare": "bare-diagnostics-channel",
|
||||
"default": "diagnostics_channel"
|
||||
},
|
||||
"dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"node:dns": {
|
||||
"bare": "bare-dns",
|
||||
"default": "dns"
|
||||
},
|
||||
"dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"node:dns/promises": {
|
||||
"bare": "bare-dns/promises",
|
||||
"default": "dns/promises"
|
||||
},
|
||||
"domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"node:domain": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "domain"
|
||||
},
|
||||
"events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"node:events": {
|
||||
"bare": "bare-events",
|
||||
"default": "events"
|
||||
},
|
||||
"fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"node:fs": {
|
||||
"bare": "bare-fs",
|
||||
"default": "fs"
|
||||
},
|
||||
"fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"node:fs/promises": {
|
||||
"bare": "bare-fs/promises",
|
||||
"default": "fs/promises"
|
||||
},
|
||||
"http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"node:http": {
|
||||
"bare": "bare-http1",
|
||||
"default": "http"
|
||||
},
|
||||
"http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"node:http2": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "http2"
|
||||
},
|
||||
"https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"node:https": {
|
||||
"bare": "bare-https",
|
||||
"default": "https"
|
||||
},
|
||||
"inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"node:inspector": {
|
||||
"bare": "bare-inspector",
|
||||
"default": "inspector"
|
||||
},
|
||||
"inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"node:inspector/promises": {
|
||||
"bare": "bare-inspector/promises",
|
||||
"default": "inspector/promises"
|
||||
},
|
||||
"module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"node:module": {
|
||||
"bare": "bare-module",
|
||||
"default": "module"
|
||||
},
|
||||
"net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"node:net": {
|
||||
"bare": "bare-net",
|
||||
"default": "net"
|
||||
},
|
||||
"os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"node:os": {
|
||||
"bare": "bare-os",
|
||||
"default": "os"
|
||||
},
|
||||
"path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"node:path": {
|
||||
"bare": "bare-path",
|
||||
"default": "path"
|
||||
},
|
||||
"path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"node:path/posix": {
|
||||
"bare": "bare-path/posix",
|
||||
"default": "path/posix"
|
||||
},
|
||||
"path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"node:path/win32": {
|
||||
"bare": "bare-path/win32",
|
||||
"default": "path/win32"
|
||||
},
|
||||
"perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"node:perf_hooks": {
|
||||
"bare": "bare-performance",
|
||||
"default": "perf_hooks"
|
||||
},
|
||||
"process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"node:process": {
|
||||
"bare": "bare-process",
|
||||
"default": "process"
|
||||
},
|
||||
"punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"node:punycode": {
|
||||
"bare": "bare-punycode",
|
||||
"default": "punycode"
|
||||
},
|
||||
"querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"node:querystring": {
|
||||
"bare": "bare-querystring",
|
||||
"default": "querystring"
|
||||
},
|
||||
"readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"node:readline": {
|
||||
"bare": "bare-readline",
|
||||
"default": "readline"
|
||||
},
|
||||
"readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"node:readline/promises": {
|
||||
"bare": "bare-readline/promises",
|
||||
"default": "readline/promises"
|
||||
},
|
||||
"repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"node:repl": {
|
||||
"bare": "bare-repl",
|
||||
"default": "repl"
|
||||
},
|
||||
"sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"node:sea": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sea"
|
||||
},
|
||||
"sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"node:sqlite": {
|
||||
"bare": "bare-sqlite",
|
||||
"default": "sqlite"
|
||||
},
|
||||
"stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"node:stream": {
|
||||
"bare": "bare-stream",
|
||||
"default": "stream"
|
||||
},
|
||||
"stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"node:stream/consumers": {
|
||||
"bare": "bare-stream/consumers",
|
||||
"default": "stream/consumers"
|
||||
},
|
||||
"stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"node:stream/promises": {
|
||||
"bare": "bare-stream/promises",
|
||||
"default": "stream/promises"
|
||||
},
|
||||
"stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"node:stream/web": {
|
||||
"bare": "bare-stream/web",
|
||||
"default": "stream/web"
|
||||
},
|
||||
"string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"node:string_decoder": {
|
||||
"bare": "bare-string-decoder",
|
||||
"default": "string_decoder"
|
||||
},
|
||||
"sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"node:sys": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "sys"
|
||||
},
|
||||
"test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"node:test": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test"
|
||||
},
|
||||
"test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"node:test/reporters": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "test/reporters"
|
||||
},
|
||||
"timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"node:timers": {
|
||||
"bare": "bare-timers",
|
||||
"default": "timers"
|
||||
},
|
||||
"timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"node:timers/promises": {
|
||||
"bare": "bare-timers/promises",
|
||||
"default": "timers/promises"
|
||||
},
|
||||
"tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"node:tls": {
|
||||
"bare": "bare-tls",
|
||||
"default": "tls"
|
||||
},
|
||||
"trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"node:trace_events": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "trace_events"
|
||||
},
|
||||
"tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"node:tty": {
|
||||
"bare": "bare-tty",
|
||||
"default": "tty"
|
||||
},
|
||||
"url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"node:url": {
|
||||
"bare": "bare-url",
|
||||
"default": "url"
|
||||
},
|
||||
"util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"node:util": {
|
||||
"bare": "bare-utils",
|
||||
"default": "util"
|
||||
},
|
||||
"util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"node:util/types": {
|
||||
"bare": "bare-utils/types",
|
||||
"default": "util/types"
|
||||
},
|
||||
"v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"node:v8": {
|
||||
"bare": "bare-v8",
|
||||
"default": "v8"
|
||||
},
|
||||
"vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"node:vm": {
|
||||
"bare": "bare-vm",
|
||||
"default": "vm"
|
||||
},
|
||||
"wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"node:wasi": {
|
||||
"bare": "bare-node-runtime/unsupported",
|
||||
"default": "wasi"
|
||||
},
|
||||
"worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"node:worker_threads": {
|
||||
"bare": "bare-worker",
|
||||
"default": "worker_threads"
|
||||
},
|
||||
"zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
},
|
||||
"node:zlib": {
|
||||
"bare": "bare-zlib",
|
||||
"default": "zlib"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user