@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
@@ -74,6 +74,15 @@ export declare class ConfigReloadNotSupportedError extends QvacErrorBase {
74
74
  export declare class ModelTypeMismatchError extends QvacErrorBase {
75
75
  constructor(expectedType: string, providedType: string, cause?: unknown);
76
76
  }
77
+ export declare class OCRFailedError extends QvacErrorBase {
78
+ constructor(details?: string, cause?: unknown);
79
+ }
80
+ export declare class ImageFileNotFoundError extends QvacErrorBase {
81
+ constructor(filePath: string, cause?: unknown);
82
+ }
83
+ export declare class InvalidImageInputError extends QvacErrorBase {
84
+ constructor(cause?: unknown);
85
+ }
77
86
  export declare class RAGSaveFailedError extends QvacErrorBase {
78
87
  constructor(details?: string, cause?: unknown);
79
88
  }
@@ -119,6 +128,21 @@ export declare class SeedingNotSupportedError extends QvacErrorBase {
119
128
  export declare class HyperdriveDownloadFailedError extends QvacErrorBase {
120
129
  constructor(details: string, cause?: unknown);
121
130
  }
131
+ export declare class InvalidShardUrlPatternError extends QvacErrorBase {
132
+ constructor(url: string, cause?: unknown);
133
+ }
134
+ export declare class ArchiveExtractionFailedError extends QvacErrorBase {
135
+ constructor(archivePath: string, cause?: unknown);
136
+ }
137
+ export declare class ArchiveUnsupportedTypeError extends QvacErrorBase {
138
+ constructor(archivePath: string, cause?: unknown);
139
+ }
140
+ export declare class ArchiveMissingShardsError extends QvacErrorBase {
141
+ constructor(missingFile: string, cause?: unknown);
142
+ }
143
+ export declare class PartialDownloadOfflineError extends QvacErrorBase {
144
+ constructor(url: string, downloadedBytes: number, cause?: unknown);
145
+ }
122
146
  export declare class DeleteCacheFailedError extends QvacErrorBase {
123
147
  constructor(details?: string, cause?: unknown);
124
148
  }
@@ -146,6 +170,15 @@ export declare class InvalidAudioChunkError extends QvacErrorBase {
146
170
  export declare class RAGWorkspaceModelMismatchError extends QvacErrorBase {
147
171
  constructor(workspace: string, existingModelId: string, newModelId: string, cause?: unknown);
148
172
  }
173
+ export declare class RAGWorkspaceNotFoundError extends QvacErrorBase {
174
+ constructor(workspace: string, cause?: unknown);
175
+ }
176
+ export declare class RAGWorkspaceInUseError extends QvacErrorBase {
177
+ constructor(workspace: string, cause?: unknown);
178
+ }
179
+ export declare class RAGWorkspaceNotOpenError extends QvacErrorBase {
180
+ constructor(workspace: string, cause?: unknown);
181
+ }
149
182
  export declare class DelegateNoFinalResponseError extends QvacErrorBase {
150
183
  constructor(cause?: unknown);
151
184
  }
@@ -130,6 +130,21 @@ export class ModelTypeMismatchError extends QvacErrorBase {
130
130
  super(createErrorOptions(SDK_SERVER_ERROR_CODES.MODEL_TYPE_MISMATCH, [expectedType, providedType], cause));
131
131
  }
132
132
  }
133
+ export class OCRFailedError extends QvacErrorBase {
134
+ constructor(details, cause) {
135
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.OCR_FAILED, details ? [details] : undefined, cause));
136
+ }
137
+ }
138
+ export class ImageFileNotFoundError extends QvacErrorBase {
139
+ constructor(filePath, cause) {
140
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.IMAGE_FILE_NOT_FOUND, [filePath], cause));
141
+ }
142
+ }
143
+ export class InvalidImageInputError extends QvacErrorBase {
144
+ constructor(cause) {
145
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_IMAGE_INPUT, undefined, cause));
146
+ }
147
+ }
133
148
  // ============== RAG Operation Errors ==============
