@nhtio/adk 1.20260605.0 → 1.20260607.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/CHANGELOG.md +257 -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 +3 -3
  39. package/batteries/tools/datetime_extended.mjs +3 -3
  40. package/batteries/tools/datetime_math.cjs +3 -3
  41. package/batteries/tools/datetime_math.mjs +3 -3
  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 +5 -5
  49. package/batteries/tools/math.cjs +109 -23
  50. package/batteries/tools/math.cjs.map +1 -1
  51. package/batteries/tools/math.mjs +107 -22
  52. package/batteries/tools/math.mjs.map +1 -1
  53. package/batteries/tools/memory.cjs +6 -6
  54. package/batteries/tools/memory.mjs +6 -6
  55. package/batteries/tools/parsing.cjs +4 -4
  56. package/batteries/tools/parsing.mjs +4 -4
  57. package/batteries/tools/retrievables.cjs +5 -5
  58. package/batteries/tools/retrievables.mjs +5 -5
  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 +3 -3
  72. package/batteries/tools/time.mjs +3 -3
  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-BUIjZ6LV.mjs +119 -0
  293. package/common-BUIjZ6LV.mjs.map +1 -0
  294. package/{common-Bfqzwdpd.js → common-CAL-84_q.js} +9 -9
  295. package/{common-Bfqzwdpd.js.map → common-CAL-84_q.js.map} +1 -1
  296. package/common-DeNipTQI.js +148 -0
  297. package/common-DeNipTQI.js.map +1 -0
  298. package/{common-Bo5q3gDK.mjs → common-LEkLXBpR.mjs} +9 -9
  299. package/{common-Bo5q3gDK.mjs.map → common-LEkLXBpR.mjs.map} +1 -1
  300. package/common.cjs +7 -7
  301. package/common.mjs +7 -7
  302. package/{dispatch_runner-DNy8EuK2.mjs → dispatch_runner-BV-Ywfcc.mjs} +4 -4
  303. package/dispatch_runner-BV-Ywfcc.mjs.map +1 -0
  304. package/{dispatch_runner-D_EIoEwR.js → dispatch_runner-DLw65x0D.js} +4 -4
  305. package/dispatch_runner-DLw65x0D.js.map +1 -0
  306. package/dispatch_runner.cjs +1 -1
  307. package/dispatch_runner.mjs +1 -1
  308. package/eslint/index.d.ts +106 -0
  309. package/eslint/rules/artifact_tool_forbids_artifact_constructor.cjs +57 -0
  310. package/eslint/rules/artifact_tool_forbids_artifact_constructor.cjs.map +1 -0
  311. package/eslint/rules/artifact_tool_forbids_artifact_constructor.d.ts +21 -0
  312. package/eslint/rules/artifact_tool_forbids_artifact_constructor.mjs +52 -0
  313. package/eslint/rules/artifact_tool_forbids_artifact_constructor.mjs.map +1 -0
  314. package/eslint/rules/common.d.ts +41 -0
  315. package/eslint/rules/index.d.ts +12 -0
  316. package/eslint/rules/no_model_in_tool_handler.cjs +64 -0
  317. package/eslint/rules/no_model_in_tool_handler.cjs.map +1 -0
  318. package/eslint/rules/no_model_in_tool_handler.d.ts +26 -0
  319. package/eslint/rules/no_model_in_tool_handler.mjs +59 -0
  320. package/eslint/rules/no_model_in_tool_handler.mjs.map +1 -0
  321. package/eslint/rules/require_validator_any_required.cjs +100 -0
  322. package/eslint/rules/require_validator_any_required.cjs.map +1 -0
  323. package/eslint/rules/require_validator_any_required.d.ts +31 -0
  324. package/eslint/rules/require_validator_any_required.mjs +95 -0
  325. package/eslint/rules/require_validator_any_required.mjs.map +1 -0
  326. package/eslint/rules/thought_payload_requires_replay_tag.cjs +71 -0
  327. package/eslint/rules/thought_payload_requires_replay_tag.cjs.map +1 -0
  328. package/eslint/rules/thought_payload_requires_replay_tag.d.ts +26 -0
  329. package/eslint/rules/thought_payload_requires_replay_tag.mjs +66 -0
  330. package/eslint/rules/thought_payload_requires_replay_tag.mjs.map +1 -0
  331. package/eslint/rules/token_encoding_requires_context_window.cjs +70 -0
  332. package/eslint/rules/token_encoding_requires_context_window.cjs.map +1 -0
  333. package/eslint/rules/token_encoding_requires_context_window.d.ts +24 -0
  334. package/eslint/rules/token_encoding_requires_context_window.mjs +65 -0
  335. package/eslint/rules/token_encoding_requires_context_window.mjs.map +1 -0
  336. package/eslint/rules.cjs +12 -0
  337. package/eslint/rules.mjs +6 -0
  338. package/eslint.cjs +82 -0
  339. package/eslint.cjs.map +1 -0
  340. package/eslint.mjs +74 -0
  341. package/eslint.mjs.map +1 -0
  342. package/exceptions.cjs +1 -1
  343. package/exceptions.mjs +1 -1
  344. package/forge.cjs +4 -4
  345. package/forge.mjs +4 -4
  346. package/guards.cjs +8 -8
  347. package/guards.mjs +8 -8
  348. package/index.cjs +12 -12
  349. package/index.mjs +12 -12
  350. package/lib/classes/tool_registry.d.ts +70 -4
  351. package/mcp/adk-docs-corpus.json +1 -1
  352. package/package.json +464 -85
  353. package/{runtime-MFFcJrRv.js → runtime-DQ9CcNdt.js} +1 -1
  354. package/{runtime-MFFcJrRv.js.map → runtime-DQ9CcNdt.js.map} +1 -1
  355. package/{runtime-j92CNi5z.mjs → runtime-DZ892Rht.mjs} +1 -1
  356. package/{runtime-j92CNi5z.mjs.map → runtime-DZ892Rht.mjs.map} +1 -1
  357. package/skills/adk-assembly/SKILL.md +2 -2
  358. package/{spooled_artifact-Chp6PEr8.js → spooled_artifact-B-NZOxPS.js} +5 -5
  359. package/spooled_artifact-B-NZOxPS.js.map +1 -0
  360. package/{spooled_artifact-xpzZicMR.mjs → spooled_artifact-Bs_DWl22.mjs} +5 -5
  361. package/spooled_artifact-Bs_DWl22.mjs.map +1 -0
  362. package/spooled_artifact.cjs +2 -2
  363. package/spooled_artifact.mjs +2 -2
  364. package/{spooled_markdown_artifact-b72JfMYo.js → spooled_markdown_artifact-BB1bpII9.js} +3 -3
  365. package/{spooled_markdown_artifact-b72JfMYo.js.map → spooled_markdown_artifact-BB1bpII9.js.map} +1 -1
  366. package/{spooled_markdown_artifact-CigJMNOl.mjs → spooled_markdown_artifact-y8lhrop5.mjs} +3 -3
  367. package/{spooled_markdown_artifact-CigJMNOl.mjs.map → spooled_markdown_artifact-y8lhrop5.mjs.map} +1 -1
  368. package/src/types/evaluatex.d.ts +31 -0
  369. package/{thought-BhoBfz9K.mjs → thought-BdqFOJzE.mjs} +5 -5
  370. package/thought-BdqFOJzE.mjs.map +1 -0
  371. package/{thought-pxBGk4lN.js → thought-C9OmiDyq.js} +5 -5
  372. package/thought-C9OmiDyq.js.map +1 -0
  373. package/{tool-C381-NLO.mjs → tool-BOHHCpg_.mjs} +5 -5
  374. package/tool-BOHHCpg_.mjs.map +1 -0
  375. package/{tool-CxIEutdk.js → tool-DXtFzYZS.js} +5 -5
  376. package/tool-DXtFzYZS.js.map +1 -0
  377. package/{tool_call-BPPa_KYu.js → tool_call-BXSXtSAU.js} +5 -5
  378. package/{tool_call-BPPa_KYu.js.map → tool_call-BXSXtSAU.js.map} +1 -1
  379. package/{tool_call-H02gzSIs.mjs → tool_call-DyXeyJkK.mjs} +5 -5
  380. package/{tool_call-H02gzSIs.mjs.map → tool_call-DyXeyJkK.mjs.map} +1 -1
  381. package/{tool_registry-CbtMt21B.mjs → tool_registry-WVD_PBos.mjs} +251 -164
  382. package/tool_registry-WVD_PBos.mjs.map +1 -0
  383. package/{tool_registry-CoM6fy7F.js → tool_registry-lwaKEFCV.js} +250 -163
  384. package/tool_registry-lwaKEFCV.js.map +1 -0
  385. package/{turn_runner-DFW9OuBj.js → turn_runner-BMriNVVw.js} +7 -7
  386. package/turn_runner-BMriNVVw.js.map +1 -0
  387. package/{turn_runner-CJke8_wy.mjs → turn_runner-CW9kAVJM.mjs} +7 -7
  388. package/turn_runner-CW9kAVJM.mjs.map +1 -0
  389. package/turn_runner.cjs +1 -1
  390. package/turn_runner.mjs +1 -1
  391. package/dispatch_runner-DNy8EuK2.mjs.map +0 -1
  392. package/dispatch_runner-D_EIoEwR.js.map +0 -1
  393. package/spooled_artifact-Chp6PEr8.js.map +0 -1
  394. package/spooled_artifact-xpzZicMR.mjs.map +0 -1
  395. package/thought-BhoBfz9K.mjs.map +0 -1
  396. package/thought-pxBGk4lN.js.map +0 -1
  397. package/tool-C381-NLO.mjs.map +0 -1
  398. package/tool-CxIEutdk.js.map +0 -1
  399. package/tool_registry-CbtMt21B.mjs.map +0 -1
  400. package/tool_registry-CoM6fy7F.js.map +0 -1
  401. package/turn_runner-CJke8_wy.mjs.map +0 -1
  402. package/turn_runner-DFW9OuBj.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,10 +5,246 @@ All notable changes to `@nhtio/adk` are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 2026-06-07
