@dexto/core 1.3.0 → 1.4.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 (479) hide show
  1. package/README.md +17 -9
  2. package/dist/agent/DextoAgent.cjs +548 -207
  3. package/dist/agent/DextoAgent.d.ts +156 -33
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +545 -204
  6. package/dist/agent/agentCard.js +1 -1
  7. package/dist/agent/error-codes.cjs +1 -0
  8. package/dist/agent/error-codes.d.ts +2 -1
  9. package/dist/agent/error-codes.d.ts.map +1 -1
  10. package/dist/agent/error-codes.js +2 -1
  11. package/dist/agent/errors.cjs +13 -0
  12. package/dist/agent/errors.d.ts +4 -0
  13. package/dist/agent/errors.d.ts.map +1 -1
  14. package/dist/agent/errors.js +14 -1
  15. package/dist/agent/index.d.ts +1 -1
  16. package/dist/agent/index.d.ts.map +1 -1
  17. package/dist/agent/index.js +1 -1
  18. package/dist/agent/schemas.cjs +3 -0
  19. package/dist/agent/schemas.d.ts +92 -55
  20. package/dist/agent/schemas.d.ts.map +1 -1
  21. package/dist/agent/schemas.js +6 -2
  22. package/dist/agent/state-manager.cjs +5 -5
  23. package/dist/agent/state-manager.d.ts +4 -4
  24. package/dist/agent/state-manager.js +6 -6
  25. package/dist/agent/types.d.ts +24 -10
  26. package/dist/agent/types.d.ts.map +1 -1
  27. package/dist/approval/error-codes.js +1 -1
  28. package/dist/approval/errors.js +1 -1
  29. package/dist/approval/factory.js +1 -1
  30. package/dist/approval/index.js +1 -1
  31. package/dist/approval/manager.cjs +69 -3
  32. package/dist/approval/manager.d.ts +41 -3
  33. package/dist/approval/manager.d.ts.map +1 -1
  34. package/dist/approval/manager.js +70 -4
  35. package/dist/approval/schemas.cjs +18 -4
  36. package/dist/approval/schemas.d.ts +106 -32
  37. package/dist/approval/schemas.d.ts.map +1 -1
  38. package/dist/approval/schemas.js +19 -5
  39. package/dist/approval/types.d.ts +6 -0
  40. package/dist/approval/types.d.ts.map +1 -1
  41. package/dist/approval/types.js +1 -1
  42. package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
  43. package/dist/{llm/tokenizer/default.cjs → context/compression/overflow.cjs} +20 -18
  44. package/dist/context/compression/overflow.d.ts +33 -0
  45. package/dist/context/compression/overflow.d.ts.map +1 -0
  46. package/dist/context/compression/overflow.js +19 -0
  47. package/dist/context/compression/reactive-overflow.cjs +201 -0
  48. package/dist/context/compression/reactive-overflow.d.ts +81 -0
  49. package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
  50. package/dist/context/compression/reactive-overflow.js +178 -0
  51. package/dist/context/compression/types.d.ts +9 -7
  52. package/dist/context/compression/types.d.ts.map +1 -1
  53. package/dist/context/error-codes.cjs +3 -0
  54. package/dist/context/error-codes.d.ts +4 -1
  55. package/dist/context/error-codes.d.ts.map +1 -1
  56. package/dist/context/error-codes.js +4 -1
  57. package/dist/context/errors.cjs +28 -0
  58. package/dist/context/errors.d.ts +7 -0
  59. package/dist/context/errors.d.ts.map +1 -1
  60. package/dist/context/errors.js +29 -1
  61. package/dist/context/index.js +1 -1
  62. package/dist/context/manager.cjs +280 -323
  63. package/dist/context/manager.d.ts +65 -111
  64. package/dist/context/manager.d.ts.map +1 -1
  65. package/dist/context/manager.js +280 -328
  66. package/dist/context/media-helpers.js +1 -1
  67. package/dist/context/types.cjs +49 -0
  68. package/dist/context/types.d.ts +181 -72
  69. package/dist/context/types.d.ts.map +1 -1
  70. package/dist/context/types.js +35 -0
  71. package/dist/context/utils.cjs +266 -283
  72. package/dist/context/utils.d.ts +32 -18
  73. package/dist/context/utils.d.ts.map +1 -1
  74. package/dist/context/utils.js +266 -283
  75. package/dist/errors/DextoBaseError.js +1 -1
  76. package/dist/errors/DextoRuntimeError.js +1 -1
  77. package/dist/errors/DextoValidationError.js +1 -1
  78. package/dist/errors/index.js +1 -1
  79. package/dist/errors/result-bridge.js +1 -1
  80. package/dist/errors/types.js +1 -1
  81. package/dist/events/index.cjs +18 -1
  82. package/dist/events/index.d.ts +149 -12
  83. package/dist/events/index.d.ts.map +1 -1
  84. package/dist/events/index.js +19 -2
  85. package/dist/filesystem/error-codes.js +1 -1
  86. package/dist/filesystem/errors.js +1 -1
  87. package/dist/filesystem/filesystem-service.js +1 -1
  88. package/dist/filesystem/index.js +1 -1
  89. package/dist/filesystem/path-validator.js +1 -1
  90. package/dist/index.browser.cjs +23 -8
  91. package/dist/index.browser.d.ts +4 -3
  92. package/dist/index.browser.d.ts.map +1 -1
  93. package/dist/index.browser.js +20 -3
  94. package/dist/index.js +1 -1
  95. package/dist/llm/error-codes.cjs +0 -1
  96. package/dist/llm/error-codes.d.ts +0 -1
  97. package/dist/llm/error-codes.d.ts.map +1 -1
  98. package/dist/llm/error-codes.js +1 -2
  99. package/dist/llm/errors.cjs +10 -10
  100. package/dist/llm/errors.d.ts +5 -6
  101. package/dist/llm/errors.d.ts.map +1 -1
  102. package/dist/llm/errors.js +12 -12
  103. package/dist/llm/executor/stream-processor.cjs +367 -0
  104. package/dist/llm/executor/stream-processor.d.ts +55 -0
  105. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  106. package/dist/llm/executor/stream-processor.js +344 -0
  107. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  108. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  109. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  110. package/dist/llm/executor/tool-output-truncator.js +48 -0
  111. package/dist/llm/executor/turn-executor.cjs +753 -0
  112. package/dist/llm/executor/turn-executor.d.ts +166 -0
  113. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  114. package/dist/llm/executor/turn-executor.js +684 -0
  115. package/dist/llm/executor/types.d.ts +27 -0
  116. package/dist/llm/executor/types.d.ts.map +1 -0
  117. package/dist/llm/formatters/vercel.cjs +20 -186
  118. package/dist/llm/formatters/vercel.d.ts +2 -14
  119. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  120. package/dist/llm/formatters/vercel.js +19 -185
  121. package/dist/llm/registry.cjs +36 -45
  122. package/dist/llm/registry.d.ts +53 -39
  123. package/dist/llm/registry.d.ts.map +1 -1
  124. package/dist/llm/registry.js +34 -42
  125. package/dist/llm/resolver.cjs +1 -31
  126. package/dist/llm/resolver.d.ts.map +1 -1
  127. package/dist/llm/resolver.js +2 -34
  128. package/dist/llm/schemas.cjs +2 -17
  129. package/dist/llm/schemas.d.ts +10 -23
  130. package/dist/llm/schemas.d.ts.map +1 -1
  131. package/dist/llm/schemas.js +5 -22
  132. package/dist/llm/services/factory.cjs +3 -92
  133. package/dist/llm/services/factory.d.ts +14 -4
  134. package/dist/llm/services/factory.d.ts.map +1 -1
  135. package/dist/llm/services/factory.js +4 -83
  136. package/dist/llm/services/test-utils.integration.cjs +6 -8
  137. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  138. package/dist/llm/services/test-utils.integration.js +7 -9
  139. package/dist/llm/services/types.d.ts +1 -28
  140. package/dist/llm/services/types.d.ts.map +1 -1
  141. package/dist/llm/services/vercel.cjs +54 -468
  142. package/dist/llm/services/vercel.d.ts +38 -21
  143. package/dist/llm/services/vercel.d.ts.map +1 -1
  144. package/dist/llm/services/vercel.js +56 -475
  145. package/dist/llm/types.cjs +0 -3
  146. package/dist/llm/types.d.ts +8 -8
  147. package/dist/llm/types.d.ts.map +1 -1
  148. package/dist/llm/types.js +1 -3
  149. package/dist/llm/validation.js +1 -1
  150. package/dist/logger/browser.js +1 -1
  151. package/dist/logger/factory.js +1 -1
  152. package/dist/logger/index.js +1 -1
  153. package/dist/logger/logger.js +1 -1
  154. package/dist/logger/v2/dexto-logger.cjs +34 -6
  155. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  156. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  157. package/dist/logger/v2/dexto-logger.js +35 -7
  158. package/dist/logger/v2/error-codes.js +1 -1
  159. package/dist/logger/v2/errors.js +1 -1
  160. package/dist/logger/v2/schemas.js +1 -1
  161. package/dist/logger/v2/test-utils.cjs +70 -0
  162. package/dist/logger/v2/test-utils.d.ts +17 -0
  163. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  164. package/dist/logger/v2/test-utils.js +46 -0
  165. package/dist/logger/v2/transport-factory.js +1 -1
  166. package/dist/logger/v2/transports/console-transport.js +1 -1
  167. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  168. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  169. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  170. package/dist/logger/v2/transports/file-transport.js +7 -1
  171. package/dist/logger/v2/types.cjs +1 -0
  172. package/dist/logger/v2/types.d.ts +18 -2
  173. package/dist/logger/v2/types.d.ts.map +1 -1
  174. package/dist/logger/v2/types.js +2 -1
  175. package/dist/mcp/error-codes.cjs +1 -0
  176. package/dist/mcp/error-codes.d.ts +1 -0
  177. package/dist/mcp/error-codes.d.ts.map +1 -1
  178. package/dist/mcp/error-codes.js +2 -1
  179. package/dist/mcp/errors.cjs +13 -0
  180. package/dist/mcp/errors.d.ts +7 -0
  181. package/dist/mcp/errors.d.ts.map +1 -1
  182. package/dist/mcp/errors.js +14 -1
  183. package/dist/mcp/manager.cjs +4 -0
  184. package/dist/mcp/manager.d.ts.map +1 -1
  185. package/dist/mcp/manager.js +5 -1
  186. package/dist/mcp/mcp-client.js +1 -1
  187. package/dist/mcp/resolver.js +1 -1
  188. package/dist/mcp/schemas.cjs +6 -0
  189. package/dist/mcp/schemas.d.ts +52 -0
  190. package/dist/mcp/schemas.d.ts.map +1 -1
  191. package/dist/mcp/schemas.js +6 -1
  192. package/dist/memory/error-codes.js +1 -1
  193. package/dist/memory/errors.js +1 -1
  194. package/dist/memory/index.js +1 -1
  195. package/dist/memory/manager.js +1 -1
  196. package/dist/memory/schemas.d.ts +2 -2
  197. package/dist/memory/schemas.js +1 -1
  198. package/dist/plugins/builtins/content-policy.js +1 -1
  199. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  200. package/dist/plugins/error-codes.js +1 -1
  201. package/dist/plugins/index.js +1 -1
  202. package/dist/plugins/loader.js +1 -1
  203. package/dist/plugins/manager.js +1 -1
  204. package/dist/plugins/registrations/builtins.js +1 -1
  205. package/dist/plugins/schemas.d.ts +3 -3
  206. package/dist/plugins/schemas.js +1 -1
  207. package/dist/plugins/types.d.ts +0 -1
  208. package/dist/plugins/types.d.ts.map +1 -1
  209. package/dist/process/command-validator.js +1 -1
  210. package/dist/process/error-codes.js +1 -1
  211. package/dist/process/errors.js +1 -1
  212. package/dist/process/index.js +1 -1
  213. package/dist/process/process-service.cjs +78 -26
  214. package/dist/process/process-service.d.ts +6 -1
  215. package/dist/process/process-service.d.ts.map +1 -1
  216. package/dist/process/process-service.js +79 -27
  217. package/dist/process/types.d.ts +2 -2
  218. package/dist/process/types.d.ts.map +1 -1
  219. package/dist/prompts/error-codes.cjs +1 -0
  220. package/dist/prompts/error-codes.d.ts +2 -1
  221. package/dist/prompts/error-codes.d.ts.map +1 -1
  222. package/dist/prompts/error-codes.js +2 -1
  223. package/dist/prompts/errors.cjs +15 -0
  224. package/dist/prompts/errors.d.ts +4 -0
  225. package/dist/prompts/errors.d.ts.map +1 -1
  226. package/dist/prompts/errors.js +16 -1
  227. package/dist/prompts/index.js +1 -1
  228. package/dist/prompts/name-validation.js +1 -1
  229. package/dist/prompts/prompt-manager.cjs +13 -2
  230. package/dist/prompts/prompt-manager.d.ts +7 -0
  231. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  232. package/dist/prompts/prompt-manager.js +14 -3
  233. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  234. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  235. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  236. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  237. package/dist/prompts/providers/custom-prompt-provider.js +1 -1
  238. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  239. package/dist/prompts/schemas.d.ts +12 -0
  240. package/dist/prompts/schemas.d.ts.map +1 -1
  241. package/dist/prompts/schemas.js +1 -1
  242. package/dist/prompts/types.d.ts +2 -0
  243. package/dist/prompts/types.d.ts.map +1 -1
  244. package/dist/prompts/utils.js +1 -1
  245. package/dist/resources/error-codes.js +1 -1
  246. package/dist/resources/errors.js +1 -1
  247. package/dist/resources/handlers/blob-handler.js +1 -1
  248. package/dist/resources/handlers/factory.js +1 -1
  249. package/dist/resources/handlers/filesystem-handler.js +1 -1
  250. package/dist/resources/index.js +1 -1
  251. package/dist/resources/internal-provider.js +1 -1
  252. package/dist/resources/manager.js +1 -1
  253. package/dist/resources/reference-parser.js +1 -1
  254. package/dist/resources/schemas.js +1 -1
  255. package/dist/search/index.js +1 -1
  256. package/dist/search/search-service.js +1 -1
  257. package/dist/session/chat-session.cjs +149 -51
  258. package/dist/session/chat-session.d.ts +69 -29
  259. package/dist/session/chat-session.d.ts.map +1 -1
  260. package/dist/session/chat-session.js +150 -52
  261. package/dist/session/error-codes.js +1 -1
  262. package/dist/session/errors.js +1 -1
  263. package/dist/session/history/database.cjs +134 -21
  264. package/dist/session/history/database.d.ts +37 -8
  265. package/dist/session/history/database.d.ts.map +1 -1
  266. package/dist/session/history/database.js +135 -22
  267. package/dist/session/history/factory.js +1 -1
  268. package/dist/session/history/memory.cjs +18 -0
  269. package/dist/session/history/memory.d.ts +8 -0
  270. package/dist/session/history/memory.d.ts.map +1 -1
  271. package/dist/session/history/memory.js +19 -1
  272. package/dist/session/history/types.d.ts +13 -1
  273. package/dist/session/history/types.d.ts.map +1 -1
  274. package/dist/session/index.cjs +3 -0
  275. package/dist/session/index.d.ts +3 -0
  276. package/dist/session/index.d.ts.map +1 -1
  277. package/dist/session/index.js +3 -1
  278. package/dist/session/message-queue.cjs +201 -0
  279. package/dist/session/message-queue.d.ts +114 -0
  280. package/dist/session/message-queue.d.ts.map +1 -0
  281. package/dist/session/message-queue.js +178 -0
  282. package/dist/session/schemas.js +1 -1
  283. package/dist/session/session-manager.cjs +57 -7
  284. package/dist/session/session-manager.d.ts +18 -0
  285. package/dist/session/session-manager.d.ts.map +1 -1
  286. package/dist/session/session-manager.js +58 -8
  287. package/dist/session/title-generator.cjs +4 -8
  288. package/dist/session/title-generator.d.ts +1 -2
  289. package/dist/session/title-generator.d.ts.map +1 -1
  290. package/dist/session/title-generator.js +5 -9
  291. package/dist/session/types.cjs +16 -0
  292. package/dist/session/types.d.ts +14 -0
  293. package/dist/session/types.d.ts.map +1 -0
  294. package/dist/session/types.js +0 -0
  295. package/dist/storage/blob/factory.js +1 -1
  296. package/dist/storage/blob/local-blob-store.js +1 -1
  297. package/dist/storage/blob/memory-blob-store.js +1 -1
  298. package/dist/storage/blob/schemas.js +1 -1
  299. package/dist/storage/cache/factory.js +1 -1
  300. package/dist/storage/cache/memory-cache-store.js +1 -1
  301. package/dist/storage/cache/redis-store.js +1 -1
  302. package/dist/storage/cache/schemas.js +1 -1
  303. package/dist/storage/database/factory.js +1 -1
  304. package/dist/storage/database/memory-database-store.js +1 -1
  305. package/dist/storage/database/postgres-store.cjs +12 -0
  306. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  307. package/dist/storage/database/postgres-store.js +13 -1
  308. package/dist/storage/database/schemas.js +1 -1
  309. package/dist/storage/database/sqlite-store.js +1 -1
  310. package/dist/storage/error-codes.js +1 -1
  311. package/dist/storage/errors.js +1 -1
  312. package/dist/storage/index.js +1 -1
  313. package/dist/storage/schemas.js +1 -1
  314. package/dist/storage/storage-manager.js +1 -1
  315. package/dist/systemPrompt/contributors.js +1 -1
  316. package/dist/systemPrompt/error-codes.js +1 -1
  317. package/dist/systemPrompt/errors.js +1 -1
  318. package/dist/systemPrompt/in-built-prompts.js +1 -1
  319. package/dist/systemPrompt/index.js +1 -1
  320. package/dist/systemPrompt/manager.js +1 -1
  321. package/dist/systemPrompt/registry.js +1 -1
  322. package/dist/systemPrompt/schemas.d.ts +5 -5
  323. package/dist/systemPrompt/schemas.js +1 -1
  324. package/dist/telemetry/decorators.js +1 -1
  325. package/dist/telemetry/error-codes.js +1 -1
  326. package/dist/telemetry/errors.js +1 -1
  327. package/dist/telemetry/exporters.js +1 -1
  328. package/dist/telemetry/index.js +1 -1
  329. package/dist/telemetry/schemas.js +1 -1
  330. package/dist/telemetry/telemetry.js +1 -1
  331. package/dist/telemetry/utils.js +1 -1
  332. package/dist/tools/bash-pattern-utils.cjs +91 -0
  333. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  334. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  335. package/dist/tools/bash-pattern-utils.js +64 -0
  336. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  337. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  338. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  339. package/dist/tools/display-types.cjs +60 -0
  340. package/dist/tools/display-types.d.ts +133 -0
  341. package/dist/tools/display-types.d.ts.map +1 -0
  342. package/dist/tools/display-types.js +32 -0
  343. package/dist/tools/error-codes.cjs +2 -0
  344. package/dist/tools/error-codes.d.ts +3 -1
  345. package/dist/tools/error-codes.d.ts.map +1 -1
  346. package/dist/tools/error-codes.js +3 -1
  347. package/dist/tools/errors.cjs +30 -0
  348. package/dist/tools/errors.d.ts +16 -0
  349. package/dist/tools/errors.d.ts.map +1 -1
  350. package/dist/tools/errors.js +31 -1
  351. package/dist/tools/index.cjs +2 -0
  352. package/dist/tools/index.d.ts +1 -0
  353. package/dist/tools/index.d.ts.map +1 -1
  354. package/dist/tools/index.js +2 -1
  355. package/dist/tools/internal-tools/constants.js +1 -1
  356. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  357. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  358. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
  359. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
  360. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
  361. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
  362. package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
  363. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  364. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
  365. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
  366. package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
  367. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
  368. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
  369. package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
  370. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
  371. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
  372. package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
  373. package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
  374. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
  375. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
  376. package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
  377. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  378. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
  379. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
  380. package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
  381. package/dist/tools/internal-tools/provider.cjs +27 -10
  382. package/dist/tools/internal-tools/provider.d.ts +8 -5
  383. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  384. package/dist/tools/internal-tools/provider.js +28 -11
  385. package/dist/tools/internal-tools/registry.cjs +4 -3
  386. package/dist/tools/internal-tools/registry.d.ts +28 -7
  387. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  388. package/dist/tools/internal-tools/registry.js +5 -4
  389. package/dist/tools/schemas.cjs +16 -6
  390. package/dist/tools/schemas.d.ts +31 -4
  391. package/dist/tools/schemas.d.ts.map +1 -1
  392. package/dist/tools/schemas.js +14 -6
  393. package/dist/tools/tool-manager.cjs +140 -18
  394. package/dist/tools/tool-manager.d.ts +23 -1
  395. package/dist/tools/tool-manager.d.ts.map +1 -1
  396. package/dist/tools/tool-manager.js +145 -19
  397. package/dist/tools/types.d.ts +20 -0
  398. package/dist/tools/types.d.ts.map +1 -1
  399. package/dist/utils/api-key-resolver.js +1 -1
  400. package/dist/utils/async-context.js +1 -1
  401. package/dist/utils/debug.js +1 -1
  402. package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
  403. package/dist/utils/defer.d.ts +63 -0
  404. package/dist/utils/defer.d.ts.map +1 -0
  405. package/dist/utils/defer.js +19 -0
  406. package/dist/utils/env-file.js +1 -1
  407. package/dist/utils/error-conversion.js +1 -1
  408. package/dist/utils/execution-context.js +1 -1
  409. package/dist/utils/fs-walk.js +1 -1
  410. package/dist/utils/index.cjs +3 -1
  411. package/dist/utils/index.d.ts +1 -0
  412. package/dist/utils/index.d.ts.map +1 -1
  413. package/dist/utils/index.js +1 -0
  414. package/dist/utils/path.js +1 -1
  415. package/dist/utils/redactor.js +1 -1
  416. package/dist/utils/result.js +1 -1
  417. package/dist/utils/safe-stringify.js +1 -1
  418. package/dist/utils/schema-metadata.js +1 -1
  419. package/dist/utils/schema.js +1 -1
  420. package/dist/utils/service-initializer.cjs +6 -2
  421. package/dist/utils/service-initializer.d.ts.map +1 -1
  422. package/dist/utils/service-initializer.js +7 -3
  423. package/dist/utils/user-info.js +1 -1
  424. package/dist/utils/zod-schema-converter.js +1 -1
  425. package/package.json +6 -7
  426. package/dist/context/compression/middle-removal.cjs +0 -95
  427. package/dist/context/compression/middle-removal.d.ts +0 -47
  428. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  429. package/dist/context/compression/middle-removal.js +0 -72
  430. package/dist/context/compression/oldest-removal.cjs +0 -83
  431. package/dist/context/compression/oldest-removal.d.ts +0 -42
  432. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  433. package/dist/context/compression/oldest-removal.js +0 -60
  434. package/dist/llm/formatters/anthropic.cjs +0 -257
  435. package/dist/llm/formatters/anthropic.d.ts +0 -46
  436. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  437. package/dist/llm/formatters/anthropic.js +0 -239
  438. package/dist/llm/formatters/factory.cjs +0 -50
  439. package/dist/llm/formatters/factory.d.ts +0 -10
  440. package/dist/llm/formatters/factory.d.ts.map +0 -1
  441. package/dist/llm/formatters/factory.js +0 -27
  442. package/dist/llm/formatters/openai.cjs +0 -203
  443. package/dist/llm/formatters/openai.d.ts +0 -39
  444. package/dist/llm/formatters/openai.d.ts.map +0 -1
  445. package/dist/llm/formatters/openai.js +0 -184
  446. package/dist/llm/formatters/types.d.ts +0 -41
  447. package/dist/llm/formatters/types.d.ts.map +0 -1
  448. package/dist/llm/services/anthropic.cjs +0 -511
  449. package/dist/llm/services/anthropic.d.ts +0 -48
  450. package/dist/llm/services/anthropic.d.ts.map +0 -1
  451. package/dist/llm/services/anthropic.js +0 -447
  452. package/dist/llm/services/openai.cjs +0 -611
  453. package/dist/llm/services/openai.d.ts +0 -48
  454. package/dist/llm/services/openai.d.ts.map +0 -1
  455. package/dist/llm/services/openai.js +0 -547
  456. package/dist/llm/tokenizer/anthropic.cjs +0 -43
  457. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  458. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  459. package/dist/llm/tokenizer/anthropic.js +0 -20
  460. package/dist/llm/tokenizer/default.d.ts +0 -14
  461. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  462. package/dist/llm/tokenizer/default.js +0 -18
  463. package/dist/llm/tokenizer/factory.cjs +0 -44
  464. package/dist/llm/tokenizer/factory.d.ts +0 -12
  465. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  466. package/dist/llm/tokenizer/factory.js +0 -21
  467. package/dist/llm/tokenizer/google.cjs +0 -52
  468. package/dist/llm/tokenizer/google.d.ts +0 -29
  469. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  470. package/dist/llm/tokenizer/google.js +0 -29
  471. package/dist/llm/tokenizer/openai.cjs +0 -115
  472. package/dist/llm/tokenizer/openai.d.ts +0 -41
  473. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  474. package/dist/llm/tokenizer/openai.js +0 -91
  475. package/dist/llm/tokenizer/types.d.ts +0 -18
  476. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  477. package/dist/llm/tokenizer/types.js +0 -10
  478. /package/dist/llm/{formatters → executor}/types.cjs +0 -0
  479. /package/dist/llm/{formatters → executor}/types.js +0 -0
