@compresr/sdk 1.3.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +237 -173
  3. package/dist/cjs/agents/engine.d.ts +121 -0
  4. package/dist/cjs/agents/engine.d.ts.map +1 -0
  5. package/dist/cjs/agents/engine.js +517 -0
  6. package/dist/cjs/agents/engine.js.map +1 -0
  7. package/dist/cjs/agents/facades/anthropic.d.ts +26 -0
  8. package/dist/cjs/agents/facades/anthropic.d.ts.map +1 -0
  9. package/dist/cjs/agents/facades/anthropic.js +46 -0
  10. package/dist/cjs/agents/facades/anthropic.js.map +1 -0
  11. package/dist/cjs/agents/facades/index.d.ts +4 -0
  12. package/dist/cjs/agents/facades/index.d.ts.map +1 -0
  13. package/dist/cjs/agents/facades/index.js +10 -0
  14. package/dist/cjs/agents/facades/index.js.map +1 -0
  15. package/dist/cjs/agents/facades/native.d.ts +29 -0
  16. package/dist/cjs/agents/facades/native.d.ts.map +1 -0
  17. package/dist/cjs/agents/facades/native.js +27 -0
  18. package/dist/cjs/agents/facades/native.js.map +1 -0
  19. package/dist/cjs/agents/facades/openai.d.ts +32 -0
  20. package/dist/cjs/agents/facades/openai.d.ts.map +1 -0
  21. package/dist/cjs/agents/facades/openai.js +55 -0
  22. package/dist/cjs/agents/facades/openai.js.map +1 -0
  23. package/dist/cjs/agents/index.d.ts +23 -0
  24. package/dist/cjs/agents/index.d.ts.map +1 -0
  25. package/dist/cjs/agents/index.js +37 -0
  26. package/dist/cjs/agents/index.js.map +1 -0
  27. package/dist/cjs/agents/normalized.d.ts +59 -0
  28. package/dist/cjs/agents/normalized.d.ts.map +1 -0
  29. package/dist/cjs/agents/normalized.js +35 -0
  30. package/dist/cjs/agents/normalized.js.map +1 -0
  31. package/dist/cjs/agents/schemas/anthropic.d.ts +46 -0
  32. package/dist/cjs/agents/schemas/anthropic.d.ts.map +1 -0
  33. package/dist/cjs/agents/schemas/anthropic.js +55 -0
  34. package/dist/cjs/agents/schemas/anthropic.js.map +1 -0
  35. package/dist/cjs/agents/schemas/index.d.ts +3 -0
  36. package/dist/cjs/agents/schemas/index.d.ts.map +1 -0
  37. package/dist/cjs/agents/schemas/index.js +8 -0
  38. package/dist/cjs/agents/schemas/index.js.map +1 -0
  39. package/dist/cjs/agents/schemas/openai.d.ts +51 -0
  40. package/dist/cjs/agents/schemas/openai.d.ts.map +1 -0
  41. package/dist/cjs/agents/schemas/openai.js +60 -0
  42. package/dist/cjs/agents/schemas/openai.js.map +1 -0
  43. package/dist/cjs/agents/tools/index.d.ts +2 -0
  44. package/dist/cjs/agents/tools/index.d.ts.map +1 -0
  45. package/dist/cjs/agents/tools/index.js +7 -0
  46. package/dist/cjs/agents/tools/index.js.map +1 -0
  47. package/dist/cjs/agents/tools/web-search.d.ts +56 -0
  48. package/dist/cjs/agents/tools/web-search.d.ts.map +1 -0
  49. package/dist/cjs/agents/tools/web-search.js +128 -0
  50. package/dist/cjs/agents/tools/web-search.js.map +1 -0
  51. package/dist/cjs/clients/compression.d.ts +39 -147
  52. package/dist/cjs/clients/compression.d.ts.map +1 -1
  53. package/dist/cjs/clients/compression.js +114 -194
  54. package/dist/cjs/clients/compression.js.map +1 -1
  55. package/dist/cjs/clients/index.d.ts +1 -1
  56. package/dist/cjs/clients/index.d.ts.map +1 -1
  57. package/dist/cjs/clients/index.js.map +1 -1
  58. package/dist/cjs/config/constants.d.ts +3 -28
  59. package/dist/cjs/config/constants.d.ts.map +1 -1
  60. package/dist/cjs/config/constants.js +4 -43
  61. package/dist/cjs/config/constants.js.map +1 -1
  62. package/dist/cjs/config/endpoints.d.ts +3 -15
  63. package/dist/cjs/config/endpoints.d.ts.map +1 -1
  64. package/dist/cjs/config/endpoints.js +3 -20
  65. package/dist/cjs/config/endpoints.js.map +1 -1
  66. package/dist/cjs/config/index.d.ts +1 -1
  67. package/dist/cjs/config/index.d.ts.map +1 -1
  68. package/dist/cjs/config/index.js +1 -7
  69. package/dist/cjs/config/index.js.map +1 -1
  70. package/dist/cjs/errors/exceptions.d.ts.map +1 -1
  71. package/dist/cjs/errors/exceptions.js +0 -6
  72. package/dist/cjs/errors/exceptions.js.map +1 -1
  73. package/dist/cjs/http/client.d.ts +5 -17
  74. package/dist/cjs/http/client.d.ts.map +1 -1
  75. package/dist/cjs/http/client.js +110 -115
  76. package/dist/cjs/http/client.js.map +1 -1
  77. package/dist/cjs/index.d.ts +7 -15
  78. package/dist/cjs/index.d.ts.map +1 -1
  79. package/dist/cjs/index.js +22 -25
  80. package/dist/cjs/index.js.map +1 -1
  81. package/dist/cjs/integrations/_shared/client.d.ts +13 -0
  82. package/dist/cjs/integrations/_shared/client.d.ts.map +1 -0
  83. package/dist/cjs/integrations/_shared/client.js +21 -0
  84. package/dist/cjs/integrations/_shared/client.js.map +1 -0
  85. package/dist/cjs/integrations/_shared/compress.d.ts +28 -0
  86. package/dist/cjs/integrations/_shared/compress.d.ts.map +1 -0
  87. package/dist/cjs/integrations/_shared/compress.js +38 -0
  88. package/dist/cjs/integrations/_shared/compress.js.map +1 -0
  89. package/dist/cjs/integrations/_shared/errors.d.ts +20 -0
  90. package/dist/cjs/integrations/_shared/errors.d.ts.map +1 -0
  91. package/dist/cjs/integrations/_shared/errors.js +49 -0
  92. package/dist/cjs/integrations/_shared/errors.js.map +1 -0
  93. package/dist/cjs/integrations/_shared/filters.d.ts +20 -0
  94. package/dist/cjs/integrations/_shared/filters.d.ts.map +1 -0
  95. package/dist/cjs/integrations/_shared/filters.js +33 -0
  96. package/dist/cjs/integrations/_shared/filters.js.map +1 -0
  97. package/dist/cjs/integrations/_shared/index.d.ts +7 -0
  98. package/dist/cjs/integrations/_shared/index.d.ts.map +1 -0
  99. package/dist/cjs/integrations/_shared/index.js +26 -0
  100. package/dist/cjs/integrations/_shared/index.js.map +1 -0
  101. package/dist/cjs/integrations/_shared/query.d.ts +48 -0
  102. package/dist/cjs/integrations/_shared/query.d.ts.map +1 -0
  103. package/dist/cjs/integrations/_shared/query.js +141 -0
  104. package/dist/cjs/integrations/_shared/query.js.map +1 -0
  105. package/dist/cjs/integrations/_shared/tokens.d.ts +20 -0
  106. package/dist/cjs/integrations/_shared/tokens.d.ts.map +1 -0
  107. package/dist/cjs/integrations/_shared/tokens.js +26 -0
  108. package/dist/cjs/integrations/_shared/tokens.js.map +1 -0
  109. package/dist/cjs/integrations/langchain/index.d.ts +10 -0
  110. package/dist/cjs/integrations/langchain/index.d.ts.map +1 -0
  111. package/dist/cjs/integrations/langchain/index.js +18 -0
  112. package/dist/cjs/integrations/langchain/index.js.map +1 -0
  113. package/dist/cjs/integrations/langchain/middleware.d.ts +94 -0
  114. package/dist/cjs/integrations/langchain/middleware.d.ts.map +1 -0
  115. package/dist/cjs/integrations/langchain/middleware.js +273 -0
  116. package/dist/cjs/integrations/langchain/middleware.js.map +1 -0
  117. package/dist/cjs/integrations/langchain/retriever.d.ts +54 -0
  118. package/dist/cjs/integrations/langchain/retriever.d.ts.map +1 -0
  119. package/dist/cjs/integrations/langchain/retriever.js +118 -0
  120. package/dist/cjs/integrations/langchain/retriever.js.map +1 -0
  121. package/dist/cjs/integrations/langchain/wrappers.d.ts +39 -0
  122. package/dist/cjs/integrations/langchain/wrappers.d.ts.map +1 -0
  123. package/dist/cjs/integrations/langchain/wrappers.js +88 -0
  124. package/dist/cjs/integrations/langchain/wrappers.js.map +1 -0
  125. package/dist/cjs/integrations/langgraph/checkpoint.d.ts +49 -0
  126. package/dist/cjs/integrations/langgraph/checkpoint.d.ts.map +1 -0
  127. package/dist/cjs/integrations/langgraph/checkpoint.js +79 -0
  128. package/dist/cjs/integrations/langgraph/checkpoint.js.map +1 -0
  129. package/dist/cjs/integrations/langgraph/handoff.d.ts +44 -0
  130. package/dist/cjs/integrations/langgraph/handoff.d.ts.map +1 -0
  131. package/dist/cjs/integrations/langgraph/handoff.js +86 -0
  132. package/dist/cjs/integrations/langgraph/handoff.js.map +1 -0
  133. package/dist/cjs/integrations/langgraph/index.d.ts +18 -0
  134. package/dist/cjs/integrations/langgraph/index.d.ts.map +1 -0
  135. package/dist/cjs/integrations/langgraph/index.js +28 -0
  136. package/dist/cjs/integrations/langgraph/index.js.map +1 -0
  137. package/dist/cjs/integrations/langgraph/nodes.d.ts +34 -0
  138. package/dist/cjs/integrations/langgraph/nodes.d.ts.map +1 -0
  139. package/dist/cjs/integrations/langgraph/nodes.js +54 -0
  140. package/dist/cjs/integrations/langgraph/nodes.js.map +1 -0
  141. package/dist/cjs/integrations/langgraph/store.d.ts +76 -0
  142. package/dist/cjs/integrations/langgraph/store.d.ts.map +1 -0
  143. package/dist/cjs/integrations/langgraph/store.js +121 -0
  144. package/dist/cjs/integrations/langgraph/store.js.map +1 -0
  145. package/dist/cjs/integrations/llamaindex/index.d.ts +10 -0
  146. package/dist/cjs/integrations/llamaindex/index.d.ts.map +1 -0
  147. package/dist/cjs/integrations/llamaindex/index.js +15 -0
  148. package/dist/cjs/integrations/llamaindex/index.js.map +1 -0
  149. package/dist/cjs/integrations/llamaindex/memory.d.ts +74 -0
  150. package/dist/cjs/integrations/llamaindex/memory.d.ts.map +1 -0
  151. package/dist/cjs/integrations/llamaindex/memory.js +95 -0
  152. package/dist/cjs/integrations/llamaindex/memory.js.map +1 -0
  153. package/dist/cjs/integrations/llamaindex/postprocessor.d.ts +66 -0
  154. package/dist/cjs/integrations/llamaindex/postprocessor.d.ts.map +1 -0
  155. package/dist/cjs/integrations/llamaindex/postprocessor.js +172 -0
  156. package/dist/cjs/integrations/llamaindex/postprocessor.js.map +1 -0
  157. package/dist/cjs/integrations/llamaindex/wrappers.d.ts +38 -0
  158. package/dist/cjs/integrations/llamaindex/wrappers.d.ts.map +1 -0
  159. package/dist/cjs/integrations/llamaindex/wrappers.js +46 -0
  160. package/dist/cjs/integrations/llamaindex/wrappers.js.map +1 -0
  161. package/dist/cjs/logger.d.ts +18 -0
  162. package/dist/cjs/logger.d.ts.map +1 -0
  163. package/dist/cjs/logger.js +41 -0
  164. package/dist/cjs/logger.js.map +1 -0
  165. package/dist/cjs/schemas/compression.d.ts +33 -103
  166. package/dist/cjs/schemas/compression.d.ts.map +1 -1
  167. package/dist/cjs/schemas/compression.js +6 -59
  168. package/dist/cjs/schemas/compression.js.map +1 -1
  169. package/dist/cjs/schemas/index.d.ts +1 -4
  170. package/dist/cjs/schemas/index.d.ts.map +1 -1
  171. package/dist/cjs/schemas/index.js +1 -8
  172. package/dist/cjs/schemas/index.js.map +1 -1
  173. package/dist/cjs/version.d.ts +1 -1
  174. package/dist/cjs/version.js +1 -1
  175. package/dist/esm/agents/engine.d.ts +121 -0
  176. package/dist/esm/agents/engine.d.ts.map +1 -0
  177. package/dist/esm/agents/engine.js +478 -0
  178. package/dist/esm/agents/engine.js.map +1 -0
  179. package/dist/esm/agents/facades/anthropic.d.ts +26 -0
  180. package/dist/esm/agents/facades/anthropic.d.ts.map +1 -0
  181. package/dist/esm/agents/facades/anthropic.js +43 -0
  182. package/dist/esm/agents/facades/anthropic.js.map +1 -0
  183. package/dist/esm/agents/facades/index.d.ts +4 -0
  184. package/dist/esm/agents/facades/index.d.ts.map +1 -0
  185. package/dist/esm/agents/facades/index.js +4 -0
  186. package/dist/esm/agents/facades/index.js.map +1 -0
  187. package/dist/esm/agents/facades/native.d.ts +29 -0
  188. package/dist/esm/agents/facades/native.d.ts.map +1 -0
  189. package/dist/esm/agents/facades/native.js +24 -0
  190. package/dist/esm/agents/facades/native.js.map +1 -0
  191. package/dist/esm/agents/facades/openai.d.ts +32 -0
  192. package/dist/esm/agents/facades/openai.d.ts.map +1 -0
  193. package/dist/esm/agents/facades/openai.js +52 -0
  194. package/dist/esm/agents/facades/openai.js.map +1 -0
  195. package/dist/esm/agents/index.d.ts +23 -0
  196. package/dist/esm/agents/index.d.ts.map +1 -0
  197. package/dist/esm/agents/index.js +23 -0
  198. package/dist/esm/agents/index.js.map +1 -0
  199. package/dist/esm/agents/normalized.d.ts +59 -0
  200. package/dist/esm/agents/normalized.d.ts.map +1 -0
  201. package/dist/esm/agents/normalized.js +31 -0
  202. package/dist/esm/agents/normalized.js.map +1 -0
  203. package/dist/esm/agents/schemas/anthropic.d.ts +46 -0
  204. package/dist/esm/agents/schemas/anthropic.d.ts.map +1 -0
  205. package/dist/esm/agents/schemas/anthropic.js +52 -0
  206. package/dist/esm/agents/schemas/anthropic.js.map +1 -0
  207. package/dist/esm/agents/schemas/index.d.ts +3 -0
  208. package/dist/esm/agents/schemas/index.d.ts.map +1 -0
  209. package/dist/esm/agents/schemas/index.js +3 -0
  210. package/dist/esm/agents/schemas/index.js.map +1 -0
  211. package/dist/esm/agents/schemas/openai.d.ts +51 -0
  212. package/dist/esm/agents/schemas/openai.d.ts.map +1 -0
  213. package/dist/esm/agents/schemas/openai.js +57 -0
  214. package/dist/esm/agents/schemas/openai.js.map +1 -0
  215. package/dist/esm/agents/tools/index.d.ts +2 -0
  216. package/dist/esm/agents/tools/index.d.ts.map +1 -0
  217. package/dist/esm/agents/tools/index.js +2 -0
  218. package/dist/esm/agents/tools/index.js.map +1 -0
  219. package/dist/esm/agents/tools/web-search.d.ts +56 -0
  220. package/dist/esm/agents/tools/web-search.d.ts.map +1 -0
  221. package/dist/esm/agents/tools/web-search.js +91 -0
  222. package/dist/esm/agents/tools/web-search.js.map +1 -0
  223. package/dist/esm/clients/compression.d.ts +39 -147
  224. package/dist/esm/clients/compression.d.ts.map +1 -1
  225. package/dist/esm/clients/compression.js +117 -197
  226. package/dist/esm/clients/compression.js.map +1 -1
  227. package/dist/esm/clients/index.d.ts +1 -1
  228. package/dist/esm/clients/index.d.ts.map +1 -1
  229. package/dist/esm/clients/index.js.map +1 -1
  230. package/dist/esm/config/constants.d.ts +3 -28
  231. package/dist/esm/config/constants.d.ts.map +1 -1
  232. package/dist/esm/config/constants.js +3 -42
  233. package/dist/esm/config/constants.js.map +1 -1
  234. package/dist/esm/config/endpoints.d.ts +3 -15
  235. package/dist/esm/config/endpoints.d.ts.map +1 -1
  236. package/dist/esm/config/endpoints.js +3 -20
  237. package/dist/esm/config/endpoints.js.map +1 -1
  238. package/dist/esm/config/index.d.ts +1 -1
  239. package/dist/esm/config/index.d.ts.map +1 -1
  240. package/dist/esm/config/index.js +1 -1
  241. package/dist/esm/config/index.js.map +1 -1
  242. package/dist/esm/errors/exceptions.d.ts.map +1 -1
  243. package/dist/esm/errors/exceptions.js +0 -6
  244. package/dist/esm/errors/exceptions.js.map +1 -1
  245. package/dist/esm/http/client.d.ts +5 -17
  246. package/dist/esm/http/client.d.ts.map +1 -1
  247. package/dist/esm/http/client.js +110 -115
  248. package/dist/esm/http/client.js.map +1 -1
  249. package/dist/esm/index.d.ts +7 -15
  250. package/dist/esm/index.d.ts.map +1 -1
  251. package/dist/esm/index.js +7 -13
  252. package/dist/esm/index.js.map +1 -1
  253. package/dist/esm/integrations/_shared/client.d.ts +13 -0
  254. package/dist/esm/integrations/_shared/client.d.ts.map +1 -0
  255. package/dist/esm/integrations/_shared/client.js +17 -0
  256. package/dist/esm/integrations/_shared/client.js.map +1 -0
  257. package/dist/esm/integrations/_shared/compress.d.ts +28 -0
  258. package/dist/esm/integrations/_shared/compress.d.ts.map +1 -0
  259. package/dist/esm/integrations/_shared/compress.js +35 -0
  260. package/dist/esm/integrations/_shared/compress.js.map +1 -0
  261. package/dist/esm/integrations/_shared/errors.d.ts +20 -0
  262. package/dist/esm/integrations/_shared/errors.d.ts.map +1 -0
  263. package/dist/esm/integrations/_shared/errors.js +44 -0
  264. package/dist/esm/integrations/_shared/errors.js.map +1 -0
  265. package/dist/esm/integrations/_shared/filters.d.ts +20 -0
  266. package/dist/esm/integrations/_shared/filters.d.ts.map +1 -0
  267. package/dist/esm/integrations/_shared/filters.js +30 -0
  268. package/dist/esm/integrations/_shared/filters.js.map +1 -0
  269. package/dist/esm/integrations/_shared/index.d.ts +7 -0
  270. package/dist/esm/integrations/_shared/index.d.ts.map +1 -0
  271. package/dist/esm/integrations/_shared/index.js +7 -0
  272. package/dist/esm/integrations/_shared/index.js.map +1 -0
  273. package/dist/esm/integrations/_shared/query.d.ts +48 -0
  274. package/dist/esm/integrations/_shared/query.d.ts.map +1 -0
  275. package/dist/esm/integrations/_shared/query.js +135 -0
  276. package/dist/esm/integrations/_shared/query.js.map +1 -0
  277. package/dist/esm/integrations/_shared/tokens.d.ts +20 -0
  278. package/dist/esm/integrations/_shared/tokens.d.ts.map +1 -0
  279. package/dist/esm/integrations/_shared/tokens.js +23 -0
  280. package/dist/esm/integrations/_shared/tokens.js.map +1 -0
  281. package/dist/esm/integrations/langchain/index.d.ts +10 -0
  282. package/dist/esm/integrations/langchain/index.d.ts.map +1 -0
  283. package/dist/esm/integrations/langchain/index.js +9 -0
  284. package/dist/esm/integrations/langchain/index.js.map +1 -0
  285. package/dist/esm/integrations/langchain/middleware.d.ts +94 -0
  286. package/dist/esm/integrations/langchain/middleware.d.ts.map +1 -0
  287. package/dist/esm/integrations/langchain/middleware.js +268 -0
  288. package/dist/esm/integrations/langchain/middleware.js.map +1 -0
  289. package/dist/esm/integrations/langchain/retriever.d.ts +54 -0
  290. package/dist/esm/integrations/langchain/retriever.d.ts.map +1 -0
  291. package/dist/esm/integrations/langchain/retriever.js +114 -0
  292. package/dist/esm/integrations/langchain/retriever.js.map +1 -0
  293. package/dist/esm/integrations/langchain/wrappers.d.ts +39 -0
  294. package/dist/esm/integrations/langchain/wrappers.d.ts.map +1 -0
  295. package/dist/esm/integrations/langchain/wrappers.js +84 -0
  296. package/dist/esm/integrations/langchain/wrappers.js.map +1 -0
  297. package/dist/esm/integrations/langgraph/checkpoint.d.ts +49 -0
  298. package/dist/esm/integrations/langgraph/checkpoint.d.ts.map +1 -0
  299. package/dist/esm/integrations/langgraph/checkpoint.js +75 -0
  300. package/dist/esm/integrations/langgraph/checkpoint.js.map +1 -0
  301. package/dist/esm/integrations/langgraph/handoff.d.ts +44 -0
  302. package/dist/esm/integrations/langgraph/handoff.d.ts.map +1 -0
  303. package/dist/esm/integrations/langgraph/handoff.js +83 -0
  304. package/dist/esm/integrations/langgraph/handoff.js.map +1 -0
  305. package/dist/esm/integrations/langgraph/index.d.ts +18 -0
  306. package/dist/esm/integrations/langgraph/index.d.ts.map +1 -0
  307. package/dist/esm/integrations/langgraph/index.js +17 -0
  308. package/dist/esm/integrations/langgraph/index.js.map +1 -0
  309. package/dist/esm/integrations/langgraph/nodes.d.ts +34 -0
  310. package/dist/esm/integrations/langgraph/nodes.d.ts.map +1 -0
  311. package/dist/esm/integrations/langgraph/nodes.js +51 -0
  312. package/dist/esm/integrations/langgraph/nodes.js.map +1 -0
  313. package/dist/esm/integrations/langgraph/store.d.ts +76 -0
  314. package/dist/esm/integrations/langgraph/store.d.ts.map +1 -0
  315. package/dist/esm/integrations/langgraph/store.js +117 -0
  316. package/dist/esm/integrations/langgraph/store.js.map +1 -0
  317. package/dist/esm/integrations/llamaindex/index.d.ts +10 -0
  318. package/dist/esm/integrations/llamaindex/index.d.ts.map +1 -0
  319. package/dist/esm/integrations/llamaindex/index.js +9 -0
  320. package/dist/esm/integrations/llamaindex/index.js.map +1 -0
  321. package/dist/esm/integrations/llamaindex/memory.d.ts +74 -0
  322. package/dist/esm/integrations/llamaindex/memory.d.ts.map +1 -0
  323. package/dist/esm/integrations/llamaindex/memory.js +91 -0
  324. package/dist/esm/integrations/llamaindex/memory.js.map +1 -0
  325. package/dist/esm/integrations/llamaindex/postprocessor.d.ts +66 -0
  326. package/dist/esm/integrations/llamaindex/postprocessor.d.ts.map +1 -0
  327. package/dist/esm/integrations/llamaindex/postprocessor.js +168 -0
  328. package/dist/esm/integrations/llamaindex/postprocessor.js.map +1 -0
  329. package/dist/esm/integrations/llamaindex/wrappers.d.ts +38 -0
  330. package/dist/esm/integrations/llamaindex/wrappers.d.ts.map +1 -0
  331. package/dist/esm/integrations/llamaindex/wrappers.js +43 -0
  332. package/dist/esm/integrations/llamaindex/wrappers.js.map +1 -0
  333. package/dist/esm/logger.d.ts +18 -0
  334. package/dist/esm/logger.d.ts.map +1 -0
  335. package/dist/esm/logger.js +37 -0
  336. package/dist/esm/logger.js.map +1 -0
  337. package/dist/esm/schemas/compression.d.ts +33 -103
  338. package/dist/esm/schemas/compression.d.ts.map +1 -1
  339. package/dist/esm/schemas/compression.js +5 -58
  340. package/dist/esm/schemas/compression.js.map +1 -1
  341. package/dist/esm/schemas/index.d.ts +1 -4
  342. package/dist/esm/schemas/index.d.ts.map +1 -1
  343. package/dist/esm/schemas/index.js +1 -6
  344. package/dist/esm/schemas/index.js.map +1 -1
  345. package/dist/esm/version.d.ts +1 -1
  346. package/dist/esm/version.js +1 -1
  347. package/package.json +91 -6