9
+
10
+ ### Added
11
+
12
+ - **Importable ESLint plugin (`@nhtio/adk/eslint`).** The harness's documented contracts are now
13
+ machine-checkable: a flat-config plugin that flags footguns the TypeScript compiler cannot see
14
+ because they live in runtime validators or conventions, not types. Five rules ship —
15
+ `require-validator-any-required` (a `validator.any()` chain with no explicit
16
+ `.required()`/`.optional()`/`.default()`/`.forbidden()` silently admits null/undefined),
17
+ `thought-payload-requires-replay-tag` (a `Thought` with a vendor `payload` but no
18
+ `replayCompatibility` can never be safely replayed), `token-encoding-requires-context-window` (a
19
+ Chat Completions adapter that counts tokens with no budget never runs its overflow guard),
20
+ `artifact-tool-forbids-artifact-constructor` (an `ArtifactTool` that wraps another artifact
21
+ recurses forever), and `no-model-in-tool-handler` (a model call inside a tool handler hides an
22
+ unmanaged dispatch — unless the handler runs its own scoped sub-agent via `new TurnRunner(...)` or
23
+ `DispatchRunner.dispatch(...)`). Import the assembled plugin
24
+ from `@nhtio/adk/eslint` (or `adk.configs.recommended` for all five), or individual rules from
25
+ `@nhtio/adk/eslint/rules/<name>`. `eslint` and `@typescript-eslint/utils` are **optional peers** —
26
+ installed only by consumers who lint with the plugin. Rules are report-only with inline
27
+ `eslint-disable` carve-outs. See the new **Developer Tools** docs section, which also now houses
28
+ the ADK Assembly MCP guide.
29
+
30
+ - **Vector conformance harness is now public (`@nhtio/adk/batteries/vector/conformance`).** The
31
+ `runVectorStoreConformance` suite (plus `stubEncoder` / `paddedStubEncoder`) that the 29 shipped
32
+ adapters test against is now an exported, deep-import-only subpath, so anyone writing their own
33
+ adapter can prove it against the exact same contract. The subpath imports `vitest`, declared as an
34
+ **optional peer** (`peerDependenciesMeta`) — install it to run the suite; it is never pulled in by
35
+ the `@nhtio/adk/batteries/vector` barrel, so a `createVectorStore` consumer takes on no test-runner
36
+ dependency. See `docs/batteries/vector/custom-adapter.md`.
37
+
38
+ - **Query-builder grouping callbacks — mix AND and OR.** The `VectorQueryBuilder` filter methods
39
+ (`.where` / `.andWhere` / `.orWhere` / `.whereNot` / new `.orWhereNot`) now accept a callback that
40
+ receives a filter-only `FilterBuilder`, so you can express `A AND (B OR C)` and negated groups
41
+ (`{ not: <group> }`) at any nesting depth — previously the builder could only emit flat DNF. The
42
+ scalar forms are unchanged (`.whereNot('f', v)` is still `→ ne`). Groups compile to the neutral
43
+ `FilterGroup` tree; the 6 native filter translators recurse over it and the over-fetch adapters
44
+ JS-evaluate it. **Chroma** rejects a `not` group with `E_VECTOR_STORE_UNSUPPORTED_FILTER_OPERATOR`
45
+ (consistent with its existing `exists`/`contains` limits); nested AND/OR works on all 29. See
46
+ `docs/batteries/vector/query-builder.md`.
47
+
48
+ ### Fixed
49
+
50
+ - **`.orWhere()` no longer silently drops its branch.** `where(A).where(B).orWhere(C)` previously
51
+ compiled to `(A AND B) OR (A AND B AND C)`, which collapses to just `(A AND B)` — the `.orWhere(C)`
52
+ was a no-op. It now correctly yields `(A AND B) OR C`, matching the documented knex semantics.
53
+
54
+ - **Chroma multi-row filter-scan.** A filter-scan (no `.near*()`) that matched more than one record
55
+ returned only the first row: the adapter unwrapped `query()`'s nested result arrays on the `get()`
56
+ path too. Fixed to unwrap only on the similarity path.
57
+
58
+ ## 2026-06-06
59
+
60
+ ### Added
61
+
62
+ - **Cloudflare Vectorize adapter (`@nhtio/adk/batteries/vector/cloudflare`).** Managed, serverless
63
+ vector store over the Vectorize **V2 REST API** — pure `fetch`, no driver/peer dependency. A
64
+ logical collection maps to a Vectorize index (`indexNamePrefix` isolates per use). Upserts use
65
+ the NDJSON multipart endpoint (field `vectors`); query/get/delete use JSON. Dimensions must be
66
+ **32–1536**. KNN `score` is recomputed locally from the returned values to the `[0,1]` contract;
67
+ the document rides in a reserved `__document` metadata key. Native metadata filtering needs
68
+ pre-created metadata indexes and lacks `$and`/`$or`, so the adapter **over-fetches (topK 50, the
69
+ service cap when returning values/metadata) and JS-filters** via the neutral `evaluateFilter`
70
+ for full cross-adapter parity. Cloudflare Vectorize is **aggressively eventually-consistent** —
71
+ a fresh index takes ~8–34s before its first write is queryable and the query index flaps for
72
+ seconds after writes/deletes; the adapter settle-polls the query index for stability, and the
73
+ integration spec additionally uses **vitest `retry`** to ride out the flap deterministically
74
+ (slow, ~8 min, but green). Managed, so no docker/CI matrix entry (like Pinecone / S3 Vectors).
75
+ Verified 7/7 conformance against live Cloudflare Vectorize. This also adds an optional
76
+ `retry`/`timeout` parameter to the shared `runVectorStoreConformance` harness (defaults preserve
77
+ existing behavior).
78
+
79
+ - **Oracle 23ai AI Vector Search adapter (`@nhtio/adk/batteries/vector/oracle23ai`).** Each
80
+ collection is a table with a native `VECTOR(dims, FLOAT32)` column; vectors are bound/read as
81
+ `Float32Array` via the `oracledb` driver in **thin mode** (no Instant Client). KNN uses
82
+ `VECTOR_DISTANCE(vec, :q, COSINE|EUCLIDEAN|DOT) ORDER BY … FETCH APPROX FIRST k ROWS ONLY`; the
83
+ raw distance only orders candidates — the `[0,1]` score is recomputed locally from the stored
84
+ vector. Metadata is a JSON-string CLOB (read via `fetchInfo` STRING) filtered with the neutral
85
+ `evaluateFilter`; identifiers are double-quoted and `tablePrefix` isolates collections. Strongly
86
+ consistent (commit per write). NB: VECTOR columns are rejected in the SYSTEM tablespace — the
87
+ connecting user must default to a normal tablespace (e.g. USERS) and have CREATE TABLE; the
88
+ docker `oracle` profile provisions such a user via `APP_USER`. Verified 7/7 conformance ×3
89
+ against a live Oracle Free 23ai. Closes the Oracle 23ai gap in the Open WebUI minimum-support set.
90
+
91
+ - **AWS S3 Vectors adapter (`@nhtio/adk/batteries/vector/s3vectors`).** Managed, serverless vector
92
+ store (no container, like Pinecone). The vector bucket is provisioned out-of-band; a logical
93
+ collection maps to an **index** inside the bucket (`indexPrefix` isolates per use — index names
94
+ must be 3–63 chars). KNN via `QueryVectors` (the returned `distance` is converted to the
95
+ battery's normalized `[0,1]` score — cosine `sim = 1 - distance`); `PutVectors`/`GetVectors`/
96
+ `DeleteVectors` for upsert/fetch/delete by key; metadata is native JSON with the document under a
97
+ reserved `__document` key. `topK` is capped at the service max of **100**, so filtered/scan reads
98
+ over-fetch to that ceiling and JS-filter via the neutral `evaluateFilter` for cross-adapter
99
+ parity; eventual-consistency settle-polling makes read-after-write deterministic. Metrics:
100
+ `cosine`/`euclidean` (S3 Vectors has no dot-product — `dot` throws at createCollection). Driver:
101
+ `@aws-sdk/client-s3vectors` (lazy; credentials from the ambient AWS chain). Verified 7/7
102
+ conformance ×3 against a live bucket in eu-west-1. Closes the S3 Vector Bucket gap in the Open
103
+ WebUI minimum-support set.
104
+
105
+ - **Elasticsearch 8 vector adapter (`@nhtio/adk/batteries/vector/elasticsearch`).** A dedicated
106
+ adapter for the Elasticsearch 8 dialect — each collection is an index with a `dense_vector`
107
+ field, and KNN uses ES8's **top-level `knn` search clause** with an optional `filter`. This is
108
+ distinct from the existing `opensearch` adapter, which speaks OpenSearch's `knn_vector` /
109
+ `query.knn` dialect (an ES client cannot drive it). The neutral filter tree compiles to ES
110
+ bool/term/range over `metadata.*` (`.keyword` for strings) via the exported
111
+ `translateElasticsearchFilter`; writes use `bulk({ refresh: true })` for strong consistency;
112
+ cosine `_score` (already `(sim+1)/2 ∈ [0,1]`) is normalized defensively. Driver:
113
+ `@elastic/elasticsearch` (lazy; use the **v8** client against an 8.x server — a v9 client sends a
114
+ compatibility header an 8.x server rejects). BYO client supported via
115
+ `connection.client`. Verified 7/7 conformance ×3 against a live Elasticsearch 8.18.
116
+
117
+ - **Vespa vector adapter (`@nhtio/adk/batteries/vector/vespa`).** Vespa has no runtime
118
+ collection creation — a collection is a *document type* declared in a deployed **application
119
+ package**. The adapter holds the package state in memory and rebuilds + redeploys it (via a
120
+ dependency-free, store-only ZIP writer — no zip lib needed) to the config server's
121
+ `prepareandactivate` endpoint on each `createCollection`/`dropCollection`, generating
122
+ `services.xml`, `hosts.xml`, a `validation-overrides.xml` (≤30-day window, for schema-removal /
123
+ type-change), and a `schemas/<collection>.sd` per collection with an HNSW tensor field. KNN uses
124
+ a YQL `nearestNeighbor` query with a `closeness` rank profile; filter-scan/delete use YQL +
125
+ document-API; scores are re-computed locally from the stored vector via `normalizeScore` for the
126
+ [0,1] contract guarantee (metric maps cosine→angular, dot→dotproduct, euclidean→euclidean). No
127
+ npm driver — pure HTTP/`fetch`. Metadata is a JSON string field filtered with the neutral
128
+ evaluator. Verified 7/7 conformance ×3 against a live Vespa.
129
+
130
+ - **Couchbase vector adapter (`@nhtio/adk/batteries/vector/couchbase`).** Enterprise Edition only —
131
+ vector search is an EE feature; Community throws "vector typed fields not supported". A logical
132
+ collection maps to a Couchbase scope.collection. KV operations (upsert/get/remove) are strongly
133
+ consistent and serve point reads; the scoped FTS vector index is async, so it is settle-polled
134
+ after writes and used **only** to retrieve the KNN candidate id set — scores are then
135
+ re-computed locally from the stored vector via `normalizeScore`, guaranteeing the [0,1] contract
136
+ regardless of the backend metric (cosine/dot_product/l2_norm). Filter-scan, enumerate and
137
+ delete-by-filter use N1QL with `RequestPlus` for strong reads. `collectionPrefix` isolates
138
+ collections (avoids per-test FTS-index rebuild churn). Metadata is a JSON string field filtered
139
+ with the neutral evaluator. Driver: `couchbase`. Cluster/bucket are provisioned non-interactively
140
+ (REST `clusterInit` + bucket create — see the docker-compose `couchbase` profile's init sidecar);
141
+ the adapter manages scopes/collections + the FTS vector index. Omitted from the CI matrix (its
142
+ two-step init can't be expressed as a single service alias); verified 7/7 conformance ×3 against
143
+ a live Couchbase EE 8.0.
144
+
8
145
  ## 2026-06-05
9
146
 
10
147
  ### Added
11
148
 
149
+ - **MongoDB Atlas Vector Search adapter (`@nhtio/adk/batteries/vector/mongodb`).** Each collection
150
+ is a MongoDB collection with an Atlas `vectorSearch` index on `vec`; KNN uses the `$vectorSearch`
151
+ aggregation stage (cosine `vectorSearchScore`, [0,1]). Because the Atlas vector *index* updates
152
+ asynchronously (~1s) while the document store is strongly consistent, filter-scans / fetch-by-id
153
+ / delete read-back use a plain `find()` (immediate) and only KNN goes through `$vectorSearch` —
154
+ with a post-write settle polling until the inserted ids are index-visible. `collectionPrefix`
155
+ isolates collections (avoids per-test index rebuild churn). Metadata is a JSON string field
156
+ filtered with the neutral evaluator. Driver: `mongodb`; works against `mongodb/mongodb-atlas-local`
157
+ or a real Atlas cluster. Verified 7/7 conformance against a live atlas-local.
158
+
159
+ - **Apache Solr vector adapter (`@nhtio/adk/batteries/vector/solr`).** Dense-vector / kNN query
160
+ parser (Solr 9+): a collection maps to a Solr core, the adapter ensures a `DenseVectorField`
161
+ (`vec`) + `document`/`metadata` fields in the core schema, and searches with
162
+ `{!knn f=vec topK=N}[…]` (cosine score already [0,1]). Metadata is a JSON string field filtered
163
+ with the neutral filter tree's JS reference evaluator. No driver dependency — plain HTTP/JSON via
164
+ `fetch`. The target core must already exist (`solr-precreate <core>`); the adapter manages its
165
+ schema, not the core. Verified 7/7 conformance against a live Solr 9.
166
+
167
+ - **HNSWLib vector adapter (`@nhtio/adk/batteries/vector/hnswlib`).** Embedded, in-process (no
168
+ server). Wraps the `hnswlib-node` native ANN index for KNN, paired with a JS sidecar that owns
169
+ id↔label mapping and the document/metadata records (hnswlib stores vectors only); metadata
170
+ filtering, filter-scans, projection, and delete are served from the sidecar via the neutral
171
+ filter tree's JS reference evaluator. Native build must be approved (pnpm-workspace.yaml
172
+ `allowBuilds`). Verified 7/7 conformance in-process.
173
+
174
+ - **ArangoDB vector adapter (`@nhtio/adk/batteries/vector/arangodb`).** Each collection is an
175
+ ArangoDB document collection keyed by `_key`; KNN uses the exact AQL `COSINE_SIMILARITY` /
176
+ `L2_DISTANCE` functions (no index required, always correct), with the experimental IVF
177
+ `vector` index created lazily on first upsert for production-scale ANN. Metadata in a JSON
178
+ string attribute filtered with the neutral filter tree's JS reference evaluator. Driver:
179
+ `arangojs`. Verified 7/7 conformance against a live ArangoDB 3.12 backend.
180
+
181
+ - **Neo4j vector adapter (`@nhtio/adk/batteries/vector/neo4j`).** Native vector index (5.13+):
182
+ each collection is a node label with a `VECTOR INDEX` on `vec`; KNN via
183
+ `db.index.vector.queryNodes` (cosine score already [0,1]). Metadata is a JSON string property
184
+ filtered with the neutral filter tree's JS reference evaluator. Upsert via `MERGE`; integer
185
+ params wrapped with `neo4j.int()`. Driver: `neo4j-driver`. Verified 7/7 conformance against a
186
+ live Neo4j 5 backend.
187
+
188
+ - **SurrealDB vector adapter (`@nhtio/adk/batteries/vector/surrealdb`).** Multi-model; each
189
+ collection is a SurrealDB table storing the vector as an array field, KNN via
190
+ `vector::similarity::cosine` / `vector::distance::euclidean` ordered appropriately. Metadata in
191
+ a JSON string field filtered with the neutral filter tree's JS reference evaluator. All queries
192
+ parameterized (`type::thing`, `$bindings`). Upsert via `UPSERT`. Driver: `surrealdb`. Verified
193
+ 7/7 conformance against a live SurrealDB v2 backend.
194
+
195
+ - **LanceDB vector adapter (`@nhtio/adk/batteries/vector/lancedb`).** Embedded, no server
196
+ (file-based, like sqlite-vec/duckdb). Each collection is a Lance table with an explicit Arrow
197
+ schema (`vec` as `FixedSizeList<Float32>`); KNN via `table.search(vector).distanceType(...)`,
198
+ metadata in a JSON string column filtered with the neutral filter tree's JS reference evaluator.
199
+ Upsert via merge-insert on `id`. Drivers: `@lancedb/lancedb` + `apache-arrow` (prebuilt binary,
200
+ no native compile). Verified 7/7 conformance in-process (temp dir).
201
+
202
+ - **MariaDB vector adapter (`@nhtio/adk/batteries/vector/mariadb`).** Native `VECTOR(N)` columns
203
+ (MariaDB 11.7+): vectors written with `VEC_FromText` / read with `VEC_ToText`, KNN via
204
+ `VEC_DISTANCE_COSINE` / `VEC_DISTANCE_EUCLIDEAN`; metadata in a `JSON` column filtered with the
205
+ neutral filter tree's JS reference evaluator. SQL backend → transactions + rawSql. Upsert via
206
+ `ON DUPLICATE KEY UPDATE`. Driver: `mariadb`. Verified 7/7 conformance against a live MariaDB 11.7.
207
+
208
+ - **Meilisearch vector adapter (`@nhtio/adk/batteries/vector/meilisearch`).** Each collection is a
209
+ Meilisearch index with a `userProvided` embedder (BYO vectors under `_vectors.default`); KNN via
210
+ semantic search (`vector` + `hybrid.semanticRatio = 1`), `_rankingScore` maps directly to the
211
+ [0,1] score contract. Metadata is a JSON string field filtered with the neutral filter tree's JS
212
+ reference evaluator. Writes await task completion (strongly consistent). Enables the `vectorStore`
213
+ experimental feature on connect. Driver: `meilisearch`. Verified 7/7 conformance against a live
214
+ Meilisearch backend.
215
+
216
+ - **Typesense vector adapter (`@nhtio/adk/batteries/vector/typesense`).** Each collection is a
217
+ Typesense collection with a native `float[]` vector field (KNN via `vector_query`); metadata is
218
+ a JSON string field filtered with the neutral filter tree's JS reference evaluator. Native upsert
219
+ by id; strongly consistent (writes searchable on resolve). Driver: `typesense`. Verified 7/7
220
+ conformance against a live Typesense backend.
221
+
222
+ - **Elasticsearch / OpenSearch vector adapter (`@nhtio/adk/batteries/vector/opensearch`).** One
223
+ adapter for the whole family — they share the kNN `_search` data model. Each collection is an
224
+ index with a `knn_vector` (HNSW/Lucene) field; the neutral filter tree compiles to a bool-query
225
+ over `metadata.*` keyword/numeric sub-fields. Writes use `refresh: true` for read-after-write
226
+ consistency. Driver: `@opensearch-project/opensearch` by default; pass an `@elastic/elasticsearch`
227
+ client via `connection.client` to target Elasticsearch. Verified 7/7 conformance against a live
228
+ OpenSearch backend.
229
+
230
+ - **ClickHouse vector adapter (`@nhtio/adk/batteries/vector/clickhouse`).** Vectors in an
231
+ `Array(Float32)` column, KNN via `cosineDistance` / `L2Distance` / negative-inner-product
232
+ ordered ascending; metadata in a JSON `String` column. MergeTree allows duplicate keys, so
233
+ upsert is delete-then-insert, and writes are made read-after-write consistent with
234
+ `mutations_sync = 2`. Driver: `@clickhouse/client`. Verified 7/7 conformance against a live
235
+ ClickHouse backend.
236
+
237
+ - **DuckDB vector adapter (`@nhtio/adk/batteries/vector/duckdb`).** In-process, no server
238
+ (like sqlite-vec) — uses the `vss` community extension's `array_*_distance` functions over a
239
+ `FLOAT[N]` column for KNN, with metadata in a `JSON` column. Driver: `@duckdb/node-api`.
240
+ Verified 7/7 conformance in-process (`:memory:`).
241
+
242
+ - **Redis / Valkey vector adapter (`@nhtio/adk/batteries/vector/redis`).** One adapter for the
243
+ whole Redis family via the RediSearch module (`redis/redis-stack-server`, or any Redis/Valkey
244
+ with RediSearch loaded). Vectors are stored as FLOAT32 blobs on Redis hashes and searched with
245
+ `FT.SEARCH ... KNN`; the neutral filter tree compiles to RediSearch query syntax (TAG/NUMERIC).
246
+ Verified 7/7 conformance against a live RediSearch backend.
247
+
12
248
  - **The `evaluate_katex` math tool now evaluates calculus numerically.** It previously mangled any
13
249
  calculus input — `\int_{0}^{1} x dx` had its bounds stripped by the LaTeX flattener and produced a
14
250
  cryptic `Syntax error in part "\int^(1) x dx"`. The tool now detects calculus on the raw LaTeX
@@ -27,6 +263,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
27
263
  `\arctan` were passed through as `arcsin`/`arccos`/`arctan`, which mathjs does not define, so every
28
264
  inverse-trig expression errored with `Undefined function`. They now translate to `asin`/`acos`/`atan`.
29
265
 
266
+ ### Changed
267
+
268
+ - **Replaced the hand-rolled LaTeX regex parser with evaluatex.** The `evaluate_katex` tool's
269
+ LaTeX-to-mathjs translator (`latexToMathjs`) used brittle regex substitutions that could not handle
270
+ nested braces, causing expressions like `\frac{\sqrt{100}}{2}` to produce a Syntax Error.
271
+ It is replaced by the evaluatex library (v2.2.0, zero deps, ~56KB, works in Node.js and all browsers),
272
+ which parses LaTeX with a proper recursive parser. The scalar evaluation path now uses evaluatex
273
+ directly; the numeric calculus path (integrals, derivatives, limits) still uses mathjs for
274
+ per-point evaluation via a shared lightweight LaTeX-to-string translator. evaluatex is an optional
275
+ peer dependency, following the existing battery pattern.
276
+
277
+ - **`ToolRegistry` now supports hidden tools.** A tool can be registered and callable without being
278
+ immediately visible to the model — hidden state lives on the registry, not the tool. New methods:
279
+ `hide(...names)`, `unhide(...names)`, `setHidden(...names)`, `clearHidden()`, `visible()`, and
280
+ `hidden()`. The LLM batteries now read `visible()` instead of `all()` when building the tool
281
+ definition list, so hidden tools are excluded from the rendered tool list but still resolve when
282
+ called by name. Hidden state propagates through `ToolRegistry.merge`, and unregistering a tool
283
+ automatically cleans up its hidden state. This enables discovery patterns where an agent has a
284
+ tool that enumerates available tools, and the model picks one to call in a subsequent iteration
285
+ without listing everything upfront.
286
+
30
287
  ## 2026-06-04
31
288
 
32
289
  ### Fixed
package/adk-mcp.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as __toESM, i as __toCommonJS, n as __esmMin, r as __exportAll, t as __commonJSMin } from "./chunk-kRvK8_k2.mjs";
2
+ import { a as __toCommonJS, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./chunk-Bpcn9VDT.mjs";
3
3
  import process$1 from "node:process";
4
4
  import { readFileSync } from "node:fs";
5
5
  import { fileURLToPath } from "node:url";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../../chunk-Ble4zEEl.js");
3
- const require_tool_registry = require("../../../tool_registry-CoM6fy7F.js");
3
+ const require_tool_registry = require("../../../tool_registry-lwaKEFCV.js");
4
4
  require("../../../guards.cjs");
5
5
  const require_lib_utils_retry = require("../../../lib/utils/retry.cjs");
6
6
  const require_batteries_embeddings_openai_exceptions = require("./exceptions.cjs");
@@ -1,4 +1,4 @@
1
- import { o as isError } from "../../../tool_registry-CbtMt21B.mjs";
1
+ import { o as isError } from "../../../tool_registry-WVD_PBos.mjs";
2
2
  import "../../../guards.mjs";
3
3
  import { computeBackoff, parseRetryAfter, sleepWithJitter } from "../../../lib/utils/retry.mjs";
4
4
  import { E_OPENAI_EMBEDDINGS_HTTP_ERROR, E_OPENAI_EMBEDDINGS_MALFORMED_RESPONSE, E_OPENAI_EMBEDDINGS_REQUEST_TIMEOUT } from "./exceptions.mjs";
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../../chunk-Ble4zEEl.js");
3
- const require_tool_registry = require("../../../tool_registry-CoM6fy7F.js");
3
+ const require_tool_registry = require("../../../tool_registry-lwaKEFCV.js");
4
4
  require("../../../guards.cjs");
5
5
  const require_batteries_embeddings_openai_helpers = require("../openai/helpers.cjs");
6
6
  const require_batteries_embeddings_webllm_exceptions = require("./exceptions.cjs");
@@ -1,4 +1,4 @@
1
- import { o as isError } from "../../../tool_registry-CbtMt21B.mjs";
1
+ import { o as isError } from "../../../tool_registry-WVD_PBos.mjs";
2
2
  import "../../../guards.mjs";
3
3
  import { applyEmbeddingPrefix } from "../openai/helpers.mjs";
4
4
  import { E_INVALID_WEBLLM_EMBEDDINGS_OPTIONS, E_WEBLLM_EMBEDDINGS_ENGINE_ERROR } from "./exceptions.mjs";
@@ -27,3 +27,4 @@
27
27
  export * from "./llm/index";
28
28
  export * from "./tools/index";
29
29
  export * from "./embeddings/index";
30
+ export * from "./vector/index";
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../../chunk-Ble4zEEl.js");
3
- const require_tool_registry = require("../../../tool_registry-CoM6fy7F.js");
4
- const require_thought = require("../../../thought-pxBGk4lN.js");
5
- const require_spooled_artifact = require("../../../spooled_artifact-Chp6PEr8.js");
6
- require("../../../common-Bfqzwdpd.js");
7
- const require_tool_call = require("../../../tool_call-BPPa_KYu.js");
3
+ const require_tool_registry = require("../../../tool_registry-lwaKEFCV.js");
4
+ const require_thought = require("../../../thought-C9OmiDyq.js");
5
+ const require_spooled_artifact = require("../../../spooled_artifact-B-NZOxPS.js");
6
+ require("../../../common-CAL-84_q.js");
7
+ const require_tool_call = require("../../../tool_call-BXSXtSAU.js");
8
8
  require("../../../guards.cjs");
9
9
  const require_lib_utils_retry = require("../../../lib/utils/retry.cjs");
10
10
  const require_batteries_llm_openai_chat_completions_exceptions = require("./exceptions.cjs");
@@ -368,7 +368,7 @@ var OpenAIChatCompletionsAdapter = class OpenAIChatCompletionsAdapter {
368
368
  if (v === void 0) continue;
369
369
  body[k] = v;
370
370
  }
371
- const toolsArr = mergedRegistry.all();
371
+ const toolsArr = mergedRegistry.visible();
372
372
  if (toolsArr.length > 0) body.tools = resolvedHelpers.toolsToChatCompletionsTools(toolsArr, { descriptionToChatCompletionsJsonSchema: resolvedHelpers.descriptionToChatCompletionsJsonSchema });
373
373
  if (reasoningPayloads.length > 0) body._adk_reasoning_payloads = reasoningPayloads;
374
374
  const rawBase = merged.baseURL ?? "https://api.openai.com/v1";