@dexto/core 1.2.6 → 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 (515) hide show
  1. package/README.md +55 -13
  2. package/dist/agent/DextoAgent.cjs +627 -228
  3. package/dist/agent/DextoAgent.d.ts +157 -34
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +625 -227
  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 +4 -1
  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 +7 -3
  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 -11
  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 +20 -5
  36. package/dist/approval/schemas.d.ts +127 -52
  37. package/dist/approval/schemas.d.ts.map +1 -1
  38. package/dist/approval/schemas.js +21 -6
  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/factory.cjs → context/compression/overflow.cjs} +20 -21
  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 +287 -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 +287 -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 +185 -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.cjs +1 -0
  81. package/dist/errors/types.d.ts +4 -2
  82. package/dist/errors/types.d.ts.map +1 -1
  83. package/dist/errors/types.js +2 -1
  84. package/dist/events/index.cjs +22 -2
  85. package/dist/events/index.d.ts +170 -62
  86. package/dist/events/index.d.ts.map +1 -1
  87. package/dist/events/index.js +23 -3
  88. package/dist/filesystem/error-codes.js +1 -1
  89. package/dist/filesystem/errors.js +1 -1
  90. package/dist/filesystem/filesystem-service.js +1 -1
  91. package/dist/filesystem/index.js +1 -1
  92. package/dist/filesystem/path-validator.js +1 -1
  93. package/dist/index.browser.cjs +23 -8
  94. package/dist/index.browser.d.ts +4 -3
  95. package/dist/index.browser.d.ts.map +1 -1
  96. package/dist/index.browser.js +20 -3
  97. package/dist/index.js +1 -1
  98. package/dist/llm/error-codes.cjs +0 -1
  99. package/dist/llm/error-codes.d.ts +0 -1
  100. package/dist/llm/error-codes.d.ts.map +1 -1
  101. package/dist/llm/error-codes.js +1 -2
  102. package/dist/llm/errors.cjs +10 -10
  103. package/dist/llm/errors.d.ts +5 -6
  104. package/dist/llm/errors.d.ts.map +1 -1
  105. package/dist/llm/errors.js +12 -12
  106. package/dist/llm/executor/stream-processor.cjs +367 -0
  107. package/dist/llm/executor/stream-processor.d.ts +55 -0
  108. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  109. package/dist/llm/executor/stream-processor.js +344 -0
  110. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  111. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  112. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  113. package/dist/llm/executor/tool-output-truncator.js +48 -0
  114. package/dist/llm/executor/turn-executor.cjs +753 -0
  115. package/dist/llm/executor/turn-executor.d.ts +166 -0
  116. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  117. package/dist/llm/executor/turn-executor.js +684 -0
  118. package/dist/llm/executor/types.d.ts +27 -0
  119. package/dist/llm/executor/types.d.ts.map +1 -0
  120. package/dist/llm/formatters/vercel.cjs +20 -186
  121. package/dist/llm/formatters/vercel.d.ts +2 -14
  122. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  123. package/dist/llm/formatters/vercel.js +19 -185
  124. package/dist/llm/registry.cjs +36 -45
  125. package/dist/llm/registry.d.ts +53 -39
  126. package/dist/llm/registry.d.ts.map +1 -1
  127. package/dist/llm/registry.js +34 -42
  128. package/dist/llm/resolver.cjs +1 -31
  129. package/dist/llm/resolver.d.ts.map +1 -1
  130. package/dist/llm/resolver.js +2 -34
  131. package/dist/llm/schemas.cjs +2 -17
  132. package/dist/llm/schemas.d.ts +10 -23
  133. package/dist/llm/schemas.d.ts.map +1 -1
  134. package/dist/llm/schemas.js +5 -22
  135. package/dist/llm/services/factory.cjs +3 -92
  136. package/dist/llm/services/factory.d.ts +14 -4
  137. package/dist/llm/services/factory.d.ts.map +1 -1
  138. package/dist/llm/services/factory.js +4 -83
  139. package/dist/llm/services/test-utils.integration.cjs +6 -8
  140. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  141. package/dist/llm/services/test-utils.integration.js +7 -9
  142. package/dist/llm/services/types.d.ts +1 -28
  143. package/dist/llm/services/types.d.ts.map +1 -1
  144. package/dist/llm/services/vercel.cjs +54 -468
  145. package/dist/llm/services/vercel.d.ts +38 -21
  146. package/dist/llm/services/vercel.d.ts.map +1 -1
  147. package/dist/llm/services/vercel.js +56 -475
  148. package/dist/llm/types.cjs +0 -3
  149. package/dist/llm/types.d.ts +8 -8
  150. package/dist/llm/types.d.ts.map +1 -1
  151. package/dist/llm/types.js +1 -3
  152. package/dist/llm/validation.js +1 -1
  153. package/dist/logger/browser.js +1 -1
  154. package/dist/logger/factory.js +1 -1
  155. package/dist/logger/index.js +1 -1
  156. package/dist/logger/logger.js +1 -1
  157. package/dist/logger/v2/dexto-logger.cjs +34 -6
  158. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  159. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  160. package/dist/logger/v2/dexto-logger.js +35 -7
  161. package/dist/logger/v2/error-codes.js +1 -1
  162. package/dist/logger/v2/errors.js +1 -1
  163. package/dist/logger/v2/schemas.cjs +1 -1
  164. package/dist/logger/v2/schemas.js +2 -2
  165. package/dist/logger/v2/test-utils.cjs +70 -0
  166. package/dist/logger/v2/test-utils.d.ts +17 -0
  167. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  168. package/dist/logger/v2/test-utils.js +46 -0
  169. package/dist/logger/v2/transport-factory.js +1 -1
  170. package/dist/logger/v2/transports/console-transport.js +1 -1
  171. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  172. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  173. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  174. package/dist/logger/v2/transports/file-transport.js +7 -1
  175. package/dist/logger/v2/types.cjs +1 -0
  176. package/dist/logger/v2/types.d.ts +18 -2
  177. package/dist/logger/v2/types.d.ts.map +1 -1
  178. package/dist/logger/v2/types.js +2 -1
  179. package/dist/mcp/error-codes.cjs +1 -0
  180. package/dist/mcp/error-codes.d.ts +1 -0
  181. package/dist/mcp/error-codes.d.ts.map +1 -1
  182. package/dist/mcp/error-codes.js +2 -1
  183. package/dist/mcp/errors.cjs +13 -0
  184. package/dist/mcp/errors.d.ts +7 -0
  185. package/dist/mcp/errors.d.ts.map +1 -1
  186. package/dist/mcp/errors.js +14 -1
  187. package/dist/mcp/manager.cjs +4 -0
  188. package/dist/mcp/manager.d.ts.map +1 -1
  189. package/dist/mcp/manager.js +5 -1
  190. package/dist/mcp/mcp-client.js +1 -1
  191. package/dist/mcp/resolver.js +1 -1
  192. package/dist/mcp/schemas.cjs +6 -0
  193. package/dist/mcp/schemas.d.ts +52 -0
  194. package/dist/mcp/schemas.d.ts.map +1 -1
  195. package/dist/mcp/schemas.js +6 -1
  196. package/dist/memory/error-codes.js +1 -1
  197. package/dist/memory/errors.js +1 -1
  198. package/dist/memory/index.js +1 -1
  199. package/dist/memory/manager.js +1 -1
  200. package/dist/memory/schemas.d.ts +2 -2
  201. package/dist/memory/schemas.js +1 -1
  202. package/dist/plugins/builtins/content-policy.js +1 -1
  203. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  204. package/dist/plugins/error-codes.cjs +1 -0
  205. package/dist/plugins/error-codes.d.ts +3 -1
  206. package/dist/plugins/error-codes.d.ts.map +1 -1
  207. package/dist/plugins/error-codes.js +2 -1
  208. package/dist/plugins/index.js +1 -1
  209. package/dist/plugins/loader.cjs +25 -5
  210. package/dist/plugins/loader.d.ts.map +1 -1
  211. package/dist/plugins/loader.js +26 -6
  212. package/dist/plugins/manager.js +1 -1
  213. package/dist/plugins/registrations/builtins.js +1 -1
  214. package/dist/plugins/schemas.d.ts +3 -3
  215. package/dist/plugins/schemas.js +1 -1
  216. package/dist/plugins/types.d.ts +0 -1
  217. package/dist/plugins/types.d.ts.map +1 -1
  218. package/dist/process/command-validator.js +1 -1
  219. package/dist/process/error-codes.js +1 -1
  220. package/dist/process/errors.js +1 -1
  221. package/dist/process/index.js +1 -1
  222. package/dist/process/process-service.cjs +78 -26
  223. package/dist/process/process-service.d.ts +6 -1
  224. package/dist/process/process-service.d.ts.map +1 -1
  225. package/dist/process/process-service.js +79 -27
  226. package/dist/process/types.d.ts +2 -2
  227. package/dist/process/types.d.ts.map +1 -1
  228. package/dist/prompts/error-codes.cjs +1 -0
  229. package/dist/prompts/error-codes.d.ts +2 -1
  230. package/dist/prompts/error-codes.d.ts.map +1 -1
  231. package/dist/prompts/error-codes.js +2 -1
  232. package/dist/prompts/errors.cjs +15 -0
  233. package/dist/prompts/errors.d.ts +4 -0
  234. package/dist/prompts/errors.d.ts.map +1 -1
  235. package/dist/prompts/errors.js +16 -1
  236. package/dist/prompts/index.js +1 -1
  237. package/dist/prompts/name-validation.js +1 -1
  238. package/dist/prompts/prompt-manager.cjs +13 -2
  239. package/dist/prompts/prompt-manager.d.ts +7 -0
  240. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  241. package/dist/prompts/prompt-manager.js +14 -3
  242. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  243. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  244. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  245. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  246. package/dist/prompts/providers/custom-prompt-provider.cjs +2 -2
  247. package/dist/prompts/providers/custom-prompt-provider.d.ts +1 -1
  248. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  249. package/dist/prompts/providers/custom-prompt-provider.js +3 -3
  250. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  251. package/dist/prompts/schemas.d.ts +12 -0
  252. package/dist/prompts/schemas.d.ts.map +1 -1
  253. package/dist/prompts/schemas.js +1 -1
  254. package/dist/prompts/types.d.ts +2 -0
  255. package/dist/prompts/types.d.ts.map +1 -1
  256. package/dist/prompts/utils.js +1 -1
  257. package/dist/resources/error-codes.js +1 -1
  258. package/dist/resources/errors.js +1 -1
  259. package/dist/resources/handlers/blob-handler.js +1 -1
  260. package/dist/resources/handlers/factory.js +1 -1
  261. package/dist/resources/handlers/filesystem-handler.js +1 -1
  262. package/dist/resources/index.js +1 -1
  263. package/dist/resources/internal-provider.js +1 -1
  264. package/dist/resources/manager.js +1 -1
  265. package/dist/resources/reference-parser.js +1 -1
  266. package/dist/resources/schemas.js +1 -1
  267. package/dist/search/index.js +1 -1
  268. package/dist/search/search-service.js +1 -1
  269. package/dist/session/chat-session.cjs +149 -51
  270. package/dist/session/chat-session.d.ts +69 -29
  271. package/dist/session/chat-session.d.ts.map +1 -1
  272. package/dist/session/chat-session.js +150 -52
  273. package/dist/session/error-codes.js +1 -1
  274. package/dist/session/errors.js +1 -1
  275. package/dist/session/history/database.cjs +134 -21
  276. package/dist/session/history/database.d.ts +37 -8
  277. package/dist/session/history/database.d.ts.map +1 -1
  278. package/dist/session/history/database.js +135 -22
  279. package/dist/session/history/factory.js +1 -1
  280. package/dist/session/history/memory.cjs +18 -0
  281. package/dist/session/history/memory.d.ts +8 -0
  282. package/dist/session/history/memory.d.ts.map +1 -1
  283. package/dist/session/history/memory.js +19 -1
  284. package/dist/session/history/types.d.ts +13 -1
  285. package/dist/session/history/types.d.ts.map +1 -1
  286. package/dist/session/index.cjs +3 -0
  287. package/dist/session/index.d.ts +3 -0
  288. package/dist/session/index.d.ts.map +1 -1
  289. package/dist/session/index.js +3 -1
  290. package/dist/session/message-queue.cjs +201 -0
  291. package/dist/session/message-queue.d.ts +114 -0
  292. package/dist/session/message-queue.d.ts.map +1 -0
  293. package/dist/session/message-queue.js +178 -0
  294. package/dist/session/schemas.js +1 -1
  295. package/dist/session/session-manager.cjs +57 -7
  296. package/dist/session/session-manager.d.ts +18 -0
  297. package/dist/session/session-manager.d.ts.map +1 -1
  298. package/dist/session/session-manager.js +58 -8
  299. package/dist/session/title-generator.cjs +4 -8
  300. package/dist/session/title-generator.d.ts +1 -2
  301. package/dist/session/title-generator.d.ts.map +1 -1
  302. package/dist/session/title-generator.js +5 -9
  303. package/dist/session/types.cjs +16 -0
  304. package/dist/session/types.d.ts +14 -0
  305. package/dist/session/types.d.ts.map +1 -0
  306. package/dist/session/types.js +0 -0
  307. package/dist/storage/blob/factory.js +1 -1
  308. package/dist/storage/blob/local-blob-store.js +1 -1
  309. package/dist/storage/blob/memory-blob-store.js +1 -1
  310. package/dist/storage/blob/schemas.js +1 -1
  311. package/dist/storage/cache/factory.cjs +6 -2
  312. package/dist/storage/cache/factory.d.ts +2 -1
  313. package/dist/storage/cache/factory.d.ts.map +1 -1
  314. package/dist/storage/cache/factory.js +7 -3
  315. package/dist/storage/cache/memory-cache-store.js +1 -1
  316. package/dist/storage/cache/redis-store.js +1 -1
  317. package/dist/storage/cache/schemas.js +1 -1
  318. package/dist/storage/database/factory.cjs +11 -17
  319. package/dist/storage/database/factory.d.ts +2 -1
  320. package/dist/storage/database/factory.d.ts.map +1 -1
  321. package/dist/storage/database/factory.js +12 -18
  322. package/dist/storage/database/memory-database-store.js +1 -1
  323. package/dist/storage/database/postgres-store.cjs +12 -0
  324. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  325. package/dist/storage/database/postgres-store.js +13 -1
  326. package/dist/storage/database/schemas.js +1 -1
  327. package/dist/storage/database/sqlite-store.cjs +8 -0
  328. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  329. package/dist/storage/database/sqlite-store.js +9 -1
  330. package/dist/storage/error-codes.cjs +1 -0
  331. package/dist/storage/error-codes.d.ts +1 -0
  332. package/dist/storage/error-codes.d.ts.map +1 -1
  333. package/dist/storage/error-codes.js +2 -1
  334. package/dist/storage/errors.cjs +17 -0
  335. package/dist/storage/errors.d.ts +9 -0
  336. package/dist/storage/errors.d.ts.map +1 -1
  337. package/dist/storage/errors.js +18 -1
  338. package/dist/storage/index.js +1 -1
  339. package/dist/storage/schemas.js +1 -1
  340. package/dist/storage/storage-manager.js +1 -1
  341. package/dist/systemPrompt/contributors.js +1 -1
  342. package/dist/systemPrompt/error-codes.js +1 -1
  343. package/dist/systemPrompt/errors.js +1 -1
  344. package/dist/systemPrompt/in-built-prompts.js +1 -1
  345. package/dist/systemPrompt/index.js +1 -1
  346. package/dist/systemPrompt/manager.js +1 -1
  347. package/dist/systemPrompt/registry.js +1 -1
  348. package/dist/systemPrompt/schemas.d.ts +5 -5
  349. package/dist/systemPrompt/schemas.js +1 -1
  350. package/dist/telemetry/decorators.js +1 -1
  351. package/dist/{llm/tokenizer/default.cjs → telemetry/error-codes.cjs} +14 -19
  352. package/dist/telemetry/error-codes.d.ts +13 -0
  353. package/dist/telemetry/error-codes.d.ts.map +1 -0
  354. package/dist/telemetry/error-codes.js +13 -0
  355. package/dist/telemetry/errors.cjs +105 -0
  356. package/dist/telemetry/errors.d.ts +28 -0
  357. package/dist/telemetry/errors.d.ts.map +1 -0
  358. package/dist/telemetry/errors.js +82 -0
  359. package/dist/telemetry/exporters.js +1 -1
  360. package/dist/telemetry/index.js +1 -1
  361. package/dist/telemetry/schemas.js +1 -1
  362. package/dist/telemetry/telemetry.cjs +92 -26
  363. package/dist/telemetry/telemetry.d.ts +1 -1
  364. package/dist/telemetry/telemetry.d.ts.map +1 -1
  365. package/dist/telemetry/telemetry.js +75 -19
  366. package/dist/telemetry/utils.js +1 -1
  367. package/dist/tools/bash-pattern-utils.cjs +91 -0
  368. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  369. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  370. package/dist/tools/bash-pattern-utils.js +64 -0
  371. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  372. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  373. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  374. package/dist/tools/display-types.cjs +60 -0
  375. package/dist/tools/display-types.d.ts +133 -0
  376. package/dist/tools/display-types.d.ts.map +1 -0
  377. package/dist/tools/display-types.js +32 -0
  378. package/dist/tools/error-codes.cjs +2 -0
  379. package/dist/tools/error-codes.d.ts +3 -1
  380. package/dist/tools/error-codes.d.ts.map +1 -1
  381. package/dist/tools/error-codes.js +3 -1
  382. package/dist/tools/errors.cjs +30 -0
  383. package/dist/tools/errors.d.ts +16 -0
  384. package/dist/tools/errors.d.ts.map +1 -1
  385. package/dist/tools/errors.js +31 -1
  386. package/dist/tools/index.cjs +2 -0
  387. package/dist/tools/index.d.ts +1 -0
  388. package/dist/tools/index.d.ts.map +1 -1
  389. package/dist/tools/index.js +2 -1
  390. package/dist/tools/internal-tools/constants.js +1 -1
  391. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  392. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  393. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
  394. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
  395. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
  396. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
  397. package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
  398. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  399. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
  400. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
  401. package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
  402. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
  403. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
  404. package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
  405. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
  406. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
  407. package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
  408. package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
  409. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
  410. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
  411. package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
  412. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  413. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
  414. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
  415. package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
  416. package/dist/tools/internal-tools/provider.cjs +27 -10
  417. package/dist/tools/internal-tools/provider.d.ts +8 -5
  418. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  419. package/dist/tools/internal-tools/provider.js +28 -11
  420. package/dist/tools/internal-tools/registry.cjs +4 -3
  421. package/dist/tools/internal-tools/registry.d.ts +28 -7
  422. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  423. package/dist/tools/internal-tools/registry.js +5 -4
  424. package/dist/tools/schemas.cjs +17 -7
  425. package/dist/tools/schemas.d.ts +31 -4
  426. package/dist/tools/schemas.d.ts.map +1 -1
  427. package/dist/tools/schemas.js +15 -7
  428. package/dist/tools/tool-manager.cjs +140 -18
  429. package/dist/tools/tool-manager.d.ts +23 -1
  430. package/dist/tools/tool-manager.d.ts.map +1 -1
  431. package/dist/tools/tool-manager.js +145 -19
  432. package/dist/tools/types.d.ts +20 -11
  433. package/dist/tools/types.d.ts.map +1 -1
  434. package/dist/utils/api-key-resolver.js +1 -1
  435. package/dist/utils/async-context.js +1 -1
  436. package/dist/utils/debug.js +1 -1
  437. package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
  438. package/dist/utils/defer.d.ts +63 -0
  439. package/dist/utils/defer.d.ts.map +1 -0
  440. package/dist/utils/defer.js +19 -0
  441. package/dist/utils/env-file.js +1 -1
  442. package/dist/utils/error-conversion.js +1 -1
  443. package/dist/utils/execution-context.js +1 -1
  444. package/dist/utils/fs-walk.js +1 -1
  445. package/dist/utils/index.cjs +3 -1
  446. package/dist/utils/index.d.ts +1 -0
  447. package/dist/utils/index.d.ts.map +1 -1
  448. package/dist/utils/index.js +1 -0
  449. package/dist/utils/path.js +1 -1
  450. package/dist/utils/redactor.js +1 -1
  451. package/dist/utils/result.js +1 -1
  452. package/dist/utils/safe-stringify.js +1 -1
  453. package/dist/utils/schema-metadata.js +1 -1
  454. package/dist/utils/schema.d.ts +6 -0
  455. package/dist/utils/schema.d.ts.map +1 -1
  456. package/dist/utils/schema.js +1 -1
  457. package/dist/utils/service-initializer.cjs +6 -2
  458. package/dist/utils/service-initializer.d.ts.map +1 -1
  459. package/dist/utils/service-initializer.js +7 -3
  460. package/dist/utils/user-info.js +1 -1
  461. package/dist/utils/zod-schema-converter.js +1 -1
  462. package/package.json +54 -17
  463. package/dist/context/compression/middle-removal.cjs +0 -95
  464. package/dist/context/compression/middle-removal.d.ts +0 -47
  465. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  466. package/dist/context/compression/middle-removal.js +0 -72
  467. package/dist/context/compression/oldest-removal.cjs +0 -83
  468. package/dist/context/compression/oldest-removal.d.ts +0 -42
  469. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  470. package/dist/context/compression/oldest-removal.js +0 -60
  471. package/dist/llm/formatters/anthropic.cjs +0 -257
  472. package/dist/llm/formatters/anthropic.d.ts +0 -46
  473. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  474. package/dist/llm/formatters/anthropic.js +0 -239
  475. package/dist/llm/formatters/factory.cjs +0 -50
  476. package/dist/llm/formatters/factory.d.ts +0 -10
  477. package/dist/llm/formatters/factory.d.ts.map +0 -1
  478. package/dist/llm/formatters/factory.js +0 -27
  479. package/dist/llm/formatters/openai.cjs +0 -196
  480. package/dist/llm/formatters/openai.d.ts +0 -39
  481. package/dist/llm/formatters/openai.d.ts.map +0 -1
  482. package/dist/llm/formatters/openai.js +0 -177
  483. package/dist/llm/formatters/types.d.ts +0 -41
  484. package/dist/llm/formatters/types.d.ts.map +0 -1
  485. package/dist/llm/services/anthropic.cjs +0 -511
  486. package/dist/llm/services/anthropic.d.ts +0 -48
  487. package/dist/llm/services/anthropic.d.ts.map +0 -1
  488. package/dist/llm/services/anthropic.js +0 -447
  489. package/dist/llm/services/openai.cjs +0 -611
  490. package/dist/llm/services/openai.d.ts +0 -48
  491. package/dist/llm/services/openai.d.ts.map +0 -1
  492. package/dist/llm/services/openai.js +0 -547
  493. package/dist/llm/tokenizer/anthropic.cjs +0 -43
  494. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  495. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  496. package/dist/llm/tokenizer/anthropic.js +0 -20
  497. package/dist/llm/tokenizer/default.d.ts +0 -14
  498. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  499. package/dist/llm/tokenizer/default.js +0 -18
  500. package/dist/llm/tokenizer/factory.d.ts +0 -12
  501. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  502. package/dist/llm/tokenizer/factory.js +0 -21
  503. package/dist/llm/tokenizer/google.cjs +0 -52
  504. package/dist/llm/tokenizer/google.d.ts +0 -29
  505. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  506. package/dist/llm/tokenizer/google.js +0 -29
  507. package/dist/llm/tokenizer/openai.cjs +0 -115
  508. package/dist/llm/tokenizer/openai.d.ts +0 -33
  509. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  510. package/dist/llm/tokenizer/openai.js +0 -91
  511. package/dist/llm/tokenizer/types.d.ts +0 -18
  512. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  513. package/dist/llm/tokenizer/types.js +0 -10
  514. /package/dist/llm/{formatters → executor}/types.cjs +0 -0
  515. /package/dist/llm/{formatters → executor}/types.js +0 -0
