@nhtio/adk 1.20260604.0 → 1.20260607.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 (358) hide show
  1. package/CHANGELOG.md +261 -0
  2. package/adk-mcp.mjs +1 -1
  3. package/batteries/embeddings/openai/adapter.cjs +1 -1
  4. package/batteries/embeddings/openai/adapter.mjs +1 -1
  5. package/batteries/embeddings/webllm/adapter.cjs +1 -1
  6. package/batteries/embeddings/webllm/adapter.mjs +1 -1
  7. package/batteries/index.d.ts +1 -0
  8. package/batteries/llm/openai_chat_completions/adapter.cjs +6 -6
  9. package/batteries/llm/openai_chat_completions/adapter.cjs.map +1 -1
  10. package/batteries/llm/openai_chat_completions/adapter.mjs +6 -6
  11. package/batteries/llm/openai_chat_completions/adapter.mjs.map +1 -1
  12. package/batteries/llm/openai_chat_completions/helpers.cjs +2 -2
  13. package/batteries/llm/openai_chat_completions/helpers.mjs +2 -2
  14. package/batteries/llm/openai_chat_completions/validation.cjs +2 -2
  15. package/batteries/llm/openai_chat_completions/validation.cjs.map +1 -1
  16. package/batteries/llm/openai_chat_completions/validation.mjs +2 -2
  17. package/batteries/llm/openai_chat_completions/validation.mjs.map +1 -1
  18. package/batteries/llm/webllm_chat_completions/adapter.cjs +6 -6
  19. package/batteries/llm/webllm_chat_completions/adapter.cjs.map +1 -1
  20. package/batteries/llm/webllm_chat_completions/adapter.mjs +6 -6
  21. package/batteries/llm/webllm_chat_completions/adapter.mjs.map +1 -1
  22. package/batteries/llm/webllm_chat_completions/validation.cjs +2 -2
  23. package/batteries/llm/webllm_chat_completions/validation.cjs.map +1 -1
  24. package/batteries/llm/webllm_chat_completions/validation.mjs +2 -2
  25. package/batteries/llm/webllm_chat_completions/validation.mjs.map +1 -1
  26. package/batteries/storage/flydrive.cjs +1 -1
  27. package/batteries/storage/flydrive.mjs +2 -2
  28. package/batteries/storage/in_memory.cjs +1 -1
  29. package/batteries/storage/in_memory.mjs +1 -1
  30. package/batteries/storage/opfs.cjs +1 -1
  31. package/batteries/storage/opfs.mjs +1 -1
  32. package/batteries/tools/color.cjs +2 -2
  33. package/batteries/tools/color.mjs +2 -2
  34. package/batteries/tools/comparison.cjs +3 -3
  35. package/batteries/tools/comparison.mjs +3 -3
  36. package/batteries/tools/data_structure.cjs +3 -3
  37. package/batteries/tools/data_structure.mjs +3 -3
  38. package/batteries/tools/datetime_extended.cjs +2 -2
  39. package/batteries/tools/datetime_extended.mjs +2 -2
  40. package/batteries/tools/datetime_math.cjs +2 -2
  41. package/batteries/tools/datetime_math.mjs +2 -2
  42. package/batteries/tools/encoding.cjs +3 -3
  43. package/batteries/tools/encoding.mjs +3 -3
  44. package/batteries/tools/formatting.cjs +3 -3
  45. package/batteries/tools/formatting.mjs +3 -3
  46. package/batteries/tools/geo_basics.cjs +2 -2
  47. package/batteries/tools/geo_basics.mjs +2 -2
  48. package/batteries/tools/math/index.d.ts +16 -5
  49. package/batteries/tools/math.cjs +340 -22
  50. package/batteries/tools/math.cjs.map +1 -1
  51. package/batteries/tools/math.mjs +338 -21
  52. package/batteries/tools/math.mjs.map +1 -1
  53. package/batteries/tools/memory.cjs +5 -5
  54. package/batteries/tools/memory.mjs +5 -5
  55. package/batteries/tools/parsing.cjs +4 -4
  56. package/batteries/tools/parsing.mjs +4 -4
  57. package/batteries/tools/retrievables.cjs +4 -4
  58. package/batteries/tools/retrievables.mjs +4 -4
  59. package/batteries/tools/standing_instructions.cjs +4 -4
  60. package/batteries/tools/standing_instructions.mjs +4 -4
  61. package/batteries/tools/statistics.cjs +4 -4
  62. package/batteries/tools/statistics.mjs +4 -4
  63. package/batteries/tools/string_processing.cjs +3 -3
  64. package/batteries/tools/string_processing.mjs +3 -3
  65. package/batteries/tools/structured_data.cjs +3 -3
  66. package/batteries/tools/structured_data.mjs +3 -3
  67. package/batteries/tools/text_analysis.cjs +3 -3
  68. package/batteries/tools/text_analysis.mjs +3 -3
  69. package/batteries/tools/text_comparison.cjs +2 -2
  70. package/batteries/tools/text_comparison.mjs +2 -2
  71. package/batteries/tools/time.cjs +2 -2
  72. package/batteries/tools/time.mjs +2 -2
  73. package/batteries/tools/unit_conversion.cjs +2 -2
  74. package/batteries/tools/unit_conversion.mjs +2 -2
  75. package/batteries/vector/arangodb/index.d.ts +38 -0
  76. package/batteries/vector/arangodb.cjs +257 -0
  77. package/batteries/vector/arangodb.cjs.map +1 -0
  78. package/batteries/vector/arangodb.mjs +255 -0
  79. package/batteries/vector/arangodb.mjs.map +1 -0
  80. package/batteries/vector/builder.cjs +297 -0
  81. package/batteries/vector/builder.cjs.map +1 -0
  82. package/batteries/vector/builder.d.ts +87 -0
  83. package/batteries/vector/builder.mjs +294 -0
  84. package/batteries/vector/builder.mjs.map +1 -0
  85. package/batteries/vector/chroma/index.d.ts +32 -0
  86. package/batteries/vector/chroma.cjs +305 -0
  87. package/batteries/vector/chroma.cjs.map +1 -0
  88. package/batteries/vector/chroma.mjs +302 -0
  89. package/batteries/vector/chroma.mjs.map +1 -0
  90. package/batteries/vector/clickhouse/index.d.ts +39 -0
  91. package/batteries/vector/clickhouse.cjs +246 -0
  92. package/batteries/vector/clickhouse.cjs.map +1 -0
  93. package/batteries/vector/clickhouse.mjs +244 -0
  94. package/batteries/vector/clickhouse.mjs.map +1 -0
  95. package/batteries/vector/cloudflare/index.d.ts +43 -0
  96. package/batteries/vector/cloudflare.cjs +397 -0
  97. package/batteries/vector/cloudflare.cjs.map +1 -0
  98. package/batteries/vector/cloudflare.mjs +395 -0
  99. package/batteries/vector/cloudflare.mjs.map +1 -0
  100. package/batteries/vector/conformance/index.d.ts +15 -0
  101. package/batteries/vector/conformance.cjs +209 -0
  102. package/batteries/vector/conformance.cjs.map +1 -0
  103. package/batteries/vector/conformance.mjs +205 -0
  104. package/batteries/vector/conformance.mjs.map +1 -0
  105. package/batteries/vector/contract.cjs +42 -0
  106. package/batteries/vector/contract.cjs.map +1 -0
  107. package/batteries/vector/contract.d.ts +39 -0
  108. package/batteries/vector/contract.mjs +40 -0
  109. package/batteries/vector/contract.mjs.map +1 -0
  110. package/batteries/vector/couchbase/index.d.ts +49 -0
  111. package/batteries/vector/couchbase.cjs +401 -0
  112. package/batteries/vector/couchbase.cjs.map +1 -0
  113. package/batteries/vector/couchbase.mjs +399 -0
  114. package/batteries/vector/couchbase.mjs.map +1 -0
  115. package/batteries/vector/duckdb/index.d.ts +33 -0
  116. package/batteries/vector/duckdb.cjs +218 -0
  117. package/batteries/vector/duckdb.cjs.map +1 -0
  118. package/batteries/vector/duckdb.mjs +216 -0
  119. package/batteries/vector/duckdb.mjs.map +1 -0
  120. package/batteries/vector/elasticsearch/index.d.ts +43 -0
  121. package/batteries/vector/elasticsearch.cjs +306 -0
  122. package/batteries/vector/elasticsearch.cjs.map +1 -0
  123. package/batteries/vector/elasticsearch.mjs +303 -0
  124. package/batteries/vector/elasticsearch.mjs.map +1 -0
  125. package/batteries/vector/exceptions.cjs +126 -0
  126. package/batteries/vector/exceptions.cjs.map +1 -0
  127. package/batteries/vector/exceptions.d.ts +142 -0
  128. package/batteries/vector/exceptions.mjs +107 -0
  129. package/batteries/vector/exceptions.mjs.map +1 -0
  130. package/batteries/vector/factory.cjs +28 -0
  131. package/batteries/vector/factory.cjs.map +1 -0
  132. package/batteries/vector/factory.d.ts +38 -0
  133. package/batteries/vector/factory.mjs +25 -0
  134. package/batteries/vector/factory.mjs.map +1 -0
  135. package/batteries/vector/filters.cjs +107 -0
  136. package/batteries/vector/filters.cjs.map +1 -0
  137. package/batteries/vector/filters.d.ts +34 -0
  138. package/batteries/vector/filters.mjs +99 -0
  139. package/batteries/vector/filters.mjs.map +1 -0
  140. package/batteries/vector/helpers.cjs +23 -0
  141. package/batteries/vector/helpers.cjs.map +1 -0
  142. package/batteries/vector/helpers.d.ts +12 -0
  143. package/batteries/vector/helpers.mjs +17 -0
  144. package/batteries/vector/helpers.mjs.map +1 -0
  145. package/batteries/vector/hnswlib/index.d.ts +35 -0
  146. package/batteries/vector/hnswlib.cjs +237 -0
  147. package/batteries/vector/hnswlib.cjs.map +1 -0
  148. package/batteries/vector/hnswlib.mjs +235 -0
  149. package/batteries/vector/hnswlib.mjs.map +1 -0
  150. package/batteries/vector/in_memory/index.d.ts +23 -0
  151. package/batteries/vector/in_memory.cjs +178 -0
  152. package/batteries/vector/in_memory.cjs.map +1 -0
  153. package/batteries/vector/in_memory.mjs +176 -0
  154. package/batteries/vector/in_memory.mjs.map +1 -0
  155. package/batteries/vector/index.d.ts +18 -0
  156. package/batteries/vector/lancedb/index.d.ts +34 -0
  157. package/batteries/vector/lancedb.cjs +224 -0
  158. package/batteries/vector/lancedb.cjs.map +1 -0
  159. package/batteries/vector/lancedb.mjs +222 -0
  160. package/batteries/vector/lancedb.mjs.map +1 -0
  161. package/batteries/vector/mariadb/index.d.ts +39 -0
  162. package/batteries/vector/mariadb.cjs +228 -0
  163. package/batteries/vector/mariadb.cjs.map +1 -0
  164. package/batteries/vector/mariadb.mjs +226 -0
  165. package/batteries/vector/mariadb.mjs.map +1 -0
  166. package/batteries/vector/meilisearch/index.d.ts +36 -0
  167. package/batteries/vector/meilisearch.cjs +242 -0
  168. package/batteries/vector/meilisearch.cjs.map +1 -0
  169. package/batteries/vector/meilisearch.mjs +240 -0
  170. package/batteries/vector/meilisearch.mjs.map +1 -0
  171. package/batteries/vector/migrate.cjs +54 -0
  172. package/batteries/vector/migrate.cjs.map +1 -0
  173. package/batteries/vector/migrate.d.ts +30 -0
  174. package/batteries/vector/migrate.mjs +52 -0
  175. package/batteries/vector/migrate.mjs.map +1 -0
  176. package/batteries/vector/milvus/index.d.ts +35 -0
  177. package/batteries/vector/milvus.cjs +357 -0
  178. package/batteries/vector/milvus.cjs.map +1 -0
  179. package/batteries/vector/milvus.mjs +354 -0
  180. package/batteries/vector/milvus.mjs.map +1 -0
  181. package/batteries/vector/mongodb/index.d.ts +46 -0
  182. package/batteries/vector/mongodb.cjs +270 -0
  183. package/batteries/vector/mongodb.cjs.map +1 -0
  184. package/batteries/vector/mongodb.mjs +268 -0
  185. package/batteries/vector/mongodb.mjs.map +1 -0
  186. package/batteries/vector/neo4j/index.d.ts +38 -0
  187. package/batteries/vector/neo4j.cjs +231 -0
  188. package/batteries/vector/neo4j.cjs.map +1 -0
  189. package/batteries/vector/neo4j.mjs +229 -0
  190. package/batteries/vector/neo4j.mjs.map +1 -0
  191. package/batteries/vector/opensearch/index.d.ts +46 -0
  192. package/batteries/vector/opensearch.cjs +316 -0
  193. package/batteries/vector/opensearch.cjs.map +1 -0
  194. package/batteries/vector/opensearch.mjs +313 -0
  195. package/batteries/vector/opensearch.mjs.map +1 -0
  196. package/batteries/vector/oracle23ai/index.d.ts +45 -0
  197. package/batteries/vector/oracle23ai.cjs +340 -0
  198. package/batteries/vector/oracle23ai.cjs.map +1 -0
  199. package/batteries/vector/oracle23ai.mjs +338 -0
  200. package/batteries/vector/oracle23ai.mjs.map +1 -0
  201. package/batteries/vector/orama/index.d.ts +23 -0
  202. package/batteries/vector/orama.cjs +272 -0
  203. package/batteries/vector/orama.cjs.map +1 -0
  204. package/batteries/vector/orama.mjs +270 -0
  205. package/batteries/vector/orama.mjs.map +1 -0
  206. package/batteries/vector/pgvector/index.d.ts +43 -0
  207. package/batteries/vector/pgvector.cjs +411 -0
  208. package/batteries/vector/pgvector.cjs.map +1 -0
  209. package/batteries/vector/pgvector.mjs +408 -0
  210. package/batteries/vector/pgvector.mjs.map +1 -0
  211. package/batteries/vector/pinecone/index.d.ts +38 -0
  212. package/batteries/vector/pinecone.cjs +415 -0
  213. package/batteries/vector/pinecone.cjs.map +1 -0
  214. package/batteries/vector/pinecone.mjs +412 -0
  215. package/batteries/vector/pinecone.mjs.map +1 -0
  216. package/batteries/vector/plan.cjs +2 -0
  217. package/batteries/vector/plan.d.ts +65 -0
  218. package/batteries/vector/plan.mjs +0 -0
  219. package/batteries/vector/qdrant/index.d.ts +34 -0
  220. package/batteries/vector/qdrant.cjs +286 -0
  221. package/batteries/vector/qdrant.cjs.map +1 -0
  222. package/batteries/vector/qdrant.mjs +284 -0
  223. package/batteries/vector/qdrant.mjs.map +1 -0
  224. package/batteries/vector/redis/index.d.ts +44 -0
  225. package/batteries/vector/redis.cjs +391 -0
  226. package/batteries/vector/redis.cjs.map +1 -0
  227. package/batteries/vector/redis.mjs +388 -0
  228. package/batteries/vector/redis.mjs.map +1 -0
  229. package/batteries/vector/retrievable.cjs +69 -0
  230. package/batteries/vector/retrievable.cjs.map +1 -0
  231. package/batteries/vector/retrievable.mjs +67 -0
  232. package/batteries/vector/retrievable.mjs.map +1 -0
  233. package/batteries/vector/retrievable_glue.d.ts +24 -0
  234. package/batteries/vector/s3vectors/index.d.ts +52 -0
  235. package/batteries/vector/s3vectors.cjs +438 -0
  236. package/batteries/vector/s3vectors.cjs.map +1 -0
  237. package/batteries/vector/s3vectors.mjs +436 -0
  238. package/batteries/vector/s3vectors.mjs.map +1 -0
  239. package/batteries/vector/schema.cjs +96 -0
  240. package/batteries/vector/schema.cjs.map +1 -0
  241. package/batteries/vector/schema.d.ts +40 -0
  242. package/batteries/vector/schema.mjs +93 -0
  243. package/batteries/vector/schema.mjs.map +1 -0
  244. package/batteries/vector/solr/index.d.ts +36 -0
  245. package/batteries/vector/solr.cjs +230 -0
  246. package/batteries/vector/solr.cjs.map +1 -0
  247. package/batteries/vector/solr.mjs +228 -0
  248. package/batteries/vector/solr.mjs.map +1 -0
  249. package/batteries/vector/sqlite_vec/index.d.ts +30 -0
  250. package/batteries/vector/sqlite_vec.cjs +318 -0
  251. package/batteries/vector/sqlite_vec.cjs.map +1 -0
  252. package/batteries/vector/sqlite_vec.mjs +316 -0
  253. package/batteries/vector/sqlite_vec.mjs.map +1 -0
  254. package/batteries/vector/surrealdb/index.d.ts +37 -0
  255. package/batteries/vector/surrealdb.cjs +230 -0
  256. package/batteries/vector/surrealdb.cjs.map +1 -0
  257. package/batteries/vector/surrealdb.mjs +228 -0
  258. package/batteries/vector/surrealdb.mjs.map +1 -0
  259. package/batteries/vector/types.cjs +2 -0
  260. package/batteries/vector/types.d.ts +100 -0
  261. package/batteries/vector/types.mjs +0 -0
  262. package/batteries/vector/typesense/index.d.ts +38 -0
  263. package/batteries/vector/typesense.cjs +272 -0
  264. package/batteries/vector/typesense.cjs.map +1 -0
  265. package/batteries/vector/typesense.mjs +270 -0
  266. package/batteries/vector/typesense.mjs.map +1 -0
  267. package/batteries/vector/validation.cjs +90 -0
  268. package/batteries/vector/validation.cjs.map +1 -0
  269. package/batteries/vector/validation.d.ts +18 -0
  270. package/batteries/vector/validation.mjs +83 -0
  271. package/batteries/vector/validation.mjs.map +1 -0
  272. package/batteries/vector/vector_store_constructor.cjs +56 -0
  273. package/batteries/vector/vector_store_constructor.cjs.map +1 -0
  274. package/batteries/vector/vector_store_constructor.d.ts +30 -0
  275. package/batteries/vector/vector_store_constructor.mjs +53 -0
  276. package/batteries/vector/vector_store_constructor.mjs.map +1 -0
  277. package/batteries/vector/vespa/index.d.ts +39 -0
  278. package/batteries/vector/vespa.cjs +423 -0
  279. package/batteries/vector/vespa.cjs.map +1 -0
  280. package/batteries/vector/vespa.mjs +421 -0
  281. package/batteries/vector/vespa.mjs.map +1 -0
  282. package/batteries/vector/weaviate/index.d.ts +57 -0
  283. package/batteries/vector/weaviate.cjs +325 -0
  284. package/batteries/vector/weaviate.cjs.map +1 -0
  285. package/batteries/vector/weaviate.mjs +322 -0
  286. package/batteries/vector/weaviate.mjs.map +1 -0
  287. package/batteries/vector.cjs +63 -0
  288. package/batteries/vector.mjs +14 -0
  289. package/batteries.cjs +62 -0
  290. package/batteries.mjs +15 -1
  291. package/{chunk-kRvK8_k2.mjs → chunk-Bpcn9VDT.mjs} +5 -1
  292. package/{common-lMrnzoyn.mjs → common-BT0nfCi9.mjs} +8 -8
  293. package/{common-lMrnzoyn.mjs.map → common-BT0nfCi9.mjs.map} +1 -1
  294. package/{common-D_e5zYsG.js → common-Cj8TaQ9U.js} +8 -8
  295. package/{common-D_e5zYsG.js.map → common-Cj8TaQ9U.js.map} +1 -1
  296. package/common.cjs +7 -7
  297. package/common.mjs +7 -7
  298. package/{dispatch_runner-CpuyATj1.js → dispatch_runner-BHBNupqp.js} +2 -2
  299. package/dispatch_runner-BHBNupqp.js.map +1 -0
  300. package/{dispatch_runner-CDF3X0nv.mjs → dispatch_runner-DPcS7Y_M.mjs} +2 -2
  301. package/dispatch_runner-DPcS7Y_M.mjs.map +1 -0
  302. package/dispatch_runner.cjs +1 -1
  303. package/dispatch_runner.mjs +1 -1
  304. package/forge.cjs +4 -4
  305. package/forge.mjs +4 -4
  306. package/guards.cjs +8 -8
  307. package/guards.mjs +8 -8
  308. package/index.cjs +12 -12
  309. package/index.mjs +12 -12
  310. package/lib/classes/tool_registry.d.ts +70 -4
  311. package/mcp/adk-docs-corpus.json +1 -1
  312. package/package.json +424 -88
  313. package/skills/adk-assembly/SKILL.md +2 -2
  314. package/{spooled_artifact-B8gIIn9h.js → spooled_artifact-BTq6Nzfy.js} +4 -4
  315. package/spooled_artifact-BTq6Nzfy.js.map +1 -0
  316. package/{spooled_artifact-CWoKUDEm.mjs → spooled_artifact-CHoZgWwI.mjs} +4 -4
  317. package/spooled_artifact-CHoZgWwI.mjs.map +1 -0
  318. package/spooled_artifact.cjs +2 -2
  319. package/spooled_artifact.mjs +2 -2
  320. package/{spooled_markdown_artifact-DQX0RCdI.js → spooled_markdown_artifact-CALSDxIx.js} +3 -3
  321. package/{spooled_markdown_artifact-DQX0RCdI.js.map → spooled_markdown_artifact-CALSDxIx.js.map} +1 -1
  322. package/{spooled_markdown_artifact-CNle4jXN.mjs → spooled_markdown_artifact-Ci5UL7l4.mjs} +3 -3
  323. package/{spooled_markdown_artifact-CNle4jXN.mjs.map → spooled_markdown_artifact-Ci5UL7l4.mjs.map} +1 -1
  324. package/src/types/evaluatex.d.ts +31 -0
  325. package/{thought-BD6AkkOr.js → thought-BbwhJ1wb.js} +4 -4
  326. package/thought-BbwhJ1wb.js.map +1 -0
  327. package/{thought-B_P8LiB6.mjs → thought-D34QQZZ9.mjs} +4 -4
  328. package/thought-D34QQZZ9.mjs.map +1 -0
  329. package/{tool-CRZSUcdP.mjs → tool-CMhaDRNd.mjs} +3 -3
  330. package/tool-CMhaDRNd.mjs.map +1 -0
  331. package/{tool-CX9vNHAw.js → tool-CVyZkFC7.js} +3 -3
  332. package/tool-CVyZkFC7.js.map +1 -0
  333. package/{tool_call-BUeMuCc6.mjs → tool_call-CV5qVNlb.mjs} +3 -3
  334. package/{tool_call-BUeMuCc6.mjs.map → tool_call-CV5qVNlb.mjs.map} +1 -1
  335. package/{tool_call--7ti-frB.js → tool_call-Db68hB7y.js} +3 -3
  336. package/{tool_call--7ti-frB.js.map → tool_call-Db68hB7y.js.map} +1 -1
  337. package/{tool_registry-BGHg6KTq.mjs → tool_registry-D1pSSlsd.mjs} +109 -22
  338. package/tool_registry-D1pSSlsd.mjs.map +1 -0
  339. package/{tool_registry-CtCQ4Xoz.js → tool_registry-DYUYqXvo.js} +109 -22
  340. package/tool_registry-DYUYqXvo.js.map +1 -0
  341. package/{turn_runner-BJTtAORU.js → turn_runner-DqWHNP80.js} +5 -5
  342. package/turn_runner-DqWHNP80.js.map +1 -0
  343. package/{turn_runner-C02LZHjt.mjs → turn_runner-fg1Wc3dK.mjs} +5 -5
  344. package/turn_runner-fg1Wc3dK.mjs.map +1 -0
  345. package/turn_runner.cjs +1 -1
  346. package/turn_runner.mjs +1 -1
  347. package/dispatch_runner-CDF3X0nv.mjs.map +0 -1
  348. package/dispatch_runner-CpuyATj1.js.map +0 -1
  349. package/spooled_artifact-B8gIIn9h.js.map +0 -1
  350. package/spooled_artifact-CWoKUDEm.mjs.map +0 -1
  351. package/thought-BD6AkkOr.js.map +0 -1
  352. package/thought-B_P8LiB6.mjs.map +0 -1
  353. package/tool-CRZSUcdP.mjs.map +0 -1
  354. package/tool-CX9vNHAw.js.map +0 -1
  355. package/tool_registry-BGHg6KTq.mjs.map +0 -1
  356. package/tool_registry-CtCQ4Xoz.js.map +0 -1
  357. package/turn_runner-BJTtAORU.js.map +0 -1
  358. package/turn_runner-C02LZHjt.mjs.map +0 -1
