@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
@@ -66,26 +66,20 @@ __export(vercel_exports, {
66
66
  VercelLLMService: () => VercelLLMService
67
67
  });
68
68
  module.exports = __toCommonJS(vercel_exports);
69
- var import_ai = require("ai");
70
69
  var import_types2 = require("../../logger/v2/types.js");
71
- var import_ai2 = require("ai");
72
70
  var import_manager = require("../../context/manager.js");
73
- var import_utils = require("../../context/utils.js");
74
- var import_debug = require("../../utils/debug.js");
75
71
  var import_registry = require("../registry.js");
76
- var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
77
- var import_error_codes = require("../error-codes.js");
78
- var import_types5 = require("../../errors/types.js");
79
- var import_error_conversion = require("../../utils/error-conversion.js");
80
- var import_error_codes2 = require("../../tools/error-codes.js");
81
72
  var import_vercel = require("../formatters/vercel.js");
82
- var import_factory = require("../tokenizer/factory.js");
83
73
  var import_decorators = require("../../telemetry/decorators.js");
84
74
  var import_api = require("@opentelemetry/api");
75
+ var import_turn_executor = require("../executor/turn-executor.js");
76
+ var import_message_queue = require("../../session/message-queue.js");
77
+ var import_DextoRuntimeError = require("../../errors/DextoRuntimeError.js");
78
+ var import_error_codes = require("../error-codes.js");
85
79
  var _VercelLLMService_decorators, _init;
86
80
  _VercelLLMService_decorators = [(0, import_decorators.InstrumentClass)({
87
81
  prefix: "llm.vercel",
88
- excludeMethods: ["getModelId", "getAllTools", "formatTools", "validateToolSupport"]
82
+ excludeMethods: ["getModelId", "getAllTools", "createTurnExecutor"]
89
83
  })];
