@nhtio/adk 1.20260925.0 → 1.20260928.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 (332) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/artifact_methods-Cg0go7Q4.mjs +1 -0
  3. package/artifact_methods-CxeKTocm.cjs +1 -0
  4. package/batteries/artifacts/ecmascript.cjs +1 -1
  5. package/batteries/artifacts/ecmascript.mjs +1 -1
  6. package/batteries/artifacts/toon.cjs +1 -1
  7. package/batteries/artifacts/toon.mjs +1 -1
  8. package/batteries/artifacts/xml.cjs +1 -1
  9. package/batteries/artifacts/xml.mjs +1 -1
  10. package/batteries/artifacts/yaml.cjs +1 -1
  11. package/batteries/artifacts/yaml.mjs +1 -1
  12. package/batteries/artifacts.cjs +4 -4
  13. package/batteries/artifacts.mjs +4 -4
  14. package/batteries/dev-tools/forge.cjs +3 -3
  15. package/batteries/dev-tools/forge.mjs +3 -3
  16. package/batteries/dev-tools.cjs +3 -3
  17. package/batteries/dev-tools.mjs +3 -3
  18. package/batteries/encoding.cjs +7 -7
  19. package/batteries/encoding.mjs +7 -7
  20. package/batteries/generation/gemini/adapter.cjs +1 -1
  21. package/batteries/generation/gemini/adapter.mjs +1 -1
  22. package/batteries/generation/local_diffusion/adapter.cjs +1 -1
  23. package/batteries/generation/local_diffusion/adapter.mjs +1 -1
  24. package/batteries/generation/openai/adapter.cjs +1 -1
  25. package/batteries/generation/openai/adapter.mjs +1 -1
  26. package/batteries/isolation/child_process.cjs +1 -1
  27. package/batteries/isolation/child_process.mjs +1 -1
  28. package/batteries/isolation.cjs +1 -1
  29. package/batteries/isolation.mjs +1 -1
  30. package/batteries/llm/anthropic_messages/adapter.cjs +6 -6
  31. package/batteries/llm/anthropic_messages/adapter.mjs +6 -6
  32. package/batteries/llm/anthropic_messages/count_tokens.cjs +1 -1
  33. package/batteries/llm/anthropic_messages/count_tokens.mjs +1 -1
  34. package/batteries/llm/anthropic_messages/helpers.cjs +3 -3
  35. package/batteries/llm/anthropic_messages/helpers.mjs +3 -3
  36. package/batteries/llm/anthropic_messages/validation.cjs +2 -2
  37. package/batteries/llm/anthropic_messages/validation.mjs +2 -2
  38. package/batteries/llm/anthropic_messages.cjs +2 -2
  39. package/batteries/llm/anthropic_messages.mjs +2 -2
  40. package/batteries/llm/bedrock_converse/adapter.cjs +6 -6
  41. package/batteries/llm/bedrock_converse/adapter.mjs +6 -6
  42. package/batteries/llm/bedrock_converse/helpers.cjs +1 -1
  43. package/batteries/llm/bedrock_converse/helpers.mjs +1 -1
  44. package/batteries/llm/bedrock_converse/validation.cjs +2 -2
  45. package/batteries/llm/bedrock_converse/validation.mjs +2 -2
  46. package/batteries/llm/bedrock_converse.cjs +2 -2
  47. package/batteries/llm/bedrock_converse.mjs +2 -2
  48. package/batteries/llm/claude_code_cli/adapter.cjs +7 -7
  49. package/batteries/llm/claude_code_cli/adapter.mjs +7 -7
  50. package/batteries/llm/claude_code_cli/helpers.cjs +3 -3
  51. package/batteries/llm/claude_code_cli/helpers.mjs +3 -3
  52. package/batteries/llm/claude_code_cli/validation.cjs +2 -2
  53. package/batteries/llm/claude_code_cli/validation.mjs +2 -2
  54. package/batteries/llm/claude_code_cli.cjs +2 -2
  55. package/batteries/llm/claude_code_cli.mjs +2 -2
  56. package/batteries/llm/gemini_generate_content/adapter.cjs +6 -6
  57. package/batteries/llm/gemini_generate_content/adapter.mjs +6 -6
  58. package/batteries/llm/gemini_generate_content/helpers.cjs +1 -1
  59. package/batteries/llm/gemini_generate_content/helpers.mjs +1 -1
  60. package/batteries/llm/gemini_generate_content/validation.cjs +2 -2
  61. package/batteries/llm/gemini_generate_content/validation.mjs +2 -2
  62. package/batteries/llm/gemini_generate_content.cjs +1 -1
  63. package/batteries/llm/gemini_generate_content.mjs +1 -1
  64. package/batteries/llm/litert_lm/adapter.cjs +6 -6
  65. package/batteries/llm/litert_lm/adapter.mjs +6 -6
  66. package/batteries/llm/litert_lm/helpers.cjs +3 -3
  67. package/batteries/llm/litert_lm/helpers.mjs +3 -3
  68. package/batteries/llm/litert_lm/validation.cjs +2 -2
  69. package/batteries/llm/litert_lm/validation.mjs +2 -2
  70. package/batteries/llm/litert_lm.cjs +1 -1
  71. package/batteries/llm/litert_lm.mjs +1 -1
  72. package/batteries/llm/ollama/adapter.cjs +6 -6
  73. package/batteries/llm/ollama/adapter.mjs +6 -6
  74. package/batteries/llm/ollama/helpers.cjs +4 -4
  75. package/batteries/llm/ollama/helpers.mjs +4 -4
  76. package/batteries/llm/ollama/validation.cjs +2 -2
  77. package/batteries/llm/ollama/validation.mjs +2 -2
  78. package/batteries/llm/ollama.cjs +2 -2
  79. package/batteries/llm/ollama.mjs +2 -2
  80. package/batteries/llm/openai_chat_completions/adapter.cjs +6 -6
  81. package/batteries/llm/openai_chat_completions/adapter.mjs +6 -6
  82. package/batteries/llm/openai_chat_completions/helpers.cjs +4 -4
  83. package/batteries/llm/openai_chat_completions/helpers.mjs +4 -4
  84. package/batteries/llm/openai_chat_completions/validation.cjs +2 -2
  85. package/batteries/llm/openai_chat_completions/validation.mjs +2 -2
  86. package/batteries/llm/openai_chat_completions.cjs +2 -2
  87. package/batteries/llm/openai_chat_completions.mjs +2 -2
  88. package/batteries/llm/openai_responses/adapter.cjs +6 -6
  89. package/batteries/llm/openai_responses/adapter.mjs +6 -6
  90. package/batteries/llm/openai_responses/helpers.cjs +3 -3
  91. package/batteries/llm/openai_responses/helpers.mjs +3 -3
  92. package/batteries/llm/openai_responses/validation.cjs +2 -2
  93. package/batteries/llm/openai_responses/validation.mjs +2 -2
  94. package/batteries/llm/openai_responses.cjs +2 -2
  95. package/batteries/llm/openai_responses.mjs +2 -2
  96. package/batteries/llm/transformers_js/adapter.cjs +6 -6
  97. package/batteries/llm/transformers_js/adapter.mjs +6 -6
  98. package/batteries/llm/transformers_js/helpers.cjs +3 -3
  99. package/batteries/llm/transformers_js/helpers.mjs +3 -3
  100. package/batteries/llm/transformers_js/validation.cjs +2 -2
  101. package/batteries/llm/transformers_js/validation.mjs +2 -2
  102. package/batteries/llm/transformers_js.cjs +1 -1
  103. package/batteries/llm/transformers_js.mjs +1 -1
  104. package/batteries/llm/webllm_chat_completions/adapter.cjs +6 -6
  105. package/batteries/llm/webllm_chat_completions/adapter.mjs +6 -6
  106. package/batteries/llm/webllm_chat_completions/helpers.cjs +1 -1
  107. package/batteries/llm/webllm_chat_completions/helpers.mjs +1 -1
  108. package/batteries/llm/webllm_chat_completions/validation.cjs +2 -2
  109. package/batteries/llm/webllm_chat_completions/validation.mjs +2 -2
  110. package/batteries/llm/webllm_chat_completions.cjs +2 -2
  111. package/batteries/llm/webllm_chat_completions.mjs +2 -2
  112. package/batteries/llm.cjs +2 -2
  113. package/batteries/llm.mjs +2 -2
  114. package/batteries/media/forge.cjs +4 -4
  115. package/batteries/media/forge.mjs +4 -4
  116. package/batteries/media/lint.cjs +1 -1
  117. package/batteries/media/lint.mjs +1 -1
  118. package/batteries/orchestration/cells/jexl.cjs +1 -1
  119. package/batteries/orchestration/cells/jexl.mjs +1 -1
  120. package/batteries/orchestration/cells/lua.cjs +1 -1
  121. package/batteries/orchestration/cells/lua.mjs +1 -1
  122. package/batteries/orchestration/cells/structured.cjs +1 -1
  123. package/batteries/orchestration/cells/structured.mjs +1 -1
  124. package/batteries/orchestration/dispatch_reasoner.cjs +4 -4
  125. package/batteries/orchestration/dispatch_reasoner.mjs +4 -4
  126. package/batteries/orchestration/executor.cjs +2 -2
  127. package/batteries/orchestration/executor.mjs +2 -2
  128. package/batteries/orchestration/forge.cjs +3 -3
  129. package/batteries/orchestration/forge.mjs +3 -3
  130. package/batteries/orchestration/validation.cjs +2 -2
  131. package/batteries/orchestration/validation.mjs +2 -2
  132. package/batteries/orchestration.cjs +3 -3
  133. package/batteries/orchestration.mjs +3 -3
  134. package/batteries/sandbox/js.cjs +1 -1
  135. package/batteries/sandbox/js.mjs +1 -1
  136. package/batteries/sandbox/tools.cjs +1 -1
  137. package/batteries/sandbox/tools.mjs +1 -1
  138. package/batteries/sandbox.cjs +4 -4
  139. package/batteries/sandbox.mjs +4 -4
  140. package/batteries/skills/in_memory.cjs +1 -1
  141. package/batteries/skills/in_memory.mjs +1 -1
  142. package/batteries/skills.cjs +9 -9
  143. package/batteries/skills.mjs +9 -9
  144. package/batteries/specialists/stt/transformers_js.cjs +1 -1
  145. package/batteries/specialists/stt/transformers_js.mjs +1 -1
  146. package/batteries/specialists/stt.cjs +1 -1
  147. package/batteries/specialists/stt.mjs +1 -1
  148. package/batteries/specialists.cjs +1 -1
  149. package/batteries/specialists.mjs +1 -1
  150. package/batteries/tools/_shared.cjs +2 -2
  151. package/batteries/tools/_shared.mjs +2 -2
  152. package/batteries/tools/color.cjs +2 -2
  153. package/batteries/tools/color.mjs +2 -2
  154. package/batteries/tools/comparison.cjs +2 -2
  155. package/batteries/tools/comparison.mjs +2 -2
  156. package/batteries/tools/data_structure.cjs +2 -2
  157. package/batteries/tools/data_structure.mjs +2 -2
  158. package/batteries/tools/datetime_extended.cjs +2 -2
  159. package/batteries/tools/datetime_extended.mjs +2 -2
  160. package/batteries/tools/datetime_math.cjs +2 -2
  161. package/batteries/tools/datetime_math.mjs +2 -2
  162. package/batteries/tools/encoding.cjs +2 -2
  163. package/batteries/tools/encoding.mjs +2 -2
  164. package/batteries/tools/formatting.cjs +2 -2
  165. package/batteries/tools/formatting.mjs +2 -2
  166. package/batteries/tools/geo_basics.cjs +2 -2
  167. package/batteries/tools/geo_basics.mjs +2 -2
  168. package/batteries/tools/math.cjs +2 -2
  169. package/batteries/tools/math.mjs +2 -2
  170. package/batteries/tools/memory.cjs +4 -4
  171. package/batteries/tools/memory.mjs +4 -4
  172. package/batteries/tools/parsing.cjs +3 -3
  173. package/batteries/tools/parsing.mjs +3 -3
  174. package/batteries/tools/retrievables.cjs +4 -4
  175. package/batteries/tools/retrievables.mjs +4 -4
  176. package/batteries/tools/scrapper.cjs +1 -1
  177. package/batteries/tools/scrapper.mjs +1 -1
  178. package/batteries/tools/searxng.cjs +1 -1
  179. package/batteries/tools/searxng.mjs +1 -1
  180. package/batteries/tools/standing_instructions.cjs +3 -3
  181. package/batteries/tools/standing_instructions.mjs +3 -3
  182. package/batteries/tools/statistics.cjs +3 -3
  183. package/batteries/tools/statistics.mjs +3 -3
  184. package/batteries/tools/string_processing.cjs +2 -2
  185. package/batteries/tools/string_processing.mjs +2 -2
  186. package/batteries/tools/structured_data.cjs +2 -2
  187. package/batteries/tools/structured_data.mjs +2 -2
  188. package/batteries/tools/text_analysis.cjs +3 -3
  189. package/batteries/tools/text_analysis.mjs +3 -3
  190. package/batteries/tools/text_comparison.cjs +2 -2
  191. package/batteries/tools/text_comparison.mjs +2 -2
  192. package/batteries/tools/time.cjs +2 -2
  193. package/batteries/tools/time.mjs +2 -2
  194. package/batteries/tools/unit_conversion.cjs +2 -2
  195. package/batteries/tools/unit_conversion.mjs +2 -2
  196. package/batteries/tools.cjs +2 -2
  197. package/batteries/tools.mjs +2 -2
  198. package/batteries/validation.cjs +5 -5
  199. package/batteries/validation.mjs +5 -5
  200. package/batteries/vector/conformance.cjs +59 -0
  201. package/batteries/vector/conformance.cjs.map +1 -1
  202. package/batteries/vector/conformance.mjs +59 -0
  203. package/batteries/vector/conformance.mjs.map +1 -1
  204. package/batteries/vector/lancedb.cjs +1 -1
  205. package/batteries/vector/lancedb.cjs.map +1 -1
  206. package/batteries/vector/lancedb.mjs +1 -1
  207. package/batteries/vector/lancedb.mjs.map +1 -1
  208. package/batteries/vector/retrievable.cjs +1 -1
  209. package/batteries/vector/retrievable.mjs +1 -1
  210. package/batteries/vector/sqlite_vec/index.d.ts +1 -1
  211. package/batteries/vector/sqlite_vec.cjs +19 -30
  212. package/batteries/vector/sqlite_vec.cjs.map +1 -1
  213. package/batteries/vector/sqlite_vec.mjs +20 -31
  214. package/batteries/vector/sqlite_vec.mjs.map +1 -1
  215. package/batteries.cjs +6 -6
  216. package/batteries.mjs +6 -6
  217. package/{chat_common-4huaTp6d.cjs → chat_common-CNayzS1V.cjs} +2 -2
  218. package/{chat_common-4huaTp6d.cjs.map → chat_common-CNayzS1V.cjs.map} +1 -1
  219. package/{chat_common-D_XGNjcK.mjs → chat_common-DKw8FDol.mjs} +2 -2
  220. package/{chat_common-D_XGNjcK.mjs.map → chat_common-DKw8FDol.mjs.map} +1 -1
  221. package/{common-BiRzOsxe.cjs → common-CqetsItm.cjs} +7 -7
  222. package/{common-BiRzOsxe.cjs.map → common-CqetsItm.cjs.map} +1 -1
  223. package/{common-DsLvTGmm.mjs → common-oI1niK9Z.mjs} +7 -7
  224. package/{common-DsLvTGmm.mjs.map → common-oI1niK9Z.mjs.map} +1 -1
  225. package/common.cjs +7 -7
  226. package/common.mjs +7 -7
  227. package/{dispatch_runner-DDH_dGPU.mjs → dispatch_runner-BZDXUe0G.mjs} +4 -4
  228. package/{dispatch_runner-DDH_dGPU.mjs.map → dispatch_runner-BZDXUe0G.mjs.map} +1 -1
  229. package/{dispatch_runner-C5S3KCqH.cjs → dispatch_runner-DDUxXJC3.cjs} +4 -4
  230. package/{dispatch_runner-C5S3KCqH.cjs.map → dispatch_runner-DDUxXJC3.cjs.map} +1 -1
  231. package/dispatch_runner.cjs +1 -1
  232. package/dispatch_runner.mjs +1 -1
  233. package/{ecmascript-CWLZ7bCX.mjs → ecmascript-B9Z2C24U.mjs} +5 -5
  234. package/{ecmascript-CWLZ7bCX.mjs.map → ecmascript-B9Z2C24U.mjs.map} +1 -1
  235. package/{ecmascript-BGr_0Dwn.cjs → ecmascript-BYfmjg7y.cjs} +5 -5
  236. package/{ecmascript-BGr_0Dwn.cjs.map → ecmascript-BYfmjg7y.cjs.map} +1 -1
  237. package/eslint/rules.cjs +1 -1
  238. package/eslint/rules.mjs +1 -1
  239. package/eslint.cjs +3 -3
  240. package/eslint.mjs +3 -3
  241. package/exceptions.cjs +1 -1
  242. package/exceptions.mjs +1 -1
  243. package/forge.cjs +2 -2
  244. package/forge.mjs +2 -2
  245. package/guards.cjs +7 -7
  246. package/guards.mjs +7 -7
  247. package/{helpers-BPi_iwxv.cjs → helpers-DPlh_7Bn.cjs} +3 -3
  248. package/{helpers-BPi_iwxv.cjs.map → helpers-DPlh_7Bn.cjs.map} +1 -1
  249. package/{helpers-D47G8WQb.mjs → helpers-mbn_EsDV.mjs} +3 -3
  250. package/{helpers-D47G8WQb.mjs.map → helpers-mbn_EsDV.mjs.map} +1 -1
  251. package/index.cjs +11 -11
  252. package/index.mjs +11 -11
  253. package/{isolation-B2FgKbap.cjs → isolation-B01xCIoV.cjs} +2 -2
  254. package/{isolation-B2FgKbap.cjs.map → isolation-B01xCIoV.cjs.map} +1 -1
  255. package/{isolation-BRGpiU-K.mjs → isolation-CO0NiK8R.mjs} +2 -2
  256. package/{isolation-BRGpiU-K.mjs.map → isolation-CO0NiK8R.mjs.map} +1 -1
  257. package/{manifest-B5bWMHgj.mjs → manifest-D8UTRohY.mjs} +2 -2
  258. package/{manifest-B5bWMHgj.mjs.map → manifest-D8UTRohY.mjs.map} +1 -1
  259. package/{manifest-Chjh-3s1.cjs → manifest-IP1IOJcg.cjs} +2 -2
  260. package/{manifest-Chjh-3s1.cjs.map → manifest-IP1IOJcg.cjs.map} +1 -1
  261. package/mcp/adk-docs-corpus.json +2 -2
  262. package/package.json +538 -538
  263. package/{predicates-C9jl2QPZ.cjs → predicates-Bzaa7gNI.cjs} +2 -2
  264. package/{predicates-C9jl2QPZ.cjs.map → predicates-Bzaa7gNI.cjs.map} +1 -1
  265. package/{predicates-2dZQ82LY.mjs → predicates-CM27Z3TF.mjs} +2 -2
  266. package/{predicates-2dZQ82LY.mjs.map → predicates-CM27Z3TF.mjs.map} +1 -1
  267. package/{retrievable-ReauMJxJ.cjs → retrievable-Bq-O3k6r.cjs} +3 -3
  268. package/{retrievable-ReauMJxJ.cjs.map → retrievable-Bq-O3k6r.cjs.map} +1 -1
  269. package/{retrievable-mFgC1aty.mjs → retrievable-CXTAUuuv.mjs} +3 -3
  270. package/{retrievable-mFgC1aty.mjs.map → retrievable-CXTAUuuv.mjs.map} +1 -1
  271. package/{scrapper-BsEY0Wo6.cjs → scrapper-B8xG9lTD.cjs} +5 -5
  272. package/{scrapper-BsEY0Wo6.cjs.map → scrapper-B8xG9lTD.cjs.map} +1 -1
  273. package/{scrapper-bShwZxKP.mjs → scrapper-DiQ5FfDL.mjs} +5 -5
  274. package/{scrapper-bShwZxKP.mjs.map → scrapper-DiQ5FfDL.mjs.map} +1 -1
  275. package/{searxng-CAY-bOMl.mjs → searxng-BFTJ6rTE.mjs} +5 -5
  276. package/{searxng-CAY-bOMl.mjs.map → searxng-BFTJ6rTE.mjs.map} +1 -1
  277. package/{searxng-CLF0vBMT.cjs → searxng-EJhWRnIE.cjs} +5 -5
  278. package/{searxng-CLF0vBMT.cjs.map → searxng-EJhWRnIE.cjs.map} +1 -1
  279. package/server.json +2 -2
  280. package/skills/adk-assembly/SKILL.md +2 -2
  281. package/{spooled_artifact-CFjf6ULg.cjs → spooled_artifact---DmicFW.cjs} +384 -384
  282. package/spooled_artifact---DmicFW.cjs.map +1 -0
  283. package/{spooled_artifact-B710Rb0d.mjs → spooled_artifact-Bw_7swIp.mjs} +385 -385
  284. package/spooled_artifact-Bw_7swIp.mjs.map +1 -0
  285. package/spooled_artifact.cjs +2 -2
  286. package/spooled_artifact.mjs +2 -2
  287. package/{spooled_markdown_artifact-PWppwnPQ.cjs → spooled_markdown_artifact-Rjzj-kyh.cjs} +3 -3
  288. package/{spooled_markdown_artifact-PWppwnPQ.cjs.map → spooled_markdown_artifact-Rjzj-kyh.cjs.map} +1 -1
  289. package/{spooled_markdown_artifact-1C4mmi73.mjs → spooled_markdown_artifact-vd6eNtIP.mjs} +3 -3
  290. package/{spooled_markdown_artifact-1C4mmi73.mjs.map → spooled_markdown_artifact-vd6eNtIP.mjs.map} +1 -1
  291. package/{thought-BKXwUZoq.mjs → thought-CxSaF6Xf.mjs} +3 -3
  292. package/{thought-BKXwUZoq.mjs.map → thought-CxSaF6Xf.mjs.map} +1 -1
  293. package/{thought-D5fJsxBW.cjs → thought-Dp3sMWW6.cjs} +3 -3
  294. package/{thought-D5fJsxBW.cjs.map → thought-Dp3sMWW6.cjs.map} +1 -1
  295. package/{tokenizable-DDIdXbJN.cjs → tokenizable-BcodRtoW.cjs} +29 -29
  296. package/{tokenizable-DDIdXbJN.cjs.map → tokenizable-BcodRtoW.cjs.map} +1 -1
  297. package/{tokenizable-xPXj1AQX.mjs → tokenizable-VB4Av8GF.mjs} +30 -30
  298. package/{tokenizable-xPXj1AQX.mjs.map → tokenizable-VB4Av8GF.mjs.map} +1 -1
  299. package/{tool_call-CDV5pW13.cjs → tool_call-B9px4W9k.cjs} +3 -3
  300. package/{tool_call-CDV5pW13.cjs.map → tool_call-B9px4W9k.cjs.map} +1 -1
  301. package/{tool_call-D-LqMvpU.mjs → tool_call-Cfaj-6zK.mjs} +3 -3
  302. package/{tool_call-D-LqMvpU.mjs.map → tool_call-Cfaj-6zK.mjs.map} +1 -1
  303. package/{tools-CvCMdAd7.mjs → tools-D0MBDh2R.mjs} +6 -6
  304. package/{tools-CvCMdAd7.mjs.map → tools-D0MBDh2R.mjs.map} +1 -1
  305. package/{tools-CACuuMV4.cjs → tools-aNbi6JyA.cjs} +6 -6
  306. package/{tools-CACuuMV4.cjs.map → tools-aNbi6JyA.cjs.map} +1 -1
  307. package/{toon-CCjuuzd_.mjs → toon-BSTQnHed.mjs} +6 -6
  308. package/{toon-CCjuuzd_.mjs.map → toon-BSTQnHed.mjs.map} +1 -1
  309. package/{toon-B7Q9RWJF.cjs → toon-DmLwZ6H1.cjs} +6 -6
  310. package/{toon-B7Q9RWJF.cjs.map → toon-DmLwZ6H1.cjs.map} +1 -1
  311. package/{transformers_js-DM01eAzh.cjs → transformers_js-7OzeS_Tp.cjs} +2 -2
  312. package/{transformers_js-DM01eAzh.cjs.map → transformers_js-7OzeS_Tp.cjs.map} +1 -1
  313. package/{transformers_js-BR2Ov0Su.mjs → transformers_js-p3lAkHFH.mjs} +2 -2
  314. package/{transformers_js-BR2Ov0Su.mjs.map → transformers_js-p3lAkHFH.mjs.map} +1 -1
  315. package/{turn_runner-BgPw9uqb.mjs → turn_runner-BHHD6h77.mjs} +4 -4
  316. package/{turn_runner-BgPw9uqb.mjs.map → turn_runner-BHHD6h77.mjs.map} +1 -1
  317. package/{turn_runner-CP2zxSlu.cjs → turn_runner-Dj7JsUTQ.cjs} +4 -4
  318. package/{turn_runner-CP2zxSlu.cjs.map → turn_runner-Dj7JsUTQ.cjs.map} +1 -1
  319. package/turn_runner.cjs +1 -1
  320. package/turn_runner.mjs +1 -1
  321. package/{xml-BqTTIFhv.mjs → xml-CYseDztH.mjs} +6 -6
  322. package/{xml-BqTTIFhv.mjs.map → xml-CYseDztH.mjs.map} +1 -1
  323. package/{xml-viE54OTe.cjs → xml-zJul8jMQ.cjs} +6 -6
  324. package/{xml-viE54OTe.cjs.map → xml-zJul8jMQ.cjs.map} +1 -1
  325. package/{yaml-B1So-pUR.mjs → yaml-BPBoiOjx.mjs} +6 -6
  326. package/{yaml-B1So-pUR.mjs.map → yaml-BPBoiOjx.mjs.map} +1 -1
  327. package/{yaml-cGhhPyZq.cjs → yaml-D0PzoRAr.cjs} +6 -6
  328. package/{yaml-cGhhPyZq.cjs.map → yaml-D0PzoRAr.cjs.map} +1 -1
  329. package/artifact_methods-9BemAvd4.mjs +0 -1
  330. package/artifact_methods-FKgk4q_1.cjs +0 -1
  331. package/spooled_artifact-B710Rb0d.mjs.map +0 -1
  332. package/spooled_artifact-CFjf6ULg.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite_vec.cjs","names":["#opts","#_cache","#_dims"],"sources":["../../../src/batteries/vector/sqlite_vec/index.ts"],"sourcesContent":["/**\n * @module @nhtio/adk/batteries/vector/sqlite_vec\n */\n\nimport { evaluateFilter } from '../filters'\nimport { normalizeScore } from '../helpers'\nimport { validateRecords } from '../validation'\nimport { BaseVectorStore, CallableVectorStore } from '../contract'\nimport {\n E_VECTOR_STORE_DRIVER_UNAVAILABLE,\n E_VECTOR_STORE_CONNECTION_FAILED,\n E_VECTOR_STORE_COLLECTION_FAILED,\n E_VECTOR_STORE_UPSERT_FAILED,\n E_VECTOR_STORE_SEARCH_FAILED,\n E_VECTOR_STORE_DELETE_FAILED,\n E_VECTOR_STORE_DIMENSION_MISMATCH,\n} from '../exceptions'\nimport type { SearchPlan, UpsertPlan, DeletePlan, CollectionSpec } from '../plan'\nimport type { VectorMatch, VectorStoreCapabilities, BaseVectorStoreOptions } from '../types'\n\n/** Construction options for {@link SqliteVecVectorStore}. */\nexport interface SqliteVecVectorStoreOptions extends BaseVectorStoreOptions {\n /** Database location: a filesystem path, or `':memory:'` for an in-memory database. */\n connection: {\n path: string\n }\n}\n\ninterface VecRow {\n rowid: bigint\n distance: number\n}\n\ninterface CachedStore {\n db: any\n drivers?: { Database: any; sqliteVec: any }\n}\n\nexport class SqliteVecVectorStore extends BaseVectorStore {\n readonly capabilities: VectorStoreCapabilities = {\n transactions: true,\n namedVectors: false,\n rename: true,\n rawSql: true,\n builtInEncoding: false,\n // Strongly consistent (local file/in-memory): visible on resolve, so the option is a no-op.\n consistency: { configurable: false, default: 'strong', modes: ['strong'] },\n }\n\n #_cache: CachedStore | null = null\n #_dims: Map<string, number> = new Map()\n\n constructor(options: SqliteVecVectorStoreOptions) {\n super(options)\n }\n\n get #opts(): SqliteVecVectorStoreOptions {\n return this.options as SqliteVecVectorStoreOptions\n }\n\n /** Static availability probe: whether this adapter's runtime driver can load in the current environment. */\n static isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n\n async connect(): Promise<void> {\n if (this.#_cache) {\n return\n }\n\n let Database: any\n let sqliteVec: any\n\n try {\n const mod1 = await import('better-sqlite3')\n Database = mod1.default\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n try {\n sqliteVec = await import('sqlite-vec')\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n const path = this.#opts.connection?.path ?? ':memory:'\n let db: any\n\n try {\n db = new Database(path)\n } catch (e: any) {\n throw new E_VECTOR_STORE_CONNECTION_FAILED([e?.message ?? String(e)])\n }\n\n sqliteVec.load(db)\n\n this.#_cache = { db, drivers: { Database, sqliteVec } }\n }\n\n async close(): Promise<void> {\n if (this.#_cache?.db) {\n this.#_cache.db.close()\n this.#_cache = null\n }\n }\n\n /** The underlying SQLite database handle; throws if the store is not connected. */\n get db(): any {\n if (!this.#_cache?.db) {\n throw new Error('Not connected')\n }\n return this.#_cache.db\n }\n\n async createCollection(spec: CollectionSpec, ifNotExists: boolean): Promise<void> {\n await this.connect()\n const { collection, vector } = spec\n const dims = vector.dimensions\n const tbl = `\"${collection}\"`\n const metaTbl = `\"${collection}__meta\"`\n\n const { db } = this\n\n const exists = await this.hasCollection(collection)\n if (!ifNotExists && exists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', 'collection exists'])\n }\n\n try {\n db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS ${tbl} USING vec0(embedding float[${dims}])`)\n db.exec(\n `CREATE TABLE IF NOT EXISTS ${metaTbl} (rowid INTEGER PRIMARY KEY, id TEXT UNIQUE, document TEXT, metadata TEXT)`\n )\n this.#_dims.set(collection, dims)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', e?.message ?? String(e)])\n }\n }\n\n async dropCollection(collection: string, ifExists: boolean): Promise<void> {\n await this.connect()\n const tbl = `\"${collection}\"`\n const metaTbl = `\"${collection}__meta\"`\n\n const has = await this.hasCollection(collection)\n if (!has) {\n if (!ifExists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', 'collection does not exist'])\n }\n return\n }\n\n const { db } = this\n try {\n db.exec(`DROP TABLE IF EXISTS ${tbl}`)\n db.exec(`DROP TABLE IF EXISTS ${metaTbl}`)\n this.#_dims.delete(collection)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', e?.message ?? String(e)])\n }\n }\n\n async hasCollection(collection: string): Promise<boolean> {\n await this.connect()\n const { db } = this\n try {\n const res: any = db\n .prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`)\n .get(collection)\n return !!res?.name\n } catch {\n return false\n }\n }\n\n async renameCollection(from: string, to: string): Promise<void> {\n await this.connect()\n const hasFrom = await this.hasCollection(from)\n if (!hasFrom) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['rename', 'source collection does not exist'])\n }\n\n const hasTo = await this.hasCollection(to)\n if (hasTo) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['rename', 'target collection already exists'])\n }\n\n const { db } = this\n try {\n db.exec(`ALTER TABLE \"${from}\" RENAME TO \"${to}\"`)\n db.exec(`ALTER TABLE \"${from}__meta\" RENAME TO \"${to}__meta\"`)\n const dims = this.#_dims.get(from)\n if (dims !== undefined) {\n this.#_dims.set(to, dims)\n this.#_dims.delete(from)\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['rename', e?.message ?? String(e)])\n }\n }\n\n async executeUpsert(plan: UpsertPlan): Promise<void> {\n await this.connect()\n validateRecords(plan.records)\n\n const collection = plan.collection\n const dims = this.#_dims.get(collection)\n const { db } = this\n\n const resolvedRows: {\n id: string\n vector: number[]\n document?: string\n metadata?: Record<string, unknown>\n }[] = []\n\n for (const r of plan.records) {\n let vector = r.vector\n if (!vector && r.document) {\n const [v] = await this.encode([r.document], 'document')\n vector = v\n }\n\n if (vector && dims !== undefined && vector.length !== dims) {\n throw new E_VECTOR_STORE_DIMENSION_MISMATCH([dims, vector.length])\n }\n\n resolvedRows.push({\n id: r.id,\n vector: vector ?? [],\n document: r.document,\n metadata: r.metadata as Record<string, unknown> | undefined,\n })\n }\n\n const stmtMetaInsert = db.prepare(\n `INSERT INTO \"${collection}__meta\" (id, document, metadata) VALUES (?, ?, ?)`\n )\n const stmtMetaUpdate = db.prepare(\n `UPDATE \"${collection}__meta\" SET document = ?, metadata = ? WHERE id = ?`\n )\n const stmtRowid = db.prepare(`SELECT rowid FROM \"${collection}__meta\" WHERE id = ?`)\n const stmtVecDelete = db.prepare(`DELETE FROM \"${collection}\" WHERE rowid = ?`)\n const stmtVecInsert = db.prepare(`INSERT INTO \"${collection}\" (rowid, embedding) VALUES (?, ?)`)\n\n const txn = db.transaction(() => {\n for (const r of resolvedRows) {\n const buf = new Float32Array(r.vector)\n let rowid: bigint | undefined\n\n const rowidRes: any = stmtRowid.get(r.id)\n if (rowidRes?.rowid) {\n rowid = BigInt(rowidRes.rowid)\n stmtMetaUpdate.run(r.document ?? null, JSON.stringify(r.metadata ?? {}), r.id)\n stmtVecDelete.run(rowid)\n stmtVecInsert.run(rowid, buf)\n } else {\n const insertMeta = stmtMetaInsert.run(\n r.id,\n r.document ?? null,\n JSON.stringify(r.metadata ?? {})\n )\n rowid = BigInt(insertMeta.lastInsertRowid)\n stmtVecInsert.run(rowid, buf)\n }\n }\n })\n\n try {\n txn()\n } catch (e: any) {\n throw new E_VECTOR_STORE_UPSERT_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeSearch(plan: SearchPlan): Promise<VectorMatch[]> {\n await this.connect()\n const { db } = this\n const collection = plan.collection\n const tbl = `\"${collection}\"`\n const metaTbl = `\"${collection}__meta\"`\n\n const near = plan.near\n const limit = (plan.offset ?? 0) + plan.topK\n\n try {\n if (near) {\n let qvec: number[] | undefined\n\n if ('vector' in near) {\n qvec = near.vector\n } else if ('serverText' in near) {\n const [v] = await this.encode([near.serverText], 'query')\n qvec = v\n } else if ('id' in near) {\n const refRow: any = db.prepare(`SELECT rowid FROM ${metaTbl} WHERE id = ?`).get(near.id)\n if (refRow?.rowid) {\n const refVecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(refRow.rowid))\n if (refVecRes?.embedding) {\n qvec = Array.from(new Float32Array(refVecRes.embedding.buffer || refVecRes.embedding))\n }\n }\n }\n\n if (!qvec) {\n throw new E_VECTOR_STORE_SEARCH_FAILED(['no query vector provided'])\n }\n\n const matchClause = `embedding MATCH ? ORDER BY distance LIMIT ${limit}`\n const matchBuf = new Float32Array(qvec)\n\n const matches: VecRow[] = []\n const stmtMatch = db.prepare(`SELECT rowid, distance FROM ${tbl} WHERE ${matchClause}`)\n for (const row of stmtMatch.iterate(matchBuf)) {\n matches.push({ rowid: BigInt(row.rowid), distance: row.distance })\n }\n\n let results: VectorMatch[] = []\n for (const m of matches) {\n const meta: any = db\n .prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (!meta) {\n continue\n }\n\n const parsedMeta =\n typeof meta.metadata === 'string' ? JSON.parse(meta.metadata) : meta.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n let score = normalizeScore(\n Number(m.distance),\n this.options.metric ?? 'euclidean',\n 'distance'\n )\n\n const proj: VectorMatch = {}\n if (plan.projection.id) proj.id = meta.id\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (vecRes?.embedding) {\n proj.vector = Array.from(\n new Float32Array(vecRes.embedding.buffer || vecRes.embedding)\n )\n }\n }\n if (plan.projection.document && meta.document !== undefined) proj.document = meta.document\n if (plan.projection.metadata && parsedMeta !== undefined)\n proj.metadata = parsedMeta as any\n if (score !== undefined) proj.score = score\n results.push(proj)\n }\n\n const offset = plan.offset ?? 0\n return results.slice(offset, offset + plan.topK)\n } else {\n const rows: any[] = db.prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl}`).all()\n let scored: { row: any; score?: number }[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n scored.push({ row, score: undefined })\n }\n\n const offset = plan.offset ?? 0\n const limited = scored.slice(offset, offset + plan.topK)\n\n return limited.map(({ row }) => {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n const out: VectorMatch = {}\n\n if (plan.projection.id) out.id = row.id\n\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(row.rowid))\n if (vecRes?.embedding) {\n out.vector = Array.from(new Float32Array(vecRes.embedding.buffer || vecRes.embedding))\n }\n }\n\n if (plan.projection.document && row.document !== undefined) out.document = row.document\n if (plan.projection.metadata && parsedMeta !== undefined) out.metadata = parsedMeta as any\n\n return out\n })\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_SEARCH_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeDelete(plan: DeletePlan): Promise<void> {\n await this.connect()\n const collection = plan.collection\n const metaTbl = `\"${collection}__meta\"`\n const tbl = `\"${collection}\"`\n\n const { db } = this\n\n try {\n if (plan.ids && plan.ids.length > 0) {\n const stmtIds = db.prepare(\n `SELECT rowid, metadata FROM ${metaTbl} WHERE id IN (${plan.ids.map(() => '?').join(', ')})`\n )\n const rowids: bigint[] = stmtIds.all(...plan.ids).map((r: any) => BigInt(r.rowid))\n if (rowids.length > 0) {\n const rowidPlaceholders = rowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n }\n } else if (plan.filter) {\n const rows: any[] = db.prepare(`SELECT rowid, metadata FROM ${metaTbl}`).all()\n const toDeleteRowids: bigint[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n if (evaluateFilter(plan.filter, parsedMeta as any)) {\n toDeleteRowids.push(BigInt(row.rowid))\n }\n }\n\n if (toDeleteRowids.length > 0) {\n const rowidPlaceholders = toDeleteRowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n }\n } else {\n db.exec(`DELETE FROM ${metaTbl}`)\n db.exec(`DELETE FROM ${tbl}`)\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_DELETE_FAILED([e?.message ?? String(e)])\n }\n }\n\n async transaction(fn: (tx: CallableVectorStore) => Promise<void>): Promise<void> {\n await this.connect()\n const { db } = this\n\n db.exec('BEGIN')\n try {\n await fn(this.asCallable())\n db.exec('COMMIT')\n } catch (e) {\n db.exec('ROLLBACK')\n throw e\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sqlite_vec.cjs","names":["#opts","#_cache","#_dims"],"sources":["../../../src/batteries/vector/sqlite_vec/index.ts"],"sourcesContent":["/**\n * @module @nhtio/adk/batteries/vector/sqlite_vec\n */\n\nimport { evaluateFilter } from '../filters'\nimport { normalizeScore } from '../helpers'\nimport { validateRecords } from '../validation'\nimport { BaseVectorStore, CallableVectorStore } from '../contract'\nimport {\n E_VECTOR_STORE_DRIVER_UNAVAILABLE,\n E_VECTOR_STORE_CONNECTION_FAILED,\n E_VECTOR_STORE_COLLECTION_FAILED,\n E_VECTOR_STORE_UPSERT_FAILED,\n E_VECTOR_STORE_SEARCH_FAILED,\n E_VECTOR_STORE_DELETE_FAILED,\n E_VECTOR_STORE_DIMENSION_MISMATCH,\n E_VECTOR_STORE_UNSUPPORTED_OPERATION,\n} from '../exceptions'\nimport type { SearchPlan, UpsertPlan, DeletePlan, CollectionSpec } from '../plan'\nimport type { VectorMatch, VectorStoreCapabilities, BaseVectorStoreOptions } from '../types'\n\n// A double-quoted SQL identifier (table/column), escaping embedded quotes.\nconst ident = (name: string): string => `\"${name.replace(/\"/g, '\"\"')}\"`\n\n/** Construction options for {@link SqliteVecVectorStore}. */\nexport interface SqliteVecVectorStoreOptions extends BaseVectorStoreOptions {\n /** Database location: a filesystem path, or `':memory:'` for an in-memory database. */\n connection: {\n path: string\n }\n}\n\ninterface VecRow {\n rowid: bigint\n distance: number\n}\n\ninterface CachedStore {\n db: any\n drivers?: { Database: any; sqliteVec: any }\n}\n\nexport class SqliteVecVectorStore extends BaseVectorStore {\n readonly capabilities: VectorStoreCapabilities = {\n transactions: true,\n namedVectors: false,\n // sqlite-vec 0.1.9 implements no `xRename` hook, so `ALTER TABLE … RENAME TO` on the vec0 table\n // succeeds but renames only the virtual table's own entry, never its shadow tables\n // (`_chunks`/`_info`/`_rowids`/`_vector_chunks00`), so a\n // \"renamed\" collection is left unsearchable (`no such table: main.<new>_chunks`) with no error\n // at rename time. Finishing the job by hand isn't possible either — the core shadow tables\n // (`_chunks`/`_info`/`_rowids`) reject a direct rename outright (`table <name>_chunks may not be\n // altered`). sqlite-vec 0.1.9 has no supported rename, so renameCollection throws instead of\n // leaving a broken collection.\n rename: false,\n rawSql: true,\n builtInEncoding: false,\n // Strongly consistent (local file/in-memory): visible on resolve, so the option is a no-op.\n consistency: { configurable: false, default: 'strong', modes: ['strong'] },\n }\n\n #_cache: CachedStore | null = null\n #_dims: Map<string, number> = new Map()\n\n constructor(options: SqliteVecVectorStoreOptions) {\n super(options)\n }\n\n get #opts(): SqliteVecVectorStoreOptions {\n return this.options as SqliteVecVectorStoreOptions\n }\n\n /** Static availability probe: whether this adapter's runtime driver can load in the current environment. */\n static isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n\n async connect(): Promise<void> {\n if (this.#_cache) {\n return\n }\n\n let Database: any\n let sqliteVec: any\n\n try {\n const mod1 = await import('better-sqlite3')\n Database = mod1.default\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n try {\n sqliteVec = await import('sqlite-vec')\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n const path = this.#opts.connection?.path ?? ':memory:'\n let db: any\n\n try {\n db = new Database(path)\n } catch (e: any) {\n throw new E_VECTOR_STORE_CONNECTION_FAILED([e?.message ?? String(e)])\n }\n\n sqliteVec.load(db)\n\n this.#_cache = { db, drivers: { Database, sqliteVec } }\n }\n\n async close(): Promise<void> {\n if (this.#_cache?.db) {\n this.#_cache.db.close()\n this.#_cache = null\n }\n }\n\n /** The underlying SQLite database handle; throws if the store is not connected. */\n get db(): any {\n if (!this.#_cache?.db) {\n throw new Error('Not connected')\n }\n return this.#_cache.db\n }\n\n async createCollection(spec: CollectionSpec, ifNotExists: boolean): Promise<void> {\n await this.connect()\n const { collection, vector } = spec\n const dims = vector.dimensions\n const tbl = ident(collection)\n const metaTbl = ident(collection + '__meta')\n\n const { db } = this\n\n const exists = await this.hasCollection(collection)\n if (!ifNotExists && exists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', 'collection exists'])\n }\n\n try {\n db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS ${tbl} USING vec0(embedding float[${dims}])`)\n db.exec(\n `CREATE TABLE IF NOT EXISTS ${metaTbl} (rowid INTEGER PRIMARY KEY, id TEXT UNIQUE, document TEXT, metadata TEXT)`\n )\n this.#_dims.set(collection, dims)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', e?.message ?? String(e)])\n }\n }\n\n async dropCollection(collection: string, ifExists: boolean): Promise<void> {\n await this.connect()\n const tbl = ident(collection)\n const metaTbl = ident(collection + '__meta')\n\n const has = await this.hasCollection(collection)\n if (!has) {\n if (!ifExists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', 'collection does not exist'])\n }\n return\n }\n\n const { db } = this\n try {\n db.exec(`DROP TABLE IF EXISTS ${tbl}`)\n db.exec(`DROP TABLE IF EXISTS ${metaTbl}`)\n this.#_dims.delete(collection)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', e?.message ?? String(e)])\n }\n }\n\n async hasCollection(collection: string): Promise<boolean> {\n await this.connect()\n const { db } = this\n try {\n const res: any = db\n .prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`)\n .get(collection)\n return !!res?.name\n } catch {\n return false\n }\n }\n\n async renameCollection(_from: string, _to: string): Promise<void> {\n // With no `xRename` hook in sqlite-vec 0.1.9, `ALTER TABLE … RENAME TO` on the vec0 table would\n // succeed but leave its shadow tables behind under the old name, and the core shadow tables\n // (`_chunks`/`_info`/`_rowids`) reject a direct rename outright (`table <name>_chunks may not be\n // altered`). There is no way to finish the job, so there is no supported rename.\n throw new E_VECTOR_STORE_UNSUPPORTED_OPERATION(['renameCollection', 'sqlite_vec'])\n }\n\n async executeUpsert(plan: UpsertPlan): Promise<void> {\n await this.connect()\n validateRecords(plan.records)\n\n const collection = plan.collection\n const dims = this.#_dims.get(collection)\n const { db } = this\n\n const resolvedRows: {\n id: string\n vector: number[]\n document?: string\n metadata?: Record<string, unknown>\n }[] = []\n\n for (const r of plan.records) {\n let vector = r.vector\n if (!vector && r.document) {\n const [v] = await this.encode([r.document], 'document')\n vector = v\n }\n\n if (vector && dims !== undefined && vector.length !== dims) {\n throw new E_VECTOR_STORE_DIMENSION_MISMATCH([dims, vector.length])\n }\n\n resolvedRows.push({\n id: r.id,\n vector: vector ?? [],\n document: r.document,\n metadata: r.metadata as Record<string, unknown> | undefined,\n })\n }\n\n const metaTbl = ident(collection + '__meta')\n const tbl = ident(collection)\n\n const stmtMetaInsert = db.prepare(\n `INSERT INTO ${metaTbl} (id, document, metadata) VALUES (?, ?, ?)`\n )\n const stmtMetaUpdate = db.prepare(\n `UPDATE ${metaTbl} SET document = ?, metadata = ? WHERE id = ?`\n )\n const stmtRowid = db.prepare(`SELECT rowid FROM ${metaTbl} WHERE id = ?`)\n const stmtVecDelete = db.prepare(`DELETE FROM ${tbl} WHERE rowid = ?`)\n const stmtVecInsert = db.prepare(`INSERT INTO ${tbl} (rowid, embedding) VALUES (?, ?)`)\n\n const txn = db.transaction(() => {\n for (const r of resolvedRows) {\n const buf = new Float32Array(r.vector)\n let rowid: bigint | undefined\n\n const rowidRes: any = stmtRowid.get(r.id)\n if (rowidRes?.rowid) {\n rowid = BigInt(rowidRes.rowid)\n stmtMetaUpdate.run(r.document ?? null, JSON.stringify(r.metadata ?? {}), r.id)\n stmtVecDelete.run(rowid)\n stmtVecInsert.run(rowid, buf)\n } else {\n const insertMeta = stmtMetaInsert.run(\n r.id,\n r.document ?? null,\n JSON.stringify(r.metadata ?? {})\n )\n rowid = BigInt(insertMeta.lastInsertRowid)\n stmtVecInsert.run(rowid, buf)\n }\n }\n })\n\n try {\n txn()\n } catch (e: any) {\n throw new E_VECTOR_STORE_UPSERT_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeSearch(plan: SearchPlan): Promise<VectorMatch[]> {\n await this.connect()\n const { db } = this\n const collection = plan.collection\n const tbl = ident(collection)\n const metaTbl = ident(collection + '__meta')\n\n const near = plan.near\n const limit = (plan.offset ?? 0) + plan.topK\n\n try {\n if (near) {\n let qvec: number[] | undefined\n\n if ('vector' in near) {\n qvec = near.vector\n } else if ('serverText' in near) {\n const [v] = await this.encode([near.serverText], 'query')\n qvec = v\n } else if ('id' in near) {\n const refRow: any = db.prepare(`SELECT rowid FROM ${metaTbl} WHERE id = ?`).get(near.id)\n if (refRow?.rowid) {\n const refVecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(refRow.rowid))\n if (refVecRes?.embedding) {\n qvec = Array.from(new Float32Array(refVecRes.embedding.buffer || refVecRes.embedding))\n }\n }\n }\n\n if (!qvec) {\n throw new E_VECTOR_STORE_SEARCH_FAILED(['no query vector provided'])\n }\n\n const matchClause = `embedding MATCH ? ORDER BY distance LIMIT ${limit}`\n const matchBuf = new Float32Array(qvec)\n\n const matches: VecRow[] = []\n const stmtMatch = db.prepare(`SELECT rowid, distance FROM ${tbl} WHERE ${matchClause}`)\n for (const row of stmtMatch.iterate(matchBuf)) {\n matches.push({ rowid: BigInt(row.rowid), distance: row.distance })\n }\n\n let results: VectorMatch[] = []\n for (const m of matches) {\n const meta: any = db\n .prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (!meta) {\n continue\n }\n\n const parsedMeta =\n typeof meta.metadata === 'string' ? JSON.parse(meta.metadata) : meta.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n let score = normalizeScore(\n Number(m.distance),\n this.options.metric ?? 'euclidean',\n 'distance'\n )\n\n const proj: VectorMatch = {}\n if (plan.projection.id) proj.id = meta.id\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (vecRes?.embedding) {\n proj.vector = Array.from(\n new Float32Array(vecRes.embedding.buffer || vecRes.embedding)\n )\n }\n }\n if (plan.projection.document && meta.document !== undefined) proj.document = meta.document\n if (plan.projection.metadata && parsedMeta !== undefined)\n proj.metadata = parsedMeta as any\n if (score !== undefined) proj.score = score\n results.push(proj)\n }\n\n const offset = plan.offset ?? 0\n return results.slice(offset, offset + plan.topK)\n } else {\n const rows: any[] = db.prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl}`).all()\n let scored: { row: any; score?: number }[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n scored.push({ row, score: undefined })\n }\n\n const offset = plan.offset ?? 0\n const limited = scored.slice(offset, offset + plan.topK)\n\n return limited.map(({ row }) => {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n const out: VectorMatch = {}\n\n if (plan.projection.id) out.id = row.id\n\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(row.rowid))\n if (vecRes?.embedding) {\n out.vector = Array.from(new Float32Array(vecRes.embedding.buffer || vecRes.embedding))\n }\n }\n\n if (plan.projection.document && row.document !== undefined) out.document = row.document\n if (plan.projection.metadata && parsedMeta !== undefined) out.metadata = parsedMeta as any\n\n return out\n })\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_SEARCH_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeDelete(plan: DeletePlan): Promise<void> {\n await this.connect()\n const collection = plan.collection\n const metaTbl = ident(collection + '__meta')\n const tbl = ident(collection)\n\n const { db } = this\n\n try {\n if (plan.ids && plan.ids.length > 0) {\n const stmtIds = db.prepare(\n `SELECT rowid, metadata FROM ${metaTbl} WHERE id IN (${plan.ids.map(() => '?').join(', ')})`\n )\n const rowids: bigint[] = stmtIds.all(...plan.ids).map((r: any) => BigInt(r.rowid))\n if (rowids.length > 0) {\n const rowidPlaceholders = rowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n }\n } else if (plan.filter) {\n const rows: any[] = db.prepare(`SELECT rowid, metadata FROM ${metaTbl}`).all()\n const toDeleteRowids: bigint[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n if (evaluateFilter(plan.filter, parsedMeta as any)) {\n toDeleteRowids.push(BigInt(row.rowid))\n }\n }\n\n if (toDeleteRowids.length > 0) {\n const rowidPlaceholders = toDeleteRowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n }\n } else {\n db.exec(`DELETE FROM ${metaTbl}`)\n db.exec(`DELETE FROM ${tbl}`)\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_DELETE_FAILED([e?.message ?? String(e)])\n }\n }\n\n async transaction(fn: (tx: CallableVectorStore) => Promise<void>): Promise<void> {\n await this.connect()\n const { db } = this\n\n db.exec('BEGIN')\n try {\n await fn(this.asCallable())\n db.exec('COMMIT')\n } catch (e) {\n db.exec('ROLLBACK')\n throw e\n }\n }\n}\n"],"mappings":"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"}