@@ -2,32 +2,21 @@ import {
2
2
  __decorateElement,
3
3
  __decoratorStart,
4
4
  __runInitializers
5
- } from "../../chunk-C6A6W6XS.js";
5
+ } from "../../chunk-PTJYTZNU.js";
6
6
  var _VercelLLMService_decorators, _init;
7
- import {
8
- generateText,
9
- streamText,
10
- APICallError,
11
- stepCountIs
12
- } from "ai";
13
7
  import { DextoLogComponent } from "../../logger/v2/types.js";
14
- import { jsonSchema } from "ai";
15
8
  import { ContextManager } from "../../context/manager.js";
16
- import { summarizeToolContentForText } from "../../context/utils.js";
17
- import { shouldIncludeRawToolResult } from "../../utils/debug.js";
18
- import { getMaxInputTokensForModel, getEffectiveMaxInputTokens } from "../registry.js";
19
- import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
20
- import { LLMErrorCode } from "../error-codes.js";
21
- import { ErrorScope, ErrorType } from "../../errors/types.js";
22
- import { toError } from "../../utils/error-conversion.js";
23
- import { ToolErrorCode } from "../../tools/error-codes.js";
9
+ import { getEffectiveMaxInputTokens, getMaxInputTokensForModel } from "../registry.js";
24
10
  import { VercelMessageFormatter } from "../formatters/vercel.js";
