@dexto/core 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/README.md +17 -9
  2. package/dist/agent/DextoAgent.cjs +548 -207
  3. package/dist/agent/DextoAgent.d.ts +156 -33
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +545 -204
  6. package/dist/agent/agentCard.js +1 -1
  7. package/dist/agent/error-codes.cjs +1 -0
  8. package/dist/agent/error-codes.d.ts +2 -1
  9. package/dist/agent/error-codes.d.ts.map +1 -1
  10. package/dist/agent/error-codes.js +2 -1
  11. package/dist/agent/errors.cjs +13 -0
  12. package/dist/agent/errors.d.ts +4 -0
  13. package/dist/agent/errors.d.ts.map +1 -1
  14. package/dist/agent/errors.js +14 -1
  15. package/dist/agent/index.d.ts +1 -1
  16. package/dist/agent/index.d.ts.map +1 -1
  17. package/dist/agent/index.js +1 -1
  18. package/dist/agent/schemas.cjs +3 -0
  19. package/dist/agent/schemas.d.ts +92 -55
  20. package/dist/agent/schemas.d.ts.map +1 -1
  21. package/dist/agent/schemas.js +6 -2
  22. package/dist/agent/state-manager.cjs +5 -5
  23. package/dist/agent/state-manager.d.ts +4 -4
  24. package/dist/agent/state-manager.js +6 -6
  25. package/dist/agent/types.d.ts +24 -10
  26. package/dist/agent/types.d.ts.map +1 -1
  27. package/dist/approval/error-codes.js +1 -1
  28. package/dist/approval/errors.js +1 -1
  29. package/dist/approval/factory.js +1 -1
  30. package/dist/approval/index.js +1 -1
  31. package/dist/approval/manager.cjs +69 -3
  32. package/dist/approval/manager.d.ts +41 -3
  33. package/dist/approval/manager.d.ts.map +1 -1
  34. package/dist/approval/manager.js +70 -4
  35. package/dist/approval/schemas.cjs +18 -4
  36. package/dist/approval/schemas.d.ts +106 -32
  37. package/dist/approval/schemas.d.ts.map +1 -1
  38. package/dist/approval/schemas.js +19 -5
  39. package/dist/approval/types.d.ts +6 -0
  40. package/dist/approval/types.d.ts.map +1 -1
  41. package/dist/approval/types.js +1 -1
  42. package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
  43. package/dist/{llm/tokenizer/default.cjs → context/compression/overflow.cjs} +20 -18
  44. package/dist/context/compression/overflow.d.ts +33 -0
  45. package/dist/context/compression/overflow.d.ts.map +1 -0
  46. package/dist/context/compression/overflow.js +19 -0
  47. package/dist/context/compression/reactive-overflow.cjs +201 -0
  48. package/dist/context/compression/reactive-overflow.d.ts +81 -0
  49. package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
  50. package/dist/context/compression/reactive-overflow.js +178 -0
  51. package/dist/context/compression/types.d.ts +9 -7
  52. package/dist/context/compression/types.d.ts.map +1 -1
  53. package/dist/context/error-codes.cjs +3 -0
  54. package/dist/context/error-codes.d.ts +4 -1
  55. package/dist/context/error-codes.d.ts.map +1 -1
  56. package/dist/context/error-codes.js +4 -1
  57. package/dist/context/errors.cjs +28 -0
  58. package/dist/context/errors.d.ts +7 -0
  59. package/dist/context/errors.d.ts.map +1 -1
  60. package/dist/context/errors.js +29 -1
  61. package/dist/context/index.js +1 -1
  62. package/dist/context/manager.cjs +280 -323
  63. package/dist/context/manager.d.ts +65 -111
  64. package/dist/context/manager.d.ts.map +1 -1
  65. package/dist/context/manager.js +280 -328
  66. package/dist/context/media-helpers.js +1 -1
  67. package/dist/context/types.cjs +49 -0
  68. package/dist/context/types.d.ts +181 -72
  69. package/dist/context/types.d.ts.map +1 -1
  70. package/dist/context/types.js +35 -0
  71. package/dist/context/utils.cjs +266 -283
  72. package/dist/context/utils.d.ts +32 -18
  73. package/dist/context/utils.d.ts.map +1 -1
  74. package/dist/context/utils.js +266 -283
  75. package/dist/errors/DextoBaseError.js +1 -1
  76. package/dist/errors/DextoRuntimeError.js +1 -1
  77. package/dist/errors/DextoValidationError.js +1 -1
  78. package/dist/errors/index.js +1 -1
  79. package/dist/errors/result-bridge.js +1 -1
  80. package/dist/errors/types.js +1 -1
  81. package/dist/events/index.cjs +18 -1
  82. package/dist/events/index.d.ts +149 -12
  83. package/dist/events/index.d.ts.map +1 -1
  84. package/dist/events/index.js +19 -2
  85. package/dist/filesystem/error-codes.js +1 -1
  86. package/dist/filesystem/errors.js +1 -1
  87. package/dist/filesystem/filesystem-service.js +1 -1
  88. package/dist/filesystem/index.js +1 -1
  89. package/dist/filesystem/path-validator.js +1 -1
  90. package/dist/index.browser.cjs +23 -8
  91. package/dist/index.browser.d.ts +4 -3
  92. package/dist/index.browser.d.ts.map +1 -1
  93. package/dist/index.browser.js +20 -3
  94. package/dist/index.js +1 -1
  95. package/dist/llm/error-codes.cjs +0 -1
  96. package/dist/llm/error-codes.d.ts +0 -1
  97. package/dist/llm/error-codes.d.ts.map +1 -1
  98. package/dist/llm/error-codes.js +1 -2
  99. package/dist/llm/errors.cjs +10 -10
  100. package/dist/llm/errors.d.ts +5 -6
  101. package/dist/llm/errors.d.ts.map +1 -1
  102. package/dist/llm/errors.js +12 -12
  103. package/dist/llm/executor/stream-processor.cjs +367 -0
  104. package/dist/llm/executor/stream-processor.d.ts +55 -0
  105. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  106. package/dist/llm/executor/stream-processor.js +344 -0
  107. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  108. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  109. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  110. package/dist/llm/executor/tool-output-truncator.js +48 -0
  111. package/dist/llm/executor/turn-executor.cjs +753 -0
  112. package/dist/llm/executor/turn-executor.d.ts +166 -0
  113. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  114. package/dist/llm/executor/turn-executor.js +684 -0
  115. package/dist/llm/executor/types.d.ts +27 -0
  116. package/dist/llm/executor/types.d.ts.map +1 -0
  117. package/dist/llm/formatters/vercel.cjs +20 -186
  118. package/dist/llm/formatters/vercel.d.ts +2 -14
  119. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  120. package/dist/llm/formatters/vercel.js +19 -185
  121. package/dist/llm/registry.cjs +36 -45
  122. package/dist/llm/registry.d.ts +53 -39
  123. package/dist/llm/registry.d.ts.map +1 -1
  124. package/dist/llm/registry.js +34 -42
  125. package/dist/llm/resolver.cjs +1 -31
  126. package/dist/llm/resolver.d.ts.map +1 -1
  127. package/dist/llm/resolver.js +2 -34
  128. package/dist/llm/schemas.cjs +2 -17
  129. package/dist/llm/schemas.d.ts +10 -23
  130. package/dist/llm/schemas.d.ts.map +1 -1
  131. package/dist/llm/schemas.js +5 -22
  132. package/dist/llm/services/factory.cjs +3 -92
  133. package/dist/llm/services/factory.d.ts +14 -4
  134. package/dist/llm/services/factory.d.ts.map +1 -1
  135. package/dist/llm/services/factory.js +4 -83
  136. package/dist/llm/services/test-utils.integration.cjs +6 -8
  137. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  138. package/dist/llm/services/test-utils.integration.js +7 -9
  139. package/dist/llm/services/types.d.ts +1 -28
  140. package/dist/llm/services/types.d.ts.map +1 -1
  141. package/dist/llm/services/vercel.cjs +54 -468
  142. package/dist/llm/services/vercel.d.ts +38 -21
  143. package/dist/llm/services/vercel.d.ts.map +1 -1
  144. package/dist/llm/services/vercel.js +56 -475
  145. package/dist/llm/types.cjs +0 -3
  146. package/dist/llm/types.d.ts +8 -8
  147. package/dist/llm/types.d.ts.map +1 -1
  148. package/dist/llm/types.js +1 -3
  149. package/dist/llm/validation.js +1 -1
  150. package/dist/logger/browser.js +1 -1
  151. package/dist/logger/factory.js +1 -1
  152. package/dist/logger/index.js +1 -1
  153. package/dist/logger/logger.js +1 -1
  154. package/dist/logger/v2/dexto-logger.cjs +34 -6
  155. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  156. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  157. package/dist/logger/v2/dexto-logger.js +35 -7
  158. package/dist/logger/v2/error-codes.js +1 -1
  159. package/dist/logger/v2/errors.js +1 -1
  160. package/dist/logger/v2/schemas.js +1 -1
  161. package/dist/logger/v2/test-utils.cjs +70 -0
  162. package/dist/logger/v2/test-utils.d.ts +17 -0
  163. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  164. package/dist/logger/v2/test-utils.js +46 -0
  165. package/dist/logger/v2/transport-factory.js +1 -1
  166. package/dist/logger/v2/transports/console-transport.js +1 -1
  167. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  168. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  169. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  170. package/dist/logger/v2/transports/file-transport.js +7 -1
  171. package/dist/logger/v2/types.cjs +1 -0
  172. package/dist/logger/v2/types.d.ts +18 -2
  173. package/dist/logger/v2/types.d.ts.map +1 -1
  174. package/dist/logger/v2/types.js +2 -1
  175. package/dist/mcp/error-codes.cjs +1 -0
  176. package/dist/mcp/error-codes.d.ts +1 -0
  177. package/dist/mcp/error-codes.d.ts.map +1 -1
  178. package/dist/mcp/error-codes.js +2 -1
  179. package/dist/mcp/errors.cjs +13 -0
  180. package/dist/mcp/errors.d.ts +7 -0
  181. package/dist/mcp/errors.d.ts.map +1 -1
  182. package/dist/mcp/errors.js +14 -1
  183. package/dist/mcp/manager.cjs +4 -0
  184. package/dist/mcp/manager.d.ts.map +1 -1
  185. package/dist/mcp/manager.js +5 -1
  186. package/dist/mcp/mcp-client.js +1 -1
  187. package/dist/mcp/resolver.js +1 -1
  188. package/dist/mcp/schemas.cjs +6 -0
  189. package/dist/mcp/schemas.d.ts +52 -0
  190. package/dist/mcp/schemas.d.ts.map +1 -1
  191. package/dist/mcp/schemas.js +6 -1
  192. package/dist/memory/error-codes.js +1 -1
  193. package/dist/memory/errors.js +1 -1
  194. package/dist/memory/index.js +1 -1
  195. package/dist/memory/manager.js +1 -1
  196. package/dist/memory/schemas.d.ts +2 -2
  197. package/dist/memory/schemas.js +1 -1
  198. package/dist/plugins/builtins/content-policy.js +1 -1
  199. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  200. package/dist/plugins/error-codes.js +1 -1
  201. package/dist/plugins/index.js +1 -1
  202. package/dist/plugins/loader.js +1 -1
  203. package/dist/plugins/manager.js +1 -1
  204. package/dist/plugins/registrations/builtins.js +1 -1
  205. package/dist/plugins/schemas.d.ts +3 -3
  206. package/dist/plugins/schemas.js +1 -1
  207. package/dist/plugins/types.d.ts +0 -1
  208. package/dist/plugins/types.d.ts.map +1 -1
  209. package/dist/process/command-validator.js +1 -1
  210. package/dist/process/error-codes.js +1 -1
  211. package/dist/process/errors.js +1 -1
  212. package/dist/process/index.js +1 -1
  213. package/dist/process/process-service.cjs +78 -26
  214. package/dist/process/process-service.d.ts +6 -1
  215. package/dist/process/process-service.d.ts.map +1 -1
  216. package/dist/process/process-service.js +79 -27
  217. package/dist/process/types.d.ts +2 -2
  218. package/dist/process/types.d.ts.map +1 -1
  219. package/dist/prompts/error-codes.cjs +1 -0
  220. package/dist/prompts/error-codes.d.ts +2 -1
  221. package/dist/prompts/error-codes.d.ts.map +1 -1
  222. package/dist/prompts/error-codes.js +2 -1
  223. package/dist/prompts/errors.cjs +15 -0
  224. package/dist/prompts/errors.d.ts +4 -0
  225. package/dist/prompts/errors.d.ts.map +1 -1
  226. package/dist/prompts/errors.js +16 -1
  227. package/dist/prompts/index.js +1 -1
  228. package/dist/prompts/name-validation.js +1 -1
  229. package/dist/prompts/prompt-manager.cjs +13 -2
  230. package/dist/prompts/prompt-manager.d.ts +7 -0
  231. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  232. package/dist/prompts/prompt-manager.js +14 -3
  233. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  234. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  235. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  236. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  237. package/dist/prompts/providers/custom-prompt-provider.js +1 -1
  238. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  239. package/dist/prompts/schemas.d.ts +12 -0
  240. package/dist/prompts/schemas.d.ts.map +1 -1
  241. package/dist/prompts/schemas.js +1 -1
  242. package/dist/prompts/types.d.ts +2 -0
  243. package/dist/prompts/types.d.ts.map +1 -1
  244. package/dist/prompts/utils.js +1 -1
  245. package/dist/resources/error-codes.js +1 -1
  246. package/dist/resources/errors.js +1 -1
  247. package/dist/resources/handlers/blob-handler.js +1 -1
  248. package/dist/resources/handlers/factory.js +1 -1
  249. package/dist/resources/handlers/filesystem-handler.js +1 -1
  250. package/dist/resources/index.js +1 -1
  251. package/dist/resources/internal-provider.js +1 -1
  252. package/dist/resources/manager.js +1 -1
  253. package/dist/resources/reference-parser.js +1 -1
  254. package/dist/resources/schemas.js +1 -1
  255. package/dist/search/index.js +1 -1
  256. package/dist/search/search-service.js +1 -1
  257. package/dist/session/chat-session.cjs +149 -51
  258. package/dist/session/chat-session.d.ts +69 -29
  259. package/dist/session/chat-session.d.ts.map +1 -1
  260. package/dist/session/chat-session.js +150 -52
  261. package/dist/session/error-codes.js +1 -1
  262. package/dist/session/errors.js +1 -1
  263. package/dist/session/history/database.cjs +134 -21
  264. package/dist/session/history/database.d.ts +37 -8
  265. package/dist/session/history/database.d.ts.map +1 -1
  266. package/dist/session/history/database.js +135 -22
  267. package/dist/session/history/factory.js +1 -1
  268. package/dist/session/history/memory.cjs +18 -0
  269. package/dist/session/history/memory.d.ts +8 -0
  270. package/dist/session/history/memory.d.ts.map +1 -1
  271. package/dist/session/history/memory.js +19 -1
  272. package/dist/session/history/types.d.ts +13 -1
  273. package/dist/session/history/types.d.ts.map +1 -1
  274. package/dist/session/index.cjs +3 -0
  275. package/dist/session/index.d.ts +3 -0
  276. package/dist/session/index.d.ts.map +1 -1
  277. package/dist/session/index.js +3 -1
  278. package/dist/session/message-queue.cjs +201 -0
  279. package/dist/session/message-queue.d.ts +114 -0
  280. package/dist/session/message-queue.d.ts.map +1 -0
  281. package/dist/session/message-queue.js +178 -0
  282. package/dist/session/schemas.js +1 -1
  283. package/dist/session/session-manager.cjs +57 -7
  284. package/dist/session/session-manager.d.ts +18 -0
  285. package/dist/session/session-manager.d.ts.map +1 -1
  286. package/dist/session/session-manager.js +58 -8
  287. package/dist/session/title-generator.cjs +4 -8
  288. package/dist/session/title-generator.d.ts +1 -2
  289. package/dist/session/title-generator.d.ts.map +1 -1
  290. package/dist/session/title-generator.js +5 -9
  291. package/dist/session/types.cjs +16 -0
  292. package/dist/session/types.d.ts +14 -0
  293. package/dist/session/types.d.ts.map +1 -0
  294. package/dist/session/types.js +0 -0
  295. package/dist/storage/blob/factory.js +1 -1
  296. package/dist/storage/blob/local-blob-store.js +1 -1
  297. package/dist/storage/blob/memory-blob-store.js +1 -1
  298. package/dist/storage/blob/schemas.js +1 -1
  299. package/dist/storage/cache/factory.js +1 -1
  300. package/dist/storage/cache/memory-cache-store.js +1 -1
  301. package/dist/storage/cache/redis-store.js +1 -1
  302. package/dist/storage/cache/schemas.js +1 -1
  303. package/dist/storage/database/factory.js +1 -1
  304. package/dist/storage/database/memory-database-store.js +1 -1
  305. package/dist/storage/database/postgres-store.cjs +12 -0
  306. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  307. package/dist/storage/database/postgres-store.js +13 -1
  308. package/dist/storage/database/schemas.js +1 -1
  309. package/dist/storage/database/sqlite-store.js +1 -1
  310. package/dist/storage/error-codes.js +1 -1
  311. package/dist/storage/errors.js +1 -1
  312. package/dist/storage/index.js +1 -1
  313. package/dist/storage/schemas.js +1 -1
  314. package/dist/storage/storage-manager.js +1 -1
  315. package/dist/systemPrompt/contributors.js +1 -1
  316. package/dist/systemPrompt/error-codes.js +1 -1
  317. package/dist/systemPrompt/errors.js +1 -1
  318. package/dist/systemPrompt/in-built-prompts.js +1 -1
  319. package/dist/systemPrompt/index.js +1 -1
  320. package/dist/systemPrompt/manager.js +1 -1
  321. package/dist/systemPrompt/registry.js +1 -1
  322. package/dist/systemPrompt/schemas.d.ts +5 -5
  323. package/dist/systemPrompt/schemas.js +1 -1
  324. package/dist/telemetry/decorators.js +1 -1
  325. package/dist/telemetry/error-codes.js +1 -1
  326. package/dist/telemetry/errors.js +1 -1
  327. package/dist/telemetry/exporters.js +1 -1
  328. package/dist/telemetry/index.js +1 -1
  329. package/dist/telemetry/schemas.js +1 -1
  330. package/dist/telemetry/telemetry.js +1 -1
  331. package/dist/telemetry/utils.js +1 -1
  332. package/dist/tools/bash-pattern-utils.cjs +91 -0
  333. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  334. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  335. package/dist/tools/bash-pattern-utils.js +64 -0
  336. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  337. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  338. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  339. package/dist/tools/display-types.cjs +60 -0
  340. package/dist/tools/display-types.d.ts +133 -0
  341. package/dist/tools/display-types.d.ts.map +1 -0
  342. package/dist/tools/display-types.js +32 -0
  343. package/dist/tools/error-codes.cjs +2 -0
  344. package/dist/tools/error-codes.d.ts +3 -1
  345. package/dist/tools/error-codes.d.ts.map +1 -1
  346. package/dist/tools/error-codes.js +3 -1
  347. package/dist/tools/errors.cjs +30 -0
  348. package/dist/tools/errors.d.ts +16 -0
  349. package/dist/tools/errors.d.ts.map +1 -1
  350. package/dist/tools/errors.js +31 -1
  351. package/dist/tools/index.cjs +2 -0
  352. package/dist/tools/index.d.ts +1 -0
  353. package/dist/tools/index.d.ts.map +1 -1
  354. package/dist/tools/index.js +2 -1
  355. package/dist/tools/internal-tools/constants.js +1 -1
  356. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  357. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  358. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
  359. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
  360. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
  361. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
  362. package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
  363. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  364. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
  365. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
  366. package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
  367. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
  368. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
  369. package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
  370. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
  371. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
  372. package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
  373. package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
  374. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
  375. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
  376. package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
  377. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  378. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
  379. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
  380. package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
  381. package/dist/tools/internal-tools/provider.cjs +27 -10
  382. package/dist/tools/internal-tools/provider.d.ts +8 -5
  383. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  384. package/dist/tools/internal-tools/provider.js +28 -11
  385. package/dist/tools/internal-tools/registry.cjs +4 -3
  386. package/dist/tools/internal-tools/registry.d.ts +28 -7
  387. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  388. package/dist/tools/internal-tools/registry.js +5 -4
  389. package/dist/tools/schemas.cjs +16 -6
  390. package/dist/tools/schemas.d.ts +31 -4
  391. package/dist/tools/schemas.d.ts.map +1 -1
  392. package/dist/tools/schemas.js +14 -6
  393. package/dist/tools/tool-manager.cjs +140 -18
  394. package/dist/tools/tool-manager.d.ts +23 -1
  395. package/dist/tools/tool-manager.d.ts.map +1 -1
  396. package/dist/tools/tool-manager.js +145 -19
  397. package/dist/tools/types.d.ts +20 -0
  398. package/dist/tools/types.d.ts.map +1 -1
  399. package/dist/utils/api-key-resolver.js +1 -1
  400. package/dist/utils/async-context.js +1 -1
  401. package/dist/utils/debug.js +1 -1
  402. package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
  403. package/dist/utils/defer.d.ts +63 -0
  404. package/dist/utils/defer.d.ts.map +1 -0
  405. package/dist/utils/defer.js +19 -0
  406. package/dist/utils/env-file.js +1 -1
  407. package/dist/utils/error-conversion.js +1 -1
  408. package/dist/utils/execution-context.js +1 -1
  409. package/dist/utils/fs-walk.js +1 -1
  410. package/dist/utils/index.cjs +3 -1
  411. package/dist/utils/index.d.ts +1 -0
  412. package/dist/utils/index.d.ts.map +1 -1
  413. package/dist/utils/index.js +1 -0
  414. package/dist/utils/path.js +1 -1
  415. package/dist/utils/redactor.js +1 -1
  416. package/dist/utils/result.js +1 -1
  417. package/dist/utils/safe-stringify.js +1 -1
  418. package/dist/utils/schema-metadata.js +1 -1
  419. package/dist/utils/schema.js +1 -1
  420. package/dist/utils/service-initializer.cjs +6 -2
  421. package/dist/utils/service-initializer.d.ts.map +1 -1
  422. package/dist/utils/service-initializer.js +7 -3
  423. package/dist/utils/user-info.js +1 -1
  424. package/dist/utils/zod-schema-converter.js +1 -1
  425. package/package.json +6 -7
  426. package/dist/context/compression/middle-removal.cjs +0 -95
  427. package/dist/context/compression/middle-removal.d.ts +0 -47
  428. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  429. package/dist/context/compression/middle-removal.js +0 -72
  430. package/dist/context/compression/oldest-removal.cjs +0 -83
  431. package/dist/context/compression/oldest-removal.d.ts +0 -42
  432. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  433. package/dist/context/compression/oldest-removal.js +0 -60
  434. package/dist/llm/formatters/anthropic.cjs +0 -257
  435. package/dist/llm/formatters/anthropic.d.ts +0 -46
  436. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  437. package/dist/llm/formatters/anthropic.js +0 -239
  438. package/dist/llm/formatters/factory.cjs +0 -50
  439. package/dist/llm/formatters/factory.d.ts +0 -10
  440. package/dist/llm/formatters/factory.d.ts.map +0 -1
  441. package/dist/llm/formatters/factory.js +0 -27
  442. package/dist/llm/formatters/openai.cjs +0 -203
  443. package/dist/llm/formatters/openai.d.ts +0 -39
  444. package/dist/llm/formatters/openai.d.ts.map +0 -1
  445. package/dist/llm/formatters/openai.js +0 -184
  446. package/dist/llm/formatters/types.d.ts +0 -41
  447. package/dist/llm/formatters/types.d.ts.map +0 -1
  448. package/dist/llm/services/anthropic.cjs +0 -511
  449. package/dist/llm/services/anthropic.d.ts +0 -48
  450. package/dist/llm/services/anthropic.d.ts.map +0 -1
  451. package/dist/llm/services/anthropic.js +0 -447
  452. package/dist/llm/services/openai.cjs +0 -611
  453. package/dist/llm/services/openai.d.ts +0 -48
  454. package/dist/llm/services/openai.d.ts.map +0 -1
  455. package/dist/llm/services/openai.js +0 -547
  456. package/dist/llm/tokenizer/anthropic.cjs +0 -43
  457. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  458. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  459. package/dist/llm/tokenizer/anthropic.js +0 -20
  460. package/dist/llm/tokenizer/default.d.ts +0 -14
  461. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  462. package/dist/llm/tokenizer/default.js +0 -18
  463. package/dist/llm/tokenizer/factory.cjs +0 -44
  464. package/dist/llm/tokenizer/factory.d.ts +0 -12
  465. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  466. package/dist/llm/tokenizer/factory.js +0 -21
  467. package/dist/llm/tokenizer/google.cjs +0 -52
  468. package/dist/llm/tokenizer/google.d.ts +0 -29
  469. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  470. package/dist/llm/tokenizer/google.js +0 -29
  471. package/dist/llm/tokenizer/openai.cjs +0 -115
  472. package/dist/llm/tokenizer/openai.d.ts +0 -41
  473. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  474. package/dist/llm/tokenizer/openai.js +0 -91
  475. package/dist/llm/tokenizer/types.d.ts +0 -18
  476. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  477. package/dist/llm/tokenizer/types.js +0 -10
  478. /package/dist/llm/{formatters → executor}/types.cjs +0 -0
  479. /package/dist/llm/{formatters → executor}/types.js +0 -0
