@dexto/core 1.1.4 → 1.1.6

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 (597) hide show
  1. package/README.md +125 -0
  2. package/dist/agent/DextoAgent.cjs +793 -0
  3. package/dist/agent/DextoAgent.d.cts +473 -0
  4. package/dist/agent/DextoAgent.d.ts +473 -0
  5. package/dist/agent/DextoAgent.js +774 -0
  6. package/dist/agent/agentCard.cjs +44 -0
  7. package/dist/agent/agentCard.d.cts +20 -0
  8. package/dist/agent/agentCard.d.ts +20 -0
  9. package/dist/agent/agentCard.js +20 -0
  10. package/dist/agent/error-codes.cjs +35 -0
  11. package/dist/agent/error-codes.d.cts +14 -0
  12. package/dist/agent/error-codes.d.ts +14 -0
  13. package/dist/agent/error-codes.js +11 -0
  14. package/dist/agent/errors.cjs +84 -0
  15. package/dist/agent/errors.d.cts +40 -0
  16. package/dist/agent/errors.d.ts +40 -0
  17. package/dist/agent/errors.js +60 -0
  18. package/dist/agent/index.cjs +44 -0
  19. package/dist/agent/index.d.cts +60 -0
  20. package/dist/agent/index.d.ts +60 -0
  21. package/dist/agent/index.js +13 -0
  22. package/dist/agent/registry/error-codes.cjs +42 -0
  23. package/dist/agent/registry/error-codes.d.cts +20 -0
  24. package/dist/agent/registry/error-codes.d.ts +20 -0
  25. package/dist/agent/registry/error-codes.js +18 -0
  26. package/dist/agent/registry/errors.cjs +158 -0
  27. package/dist/agent/registry/errors.d.cts +67 -0
  28. package/dist/agent/registry/errors.d.ts +67 -0
  29. package/dist/{chunk-PI6XFMEW.js → agent/registry/errors.js} +43 -50
  30. package/dist/agent/registry/registry.cjs +291 -0
  31. package/dist/agent/registry/registry.d.cts +67 -0
  32. package/dist/agent/registry/registry.d.ts +67 -0
  33. package/dist/agent/registry/registry.js +256 -0
  34. package/dist/agent/registry/types.cjs +41 -0
  35. package/dist/agent/registry/types.d.cts +100 -0
  36. package/dist/agent/registry/types.d.ts +100 -0
  37. package/dist/agent/registry/types.js +16 -0
  38. package/dist/agent/schemas.cjs +113 -0
  39. package/dist/agent/schemas.d.cts +1502 -0
  40. package/dist/agent/schemas.d.ts +1502 -0
  41. package/dist/agent/schemas.js +88 -0
  42. package/dist/agent/state-manager.cjs +214 -0
  43. package/dist/agent/state-manager.d.cts +97 -0
  44. package/dist/agent/state-manager.d.ts +97 -0
  45. package/dist/agent/state-manager.js +190 -0
  46. package/dist/config/agent-resolver.cjs +153 -0
  47. package/dist/config/agent-resolver.d.cts +15 -0
  48. package/dist/config/agent-resolver.d.ts +15 -0
  49. package/dist/config/agent-resolver.js +122 -0
  50. package/dist/config/error-codes.cjs +39 -0
  51. package/dist/config/error-codes.d.cts +17 -0
  52. package/dist/config/error-codes.d.ts +17 -0
  53. package/dist/config/error-codes.js +15 -0
  54. package/dist/config/errors.cjs +126 -0
  55. package/dist/config/errors.d.cts +49 -0
  56. package/dist/config/errors.d.ts +49 -0
  57. package/dist/config/errors.js +102 -0
  58. package/dist/config/index.cjs +26 -0
  59. package/dist/config/index.d.cts +7 -0
  60. package/dist/config/index.d.ts +7 -0
  61. package/dist/config/index.js +3 -0
  62. package/dist/config/loader.cjs +119 -0
  63. package/dist/config/loader.d.cts +19 -0
  64. package/dist/config/loader.d.ts +19 -0
  65. package/dist/config/loader.js +85 -0
  66. package/dist/config/writer.cjs +182 -0
  67. package/dist/config/writer.d.cts +38 -0
  68. package/dist/config/writer.d.ts +38 -0
  69. package/dist/config/writer.js +146 -0
  70. package/dist/context/compression/middle-removal.cjs +95 -0
  71. package/dist/context/compression/middle-removal.d.cts +48 -0
  72. package/dist/context/compression/middle-removal.d.ts +48 -0
  73. package/dist/context/compression/middle-removal.js +71 -0
  74. package/dist/context/compression/oldest-removal.cjs +70 -0
  75. package/dist/context/compression/oldest-removal.d.cts +43 -0
  76. package/dist/context/compression/oldest-removal.d.ts +43 -0
  77. package/dist/context/compression/oldest-removal.js +46 -0
  78. package/dist/context/compression/types.cjs +16 -0
  79. package/dist/context/compression/types.d.cts +21 -0
  80. package/dist/context/compression/types.d.ts +21 -0
  81. package/dist/context/compression/types.js +0 -0
  82. package/dist/context/error-codes.cjs +41 -0
  83. package/dist/context/error-codes.d.cts +19 -0
  84. package/dist/context/error-codes.d.ts +19 -0
  85. package/dist/context/error-codes.js +17 -0
  86. package/dist/context/errors.cjs +146 -0
  87. package/dist/context/errors.d.cts +36 -0
  88. package/dist/context/errors.d.ts +36 -0
  89. package/dist/context/errors.js +122 -0
  90. package/dist/context/index.cjs +24 -0
  91. package/dist/context/index.d.cts +19 -0
  92. package/dist/context/index.d.ts +19 -0
  93. package/dist/context/index.js +2 -0
  94. package/dist/context/manager.cjs +516 -0
  95. package/dist/context/manager.d.cts +254 -0
  96. package/dist/context/manager.d.ts +254 -0
  97. package/dist/context/manager.js +492 -0
  98. package/dist/context/types.cjs +16 -0
  99. package/dist/context/types.d.cts +113 -0
  100. package/dist/context/types.d.ts +113 -0
  101. package/dist/context/types.js +0 -0
  102. package/dist/context/utils.cjs +406 -0
  103. package/dist/context/utils.d.cts +79 -0
  104. package/dist/context/utils.d.ts +79 -0
  105. package/dist/context/utils.js +374 -0
  106. package/dist/errors/DextoBaseError.cjs +36 -0
  107. package/dist/errors/DextoBaseError.d.cts +15 -0
  108. package/dist/errors/DextoBaseError.d.ts +15 -0
  109. package/dist/errors/DextoBaseError.js +12 -0
  110. package/dist/errors/DextoRuntimeError.cjs +50 -0
  111. package/dist/errors/DextoRuntimeError.d.cts +37 -0
  112. package/dist/errors/DextoRuntimeError.d.ts +37 -0
  113. package/dist/errors/DextoRuntimeError.js +26 -0
  114. package/dist/errors/DextoValidationError.cjs +118 -0
  115. package/dist/errors/DextoValidationError.d.cts +65 -0
  116. package/dist/errors/DextoValidationError.d.ts +65 -0
  117. package/dist/{chunk-XFQLRBHE.js → errors/DextoValidationError.js} +4 -32
  118. package/dist/errors/index.cjs +42 -0
  119. package/dist/errors/index.d.cts +18 -0
  120. package/dist/errors/index.d.ts +18 -0
  121. package/dist/errors/index.js +13 -0
  122. package/dist/errors/result-bridge.cjs +38 -0
  123. package/dist/errors/result-bridge.d.cts +39 -0
  124. package/dist/errors/result-bridge.d.ts +39 -0
  125. package/dist/errors/result-bridge.js +14 -0
  126. package/dist/errors/types.cjs +54 -0
  127. package/dist/errors/types.d.cts +62 -0
  128. package/dist/errors/types.d.ts +62 -0
  129. package/dist/errors/types.js +29 -0
  130. package/dist/events/index.cjs +169 -0
  131. package/dist/events/index.d.cts +272 -0
  132. package/dist/events/index.d.ts +272 -0
  133. package/dist/events/index.js +136 -0
  134. package/dist/index.browser.cjs +9 -220
  135. package/dist/index.browser.d.cts +53 -379
  136. package/dist/index.browser.d.ts +53 -379
  137. package/dist/index.browser.js +4 -210
  138. package/dist/index.cjs +31 -15266
  139. package/dist/index.d.cts +89 -6842
  140. package/dist/index.d.ts +89 -6842
  141. package/dist/index.js +14 -9914
  142. package/dist/llm/error-codes.cjs +48 -0
  143. package/dist/llm/error-codes.d.cts +26 -0
  144. package/dist/llm/error-codes.d.ts +26 -0
  145. package/dist/llm/error-codes.js +24 -0
  146. package/dist/llm/errors.cjs +108 -0
  147. package/dist/llm/errors.d.cts +58 -0
  148. package/dist/llm/errors.d.ts +58 -0
  149. package/dist/llm/errors.js +84 -0
  150. package/dist/llm/formatters/anthropic.cjs +246 -0
  151. package/dist/llm/formatters/anthropic.d.cts +45 -0
  152. package/dist/llm/formatters/anthropic.d.ts +45 -0
  153. package/dist/llm/formatters/anthropic.js +227 -0
  154. package/dist/llm/formatters/factory.cjs +51 -0
  155. package/dist/llm/formatters/factory.d.cts +12 -0
  156. package/dist/llm/formatters/factory.d.ts +12 -0
  157. package/dist/llm/formatters/factory.js +27 -0
  158. package/dist/llm/formatters/openai.cjs +167 -0
  159. package/dist/llm/formatters/openai.d.cts +38 -0
  160. package/dist/llm/formatters/openai.d.ts +38 -0
  161. package/dist/llm/formatters/openai.js +147 -0
  162. package/dist/llm/formatters/types.cjs +16 -0
  163. package/dist/llm/formatters/types.d.cts +43 -0
  164. package/dist/llm/formatters/types.d.ts +43 -0
  165. package/dist/llm/formatters/types.js +0 -0
  166. package/dist/llm/formatters/vercel.cjs +411 -0
  167. package/dist/llm/formatters/vercel.d.cts +48 -0
  168. package/dist/llm/formatters/vercel.d.ts +48 -0
  169. package/dist/llm/formatters/vercel.js +387 -0
  170. package/dist/llm/index.cjs +34 -0
  171. package/dist/llm/index.d.cts +39 -0
  172. package/dist/llm/index.d.ts +39 -0
  173. package/dist/llm/index.js +7 -0
  174. package/dist/llm/registry.cjs +881 -0
  175. package/dist/llm/registry.d.cts +176 -0
  176. package/dist/llm/registry.d.ts +176 -0
  177. package/dist/{chunk-J6AXCN3H.js → llm/registry.js} +25 -455
  178. package/dist/llm/resolver.cjs +154 -0
  179. package/dist/llm/resolver.d.cts +34 -0
  180. package/dist/llm/resolver.d.ts +34 -0
  181. package/dist/llm/resolver.js +136 -0
  182. package/dist/llm/schemas.cjs +188 -0
  183. package/dist/llm/schemas.d.cts +111 -0
  184. package/dist/llm/schemas.d.ts +111 -0
  185. package/dist/llm/schemas.js +172 -0
  186. package/dist/llm/services/anthropic.cjs +398 -0
  187. package/dist/llm/services/anthropic.d.cts +65 -0
  188. package/dist/llm/services/anthropic.d.ts +65 -0
  189. package/dist/llm/services/anthropic.js +374 -0
  190. package/dist/llm/services/factory.cjs +164 -0
  191. package/dist/llm/services/factory.d.cts +39 -0
  192. package/dist/llm/services/factory.d.ts +39 -0
  193. package/dist/llm/services/factory.js +130 -0
  194. package/dist/llm/services/index.cjs +22 -0
  195. package/dist/llm/services/index.d.cts +21 -0
  196. package/dist/llm/services/index.d.ts +21 -0
  197. package/dist/llm/services/index.js +1 -0
  198. package/dist/llm/services/openai.cjs +470 -0
  199. package/dist/llm/services/openai.d.cts +65 -0
  200. package/dist/llm/services/openai.d.ts +65 -0
  201. package/dist/llm/services/openai.js +446 -0
  202. package/dist/llm/services/test-utils.integration.cjs +169 -0
  203. package/dist/llm/services/test-utils.integration.d.cts +83 -0
  204. package/dist/llm/services/test-utils.integration.d.ts +83 -0
  205. package/dist/llm/services/test-utils.integration.js +142 -0
  206. package/dist/llm/services/types.cjs +16 -0
  207. package/dist/llm/services/types.d.cts +56 -0
  208. package/dist/llm/services/types.d.ts +56 -0
  209. package/dist/llm/services/types.js +0 -0
  210. package/dist/llm/services/vercel.cjs +525 -0
  211. package/dist/llm/services/vercel.d.cts +72 -0
  212. package/dist/llm/services/vercel.d.ts +72 -0
  213. package/dist/llm/services/vercel.js +506 -0
  214. package/dist/llm/tokenizer/anthropic.cjs +43 -0
  215. package/dist/llm/tokenizer/anthropic.d.cts +21 -0
  216. package/dist/llm/tokenizer/anthropic.d.ts +21 -0
  217. package/dist/llm/tokenizer/anthropic.js +19 -0
  218. package/dist/llm/tokenizer/default.cjs +41 -0
  219. package/dist/llm/tokenizer/default.d.cts +16 -0
  220. package/dist/llm/tokenizer/default.d.ts +16 -0
  221. package/dist/llm/tokenizer/default.js +17 -0
  222. package/dist/llm/tokenizer/factory.cjs +44 -0
  223. package/dist/llm/tokenizer/factory.d.cts +12 -0
  224. package/dist/llm/tokenizer/factory.d.ts +12 -0
  225. package/dist/llm/tokenizer/factory.js +20 -0
  226. package/dist/llm/tokenizer/google.cjs +52 -0
  227. package/dist/llm/tokenizer/google.d.cts +31 -0
  228. package/dist/llm/tokenizer/google.d.ts +31 -0
  229. package/dist/llm/tokenizer/google.js +28 -0
  230. package/dist/llm/tokenizer/openai.cjs +108 -0
  231. package/dist/llm/tokenizer/openai.d.cts +32 -0
  232. package/dist/llm/tokenizer/openai.d.ts +32 -0
  233. package/dist/llm/tokenizer/openai.js +83 -0
  234. package/dist/llm/tokenizer/types.cjs +33 -0
  235. package/dist/llm/tokenizer/types.d.cts +19 -0
  236. package/dist/llm/tokenizer/types.d.ts +19 -0
  237. package/dist/llm/tokenizer/types.js +9 -0
  238. package/dist/llm/types.cjs +42 -0
  239. package/dist/llm/types.d.cts +29 -0
  240. package/dist/llm/types.d.ts +29 -0
  241. package/dist/llm/types.js +16 -0
  242. package/dist/llm/validation.cjs +162 -0
  243. package/dist/llm/validation.d.cts +60 -0
  244. package/dist/llm/validation.d.ts +60 -0
  245. package/dist/llm/validation.js +138 -0
  246. package/dist/logger/browser.cjs +86 -0
  247. package/dist/logger/browser.d.cts +29 -0
  248. package/dist/logger/browser.d.ts +29 -0
  249. package/dist/logger/browser.js +61 -0
  250. package/dist/logger/index.cjs +22 -0
  251. package/dist/logger/index.d.cts +1 -0
  252. package/dist/logger/index.d.ts +1 -0
  253. package/dist/logger/index.js +1 -0
  254. package/dist/logger/logger.cjs +362 -0
  255. package/dist/logger/logger.d.cts +52 -0
  256. package/dist/logger/logger.d.ts +52 -0
  257. package/dist/logger/logger.js +327 -0
  258. package/dist/mcp/error-codes.cjs +38 -0
  259. package/dist/mcp/error-codes.d.cts +16 -0
  260. package/dist/mcp/error-codes.d.ts +16 -0
  261. package/dist/mcp/error-codes.js +14 -0
  262. package/dist/mcp/errors.cjs +131 -0
  263. package/dist/mcp/errors.d.cts +72 -0
  264. package/dist/mcp/errors.d.ts +72 -0
  265. package/dist/mcp/errors.js +107 -0
  266. package/dist/mcp/index.cjs +34 -0
  267. package/dist/mcp/index.d.cts +26 -0
  268. package/dist/mcp/index.d.ts +26 -0
  269. package/dist/mcp/index.js +7 -0
  270. package/dist/mcp/manager.cjs +473 -0
  271. package/dist/mcp/manager.d.cts +163 -0
  272. package/dist/mcp/manager.d.ts +163 -0
  273. package/dist/mcp/manager.js +449 -0
  274. package/dist/mcp/mcp-client.cjs +420 -0
  275. package/dist/mcp/mcp-client.d.cts +108 -0
  276. package/dist/mcp/mcp-client.d.ts +108 -0
  277. package/dist/mcp/mcp-client.js +396 -0
  278. package/dist/mcp/resolver.cjs +78 -0
  279. package/dist/mcp/resolver.d.cts +22 -0
  280. package/dist/mcp/resolver.d.ts +22 -0
  281. package/dist/mcp/resolver.js +56 -0
  282. package/dist/mcp/schemas.cjs +82 -0
  283. package/dist/mcp/schemas.d.cts +266 -0
  284. package/dist/mcp/schemas.d.ts +266 -0
  285. package/dist/mcp/schemas.js +54 -0
  286. package/dist/mcp/types.cjs +16 -0
  287. package/dist/mcp/types.d.cts +21 -0
  288. package/dist/mcp/types.d.ts +21 -0
  289. package/dist/mcp/types.js +0 -0
  290. package/dist/preferences/constants.cjs +28 -0
  291. package/dist/preferences/constants.d.cts +3 -0
  292. package/dist/preferences/constants.d.ts +3 -0
  293. package/dist/preferences/constants.js +4 -0
  294. package/dist/preferences/error-codes.cjs +35 -0
  295. package/dist/preferences/error-codes.d.cts +9 -0
  296. package/dist/preferences/error-codes.d.ts +9 -0
  297. package/dist/preferences/error-codes.js +11 -0
  298. package/dist/preferences/errors.cjs +75 -0
  299. package/dist/preferences/errors.d.cts +33 -0
  300. package/dist/preferences/errors.d.ts +33 -0
  301. package/dist/preferences/errors.js +50 -0
  302. package/dist/preferences/index.cjs +55 -0
  303. package/dist/preferences/index.d.cts +21 -0
  304. package/dist/preferences/index.d.ts +21 -0
  305. package/dist/preferences/index.js +31 -0
  306. package/dist/preferences/loader.cjs +136 -0
  307. package/dist/preferences/loader.d.cts +45 -0
  308. package/dist/preferences/loader.d.ts +45 -0
  309. package/dist/preferences/loader.js +107 -0
  310. package/dist/preferences/schemas.cjs +74 -0
  311. package/dist/preferences/schemas.d.cts +104 -0
  312. package/dist/preferences/schemas.d.ts +104 -0
  313. package/dist/preferences/schemas.js +47 -0
  314. package/dist/search/index.cjs +28 -0
  315. package/dist/search/index.d.cts +5 -0
  316. package/dist/search/index.d.ts +5 -0
  317. package/dist/search/index.js +4 -0
  318. package/dist/search/search-service.cjs +245 -0
  319. package/dist/search/search-service.d.cts +47 -0
  320. package/dist/search/search-service.d.ts +47 -0
  321. package/dist/search/search-service.js +221 -0
  322. package/dist/search/types.cjs +16 -0
  323. package/dist/search/types.d.cts +78 -0
  324. package/dist/search/types.d.ts +78 -0
  325. package/dist/search/types.js +0 -0
  326. package/dist/session/chat-session.cjs +354 -0
  327. package/dist/session/chat-session.d.cts +284 -0
  328. package/dist/session/chat-session.d.ts +284 -0
  329. package/dist/session/chat-session.js +333 -0
  330. package/dist/session/error-codes.cjs +35 -0
  331. package/dist/session/error-codes.d.cts +13 -0
  332. package/dist/session/error-codes.d.ts +13 -0
  333. package/dist/session/error-codes.js +11 -0
  334. package/dist/session/errors.cjs +93 -0
  335. package/dist/session/errors.d.cts +58 -0
  336. package/dist/session/errors.d.ts +58 -0
  337. package/dist/session/errors.js +69 -0
  338. package/dist/session/history/database.cjs +95 -0
  339. package/dist/session/history/database.d.cts +28 -0
  340. package/dist/session/history/database.d.ts +28 -0
  341. package/dist/session/history/database.js +71 -0
  342. package/dist/session/history/factory.cjs +31 -0
  343. package/dist/session/history/factory.d.cts +11 -0
  344. package/dist/session/history/factory.d.ts +11 -0
  345. package/dist/session/history/factory.js +7 -0
  346. package/dist/session/history/types.cjs +16 -0
  347. package/dist/session/history/types.d.cts +17 -0
  348. package/dist/session/history/types.d.ts +17 -0
  349. package/dist/session/history/types.js +0 -0
  350. package/dist/session/index.cjs +37 -0
  351. package/dist/session/index.d.cts +53 -0
  352. package/dist/session/index.d.ts +53 -0
  353. package/dist/session/index.js +10 -0
  354. package/dist/session/schemas.cjs +32 -0
  355. package/dist/session/schemas.d.cts +16 -0
  356. package/dist/session/schemas.d.ts +16 -0
  357. package/dist/session/schemas.js +8 -0
  358. package/dist/session/session-manager.cjs +481 -0
  359. package/dist/session/session-manager.d.cts +219 -0
  360. package/dist/session/session-manager.d.ts +219 -0
  361. package/dist/session/session-manager.js +457 -0
  362. package/dist/storage/backend/cache-backend.cjs +16 -0
  363. package/dist/storage/backend/cache-backend.d.cts +15 -0
  364. package/dist/storage/backend/cache-backend.d.ts +15 -0
  365. package/dist/storage/backend/cache-backend.js +0 -0
  366. package/dist/storage/backend/database-backend.cjs +16 -0
  367. package/dist/storage/backend/database-backend.d.cts +19 -0
  368. package/dist/storage/backend/database-backend.d.ts +19 -0
  369. package/dist/storage/backend/database-backend.js +0 -0
  370. package/dist/storage/backend/memory-backend.cjs +140 -0
  371. package/dist/storage/backend/memory-backend.d.cts +34 -0
  372. package/dist/storage/backend/memory-backend.d.ts +34 -0
  373. package/dist/storage/backend/memory-backend.js +116 -0
  374. package/dist/storage/backend/postgres-backend.cjs +231 -0
  375. package/dist/storage/backend/postgres-backend.d.cts +37 -0
  376. package/dist/storage/backend/postgres-backend.d.ts +37 -0
  377. package/dist/{postgres-backend-WMWS7RAT.js → storage/backend/postgres-backend.js} +3 -12
  378. package/dist/storage/backend/redis-backend.cjs +184 -0
  379. package/dist/storage/backend/redis-backend.d.cts +36 -0
  380. package/dist/storage/backend/redis-backend.d.ts +36 -0
  381. package/dist/{redis-backend-BNLN3XHX.js → storage/backend/redis-backend.js} +3 -12
  382. package/dist/storage/backend/sqlite-backend.cjs +271 -0
  383. package/dist/storage/backend/sqlite-backend.d.cts +35 -0
  384. package/dist/storage/backend/sqlite-backend.d.ts +35 -0
  385. package/dist/{sqlite-backend-AR6XNK2Q.js → storage/backend/sqlite-backend.js} +6 -17
  386. package/dist/storage/backend/types.cjs +16 -0
  387. package/dist/storage/backend/types.d.cts +14 -0
  388. package/dist/storage/backend/types.d.ts +14 -0
  389. package/dist/storage/backend/types.js +0 -0
  390. package/dist/storage/error-codes.cjs +36 -0
  391. package/dist/storage/error-codes.d.cts +14 -0
  392. package/dist/storage/error-codes.d.ts +14 -0
  393. package/dist/storage/error-codes.js +12 -0
  394. package/dist/storage/errors.cjs +104 -0
  395. package/dist/storage/errors.d.cts +63 -0
  396. package/dist/storage/errors.d.ts +63 -0
  397. package/dist/{chunk-F2QFAECT.js → storage/errors.js} +23 -30
  398. package/dist/storage/index.cjs +33 -0
  399. package/dist/storage/index.d.cts +7 -0
  400. package/dist/storage/index.d.ts +7 -0
  401. package/dist/storage/index.js +7 -0
  402. package/dist/storage/schemas.cjs +113 -0
  403. package/dist/storage/schemas.d.cts +856 -0
  404. package/dist/storage/schemas.d.ts +856 -0
  405. package/dist/storage/schemas.js +89 -0
  406. package/dist/storage/storage-manager.cjs +208 -0
  407. package/dist/storage/storage-manager.d.cts +52 -0
  408. package/dist/storage/storage-manager.d.ts +52 -0
  409. package/dist/storage/storage-manager.js +173 -0
  410. package/dist/storage/types.cjs +16 -0
  411. package/dist/storage/types.d.cts +5 -0
  412. package/dist/storage/types.d.ts +5 -0
  413. package/dist/storage/types.js +0 -0
  414. package/dist/systemPrompt/contributors.cjs +146 -0
  415. package/dist/systemPrompt/contributors.d.cts +44 -0
  416. package/dist/systemPrompt/contributors.d.ts +44 -0
  417. package/dist/systemPrompt/contributors.js +120 -0
  418. package/dist/systemPrompt/error-codes.cjs +35 -0
  419. package/dist/systemPrompt/error-codes.d.cts +13 -0
  420. package/dist/systemPrompt/error-codes.d.ts +13 -0
  421. package/dist/systemPrompt/error-codes.js +11 -0
  422. package/dist/systemPrompt/errors.cjs +93 -0
  423. package/dist/systemPrompt/errors.d.cts +55 -0
  424. package/dist/systemPrompt/errors.d.ts +55 -0
  425. package/dist/systemPrompt/errors.js +69 -0
  426. package/dist/systemPrompt/in-built-prompts.cjs +68 -0
  427. package/dist/systemPrompt/in-built-prompts.d.cts +28 -0
  428. package/dist/systemPrompt/in-built-prompts.d.ts +28 -0
  429. package/dist/systemPrompt/in-built-prompts.js +42 -0
  430. package/dist/systemPrompt/index.cjs +30 -0
  431. package/dist/systemPrompt/index.d.cts +14 -0
  432. package/dist/systemPrompt/index.d.ts +14 -0
  433. package/dist/systemPrompt/index.js +5 -0
  434. package/dist/systemPrompt/manager.cjs +93 -0
  435. package/dist/systemPrompt/manager.d.cts +31 -0
  436. package/dist/systemPrompt/manager.d.ts +31 -0
  437. package/dist/systemPrompt/manager.js +69 -0
  438. package/dist/systemPrompt/registry.cjs +51 -0
  439. package/dist/systemPrompt/registry.d.cts +20 -0
  440. package/dist/systemPrompt/registry.d.ts +20 -0
  441. package/dist/systemPrompt/registry.js +15 -0
  442. package/dist/systemPrompt/schemas.cjs +107 -0
  443. package/dist/systemPrompt/schemas.d.cts +401 -0
  444. package/dist/systemPrompt/schemas.d.ts +401 -0
  445. package/dist/systemPrompt/schemas.js +81 -0
  446. package/dist/systemPrompt/types.cjs +16 -0
  447. package/dist/systemPrompt/types.d.cts +19 -0
  448. package/dist/systemPrompt/types.d.ts +19 -0
  449. package/dist/systemPrompt/types.js +0 -0
  450. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +44 -0
  451. package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +19 -0
  452. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +19 -0
  453. package/dist/tools/confirmation/allowed-tools-provider/factory.js +20 -0
  454. package/dist/tools/confirmation/allowed-tools-provider/in-memory.cjs +62 -0
  455. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +17 -0
  456. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +17 -0
  457. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +38 -0
  458. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +68 -0
  459. package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +26 -0
  460. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +26 -0
  461. package/dist/tools/confirmation/allowed-tools-provider/storage.js +44 -0
  462. package/dist/tools/confirmation/allowed-tools-provider/types.cjs +16 -0
  463. package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +35 -0
  464. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +35 -0
  465. package/dist/tools/confirmation/allowed-tools-provider/types.js +0 -0
  466. package/dist/tools/confirmation/event-based-confirmation-provider.cjs +158 -0
  467. package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +41 -0
  468. package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +41 -0
  469. package/dist/tools/confirmation/event-based-confirmation-provider.js +134 -0
  470. package/dist/tools/confirmation/factory.cjs +52 -0
  471. package/dist/tools/confirmation/factory.d.cts +37 -0
  472. package/dist/tools/confirmation/factory.d.ts +37 -0
  473. package/dist/tools/confirmation/factory.js +28 -0
  474. package/dist/tools/confirmation/noop-confirmation-provider.cjs +49 -0
  475. package/dist/tools/confirmation/noop-confirmation-provider.d.cts +22 -0
  476. package/dist/tools/confirmation/noop-confirmation-provider.d.ts +22 -0
  477. package/dist/tools/confirmation/noop-confirmation-provider.js +25 -0
  478. package/dist/tools/confirmation/types.cjs +16 -0
  479. package/dist/tools/confirmation/types.d.cts +46 -0
  480. package/dist/tools/confirmation/types.d.ts +46 -0
  481. package/dist/tools/confirmation/types.js +0 -0
  482. package/dist/tools/error-codes.cjs +40 -0
  483. package/dist/tools/error-codes.d.cts +18 -0
  484. package/dist/tools/error-codes.d.ts +18 -0
  485. package/dist/tools/error-codes.js +16 -0
  486. package/dist/tools/errors.cjs +164 -0
  487. package/dist/tools/errors.d.cts +97 -0
  488. package/dist/tools/errors.d.ts +97 -0
  489. package/dist/tools/errors.js +140 -0
  490. package/dist/tools/index.cjs +37 -0
  491. package/dist/tools/index.d.cts +19 -0
  492. package/dist/tools/index.d.ts +19 -0
  493. package/dist/tools/index.js +8 -0
  494. package/dist/tools/internal-tools/implementations/search-history-tool.cjs +61 -0
  495. package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +15 -0
  496. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +15 -0
  497. package/dist/tools/internal-tools/implementations/search-history-tool.js +37 -0
  498. package/dist/tools/internal-tools/index.cjs +24 -0
  499. package/dist/tools/internal-tools/index.d.cts +13 -0
  500. package/dist/tools/internal-tools/index.d.ts +13 -0
  501. package/dist/tools/internal-tools/index.js +2 -0
  502. package/dist/tools/internal-tools/provider.cjs +159 -0
  503. package/dist/tools/internal-tools/provider.d.cts +66 -0
  504. package/dist/tools/internal-tools/provider.d.ts +66 -0
  505. package/dist/tools/internal-tools/provider.js +135 -0
  506. package/dist/tools/internal-tools/registry.cjs +43 -0
  507. package/dist/tools/internal-tools/registry.d.cts +45 -0
  508. package/dist/tools/internal-tools/registry.d.ts +45 -0
  509. package/dist/tools/internal-tools/registry.js +17 -0
  510. package/dist/tools/schemas.cjs +45 -0
  511. package/dist/tools/schemas.d.cts +21 -0
  512. package/dist/tools/schemas.d.ts +21 -0
  513. package/dist/tools/schemas.js +20 -0
  514. package/dist/tools/tool-manager.cjs +275 -0
  515. package/dist/tools/tool-manager.d.cts +106 -0
  516. package/dist/tools/tool-manager.d.ts +106 -0
  517. package/dist/tools/tool-manager.js +251 -0
  518. package/dist/tools/types.cjs +16 -0
  519. package/dist/tools/types.d.cts +66 -0
  520. package/dist/tools/types.d.ts +66 -0
  521. package/dist/tools/types.js +0 -0
  522. package/dist/utils/api-key-resolver.cjs +62 -0
  523. package/dist/utils/api-key-resolver.d.cts +23 -0
  524. package/dist/utils/api-key-resolver.d.ts +23 -0
  525. package/dist/utils/api-key-resolver.js +36 -0
  526. package/dist/utils/api-key-store.cjs +56 -0
  527. package/dist/utils/api-key-store.d.cts +26 -0
  528. package/dist/utils/api-key-store.d.ts +26 -0
  529. package/dist/utils/api-key-store.js +30 -0
  530. package/dist/utils/env.cjs +154 -0
  531. package/dist/utils/env.d.cts +29 -0
  532. package/dist/utils/env.d.ts +29 -0
  533. package/dist/utils/env.js +118 -0
  534. package/dist/utils/error-conversion.cjs +53 -0
  535. package/dist/utils/error-conversion.d.cts +13 -0
  536. package/dist/utils/error-conversion.d.ts +13 -0
  537. package/dist/utils/error-conversion.js +29 -0
  538. package/dist/utils/execution-context.cjs +85 -0
  539. package/dist/utils/execution-context.d.cts +21 -0
  540. package/dist/utils/execution-context.d.ts +21 -0
  541. package/dist/utils/execution-context.js +49 -0
  542. package/dist/{chunk-MVKLS3LM.js → utils/fs-walk.cjs} +27 -18
  543. package/dist/utils/fs-walk.d.cts +9 -0
  544. package/dist/utils/fs-walk.d.ts +9 -0
  545. package/dist/utils/fs-walk.js +18 -0
  546. package/dist/utils/index.cjs +44 -0
  547. package/dist/utils/index.d.cts +63 -0
  548. package/dist/utils/index.d.ts +63 -0
  549. package/dist/utils/index.js +12 -0
  550. package/dist/utils/path.cjs +197 -0
  551. package/dist/utils/path.d.cts +54 -0
  552. package/dist/utils/path.d.ts +54 -0
  553. package/dist/utils/path.js +159 -0
  554. package/dist/utils/port-utils.cjs +37 -0
  555. package/dist/utils/port-utils.d.cts +11 -0
  556. package/dist/utils/port-utils.d.ts +11 -0
  557. package/dist/utils/port-utils.js +13 -0
  558. package/dist/utils/port-utils.spec.cjs +26 -0
  559. package/dist/utils/port-utils.spec.d.cts +2 -0
  560. package/dist/utils/port-utils.spec.d.ts +2 -0
  561. package/dist/utils/port-utils.spec.js +25 -0
  562. package/dist/utils/redactor.cjs +105 -0
  563. package/dist/utils/redactor.d.cts +18 -0
  564. package/dist/utils/redactor.d.ts +18 -0
  565. package/dist/utils/redactor.js +81 -0
  566. package/dist/utils/result.cjs +115 -0
  567. package/dist/utils/result.d.cts +180 -0
  568. package/dist/utils/result.d.ts +180 -0
  569. package/dist/utils/result.js +82 -0
  570. package/dist/utils/safe-stringify.cjs +57 -0
  571. package/dist/utils/safe-stringify.d.cts +7 -0
  572. package/dist/utils/safe-stringify.d.ts +7 -0
  573. package/dist/utils/safe-stringify.js +33 -0
  574. package/dist/utils/schema.cjs +42 -0
  575. package/dist/utils/schema.d.cts +6 -0
  576. package/dist/utils/schema.d.ts +6 -0
  577. package/dist/utils/schema.js +18 -0
  578. package/dist/utils/service-initializer.cjs +119 -0
  579. package/dist/utils/service-initializer.d.cts +63 -0
  580. package/dist/utils/service-initializer.d.ts +63 -0
  581. package/dist/utils/service-initializer.js +95 -0
  582. package/dist/utils/user-info.cjs +30 -0
  583. package/dist/utils/user-info.d.cts +3 -0
  584. package/dist/utils/user-info.d.ts +3 -0
  585. package/dist/utils/user-info.js +6 -0
  586. package/dist/utils/zod-schema-converter.cjs +112 -0
  587. package/dist/utils/zod-schema-converter.d.cts +13 -0
  588. package/dist/utils/zod-schema-converter.d.ts +13 -0
  589. package/dist/utils/zod-schema-converter.js +87 -0
  590. package/package.json +2 -2
  591. package/dist/chunk-D62MHQBE.js +0 -2203
  592. package/dist/chunk-FCJVTIBV.js +0 -535
  593. package/dist/chunk-TPERKLLN.js +0 -75
  594. package/dist/errors-ZZ4Z3FKB.js +0 -10
  595. package/dist/loader-HBNEYPQZ.js +0 -20
  596. package/dist/path-TP7WBDED.js +0 -21
  597. package/dist/registry-Z4DFXODW.js +0 -14