@@ -1,6 +1,3 @@
1
- /**
2
- * Schema exports
3
- */
4
1
  export { BaseResponseSchema, StreamChunkSchema, HealthResponseSchema, type BaseResponse, type StreamChunk, type HealthResponse, } from './common.js';
5
- export { CompressRequestSchema, AgnosticBatchInputSchema, AgnosticBatchRequestSchema, CompressBatchInputSchema, CompressBatchRequestSchema, CompressResultSchema, CompressBatchItemResultSchema, CompressBatchResultSchema, CompressResponseSchema, CompressBatchResponseSchema, type CompressRequest, type AgnosticBatchInput, type AgnosticBatchRequest, type CompressBatchInput, type CompressBatchRequest, type CompressResult, type CompressBatchItemResult, type CompressBatchResult, type CompressResponse, type CompressBatchResponse, } from './compression.js';
2
+ export { CompressRequestSchema, CompressBatchInputSchema, CompressBatchRequestSchema, CompressResultSchema, CompressBatchItemResultSchema, CompressBatchResultSchema, CompressResponseSchema, CompressBatchResponseSchema, type CompressRequest, type CompressBatchInput, type CompressBatchRequest, type CompressResult, type CompressBatchItemResult, type CompressBatchResult, type CompressResponse, type CompressBatchResponse, } from './compression.js';
6
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC"}
@@ -1,19 +1,12 @@
1
1
  "use strict";
