@qvac/sdk 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +48 -11
  2. package/bare-imports.json +35 -0
  3. package/dist/client/api/cancel.d.ts +12 -3
  4. package/dist/client/api/cancel.js +12 -3
  5. package/dist/client/api/get-model-info.d.ts +2 -2
  6. package/dist/client/api/get-model-info.js +2 -2
  7. package/dist/client/api/index.d.ts +2 -1
  8. package/dist/client/api/index.js +2 -1
  9. package/dist/client/api/load-model.js +6 -1
  10. package/dist/client/api/ocr.d.ts +31 -0
  11. package/dist/client/api/ocr.js +88 -0
  12. package/dist/client/api/rag.d.ts +215 -20
  13. package/dist/client/api/rag.js +382 -23
  14. package/dist/client/api/translate.js +10 -11
  15. package/dist/client/api/unload-model.js +1 -1
  16. package/dist/client/init-hooks.d.ts +4 -3
  17. package/dist/client/init-hooks.js +40 -31
  18. package/dist/client/rpc/bare-client.d.ts +1 -178
  19. package/dist/client/rpc/bare-client.js +42 -9
  20. package/dist/client/rpc/expo-rpc-client.js +57 -2
  21. package/dist/client/rpc/node-rpc-client.js +5 -1
  22. package/dist/client/rpc/rpc-client.d.ts +1 -1
  23. package/dist/client/rpc/rpc-client.js +11 -57
  24. package/dist/examples/config/blind-relay/blind-relay.config.d.ts +5 -0
  25. package/dist/examples/config/blind-relay/blind-relay.config.js +7 -0
  26. package/dist/examples/config/default/default.config.d.ts +8 -0
  27. package/dist/examples/config/default/default.config.js +6 -0
  28. package/dist/examples/default-config-usage.d.ts +17 -0
  29. package/dist/examples/default-config-usage.js +47 -0
  30. package/dist/examples/delegated-inference/consumer.js +1 -0
  31. package/dist/examples/download-with-blind-relays.js +4 -3
  32. package/dist/examples/embed-hyperdrive.js +4 -0
  33. package/dist/examples/kv-cache-custom-key.js +16 -1
  34. package/dist/examples/llamacpp-sharded.js +12 -3
  35. package/dist/examples/ocr-fasttext.d.ts +2 -0
  36. package/dist/examples/ocr-fasttext.js +52 -0
  37. package/dist/examples/quickstart.d.ts +2 -0
  38. package/dist/examples/quickstart.js +28 -0
  39. package/dist/examples/rag/rag-hyperdb/cancellation.d.ts +2 -0
  40. package/dist/examples/rag/rag-hyperdb/cancellation.js +75 -0
  41. package/dist/examples/rag/rag-hyperdb/ingest.d.ts +2 -0
  42. package/dist/examples/rag/{rag-hyperdb.js → rag-hyperdb/ingest.js} +10 -4
  43. package/dist/examples/rag/rag-hyperdb/pipeline.d.ts +2 -0
  44. package/dist/examples/rag/rag-hyperdb/pipeline.js +74 -0
  45. package/dist/examples/rag/rag-hyperdb/workspaces.d.ts +2 -0
  46. package/dist/examples/rag/rag-hyperdb/workspaces.js +178 -0
  47. package/dist/examples/translation/translation-bergamot-batch.d.ts +2 -0
  48. package/dist/examples/translation/translation-bergamot-batch.js +49 -0
  49. package/dist/examples/translation/translation-bergamot.d.ts +2 -0
  50. package/dist/examples/translation/translation-bergamot.js +39 -0
  51. package/dist/examples/translation/translation-indic.js +1 -0
  52. package/dist/examples/translation/translation-opus.js +1 -0
  53. package/dist/examples/translation/translation-stream.js +1 -0
  54. package/dist/expo/plugins/withMobileBundle.js +29 -10
  55. package/dist/index.d.ts +3 -2
  56. package/dist/index.js +3 -1
  57. package/dist/logging/addon.js +23 -7
  58. package/dist/logging/base-logger.js +2 -2
  59. package/dist/logging/client-logger.js +15 -4
  60. package/dist/logging/index.d.ts +1 -0
  61. package/dist/logging/index.js +1 -0
  62. package/dist/logging/logger.js +11 -3
  63. package/dist/logging/namespaces.d.ts +1 -0
  64. package/dist/logging/namespaces.js +1 -0
  65. package/dist/logging/registry.d.ts +5 -0
  66. package/dist/logging/registry.js +17 -5
  67. package/dist/logging/transport.js +2 -2
  68. package/dist/logging/utils.d.ts +2 -0
  69. package/dist/logging/utils.js +62 -0
  70. package/dist/models/hyperdrive/models.d.ts +1096 -178
  71. package/dist/models/hyperdrive/models.js +1476 -507
  72. package/dist/schemas/archive.d.ts +9 -0
  73. package/dist/schemas/archive.js +17 -0
  74. package/dist/schemas/cancel.d.ts +6 -0
  75. package/dist/schemas/cancel.js +5 -0
  76. package/dist/schemas/common.d.ts +582 -77
  77. package/dist/schemas/common.js +6 -1
  78. package/dist/schemas/delegate.d.ts +1 -0
  79. package/dist/schemas/delegate.js +1 -0
  80. package/dist/schemas/download-asset.d.ts +21 -9
  81. package/dist/schemas/get-model-info.d.ts +12 -10
  82. package/dist/schemas/get-model-info.js +9 -1
  83. package/dist/schemas/index.d.ts +6 -2
  84. package/dist/schemas/index.js +9 -2
  85. package/dist/schemas/llamacpp-config.d.ts +112 -8
  86. package/dist/schemas/llamacpp-config.js +40 -8
  87. package/dist/schemas/load-model.d.ts +2993 -525
  88. package/dist/schemas/load-model.js +88 -33
  89. package/dist/schemas/logging-stream.d.ts +2 -2
  90. package/dist/schemas/model-src-utils.d.ts +38 -16
  91. package/dist/schemas/model-src-utils.js +4 -8
  92. package/dist/schemas/model-types.d.ts +154 -0
  93. package/dist/schemas/model-types.js +140 -0
  94. package/dist/schemas/ocr.d.ts +88 -0
  95. package/dist/schemas/ocr.js +52 -0
  96. package/dist/schemas/rag.d.ts +183 -52
  97. package/dist/schemas/rag.js +148 -23
  98. package/dist/schemas/reload-config.d.ts +20 -8
  99. package/dist/schemas/reload-config.js +7 -5
  100. package/dist/schemas/runtime-context.d.ts +19 -0
  101. package/dist/schemas/runtime-context.js +7 -0
  102. package/dist/schemas/sdk-config.d.ts +697 -2
  103. package/dist/schemas/sdk-config.js +99 -1
  104. package/dist/schemas/sdk-errors-client.d.ts +1 -0
  105. package/dist/schemas/sdk-errors-client.js +5 -0
  106. package/dist/schemas/sdk-errors-server.d.ts +14 -0
  107. package/dist/schemas/sdk-errors-server.js +70 -0
  108. package/dist/schemas/shard.d.ts +21 -0
  109. package/dist/schemas/shard.js +17 -0
  110. package/dist/schemas/translate.d.ts +68 -23
  111. package/dist/schemas/translate.js +37 -11
  112. package/dist/schemas/translation-config.d.ts +272 -29
  113. package/dist/schemas/translation-config.js +63 -6
  114. package/dist/scripts/run-unit-tests.d.ts +2 -0
  115. package/dist/scripts/run-unit-tests.js +17 -0
  116. package/dist/server/bare/addons/llamacpp-completion/cache-logger.d.ts +6 -0
  117. package/dist/server/bare/addons/llamacpp-completion/cache-logger.js +34 -0
  118. package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/create-model.d.ts +1 -5
  119. package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/create-model.js +3 -26
  120. package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/handlers/completion-stream.js +26 -7
  121. package/dist/server/bare/addons/llamacpp-completion/index.d.ts +4 -0
  122. package/dist/server/bare/addons/llamacpp-completion/index.js +3 -0
  123. package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/kv-cache-utils.d.ts +4 -1
  124. package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/kv-cache-utils.js +43 -10
  125. package/dist/server/bare/addons/llamacpp-embedding/create-model.d.ts +8 -0
  126. package/dist/server/bare/addons/llamacpp-embedding/create-model.js +38 -0
  127. package/dist/server/bare/addons/llamacpp-embedding/index.d.ts +3 -0
  128. package/dist/server/bare/addons/llamacpp-embedding/index.js +2 -0
  129. package/dist/server/bare/addons/load-model.js +28 -24
  130. package/dist/server/bare/addons/{translation → nmtcpp-translation}/create-model.js +23 -8
  131. package/dist/server/bare/addons/{translation → nmtcpp-translation}/handlers/translate.js +35 -11
  132. package/dist/server/bare/addons/onnx-ocr/create-model.d.ts +10 -0
  133. package/dist/server/bare/addons/onnx-ocr/create-model.js +39 -0
  134. package/dist/server/bare/addons/onnx-ocr/handlers/ocr-stream.d.ts +10 -0
  135. package/dist/server/bare/addons/onnx-ocr/handlers/ocr-stream.js +109 -0
  136. package/dist/server/bare/addons/onnx-ocr/index.d.ts +3 -0
  137. package/dist/server/bare/addons/onnx-ocr/index.js +2 -0
  138. package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/create-model.js +2 -1
  139. package/dist/server/bare/delegate-rpc-client.js +19 -1
  140. package/dist/server/bare/rag-hyperdb/handlers/chunk.d.ts +3 -0
  141. package/dist/server/bare/rag-hyperdb/handlers/chunk.js +7 -0
  142. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.d.ts +3 -0
  143. package/dist/server/bare/rag-hyperdb/handlers/close-workspace.js +9 -0
  144. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.d.ts +1 -1
  145. package/dist/server/bare/rag-hyperdb/handlers/delete-embeddings.js +9 -10
  146. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.d.ts +3 -0
  147. package/dist/server/bare/rag-hyperdb/handlers/delete-workspace.js +14 -0
  148. package/dist/server/bare/rag-hyperdb/handlers/ingest.d.ts +9 -0
  149. package/dist/server/bare/rag-hyperdb/handlers/ingest.js +18 -0
  150. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.d.ts +3 -0
  151. package/dist/server/bare/rag-hyperdb/handlers/list-workspaces.js +4 -0
  152. package/dist/server/bare/rag-hyperdb/handlers/reindex.d.ts +9 -0
  153. package/dist/server/bare/rag-hyperdb/handlers/reindex.js +16 -0
  154. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.d.ts +7 -4
  155. package/dist/server/bare/rag-hyperdb/handlers/save-embeddings.js +13 -14
  156. package/dist/server/bare/rag-hyperdb/handlers/search.js +10 -10
  157. package/dist/server/bare/rag-hyperdb/index.d.ts +8 -1
  158. package/dist/server/bare/rag-hyperdb/index.js +8 -1
  159. package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +7 -0
  160. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +39 -0
  161. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.d.ts +15 -0
  162. package/dist/server/bare/rag-hyperdb/rag-workspace-manager.js +135 -0
  163. package/dist/server/bare/registry/config-registry.js +11 -0
  164. package/dist/server/bare/registry/logging-stream-registry.js +3 -3
  165. package/dist/server/bare/registry/model-config-registry.d.ts +4 -0
  166. package/dist/server/bare/registry/model-config-registry.js +15 -0
  167. package/dist/server/bare/registry/model-config-utils.d.ts +15 -0
  168. package/dist/server/bare/registry/model-config-utils.js +110 -0
  169. package/dist/server/bare/registry/model-registry.d.ts +6 -29
  170. package/dist/server/bare/registry/runtime-context-registry.d.ts +7 -0
  171. package/dist/server/bare/registry/runtime-context-registry.js +26 -0
  172. package/dist/server/bare/utils/loader-adapter.d.ts +7 -0
  173. package/dist/server/bare/utils/loader-adapter.js +9 -0
  174. package/dist/server/error-handlers.js +4 -2
  175. package/dist/server/rpc/handle-request.js +91 -9
  176. package/dist/server/rpc/handlers/cancelHandler.js +10 -1
  177. package/dist/server/rpc/handlers/completion-stream.js +1 -1
  178. package/dist/server/rpc/handlers/delete-cache.js +1 -1
  179. package/dist/server/rpc/handlers/embed.js +1 -1
  180. package/dist/server/rpc/handlers/get-model-info.d.ts +1 -1
  181. package/dist/server/rpc/handlers/get-model-info.js +22 -10
  182. package/dist/server/rpc/handlers/index.d.ts +4 -1
  183. package/dist/server/rpc/handlers/index.js +2 -0
  184. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +11 -11
  185. package/dist/server/rpc/handlers/load-model/download-manager.js +36 -26
  186. package/dist/server/rpc/handlers/{load-model.d.ts → load-model/handler.d.ts} +2 -2
  187. package/dist/server/rpc/handlers/load-model/handler.js +179 -0
  188. package/dist/server/rpc/handlers/load-model/http.js +342 -33
  189. package/dist/server/rpc/handlers/load-model/hyperdrive.js +5 -3
  190. package/dist/server/rpc/handlers/load-model/index.d.ts +2 -2
  191. package/dist/server/rpc/handlers/load-model/index.js +2 -2
  192. package/dist/server/rpc/handlers/load-model/resolve.js +32 -3
  193. package/dist/server/rpc/handlers/load-model-delegated.js +6 -3
  194. package/dist/server/rpc/handlers/ocr-stream.d.ts +3 -0
  195. package/dist/server/rpc/handlers/ocr-stream.js +39 -0
  196. package/dist/server/rpc/handlers/rag.d.ts +2 -2
  197. package/dist/server/rpc/handlers/rag.js +107 -43
  198. package/dist/server/rpc/handlers/text-to-speech.js +1 -1
  199. package/dist/server/rpc/handlers/transcribe-stream.js +1 -1
  200. package/dist/server/rpc/handlers/translate.js +6 -15
  201. package/dist/server/utils/archive.d.ts +3 -0
  202. package/dist/server/utils/archive.js +171 -0
  203. package/dist/server/utils/audio/decoder.js +2 -2
  204. package/dist/server/utils/cache.d.ts +5 -5
  205. package/dist/server/utils/cache.js +6 -6
  206. package/dist/server/utils/config-transform.d.ts +2 -2
  207. package/dist/server/utils/config-transform.js +8 -6
  208. package/dist/server/utils/formatting.d.ts +13 -0
  209. package/dist/server/utils/formatting.js +26 -0
  210. package/dist/server/utils/gguf-tensor-extractor.d.ts +15 -0
  211. package/dist/server/utils/gguf-tensor-extractor.js +314 -0
  212. package/dist/server/utils/index.d.ts +3 -1
  213. package/dist/server/utils/index.js +3 -1
  214. package/dist/server/utils/shard-utils.d.ts +42 -16
  215. package/dist/server/utils/shard-utils.js +95 -7
  216. package/dist/server/worker.js +8 -3
  217. package/dist/utils/errors-base.d.ts +1 -1
  218. package/dist/utils/errors-base.js +2 -2
  219. package/dist/utils/errors-client.d.ts +12 -0
  220. package/dist/utils/errors-client.js +20 -0
  221. package/dist/utils/errors-server.d.ts +33 -0
  222. package/dist/utils/errors-server.js +55 -0
  223. package/package.json +42 -17
  224. package/dist/client/rpc/bare-rpc-client.d.ts +0 -4
  225. package/dist/client/rpc/bare-rpc-client.js +0 -94
  226. package/dist/examples/config/config-path.d.ts +0 -8
  227. package/dist/examples/config/config-path.js +0 -13
  228. package/dist/examples/rag/rag-hyperdb-workspaces.d.ts +0 -2
  229. package/dist/examples/rag/rag-hyperdb-workspaces.js +0 -106
  230. package/dist/examples/rag/rag-hyperdb.d.ts +0 -2
  231. package/dist/server/bare/addons/llamacpp/index.d.ts +0 -4
  232. package/dist/server/bare/addons/llamacpp/index.js +0 -3
  233. package/dist/server/bare/rag-hyperdb/rag-manager.d.ts +0 -5
  234. package/dist/server/bare/rag-hyperdb/rag-manager.js +0 -66
  235. package/dist/server/rpc/handlers/load-model.js +0 -111
  236. package/dist/server/utils/hash.d.ts +0 -5
  237. package/dist/server/utils/hash.js +0 -11
  238. package/dist/utils/getProcessSafe.d.ts +0 -7
  239. package/dist/utils/getProcessSafe.js +0 -17
  240. package/dist/utils/runtime.d.ts +0 -30
  241. package/dist/utils/runtime.js +0 -48
  242. /package/dist/server/bare/addons/{llamacpp → llamacpp-completion}/handlers/completion-stream.d.ts +0 -0
  243. /package/dist/server/bare/addons/{llamacpp → llamacpp-embedding}/handlers/embed.d.ts +0 -0
  244. /package/dist/server/bare/addons/{llamacpp → llamacpp-embedding}/handlers/embed.js +0 -0
  245. /package/dist/server/bare/addons/{translation → nmtcpp-translation}/create-model.d.ts +0 -0
  246. /package/dist/server/bare/addons/{translation → nmtcpp-translation}/handlers/translate.d.ts +0 -0
  247. /package/dist/server/bare/addons/{translation → nmtcpp-translation}/index.d.ts +0 -0
  248. /package/dist/server/bare/addons/{translation → nmtcpp-translation}/index.js +0 -0
  249. /package/dist/server/bare/addons/{tts → onnx-tts}/create-model.d.ts +0 -0
  250. /package/dist/server/bare/addons/{tts → onnx-tts}/create-model.js +0 -0
  251. /package/dist/server/bare/addons/{tts → onnx-tts}/handlers/text-to-speech.d.ts +0 -0
  252. /package/dist/server/bare/addons/{tts → onnx-tts}/handlers/text-to-speech.js +0 -0
  253. /package/dist/server/bare/addons/{tts → onnx-tts}/index.d.ts +0 -0
  254. /package/dist/server/bare/addons/{tts → onnx-tts}/index.js +0 -0
  255. /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/create-model.d.ts +0 -0
  256. /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/handlers/transcribe-stream.d.ts +0 -0
  257. /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/handlers/transcribe-stream.js +0 -0
  258. /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/index.d.ts +0 -0
  259. /package/dist/server/bare/addons/{whispercpp → whispercpp-transcription}/index.js +0 -0