134
149
  export class RAGSaveFailedError extends QvacErrorBase {
135
150
  constructor(details, cause) {
@@ -207,6 +222,31 @@ export class HyperdriveDownloadFailedError extends QvacErrorBase {
207
222
  super(createErrorOptions(SDK_SERVER_ERROR_CODES.HYPERDRIVE_DOWNLOAD_FAILED, [details], cause));
208
223
  }
209
224
  }
225
+ export class InvalidShardUrlPatternError extends QvacErrorBase {
226
+ constructor(url, cause) {
227
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.INVALID_SHARD_URL_PATTERN, [url], cause));
228
+ }
229
+ }
230
+ export class ArchiveExtractionFailedError extends QvacErrorBase {
231
+ constructor(archivePath, cause) {
232
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_EXTRACTION_FAILED, [archivePath], cause));
233
+ }
234
+ }
235
+ export class ArchiveUnsupportedTypeError extends QvacErrorBase {
236
+ constructor(archivePath, cause) {
237
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_UNSUPPORTED_TYPE, [archivePath], cause));
238
+ }
239
+ }
240
+ export class ArchiveMissingShardsError extends QvacErrorBase {
241
+ constructor(missingFile, cause) {
242
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.ARCHIVE_MISSING_SHARDS, [missingFile], cause));
243
+ }
244
+ }
245
+ export class PartialDownloadOfflineError extends QvacErrorBase {
246
+ constructor(url, downloadedBytes, cause) {
247
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.PARTIAL_DOWNLOAD_OFFLINE, [url, String(downloadedBytes)], cause));
248
+ }
249
+ }
210
250
  // ============== Cache Operation Errors ==============
211
251
  export class DeleteCacheFailedError extends QvacErrorBase {
212
252
  constructor(details, cause) {
@@ -256,6 +296,21 @@ export class RAGWorkspaceModelMismatchError extends QvacErrorBase {
256
296
  super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_MODEL_MISMATCH, [workspace, existingModelId, newModelId], cause));
257
297
  }
258
298
  }
299
+ export class RAGWorkspaceNotFoundError extends QvacErrorBase {
300
+ constructor(workspace, cause) {
301
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_FOUND, [workspace], cause));
302
+ }
303
+ }
304
+ export class RAGWorkspaceInUseError extends QvacErrorBase {
305
+ constructor(workspace, cause) {
306
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_IN_USE, [workspace], cause));
307
+ }
308
+ }
309
+ export class RAGWorkspaceNotOpenError extends QvacErrorBase {
310
+ constructor(workspace, cause) {
311
+ super(createErrorOptions(SDK_SERVER_ERROR_CODES.RAG_WORKSPACE_NOT_OPEN, [workspace], cause));
312
+ }
313
+ }
259
314
  // ============== RPC/Delegation Errors (Server-side) ==============
260
315
  export class DelegateNoFinalResponseError extends QvacErrorBase {
261
316
  constructor(cause) {
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@qvac/sdk",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
+ "license": "Apache-2.0",
4
5
  "type": "module",
5
6
  "main": "./dist/index.js",
6
7
  "types": "./dist/index.d.ts",
@@ -16,7 +17,15 @@
16
17
  "require": "./dist/server/worker.js"
17
18
  },
18
19
  "./expo-plugin": "./dist/expo/plugins/index.js",
19
- "./worker.mobile.bundle": "./dist/worker.mobile.bundle.js"
20
+ "./worker.mobile.bundle": "./dist/worker.mobile.bundle.js",
21
+ "./models": "./dist/models/hyperdrive/models.js"
22
+ },
23
+ "imports": {
24
+ "#rpc": {
25
+ "react-native": "./dist/client/rpc/expo-rpc-client.js",
26
+ "bare": "./dist/client/rpc/bare-client.js",
27
+ "default": "./dist/client/rpc/node-rpc-client.js"
28
+ }
20
29
  },
21
30
  "expo": {
22
31
  "plugins": [
@@ -24,6 +33,7 @@
24
33
  ]
25
34
  },
26
35
  "files": [
36
+ "bare-imports.json",
27
37
  "dist/**/*",
28
38
  "!dist/**/*.map",
29
39
  "!**/package-lock.json",
@@ -32,6 +42,7 @@
32
42
  "!**/bun.lock"
33
43
  ],
