@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
@@ -39,6 +39,18 @@ function createGlobFilesTool(fileSystemService) {
39
39
  maxResults: max_results,
40
40
  includeMetadata: true
41
41
  });
42
+ const _display = {
43
+ type: "search",
44
+ pattern,
45
+ matches: result.files.map((file) => ({
46
+ file: file.path,
47
+ line: 0,
48
+ // No line number for glob
49
+ content: file.path
50
+ })),
51
+ totalMatches: result.totalFound,
52
+ truncated: result.truncated
53
+ };
42
54
  return {
43
55
  files: result.files.map((file) => ({
44
56
  path: file.path,
@@ -46,7 +58,8 @@ function createGlobFilesTool(fileSystemService) {
46
58
  modified: file.modified.toISOString()
47
59
  })),
48
60
  total_found: result.totalFound,
49
- truncated: result.truncated
61
+ truncated: result.truncated,
62
+ _display
50
63
  };
51
64
  }
52
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"glob-files-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/glob-files-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAuBjE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CA4BtF"}
1
+ {"version":3,"file":"glob-files-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/glob-files-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAwBjE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CA0CtF"}
@@ -1,4 +1,4 @@
1
- import "../../../chunk-C6A6W6XS.js";
1
+ import "../../../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  const GlobFilesInputSchema = z.object({
4
4
  pattern: z.string().describe('Glob pattern to match files (e.g., "**/*.ts", "src/**/*.js")'),
@@ -17,6 +17,18 @@ function createGlobFilesTool(fileSystemService) {
17
17
  maxResults: max_results,
18
18
  includeMetadata: true
19
19
  });
20
+ const _display = {
21
+ type: "search",
22
+ pattern,
23
+ matches: result.files.map((file) => ({
24
+ file: file.path,
25
+ line: 0,
26
+ // No line number for glob
27
+ content: file.path
28
+ })),
29
+ totalMatches: result.totalFound,
30
+ truncated: result.truncated
31
+ };
20
32
  return {
21
33
  files: result.files.map((file) => ({
22
34
  path: file.path,
@@ -24,7 +36,8 @@ function createGlobFilesTool(fileSystemService) {
24
36
  modified: file.modified.toISOString()
25
37
  })),
26
38
  total_found: result.totalFound,
27
- truncated: result.truncated
39
+ truncated: result.truncated,
40
+ _display
28
41
  };
29
42
  }
30
43
  };
@@ -46,6 +46,20 @@ function createGrepContentTool(fileSystemService) {
46
46
  caseInsensitive: case_insensitive,
47
47
  maxResults: max_results
48
48
  });
49
+ const _display = {
50
+ type: "search",
51
+ pattern,
52
+ matches: result.matches.map((match) => ({
53
+ file: match.file,
54
+ line: match.lineNumber,
55
+ content: match.line,
56
+ ...match.context && {
57
+ context: [...match.context.before, ...match.context.after]
58
+ }
59
+ })),
60
+ totalMatches: result.totalMatches,
61
+ truncated: result.truncated
62
+ };
49
63
  return {
50
64
  matches: result.matches.map((match) => ({
51
65
  file: match.file,
@@ -60,7 +74,8 @@ function createGrepContentTool(fileSystemService) {
60
74
  })),
61
75
  total_matches: result.totalMatches,
62
76
  files_searched: result.filesSearched,
63
- truncated: result.truncated
77
+ truncated: result.truncated,
78
+ _display
64
79
  };
65
80
  }
66
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"grep-content-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/grep-content-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAuCjE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAsCxF"}
1
+ {"version":3,"file":"grep-content-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/grep-content-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAwCjE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAuDxF"}
@@ -1,4 +1,4 @@
1
- import "../../../chunk-C6A6W6XS.js";
1
+ import "../../../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  const GrepContentInputSchema = z.object({
4
4
  pattern: z.string().describe("Regular expression pattern to search for"),