@@ -27,6 +27,7 @@ var import_events = require("../events/index.js");
27
27
  var import_types = require("../logger/v2/types.js");
28
28
  var import_errors = require("../errors/index.js");
29
29
  var import_error_codes = require("../plugins/error-codes.js");
30
+ var import_registry = require("../llm/registry.js");
30
31
  class ChatSession {
31
32
  /**
32
33
  * Creates a new ChatSession instance.
@@ -77,6 +78,10 @@ class ChatSession {
77
78
  * Stores the bound functions so they can be removed from the event bus.
78
79
  */
79
80
  forwarders = /* @__PURE__ */ new Map();
81
+ /**
82
+ * Token accumulator listener for cleanup.
83
+ */
84
+ tokenAccumulatorListener = null;
80
85
  /**
81
86
  * AbortController for the currently running turn, if any.
82
87
  * Calling cancel() aborts the in-flight LLM request and tool execution checks.
@@ -107,10 +112,33 @@ class ChatSession {
107
112
  this.forwarders.set(eventName, forwarder);
108
113
  this.eventBus.on(eventName, forwarder);
109
114
  });
115
+ this.setupTokenAccumulation();
110
116
  this.logger.debug(
111
117
  `[setupEventForwarding] Event forwarding setup complete for session=${this.id}`
112
118
  );
113
119
  }
120
+ /**
121
+ * Sets up token usage accumulation by listening to llm:response events.
122
+ * Accumulates token usage and cost to session metadata for /stats tracking.
123
+ */
124
+ setupTokenAccumulation() {
125
+ this.tokenAccumulatorListener = (payload) => {
126
+ if (payload.tokenUsage) {
127
+ let cost;
128
+ const llmConfig = this.services.stateManager.getLLMConfig(this.id);
129
+ const pricing = (0, import_registry.getModelPricing)(llmConfig.provider, llmConfig.model);
130
+ if (pricing) {
131
+ cost = (0, import_registry.calculateCost)(payload.tokenUsage, pricing);
132
+ }
133
+ this.services.sessionManager.accumulateTokenUsage(this.id, payload.tokenUsage, cost).catch((err) => {
134
+ this.logger.warn(
135
+ `Failed to accumulate token usage: ${err instanceof Error ? err.message : String(err)}`
136
+ );
137
+ });
138
+ }
139
+ };
140
+ this.eventBus.on("llm:response", this.tokenAccumulatorListener);
141
+ }
114
142
  /**
115
143
  * Initializes session-specific services.
116
144
  */
@@ -123,7 +151,6 @@ class ChatSession {
123
151
  );
124
152
  this.llmService = (0, import_factory2.createLLMService)(
125
153
  llmConfig,
126
- llmConfig.router,
127
154
  this.services.toolManager,
128
155
  this.services.systemPromptManager,
129
156
  this.historyProvider,
@@ -152,12 +179,12 @@ class ChatSession {
152
179
  async saveBlockedInteraction(userInput, errorMessage, _imageData, _fileData) {
153
180
  const userMessage = {
154
181
  role: "user",
155
- content: "[Blocked by content policy: input redacted]"
182
+ content: [{ type: "text", text: "[Blocked by content policy: input redacted]" }]
156
183
  };
157
184
  const errorContent = `Error: ${errorMessage}`;
158
185
  const assistantMessage = {
159
186
  role: "assistant",
160
- content: errorContent
187
+ content: [{ type: "text", text: errorContent }]
161
188
  };
162
189
  await this.historyProvider.saveMessage(userMessage);
163
190
  await this.historyProvider.saveMessage(assistantMessage);
@@ -165,44 +192,61 @@ class ChatSession {
165
192
  this.eventBus.emit("llm:response", {
166
193
  content: errorContent,
167
194
  provider: llmConfig.provider,
168
- model: llmConfig.model,
169
- router: llmConfig.router
195
+ model: llmConfig.model
170
196
  });
171
197
  }
172
198
  /**
173
- * Processes user input through the session's LLM service and returns the response.
199
+ * Stream a response for the given content.
200
+ * Primary method for running conversations with multi-image support.
174
201
  *
175
- * This method:
176
- * 1. Takes user input (text, optionally with image or file data)
177
- * 2. Passes it to the LLM service for processing
178
- * 3. Returns the AI's response text
179
- *
180
- * The method handles both text-only and multimodal input (text + images/files).
181
- * Tool calls and conversation management are handled internally by the LLM service.
182
- *
183
- * @param input - The user's text input
184
- * @param imageDataInput - Optional image data for multimodal input
185
- * @param fileDataInput - Optional file data for file input
186
- * @param stream - Optional flag to enable streaming responses
202
+ * @param content - String or ContentPart[] (text, images, files)
203
+ * @param options - { signal?: AbortSignal }
187
204
  * @returns Promise that resolves to the AI's response text
188
205
  *
189
206
  * @example
190
207
  * ```typescript
191
- * const response = await session.run('What is the weather like today?');
192
- * console.log(response); // "I'll check the weather for you..."
208
+ * // Text only
209
+ * const response = await session.stream('What is the weather?');
210
+ *
211
+ * // Multiple images
212
+ * const response = await session.stream([
213
+ * { type: 'text', text: 'Compare these images' },
214
+ * { type: 'image', image: base64Data1, mimeType: 'image/png' },
215
+ * { type: 'image', image: base64Data2, mimeType: 'image/png' }
216
+ * ]);
193
217
  * ```
194
218
  */
195
- async run(input, imageDataInput, fileDataInput, stream) {
219
+ async stream(content, options) {
220
+ const parts = typeof content === "string" ? [{ type: "text", text: content }] : content;
221
+ const textParts = parts.filter(
222
+ (p) => p.type === "text"
223
+ );
224
+ const imageParts = parts.filter((p) => p.type === "image");
225
+ const fileParts = parts.filter((p) => p.type === "file");
196
226
  this.logger.debug(
197
- `Running session ${this.id} | input.len=${input?.length ?? 0} | image=${imageDataInput ? imageDataInput.mimeType : "none"} | file=${fileDataInput ? `${fileDataInput.mimeType}:${fileDataInput.filename ?? "unknown"}` : "none"}`
227
+ `Streaming session ${this.id} | textParts=${textParts.length} | images=${imageParts.length} | files=${fileParts.length}`
198
228
  );
199
229
  this.currentRunController = new AbortController();
200
- const signal = this.currentRunController.signal;
230
+ const signal = options?.signal ? this.combineSignals(options.signal, this.currentRunController.signal) : this.currentRunController.signal;
201
231
  try {
232
+ const textContent = textParts.map((p) => p.text).join("\n");
233
+ const firstImage = imageParts[0];
234
+ const firstFile = fileParts[0];
202
235
  const beforeLLMPayload = {
203
- text: input,
204
- ...imageDataInput !== void 0 && { imageData: imageDataInput },
205
- ...fileDataInput !== void 0 && { fileData: fileDataInput },
236
+ text: textContent,
237
+ ...firstImage && {
238
+ imageData: {
239
+ image: typeof firstImage.image === "string" ? firstImage.image : "[binary]",
240
+ mimeType: firstImage.mimeType || "image/jpeg"
241
+ }
242
+ },
243
+ ...firstFile && {
244
+ fileData: {
245
+ data: typeof firstFile.data === "string" ? firstFile.data : "[binary]",
246
+ mimeType: firstFile.mimeType,
247
+ ...firstFile.filename && { filename: firstFile.filename }
248
+ }
249
+ },
206
250
  sessionId: this.id
207
251
  };
208
252
  const modifiedBeforePayload = await this.services.pluginManager.executePlugins(
@@ -217,22 +261,17 @@ class ChatSession {
217
261
  abortSignal: signal
218
262
  }
219
263
  );
220
- const finalInput = modifiedBeforePayload.text;
221
- const finalImageData = modifiedBeforePayload.imageData;
222
- const finalFileData = modifiedBeforePayload.fileData;
223
- const response = await this.llmService.completeTask(
224
- finalInput,
225
- { signal },
226
- finalImageData,
227
- finalFileData,
228
- stream
229
- );
264
+ let modifiedParts = [...parts];
265
+ if (modifiedBeforePayload.text !== textContent && textParts.length > 0) {
266
+ modifiedParts = modifiedParts.filter((p) => p.type !== "text");
267
+ modifiedParts.unshift({ type: "text", text: modifiedBeforePayload.text });
268
+ }
269
+ const response = await this.llmService.stream(modifiedParts, { signal });
230
270
  const llmConfig = this.services.stateManager.getLLMConfig(this.id);
231
271
  const beforeResponsePayload = {
232
272
  content: response,
233
273
  provider: llmConfig.provider,
234
274
  model: llmConfig.model,
235
- router: llmConfig.router,
236
275
  sessionId: this.id
237
276
  };
238
277
  const modifiedResponsePayload = await this.services.pluginManager.executePlugins(
@@ -256,16 +295,21 @@ class ChatSession {
256
295
  context: "user_cancelled",
257
296
  recoverable: true
258
297
  });
298
+ try {
299
+ const history = await this.getHistory();
300
+ const lastAssistant = history.filter((m) => m.role === "assistant").pop();
301
+ if (lastAssistant && typeof lastAssistant.content === "string") {
302
+ return lastAssistant.content;
303
+ }
304
+ } catch {
305
+ this.logger.debug("Failed to retrieve partial response from history on cancel");
306
+ }
259
307
  return "";
260
308
  }
261
309
  if (error instanceof import_errors.DextoRuntimeError && error.code === import_error_codes.PluginErrorCode.PLUGIN_BLOCKED_EXECUTION && error.scope === import_errors.ErrorScope.PLUGIN && error.type === import_errors.ErrorType.FORBIDDEN) {
310
+ const textContent = parts.filter((p) => p.type === "text").map((p) => p.text).join("\n");
262
311
  try {
263
- await this.saveBlockedInteraction(
264
- input,
265
- error.message,
266
- imageDataInput,
267
- fileDataInput
268
- );
312
+ await this.saveBlockedInteraction(textContent, error.message);
269
313
  this.logger.debug(
270
314
  `ChatSession ${this.id}: Saved blocked interaction to history`
271
315
  );
@@ -276,15 +320,27 @@ class ChatSession {
276
320
  }
277
321
  return error.message;
278
322
  }
279
- const errortype = error instanceof Error ? "object" : "string";
280
323
  this.logger.error(
281
- `Error in ChatSession.run: errortype=${errortype}: ${error instanceof Error ? error.message : String(error)}`
324
+ `Error in ChatSession.stream: ${error instanceof Error ? error.message : String(error)}`
282
325
  );
283
326
  throw error;
284
327
  } finally {
285
328
  this.currentRunController = null;
286
329
  }
287
330
  }
331
+ /**
332
+ * Combine multiple abort signals into one.
333
+ */
334
+ combineSignals(signal1, signal2) {
335
+ const controller = new AbortController();
336
+ const onAbort = () => controller.abort();
337
+ signal1.addEventListener("abort", onAbort);
338
+ signal2.addEventListener("abort", onAbort);
339
+ if (signal1.aborted || signal2.aborted) {
340
+ controller.abort();
341
+ }
342
+ return controller.signal;
343
+ }
288
344
  /**
289
345
  * Retrieves the complete conversation history for this session.
290
346
  *
@@ -355,11 +411,11 @@ class ChatSession {
355
411
  /**
356
412
  * Switches the LLM service for this session while preserving conversation history.
357
413
  *
358
- * This method creates a new LLM service with the specified configuration and router,
414
+ * This method creates a new LLM service with the specified configuration,
359
415
  * while maintaining the existing ContextManager and conversation history. This allows
360
416
  * users to change AI models mid-conversation without losing context.
361
417
  *
362
- * @param newLLMConfig The new LLM configuration to use (includes router)
418
+ * @param newLLMConfig The new LLM configuration to use
363
419
  *
364
420
  * @example
365
421
  * ```typescript
@@ -368,16 +424,13 @@ class ChatSession {
368
424
  * provider: 'openai',
369
425
  * model: 'gpt-5',
370
426
  * apiKey: process.env.OPENAI_API_KEY,
371
- * router: 'in-built'
372
427
  * });
373
428
  * ```
374
429
  */
375
430
  async switchLLM(newLLMConfig) {
376
431
  try {
377
- const router = newLLMConfig.router;
378
432
  const newLLMService = (0, import_factory2.createLLMService)(
379
433
  newLLMConfig,
380
- router,
381
434
  this.services.toolManager,
382
435
  this.services.systemPromptManager,
383
436
  this.historyProvider,
@@ -394,7 +447,6 @@ class ChatSession {
394
447
  );
395
448
  this.eventBus.emit("llm:switched", {
396
449
  newConfig: newLLMConfig,
397
- router,
398
450
  historyRetained: true
399
451
  });
400
452
  } catch (error) {
@@ -435,8 +487,54 @@ class ChatSession {
435
487
  this.eventBus.off(eventName, forwarder);
436
488
  });
437
489
  this.forwarders.clear();
490
+ if (this.tokenAccumulatorListener) {
491
+ this.eventBus.off("llm:response", this.tokenAccumulatorListener);
492
+ this.tokenAccumulatorListener = null;
493
+ }
438
494
  this.logger.debug(`Session ${this.id} disposed successfully`);
439
495
  }
496
+ /**
497
+ * Check if this session is currently processing a message.
498
+ * Returns true if a run is in progress and has not been aborted.
499
+ */
500
+ isBusy() {
501
+ return this.currentRunController !== null && !this.currentRunController.signal.aborted;
502
+ }
503
+ /**
504
+ * Queue a message for processing when the session is busy.
505
+ * The message will be injected into the conversation when the current turn completes.
506
+ *
507
+ * @param message The user message to queue
508
+ * @returns Queue position and message ID
509
+ */
510
+ queueMessage(message) {
511
+ return this.llmService.getMessageQueue().enqueue(message);
512
+ }
513
+ /**
514
+ * Get all messages currently in the queue.
515
+ * @returns Array of queued messages
516
+ */
517
+ getQueuedMessages() {
518
+ return this.llmService.getMessageQueue().getAll();
519
+ }
520
+ /**
521
+ * Remove a queued message.
522
+ * @param id Message ID to remove
523
+ * @returns true if message was found and removed; false otherwise
524
+ */
525
+ removeQueuedMessage(id) {
526
+ return this.llmService.getMessageQueue().remove(id);
527
+ }
528
+ /**
529
+ * Clear all queued messages.
530
+ * @returns Number of messages that were cleared
531
+ */
532
+ clearMessageQueue() {
533
+ const queue = this.llmService.getMessageQueue();
534
+ const count = queue.pendingCount();
535
+ queue.clear();
536
+ return count;
537
+ }
440
538
  /**
441
539
  * Cancel the currently running turn for this session, if any.
442
540
  * Returns true if a run was in progress and was signaled to abort.
@@ -1,5 +1,5 @@
1
1
  import type { ContextManager } from '../context/index.js';
2
- import type { ILLMService } from '../llm/services/types.js';
2
+ import type { VercelLLMService } from '../llm/services/vercel.js';
3
3
  import type { SystemPromptManager } from '../systemPrompt/manager.js';
4
4
  import type { ToolManager } from '../tools/tool-manager.js';
5
5
  import type { ValidatedLLMConfig } from '../llm/schemas.js';
@@ -10,6 +10,8 @@ import type { MCPManager } from '../mcp/manager.js';
10
10
  import { SessionEventBus, AgentEventBus } from '../events/index.js';
11
11
  import type { IDextoLogger } from '../logger/v2/types.js';
12
12
  import type { InternalMessage } from '../context/types.js';
13
+ import type { UserMessageInput } from './message-queue.js';
14
+ import type { ContentInput } from '../agent/types.js';
13
15
  /**
14
16
  * Represents an isolated conversation session within a Dexto agent.
15
17
  *
@@ -52,7 +54,7 @@ import type { InternalMessage } from '../context/types.js';
52
54
  *
53
55
  * @see {@link SessionManager} for session lifecycle management
54
56
  * @see {@link ContextManager} for conversation history management
55
- * @see {@link ILLMService} for AI model interaction interface
57
+ * @see {@link VercelLLMService} for AI model interaction
56
58
  */
57
59
  export declare class ChatSession {
58
60
  private services;
@@ -86,6 +88,10 @@ export declare class ChatSession {
86
88
  * Stores the bound functions so they can be removed from the event bus.
87
89
  */
88
90
  private forwarders;
91
+ /**
92
+ * Token accumulator listener for cleanup.
93
+ */
94
+ private tokenAccumulatorListener;
89
95
  /**
90
96
  * AbortController for the currently running turn, if any.
91
97
  * Calling cancel() aborts the in-flight LLM request and tool execution checks.
@@ -129,6 +135,11 @@ export declare class ChatSession {
129
135
  * information when needed.
130
136
  */
131
137
  private setupEventForwarding;
138
+ /**
139
+ * Sets up token usage accumulation by listening to llm:response events.
140
+ * Accumulates token usage and cost to session metadata for /stats tracking.
141
+ */
142
+ private setupTokenAccumulation;
132
143
  /**
133
144
  * Initializes session-specific services.
134
145
  */
@@ -146,36 +157,33 @@ export declare class ChatSession {
146
157
  */
147
158
  private saveBlockedInteraction;
148
159
  /**
149
- * Processes user input through the session's LLM service and returns the response.
150
- *
151
- * This method:
152
- * 1. Takes user input (text, optionally with image or file data)
153
- * 2. Passes it to the LLM service for processing
154
- * 3. Returns the AI's response text
160
+ * Stream a response for the given content.
161
+ * Primary method for running conversations with multi-image support.
155
162
  *
156
- * The method handles both text-only and multimodal input (text + images/files).
157
- * Tool calls and conversation management are handled internally by the LLM service.
158
- *
159
- * @param input - The user's text input
160
- * @param imageDataInput - Optional image data for multimodal input
161
- * @param fileDataInput - Optional file data for file input
162
- * @param stream - Optional flag to enable streaming responses
163
+ * @param content - String or ContentPart[] (text, images, files)
164
+ * @param options - { signal?: AbortSignal }
163
165
  * @returns Promise that resolves to the AI's response text
164
166
  *
165
167
  * @example
166
168
  * ```typescript
167
- * const response = await session.run('What is the weather like today?');
168
- * console.log(response); // "I'll check the weather for you..."
169
+ * // Text only
170
+ * const response = await session.stream('What is the weather?');
171
+ *
172
+ * // Multiple images
173
+ * const response = await session.stream([
174
+ * { type: 'text', text: 'Compare these images' },
175
+ * { type: 'image', image: base64Data1, mimeType: 'image/png' },
176
+ * { type: 'image', image: base64Data2, mimeType: 'image/png' }
177
+ * ]);
169
178
  * ```
170
179
  */
171
- run(input: string, imageDataInput?: {
172
- image: string;
173
- mimeType: string;
174
- }, fileDataInput?: {
175
- data: string;
176
- mimeType: string;
177
- filename?: string;
178
- }, stream?: boolean): Promise<string>;
180
+ stream(content: ContentInput, options?: {
181
+ signal?: AbortSignal;
182
+ }): Promise<string>;
183
+ /**
184
+ * Combine multiple abort signals into one.
185
+ */
186
+ private combineSignals;
179
187
  /**
180
188
  * Retrieves the complete conversation history for this session.
181
189
  *
@@ -231,15 +239,15 @@ export declare class ChatSession {
231
239
  *
232
240
  * @returns The LLMService for this session
233
241
  */
234
- getLLMService(): ILLMService;
242
+ getLLMService(): VercelLLMService;
235
243
  /**
236
244
  * Switches the LLM service for this session while preserving conversation history.
237
245
  *
238
- * This method creates a new LLM service with the specified configuration and router,
246
+ * This method creates a new LLM service with the specified configuration,
239
247
  * while maintaining the existing ContextManager and conversation history. This allows
240
248
  * users to change AI models mid-conversation without losing context.
241
249
  *
242
- * @param newLLMConfig The new LLM configuration to use (includes router)
250
+ * @param newLLMConfig The new LLM configuration to use
243
251
  *
244
252
  * @example
245
253
  * ```typescript
@@ -248,7 +256,6 @@ export declare class ChatSession {
248
256
  * provider: 'openai',
249
257
  * model: 'gpt-5',
250
258
  * apiKey: process.env.OPENAI_API_KEY,
251
- * router: 'in-built'
252
259
  * });
253
260
  * ```
254
261
  */
@@ -267,6 +274,39 @@ export declare class ChatSession {
267
274
  * Without this cleanup, sessions would remain in memory due to listener references.
268
275
  */
269
276
  dispose(): void;
277
+ /**
278
+ * Check if this session is currently processing a message.
279
+ * Returns true if a run is in progress and has not been aborted.
280
+ */
281
+ isBusy(): boolean;
282
+ /**
283
+ * Queue a message for processing when the session is busy.
284
+ * The message will be injected into the conversation when the current turn completes.
285
+ *
286
+ * @param message The user message to queue
287
+ * @returns Queue position and message ID
288
+ */
289
+ queueMessage(message: UserMessageInput): {
290
+ queued: true;
291
+ position: number;
292
+ id: string;
293
+ };
294
+ /**
295
+ * Get all messages currently in the queue.
296
+ * @returns Array of queued messages
297
+ */
298
+ getQueuedMessages(): import('./types.js').QueuedMessage[];
299
+ /**
300
+ * Remove a queued message.
301
+ * @param id Message ID to remove
302
+ * @returns true if message was found and removed; false otherwise
303
+ */
304
+ removeQueuedMessage(id: string): boolean;
305
+ /**
306
+ * Clear all queued messages.
307
+ * @returns Number of messages that were cleared
308
+ */
309
+ clearMessageQueue(): number;
270
310
  /**
271
311
  * Cancel the currently running turn for this session, if any.
272
312
  * Returns true if a run was in progress and was signaled to abort.
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-session.d.ts","sourceRoot":"","sources":["../../src/session/chat-session.ts"],"names":[],"mappings":"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"}