34
44
  "scripts": {
45
+ "test:unit": "bun run scripts/run-unit-tests.ts",
35
46
  "lint": "eslint . --max-warnings=0 && bun run typecheck",
36
47
  "typecheck": "tsc --noEmit -p tsconfig.json",
37
48
  "lint:fix": "eslint . --fix",
@@ -46,30 +57,32 @@
46
57
  "bare:ensureprebuilds:embeddings": "cp -r node_modules/@qvac/embed-llamacpp/prebuilds/android-arm64 node_modules/@qvac/embed-llamacpp/prebuilds/android-ia32 && cp -r node_modules/@qvac/embed-llamacpp/prebuilds/android-arm64 node_modules/@qvac/embed-llamacpp/prebuilds/android-arm && cp -r node_modules/@qvac/embed-llamacpp/prebuilds/android-arm64 node_modules/@qvac/embed-llamacpp/prebuilds/android-x64",
47
58
  "bare:ensureprebuilds": "bun run bare:ensureprebuilds:llamacpp && bun run bare:ensureprebuilds:whispercpp && bun run bare:ensureprebuilds:embeddings",
48
59
  "prepare:husky": "bun run husky",
49
- "bare:example": "./scripts/run-with-bare.sh",
60
+ "bare:example": "bare ./scripts/bare-bootstrap.js",
50
61
  "docs_api:website": "typedoc --out ./docs/api/website --entryPoints index.ts --entryPointStrategy expand --readme none",
51
62
  "docs_api:markdown": "typedoc --plugin typedoc-plugin-markdown --out ./docs/api/markdown --entryPoints index.ts --entryPointStrategy expand --readme none && sed -i '1,4d' ./docs/api/markdown/README.md",
52
63
  "docs_api": "bun run docs_api:website && bun run docs_api:markdown",
53
64
  "check-models": "node ./scripts/update-models.js --check",
54
65
  "check-models:hook": "node ./scripts/update-models.js --check --non-blocking",
55
66
  "update-models": "node ./scripts/update-models.js",
56
- "changelog:generate": "node ./scripts/changelog-generate.cjs && prettier --write changelog",
67
+ "changelog:generate": "node ../../scripts/sdk/generate-changelog-sdk-pod.cjs --package=qvac-sdk && prettier --write changelog",
57
68
  "docs:gen-pages": "remark \"docs/*.mdx\" --output .docs-build",
58
69
  "docs:gen-api": "typedoc --options docs/typedoc.jsonc"
59
70
  },
60
71
  "dependencies": {
61
- "@qvac/decoder-audio": "^0.3.0",
62
- "@qvac/dl-filesystem": "^0.1.2",
63
- "@qvac/embed-llamacpp": "^0.7.5",
64
- "@qvac/error": "^0.1.0",
72
+ "@qvac/decoder-audio": "^0.3.3",
73
+ "@qvac/dl-filesystem": "^0.2.0",
74
+ "@qvac/embed-llamacpp": "^0.10.7",
75
+ "@qvac/error": "^0.1.1",
65
76
  "@qvac/langdetect-text": "^0.1.0",
66
- "@qvac/llm-llamacpp": "^0.5.6",
77
+ "@qvac/llm-llamacpp": "^0.8.9",
67
78
  "@qvac/logging": "^0.1.0",
68
- "@qvac/rag": "^0.2.1",
69
- "@qvac/transcription-whispercpp": "^0.3.8",
70
- "@qvac/translation-nmtcpp": "^0.1.13",
71
- "@qvac/tts-onnx": "^0.2.8",
79
+ "@qvac/ocr-onnx": "^0.1.5",
80
+ "@qvac/rag": "^0.4.2",
81
+ "@qvac/transcription-whispercpp": "^0.3.17",
82
+ "@qvac/translation-nmtcpp": "^0.3.6",
83
+ "@qvac/tts-onnx": "^0.2.13",
72
84
  "fast-safe-stringify": "2.1.1",
85
+ "which-runtime": "^1.3.2",
73
86
  "zod": "^4.0.17"
74
87
  },