2
- /**
3
- * Schema exports
4
- */
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CompressBatchResponseSchema = exports.CompressResponseSchema = exports.CompressBatchResultSchema = exports.CompressBatchItemResultSchema = exports.CompressResultSchema = exports.CompressBatchRequestSchema = exports.CompressBatchInputSchema = exports.AgnosticBatchRequestSchema = exports.AgnosticBatchInputSchema = exports.CompressRequestSchema = exports.HealthResponseSchema = exports.StreamChunkSchema = exports.BaseResponseSchema = void 0;
7
- // Common
3
+ exports.CompressBatchResponseSchema = exports.CompressResponseSchema = exports.CompressBatchResultSchema = exports.CompressBatchItemResultSchema = exports.CompressResultSchema = exports.CompressBatchRequestSchema = exports.CompressBatchInputSchema = exports.CompressRequestSchema = exports.HealthResponseSchema = exports.StreamChunkSchema = exports.BaseResponseSchema = void 0;
8
4
  var common_js_1 = require("./common.js");
9
5
  Object.defineProperty(exports, "BaseResponseSchema", { enumerable: true, get: function () { return common_js_1.BaseResponseSchema; } });
10
6
  Object.defineProperty(exports, "StreamChunkSchema", { enumerable: true, get: function () { return common_js_1.StreamChunkSchema; } });