@@ -1,17 +1,18 @@
1
1
  import { evaluateFilter } from "./filters.mjs";
2
2
  import { normalizeScore } from "./helpers.mjs";
3
- import { E_VECTOR_STORE_COLLECTION_FAILED, E_VECTOR_STORE_CONNECTION_FAILED, E_VECTOR_STORE_DELETE_FAILED, E_VECTOR_STORE_DIMENSION_MISMATCH, E_VECTOR_STORE_DRIVER_UNAVAILABLE, E_VECTOR_STORE_SEARCH_FAILED, E_VECTOR_STORE_UPSERT_FAILED } from "./exceptions.mjs";
3
+ import { E_VECTOR_STORE_COLLECTION_FAILED, E_VECTOR_STORE_CONNECTION_FAILED, E_VECTOR_STORE_DELETE_FAILED, E_VECTOR_STORE_DIMENSION_MISMATCH, E_VECTOR_STORE_DRIVER_UNAVAILABLE, E_VECTOR_STORE_SEARCH_FAILED, E_VECTOR_STORE_UNSUPPORTED_OPERATION, E_VECTOR_STORE_UPSERT_FAILED } from "./exceptions.mjs";
4
4
  import { BaseVectorStore } from "./contract.mjs";
5
5
  import { validateRecords } from "./validation.mjs";