@@ -0,0 +1,506 @@
1
+ import {
2
+ generateText,
3
+ streamText,
4
+ APICallError,
5
+ stepCountIs
6
+ } from "ai";
7
+ import { logger } from "../../logger/index.js";
8
+ import { jsonSchema } from "ai";
9
+ import { ContextManager } from "../../context/manager.js";
10
+ import { sanitizeToolResultToContent, summarizeToolContentForText } from "../../context/utils.js";
11
+ import { getMaxInputTokensForModel, getEffectiveMaxInputTokens } from "../registry.js";
12
+ import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
13
+ import { LLMErrorCode } from "../error-codes.js";
14
+ import { ErrorScope, ErrorType } from "../../errors/types.js";
15
+ import { toError } from "../../utils/error-conversion.js";
16
+ import { ToolErrorCode } from "../../tools/error-codes.js";
17
+ import { VercelMessageFormatter } from "../formatters/vercel.js";
18
+ import { createTokenizer } from "../tokenizer/factory.js";
19
+ class VercelLLMService {
20
+ model;
21
+ config;
22
+ toolManager;
23
+ contextManager;
24
+ sessionEventBus;
25
+ sessionId;
26
+ toolSupportCache = /* @__PURE__ */ new Map();
27
+ // Map of toolCallId -> queue of raw results to emit with that callId
28
+ rawResultsByCallId = /* @__PURE__ */ new Map();
29
+ /**
30
+ * Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
31
+ */
32
+ getModelId() {
33
+ return typeof this.model === "string" ? this.model : this.model.modelId;
34
+ }
35
+ constructor(toolManager, model, promptManager, historyProvider, sessionEventBus, config, sessionId) {
36
+ this.model = model;
37
+ this.config = config;
38
+ this.toolManager = toolManager;
39
+ this.sessionEventBus = sessionEventBus;
40
+ this.sessionId = sessionId;
41
+ const formatter = new VercelMessageFormatter();
42
+ const tokenizer = createTokenizer(config.provider, this.getModelId());
43
+ const maxInputTokens = getEffectiveMaxInputTokens(config);
44
+ this.contextManager = new ContextManager(
45
+ config,
46
+ formatter,
47
+ promptManager,
48
+ maxInputTokens,
49
+ tokenizer,
50
+ historyProvider,
51
+ sessionId
52
+ );
53
+ logger.debug(
54
+ `[VercelLLMService] Initialized for model: ${this.getModelId()}, provider: ${this.config.provider}, temperature: ${this.config.temperature}, maxOutputTokens: ${this.config.maxOutputTokens}`
55
+ );
56
+ }
57
+ getAllTools() {
58
+ return this.toolManager.getAllTools();
59
+ }
60
+ formatTools(tools) {
61
+ logger.debug(`Formatting tools for vercel`);
62
+ return Object.keys(tools).reduce((acc, toolName) => {
63
+ const tool = tools[toolName];
64
+ if (tool) {
65
+ acc[toolName] = {
66
+ inputSchema: jsonSchema(tool.parameters),
67
+ execute: async (args, options) => {
68
+ try {
69
+ const rawResult = await this.toolManager.executeTool(
70
+ toolName,
71
+ args,
72
+ this.sessionId
73
+ );
74
+ const callId = options.toolCallId;
75
+ const queue = this.rawResultsByCallId.get(callId) ?? [];
76
+ queue.push(rawResult);
77
+ this.rawResultsByCallId.set(callId, queue);
78
+ const safeContent = sanitizeToolResultToContent(rawResult);
79
+ const summaryText = summarizeToolContentForText(safeContent);
80
+ return summaryText;
81
+ } catch (err) {
82
+ if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.EXECUTION_DENIED) {
83
+ return { error: err.message, denied: true };
84
+ }
85
+ if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.CONFIRMATION_TIMEOUT) {
86
+ return { error: err.message, denied: true, timeout: true };
87
+ }
88
+ const message = err instanceof Error ? err.message : String(err);
89
+ return { error: message };
90
+ }
91
+ },
92
+ ...tool.description && { description: tool.description }
93
+ };
94
+ }
95
+ return acc;
96
+ }, {});
97
+ }
98
+ async validateToolSupport() {
99
+ const modelKey = `${this.config.provider}:${this.getModelId()}:${this.config.baseURL ?? ""}`;
100
+ if (this.toolSupportCache.has(modelKey)) {
101
+ return this.toolSupportCache.get(modelKey);
102
+ }
103
+ if (!this.config.baseURL) {
104
+ logger.debug(`Skipping tool validation for ${modelKey} - no custom baseURL`);
105
+ this.toolSupportCache.set(modelKey, true);
106
+ return true;
107
+ }
108
+ logger.debug(`Testing tool support for custom endpoint model: ${modelKey}`);
109
+ const testTool = {
110
+ test_tool: {
111
+ inputSchema: jsonSchema({
112
+ type: "object",
113
+ properties: {},
114
+ additionalProperties: false
115
+ }),
116
+ execute: async () => ({ result: "test" })
117
+ }
118
+ };
119
+ try {
120
+ await generateText({
121
+ model: this.model,
122
+ messages: [{ role: "user", content: "Hello" }],
123
+ tools: testTool,
124
+ stopWhen: stepCountIs(1)
125
+ });
126
+ this.toolSupportCache.set(modelKey, true);
127
+ logger.debug(`Model ${modelKey} supports tools`);
128
+ return true;
129
+ } catch (error) {
130
+ const errorMessage = error instanceof Error ? error.message : String(error);
131
+ if (errorMessage.includes("does not support tools")) {
132
+ this.toolSupportCache.set(modelKey, false);
133
+ logger.debug(`Model ${modelKey} does not support tools`);
134
+ return false;
135
+ }
136
+ logger.debug(
137
+ `Tool validation error for ${modelKey}, assuming supported: ${errorMessage}`
138
+ );
139
+ this.toolSupportCache.set(modelKey, true);
140
+ return true;
141
+ }
142
+ }
143
+ async completeTask(textInput, options, imageData, fileData, stream) {
144
+ logger.debug(
145
+ `[VercelLLMService] addUserMessage(text ~${textInput.length} chars, image=${Boolean(
146
+ imageData
147
+ )}, file=${Boolean(fileData)})`
148
+ );
149
+ await this.contextManager.addUserMessage(textInput, imageData, fileData);
150
+ const tools = await this.toolManager.getAllTools();
151
+ logger.silly(
152
+ `[VercelLLMService] Tools before formatting: ${JSON.stringify(tools, null, 2)}`
153
+ );
154
+ const formattedTools = this.formatTools(tools);
155
+ logger.silly(
156
+ `[VercelLLMService] Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`
157
+ );
158
+ let fullResponse = "";
159
+ this.sessionEventBus.emit("llmservice:thinking");
160
+ const prepared = await this.contextManager.getFormattedMessagesWithCompression(
161
+ { mcpManager: this.toolManager.getMcpManager() },
162
+ { provider: this.config.provider, model: this.getModelId() }
163
+ );
164
+ const formattedMessages = prepared.formattedMessages;
165
+ const tokensUsed = prepared.tokensUsed;
166
+ logger.silly(
167
+ `Messages (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
168
+ );
169
+ logger.silly(`Tools: ${JSON.stringify(formattedTools, null, 2)}`);
170
+ logger.debug(`Estimated tokens being sent to Vercel provider: ${tokensUsed}`);
171
+ if (stream) {
172
+ fullResponse = await this.streamText(
173
+ formattedMessages,
174
+ formattedTools,
175
+ this.config.maxIterations,
176
+ options?.signal
177
+ );
178
+ } else {
179
+ fullResponse = await this.generateText(
180
+ formattedMessages,
181
+ formattedTools,
182
+ this.config.maxIterations,
183
+ options?.signal
184
+ );
185
+ }
186
+ if (options?.signal?.aborted) {
187
+ return fullResponse;
188
+ }
189
+ return fullResponse || `Reached maximum number of steps (${this.config.maxIterations}) without a final response.`;
190
+ }
191
+ async generateText(messages, tools, maxSteps = 50, signal) {
192
+ let stepIteration = 0;
193
+ const estimatedTokens = Math.ceil(JSON.stringify(messages, null, 2).length / 4);
194
+ logger.debug(
195
+ `vercel generateText:Generating text with messages (${estimatedTokens} estimated tokens)`
196
+ );
197
+ const temperature = this.config.temperature;
198
+ const maxOutputTokens = this.config.maxOutputTokens;
199
+ const supportsTools = await this.validateToolSupport();
200
+ const effectiveTools = supportsTools ? tools : {};
201
+ if (!supportsTools && Object.keys(tools).length > 0) {
202
+ logger.debug(
203
+ `Model ${this.getModelId()} does not support tools, using empty tools object for generation`
204
+ );
205
+ }
206
+ try {
207
+ const includeMaxOutputTokens = typeof maxOutputTokens === "number";
208
+ const response = await generateText({
209
+ model: this.model,
210
+ messages,
211
+ tools: effectiveTools,
212
+ ...signal ? { abortSignal: signal } : {},
213
+ onStepFinish: (step) => {
214
+ logger.debug(`Step iteration: ${stepIteration}`);
215
+ stepIteration++;
216
+ logger.debug(`Step finished, text: ${step.text}`);
217
+ logger.debug(
218
+ `Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
219
+ );
220
+ logger.debug(
221
+ `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
222
+ );
223
+ if (step.toolCalls && step.toolCalls.length > 0) {
224
+ for (const toolCall of step.toolCalls) {
225
+ this.sessionEventBus.emit("llmservice:toolCall", {
226
+ toolName: toolCall.toolName,
227
+ args: toolCall.input,
228
+ callId: toolCall.toolCallId
229
+ });
230
+ }
231
+ }
232
+ if (step.toolResults && step.toolResults.length > 0) {
233
+ for (const toolResult of step.toolResults) {
234
+ const callId = toolResult.toolCallId;
235
+ const sanitized = toolResult.output;
236
+ let raw;
237
+ if (callId) {
238
+ const q = this.rawResultsByCallId.get(callId) ?? [];
239
+ raw = q.shift();
240
+ if (q.length > 0) this.rawResultsByCallId.set(callId, q);
241
+ else this.rawResultsByCallId.delete(callId);
242
+ }
243
+ this.sessionEventBus.emit("llmservice:toolResult", {
244
+ toolName: toolResult.toolName,
245
+ result: raw ?? sanitized,
246
+ callId,
247
+ success: true
248
+ });
249
+ }
250
+ }
251
+ },
252
+ stopWhen: stepCountIs(maxSteps),
253
+ ...includeMaxOutputTokens ? { maxOutputTokens } : {},
254
+ ...temperature !== void 0 && { temperature }
255
+ });
256
+ this.sessionEventBus.emit("llmservice:response", {
257
+ content: response.text,
258
+ ...response.reasoningText && { reasoning: response.reasoningText },
259
+ provider: this.config.provider,
260
+ model: this.getModelId(),
261
+ router: "vercel",
262
+ tokenUsage: {
263
+ ...response.totalUsage.inputTokens !== void 0 && {
264
+ inputTokens: response.totalUsage.inputTokens
265
+ },
266
+ ...response.totalUsage.outputTokens !== void 0 && {
267
+ outputTokens: response.totalUsage.outputTokens
268
+ },
269
+ ...response.totalUsage.reasoningTokens !== void 0 && {
270
+ reasoningTokens: response.totalUsage.reasoningTokens
271
+ },
272
+ ...response.totalUsage.totalTokens !== void 0 && {
273
+ totalTokens: response.totalUsage.totalTokens
274
+ }
275
+ }
276
+ });
277
+ await this.contextManager.processLLMResponse(response);
278
+ if (typeof response.totalUsage.totalTokens === "number") {
279
+ this.contextManager.updateActualTokenCount(response.totalUsage.totalTokens);
280
+ }
281
+ return response.text;
282
+ } catch (err) {
283
+ this.mapProviderError(err, "generate");
284
+ }
285
+ }
286
+ mapProviderError(err, phase) {
287
+ if (APICallError.isInstance?.(err)) {
288
+ const status = err.statusCode;
289
+ const headers = err.responseHeaders || {};
290
+ const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
291
+ const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
292
+ if (status === 429) {
293
+ throw new DextoRuntimeError(
294
+ LLMErrorCode.RATE_LIMIT_EXCEEDED,
295
+ ErrorScope.LLM,
296
+ ErrorType.RATE_LIMIT,
297
+ `Rate limit exceeded${body ? ` - ${body}` : ""}`,
298
+ {
299
+ sessionId: this.sessionId,
300
+ provider: this.config.provider,
301
+ model: this.getModelId(),
302
+ status,
303
+ retryAfter,
304
+ body,
305
+ phase
306
+ }
307
+ );
308
+ }
309
+ if (status === 408) {
310
+ throw new DextoRuntimeError(
311
+ LLMErrorCode.GENERATION_FAILED,
312
+ ErrorScope.LLM,
313
+ ErrorType.TIMEOUT,
314
+ `Provider timed out${body ? ` - ${body}` : ""}`,
315
+ {
316
+ sessionId: this.sessionId,
317
+ provider: this.config.provider,
318
+ model: this.getModelId(),
319
+ status,
320
+ body,
321
+ phase
322
+ }
323
+ );
324
+ }
325
+ throw new DextoRuntimeError(
326
+ LLMErrorCode.GENERATION_FAILED,
327
+ ErrorScope.LLM,
328
+ ErrorType.THIRD_PARTY,
329
+ `Provider error ${status}${body ? ` - ${body}` : ""}`,
330
+ {
331
+ sessionId: this.sessionId,
332
+ provider: this.config.provider,
333
+ model: this.getModelId(),
334
+ status,
335
+ body,
336
+ phase
337
+ }
338
+ );
339
+ }
340
+ throw err;
341
+ }
342
+ // Updated streamText to behave like generateText - returns string and handles message processing internally
343
+ async streamText(messages, tools, maxSteps = 10, signal) {
344
+ let stepIteration = 0;
345
+ const temperature = this.config.temperature;
346
+ const maxOutputTokens = this.config.maxOutputTokens;
347
+ const supportsTools = await this.validateToolSupport();
348
+ const effectiveTools = supportsTools ? tools : {};
349
+ if (!supportsTools && Object.keys(tools).length > 0) {
350
+ logger.debug(
351
+ `Model ${this.getModelId()} does not support tools, using empty tools object for streaming`
352
+ );
353
+ }
354
+ let streamErr;
355
+ const includeMaxOutputTokens = typeof maxOutputTokens === "number";
356
+ const response = streamText({
357
+ model: this.model,
358
+ messages,
359
+ tools: effectiveTools,
360
+ ...signal ? { abortSignal: signal } : {},
361
+ onChunk: (chunk) => {
362
+ logger.debug(`Chunk type: ${chunk.chunk.type}`);
363
+ if (chunk.chunk.type === "text-delta") {
364
+ this.sessionEventBus.emit("llmservice:chunk", {
365
+ type: "text",
366
+ content: chunk.chunk.text,
367
+ isComplete: false
368
+ });
369
+ } else if (chunk.chunk.type === "reasoning-delta") {
370
+ this.sessionEventBus.emit("llmservice:chunk", {
371
+ type: "reasoning",
372
+ content: chunk.chunk.text,
373
+ isComplete: false
374
+ });
375
+ }
376
+ },
377
+ // TODO: Add onAbort handler when we implement partial response handling.
378
+ // Vercel triggers onAbort instead of onError for cancelled streams.
379
+ // This is where cancellation logic should be handled properly.
380
+ onError: (error) => {
381
+ const err = toError(error);
382
+ logger.error(`Error in streamText: ${err?.stack ?? err}`, null, "red");
383
+ this.sessionEventBus.emit("llmservice:error", {
384
+ error: err,
385
+ context: "streamText",
386
+ recoverable: false
387
+ });
388
+ streamErr = error;
389
+ },
390
+ onStepFinish: (step) => {
391
+ logger.debug(`Step iteration: ${stepIteration}`);
392
+ stepIteration++;
393
+ logger.debug(`Step finished, text: ${step.text}`);
394
+ logger.debug(
395
+ `Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
396
+ );
397
+ logger.debug(
398
+ `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
399
+ );
400
+ if (step.toolCalls && step.toolCalls.length > 0) {
401
+ for (const toolCall of step.toolCalls) {
402
+ this.sessionEventBus.emit("llmservice:toolCall", {
403
+ toolName: toolCall.toolName,
404
+ args: toolCall.input,
405
+ callId: toolCall.toolCallId
406
+ });
407
+ }
408
+ }
409
+ if (step.toolResults && step.toolResults.length > 0) {
410
+ for (const toolResult of step.toolResults) {
411
+ const callId = toolResult.toolCallId;
412
+ const sanitized = toolResult.output;
413
+ let raw;
414
+ if (callId) {
415
+ const q = this.rawResultsByCallId.get(callId) ?? [];
416
+ raw = q.shift();
417
+ if (q.length > 0) this.rawResultsByCallId.set(callId, q);
418
+ else this.rawResultsByCallId.delete(callId);
419
+ }
420
+ this.sessionEventBus.emit("llmservice:toolResult", {
421
+ toolName: toolResult.toolName,
422
+ result: raw ?? sanitized,
423
+ callId,
424
+ success: true
425
+ });
426
+ }
427
+ }
428
+ },
429
+ // No onFinish: we finalize after the stream completes below.
430
+ stopWhen: stepCountIs(maxSteps),
431
+ ...includeMaxOutputTokens ? { maxOutputTokens } : {},
432
+ ...temperature !== void 0 && { temperature }
433
+ });
434
+ const [finalText, usage, reasoningText] = await Promise.all([
435
+ response.text,
436
+ response.totalUsage,
437
+ response.reasoningText
438
+ ]);
439
+ response.totalUsage;
440
+ if (streamErr) {
441
+ return "";
442
+ }
443
+ this.sessionEventBus.emit("llmservice:response", {
444
+ content: finalText,
445
+ ...reasoningText && { reasoning: reasoningText },
446
+ provider: this.config.provider,
447
+ model: this.getModelId(),
448
+ router: "vercel",
449
+ tokenUsage: {
450
+ ...usage.inputTokens !== void 0 && { inputTokens: usage.inputTokens },
451
+ ...usage.outputTokens !== void 0 && { outputTokens: usage.outputTokens },
452
+ ...usage.reasoningTokens !== void 0 && {
453
+ reasoningTokens: usage.reasoningTokens
454
+ },
455
+ ...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
456
+ }
457
+ });
458
+ if (typeof usage.totalTokens === "number") {
459
+ this.contextManager.updateActualTokenCount(usage.totalTokens);
460
+ }
461
+ await this.contextManager.processLLMStreamResponse(response);
462
+ logger.silly(`streamText response object: ${JSON.stringify(response, null, 2)}`);
463
+ return finalText;
464
+ }
465
+ /**
466
+ * Get configuration information about the LLM service
467
+ * @returns Configuration object with provider and model information
468
+ */
469
+ getConfig() {
470
+ const configuredMaxTokens = this.contextManager.getMaxInputTokens();
471
+ let modelMaxInputTokens;
472
+ try {
473
+ modelMaxInputTokens = getMaxInputTokensForModel(
474
+ this.config.provider,
475
+ // Use our internal provider name
476
+ this.getModelId()
477
+ );
478
+ } catch (error) {
479
+ if (error instanceof DextoRuntimeError && error.code === LLMErrorCode.MODEL_UNKNOWN) {
480
+ modelMaxInputTokens = configuredMaxTokens;
481
+ logger.debug(
482
+ `Could not find model ${this.getModelId()} in LLM registry to get max tokens. Using configured max tokens: ${configuredMaxTokens}.`
483
+ );
484
+ } else {
485
+ throw error;
486
+ }
487
+ }
488
+ return {
489
+ router: "vercel",
490
+ provider: this.config.provider,
491
+ // Use our internal provider name
492
+ model: this.model,
493
+ configuredMaxInputTokens: configuredMaxTokens,
494
+ modelMaxInputTokens
495
+ };
496
+ }
497
+ /**
498
+ * Get the context manager for external access
499
+ */
500
+ getContextManager() {
501
+ return this.contextManager;
502
+ }
503
+ }
504
+ export {
505
+ VercelLLMService
506
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var anthropic_exports = {};
20
+ __export(anthropic_exports, {
21
+ AnthropicTokenizer: () => AnthropicTokenizer
22
+ });
23
+ module.exports = __toCommonJS(anthropic_exports);
24
+ class AnthropicTokenizer {
25
+ /**
26
+ * TODO: Replace with a better implementation for anthropic
27
+ * Approximates token count for Anthropic models.
28
+ * Assumes roughly 4 characters per token.
29
+ * @param text Text content to count tokens for
30
+ * @returns Approximate number of tokens
31
+ */
32
+ countTokens(text) {
33
+ if (!text) return 0;
34
+ return Math.ceil(text.length / 4);
35
+ }
36
+ getProviderName() {
37
+ return "anthropic";
38
+ }
39
+ }
40
+ // Annotate the CommonJS export names for ESM import in node:
41
+ 0 && (module.exports = {
42
+ AnthropicTokenizer
43
+ });
@@ -0,0 +1,21 @@
1
+ import { ITokenizer } from './types.cjs';
2
+
3
+ /**
4
+ * Placeholder tokenizer for Anthropic models.
5
+ * Uses a rough approximation based on character count.
6
+ * TODO: IMPORTANT: This is not accurate and should be replaced
7
+ * with a better implementation or official library when available.
8
+ */
9
+ declare class AnthropicTokenizer implements ITokenizer {
10
+ /**
11
+ * TODO: Replace with a better implementation for anthropic
12
+ * Approximates token count for Anthropic models.
13
+ * Assumes roughly 4 characters per token.
14
+ * @param text Text content to count tokens for
15
+ * @returns Approximate number of tokens
16
+ */
17
+ countTokens(text: string): number;
18
+ getProviderName(): string;
19
+ }
20
+
21
+ export { AnthropicTokenizer };
@@ -0,0 +1,21 @@
1
+ import { ITokenizer } from './types.js';
2
+
3
+ /**
4
+ * Placeholder tokenizer for Anthropic models.
5
+ * Uses a rough approximation based on character count.
6
+ * TODO: IMPORTANT: This is not accurate and should be replaced
7
+ * with a better implementation or official library when available.
8
+ */
9
+ declare class AnthropicTokenizer implements ITokenizer {
10
+ /**
11
+ * TODO: Replace with a better implementation for anthropic
12
+ * Approximates token count for Anthropic models.
13
+ * Assumes roughly 4 characters per token.
14
+ * @param text Text content to count tokens for
15
+ * @returns Approximate number of tokens
16
+ */
17
+ countTokens(text: string): number;
18
+ getProviderName(): string;
19
+ }
20
+
21
+ export { AnthropicTokenizer };
@@ -0,0 +1,19 @@
1
+ class AnthropicTokenizer {
2
+ /**
3
+ * TODO: Replace with a better implementation for anthropic
4
+ * Approximates token count for Anthropic models.
5
+ * Assumes roughly 4 characters per token.
6
+ * @param text Text content to count tokens for
7
+ * @returns Approximate number of tokens
8
+ */
9
+ countTokens(text) {
10
+ if (!text) return 0;
11
+ return Math.ceil(text.length / 4);
12
+ }
13
+ getProviderName() {
14
+ return "anthropic";
15
+ }
16
+ }
17
+ export {
18
+ AnthropicTokenizer
19
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var default_exports = {};
20
+ __export(default_exports, {
21
+ DefaultTokenizer: () => DefaultTokenizer
22
+ });
23
+ module.exports = __toCommonJS(default_exports);
24
+ class DefaultTokenizer {
25
+ /**
26
+ * Assumes roughly 4 characters per token.
27
+ * @param text Text content to count tokens for
28
+ * @returns Approximate number of tokens
29
+ */
30
+ countTokens(text) {
31
+ if (!text) return 0;
32
+ return Math.ceil(text.length / 4);
33
+ }
34
+ getProviderName() {
35
+ return "default";
36
+ }
37
+ }
38
+ // Annotate the CommonJS export names for ESM import in node:
39
+ 0 && (module.exports = {
40
+ DefaultTokenizer
41
+ });
@@ -0,0 +1,16 @@
1
+ import { ITokenizer } from './types.cjs';
2
+
3
+ /**
4
+ * Placeholder tokenizer for unknown models
5
+ */
6
+ declare class DefaultTokenizer implements ITokenizer {
7
+ /**
8
+ * Assumes roughly 4 characters per token.
9
+ * @param text Text content to count tokens for
10
+ * @returns Approximate number of tokens
11
+ */
12
+ countTokens(text: string): number;
13
+ getProviderName(): string;
14
+ }
15
+
16
+ export { DefaultTokenizer };
@@ -0,0 +1,16 @@
1
+ import { ITokenizer } from './types.js';
2
+
3
+ /**
4
+ * Placeholder tokenizer for unknown models
5
+ */
6
+ declare class DefaultTokenizer implements ITokenizer {
7
+ /**
8
+ * Assumes roughly 4 characters per token.
9
+ * @param text Text content to count tokens for
10
+ * @returns Approximate number of tokens
11
+ */
12
+ countTokens(text: string): number;
13
+ getProviderName(): string;
14
+ }
15
+
16
+ export { DefaultTokenizer };