@@ -0,0 +1,176 @@
1
+ import { evaluateFilter } from "./filters.mjs";
2
+ import { normalizeScore } from "./helpers.mjs";
3
+ import { E_VECTOR_STORE_DIMENSION_MISMATCH } from "./exceptions.mjs";
4
+ import { BaseVectorStore } from "./contract.mjs";
5
+ import { validateRecords } from "./validation.mjs";
6
+ //#region src/batteries/vector/in_memory/index.ts
7
+ /**
8
+ * @module @nhtio/adk/batteries/vector/in_memory
9
+ */
10
+ var InMemoryVectorStore = class extends BaseVectorStore {
11
+ capabilities = {
12
+ transactions: false,
13
+ namedVectors: false,
14
+ rename: true,
15
+ rawSql: false,
16
+ builtInEncoding: false,
17
+ consistency: {
18
+ configurable: false,
19
+ default: "strong",
20
+ modes: ["strong"]
21
+ }
22
+ };
23
+ #collections = /* @__PURE__ */ new Map();
24
+ #dims = /* @__PURE__ */ new Map();
25
+ static isAvailable() {
26
+ return true;
27
+ }
28
+ isAvailable() {
29
+ return true;
30
+ }
31
+ async connect() {}
32
+ async close() {}
33
+ async createCollection(spec, ifNotExists) {
34
+ if (this.#collections.has(spec.collection)) {
35
+ if (!ifNotExists) throw new Error(`Collection "${spec.collection}" already exists`);
36
+ return;
37
+ }
38
+ this.#collections.set(spec.collection, /* @__PURE__ */ new Map());
39
+ this.#dims.set(spec.collection, spec.vector.dimensions);
40
+ }
41
+ async dropCollection(collection, ifExists) {
42
+ if (!this.#collections.has(collection)) {
43
+ if (!ifExists) throw new Error(`Collection "${collection}" does not exist`);
44
+ return;
45
+ }
46
+ this.#collections.delete(collection);
47
+ this.#dims.delete(collection);
48
+ }
49
+ async hasCollection(collection) {
50
+ return this.#collections.has(collection);
51
+ }
52
+ async renameCollection(from, to) {
53
+ const m = this.#collections.get(from);
54
+ if (!m) throw new Error(`Collection "${from}" does not exist`);
55
+ if (this.#collections.has(to)) throw new Error(`Collection "${to}" already exists`);
56
+ this.#collections.set(to, m);
57
+ this.#collections.delete(from);
58
+ const d = this.#dims.get(from);
59
+ if (d !== void 0) {
60
+ this.#dims.set(to, d);
61
+ this.#dims.delete(from);
62
+ }
63
+ }
64
+ #coll(collection) {
65
+ let m = this.#collections.get(collection);
66
+ if (!m) {
67
+ m = /* @__PURE__ */ new Map();
68
+ this.#collections.set(collection, m);
69
+ }
70
+ return m;
71
+ }
72
+ async executeUpsert(plan) {
73
+ if (plan.records.length === 0) return;
74
+ validateRecords(plan.records);
75
+ const expected = this.#dims.get(plan.collection);
76
+ const m = this.#coll(plan.collection);
77
+ for (const r of plan.records) {
78
+ let vector = r.vector;
79
+ if (!vector && r.document) {
80
+ const [v] = await this.encode([r.document], "document");
81
+ vector = v;
82
+ }
83
+ if (vector && expected !== void 0 && vector.length !== expected) throw new E_VECTOR_STORE_DIMENSION_MISMATCH([expected, vector.length]);
84
+ m.set(r.id, {
85
+ id: r.id,
86
+ vector,
87
+ document: r.document,
88
+ metadata: r.metadata
89
+ });
90
+ }
91
+ }
92
+ async executeDelete(plan) {
93
+ const m = this.#coll(plan.collection);
94
+ if (plan.ids) {
95
+ for (const id of plan.ids) m.delete(id);
96
+ return;
97
+ }
98
+ if (plan.filter) {
99
+ for (const [id, row] of [...m]) if (evaluateFilter(plan.filter, row.metadata ?? {})) m.delete(id);
100
+ return;
101
+ }
102
+ m.clear();
103
+ }
104
+ async executeSearch(plan) {
105
+ const m = this.#coll(plan.collection);
106
+ let rows = [...m.values()];
107
+ if (plan.filter) rows = rows.filter((row) => evaluateFilter(plan.filter, row.metadata ?? {}));
108
+ let scored;
109
+ if (plan.near && "vector" in plan.near) {
110
+ scored = rows.map((row) => ({
111
+ row,
112
+ score: this.#cosineLikeScore(plan.near, row, plan)
113
+ }));
114
+ scored.sort((a, b) => (b.score ?? 0) - (a.score ?? 0));
115
+ } else if (plan.near && "serverText" in plan.near) {
116
+ const [qv] = await this.encode([plan.near.serverText], "query");
117
+ scored = rows.map((row) => ({
118
+ row,
119
+ score: this.#scoreVec(qv, row.vector, plan)
120
+ }));
121
+ scored.sort((a, b) => (b.score ?? 0) - (a.score ?? 0));
122
+ } else if (plan.near && "id" in plan.near) {
123
+ const qv = m.get(plan.near.id)?.vector;
124
+ scored = rows.map((row) => ({
125
+ row,
126
+ score: qv ? this.#scoreVec(qv, row.vector, plan) : void 0
127
+ }));
128
+ scored.sort((a, b) => (b.score ?? 0) - (a.score ?? 0));
129
+ } else scored = rows.map((row) => ({ row }));
130
+ return scored.slice(plan.offset ?? 0, (plan.offset ?? 0) + plan.topK).map(({ row, score }) => this.#project(row, score, plan.projection));
131
+ }
132
+ #scoreVec(q, v, _plan) {
133
+ if (!v) return void 0;
134
+ const metric = this.options.metric ?? "cosine";
135
+ let raw;
136
+ if (metric === "cosine") {
137
+ const dot = this.#dot(q, v);
138
+ const na = Math.sqrt(this.#dot(q, q));
139
+ const nb = Math.sqrt(this.#dot(v, v));
140
+ raw = na && nb ? dot / (na * nb) : 0;
141
+ return normalizeScore(raw, "cosine", "similarity");
142
+ }
143
+ if (metric === "dot") {
144
+ raw = this.#dot(q, v);
145
+ return normalizeScore(raw, "dot", "similarity");
146
+ }
147
+ let s = 0;
148
+ for (let i = 0; i < Math.min(q.length, v.length); i++) {
149
+ const d = q[i] - v[i];
150
+ s += d * d;
151
+ }
152
+ raw = Math.sqrt(s);
153
+ return normalizeScore(raw, "euclidean", "distance");
154
+ }
155
+ #cosineLikeScore(near, row, plan) {
156
+ return this.#scoreVec(near.vector, row.vector, plan);
157
+ }
158
+ #dot(a, b) {
159
+ let s = 0;
160
+ for (let i = 0; i < Math.min(a.length, b.length); i++) s += a[i] * b[i];
161
+ return s;
162
+ }
163
+ #project(row, score, p) {
164
+ const out = {};
165
+ if (p.id) out.id = row.id;
166
+ if (score !== void 0) out.score = score;
167
+ if (p.vector && row.vector) out.vector = row.vector;
168
+ if (p.document && row.document !== void 0) out.document = row.document;
169
+ if (p.metadata && row.metadata !== void 0) out.metadata = row.metadata;
170
+ return out;
171
+ }
172
+ };
173
+ //#endregion
174
+ export { InMemoryVectorStore };
175
+
176
+ //# sourceMappingURL=in_memory.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in_memory.mjs","names":["#collections","#dims","#coll","#cosineLikeScore","#scoreVec","#project","#dot"],"sources":["../../../src/batteries/vector/in_memory/index.ts"],"sourcesContent":["/**\n * @module @nhtio/adk/batteries/vector/in_memory\n */\n\nimport { evaluateFilter } from '../filters'\nimport { normalizeScore } from '../helpers'\nimport { BaseVectorStore } from '../contract'\nimport { validateRecords } from '../validation'\nimport { E_VECTOR_STORE_DIMENSION_MISMATCH } from '../exceptions'\nimport type { VectorMatch, VectorStoreCapabilities, BaseVectorStoreOptions } from '../types'\nimport type { SearchPlan, UpsertPlan, DeletePlan, CollectionSpec, Projection } from '../plan'\n\nexport interface InMemoryVectorStoreOptions extends BaseVectorStoreOptions {}\n\ninterface StoredRow {\n id: string\n vector?: number[]\n document?: string\n metadata?: Record<string, unknown>\n}\n\nexport class InMemoryVectorStore extends BaseVectorStore {\n readonly capabilities: VectorStoreCapabilities = {\n transactions: false,\n namedVectors: false,\n rename: true,\n rawSql: false,\n builtInEncoding: false,\n // Strongly consistent: a write is visible on resolve, so the option is a no-op.\n consistency: { configurable: false, default: 'strong', modes: ['strong'] },\n }\n #collections = new Map<string, Map<string, StoredRow>>()\n #dims = new Map<string, number>()\n\n static isAvailable(): boolean {\n return true\n }\n isAvailable(): boolean {\n return true\n }\n async connect(): Promise<void> {\n /* no-op */\n }\n async close(): Promise<void> {\n /* no-op */\n }\n\n async createCollection(spec: CollectionSpec, ifNotExists: boolean): Promise<void> {\n if (this.#collections.has(spec.collection)) {\n if (!ifNotExists) {\n throw new Error(`Collection \"${spec.collection}\" already exists`)\n }\n return\n }\n this.#collections.set(spec.collection, new Map())\n this.#dims.set(spec.collection, spec.vector.dimensions)\n }\n\n async dropCollection(collection: string, ifExists: boolean): Promise<void> {\n if (!this.#collections.has(collection)) {\n if (!ifExists) {\n throw new Error(`Collection \"${collection}\" does not exist`)\n }\n return\n }\n this.#collections.delete(collection)\n this.#dims.delete(collection)\n }\n\n async hasCollection(collection: string): Promise<boolean> {\n return this.#collections.has(collection)\n }\n\n async renameCollection(from: string, to: string): Promise<void> {\n const m = this.#collections.get(from)\n if (!m) {\n throw new Error(`Collection \"${from}\" does not exist`)\n }\n if (this.#collections.has(to)) {\n throw new Error(`Collection \"${to}\" already exists`)\n }\n this.#collections.set(to, m)\n this.#collections.delete(from)\n const d = this.#dims.get(from)\n if (d !== undefined) {\n this.#dims.set(to, d)\n this.#dims.delete(from)\n }\n }\n\n #coll(collection: string): Map<string, StoredRow> {\n let m = this.#collections.get(collection)\n if (!m) {\n m = new Map()\n this.#collections.set(collection, m)\n }\n return m\n }\n\n async executeUpsert(plan: UpsertPlan): Promise<void> {\n if (plan.records.length === 0) return\n validateRecords(plan.records)\n const expected = this.#dims.get(plan.collection)\n const m = this.#coll(plan.collection)\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 if (vector && expected !== undefined && vector.length !== expected) {\n throw new E_VECTOR_STORE_DIMENSION_MISMATCH([expected, vector.length])\n }\n m.set(r.id, {\n id: r.id,\n vector,\n document: r.document,\n metadata: r.metadata as Record<string, unknown> | undefined,\n })\n }\n }\n\n async executeDelete(plan: DeletePlan): Promise<void> {\n const m = this.#coll(plan.collection)\n if (plan.ids) {\n for (const id of plan.ids) m.delete(id)\n return\n }\n if (plan.filter) {\n for (const [id, row] of [...m]) {\n if (evaluateFilter(plan.filter, (row.metadata ?? {}) as any)) m.delete(id)\n }\n return\n }\n m.clear()\n }\n\n async executeSearch(plan: SearchPlan): Promise<VectorMatch[]> {\n const m = this.#coll(plan.collection)\n let rows = [...m.values()]\n if (plan.filter)\n rows = rows.filter((row) => evaluateFilter(plan.filter!, (row.metadata ?? {}) as any))\n let scored: { row: StoredRow; score?: number }[]\n if (plan.near && 'vector' in plan.near) {\n scored = rows.map((row) => ({\n row,\n score: this.#cosineLikeScore(plan.near as { vector: number[] }, row, plan),\n }))\n scored.sort((a, b) => (b.score ?? 0) - (a.score ?? 0))\n } else if (plan.near && 'serverText' in plan.near) {\n const [qv] = await this.encode([plan.near.serverText], 'query')\n scored = rows.map((row) => ({ row, score: this.#scoreVec(qv, row.vector, plan) }))\n scored.sort((a, b) => (b.score ?? 0) - (a.score ?? 0))\n } else if (plan.near && 'id' in plan.near) {\n const ref = m.get(plan.near.id)\n const qv = ref?.vector\n scored = rows.map((row) => ({\n row,\n score: qv ? this.#scoreVec(qv, row.vector, plan) : undefined,\n }))\n scored.sort((a, b) => (b.score ?? 0) - (a.score ?? 0))\n } else {\n scored = rows.map((row) => ({ row }))\n }\n const limited = scored.slice(plan.offset ?? 0, (plan.offset ?? 0) + plan.topK)\n return limited.map(({ row, score }) => this.#project(row, score, plan.projection))\n }\n\n #scoreVec(q: number[], v: number[] | undefined, _plan: SearchPlan): number | undefined {\n if (!v) return undefined\n const metric = this.options.metric ?? 'cosine'\n let raw: number\n if (metric === 'cosine') {\n const dot = this.#dot(q, v)\n const na = Math.sqrt(this.#dot(q, q))\n const nb = Math.sqrt(this.#dot(v, v))\n raw = na && nb ? dot / (na * nb) : 0\n return normalizeScore(raw, 'cosine', 'similarity')\n }\n if (metric === 'dot') {\n raw = this.#dot(q, v)\n return normalizeScore(raw, 'dot', 'similarity')\n }\n let s = 0\n for (let i = 0; i < Math.min(q.length, v.length); i++) {\n const d = q[i] - v[i]\n s += d * d\n }\n raw = Math.sqrt(s)\n return normalizeScore(raw, 'euclidean', 'distance')\n }\n\n #cosineLikeScore(\n near: { vector: number[] },\n row: StoredRow,\n plan: SearchPlan\n ): number | undefined {\n return this.#scoreVec(near.vector, row.vector, plan)\n }\n\n #dot(a: number[], b: number[]): number {\n let s = 0\n for (let i = 0; i < Math.min(a.length, b.length); i++) s += a[i] * b[i]\n return s\n }\n\n #project(row: StoredRow, score: number | undefined, p: Projection): VectorMatch {\n const out: VectorMatch = {}\n if (p.id) out.id = row.id\n if (score !== undefined) out.score = score\n if (p.vector && row.vector) out.vector = row.vector\n if (p.document && row.document !== undefined) out.document = row.document\n if (p.metadata && row.metadata !== undefined) out.metadata = row.metadata as any\n return out\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @module @nhtio/adk/batteries/vector
3
+ */
4
+ export * from "./types";
5
+ export * from "./plan";
6
+ export * from "./filters";
7
+ export * from "./helpers";
8
+ export * from "./exceptions";
9
+ export * from "./builder";
10
+ export * from "./schema";
11
+ export * from "./migrate";
12
+ export * from "./contract";
13
+ export * from "./vector_store_constructor";
14
+ export * from "./validation";
15
+ export * from "./factory";
16
+ export * from "./retrievable_glue";
17
+ export * from "./in_memory/index";
18
+ export * from "./orama/index";
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @module @nhtio/adk/batteries/vector/lancedb
3
+ *
4
+ * Embedded LanceDB adapter (no server — file-based, like sqlite_vec/duckdb). Each collection
5
+ * is a Lance table with an explicit Arrow schema (`id` Utf8, `vec` FixedSizeList<Float32>,
6
+ * `document` Utf8, `metadata` Utf8-JSON). KNN uses `table.search(vector).distanceType(...)`;
7
+ * metadata is filtered with the neutral filter tree's JS reference evaluator for exact
8
+ * cross-adapter parity. Upsert is a merge-insert on `id`.
9
+ *
10
+ * Drivers: `@lancedb/lancedb` + `apache-arrow` (prebuilt binary; no native compile).
11
+ */
12
+ import { BaseVectorStore } from "../contract";
13
+ import type { SearchPlan, UpsertPlan, DeletePlan, CollectionSpec } from "../plan";
14
+ import type { VectorMatch, VectorStoreCapabilities, BaseVectorStoreOptions } from "../types";
15
+ export interface LanceDBVectorStoreOptions extends BaseVectorStoreOptions {
16
+ connection: {
17
+ uri: string;
18
+ };
19
+ }
20
+ export declare class LanceDBVectorStore extends BaseVectorStore {
21
+ #private;
22
+ readonly capabilities: VectorStoreCapabilities;
23
+ static isAvailable(): boolean;
24
+ isAvailable(): boolean;
25
+ connect(): Promise<void>;
26
+ close(): Promise<void>;
27
+ createCollection(spec: CollectionSpec, ifNotExists: boolean): Promise<void>;
28
+ dropCollection(collection: string, ifExists: boolean): Promise<void>;
29
+ hasCollection(collection: string): Promise<boolean>;
30
+ renameCollection(_from: string, _to: string): Promise<void>;
31
+ executeUpsert(plan: UpsertPlan): Promise<void>;
32
+ executeSearch(plan: SearchPlan): Promise<VectorMatch[]>;
33
+ executeDelete(plan: DeletePlan): Promise<void>;
34
+ }
@@ -0,0 +1,224 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../chunk-Ble4zEEl.js");
3
+ const require_tool_registry = require("../../tool_registry-DYUYqXvo.js");
4
+ require("../../guards.cjs");
5
+ const require_batteries_vector_filters = require("./filters.cjs");
6
+ const require_batteries_vector_helpers = require("./helpers.cjs");
7
+ const require_batteries_vector_exceptions = require("./exceptions.cjs");
8
+ const require_batteries_vector_contract = require("./contract.cjs");
9
+ const require_batteries_vector_validation = require("./validation.cjs");
10
+ //#region src/batteries/vector/lancedb/index.ts
11
+ /**
12
+ * @module @nhtio/adk/batteries/vector/lancedb
13
+ *
14
+ * Embedded LanceDB adapter (no server — file-based, like sqlite_vec/duckdb). Each collection
15
+ * is a Lance table with an explicit Arrow schema (`id` Utf8, `vec` FixedSizeList<Float32>,
16
+ * `document` Utf8, `metadata` Utf8-JSON). KNN uses `table.search(vector).distanceType(...)`;
17
+ * metadata is filtered with the neutral filter tree's JS reference evaluator for exact
18
+ * cross-adapter parity. Upsert is a merge-insert on `id`.
19
+ *
20
+ * Drivers: `@lancedb/lancedb` + `apache-arrow` (prebuilt binary; no native compile).
21
+ */
22
+ var getLanceDB = async () => {
23
+ try {
24
+ return await import("@lancedb/lancedb");
25
+ } catch {
26
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_DRIVER_UNAVAILABLE(["@lancedb/lancedb"]);
27
+ }
28
+ };
29
+ var getArrow = async () => {
30
+ try {
31
+ return await import("apache-arrow");
32
+ } catch {
33
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_DRIVER_UNAVAILABLE(["apache-arrow"]);
34
+ }
35
+ };
36
+ var lanceMetric = (metric) => metric === "euclidean" ? "l2" : metric === "dot" ? "dot" : "cosine";
37
+ var lit = (value) => `'${value.replace(/'/g, "''")}'`;
38
+ var LanceDBVectorStore = class extends require_batteries_vector_contract.BaseVectorStore {
39
+ capabilities = {
40
+ transactions: false,
41
+ namedVectors: false,
42
+ rename: true,
43
+ rawSql: false,
44
+ builtInEncoding: false,
45
+ consistency: {
46
+ configurable: false,
47
+ default: "strong",
48
+ modes: ["strong"]
49
+ }
50
+ };
51
+ #db = null;
52
+ #dims = /* @__PURE__ */ new Map();
53
+ get #opts() {
54
+ return this.options;
55
+ }
56
+ static isAvailable() {
57
+ return typeof process !== "undefined";
58
+ }
59
+ isAvailable() {
60
+ return typeof process !== "undefined";
61
+ }
62
+ async connect() {
63
+ if (this.#db) return;
64
+ const lancedb = await getLanceDB();
65
+ const uri = this.#opts.connection?.uri;
66
+ if (!uri) throw new require_batteries_vector_exceptions.E_VECTOR_STORE_CONNECTION_FAILED(["LanceDB requires connection.uri (a directory path)"]);
67
+ try {
68
+ this.#db = await lancedb.connect(uri);
69
+ } catch (err) {
70
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_CONNECTION_FAILED([String(err)]);
71
+ }
72
+ }
73
+ async close() {
74
+ this.#db = null;
75
+ }
76
+ async #ensure() {
77
+ if (!this.#db) await this.connect();
78
+ return this.#db;
79
+ }
80
+ async createCollection(spec, ifNotExists) {
81
+ const db = await this.#ensure();
82
+ this.#dims.set(spec.collection, spec.vector.dimensions);
83
+ if (ifNotExists && await this.hasCollection(spec.collection)) return;
84
+ const arrow = await getArrow();
85
+ const schema = new arrow.Schema([
86
+ new arrow.Field("id", new arrow.Utf8(), false),
87
+ new arrow.Field("vec", new arrow.FixedSizeList(spec.vector.dimensions, new arrow.Field("item", new arrow.Float32(), true)), false),
88
+ new arrow.Field("document", new arrow.Utf8(), true),
89
+ new arrow.Field("metadata", new arrow.Utf8(), true)
90
+ ]);
91
+ try {
92
+ await db.createEmptyTable(spec.collection, schema, { mode: "overwrite" });
93
+ } catch (err) {
94
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_COLLECTION_FAILED(["createCollection", String(err)]);
95
+ }
96
+ }
97
+ async dropCollection(collection, ifExists) {
98
+ const db = await this.#ensure();
99
+ if (ifExists && !await this.hasCollection(collection)) return;
100
+ try {
101
+ await db.dropTable(collection);
102
+ this.#dims.delete(collection);
103
+ } catch (err) {
104
+ const msg = String(err);
105
+ if (ifExists && msg.includes("not found")) return;
106
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_COLLECTION_FAILED(["dropCollection", msg]);
107
+ }
108
+ }
109
+ async hasCollection(collection) {
110
+ const db = await this.#ensure();
111
+ try {
112
+ return (await db.tableNames()).includes(collection);
113
+ } catch {
114
+ return false;
115
+ }
116
+ }
117
+ async renameCollection(_from, _to) {
118
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_UNSUPPORTED_OPERATION(["renameCollection", "lancedb"]);
119
+ }
120
+ async executeUpsert(plan) {
121
+ if (plan.records.length === 0) return;
122
+ require_batteries_vector_validation.validateRecords(plan.records);
123
+ const db = await this.#ensure();
124
+ const expected = this.#opts.dimensions ?? this.#dims.get(plan.collection);
125
+ try {
126
+ const rows = [];
127
+ for (const r of plan.records) {
128
+ let vector = r.vector;
129
+ if (!vector && r.document) {
130
+ const [v] = await this.encode([r.document], "document");
131
+ vector = v;
132
+ }
133
+ if (!vector) throw new require_batteries_vector_exceptions.E_VECTOR_STORE_UPSERT_FAILED(["Record missing vector and document"]);
134
+ if (expected !== void 0 && vector.length !== expected) throw new require_batteries_vector_exceptions.E_VECTOR_STORE_DIMENSION_MISMATCH([expected, vector.length]);
135
+ rows.push({
136
+ id: r.id,
137
+ vec: vector,
138
+ document: r.document ?? "",
139
+ metadata: r.metadata ? JSON.stringify(r.metadata) : "{}"
140
+ });
141
+ }
142
+ await (await db.openTable(plan.collection)).mergeInsert("id").whenMatchedUpdateAll().whenNotMatchedInsertAll().execute(rows);
143
+ } catch (err) {
144
+ if (require_tool_registry.isInstanceOf(err, "E_VECTOR_STORE_DIMENSION_MISMATCH", require_batteries_vector_exceptions.E_VECTOR_STORE_DIMENSION_MISMATCH) || require_tool_registry.isInstanceOf(err, "E_VECTOR_STORE_UPSERT_FAILED", require_batteries_vector_exceptions.E_VECTOR_STORE_UPSERT_FAILED)) throw err;
145
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_UPSERT_FAILED([String(err)]);
146
+ }
147
+ }
148
+ async executeSearch(plan) {
149
+ const db = await this.#ensure();
150
+ const metric = this.#opts.metric ?? "cosine";
151
+ let queryVector;
152
+ let tbl;
153
+ try {
154
+ tbl = await db.openTable(plan.collection);
155
+ } catch (err) {
156
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_SEARCH_FAILED([String(err)]);
157
+ }
158
+ if (plan.near) {
159
+ if ("vector" in plan.near) queryVector = plan.near.vector;
160
+ else if ("serverText" in plan.near) {
161
+ const [v] = await this.encode([plan.near.serverText], "query");
162
+ queryVector = v;
163
+ } else if ("id" in plan.near) {
164
+ const rows = await tbl.query().where(`id = ${lit(plan.near.id)}`).limit(1).toArray();
165
+ if (rows.length === 0) throw new require_batteries_vector_exceptions.E_VECTOR_STORE_SEARCH_FAILED(["Referenced id not found: " + plan.near.id]);
166
+ queryVector = Array.from(rows[0].vec);
167
+ }
168
+ }
169
+ const offset = plan.offset ?? 0;
170
+ try {
171
+ if (queryVector) {
172
+ const k = plan.filter ? 1e3 : plan.topK + offset;
173
+ const rows = await tbl.search(queryVector).distanceType(lanceMetric(metric)).limit(k).toArray();
174
+ return (plan.filter ? rows.filter((row) => require_batteries_vector_filters.evaluateFilter(plan.filter, this.#parseMeta(row.metadata))) : rows).slice(offset, offset + plan.topK).map((row) => this.#project(row, plan, metric, true));
175
+ } else {
176
+ const rows = await tbl.query().limit(plan.filter ? 1e5 : plan.topK + offset).toArray();
177
+ return (plan.filter ? rows.filter((row) => require_batteries_vector_filters.evaluateFilter(plan.filter, this.#parseMeta(row.metadata))) : rows).slice(offset, offset + plan.topK).map((row) => this.#project(row, plan, metric, false));
178
+ }
179
+ } catch (err) {
180
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_SEARCH_FAILED([String(err)]);
181
+ }
182
+ }
183
+ #parseMeta(val) {
184
+ if (typeof val === "string") try {
185
+ return JSON.parse(val);
186
+ } catch {
187
+ return {};
188
+ }
189
+ if (val && typeof val === "object") return val;
190
+ return {};
191
+ }
192
+ #project(row, plan, metric, isKnn) {
193
+ const proj = plan.projection;
194
+ const out = {};
195
+ if (proj.id) out.id = row.id;
196
+ if (proj.vector && row.vec) out.vector = Array.from(row.vec);
197
+ if (proj.document) out.document = row.document ?? void 0;
198
+ if (proj.metadata) out.metadata = this.#parseMeta(row.metadata);
199
+ if (isKnn && row._distance !== void 0 && row._distance !== null) out.score = require_batteries_vector_helpers.normalizeScore(Number(row._distance), metric, "distance");
200
+ return out;
201
+ }
202
+ async executeDelete(plan) {
203
+ const db = await this.#ensure();
204
+ try {
205
+ const tbl = await db.openTable(plan.collection);
206
+ if (plan.ids && plan.ids.length > 0) {
207
+ const list = plan.ids.map((id) => lit(id)).join(", ");
208
+ await tbl.delete(`id IN (${list})`);
209
+ } else if (plan.filter) {
210
+ const targets = (await tbl.query().limit(1e5).toArray()).filter((row) => require_batteries_vector_filters.evaluateFilter(plan.filter, this.#parseMeta(row.metadata))).map((row) => row.id);
211
+ if (targets.length > 0) {
212
+ const list = targets.map((id) => lit(id)).join(", ");
213
+ await tbl.delete(`id IN (${list})`);
214
+ }
215
+ } else await tbl.delete("true");
216
+ } catch (err) {
217
+ throw new require_batteries_vector_exceptions.E_VECTOR_STORE_DELETE_FAILED([String(err)]);
218
+ }
219
+ }
220
+ };
221
+ //#endregion
222
+ exports.LanceDBVectorStore = LanceDBVectorStore;
223
+
224
+ //# sourceMappingURL=lancedb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lancedb.cjs","names":["#opts","#db","#ensure","#dims","#parseMeta","#project"],"sources":["../../../src/batteries/vector/lancedb/index.ts"],"sourcesContent":["/**\n * @module @nhtio/adk/batteries/vector/lancedb\n *\n * Embedded LanceDB adapter (no server — file-based, like sqlite_vec/duckdb). Each collection\n * is a Lance table with an explicit Arrow schema (`id` Utf8, `vec` FixedSizeList<Float32>,\n * `document` Utf8, `metadata` Utf8-JSON). KNN uses `table.search(vector).distanceType(...)`;\n * metadata is filtered with the neutral filter tree's JS reference evaluator for exact\n * cross-adapter parity. Upsert is a merge-insert on `id`.\n *\n * Drivers: `@lancedb/lancedb` + `apache-arrow` (prebuilt binary; no native compile).\n */\n\nimport { evaluateFilter } from '../filters'\nimport { normalizeScore } from '../helpers'\nimport { BaseVectorStore } from '../contract'\nimport { validateRecords } from '../validation'\nimport { isInstanceOf } from '@nhtio/adk/guards'\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 {\n VectorMatch,\n VectorStoreCapabilities,\n BaseVectorStoreOptions,\n VectorMetadata,\n DistanceMetric,\n} from '../types'\n\nexport interface LanceDBVectorStoreOptions extends BaseVectorStoreOptions {\n connection: { uri: string }\n}\n\nconst getLanceDB = async () => {\n try {\n return await import('@lancedb/lancedb')\n } catch {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['@lancedb/lancedb'])\n }\n}\n\nconst getArrow = async () => {\n try {\n return await import('apache-arrow')\n } catch {\n throw new E_VECTOR_STORE_DRIVER_UNAVAILABLE(['apache-arrow'])\n }\n}\n\nconst lanceMetric = (metric: DistanceMetric): string =>\n metric === 'euclidean' ? 'l2' : metric === 'dot' ? 'dot' : 'cosine'\n\n// LanceDB SQL string literal (single-quoted, escape embedded quotes).\nconst lit = (value: string): string => `'${value.replace(/'/g, \"''\")}'`\n\nexport class LanceDBVectorStore extends BaseVectorStore {\n readonly capabilities: VectorStoreCapabilities = {\n transactions: false,\n namedVectors: false,\n rename: true,\n rawSql: false,\n builtInEncoding: false,\n // Embedded and synchronous: a write is visible on resolve. The option is a no-op.\n consistency: { configurable: false, default: 'strong', modes: ['strong'] },\n }\n\n #db: any | null = null\n #dims: Map<string, number> = new Map()\n\n get #opts(): LanceDBVectorStoreOptions {\n return this.options as LanceDBVectorStoreOptions\n }\n\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.#db) return\n const lancedb = await getLanceDB()\n const uri = this.#opts.connection?.uri\n if (!uri) {\n throw new E_VECTOR_STORE_CONNECTION_FAILED([\n 'LanceDB requires connection.uri (a directory path)',\n ])\n }\n try {\n this.#db = await lancedb.connect(uri)\n } catch (err) {\n throw new E_VECTOR_STORE_CONNECTION_FAILED([String(err)])\n }\n }\n\n async close(): Promise<void> {\n this.#db = null\n }\n\n async #ensure(): Promise<any> {\n if (!this.#db) await this.connect()\n return this.#db!\n }\n\n async createCollection(spec: CollectionSpec, ifNotExists: boolean): Promise<void> {\n const db = await this.#ensure()\n this.#dims.set(spec.collection, spec.vector.dimensions)\n if (ifNotExists && (await this.hasCollection(spec.collection))) return\n const arrow = await getArrow()\n const schema = new arrow.Schema([\n new arrow.Field('id', new arrow.Utf8(), false),\n new arrow.Field(\n 'vec',\n new arrow.FixedSizeList(\n spec.vector.dimensions,\n new arrow.Field('item', new arrow.Float32(), true)\n ),\n false\n ),\n new arrow.Field('document', new arrow.Utf8(), true),\n new arrow.Field('metadata', new arrow.Utf8(), true),\n ])\n try {\n await db.createEmptyTable(spec.collection, schema, { mode: 'overwrite' })\n } catch (err) {\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['createCollection', String(err)])\n }\n }\n\n async dropCollection(collection: string, ifExists: boolean): Promise<void> {\n const db = await this.#ensure()\n if (ifExists && !(await this.hasCollection(collection))) return\n try {\n await db.dropTable(collection)\n this.#dims.delete(collection)\n } catch (err) {\n const msg = String(err)\n if (ifExists && msg.includes('not found')) return\n throw new E_VECTOR_STORE_COLLECTION_FAILED(['dropCollection', msg])\n }\n }\n\n async hasCollection(collection: string): Promise<boolean> {\n const db = await this.#ensure()\n try {\n const names = await db.tableNames()\n return names.includes(collection)\n } catch {\n return false\n }\n }\n\n async renameCollection(_from: string, _to: string): Promise<void> {\n throw new E_VECTOR_STORE_UNSUPPORTED_OPERATION(['renameCollection', 'lancedb'])\n }\n\n async executeUpsert(plan: UpsertPlan): Promise<void> {\n if (plan.records.length === 0) return\n validateRecords(plan.records)\n const db = await this.#ensure()\n const expected = this.#opts.dimensions ?? this.#dims.get(plan.collection)\n try {\n const rows: any[] = []\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 if (!vector) {\n throw new E_VECTOR_STORE_UPSERT_FAILED(['Record missing vector and document'])\n }\n if (expected !== undefined && vector.length !== expected) {\n throw new E_VECTOR_STORE_DIMENSION_MISMATCH([expected, vector.length])\n }\n rows.push({\n id: r.id,\n vec: vector,\n document: r.document ?? '',\n metadata: r.metadata ? JSON.stringify(r.metadata) : '{}',\n })\n }\n const tbl = await db.openTable(plan.collection)\n // Merge-insert on id = upsert (update matched, insert unmatched).\n await tbl.mergeInsert('id').whenMatchedUpdateAll().whenNotMatchedInsertAll().execute(rows)\n } catch (err) {\n if (\n isInstanceOf(err, 'E_VECTOR_STORE_DIMENSION_MISMATCH', E_VECTOR_STORE_DIMENSION_MISMATCH) ||\n isInstanceOf(err, 'E_VECTOR_STORE_UPSERT_FAILED', E_VECTOR_STORE_UPSERT_FAILED)\n ) {\n throw err\n }\n throw new E_VECTOR_STORE_UPSERT_FAILED([String(err)])\n }\n }\n\n async executeSearch(plan: SearchPlan): Promise<VectorMatch[]> {\n const db = await this.#ensure()\n const metric = this.#opts.metric ?? 'cosine'\n let queryVector: number[] | undefined\n let tbl: any\n try {\n tbl = await db.openTable(plan.collection)\n } catch (err) {\n throw new E_VECTOR_STORE_SEARCH_FAILED([String(err)])\n }\n\n if (plan.near) {\n if ('vector' in plan.near) {\n queryVector = plan.near.vector\n } else if ('serverText' in plan.near) {\n const [v] = await this.encode([plan.near.serverText], 'query')\n queryVector = v\n } else if ('id' in plan.near) {\n const rows = await tbl\n .query()\n .where(`id = ${lit(plan.near.id)}`)\n .limit(1)\n .toArray()\n if (rows.length === 0) {\n throw new E_VECTOR_STORE_SEARCH_FAILED(['Referenced id not found: ' + plan.near.id])\n }\n queryVector = Array.from(rows[0].vec as ArrayLike<number>)\n }\n }\n\n const offset = plan.offset ?? 0\n try {\n if (queryVector) {\n // Over-fetch then JS-filter for exact cross-adapter filter semantics.\n const k = plan.filter ? 1000 : plan.topK + offset\n const rows = await tbl\n .search(queryVector)\n .distanceType(lanceMetric(metric))\n .limit(k)\n .toArray()\n const filtered = plan.filter\n ? rows.filter((row: any) => evaluateFilter(plan.filter!, this.#parseMeta(row.metadata)))\n : rows\n return filtered\n .slice(offset, offset + plan.topK)\n .map((row: any) => this.#project(row, plan, metric, true))\n } else {\n const rows = await tbl\n .query()\n .limit(plan.filter ? 100000 : plan.topK + offset)\n .toArray()\n const filtered = plan.filter\n ? rows.filter((row: any) => evaluateFilter(plan.filter!, this.#parseMeta(row.metadata)))\n : rows\n return filtered\n .slice(offset, offset + plan.topK)\n .map((row: any) => this.#project(row, plan, metric, false))\n }\n } catch (err) {\n throw new E_VECTOR_STORE_SEARCH_FAILED([String(err)])\n }\n }\n\n #parseMeta(val: unknown): VectorMetadata {\n if (typeof val === 'string') {\n try {\n return JSON.parse(val) as VectorMetadata\n } catch {\n return {}\n }\n }\n if (val && typeof val === 'object') return val as VectorMetadata\n return {}\n }\n\n #project(row: any, plan: SearchPlan, metric: string, isKnn: boolean): VectorMatch {\n const proj = plan.projection\n const out: VectorMatch = {}\n if (proj.id) out.id = row.id as string\n if (proj.vector && row.vec) out.vector = Array.from(row.vec as ArrayLike<number>)\n if (proj.document) out.document = (row.document ?? undefined) as string | undefined\n if (proj.metadata) out.metadata = this.#parseMeta(row.metadata)\n if (isKnn && row._distance !== undefined && row._distance !== null) {\n out.score = normalizeScore(Number(row._distance), metric as DistanceMetric, 'distance')\n }\n return out\n }\n\n async executeDelete(plan: DeletePlan): Promise<void> {\n const db = await this.#ensure()\n try {\n const tbl = await db.openTable(plan.collection)\n if (plan.ids && plan.ids.length > 0) {\n const list = plan.ids.map((id) => lit(id)).join(', ')\n await tbl.delete(`id IN (${list})`)\n } else if (plan.filter) {\n const rows = await tbl.query().limit(100000).toArray()\n const targets: string[] = rows\n .filter((row: any) => evaluateFilter(plan.filter!, this.#parseMeta(row.metadata)))\n .map((row: any) => row.id as string)\n if (targets.length > 0) {\n const list = targets.map((id) => lit(id)).join(', ')\n await tbl.delete(`id IN (${list})`)\n }\n } else {\n await tbl.delete('true')\n }\n } catch (err) {\n throw new E_VECTOR_STORE_DELETE_FAILED([String(err)])\n }\n }\n}\n"],"mappings":"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"}