6
6
  //#region src/batteries/vector/sqlite_vec/index.ts
7
7
  /**
8
8
  * @module @nhtio/adk/batteries/vector/sqlite_vec
9
9
  */
10
+ var ident = (name) => `"${name.replace(/"/g, "\"\"")}"`;
10
11
  var SqliteVecVectorStore = class extends BaseVectorStore {
11
12
  capabilities = {
12
13
  transactions: true,
13
14
  namedVectors: false,
14
- rename: true,
15
+ rename: false,
15
16
  rawSql: true,
16
17
  builtInEncoding: false,
17
18
  consistency: {
@@ -80,8 +81,8 @@ var SqliteVecVectorStore = class extends BaseVectorStore {
80
81
  await this.connect();
81
82
  const { collection, vector } = spec;
82
83
  const dims = vector.dimensions;
83
- const tbl = `"${collection}"`;
84
- const metaTbl = `"${collection}__meta"`;
84
+ const tbl = ident(collection);
85
+ const metaTbl = ident(collection + "__meta");
85
86
  const { db } = this;
86
87
  const exists = await this.hasCollection(collection);
87
88
  if (!ifNotExists && exists) throw new E_VECTOR_STORE_COLLECTION_FAILED(["create", "collection exists"]);
@@ -95,8 +96,8 @@ var SqliteVecVectorStore = class extends BaseVectorStore {
95
96
  }
96
97
  async dropCollection(collection, ifExists) {
97
98
  await this.connect();
98
- const tbl = `"${collection}"`;
99
- const metaTbl = `"${collection}__meta"`;
99
+ const tbl = ident(collection);
100
+ const metaTbl = ident(collection + "__meta");
100
101
  if (!await this.hasCollection(collection)) {
101
102
  if (!ifExists) throw new E_VECTOR_STORE_COLLECTION_FAILED(["drop", "collection does not exist"]);
102
103
  return;
@@ -119,22 +120,8 @@ var SqliteVecVectorStore = class extends BaseVectorStore {
119
120
  return false;
120
121
  }
121
122
  }
122
- async renameCollection(from, to) {
123
- await this.connect();
124
- if (!await this.hasCollection(from)) throw new E_VECTOR_STORE_COLLECTION_FAILED(["rename", "source collection does not exist"]);
125
- if (await this.hasCollection(to)) throw new E_VECTOR_STORE_COLLECTION_FAILED(["rename", "target collection already exists"]);
126
- const { db } = this;
127
- try {
128
- db.exec(`ALTER TABLE "${from}" RENAME TO "${to}"`);
129
- db.exec(`ALTER TABLE "${from}__meta" RENAME TO "${to}__meta"`);
130
- const dims = this.#_dims.get(from);
131
- if (dims !== void 0) {
132
- this.#_dims.set(to, dims);
133
- this.#_dims.delete(from);
134
- }
135
- } catch (e) {
136
- throw new E_VECTOR_STORE_COLLECTION_FAILED(["rename", e?.message ?? String(e)]);
137
- }
123
+ async renameCollection(_from, _to) {
124
+ throw new E_VECTOR_STORE_UNSUPPORTED_OPERATION(["renameCollection", "sqlite_vec"]);
138
125
  }
139
126
  async executeUpsert(plan) {
140
127
  await this.connect();
@@ -157,11 +144,13 @@ var SqliteVecVectorStore = class extends BaseVectorStore {
157
144
  metadata: r.metadata
158
145
  });
159
146
  }
160
- const stmtMetaInsert = db.prepare(`INSERT INTO "${collection}__meta" (id, document, metadata) VALUES (?, ?, ?)`);
161
- const stmtMetaUpdate = db.prepare(`UPDATE "${collection}__meta" SET document = ?, metadata = ? WHERE id = ?`);
162
- const stmtRowid = db.prepare(`SELECT rowid FROM "${collection}__meta" WHERE id = ?`);
163
- const stmtVecDelete = db.prepare(`DELETE FROM "${collection}" WHERE rowid = ?`);
164
- const stmtVecInsert = db.prepare(`INSERT INTO "${collection}" (rowid, embedding) VALUES (?, ?)`);
147
+ const metaTbl = ident(collection + "__meta");
148
+ const tbl = ident(collection);
149
+ const stmtMetaInsert = db.prepare(`INSERT INTO ${metaTbl} (id, document, metadata) VALUES (?, ?, ?)`);
150
+ const stmtMetaUpdate = db.prepare(`UPDATE ${metaTbl} SET document = ?, metadata = ? WHERE id = ?`);
151
+ const stmtRowid = db.prepare(`SELECT rowid FROM ${metaTbl} WHERE id = ?`);
152
+ const stmtVecDelete = db.prepare(`DELETE FROM ${tbl} WHERE rowid = ?`);
153
+ const stmtVecInsert = db.prepare(`INSERT INTO ${tbl} (rowid, embedding) VALUES (?, ?)`);
165
154
  const txn = db.transaction(() => {
166
155
  for (const r of resolvedRows) {
167
156
  const buf = new Float32Array(r.vector);
@@ -189,8 +178,8 @@ var SqliteVecVectorStore = class extends BaseVectorStore {
189
178
  await this.connect();
190
179
  const { db } = this;
191
180
  const collection = plan.collection;
192
- const tbl = `"${collection}"`;
193
- const metaTbl = `"${collection}__meta"`;
181
+ const tbl = ident(collection);
182
+ const metaTbl = ident(collection + "__meta");
194
183
  const near = plan.near;
195
184
  const limit = (plan.offset ?? 0) + plan.topK;
196
185
  try {
@@ -268,8 +257,8 @@ var SqliteVecVectorStore = class extends BaseVectorStore {
268
257
  async executeDelete(plan) {
269
258
  await this.connect();
270
259
  const collection = plan.collection;
271
- const metaTbl = `"${collection}__meta"`;
272
- const tbl = `"${collection}"`;
260
+ const metaTbl = ident(collection + "__meta");
261
+ const tbl = ident(collection);
273
262
  const { db } = this;
274
263
  try {
275
264
  if (plan.ids && plan.ids.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite_vec.mjs","names":["#opts","#_cache","#_dims"],"sources":["../../../src/batteries/vector/sqlite_vec/index.ts"],"sourcesContent":["/**\n * @module @nhtio/adk/batteries/vector/sqlite_vec\n */\n\nimport { evaluateFilter } from '../filters'\nimport { normalizeScore } from '../helpers'\nimport { validateRecords } from '../validation'\nimport { BaseVectorStore, CallableVectorStore } from '../contract'\nimport {\n E_VECTOR_STORE_DRIVER_UNAVAILABLE,\n E_VECTOR_STORE_CONNECTION_FAILED,\n E_VECTOR_STORE_COLLECTION_FAILED,\n E_VECTOR_STORE_UPSERT_FAILED,\n E_VECTOR_STORE_SEARCH_FAILED,\n E_VECTOR_STORE_DELETE_FAILED,\n E_VECTOR_STORE_DIMENSION_MISMATCH,\n} from '../exceptions'\nimport type { SearchPlan, UpsertPlan, DeletePlan, CollectionSpec } from '../plan'\nimport type { VectorMatch, VectorStoreCapabilities, BaseVectorStoreOptions } from '../types'\n\n/** Construction options for {@link SqliteVecVectorStore}. */\nexport interface SqliteVecVectorStoreOptions extends BaseVectorStoreOptions {\n /** Database location: a filesystem path, or `':memory:'` for an in-memory database. */\n connection: {\n path: string\n }\n}\n\ninterface VecRow {\n rowid: bigint\n distance: number\n}\n\ninterface CachedStore {\n db: any\n drivers?: { Database: any; sqliteVec: any }\n}\n\nexport class SqliteVecVectorStore extends BaseVectorStore {\n readonly capabilities: VectorStoreCapabilities = {\n transactions: true,\n namedVectors: false,\n rename: true,\n rawSql: true,\n builtInEncoding: false,\n // Strongly consistent (local file/in-memory): visible on resolve, so the option is a no-op.\n consistency: { configurable: false, default: 'strong', modes: ['strong'] },\n }\n\n #_cache: CachedStore | null = null\n #_dims: Map<string, number> = new Map()\n\n constructor(options: SqliteVecVectorStoreOptions) {\n super(options)\n }\n\n get #opts(): SqliteVecVectorStoreOptions {\n return this.options as SqliteVecVectorStoreOptions\n }\n\n /** Static availability probe: whether this adapter's runtime driver can load in the current environment. */\n static isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n\n async connect(): Promise<void> {\n if (this.#_cache) {\n return\n }\n\n let Database: any\n let sqliteVec: any\n\n try {\n const mod1 = await import('better-sqlite3')\n Database = mod1.default\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n try {\n sqliteVec = await import('sqlite-vec')\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n const path = this.#opts.connection?.path ?? ':memory:'\n let db: any\n\n try {\n db = new Database(path)\n } catch (e: any) {\n throw new E_VECTOR_STORE_CONNECTION_FAILED([e?.message ?? String(e)])\n }\n\n sqliteVec.load(db)\n\n this.#_cache = { db, drivers: { Database, sqliteVec } }\n }\n\n async close(): Promise<void> {\n if (this.#_cache?.db) {\n this.#_cache.db.close()\n this.#_cache = null\n }\n }\n\n /** The underlying SQLite database handle; throws if the store is not connected. */\n get db(): any {\n if (!this.#_cache?.db) {\n throw new Error('Not connected')\n }\n return this.#_cache.db\n }\n\n async createCollection(spec: CollectionSpec, ifNotExists: boolean): Promise<void> {\n await this.connect()\n const { collection, vector } = spec\n const dims = vector.dimensions\n const tbl = `\"${collection}\"`\n const metaTbl = `\"${collection}__meta\"`\n\n const { db } = this\n\n const exists = await this.hasCollection(collection)\n if (!ifNotExists && exists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', 'collection exists'])\n }\n\n try {\n db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS ${tbl} USING vec0(embedding float[${dims}])`)\n db.exec(\n `CREATE TABLE IF NOT EXISTS ${metaTbl} (rowid INTEGER PRIMARY KEY, id TEXT UNIQUE, document TEXT, metadata TEXT)`\n )\n this.#_dims.set(collection, dims)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', e?.message ?? String(e)])\n }\n }\n\n async dropCollection(collection: string, ifExists: boolean): Promise<void> {\n await this.connect()\n const tbl = `\"${collection}\"`\n const metaTbl = `\"${collection}__meta\"`\n\n const has = await this.hasCollection(collection)\n if (!has) {\n if (!ifExists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', 'collection does not exist'])\n }\n return\n }\n\n const { db } = this\n try {\n db.exec(`DROP TABLE IF EXISTS ${tbl}`)\n db.exec(`DROP TABLE IF EXISTS ${metaTbl}`)\n this.#_dims.delete(collection)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', e?.message ?? String(e)])\n }\n }\n\n async hasCollection(collection: string): Promise<boolean> {\n await this.connect()\n const { db } = this\n try {\n const res: any = db\n .prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`)\n .get(collection)\n return !!res?.name\n } catch {\n return false\n }\n }\n\n async renameCollection(from: string, to: string): Promise<void> {\n await this.connect()\n const hasFrom = await this.hasCollection(from)\n if (!hasFrom) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['rename', 'source collection does not exist'])\n }\n\n const hasTo = await this.hasCollection(to)\n if (hasTo) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['rename', 'target collection already exists'])\n }\n\n const { db } = this\n try {\n db.exec(`ALTER TABLE \"${from}\" RENAME TO \"${to}\"`)\n db.exec(`ALTER TABLE \"${from}__meta\" RENAME TO \"${to}__meta\"`)\n const dims = this.#_dims.get(from)\n if (dims !== undefined) {\n this.#_dims.set(to, dims)\n this.#_dims.delete(from)\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['rename', e?.message ?? String(e)])\n }\n }\n\n async executeUpsert(plan: UpsertPlan): Promise<void> {\n await this.connect()\n validateRecords(plan.records)\n\n const collection = plan.collection\n const dims = this.#_dims.get(collection)\n const { db } = this\n\n const resolvedRows: {\n id: string\n vector: number[]\n document?: string\n metadata?: Record<string, unknown>\n }[] = []\n\n for (const r of plan.records) {\n let vector = r.vector\n if (!vector && r.document) {\n const [v] = await this.encode([r.document], 'document')\n vector = v\n }\n\n if (vector && dims !== undefined && vector.length !== dims) {\n throw new E_VECTOR_STORE_DIMENSION_MISMATCH([dims, vector.length])\n }\n\n resolvedRows.push({\n id: r.id,\n vector: vector ?? [],\n document: r.document,\n metadata: r.metadata as Record<string, unknown> | undefined,\n })\n }\n\n const stmtMetaInsert = db.prepare(\n `INSERT INTO \"${collection}__meta\" (id, document, metadata) VALUES (?, ?, ?)`\n )\n const stmtMetaUpdate = db.prepare(\n `UPDATE \"${collection}__meta\" SET document = ?, metadata = ? WHERE id = ?`\n )\n const stmtRowid = db.prepare(`SELECT rowid FROM \"${collection}__meta\" WHERE id = ?`)\n const stmtVecDelete = db.prepare(`DELETE FROM \"${collection}\" WHERE rowid = ?`)\n const stmtVecInsert = db.prepare(`INSERT INTO \"${collection}\" (rowid, embedding) VALUES (?, ?)`)\n\n const txn = db.transaction(() => {\n for (const r of resolvedRows) {\n const buf = new Float32Array(r.vector)\n let rowid: bigint | undefined\n\n const rowidRes: any = stmtRowid.get(r.id)\n if (rowidRes?.rowid) {\n rowid = BigInt(rowidRes.rowid)\n stmtMetaUpdate.run(r.document ?? null, JSON.stringify(r.metadata ?? {}), r.id)\n stmtVecDelete.run(rowid)\n stmtVecInsert.run(rowid, buf)\n } else {\n const insertMeta = stmtMetaInsert.run(\n r.id,\n r.document ?? null,\n JSON.stringify(r.metadata ?? {})\n )\n rowid = BigInt(insertMeta.lastInsertRowid)\n stmtVecInsert.run(rowid, buf)\n }\n }\n })\n\n try {\n txn()\n } catch (e: any) {\n throw new E_VECTOR_STORE_UPSERT_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeSearch(plan: SearchPlan): Promise<VectorMatch[]> {\n await this.connect()\n const { db } = this\n const collection = plan.collection\n const tbl = `\"${collection}\"`\n const metaTbl = `\"${collection}__meta\"`\n\n const near = plan.near\n const limit = (plan.offset ?? 0) + plan.topK\n\n try {\n if (near) {\n let qvec: number[] | undefined\n\n if ('vector' in near) {\n qvec = near.vector\n } else if ('serverText' in near) {\n const [v] = await this.encode([near.serverText], 'query')\n qvec = v\n } else if ('id' in near) {\n const refRow: any = db.prepare(`SELECT rowid FROM ${metaTbl} WHERE id = ?`).get(near.id)\n if (refRow?.rowid) {\n const refVecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(refRow.rowid))\n if (refVecRes?.embedding) {\n qvec = Array.from(new Float32Array(refVecRes.embedding.buffer || refVecRes.embedding))\n }\n }\n }\n\n if (!qvec) {\n throw new E_VECTOR_STORE_SEARCH_FAILED(['no query vector provided'])\n }\n\n const matchClause = `embedding MATCH ? ORDER BY distance LIMIT ${limit}`\n const matchBuf = new Float32Array(qvec)\n\n const matches: VecRow[] = []\n const stmtMatch = db.prepare(`SELECT rowid, distance FROM ${tbl} WHERE ${matchClause}`)\n for (const row of stmtMatch.iterate(matchBuf)) {\n matches.push({ rowid: BigInt(row.rowid), distance: row.distance })\n }\n\n let results: VectorMatch[] = []\n for (const m of matches) {\n const meta: any = db\n .prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (!meta) {\n continue\n }\n\n const parsedMeta =\n typeof meta.metadata === 'string' ? JSON.parse(meta.metadata) : meta.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n let score = normalizeScore(\n Number(m.distance),\n this.options.metric ?? 'euclidean',\n 'distance'\n )\n\n const proj: VectorMatch = {}\n if (plan.projection.id) proj.id = meta.id\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (vecRes?.embedding) {\n proj.vector = Array.from(\n new Float32Array(vecRes.embedding.buffer || vecRes.embedding)\n )\n }\n }\n if (plan.projection.document && meta.document !== undefined) proj.document = meta.document\n if (plan.projection.metadata && parsedMeta !== undefined)\n proj.metadata = parsedMeta as any\n if (score !== undefined) proj.score = score\n results.push(proj)\n }\n\n const offset = plan.offset ?? 0\n return results.slice(offset, offset + plan.topK)\n } else {\n const rows: any[] = db.prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl}`).all()\n let scored: { row: any; score?: number }[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n scored.push({ row, score: undefined })\n }\n\n const offset = plan.offset ?? 0\n const limited = scored.slice(offset, offset + plan.topK)\n\n return limited.map(({ row }) => {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n const out: VectorMatch = {}\n\n if (plan.projection.id) out.id = row.id\n\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(row.rowid))\n if (vecRes?.embedding) {\n out.vector = Array.from(new Float32Array(vecRes.embedding.buffer || vecRes.embedding))\n }\n }\n\n if (plan.projection.document && row.document !== undefined) out.document = row.document\n if (plan.projection.metadata && parsedMeta !== undefined) out.metadata = parsedMeta as any\n\n return out\n })\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_SEARCH_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeDelete(plan: DeletePlan): Promise<void> {\n await this.connect()\n const collection = plan.collection\n const metaTbl = `\"${collection}__meta\"`\n const tbl = `\"${collection}\"`\n\n const { db } = this\n\n try {\n if (plan.ids && plan.ids.length > 0) {\n const stmtIds = db.prepare(\n `SELECT rowid, metadata FROM ${metaTbl} WHERE id IN (${plan.ids.map(() => '?').join(', ')})`\n )\n const rowids: bigint[] = stmtIds.all(...plan.ids).map((r: any) => BigInt(r.rowid))\n if (rowids.length > 0) {\n const rowidPlaceholders = rowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n }\n } else if (plan.filter) {\n const rows: any[] = db.prepare(`SELECT rowid, metadata FROM ${metaTbl}`).all()\n const toDeleteRowids: bigint[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n if (evaluateFilter(plan.filter, parsedMeta as any)) {\n toDeleteRowids.push(BigInt(row.rowid))\n }\n }\n\n if (toDeleteRowids.length > 0) {\n const rowidPlaceholders = toDeleteRowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n }\n } else {\n db.exec(`DELETE FROM ${metaTbl}`)\n db.exec(`DELETE FROM ${tbl}`)\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_DELETE_FAILED([e?.message ?? String(e)])\n }\n }\n\n async transaction(fn: (tx: CallableVectorStore) => Promise<void>): Promise<void> {\n await this.connect()\n const { db } = this\n\n db.exec('BEGIN')\n try {\n await fn(this.asCallable())\n db.exec('COMMIT')\n } catch (e) {\n db.exec('ROLLBACK')\n throw e\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sqlite_vec.mjs","names":["#opts","#_cache","#_dims"],"sources":["../../../src/batteries/vector/sqlite_vec/index.ts"],"sourcesContent":["/**\n * @module @nhtio/adk/batteries/vector/sqlite_vec\n */\n\nimport { evaluateFilter } from '../filters'\nimport { normalizeScore } from '../helpers'\nimport { validateRecords } from '../validation'\nimport { BaseVectorStore, CallableVectorStore } from '../contract'\nimport {\n E_VECTOR_STORE_DRIVER_UNAVAILABLE,\n E_VECTOR_STORE_CONNECTION_FAILED,\n E_VECTOR_STORE_COLLECTION_FAILED,\n E_VECTOR_STORE_UPSERT_FAILED,\n E_VECTOR_STORE_SEARCH_FAILED,\n E_VECTOR_STORE_DELETE_FAILED,\n E_VECTOR_STORE_DIMENSION_MISMATCH,\n E_VECTOR_STORE_UNSUPPORTED_OPERATION,\n} from '../exceptions'\nimport type { SearchPlan, UpsertPlan, DeletePlan, CollectionSpec } from '../plan'\nimport type { VectorMatch, VectorStoreCapabilities, BaseVectorStoreOptions } from '../types'\n\n// A double-quoted SQL identifier (table/column), escaping embedded quotes.\nconst ident = (name: string): string => `\"${name.replace(/\"/g, '\"\"')}\"`\n\n/** Construction options for {@link SqliteVecVectorStore}. */\nexport interface SqliteVecVectorStoreOptions extends BaseVectorStoreOptions {\n /** Database location: a filesystem path, or `':memory:'` for an in-memory database. */\n connection: {\n path: string\n }\n}\n\ninterface VecRow {\n rowid: bigint\n distance: number\n}\n\ninterface CachedStore {\n db: any\n drivers?: { Database: any; sqliteVec: any }\n}\n\nexport class SqliteVecVectorStore extends BaseVectorStore {\n readonly capabilities: VectorStoreCapabilities = {\n transactions: true,\n namedVectors: false,\n // sqlite-vec 0.1.9 implements no `xRename` hook, so `ALTER TABLE … RENAME TO` on the vec0 table\n // succeeds but renames only the virtual table's own entry, never its shadow tables\n // (`_chunks`/`_info`/`_rowids`/`_vector_chunks00`), so a\n // \"renamed\" collection is left unsearchable (`no such table: main.<new>_chunks`) with no error\n // at rename time. Finishing the job by hand isn't possible either — the core shadow tables\n // (`_chunks`/`_info`/`_rowids`) reject a direct rename outright (`table <name>_chunks may not be\n // altered`). sqlite-vec 0.1.9 has no supported rename, so renameCollection throws instead of\n // leaving a broken collection.\n rename: false,\n rawSql: true,\n builtInEncoding: false,\n // Strongly consistent (local file/in-memory): visible on resolve, so the option is a no-op.\n consistency: { configurable: false, default: 'strong', modes: ['strong'] },\n }\n\n #_cache: CachedStore | null = null\n #_dims: Map<string, number> = new Map()\n\n constructor(options: SqliteVecVectorStoreOptions) {\n super(options)\n }\n\n get #opts(): SqliteVecVectorStoreOptions {\n return this.options as SqliteVecVectorStoreOptions\n }\n\n /** Static availability probe: whether this adapter's runtime driver can load in the current environment. */\n static isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n isAvailable(): boolean {\n return typeof process !== 'undefined'\n }\n\n async connect(): Promise<void> {\n if (this.#_cache) {\n return\n }\n\n let Database: any\n let sqliteVec: any\n\n try {\n const mod1 = await import('better-sqlite3')\n Database = mod1.default\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n try {\n sqliteVec = await import('sqlite-vec')\n } catch (e) {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['better-sqlite3 / sqlite-vec'])\n }\n\n const path = this.#opts.connection?.path ?? ':memory:'\n let db: any\n\n try {\n db = new Database(path)\n } catch (e: any) {\n throw new E_VECTOR_STORE_CONNECTION_FAILED([e?.message ?? String(e)])\n }\n\n sqliteVec.load(db)\n\n this.#_cache = { db, drivers: { Database, sqliteVec } }\n }\n\n async close(): Promise<void> {\n if (this.#_cache?.db) {\n this.#_cache.db.close()\n this.#_cache = null\n }\n }\n\n /** The underlying SQLite database handle; throws if the store is not connected. */\n get db(): any {\n if (!this.#_cache?.db) {\n throw new Error('Not connected')\n }\n return this.#_cache.db\n }\n\n async createCollection(spec: CollectionSpec, ifNotExists: boolean): Promise<void> {\n await this.connect()\n const { collection, vector } = spec\n const dims = vector.dimensions\n const tbl = ident(collection)\n const metaTbl = ident(collection + '__meta')\n\n const { db } = this\n\n const exists = await this.hasCollection(collection)\n if (!ifNotExists && exists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', 'collection exists'])\n }\n\n try {\n db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS ${tbl} USING vec0(embedding float[${dims}])`)\n db.exec(\n `CREATE TABLE IF NOT EXISTS ${metaTbl} (rowid INTEGER PRIMARY KEY, id TEXT UNIQUE, document TEXT, metadata TEXT)`\n )\n this.#_dims.set(collection, dims)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['create', e?.message ?? String(e)])\n }\n }\n\n async dropCollection(collection: string, ifExists: boolean): Promise<void> {\n await this.connect()\n const tbl = ident(collection)\n const metaTbl = ident(collection + '__meta')\n\n const has = await this.hasCollection(collection)\n if (!has) {\n if (!ifExists) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', 'collection does not exist'])\n }\n return\n }\n\n const { db } = this\n try {\n db.exec(`DROP TABLE IF EXISTS ${tbl}`)\n db.exec(`DROP TABLE IF EXISTS ${metaTbl}`)\n this.#_dims.delete(collection)\n } catch (e: any) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['drop', e?.message ?? String(e)])\n }\n }\n\n async hasCollection(collection: string): Promise<boolean> {\n await this.connect()\n const { db } = this\n try {\n const res: any = db\n .prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`)\n .get(collection)\n return !!res?.name\n } catch {\n return false\n }\n }\n\n async renameCollection(_from: string, _to: string): Promise<void> {\n // With no `xRename` hook in sqlite-vec 0.1.9, `ALTER TABLE … RENAME TO` on the vec0 table would\n // succeed but leave its shadow tables behind under the old name, and the core shadow tables\n // (`_chunks`/`_info`/`_rowids`) reject a direct rename outright (`table <name>_chunks may not be\n // altered`). There is no way to finish the job, so there is no supported rename.\n throw new E_VECTOR_STORE_UNSUPPORTED_OPERATION(['renameCollection', 'sqlite_vec'])\n }\n\n async executeUpsert(plan: UpsertPlan): Promise<void> {\n await this.connect()\n validateRecords(plan.records)\n\n const collection = plan.collection\n const dims = this.#_dims.get(collection)\n const { db } = this\n\n const resolvedRows: {\n id: string\n vector: number[]\n document?: string\n metadata?: Record<string, unknown>\n }[] = []\n\n for (const r of plan.records) {\n let vector = r.vector\n if (!vector && r.document) {\n const [v] = await this.encode([r.document], 'document')\n vector = v\n }\n\n if (vector && dims !== undefined && vector.length !== dims) {\n throw new E_VECTOR_STORE_DIMENSION_MISMATCH([dims, vector.length])\n }\n\n resolvedRows.push({\n id: r.id,\n vector: vector ?? [],\n document: r.document,\n metadata: r.metadata as Record<string, unknown> | undefined,\n })\n }\n\n const metaTbl = ident(collection + '__meta')\n const tbl = ident(collection)\n\n const stmtMetaInsert = db.prepare(\n `INSERT INTO ${metaTbl} (id, document, metadata) VALUES (?, ?, ?)`\n )\n const stmtMetaUpdate = db.prepare(\n `UPDATE ${metaTbl} SET document = ?, metadata = ? WHERE id = ?`\n )\n const stmtRowid = db.prepare(`SELECT rowid FROM ${metaTbl} WHERE id = ?`)\n const stmtVecDelete = db.prepare(`DELETE FROM ${tbl} WHERE rowid = ?`)\n const stmtVecInsert = db.prepare(`INSERT INTO ${tbl} (rowid, embedding) VALUES (?, ?)`)\n\n const txn = db.transaction(() => {\n for (const r of resolvedRows) {\n const buf = new Float32Array(r.vector)\n let rowid: bigint | undefined\n\n const rowidRes: any = stmtRowid.get(r.id)\n if (rowidRes?.rowid) {\n rowid = BigInt(rowidRes.rowid)\n stmtMetaUpdate.run(r.document ?? null, JSON.stringify(r.metadata ?? {}), r.id)\n stmtVecDelete.run(rowid)\n stmtVecInsert.run(rowid, buf)\n } else {\n const insertMeta = stmtMetaInsert.run(\n r.id,\n r.document ?? null,\n JSON.stringify(r.metadata ?? {})\n )\n rowid = BigInt(insertMeta.lastInsertRowid)\n stmtVecInsert.run(rowid, buf)\n }\n }\n })\n\n try {\n txn()\n } catch (e: any) {\n throw new E_VECTOR_STORE_UPSERT_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeSearch(plan: SearchPlan): Promise<VectorMatch[]> {\n await this.connect()\n const { db } = this\n const collection = plan.collection\n const tbl = ident(collection)\n const metaTbl = ident(collection + '__meta')\n\n const near = plan.near\n const limit = (plan.offset ?? 0) + plan.topK\n\n try {\n if (near) {\n let qvec: number[] | undefined\n\n if ('vector' in near) {\n qvec = near.vector\n } else if ('serverText' in near) {\n const [v] = await this.encode([near.serverText], 'query')\n qvec = v\n } else if ('id' in near) {\n const refRow: any = db.prepare(`SELECT rowid FROM ${metaTbl} WHERE id = ?`).get(near.id)\n if (refRow?.rowid) {\n const refVecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(refRow.rowid))\n if (refVecRes?.embedding) {\n qvec = Array.from(new Float32Array(refVecRes.embedding.buffer || refVecRes.embedding))\n }\n }\n }\n\n if (!qvec) {\n throw new E_VECTOR_STORE_SEARCH_FAILED(['no query vector provided'])\n }\n\n const matchClause = `embedding MATCH ? ORDER BY distance LIMIT ${limit}`\n const matchBuf = new Float32Array(qvec)\n\n const matches: VecRow[] = []\n const stmtMatch = db.prepare(`SELECT rowid, distance FROM ${tbl} WHERE ${matchClause}`)\n for (const row of stmtMatch.iterate(matchBuf)) {\n matches.push({ rowid: BigInt(row.rowid), distance: row.distance })\n }\n\n let results: VectorMatch[] = []\n for (const m of matches) {\n const meta: any = db\n .prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (!meta) {\n continue\n }\n\n const parsedMeta =\n typeof meta.metadata === 'string' ? JSON.parse(meta.metadata) : meta.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n let score = normalizeScore(\n Number(m.distance),\n this.options.metric ?? 'euclidean',\n 'distance'\n )\n\n const proj: VectorMatch = {}\n if (plan.projection.id) proj.id = meta.id\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(m.rowid)\n if (vecRes?.embedding) {\n proj.vector = Array.from(\n new Float32Array(vecRes.embedding.buffer || vecRes.embedding)\n )\n }\n }\n if (plan.projection.document && meta.document !== undefined) proj.document = meta.document\n if (plan.projection.metadata && parsedMeta !== undefined)\n proj.metadata = parsedMeta as any\n if (score !== undefined) proj.score = score\n results.push(proj)\n }\n\n const offset = plan.offset ?? 0\n return results.slice(offset, offset + plan.topK)\n } else {\n const rows: any[] = db.prepare(`SELECT rowid, id, document, metadata FROM ${metaTbl}`).all()\n let scored: { row: any; score?: number }[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n\n if (plan.filter && !evaluateFilter(plan.filter, parsedMeta as any)) {\n continue\n }\n\n scored.push({ row, score: undefined })\n }\n\n const offset = plan.offset ?? 0\n const limited = scored.slice(offset, offset + plan.topK)\n\n return limited.map(({ row }) => {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n const out: VectorMatch = {}\n\n if (plan.projection.id) out.id = row.id\n\n if (plan.projection.vector) {\n const vecRes: any = db\n .prepare(`SELECT embedding FROM ${tbl} WHERE rowid = ?`)\n .get(BigInt(row.rowid))\n if (vecRes?.embedding) {\n out.vector = Array.from(new Float32Array(vecRes.embedding.buffer || vecRes.embedding))\n }\n }\n\n if (plan.projection.document && row.document !== undefined) out.document = row.document\n if (plan.projection.metadata && parsedMeta !== undefined) out.metadata = parsedMeta as any\n\n return out\n })\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_SEARCH_FAILED([e?.message ?? String(e)])\n }\n }\n\n async executeDelete(plan: DeletePlan): Promise<void> {\n await this.connect()\n const collection = plan.collection\n const metaTbl = ident(collection + '__meta')\n const tbl = ident(collection)\n\n const { db } = this\n\n try {\n if (plan.ids && plan.ids.length > 0) {\n const stmtIds = db.prepare(\n `SELECT rowid, metadata FROM ${metaTbl} WHERE id IN (${plan.ids.map(() => '?').join(', ')})`\n )\n const rowids: bigint[] = stmtIds.all(...plan.ids).map((r: any) => BigInt(r.rowid))\n if (rowids.length > 0) {\n const rowidPlaceholders = rowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(...rowids)\n }\n } else if (plan.filter) {\n const rows: any[] = db.prepare(`SELECT rowid, metadata FROM ${metaTbl}`).all()\n const toDeleteRowids: bigint[] = []\n\n for (const row of rows) {\n const parsedMeta =\n typeof row.metadata === 'string' ? JSON.parse(row.metadata) : row.metadata\n if (evaluateFilter(plan.filter, parsedMeta as any)) {\n toDeleteRowids.push(BigInt(row.rowid))\n }\n }\n\n if (toDeleteRowids.length > 0) {\n const rowidPlaceholders = toDeleteRowids.map(() => '?').join(', ')\n db.prepare(`DELETE FROM ${metaTbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n db.prepare(`DELETE FROM ${tbl} WHERE rowid IN (${rowidPlaceholders})`).run(\n ...toDeleteRowids\n )\n }\n } else {\n db.exec(`DELETE FROM ${metaTbl}`)\n db.exec(`DELETE FROM ${tbl}`)\n }\n } catch (e: any) {\n throw new E_VECTOR_STORE_DELETE_FAILED([e?.message ?? String(e)])\n }\n }\n\n async transaction(fn: (tx: CallableVectorStore) => Promise<void>): Promise<void> {\n await this.connect()\n const { db } = this\n\n db.exec('BEGIN')\n try {\n await fn(this.asCallable())\n db.exec('COMMIT')\n } catch (e) {\n db.exec('ROLLBACK')\n throw e\n }\n }\n}\n"],"mappings":"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"}
package/batteries.cjs CHANGED
@@ -3,10 +3,10 @@ require("./chunk-Cek0wNdY.cjs");
3
3
  const require_batteries_context_exceptions = require("./batteries/context/exceptions.cjs");
4
4
  const require_batteries_llm_openai_chat_completions_exceptions = require("./batteries/llm/openai_chat_completions/exceptions.cjs");
5
5
  const require_batteries_llm_openai_chat_completions_validation = require("./batteries/llm/openai_chat_completions/validation.cjs");
6
- const require_helpers = require("./helpers-BPi_iwxv.cjs");
6
+ const require_helpers = require("./helpers-DPlh_7Bn.cjs");
7
7
  const require_batteries_llm_openai_chat_completions_helpers = require("./batteries/llm/openai_chat_completions/helpers.cjs");
8
8
  const require_batteries_llm_openai_chat_completions_adapter = require("./batteries/llm/openai_chat_completions/adapter.cjs");
9
- const require_chat_common = require("./chat_common-4huaTp6d.cjs");
9
+ const require_chat_common = require("./chat_common-CNayzS1V.cjs");
10
10
  const require_batteries_llm_webllm_chat_completions_exceptions = require("./batteries/llm/webllm_chat_completions/exceptions.cjs");
11
11
  const require_batteries_llm_webllm_chat_completions_validation = require("./batteries/llm/webllm_chat_completions/validation.cjs");
12
12
  const require_batteries_llm_webllm_chat_completions_adapter = require("./batteries/llm/webllm_chat_completions/adapter.cjs");
@@ -41,8 +41,8 @@ const require_batteries_tools_math = require("./batteries/tools/math.cjs");
41
41
  const require_batteries_tools_memory = require("./batteries/tools/memory.cjs");
42
42
  const require_batteries_tools_parsing = require("./batteries/tools/parsing.cjs");
43
43
  const require_batteries_tools_retrievables = require("./batteries/tools/retrievables.cjs");
44
- const require_scrapper = require("./scrapper-BsEY0Wo6.cjs");
45
- const require_searxng = require("./searxng-CLF0vBMT.cjs");
44
+ const require_scrapper = require("./scrapper-B8xG9lTD.cjs");
45
+ const require_searxng = require("./searxng-EJhWRnIE.cjs");
46
46
  const require_batteries_tools_standing_instructions = require("./batteries/tools/standing_instructions.cjs");
47
47
  const require_batteries_tools_statistics = require("./batteries/tools/statistics.cjs");
48
48
  const require_batteries_tools_string_processing = require("./batteries/tools/string_processing.cjs");
@@ -64,7 +64,7 @@ const require_batteries_embeddings_transformers_js_exceptions = require("./batte
64
64
  const require_batteries_embeddings_transformers_js_validation = require("./batteries/embeddings/transformers_js/validation.cjs");
65
65
  const require_batteries_embeddings_transformers_js_adapter = require("./batteries/embeddings/transformers_js/adapter.cjs");
66
66
  require("./batteries/embeddings.cjs");
67
- const require_transformers_js = require("./transformers_js-DM01eAzh.cjs");
67
+ const require_transformers_js = require("./transformers_js-7OzeS_Tp.cjs");
68
68
  const require_batteries_specialists__shared = require("./batteries/specialists/_shared.cjs");
69
69
  const require_batteries_specialists_ocr_tesseract_js_exceptions = require("./batteries/specialists/ocr/tesseract_js/exceptions.cjs");
70
70
  const require_batteries_specialists_ocr_tesseract_js_validation = require("./batteries/specialists/ocr/tesseract_js/validation.cjs");
@@ -106,7 +106,7 @@ const require_batteries_context_thrift_subtractive_pass = require("./batteries/c
106
106
  const require_batteries_context_thrift_relevance = require("./batteries/context/thrift/relevance.cjs");
107
107
  const require_batteries_context_compact_summarizer = require("./batteries/context/compact/summarizer.cjs");
108
108
  require("./batteries/context.cjs");
109
- const require_isolation = require("./isolation-B2FgKbap.cjs");
109
+ const require_isolation = require("./isolation-B01xCIoV.cjs");
110
110
  exports.AnthropicMessagesAdapter = require_batteries_llm_anthropic_messages_adapter.AnthropicMessagesAdapter;
111
111
  exports.BaseVectorStore = require_batteries_vector_contract.BaseVectorStore;
112
112
  exports.COMPACTION_SYSTEM_PROMPT = require_batteries_context_compact_summarizer.COMPACTION_SYSTEM_PROMPT;
package/batteries.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import { E_CONTEXT_RESOLVER_MISSING } from "./batteries/context/exceptions.mjs";
2
2
  import { E_INVALID_OPENAI_CHAT_COMPLETIONS_OPTIONS, E_OPENAI_CHAT_COMPLETIONS_CONTEXT_OVERFLOW, E_OPENAI_CHAT_COMPLETIONS_HTTP_ERROR, E_OPENAI_CHAT_COMPLETIONS_INVALID_TOOL_CALL_ARGS, E_OPENAI_CHAT_COMPLETIONS_REQUEST_TIMEOUT, E_OPENAI_CHAT_COMPLETIONS_STREAM_ERROR, E_OPENAI_CHAT_COMPLETIONS_STREAM_STALLED } from "./batteries/llm/openai_chat_completions/exceptions.mjs";
3
3
  import { openAIChatCompletionsOptionsSchema, validateOptions as validateOptions$9 } from "./batteries/llm/openai_chat_completions/validation.mjs";
4
- import { A as renderMemories, F as renderThirdPartyPrivateRetrievables, G as toolsToChatCompletionsTools, H as sanitizeFilenameForDescription, I as renderThirdPartyPublicRetrievables, L as renderThought, M as renderRetrievableSafetyDirective, N as renderRetrievables, O as renderChatCompletionsSystemPrompt, P as renderStandingInstructions, R as renderTrustedContent, S as floorTrustTier, T as neutraliseDeveloperRulesTag, U as sanitizeMimeType, W as stripEnvelopeSpecialTokens, _ as defaultRenderUntrustedContent, c as defaultRenderMemories, d as defaultRenderRetrievables, f as defaultRenderStandingInstructions, g as defaultRenderTrustedContent, h as defaultRenderThought, i as defaultFilterThoughts, k as renderFirstPartyRetrievables, m as defaultRenderThirdPartyPublicRetrievables, o as defaultRenderChatCompletionsSystemPrompt, p as defaultRenderThirdPartyPrivateRetrievables, r as defaultDescriptionToChatCompletionsJsonSchema, s as defaultRenderFirstPartyRetrievables, u as defaultRenderRetrievableSafetyDirective, v as defaultToolsToChatCompletionsTools, x as filterThoughts, y as descriptionToChatCompletionsJsonSchema, z as renderUntrustedContent } from "./helpers-D47G8WQb.mjs";
4
+ import { A as renderMemories, F as renderThirdPartyPrivateRetrievables, G as toolsToChatCompletionsTools, H as sanitizeFilenameForDescription, I as renderThirdPartyPublicRetrievables, L as renderThought, M as renderRetrievableSafetyDirective, N as renderRetrievables, O as renderChatCompletionsSystemPrompt, P as renderStandingInstructions, R as renderTrustedContent, S as floorTrustTier, T as neutraliseDeveloperRulesTag, U as sanitizeMimeType, W as stripEnvelopeSpecialTokens, _ as defaultRenderUntrustedContent, c as defaultRenderMemories, d as defaultRenderRetrievables, f as defaultRenderStandingInstructions, g as defaultRenderTrustedContent, h as defaultRenderThought, i as defaultFilterThoughts, k as renderFirstPartyRetrievables, m as defaultRenderThirdPartyPublicRetrievables, o as defaultRenderChatCompletionsSystemPrompt, p as defaultRenderThirdPartyPrivateRetrievables, r as defaultDescriptionToChatCompletionsJsonSchema, s as defaultRenderFirstPartyRetrievables, u as defaultRenderRetrievableSafetyDirective, v as defaultToolsToChatCompletionsTools, x as filterThoughts, y as descriptionToChatCompletionsJsonSchema, z as renderUntrustedContent } from "./helpers-mbn_EsDV.mjs";
5
5
  import { buildChatCompletionsHistory, createChatCompletionsToolCallDeltaAccumulator, defaultBuildChatCompletionsHistory, defaultCreateChatCompletionsToolCallDeltaAccumulator, defaultRenderChatCompletionsToolCallResult, defaultRenderTimelineMessage, extractReasoningFields, renderChatCompletionsToolCallResult, renderTimelineMessage } from "./batteries/llm/openai_chat_completions/helpers.mjs";
6
6
  import { OpenAIChatCompletionsAdapter } from "./batteries/llm/openai_chat_completions/adapter.mjs";
7
- import { t as deCollideToolCallIds } from "./chat_common-D_XGNjcK.mjs";
7
+ import { t as deCollideToolCallIds } from "./chat_common-DKw8FDol.mjs";
8
8
  import { E_INVALID_WEBLLM_CHAT_COMPLETIONS_OPTIONS, E_WEBLLM_CHAT_COMPLETIONS_CONTEXT_OVERFLOW, E_WEBLLM_CHAT_COMPLETIONS_INVALID_TOOL_CALL_ARGS, E_WEBLLM_CHAT_COMPLETIONS_STREAM_ERROR } from "./batteries/llm/webllm_chat_completions/exceptions.mjs";
9
9
  import { validateOptions as validateOptions$17, webLLMChatCompletionsOptionsSchema } from "./batteries/llm/webllm_chat_completions/validation.mjs";
10
10
  import { WebLLMChatCompletionsAdapter } from "./batteries/llm/webllm_chat_completions/adapter.mjs";
@@ -39,8 +39,8 @@ import { calculateTool, evaluateKatexTool } from "./batteries/tools/math.mjs";
39
39
  import { deleteMemoryTool, listMemoriesTool, memoryTools, storeMemoryTool, updateMemoryTool } from "./batteries/tools/memory.mjs";
40
40
  import { detectDelimiterTool, parseCsvTool, parseKvTool, parseYamlTool } from "./batteries/tools/parsing.mjs";
41
41
  import { deleteRetrievableTool, listRetrievablesTool, retrievableTools, storeRetrievableTool, updateRetrievableTool } from "./batteries/tools/retrievables.mjs";
42
- import { a as E_INVALID_SCRAPPER_CONFIG, i as createScrapperLinksToolSync, n as createScrapperArticleToolSync, r as createScrapperLinksTool, t as createScrapperArticleTool } from "./scrapper-bShwZxKP.mjs";
43
- import { n as createSearxngSearchToolSync, r as E_INVALID_SEARXNG_CONFIG, t as createSearxngSearchTool } from "./searxng-CAY-bOMl.mjs";
42
+ import { a as E_INVALID_SCRAPPER_CONFIG, i as createScrapperLinksToolSync, n as createScrapperArticleToolSync, r as createScrapperLinksTool, t as createScrapperArticleTool } from "./scrapper-DiQ5FfDL.mjs";
43
+ import { n as createSearxngSearchToolSync, r as E_INVALID_SEARXNG_CONFIG, t as createSearxngSearchTool } from "./searxng-BFTJ6rTE.mjs";
44
44
  import { addStandingInstructionTool, listStandingInstructionsTool, removeStandingInstructionTool, standingInstructionTools } from "./batteries/tools/standing_instructions.mjs";
45
45
  import { statsCorrelateTool, statsDescribeTool, statsHistogramTool, statsTransformTool } from "./batteries/tools/statistics.mjs";
46
46
  import { stringExtractTool, stringTransformTool } from "./batteries/tools/string_processing.mjs";
@@ -62,7 +62,7 @@ import { E_INVALID_TRANSFORMERS_JS_EMBEDDINGS_OPTIONS, E_TRANSFORMERS_JS_EMBEDDI
62
62
  import { transformersJsEmbeddingsOptionsSchema, validateOptions as validateOptions$12 } from "./batteries/embeddings/transformers_js/validation.mjs";
63
63
  import { TransformersJsEmbeddingsAdapter } from "./batteries/embeddings/transformers_js/adapter.mjs";
64
64
  import "./batteries/embeddings.mjs";
65
- import { a as E_TRANSFORMERS_JS_STT_ENGINE_ERROR, i as E_INVALID_TRANSFORMERS_JS_STT_OPTIONS, n as transformersJsSttAdapterOptionsSchema, r as validateOptions$15, t as TransformersJsSttAdapter } from "./transformers_js-BR2Ov0Su.mjs";
65
+ import { a as E_TRANSFORMERS_JS_STT_ENGINE_ERROR, i as E_INVALID_TRANSFORMERS_JS_STT_OPTIONS, n as transformersJsSttAdapterOptionsSchema, r as validateOptions$15, t as TransformersJsSttAdapter } from "./transformers_js-p3lAkHFH.mjs";
66
66
  import { defaultDecodeAudio, isPcmInput, toBytes } from "./batteries/specialists/_shared.mjs";
67
67
  import { E_INVALID_TESSERACT_JS_OCR_OPTIONS, E_TESSERACT_JS_OCR_ENGINE_ERROR } from "./batteries/specialists/ocr/tesseract_js/exceptions.mjs";
68
68
  import { tesseractJsOcrOptionsSchema, validateOptions as validateOptions$10 } from "./batteries/specialists/ocr/tesseract_js/validation.mjs";
@@ -104,5 +104,5 @@ import { DEFAULT_ENCODING, DEFAULT_RESERVE_FRACTION, DEFAULT_THIS_TURN_RESULT_KE
104
104
  import { RELEVANCE_FLOOR_CURVE, RELEVANCE_FLOOR_MAX, RELEVANCE_FLOOR_MIN, argText, contentTokens, groupHistoryIntoTurns, relevanceToQuery, scaledRelevanceFloor, selectNaiveTurns, selectRelevantTurns } from "./batteries/context/thrift/relevance.mjs";
105
105
  import { COMPACTION_SYSTEM_PROMPT, DEFAULT_KEEP_VERBATIM, DEFAULT_SUMMARISE_AT_TOKENS, DEFAULT_SUMMARY_MESSAGE_ID, assembleCompactedTurns, summariseTurns } from "./batteries/context/compact/summarizer.mjs";
106
106
  import "./batteries/context.mjs";
107
- import { A as event, C as E_INVALID_ISOLATION_OPTIONS, D as E_ISOLATION_READY_TIMEOUT, E as E_ISOLATION_ENCODER_REQUIRED, M as resolveIsolatedServiceSpec, N as stream, O as E_ISOLATION_UNENCODABLE, S as defineIsolatedServiceValidated, T as E_ISOLATED_TERMINATED, _ as transfer, a as createWorkerTransport, b as nextCorrelationId, c as serveIsolated, d as hasIsolationHook, f as DEFAULT_CRASH_POLICY_MAX_CRASHES, g as registerEncodableClasses, h as isEncoderAvailable, i as isolateFunction, j as method, k as E_ISOLATION_UNSUPPORTED_ENV, l as serveIsolatedOverPort, m as createCrashPolicy, n as E_ISOLATE_FUNCTION_REQUIRES_SOURCE_REHYDRATION, o as spawnIsolated, p as DEFAULT_CRASH_POLICY_WINDOW_MS, r as E_ISOLATE_FUNCTION_UNSERIALIZABLE, s as createIsolatedService, t as E_ISOLATE_FUNCTION_ARG_UNSUPPORTED, u as emitIsolationReport, v as GuestEndpoint, w as E_ISOLATED_CRASHED, x as wireErrorToError, y as HostEndpoint } from "./isolation-BRGpiU-K.mjs";
107
+ import { A as event, C as E_INVALID_ISOLATION_OPTIONS, D as E_ISOLATION_READY_TIMEOUT, E as E_ISOLATION_ENCODER_REQUIRED, M as resolveIsolatedServiceSpec, N as stream, O as E_ISOLATION_UNENCODABLE, S as defineIsolatedServiceValidated, T as E_ISOLATED_TERMINATED, _ as transfer, a as createWorkerTransport, b as nextCorrelationId, c as serveIsolated, d as hasIsolationHook, f as DEFAULT_CRASH_POLICY_MAX_CRASHES, g as registerEncodableClasses, h as isEncoderAvailable, i as isolateFunction, j as method, k as E_ISOLATION_UNSUPPORTED_ENV, l as serveIsolatedOverPort, m as createCrashPolicy, n as E_ISOLATE_FUNCTION_REQUIRES_SOURCE_REHYDRATION, o as spawnIsolated, p as DEFAULT_CRASH_POLICY_WINDOW_MS, r as E_ISOLATE_FUNCTION_UNSERIALIZABLE, s as createIsolatedService, t as E_ISOLATE_FUNCTION_ARG_UNSUPPORTED, u as emitIsolationReport, v as GuestEndpoint, w as E_ISOLATED_CRASHED, x as wireErrorToError, y as HostEndpoint } from "./isolation-CO0NiK8R.mjs";
108
108
  export { AnthropicMessagesAdapter, BaseVectorStore, COMPACTION_SYSTEM_PROMPT, ClaudeCodeCliAdapter, CollectionBuilder, DEFAULT_CRASH_POLICY_MAX_CRASHES, DEFAULT_CRASH_POLICY_WINDOW_MS, DEFAULT_ENCODING, DEFAULT_KEEP_VERBATIM, DEFAULT_RESERVE_FRACTION, DEFAULT_SUMMARISE_AT_TOKENS, DEFAULT_SUMMARY_MESSAGE_ID, DEFAULT_THIS_TURN_RESULT_KEEP, EDIT_IMAGE_FIELD_NAME, E_ANTHROPIC_MESSAGES_CONTEXT_OVERFLOW, E_ANTHROPIC_MESSAGES_HTTP_ERROR, E_ANTHROPIC_MESSAGES_INVALID_TOOL_CALL_ARGS, E_ANTHROPIC_MESSAGES_REQUEST_TIMEOUT, E_ANTHROPIC_MESSAGES_STREAM_ERROR, E_ANTHROPIC_MESSAGES_STREAM_STALLED, E_ANTHROPIC_MESSAGES_UNSUPPORTED_MEDIA_MODALITY, E_CLAUDE_CODE_CLI_BINARY_NOT_FOUND, E_CLAUDE_CODE_CLI_CONTEXT_OVERFLOW, E_CLAUDE_CODE_CLI_MCP_BRIDGE_STARTUP_FAILED, E_CLAUDE_CODE_CLI_PROCESS_EXITED_NONZERO, E_CLAUDE_CODE_CLI_STARTUP_TIMEOUT, E_CLAUDE_CODE_CLI_STREAM_ERROR, E_CLAUDE_CODE_CLI_STREAM_STALLED, E_CLAUDE_CODE_CLI_TURN_FAILED, E_CLAUDE_CODE_CLI_UNSUPPORTED_MEDIA_MODALITY, E_CLAUDE_CODE_CLI_WRAPPER_CRASHED, E_CLAUDE_CODE_CLI_WRAPPER_NOT_FOUND, E_CLAUDE_CODE_CLI_WRAPPER_SPAWN_ERROR, E_CONTEXT_RESOLVER_MISSING, E_GEMINI_GENERATION_HTTP_ERROR, E_GEMINI_GENERATION_MALFORMED_RESPONSE, E_GEMINI_GENERATION_REQUEST_TIMEOUT, E_INVALID_ANTHROPIC_MESSAGES_OPTIONS, E_INVALID_CLAUDE_CODE_CLI_OPTIONS, E_INVALID_GEMINI_GENERATION_OPTIONS, E_INVALID_ISOLATION_OPTIONS, E_INVALID_LITERT_LM_OPTIONS, E_INVALID_OLLAMA_EMBEDDINGS_OPTIONS, E_INVALID_OLLAMA_OPTIONS, E_INVALID_OPENAI_CHAT_COMPLETIONS_OPTIONS, E_INVALID_OPENAI_EMBEDDINGS_OPTIONS, E_INVALID_OPENAI_GENERATION_OPTIONS, E_INVALID_OPENAI_RESPONSES_OPTIONS, E_INVALID_SCRAPPER_CONFIG, E_INVALID_SEARXNG_CONFIG, E_INVALID_TESSERACT_JS_OCR_OPTIONS, E_INVALID_TRANSFORMERS_JS_CAPTION_OPTIONS, E_INVALID_TRANSFORMERS_JS_EMBEDDINGS_OPTIONS, E_INVALID_TRANSFORMERS_JS_GENERATION_OPTIONS, E_INVALID_TRANSFORMERS_JS_OPTIONS, E_INVALID_TRANSFORMERS_JS_STT_OPTIONS, E_INVALID_TRANSFORMERS_JS_TTS_OPTIONS, E_INVALID_VECTOR_RECORD, E_INVALID_VECTOR_STORE_CONFIG, E_INVALID_WEBLLM_CHAT_COMPLETIONS_OPTIONS, E_ISOLATED_CRASHED, E_ISOLATED_TERMINATED, E_ISOLATE_FUNCTION_ARG_UNSUPPORTED, E_ISOLATE_FUNCTION_REQUIRES_SOURCE_REHYDRATION, E_ISOLATE_FUNCTION_UNSERIALIZABLE, E_ISOLATION_ENCODER_REQUIRED, E_ISOLATION_READY_TIMEOUT, E_ISOLATION_UNENCODABLE, E_ISOLATION_UNSUPPORTED_ENV, E_LITERT_LM_CONTEXT_OVERFLOW, E_LITERT_LM_INVALID_TOOL_CALL_ARGS, E_LITERT_LM_STREAM_ERROR, E_OLLAMA_CONTEXT_OVERFLOW, E_OLLAMA_EMBEDDINGS_HTTP_ERROR, E_OLLAMA_EMBEDDINGS_MALFORMED_RESPONSE, E_OLLAMA_EMBEDDINGS_REQUEST_TIMEOUT, E_OLLAMA_HTTP_ERROR, E_OLLAMA_INVALID_TOOL_CALL_ARGS, E_OLLAMA_REQUEST_TIMEOUT, E_OLLAMA_STREAM_ERROR, E_OLLAMA_STREAM_STALLED, E_OLLAMA_UNSUPPORTED_MEDIA_MODALITY, E_OPENAI_CHAT_COMPLETIONS_CONTEXT_OVERFLOW, E_OPENAI_CHAT_COMPLETIONS_HTTP_ERROR, E_OPENAI_CHAT_COMPLETIONS_INVALID_TOOL_CALL_ARGS, E_OPENAI_CHAT_COMPLETIONS_REQUEST_TIMEOUT, E_OPENAI_CHAT_COMPLETIONS_STREAM_ERROR, E_OPENAI_CHAT_COMPLETIONS_STREAM_STALLED, E_OPENAI_EMBEDDINGS_HTTP_ERROR, E_OPENAI_EMBEDDINGS_MALFORMED_RESPONSE, E_OPENAI_EMBEDDINGS_REQUEST_TIMEOUT, E_OPENAI_GENERATION_HTTP_ERROR, E_OPENAI_GENERATION_MALFORMED_RESPONSE, E_OPENAI_GENERATION_REQUEST_TIMEOUT, E_OPENAI_RESPONSES_CONTEXT_OVERFLOW, E_OPENAI_RESPONSES_HTTP_ERROR, E_OPENAI_RESPONSES_INVALID_TOOL_CALL_ARGS, E_OPENAI_RESPONSES_REASONING_REPLAY_REJECTED, E_OPENAI_RESPONSES_REQUEST_TIMEOUT, E_OPENAI_RESPONSES_STREAM_ERROR, E_OPENAI_RESPONSES_STREAM_STALLED, E_OPENAI_RESPONSES_UNSUPPORTED_MEDIA_MODALITY, E_TESSERACT_JS_OCR_ENGINE_ERROR, E_TRANSFORMERS_JS_CAPTION_ENGINE_ERROR, E_TRANSFORMERS_JS_CONTEXT_OVERFLOW, E_TRANSFORMERS_JS_EMBEDDINGS_ENGINE_ERROR, E_TRANSFORMERS_JS_GENERATION_ENGINE_ERROR, E_TRANSFORMERS_JS_GENERATION_UNSUPPORTED_OPERATION, E_TRANSFORMERS_JS_INVALID_TOOL_CALL_ARGS, E_TRANSFORMERS_JS_STREAM_ERROR, E_TRANSFORMERS_JS_STT_ENGINE_ERROR, E_TRANSFORMERS_JS_TOOL_PARSE_FAILED, E_TRANSFORMERS_JS_TTS_ENGINE_ERROR, E_VECTOR_STORE_COLLECTION_FAILED, E_VECTOR_STORE_CONNECTION_FAILED, E_VECTOR_STORE_CONSISTENCY_TIMEOUT, E_VECTOR_STORE_DELETE_FAILED, E_VECTOR_STORE_DIMENSION_MISMATCH, E_VECTOR_STORE_DRIVER_UNAVAILABLE, E_VECTOR_STORE_ENCODER_REQUIRED, E_VECTOR_STORE_MIGRATION_FAILED, E_VECTOR_STORE_PROJECTION_REQUIRED, E_VECTOR_STORE_QUERY_CONFLICT, E_VECTOR_STORE_RAW_BINDING_MISMATCH, E_VECTOR_STORE_SEARCH_FAILED, E_VECTOR_STORE_TRANSACTIONS_UNSUPPORTED, E_VECTOR_STORE_UNSUPPORTED_FILTER_OPERATOR, E_VECTOR_STORE_UNSUPPORTED_OPERATION, E_VECTOR_STORE_UPSERT_FAILED, E_WEBLLM_CHAT_COMPLETIONS_CONTEXT_OVERFLOW, E_WEBLLM_CHAT_COMPLETIONS_INVALID_TOOL_CALL_ARGS, E_WEBLLM_CHAT_COMPLETIONS_STREAM_ERROR, FilterBuilder, GeminiGenerationAdapter, GuestEndpoint, HostEndpoint, InMemoryVectorStore, LiteRtLmAdapter, OllamaAdapter, OllamaEmbeddingsAdapter, OpenAIChatCompletionsAdapter, OpenAIEmbeddingsAdapter, OpenAIGenerationAdapter, OpenAIResponsesAdapter, OramaVectorStore, RELEVANCE_FLOOR_CURVE, RELEVANCE_FLOOR_MAX, RELEVANCE_FLOOR_MIN, TesseractJsOcrAdapter, TransformersJsAdapter, TransformersJsCaptionAdapter, TransformersJsEmbeddingsAdapter, TransformersJsGenerationAdapter, TransformersJsSttAdapter, TransformersJsTtsAdapter, VectorMigrator, VectorQueryBuilder, VectorSchemaBuilder, WebLLMChatCompletionsAdapter, addStandingInstructionTool, anthropicMessagesOptionsSchema, applyEmbeddingPrefix, argText, assembleCompactedTurns, baseVectorStoreOptionsSchema, buildChatCompletionsHistory, calculateTool, clamp01, claudeCodeCliOptionsSchema, colorAdjustTool, colorContrastTool, colorSchemeTool, compareRecordsTool, compareValuesTool, contentTokens, convertTimeTool, convertUnitTool, createChatCompletionsToolCallDeltaAccumulator, createCrashPolicy, createIsolatedService, createScrapperArticleTool, createScrapperArticleToolSync, createScrapperLinksTool, createScrapperLinksToolSync, createSearxngSearchTool, createSearxngSearchToolSync, createVectorRetrievableCallbacks, createVectorStore, createWorkerTransport, dateAddTool, dateBusinessDaysTool, dateCalendarInfoTool, dateDiffTool, dateNthWeekdayTool, dateParseTool, datePeriodTool, deCollideToolCallIds, defaultBuildChatCompletionsHistory, defaultCreateChatCompletionsToolCallDeltaAccumulator, defaultDecodeAudio, defaultDescriptionToChatCompletionsJsonSchema, defaultFilterThoughts, defaultRenderChatCompletionsSystemPrompt, defaultRenderChatCompletionsToolCallResult, defaultRenderFirstPartyRetrievables, defaultRenderMemories, defaultRenderRetrievableSafetyDirective, defaultRenderRetrievables, defaultRenderStandingInstructions, defaultRenderThirdPartyPrivateRetrievables, defaultRenderThirdPartyPublicRetrievables, defaultRenderThought, defaultRenderTimelineMessage, defaultRenderTrustedContent, defaultRenderUntrustedContent, defaultToolsToChatCompletionsTools, defineIsolatedServiceValidated as defineIsolatedService, deleteMemoryTool, deleteRetrievableTool, descriptionToChatCompletionsJsonSchema, detectDelimiterTool, dimensionsMatch, durationFormatTool, emitIsolationReport, encodeTextTool, encoderFromEmbeddings, evaluateFilter, evaluateKatexTool, event, extractReasoningFields, filterThoughts, floorTrustTier, formatListTool, formatNumberTool, formatTableTool, geminiGenerationOptionsSchema, geoBboxContainsTool, geoDistanceTool, geoWithinRadiusTool, getCurrentTimeTool, groupHistoryIntoTurns, hasIsolationHook, implementsVectorStoreConstructor, isEncoderAvailable, isFilterCondition, isFilterGroup, isFiniteVector, isPcmInput, isRawExpr, isRawFilter, isolateFunction, jsonFormatTool, jsonTransformTool, listMemoriesTool, listRetrievablesTool, listStandingInstructionsTool, liteRtLmOptionsSchema, mapMetric, memoryTools, method, neutraliseDeveloperRulesTag, nextCorrelationId, normalizeScore, ollamaEmbeddingsOptionsSchema, ollamaOptionsSchema, openAIChatCompletionsOptionsSchema, openAIEmbeddingsOptionsSchema, openAIGenerationOptionsSchema, openAIResponsesOptionsSchema, parseCsvTool, parseKvTool, parseYamlTool, raw, registerEncodableClasses, relevanceToQuery, removeStandingInstructionTool, renderChatCompletionsSystemPrompt, renderChatCompletionsToolCallResult, renderFirstPartyRetrievables, renderMemories, renderRetrievableSafetyDirective, renderRetrievables, renderStandingInstructions, renderThirdPartyPrivateRetrievables, renderThirdPartyPublicRetrievables, renderThought, renderTimelineMessage, renderTrustedContent, renderUntrustedContent, resolveBudget, resolveClientCtor, resolveIsolatedServiceSpec, retrievableTools, sanitizeFilenameForDescription, sanitizeMetadata, sanitizeMimeType, scaledRelevanceFloor, scrapperArticleToRetrievable, scrapperLinksToRetrievables, searxngResultsToRetrievables, selectNaiveTurns, selectRelevantTurns, serveIsolated, serveIsolatedOverPort, setOperationsTool, spawnIsolated, standingInstructionTools, statsCorrelateTool, statsDescribeTool, statsHistogramTool, statsTransformTool, storeMemoryTool, storeRetrievableTool, storeRetrievables, stream, stringExtractTool, stringSimilarityTool, stringTransformTool, stripEnvelopeSpecialTokens, stripPriorTurnThoughts, subtractToFit, summariseTurns, tesseractJsOcrOptionsSchema, textAnalyzeTool, textDiffTool, textEscapeTool, textLinesTool, toBytes, toBytes$1 as toGenerationBytes, toolsToChatCompletionsTools, transfer, transformersJsCaptionOptionsSchema, transformersJsEmbeddingsOptionsSchema, transformersJsGenerationOptionsSchema, transformersJsOptionsSchema, transformersJsSttAdapterOptionsSchema, transformersJsTtsOptionsSchema, unicodeNormalizeTool, updateMemoryTool, updateRetrievableTool, validateOptions as validateAnthropicMessagesOptions, validateOptions$1 as validateClaudeCodeCliOptions, validateCreateConfig, validateFormatTool, validateOptions$2 as validateGeminiGenerationOptions, validateOptions$3 as validateLiteRtLmOptions, validateOptions$4 as validateOllamaEmbeddingsOptions, validateOptions$5 as validateOllamaOptions, validateOptions$6 as validateOpenAIEmbeddingsOptions, validateOptions$7 as validateOpenAIGenerationOptions, validateOptions$8 as validateOpenAIResponsesOptions, validateOptions$9 as validateOptions, validateRecords, validateOptions$10 as validateTesseractJsOcrOptions, validateOptions$11 as validateTransformersJsCaptionOptions, validateOptions$12 as validateTransformersJsEmbeddingsOptions, validateOptions$13 as validateTransformersJsGenerationOptions, validateOptions$14 as validateTransformersJsOptions, validateOptions$15 as validateTransformersJsSttOptions, validateOptions$16 as validateTransformersJsTtsOptions, validateOptions$17 as validateWebLLMChatCompletionsOptions, vectorFilterSchema, vectorRecordSchema, vectorStoreConstructorSchema, webLLMChatCompletionsOptionsSchema, wireErrorToError };
@@ -1,5 +1,5 @@
1
1
  require("./tool_parsers-8_qO0a_F.cjs");
2
- require("./helpers-BPi_iwxv.cjs");
2
+ require("./helpers-DPlh_7Bn.cjs");
3
3
  require("./gpu_budget-BBIUyLoj.cjs");
4
4
  require("./lifecycle-vYQJ2rmf.cjs");
5
5
  require("./batteries/llm/chat_common/exceptions.cjs");
@@ -42,4 +42,4 @@ Object.defineProperty(exports, "deCollideToolCallIds", {
42
42
  }
43
43
  });
44
44
 
45
- //# sourceMappingURL=chat_common-4huaTp6d.cjs.map
45
+ //# sourceMappingURL=chat_common-CNayzS1V.cjs.map