@@ -24,12 +24,9 @@ function withMobileBundle(config) {
24
24
  throw new WorkerFileNotFoundError(workerPath);
25
25
  }
26
26
  try {
27
- // Truncate incompatible RPC clients for mobile (keep only rpc-client.js and expo-rpc-client.js)
28
- const rpcClientsToTruncate = [
29
- "node-rpc-client.js",
30
- "bare-rpc-client.js",
31
- "bare-client.js",
32
- ];
27
+ // Truncate incompatible RPC clients for mobile
28
+ // Keep: rpc-client.js, expo-rpc-client.js, bare-client.js (needed for worker bundle)
29
+ const rpcClientsToTruncate = ["node-rpc-client.js"];
33
30
  const truncatedContent = "// This RPC client is not available in mobile environments";
34
31
  for (const clientFile of rpcClientsToTruncate) {
35
32
  const clientPath = path.join(qvacSdkPath, "dist", "client", "rpc", clientFile);
@@ -38,9 +35,15 @@ function withMobileBundle(config) {
38
35
  console.log(`🔧 QVAC: Truncated ${clientFile} for mobile compatibility`);
39
36
  }
40
37
  }
38
+ // Copy bare imports configuration for bare-pack
39
+ const bareImportsSource = path.join(qvacSdkPath, "bare-imports.json");
40
+ const importsMapPath = path.join(qvacSdkPath, "dist", "imports.json");
41
+ if (fs.existsSync(bareImportsSource)) {
42
+ fs.copyFileSync(bareImportsSource, importsMapPath);
43
+ console.log("🔧 QVAC: Copied bare-imports.json for mobile bundle");
44
+ }
41
45
  // Remove optional modules from the bundle
42
46
  const optionalModules = [
43
- "crypto",
44
47
  "expo-file-system",
45
48
  "react-native-bare-kit",
46
49
  "@qvac/sdk/worker.mobile.bundle",
@@ -48,9 +51,25 @@ function withMobileBundle(config) {
48
51
  const deferFlags = optionalModules
49
52
  .map((mod) => `--defer "${mod}"`)
50
53
  .join(" ");
51
- // Generate the bundle using bun bare-pack with the current project's dependencies
52
- // We use the project root as working directory so bare-pack uses the user's node_modules
53
- execSync(`cd "${projectRoot}" && npx bare-pack --target android-arm64 --target ios-arm64 --target ios-arm64-simulator --linked ${deferFlags} --out "${outputPath}" "${workerPath}"`, { stdio: "inherit", cwd: projectRoot });
54
+ // Detect bare-pack version (v1.x uses --target, v2.x uses --host)
55
+ let platformFlag = "--host";
56
+ try {
57
+ const versionOutput = execSync(`npx bare-pack --version "${workerPath}"`, { cwd: projectRoot, encoding: "utf-8" }).trim();
58
+ const versionMatch = versionOutput.match(/v?(\d+)\./);
59
+ const majorVersion = versionMatch && versionMatch[1] ? parseInt(versionMatch[1], 10) : 2;
60
+ if (majorVersion < 2) {
61
+ platformFlag = "--target";
62
+ }
63
+ }
64
+ catch (error) {
65
+ throw new Error(`Failed to detect bare-pack version. Ensure bare-pack is installed: npm install bare-pack`, { cause: error });
66
+ }
67
+ const platforms = ["android-arm64", "ios-arm64", "ios-arm64-simulator"];
68
+ const platformFlags = platforms
69
+ .map((p) => `${platformFlag} ${p}`)
70
+ .join(" ");
71
+ // Generate the bundle using bare-pack with the current project's dependencies
72
+ execSync(`cd "${projectRoot}" && npx bare-pack ${platformFlags} --linked --imports "${importsMapPath}" ${deferFlags} --out "${outputPath}" "${workerPath}"`, { stdio: "inherit", cwd: projectRoot });
54
73
  console.log("🫡 QVAC: Mobile worker bundle generated successfully");
55
74
  }
56
75
  catch (error) {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- export { completion, deleteCache, loadModel, downloadAsset, ping, startQVACProvider, stopQVACProvider, unloadModel, transcribe, transcribeStream, embed, translate, cancel, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, textToSpeech, getModelInfo, loggingStream, } from "./client/api/index";
1
+ export { completion, deleteCache, loadModel, downloadAsset, ping, startQVACProvider, stopQVACProvider, unloadModel, transcribe, transcribeStream, embed, translate, cancel, ragChunk, ragIngest, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, ragReindex, ragListWorkspaces, ragCloseWorkspace, ragDeleteWorkspace, textToSpeech, getModelInfo, loggingStream, ocr, } from "./client/api/index";
2
2
  export { close } from "./client/index";
3
- export { type ModelProgressUpdate, type LoadModelOptions, type DownloadAssetOptions, type Tool, type ToolCall, type ToolCallWithCall, type ToolCallError, type ToolCallEvent, type CompletionStats, VERBOSITY, type Attachment, type CompletionParams, type RagSearchResult, type RagSaveEmbeddingsResult, SDK_CLIENT_ERROR_CODES, SDK_SERVER_ERROR_CODES, type QvacConfig, type ModelInfo, type GetModelInfoParams, type LoadedInstance, type CacheFileInfo, toolSchema, type McpClient, type McpClientInput, } from "./schemas/index";
3
+ export { type ModelProgressUpdate, type LoadModelOptions, type DownloadAssetOptions, type Tool, type ToolCall, type ToolCallWithCall, type ToolCallError, type ToolCallEvent, type CompletionStats, VERBOSITY, type Attachment, type CompletionParams, type RagSearchResult, type RagSaveEmbeddingsResult, type RagReindexResult, type RagEmbeddedDoc, type RagDoc, type RagWorkspaceInfo, type RagCloseWorkspaceParams, type RagDeleteWorkspaceParams, type RagIngestStage, type RagReindexStage, type RagSaveStage, SDK_CLIENT_ERROR_CODES, SDK_SERVER_ERROR_CODES, type QvacConfig, type ModelInfo, type GetModelInfoParams, type LoadedInstance, type CacheFileInfo, toolSchema, type McpClient, type McpClientInput, type OCRClientParams, type OCRTextBlock, type OCROptions, } from "./schemas/index";
4
4
  export { type ToolInput, type ToolHandler } from "./utils/tool-helpers";
5
+ export { PUBLIC_MODEL_TYPES as MODEL_TYPES } from "./schemas/index";
5
6
  export * from "./models/hyperdrive/index";
6
7
  export { SUPPORTED_AUDIO_FORMATS } from "./constants/audio";
7
8
  export { getLogger, SDK_LOG_ID } from "./logging/index";
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  // Public API exports only
2
- export { completion, deleteCache, loadModel, downloadAsset, ping, startQVACProvider, stopQVACProvider, unloadModel, transcribe, transcribeStream, embed, translate, cancel, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, textToSpeech, getModelInfo, loggingStream, } from "./client/api/index.js";
2
+ export { completion, deleteCache, loadModel, downloadAsset, ping, startQVACProvider, stopQVACProvider, unloadModel, transcribe, transcribeStream, embed, translate, cancel, ragChunk, ragIngest, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, ragReindex, ragListWorkspaces, ragCloseWorkspace, ragDeleteWorkspace, textToSpeech, getModelInfo, loggingStream, ocr, } from "./client/api/index.js";
3
3
  export { close } from "./client/index.js";
4
4
  export { VERBOSITY, SDK_CLIENT_ERROR_CODES, SDK_SERVER_ERROR_CODES, toolSchema, } from "./schemas/index.js";
5
5
  export {} from "./utils/tool-helpers.js";
6
+ // Model types - canonical naming with backward-compatible aliases
7
+ export { PUBLIC_MODEL_TYPES as MODEL_TYPES } from "./schemas/index.js";
6
8
  // Hyperdrive model constants
7
9
  export * from "./models/hyperdrive/index.js";
8
10
  export { SUPPORTED_AUDIO_FORMATS } from "./constants/audio.js";
@@ -7,11 +7,25 @@ const PRIORITY_TO_LEVEL = {
7
7
  3: "debug",
8
8
  4: "debug",
9
9
  };
10
- // Track ALL loggers per namespace: Map<namespace, Set<Logger>>
11
- const addonLoggers = new Map();
12
- // Track modelId → { namespace, logger } for cleanup on unload
13
- const modelLoggers = new Map();
10
+ const ADDON_LOGGERS_KEY = Symbol.for("@qvac/sdk:addon-loggers");
11
+ const MODEL_LOGGERS_KEY = Symbol.for("@qvac/sdk:model-loggers");
12
+ function getAddonLoggers() {
13
+ const global = globalThis;
14
+ if (!global[ADDON_LOGGERS_KEY]) {
15
+ global[ADDON_LOGGERS_KEY] = new Map();
16
+ }
17
+ return global[ADDON_LOGGERS_KEY];
18
+ }
19
+ function getModelLoggers() {
20
+ const global = globalThis;
21
+ if (!global[MODEL_LOGGERS_KEY]) {
22
+ global[MODEL_LOGGERS_KEY] = new Map();
23
+ }
24
+ return global[MODEL_LOGGERS_KEY];
25
+ }
14
26
  export function registerAddonLogger(modelId, namespace, logger) {
27
+ const addonLoggers = getAddonLoggers();
28
+ const modelLoggers = getModelLoggers();
15
29
  if (!addonLoggers.has(namespace)) {
16
30
  addonLoggers.set(namespace, new Set());
17
31
  }
@@ -19,6 +33,8 @@ export function registerAddonLogger(modelId, namespace, logger) {
19
33
  modelLoggers.set(modelId, { namespace, logger });
20
34
  }
21
35
  export function unregisterAddonLogger(modelId) {
36
+ const addonLoggers = getAddonLoggers();
37
+ const modelLoggers = getModelLoggers();
22
38
  const entry = modelLoggers.get(modelId);
23
39
  if (entry) {
24
40
  addonLoggers.get(entry.namespace)?.delete(entry.logger);
@@ -44,7 +60,7 @@ function routeLog(logger, level, message) {
44
60
  }
45
61
  export function createAddonLoggerCallback(namespace) {
46
62
  return (priority, message) => {
47
- const loggers = addonLoggers.get(namespace);
63
+ const loggers = getAddonLoggers().get(namespace);
48
64
  if (!loggers || loggers.size === 0)
49
65
  return;
50
66
  const level = PRIORITY_TO_LEVEL[priority] ?? "debug";
@@ -54,6 +70,6 @@ export function createAddonLoggerCallback(namespace) {
54
70
  };
55
71
  }
56
72
  export function clearAllAddonLoggers() {
57
- addonLoggers.clear();
58
- modelLoggers.clear();
73
+ getAddonLoggers().clear();
74
+ getModelLoggers().clear();
59
75
  }
@@ -36,12 +36,12 @@ export function createBaseLogger(namespace, options, extensions) {
36
36
  const result = transport(level, namespace, message);
37
37
  if (result instanceof Promise) {
38
38
  result.catch((error) => {
39
- console.error(`Transport error in ${namespace}:`, error);
39
+ console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)
40
40
  });
41
41
  }
42
42
  }
43
43
  catch (error) {
44
- console.error(`Transport error in ${namespace}:`, error);
44
+ console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)
45
45
  }
46
46
  }
47
47
  };
@@ -1,13 +1,24 @@
1
1
  import { getLogger } from "./logger.js";
2
2
  const CLIENT_NAMESPACE = "sdk:client";
3
- let cachedLogger = null;
3
+ const CLIENT_LOGGER_KEY = Symbol.for("@qvac/sdk:client-logger");
4
+ function getCachedClientLogger() {
5
+ const global = globalThis;
6
+ return global[CLIENT_LOGGER_KEY] ?? null;
7
+ }
8
+ function setCachedClientLogger(logger) {
9
+ const global = globalThis;
10
+ global[CLIENT_LOGGER_KEY] = logger;
11
+ }
4
12
  export function getClientLogger(options) {
5
- if (!options && cachedLogger) {
6
- return cachedLogger;
13
+ if (!options) {
14
+ const cached = getCachedClientLogger();
15
+ if (cached) {
16
+ return cached;
17
+ }
7
18
  }
8
19
  const logger = getLogger(CLIENT_NAMESPACE, options);
9
20
  if (!options) {
10
- cachedLogger = logger;
21
+ setCachedClientLogger(logger);
11
22
  }
12
23
  return logger;
13
24
  }
@@ -6,4 +6,5 @@ export { getClientLogger } from "./client-logger";
6
6
  export type { Logger, LoggerOptions, LogTransport } from "./types";
7
7
  export { ADDON_NAMESPACES, SDK_LOG_ID, SDK_SERVER_NAMESPACE, type AddonNamespace, } from "./namespaces";
8
8
  export { registerAddonLogger, unregisterAddonLogger, createAddonLoggerCallback, clearAllAddonLoggers, } from "./addon";
9
+ export { summarizeRequest } from "./utils";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -5,3 +5,4 @@ export { getServerLogger } from "./server-logger.js";
5
5
  export { getClientLogger } from "./client-logger.js";
6
6
  export { ADDON_NAMESPACES, SDK_LOG_ID, SDK_SERVER_NAMESPACE, } from "./namespaces.js";
7
7
  export { registerAddonLogger, unregisterAddonLogger, createAddonLoggerCallback, clearAllAddonLoggers, } from "./addon.js";
8
+ export { summarizeRequest } from "./utils.js";
@@ -1,5 +1,13 @@
1
1
  import { safeTransport } from "./transport.js";
2
2
  import { createBaseLogger } from "./base-logger.js";
3
+ const LOGGER_CACHE_KEY = Symbol.for("@qvac/sdk:logger-cache");
4
+ function getLoggerCache() {
5
+ const global = globalThis;
6
+ if (!global[LOGGER_CACHE_KEY]) {
7
+ global[LOGGER_CACHE_KEY] = new Map();
8
+ }
9
+ return global[LOGGER_CACHE_KEY];
10
+ }
3
11
  function createLogger(namespace, options) {
4
12
  const safeOptions = options
5
13
  ? {
@@ -9,17 +17,17 @@ function createLogger(namespace, options) {
9
17
  : undefined;
10
18
  return createBaseLogger(namespace, safeOptions);
11
19
  }
12
- const loggerCache = new Map();
13
20
  export function getLogger(namespace, options) {
21
+ const cache = getLoggerCache();
14
22
  if (!options) {
15
- const cached = loggerCache.get(namespace);
23
+ const cached = cache.get(namespace);
16
24
  if (cached) {
17
25
  return cached;
18
26
  }
19
27
  }
20
28
  const logger = createLogger(namespace, options);
21
29
  if (!options) {
22
- loggerCache.set(namespace, logger);
30
+ cache.set(namespace, logger);
23
31
  }
24
32
  return logger;
25
33
  }
@@ -4,6 +4,7 @@ export declare const ADDON_NAMESPACES: {
4
4
  readonly WHISPERCPP: "whispercpp";
5
5
  readonly TTS: "tts";
6
6
  readonly NMTCPP: "nmtcpp";
7
+ readonly RAG_HYPERDB: "rag:hyperdb";
7
8
  };
8
9
  export type AddonNamespace = (typeof ADDON_NAMESPACES)[keyof typeof ADDON_NAMESPACES];
9
10
  export declare const SDK_LOG_ID = "__sdk__";
@@ -4,6 +4,7 @@ export const ADDON_NAMESPACES = {
4
4
  WHISPERCPP: "whispercpp",
5
5
  TTS: "tts",
6
6
  NMTCPP: "nmtcpp",
7
+ RAG_HYPERDB: "rag:hyperdb",
7
8
  };
8
9
  // Reserved ID for SDK server logs
9
10
  export const SDK_LOG_ID = "__sdk__";
@@ -16,6 +16,11 @@
16
16
  *
17
17
  * NOTE: This is separate from server/bare/registry/logging-stream-registry.ts
18
18
  * which manages RPC subscriptions for streaming logs to connected clients.
19
+ *
20
+ * IMPORTANT: Some bundlers may evaluate the same logical module multiple times with
21
+ * subpath imports like `#rpc`, which can duplicate internal module state.
22
+ * We use globalThis + Symbol.for() to guarantees a single instance across all
23
+ * module evaluations and runtimes.
19
24
  */
20
25
  import type { LogLevel } from "@qvac/logging";
21
26
  import type { Logger } from "./types";
@@ -16,21 +16,33 @@
16
16
  *
17
17
  * NOTE: This is separate from server/bare/registry/logging-stream-registry.ts
18
18
  * which manages RPC subscriptions for streaming logs to connected clients.
19
+ *
20
+ * IMPORTANT: Some bundlers may evaluate the same logical module multiple times with
21
+ * subpath imports like `#rpc`, which can duplicate internal module state.
22
+ * We use globalThis + Symbol.for() to guarantees a single instance across all
23
+ * module evaluations and runtimes.
19
24
  */
20
- const allLoggers = new Set();
25
+ const REGISTRY_KEY = Symbol.for("@qvac/sdk:logger-registry");
26
+ function getRegistry() {
27
+ const global = globalThis;
28
+ if (!global[REGISTRY_KEY]) {
29
+ global[REGISTRY_KEY] = new Set();
30
+ }
31
+ return global[REGISTRY_KEY];
32
+ }
21
33
  export function registerLogger(logger) {
22
- allLoggers.add(logger);
34
+ getRegistry().add(logger);
23
35
  }
24
36
  export function unregisterLogger(logger) {
25
- allLoggers.delete(logger);
37
+ getRegistry().delete(logger);
26
38
  }
27
39
  export function setGlobalLogLevel(level) {
28
- for (const logger of allLoggers) {
40
+ for (const logger of getRegistry()) {
29
41
  logger.setLevel(level);
30
42
  }
31
43
  }
32
44
  export function setGlobalConsoleOutput(enabled) {
33
- for (const logger of allLoggers) {
45
+ for (const logger of getRegistry()) {
34
46
  logger.setConsoleOutput(enabled);
35
47
  }
36
48
  }
@@ -4,12 +4,12 @@ export function safeTransport(transport, namespace) {
4
4
  const result = transport(level, ns, message);
5
5
  if (result instanceof Promise) {
6
6
  result.catch((error) => {
7
- console.error(`Transport error in ${namespace}:`, error);
7
+ console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)
8
8
  });
9
9
  }
10
10
  }
11
11
  catch (error) {
12
- console.error(`Transport error in ${namespace}:`, error);
12
+ console.error(`Transport error in ${namespace}:`, error); // fallback (avoid recursion)
13
13
  }
14
14
  };
15
15
  }
@@ -1,4 +1,6 @@
1
1
  import type { LogLevel } from "@qvac/logging";
2
+ import type { Request } from "../schemas/index";
2
3
  export declare function isLevelEnabled(messageLevel: LogLevel, currentLevel: LogLevel): boolean;
3
4
  export declare function formatArg(arg: unknown): string;
5
+ export declare function summarizeRequest(request: Request): Record<string, unknown>;
4
6
  //# sourceMappingURL=utils.d.ts.map
@@ -45,3 +45,65 @@ export function formatArg(arg) {
45
45
  return "[object]";
46
46
  }
47
47
  }
48
+ export function summarizeRequest(request) {
49
+ const summary = { type: request.type };
50
+ if ("modelId" in request)
51
+ summary["modelId"] = request["modelId"];
52
+ // Only summarize requests with large payloads
53
+ if (request.type === "transcribeStream") {
54
+ const chunk = request["audioChunk"];
55
+ summary["audioChunk"] = `[${chunk.type}: ${chunk.value.length} bytes]`;
56
+ return summary;
57
+ }
58
+ if (request.type === "ocrStream") {
59
+ const img = request["image"];
60
+ summary["image"] = `[${img.type}: ${img.value.length} bytes]`;
61
+ return summary;
62
+ }
63
+ if (request.type === "embed") {
64
+ const text = request["text"];
65
+ if (Array.isArray(text)) {
66
+ const totalLen = text.reduce((sum, t) => sum + t.length, 0);
67
+ summary["text"] = `[${text.length} items, ${totalLen} chars]`;
68
+ }
69
+ else if (text.length > 200) {
70
+ summary["text"] = `[${text.length} chars]`;
71
+ }
72
+ else {
73
+ summary["text"] = text;
74
+ }
75
+ return summary;
76
+ }
77
+ if (request.type === "rag") {
78
+ const op = request["operation"];
79
+ if (op === "ingest" || op === "chunk") {
80
+ summary["operation"] = op;
81
+ if ("workspace" in request)
82
+ summary["workspace"] = request["workspace"];
83
+ const docs = request["documents"];
84
+ if (Array.isArray(docs)) {
85
+ const totalLen = docs.reduce((sum, d) => sum + d.length, 0);
86
+ summary["documents"] = `[${docs.length} docs, ${totalLen} chars]`;
87
+ }
88
+ else if (docs.length > 200) {
89
+ summary["documents"] = `[${docs.length} chars]`;
90
+ }
91
+ else {
92
+ summary["documents"] = docs;
93
+ }
94
+ return summary;
95
+ }
96
+ if (op === "saveEmbeddings") {
97
+ summary["operation"] = op;
98
+ if ("workspace" in request)
99
+ summary["workspace"] = request["workspace"];
100
+ const docs = request["documents"];
101
+ const dims = docs[0]?.embedding?.length ?? 0;
102
+ summary["documents"] =
103
+ `[${docs.length} docs with ${dims}-dim embeddings]`;
104
+ return summary;
105
+ }
106
+ }
107
+ // All other requests - return full request (no large payloads)
108
+ return request;
109
+ }