75
88
  "devDependencies": {
@@ -79,20 +92,23 @@
79
92
  "@modelcontextprotocol/sdk": "^1.12.1",
80
93
  "@sqliteai/sqlite-wasm": "3.50.4-sync.0.8.30-vector.0.9.23",
81
94
  "@types/node": "^24.2.1",
95
+ "@types/tar-stream": "^3.1.4",
82
96
  "bare-pack": "^1.5.1",
83
97
  "bare-readline": "^1.2.0",
98
+ "brittle": "^3.19.1",
84
99
  "chromadb": "^3.0.14",
85
100
  "eslint": "^9.33.0",
86
101
  "eslint-import-resolver-typescript": "^4.4.4",
87
102
  "eslint-plugin-import": "^2.30.0",
88
103
  "eslint-plugin-react": "^7.37.5",
89
104
  "expo": "^54.0.0",
105
+ "expo-device": "^8.0.0",
90
106
  "expo-file-system": "^19.0.15",
91
107
  "globals": "^16.3.0",
92
108
  "husky": "^9.1.7",
93
109
  "hyperdb": "^4.16.1",
94
110
  "prettier": "^3.6.2",
95
- "react-native-bare-kit": "^0.11.4",
111
+ "react-native-bare-kit": "^0.11.5",
96
112
  "remark-cli": "^12.0.1",
97
113
  "remark-code-import": "^1.2.0",
98
114
  "remark-frontmatter": "^5.0.0",
@@ -122,19 +138,25 @@
122
138
  "bare-runtime": "^1.24.2",
123
139
  "bare-stream": "^2.7.0",
124
140
  "bare-subprocess": "^5.2.1",
141
+ "bare-zlib": "^1.3.1",
125
142
  "corestore": "^7.4.5",
126
143
  "events": "^3.3.0",
144
+ "expo-device": "^8.0.0",
127
145
  "expo-file-system": "^19.0.15",
128
146
  "hyperdb": "^4.19.0",
129
147
  "hyperdrive": "^13.0.1",
130
148
  "hyperswarm": "^4.12.1",
131
149
  "llm-splitter": "~0.2.0",
132
- "react-native-bare-kit": "^0.11.4"
150
+ "react-native-bare-kit": "^0.11.5",
151
+ "tar-stream": "^3.1.7"
133
152
  },
134
153
  "peerDependenciesMeta": {
135
154
  "@modelcontextprotocol/sdk": {
136
155
  "optional": true
137
156
  },
157
+ "expo-device": {
158
+ "optional": true
159
+ },
138
160
  "expo-file-system": {
139
161
  "optional": true
140
162
  },
@@ -142,5 +164,8 @@
142
164
  "optional": true
143
165
  }
144
166
  },
