@qvac/sdk 0.10.2 → 0.12.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.
Files changed (326) hide show
  1. package/NOTICE +1455 -29
  2. package/README.md +2 -0
  3. package/dist/client/api/cancel.d.ts +24 -32
  4. package/dist/client/api/cancel.js +58 -31
  5. package/dist/client/api/classify.d.ts +23 -0
  6. package/dist/client/api/classify.js +43 -0
  7. package/dist/client/api/client-request-id.d.ts +17 -0
  8. package/dist/client/api/client-request-id.js +27 -0
  9. package/dist/client/api/completion-stream.d.ts +1 -1
  10. package/dist/client/api/completion-stream.js +34 -3
  11. package/dist/client/api/diffusion.d.ts +46 -0
  12. package/dist/client/api/diffusion.js +50 -1
  13. package/dist/client/api/download-asset.d.ts +12 -2
  14. package/dist/client/api/download-asset.js +21 -3
  15. package/dist/client/api/embed.d.ts +8 -4
  16. package/dist/client/api/embed.js +14 -1
  17. package/dist/client/api/get-model-info.d.ts +1 -1
  18. package/dist/client/api/index.d.ts +5 -0
  19. package/dist/client/api/index.js +5 -0
  20. package/dist/client/api/load-model.d.ts +12 -4
  21. package/dist/client/api/load-model.js +49 -2
  22. package/dist/client/api/rag.d.ts +9 -3
  23. package/dist/client/api/rag.js +23 -3
  24. package/dist/client/api/transcribe.d.ts +23 -8
  25. package/dist/client/api/transcribe.js +69 -4
  26. package/dist/client/api/unload-model.d.ts +5 -2
  27. package/dist/client/api/unload-model.js +9 -4
  28. package/dist/client/api/upscale.d.ts +45 -0
  29. package/dist/client/api/upscale.js +99 -0
  30. package/dist/client/api/video.d.ts +64 -0
  31. package/dist/client/api/video.js +147 -0
  32. package/dist/client/api/vla-helpers.d.ts +45 -0
  33. package/dist/client/api/vla-helpers.js +130 -0
  34. package/dist/client/api/vla.d.ts +65 -0
  35. package/dist/client/api/vla.js +109 -0
  36. package/dist/client/config-loader/resolve-config.node.d.ts +16 -0
  37. package/dist/client/config-loader/resolve-config.node.js +77 -23
  38. package/dist/client/plugins-factory.d.ts +8 -0
  39. package/dist/client/plugins-factory.js +10 -0
  40. package/dist/client/rpc/bare-client.js +62 -66
  41. package/dist/client/rpc/ensure-worker-ready.d.ts +9 -0
  42. package/dist/client/rpc/ensure-worker-ready.js +17 -0
  43. package/dist/client/rpc/expo-rpc-client.js +2 -1
  44. package/dist/client/rpc/node-rpc-client.js +22 -8
  45. package/dist/client/rpc/rpc-client.d.ts +2 -2
  46. package/dist/client/rpc/rpc-client.js +10 -4
  47. package/dist/client/rpc/rpc-error.d.ts +9 -0
  48. package/dist/client/rpc/rpc-error.js +105 -0
  49. package/dist/commands/bundle/bare-pack.d.ts +13 -0
  50. package/dist/commands/bundle/bare-pack.js +54 -0
  51. package/dist/commands/bundle/constants.d.ts +7 -0
  52. package/dist/commands/bundle/constants.js +23 -0
  53. package/dist/commands/bundle/entry-gen.d.ts +2 -0
  54. package/dist/commands/bundle/entry-gen.js +48 -0
  55. package/dist/commands/bundle/index.d.ts +20 -0
  56. package/dist/commands/bundle/index.js +141 -0
  57. package/dist/commands/bundle/manifest.d.ts +21 -0
  58. package/dist/commands/bundle/manifest.js +193 -0
  59. package/dist/commands/bundle/plugins.d.ts +9 -0
  60. package/dist/commands/bundle/plugins.js +51 -0
  61. package/dist/commands/index.d.ts +5 -0
  62. package/dist/commands/index.js +2 -0
  63. package/dist/commands/verify/abi.d.ts +52 -0
  64. package/dist/commands/verify/abi.js +125 -0
  65. package/dist/commands/verify/addon-source.d.ts +43 -0
  66. package/dist/commands/verify/addon-source.js +75 -0
  67. package/dist/commands/verify/bundle-source.d.ts +12 -0
  68. package/dist/commands/verify/bundle-source.js +53 -0
  69. package/dist/commands/verify/index.d.ts +59 -0
  70. package/dist/commands/verify/index.js +371 -0
  71. package/dist/commands/verify/node-modules-source.d.ts +11 -0
  72. package/dist/commands/verify/node-modules-source.js +76 -0
  73. package/dist/commands/verify/prebuilds.d.ts +15 -0
  74. package/dist/commands/verify/prebuilds.js +39 -0
  75. package/dist/examples/cancel-by-request-id.d.ts +38 -0
  76. package/dist/examples/cancel-by-request-id.js +103 -0
  77. package/dist/examples/classification/classify-image.d.ts +2 -0
  78. package/dist/examples/classification/classify-image.js +23 -0
  79. package/dist/examples/diffusion-esrgan-upscale.d.ts +2 -0
  80. package/dist/examples/diffusion-esrgan-upscale.js +78 -0
  81. package/dist/examples/diffusion-txt2vid.d.ts +2 -0
  82. package/dist/examples/diffusion-txt2vid.js +81 -0
  83. package/dist/examples/download-with-cancel.js +10 -10
  84. package/dist/examples/embed-multi-gpu.d.ts +2 -0
  85. package/dist/examples/embed-multi-gpu.js +46 -0
  86. package/dist/examples/llamacpp-multi-gpu.d.ts +2 -0
  87. package/dist/examples/llamacpp-multi-gpu.js +57 -0
  88. package/dist/examples/plugins.js +3 -7
  89. package/dist/examples/rag/rag-hyperdb/cancellation.js +20 -17
  90. package/dist/examples/tools/llamacpp-tools-gemma4.d.ts +2 -0
  91. package/dist/examples/tools/llamacpp-tools-gemma4.js +73 -0
  92. package/dist/examples/tools/llamacpp-tools-qwen35.d.ts +2 -0
  93. package/dist/examples/tools/llamacpp-tools-qwen35.js +69 -0
  94. package/dist/examples/transcription/parakeet-ctc-filesystem.js +18 -12
  95. package/dist/examples/transcription/parakeet-microphone-record.js +7 -12
  96. package/dist/examples/transcription/parakeet-microphone-stream.d.ts +2 -0
  97. package/dist/examples/transcription/parakeet-microphone-stream.js +79 -0
  98. package/dist/examples/transcription/parakeet-sortformer-streaming.d.ts +2 -0
  99. package/dist/examples/transcription/parakeet-sortformer-streaming.js +121 -0
  100. package/dist/examples/transcription/parakeet-sortformer.js +58 -55
  101. package/dist/examples/transcription/parakeet-tdt-filesystem.js +18 -15
  102. package/dist/examples/transcription/whispercpp-microphone-conversation.d.ts +2 -0
  103. package/dist/examples/transcription/whispercpp-microphone-conversation.js +107 -0
  104. package/dist/examples/tts/chatterbox.js +7 -16
  105. package/dist/examples/tts/llm-to-tts-streaming.js +3 -10
  106. package/dist/examples/tts/supertonic-multilingual.js +4 -12
  107. package/dist/examples/tts/supertonic.js +5 -12
  108. package/dist/examples/vla-smolvla.d.ts +2 -0
  109. package/dist/examples/vla-smolvla.js +75 -0
  110. package/dist/examples/voice-assistant/voice-assistant.js +3 -10
  111. package/dist/expo/plugins/find-in-ancestor-node-modules.d.ts +14 -0
  112. package/dist/expo/plugins/find-in-ancestor-node-modules.js +24 -0
  113. package/dist/expo/plugins/get-project-root.d.ts +22 -0
  114. package/dist/expo/plugins/get-project-root.js +23 -0
  115. package/dist/expo/plugins/index.d.ts +4 -0
  116. package/dist/expo/plugins/index.js +4 -0
  117. package/dist/expo/plugins/resolve-sdk-package-dir.d.ts +9 -2
  118. package/dist/expo/plugins/resolve-sdk-package-dir.js +38 -11
  119. package/dist/expo/plugins/withDeviceInfo.js +2 -1
  120. package/dist/expo/plugins/withMobileBundle.d.ts +5 -4
  121. package/dist/expo/plugins/withMobileBundle.js +42 -58
  122. package/dist/index.d.ts +6 -2
  123. package/dist/index.js +23 -2
  124. package/dist/models/registry/models.d.ts +3725 -514
  125. package/dist/models/registry/models.js +7269 -3910
  126. package/dist/models/update-models/naming.js +22 -8
  127. package/dist/pear/pre.d.ts +3 -0
  128. package/dist/pear/pre.js +9 -2
  129. package/dist/schemas/cancel.d.ts +172 -28
  130. package/dist/schemas/cancel.js +120 -19
  131. package/dist/schemas/classification.d.ts +53 -0
  132. package/dist/schemas/classification.js +33 -0
  133. package/dist/schemas/common.d.ts +860 -1379
  134. package/dist/schemas/common.js +8 -1
  135. package/dist/schemas/completion-event.d.ts +17 -0
  136. package/dist/schemas/completion-event.js +12 -1
  137. package/dist/schemas/completion-stream.d.ts +16 -1
  138. package/dist/schemas/completion-stream.js +25 -7
  139. package/dist/schemas/download-asset.d.ts +25 -9
  140. package/dist/schemas/download-asset.js +17 -6
  141. package/dist/schemas/embed.d.ts +1 -0
  142. package/dist/schemas/embed.js +5 -0
  143. package/dist/schemas/engine-addon-map.d.ts +3 -0
  144. package/dist/schemas/engine-addon-map.js +18 -5
  145. package/dist/schemas/error.d.ts +31 -0
  146. package/dist/schemas/error.js +29 -1
  147. package/dist/schemas/finetune.d.ts +2 -0
  148. package/dist/schemas/finetune.js +5 -0
  149. package/dist/schemas/get-model-info.d.ts +10 -6
  150. package/dist/schemas/get-model-info.js +2 -0
  151. package/dist/schemas/index.d.ts +3 -0
  152. package/dist/schemas/index.js +3 -0
  153. package/dist/schemas/llamacpp-config.d.ts +64 -8
  154. package/dist/schemas/llamacpp-config.js +12 -0
  155. package/dist/schemas/load-model.d.ts +4644 -8605
  156. package/dist/schemas/load-model.js +90 -7
  157. package/dist/schemas/model-src-utils.d.ts +34 -14
  158. package/dist/schemas/model-types.d.ts +54 -14
  159. package/dist/schemas/model-types.js +28 -5
  160. package/dist/schemas/ocr.d.ts +8 -3
  161. package/dist/schemas/plugin.d.ts +60 -6
  162. package/dist/schemas/plugin.js +31 -5
  163. package/dist/schemas/rag.d.ts +9 -0
  164. package/dist/schemas/rag.js +17 -9
  165. package/dist/schemas/registry.d.ts +74 -30
  166. package/dist/schemas/registry.js +5 -0
  167. package/dist/schemas/reload-config.d.ts +34 -14
  168. package/dist/schemas/sdcpp-config.d.ts +445 -16
  169. package/dist/schemas/sdcpp-config.js +387 -26
  170. package/dist/schemas/sdk-config.d.ts +2431 -2723
  171. package/dist/schemas/sdk-config.js +16 -1
  172. package/dist/schemas/sdk-errors-client.d.ts +6 -0
  173. package/dist/schemas/sdk-errors-client.js +31 -1
  174. package/dist/schemas/sdk-errors-server.d.ts +8 -1
  175. package/dist/schemas/sdk-errors-server.js +45 -5
  176. package/dist/schemas/text-to-speech.d.ts +81 -698
  177. package/dist/schemas/text-to-speech.js +46 -19
  178. package/dist/schemas/transcription-config.d.ts +40 -229
  179. package/dist/schemas/transcription-config.js +76 -15
  180. package/dist/schemas/transcription.d.ts +108 -2
  181. package/dist/schemas/transcription.js +81 -0
  182. package/dist/schemas/translate.d.ts +2 -0
  183. package/dist/schemas/translate.js +13 -2
  184. package/dist/schemas/translation-config.d.ts +90 -40
  185. package/dist/schemas/unload-model.d.ts +2 -1
  186. package/dist/schemas/unload-model.js +4 -1
  187. package/dist/schemas/vla.d.ts +87 -0
  188. package/dist/schemas/vla.js +108 -0
  189. package/dist/scripts/run-unit-tests.js +22 -3
  190. package/dist/server/bare/ops/cancel.d.ts +27 -1
  191. package/dist/server/bare/ops/cancel.js +36 -10
  192. package/dist/server/bare/ops/embed.d.ts +3 -3
  193. package/dist/server/bare/ops/embed.js +144 -28
  194. package/dist/server/bare/ops/kv-cache-utils.d.ts +0 -7
  195. package/dist/server/bare/ops/kv-cache-utils.js +8 -47
  196. package/dist/server/bare/ops/transcribe.d.ts +11 -5
  197. package/dist/server/bare/ops/transcribe.js +230 -50
  198. package/dist/server/bare/ops/translate.d.ts +1 -1
  199. package/dist/server/bare/ops/translate.js +197 -88
  200. package/dist/server/bare/plugins/ggml-classification/ops/classify.d.ts +6 -0
  201. package/dist/server/bare/plugins/ggml-classification/ops/classify.js +30 -0
  202. package/dist/server/bare/plugins/ggml-classification/plugin.d.ts +32 -0
  203. package/dist/server/bare/plugins/ggml-classification/plugin.js +55 -0
  204. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.d.ts +3 -0
  205. package/dist/server/bare/plugins/ggml-vla/ops/vla-hparams.js +12 -0
  206. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.d.ts +3 -0
  207. package/dist/server/bare/plugins/ggml-vla/ops/vla-run.js +75 -0
  208. package/dist/server/bare/plugins/ggml-vla/plugin.d.ts +54 -0
  209. package/dist/server/bare/plugins/ggml-vla/plugin.js +57 -0
  210. package/dist/server/bare/plugins/index.d.ts +3 -1
  211. package/dist/server/bare/plugins/index.js +3 -1
  212. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.d.ts +12 -3
  213. package/dist/server/bare/plugins/llamacpp-completion/ops/completion-stream.js +173 -172
  214. package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.d.ts +29 -0
  215. package/dist/server/bare/plugins/llamacpp-completion/ops/context-overflow.js +65 -0
  216. package/dist/server/bare/plugins/llamacpp-completion/ops/finetune.js +125 -21
  217. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.d.ts +154 -0
  218. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-session.js +448 -0
  219. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.d.ts +21 -73
  220. package/dist/server/bare/plugins/llamacpp-completion/ops/kv-cache-state.js +18 -101
  221. package/dist/server/bare/plugins/llamacpp-completion/plugin.d.ts +36 -3
  222. package/dist/server/bare/plugins/llamacpp-completion/plugin.js +183 -85
  223. package/dist/server/bare/plugins/llamacpp-completion/transform.d.ts +10 -0
  224. package/dist/server/bare/plugins/llamacpp-completion/transform.js +34 -0
  225. package/dist/server/bare/plugins/llamacpp-embedding/plugin.d.ts +7 -0
  226. package/dist/server/bare/plugins/llamacpp-embedding/plugin.js +10 -1
  227. package/dist/server/bare/plugins/nmtcpp-translation/plugin.d.ts +42 -15
  228. package/dist/server/bare/plugins/nmtcpp-translation/plugin.js +5 -1
  229. package/dist/server/bare/plugins/onnx-ocr/plugin.d.ts +8 -3
  230. package/dist/server/bare/plugins/onnx-ocr/plugin.js +3 -0
  231. package/dist/server/bare/plugins/parakeet-transcription/plugin.d.ts +73 -244
  232. package/dist/server/bare/plugins/parakeet-transcription/plugin.js +68 -96
  233. package/dist/server/bare/plugins/sdcpp-generation/ops/diffusion.js +8 -0
  234. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.d.ts +3 -0
  235. package/dist/server/bare/plugins/sdcpp-generation/ops/upscale.js +40 -0
  236. package/dist/server/bare/plugins/sdcpp-generation/ops/video.d.ts +3 -0
  237. package/dist/server/bare/plugins/sdcpp-generation/ops/video.js +199 -0
  238. package/dist/server/bare/plugins/sdcpp-generation/plugin.d.ts +288 -15
  239. package/dist/server/bare/plugins/sdcpp-generation/plugin.js +150 -7
  240. package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech-stream.js +2 -15
  241. package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech.js +2 -1
  242. package/dist/server/bare/plugins/tts-ggml/plugin.d.ts +75 -0
  243. package/dist/server/bare/plugins/tts-ggml/plugin.js +189 -0
  244. package/dist/server/bare/plugins/whispercpp-transcription/plugin.d.ts +47 -3
  245. package/dist/server/bare/plugins/whispercpp-transcription/plugin.js +61 -14
  246. package/dist/server/bare/rag-hyperdb/index.d.ts +1 -1
  247. package/dist/server/bare/rag-hyperdb/index.js +1 -1
  248. package/dist/server/bare/rag-hyperdb/rag-operation-manager.d.ts +26 -4
  249. package/dist/server/bare/rag-hyperdb/rag-operation-manager.js +65 -28
  250. package/dist/server/bare/registry/model-config-utils.js +7 -0
  251. package/dist/server/bare/runtime/disposable-scope.d.ts +36 -0
  252. package/dist/server/bare/runtime/disposable-scope.js +69 -0
  253. package/dist/server/bare/runtime/index.d.ts +8 -0
  254. package/dist/server/bare/runtime/index.js +3 -0
  255. package/dist/server/bare/runtime/request-context.d.ts +49 -0
  256. package/dist/server/bare/runtime/request-context.js +1 -0
  257. package/dist/server/bare/runtime/request-id.d.ts +12 -0
  258. package/dist/server/bare/runtime/request-id.js +14 -0
  259. package/dist/server/bare/runtime/request-registry-singleton.d.ts +4 -0
  260. package/dist/server/bare/runtime/request-registry-singleton.js +27 -0
  261. package/dist/server/bare/runtime/request-registry.d.ts +136 -0
  262. package/dist/server/bare/runtime/request-registry.js +297 -0
  263. package/dist/server/bare/runtime/with-request-context.d.ts +22 -0
  264. package/dist/server/bare/runtime/with-request-context.js +53 -0
  265. package/dist/server/bare/runtime-lifecycle.js +9 -9
  266. package/dist/server/bare/types/addon-responses.d.ts +12 -1
  267. package/dist/server/env.js +4 -1
  268. package/dist/server/plugins/index.d.ts +1 -1
  269. package/dist/server/plugins/index.js +1 -1
  270. package/dist/server/plugins/registry.d.ts +1 -0
  271. package/dist/server/plugins/registry.js +5 -0
  272. package/dist/server/rpc/handler-registry.js +30 -7
  273. package/dist/server/rpc/handler-selection.d.ts +9 -0
  274. package/dist/server/rpc/handler-selection.js +14 -0
  275. package/dist/server/rpc/handler-utils.js +5 -13
  276. package/dist/server/rpc/handlers/cancel-delegated.js +28 -31
  277. package/dist/server/rpc/handlers/cancelHandler.d.ts +30 -1
  278. package/dist/server/rpc/handlers/cancelHandler.js +54 -22
  279. package/dist/server/rpc/handlers/classify.d.ts +3 -0
  280. package/dist/server/rpc/handlers/classify.js +4 -0
  281. package/dist/server/rpc/handlers/delete-cache.d.ts +9 -0
  282. package/dist/server/rpc/handlers/delete-cache.js +13 -15
  283. package/dist/server/rpc/handlers/download-asset.js +133 -40
  284. package/dist/server/rpc/handlers/index.d.ts +4 -0
  285. package/dist/server/rpc/handlers/index.js +4 -0
  286. package/dist/server/rpc/handlers/load-model/download-manager.d.ts +60 -2
  287. package/dist/server/rpc/handlers/load-model/download-manager.js +141 -8
  288. package/dist/server/rpc/handlers/load-model/handler.js +216 -98
  289. package/dist/server/rpc/handlers/load-model/http.js +3 -3
  290. package/dist/server/rpc/handlers/load-model/hyperdrive.js +1 -1
  291. package/dist/server/rpc/handlers/load-model/registry.js +1 -1
  292. package/dist/server/rpc/handlers/load-model/resolve-session.d.ts +20 -1
  293. package/dist/server/rpc/handlers/load-model/resolve-session.js +6 -5
  294. package/dist/server/rpc/handlers/load-model/resolve.d.ts +3 -2
  295. package/dist/server/rpc/handlers/load-model/resolve.js +18 -6
  296. package/dist/server/rpc/handlers/load-model/types.d.ts +24 -0
  297. package/dist/server/rpc/handlers/rag.js +133 -15
  298. package/dist/server/rpc/handlers/upscale-stream.d.ts +3 -0
  299. package/dist/server/rpc/handlers/upscale-stream.js +4 -0
  300. package/dist/server/rpc/handlers/video-stream.d.ts +3 -0
  301. package/dist/server/rpc/handlers/video-stream.js +4 -0
  302. package/dist/server/rpc/profiling/operation-metrics.js +23 -0
  303. package/dist/server/utils/completion-normalizer.js +8 -0
  304. package/dist/server/utils/config-transform.js +1 -1
  305. package/dist/server/utils/tools/dialect.js +4 -0
  306. package/dist/server/utils/tools/parser.js +16 -1
  307. package/dist/server/utils/tools/parsers/gemma4native.d.ts +4 -0
  308. package/dist/server/utils/tools/parsers/gemma4native.js +60 -0
  309. package/dist/server/utils/tools/parsers/qwen35.d.ts +4 -0
  310. package/dist/server/utils/tools/parsers/qwen35.js +120 -0
  311. package/dist/server/worker.js +14 -11
  312. package/dist/utils/aggregate-events.d.ts +9 -0
  313. package/dist/utils/aggregate-events.js +18 -3
  314. package/dist/utils/decorate-promise.d.ts +34 -0
  315. package/dist/utils/decorate-promise.js +35 -0
  316. package/dist/utils/errors-client.d.ts +18 -0
  317. package/dist/utils/errors-client.js +31 -0
  318. package/dist/utils/errors-server.d.ts +115 -2
  319. package/dist/utils/errors-server.js +148 -3
  320. package/package.json +68 -77
  321. package/dist/server/bare/plugins/onnx-tts/plugin.d.ts +0 -490
  322. package/dist/server/bare/plugins/onnx-tts/plugin.js +0 -266
  323. package/dist/server/bare/plugins/onnx-tts/wav-helper.d.ts +0 -14
  324. package/dist/server/bare/plugins/onnx-tts/wav-helper.js +0 -107
  325. /package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech-stream.d.ts +0 -0
  326. /package/dist/server/bare/plugins/{onnx-tts → tts-ggml}/ops/text-to-speech.d.ts +0 -0
