@qvac/sdk 0.20.1 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +76 -13
- package/README.md +39 -5
- package/dist/examples/advisory-model-fit.d.ts +17 -16
- package/dist/examples/advisory-model-fit.js +18 -18
- package/dist/examples/asr/parakeet-indic-conformer-filesystem.js +3 -3
- package/dist/examples/asr/parakeet-unified-coreml.d.ts +2 -0
- package/dist/examples/asr/parakeet-unified-coreml.js +113 -0
- package/dist/examples/assess-model-fit.js +9 -4
- package/dist/examples/model-fit-ui/server.js +5 -2
- package/dist/examples/rpc-inference.d.ts +2 -0
- package/dist/examples/rpc-inference.js +51 -0
- package/dist/examples/rpc-server.d.ts +2 -0
- package/dist/examples/rpc-server.js +32 -0
- package/dist/examples/tools/llamacpp-deferred-tools.d.ts +2 -0
- package/dist/examples/tools/llamacpp-deferred-tools.js +77 -0
- package/dist/examples/tts/audio8.js +4 -0
- package/dist/examples/tts/moss-dialogue.d.ts +2 -0
- package/dist/examples/tts/moss-dialogue.js +63 -0
- package/dist/examples/tts/moss.d.ts +2 -0
- package/dist/examples/tts/moss.js +71 -0
- package/dist/scripts/contract/build-contract.d.ts +2 -1
- package/dist/scripts/contract/build-contract.js +4 -1
- package/dist/scripts/contract/build-numeric-constants.d.ts +15 -0
- package/dist/scripts/contract/build-numeric-constants.js +13 -0
- package/dist/scripts/contract/method-shapes.d.ts +3 -0
- package/dist/scripts/contract/method-shapes.js +3 -0
- package/dist/scripts/enforce-inference-versions.d.ts +18 -0
- package/dist/scripts/enforce-inference-versions.js +158 -0
- package/dist/scripts/generate-bare-kit-runtimes.d.ts +2 -0
- package/dist/scripts/generate-bare-kit-runtimes.js +106 -0
- package/dist/src/client/api/assess-model-fit.d.ts +5 -4
- package/dist/src/client/api/assess-model-fit.js +24 -7
- package/dist/src/client/api/bci-transcribe.d.ts +4 -1
- package/dist/src/client/api/get-system-resources.d.ts +8 -0
- package/dist/src/client/api/get-system-resources.js +8 -0
- package/dist/src/client/api/index.d.ts +1 -0
- package/dist/src/client/api/index.js +1 -0
- package/dist/src/client/api/rpc-server.d.ts +20 -0
- package/dist/src/client/api/rpc-server.js +45 -0
- package/dist/src/client/api/text-to-speech.d.ts +9 -0
- package/dist/src/client/api/text-to-speech.js +9 -0
- package/dist/src/client/api/transcribe.d.ts +21 -15
- package/dist/src/client/api/transcribe.js +65 -20
- package/dist/src/client/rpc/rpc-error.js +11 -7
- package/dist/src/commands/bundle/entry-gen.d.ts +2 -2
- package/dist/src/commands/bundle/entry-gen.js +8 -4
- package/dist/src/commands/bundle/index.d.ts +20 -0
- package/dist/src/commands/bundle/index.js +88 -12
- package/dist/src/commands/bundle/plugins.js +1 -1
- package/dist/src/commands/command-logger.d.ts +6 -0
- package/dist/src/commands/command-logger.js +12 -0
- package/dist/src/commands/host-prebuilds/index.d.ts +71 -0
- package/dist/src/commands/host-prebuilds/index.js +227 -0
- package/dist/src/commands/host-prebuilds/package-manager.d.ts +54 -0
- package/dist/src/commands/host-prebuilds/package-manager.js +278 -0
- package/dist/src/commands/index.d.ts +10 -1
- package/dist/src/commands/index.js +6 -0
- package/dist/src/commands/verify/abi.d.ts +22 -2
- package/dist/src/commands/verify/abi.js +49 -27
- package/dist/src/commands/verify/addon-source.d.ts +22 -0
- package/dist/src/commands/verify/addon-source.js +69 -3
- package/dist/src/commands/verify/bare-kit-runtime.d.ts +38 -0
- package/dist/src/commands/verify/bare-kit-runtime.js +201 -0
- package/dist/src/commands/verify/bare-kit-runtimes.d.ts +12 -0
- package/dist/src/commands/verify/bare-kit-runtimes.js +108 -0
- package/dist/src/commands/verify/bundle-source.js +16 -15
- package/dist/src/commands/verify/engines-advice.d.ts +73 -0
- package/dist/src/commands/verify/engines-advice.js +271 -0
- package/dist/src/commands/verify/index.d.ts +22 -0
- package/dist/src/commands/verify/index.js +151 -13
- package/dist/src/commands/verify/node-modules-source.js +43 -39
- package/dist/src/commands/verify/prebuilds.d.ts +19 -0
- package/dist/src/commands/verify/prebuilds.js +52 -13
- package/dist/src/expo/plugins/index.d.ts +2 -0
- package/dist/src/expo/plugins/withMobileBundle.d.ts +15 -5
- package/dist/src/expo/plugins/withMobileBundle.js +68 -42
- package/dist/src/expo/plugins/withQvacSDK.d.ts +7 -1
- package/dist/src/expo/plugins/withQvacSDK.js +6 -3
- package/dist/src/index.d.ts +5 -2
- package/dist/src/index.js +4 -2
- package/dist/src/schemas/sdk-errors-client.d.ts +2 -0
- package/dist/src/schemas/sdk-errors-client.js +16 -0
- package/dist/src/schemas/sdk-errors-server.d.ts +1 -0
- package/dist/src/schemas/sdk-errors-server.js +5 -0
- package/dist/src/utils/errors-client.d.ts +15 -0
- package/dist/src/utils/errors-client.js +26 -0
- package/dist/src/utils/errors-server.d.ts +1 -0
- package/dist/src/utils/errors-server.js +1 -0
- package/dist/src/utils/mcp-adapter.js +7 -1
- package/dist/src/utils/tool-helpers.d.ts +4 -0
- package/dist/src/utils/tool-helpers.js +2 -0
- package/dist/src/worker/ggml-rpc-server-provider.d.ts +2 -0
- package/dist/src/worker/ggml-rpc-server-provider.js +1 -0
- package/dist/src/worker/rpc-server-provider.d.ts +3 -0
- package/dist/src/worker/rpc-server-provider.js +1 -0
- package/package.json +30 -25
- package/dist/scripts/enforce-inference-peer-dependencies.d.ts +0 -2
- package/dist/scripts/enforce-inference-peer-dependencies.js +0 -39
- package/dist/src/deprecate.d.ts +0 -2
- package/dist/src/deprecate.js +0 -9
- package/dist/src/worker/legacy-worker-entry.d.ts +0 -2
- package/dist/src/worker/legacy-worker-entry.js +0 -3
- package/dist/src/worker/worker-core.d.ts +0 -7
- package/dist/src/worker/worker-core.js +0 -8
|
@@ -2,6 +2,11 @@ import { promises as fsp } from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { formatAddonId } from './addon-source.js';
|
|
4
4
|
import { HOST_ADDON_IMPORT, resolveAddonPlatformPackage } from '../../expo/plugins/patches/qvac-platform-addons.js';
|
|
5
|
+
/** Platforms no install host reports, so their platform packages must be declared. */
|
|
6
|
+
const MOBILE_PLATFORMS = new Set(['android', 'ios']);
|
|
7
|
+
export function isMobileHost(host) {
|
|
8
|
+
return MOBILE_PLATFORMS.has(host.split('-')[0] ?? '');
|
|
9
|
+
}
|
|
5
10
|
const PREBUILDS_DIR = 'prebuilds';
|
|
6
11
|
const PLATFORM_ADDON_DIR = 'addon';
|
|
7
12
|
/**
|
|
@@ -26,10 +31,17 @@ export async function resolvePrebuildLocations(addon, host) {
|
|
|
26
31
|
return locations;
|
|
27
32
|
const platformRoot = await findInstalledPackage(await realPackageRoot(addon.packageRoot), platformPackage);
|
|
28
33
|
if (platformRoot !== null) {
|
|
29
|
-
|
|
34
|
+
const location = {
|
|
30
35
|
hostDir: path.join(platformRoot, PLATFORM_ADDON_DIR, PREBUILDS_DIR, host),
|
|
31
36
|
platformPackage
|
|
32
|
-
}
|
|
37
|
+
};
|
|
38
|
+
const installedVersion = await readPackageVersion(platformRoot);
|
|
39
|
+
if (addon.version !== undefined &&
|
|
40
|
+
installedVersion !== undefined &&
|
|
41
|
+
installedVersion !== addon.version) {
|
|
42
|
+
location.mismatchedVersion = installedVersion;
|
|
43
|
+
}
|
|
44
|
+
locations.push(location);
|
|
33
45
|
}
|
|
34
46
|
return locations;
|
|
35
47
|
}
|
|
@@ -60,42 +72,69 @@ export async function checkPrebuilds(options) {
|
|
|
60
72
|
const locations = await resolvePrebuildLocations(addon, host);
|
|
61
73
|
if (await anyLocationHasPrebuild(locations))
|
|
62
74
|
continue;
|
|
63
|
-
|
|
75
|
+
const platformPackage = await platformPackageForHost(addon, host);
|
|
76
|
+
const platformLocation = locations.find((location) => location.platformPackage !== undefined);
|
|
77
|
+
const issue = {
|
|
64
78
|
code: 'missing-prebuild',
|
|
65
79
|
level: 'error',
|
|
66
80
|
addon: formatAddonId(addon),
|
|
67
81
|
host,
|
|
68
82
|
packageRoot: addon.packageRoot,
|
|
69
|
-
message:
|
|
70
|
-
}
|
|
83
|
+
message: describeMissingPrebuild(addon, host, locations, platformPackage, platformLocation)
|
|
84
|
+
};
|
|
85
|
+
const needsPin = isMobileHost(host) &&
|
|
86
|
+
(platformLocation === undefined || platformLocation.mismatchedVersion !== undefined);
|
|
87
|
+
if (platformPackage !== null && addon.version !== undefined && needsPin) {
|
|
88
|
+
issue.platformPackage = { name: platformPackage, version: addon.version };
|
|
89
|
+
}
|
|
90
|
+
issues.push(issue);
|
|
71
91
|
}
|
|
72
92
|
return issues;
|
|
73
93
|
}
|
|
74
94
|
async function anyLocationHasPrebuild(locations) {
|
|
75
95
|
for (const location of locations) {
|
|
96
|
+
if (location.mismatchedVersion !== undefined)
|
|
97
|
+
continue;
|
|
76
98
|
if ((await listBarePrebuildFiles(location.hostDir)).length > 0)
|
|
77
99
|
return true;
|
|
78
100
|
}
|
|
79
101
|
return false;
|
|
80
102
|
}
|
|
81
|
-
|
|
103
|
+
function describeMissingPrebuild(addon, host, locations, platformPackage, platformLocation) {
|
|
82
104
|
const expected = locations.map((location) => path.join(location.hostDir, '*.bare'));
|
|
83
|
-
const platformPackage = await platformPackageForHost(addon, host);
|
|
84
|
-
const searchedPlatformPackage = locations.some((location) => location.platformPackage === platformPackage);
|
|
85
105
|
return (`${formatAddonId(addon)} is missing a prebuild for ${host} ` +
|
|
86
106
|
`(expected ${expected.join(' or ')}).` +
|
|
87
|
-
missingPlatformPackageHint(addon, platformPackage,
|
|
107
|
+
missingPlatformPackageHint(addon, platformPackage, platformLocation));
|
|
88
108
|
}
|
|
89
|
-
function missingPlatformPackageHint(addon, platformPackage,
|
|
90
|
-
if (platformPackage === null
|
|
109
|
+
function missingPlatformPackageHint(addon, platformPackage, platformLocation) {
|
|
110
|
+
if (platformPackage === null)
|
|
91
111
|
return '';
|
|
92
112
|
const pin = addon.version === undefined ? platformPackage : `"${platformPackage}": "${addon.version}"`;
|
|
93
|
-
|
|
94
|
-
`
|
|
113
|
+
if (platformLocation === undefined) {
|
|
114
|
+
return (` Add this exact dependency to package.json (same version as ${addon.name})` +
|
|
115
|
+
` and reinstall: ${pin}`);
|
|
116
|
+
}
|
|
117
|
+
if (platformLocation.mismatchedVersion !== undefined) {
|
|
118
|
+
return (` ${platformPackage} ${platformLocation.mismatchedVersion} is installed, but it must be` +
|
|
119
|
+
` the same version as ${addon.name}. Pin it in package.json and reinstall: ${pin}`);
|
|
120
|
+
}
|
|
121
|
+
return '';
|
|
95
122
|
}
|
|
96
123
|
async function platformPackageForHost(addon, host) {
|
|
97
124
|
return resolveAddonPlatformPackage(addon.name, await readHostAddonMap(addon), host);
|
|
98
125
|
}
|
|
126
|
+
async function readPackageVersion(packageRoot) {
|
|
127
|
+
try {
|
|
128
|
+
const parsed = JSON.parse(await fsp.readFile(path.join(packageRoot, 'package.json'), 'utf8'));
|
|
129
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
130
|
+
return undefined;
|
|
131
|
+
const version = parsed.version;
|
|
132
|
+
return typeof version === 'string' ? version : undefined;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
99
138
|
async function readHostAddonMap(addon) {
|
|
100
139
|
try {
|
|
101
140
|
const raw = await fsp.readFile(path.join(addon.packageRoot, 'package.json'), 'utf8');
|
|
@@ -4,6 +4,8 @@ export { default as withDeviceInfo } from './withDeviceInfo.js';
|
|
|
4
4
|
export { default as withMobileBundle } from './withMobileBundle.js';
|
|
5
5
|
export { default as withOpenCL } from './withOpenCL.js';
|
|
6
6
|
export { default as withQvacSDK } from './withQvacSDK.js';
|
|
7
|
+
export type { QvacSDKPluginOptions } from './withQvacSDK.js';
|
|
8
|
+
export type { MobileBundleOptions } from './withMobileBundle.js';
|
|
7
9
|
export { getProjectRootFromMod, getProjectRootFromBaseConfig } from './get-project-root.js';
|
|
8
10
|
export { resolveSDKPackageDir, SDK_PACKAGE_NAMES } from './resolve-sdk-package-dir.js';
|
|
9
11
|
export type { SDKPackageInfo } from './resolve-sdk-package-dir.js';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import configPlugins from '@expo/config-plugins';
|
|
1
2
|
import type { ExpoConfig } from 'expo/config';
|
|
2
3
|
/**
|
|
3
4
|
* Desktop-only spawn path, deferred so bare-pack does not walk `bare-process`
|
|
4
|
-
* -> `bare-posix` (no `android-arm64` prebuild). Mobile
|
|
5
|
-
* in
|
|
5
|
+
* -> `bare-posix` (no `android-arm64` prebuild). Mobile runs the engine fitter
|
|
6
|
+
* in process instead, so it never reaches this.
|
|
6
7
|
*/
|
|
7
8
|
declare const MOBILE_UNSUPPORTED_MODULES: string[];
|
|
8
9
|
type MobilePlatform = 'android' | 'ios';
|
|
@@ -13,13 +14,22 @@ type BareKitLinkerPaths = {
|
|
|
13
14
|
android: string | null;
|
|
14
15
|
ios: string | null;
|
|
15
16
|
};
|
|
17
|
+
type MobileBundleOptions = {
|
|
18
|
+
/**
|
|
19
|
+
* Install the addon platform packages the bundle needs for the current
|
|
20
|
+
* build target with the app's package manager, pinned in package.json.
|
|
21
|
+
* Off by default: `expo prebuild` then fails and names each package to add.
|
|
22
|
+
*/
|
|
23
|
+
installMissingPrebuilds?: boolean;
|
|
24
|
+
};
|
|
16
25
|
/**
|
|
17
26
|
* Expo plugin: bundle, verify, then copy the mobile worker bundle.
|
|
18
27
|
*
|
|
19
28
|
* Flow: bundleSdk -> verifyBundle -> copy to `<sdkPackageDir>/dist/worker.mobile.bundle.js`.
|
|
20
29
|
* Uses `qvac.config.*` if present.
|
|
21
30
|
*/
|
|
22
|
-
declare function withMobileBundle(config: ExpoConfig): ExpoConfig;
|
|
31
|
+
declare function withMobileBundle(config: ExpoConfig, options?: MobileBundleOptions): ExpoConfig;
|
|
32
|
+
declare function buildMobileBundle<T extends configPlugins.ExportedConfigWithProps<unknown>>(config: T, options: MobileBundleOptions): Promise<T>;
|
|
23
33
|
declare function mobileHostsForPlatform(platform: string): string[];
|
|
24
34
|
/** Runs the patched iOS linker after bundleSdk has written the current addons manifest. */
|
|
25
35
|
declare function runIOSAddonLinker(linkerPath: string): Promise<void>;
|
|
@@ -28,7 +38,7 @@ declare function runIOSAddonLinker(linkerPath: string): Promise<void>;
|
|
|
28
38
|
* the paths for each platform that was successfully patched.
|
|
29
39
|
*/
|
|
30
40
|
declare function patchBareKitLinkers(projectRoot: string, qvacSdkPath: string): BareKitLinkerPaths;
|
|
31
|
-
export { MOBILE_HOSTS, MOBILE_HOSTS_BY_PLATFORM, MOBILE_UNSUPPORTED_MODULES, mobileHostsForPlatform, patchBareKitLinkers, runIOSAddonLinker };
|
|
32
|
-
export type { BareKitLinkerPaths, MobilePlatform };
|
|
41
|
+
export { MOBILE_HOSTS, MOBILE_HOSTS_BY_PLATFORM, MOBILE_UNSUPPORTED_MODULES, buildMobileBundle, mobileHostsForPlatform, patchBareKitLinkers, runIOSAddonLinker };
|
|
42
|
+
export type { BareKitLinkerPaths, MobileBundleOptions, MobilePlatform };
|
|
33
43
|
export default withMobileBundle;
|
|
34
44
|
//# sourceMappingURL=withMobileBundle.d.ts.map
|
|
@@ -4,6 +4,9 @@ import * as fs from 'fs';
|
|
|
4
4
|
import * as path from 'path';
|
|
5
5
|
import { execPath } from 'process';
|
|
6
6
|
import { bundleSdk, verifyBundle, hasErrors, formatVerifyBundleResult } from '../../commands/index.js';
|
|
7
|
+
import { createCommandLogger } from '../../commands/command-logger.js';
|
|
8
|
+
import { installMissingHostPrebuilds } from '../../commands/host-prebuilds/index.js';
|
|
9
|
+
import { collectAddonsFromBundle } from '../../commands/verify/bundle-source.js';
|
|
7
10
|
import { CONFIG_CANDIDATES } from '../../client/config-loader/resolve-config.node.js';
|
|
8
11
|
import { resolveSDKPackageDir } from './resolve-sdk-package-dir.js';
|
|
9
12
|
import { getProjectRootFromMod } from './get-project-root.js';
|
|
@@ -14,10 +17,10 @@ const { withDangerousMod } = configPlugins;
|
|
|
14
17
|
const DEFERRED_MODULES = ['expo-file-system', 'react-native-bare-kit'];
|
|
15
18
|
/**
|
|
16
19
|
* Desktop-only spawn path, deferred so bare-pack does not walk `bare-process`
|
|
17
|
-
* -> `bare-posix` (no `android-arm64` prebuild). Mobile
|
|
18
|
-
* in
|
|
20
|
+
* -> `bare-posix` (no `android-arm64` prebuild). Mobile runs the engine fitter
|
|
21
|
+
* in process instead, so it never reaches this.
|
|
19
22
|
*/
|
|
20
|
-
const MOBILE_UNSUPPORTED_MODULES = ['bare-runtime/spawn'
|
|
23
|
+
const MOBILE_UNSUPPORTED_MODULES = ['bare-runtime/spawn'];
|
|
21
24
|
const MOBILE_HOSTS_BY_PLATFORM = {
|
|
22
25
|
android: ['android-arm64'],
|
|
23
26
|
ios: ['ios-arm64', 'ios-arm64-simulator', 'ios-x64-simulator']
|
|
@@ -32,39 +35,64 @@ const MOBILE_HOSTS = [...MOBILE_HOSTS_BY_PLATFORM.android, ...MOBILE_HOSTS_BY_PL
|
|
|
32
35
|
* Flow: bundleSdk -> verifyBundle -> copy to `<sdkPackageDir>/dist/worker.mobile.bundle.js`.
|
|
33
36
|
* Uses `qvac.config.*` if present.
|
|
34
37
|
*/
|
|
35
|
-
function withMobileBundle(config) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
38
|
+
function withMobileBundle(config, options = {}) {
|
|
39
|
+
config = withDangerousMod(config, ['android', (mod) => buildMobileBundle(mod, options)]);
|
|
40
|
+
config = withDangerousMod(config, ['ios', (mod) => buildMobileBundle(mod, options)]);
|
|
41
|
+
return config;
|
|
42
|
+
}
|
|
43
|
+
async function buildMobileBundle(config, options) {
|
|
44
|
+
const projectRoot = getProjectRootFromMod(config);
|
|
45
|
+
const sdkPackage = resolveSDKPackageDir(projectRoot);
|
|
46
|
+
const outputPath = path.join(sdkPackage.dir, 'dist', 'worker.mobile.bundle.js');
|
|
47
|
+
const platformHosts = mobileHostsForPlatform(config.modRequest.platform);
|
|
48
|
+
const configPath = findConfigFile(projectRoot);
|
|
49
|
+
if (configPath) {
|
|
50
|
+
console.log(`🕚 QVAC: Found ${path.basename(configPath)}, generating tree-shaken bundle...`);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.log('🕚 QVAC: No config found, generating default bundle (all plugins)...');
|
|
54
|
+
}
|
|
55
|
+
const deferredModules = [
|
|
56
|
+
...DEFERRED_MODULES,
|
|
57
|
+
...MOBILE_UNSUPPORTED_MODULES,
|
|
58
|
+
`${sdkPackage.name}/worker.mobile.bundle`
|
|
59
|
+
];
|
|
60
|
+
// The bundle is one shared artifact both platforms import, so it is built
|
|
61
|
+
// for every mobile host: a dual-platform `expo prebuild` runs this mod twice
|
|
62
|
+
// and the second run would otherwise overwrite the first platform's bundle
|
|
63
|
+
// with one that resolved the other platform's conditions.
|
|
64
|
+
const bundle = () => runBundler(projectRoot, sdkPackage.dir, configPath, deferredModules, MOBILE_HOSTS);
|
|
65
|
+
let linkerPaths = await bundle();
|
|
66
|
+
const generatedBundle = path.join(projectRoot, 'qvac', 'worker.bundle.js');
|
|
67
|
+
if (options.installMissingPrebuilds === true) {
|
|
68
|
+
// Take the addons from the bundle graph, which records where each linked
|
|
69
|
+
// addon really is; looking their names up in the project would miss the
|
|
70
|
+
// SDK's addons under pnpm or bun's isolated layout.
|
|
71
|
+
const { installed } = await installMissingHostPrebuilds({
|
|
72
|
+
projectRoot,
|
|
73
|
+
hosts: platformHosts,
|
|
74
|
+
addons: await collectAddonsFromBundle({
|
|
75
|
+
bundlePath: generatedBundle,
|
|
76
|
+
projectRoot,
|
|
77
|
+
hosts: platformHosts
|
|
78
|
+
}),
|
|
79
|
+
quiet: false,
|
|
80
|
+
logger: createCommandLogger({})
|
|
81
|
+
});
|
|
82
|
+
if (installed.length > 0) {
|
|
83
|
+
const names = installed.map((pkg) => `${pkg.name}@${pkg.version}`).join(', ');
|
|
84
|
+
console.log(`📦 QVAC: Installed addon platform packages: ${names}`);
|
|
85
|
+
// bare-pack resolved `#host-addon` to the addon's fallback module for
|
|
86
|
+
// hosts whose platform package was missing.
|
|
87
|
+
linkerPaths = await bundle();
|
|
62
88
|
}
|
|
63
|
-
console.log('🫡 QVAC: Mobile bundle generated and verified');
|
|
64
|
-
return config;
|
|
65
89
|
}
|
|
66
|
-
|
|
67
|
-
|
|
90
|
+
await runVerifier(projectRoot, generatedBundle, configPath, platformHosts);
|
|
91
|
+
fs.copyFileSync(generatedBundle, outputPath);
|
|
92
|
+
if (config.modRequest.platform === 'ios' && linkerPaths.ios !== null) {
|
|
93
|
+
await runIOSAddonLinker(linkerPaths.ios);
|
|
94
|
+
}
|
|
95
|
+
console.log('🫡 QVAC: Mobile bundle generated and verified');
|
|
68
96
|
return config;
|
|
69
97
|
}
|
|
70
98
|
function mobileHostsForPlatform(platform) {
|
|
@@ -84,16 +112,12 @@ function findConfigFile(projectRoot) {
|
|
|
84
112
|
return null;
|
|
85
113
|
}
|
|
86
114
|
async function runVerifier(projectRoot, generatedBundle, configPath, hosts) {
|
|
87
|
-
if (!configPath) {
|
|
88
|
-
console.log('⚠️ QVAC: no qvac.config.* found — Bare runtime will be auto-detected ' +
|
|
89
|
-
'from node_modules (bare-runtime, then bare). Add qvac.config.json ' +
|
|
90
|
-
'with `bareRuntimeVersion` to pin ABI checks deterministically.');
|
|
91
|
-
}
|
|
92
115
|
const result = await verifyBundle({
|
|
93
116
|
projectRoot,
|
|
94
117
|
addonsSource: generatedBundle,
|
|
95
118
|
hosts,
|
|
96
|
-
...(configPath ? { configPath } : {})
|
|
119
|
+
...(configPath ? { configPath } : {}),
|
|
120
|
+
onProgress: (message) => console.log(`🕚 QVAC: ${message}`)
|
|
97
121
|
});
|
|
98
122
|
if (hasErrors(result)) {
|
|
99
123
|
throw new BundleVerificationFailedError(generatedBundle, new Error(formatVerifyBundleResult(result)));
|
|
@@ -107,7 +131,9 @@ async function runBundler(projectRoot, qvacSdkPath, configPath, deferredModules,
|
|
|
107
131
|
...(configPath ? { configPath } : {}),
|
|
108
132
|
hosts,
|
|
109
133
|
defer: deferredModules,
|
|
110
|
-
quiet: true
|
|
134
|
+
quiet: true,
|
|
135
|
+
// runVerifier checks engines.bare right after, with progress output.
|
|
136
|
+
checkEngines: false
|
|
111
137
|
});
|
|
112
138
|
return linkerPaths;
|
|
113
139
|
}
|
|
@@ -179,5 +205,5 @@ function copyLinkerPatch(patchesDir, resolver, targetDir, patchName) {
|
|
|
179
205
|
function compiledPlatformAddonResolver(qvacSdkPath) {
|
|
180
206
|
return path.join(qvacSdkPath, 'dist', 'src', 'expo', 'plugins', 'patches', 'qvac-platform-addons.js');
|
|
181
207
|
}
|
|
182
|
-
export { MOBILE_HOSTS, MOBILE_HOSTS_BY_PLATFORM, MOBILE_UNSUPPORTED_MODULES, mobileHostsForPlatform, patchBareKitLinkers, runIOSAddonLinker };
|
|
208
|
+
export { MOBILE_HOSTS, MOBILE_HOSTS_BY_PLATFORM, MOBILE_UNSUPPORTED_MODULES, buildMobileBundle, mobileHostsForPlatform, patchBareKitLinkers, runIOSAddonLinker };
|
|
183
209
|
export default withMobileBundle;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ExpoConfig } from 'expo/config';
|
|
2
|
+
import { type MobileBundleOptions } from './withMobileBundle.js';
|
|
3
|
+
type QvacSDKPluginOptions = MobileBundleOptions;
|
|
2
4
|
/**
|
|
3
5
|
* Main Qvac SDK Expo plugin that combines all necessary mobile configurations:
|
|
4
6
|
* - Mobile worker bundle generation
|
|
@@ -7,7 +9,11 @@ import type { ExpoConfig } from 'expo/config';
|
|
|
7
9
|
* - Android NDK version pinning in build.gradle
|
|
8
10
|
* - Android architecture filtering (arm64-v8a only)
|
|
9
11
|
* - OpenCL native library support for Android
|
|
12
|
+
*
|
|
13
|
+
* Options (`["@qvac/sdk/expo-plugin", { ... }]` in app.json) go to
|
|
14
|
+
* `withMobileBundle`.
|
|
10
15
|
*/
|
|
11
|
-
declare function withQvacSDK(config: ExpoConfig): ExpoConfig;
|
|
16
|
+
declare function withQvacSDK(config: ExpoConfig, options?: QvacSDKPluginOptions): ExpoConfig;
|
|
17
|
+
export type { QvacSDKPluginOptions };
|
|
12
18
|
export default withQvacSDK;
|
|
13
19
|
//# sourceMappingURL=withQvacSDK.d.ts.map
|
|
@@ -2,7 +2,7 @@ import configPlugins from '@expo/config-plugins';
|
|
|
2
2
|
import withAndroidArchitecture from './withAndroidArchitecture.js';
|
|
3
3
|
import withAndroidNdkVersion from './withAndroidNdkVersion.js';
|
|
4
4
|
import withDeviceInfo from './withDeviceInfo.js';
|
|
5
|
-
import withMobileBundle from './withMobileBundle.js';
|
|
5
|
+
import withMobileBundle, {} from './withMobileBundle.js';
|
|
6
6
|
import withOpenCL from './withOpenCL.js';
|
|
7
7
|
const { withPlugins } = configPlugins;
|
|
8
8
|
/**
|
|
@@ -13,10 +13,13 @@ const { withPlugins } = configPlugins;
|
|
|
13
13
|
* - Android NDK version pinning in build.gradle
|
|
14
14
|
* - Android architecture filtering (arm64-v8a only)
|
|
15
15
|
* - OpenCL native library support for Android
|
|
16
|
+
*
|
|
17
|
+
* Options (`["@qvac/sdk/expo-plugin", { ... }]` in app.json) go to
|
|
18
|
+
* `withMobileBundle`.
|
|
16
19
|
*/
|
|
17
|
-
function withQvacSDK(config) {
|
|
20
|
+
function withQvacSDK(config, options = {}) {
|
|
18
21
|
return withPlugins(config, [
|
|
19
|
-
withMobileBundle,
|
|
22
|
+
[withMobileBundle, options],
|
|
20
23
|
withDeviceInfo,
|
|
21
24
|
[
|
|
22
25
|
'expo-build-properties',
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { batchCompletion, completion, deleteCache, loadModel, downloadAsset, heartbeat, unloadModel, transcribe, transcribeStream, bciTranscribe, bciTranscribeStream, embed, finetune, translate, cancel, ragChunk, ragIngest, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, ragReindex, ragListWorkspaces, ragCloseWorkspace, ragDeleteWorkspace, createVectorIndex, loadVectorIndex, type VectorIndex, textToSpeech, textToSpeechStream, getModelInfo, getLoadedModelInfo, getSystemResources, assessModelFit, loggingStream, subscribeServerLogs, type ServerLogHandler, ocr, invokePlugin, invokePluginStream, diffusion, type DiffusionProgressTick, classify, video, type VideoProgressTick, upscale, worldCreateScene, worldStep, type WorldStepResult, type WorldStepProgressTick, type WorldSceneResult, type WorldSceneResultWithPack, modelRegistryList, modelRegistrySearch, modelRegistryGetModel, type ModelRegistrySearchParams, suspend, resume, state, vla, vlaHparams, vlaSetEmbodiment, vlaPreprocessImage, vlaPadState, VLA_DEFAULT_IMAGE_SIZE, audioGen, audioEdit, audioUnderstand, type FinetuneHandle } from './client/api/index.js';
|
|
1
|
+
export { batchCompletion, completion, deleteCache, loadModel, downloadAsset, heartbeat, unloadModel, transcribe, transcribeStream, bciTranscribe, bciTranscribeStream, embed, finetune, translate, cancel, ragChunk, ragIngest, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, ragReindex, ragListWorkspaces, ragCloseWorkspace, ragDeleteWorkspace, createVectorIndex, loadVectorIndex, type VectorIndex, textToSpeech, textToSpeechStream, getModelInfo, getLoadedModelInfo, startRpcServer, stopRpcServer, discoverRpcServers, getSystemResources, assessModelFit, loggingStream, subscribeServerLogs, type ServerLogHandler, ocr, invokePlugin, invokePluginStream, diffusion, type DiffusionProgressTick, classify, video, type VideoProgressTick, upscale, worldCreateScene, worldStep, type WorldStepResult, type WorldStepProgressTick, type WorldSceneResult, type WorldSceneResultWithPack, modelRegistryList, modelRegistrySearch, modelRegistryGetModel, type ModelRegistrySearchParams, suspend, resume, state, vla, vlaHparams, vlaSetEmbodiment, vlaPreprocessImage, vlaPadState, VLA_DEFAULT_IMAGE_SIZE, audioGen, audioEdit, audioUnderstand, type FinetuneHandle } from './client/api/index.js';
|
|
2
2
|
export { close } from './client/index.js';
|
|
3
3
|
export { plugins } from './client/plugins-factory.js';
|
|
4
|
-
export { type LifecycleState, type ModelProgressUpdate, type LoadModelOptions, type LoadCustomPluginModelOptions, type DownloadAssetOptions, type Tool, type ToolCall, type ToolCallWithCall, type ToolCallError, type ToolCallEvent, type CompletionEvent, type CompletionFinal, type CompletionRun, type CompletionStats, type BatchCompletionEvent, type BatchCompletionResult, type BatchCompletionRun, type BatchPrompt, type EmbedStats, type TranscribeStats, VERBOSITY, type Attachment, type TranscribeStreamSession, type TranscribeStreamMetadataSession, type TranscribeStreamConversationSession, type TranscribeStreamEvent, type VadStateEvent, type EndOfTurnEvent, type TranscribeSegment, type BciConfig, type BciTranscribeClientParams, type BciTranscribeStreamClientParams, type BciTranscribeStreamSession, type BciTranscribeStreamMetadataSession, type BciStreamOpts, type NeuralInput, type TextToSpeechStreamSession, type TextToSpeechStreamResponse, type TextToSpeechStreamClientParams, type TtsClientParamsInput, type TextToSpeechStreamResult, type TtsSentenceChunkUpdate, type TtsResponse, type TtsStats, TTS_ENGINES, type TtsEngine, TTS_PARLER_EMOTIONS, type TtsParlerEmotion, type TtsParlerLoadConfig, type TtsParlerRuntimeConfig, TTS_PACES, TTS_SENTENCE_DELIMITER_PRESETS, type TtsSentenceDelimiterPreset, TTS_CHATTERBOX_LANGUAGES, type TtsChatterboxLanguage, type TtsChatterboxLoadConfig, type TtsChatterboxRuntimeConfig, TTS_SUPERTONIC_LANGUAGES, type TtsSupertonicLanguage, type TtsSupertonicLoadConfig, type TtsSupertonicRuntimeConfig, TTS_COSYVOICE3_EMOTIONS, TTS_COSYVOICE3_INSTRUCT_DIALECTS, TTS_COSYVOICE3_INSTRUCT_VOLUMES, TTS_COSYVOICE3_INSTRUCT_STYLES, type TtsPace, type TtsCosyvoice3Emotion, type TtsCosyvoice3Instruct, type TtsCosyvoice3LoadConfig, type TtsCosyvoice3RuntimeConfig, type TtsAudio8LoadConfig, type TtsAudio8RuntimeConfig, type CompletionParams, type ToolDialect, type RagSearchResult, type RagSaveEmbeddingsResult, type RagReindexResult, type RagEmbeddedDoc, type RagDoc, type RagWorkspaceInfo, type RagCloseWorkspaceParams, type RagDeleteWorkspaceParams, type RagIngestStage, type RagReindexStage, type RagSaveStage, RAG_ERROR_CODES, VectorIndexStorage, DEFAULT_VECTOR_INDEX_STORAGE, type VectorId, type VectorIndexHit, type CreateVectorIndexParams, type LoadVectorIndexParams, type VectorIndexAddParams, type VectorIndexIdsParams, type VectorIndexSearchParams, type VectorIndexWriteParams, type QvacConfig, type ModelInfo, type GetModelInfoParams, type GetLoadedModelInfoParams, type LoadedModelInfo, type GetSystemResourcesInput, type ResourceScope, type ResourceProvenance, type ResourceMetric, type GraphicsDriver, type GraphicsDriverCapabilities, type BackendProbeResult, type BackendDevice, type BackendDriver, type BackendFallback, type InferenceBackendDiagnostics, type CPUResourceCapabilities, type GPUResourceCapabilities, type SystemResourceCapabilities, type GPUResourceSample, type SystemResourceSample, type SystemResources, type AssessModelFitInput, type AssessModelFitResult, type LoadedInstance, type CacheFileInfo, toolSchema, type McpClient, type McpClientInput, type OCRClientParams, type OCRTextBlock, type OCROptions, type ClassifyClientParams, type ClassificationResult, type DiffusionClientParams, type DiffusionStreamResponse, type DiffusionStats, AUDIOGEN_ENGINES, AUDIOGEN_TASK_TYPES, AUDIOGEN_TRACKS, AUDIOGEN_INPUT_SAMPLE_RATE, AUDIOGEN_INPUT_CHANNELS, AUDIOGEN_INPUT_MAX_SECONDS, AUDIOGEN_MAX_AUDIO_CODES, AUDIOGEN_EDIT_OPERATIONS, AUDIOGEN_REPAINT_MODES, type AudioGenEngine, type AudioGenTaskType, type AudioGenTrack, type AudioGenAudioInput, type AudioGenClientParams, type AudioGenConfig, type AudioGenRuntimeConfig, type AudioGenProgress, type AudioGenAudio, type AudioGenStats, type AudioGenResult, type AudioGenStreamResponse, type AudioGenEditOperationType, type AudioGenRepaintMode, type AudioEditPrompt, type AudioEditFlowEditOperation, type AudioEditRepaintOperation, type AudioEditOperation, type AudioEditClientParams, type AudioEditStreamResponse, type AudioUnderstandClientParams, type AudioUnderstandResponse, type AudioGenUnderstandResult, type AudioUnderstandResult, type VideoClientParams, type VideoStreamResponse, type VideoStats, type UpscaleClientParams, type UpscaleStreamResponse, type UpscaleStats, type WalkKey, type WalkKeysInput, type WorldStepClientParams, type WorldStepStreamResponse, type WorldStepStats, type WorldSceneClientParams, type WorldSceneStreamResponse, type WorldSceneStats, type VlaConfig, type VlaClientRunParams, type VlaClientRunResult, type VlaEmbodimentSelection, type VlaEmbodimentSelector, type VlaHparams, type VlaStats, definePlugin, defineHandler, defineDuplexHandler, PluginDefinitionInvalidError, type QvacPlugin, type CreateModelParams, type PluginModelResult, type ModelRegistryEntry, type ModelRegistryEntryAddon, type ProfilerMode, type FinetuneValidation, type FinetuneRunParams, type FinetuneGetStateParams, type FinetuneStopParams, type FinetuneParams, type FinetuneStatus, type FinetuneProgress, type FinetuneStats, type FinetuneResult } from '@qvac/inference/surface';
|
|
4
|
+
export { type LifecycleState, type ModelProgressUpdate, type LoadModelOptions, type LoadCustomPluginModelOptions, type DownloadAssetOptions, type Tool, type ToolCall, type ToolCallWithCall, type ToolCallError, type ToolCallEvent, type CompletionEvent, type CompletionFinal, type CompletionRun, type CompletionStats, type BatchCompletionEvent, type BatchCompletionResult, type BatchCompletionRun, type BatchPrompt, type EmbedStats, type TranscribeStats, VERBOSITY, type Attachment, type TranscribeStreamSession, type TranscribeStreamMetadataSession, type TranscribeStreamConversationSession, type TranscribeStreamEvent, type VadStateEvent, type EndOfTurnEvent, type TranscribeSegment, ASR_BACKEND_IDS, type AsrBackendId, type BciConfig, type BciTranscribeClientParams, type BciTranscribeStreamClientParams, type BciTranscribeStreamSession, type BciTranscribeStreamMetadataSession, type BciStreamOpts, type NeuralInput, type TextToSpeechStreamSession, type TextToSpeechStreamResponse, type TextToSpeechStreamClientParams, type TtsClientParamsInput, type TextToSpeechStreamResult, type TtsSentenceChunkUpdate, type TtsResponse, type TtsStats, TTS_ENGINES, type TtsEngine, TTS_PARLER_EMOTIONS, type TtsParlerEmotion, type TtsParlerLoadConfig, type TtsParlerRuntimeConfig, TTS_PACES, TTS_SENTENCE_DELIMITER_PRESETS, type TtsSentenceDelimiterPreset, TTS_CHATTERBOX_LANGUAGES, type TtsChatterboxLanguage, type TtsChatterboxLoadConfig, type TtsChatterboxRuntimeConfig, TTS_SUPERTONIC_LANGUAGES, type TtsSupertonicLanguage, type TtsSupertonicLoadConfig, type TtsSupertonicRuntimeConfig, TTS_COSYVOICE3_EMOTIONS, TTS_COSYVOICE3_INSTRUCT_DIALECTS, TTS_COSYVOICE3_INSTRUCT_VOLUMES, TTS_COSYVOICE3_INSTRUCT_STYLES, type TtsPace, type TtsCosyvoice3Emotion, type TtsCosyvoice3Instruct, type TtsCosyvoice3LoadConfig, type TtsCosyvoice3RuntimeConfig, type TtsAudio8LoadConfig, type TtsAudio8RuntimeConfig, type TtsMossLoadConfig, type TtsMossRuntimeConfig, type CompletionParams, type ToolDialect, type RagSearchResult, type RagSaveEmbeddingsResult, type RagReindexResult, type RagEmbeddedDoc, type RagDoc, type RagWorkspaceInfo, type RagCloseWorkspaceParams, type RagDeleteWorkspaceParams, type RagIngestStage, type RagReindexStage, type RagSaveStage, RAG_ERROR_CODES, VectorIndexStorage, DEFAULT_VECTOR_INDEX_STORAGE, type VectorId, type VectorIndexHit, type CreateVectorIndexParams, type LoadVectorIndexParams, type VectorIndexAddParams, type VectorIndexIdsParams, type VectorIndexSearchParams, type VectorIndexWriteParams, type QvacConfig, type ModelInfo, type GetModelInfoParams, type GetLoadedModelInfoParams, type LoadedModelInfo, type GetSystemResourcesInput, type ResourceScope, type ResourceProvenance, type ResourceMetric, type GraphicsDriver, type GraphicsDriverCapabilities, type BackendProbeResult, type BackendDevice, type BackendDriver, type BackendFallback, type InferenceBackendDiagnostics, type CPUResourceCapabilities, type GPUResourceCapabilities, type SystemResourceCapabilities, type GPUResourceSample, type SystemResourceSample, type SystemResources, type AssessModelFitInput, type AssessModelFitResult, type LoadedInstance, type CacheFileInfo, toolSchema, TOOL_SEARCH_NAME, buildToolSearchTool, executeToolSearch, loadedToolNames, searchDeferredTools, type McpClient, type McpClientInput, type OCRClientParams, type OCRTextBlock, type OCROptions, type ClassifyClientParams, type ClassificationResult, type DiffusionClientParams, type DiffusionStreamResponse, type DiffusionStats, AUDIOGEN_ENGINES, AUDIOGEN_TASK_TYPES, AUDIOGEN_TRACKS, AUDIOGEN_INPUT_SAMPLE_RATE, AUDIOGEN_INPUT_CHANNELS, AUDIOGEN_INPUT_MAX_SECONDS, AUDIOGEN_MAX_AUDIO_CODES, AUDIOGEN_EDIT_OPERATIONS, AUDIOGEN_REPAINT_MODES, type AudioGenEngine, type AudioGenTaskType, type AudioGenTrack, type AudioGenAudioInput, type AudioGenClientParams, type AudioGenConfig, type AudioGenRuntimeConfig, type AudioGenProgress, type AudioGenAudio, type AudioGenStats, type AudioGenResult, type AudioGenStreamResponse, type AudioGenEditOperationType, type AudioGenRepaintMode, type AudioEditPrompt, type AudioEditFlowEditOperation, type AudioEditRepaintOperation, type AudioEditOperation, type AudioEditClientParams, type AudioEditStreamResponse, type AudioUnderstandClientParams, type AudioUnderstandResponse, type AudioGenUnderstandResult, type AudioUnderstandResult, type VideoClientParams, type VideoStreamResponse, type VideoStats, type UpscaleClientParams, type UpscaleStreamResponse, type UpscaleStats, type WalkKey, type WalkKeysInput, type WorldStepClientParams, type WorldStepStreamResponse, type WorldStepStats, type WorldSceneClientParams, type WorldSceneStreamResponse, type WorldSceneStats, type VlaConfig, type VlaClientRunParams, type VlaClientRunResult, type VlaEmbodimentSelection, type VlaEmbodimentSelector, type VlaHparams, type VlaStats, definePlugin, defineHandler, defineDuplexHandler, PluginDefinitionInvalidError, type QvacPlugin, type CreateModelParams, type PluginModelResult, type ModelRegistryEntry, type ModelRegistryEntryAddon, type ProfilerMode, type FinetuneValidation, type FinetuneRunParams, type FinetuneGetStateParams, type FinetuneStopParams, type FinetuneParams, type FinetuneStatus, type FinetuneProgress, type FinetuneStats, type FinetuneResult } from '@qvac/inference/surface';
|
|
5
5
|
export { SDK_CLIENT_ERROR_CODES } from './schemas/sdk-errors-client.js';
|
|
6
6
|
export { SDK_SERVER_ERROR_CODES } from './schemas/sdk-errors-server.js';
|
|
7
7
|
export { PLUGIN_LLM, PLUGIN_EMBEDDING, PLUGIN_WHISPER, PLUGIN_BCI, PLUGIN_NMT, PLUGIN_TTS, PLUGIN_OCR, PLUGIN_DIFFUSION, PLUGIN_AUDIOGEN, PLUGIN_VLA, PLUGIN_CLASSIFICATION, SDK_DEFAULT_PLUGINS, type BuiltinPlugin } from './plugin-ids.js';
|
|
@@ -17,4 +17,7 @@ export { getLogger, SDK_LOG_ID, SDK_ALL_LOG_ID } from './logging/index.js';
|
|
|
17
17
|
export type { Logger, LogTransport, LoggerOptions } from './logging/index.js';
|
|
18
18
|
export { profiler, attachBackendDiagnostics } from '@qvac/inference/surface';
|
|
19
19
|
export type { ProfilerRuntimeOptions, ProfilerExport, ProfilingEvent, ProfilerGPUResourceGauge, ProfilerResourceGauge } from '@qvac/inference/surface';
|
|
20
|
+
export type { StartRpcServerOptions, StopRpcServerOptions, DiscoverRpcServersOptions, RpcServerInfo, RpcServerCandidate } from '@qvac/inference/surface';
|
|
21
|
+
export { RpcServerOperationError } from './utils/errors-server.js';
|
|
22
|
+
export { getRpcDeviceMap, type RpcDeviceMapping, type RpcDevice } from '@qvac/inference/surface';
|
|
20
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Public API exports only
|
|
2
|
-
export { batchCompletion, completion, deleteCache, loadModel, downloadAsset, heartbeat, unloadModel, transcribe, transcribeStream, bciTranscribe, bciTranscribeStream, embed, finetune, translate, cancel, ragChunk, ragIngest, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, ragReindex, ragListWorkspaces, ragCloseWorkspace, ragDeleteWorkspace, createVectorIndex, loadVectorIndex, textToSpeech, textToSpeechStream, getModelInfo, getLoadedModelInfo, getSystemResources, assessModelFit, loggingStream, subscribeServerLogs, ocr, invokePlugin, invokePluginStream, diffusion, classify, video, upscale, worldCreateScene, worldStep, modelRegistryList, modelRegistrySearch, modelRegistryGetModel, suspend, resume, state, vla, vlaHparams, vlaSetEmbodiment, vlaPreprocessImage, vlaPadState, VLA_DEFAULT_IMAGE_SIZE, audioGen, audioEdit, audioUnderstand } from './client/api/index.js';
|
|
2
|
+
export { batchCompletion, completion, deleteCache, loadModel, downloadAsset, heartbeat, unloadModel, transcribe, transcribeStream, bciTranscribe, bciTranscribeStream, embed, finetune, translate, cancel, ragChunk, ragIngest, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, ragReindex, ragListWorkspaces, ragCloseWorkspace, ragDeleteWorkspace, createVectorIndex, loadVectorIndex, textToSpeech, textToSpeechStream, getModelInfo, getLoadedModelInfo, startRpcServer, stopRpcServer, discoverRpcServers, getSystemResources, assessModelFit, loggingStream, subscribeServerLogs, ocr, invokePlugin, invokePluginStream, diffusion, classify, video, upscale, worldCreateScene, worldStep, modelRegistryList, modelRegistrySearch, modelRegistryGetModel, suspend, resume, state, vla, vlaHparams, vlaSetEmbodiment, vlaPreprocessImage, vlaPadState, VLA_DEFAULT_IMAGE_SIZE, audioGen, audioEdit, audioUnderstand } from './client/api/index.js';
|
|
3
3
|
export { close } from './client/index.js';
|
|
4
4
|
export { plugins } from './client/plugins-factory.js';
|
|
5
|
-
export { VERBOSITY, TTS_ENGINES, TTS_PARLER_EMOTIONS, TTS_PACES, TTS_SENTENCE_DELIMITER_PRESETS, TTS_CHATTERBOX_LANGUAGES, TTS_SUPERTONIC_LANGUAGES, TTS_COSYVOICE3_EMOTIONS, TTS_COSYVOICE3_INSTRUCT_DIALECTS, TTS_COSYVOICE3_INSTRUCT_VOLUMES, TTS_COSYVOICE3_INSTRUCT_STYLES, RAG_ERROR_CODES, VectorIndexStorage, DEFAULT_VECTOR_INDEX_STORAGE, toolSchema, AUDIOGEN_ENGINES, AUDIOGEN_TASK_TYPES, AUDIOGEN_TRACKS, AUDIOGEN_INPUT_SAMPLE_RATE, AUDIOGEN_INPUT_CHANNELS, AUDIOGEN_INPUT_MAX_SECONDS, AUDIOGEN_MAX_AUDIO_CODES, AUDIOGEN_EDIT_OPERATIONS, AUDIOGEN_REPAINT_MODES, definePlugin, defineHandler, defineDuplexHandler, PluginDefinitionInvalidError } from '@qvac/inference/surface';
|
|
5
|
+
export { VERBOSITY, ASR_BACKEND_IDS, TTS_ENGINES, TTS_PARLER_EMOTIONS, TTS_PACES, TTS_SENTENCE_DELIMITER_PRESETS, TTS_CHATTERBOX_LANGUAGES, TTS_SUPERTONIC_LANGUAGES, TTS_COSYVOICE3_EMOTIONS, TTS_COSYVOICE3_INSTRUCT_DIALECTS, TTS_COSYVOICE3_INSTRUCT_VOLUMES, TTS_COSYVOICE3_INSTRUCT_STYLES, RAG_ERROR_CODES, VectorIndexStorage, DEFAULT_VECTOR_INDEX_STORAGE, toolSchema, TOOL_SEARCH_NAME, buildToolSearchTool, executeToolSearch, loadedToolNames, searchDeferredTools, AUDIOGEN_ENGINES, AUDIOGEN_TASK_TYPES, AUDIOGEN_TRACKS, AUDIOGEN_INPUT_SAMPLE_RATE, AUDIOGEN_INPUT_CHANNELS, AUDIOGEN_INPUT_MAX_SECONDS, AUDIOGEN_MAX_AUDIO_CODES, AUDIOGEN_EDIT_OPERATIONS, AUDIOGEN_REPAINT_MODES, definePlugin, defineHandler, defineDuplexHandler, PluginDefinitionInvalidError } from '@qvac/inference/surface';
|
|
6
6
|
// SDK-owned error-code objects: `SDK_CLIENT_ERROR_CODES` holds transport/client
|
|
7
7
|
// codes absent from @qvac/inference, and `SDK_SERVER_ERROR_CODES` carries the
|
|
8
8
|
// client-side error definitions (`addCodes` message registry) that
|
|
@@ -61,3 +61,5 @@ export { BareRuntimeBinaryNotFoundError, WorkerCrashedError, WorkerShutdownError
|
|
|
61
61
|
export { getLogger, SDK_LOG_ID, SDK_ALL_LOG_ID } from './logging/index.js';
|
|
62
62
|
// Profiler exports
|
|
63
63
|
export { profiler, attachBackendDiagnostics } from '@qvac/inference/surface';
|
|
64
|
+
export { RpcServerOperationError } from './utils/errors-server.js';
|
|
65
|
+
export { getRpcDeviceMap } from '@qvac/inference/surface';
|
|
@@ -34,6 +34,8 @@ export declare const SDK_CLIENT_ERROR_CODES: {
|
|
|
34
34
|
readonly INVALID_PLUGIN_SPECIFIER: 50612;
|
|
35
35
|
readonly BARE_IMPORTS_MAP_NOT_FOUND: 50613;
|
|
36
36
|
readonly BARE_RUNTIME_BINARY_NOT_FOUND: 50614;
|
|
37
|
+
readonly HOST_PREBUILDS_INSTALL_REFUSED: 50615;
|
|
38
|
+
readonly HOST_PREBUILDS_INSTALL_FAILED: 50616;
|
|
37
39
|
readonly PROFILER_INVALID_CAPACITY: 50800;
|
|
38
40
|
};
|
|
39
41
|
declare const clientErrorDefinitions: ErrorCodesMap;
|
|
@@ -40,6 +40,8 @@ export const SDK_CLIENT_ERROR_CODES = {
|
|
|
40
40
|
INVALID_PLUGIN_SPECIFIER: 50612,
|
|
41
41
|
BARE_IMPORTS_MAP_NOT_FOUND: 50613,
|
|
42
42
|
BARE_RUNTIME_BINARY_NOT_FOUND: 50614,
|
|
43
|
+
HOST_PREBUILDS_INSTALL_REFUSED: 50615,
|
|
44
|
+
HOST_PREBUILDS_INSTALL_FAILED: 50616,
|
|
43
45
|
// Profiler Errors (50,800-50,899)
|
|
44
46
|
PROFILER_INVALID_CAPACITY: 50800
|
|
45
47
|
};
|
|
@@ -181,6 +183,20 @@ const clientErrorDefinitions = {
|
|
|
181
183
|
name: 'BARE_RUNTIME_BINARY_NOT_FOUND',
|
|
182
184
|
message: (platform, arch) => `Could not load the Bare runtime binary for ${platform}-${arch}. The platform package "bare-runtime-${platform}-${arch}" (or one of its dependencies) is missing from node_modules — commonly seen with pnpm, which does not always install nested optional dependencies. Fix it by installing the platform package directly (e.g. \`pnpm add bare-runtime-${platform}-${arch}\`) or by installing with npm or bun. See https://github.com/tetherto/qvac/issues/1492`
|
|
183
185
|
},
|
|
186
|
+
[SDK_CLIENT_ERROR_CODES.HOST_PREBUILDS_INSTALL_REFUSED]: {
|
|
187
|
+
name: 'HOST_PREBUILDS_INSTALL_REFUSED',
|
|
188
|
+
message: (reason, dependencies) => `Cannot install the addon platform packages automatically: ${reason}.` +
|
|
189
|
+
(dependencies
|
|
190
|
+
? `\n\n Add them to the dependencies in package.json, pinned to these exact versions, and reinstall:\n${dependencies}`
|
|
191
|
+
: '')
|
|
192
|
+
},
|
|
193
|
+
[SDK_CLIENT_ERROR_CODES.HOST_PREBUILDS_INSTALL_FAILED]: {
|
|
194
|
+
name: 'HOST_PREBUILDS_INSTALL_FAILED',
|
|
195
|
+
message: (details, dependencies) => `Installing the addon platform packages failed: ${details}` +
|
|
196
|
+
(dependencies
|
|
197
|
+
? `\n\n Fix the error, or add them to the dependencies in package.json, pinned to these exact versions, and reinstall:\n${dependencies}`
|
|
198
|
+
: '')
|
|
199
|
+
},
|
|
184
200
|
// Profiler Errors (50,800-50,899)
|
|
185
201
|
[SDK_CLIENT_ERROR_CODES.PROFILER_INVALID_CAPACITY]: {
|
|
186
202
|
name: 'PROFILER_INVALID_CAPACITY',
|
|
@@ -15,6 +15,7 @@ export declare const SDK_SERVER_ERROR_CODES: {
|
|
|
15
15
|
readonly TTS_REFERENCE_AUDIO_REQUIRED: 52209;
|
|
16
16
|
readonly LEGACY_PARAKEET_MODEL_DEPRECATED: 52210;
|
|
17
17
|
readonly LEGACY_TTS_MODEL_DEPRECATED: 52211;
|
|
18
|
+
readonly RPC_SERVER_OPERATION_FAILED: 52423;
|
|
18
19
|
readonly MODEL_UNLOAD_FAILED: 52400;
|
|
19
20
|
readonly EMBED_FAILED: 52401;
|
|
20
21
|
readonly EMBED_NO_EMBEDDINGS: 52402;
|
|
@@ -21,6 +21,7 @@ export const SDK_SERVER_ERROR_CODES = {
|
|
|
21
21
|
LEGACY_PARAKEET_MODEL_DEPRECATED: 52210,
|
|
22
22
|
LEGACY_TTS_MODEL_DEPRECATED: 52211,
|
|
23
23
|
// Model Operations (52,400-52,799)
|
|
24
|
+
RPC_SERVER_OPERATION_FAILED: 52423,
|
|
24
25
|
MODEL_UNLOAD_FAILED: 52400,
|
|
25
26
|
EMBED_FAILED: 52401,
|
|
26
27
|
EMBED_NO_EMBEDDINGS: 52402,
|
|
@@ -178,6 +179,10 @@ const serverErrorDefinitions = {
|
|
|
178
179
|
message: (legacyFields) => `Legacy ONNX TTS modelConfig fields are no longer supported (${legacyFields ?? 'unknown fields'}). As of @qvac/tts-ggml the addon uses GGUF bundles: supply the primary GGUF via modelSrc, set language in modelConfig, and for Chatterbox add s3genModelSrc (e.g. loadModel({ modelSrc: TTS_T3_TURBO_EN_CHATTERBOX_Q8_0, modelType: "tts", modelConfig: { ttsEngine: "chatterbox", language: "en", s3genModelSrc: TTS_S3GEN_EN_CHATTERBOX } })). Supertonic multilingual mode is selected by the GGUF (e.g. TTS_MULTILINGUAL_SUPERTONIC2_Q8_0) plus language — not ttsSupertonicMultilingual.`
|
|
179
180
|
},
|
|
180
181
|
// Model Operations (52,400-52,799)
|
|
182
|
+
[SDK_SERVER_ERROR_CODES.RPC_SERVER_OPERATION_FAILED]: {
|
|
183
|
+
name: 'RPC_SERVER_OPERATION_FAILED',
|
|
184
|
+
message: (operation, details) => `${operation}: ${details}`
|
|
185
|
+
},
|
|
181
186
|
[SDK_SERVER_ERROR_CODES.MODEL_UNLOAD_FAILED]: {
|
|
182
187
|
name: 'MODEL_UNLOAD_FAILED',
|
|
183
188
|
message: (modelId) => `Failed to unload model${modelId ? ` "${modelId}"` : ''}`
|
|
@@ -100,6 +100,21 @@ export declare class BareImportsMapNotFoundError extends QvacErrorBase {
|
|
|
100
100
|
export declare class BareRuntimeBinaryNotFoundError extends QvacErrorBase {
|
|
101
101
|
constructor(platform: string, arch: string, cause?: unknown);
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Addon platform packages are missing and cannot be installed automatically:
|
|
105
|
+
* no supported package manager was detected, two installed versions of one
|
|
106
|
+
* addon need the same package, or an addon names an invalid package.
|
|
107
|
+
* `dependencies` maps each missing package to the exact version to pin.
|
|
108
|
+
*/
|
|
109
|
+
export declare class HostPrebuildsInstallRefusedError extends QvacErrorBase {
|
|
110
|
+
readonly dependencies: Record<string, string>;
|
|
111
|
+
constructor(reason: string, dependencies: Record<string, string>, cause?: unknown);
|
|
112
|
+
}
|
|
113
|
+
/** The package manager ran but the missing addon platform packages are still not installed. */
|
|
114
|
+
export declare class HostPrebuildsInstallFailedError extends QvacErrorBase {
|
|
115
|
+
readonly dependencies: Record<string, string>;
|
|
116
|
+
constructor(details: string, dependencies: Record<string, string>, cause?: unknown);
|
|
117
|
+
}
|
|
103
118
|
export declare class ConfigFileNotFoundError extends QvacErrorBase {
|
|
104
119
|
constructor(searchPaths: string, cause?: unknown);
|
|
105
120
|
}
|
|
@@ -166,6 +166,32 @@ export class BareRuntimeBinaryNotFoundError extends QvacErrorBase {
|
|
|
166
166
|
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.BARE_RUNTIME_BINARY_NOT_FOUND, [platform, arch], cause));
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* Addon platform packages are missing and cannot be installed automatically:
|
|
171
|
+
* no supported package manager was detected, two installed versions of one
|
|
172
|
+
* addon need the same package, or an addon names an invalid package.
|
|
173
|
+
* `dependencies` maps each missing package to the exact version to pin.
|
|
174
|
+
*/
|
|
175
|
+
export class HostPrebuildsInstallRefusedError extends QvacErrorBase {
|
|
176
|
+
dependencies;
|
|
177
|
+
constructor(reason, dependencies, cause) {
|
|
178
|
+
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.HOST_PREBUILDS_INSTALL_REFUSED, [reason, formatDependencyPins(dependencies)], cause));
|
|
179
|
+
this.dependencies = dependencies;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/** The package manager ran but the missing addon platform packages are still not installed. */
|
|
183
|
+
export class HostPrebuildsInstallFailedError extends QvacErrorBase {
|
|
184
|
+
dependencies;
|
|
185
|
+
constructor(details, dependencies, cause) {
|
|
186
|
+
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.HOST_PREBUILDS_INSTALL_FAILED, [details, formatDependencyPins(dependencies)], cause));
|
|
187
|
+
this.dependencies = dependencies;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
function formatDependencyPins(dependencies) {
|
|
191
|
+
return Object.entries(dependencies)
|
|
192
|
+
.map(([name, version]) => ` "${name}": "${version}"`)
|
|
193
|
+
.join(',\n');
|
|
194
|
+
}
|
|
169
195
|
export class ConfigFileNotFoundError extends QvacErrorBase {
|
|
170
196
|
constructor(searchPaths, cause) {
|
|
171
197
|
super(createErrorOptions(SDK_CLIENT_ERROR_CODES.CONFIG_FILE_NOT_FOUND, [searchPaths], cause));
|
|
@@ -389,4 +389,5 @@ export declare class PathTraversalError extends QvacErrorBase {
|
|
|
389
389
|
export declare class ModelRegistryQueryFailedError extends QvacErrorBase {
|
|
390
390
|
constructor(details?: string, cause?: unknown);
|
|
391
391
|
}
|
|
392
|
+
export { RpcServerOperationError } from '@qvac/inference/surface';
|
|
392
393
|
//# sourceMappingURL=errors-server.d.ts.map
|
|
@@ -640,3 +640,4 @@ export class ModelRegistryQueryFailedError extends QvacErrorBase {
|
|
|
640
640
|
super(createErrorOptions(SDK_SERVER_ERROR_CODES.QVAC_MODEL_REGISTRY_QUERY_FAILED, details ? [details] : undefined, cause));
|
|
641
641
|
}
|
|
642
642
|
}
|
|
643
|
+
export { RpcServerOperationError } from '@qvac/inference/surface';
|
|
@@ -34,7 +34,8 @@ function createMcpToolHandler(client, toolName) {
|
|
|
34
34
|
export async function getMcpToolsWithHandlers(clients) {
|
|
35
35
|
const allTools = [];
|
|
36
36
|
const handlers = new Map();
|
|
37
|
-
for (const { client, includeResources } of clients) {
|
|
37
|
+
for (const { client, includeResources, deferLoading, group } of clients) {
|
|
38
|
+
const start = allTools.length;
|
|
38
39
|
const { tools: mcpTools } = await client.listTools();
|
|
39
40
|
for (const mcpTool of mcpTools) {
|
|
40
41
|
allTools.push(convertMcpToolToTool(mcpTool));
|
|
@@ -87,6 +88,11 @@ export async function getMcpToolsWithHandlers(clients) {
|
|
|
87
88
|
});
|
|
88
89
|
}
|
|
89
90
|
}
|
|
91
|
+
if (deferLoading === true) {
|
|
92
|
+
for (let i = start; i < allTools.length; i++) {
|
|
93
|
+
allTools[i] = { ...allTools[i], deferLoading: true, ...(group !== undefined && { group }) };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
90
96
|
}
|
|
91
97
|
return { tools: allTools, handlers };
|
|
92
98
|
}
|
|
@@ -7,6 +7,10 @@ export type ToolInput<T extends ZodObjectType = ZodObjectType> = {
|
|
|
7
7
|
description: string;
|
|
8
8
|
parameters: T;
|
|
9
9
|
handler?: ToolHandler;
|
|
10
|
+
/** Keep this tool's parameter schema out of the initial prompt; see `Tool.deferLoading`. */
|
|
11
|
+
deferLoading?: boolean;
|
|
12
|
+
/** Heading this tool is listed under in the deferred catalog. */
|
|
13
|
+
group?: string;
|
|
10
14
|
};
|
|
11
15
|
export declare function convertToolInput(input: ToolInput): Tool;
|
|
12
16
|
export declare function convertTools(inputs: ToolInput[]): Tool[];
|
|
@@ -54,6 +54,8 @@ export function convertToolInput(input) {
|
|
|
54
54
|
type: 'function',
|
|
55
55
|
name: input.name,
|
|
56
56
|
description: input.description,
|
|
57
|
+
...(input.deferLoading !== undefined && { deferLoading: input.deferLoading }),
|
|
58
|
+
...(input.group !== undefined && { group: input.group }),
|
|
57
59
|
parameters: {
|
|
58
60
|
type: 'object',
|
|
59
61
|
properties,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default, ggmlRpcServerProvider } from '@qvac/inference/ggml-rpc-server/provider';
|