@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
@@ -1,48 +1,59 @@
1
- import "../../chunk-C6A6W6XS.js";
1
+ import "../../chunk-PTJYTZNU.js";
2
2
  import { DextoLogComponent } from "../../logger/v2/types.js";
3
3
  import { SessionError } from "../errors.js";
4
4
  class DatabaseHistoryProvider {
5
+ // Debounce window for batching updates
5
6
  constructor(sessionId, database, logger) {
6
7
  this.sessionId = sessionId;
7
8
  this.database = database;
8
9
  this.logger = logger.createChild(DextoLogComponent.SESSION);
9
10
  }
10
11
  logger;
12
+ // Cache state
13
+ cache = null;
14
+ dirty = false;
15
+ flushTimer = null;
16
+ flushPromise = null;
17
+ // Flush configuration
18
+ static FLUSH_DELAY_MS = 100;
11
19
  async getHistory() {
12
- const key = this.getMessagesKey();
13
- try {
14
- const messages = await this.database.getRange(key, 0, 1e3);
15
- this.logger.debug(
16
- `DatabaseHistoryProvider: Retrieved ${messages.length} messages for session ${this.sessionId}`
17
- );
18
- return messages;
19
- } catch (error) {
20
- this.logger.error(
21
- `DatabaseHistoryProvider: Error retrieving messages for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
22
- );
23
- return [];
20
+ if (this.cache === null) {
21
+ const key = this.getMessagesKey();
22
+ try {
23
+ this.cache = await this.database.getRange(key, 0, 1e4);
24
+ this.logger.debug(
25
+ `DatabaseHistoryProvider: Loaded ${this.cache.length} messages from DB for session ${this.sessionId}`
26
+ );
27
+ } catch (error) {
28
+ this.logger.error(
29
+ `DatabaseHistoryProvider: Error loading messages for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
30
+ );
31
+ throw SessionError.storageFailed(
32
+ this.sessionId,
33
+ "load history",
34
+ error instanceof Error ? error.message : String(error)
35
+ );
36
+ }
24
37
  }
38
+ return [...this.cache];
25
39
  }