11
7
  Object.defineProperty(exports, "HealthResponseSchema", { enumerable: true, get: function () { return common_js_1.HealthResponseSchema; } });
12
- // Compression
13
8
  var compression_js_1 = require("./compression.js");
14
9
  Object.defineProperty(exports, "CompressRequestSchema", { enumerable: true, get: function () { return compression_js_1.CompressRequestSchema; } });
15
- Object.defineProperty(exports, "AgnosticBatchInputSchema", { enumerable: true, get: function () { return compression_js_1.AgnosticBatchInputSchema; } });
16
- Object.defineProperty(exports, "AgnosticBatchRequestSchema", { enumerable: true, get: function () { return compression_js_1.AgnosticBatchRequestSchema; } });
17
10
  Object.defineProperty(exports, "CompressBatchInputSchema", { enumerable: true, get: function () { return compression_js_1.CompressBatchInputSchema; } });
18
11
  Object.defineProperty(exports, "CompressBatchRequestSchema", { enumerable: true, get: function () { return compression_js_1.CompressBatchRequestSchema; } });
19
12
  Object.defineProperty(exports, "CompressResultSchema", { enumerable: true, get: function () { return compression_js_1.CompressResultSchema; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,SAAS;AACT,yCAOqB;AANnB,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,iHAAA,oBAAoB,OAAA;AAMtB,cAAc;AACd,mDAqB0B;AApBxB,uHAAA,qBAAqB,OAAA;AACrB,0HAAA,wBAAwB,OAAA;AACxB,4HAAA,0BAA0B,OAAA;AAC1B,0HAAA,wBAAwB,OAAA;AACxB,4HAAA,0BAA0B,OAAA;AAC1B,sHAAA,oBAAoB,OAAA;AACpB,+HAAA,6BAA6B,OAAA;AAC7B,2HAAA,yBAAyB,OAAA;AACzB,wHAAA,sBAAsB,OAAA;AACtB,6HAAA,2BAA2B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":";;;AAAA,yCAOqB;AANnB,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,iHAAA,oBAAoB,OAAA;AAMtB,mDAiB0B;AAhBxB,uHAAA,qBAAqB,OAAA;AACrB,0HAAA,wBAAwB,OAAA;AACxB,4HAAA,0BAA0B,OAAA;AAC1B,sHAAA,oBAAoB,OAAA;AACpB,+HAAA,6BAA6B,OAAA;AAC7B,2HAAA,yBAAyB,OAAA;AACzB,wHAAA,sBAAsB,OAAA;AACtB,6HAAA,2BAA2B,OAAA"}
@@ -2,5 +2,5 @@
2
2
  * SDK Version - Single source of truth
3
3
  * Update this when bumping the version
4
4
  */
5
- export declare const SDK_VERSION = "1.2.0";
5
+ export declare const SDK_VERSION = "1.5.0";
6
6
  //# sourceMappingURL=version.d.ts.map
@@ -5,5 +5,5 @@ exports.SDK_VERSION = void 0;
5
5
  * SDK Version - Single source of truth
6
6
  * Update this when bumping the version
7
7
  */
8
- exports.SDK_VERSION = '1.2.0';
8
+ exports.SDK_VERSION = '1.5.0';
9
9
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Provider-agnostic agent engine — TypeScript port of Wave 2A.
3
+ *
4
+ * ``CompresrEngine`` wraps LangChain.js's ``initChatModel`` + ``createAgent``
5
+ * with Compresr's ``compresrToolMiddleware`` and normalizes the final
6
+ * ``AIMessage`` into a provider-shape-free :class:`NormalizedResult` that
7
+ * facades will remap back into provider-native shapes.
8
+ *
9
+ * Mirrors Python ``compresr/agents/engine.py``.
10
+ */
11
+ import type { CompressionClient } from '../clients/compression.js';
12
+ import { type ErrorPolicy } from '../integrations/_shared/index.js';
13
+ import { type NormalizedResult } from './normalized.js';
14
+ /**
15
+ * Immutable bundle of compression knobs forwarded to the tool middleware.
16
+ *
17
+ * Mirrors Python ``compresr.integrations._shared.CompressionPolicy``.
18
+ */
19
+ export interface CompressionPolicyOptions {
20
+ targetCompressionRatio?: number;
21
+ compressionModelName?: string;
22
+ coarse?: boolean;
23
+ minTokens?: number;
24
+ onError?: ErrorPolicy;
25
+ allowTools?: Iterable<string>;
26
+ ignoreTools?: Iterable<string>;
27
+ }
28
+ /**
29
+ * Parse an LLM spec into ``{ provider, modelName }``.
30
+ *
31
+ * Accepted forms:
32
+ * - Bare provider: ``"anthropic"`` -> ``{ provider, modelName: undefined }``.
33
+ * The model must then be supplied at the call site.
34
+ * - LangChain-style colon: ``"anthropic:claude-opus-4-8"``.
35
+ * - Vercel-style slash: ``"anthropic/claude-opus-4-8"`` — normalized to the
36
+ * colon form to match LangChain.js's ``initChatModel`` convention.
37
+ */
38
+ export declare function parseLlmSpec(llm: string): {
39
+ provider: string;
40
+ modelName: string | undefined;
41
+ };
42
+ export interface CompresrEngineOptions {
43
+ compresrClient: CompressionClient;
44
+ llm: string;
45
+ llmApiKey?: string;
46
+ policy?: CompressionPolicyOptions;
47
+ }
48
+ export interface RunOptions {
49
+ messages: ReadonlyArray<unknown>;
50
+ tools?: ReadonlyArray<unknown>;
51
+ system?: string;
52
+ maxTokens?: number;
53
+ config?: Record<string, unknown>;
54
+ /**
55
+ * Per-call model name. If omitted, falls back to the engine's default
56
+ * (the model encoded in ``llm: 'provider:model'`` at construction).
57
+ * When neither is provided, ``run`` throws ``CompresrError("missing_model")``.
58
+ */
59
+ model?: string;
60
+ temperature?: number;
61
+ topP?: number;
62
+ topK?: number;
63
+ /** Gemini-native alias of ``maxTokens``. The engine aliases when needed. */
64
+ maxOutputTokens?: number;
65
+ stop?: string[];
66
+ stopSequences?: string[];
67
+ presencePenalty?: number;
68
+ frequencyPenalty?: number;
69
+ seed?: number;
70
+ logprobs?: boolean;
71
+ topLogprobs?: number;
72
+ }
73
+ interface LangChainBindings {
74
+ initChatModel: (modelStr: string, kwargs?: Record<string, unknown>) => unknown;
75
+ createAgent: (params: Record<string, unknown>) => unknown;
76
+ }
77
+ /**
78
+ * Test seam — lets vitest stub LangChain without monkey-patching
79
+ * ``node_modules``.
80
+ *
81
+ * @internal — not a stable public API; reserved for SDK tests only.
82
+ */
83
+ export declare function _setLangChainBindings(b: LangChainBindings | undefined): void;
84
+ export declare class CompresrEngine {
85
+ readonly provider: string;
86
+ /**
87
+ * Default model bound to the engine, parsed from the constructor's ``llm``
88
+ * spec. ``undefined`` when the spec is a bare provider — in that case the
89
+ * model must be supplied per-call on :meth:`run`.
90
+ */
91
+ readonly defaultModelName: string | undefined;
92
+ private readonly compresrClient;
93
+ private readonly llmApiKey?;
94
+ private readonly policy;
95
+ private readonly chatModels;
96
+ constructor(options: CompresrEngineOptions);
97
+ /**
98
+ * Back-compat alias for ``defaultModelName`` — returns the constructor
99
+ * default and may be ``undefined`` when the engine was built with a bare
100
+ * provider ``llm`` spec.
101
+ */
102
+ get modelName(): string | undefined;
103
+ private getChatModel;
104
+ private buildMiddleware;
105
+ private buildAgent;
106
+ /**
107
+ * Pull every option whose key lives in :data:`LLM_BIND_OPTIONS` and return a
108
+ * fresh object — the caller passes it to ``chat.bind(...)``. Non-LLM keys
109
+ * are silently ignored, which keeps the public ``RunOptions`` interface
110
+ * forgiving when callers mix in custom config.
111
+ *
112
+ * Gemini quirk: LangChain.js's ``ChatGoogleGenerativeAI`` uses
113
+ * ``maxOutputTokens`` instead of ``maxTokens``. We alias when the caller
114
+ * provided ``maxTokens`` without an explicit ``maxOutputTokens``.
115
+ */
116
+ private extractBindOptions;
117
+ run(options: RunOptions): Promise<NormalizedResult>;
118
+ private normalize;
119
+ }
120
+ export {};
121
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/agents/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,478 @@
1
+ import { CompresrError } from '../errors/index.js';
2
+ import { getLogger } from '../logger.js';
3
+ import { DEFAULT_MIN_TOKENS, DEFAULT_MODEL, DEFAULT_POLICY, DEFAULT_RATIO, } from '../integrations/_shared/index.js';
4
+ import { defaultCompresrStats, } from './normalized.js';
5
+ const KNOWN_PROVIDERS = new Set(['anthropic', 'openai', 'google_genai']);
6
+ /**
7
+ * Options that propagate to the underlying chat model via ``.bind(...)`` per call.
8
+ *
9
+ * Covers Anthropic / OpenAI / Gemini. LangChain.js normalizes most of these
10
+ * across providers; unsupported keys are silently ignored upstream. Binding is
11
+ * applied to a fresh wrapper per call so the cached chat model is never
12
+ * polluted across requests.
13
+ */
14
+ const LLM_BIND_OPTIONS = new Set([
15
+ 'temperature',
16
+ 'topP',
17
+ 'topK',
18
+ 'maxTokens',
19
+ 'maxOutputTokens',
20
+ 'stop',
21
+ 'stopSequences',
22
+ 'presencePenalty',
23
+ 'frequencyPenalty',
24
+ 'seed',
25
+ 'logprobs',
26
+ 'topLogprobs',
27
+ ]);
28
+ function resolvePolicy(input) {
29
+ const base = input ?? {};
30
+ const policy = {
31
+ targetCompressionRatio: base.targetCompressionRatio ?? DEFAULT_RATIO,
32
+ compressionModelName: base.compressionModelName ?? DEFAULT_MODEL,
33
+ minTokens: base.minTokens ?? DEFAULT_MIN_TOKENS,
34
+ onError: base.onError ?? DEFAULT_POLICY,
35
+ ...(base.coarse !== undefined ? { coarse: base.coarse } : {}),
36
+ ...(base.allowTools !== undefined
37
+ ? { allowTools: [...base.allowTools] }
38
+ : {}),
39
+ ...(base.ignoreTools !== undefined
40
+ ? { ignoreTools: [...base.ignoreTools] }
41
+ : {}),
42
+ };
43
+ return policy;
44
+ }
45
+ /**
46
+ * Parse an LLM spec into ``{ provider, modelName }``.
47
+ *
48
+ * Accepted forms:
49
+ * - Bare provider: ``"anthropic"`` -> ``{ provider, modelName: undefined }``.
50
+ * The model must then be supplied at the call site.
51
+ * - LangChain-style colon: ``"anthropic:claude-opus-4-8"``.
52
+ * - Vercel-style slash: ``"anthropic/claude-opus-4-8"`` — normalized to the
53
+ * colon form to match LangChain.js's ``initChatModel`` convention.
54
+ */
55
+ export function parseLlmSpec(llm) {
56
+ // Accept Vercel-style "anthropic/claude-..." by normalizing the first
57
+ // separator to a colon.
58
+ const normalized = llm.includes(':')
59
+ ? llm
60
+ : llm.includes('/')
61
+ ? llm.replace('/', ':')
62
+ : llm;
63
+ if (!normalized.includes(':')) {
64
+ // Bare provider — model deferred to the call site.
65
+ const provider = normalized.trim();
66
+ if (!provider) {
67
+ throw new CompresrError("llm must be a provider (e.g. 'anthropic') or 'provider:model' " +
68
+ "(e.g. 'anthropic:claude-opus-4-8')", 'invalid_llm_spec');
69
+ }
70
+ return { provider, modelName: undefined };
71
+ }
72
+ const idx = normalized.indexOf(':');
73
+ const provider = normalized.slice(0, idx).trim();
74
+ const modelName = normalized.slice(idx + 1).trim();
75
+ if (!provider || !modelName) {
76
+ throw new CompresrError("llm must be 'provider:model' (e.g. 'anthropic:claude-opus-4-8')", 'invalid_llm_spec');
77
+ }
78
+ return { provider, modelName };
79
+ }
80
+ let cachedLc;
81
+ async function importLangChain() {
82
+ if (cachedLc)
83
+ return cachedLc;
84
+ let mod;
85
+ try {
86
+ mod = (await import('langchain'));
87
+ }
88
+ catch (exc) {
89
+ throw new CompresrError('CompresrEngine requires langchain>=1.0. Install with: ' +
90
+ 'npm install langchain @langchain/core', 'missing_peer_dependency');
91
+ }
92
+ const initChatModel = mod.initChatModel;
93
+ const createAgent = mod.createAgent;
94
+ if (typeof initChatModel !== 'function' || typeof createAgent !== 'function') {
95
+ throw new CompresrError('langchain package is missing initChatModel / createAgent — ' +
96
+ 'upgrade to langchain>=1.0.', 'missing_peer_dependency');
97
+ }
98
+ cachedLc = { initChatModel, createAgent };
99
+ return cachedLc;
100
+ }
101
+ /**
102
+ * Test seam — lets vitest stub LangChain without monkey-patching
103
+ * ``node_modules``.
104
+ *
105
+ * @internal — not a stable public API; reserved for SDK tests only.
106
+ */
107
+ export function _setLangChainBindings(b) {
108
+ cachedLc = b;
109
+ }
110
+ // ---------------------------------------------------------------------------
111
+ // Normalization helpers
112
+ // ---------------------------------------------------------------------------
113
+ function contentText(msg) {
114
+ const content = msg?.content;
115
+ if (typeof content === 'string')
116
+ return content;
117
+ if (Array.isArray(content)) {
118
+ const parts = [];
119
+ for (const block of content) {
120
+ if (block && typeof block === 'object') {
121
+ const b = block;
122
+ if (b.type === 'text' && typeof b.text === 'string') {
123
+ parts.push(b.text);
124
+ }
125
+ else if (typeof b.text === 'string') {
126
+ parts.push(b.text);
127
+ }
128
+ }
129
+ else if (typeof block === 'string') {
130
+ parts.push(block);
131
+ }
132
+ }
133
+ return parts.join('');
134
+ }
135
+ return '';
136
+ }
137
+ function normalizeContentBlocks(msg) {
138
+ const m = msg;
139
+ if (Array.isArray(m?.content_blocks) && m.content_blocks.length > 0) {
140
+ return [...m.content_blocks];
141
+ }
142
+ if (Array.isArray(m?.content)) {
143
+ return [...m.content];
144
+ }
145
+ return [];
146
+ }
147
+ function normalizeToolUses(msg) {
148
+ const tcs = msg?.tool_calls;
149
+ if (!Array.isArray(tcs))
150
+ return [];
151
+ const out = [];
152
+ for (const raw of tcs) {
153
+ if (!raw || typeof raw !== 'object')
154
+ continue;
155
+ const tc = raw;
156
+ out.push({
157
+ ...(tc.id !== undefined ? { id: tc.id } : {}),
158
+ ...(tc.name !== undefined ? { name: tc.name } : {}),
159
+ ...(tc.args !== undefined ? { input: tc.args } : {}),
160
+ });
161
+ }
162
+ return out;
163
+ }
164
+ function extractCitations(msg) {
165
+ const out = [];
166
+ const blocks = normalizeContentBlocks(msg);
167
+ for (const block of blocks) {
168
+ if (!block || typeof block !== 'object')
169
+ continue;
170
+ const b = block;
171
+ // Anthropic-style citations on text blocks
172
+ for (const cit of b.citations ?? []) {
173
+ if (!cit || typeof cit !== 'object')
174
+ continue;
175
+ const c = cit;
176
+ if (c.type === undefined || c.type === 'web_search_result_location') {
177
+ if (!c.url)
178
+ continue;
179
+ out.push({
180
+ url: c.url,
181
+ ...(c.title !== undefined ? { title: c.title } : {}),
182
+ ...(c.cited_text !== undefined ? { citedText: c.cited_text } : {}),
183
+ providerMetadata: { ...c },
184
+ });
185
+ }
186
+ }
187
+ // OpenAI Responses: annotations with type="url_citation"
188
+ for (const ann of b.annotations ?? []) {
189
+ if (!ann || typeof ann !== 'object')
190
+ continue;
191
+ const a = ann;
192
+ if (a.type === 'url_citation') {
193
+ if (!a.url)
194
+ continue;
195
+ out.push({
196
+ url: a.url,
197
+ ...(a.title !== undefined ? { title: a.title } : {}),
198
+ ...(a.text !== undefined
199
+ ? { citedText: a.text }
200
+ : a.cited_text !== undefined
201
+ ? { citedText: a.cited_text }
202
+ : {}),
203
+ providerMetadata: { ...a },
204
+ });
205
+ }
206
+ }
207
+ }
208
+ // Gemini grounding metadata
209
+ const responseMetadata = msg?.response_metadata ?? {};
210
+ const grounding = responseMetadata['grounding_metadata'] ??
211
+ {};
212
+ const chunks = grounding['grounding_chunks'];
213
+ if (Array.isArray(chunks)) {
214
+ for (const chunk of chunks) {
215
+ if (!chunk || typeof chunk !== 'object')
216
+ continue;
217
+ const web = (chunk.web ?? {});
218
+ if (!web.uri)
219
+ continue;
220
+ out.push({
221
+ url: web.uri,
222
+ ...(web.title !== undefined ? { title: web.title } : {}),
223
+ providerMetadata: { ...chunk },
224
+ });
225
+ }
226
+ }
227
+ return out;
228
+ }
229
+ function normalizeStopReason(msg) {
230
+ const meta = msg
231
+ ?.response_metadata;
232
+ const stop = meta?.['stop_reason'] ?? meta?.['finish_reason'];
233
+ if (typeof stop === 'string' && stop)
234
+ return stop;
235
+ return 'end_turn';
236
+ }
237
+ function normalizeUsage(msg) {
238
+ const direct = msg
239
+ ?.usage_metadata;
240
+ if (direct && typeof direct === 'object') {
241
+ return coerceUsage(direct);
242
+ }
243
+ const meta = msg
244
+ ?.response_metadata;
245
+ const u = meta?.['usage'];
246
+ if (u && typeof u === 'object') {
247
+ return coerceUsage(u);
248
+ }
249
+ return {};
250
+ }
251
+ function coerceUsage(raw) {
252
+ const out = {};
253
+ for (const [k, v] of Object.entries(raw)) {
254
+ if (typeof v === 'number')
255
+ out[k] = v;
256
+ else if (typeof v === 'string' && !Number.isNaN(Number(v))) {
257
+ out[k] = Number(v);
258
+ }
259
+ }
260
+ return out;
261
+ }
262
+ function lastAiMessage(messages) {
263
+ for (let i = messages.length - 1; i >= 0; i--) {
264
+ const msg = messages[i];
265
+ const ctor = msg?.constructor?.name;
266
+ if (ctor === 'AIMessage')
267
+ return msg;
268
+ }
269
+ return messages.length > 0 ? messages[messages.length - 1] : null;
270
+ }
271
+ // ---------------------------------------------------------------------------
272
+ // CompresrEngine
273
+ // ---------------------------------------------------------------------------
274
+ export class CompresrEngine {
275
+ provider;
276
+ /**
277
+ * Default model bound to the engine, parsed from the constructor's ``llm``
278
+ * spec. ``undefined`` when the spec is a bare provider — in that case the
279
+ * model must be supplied per-call on :meth:`run`.
280
+ */
281
+ defaultModelName;
282
+ compresrClient;
283
+ llmApiKey;
284
+ policy;
285
+ chatModels = new Map();
286
+ constructor(options) {
287
+ const { provider, modelName } = parseLlmSpec(options.llm);
288
+ if (!KNOWN_PROVIDERS.has(provider)) {
289
+ // Warn-only — LangChain may know providers we don't.
290
+ getLogger().warn(`agents: unknown provider '${provider}'. ` +
291
+ `Supported: ${[...KNOWN_PROVIDERS].join(', ')}.`);
292
+ }
293
+ this.provider = provider;
294
+ this.defaultModelName = modelName;
295
+ this.compresrClient = options.compresrClient;
296
+ if (options.llmApiKey !== undefined) {
297
+ this.llmApiKey = options.llmApiKey;
298
+ }
299
+ this.policy = resolvePolicy(options.policy);
300
+ }
301
+ /**
302
+ * Back-compat alias for ``defaultModelName`` — returns the constructor
303
+ * default and may be ``undefined`` when the engine was built with a bare
304
+ * provider ``llm`` spec.
305
+ */
306
+ get modelName() {
307
+ return this.defaultModelName;
308
+ }
309
+ async getChatModel(modelName) {
310
+ const cached = this.chatModels.get(modelName);
311
+ if (cached !== undefined)
312
+ return cached;
313
+ const { initChatModel } = await importLangChain();
314
+ const kwargs = {};
315
+ if (this.llmApiKey !== undefined)
316
+ kwargs['apiKey'] = this.llmApiKey;
317
+ let chat;
318
+ if (this.provider === 'openai') {
319
+ try {
320
+ chat = initChatModel(`${this.provider}:${modelName}`, {
321
+ ...kwargs,
322
+ outputVersion: 'responses/v1',
323
+ });
324
+ this.chatModels.set(modelName, chat);
325
+ return chat;
326
+ }
327
+ catch {
328
+ // older @langchain/openai rejects unknown kwargs
329
+ }
330
+ }
331
+ chat = initChatModel(`${this.provider}:${modelName}`, kwargs);
332
+ this.chatModels.set(modelName, chat);
333
+ return chat;
334
+ }
335
+ async buildMiddleware() {
336
+ // Lazy-load the existing langchain middleware so importing the engine
337
+ // doesn't drag in @langchain/core at module load.
338
+ const { compresrToolMiddleware } = await import('../integrations/langchain/middleware.js');
339
+ const mwOpts = {
340
+ client: this.compresrClient,
341
+ targetCompressionRatio: this.policy.targetCompressionRatio,
342
+ compressionModel: this.policy.compressionModelName,
343
+ minTokens: this.policy.minTokens,
344
+ onError: this.policy.onError,
345
+ };
346
+ if (this.policy.coarse !== undefined)
347
+ mwOpts['coarse'] = this.policy.coarse;
348
+ if (this.policy.allowTools !== undefined) {
349
+ mwOpts['allowTools'] = this.policy.allowTools;
350
+ }
351
+ if (this.policy.ignoreTools !== undefined) {
352
+ mwOpts['ignoreTools'] = this.policy.ignoreTools;
353
+ }
354
+ return [
355
+ compresrToolMiddleware(mwOpts),
356
+ ];
357
+ }
358
+ async buildAgent(chat, tools, system) {
359
+ const { createAgent } = await importLangChain();
360
+ const middleware = await this.buildMiddleware();
361
+ const params = {
362
+ model: chat,
363
+ tools: [...tools],
364
+ middleware,
365
+ };
366
+ if (system !== undefined)
367
+ params['systemPrompt'] = system;
368
+ try {
369
+ return createAgent(params);
370
+ }
371
+ catch (exc) {
372
+ // Only retry without ``systemPrompt`` when the error clearly signals
373
+ // an unknown-keyword failure from an older LangChain. Otherwise
374
+ // re-throw so we don't mask unrelated bugs (auth, validation, etc.).
375
+ const message = exc instanceof Error ? exc.message : String(exc);
376
+ const isUnknownKwarg = /unexpected keyword|unknown (?:argument|kwarg|option)|not a known argument|systemPrompt/i.test(message);
377
+ if (!isUnknownKwarg || system === undefined) {
378
+ throw exc;
379
+ }
380
+ delete params['systemPrompt'];
381
+ return createAgent(params);
382
+ }
383
+ }
384
+ /**
385
+ * Pull every option whose key lives in :data:`LLM_BIND_OPTIONS` and return a
386
+ * fresh object — the caller passes it to ``chat.bind(...)``. Non-LLM keys
387
+ * are silently ignored, which keeps the public ``RunOptions`` interface
388
+ * forgiving when callers mix in custom config.
389
+ *
390
+ * Gemini quirk: LangChain.js's ``ChatGoogleGenerativeAI`` uses
391
+ * ``maxOutputTokens`` instead of ``maxTokens``. We alias when the caller
392
+ * provided ``maxTokens`` without an explicit ``maxOutputTokens``.
393
+ */
394
+ extractBindOptions(options) {
395
+ const out = {};
396
+ for (const [key, value] of Object.entries(options)) {
397
+ if (value === undefined)
398
+ continue;
399
+ if (LLM_BIND_OPTIONS.has(key)) {
400
+ out[key] = value;
401
+ }
402
+ }
403
+ if (this.provider === 'google_genai' &&
404
+ out['maxTokens'] !== undefined &&
405
+ out['maxOutputTokens'] === undefined) {
406
+ const { maxTokens, ...rest } = out;
407
+ return { ...rest, maxOutputTokens: maxTokens };
408
+ }
409
+ return out;
410
+ }
411
+ async run(options) {
412
+ const effectiveModel = options.model ?? this.defaultModelName;
413
+ if (effectiveModel === undefined) {
414
+ throw new CompresrError("model is required — set it on the client " +
415
+ "(llm: 'anthropic:claude-...') or pass it to messages.create({ model: '...' }).", 'missing_model');
416
+ }
417
+ const tools = options.tools ?? [];
418
+ const cachedChat = await this.getChatModel(effectiveModel);
419
+ const bindOptions = this.extractBindOptions(options);
420
+ // Bind per call so the cached chat instance stays unpolluted across
421
+ // concurrent requests with different temperature / maxTokens / etc.
422
+ let chat = cachedChat;
423
+ if (Object.keys(bindOptions).length > 0) {
424
+ const bindable = cachedChat;
425
+ if (typeof bindable.bind === 'function') {
426
+ chat = bindable.bind(bindOptions);
427
+ }
428
+ }
429
+ const agent = (await this.buildAgent(chat, tools, options.system));
430
+ let result;
431
+ try {
432
+ result = await Promise.resolve(agent.invoke({ messages: [...options.messages] }, options.config ?? {}));
433
+ }
434
+ catch (exc) {
435
+ // Re-wrap LangChain failures so callers always see a CompresrError
436
+ // (parity with Python M1). The original error is preserved via
437
+ // ``cause`` for debugging.
438
+ if (exc instanceof CompresrError)
439
+ throw exc;
440
+ const message = exc instanceof Error ? exc.message : String(exc);
441
+ const wrapped = new CompresrError(`Agent execution failed: ${message}`, 'agent_execution_failed');
442
+ // Native ``Error.cause`` is part of ES2022 — preserve the original
443
+ // for debugging without losing CompresrError typing.
444
+ wrapped.cause = exc;
445
+ throw wrapped;
446
+ }
447
+ return this.normalize(result);
448
+ }
449
+ normalize(agentResult) {
450
+ const messages = agentResult && typeof agentResult === 'object'
451
+ ? (agentResult.messages ?? [])
452
+ : [];
453
+ const msg = lastAiMessage(messages);
454
+ if (msg == null) {
455
+ return {
456
+ text: '',
457
+ contentBlocks: [],
458
+ toolUses: [],
459
+ citations: [],
460
+ stopReason: 'end_turn',
461
+ usage: {},
462
+ compresrStats: defaultCompresrStats(),
463
+ raw: null,
464
+ };
465
+ }
466
+ return {
467
+ text: contentText(msg),
468
+ contentBlocks: normalizeContentBlocks(msg),
469
+ toolUses: normalizeToolUses(msg),
470
+ citations: extractCitations(msg),
471
+ stopReason: normalizeStopReason(msg),
472
+ usage: normalizeUsage(msg),
473
+ compresrStats: defaultCompresrStats(),
474
+ raw: msg,
475
+ };
476
+ }
477
+ }
478
+ //# sourceMappingURL=engine.js.map