@ax-llm/ax 9.0.20 → 9.0.22

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 (570) hide show
  1. package/ai/anthropic/api.d.ts +19 -0
  2. package/ai/anthropic/api.js +326 -0
  3. package/ai/anthropic/api.js.map +1 -0
  4. package/ai/anthropic/index.d.ts +2 -0
  5. package/ai/anthropic/index.js +3 -0
  6. package/ai/anthropic/index.js.map +1 -0
  7. package/ai/anthropic/info.d.ts +2 -0
  8. package/ai/anthropic/info.js +40 -0
  9. package/ai/anthropic/info.js.map +1 -0
  10. package/ai/anthropic/types.d.ts +171 -0
  11. package/ai/anthropic/types.js +10 -0
  12. package/ai/anthropic/types.js.map +1 -0
  13. package/ai/azure-openai/api.d.ts +19 -0
  14. package/ai/azure-openai/api.js +30 -0
  15. package/ai/azure-openai/api.js.map +1 -0
  16. package/ai/azure-openai/index.d.ts +1 -0
  17. package/ai/azure-openai/index.js +2 -0
  18. package/ai/azure-openai/index.js.map +1 -0
  19. package/ai/balance.d.ts +23 -0
  20. package/ai/balance.js +87 -0
  21. package/ai/balance.js.map +1 -0
  22. package/ai/base.d.ts +55 -0
  23. package/ai/base.js +343 -0
  24. package/ai/base.js.map +1 -0
  25. package/ai/cohere/api.d.ts +22 -0
  26. package/ai/cohere/api.js +264 -0
  27. package/ai/cohere/api.js.map +1 -0
  28. package/ai/cohere/index.d.ts +2 -0
  29. package/ai/cohere/index.js +3 -0
  30. package/ai/cohere/index.js.map +1 -0
  31. package/ai/cohere/info.d.ts +2 -0
  32. package/ai/cohere/info.js +52 -0
  33. package/ai/cohere/info.js.map +1 -0
  34. package/ai/cohere/types.d.ts +102 -0
  35. package/ai/cohere/types.js +23 -0
  36. package/ai/cohere/types.js.map +1 -0
  37. package/ai/deepseek/api.d.ts +16 -0
  38. package/ai/deepseek/api.js +32 -0
  39. package/ai/deepseek/api.js.map +1 -0
  40. package/ai/deepseek/index.d.ts +2 -0
  41. package/ai/deepseek/index.js +3 -0
  42. package/ai/deepseek/index.js.map +1 -0
  43. package/ai/deepseek/info.d.ts +2 -0
  44. package/ai/deepseek/info.js +16 -0
  45. package/ai/deepseek/info.js.map +1 -0
  46. package/ai/deepseek/types.d.ts +8 -0
  47. package/ai/deepseek/types.js +10 -0
  48. package/ai/deepseek/types.js.map +1 -0
  49. package/ai/google-gemini/api.d.ts +36 -0
  50. package/ai/google-gemini/api.js +299 -0
  51. package/ai/google-gemini/api.js.map +1 -0
  52. package/ai/google-gemini/index.d.ts +2 -0
  53. package/ai/google-gemini/index.js +3 -0
  54. package/ai/google-gemini/index.js.map +1 -0
  55. package/ai/google-gemini/info.d.ts +6 -0
  56. package/ai/google-gemini/info.js +29 -0
  57. package/ai/google-gemini/info.js.map +1 -0
  58. package/ai/google-gemini/types.d.ts +146 -0
  59. package/ai/google-gemini/types.js +27 -0
  60. package/ai/google-gemini/types.js.map +1 -0
  61. package/ai/groq/api.d.ts +18 -0
  62. package/ai/groq/api.js +52 -0
  63. package/ai/groq/api.js.map +1 -0
  64. package/ai/groq/index.d.ts +1 -0
  65. package/ai/groq/index.js +2 -0
  66. package/ai/groq/index.js.map +1 -0
  67. package/ai/groq/types.d.ts +6 -0
  68. package/ai/groq/types.js +8 -0
  69. package/ai/groq/types.js.map +1 -0
  70. package/ai/huggingface/api.d.ts +19 -0
  71. package/ai/huggingface/api.js +115 -0
  72. package/ai/huggingface/api.js.map +1 -0
  73. package/ai/huggingface/index.d.ts +2 -0
  74. package/ai/huggingface/index.js +3 -0
  75. package/ai/huggingface/index.js.map +1 -0
  76. package/ai/huggingface/info.d.ts +6 -0
  77. package/ai/huggingface/info.js +6 -0
  78. package/ai/huggingface/info.js.map +1 -0
  79. package/ai/huggingface/types.d.ts +34 -0
  80. package/ai/huggingface/types.js +5 -0
  81. package/ai/huggingface/types.js.map +1 -0
  82. package/ai/index.d.ts +16 -0
  83. package/ai/index.js +16 -0
  84. package/ai/index.js.map +1 -0
  85. package/ai/mistral/api.d.ts +16 -0
  86. package/ai/mistral/api.js +32 -0
  87. package/ai/mistral/api.js.map +1 -0
  88. package/ai/mistral/index.d.ts +2 -0
  89. package/ai/mistral/index.js +3 -0
  90. package/ai/mistral/index.js.map +1 -0
  91. package/ai/mistral/info.d.ts +2 -0
  92. package/ai/mistral/info.js +34 -0
  93. package/ai/mistral/info.js.map +1 -0
  94. package/ai/mistral/types.d.ts +10 -0
  95. package/ai/mistral/types.js +13 -0
  96. package/ai/mistral/types.js.map +1 -0
  97. package/ai/ollama/api.d.ts +22 -0
  98. package/ai/ollama/api.js +32 -0
  99. package/ai/ollama/api.js.map +1 -0
  100. package/ai/ollama/index.d.ts +1 -0
  101. package/ai/ollama/index.js +2 -0
  102. package/ai/ollama/index.js.map +1 -0
  103. package/ai/openai/api.d.ts +29 -0
  104. package/ai/openai/api.js +283 -0
  105. package/ai/openai/api.js.map +1 -0
  106. package/ai/openai/index.d.ts +2 -0
  107. package/ai/openai/index.js +3 -0
  108. package/ai/openai/index.js.map +1 -0
  109. package/ai/openai/info.d.ts +6 -0
  110. package/ai/openai/info.js +50 -0
  111. package/ai/openai/info.js.map +1 -0
  112. package/ai/openai/types.d.ts +165 -0
  113. package/ai/openai/types.js +18 -0
  114. package/ai/openai/types.js.map +1 -0
  115. package/ai/together/api.d.ts +15 -0
  116. package/ai/together/api.js +28 -0
  117. package/ai/together/api.js.map +1 -0
  118. package/ai/together/index.d.ts +1 -0
  119. package/ai/together/index.js +2 -0
  120. package/ai/together/index.js.map +1 -0
  121. package/ai/together/info.d.ts +2 -0
  122. package/ai/together/info.js +2 -0
  123. package/ai/together/info.js.map +1 -0
  124. package/ai/types.d.ts +159 -0
  125. package/ai/types.js +2 -0
  126. package/ai/types.js.map +1 -0
  127. package/ai/util.d.ts +12 -0
  128. package/ai/util.js +63 -0
  129. package/ai/util.js.map +1 -0
  130. package/ai/wrap.d.ts +47 -0
  131. package/ai/wrap.js +95 -0
  132. package/ai/wrap.js.map +1 -0
  133. package/cjs/ai/anthropic/api.d.ts +19 -0
  134. package/cjs/ai/anthropic/api.js +331 -0
  135. package/cjs/ai/anthropic/api.js.map +1 -0
  136. package/cjs/ai/anthropic/index.d.ts +2 -0
  137. package/cjs/ai/anthropic/index.js +19 -0
  138. package/cjs/ai/anthropic/index.js.map +1 -0
  139. package/cjs/ai/anthropic/info.d.ts +2 -0
  140. package/cjs/ai/anthropic/info.js +43 -0
  141. package/cjs/ai/anthropic/info.js.map +1 -0
  142. package/cjs/ai/anthropic/types.d.ts +171 -0
  143. package/cjs/ai/anthropic/types.js +13 -0
  144. package/cjs/ai/anthropic/types.js.map +1 -0
  145. package/cjs/ai/azure-openai/api.d.ts +19 -0
  146. package/cjs/ai/azure-openai/api.js +34 -0
  147. package/cjs/ai/azure-openai/api.js.map +1 -0
  148. package/cjs/ai/azure-openai/index.d.ts +1 -0
  149. package/cjs/ai/azure-openai/index.js +18 -0
  150. package/cjs/ai/azure-openai/index.js.map +1 -0
  151. package/cjs/ai/balance.d.ts +23 -0
  152. package/cjs/ai/balance.js +91 -0
  153. package/cjs/ai/balance.js.map +1 -0
  154. package/cjs/ai/base.d.ts +55 -0
  155. package/cjs/ai/base.js +349 -0
  156. package/cjs/ai/base.js.map +1 -0
  157. package/cjs/ai/cohere/api.d.ts +22 -0
  158. package/cjs/ai/cohere/api.js +270 -0
  159. package/cjs/ai/cohere/api.js.map +1 -0
  160. package/cjs/ai/cohere/index.d.ts +2 -0
  161. package/cjs/ai/cohere/index.js +19 -0
  162. package/cjs/ai/cohere/index.js.map +1 -0
  163. package/cjs/ai/cohere/info.d.ts +2 -0
  164. package/cjs/ai/cohere/info.js +55 -0
  165. package/cjs/ai/cohere/info.js.map +1 -0
  166. package/cjs/ai/cohere/types.d.ts +102 -0
  167. package/cjs/ai/cohere/types.js +26 -0
  168. package/cjs/ai/cohere/types.js.map +1 -0
  169. package/cjs/ai/deepseek/api.d.ts +16 -0
  170. package/cjs/ai/deepseek/api.js +38 -0
  171. package/cjs/ai/deepseek/api.js.map +1 -0
  172. package/cjs/ai/deepseek/index.d.ts +2 -0
  173. package/cjs/ai/deepseek/index.js +19 -0
  174. package/cjs/ai/deepseek/index.js.map +1 -0
  175. package/cjs/ai/deepseek/info.d.ts +2 -0
  176. package/cjs/ai/deepseek/info.js +19 -0
  177. package/cjs/ai/deepseek/info.js.map +1 -0
  178. package/cjs/ai/deepseek/types.d.ts +8 -0
  179. package/cjs/ai/deepseek/types.js +13 -0
  180. package/cjs/ai/deepseek/types.js.map +1 -0
  181. package/cjs/ai/google-gemini/api.d.ts +36 -0
  182. package/cjs/ai/google-gemini/api.js +305 -0
  183. package/cjs/ai/google-gemini/api.js.map +1 -0
  184. package/cjs/ai/google-gemini/index.d.ts +2 -0
  185. package/cjs/ai/google-gemini/index.js +19 -0
  186. package/cjs/ai/google-gemini/index.js.map +1 -0
  187. package/cjs/ai/google-gemini/info.d.ts +6 -0
  188. package/cjs/ai/google-gemini/info.js +32 -0
  189. package/cjs/ai/google-gemini/info.js.map +1 -0
  190. package/cjs/ai/google-gemini/types.d.ts +146 -0
  191. package/cjs/ai/google-gemini/types.js +30 -0
  192. package/cjs/ai/google-gemini/types.js.map +1 -0
  193. package/cjs/ai/groq/api.d.ts +18 -0
  194. package/cjs/ai/groq/api.js +56 -0
  195. package/cjs/ai/groq/api.js.map +1 -0
  196. package/cjs/ai/groq/index.d.ts +1 -0
  197. package/cjs/ai/groq/index.js +18 -0
  198. package/cjs/ai/groq/index.js.map +1 -0
  199. package/cjs/ai/groq/types.d.ts +6 -0
  200. package/cjs/ai/groq/types.js +11 -0
  201. package/cjs/ai/groq/types.js.map +1 -0
  202. package/cjs/ai/huggingface/api.d.ts +19 -0
  203. package/cjs/ai/huggingface/api.js +121 -0
  204. package/cjs/ai/huggingface/api.js.map +1 -0
  205. package/cjs/ai/huggingface/index.d.ts +2 -0
  206. package/cjs/ai/huggingface/index.js +19 -0
  207. package/cjs/ai/huggingface/index.js.map +1 -0
  208. package/cjs/ai/huggingface/info.d.ts +6 -0
  209. package/cjs/ai/huggingface/info.js +9 -0
  210. package/cjs/ai/huggingface/info.js.map +1 -0
  211. package/cjs/ai/huggingface/types.d.ts +34 -0
  212. package/cjs/ai/huggingface/types.js +8 -0
  213. package/cjs/ai/huggingface/types.js.map +1 -0
  214. package/cjs/ai/index.d.ts +16 -0
  215. package/cjs/ai/index.js +32 -0
  216. package/cjs/ai/index.js.map +1 -0
  217. package/cjs/ai/mistral/api.d.ts +16 -0
  218. package/cjs/ai/mistral/api.js +38 -0
  219. package/cjs/ai/mistral/api.js.map +1 -0
  220. package/cjs/ai/mistral/index.d.ts +2 -0
  221. package/cjs/ai/mistral/index.js +19 -0
  222. package/cjs/ai/mistral/index.js.map +1 -0
  223. package/cjs/ai/mistral/info.d.ts +2 -0
  224. package/cjs/ai/mistral/info.js +37 -0
  225. package/cjs/ai/mistral/info.js.map +1 -0
  226. package/cjs/ai/mistral/types.d.ts +10 -0
  227. package/cjs/ai/mistral/types.js +16 -0
  228. package/cjs/ai/mistral/types.js.map +1 -0
  229. package/cjs/ai/ollama/api.d.ts +22 -0
  230. package/cjs/ai/ollama/api.js +38 -0
  231. package/cjs/ai/ollama/api.js.map +1 -0
  232. package/cjs/ai/ollama/index.d.ts +1 -0
  233. package/cjs/ai/ollama/index.js +18 -0
  234. package/cjs/ai/ollama/index.js.map +1 -0
  235. package/cjs/ai/openai/api.d.ts +29 -0
  236. package/cjs/ai/openai/api.js +291 -0
  237. package/cjs/ai/openai/api.js.map +1 -0
  238. package/cjs/ai/openai/index.d.ts +2 -0
  239. package/cjs/ai/openai/index.js +19 -0
  240. package/cjs/ai/openai/index.js.map +1 -0
  241. package/cjs/ai/openai/info.d.ts +6 -0
  242. package/cjs/ai/openai/info.js +53 -0
  243. package/cjs/ai/openai/info.js.map +1 -0
  244. package/cjs/ai/openai/types.d.ts +165 -0
  245. package/cjs/ai/openai/types.js +21 -0
  246. package/cjs/ai/openai/types.js.map +1 -0
  247. package/cjs/ai/together/api.d.ts +15 -0
  248. package/cjs/ai/together/api.js +33 -0
  249. package/cjs/ai/together/api.js.map +1 -0
  250. package/cjs/ai/together/index.d.ts +1 -0
  251. package/cjs/ai/together/index.js +18 -0
  252. package/cjs/ai/together/index.js.map +1 -0
  253. package/cjs/ai/together/info.d.ts +2 -0
  254. package/cjs/ai/together/info.js +5 -0
  255. package/cjs/ai/together/info.js.map +1 -0
  256. package/cjs/ai/types.d.ts +159 -0
  257. package/cjs/ai/types.js +3 -0
  258. package/cjs/ai/types.js.map +1 -0
  259. package/cjs/ai/util.d.ts +12 -0
  260. package/cjs/ai/util.js +71 -0
  261. package/cjs/ai/util.js.map +1 -0
  262. package/cjs/ai/wrap.d.ts +47 -0
  263. package/cjs/ai/wrap.js +99 -0
  264. package/cjs/ai/wrap.js.map +1 -0
  265. package/cjs/db/base.d.ts +23 -0
  266. package/cjs/db/base.js +91 -0
  267. package/cjs/db/base.js.map +1 -0
  268. package/cjs/db/cloudflare.d.ts +21 -0
  269. package/cjs/db/cloudflare.js +102 -0
  270. package/cjs/db/cloudflare.js.map +1 -0
  271. package/cjs/db/index.d.ts +6 -0
  272. package/cjs/db/index.js +23 -0
  273. package/cjs/db/index.js.map +1 -0
  274. package/cjs/db/memory.d.ts +21 -0
  275. package/cjs/db/memory.js +103 -0
  276. package/cjs/db/memory.js.map +1 -0
  277. package/cjs/db/pinecone.d.ts +21 -0
  278. package/cjs/db/pinecone.js +75 -0
  279. package/cjs/db/pinecone.js.map +1 -0
  280. package/cjs/db/types.d.ts +35 -0
  281. package/cjs/db/types.js +4 -0
  282. package/cjs/db/types.js.map +1 -0
  283. package/cjs/db/weaviate.d.ts +21 -0
  284. package/cjs/db/weaviate.js +131 -0
  285. package/cjs/db/weaviate.js.map +1 -0
  286. package/cjs/db/wrap.d.ts +13 -0
  287. package/cjs/db/wrap.js +39 -0
  288. package/cjs/db/wrap.js.map +1 -0
  289. package/cjs/docs/index.d.ts +4 -0
  290. package/cjs/docs/index.js +21 -0
  291. package/cjs/docs/index.js.map +1 -0
  292. package/cjs/docs/manager.d.ts +45 -0
  293. package/cjs/docs/manager.js +162 -0
  294. package/cjs/docs/manager.js.map +1 -0
  295. package/cjs/docs/reranker.d.ts +7 -0
  296. package/cjs/docs/reranker.js +30 -0
  297. package/cjs/docs/reranker.js.map +1 -0
  298. package/cjs/docs/rewriter.d.ts +4 -0
  299. package/cjs/docs/rewriter.js +13 -0
  300. package/cjs/docs/rewriter.js.map +1 -0
  301. package/cjs/docs/tika.d.ts +18 -0
  302. package/cjs/docs/tika.js +50 -0
  303. package/cjs/docs/tika.js.map +1 -0
  304. package/cjs/dsp/asserts.d.ts +32 -0
  305. package/cjs/dsp/asserts.js +98 -0
  306. package/cjs/dsp/asserts.js.map +1 -0
  307. package/cjs/dsp/eval.d.ts +43 -0
  308. package/cjs/dsp/eval.js +128 -0
  309. package/cjs/dsp/eval.js.map +1 -0
  310. package/cjs/dsp/evaluate.d.ts +12 -0
  311. package/cjs/dsp/evaluate.js +36 -0
  312. package/cjs/dsp/evaluate.js.map +1 -0
  313. package/cjs/dsp/extract.d.ts +25 -0
  314. package/cjs/dsp/extract.js +164 -0
  315. package/cjs/dsp/extract.js.map +1 -0
  316. package/cjs/dsp/generate.d.ts +55 -0
  317. package/cjs/dsp/generate.js +314 -0
  318. package/cjs/dsp/generate.js.map +1 -0
  319. package/cjs/dsp/index.d.ts +15 -0
  320. package/cjs/dsp/index.js +27 -0
  321. package/cjs/dsp/index.js.map +1 -0
  322. package/cjs/dsp/loader.d.ts +30 -0
  323. package/cjs/dsp/loader.js +85 -0
  324. package/cjs/dsp/loader.js.map +1 -0
  325. package/cjs/dsp/optimize.d.ts +27 -0
  326. package/cjs/dsp/optimize.js +99 -0
  327. package/cjs/dsp/optimize.js.map +1 -0
  328. package/cjs/dsp/parser.d.ts +87 -0
  329. package/cjs/dsp/parser.js +1545 -0
  330. package/cjs/dsp/parser.js.map +1 -0
  331. package/cjs/dsp/program.d.ts +73 -0
  332. package/cjs/dsp/program.js +120 -0
  333. package/cjs/dsp/program.js.map +1 -0
  334. package/cjs/dsp/prompt.d.ts +48 -0
  335. package/cjs/dsp/prompt.js +263 -0
  336. package/cjs/dsp/prompt.js.map +1 -0
  337. package/cjs/dsp/registry.d.ts +6 -0
  338. package/cjs/dsp/registry.js +19 -0
  339. package/cjs/dsp/registry.js.map +1 -0
  340. package/cjs/dsp/router.d.ts +26 -0
  341. package/cjs/dsp/router.js +76 -0
  342. package/cjs/dsp/router.js.map +1 -0
  343. package/cjs/dsp/sig.d.ts +37 -0
  344. package/cjs/dsp/sig.js +197 -0
  345. package/cjs/dsp/sig.js.map +1 -0
  346. package/cjs/dsp/stopwords.d.ts +1 -0
  347. package/cjs/dsp/stopwords.js +1167 -0
  348. package/cjs/dsp/stopwords.js.map +1 -0
  349. package/cjs/dsp/strutil.d.ts +11 -0
  350. package/cjs/dsp/strutil.js +63 -0
  351. package/cjs/dsp/strutil.js.map +1 -0
  352. package/cjs/dsp/util.d.ts +5 -0
  353. package/cjs/dsp/util.js +82 -0
  354. package/cjs/dsp/util.js.map +1 -0
  355. package/cjs/funcs/code.d.ts +9 -0
  356. package/cjs/funcs/code.js +90 -0
  357. package/cjs/funcs/code.js.map +1 -0
  358. package/cjs/funcs/embed.d.ts +6 -0
  359. package/cjs/funcs/embed.js +33 -0
  360. package/cjs/funcs/embed.js.map +1 -0
  361. package/cjs/funcs/functions.d.ts +16 -0
  362. package/cjs/funcs/functions.js +62 -0
  363. package/cjs/funcs/functions.js.map +1 -0
  364. package/cjs/funcs/index.d.ts +3 -0
  365. package/cjs/funcs/index.js +20 -0
  366. package/cjs/funcs/index.js.map +1 -0
  367. package/cjs/funcs/jsonschema.d.ts +2 -0
  368. package/cjs/funcs/jsonschema.js +101 -0
  369. package/cjs/funcs/jsonschema.js.map +1 -0
  370. package/cjs/index.d.ts +9 -0
  371. package/cjs/index.js +34 -0
  372. package/cjs/index.js.map +1 -0
  373. package/cjs/mem/index.d.ts +2 -0
  374. package/cjs/mem/index.js +19 -0
  375. package/cjs/mem/index.js.map +1 -0
  376. package/cjs/mem/memory.d.ts +16 -0
  377. package/cjs/mem/memory.js +81 -0
  378. package/cjs/mem/memory.js.map +1 -0
  379. package/cjs/mem/types.d.ts +10 -0
  380. package/cjs/mem/types.js +3 -0
  381. package/cjs/mem/types.js.map +1 -0
  382. package/cjs/prompts/agent.d.ts +34 -0
  383. package/cjs/prompts/agent.js +110 -0
  384. package/cjs/prompts/agent.js.map +1 -0
  385. package/cjs/prompts/cot.d.ts +9 -0
  386. package/cjs/prompts/cot.js +21 -0
  387. package/cjs/prompts/cot.js.map +1 -0
  388. package/cjs/prompts/index.d.ts +4 -0
  389. package/cjs/prompts/index.js +21 -0
  390. package/cjs/prompts/index.js.map +1 -0
  391. package/cjs/prompts/rag.d.ts +23 -0
  392. package/cjs/prompts/rag.js +33 -0
  393. package/cjs/prompts/rag.js.map +1 -0
  394. package/cjs/prompts/react.d.ts +8 -0
  395. package/cjs/prompts/react.js +26 -0
  396. package/cjs/prompts/react.js.map +1 -0
  397. package/cjs/trace/index.d.ts +171 -0
  398. package/cjs/trace/index.js +70 -0
  399. package/cjs/trace/index.js.map +1 -0
  400. package/cjs/util/apicall.d.ts +18 -0
  401. package/cjs/util/apicall.js +57 -0
  402. package/cjs/util/apicall.js.map +1 -0
  403. package/cjs/util/log.d.ts +14 -0
  404. package/cjs/util/log.js +35 -0
  405. package/cjs/util/log.js.map +1 -0
  406. package/cjs/util/other.d.ts +1 -0
  407. package/cjs/util/other.js +8 -0
  408. package/cjs/util/other.js.map +1 -0
  409. package/cjs/util/rate-limit.d.ts +24 -0
  410. package/cjs/util/rate-limit.js +53 -0
  411. package/cjs/util/rate-limit.js.map +1 -0
  412. package/cjs/util/stream.d.ts +9 -0
  413. package/cjs/util/stream.js +33 -0
  414. package/cjs/util/stream.js.map +1 -0
  415. package/cjs/util/transform.d.ts +7 -0
  416. package/cjs/util/transform.js +64 -0
  417. package/cjs/util/transform.js.map +1 -0
  418. package/db/base.d.ts +23 -0
  419. package/db/base.js +87 -0
  420. package/db/base.js.map +1 -0
  421. package/db/cloudflare.d.ts +21 -0
  422. package/db/cloudflare.js +98 -0
  423. package/db/cloudflare.js.map +1 -0
  424. package/db/index.d.ts +6 -0
  425. package/db/index.js +7 -0
  426. package/db/index.js.map +1 -0
  427. package/db/memory.d.ts +21 -0
  428. package/db/memory.js +99 -0
  429. package/db/memory.js.map +1 -0
  430. package/db/pinecone.d.ts +21 -0
  431. package/db/pinecone.js +71 -0
  432. package/db/pinecone.js.map +1 -0
  433. package/db/types.d.ts +35 -0
  434. package/db/types.js +3 -0
  435. package/db/types.js.map +1 -0
  436. package/db/weaviate.d.ts +21 -0
  437. package/db/weaviate.js +127 -0
  438. package/db/weaviate.js.map +1 -0
  439. package/db/wrap.d.ts +13 -0
  440. package/db/wrap.js +35 -0
  441. package/db/wrap.js.map +1 -0
  442. package/docs/index.d.ts +4 -0
  443. package/docs/index.js +5 -0
  444. package/docs/index.js.map +1 -0
  445. package/docs/manager.d.ts +45 -0
  446. package/docs/manager.js +159 -0
  447. package/docs/manager.js.map +1 -0
  448. package/docs/reranker.d.ts +7 -0
  449. package/docs/reranker.js +26 -0
  450. package/docs/reranker.js.map +1 -0
  451. package/docs/rewriter.d.ts +4 -0
  452. package/docs/rewriter.js +9 -0
  453. package/docs/rewriter.js.map +1 -0
  454. package/docs/tika.d.ts +18 -0
  455. package/docs/tika.js +46 -0
  456. package/docs/tika.js.map +1 -0
  457. package/dsp/asserts.d.ts +32 -0
  458. package/dsp/asserts.js +91 -0
  459. package/dsp/asserts.js.map +1 -0
  460. package/dsp/eval.d.ts +43 -0
  461. package/dsp/eval.js +125 -0
  462. package/dsp/eval.js.map +1 -0
  463. package/dsp/evaluate.d.ts +12 -0
  464. package/dsp/evaluate.js +32 -0
  465. package/dsp/evaluate.js.map +1 -0
  466. package/dsp/extract.d.ts +25 -0
  467. package/dsp/extract.js +153 -0
  468. package/dsp/extract.js.map +1 -0
  469. package/dsp/generate.d.ts +55 -0
  470. package/dsp/generate.js +311 -0
  471. package/dsp/generate.js.map +1 -0
  472. package/dsp/index.d.ts +15 -0
  473. package/dsp/index.js +11 -0
  474. package/dsp/index.js.map +1 -0
  475. package/dsp/loader.d.ts +30 -0
  476. package/dsp/loader.js +81 -0
  477. package/dsp/loader.js.map +1 -0
  478. package/dsp/optimize.d.ts +27 -0
  479. package/dsp/optimize.js +95 -0
  480. package/dsp/optimize.js.map +1 -0
  481. package/dsp/parser.d.ts +87 -0
  482. package/dsp/parser.js +1542 -0
  483. package/dsp/parser.js.map +1 -0
  484. package/dsp/program.d.ts +73 -0
  485. package/dsp/program.js +116 -0
  486. package/dsp/program.js.map +1 -0
  487. package/dsp/prompt.d.ts +48 -0
  488. package/dsp/prompt.js +260 -0
  489. package/dsp/prompt.js.map +1 -0
  490. package/dsp/registry.d.ts +6 -0
  491. package/dsp/registry.js +15 -0
  492. package/dsp/registry.js.map +1 -0
  493. package/dsp/router.d.ts +26 -0
  494. package/dsp/router.js +71 -0
  495. package/dsp/router.js.map +1 -0
  496. package/dsp/sig.d.ts +37 -0
  497. package/dsp/sig.js +193 -0
  498. package/dsp/sig.js.map +1 -0
  499. package/dsp/stopwords.d.ts +1 -0
  500. package/dsp/stopwords.js +1164 -0
  501. package/dsp/stopwords.js.map +1 -0
  502. package/dsp/strutil.d.ts +11 -0
  503. package/dsp/strutil.js +60 -0
  504. package/dsp/strutil.js.map +1 -0
  505. package/dsp/util.d.ts +5 -0
  506. package/dsp/util.js +76 -0
  507. package/dsp/util.js.map +1 -0
  508. package/funcs/code.d.ts +9 -0
  509. package/funcs/code.js +63 -0
  510. package/funcs/code.js.map +1 -0
  511. package/funcs/embed.d.ts +6 -0
  512. package/funcs/embed.js +29 -0
  513. package/funcs/embed.js.map +1 -0
  514. package/funcs/functions.d.ts +16 -0
  515. package/funcs/functions.js +55 -0
  516. package/funcs/functions.js.map +1 -0
  517. package/funcs/index.d.ts +3 -0
  518. package/funcs/index.js +4 -0
  519. package/funcs/index.js.map +1 -0
  520. package/funcs/jsonschema.d.ts +2 -0
  521. package/funcs/jsonschema.js +97 -0
  522. package/funcs/jsonschema.js.map +1 -0
  523. package/index.d.ts +9 -0
  524. package/index.js.map +1 -0
  525. package/mem/index.d.ts +2 -0
  526. package/mem/index.js +3 -0
  527. package/mem/index.js.map +1 -0
  528. package/mem/memory.d.ts +16 -0
  529. package/mem/memory.js +77 -0
  530. package/mem/memory.js.map +1 -0
  531. package/mem/types.d.ts +10 -0
  532. package/mem/types.js +2 -0
  533. package/mem/types.js.map +1 -0
  534. package/package.json +4 -7
  535. package/prompts/agent.d.ts +34 -0
  536. package/prompts/agent.js +108 -0
  537. package/prompts/agent.js.map +1 -0
  538. package/prompts/cot.d.ts +9 -0
  539. package/prompts/cot.js +17 -0
  540. package/prompts/cot.js.map +1 -0
  541. package/prompts/index.d.ts +4 -0
  542. package/prompts/index.js +5 -0
  543. package/prompts/index.js.map +1 -0
  544. package/prompts/rag.d.ts +23 -0
  545. package/prompts/rag.js +30 -0
  546. package/prompts/rag.js.map +1 -0
  547. package/prompts/react.d.ts +8 -0
  548. package/prompts/react.js +22 -0
  549. package/prompts/react.js.map +1 -0
  550. package/trace/index.d.ts +171 -0
  551. package/trace/index.js +67 -0
  552. package/trace/index.js.map +1 -0
  553. package/util/apicall.d.ts +18 -0
  554. package/util/apicall.js +50 -0
  555. package/util/apicall.js.map +1 -0
  556. package/util/log.d.ts +14 -0
  557. package/util/log.js +31 -0
  558. package/util/log.js.map +1 -0
  559. package/util/other.d.ts +1 -0
  560. package/util/other.js +5 -0
  561. package/util/other.js.map +1 -0
  562. package/util/rate-limit.d.ts +24 -0
  563. package/util/rate-limit.js +49 -0
  564. package/util/rate-limit.js.map +1 -0
  565. package/util/stream.d.ts +9 -0
  566. package/util/stream.js +29 -0
  567. package/util/stream.js.map +1 -0
  568. package/util/transform.d.ts +7 -0
  569. package/util/transform.js +59 -0
  570. package/util/transform.js.map +1 -0