@@ -2,13 +2,20 @@ import {
2
2
  __decorateElement,
3
3
  __decoratorStart,
4
4
  __runInitializers
5
- } from "../chunk-C6A6W6XS.js";
5
+ } from "../chunk-PTJYTZNU.js";
6
6
  var _ToolManager_decorators, _init;
7
7
  import { InternalToolsProvider } from "./internal-tools/provider.js";
8
8
  import { ToolError } from "./errors.js";
9
+ import { ToolErrorCode } from "./error-codes.js";
10
+ import { DextoRuntimeError } from "../errors/index.js";
9
11
  import { DextoLogComponent } from "../logger/v2/types.js";
10
12
  import { ApprovalStatus } from "../approval/types.js";
11
13
  import { InstrumentClass } from "../telemetry/decorators.js";
14
+ import {
15
+ generateBashPatternKey,
16
+ generateBashPatternSuggestions,
17
+ isDangerousCommand
18
+ } from "./bash-pattern-utils.js";
12
19
  _ToolManager_decorators = [InstrumentClass({
13
20
  prefix: "tool",
14
21
  excludeMethods: [
@@ -46,9 +53,12 @@ let _ToolManager = class _ToolManager {
46
53
  this.toolPolicies = toolPolicies;
47
54
  this.logger = logger.createChild(DextoLogComponent.TOOLS);
48
55
  if (options?.internalToolsConfig && options.internalToolsConfig.length > 0) {
56
+ const internalToolsServices = {
57
+ ...options.internalToolsServices,
58
+ approvalManager
59
+ };
49
60
  this.internalToolsProvider = new InternalToolsProvider(
50
- options.internalToolsServices || {},
51
- approvalManager,
61
+ internalToolsServices,
52
62
  options.internalToolsConfig,
53
63
  this.logger
54
64
  );
@@ -100,6 +110,37 @@ let _ToolManager = class _ToolManager {
100
110
  this.invalidateCache();
101
111
  });
102
112
  }
113
+ // ==================== Bash Pattern Approval Helpers ====================
114
+ /**
115
+ * Check if a tool name represents a bash execution tool
116
+ */
117
+ isBashTool(toolName) {
118
+ return toolName === "bash_exec" || toolName === "internal--bash_exec";
119
+ }
120
+ /**
121
+ * Check if a bash command is covered by any approved pattern.
122
+ * Generates a pattern key from the command, then checks if it's covered by stored patterns.
123
+ *
124
+ * Returns approval info if covered, or pattern suggestions if not.
125
+ */
126
+ checkBashPatternApproval(command) {
127
+ const patternKey = generateBashPatternKey(command);
128
+ if (!patternKey) {
129
+ if (isDangerousCommand(command)) {
130
+ this.logger.debug(
131
+ `Skipping pattern generation for dangerous command: ${command.split(/\s+/)[0]}`
132
+ );
133
+ }
134
+ return { approved: false, suggestedPatterns: [] };
135
+ }
136
+ if (this.approvalManager.matchesBashPattern(patternKey)) {
137
+ return { approved: true };
138
+ }
139
+ return {
140
+ approved: false,
141
+ suggestedPatterns: generateBashPatternSuggestions(command)
142
+ };
143
+ }
103
144
  getMcpManager() {
104
145
  return this.mcpManager;
105
146
  }
@@ -184,15 +225,41 @@ let _ToolManager = class _ToolManager {
184
225
  /**
185
226
  * Execute a tool by routing based on universal prefix
186
227
  * ALL tools must have source prefix - no exceptions
228
+ *
229
+ * @param toolName The fully qualified tool name (e.g., "internal--edit_file")
230
+ * @param args The arguments for the tool
231
+ * @param toolCallId The unique tool call ID for tracking (from LLM or generated for direct calls)
232
+ * @param sessionId Optional session ID for context
233
+ * @param abortSignal Optional abort signal for cancellation support
187
234
  */
188
- async executeTool(toolName, args, sessionId) {
189
- this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}'`);
235
+ async executeTool(toolName, args, toolCallId, sessionId, abortSignal) {
236
+ this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}' (toolCallId: ${toolCallId})`);
190
237
  this.logger.debug(`Tool args: ${JSON.stringify(args, null, 2)}`);
191
- await this.handleToolApproval(toolName, args, sessionId);
238
+ if (sessionId) {
239
+ this.agentEventBus.emit("llm:tool-call", {
240
+ toolName,
241
+ args,
242
+ callId: toolCallId,
243
+ sessionId
244
+ });
245
+ }
246
+ const { requireApproval, approvalStatus } = await this.handleToolApproval(
247
+ toolName,
248
+ args,
249
+ toolCallId,
250
+ sessionId
251
+ );
192
252
  this.logger.debug(`\u2705 Tool execution approved: ${toolName}`);
193
253
  this.logger.info(
194
254
  `\u{1F527} Tool execution started for ${toolName}, sessionId: ${sessionId ?? "global"}`
195
255
  );
256
+ if (sessionId) {
257
+ this.agentEventBus.emit("tool:running", {
258
+ toolName,
259
+ toolCallId,
260
+ sessionId
261
+ });
262
+ }
196
263
  const startTime = Date.now();
197
264
  if (this.pluginManager && this.sessionManager && this.stateManager) {
198
265
  const beforePayload = {
@@ -236,7 +303,8 @@ let _ToolManager = class _ToolManager {
236
303
  result = await this.internalToolsProvider.executeTool(
237
304
  actualToolName,
238
305
  args,
239
- sessionId
306
+ sessionId,
307
+ abortSignal
240
308
  );
241
309
  } else {
242
310
  this.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
@@ -274,7 +342,10 @@ let _ToolManager = class _ToolManager {
274
342
  );
275
343
  result = modifiedPayload.result;
276
344
  }
277
- return result;
345
+ return {
346
+ result,
347
+ ...requireApproval && { requireApproval, approvalStatus }
348
+ };
278
349
  } catch (error) {
279
350
  const duration = Date.now() - startTime;
280
351
  this.logger.error(
@@ -414,8 +485,13 @@ let _ToolManager = class _ToolManager {
414
485
  * Handle tool approval/confirmation flow
415
486
  * Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
416
487
  * and handles remember choice logic
488
+ *
489
+ * @param toolName The fully qualified tool name
490
+ * @param args The arguments for the tool
491
+ * @param toolCallId The unique tool call ID for tracking parallel tool calls
492
+ * @param sessionId Optional session ID for context
417
493
  */
418
- async handleToolApproval(toolName, args, sessionId) {
494
+ async handleToolApproval(toolName, args, toolCallId, sessionId) {
419
495
  if (this.isInAlwaysDenyList(toolName)) {
420
496
  this.logger.info(
421
497
  `Tool '${toolName}' is in static deny list \u2013 blocking execution (session: ${sessionId ?? "global"})`
@@ -427,18 +503,31 @@ let _ToolManager = class _ToolManager {
427
503
  this.logger.info(
428
504
  `Tool '${toolName}' is in static allow list \u2013 skipping confirmation (session: ${sessionId ?? "global"})`
429
505
  );
430
- return;
506
+ return { requireApproval: false };
431
507
  }
432
508
  const isAllowed = await this.allowedToolsProvider.isToolAllowed(toolName, sessionId);
433
509
  if (isAllowed) {
434
510
  this.logger.info(
435
511
  `Tool '${toolName}' already allowed for session '${sessionId ?? "global"}' \u2013 skipping confirmation.`
436
512
  );
437
- return;
513
+ return { requireApproval: false };
514
+ }
515
+ let bashPatternResult;
516
+ if (this.isBashTool(toolName)) {
517
+ const command = args.command;
518
+ if (command) {
519
+ bashPatternResult = this.checkBashPatternApproval(command);
520
+ if (bashPatternResult.approved) {
521
+ this.logger.info(
522
+ `Bash command '${command}' matched approved pattern \u2013 skipping confirmation.`
523
+ );
524
+ return { requireApproval: false };
525
+ }
526
+ }
438
527
  }
439
528
  if (this.approvalMode === "auto-approve") {
440
529
  this.logger.debug(`\u{1F7E2} Auto-approving tool execution: ${toolName}`);
441
- return;
530
+ return { requireApproval: false };
442
531
  }
443
532
  if (this.approvalMode === "auto-deny") {
444
533
  this.logger.debug(`\u{1F6AB} Auto-denying tool execution: ${toolName}`);
@@ -448,21 +537,57 @@ let _ToolManager = class _ToolManager {
448
537
  `Tool confirmation requested for ${toolName}, sessionId: ${sessionId ?? "global"}`
449
538
  );
450
539
  try {
540
+ let displayPreview;
541
+ const actualToolName = toolName.replace(/^internal--/, "");
542
+ const internalTool = this.internalToolsProvider?.getTool(actualToolName);
543
+ if (internalTool?.generatePreview) {
544
+ try {
545
+ const context = { sessionId };
546
+ const preview = await internalTool.generatePreview(args, context);
547
+ displayPreview = preview ?? void 0;
548
+ this.logger.debug(`Generated preview for ${toolName}`);
549
+ } catch (previewError) {
550
+ if (previewError instanceof DextoRuntimeError && previewError.code === ToolErrorCode.VALIDATION_FAILED) {
551
+ this.logger.debug(
552
+ `Validation failed for ${toolName}: ${previewError.message}`
553
+ );
554
+ throw previewError;
555
+ }
556
+ this.logger.debug(
557
+ `Preview generation failed for ${toolName}: ${previewError instanceof Error ? previewError.message : String(previewError)}`
558
+ );
559
+ }
560
+ }
451
561
  const requestData = {
452
562
  toolName,
563
+ toolCallId,
453
564
  args
454
565
  };
455
566
  if (sessionId !== void 0) {
456
567
  requestData.sessionId = sessionId;
457
568
  }
569
+ if (displayPreview !== void 0) {
570
+ requestData.displayPreview = displayPreview;
571
+ }
572
+ if (bashPatternResult?.suggestedPatterns && bashPatternResult.suggestedPatterns.length > 0) {
573
+ requestData.suggestedPatterns = bashPatternResult.suggestedPatterns;
574
+ }
458
575
  const response = await this.approvalManager.requestToolConfirmation(requestData);
459
- const rememberChoice = response.data && "rememberChoice" in response.data ? response.data.rememberChoice : false;
460
- if (response.status === ApprovalStatus.APPROVED && rememberChoice) {
461
- const allowSessionId = sessionId ?? response.sessionId;
462
- await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
463
- this.logger.info(
464
- `Tool '${toolName}' added to allowed tools for session '${allowSessionId ?? "global"}' (remember choice selected)`
465
- );
576
+ if (response.status === ApprovalStatus.APPROVED && response.data) {
577
+ const rememberChoice = "rememberChoice" in response.data ? response.data.rememberChoice : false;
578
+ const rememberPattern = "rememberPattern" in response.data ? response.data.rememberPattern : void 0;
579
+ if (rememberChoice) {
580
+ const allowSessionId = sessionId ?? response.sessionId;
581
+ await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
582
+ this.logger.info(
583
+ `Tool '${toolName}' added to allowed tools for session '${allowSessionId ?? "global"}' (remember choice selected)`
584
+ );
585
+ } else if (rememberPattern && typeof rememberPattern === "string" && this.isBashTool(toolName)) {
586
+ this.approvalManager.addBashPattern(rememberPattern);
587
+ this.logger.info(
588
+ `Bash pattern '${rememberPattern}' added for session approval`
589
+ );
590
+ }
466
591
  }
467
592
  const approved = response.status === ApprovalStatus.APPROVED;
468
593
  if (!approved) {
@@ -483,6 +608,7 @@ let _ToolManager = class _ToolManager {
483
608
  this.logger.info(
484
609
  `Tool confirmation approved for ${toolName}, sessionId: ${sessionId ?? "global"}`
485
610
  );
611
+ return { requireApproval: true, approvalStatus: "approved" };
486
612
  } catch (error) {
487
613
  this.logger.error(
488
614
  `Tool confirmation error for ${toolName}: ${error instanceof Error ? error.message : String(error)}`
@@ -1,11 +1,25 @@
1
1
  import type { JSONSchema7 } from 'json-schema';
2
2
  import type { ZodSchema } from 'zod';
3
+ import type { ToolDisplayData } from './display-types.js';
3
4
  /**
4
5
  * Context passed to tool execution
5
6
  */
6
7
  export interface ToolExecutionContext {
7
8
  /** Session ID if available */
8
9
  sessionId?: string | undefined;
10
+ /** Abort signal for cancellation support */
11
+ abortSignal?: AbortSignal | undefined;
12
+ }
13
+ /**
14
+ * Result of tool execution, including approval metadata
15
+ */
16
+ export interface ToolExecutionResult {
17
+ /** The actual result data from tool execution */
18
+ result: unknown;
19
+ /** Whether this tool required user approval before execution */
20
+ requireApproval?: boolean;
21
+ /** The approval status (only present if requireApproval is true) */
22
+ approvalStatus?: 'approved' | 'rejected';
9
23
  }
10
24
  /**
11
25
  * Internal tool interface - for tools implemented within Dexto
@@ -19,6 +33,12 @@ export interface InternalTool {
19
33
  inputSchema: ZodSchema;
20
34
  /** The actual function that executes the tool - input is validated by Zod before execution */
21
35
  execute: (input: unknown, context?: ToolExecutionContext) => Promise<unknown> | unknown;
36
+ /**
37
+ * Optional preview generator for approval UI.
38
+ * Called before requesting user approval to generate display data (e.g., diff preview).
39
+ * Returns null if no preview is available.
40
+ */
41
+ generatePreview?: (input: unknown, context?: ToolExecutionContext) => Promise<ToolDisplayData | null>;
22
42
  }
23
43
  /**
24
44
  * Standard tool set interface - used by AI/LLM services
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IAEX,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;IAEvB,8FAA8F;IAC9F,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC3F;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,WAAW,CAAC;KAC3B,CAAC;CACL;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAC5C;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IAEX,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;IAEvB,8FAA8F;IAC9F,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAExF;;;;OAIG;IACH,eAAe,CAAC,EAAE,CACd,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,oBAAoB,KAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,WAAW,CAAC;KAC3B,CAAC;CACL;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"}
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  const PROVIDER_API_KEY_MAP = {
3
3
  openai: ["OPENAI_API_KEY", "OPENAI_KEY"],
4
4
  "openai-compatible": ["OPENAI_API_KEY", "OPENAI_KEY"],
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { AsyncLocalStorage } from "async_hooks";
3
3
  const asyncContext = new AsyncLocalStorage();
4
4
  function setContext(ctx) {
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  function shouldIncludeRawToolResult() {
3
3
  const flag = process.env.DEXTO_DEBUG_TOOL_RESULT_RAW;
4
4
  if (!flag) return false;
@@ -16,18 +16,27 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var types_exports = {};
20
- __export(types_exports, {
21
- TokenizationError: () => TokenizationError
19
+ var defer_exports = {};
20
+ __export(defer_exports, {
21
+ defer: () => defer
22
22
  });
23
- module.exports = __toCommonJS(types_exports);
24
- class TokenizationError extends Error {
25
- constructor(message) {
26
- super(message);
27
- this.name = "TokenizationError";
28
- }
23
+ module.exports = __toCommonJS(defer_exports);
24
+ function defer(cleanupFn) {
25
+ return {
26
+ [Symbol.dispose]() {
27
+ const result = cleanupFn();
28
+ if (result instanceof Promise) {
29
+ result.catch((err) => {
30
+ console.error("Deferred async cleanup failed (used sync dispose):", err);
31
+ });
32
+ }
33
+ },
34
+ [Symbol.asyncDispose]() {
35
+ return Promise.resolve(cleanupFn());
36
+ }
37
+ };
29
38
  }
30
39
  // Annotate the CommonJS export names for ESM import in node:
31
40
  0 && (module.exports = {
32
- TokenizationError
41
+ defer
33
42
  });
@@ -0,0 +1,63 @@
1
+ /**
2
+ * TC39 Explicit Resource Management pattern.
3
+ * Similar to Go's `defer`, Python's `with`, C#'s `using`.
4
+ *
5
+ * Benefits:
6
+ * - Can't forget cleanup (automatic on scope exit)
7
+ * - Works with early returns, throws, aborts
8
+ * - Multiple defers execute in LIFO order
9
+ * - Cleaner than try/finally chains
10
+ *
11
+ * @see https://github.com/tc39/proposal-explicit-resource-management
12
+ */
13
+ /**
14
+ * Type for cleanup functions - can be sync or async.
15
+ */
16
+ export type CleanupFunction = () => void | Promise<void>;
17
+ /**
18
+ * Return type for defer() - implements both Disposable and AsyncDisposable.
19
+ */
20
+ export interface DeferredCleanup extends Disposable, AsyncDisposable {
21
+ [Symbol.dispose]: () => void;
22
+ [Symbol.asyncDispose]: () => Promise<void>;
23
+ }
24
+ /**
25
+ * Creates a deferred cleanup resource.
26
+ *
27
+ * When used with the `using` keyword, the cleanup function is automatically
28
+ * called when the enclosing scope exits - whether normally, via return,
29
+ * or via thrown exception.
30
+ *
31
+ * @param cleanupFn - The function to call on cleanup. Can be sync or async.
32
+ * @returns A disposable resource for use with `using` keyword
33
+ *
34
+ * @example Synchronous cleanup
35
+ * ```typescript
36
+ * function processData(): void {
37
+ * using _ = defer(() => console.log('cleanup'));
38
+ * // ... work ...
39
+ * // 'cleanup' is logged when scope exits
40
+ * }
41
+ * ```
42
+ *
43
+ * @example Async cleanup with await using
44
+ * ```typescript
45
+ * async function execute(): Promise<void> {
46
+ * await using _ = defer(async () => {
47
+ * await closeConnection();
48
+ * });
49
+ * // ... work ...
50
+ * }
51
+ * ```
52
+ *
53
+ * @example Multiple defers (LIFO order)
54
+ * ```typescript
55
+ * function example(): void {
56
+ * using a = defer(() => console.log('first'));
57
+ * using b = defer(() => console.log('second'));
58
+ * // Logs: 'second' then 'first' (LIFO)
59
+ * }
60
+ * ```
61
+ */
62
+ export declare function defer(cleanupFn: CleanupFunction): DeferredCleanup;
63
+ //# sourceMappingURL=defer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defer.d.ts","sourceRoot":"","sources":["../../src/utils/defer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,UAAU,EAAE,eAAe;IAChE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,CAgBjE"}
@@ -0,0 +1,19 @@
1
+ import "../chunk-PTJYTZNU.js";
2
+ function defer(cleanupFn) {
3
+ return {
4
+ [Symbol.dispose]() {
5
+ const result = cleanupFn();
6
+ if (result instanceof Promise) {
7
+ result.catch((err) => {
8
+ console.error("Deferred async cleanup failed (used sync dispose):", err);
9
+ });
10
+ }
11
+ },
12
+ [Symbol.asyncDispose]() {
13
+ return Promise.resolve(cleanupFn());
14
+ }
15
+ };
16
+ }
17
+ export {
18
+ defer
19
+ };
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import * as path from "node:path";
3
3
  import { promises as fs } from "node:fs";
4
4
  const DEXTO_ENV_KEYS = [
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { safeStringify } from "./safe-stringify.js";
3
3
  function toError(error, logger) {
4
4
  if (error instanceof Error) {
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { walkUpDirectories } from "./fs-walk.js";
3
3
  import { readFileSync } from "fs";
4
4
  import * as path from "path";
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import * as path from "path";
3
3
  function walkUpDirectories(startPath, predicate) {
4
4
  let currentPath = path.resolve(startPath);
@@ -27,6 +27,7 @@ __reExport(utils_exports, require("./env-file.js"), module.exports);
27
27
  __reExport(utils_exports, require("./debug.js"), module.exports);
28
28
  __reExport(utils_exports, require("./safe-stringify.js"), module.exports);
29
29
  __reExport(utils_exports, require("./api-key-resolver.js"), module.exports);
30
+ __reExport(utils_exports, require("./defer.js"), module.exports);
30
31
  // Annotate the CommonJS export names for ESM import in node:
31
32
  0 && (module.exports = {
32
33
  ...require("./path.js"),
@@ -40,5 +41,6 @@ __reExport(utils_exports, require("./api-key-resolver.js"), module.exports);
40
41
  ...require("./env-file.js"),
41
42
  ...require("./debug.js"),
42
43
  ...require("./safe-stringify.js"),
43
- ...require("./api-key-resolver.js")
44
+ ...require("./api-key-resolver.js"),
45
+ ...require("./defer.js")
44
46
  });
@@ -10,4 +10,5 @@ export * from './env-file.js';
10
10
  export * from './debug.js';
11
11
  export * from './safe-stringify.js';
12
12
  export * from './api-key-resolver.js';
13
+ export * from './defer.js';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAKA,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAKA,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
@@ -10,3 +10,4 @@ export * from "./env-file.js";
10
10
  export * from "./debug.js";
11
11
  export * from "./safe-stringify.js";
12
12
  export * from "./api-key-resolver.js";
13
+ export * from "./defer.js";
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import * as path from "path";
3
3
  import { existsSync } from "fs";
4
4
  import { promises as fs } from "fs";
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  const SENSITIVE_FIELDS = [
3
3
  "apikey",
4
4
  "api_key",
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  import { ErrorScope, ErrorType } from "../errors/types.js";
4
4
  const NonEmptyTrimmed = z.string().transform((s) => s.trim()).refine((s) => s.length > 0, { message: "Required" });
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { redactSensitiveData } from "./redactor.js";
3
3
  function safeStringify(value, maxLen = 1e3) {
4
4
  try {
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  function extractDefault(def) {
3
3
  if (def.defaultValue !== void 0) {
4
4
  return typeof def.defaultValue === "function" ? def.defaultValue() : def.defaultValue;
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { zodToJsonSchema } from "zod-to-json-schema";
3
3
  function convertZodSchemaToJsonSchema(zodSchema, logger) {
4
4
  try {
@@ -65,11 +65,15 @@ async function createAgentServices(config, configPath, logger, agentEventBus) {
65
65
  {
66
66
  toolConfirmation: {
67
67
  mode: config.toolConfirmation.mode,
68
- timeout: config.toolConfirmation.timeout
68
+ ...config.toolConfirmation.timeout !== void 0 && {
69
+ timeout: config.toolConfirmation.timeout
70
+ }
69
71
  },
70
72
  elicitation: {
71
73
  enabled: config.elicitation.enabled,
72
- timeout: config.elicitation.timeout
74
+ ...config.elicitation.timeout !== void 0 && {
75
+ timeout: config.elicitation.timeout
76
+ }
73
77
  }
74
78
  },
75
79
  logger
@@ -1 +1 @@
1
- {"version":3,"file":"service-initializer.d.ts","sourceRoot":"","sources":["../../src/utils/service-initializer.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAwB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,iBAAiB,CAAC;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;CAChC,CAAC;AAGF;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,aAAa,GAC7B,OAAO,CAAC,aAAa,CAAC,CA+NxB"}
1
+ {"version":3,"file":"service-initializer.d.ts","sourceRoot":"","sources":["../../src/utils/service-initializer.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAwB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,iBAAiB,CAAC;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;CAChC,CAAC;AAGF;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,aAAa,GAC7B,OAAO,CAAC,aAAa,CAAC,CAmOxB"}
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { MCPManager } from "../mcp/manager.js";
3
3
  import { ToolManager } from "../tools/tool-manager.js";
4
4
  import { SystemPromptManager } from "../systemPrompt/manager.js";
@@ -33,11 +33,15 @@ async function createAgentServices(config, configPath, logger, agentEventBus) {
33
33
  {
34
34
  toolConfirmation: {
35
35
  mode: config.toolConfirmation.mode,
36
- timeout: config.toolConfirmation.timeout
36
+ ...config.toolConfirmation.timeout !== void 0 && {
37
+ timeout: config.toolConfirmation.timeout
38
+ }
37
39
  },
38
40
  elicitation: {
39
41
  enabled: config.elicitation.enabled,
40
- timeout: config.elicitation.timeout
42
+ ...config.elicitation.timeout !== void 0 && {
43
+ timeout: config.elicitation.timeout
44
+ }
41
45
  }
42
46
  },
43
47
  logger
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  function getUserId() {
3
3
  return "default-user";
4
4
  }
@@ -1,4 +1,4 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  function jsonSchemaToZodShape(jsonSchema) {
4
4
  if (!jsonSchema || typeof jsonSchema !== "object" || jsonSchema.type !== "object") {