@@ -1,6 +1,61 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
1
53
  import fs from "bare-fs";
2
54
  import { getModel, } from "../../../registry/model-registry.js";
3
55
  import { CompletionFailedError, } from "../../../../../utils/errors-server.js";
56
+ import { getRequestRegistry, withRequestContext, } from "../../../runtime/index.js";
57
+ import { generateServerRequestId } from "../../../runtime/request-id.js";
58
+ import { getServerLogger } from "../../../../../logging/index.js";
4
59
  const PAUSE_CHECKPOINT_PREFIX = "pause_checkpoint_step_";
5
60
  const finetuneRuntimeState = new Set();
6
61
  function getRunningFinetuneState(modelId) {
@@ -46,30 +101,67 @@ function validateExplicitFinetuneOperation(request) {
46
101
  }
47
102
  }
48
103
  export async function startFinetune(request, onProgress) {
49
- const model = getModel(request.modelId);
50
- validateExplicitFinetuneOperation(request);
51
- registerRunningFinetune(request.modelId);
104
+ const env_1 = { stack: [], error: void 0, hasError: false };
52
105
  try {
106
+ const model = getModel(request.modelId);
107
+ validateExplicitFinetuneOperation(request);
108
+ // Open a request-scoped lifecycle so finetune slots into the same
109
+ // registry-driven cancel surface as the streaming inference kinds.
110
+ // `cancel({ requestId })` and broad `cancel({ modelId, kind: "finetune" })`
111
+ // both route through this context's signal — the `onAbort` listener
112
+ // forwards to `model.cancel()` to match the plugin's
113
+ // `cancel: { scope: "model", hard: true }` declaration. The legacy
114
+ // `cancelFinetune(modelId)` wrapper below now goes through the
115
+ // registry instead of touching the addon directly.
116
+ const ctx = __addDisposableResource(env_1, getRequestRegistry().begin({
117
+ requestId: request.requestId ?? generateServerRequestId(),
118
+ kind: "finetune",
119
+ modelId: request.modelId,
120
+ }), true);
121
+ const requestLogger = withRequestContext(getServerLogger(), ctx);
122
+ registerRunningFinetune(request.modelId);
123
+ // Two-level try/finally collapses into a pair of `scope.defer`
124
+ // registrations. LIFO order — the listener-detach defer is
125
+ // registered after `clearFinetuneRuntimeState`, so on scope unwind
126
+ // the listener is removed first, then the runtime-state flag is
127
+ // cleared. This mirrors the legacy `finally` nesting where the inner
128
+ // `removeListener` ran before the outer `clearFinetuneRuntimeState`.
129
+ ctx.scope.defer(() => {
130
+ clearFinetuneRuntimeState(request.modelId);
131
+ });
132
+ const onAbort = () => {
133
+ model.cancel().catch((err) => {
134
+ requestLogger.warn(`[cancel] model.cancel() rejected during abort for modelId=${request.modelId}: ${err instanceof Error ? err.message : String(err)}`);
135
+ });
136
+ };
137
+ ctx.signal.addEventListener("abort", onAbort, { once: true });
138
+ if (ctx.signal.aborted)
139
+ onAbort();
140
+ ctx.scope.defer(() => {
141
+ ctx.signal.removeEventListener("abort", onAbort);
142
+ });
53
143
  const handle = await model.finetune(request.options);
54
144
  if (onProgress) {
55
145
  handle.on("stats", onProgress);
56
- }
57
- try {
58
- const result = await handle.await();
59
- return {
60
- type: "finetune",
61
- status: result.status,
62
- stats: result.stats,
63
- };
64
- }
65
- finally {
66
- if (onProgress) {
146
+ ctx.scope.defer(() => {
67
147
  handle.removeListener("stats", onProgress);
68
- }
148
+ });
69
149
  }
150
+ const result = await handle.await();
151
+ return {
152
+ type: "finetune",
153
+ status: result.status,
154
+ stats: result.stats,
155
+ };
156
+ }
157
+ catch (e_1) {
158
+ env_1.error = e_1;
159
+ env_1.hasError = true;
70
160
  }
71
161
  finally {
72
- clearFinetuneRuntimeState(request.modelId);
162
+ const result_1 = __disposeResources(env_1);
163
+ if (result_1)
164
+ await result_1;
73
165
  }
74
166
  }