@@ -0,0 +1,45 @@
1
+ import { type AxAIService, type AxDBService, type AxProgram } from '../index.js';
2
+ export type AxRewriteIn = {
3
+ query: string;
4
+ };
5
+ export type AxRewriteOut = {
6
+ rewrittenQuery: string;
7
+ };
8
+ export type AxRerankerIn = {
9
+ query: string;
10
+ items: string[];
11
+ };
12
+ export type AxRerankerOut = {
13
+ rankedItems: string[];
14
+ };
15
+ export interface AxDBLoaderOptions {
16
+ chunker?: (text: string) => string[];
17
+ rewriter?: AxProgram<AxRewriteIn, AxRewriteOut>;
18
+ reranker?: AxProgram<AxRerankerIn, AxRerankerOut>;
19
+ }
20
+ export interface AxDBManagerArgs {
21
+ ai: AxAIService;
22
+ db: AxDBService;
23
+ config?: AxDBLoaderOptions;
24
+ }
25
+ export interface AxDBMatch {
26
+ score: number;
27
+ text: string;
28
+ }
29
+ export declare class AxDBManager {
30
+ private ai;
31
+ private db;
32
+ private chunker;
33
+ private rewriter?;
34
+ private reranker?;
35
+ constructor({ ai, db, config }: Readonly<AxDBManagerArgs>);
36
+ private defaultChunker;
37
+ insert: (text: Readonly<string | string[]>, options?: Readonly<{
38
+ batchSize?: number;
39
+ maxWordsPerChunk?: number;
40
+ minWordsPerChunk?: number;
41
+ }>) => Promise<void>;
42
+ query: (query: Readonly<string | string[] | number | number[]>, { topPercent }?: Readonly<{
43
+ topPercent?: number;
44
+ }> | undefined) => Promise<AxDBMatch[][]>;
45
+ }
@@ -0,0 +1,159 @@
1
+ import {} from '../index.js';
2
+ const table = '_internal';
3
+ export class AxDBManager {
4
+ ai;
5
+ db;
6
+ chunker;
7
+ rewriter;
8
+ reranker;
9
+ constructor({ ai, db, config }) {
10
+ this.ai = ai;
11
+ this.db = db;
12
+ this.chunker = config?.chunker ?? this.defaultChunker;
13
+ this.reranker = config?.reranker;
14
+ this.rewriter = config?.rewriter;
15
+ }
16
+ defaultChunker = (text) => {
17
+ // Default chunking by paragraphs
18
+ return text.split(/\n\n+/);
19
+ };
20
+ insert = async (text, options) => {
21
+ try {
22
+ const chunkerInput = Array.isArray(text)
23
+ ? text.join('\n\n')
24
+ : text;
25
+ // Chunk the text using the specified or default chunking function
26
+ const initialChunks = this.chunker(chunkerInput).filter((chunk) => chunk.length > 0);
27
+ const maxWordsPerChunk = options?.maxWordsPerChunk;
28
+ const minWordsPerChunk = options?.minWordsPerChunk;
29
+ const chunks = processChunks({
30
+ initialChunks,
31
+ minWordsPerChunk,
32
+ maxWordsPerChunk
33
+ });
34
+ const bs = options?.batchSize ?? 10;
35
+ // Process chunks in batches of 10
36
+ for (let i = 0; i < chunks.length; i += bs) {
37
+ const batch = chunks.slice(i, i + bs);
38
+ // Get embeddings for the whole batch from the AI service in one call
39
+ const ret = await this.ai.embed({ texts: batch });
40
+ // Prepare batch for bulk upsert
41
+ const embeddings = ret.embeddings
42
+ .map((embedding, index) => ({
43
+ id: `chunk_${Date.now() + index}`, // Unique ID for each chunk, adjusted by index
44
+ table,
45
+ values: embedding,
46
+ metadata: { text: batch[index] ?? '' }
47
+ }))
48
+ .filter((v) => v.metadata?.text && v.metadata?.text.length > 0);
49
+ // Batch upsert embeddings
50
+ await this.db.batchUpsert(embeddings);
51
+ }
52
+ }
53
+ catch (error) {
54
+ throw new Error(`Error processing text: ${error}`);
55
+ }
56
+ };
57
+ query = async (query, { topPercent } = {}) => {
58
+ const texts = Array.isArray(query) ? query : [query];
59
+ if (typeof texts[0] === 'string' && this.rewriter) {
60
+ for (const [i, text] of texts.entries()) {
61
+ const { rewrittenQuery } = await this.rewriter.forward({
62
+ query: text
63
+ });
64
+ texts[i] = rewrittenQuery;
65
+ }
66
+ }
67
+ let queries;
68
+ if (typeof texts[0] === 'string') {
69
+ const embedResults = await this.ai.embed({ texts });
70
+ queries = embedResults.embeddings.map((values) => this.db.query({ table, values }));
71
+ }
72
+ else {
73
+ queries = texts.map((values) => this.db.query({ table, values }));
74
+ }
75
+ const queryResults = await Promise.all(queries);
76
+ const res = [];
77
+ for (const { matches } of queryResults) {
78
+ const m = matches
79
+ .filter((v) => v.metadata?.text && v.metadata?.text.length > 0)
80
+ .map(({ score, metadata }) => ({ score, text: metadata?.text ?? '' }));
81
+ const tp = topPercent && topPercent > 1 ? topPercent / 100 : topPercent;
82
+ const resultItems = tp ? getTopInPercent(m, tp) : m;
83
+ if (this.reranker) {
84
+ const { rankedItems } = await this.reranker.forward({
85
+ query: texts[0],
86
+ items: resultItems.map((item) => item.text)
87
+ });
88
+ const items = rankedItems
89
+ .map((item) => resultItems.find((r) => r.text === item))
90
+ .filter((v) => v !== undefined);
91
+ res.push(items);
92
+ }
93
+ else {
94
+ res.push(resultItems);
95
+ }
96
+ }
97
+ return res;
98
+ };
99
+ }
100
+ const processChunks = ({ initialChunks, maxWordsPerChunk = 350, minWordsPerChunk = 250 }) => {
101
+ const chunks = [];
102
+ let currentChunk = '';
103
+ let currentWordCount = 0;
104
+ initialChunks.forEach((chunk) => {
105
+ const words = chunk.split(/\s+/); // Split the chunk into words
106
+ const wordCount = words.length; // Count words in the current chunk
107
+ if (currentWordCount + wordCount <= maxWordsPerChunk) {
108
+ // Add to the current chunk if within the max size limit
109
+ currentChunk += chunk + '\n\n';
110
+ currentWordCount += wordCount;
111
+ }
112
+ else if (currentWordCount > 0 &&
113
+ currentWordCount + wordCount <= maxWordsPerChunk * 1.5) {
114
+ // If the total word count exceeds the limit but is less than 150% of the maxWordsPerChunk
115
+ currentChunk += chunk + '\n\n';
116
+ currentWordCount += wordCount;
117
+ }
118
+ else {
119
+ // If the current chunk is not empty and adding the new chunk exceeds the adjusted limit
120
+ if (currentWordCount > minWordsPerChunk) {
121
+ chunks.push(currentChunk.trim());
122
+ currentChunk = '';
123
+ currentWordCount = 0;
124
+ }
125
+ // Handle the case where the chunk itself is larger than the limit
126
+ if (wordCount > maxWordsPerChunk) {
127
+ const remainingWords = words;
128
+ while (remainingWords.length > maxWordsPerChunk * 1.5) {
129
+ const slice = remainingWords.splice(0, maxWordsPerChunk);
130
+ chunks.push(slice.join(' '));
131
+ }
132
+ // Add the last portion if it fits the condition of being within 150% of maxWordsPerChunk
133
+ if (remainingWords.length > 0) {
134
+ currentChunk += remainingWords.join(' ') + '\n\n';
135
+ currentWordCount += remainingWords.length;
136
+ }
137
+ }
138
+ else {
139
+ // If the new chunk is smaller than the maximum words per chunk
140
+ currentChunk = chunk + '\n\n';
141
+ currentWordCount = wordCount;
142
+ }
143
+ }
144
+ });
145
+ // Push the last chunk if it exists and meets the minimum words condition
146
+ if (currentWordCount > minWordsPerChunk || chunks.length === 0) {
147
+ chunks.push(currentChunk.trim());
148
+ }
149
+ return chunks;
150
+ };
151
+ const getTopInPercent = (entries, percent = 0.1) => {
152
+ // Sort entries by score in ascending order
153
+ const sortedEntries = [...entries].sort((a, b) => a.score - b.score);
154
+ // Calculate the number of entries to take (top 10%)
155
+ const topTenPercentCount = Math.ceil(sortedEntries.length * percent);
156
+ // Return the top 10% of entries
157
+ return sortedEntries.slice(0, topTenPercentCount);
158
+ };
159
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../docs/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AxAIService } from '../ai/types.js';
2
+ import { AxGenerate, type AxGenerateOptions, type AxProgramForwardOptions } from '../dsp/index.js';
3
+ import type { AxRerankerIn, AxRerankerOut } from './manager.js';
4
+ export declare class AxDefaultResultReranker extends AxGenerate<AxRerankerIn, AxRerankerOut> {
5
+ constructor(ai: AxAIService, options?: Readonly<AxGenerateOptions>);
6
+ forward: (input: Readonly<AxRerankerIn>, options?: Readonly<AxProgramForwardOptions>) => Promise<AxRerankerOut>;
7
+ }
@@ -0,0 +1,26 @@
1
+ import { AxGenerate, axStringUtil } from '../dsp/index.js';
2
+ export class AxDefaultResultReranker extends AxGenerate {
3
+ constructor(ai, options) {
4
+ const signature = `"You are a re-ranker assistant tasked with evaluating a set of content items in relation to a specific question. Your role involves critically analyzing each content item to determine its relevance to the question and re-ranking them accordingly. This process includes assigning a relevance score from 0 to 10 to each content item based on how well it answers the question, its coverage of the topic, and the reliability of its information. This re-ranked list should start with the content item that is most relevant to the question and end with the least relevant. Output only the list."
5
+ query: string, items: string[] -> rankedItems: string[] "list of id, 5-words Rationale, relevance score"`;
6
+ super(ai, signature, options);
7
+ }
8
+ forward = async (input, options) => {
9
+ const { rankedItems } = await super.forward(input, options);
10
+ const sortedIndexes = rankedItems.map((item) => {
11
+ const { id: index } = axStringUtil.extractIdAndText(item);
12
+ return index;
13
+ });
14
+ // Ensure all elements are strings and filter out null or undefined
15
+ const sortedItems = input.items
16
+ .map((_, index) => {
17
+ const originalIndex = sortedIndexes[index];
18
+ return originalIndex !== undefined
19
+ ? input.items[originalIndex]
20
+ : undefined;
21
+ })
22
+ .filter((item) => item !== undefined);
23
+ return { rankedItems: sortedItems };
24
+ };
25
+ }
26
+ //# sourceMappingURL=reranker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranker.js","sourceRoot":"","sources":["../../docs/reranker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAGV,YAAY,EACb,MAAM,iBAAiB,CAAC;AAIzB,MAAM,OAAO,uBAAwB,SAAQ,UAG5C;IACC,YAAY,EAAe,EAAE,OAAqC;QAChE,MAAM,SAAS,GAAG;6GACuF,CAAC;QAE1G,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAEe,OAAO,GAAG,KAAK,EAC7B,KAA6B,EAC7B,OAA2C,EACnB,EAAE;QAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE5D,MAAM,aAAa,GAAa,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,mEAAmE;QACnE,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAChB,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,aAAa,KAAK,SAAS;gBAChC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC5B,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAExD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACtC,CAAC,CAAC;CACH"}
@@ -0,0 +1,4 @@
1
+ import { type AxAIService, AxGenerate, type AxGenerateOptions, type AxRewriteIn, type AxRewriteOut } from '../index.js';
2
+ export declare class AxDefaultQueryRewriter extends AxGenerate<AxRewriteIn, AxRewriteOut> {
3
+ constructor(ai: AxAIService, options?: Readonly<AxGenerateOptions>);
4
+ }
@@ -0,0 +1,9 @@
1
+ import { AxGenerate } from '../index.js';
2
+ export class AxDefaultQueryRewriter extends AxGenerate {
3
+ constructor(ai, options) {
4
+ const signature = `"You are a query rewriter assistant tasked with rewriting a given query to improve its clarity, specificity, and relevance. Your role involves analyzing the query to identify any ambiguities, generalizations, or irrelevant information and then rephrasing it to make it more focused and precise. The rewritten query should be concise, easy to understand, and directly related to the original query. Output only the rewritten query."
5
+ query: string -> rewrittenQuery: string`;
6
+ super(ai, signature, options);
7
+ }
8
+ }
9
+ //# sourceMappingURL=rewriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewriter.js","sourceRoot":"","sources":["../../docs/rewriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAIX,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,sBAAuB,SAAQ,UAG3C;IACC,YAAY,EAAe,EAAE,OAAqC;QAChE,MAAM,SAAS,GAAG;4CACsB,CAAC;QAEzC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF"}
package/docs/tika.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ export interface AxApacheTikaArgs {
2
+ url?: string | URL;
3
+ fetch?: typeof fetch;
4
+ }
5
+ export interface AxApacheTikaConvertOptions {
6
+ format?: 'text' | 'html';
7
+ }
8
+ export declare class AxApacheTika {
9
+ private tikaUrl;
10
+ private fetch?;
11
+ constructor(args?: Readonly<AxApacheTikaArgs>);
12
+ private _convert;
13
+ convert(files: Readonly<string[] | Blob[]>, options?: Readonly<{
14
+ batchSize?: number;
15
+ format?: 'html' | 'text';
16
+ }>): Promise<string[]>;
17
+ }
18
+ export default AxApacheTika;
package/docs/tika.js ADDED
@@ -0,0 +1,46 @@
1
+ import { createReadStream } from 'node:fs';
2
+ export class AxApacheTika {
3
+ tikaUrl;
4
+ fetch;
5
+ constructor(args) {
6
+ const _args = args ?? { url: 'http://localhost:9998/' };
7
+ this.tikaUrl = new URL('/tika', _args.url);
8
+ this.fetch = _args.fetch;
9
+ }
10
+ async _convert(file, options) {
11
+ const fileData = typeof file === 'string' ? createReadStream(file) : file.stream();
12
+ if (!fileData) {
13
+ throw new Error('Failed to read file data');
14
+ }
15
+ const acceptValue = options?.format === 'html' ? 'text/html' : 'text/plain';
16
+ try {
17
+ const res = await (this.fetch ?? fetch)(this.tikaUrl, {
18
+ body: fileData,
19
+ headers: { Accept: acceptValue },
20
+ duplex: 'half',
21
+ method: 'PUT'
22
+ });
23
+ if (!res.ok) {
24
+ throw new Error(`Failed to upload file: ${res.statusText}`);
25
+ }
26
+ const text = await res.text();
27
+ return text;
28
+ }
29
+ catch (error) {
30
+ throw new Error(`Error converting file: ${error}`);
31
+ }
32
+ }
33
+ async convert(files, options) {
34
+ const results = [];
35
+ const bs = options?.batchSize ?? 10;
36
+ for (let i = 0; i < files.length; i += bs) {
37
+ const batch = files.slice(i, i + bs);
38
+ const uploadPromises = batch.map((files) => this._convert(files, { format: options?.format }));
39
+ const batchResults = await Promise.all(uploadPromises);
40
+ results.push(...batchResults);
41
+ }
42
+ return results;
43
+ }
44
+ }
45
+ export default AxApacheTika;
46
+ //# sourceMappingURL=tika.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tika.js","sourceRoot":"","sources":["../../docs/tika.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAW3C,MAAM,OAAO,YAAY;IACf,OAAO,CAAM;IACb,KAAK,CAAgB;IAE7B,YAAY,IAAiC;QAC3C,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,IAAmB,EACnB,OAA8C;QAE9C,MAAM,QAAQ,GACZ,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAkC,EAClC,OAAoE;QAEpE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAClD,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AACD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { extractionState } from './extract.js';
2
+ import type { AxSignature } from './sig.js';
3
+ export interface AxAssertion {
4
+ fn(values: Record<string, unknown>): boolean | undefined;
5
+ message?: string;
6
+ optional?: boolean;
7
+ }
8
+ export interface AxStreamingAssertion {
9
+ fieldName: string;
10
+ fn(content: string): boolean | undefined;
11
+ message?: string;
12
+ optional?: boolean;
13
+ }
14
+ export declare class AxAssertionError extends Error {
15
+ private values;
16
+ private optional?;
17
+ constructor({ message, values, optional }: Readonly<{
18
+ message: string;
19
+ values: Record<string, unknown>;
20
+ optional?: boolean;
21
+ }>);
22
+ getValue: () => Record<string, unknown>;
23
+ getOptional: () => boolean | undefined;
24
+ getFixingInstructions: (_sig: Readonly<AxSignature>) => {
25
+ name: string;
26
+ title: string;
27
+ description: string;
28
+ }[];
29
+ }
30
+ export declare const assertAssertions: (asserts: readonly AxAssertion[], values: Record<string, unknown>) => void;
31
+ export declare const assertStreamingAssertions: (asserts: readonly AxStreamingAssertion[], values: Record<string, unknown>, xstate: Readonly<extractionState>, content: string) => void;
32
+ export declare const assertRequiredFields: (sig: Readonly<AxSignature>, values: Record<string, unknown>) => void;
package/dsp/asserts.js ADDED
@@ -0,0 +1,91 @@
1
+ export class AxAssertionError extends Error {
2
+ values;
3
+ optional;
4
+ constructor({ message, values, optional }) {
5
+ super(message);
6
+ this.values = values;
7
+ this.optional = optional;
8
+ this.name = this.constructor.name;
9
+ this.stack = new Error().stack;
10
+ }
11
+ getValue = () => this.values;
12
+ getOptional = () => this.optional;
13
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
+ getFixingInstructions = (_sig) => {
15
+ const extraFields = [];
16
+ // for (const f of sig.getOutputFields()) {
17
+ // extraFields.push({
18
+ // name: `past_${f.name}`,
19
+ // title: `Past ${f.title}`,
20
+ // description: JSON.stringify(this.values[f.name])
21
+ // });
22
+ // }
23
+ extraFields.push({
24
+ name: 'instructions',
25
+ title: 'Instructions',
26
+ description: this.message
27
+ });
28
+ return extraFields;
29
+ };
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/naming-convention
32
+ export const assertAssertions = (asserts, values) => {
33
+ for (const assert of asserts) {
34
+ const { fn, message, optional } = assert;
35
+ try {
36
+ const res = fn(values);
37
+ if (res === undefined) {
38
+ continue;
39
+ }
40
+ if (!res && message) {
41
+ throw new AxAssertionError({ message, values, optional });
42
+ }
43
+ }
44
+ catch (e) {
45
+ const message = e.message;
46
+ throw new AxAssertionError({ message, values, optional });
47
+ }
48
+ }
49
+ };
50
+ // eslint-disable-next-line @typescript-eslint/naming-convention
51
+ export const assertStreamingAssertions = (asserts, values, xstate, content) => {
52
+ if (!xstate.currField ||
53
+ xstate.s === -1 ||
54
+ !asserts ||
55
+ asserts.length === 0) {
56
+ return;
57
+ }
58
+ const fieldAsserts = asserts.filter((a) => a.fieldName === xstate.currField?.name);
59
+ if (fieldAsserts.length === 0) {
60
+ return;
61
+ }
62
+ const currValue = content.substring(xstate.s);
63
+ for (const assert of fieldAsserts) {
64
+ const { message, optional, fn } = assert;
65
+ try {
66
+ const res = fn(currValue);
67
+ if (res === undefined) {
68
+ continue;
69
+ }
70
+ if (!res && message) {
71
+ throw new AxAssertionError({ message, values, optional });
72
+ }
73
+ }
74
+ catch (e) {
75
+ const message = e.message;
76
+ throw new AxAssertionError({ message, values, optional });
77
+ }
78
+ }
79
+ };
80
+ // eslint-disable-next-line @typescript-eslint/naming-convention
81
+ export const assertRequiredFields = (sig, values) => {
82
+ const fields = sig.getOutputFields();
83
+ const missingFields = fields.filter((f) => !(f.name in values));
84
+ if (missingFields.length > 0) {
85
+ throw new AxAssertionError({
86
+ message: `Missing required fields: ${missingFields.map((f) => f.name).join(', ')}`,
87
+ values
88
+ });
89
+ }
90
+ };
91
+ //# sourceMappingURL=asserts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asserts.js","sourceRoot":"","sources":["../../dsp/asserts.ts"],"names":[],"mappings":"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"}
package/dsp/eval.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Calculates the Exact Match (EM) score between a prediction and ground truth.
3
+ *
4
+ * The EM score is a strict metric used in machine learning to assess if the predicted
5
+ * answer matches the ground truth exactly, commonly used in tasks like question answering.
6
+ *
7
+ * @param prediction The predicted text.
8
+ * @param groundTruth The actual correct text.
9
+ * @returns A boolean indicating if the prediction exactly matches the ground truth.
10
+ */
11
+ declare function emScore(prediction: string, groundTruth: string): boolean;
12
+ /**
13
+ * Calculates the F1 score between a prediction and ground truth.
14
+ *
15
+ * The F1 score is a harmonic mean of precision and recall, widely used in NLP to measure
16
+ * a model's accuracy in considering both false positives and false negatives, offering a
17
+ * balance for evaluating classification models.
18
+ *
19
+ * @param prediction The predicted text.
20
+ * @param groundTruth The actual correct text.
21
+ * @returns The F1 score as a number.
22
+ */
23
+ declare function f1Score(prediction: string, groundTruth: string): number;
24
+ /**
25
+ * Calculates a novel F1 score, taking into account a history of interaction and excluding stopwords.
26
+ *
27
+ * This metric extends the F1 score by considering contextual relevance and filtering out common words
28
+ * that might skew the assessment of the prediction's quality, especially in conversational models or
29
+ * when historical context is relevant.
30
+ *
31
+ * @param history The historical context or preceding interactions.
32
+ * @param prediction The predicted text.
33
+ * @param groundTruth The actual correct text.
34
+ * @param returnRecall Optionally return the recall score instead of F1.
35
+ * @returns The novel F1 or recall score as a number.
36
+ */
37
+ declare function novelF1ScoreOptimized(history: string, prediction: string, groundTruth: string, returnRecall?: boolean): number;
38
+ export declare const axEvalUtil: {
39
+ emScore: typeof emScore;
40
+ f1Score: typeof f1Score;
41
+ novelF1ScoreOptimized: typeof novelF1ScoreOptimized;
42
+ };
43
+ export {};
package/dsp/eval.js ADDED
@@ -0,0 +1,125 @@
1
+ import { stopwords } from './stopwords.js';
2
+ /**
3
+ * Filters out tokens based on a set of exclusion tokens.
4
+ *
5
+ * @param tokens The array of tokens to filter.
6
+ * @param exclusions A set containing tokens to exclude.
7
+ * @returns An array of filtered tokens.
8
+ */
9
+ function filterTokens(tokens, exclusions) {
10
+ return tokens.filter((token) => !exclusions.has(token));
11
+ }
12
+ /**
13
+ * Counts the occurrences of each token in an array of tokens.
14
+ *
15
+ * This function supports the preprocessing step for NLP tasks like text similarity
16
+ * and classification by transforming text into a bag-of-words model, facilitating
17
+ * the comparison of different texts based on their content.
18
+ *
19
+ * @param tokens An array of string tokens.
20
+ * @returns A Counter object mapping each token to its count.
21
+ */
22
+ function countTokens(tokens) {
23
+ const counter = {};
24
+ for (const token of tokens) {
25
+ counter[token] = (counter[token] || 0) + 1;
26
+ }
27
+ return counter;
28
+ }
29
+ /**
30
+ * Normalizes text by lowercasing, removing punctuation, and squashing multiple spaces.
31
+ *
32
+ * This normalization is crucial in NLP for reducing the complexity of the text data,
33
+ * minimizing the variance between words that should be considered the same for analysis
34
+ * purposes (e.g., "Dog!" and "dog" are treated as the same word).
35
+ *
36
+ * @param s A string to be normalized.
37
+ * @returns A normalized string.
38
+ */
39
+ function normalizeText(s) {
40
+ s = s.normalize('NFD');
41
+ s = s.replace(/\b(a|an|the)\b/g, ' ');
42
+ s = s.split(/\s+/).join(' ');
43
+ s = s.replace(/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g, '');
44
+ return s.toLowerCase();
45
+ }
46
+ /**
47
+ * Calculates the Exact Match (EM) score between a prediction and ground truth.
48
+ *
49
+ * The EM score is a strict metric used in machine learning to assess if the predicted
50
+ * answer matches the ground truth exactly, commonly used in tasks like question answering.
51
+ *
52
+ * @param prediction The predicted text.
53
+ * @param groundTruth The actual correct text.
54
+ * @returns A boolean indicating if the prediction exactly matches the ground truth.
55
+ */
56
+ function emScore(prediction, groundTruth) {
57
+ return normalizeText(prediction) === normalizeText(groundTruth);
58
+ }
59
+ /**
60
+ * Calculates the F1 score between a prediction and ground truth.
61
+ *
62
+ * The F1 score is a harmonic mean of precision and recall, widely used in NLP to measure
63
+ * a model's accuracy in considering both false positives and false negatives, offering a
64
+ * balance for evaluating classification models.
65
+ *
66
+ * @param prediction The predicted text.
67
+ * @param groundTruth The actual correct text.
68
+ * @returns The F1 score as a number.
69
+ */
70
+ function f1Score(prediction, groundTruth) {
71
+ const predictionTokens = normalizeText(prediction).split(' ');
72
+ const groundTruthTokens = normalizeText(groundTruth).split(' ');
73
+ // Calculate the intersection of common tokens between prediction and ground truth
74
+ const predictionCounts = countTokens(predictionTokens);
75
+ const groundTruthCounts = countTokens(groundTruthTokens);
76
+ let numSame = 0;
77
+ for (const token in predictionCounts) {
78
+ const v1 = predictionCounts[token] ?? 0;
79
+ const v2 = groundTruthCounts[token] ?? 0;
80
+ numSame += Math.min(v1, v2);
81
+ }
82
+ if (numSame === 0) {
83
+ return 0;
84
+ }
85
+ const precision = numSame / predictionTokens.length;
86
+ const recall = numSame / groundTruthTokens.length;
87
+ return (2 * precision * recall) / (precision + recall);
88
+ }
89
+ /**
90
+ * Calculates a novel F1 score, taking into account a history of interaction and excluding stopwords.
91
+ *
92
+ * This metric extends the F1 score by considering contextual relevance and filtering out common words
93
+ * that might skew the assessment of the prediction's quality, especially in conversational models or
94
+ * when historical context is relevant.
95
+ *
96
+ * @param history The historical context or preceding interactions.
97
+ * @param prediction The predicted text.
98
+ * @param groundTruth The actual correct text.
99
+ * @param returnRecall Optionally return the recall score instead of F1.
100
+ * @returns The novel F1 or recall score as a number.
101
+ */
102
+ function novelF1ScoreOptimized(history, prediction, groundTruth, returnRecall = false) {
103
+ // Normalize and split the input texts into tokens
104
+ const historyTokens = normalizeText(history).split(' ');
105
+ let predictionTokens = normalizeText(prediction).split(' ');
106
+ let groundTruthTokens = normalizeText(groundTruth).split(' ');
107
+ // Combine stopwords and history tokens for exclusion
108
+ const exclusions = new Set([...stopwords, ...historyTokens]);
109
+ // Filter prediction and ground truth tokens against the exclusions
110
+ predictionTokens = filterTokens(predictionTokens, exclusions);
111
+ groundTruthTokens = filterTokens(groundTruthTokens, exclusions);
112
+ // Proceed with calculating common tokens, precision, recall, and F1 score as previously outlined
113
+ // Placeholder for the calculation logic
114
+ const numSame = 0; // This should be calculated as before
115
+ const precision = numSame / predictionTokens.length;
116
+ const recall = numSame / groundTruthTokens.length;
117
+ const f1 = (2 * precision * recall) / (precision + recall);
118
+ return returnRecall ? recall : f1;
119
+ }
120
+ export const axEvalUtil = {
121
+ emScore,
122
+ f1Score,
123
+ novelF1ScoreOptimized
124
+ };
125
+ //# sourceMappingURL=eval.js.map