@@ -24,6 +24,20 @@ function createGrepContentTool(fileSystemService) {
24
24
  caseInsensitive: case_insensitive,
25
25
  maxResults: max_results
26
26
  });
27
+ const _display = {
28
+ type: "search",
29
+ pattern,
30
+ matches: result.matches.map((match) => ({
31
+ file: match.file,
32
+ line: match.lineNumber,
33
+ content: match.line,
34
+ ...match.context && {
35
+ context: [...match.context.before, ...match.context.after]
36
+ }
37
+ })),
38
+ totalMatches: result.totalMatches,
39
+ truncated: result.truncated
40
+ };
27
41
  return {
28
42
  matches: result.matches.map((match) => ({
29
43
  file: match.file,
@@ -38,7 +52,8 @@ function createGrepContentTool(fileSystemService) {
38
52
  })),
39
53
  total_matches: result.totalMatches,
40
54
  files_searched: result.filesSearched,
41
- truncated: result.truncated
55
+ truncated: result.truncated,
56
+ _display
42
57
  };
43
58
  }
44
59
  };
@@ -1,4 +1,4 @@
1
- import "../../../chunk-C6A6W6XS.js";
1
+ import "../../../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  const KillProcessInputSchema = z.object({
4
4
  process_id: z.string().describe("Process ID of the background process to terminate")
@@ -38,13 +38,21 @@ function createReadFileTool(fileSystemService) {
38
38
  limit,
39
39
  offset
40
40
  });
41
+ const _display = {
42
+ type: "file",
43
+ path: file_path,
44
+ operation: "read",
45
+ size: result.size,
46
+ lineCount: result.lines
47
+ };
41
48
  return {
42
49
  content: result.content,
43
50
  lines: result.lines,
44
51
  encoding: result.encoding,
45
52
  truncated: result.truncated,
46
53
  size: result.size,
47
- ...result.mimeType && { mimeType: result.mimeType }
54
+ ...result.mimeType && { mimeType: result.mimeType },
55
+ _display
48
56
  };
49
57
  }
50
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"read-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/read-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAsBjE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CA0BrF"}
1
+ {"version":3,"file":"read-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/read-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAuBjE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAoCrF"}
@@ -1,4 +1,4 @@
1
- import "../../../chunk-C6A6W6XS.js";
1
+ import "../../../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  const ReadFileInputSchema = z.object({
4
4
  file_path: z.string().describe("Absolute path to the file to read"),
@@ -16,13 +16,21 @@ function createReadFileTool(fileSystemService) {
16
16
  limit,
17
17
  offset
18
18
  });
19
+ const _display = {
20
+ type: "file",
21
+ path: file_path,
22
+ operation: "read",
23
+ size: result.size,
24
+ lineCount: result.lines
25
+ };
19
26
  return {
20
27
  content: result.content,
21
28
  lines: result.lines,
22
29
  encoding: result.encoding,
23
30
  truncated: result.truncated,
24
31
  size: result.size,
25
- ...result.mimeType && { mimeType: result.mimeType }
32
+ ...result.mimeType && { mimeType: result.mimeType },
33
+ _display
26
34
  };
27
35
  }
28
36
  };
@@ -1,4 +1,4 @@
1
- import "../../../chunk-C6A6W6XS.js";
1
+ import "../../../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  const SearchHistoryInputSchema = z.object({
4
4
  query: z.string().describe("The search query to find in conversation history"),