145
- "patchedDependencies": {}
146
- }
167
+ "patchedDependencies": {},
168
+ "overrides": {
169
+ "@qvac/dl-hyperdrive": "^0.2.0"
170
+ }
171
+ }
@@ -1,4 +0,0 @@
1
- import RPC from "bare-rpc";
2
- export declare function getRPC(): Promise<RPC>;
3
- export declare function cleanup(): void;
4
- //# sourceMappingURL=bare-rpc-client.d.ts.map
@@ -1,94 +0,0 @@
1
- import RPC from "bare-rpc";
2
- import { spawn } from "bare-subprocess";
3
- import { createServer } from "bare-net";
4
- import os from "bare-os";
5
- import path from "bare-path";
6
- import process from "bare-process";
7
- import { initializeConfig } from "../init-hooks.js";
8
- import { resolveConfig } from "../config-loader/resolve-config.bare.js";
9
- import { getClientLogger } from "../../logging/index.js";
10
- const logger = getClientLogger();
11
- let rpcInstance = null;
12
- let ipcServer = null;
13
- let childProcess = null;
14
- const cwd = process.cwd();
15
- // Resolve worker path relative to this module's location (in the SDK)
16
- // In Bare, we'll use a simpler path resolution
17
- let WORKER_PATH;
18
- if (cwd.includes("/dist/") || cwd.includes("\\dist\\")) {
19
- // Running from compiled dist/ - worker is in same dist/ folder
20
- const distRoot = cwd.includes("/dist/")
21
- ? cwd.split("/dist/")[0] + "/dist"
22
- : cwd.split("\\dist\\")[0] + "\\dist";
23
- WORKER_PATH = path.join(distRoot, "server/worker.js");
24
- }
25
- else {
26
- // Running from source - worker is in dist/ folder
27
- WORKER_PATH = path.resolve(cwd, "dist/server/worker.js");
28
- }
29
- const SOCKET_PATH = path.join(os.tmpdir(), `qvac-worker-${process.pid}.sock`);
30
- export async function getRPC() {
31
- if (rpcInstance) {
32
- logger.debug("returning cached bare rpc");
33
- return rpcInstance;
34
- }
35
- logger.info("initRPC for bare runtime with socket:", SOCKET_PATH);
36
- // Start IPC server (Unix socket)
37
- const serverPromise = new Promise((resolve, reject) => {
38
- const server = createServer((socket) => {
39
- logger.info("Worker connected via IPC socket");
40
- // Create RPC instance using the socket
41
- rpcInstance = new RPC(socket, () => {
42
- // Use this for async callbacks
43
- });
44
- resolve(rpcInstance);
45
- });
46
- server.on("error", (err) => {
47
- logger.error("Failed to start IPC server:", err);
48
- reject(err);
49
- });
50
- server.listen(SOCKET_PATH, () => {
51
- logger.info(`IPC server listening on ${SOCKET_PATH}`);
52
- ipcServer = server;
53
- // Spawn the worker process only after the socket is listening
54
- logger.debug("Spawning worker at:", WORKER_PATH);
55
- childProcess = spawn("bare", [
56
- WORKER_PATH,
57
- JSON.stringify({
58
- QVAC_IPC_SOCKET_PATH: SOCKET_PATH,
59
- HOME_DIR: os.homedir(),
60
- }),
61
- ], {
62
- stdio: ["inherit", "inherit", "inherit"],
63
- });
64
- childProcess.on("exit", (code) => {
65
- logger.info("Worker process exited with code:", code);
66
- // Clean up
67
- rpcInstance = null;
68
- if (ipcServer) {
69
- ipcServer.close();
70
- ipcServer = null;
71
- }
72
- });
73
- childProcess.on("error", (err) => {
74
- logger.error("Worker process error:", err);
75
- });
76
- });
77
- });
78
- // Wait for RPC to initialize, then send config
79
- const rpc = await serverPromise;
80
- await initializeConfig(rpc, resolveConfig);
81
- return rpc;
82
- }
83
- // Clean up function
84
- export function cleanup() {
85
- if (childProcess) {
86
- childProcess.kill();
87
- childProcess = null;
88
- }
89
- if (ipcServer) {
90
- ipcServer.close();
91
- ipcServer = null;
92
- }
93
- rpcInstance = null;
94
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Helper to get the config file path for examples.
3
- *
4
- * Note: This is Node.js-only (uses 'url' and 'path' modules).
5
- * For Bare runtime, place your config file in the project root and let the SDK auto-discover it.
6
- */
7
- export declare function getConfigPath(importMetaUrl: string, configFileName: string): string;
8
- //# sourceMappingURL=config-path.d.ts.map
@@ -1,13 +0,0 @@
1
- import { fileURLToPath } from "url";
2
- import { dirname, join } from "path";
3
- /**
4
- * Helper to get the config file path for examples.
5
- *
6
- * Note: This is Node.js-only (uses 'url' and 'path' modules).
7
- * For Bare runtime, place your config file in the project root and let the SDK auto-discover it.
8
- */
9
- export function getConfigPath(importMetaUrl, configFileName) {
10
- const __filename = fileURLToPath(importMetaUrl);
11
- const __dirname = dirname(__filename);
12
- return join(__dirname, "config", configFileName);
13
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=rag-hyperdb-workspaces.d.ts.map
@@ -1,106 +0,0 @@
1
- import { loadModel, unloadModel, GTE_LARGE_FP16, ragSaveEmbeddings, ragSearch, ragDeleteEmbeddings, } from "@qvac/sdk";
2
- try {
3
- console.log("🚀 RAG Workspaces with Chunking Example\n");
4
- // Load model
5
- const modelId = await loadModel({
6
- modelSrc: GTE_LARGE_FP16,
7
- modelType: "embeddings",
8
- onProgress: (p) => process.stdout.write(`\rLoading: ${Math.round(p.percentage * 100)}%`),
9
- });
10
- console.log("\n");
11
- // Medical article (will be chunked)
12
- const medicalArticle = `
13
- COVID-19: A Comprehensive Overview
14
-
15
- COVID-19 is a respiratory illness caused by the SARS-CoV-2 virus, first identified in December 2019
16
- in Wuhan, China. The virus spreads primarily through respiratory droplets when an infected person
17
- coughs, sneezes, or talks.
18
-
19
- Common symptoms include fever, cough, fatigue, and loss of taste or smell. Some patients may
20
- experience shortness of breath, muscle aches, sore throat, and headaches. Symptoms typically
21
- appear 2-14 days after exposure to the virus.
22
-
23
- Vaccines have been developed using various technologies including mRNA, viral vector, and
24
- inactivated virus approaches. These vaccines have proven effective in preventing severe illness,
25
- hospitalization, and death. Booster doses are recommended to maintain immunity.
26
-
27
- Treatment options vary based on severity. Mild cases often require only supportive care including
28
- rest and hydration. Severe cases may require hospitalization, oxygen therapy, and antiviral
29
- medications such as remdesivir or Paxlovid.
30
- `;
31
- // Tech documents (shorter, won't be chunked)
32
- const techDocs = [
33
- "Artificial intelligence is transforming industries through automation and advanced data analysis capabilities.",
34
- "Deep learning neural networks enable breakthroughs in computer vision and natural language processing.",
35
- ];
36
- // Save medical article with chunking
37
- console.log("📚 Saving medical article with chunking...");
38
- const medicalResult = await ragSaveEmbeddings({
39
- modelId,
40
- workspace: "medical",
41
- documents: medicalArticle,
42
- chunk: true,
43
- chunkOpts: {
44
- chunkSize: 100,
45
- chunkOverlap: 10,
46
- chunkStrategy: "paragraph",
47
- splitStrategy: "token",
48
- },
49
- });
50
- console.log(`✅ Created ${medicalResult.processed.length} chunks from medical article`);
51
- // Save tech docs without chunking
52
- console.log("\n📚 Saving tech documents...");
53
- const techResult = await ragSaveEmbeddings({
54
- modelId,
55
- workspace: "technology",
56
- documents: techDocs,
57
- chunk: false,
58
- });
59
- console.log(`✅ Saved ${techResult.processed.length} tech documents`);
60
- // Test searches
61
- const searches = [
62
- { workspace: "medical", query: "COVID symptoms fever", label: "Medical" },
63
- { workspace: "medical", query: "vaccine technology", label: "Medical" },
64
- { workspace: "technology", query: "neural networks", label: "Tech" },
65
- { workspace: "technology", query: "COVID", label: "Tech (isolation test)" },
66
- ];
67
- console.log("\n🔍 Running searches:");
68
- for (const { workspace, query, label } of searches) {
69
- const results = await ragSearch({ modelId, workspace, query, topK: 1 });
70
- console.log(`\n${label}: "${query}"`);
71
- if (results.length > 0 && results[0]) {
72
- console.log(` ✓ Score: ${results[0].score.toFixed(3)}`);
73
- console.log(` ✓ Match: ${results[0].content.substring(0, 80)}...`);
74
- }
75
- else {
76
- console.log(` ✗ No results (workspace isolation working correctly)`);
77
- }
78
- }
79
- // Test default workspace
80
- console.log("\n📁 Testing default workspace...");
81
- await ragSaveEmbeddings({
82
- modelId,
83
- documents: ["Default workspace content for testing"],
84
- chunk: false,
85
- });
86
- const defaultSearch = await ragSearch({
87
- modelId,
88
- query: "default workspace",
89
- });
90
- console.log(`Default workspace: ${defaultSearch?.[0]?.content === "Default workspace content for testing" ? "✅ Working" : "❌ Failed"}`);
91
- // Cleanup example
92
- const firstChunk = medicalResult.processed.find((p) => p.status === "fulfilled" && p.id);
93
- if (firstChunk?.id) {
94
- await ragDeleteEmbeddings({
95
- modelId,
96
- workspace: "medical",
97
- ids: [firstChunk.id],
98
- });
99
- console.log("\n🗑️ Deleted one medical chunk");
100
- }
101
- await unloadModel({ modelId });
102
- }
103
- catch (error) {
104
- console.error("❌ Error:", error);
105
- process.exit(1);
106
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=rag-hyperdb.d.ts.map
@@ -1,4 +0,0 @@
1
- export { completion } from "./handlers/completion-stream";
2
- export { embed } from "./handlers/embed";
3
- export { createLlmModel, createEmbeddingsModel } from "./create-model";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +0,0 @@
1
- export { completion } from "./handlers/completion-stream.js";
2
- export { embed } from "./handlers/embed.js";
3
- export { createLlmModel, createEmbeddingsModel } from "./create-model.js";
@@ -1,5 +0,0 @@
1
- import { RAG, type EmbeddingFunction } from "@qvac/rag";
2
- export declare const getRagInstance: (modelId: string, embeddingFunction: EmbeddingFunction, workspace?: string) => Promise<RAG>;
3
- export declare const closeRagInstance: (workspace?: string) => Promise<void>;
4
- export declare const closeAllRagInstances: () => Promise<void>;
5
- //# sourceMappingURL=rag-manager.d.ts.map
@@ -1,66 +0,0 @@
1
- import { RAG, HyperDBAdapter } from "@qvac/rag";
2
- import Corestore from "corestore";
3
- import path from "bare-path";
4
- import { getEnv } from "../../worker.js";
5
- import { RAGWorkspaceModelMismatchError } from "../../../utils/errors-server.js";
6
- import { getServerLogger } from "../../../logging/index.js";
7
- const logger = getServerLogger();
8
- const ragInstances = new Map();
9
- const defaultWorkspace = "default";
10
- const getStorePath = (workspace) => {
11
- const homeDir = getEnv().HOME_DIR;
12
- return path.join(homeDir, ".qvac", "rag-hyperdb", workspace);
13
- };
14
- export const getRagInstance = async (modelId, embeddingFunction, workspace) => {
15
- const key = workspace ?? defaultWorkspace;
16
- const existingEntry = ragInstances.get(key);
17
- if (existingEntry) {
18
- // Validate model consistency
19
- if (existingEntry.modelId !== modelId) {
20
- throw new RAGWorkspaceModelMismatchError(key, existingEntry.modelId, modelId);
21
- }
22
- return existingEntry.rag;
23
- }
24
- // Create new instance for this workspace
25
- const storePath = getStorePath(key);
26
- const corestore = new Corestore(storePath);
27
- // Create HyperDB adapter
28
- const hyperdbAdapter = new HyperDBAdapter({
29
- store: corestore,
30
- });
31
- const rag = new RAG({
32
- dbAdapter: hyperdbAdapter,
33
- embeddingFunction,
34
- });
35
- await rag.ready();
36
- ragInstances.set(key, {
37
- rag,
38
- corestore,
39
- modelId,
40
- });
41
- return rag;
42
- };
43
- export const closeRagInstance = async (workspace) => {
44
- const key = workspace ?? defaultWorkspace;
45
- const entry = ragInstances.get(key);
46
- if (entry) {
47
- await entry.rag.close();
48
- ragInstances.delete(key);
49
- }
50
- };
51
- let isCleaningUp = false;
52
- export const closeAllRagInstances = async () => {
53
- if (isCleaningUp)
54
- return;
55
- isCleaningUp = true;
56
- try {
57
- const closures = Array.from(ragInstances.entries()).map(async ([key, entry]) => {
58
- await entry.rag.close();
59
- ragInstances.delete(key);
60
- });
61
- await Promise.all(closures);
62
- }
63
- catch (error) {
64
- logger.error("❌ Error during RAG cleanup:", error);
65
- }
66
- };