This commit is contained in:
2026-09-11 13:50:53 -04:00
parent 2ee0c42e32
commit 4c81d26274
10 changed files with 6714 additions and 178 deletions
+3 -2
View File
@@ -1,12 +1,13 @@
# QVAC integration pin # QVAC integration pin
Pinned against the live QVAC documentation for SDK release **v0.19.0** on Pinned against the live QVAC documentation for SDK series **v0.19.x** on
2026-09-11. Source of truth: <https://docs.qvac.tether.io/reference/api/> and 2026-09-11. Source of truth: <https://docs.qvac.tether.io/reference/api/> and
<https://docs.qvac.tether.io/reference/release-notes/>. <https://docs.qvac.tether.io/reference/release-notes/>.
## Rules for Jarvis ## Rules for Jarvis
- Use the function-centric `@qvac/sdk` API at version `0.19.0`. - Use the function-centric `@qvac/sdk` API in the `0.19.x` series. The current
repository package pin is `0.19.1`; verify the installed package before use.
- Do not use removed `startQVACProvider`, `delegate`, or `no_mmap` APIs. - Do not use removed `startQVACProvider`, `delegate`, or `no_mmap` APIs.
- Use `load_mode` for the replacement load behavior described by the release notes. - Use `load_mode` for the replacement load behavior described by the release notes.
- Use `completion()` for streamed LLM work; its canonical surfaces are `events` - Use `completion()` for streamed LLM work; its canonical surfaces are `events`
+3 -1
View File
@@ -1,6 +1,7 @@
import { Agent } from './qvac-master.js'; import { Agent, assertSdkVersion } from './qvac-master.js';
try { try {
const sdkVersion = assertSdkVersion();
const resources = await Agent.engine.resources(); const resources = await Agent.engine.resources();
const hasGpu = Array.isArray(resources.gpus) && resources.gpus.length > 0; const hasGpu = Array.isArray(resources.gpus) && resources.gpus.length > 0;
console.log(JSON.stringify({ console.log(JSON.stringify({
@@ -9,6 +10,7 @@ try {
backendHints: resources.drivers || {}, backendHints: resources.drivers || {},
gpus: resources.gpus || [], gpus: resources.gpus || [],
vramBytes: resources.vramBytes || 0, vramBytes: resources.vramBytes || 0,
sdkVersion,
}, null, 2)); }, null, 2));
if (!hasGpu) { if (!hasGpu) {
console.error('gpu-doctor: QVAC did not observe a usable GPU; Jarvis will refuse CPU inference'); console.error('gpu-doctor: QVAC did not observe a usable GPU; Jarvis will refuse CPU inference');
+4 -3
View File
@@ -3,6 +3,7 @@ import { HarnessBridge } from './harness-bridge.js';
import { ComputerUseSession } from '../computer-use/session.js'; import { ComputerUseSession } from '../computer-use/session.js';
import { VoiceStateMachine } from './voice-state.js'; import { VoiceStateMachine } from './voice-state.js';
import { QvacScheduler } from './qvac-scheduler.js'; import { QvacScheduler } from './qvac-scheduler.js';
import { cancelQvac, resumeQvac, suspendQvac } from './qvac-master.js';
export class JarvisDaemon extends EventEmitter { export class JarvisDaemon extends EventEmitter {
constructor() { constructor() {
@@ -17,8 +18,8 @@ export class JarvisDaemon extends EventEmitter {
} }
setState(state) { this.state = state; this.emit('StateChanged', state); } setState(state) { this.state = state; this.emit('StateChanged', state); }
arm() { this.voice.wake(); this.setState('LISTENING'); } async arm() { await resumeQvac().catch(() => {}); this.voice.wake(); this.setState('LISTENING'); }
sleep() { this.voice.sleep(); this.setState('SLEEPING'); } async sleep() { this.voice.sleep(); this.setState('SLEEPING'); await suspendQvac().catch((error) => this.emit('Error', 'QVAC_SUSPEND', error.message)); }
say(text) { this.emit('Reply', String(text)); } say(text) { this.emit('Reply', String(text)); }
async ask(text) { async ask(text) {
this.voice.utterance(); this.setState('THINKING'); this.voice.utterance(); this.setState('THINKING');
@@ -29,7 +30,7 @@ export class JarvisDaemon extends EventEmitter {
this.emit('Error', 'QVAC', error.message); this.voice.cancel(); this.setState('ARMED'); throw error; this.emit('Error', 'QVAC', error.message); this.voice.cancel(); this.setState('ARMED'); throw error;
} }
} }
cancel() { this.harness.cancel(); this.scheduler.cancelQueued((job) => job.lane === 'voice'); this.computer.revoke(); this.voice.cancel(); this.setState('ARMED'); } cancel() { this.harness.cancel(); this.scheduler.cancelQueued((job) => job.lane === 'voice'); this.computer.revoke(); this.voice.cancel(); this.setState('ARMED'); cancelQvac().catch((error) => this.emit('Error', 'QVAC_CANCEL', error.message)); }
computerGrant(persist = false) { const result = this.computer.grant({ persist }); this.emit('ComputerStep', JSON.stringify({ action: 'grant', ...result })); return result; } computerGrant(persist = false) { const result = this.computer.grant({ persist }); this.emit('ComputerStep', JSON.stringify({ action: 'grant', ...result })); return result; }
computerRevoke() { this.computer.revoke(); this.emit('ComputerStep', JSON.stringify({ action: 'revoke' })); } computerRevoke() { this.computer.revoke(); this.emit('ComputerStep', JSON.stringify({ action: 'revoke' })); }
async close() { this.computerRevoke(); await this.harness.close(); } async close() { this.computerRevoke(); await this.harness.close(); }
+31
View File
@@ -16,9 +16,18 @@ export const QVAC_MASTER = Object.freeze({
gpuLayers: 99, gpuLayers: 99,
}); });
export function assertSdkVersion() {
const sdkPackage = require(path.join(harnessPath, 'node_modules/@qvac/sdk/package.json'));
if (!/^0\.19\./.test(sdkPackage.version)) {
throw new Error(`Jarvis requires vendored @qvac/sdk in the 0.19.x series; found ${sdkPackage.version}`);
}
return sdkPackage.version;
}
export async function acquireQvac() { export async function acquireQvac() {
ownerCount += 1; ownerCount += 1;
if (!loadPromise) { if (!loadPromise) {
assertSdkVersion();
const resources = await Agent.engine.resources(); const resources = await Agent.engine.resources();
const gpuVisible = (resources.gpus?.length || 0) > 0 || const gpuVisible = (resources.gpus?.length || 0) > 0 ||
Boolean(resources.drivers?.vulkan || resources.drivers?.cuda || resources.drivers?.opencl || resources.gpu); Boolean(resources.drivers?.vulkan || resources.drivers?.cuda || resources.drivers?.opencl || resources.gpu);
@@ -54,6 +63,28 @@ export async function closeQvac() {
await Agent.engine.close(); await Agent.engine.close();
} }
export async function cancelQvac() {
await Agent.engine.cancel();
}
export async function suspendQvac() {
const sdk = await Agent.engine.ensureInit();
if (typeof sdk.suspend !== 'function') throw new Error('QVAC runtime does not expose suspend()');
await sdk.suspend();
}
export async function resumeQvac() {
const sdk = await Agent.engine.ensureInit();
if (typeof sdk.resume !== 'function') throw new Error('QVAC runtime does not expose resume()');
await sdk.resume();
}
export async function qvacRuntimeState() {
const sdk = await Agent.engine.ensureInit();
if (typeof sdk.state !== 'function') return 'unknown';
return sdk.state();
}
export function qvacStatus() { export function qvacStatus() {
return { ...QVAC_MASTER, owners: ownerCount, loaded: Agent.engine.getLoaded() }; return { ...QVAC_MASTER, owners: ownerCount, loaded: Agent.engine.getLoaded() };
} }
+9 -2
View File
@@ -49,7 +49,10 @@ cognitive loop and is wrapped rather than rewritten.
single model alias. single model alias.
- [x] Add the initial daemon, computer-use, GNOME extension, D-Bus, and - [x] Add the initial daemon, computer-use, GNOME extension, D-Bus, and
control-center boundaries. control-center boundaries.
- [ ] Install and lock dependencies with a successful `npm install`. - [x] Install and lock dependencies with a successful `npm install`.
- [~] Review runtime dependency audit: `npm audit --omit=dev` reports 10
transitive findings through `dbus-next` (3 critical, 1 high, 6 moderate;
upstream reports no available fixes).
- [ ] Add repository CI for syntax, unit, schema, and extension checks. - [ ] Add repository CI for syntax, unit, schema, and extension checks.
Exit gate: a clean checkout can identify the harness, load one root config, Exit gate: a clean checkout can identify the harness, load one root config,
@@ -62,6 +65,7 @@ and run tests without importing dlinux.
- [x] Request `device: "gpu"`, `gpu_layers: 99`, and GPU multimodal projection. - [x] Request `device: "gpu"`, `gpu_layers: 99`, and GPU multimodal projection.
- [x] Reject a CPU result instead of accepting QVAC's internal fallback. - [x] Reject a CPU result instead of accepting QVAC's internal fallback.
- [x] Preflight QVAC GPU visibility before downloading or loading a model. - [x] Preflight QVAC GPU visibility before downloading or loading a model.
- [x] Enforce the vendored `@qvac/sdk` 0.19.x version at master startup.
- [x] Add owner counting and a single close path. - [x] Add owner counting and a single close path.
- [x] Set `QVAC_CONFIG_PATH`, `JARVIS_QVAC_MODEL`, and GPU policy in the user - [x] Set `QVAC_CONFIG_PATH`, `JARVIS_QVAC_MODEL`, and GPU policy in the user
service. service.
@@ -106,10 +110,13 @@ GPU-owned worker.
and state queries. and state queries.
- [~] Implement token, transcript, reply, audio-level, chip, job, computer - [~] Implement token, transcript, reply, audio-level, chip, job, computer
step, and error signals. step, and error signals.
- [~] Add the Node D-Bus service implementation. Live bus smoke testing remains
pending on a normal user session because this sandbox cannot bind a D-Bus
session socket.
- [ ] Keep payloads small; stream PCM and screenshots through a Unix socket or - [ ] Keep payloads small; stream PCM and screenshots through a Unix socket or
tmpfs paths. tmpfs paths.
- [ ] Add lock-screen handling: mute, hide UI, revoke computer use. - [ ] Add lock-screen handling: mute, hide UI, revoke computer use.
- [ ] Add idle sleep using QVAC `suspend()` and resume on wake. - [~] Add idle sleep using QVAC `suspend()` and resume on wake.
- [ ] Add structured JSON logging with no prompt/audio/image contents by default. - [ ] Add structured JSON logging with no prompt/audio/image contents by default.
Exit gate: a D-Bus client can ask a typed question, receive streamed events, Exit gate: a D-Bus client can ask a typed question, receive streamed events,
+6388
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -16,8 +16,8 @@
"qvac:status": "node -e \"import('./daemon/qvac-master.js').then(({qvacStatus})=>console.log(JSON.stringify(qvacStatus(), null, 2)))\"" "qvac:status": "node -e \"import('./daemon/qvac-master.js').then(({qvacStatus})=>console.log(JSON.stringify(qvacStatus(), null, 2)))\""
}, },
"dependencies": { "dependencies": {
"@qvac/cli": "0.19.0", "@qvac/cli": "0.13.0",
"@qvac/sdk": "0.19.0", "@qvac/sdk": "0.19.1",
"dbus-next": "^0.10.2" "dbus-next": "^0.10.2"
} }
} }
+5
View File
@@ -1,6 +1,7 @@
import test from 'node:test'; import test from 'node:test';
import assert from 'node:assert/strict'; import assert from 'node:assert/strict';
import { createRuntimeTools } from '../skills/runtime-tools.js'; import { createRuntimeTools } from '../skills/runtime-tools.js';
import { assertSdkVersion } from '../daemon/qvac-master.js';
test('runtime tools expose local QVAC and computer-use status', () => { test('runtime tools expose local QVAC and computer-use status', () => {
const computer = { status: () => ({ active: true, steps_used: 2, backend: 'portal-ei' }) }; const computer = { status: () => ({ active: true, steps_used: 2, backend: 'portal-ei' }) };
@@ -10,3 +11,7 @@ test('runtime tools expose local QVAC and computer-use status', () => {
assert.equal(status.computer_use.active, true); assert.equal(status.computer_use.active, true);
assert.equal(tools.find((tool) => tool.name === 'cu_status').execute({}).backend, 'portal-ei'); assert.equal(tools.find((tool) => tool.name === 'cu_status').execute({}).backend, 'portal-ei');
}); });
test('the copied harness uses the pinned QVAC 0.19.x SDK', () => {
assert.match(assertSdkVersion(), /^0\.19\./);
});
+268 -167
View File
@@ -9,7 +9,7 @@
"version": "0.1.0", "version": "0.1.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@qvac/sdk": "^0.18.0", "@qvac/sdk": "0.19.1",
"hyperdispatch": "^1.6.0" "hyperdispatch": "^1.6.0"
}, },
"bin": { "bin": {
@@ -61,6 +61,65 @@
"@jridgewell/sourcemap-codec": "^1.4.14" "@jridgewell/sourcemap-codec": "^1.4.14"
} }
}, },
"node_modules/@qvac/audiogen-ggml": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@qvac/audiogen-ggml/-/audiogen-ggml-0.3.3.tgz",
"integrity": "sha512-S3WIBFl++cl8d6++Evruhti0Ug6CWUnYLg8GJUyEPvjYcSVFJkLNufS1q1+jpS1nhiSNOU0i+Hu9HNAWVeYNwA==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.1",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-ffmpeg": "^1.4.0",
"bare-fs": "^4.5.6",
"bare-os": "^3.8.0",
"bare-path": "^3.0.0",
"bare-process": "^4.2.2"
},
"bin": {
"qvac-audiogen-download-models": "scripts/download-audiogen-ggml-models.js"
},
"engines": {
"bare": ">=1.19.0"
}
},
"node_modules/@qvac/bci-whispercpp": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/@qvac/bci-whispercpp/-/bci-whispercpp-0.8.2.tgz",
"integrity": "sha512-vCgsFsICaK+U/MUsBYA0Tga2lN+MnQ3Rmi/bWoWjWhv/J9i1SnmhvdKb4RGYAb7AZREbDMoxO+7IzN7uKMFcDQ==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.0",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fs": "^4.5.1",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/classification-ggml": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@qvac/classification-ggml/-/classification-ggml-0.23.0.tgz",
"integrity": "sha512-TxQmvpeYWK5ewmNB9uy8yMnpA+ylVpdTClXJeEHIqQ9Dv91+svgslnJgduEWbEVF+gXOpjxNCZiGE4YYRf/RwQ==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/fabric": "^0.10.0",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-env": "^3.0.0",
"bare-fs": "^4.5.1",
"bare-os": "^3.6.2",
"bare-path": "^3.0.0",
"bare-process": "^4.2.2",
"bare-url": "^2.1.6",
"brittle": "^3.16.5"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/diagnostics": { "node_modules/@qvac/diagnostics": {
"version": "0.1.2", "version": "0.1.2",
"license": "Apache-2.0", "license": "Apache-2.0",
@@ -70,6 +129,35 @@
"which-runtime": "^1.4.0" "which-runtime": "^1.4.0"
} }
}, },
"node_modules/@qvac/diffusion-cpp": {
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/@qvac/diffusion-cpp/-/diffusion-cpp-0.21.0.tgz",
"integrity": "sha512-R6JdLb5gE1toP76nOLUx6mg98IRpbziXKVSgVoCqAV/rg2wHErGHxtAyW0wp+WfLewRNG2eTrhIicPYOX6fHBA==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/embed-llamacpp": {
"version": "0.37.0",
"resolved": "https://registry.npmjs.org/@qvac/embed-llamacpp/-/embed-llamacpp-0.37.0.tgz",
"integrity": "sha512-9+Fer7etGkgDvXLLsFU97uSE9Z5Ll8DAkI0VEm1FOqfCyI5QUnexKZlU2m1Dd6yDlTN09Az8q9e04YPryVJqnQ==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fs": "^4.5.1",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/error": { "node_modules/@qvac/error": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/@qvac/error/-/error-0.1.1.tgz", "resolved": "https://registry.npmjs.org/@qvac/error/-/error-0.1.1.tgz",
@@ -77,7 +165,9 @@
"license": "Apache-2.0" "license": "Apache-2.0"
}, },
"node_modules/@qvac/fabric": { "node_modules/@qvac/fabric": {
"version": "0.6.0", "version": "0.10.0",
"resolved": "https://registry.npmjs.org/@qvac/fabric/-/fabric-0.10.0.tgz",
"integrity": "sha512-eKozdnDEXZCimqkIZp49d8ZjXfOp9jQa0fXLWico5JkB/ZlywVo9hVCCOtZrUMUvjBJ7xbg2QeVYp+yin1uKCg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"engines": { "engines": {
"bare": ">=1.24.0" "bare": ">=1.24.0"
@@ -91,6 +181,100 @@
"bare-os": "^3.2.0" "bare-os": "^3.2.0"
} }
}, },
"node_modules/@qvac/inference": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/@qvac/inference/-/inference-0.19.1.tgz",
"integrity": "sha512-Ee2GFTLvXkKSH9MSoSRLkhNv0N7JC+2pPxWSZpNyC3pRtUxCqWeomOjnBLzflQRhAA0kic3ulvpTRFqcCbq4Gg==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.1",
"@qvac/logging": "^0.1.1",
"@qvac/rag": "^0.8.1",
"@qvac/registry-client": "^0.6.1",
"bare-abort-controller": "^1.1.2",
"bare-buffer": "^3.6.2",
"bare-cpu-info": "0.1.1",
"bare-crypto": "^1.15.3",
"bare-env": "^3.0.1",
"bare-fs": "^4.7.4",
"bare-gpu-info": "0.1.1",
"bare-http1": "^4.5.9",
"bare-https": "^3.0.0",
"bare-os": "^3.9.3",
"bare-path": "^3.1.1",
"bare-rpc": "^1.3.8",
"bare-stream": "^2.13.3",
"bare-url": "^2.4.5",
"bare-zlib": "^1.4.0",
"compact-encoding": "^3.3.0",
"corestore": "^7.11.0",
"fast-safe-stringify": "2.1.1",
"hyperdrive": "^13.3.3",
"hyperswarm": "^4.17.0",
"semver": "^7.8.5",
"tar-stream": "^3.2.0",
"zod": "^4.4.3"
},
"engines": {
"bare": "^1.30.3"
},
"peerDependencies": {
"@qvac/asr-ggml": "^0.3.1",
"@qvac/audiogen-ggml": "^0.3.2",
"@qvac/bci-whispercpp": "^0.8.0",
"@qvac/classification-ggml": "^0.23.0",
"@qvac/decoder-audio": "^0.5.0",
"@qvac/diffusion-cpp": "^0.21.0",
"@qvac/embed-llamacpp": "^0.37.0",
"@qvac/langdetect-text": "^0.1.2",
"@qvac/llm-llamacpp": "^0.49.1",
"@qvac/ocr-ggml": "^0.21.0",
"@qvac/translation-nmtcpp": "^0.13.0",
"@qvac/tts-ggml": "^0.8.0",
"@qvac/vla-ggml": "^0.24.0"
},
"peerDependenciesMeta": {
"@qvac/asr-ggml": {
"optional": true
},
"@qvac/audiogen-ggml": {
"optional": true
},
"@qvac/bci-whispercpp": {
"optional": true
},
"@qvac/classification-ggml": {
"optional": true
},
"@qvac/decoder-audio": {
"optional": true
},
"@qvac/diffusion-cpp": {
"optional": true
},
"@qvac/embed-llamacpp": {
"optional": true
},
"@qvac/langdetect-text": {
"optional": true
},
"@qvac/llm-llamacpp": {
"optional": true
},
"@qvac/ocr-ggml": {
"optional": true
},
"@qvac/translation-nmtcpp": {
"optional": true
},
"@qvac/tts-ggml": {
"optional": true
},
"@qvac/vla-ggml": {
"optional": true
}
}
},
"node_modules/@qvac/langdetect-text": { "node_modules/@qvac/langdetect-text": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/@qvac/langdetect-text/-/langdetect-text-0.1.2.tgz", "resolved": "https://registry.npmjs.org/@qvac/langdetect-text/-/langdetect-text-0.1.2.tgz",
@@ -100,6 +284,21 @@
"tinyld": "1.3.4" "tinyld": "1.3.4"
} }
}, },
"node_modules/@qvac/llm-llamacpp": {
"version": "0.49.1",
"resolved": "https://registry.npmjs.org/@qvac/llm-llamacpp/-/llm-llamacpp-0.49.1.tgz",
"integrity": "sha512-GWSrMKYkwgJYwZK1rBwgy62e7HjU3ksrcQWbdgPRdIOTNNplQCufHDBHuV29hK5ghUrShcJ/PbzJeJdFLBwO7A==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fs": "^4.5.1",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/logging": { "node_modules/@qvac/logging": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/@qvac/logging/-/logging-0.1.1.tgz", "resolved": "https://registry.npmjs.org/@qvac/logging/-/logging-0.1.1.tgz",
@@ -109,6 +308,47 @@
"bare-env": "^3.0.0" "bare-env": "^3.0.0"
} }
}, },
"node_modules/@qvac/ocr-ggml": {
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/@qvac/ocr-ggml/-/ocr-ggml-0.21.0.tgz",
"integrity": "sha512-McdRkgcVqY4RIZ9nzB2XcKILWKv0u051mh0VTTfbuE0oG4O681cBb1MahWvdvTu9fyN+XSI6+D78GeZ7jGoggw==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.0",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fetch": "^3.0.1",
"bare-fs": "^4.5.1",
"bare-os": "^3.6.2",
"bare-path": "^3.0.0",
"bare-process": "^4.2.2",
"bare-url": "^2.1.6",
"brittle": "^3.4.0"
},
"engines": {
"bare": ">=1.19.0"
}
},
"node_modules/@qvac/rag": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/@qvac/rag/-/rag-0.8.1.tgz",
"integrity": "sha512-Le7irUg030ujUPgTDRs7VZea5rqtQKgaNut3X0VPUinxWlaw0reCiwp8oUfLZ48kDLXx+swy7fSZCUEamG9QAw==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.1",
"@qvac/logging": "^0.1.1",
"bare-crypto": "^1.13.4",
"bare-fetch": "^3.0.1",
"bare-fs": "^4.7.0",
"bare-path": "^3.0.0",
"hyperdb": "^6.7.0",
"hyperdht": "^6.23.0",
"hyperschema": "^1.13.0",
"llm-splitter": "^0.2.0",
"ready-resource": "^1.1.2",
"zod": "^4.1.13"
}
},
"node_modules/@qvac/registry-client": { "node_modules/@qvac/registry-client": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/@qvac/registry-client/-/registry-client-0.6.1.tgz", "resolved": "https://registry.npmjs.org/@qvac/registry-client/-/registry-client-0.6.1.tgz",
@@ -147,31 +387,32 @@
} }
}, },
"node_modules/@qvac/sdk": { "node_modules/@qvac/sdk": {
"version": "0.18.2", "version": "0.19.1",
"resolved": "https://registry.npmjs.org/@qvac/sdk/-/sdk-0.19.1.tgz",
"integrity": "sha512-lcJ0N0Q5dbuQdAfEGgpi+c3yiKKiljNsfiT5YlaWAQk6VGV56ujf6Q3PQx/gp8H4xgT2BhX4oPHE/MwF11B1AA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@qvac/asr-ggml": "^0.3.0", "@qvac/asr-ggml": "^0.3.1",
"@qvac/audiogen-ggml": "^0.2.1", "@qvac/audiogen-ggml": "^0.3.2",
"@qvac/bci-whispercpp": "^0.7.1", "@qvac/bci-whispercpp": "^0.8.0",
"@qvac/classification-ggml": "^0.20.0", "@qvac/classification-ggml": "^0.23.0",
"@qvac/decoder-audio": "^0.5.0", "@qvac/decoder-audio": "^0.5.0",
"@qvac/diffusion-cpp": "^0.18.0", "@qvac/diffusion-cpp": "^0.21.0",
"@qvac/embed-llamacpp": "^0.34.0", "@qvac/embed-llamacpp": "^0.37.0",
"@qvac/error": "^0.1.1", "@qvac/error": "^0.1.1",
"@qvac/inference": "^0.19.1",
"@qvac/langdetect-text": "^0.1.2", "@qvac/langdetect-text": "^0.1.2",
"@qvac/llm-llamacpp": "^0.45.0", "@qvac/llm-llamacpp": "^0.49.1",
"@qvac/logging": "^0.1.0", "@qvac/logging": "^0.1.0",
"@qvac/ocr-ggml": "^0.18.0", "@qvac/ocr-ggml": "^0.21.0",
"@qvac/rag": "^0.6.4",
"@qvac/registry-client": "^0.6.1", "@qvac/registry-client": "^0.6.1",
"@qvac/translation-nmtcpp": "^0.10.0", "@qvac/translation-nmtcpp": "^0.13.0",
"@qvac/tts-ggml": "^0.7.4", "@qvac/tts-ggml": "^0.8.0",
"@qvac/vla-ggml": "^0.21.1", "@qvac/vla-ggml": "^0.24.0",
"bare-abort-controller": "^1.0.0", "bare-abort-controller": "^1.0.0",
"bare-cpu-info": "0.1.1", "bare-cpu-info": "0.1.1",
"bare-crypto": "^1.15.0", "bare-crypto": "^1.15.0",
"bare-env": "^3.0.0", "bare-env": "^3.0.0",
"bare-fetch": "^3.0.1",
"bare-fs": "^4.5.1", "bare-fs": "^4.5.1",
"bare-gpu-info": "0.1.1", "bare-gpu-info": "0.1.1",
"bare-net": "^2.3.2", "bare-net": "^2.3.2",
@@ -248,65 +489,6 @@
"bare": ">=1.20.0" "bare": ">=1.20.0"
} }
}, },
"node_modules/@qvac/sdk/node_modules/@qvac/audiogen-ggml": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/@qvac/audiogen-ggml/-/audiogen-ggml-0.2.4.tgz",
"integrity": "sha512-OTnWLz/ul8KZHk+ch/6FLdrd2ViehakTbpV9ukoCMqwp5gMALc7bUXBDv/FWzgHmi0u6uCaQORUhDu6JSEsYfA==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.1",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-ffmpeg": "^1.4.0",
"bare-fs": "^4.5.6",
"bare-os": "^3.8.0",
"bare-path": "^3.0.0",
"bare-process": "^4.2.2"
},
"bin": {
"qvac-audiogen-download-models": "scripts/download-audiogen-ggml-models.js"
},
"engines": {
"bare": ">=1.19.0"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/bci-whispercpp": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@qvac/bci-whispercpp/-/bci-whispercpp-0.7.2.tgz",
"integrity": "sha512-9hI1wiHHz2Tp2q5dO3AI1xkLAuiganYimPzSEiK7sLp6k644aEkPXuinQDAIycazTnRR22nMZzOtPboucBjyow==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.0",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fs": "^4.5.1",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/classification-ggml": {
"version": "0.20.0",
"resolved": "https://registry.npmjs.org/@qvac/classification-ggml/-/classification-ggml-0.20.0.tgz",
"integrity": "sha512-6eJoVnXqqFC+BFQ1Sdh5BA+Ii+DRdWOn32MIVpK+YYdbewpiVJBFDS0QXsd+NpDxMm8oLXyar7qFRKPXPPoeqw==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/fabric": "^0.6.0",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-env": "^3.0.0",
"bare-fs": "^4.5.1",
"bare-os": "^3.6.2",
"bare-path": "^3.0.0",
"bare-process": "^4.2.2",
"bare-url": "^2.1.6",
"brittle": "^3.16.5"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/decoder-audio": { "node_modules/@qvac/sdk/node_modules/@qvac/decoder-audio": {
"version": "0.5.0", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/@qvac/decoder-audio/-/decoder-audio-0.5.0.tgz", "resolved": "https://registry.npmjs.org/@qvac/decoder-audio/-/decoder-audio-0.5.0.tgz",
@@ -335,92 +517,10 @@
"@qvac/diagnostics": "^0.1.0" "@qvac/diagnostics": "^0.1.0"
} }
}, },
"node_modules/@qvac/sdk/node_modules/@qvac/diffusion-cpp": { "node_modules/@qvac/translation-nmtcpp": {
"version": "0.18.0", "version": "0.13.0",
"resolved": "https://registry.npmjs.org/@qvac/diffusion-cpp/-/diffusion-cpp-0.18.0.tgz", "resolved": "https://registry.npmjs.org/@qvac/translation-nmtcpp/-/translation-nmtcpp-0.13.0.tgz",
"integrity": "sha512-5gTdA+NH9LA2DxcAIjFHogEZUEQFxRbU6dkEovcOV6t2lPA+hLTfvgLJCy4g0XDw557navpK+QVa1orOiBycKQ==", "integrity": "sha512-0rx69vIWZhyLIRupAT2Sgpok/WRFp1XzVKyW1oZyhYXWvVDMJh15K7XOtxUAjSzrGwWu0b/VwYKBsii2URPb3Q==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/embed-llamacpp": {
"version": "0.34.0",
"resolved": "https://registry.npmjs.org/@qvac/embed-llamacpp/-/embed-llamacpp-0.34.0.tgz",
"integrity": "sha512-TLwkb/ogAyrxKvQ7LUW6igyhTXMlh69lpBF3F3i9auoOlanIDHstqkdkcukO0lDS9W2HYgrylki4ljt6zkfT4Q==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fs": "^4.5.1",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/llm-llamacpp": {
"version": "0.45.0",
"resolved": "https://registry.npmjs.org/@qvac/llm-llamacpp/-/llm-llamacpp-0.45.0.tgz",
"integrity": "sha512-Nk/asAYt39SVq1k0aqMBqpmeOCu0QE8qtKSJAYBNpbBFzWa5zBvK+b5BAeTAl3XX+PXu0Wf/s9wyuEDf0SwQQA==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fs": "^4.5.1",
"bare-path": "^3.0.0"
},
"engines": {
"bare": ">=1.24.0"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/ocr-ggml": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/@qvac/ocr-ggml/-/ocr-ggml-0.18.0.tgz",
"integrity": "sha512-5qsTDsHRbmjm57PzO96ulqljn8Qzz6lB3xbhNOvB6LpcXtJXkUqMTWo8n0pZbA1uuAcJclgZomw6qSc2ltpHYQ==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.0",
"@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0",
"bare-fetch": "^3.0.1",
"bare-fs": "^4.5.1",
"bare-os": "^3.6.2",
"bare-path": "^3.0.0",
"bare-process": "^4.2.2",
"bare-url": "^2.1.6",
"brittle": "^3.4.0"
},
"engines": {
"bare": ">=1.19.0"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/rag": {
"version": "0.6.4",
"resolved": "https://registry.npmjs.org/@qvac/rag/-/rag-0.6.4.tgz",
"integrity": "sha512-mkvuR8GNg/Jxjj43AxcK6pv5zHIR2hepZYtF/Sxa6rVUpmma00v7jZayee6aLYCEvKmZv/E2SopUYv4bh/TY6g==",
"license": "Apache-2.0",
"dependencies": {
"@qvac/error": "^0.1.1",
"bare-crypto": "^1.13.4",
"bare-fetch": "^3.0.1",
"hyperdb": "^6.7.0",
"hyperdht": "^6.23.0",
"hyperschema": "^1.13.0",
"llm-splitter": "^0.2.0",
"ready-resource": "^1.1.2",
"zod": "^4.1.13"
}
},
"node_modules/@qvac/sdk/node_modules/@qvac/translation-nmtcpp": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/@qvac/translation-nmtcpp/-/translation-nmtcpp-0.10.1.tgz",
"integrity": "sha512-m4mdXjtj3SL92I+DO9zzyTtSrGnxRwK/0yplfWcBwVy2zXPEVTmJlhjg0sgdo7LyPsQyiysx9sIHXFHlizZSqg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@qvac/error": "^0.1.0", "@qvac/error": "^0.1.0",
@@ -446,9 +546,9 @@
} }
}, },
"node_modules/@qvac/tts-ggml": { "node_modules/@qvac/tts-ggml": {
"version": "0.7.5", "version": "0.8.1",
"resolved": "https://registry.npmjs.org/@qvac/tts-ggml/-/tts-ggml-0.7.5.tgz", "resolved": "https://registry.npmjs.org/@qvac/tts-ggml/-/tts-ggml-0.8.1.tgz",
"integrity": "sha512-X0nYW4+OJq3avGrmorB+OqQlY7TNxpioPPWBpV8T/teUCD/JFP0F9Dp4Mw+rZMKMgYVBxtKfZcQ2A/oF49zEjg==", "integrity": "sha512-7FS2ZHDUSeZkUBeWUAzVJ9r5Pvol8gW9YlNTjYMCdjnA8oNB5+tTWLjURsARmlLTJqAAGRfEVY9frGIgqQrm5w==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@qvac/error": "^0.1.0", "@qvac/error": "^0.1.0",
@@ -470,12 +570,13 @@
} }
}, },
"node_modules/@qvac/vla-ggml": { "node_modules/@qvac/vla-ggml": {
"version": "0.21.1", "version": "0.24.0",
"resolved": "https://registry.npmjs.org/@qvac/vla-ggml/-/vla-ggml-0.21.1.tgz", "resolved": "https://registry.npmjs.org/@qvac/vla-ggml/-/vla-ggml-0.24.0.tgz",
"integrity": "sha512-4yQ0lJr55Z1/VXxfBdNvY53QsNi+Yaj05wJZk0kRZsRVkqP7oz3CUBwqYlWIiICu39SQvnD+OxGFuu1QPIr7Tw==", "integrity": "sha512-0uGdR66YWhUJGaX2GhA0141n9og3XT4/CaHBRgEQPPxUglk+Dt3pcQ4AEIPYSsdgzD9hyOqE+uUjv51yMP7KBQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@qvac/error": "^0.1.0", "@qvac/error": "^0.1.0",
"@qvac/fabric": "^0.10.0",
"@qvac/infer-base": "^0.6.2", "@qvac/infer-base": "^0.6.2",
"@qvac/logging": "^0.1.0", "@qvac/logging": "^0.1.0",
"bare-fs": "^4.5.1", "bare-fs": "^4.5.1",
+1 -1
View File
@@ -17,7 +17,7 @@
"chat": "node bin/cli.js" "chat": "node bin/cli.js"
}, },
"dependencies": { "dependencies": {
"@qvac/sdk": "^0.18.0", "@qvac/sdk": "0.19.1",
"hyperdispatch": "^1.6.0" "hyperdispatch": "^1.6.0"
} }
} }