@@ -22,30 +22,98 @@ __export(write_file_tool_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(write_file_tool_exports);
24
24
  var import_zod = require("zod");
25
+ var import_diff = require("diff");
26
+ var import_filesystem = require("../../../filesystem/index.js");
27
+ var import_errors = require("../../../errors/index.js");
25
28
  const WriteFileInputSchema = import_zod.z.object({
26
29
  file_path: import_zod.z.string().describe("Absolute path where the file should be written"),
27
30
  content: import_zod.z.string().describe("Content to write to the file"),
28
31
  create_dirs: import_zod.z.boolean().optional().default(false).describe("Create parent directories if they don't exist (default: false)"),
29
32
  encoding: import_zod.z.enum(["utf-8", "ascii", "latin1", "utf16le"]).optional().default("utf-8").describe("File encoding (default: utf-8)")
30
33
  }).strict();
34
+ function generateDiffPreview(filePath, originalContent, newContent) {
35
+ const unified = (0, import_diff.createPatch)(filePath, originalContent, newContent, "before", "after", {
36
+ context: 3
37
+ });
38
+ const additions = (unified.match(/^\+[^+]/gm) || []).length;
39
+ const deletions = (unified.match(/^-[^-]/gm) || []).length;
40
+ return {
41
+ type: "diff",
42
+ unified,
43
+ filename: filePath,
44
+ additions,
45
+ deletions
46
+ };
47
+ }
31
48
  function createWriteFileTool(fileSystemService) {
32
49
  return {
33
50
  id: "write_file",
34
51
  description: "Write content to a file. Creates a new file or overwrites existing file. Automatically creates backup of existing files before overwriting. Use create_dirs to create parent directories. Requires approval for all write operations. Returns success status, path, bytes written, and backup path if applicable.",
35
52
  inputSchema: WriteFileInputSchema,
53
+ /**
54
+ * Generate preview for approval UI - shows diff or file creation info
55
+ */
56
+ generatePreview: async (input, _context) => {
57
+ const { file_path, content } = input;
58
+ try {
59
+ const originalFile = await fileSystemService.readFile(file_path);
60
+ const originalContent = originalFile.content;
61
+ return generateDiffPreview(file_path, originalContent, content);
62
+ } catch (error) {
63
+ if (error instanceof import_errors.DextoRuntimeError && error.code === import_filesystem.FileSystemErrorCode.FILE_NOT_FOUND) {
64
+ const lineCount = content.split("\n").length;
65
+ const preview = {
66
+ type: "file",
67
+ path: file_path,
68
+ operation: "create",
69
+ size: content.length,
70
+ lineCount,
71
+ content
72
+ // Include content for approval preview
73
+ };
74
+ return preview;
75
+ }
76
+ throw error;
77
+ }
78
+ },
36
79
  execute: async (input, _context) => {
37
80
  const { file_path, content, create_dirs, encoding } = input;
81
+ let originalContent = null;
82
+ try {
83
+ const originalFile = await fileSystemService.readFile(file_path);
84
+ originalContent = originalFile.content;
85
+ } catch (error) {
86
+ if (error instanceof import_errors.DextoRuntimeError && error.code === import_filesystem.FileSystemErrorCode.FILE_NOT_FOUND) {
87
+ originalContent = null;
88
+ } else {
89
+ throw error;
90
+ }
91
+ }
38
92
  const result = await fileSystemService.writeFile(file_path, content, {
39
93
  createDirs: create_dirs,
40
94
  encoding,
41
95
  backup: true
42
96
  // Always create backup for internal tools
43
97
  });
98
+ let _display;
99
+ if (originalContent === null) {
100
+ const lineCount = content.split("\n").length;
101
+ _display = {
102
+ type: "file",
103
+ path: file_path,
104
+ operation: "create",
105
+ size: result.bytesWritten,
106
+ lineCount
107
+ };
108
+ } else {
109
+ _display = generateDiffPreview(file_path, originalContent, content);
110
+ }
44
111
  return {
45
112
  success: result.success,
46
113
  path: result.path,
47
114
  bytes_written: result.bytesWritten,
48
- ...result.backupPath && { backup_path: result.backupPath }
115
+ ...result.backupPath && { backup_path: result.backupPath },
116
+ _display
49
117
  };
50
118
  }
51
119
  };
@@ -1 +1 @@
1
- {"version":3,"file":"write-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/write-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAkB,MAAM,8BAA8B,CAAC;AAqBjF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAyBtF"}
1
+ {"version":3,"file":"write-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/write-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACH,iBAAiB,EAGpB,MAAM,8BAA8B,CAAC;AA8CtC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAoGtF"}
@@ -1,29 +1,99 @@
1
- import "../../../chunk-C6A6W6XS.js";
1
+ import "../../../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
+ import { createPatch } from "diff";
4
+ import {
5
+ FileSystemErrorCode
6
+ } from "../../../filesystem/index.js";
7
+ import { DextoRuntimeError } from "../../../errors/index.js";
3
8
  const WriteFileInputSchema = z.object({
4
9
  file_path: z.string().describe("Absolute path where the file should be written"),
5
10
  content: z.string().describe("Content to write to the file"),
6
11
  create_dirs: z.boolean().optional().default(false).describe("Create parent directories if they don't exist (default: false)"),
7
12
  encoding: z.enum(["utf-8", "ascii", "latin1", "utf16le"]).optional().default("utf-8").describe("File encoding (default: utf-8)")
8
13
  }).strict();
14
+ function generateDiffPreview(filePath, originalContent, newContent) {
15
+ const unified = createPatch(filePath, originalContent, newContent, "before", "after", {
16
+ context: 3
17
+ });
18
+ const additions = (unified.match(/^\+[^+]/gm) || []).length;
19
+ const deletions = (unified.match(/^-[^-]/gm) || []).length;
20
+ return {
21
+ type: "diff",
22
+ unified,
23
+ filename: filePath,
24
+ additions,
25
+ deletions
26
+ };
27
+ }
9
28
  function createWriteFileTool(fileSystemService) {
10
29
  return {
11
30
  id: "write_file",
12
31
  description: "Write content to a file. Creates a new file or overwrites existing file. Automatically creates backup of existing files before overwriting. Use create_dirs to create parent directories. Requires approval for all write operations. Returns success status, path, bytes written, and backup path if applicable.",
13
32
  inputSchema: WriteFileInputSchema,
33
+ /**
34
+ * Generate preview for approval UI - shows diff or file creation info
35
+ */
36
+ generatePreview: async (input, _context) => {
37
+ const { file_path, content } = input;
38
+ try {
39
+ const originalFile = await fileSystemService.readFile(file_path);
40
+ const originalContent = originalFile.content;
41
+ return generateDiffPreview(file_path, originalContent, content);
42
+ } catch (error) {
43
+ if (error instanceof DextoRuntimeError && error.code === FileSystemErrorCode.FILE_NOT_FOUND) {
44
+ const lineCount = content.split("\n").length;
45
+ const preview = {
46
+ type: "file",
47
+ path: file_path,
48
+ operation: "create",
49
+ size: content.length,
50
+ lineCount,
51
+ content
52
+ // Include content for approval preview
53
+ };
54
+ return preview;
55
+ }
56
+ throw error;
57
+ }
58
+ },
14
59
  execute: async (input, _context) => {
15
60
  const { file_path, content, create_dirs, encoding } = input;
61
+ let originalContent = null;
62
+ try {
63
+ const originalFile = await fileSystemService.readFile(file_path);
64
+ originalContent = originalFile.content;
65
+ } catch (error) {
66
+ if (error instanceof DextoRuntimeError && error.code === FileSystemErrorCode.FILE_NOT_FOUND) {
67
+ originalContent = null;
68
+ } else {
69
+ throw error;
70
+ }
71
+ }
16
72
  const result = await fileSystemService.writeFile(file_path, content, {
17
73
  createDirs: create_dirs,
18
74
  encoding,
19
75
  backup: true
20
76
  // Always create backup for internal tools
21
77
  });
78
+ let _display;
79
+ if (originalContent === null) {
80
+ const lineCount = content.split("\n").length;
81
+ _display = {
82
+ type: "file",
83
+ path: file_path,
84
+ operation: "create",
85
+ size: result.bytesWritten,
86
+ lineCount
87
+ };
88
+ } else {
89
+ _display = generateDiffPreview(file_path, originalContent, content);
90
+ }
22
91
  return {
23
92
  success: result.success,
24
93
  path: result.path,
25
94
  bytes_written: result.bytesWritten,
26
- ...result.backupPath && { backup_path: result.backupPath }
95
+ ...result.backupPath && { backup_path: result.backupPath },
96
+ _display
27
97
  };
28
98
  }
29
99
  };
@@ -28,12 +28,10 @@ class InternalToolsProvider {
28
28
  services;
29
29
  tools = /* @__PURE__ */ new Map();
30
30
  // ← Store original InternalTool
31
- approvalManager;
32
31
  config;
33
32
  logger;
34
- constructor(services, approvalManager, config = [], logger) {
33
+ constructor(services, config = [], logger) {
35
34
  this.services = services;
36
- this.approvalManager = approvalManager;
37
35
  this.config = config;
38
36
  this.logger = logger;
39
37
  this.logger.debug("InternalToolsProvider initialized with config:", { config });
@@ -62,14 +60,13 @@ class InternalToolsProvider {
62
60
  * Register all available internal tools based on available services and configuration
63
61
  */
64
62
  registerInternalTools() {
65
- const servicesWithApproval = {
66
- ...this.services,
67
- approvalManager: this.approvalManager
63
+ const featureFlags = {
64
+ elicitation: this.services.approvalManager?.getConfig().elicitation.enabled ?? false
68
65
  };
69
66
  for (const toolName of this.config) {
70
67
  const toolInfo = (0, import_registry.getInternalToolInfo)(toolName);
71
68
  const missingServices = toolInfo.requiredServices.filter(
72
- (serviceKey) => !servicesWithApproval[serviceKey]
69
+ (serviceKey) => !this.services[serviceKey]
73
70
  );
74
71
  if (missingServices.length > 0) {
75
72
  this.logger.debug(
@@ -77,8 +74,18 @@ class InternalToolsProvider {
77
74
  );
78
75
  continue;
79
76
  }
77
+ const missingFeatures = (toolInfo.requiredFeatures ?? []).filter(
78
+ (feature) => !featureFlags[feature]
79
+ );
80
+ if (missingFeatures.length > 0) {
81
+ throw import_errors.ToolError.featureDisabled(
82
+ toolName,
83
+ missingFeatures,
84
+ `Tool '${toolName}' requires features which are currently disabled: ${missingFeatures.join(", ")}. Either remove '${toolName}' from internalTools, or enable: ${missingFeatures.map((f) => `${f}.enabled: true`).join(", ")}`
85
+ );
86
+ }
80
87
  try {
81
- const tool = toolInfo.factory(servicesWithApproval);
88
+ const tool = toolInfo.factory(this.services);
82
89
  this.tools.set(toolName, tool);
83
90
  this.logger.debug(`Registered ${toolName} internal tool`);
84
91
  } catch (error) {
@@ -94,10 +101,17 @@ class InternalToolsProvider {
94
101
  hasTool(toolName) {
95
102
  return this.tools.has(toolName);
96
103
  }
104
+ /**
105
+ * Get an internal tool by name
106
+ * Returns undefined if tool doesn't exist
107
+ */
108
+ getTool(toolName) {
109
+ return this.tools.get(toolName);
110
+ }
97
111
  /**
98
112
  * Execute an internal tool - confirmation is handled by ToolManager
99
113
  */
100
- async executeTool(toolName, args, sessionId) {
114
+ async executeTool(toolName, args, sessionId, abortSignal) {
101
115
  const tool = this.tools.get(toolName);
102
116
  if (!tool) {
103
117
  this.logger.error(`\u274C No internal tool found: ${toolName}`);
@@ -117,7 +131,10 @@ class InternalToolsProvider {
117
131
  );
118
132
  }
119
133
  try {
120
- const context = { sessionId };
134
+ const context = {
135
+ sessionId,
136
+ abortSignal
137
+ };
121
138
  const result = await tool.execute(validationResult.data, context);
122
139
  return result;
123
140
  } catch (error) {
@@ -1,8 +1,7 @@
1
- import { ToolSet } from '../types.js';
1
+ import { ToolSet, InternalTool } from '../types.js';
2
2
  import type { IDextoLogger } from '../../logger/v2/types.js';
3
3
  import { InternalToolsServices } from './registry.js';
4
4
  import type { InternalToolsConfig } from '../schemas.js';
5
- import type { ApprovalManager } from '../../approval/manager.js';
6
5
  /**
7
6
  * Provider for built-in internal tools that are part of the core system
8
7
  *
@@ -18,10 +17,9 @@ import type { ApprovalManager } from '../../approval/manager.js';
18
17
  export declare class InternalToolsProvider {
19
18
  private services;
20
19
  private tools;
21
- private approvalManager;
22
20
  private config;
23
21
  private logger;
24
- constructor(services: InternalToolsServices, approvalManager: ApprovalManager, config: InternalToolsConfig | undefined, logger: IDextoLogger);
22
+ constructor(services: InternalToolsServices, config: InternalToolsConfig | undefined, logger: IDextoLogger);
25
23
  /**
26
24
  * Initialize the internal tools provider by registering all available internal tools
27
25
  */
@@ -34,10 +32,15 @@ export declare class InternalToolsProvider {
34
32
  * Check if a tool exists
35
33
  */
36
34
  hasTool(toolName: string): boolean;
35
+ /**
36
+ * Get an internal tool by name
37
+ * Returns undefined if tool doesn't exist
38
+ */
39
+ getTool(toolName: string): InternalTool | undefined;
37
40
  /**
38
41
  * Execute an internal tool - confirmation is handled by ToolManager
39
42
  */
40
- executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string): Promise<unknown>;
43
+ executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string, abortSignal?: AbortSignal): Promise<unknown>;
41
44
  /**
42
45
  * Get all tools in ToolSet format with on-demand JSON Schema conversion
43
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,OAAO,EAAgB,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAAuB,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAGzB,QAAQ,EAAE,qBAAqB,EAC/B,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,mBAAmB,YAAK,EAChC,MAAM,EAAE,YAAY;IASxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACG,WAAW,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAkCnB;;OAEG;IACH,WAAW,IAAI,OAAO;IActB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGzB"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAA0C,MAAM,eAAe,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAGzB,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,mBAAmB,YAAK,EAChC,MAAM,EAAE,YAAY;IAQxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgD7B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIlC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAInD;;OAEG;IACG,WAAW,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,OAAO,CAAC;IAqCnB;;OAEG;IACH,WAAW,IAAI,OAAO;IActB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGzB"}
@@ -1,4 +1,4 @@
1
- import "../../chunk-C6A6W6XS.js";
1
+ import "../../chunk-PTJYTZNU.js";
2
2
  import { ToolError } from "../errors.js";
3
3
  import { convertZodSchemaToJsonSchema } from "../../utils/schema.js";
4
4
  import { getInternalToolInfo } from "./registry.js";
@@ -6,12 +6,10 @@ class InternalToolsProvider {
6
6
  services;
7
7
  tools = /* @__PURE__ */ new Map();
8
8
  // ← Store original InternalTool
9
- approvalManager;
10
9
  config;
11
10
  logger;
12
- constructor(services, approvalManager, config = [], logger) {
11
+ constructor(services, config = [], logger) {
13
12
  this.services = services;
14
- this.approvalManager = approvalManager;
15
13
  this.config = config;
16
14
  this.logger = logger;
17
15
  this.logger.debug("InternalToolsProvider initialized with config:", { config });
@@ -40,14 +38,13 @@ class InternalToolsProvider {
40
38
  * Register all available internal tools based on available services and configuration
41
39
  */
42
40
  registerInternalTools() {
43
- const servicesWithApproval = {
44
- ...this.services,
45
- approvalManager: this.approvalManager
41
+ const featureFlags = {
42
+ elicitation: this.services.approvalManager?.getConfig().elicitation.enabled ?? false
46
43
  };
47
44
  for (const toolName of this.config) {
48
45
  const toolInfo = getInternalToolInfo(toolName);
49
46
  const missingServices = toolInfo.requiredServices.filter(
50
- (serviceKey) => !servicesWithApproval[serviceKey]
47
+ (serviceKey) => !this.services[serviceKey]
51
48
  );
52
49
  if (missingServices.length > 0) {
53
50
  this.logger.debug(
@@ -55,8 +52,18 @@ class InternalToolsProvider {
55
52
  );
56
53
  continue;
57
54
  }
55
+ const missingFeatures = (toolInfo.requiredFeatures ?? []).filter(
56
+ (feature) => !featureFlags[feature]
57
+ );
58
+ if (missingFeatures.length > 0) {
59
+ throw ToolError.featureDisabled(
60
+ toolName,
61
+ missingFeatures,
62
+ `Tool '${toolName}' requires features which are currently disabled: ${missingFeatures.join(", ")}. Either remove '${toolName}' from internalTools, or enable: ${missingFeatures.map((f) => `${f}.enabled: true`).join(", ")}`
63
+ );
64
+ }
58
65
  try {
59
- const tool = toolInfo.factory(servicesWithApproval);
66
+ const tool = toolInfo.factory(this.services);
60
67
  this.tools.set(toolName, tool);
61
68
  this.logger.debug(`Registered ${toolName} internal tool`);
62
69
  } catch (error) {
@@ -72,10 +79,17 @@ class InternalToolsProvider {
72
79
  hasTool(toolName) {
73
80
  return this.tools.has(toolName);
74
81
  }
82
+ /**
83
+ * Get an internal tool by name
84
+ * Returns undefined if tool doesn't exist
85
+ */
86
+ getTool(toolName) {
87
+ return this.tools.get(toolName);
88
+ }
75
89
  /**
76
90
  * Execute an internal tool - confirmation is handled by ToolManager
77
91
  */
78
- async executeTool(toolName, args, sessionId) {
92
+ async executeTool(toolName, args, sessionId, abortSignal) {
79
93
  const tool = this.tools.get(toolName);
80
94
  if (!tool) {
81
95
  this.logger.error(`\u274C No internal tool found: ${toolName}`);
@@ -95,7 +109,10 @@ class InternalToolsProvider {
95
109
  );
96
110
  }
97
111
  try {
98
- const context = { sessionId };
112
+ const context = {
113
+ sessionId,
114
+ abortSignal
115
+ };
99
116
  const result = await tool.execute(validationResult.data, context);
100
117
  return result;
101
118
  } catch (error) {
@@ -40,7 +40,8 @@ const INTERNAL_TOOL_REGISTRY = {
40
40
  },
41
41
  ask_user: {
42
42
  factory: (services) => (0, import_ask_user_tool.createAskUserTool)(services.approvalManager),
43
- requiredServices: ["approvalManager"]
43
+ requiredServices: ["approvalManager"],
44
+ requiredFeatures: ["elicitation"]
44
45
  },
45
46
  read_file: {
46
47
  factory: (services) => (0, import_read_file_tool.createReadFileTool)(services.fileSystemService),
@@ -63,8 +64,8 @@ const INTERNAL_TOOL_REGISTRY = {
63
64
  requiredServices: ["fileSystemService"]
64
65
  },
65
66
  bash_exec: {
66
- factory: (services) => (0, import_bash_exec_tool.createBashExecTool)(services.processService, services.approvalManager),
67
- requiredServices: ["processService", "approvalManager"]
67
+ factory: (services) => (0, import_bash_exec_tool.createBashExecTool)(services.processService),
68
+ requiredServices: ["processService"]
68
69
  },
69
70
  bash_output: {
70
71
  factory: (services) => (0, import_bash_output_tool.createBashOutputTool)(services.processService),