25
- import { createTokenizer } from "../tokenizer/factory.js";
26
11
  import { InstrumentClass } from "../../telemetry/decorators.js";
27
12
  import { trace, context, propagation } from "@opentelemetry/api";
13
+ import { TurnExecutor } from "../executor/turn-executor.js";
14
+ import { MessageQueueService } from "../../session/message-queue.js";
15
+ import { DextoRuntimeError } from "../../errors/DextoRuntimeError.js";
16
+ import { LLMErrorCode } from "../error-codes.js";
28
17
  _VercelLLMService_decorators = [InstrumentClass({
29
18
  prefix: "llm.vercel",
30
- excludeMethods: ["getModelId", "getAllTools", "formatTools", "validateToolSupport"]
19
+ excludeMethods: ["getModelId", "getAllTools", "createTurnExecutor"]
31
20
  })];
32
21
  class VercelLLMService {
33
22
  model;
@@ -36,8 +25,9 @@ class VercelLLMService {
36
25
  contextManager;
37
26
  sessionEventBus;
38
27
  sessionId;
39
- toolSupportCache = /* @__PURE__ */ new Map();
40
28
  logger;
29
+ resourceManager;
30
+ messageQueue;
41
31
  /**
42
32
  * Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
43
33
  */
@@ -51,20 +41,19 @@ class VercelLLMService {
51
41
  this.toolManager = toolManager;
52
42
  this.sessionEventBus = sessionEventBus;
53
43
  this.sessionId = sessionId;
44
+ this.resourceManager = resourceManager;
45
+ this.messageQueue = new MessageQueueService(this.sessionEventBus, this.logger);
54
46
  const formatter = new VercelMessageFormatter(this.logger);
55
- const tokenizer = createTokenizer(config.provider, this.getModelId(), this.logger);
56
47
  const maxInputTokens = getEffectiveMaxInputTokens(config, this.logger);
57
48
  this.contextManager = new ContextManager(
58
49
  config,
59
50
  formatter,
60
51
  systemPromptManager,
61
52
  maxInputTokens,
62
- tokenizer,
63
53
  historyProvider,
64
54
  sessionId,
65
55
  resourceManager,
66
56
  this.logger
67
- // compressionStrategies uses default
68
57
  );
69
58
  this.logger.debug(
70
59
  `[VercelLLMService] Initialized for model: ${this.getModelId()}, provider: ${this.config.provider}, temperature: ${this.config.temperature}, maxOutputTokens: ${this.config.maxOutputTokens}`
@@ -73,134 +62,40 @@ class VercelLLMService {
73
62
  getAllTools() {
74
63
  return this.toolManager.getAllTools();
75
64
  }
76
- formatTools(tools) {
77
- this.logger.debug(`Formatting tools for vercel`);
78
- return Object.keys(tools).reduce((acc, toolName) => {
79
- const tool = tools[toolName];
80
- if (tool) {
81
- acc[toolName] = {
82
- inputSchema: jsonSchema(tool.parameters),
83
- execute: async (args, options) => {
84
- const callId = options.toolCallId;
85
- try {
86
- this.logger.debug(
87
- `[vercel] Emitting toolCall event for ${toolName} with callId ${callId}`
88
- );
89
- this.sessionEventBus.emit("llm:tool-call", {
90
- toolName,
91
- args,
92
- callId
93
- });
94
- const rawResult = await this.toolManager.executeTool(
95
- toolName,
96
- args,
97
- this.sessionId
98
- );
99
- const persisted = await this.contextManager.addToolResult(
100
- callId,
101
- toolName,
102
- rawResult,
103
- { success: true }
104
- );
105
- this.logger.debug(
106
- `[vercel] Emitting toolResult event for ${toolName} with callId ${callId}`
107
- );
108
- this.sessionEventBus.emit("llm:tool-result", {
109
- toolName,
110
- callId,
111
- success: true,
112
- sanitized: persisted,
113
- ...shouldIncludeRawToolResult() ? { rawResult } : {}
114
- });
115
- const summaryText = summarizeToolContentForText(persisted.content);
116
- return summaryText;
117
- } catch (err) {
118
- let errorResult;
119
- let errorFlags = "";
120
- if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.EXECUTION_DENIED) {
121
- errorResult = { error: err.message, denied: true };
122
- errorFlags = " (denied)";
123
- } else if (err instanceof DextoRuntimeError && err.code === ToolErrorCode.CONFIRMATION_TIMEOUT) {
124
- errorResult = { error: err.message, denied: true, timeout: true };
125
- errorFlags = " (timeout)";
126
- } else {
127
- const message = err instanceof Error ? err.message : String(err);
128
- errorResult = { error: message };
129
- }
130
- try {
131
- const persisted = await this.contextManager.addToolResult(
132
- callId,
133
- toolName,
134
- errorResult,
135
- { success: false }
136
- );
137
- this.sessionEventBus.emit("llm:tool-result", {
138
- toolName,
139
- callId,
140
- success: false,
141
- sanitized: persisted,
142
- ...shouldIncludeRawToolResult() ? { rawResult: errorResult } : {}
143
- });
144
- } catch (persistErr) {
145
- this.logger.error(
146
- `Failed to persist error result for ${toolName}: ${String(persistErr)}`
147
- );
148
- }
149
- return `Tool ${toolName} failed${errorFlags}: ${errorResult.error}`;
150
- }
151
- },
152
- ...tool.description && { description: tool.description }
153
- };
154
- }
155
- return acc;
156
- }, {});
157
- }
158
- async validateToolSupport() {
159
- const modelKey = `${this.config.provider}:${this.getModelId()}:${this.config.baseURL ?? ""}`;
160
- if (this.toolSupportCache.has(modelKey)) {
161
- return this.toolSupportCache.get(modelKey);
162
- }
163
- if (!this.config.baseURL) {
164
- this.logger.debug(`Skipping tool validation for ${modelKey} - no custom baseURL`);
165
- this.toolSupportCache.set(modelKey, true);
166
- return true;
167
- }
168
- this.logger.debug(`Testing tool support for custom endpoint model: ${modelKey}`);
169
- const testTool = {
170
- test_tool: {
171
- inputSchema: jsonSchema({
172
- type: "object",
173
- properties: {},
174
- additionalProperties: false
175
- }),
176
- execute: async () => ({ result: "test" })
177
- }
178
- };
179
- try {
180
- await generateText({
181
- model: this.model,
182
- messages: [{ role: "user", content: "Hello" }],
183
- tools: testTool,
184
- stopWhen: stepCountIs(1)
185
- });
186
- this.toolSupportCache.set(modelKey, true);
187
- this.logger.debug(`Model ${modelKey} supports tools`);
188
- return true;
189
- } catch (error) {
190
- const errorMessage = error instanceof Error ? error.message : String(error);
191
- if (errorMessage.includes("does not support tools")) {
192
- this.toolSupportCache.set(modelKey, false);
193
- this.logger.debug(`Model ${modelKey} does not support tools`);
194
- return false;
195
- }
196
- this.logger.debug(
197
- `Tool validation error for ${modelKey}, assuming supported: ${errorMessage}`
198
- );
199
- this.toolSupportCache.set(modelKey, true);
200
- return true;
201
- }
65
+ /**
66
+ * Create a TurnExecutor instance for executing the agent loop.
67
+ */
68
+ createTurnExecutor(externalSignal) {
69
+ return new TurnExecutor(
70
+ this.model,
71
+ this.toolManager,
72
+ this.contextManager,
73
+ this.sessionEventBus,
74
+ this.resourceManager,
75
+ this.sessionId,
76
+ {
77
+ maxSteps: this.config.maxIterations,
78
+ maxOutputTokens: this.config.maxOutputTokens,
79
+ temperature: this.config.temperature,
80
+ baseURL: this.config.baseURL
81
+ },
82
+ { provider: this.config.provider, model: this.getModelId() },
83
+ this.logger,
84
+ this.messageQueue,
85
+ void 0,
86
+ // modelLimits - TurnExecutor will use defaults
87
+ externalSignal
88
+ );
202
89
  }
203
- async completeTask(textInput, options, imageData, fileData, stream) {
90
+ /**
91
+ * Stream a response for the given content.
92
+ * Primary method for running conversations with multi-image support.
93
+ *
94
+ * @param content - String or ContentPart[] (text, images, files)
95
+ * @param options - { signal?: AbortSignal }
96
+ * @returns The assistant's text response
97
+ */
98
+ async stream(content, options) {
204
99
  const activeSpan = trace.getActiveSpan();
205
100
  const currentContext = context.active();
206
101
  const provider = this.config.provider;
@@ -223,331 +118,14 @@ class VercelLLMService {
223
118
  propagation.createBaggage(baggageEntries)
224
119
  );
225
120
  return await context.with(updatedContext, async () => {
226
- await this.contextManager.addUserMessage(textInput, imageData, fileData);
227
- const tools = await this.toolManager.getAllTools();
228
- this.logger.silly(
229
- `[VercelLLMService] Tools before formatting: ${JSON.stringify(tools, null, 2)}`
230
- );
231
- const formattedTools = this.formatTools(tools);
232
- this.logger.silly(
233
- `[VercelLLMService] Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`
234
- );
235
- let fullResponse = "";
236
- this.sessionEventBus.emit("llm:thinking");
237
- const prepared = await this.contextManager.getFormattedMessagesWithCompression(
238
- { mcpManager: this.toolManager.getMcpManager() },
239
- { provider: this.config.provider, model: this.getModelId() }
240
- );
241
- const formattedMessages = prepared.formattedMessages;
242
- const tokensUsed = prepared.tokensUsed;
243
- this.logger.silly(
244
- `Messages (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
245
- );
246
- this.logger.silly(`Tools: ${JSON.stringify(formattedTools, null, 2)}`);
247
- this.logger.debug(`Estimated tokens being sent to Vercel provider: ${tokensUsed}`);
248
- if (stream) {
249
- fullResponse = await this.streamText(
250
- formattedMessages,
251
- formattedTools,
252
- this.config.maxIterations,
253
- options?.signal
254
- );
255
- } else {
256
- fullResponse = await this.generateText(
257
- formattedMessages,
258
- formattedTools,
259
- this.config.maxIterations,
260
- options?.signal
261
- );
262
- }
263
- if (options?.signal?.aborted) {
264
- return fullResponse;
265
- }
266
- return fullResponse || `Reached maximum number of steps (${this.config.maxIterations}) without a final response.`;
121
+ const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
122
+ await this.contextManager.addUserMessage(parts);
123
+ const executor = this.createTurnExecutor(options?.signal);
124
+ const contributorContext = { mcpManager: this.toolManager.getMcpManager() };
125
+ const result = await executor.execute(contributorContext, true);
126
+ return result.text ?? "";
267
127
  });
268
128
  }
269
- async generateText(messages, tools, maxSteps = 50, signal) {
270
- const activeSpan = trace.getActiveSpan();
271
- if (activeSpan) {
272
- activeSpan.setAttribute("llm.provider", this.config.provider);
273
- activeSpan.setAttribute("llm.model", this.getModelId());
274
- }
275
- let stepIteration = 0;
276
- const estimatedTokens = Math.ceil(JSON.stringify(messages, null, 2).length / 4);
277
- this.logger.debug(
278
- `vercel generateText:Generating text with messages (${estimatedTokens} estimated tokens)`
279
- );
280
- const temperature = this.config.temperature;
281
- const maxOutputTokens = this.config.maxOutputTokens;
282
- const supportsTools = await this.validateToolSupport();
283
- const effectiveTools = supportsTools ? tools : {};
284
- if (!supportsTools && Object.keys(tools).length > 0) {
285
- this.logger.debug(
286
- `Model ${this.getModelId()} does not support tools, using empty tools object for generation`
287
- );
288
- }
289
- try {
290
- const includeMaxOutputTokens = typeof maxOutputTokens === "number";
291
- const response = await generateText({
292
- model: this.model,
293
- messages,
294
- tools: effectiveTools,
295
- ...signal ? { abortSignal: signal } : {},
296
- onStepFinish: async (step) => {
297
- this.logger.debug(`Step iteration: ${stepIteration}`);
298
- stepIteration++;
299
- this.logger.debug(`Step finished, text: ${step.text}`);
300
- this.logger.debug(
301
- `Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
302
- );
303
- this.logger.debug(
304
- `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
305
- );
306
- },
307
- stopWhen: stepCountIs(maxSteps),
308
- ...includeMaxOutputTokens ? { maxOutputTokens } : {},
309
- ...temperature !== void 0 && { temperature }
310
- });
311
- this.sessionEventBus.emit("llm:response", {
312
- content: response.text,
313
- ...response.reasoningText && { reasoning: response.reasoningText },
314
- provider: this.config.provider,
315
- model: this.getModelId(),
316
- router: "vercel",
317
- tokenUsage: {
318
- ...response.totalUsage.inputTokens !== void 0 && {
319
- inputTokens: response.totalUsage.inputTokens
320
- },
321
- ...response.totalUsage.outputTokens !== void 0 && {
322
- outputTokens: response.totalUsage.outputTokens
323
- },
324
- ...response.totalUsage.reasoningTokens !== void 0 && {
325
- reasoningTokens: response.totalUsage.reasoningTokens
326
- },
327
- ...response.totalUsage.totalTokens !== void 0 && {
328
- totalTokens: response.totalUsage.totalTokens
329
- }
330
- }
331
- });
332
- const activeSpan2 = trace.getActiveSpan();
333
- if (activeSpan2) {
334
- const attributes = {};
335
- if (response.totalUsage.inputTokens !== void 0) {
336
- attributes["gen_ai.usage.input_tokens"] = response.totalUsage.inputTokens;
337
- }
338
- if (response.totalUsage.outputTokens !== void 0) {
339
- attributes["gen_ai.usage.output_tokens"] = response.totalUsage.outputTokens;
340
- }
341
- if (response.totalUsage.totalTokens !== void 0) {
342
- attributes["gen_ai.usage.total_tokens"] = response.totalUsage.totalTokens;
343
- }
344
- if (response.totalUsage.reasoningTokens !== void 0) {
345
- attributes["gen_ai.usage.reasoning_tokens"] = response.totalUsage.reasoningTokens;
346
- }
347
- activeSpan2.setAttributes(attributes);
348
- }
349
- await this.contextManager.processLLMResponse(response);
350
- if (typeof response.totalUsage.totalTokens === "number") {
351
- this.contextManager.updateActualTokenCount(response.totalUsage.totalTokens);
352
- }
353
- return response.text;
354
- } catch (err) {
355
- const error = this.mapProviderError(err, "generate");
356
- this.sessionEventBus.emit("llm:error", {
357
- error,
358
- context: "generateText",
359
- recoverable: false
360
- });
361
- return "";
362
- }
363
- }
364
- mapProviderError(err, phase) {
365
- if (APICallError.isInstance?.(err)) {
366
- this.logger.error(`APICallError in mapProviderError: ${JSON.stringify(err, null, 2)}`);
367
- const status = err.statusCode;
368
- const headers = err.responseHeaders || {};
369
- const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
370
- const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
371
- if (status === 429) {
372
- return new DextoRuntimeError(
373
- LLMErrorCode.RATE_LIMIT_EXCEEDED,
374
- ErrorScope.LLM,
375
- ErrorType.RATE_LIMIT,
376
- `Rate limit exceeded${body ? ` - ${body}` : ""}`,
377
- {
378
- sessionId: this.sessionId,
379
- provider: this.config.provider,
380
- model: this.getModelId(),
381
- status,
382
- retryAfter,
383
- body,
384
- phase
385
- }
386
- );
387
- }
388
- if (status === 408) {
389
- return new DextoRuntimeError(
390
- LLMErrorCode.GENERATION_FAILED,
391
- ErrorScope.LLM,
392
- ErrorType.TIMEOUT,
393
- `Provider timed out${body ? ` - ${body}` : ""}`,
394
- {
395
- sessionId: this.sessionId,
396
- provider: this.config.provider,
397
- model: this.getModelId(),
398
- status,
399
- body,
400
- phase
401
- }
402
- );
403
- }
404
- return new DextoRuntimeError(
405
- LLMErrorCode.GENERATION_FAILED,
406
- ErrorScope.LLM,
407
- ErrorType.THIRD_PARTY,
408
- `Provider error ${status}${body ? ` - ${body}` : ""}`,
409
- {
410
- sessionId: this.sessionId,
411
- provider: this.config.provider,
412
- model: this.getModelId(),
413
- status,
414
- body,
415
- phase
416
- }
417
- );
418
- }
419
- return toError(err, this.logger);
420
- }
421
- // Updated streamText to behave like generateText - returns string and handles message processing internally
422
- async streamText(messages, tools, maxSteps = 10, signal) {
423
- const activeSpan = trace.getActiveSpan();
424
- if (activeSpan) {
425
- activeSpan.setAttribute("llm.provider", this.config.provider);
426
- activeSpan.setAttribute("llm.model", this.getModelId());
427
- }
428
- let stepIteration = 0;
429
- const temperature = this.config.temperature;
430
- const maxOutputTokens = this.config.maxOutputTokens;
431
- const supportsTools = await this.validateToolSupport();
432
- const effectiveTools = supportsTools ? tools : {};
433
- if (!supportsTools && Object.keys(tools).length > 0) {
434
- this.logger.debug(
435
- `Model ${this.getModelId()} does not support tools, using empty tools object for streaming`
436
- );
437
- }
438
- let streamErr;
439
- const includeMaxOutputTokens = typeof maxOutputTokens === "number";
440
- let response;
441
- response = streamText({
442
- model: this.model,
443
- messages,
444
- tools: effectiveTools,
445
- ...signal ? { abortSignal: signal } : {},
446
- onChunk: (chunk) => {
447
- this.logger.debug(`Chunk type: ${chunk.chunk.type}`);
448
- if (chunk.chunk.type === "text-delta") {
449
- this.sessionEventBus.emit("llm:chunk", {
450
- chunkType: "text",
451
- content: chunk.chunk.text,
452
- isComplete: false
453
- });
454
- } else if (chunk.chunk.type === "reasoning-delta") {
455
- this.sessionEventBus.emit("llm:chunk", {
456
- chunkType: "reasoning",
457
- content: chunk.chunk.text,
458
- isComplete: false
459
- });
460
- }
461
- },
462
- // TODO: Add onAbort handler when we implement partial response handling.
463
- // Vercel triggers onAbort instead of onError for cancelled streams.
464
- // This is where cancellation logic should be handled properly.
465
- onError: (error) => {
466
- const err = this.mapProviderError(error, "stream");
467
- this.logger.error(`Error in streamText after parsing: ${err.toString()}`);
468
- this.sessionEventBus.emit("llm:error", {
469
- error: err,
470
- context: "streamText",
471
- recoverable: false
472
- });
473
- streamErr = error;
474
- },
475
- onStepFinish: async (step) => {
476
- this.logger.debug(`Step iteration: ${stepIteration}`);
477
- stepIteration++;
478
- this.logger.debug(`Step finished, text: ${step.text}`);
479
- this.logger.debug(
480
- `Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
481
- );
482
- this.logger.debug(
483
- `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
484
- );
485
- },
486
- // No onFinish: we finalize after the stream completes below.
487
- stopWhen: stepCountIs(maxSteps),
488
- ...includeMaxOutputTokens ? { maxOutputTokens } : {},
489
- ...temperature !== void 0 && { temperature }
490
- });
491
- if (streamErr) {
492
- return "";
493
- }
494
- let finalText;
495
- let usage;
496
- let reasoningText;
497
- try {
498
- [finalText, usage, reasoningText] = await Promise.all([
499
- response.text,
500
- response.totalUsage,
501
- response.reasoningText
502
- ]);
503
- } catch (_error) {
504
- this.logger.debug(
505
- `streamText finalization failed while awaiting text/usage/reasoning: ${String(_error)}`
506
- );
507
- return "";
508
- }
509
- this.logger.debug(`streamText finalText: ${finalText}`);
510
- this.logger.debug(`streamText usage: ${JSON.stringify(usage, null, 2)}`);
511
- this.logger.debug(`streamText reasoningText: ${reasoningText}`);
512
- this.sessionEventBus.emit("llm:response", {
513
- content: finalText,
514
- ...reasoningText && { reasoning: reasoningText },
515
- provider: this.config.provider,
516
- model: this.getModelId(),
517
- router: "vercel",
518
- tokenUsage: {
519
- ...usage.inputTokens !== void 0 && { inputTokens: usage.inputTokens },
520
- ...usage.outputTokens !== void 0 && { outputTokens: usage.outputTokens },
521
- ...usage.reasoningTokens !== void 0 && {
522
- reasoningTokens: usage.reasoningTokens
523
- },
524
- ...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
525
- }
526
- });
527
- const activeSpan2 = trace.getActiveSpan();
528
- if (activeSpan2) {
529
- const attributes = {};
530
- if (usage.inputTokens !== void 0) {
531
- attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
532
- }
533
- if (usage.outputTokens !== void 0) {
534
- attributes["gen_ai.usage.output_tokens"] = usage.outputTokens;
535
- }
536
- if (usage.totalTokens !== void 0) {
537
- attributes["gen_ai.usage.total_tokens"] = usage.totalTokens;
538
- }
539
- if (usage.reasoningTokens !== void 0) {
540
- attributes["gen_ai.usage.reasoning_tokens"] = usage.reasoningTokens;
541
- }
542
- activeSpan2.setAttributes(attributes);
543
- }
544
- if (typeof usage.totalTokens === "number") {
545
- this.contextManager.updateActualTokenCount(usage.totalTokens);
546
- }
547
- await this.contextManager.processLLMStreamResponse(response);
548
- this.logger.silly(`streamText response object: ${JSON.stringify(response, null, 2)}`);
549
- return finalText;
550
- }
551
129
  /**
552
130
  * Get configuration information about the LLM service
553
131
  * @returns Configuration object with provider and model information
@@ -558,7 +136,6 @@ class VercelLLMService {
558
136
  try {
559
137
  modelMaxInputTokens = getMaxInputTokensForModel(
560
138
  this.config.provider,
561
- // Use our internal provider name
562
139
  this.getModelId(),
563
140
  this.logger
564
141
  );
@@ -573,9 +150,7 @@ class VercelLLMService {
573
150
  }
574
151
  }
575
152
  return {
576
- router: "vercel",
577
153
  provider: this.config.provider,
578
- // Use our internal provider name
579
154
  model: this.model,
580
155
  configuredMaxInputTokens: configuredMaxTokens,
581
156
  modelMaxInputTokens
@@ -587,6 +162,12 @@ class VercelLLMService {
587
162
  getContextManager() {
588
163
  return this.contextManager;
589
164
  }
165
+ /**
166
+ * Get the message queue for external access (e.g., queueing messages while busy)
167
+ */
168
+ getMessageQueue() {
169
+ return this.messageQueue;
170
+ }
590
171
  }
591
172
  _init = __decoratorStart(null);
592
173
  VercelLLMService = __decorateElement(_init, 0, "VercelLLMService", _VercelLLMService_decorators, VercelLLMService);
@@ -19,7 +19,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var types_exports = {};
20
20
  __export(types_exports, {
21
21
  LLM_PROVIDERS: () => LLM_PROVIDERS,
22
- LLM_ROUTERS: () => LLM_ROUTERS,
23
22
  SUPPORTED_FILE_TYPES: () => SUPPORTED_FILE_TYPES
24
23
  });
25
24
  module.exports = __toCommonJS(types_exports);
@@ -32,11 +31,9 @@ const LLM_PROVIDERS = [
32
31
  "xai",
33
32
  "cohere"
34
33
  ];
35
- const LLM_ROUTERS = ["vercel", "in-built"];
36
34
  const SUPPORTED_FILE_TYPES = ["pdf", "image", "audio"];
37
35
  // Annotate the CommonJS export names for ESM import in node:
38
36
  0 && (module.exports = {
39
37
  LLM_PROVIDERS,
40
- LLM_ROUTERS,
41
38
  SUPPORTED_FILE_TYPES
42
39
  });
@@ -1,14 +1,7 @@
1
1
  export declare const LLM_PROVIDERS: readonly ["openai", "openai-compatible", "anthropic", "google", "groq", "xai", "cohere"];
2
2
  export type LLMProvider = (typeof LLM_PROVIDERS)[number];
3
- export declare const LLM_ROUTERS: readonly ["vercel", "in-built"];
4
- export type LLMRouter = (typeof LLM_ROUTERS)[number];
5
3
  export declare const SUPPORTED_FILE_TYPES: readonly ["pdf", "image", "audio"];
6
4
  export type SupportedFileType = (typeof SUPPORTED_FILE_TYPES)[number];
7
- /**
8
- * LLMRouter defines the routing backend for LLM service instantiation.
9
- * 'vercel' = use Vercel LLM service, 'in-built' = use in-built LLM service
10
- * This type is now defined in the registry as the source of truth.
11
- */
12
5
  /**
13
6
  * Context interface for message formatters.
14
7
  * Provides runtime information for model-aware processing.
@@ -22,7 +15,14 @@ export interface LLMContext {
22
15
  export interface LLMUpdateContext {
23
16
  provider?: LLMProvider;
24
17
  model?: string;
25
- router?: LLMRouter;
26
18
  suggestedAction?: string;
27
19
  }
20
+ export interface TokenUsage {
21
+ inputTokens?: number;
22
+ outputTokens?: number;
23
+ reasoningTokens?: number;
24
+ totalTokens?: number;
25
+ cacheReadTokens?: number;
26
+ cacheWriteTokens?: number;
27
+ }
28
28
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,0FAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,WAAW,iCAAkC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,oBAAoB,oCAAqC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;GAIG;AACH;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACvB,mDAAmD;IACnD,QAAQ,EAAE,WAAW,CAAC;IAEtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,0FAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,oBAAoB,oCAAqC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACvB,mDAAmD;IACnD,QAAQ,EAAE,WAAW,CAAC;IAEtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
package/dist/llm/types.js CHANGED
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  const LLM_PROVIDERS = [
3
3
  "openai",
4
4
  "openai-compatible",
@@ -8,10 +8,8 @@ const LLM_PROVIDERS = [
8
8
  "xai",
9
9
  "cohere"
10
10
  ];
11
- const LLM_ROUTERS = ["vercel", "in-built"];
12
11
  const SUPPORTED_FILE_TYPES = ["pdf", "image", "audio"];
13
12
  export {
14
13
  LLM_PROVIDERS,
15
- LLM_ROUTERS,
16
14
  SUPPORTED_FILE_TYPES
17
15
  };
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { validateModelFileSupport, getAllowedMimeTypes } from "./registry.js";
3
3
  import { ok, fail } from "../utils/result.js";
4
4
  import { ErrorScope, ErrorType } from "../errors/types.js";