90
84
  class VercelLLMService {
91
85
  model;
@@ -94,8 +88,9 @@ class VercelLLMService {
94
88
  contextManager;
95
89
  sessionEventBus;
96
90
  sessionId;
97
- toolSupportCache = /* @__PURE__ */ new Map();
98
91
  logger;
92
+ resourceManager;
93
+ messageQueue;
99
94
  /**
100
95
  * Helper to extract model ID from LanguageModel union type (string | LanguageModelV2)
101
96
  */
@@ -109,20 +104,19 @@ class VercelLLMService {
109
104
  this.toolManager = toolManager;
110
105
  this.sessionEventBus = sessionEventBus;
111
106
  this.sessionId = sessionId;
107
+ this.resourceManager = resourceManager;
108
+ this.messageQueue = new import_message_queue.MessageQueueService(this.sessionEventBus, this.logger);
112
109
  const formatter = new import_vercel.VercelMessageFormatter(this.logger);
113
- const tokenizer = (0, import_factory.createTokenizer)(config.provider, this.getModelId(), this.logger);
114
110
  const maxInputTokens = (0, import_registry.getEffectiveMaxInputTokens)(config, this.logger);
115
111
  this.contextManager = new import_manager.ContextManager(
116
112
  config,
117
113
  formatter,
118
114
  systemPromptManager,
119
115
  maxInputTokens,
120
- tokenizer,
121
116
  historyProvider,
122
117
  sessionId,
123
118
  resourceManager,
124
119
  this.logger
125
- // compressionStrategies uses default
126
120
  );
127
121
  this.logger.debug(
128
122
  `[VercelLLMService] Initialized for model: ${this.getModelId()}, provider: ${this.config.provider}, temperature: ${this.config.temperature}, maxOutputTokens: ${this.config.maxOutputTokens}`
@@ -131,134 +125,40 @@ class VercelLLMService {
131
125
  getAllTools() {
132
126
  return this.toolManager.getAllTools();
133
127
  }
134
- formatTools(tools) {
135
- this.logger.debug(`Formatting tools for vercel`);
136
- return Object.keys(tools).reduce((acc, toolName) => {
137
- const tool = tools[toolName];
138
- if (tool) {
139
- acc[toolName] = {
140
- inputSchema: (0, import_ai2.jsonSchema)(tool.parameters),
141
- execute: async (args, options) => {
142
- const callId = options.toolCallId;
143
- try {
144
- this.logger.debug(
145
- `[vercel] Emitting toolCall event for ${toolName} with callId ${callId}`
146
- );
147
- this.sessionEventBus.emit("llm:tool-call", {
148
- toolName,
149
- args,
150
- callId
151
- });
152
- const rawResult = await this.toolManager.executeTool(
153
- toolName,
154
- args,
155
- this.sessionId
156
- );
157
- const persisted = await this.contextManager.addToolResult(
158
- callId,
159
- toolName,
160
- rawResult,
161
- { success: true }
162
- );
163
- this.logger.debug(
164
- `[vercel] Emitting toolResult event for ${toolName} with callId ${callId}`
165
- );
166
- this.sessionEventBus.emit("llm:tool-result", {
167
- toolName,
168
- callId,
169
- success: true,
170
- sanitized: persisted,
171
- ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult } : {}
172
- });
173
- const summaryText = (0, import_utils.summarizeToolContentForText)(persisted.content);
174
- return summaryText;
175
- } catch (err) {
176
- let errorResult;
177
- let errorFlags = "";
178
- if (err instanceof import_DextoRuntimeError.DextoRuntimeError && err.code === import_error_codes2.ToolErrorCode.EXECUTION_DENIED) {
179
- errorResult = { error: err.message, denied: true };
180
- errorFlags = " (denied)";
181
- } else if (err instanceof import_DextoRuntimeError.DextoRuntimeError && err.code === import_error_codes2.ToolErrorCode.CONFIRMATION_TIMEOUT) {
182
- errorResult = { error: err.message, denied: true, timeout: true };
183
- errorFlags = " (timeout)";
184
- } else {
185
- const message = err instanceof Error ? err.message : String(err);
186
- errorResult = { error: message };
187
- }
188
- try {
189
- const persisted = await this.contextManager.addToolResult(
190
- callId,
191
- toolName,
192
- errorResult,
193
- { success: false }
194
- );
195
- this.sessionEventBus.emit("llm:tool-result", {
196
- toolName,
197
- callId,
198
- success: false,
199
- sanitized: persisted,
200
- ...(0, import_debug.shouldIncludeRawToolResult)() ? { rawResult: errorResult } : {}
201
- });
202
- } catch (persistErr) {
203
- this.logger.error(
204
- `Failed to persist error result for ${toolName}: ${String(persistErr)}`
205
- );
206
- }
207
- return `Tool ${toolName} failed${errorFlags}: ${errorResult.error}`;
208
- }
209
- },
210
- ...tool.description && { description: tool.description }
211
- };
212
- }
213
- return acc;
214
- }, {});
215
- }
216
- async validateToolSupport() {
217
- const modelKey = `${this.config.provider}:${this.getModelId()}:${this.config.baseURL ?? ""}`;
218
- if (this.toolSupportCache.has(modelKey)) {
219
- return this.toolSupportCache.get(modelKey);
220
- }
221
- if (!this.config.baseURL) {
222
- this.logger.debug(`Skipping tool validation for ${modelKey} - no custom baseURL`);
223
- this.toolSupportCache.set(modelKey, true);
224
- return true;
225
- }
226
- this.logger.debug(`Testing tool support for custom endpoint model: ${modelKey}`);
227
- const testTool = {
228
- test_tool: {
229
- inputSchema: (0, import_ai2.jsonSchema)({
230
- type: "object",
231
- properties: {},
232
- additionalProperties: false
233
- }),
234
- execute: async () => ({ result: "test" })
235
- }
236
- };
237
- try {
238
- await (0, import_ai.generateText)({
239
- model: this.model,
240
- messages: [{ role: "user", content: "Hello" }],
241
- tools: testTool,
242
- stopWhen: (0, import_ai.stepCountIs)(1)
243
- });
244
- this.toolSupportCache.set(modelKey, true);
245
- this.logger.debug(`Model ${modelKey} supports tools`);
246
- return true;
247
- } catch (error) {
248
- const errorMessage = error instanceof Error ? error.message : String(error);
249
- if (errorMessage.includes("does not support tools")) {
250
- this.toolSupportCache.set(modelKey, false);
251
- this.logger.debug(`Model ${modelKey} does not support tools`);
252
- return false;
253
- }
254
- this.logger.debug(
255
- `Tool validation error for ${modelKey}, assuming supported: ${errorMessage}`
256
- );
257
- this.toolSupportCache.set(modelKey, true);
258
- return true;
259
- }
128
+ /**
129
+ * Create a TurnExecutor instance for executing the agent loop.
130
+ */
131
+ createTurnExecutor(externalSignal) {
132
+ return new import_turn_executor.TurnExecutor(
133
+ this.model,
134
+ this.toolManager,
135
+ this.contextManager,
136
+ this.sessionEventBus,
137
+ this.resourceManager,
138
+ this.sessionId,
139
+ {
140
+ maxSteps: this.config.maxIterations,
141
+ maxOutputTokens: this.config.maxOutputTokens,
142
+ temperature: this.config.temperature,
143
+ baseURL: this.config.baseURL
144
+ },
145
+ { provider: this.config.provider, model: this.getModelId() },
146
+ this.logger,
147
+ this.messageQueue,
148
+ void 0,
149
+ // modelLimits - TurnExecutor will use defaults
150
+ externalSignal
151
+ );
260
152
  }
261
- async completeTask(textInput, options, imageData, fileData, stream) {
153
+ /**
154
+ * Stream a response for the given content.
155
+ * Primary method for running conversations with multi-image support.
156
+ *
157
+ * @param content - String or ContentPart[] (text, images, files)
158
+ * @param options - { signal?: AbortSignal }
159
+ * @returns The assistant's text response
160
+ */
161
+ async stream(content, options) {
262
162
  const activeSpan = import_api.trace.getActiveSpan();
263
163
  const currentContext = import_api.context.active();
264
164
  const provider = this.config.provider;
@@ -281,330 +181,13 @@ class VercelLLMService {
281
181
  import_api.propagation.createBaggage(baggageEntries)
282
182
  );
283
183
  return await import_api.context.with(updatedContext, async () => {
284
- await this.contextManager.addUserMessage(textInput, imageData, fileData);
285
- const tools = await this.toolManager.getAllTools();
286
- this.logger.silly(
287
- `[VercelLLMService] Tools before formatting: ${JSON.stringify(tools, null, 2)}`
288
- );
289
- const formattedTools = this.formatTools(tools);
290
- this.logger.silly(
291
- `[VercelLLMService] Formatted tools: ${JSON.stringify(formattedTools, null, 2)}`
292
- );
293
- let fullResponse = "";
294
- this.sessionEventBus.emit("llm:thinking");
295
- const prepared = await this.contextManager.getFormattedMessagesWithCompression(
296
- { mcpManager: this.toolManager.getMcpManager() },
297
- { provider: this.config.provider, model: this.getModelId() }
298
- );
299
- const formattedMessages = prepared.formattedMessages;
300
- const tokensUsed = prepared.tokensUsed;
301
- this.logger.silly(
302
- `Messages (potentially compressed): ${JSON.stringify(formattedMessages, null, 2)}`
303
- );
304
- this.logger.silly(`Tools: ${JSON.stringify(formattedTools, null, 2)}`);
305
- this.logger.debug(`Estimated tokens being sent to Vercel provider: ${tokensUsed}`);
306
- if (stream) {
307
- fullResponse = await this.streamText(
308
- formattedMessages,
309
- formattedTools,
310
- this.config.maxIterations,
311
- options?.signal
312
- );
313
- } else {
314
- fullResponse = await this.generateText(
315
- formattedMessages,
316
- formattedTools,
317
- this.config.maxIterations,
318
- options?.signal
319
- );
320
- }
321
- if (options?.signal?.aborted) {
322
- return fullResponse;
323
- }
324
- return fullResponse || `Reached maximum number of steps (${this.config.maxIterations}) without a final response.`;
325
- });
326
- }
327
- async generateText(messages, tools, maxSteps = 50, signal) {
328
- const activeSpan = import_api.trace.getActiveSpan();
329
- if (activeSpan) {
330
- activeSpan.setAttribute("llm.provider", this.config.provider);
331
- activeSpan.setAttribute("llm.model", this.getModelId());
332
- }
333
- let stepIteration = 0;
334
- const estimatedTokens = Math.ceil(JSON.stringify(messages, null, 2).length / 4);
335
- this.logger.debug(
336
- `vercel generateText:Generating text with messages (${estimatedTokens} estimated tokens)`
337
- );
338
- const temperature = this.config.temperature;
339
- const maxOutputTokens = this.config.maxOutputTokens;
340
- const supportsTools = await this.validateToolSupport();
341
- const effectiveTools = supportsTools ? tools : {};
342
- if (!supportsTools && Object.keys(tools).length > 0) {
343
- this.logger.debug(
344
- `Model ${this.getModelId()} does not support tools, using empty tools object for generation`
345
- );
346
- }
347
- try {
348
- const includeMaxOutputTokens = typeof maxOutputTokens === "number";
349
- const response = await (0, import_ai.generateText)({
350
- model: this.model,
351
- messages,
352
- tools: effectiveTools,
353
- ...signal ? { abortSignal: signal } : {},
354
- onStepFinish: async (step) => {
355
- this.logger.debug(`Step iteration: ${stepIteration}`);
356
- stepIteration++;
357
- this.logger.debug(`Step finished, text: ${step.text}`);
358
- this.logger.debug(
359
- `Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
360
- );
361
- this.logger.debug(
362
- `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
363
- );
364
- },
365
- stopWhen: (0, import_ai.stepCountIs)(maxSteps),
366
- ...includeMaxOutputTokens ? { maxOutputTokens } : {},
367
- ...temperature !== void 0 && { temperature }
368
- });
369
- this.sessionEventBus.emit("llm:response", {
370
- content: response.text,
371
- ...response.reasoningText && { reasoning: response.reasoningText },
372
- provider: this.config.provider,
373
- model: this.getModelId(),
374
- router: "vercel",
375
- tokenUsage: {
376
- ...response.totalUsage.inputTokens !== void 0 && {
377
- inputTokens: response.totalUsage.inputTokens
378
- },
379
- ...response.totalUsage.outputTokens !== void 0 && {
380
- outputTokens: response.totalUsage.outputTokens
381
- },
382
- ...response.totalUsage.reasoningTokens !== void 0 && {
383
- reasoningTokens: response.totalUsage.reasoningTokens
384
- },
385
- ...response.totalUsage.totalTokens !== void 0 && {
386
- totalTokens: response.totalUsage.totalTokens
387
- }
388
- }
389
- });
390
- const activeSpan2 = import_api.trace.getActiveSpan();
391
- if (activeSpan2) {
392
- const attributes = {};
393
- if (response.totalUsage.inputTokens !== void 0) {
394
- attributes["gen_ai.usage.input_tokens"] = response.totalUsage.inputTokens;
395
- }
396
- if (response.totalUsage.outputTokens !== void 0) {
397
- attributes["gen_ai.usage.output_tokens"] = response.totalUsage.outputTokens;
398
- }
399
- if (response.totalUsage.totalTokens !== void 0) {
400
- attributes["gen_ai.usage.total_tokens"] = response.totalUsage.totalTokens;
401
- }
402
- if (response.totalUsage.reasoningTokens !== void 0) {
403
- attributes["gen_ai.usage.reasoning_tokens"] = response.totalUsage.reasoningTokens;
404
- }
405
- activeSpan2.setAttributes(attributes);
406
- }
407
- await this.contextManager.processLLMResponse(response);
408
- if (typeof response.totalUsage.totalTokens === "number") {
409
- this.contextManager.updateActualTokenCount(response.totalUsage.totalTokens);
410
- }
411
- return response.text;
412
- } catch (err) {
413
- const error = this.mapProviderError(err, "generate");
414
- this.sessionEventBus.emit("llm:error", {
415
- error,
416
- context: "generateText",
417
- recoverable: false
418
- });
419
- return "";
420
- }
421
- }
422
- mapProviderError(err, phase) {
423
- if (import_ai.APICallError.isInstance?.(err)) {
424
- this.logger.error(`APICallError in mapProviderError: ${JSON.stringify(err, null, 2)}`);
425
- const status = err.statusCode;
426
- const headers = err.responseHeaders || {};
427
- const retryAfter = headers["retry-after"] ? Number(headers["retry-after"]) : void 0;
428
- const body = typeof err.responseBody === "string" ? err.responseBody : JSON.stringify(err.responseBody ?? "");
429
- if (status === 429) {
430
- return new import_DextoRuntimeError.DextoRuntimeError(
431
- import_error_codes.LLMErrorCode.RATE_LIMIT_EXCEEDED,
432
- import_types5.ErrorScope.LLM,
433
- import_types5.ErrorType.RATE_LIMIT,
434
- `Rate limit exceeded${body ? ` - ${body}` : ""}`,
435
- {
436
- sessionId: this.sessionId,
437
- provider: this.config.provider,
438
- model: this.getModelId(),
439
- status,
440
- retryAfter,
441
- body,
442
- phase
443
- }
444
- );
445
- }
446
- if (status === 408) {
447
- return new import_DextoRuntimeError.DextoRuntimeError(
448
- import_error_codes.LLMErrorCode.GENERATION_FAILED,
449
- import_types5.ErrorScope.LLM,
450
- import_types5.ErrorType.TIMEOUT,
451
- `Provider timed out${body ? ` - ${body}` : ""}`,
452
- {
453
- sessionId: this.sessionId,
454
- provider: this.config.provider,
455
- model: this.getModelId(),
456
- status,
457
- body,
458
- phase
459
- }
460
- );
461
- }
462
- return new import_DextoRuntimeError.DextoRuntimeError(
463
- import_error_codes.LLMErrorCode.GENERATION_FAILED,
464
- import_types5.ErrorScope.LLM,
465
- import_types5.ErrorType.THIRD_PARTY,
466
- `Provider error ${status}${body ? ` - ${body}` : ""}`,
467
- {
468
- sessionId: this.sessionId,
469
- provider: this.config.provider,
470
- model: this.getModelId(),
471
- status,
472
- body,
473
- phase
474
- }
475
- );
476
- }
477
- return (0, import_error_conversion.toError)(err, this.logger);
478
- }
479
- // Updated streamText to behave like generateText - returns string and handles message processing internally
480
- async streamText(messages, tools, maxSteps = 10, signal) {
481
- const activeSpan = import_api.trace.getActiveSpan();
482
- if (activeSpan) {
483
- activeSpan.setAttribute("llm.provider", this.config.provider);
484
- activeSpan.setAttribute("llm.model", this.getModelId());
485
- }
486
- let stepIteration = 0;
487
- const temperature = this.config.temperature;
488
- const maxOutputTokens = this.config.maxOutputTokens;
489
- const supportsTools = await this.validateToolSupport();
490
- const effectiveTools = supportsTools ? tools : {};
491
- if (!supportsTools && Object.keys(tools).length > 0) {
492
- this.logger.debug(
493
- `Model ${this.getModelId()} does not support tools, using empty tools object for streaming`
494
- );
495
- }
496
- let streamErr;
497
- const includeMaxOutputTokens = typeof maxOutputTokens === "number";
498
- let response;
499
- response = (0, import_ai.streamText)({
500
- model: this.model,
501
- messages,
502
- tools: effectiveTools,
503
- ...signal ? { abortSignal: signal } : {},
504
- onChunk: (chunk) => {
505
- this.logger.debug(`Chunk type: ${chunk.chunk.type}`);
506
- if (chunk.chunk.type === "text-delta") {
507
- this.sessionEventBus.emit("llm:chunk", {
508
- chunkType: "text",
509
- content: chunk.chunk.text,
510
- isComplete: false
511
- });
512
- } else if (chunk.chunk.type === "reasoning-delta") {
513
- this.sessionEventBus.emit("llm:chunk", {
514
- chunkType: "reasoning",
515
- content: chunk.chunk.text,
516
- isComplete: false
517
- });
518
- }
519
- },
520
- // TODO: Add onAbort handler when we implement partial response handling.
521
- // Vercel triggers onAbort instead of onError for cancelled streams.
522
- // This is where cancellation logic should be handled properly.
523
- onError: (error) => {
524
- const err = this.mapProviderError(error, "stream");
525
- this.logger.error(`Error in streamText after parsing: ${err.toString()}`);
526
- this.sessionEventBus.emit("llm:error", {
527
- error: err,
528
- context: "streamText",
529
- recoverable: false
530
- });
531
- streamErr = error;
532
- },
533
- onStepFinish: async (step) => {
534
- this.logger.debug(`Step iteration: ${stepIteration}`);
535
- stepIteration++;
536
- this.logger.debug(`Step finished, text: ${step.text}`);
537
- this.logger.debug(
538
- `Step finished, step tool calls: ${JSON.stringify(step.toolCalls, null, 2)}`
539
- );
540
- this.logger.debug(
541
- `Step finished, step tool results: ${JSON.stringify(step.toolResults, null, 2)}`
542
- );
543
- },
544
- // No onFinish: we finalize after the stream completes below.
545
- stopWhen: (0, import_ai.stepCountIs)(maxSteps),
546
- ...includeMaxOutputTokens ? { maxOutputTokens } : {},
547
- ...temperature !== void 0 && { temperature }
184
+ const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
185
+ await this.contextManager.addUserMessage(parts);
186
+ const executor = this.createTurnExecutor(options?.signal);
187
+ const contributorContext = { mcpManager: this.toolManager.getMcpManager() };
188
+ const result = await executor.execute(contributorContext, true);
189
+ return result.text ?? "";
548
190
  });
549
- if (streamErr) {
550
- return "";
551
- }
552
- let finalText;
553
- let usage;
554
- let reasoningText;
555
- try {
556
- [finalText, usage, reasoningText] = await Promise.all([
557
- response.text,
558
- response.totalUsage,
559
- response.reasoningText
560
- ]);
561
- } catch (_error) {
562
- this.logger.debug(
563
- `streamText finalization failed while awaiting text/usage/reasoning: ${String(_error)}`
564
- );
565
- return "";
566
- }
567
- this.logger.debug(`streamText finalText: ${finalText}`);
568
- this.logger.debug(`streamText usage: ${JSON.stringify(usage, null, 2)}`);
569
- this.logger.debug(`streamText reasoningText: ${reasoningText}`);
570
- this.sessionEventBus.emit("llm:response", {
571
- content: finalText,
572
- ...reasoningText && { reasoning: reasoningText },
573
- provider: this.config.provider,
574
- model: this.getModelId(),
575
- router: "vercel",
576
- tokenUsage: {
577
- ...usage.inputTokens !== void 0 && { inputTokens: usage.inputTokens },
578
- ...usage.outputTokens !== void 0 && { outputTokens: usage.outputTokens },
579
- ...usage.reasoningTokens !== void 0 && {
580
- reasoningTokens: usage.reasoningTokens
581
- },
582
- ...usage.totalTokens !== void 0 && { totalTokens: usage.totalTokens }
583
- }
584
- });
585
- const activeSpan2 = import_api.trace.getActiveSpan();
586
- if (activeSpan2) {
587
- const attributes = {};
588
- if (usage.inputTokens !== void 0) {
589
- attributes["gen_ai.usage.input_tokens"] = usage.inputTokens;
590
- }
591
- if (usage.outputTokens !== void 0) {
592
- attributes["gen_ai.usage.output_tokens"] = usage.outputTokens;
593
- }
594
- if (usage.totalTokens !== void 0) {
595
- attributes["gen_ai.usage.total_tokens"] = usage.totalTokens;
596
- }
597
- if (usage.reasoningTokens !== void 0) {
598
- attributes["gen_ai.usage.reasoning_tokens"] = usage.reasoningTokens;
599
- }
600
- activeSpan2.setAttributes(attributes);
601
- }
602
- if (typeof usage.totalTokens === "number") {
603
- this.contextManager.updateActualTokenCount(usage.totalTokens);
604
- }
605
- await this.contextManager.processLLMStreamResponse(response);
606
- this.logger.silly(`streamText response object: ${JSON.stringify(response, null, 2)}`);
607
- return finalText;
608
191
  }
609
192
  /**
610
193
  * Get configuration information about the LLM service
@@ -616,7 +199,6 @@ class VercelLLMService {
616
199
  try {
617
200
  modelMaxInputTokens = (0, import_registry.getMaxInputTokensForModel)(
618
201
  this.config.provider,
619
- // Use our internal provider name
620
202
  this.getModelId(),
621
203
  this.logger
622
204
  );
@@ -631,9 +213,7 @@ class VercelLLMService {
631
213
  }
632
214
  }
633
215
  return {
634
- router: "vercel",
635
216
  provider: this.config.provider,
636
- // Use our internal provider name
637
217
  model: this.model,
638
218
  configuredMaxInputTokens: configuredMaxTokens,
639
219
  modelMaxInputTokens
@@ -645,6 +225,12 @@ class VercelLLMService {
645
225
  getContextManager() {
646
226
  return this.contextManager;
647
227
  }
228
+ /**
229
+ * Get the message queue for external access (e.g., queueing messages while busy)
230
+ */
231
+ getMessageQueue() {
232
+ return this.messageQueue;
233
+ }
648
234
  }
649
235
  _init = __decoratorStart(null);
650
236
  VercelLLMService = __decorateElement(_init, 0, "VercelLLMService", _VercelLLMService_decorators, VercelLLMService);