75
167
  export async function pauseFinetune(modelId) {
@@ -80,13 +172,25 @@ export async function pauseFinetune(modelId) {
80
172
  status: "PAUSED",
81
173
  };
82
174
  }
83
- export async function cancelFinetune(modelId) {
84
- const model = getModel(modelId);
85
- await model.cancel();
86
- return {
175
+ // Thin compat wrapper over the request registry. The in-flight
176
+ // finetune is tracked by a `RequestContext` (kind `"finetune"`), and
177
+ // the registry owns the broadcast to its `AbortSignal`. `startFinetune`
178
+ // installs the addon-level `model.cancel()` listener tied to that
179
+ // signal, so callers see the same observable effect as a direct
180
+ // `model.cancel()` call. The addon-call wiring is centralised there —
181
+ // never invoke `model.cancel()` here.
182
+ export function cancelFinetune(modelId) {
183
+ // `registry.cancel(...)` is synchronous — it triggers the matching
184
+ // requests' abort signals and returns the cancelled count. Scope
185
+ // unwinding (and the `model.cancel()` forward installed by
186
+ // `startFinetune`) happens on the handler's own dispose path. The
187
+ // outer `Promise.resolve(...)` keeps the legacy `cancelFinetune`
188
+ // return shape (`Promise<FinetuneResult>`) intact for callers.
189
+ getRequestRegistry().cancel({ modelId, kind: "finetune" });
190
+ return Promise.resolve({
87
191
  type: "finetune",
88
192
  status: "CANCELLED",
89
- };
193
+ });
90
194
  }
91
195
  export function getFinetuneState(params) {
92
196
  const runtimeState = getRunningFinetuneState(params.modelId);
@@ -0,0 +1,154 @@
1
+ import { generateConfigHash } from "../../../ops/kv-cache-utils";
2
+ import type { CacheMessage } from "../../../../utils/index";
3
+ import type { Logger } from "../../../../../logging/types";
4
+ export interface TurnHandle {
5
+ /** Resolved on-disk cache file path the addon will read from / write to. */
6
+ readonly cachePath: string;
7
+ /**
8
+ * Snapshot of the on-disk saved-message count at `beginTurn` time
9
+ * (0 if the cache was just primed). Consumed by `decideCachedHistorySlice`
10
+ * to pick the message tail for the next addon call.
11
+ */
12
+ readonly savedCount: number;
13
+ }
14
+ export interface BeginCustomTurnInput {
15
+ kind: "custom";
16
+ /** User-provided session key (`completion({ kvCache: "session-a" })`). */
17
+ customKey: string;
18
+ /** Hash of system prompt + (static) tool names. */
19
+ configHash: string;
20
+ /**
21
+ * Prime the cache by sending system prompt + (static) tools to the
22
+ * addon. Called when the cache doesn't exist in-memory OR on disk.
23
+ * Kept as an injected closure so this module has no dependency on the
24
+ * model registry / addon — the handler closes over `model` and tools.
25
+ */
26
+ primeIfMissing: (cachePath: string) => Promise<void>;
27
+ }
28
+ export interface BeginAutoTurnInput {
29
+ kind: "auto";
30
+ /** Hash of system prompt + (static) tool names. */
31
+ configHash: string;
32
+ /** Conversation history used to compute the pre-response cache key. */
33
+ history: CacheMessage[];
34
+ /** See `BeginCustomTurnInput.primeIfMissing`. */
35
+ primeIfMissing: (cachePath: string) => Promise<void>;
36
+ }
37
+ export type BeginTurnInput = BeginCustomTurnInput | BeginAutoTurnInput;
38
+ export interface StaticCommitResult {
39
+ kind: "static";
40
+ /** `history.length + 1` — recorded at the turn's current `cachePath`. */
41
+ messageCount: number;
42
+ }
43
+ export interface AutoRenameCommitResult {
44
+ kind: "autoRename";
45
+ /**
46
+ * Destination path the addon's pre-response cache file should be
47
+ * renamed to (computed from `cacheMessages + responseText`). The
48
+ * stale entry at the source path is dropped from `cachedMessageCounts`
49
+ * and the new count is recorded at this target path.
50
+ */
51
+ targetCachePath: string;
52
+ /** Number of messages the renamed cache represents (`savedHistory.length`). */
53
+ messageCount: number;
54
+ }
55
+ export type CommitResult = StaticCommitResult | AutoRenameCommitResult;
56
+ export interface KvCacheSession {
57
+ /**
58
+ * Open a new turn against the cache. Resolves the cache file path,
59
+ * primes the system-prompt cache if needed (delegated to
60
+ * `input.primeIfMissing`), marks the cache initialized, and returns a
61
+ * `TurnHandle` the handler attaches to `ctx.scope.defer(...)` for the
62
+ * rollback hook.
63
+ */
64
+ beginTurn(input: BeginTurnInput): Promise<TurnHandle>;
65
+ /**
66
+ * Commit a successful turn — records the new saved-message count,
67
+ * preserves the cache file, and (for auto-cache turns) renames the
68
+ * addon's pre-response file to the post-response path. Flips the
69
+ * turn's internal `committed` flag so the deferred `rollback` becomes
70
+ * a no-op on the happy path.
71
+ */
72
+ commitTurn(turn: TurnHandle, result: CommitResult): Promise<void>;
73
+ /**
74
+ * Roll back an in-flight turn — atomically deletes the on-disk cache
75
+ * file, clears the in-memory `initializedCaches` entry, and forgets
76
+ * the `cachedMessageCounts` entry. **All three layers, always, in
77
+ * one place.** Idempotent: a turn that has already been committed
78
+ * or rolled back is a no-op on subsequent calls. Handlers register
79
+ * this via `ctx.scope.defer(...)` so it runs regardless of how the
80
+ * handler exits (success branch removes itself via `commitTurn`).
81
+ */
82
+ rollback(turn: TurnHandle): Promise<void>;
83
+ /**
84
+ * Forget the in-memory saved-message count for the turn's path
85
+ * without unlinking the file or clearing the init flag. Used when
86
+ * `decideCachedHistorySlice` detects a stale boundary
87
+ * (`clearStaleCount: true`) — the next turn re-sends the full history
88
+ * but the cache itself is still usable.
89
+ */
90
+ dropStaleSavedCount(turn: TurnHandle): void;
91
+ }
92
+ /**
93
+ * Construct a session bound to one `(modelId, turn-owning request)`
94
+ * scope. `options.logger` is the per-instance logger the session emits
95
+ * through (typically `withRequestContext(getServerLogger(), ctx)`);
96
+ * falls back to the module-scoped logger when omitted.
97
+ */
98
+ export declare function createKvCacheSession(modelId: string, options?: {
99
+ logger?: Logger;
100
+ }): KvCacheSession;
101
+ /**
102
+ * Atomically delete every layer of KV-cache state for a
103
+ * `(kvCacheKey, modelId)` pair, or wipe everything. Single entry point
104
+ * — the only mutation point for cross-model state outside of
105
+ * turn-scoped `commitTurn`/`rollback`.
106
+ *
107
+ * Why this isn't a method on `KvCacheSession`: deletes are
108
+ * cross-model (`all: true` has no model; the keyed form has
109
+ * `modelId` optional on the wire). A session, by contrast, is
110
+ * created with a *fixed* `modelId` for the duration of a turn. Making
111
+ * delete a method would force callers to materialise an irrelevant
112
+ * session for cross-model administrative cleanups.
113
+ *
114
+ * Layers cleared, in order:
115
+ * 1. On-disk: `deleteCache(...)` removes the matching directory
116
+ * tree (or wipes and recreates the root for `all: true`).
117
+ * 2. `cachedMessageCounts`: prefix-cleanup by the removed directory
118
+ * so any per-cache count under the deleted tree is forgotten.
119
+ * 3. `initializedCaches`: scope clear by `(kvCacheKey[, modelId])`,
120
+ * matching the on-disk scope.
121
+ *
122
+ * Concurrency with in-flight turns: this delete is wire-async with
123
+ * respect to any turn currently holding a `TurnHandle` for the same
124
+ * cache key. Worst case the on-disk `.bin` is removed while a turn is
125
+ * mid-write; the turn's eventual `commitTurn(...)` then fails the
126
+ * `verifySaveAndRecord` probe (file gone) and rolls back idempotently.
127
+ * No coordination primitive is needed because every layer's mutation
128
+ * is idempotent (`unlink` no-ops if missing, `Map.delete` / `Set.delete`
129
+ * no-op on absent keys).
130
+ */
131
+ export declare function deleteKvCacheState(target: {
132
+ kvCacheKey: string;
133
+ modelId?: string;
134
+ } | {
135
+ all: true;
136
+ }): Promise<void>;
137
+ /**
138
+ * Test-only access to the module-scoped state. Production code reaches
139
+ * for cache state exclusively through the session API; the unit suite
140
+ * for `kv-cache-session.test.ts` needs to seed and inspect raw state
141
+ * to assert the rollback / commit invariants. Not part of the public
142
+ * SDK surface.
143
+ *
144
+ * @internal
145
+ */
146
+ export declare const __kvCacheSessionTestHooks: {
147
+ getSavedCount(cachePath: string): number | undefined;
148
+ setSavedCountForTest(cachePath: string, count: number): void;
149
+ hasInitializedKey(modelId: string, configHash: string, cacheKey: string): boolean;
150
+ markInitializedForTest(modelId: string, configHash: string, cacheKey: string): void;
151
+ resetForTest(): void;
152
+ };
153
+ export { generateConfigHash };
154
+ //# sourceMappingURL=kv-cache-session.d.ts.map