26
40
  async saveMessage(message) {
27
41
  const key = this.getMessagesKey();
42
+ if (this.cache === null) {
43
+ await this.getHistory();
44
+ }
45
+ this.cache.push(message);
28
46
  try {
29
47
  await this.database.append(key, message);
30
- let contentPreview = "[no content]";
31
- if (message.content) {
32
- if (typeof message.content === "string") {
33
- contentPreview = message.content.length > 100 ? `${message.content.substring(0, 100)}...` : message.content;
34
- } else if (Array.isArray(message.content)) {
35
- contentPreview = `[${message.content.length} parts]`;
36
- }
37
- }
38
48
  this.logger.debug(
39
49
  `DatabaseHistoryProvider: Saved message for session ${this.sessionId}`,
40
50
  {
41
51
  role: message.role,
42
- content: contentPreview
52
+ id: message.id
43
53
  }
44
54
  );
45
55
  } catch (error) {
56
+ this.cache.pop();
46
57
  this.logger.error(
47
58
  `DatabaseHistoryProvider: Error saving message for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
48
59
  );
@@ -53,7 +64,34 @@ class DatabaseHistoryProvider {
53
64
  );
54
65
  }
55
66
  }
67
+ async updateMessage(message) {
68
+ if (!message.id) {
69
+ this.logger.warn(
70
+ `DatabaseHistoryProvider: Ignoring update for message without id in session ${this.sessionId}`
71
+ );
72
+ return;
73
+ }
74
+ if (this.cache === null) {
75
+ await this.getHistory();
76
+ }
77
+ const index = this.cache.findIndex((m) => m.id === message.id);
78
+ if (index !== -1) {
79
+ this.cache[index] = message;
80
+ this.dirty = true;
81
+ this.scheduleFlush();
82
+ this.logger.debug(
83
+ `DatabaseHistoryProvider: Updated message ${message.id} in cache for session ${this.sessionId}`
84
+ );
85
+ } else {
86
+ this.logger.warn(
87
+ `DatabaseHistoryProvider: Message ${message.id} not found for update in session ${this.sessionId}`
88
+ );
89
+ }
90
+ }
56
91
  async clearHistory() {
92
+ this.cancelPendingFlush();
93
+ this.cache = [];
94
+ this.dirty = false;
57
95
  const key = this.getMessagesKey();
58
96
  try {
59
97
  await this.database.delete(key);
@@ -70,6 +108,81 @@ class DatabaseHistoryProvider {
70
108
  );
71
109
  }
72
110
  }
111
+ /**
112
+ * Flush any pending updates to the database.
113
+ * Should be called at turn boundaries to ensure durability.
114
+ */
115
+ async flush() {
116
+ if (this.flushPromise) {
117
+ await this.flushPromise;
118
+ return;
119
+ }
120
+ this.cancelPendingFlush();
121
+ if (!this.dirty || !this.cache) {
122
+ return;
123
+ }
124
+ this.flushPromise = this.doFlush();
125
+ try {
126
+ await this.flushPromise;
127
+ } finally {
128
+ this.flushPromise = null;
129
+ }
130
+ }
131
+ /**
132
+ * Internal flush implementation.
133
+ * Writes entire cache to DB (delete + re-append all).
134
+ */
135
+ async doFlush() {
136
+ if (!this.dirty || !this.cache) {
137
+ return;
138
+ }
139
+ const key = this.getMessagesKey();
140
+ const messageCount = this.cache.length;
141
+ try {
142
+ await this.database.delete(key);
143
+ for (const msg of this.cache) {
144
+ await this.database.append(key, msg);
145
+ }
146
+ if (!this.flushTimer) {
147
+ this.dirty = false;
148
+ }
149
+ this.logger.debug(
150
+ `DatabaseHistoryProvider: Flushed ${messageCount} messages to DB for session ${this.sessionId}`
151
+ );
152
+ } catch (error) {
153
+ this.logger.error(
154
+ `DatabaseHistoryProvider: Error flushing messages for session ${this.sessionId}: ${error instanceof Error ? error.message : String(error)}`
155
+ );
156
+ throw SessionError.storageFailed(
157
+ this.sessionId,
158
+ "flush messages",
159
+ error instanceof Error ? error.message : String(error)
160
+ );
161
+ }
162
+ }
163
+ /**
164
+ * Schedule a debounced flush.
165
+ * Batches rapid updateMessage() calls into a single DB write.
166
+ */
167
+ scheduleFlush() {
168
+ if (this.flushTimer) {
169
+ return;
170
+ }
171
+ this.flushTimer = setTimeout(() => {
172
+ this.flushTimer = null;
173
+ this.doFlush().catch(() => {
174
+ });
175
+ }, DatabaseHistoryProvider.FLUSH_DELAY_MS);
176
+ }
177
+ /**
178
+ * Cancel any pending scheduled flush.
179
+ */
180
+ cancelPendingFlush() {
181
+ if (this.flushTimer) {
182
+ clearTimeout(this.flushTimer);
183
+ this.flushTimer = null;
184
+ }
185
+ }
73
186
  getMessagesKey() {
74
187
  return `messages:${this.sessionId}`;
75
188
  }
@@ -1,4 +1,4 @@
1
- import "../../chunk-C6A6W6XS.js";
1
+ import "../../chunk-PTJYTZNU.js";
2
2
  import { DatabaseHistoryProvider } from "./database.js";
3
3
  function createDatabaseHistoryProvider(database, sessionId, logger) {
4
4
  return new DatabaseHistoryProvider(sessionId, database, logger);
@@ -22,6 +22,9 @@ __export(memory_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(memory_exports);
24
24
  class MemoryHistoryProvider {
25
+ constructor(logger) {
26
+ this.logger = logger;
27
+ }
25
28
  messages = [];
26
29
  async getHistory() {
27
30
  return [...this.messages];
@@ -29,9 +32,24 @@ class MemoryHistoryProvider {
29
32
  async saveMessage(message) {
30
33
  this.messages.push(message);
31
34
  }
35
+ async updateMessage(message) {
36
+ if (!message.id) {
37
+ this.logger.warn("MemoryHistoryProvider: Ignoring update for message without id");
38
+ return;
39
+ }
40
+ const index = this.messages.findIndex((m) => m.id === message.id);
41
+ if (index !== -1) {
42
+ this.messages[index] = message;
43
+ }
44
+ }
32
45
  async clearHistory() {
33
46
  this.messages = [];
34
47
  }
48
+ /**
49
+ * No-op for in-memory provider - all operations are already "flushed".
50
+ */
51
+ async flush() {
52
+ }
35
53
  }
36
54
  // Annotate the CommonJS export names for ESM import in node:
37
55
  0 && (module.exports = {
@@ -1,14 +1,22 @@
1
1
  import type { InternalMessage } from '../../context/types.js';
2
2
  import type { IConversationHistoryProvider } from './types.js';
3
+ import type { IDextoLogger } from '../../logger/v2/types.js';
3
4
  /**
4
5
  * Lightweight in-memory history provider for ephemeral, isolated LLM calls.
5
6
  * Used to run background tasks (e.g., title generation) without touching
6
7
  * the real session history or emitting history-related side effects.
7
8
  */
8
9
  export declare class MemoryHistoryProvider implements IConversationHistoryProvider {
10
+ private logger;
9
11
  private messages;
12
+ constructor(logger: IDextoLogger);
10
13
  getHistory(): Promise<InternalMessage[]>;
11
14
  saveMessage(message: InternalMessage): Promise<void>;
15
+ updateMessage(message: InternalMessage): Promise<void>;
12
16
  clearHistory(): Promise<void>;
17
+ /**
18
+ * No-op for in-memory provider - all operations are already "flushed".
19
+ */
20
+ flush(): Promise<void>;
13
21
  }
14
22
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/session/history/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,4BAA4B;IACtE,OAAO,CAAC,QAAQ,CAAyB;IAEnC,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKxC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/session/history/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,4BAA4B;IAG1D,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,QAAQ,CAAyB;gBAErB,MAAM,EAAE,YAAY;IAElC,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAKxC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -1,5 +1,8 @@
1
- import "../../chunk-C6A6W6XS.js";
1
+ import "../../chunk-PTJYTZNU.js";
2
2
  class MemoryHistoryProvider {
3
+ constructor(logger) {
4
+ this.logger = logger;
5
+ }
3
6
  messages = [];
4
7
  async getHistory() {
5
8
  return [...this.messages];
@@ -7,9 +10,24 @@ class MemoryHistoryProvider {
7
10
  async saveMessage(message) {
8
11
  this.messages.push(message);
9
12
  }
13
+ async updateMessage(message) {
14
+ if (!message.id) {
15
+ this.logger.warn("MemoryHistoryProvider: Ignoring update for message without id");
16
+ return;
17
+ }
18
+ const index = this.messages.findIndex((m) => m.id === message.id);
19
+ if (index !== -1) {
20
+ this.messages[index] = message;
21
+ }
22
+ }
10
23
  async clearHistory() {
11
24
  this.messages = [];
12
25
  }
26
+ /**
27
+ * No-op for in-memory provider - all operations are already "flushed".
28
+ */
29
+ async flush() {
30
+ }
13
31
  }
14
32
  export {
15
33
  MemoryHistoryProvider
@@ -2,13 +2,25 @@ import type { InternalMessage } from '../../context/types.js';
2
2
  /**
3
3
  * Session-scoped conversation history provider.
4
4
  * Each instance is tied to a specific session and manages only that session's messages.
5
+ *
6
+ * Implementations may use caching to optimize read performance. If caching is used,
7
+ * the flush() method should be called at turn boundaries to ensure all updates
8
+ * are persisted to durable storage.
5
9
  */
6
10
  export interface IConversationHistoryProvider {
7
11
  /** Load the full message history for this session */
8
12
  getHistory(): Promise<InternalMessage[]>;
9
- /** Append a message to this session's history */
13
+ /** Append a message to this session's history (must be durable immediately) */
10
14
  saveMessage(message: InternalMessage): Promise<void>;
15
+ /** Update an existing message in this session's history (may be cached/batched) */
16
+ updateMessage(message: InternalMessage): Promise<void>;
11
17
  /** Clear all messages for this session */
12
18
  clearHistory(): Promise<void>;
19
+ /**
20
+ * Flush any pending updates to durable storage.
21
+ * Called at turn boundaries to ensure data durability.
22
+ * Implementations without caching can make this a no-op.
23
+ */
24
+ flush(): Promise<void>;
13
25
  }
14
26
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/session/history/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IACzC,qDAAqD;IACrD,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEzC,iDAAiD;IACjD,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,0CAA0C;IAC1C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/session/history/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,WAAW,4BAA4B;IACzC,qDAAqD;IACrD,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEzC,+EAA+E;IAC/E,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,mFAAmF;IACnF,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD,0CAA0C;IAC1C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var session_exports = {};
20
20
  __export(session_exports, {
21
21
  ChatSession: () => import_chat_session.ChatSession,
22
+ MessageQueueService: () => import_message_queue.MessageQueueService,
22
23
  SessionError: () => import_errors.SessionError,
23
24
  SessionErrorCode: () => import_error_codes.SessionErrorCode,
24
25
  SessionManager: () => import_session_manager.SessionManager
@@ -28,9 +29,11 @@ var import_chat_session = require("./chat-session.js");
28
29
  var import_session_manager = require("./session-manager.js");
29
30
  var import_error_codes = require("./error-codes.js");
30
31
  var import_errors = require("./errors.js");
32
+ var import_message_queue = require("./message-queue.js");
31
33
  // Annotate the CommonJS export names for ESM import in node:
32
34
  0 && (module.exports = {
33
35
  ChatSession,
36
+ MessageQueueService,
34
37
  SessionError,
35
38
  SessionErrorCode,
36
39
  SessionManager
@@ -3,4 +3,7 @@ export { SessionManager } from './session-manager.js';
3
3
  export type { SessionMetadata } from './session-manager.js';
4
4
  export { SessionErrorCode } from './error-codes.js';
5
5
  export { SessionError } from './errors.js';
6
+ export { MessageQueueService } from './message-queue.js';
7
+ export type { UserMessageInput } from './message-queue.js';
8
+ export type { QueuedMessage, CoalescedMessage } from './types.js';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,10 +1,12 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { ChatSession } from "./chat-session.js";
3
3
  import { SessionManager } from "./session-manager.js";
4
4
  import { SessionErrorCode } from "./error-codes.js";
5
5
  import { SessionError } from "./errors.js";
6
+ import { MessageQueueService } from "./message-queue.js";
6
7
  export {
7
8
  ChatSession,
9
+ MessageQueueService,
8
10
  SessionError,
9
11
  SessionErrorCode,
10
12
  SessionManager
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var message_queue_exports = {};
20
+ __export(message_queue_exports, {
21
+ MessageQueueService: () => MessageQueueService
22
+ });
23
+ module.exports = __toCommonJS(message_queue_exports);
24
+ function generateId() {
25
+ return `msg_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
26
+ }
27
+ class MessageQueueService {
28
+ constructor(eventBus, logger) {
29
+ this.eventBus = eventBus;
30
+ this.logger = logger;
31
+ }
32
+ queue = [];
33
+ /**
34
+ * Add a message to the queue.
35
+ * Called by API endpoint - returns immediately with queue position.
36
+ *
37
+ * @param message The user message to queue
38
+ * @returns Queue position and message ID
39
+ */
40
+ enqueue(message) {
41
+ const queuedMsg = {
42
+ id: generateId(),
43
+ content: message.content,
44
+ queuedAt: Date.now(),
45
+ ...message.metadata !== void 0 && { metadata: message.metadata }
46
+ };
47
+ this.queue.push(queuedMsg);
48
+ this.logger.debug(`Message queued: ${queuedMsg.id}, position: ${this.queue.length}`);
49
+ this.eventBus.emit("message:queued", {
50
+ position: this.queue.length,
51
+ id: queuedMsg.id
52
+ });
53
+ return {
54
+ queued: true,
55
+ position: this.queue.length,
56
+ id: queuedMsg.id
57
+ };
58
+ }
59
+ /**
60
+ * Dequeue ALL pending messages and coalesce into single injection.
61
+ * Called by executor between steps.
62
+ *
63
+ * Multiple queued messages become ONE combined message to the LLM.
64
+ *
65
+ * @example
66
+ * If 3 messages are queued: "stop", "try X instead", "also check Y"
67
+ * They become:
68
+ * ```
69
+ * [1]: stop
70
+ *
71
+ * [2]: try X instead
72
+ *
73
+ * [3]: also check Y
74
+ * ```
75
+ *
76
+ * @returns Coalesced message or null if queue is empty
77
+ */
78
+ dequeueAll() {
79
+ if (this.queue.length === 0) return null;
80
+ const messages = [...this.queue];
81
+ this.queue = [];
82
+ const combined = this.coalesce(messages);
83
+ this.logger.debug(
84
+ `Dequeued ${messages.length} message(s): ${messages.map((m) => m.id).join(", ")}`
85
+ );
86
+ this.eventBus.emit("message:dequeued", {
87
+ count: messages.length,
88
+ ids: messages.map((m) => m.id),
89
+ coalesced: messages.length > 1,
90
+ content: combined.combinedContent
91
+ });
92
+ return combined;
93
+ }
94
+ /**
95
+ * Coalesce multiple messages into one (multimodal-aware).
96
+ * Strategy: Combine with numbered separators, preserve all media.
97
+ */
98
+ coalesce(messages) {
99
+ if (messages.length === 1) {
100
+ const firstMsg = messages[0];
101
+ if (!firstMsg) {
102
+ throw new Error("Unexpected empty messages array");
103
+ }
104
+ return {
105
+ messages,
106
+ combinedContent: firstMsg.content,
107
+ firstQueuedAt: firstMsg.queuedAt,
108
+ lastQueuedAt: firstMsg.queuedAt
109
+ };
110
+ }
111
+ const combinedContent = [];
112
+ for (const [i, msg] of messages.entries()) {
113
+ const prefix = messages.length === 2 ? i === 0 ? "First" : "Also" : `[${i + 1}]`;
114
+ let prefixText = `${prefix}: `;
115
+ for (const part of msg.content) {
116
+ if (part.type === "text") {
117
+ if (prefixText) {
118
+ combinedContent.push({ type: "text", text: prefixText + part.text });
119
+ prefixText = "";
120
+ } else {
121
+ combinedContent.push(part);
122
+ }
123
+ } else {
124
+ if (prefixText) {
125
+ combinedContent.push({ type: "text", text: prefixText });
126
+ prefixText = "";
127
+ }
128
+ combinedContent.push(part);
129
+ }
130
+ }
131
+ if (prefixText && msg.content.length === 0) {
132
+ combinedContent.push({ type: "text", text: prefixText + "[empty message]" });
133
+ }
134
+ if (i < messages.length - 1) {
135
+ combinedContent.push({ type: "text", text: "\n\n" });
136
+ }
137
+ }
138
+ const firstMessage = messages[0];
139
+ const lastMessage = messages[messages.length - 1];
140
+ if (!firstMessage || !lastMessage) {
141
+ throw new Error("Unexpected undefined message in non-empty array");
142
+ }
143
+ return {
144
+ messages,
145
+ combinedContent,
146
+ firstQueuedAt: firstMessage.queuedAt,
147
+ lastQueuedAt: lastMessage.queuedAt
148
+ };
149
+ }
150
+ /**
151
+ * Check if there are pending messages in the queue.
152
+ */
153
+ hasPending() {
154
+ return this.queue.length > 0;
155
+ }
156
+ /**
157
+ * Get the number of pending messages.
158
+ */
159
+ pendingCount() {
160
+ return this.queue.length;
161
+ }
162
+ /**
163
+ * Clear all pending messages without processing.
164
+ * Used during cleanup/abort.
165
+ */
166
+ clear() {
167
+ this.queue = [];
168
+ }
169
+ /**
170
+ * Get all queued messages (for UI display).
171
+ * Returns a shallow copy to prevent external mutation.
172
+ */
173
+ getAll() {
174
+ return [...this.queue];
175
+ }
176
+ /**
177
+ * Get a single queued message by ID.
178
+ */
179
+ get(id) {
180
+ return this.queue.find((m) => m.id === id);
181
+ }
182
+ /**
183
+ * Remove a single queued message by ID.
184
+ * @returns true if message was found and removed; false otherwise
185
+ */
186
+ remove(id) {
187
+ const index = this.queue.findIndex((m) => m.id === id);
188
+ if (index === -1) {
189
+ this.logger.debug(`Remove failed: message ${id} not found in queue`);
190
+ return false;
191
+ }
192
+ this.queue.splice(index, 1);
193
+ this.logger.debug(`Message removed: ${id}, remaining: ${this.queue.length}`);
194
+ this.eventBus.emit("message:removed", { id });
195
+ return true;
196
+ }
197
+ }
198
+ // Annotate the CommonJS export names for ESM import in node:
199
+ 0 && (module.exports = {
200
+ MessageQueueService
201
+ });