@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
@@ -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),
@@ -4,6 +4,25 @@ import { ApprovalManager } from '../../approval/manager.js';
4
4
  import { FileSystemService } from '../../filesystem/index.js';
5
5
  import { ProcessService } from '../../process/index.js';
6
6
  import type { KnownInternalTool } from './constants.js';
7
+ /**
8
+ * Agent features that tools can depend on.
9
+ * Tools can declare required features via `requiredFeatures` in the registry.
10
+ * If a required feature is disabled, the tool will not be registered and agent startup will fail.
11
+ *
12
+ * To add new features:
13
+ * 1. Add the feature name to this union type (e.g., 'elicitation' | 'file_access' | 'network_access')
14
+ * 2. Add the feature flag derivation in provider.ts `registerInternalTools()`:
15
+ * ```
16
+ * const featureFlags: Record<AgentFeature, boolean> = {
17
+ * elicitation: this.services.approvalManager?.getConfig().elicitation.enabled ?? false,
18
+ * file_access: config.fileAccess?.enabled ?? false, // example
19
+ * };
20
+ * ```
21
+ * 3. Add `requiredFeatures: ['feature_name'] as const` to tool entries that need it
22
+ *
23
+ * Tools can require multiple features - all must be enabled or startup fails with a clear error.
24
+ */
25
+ export type AgentFeature = 'elicitation';
7
26
  /**
8
27
  * Services available to internal tools
9
28
  * Add new services here as needed for internal tools
@@ -19,18 +38,20 @@ export interface InternalToolsServices {
19
38
  */
20
39
  type InternalToolFactory = (services: InternalToolsServices) => InternalTool;
21
40
  /**
22
- * Internal tool registry - Must match names array exactly (TypeScript enforces this)
41
+ * Internal tool registry entry type
23
42
  */
24
- export declare const INTERNAL_TOOL_REGISTRY: Record<KnownInternalTool, {
43
+ export interface InternalToolRegistryEntry {
25
44
  factory: InternalToolFactory;
26
45
  requiredServices: readonly (keyof InternalToolsServices)[];
27
- }>;
46
+ requiredFeatures?: readonly AgentFeature[];
47
+ }
48
+ /**
49
+ * Internal tool registry - Must match names array exactly (TypeScript enforces this)
50
+ */
51
+ export declare const INTERNAL_TOOL_REGISTRY: Record<KnownInternalTool, InternalToolRegistryEntry>;
28
52
  /**
29
53
  * Type-safe registry access
30
54
  */
31
- export declare function getInternalToolInfo(toolName: KnownInternalTool): {
32
- factory: InternalToolFactory;
33
- requiredServices: readonly (keyof InternalToolsServices)[];
34
- };
55
+ export declare function getInternalToolInfo(toolName: KnownInternalTool): InternalToolRegistryEntry;
35
56
  export {};
36
57
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAYxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,cAAc,CAAC;CAKnC;AAED;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,qBAAqB,KAAK,YAAY,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CACvC,iBAAiB,EACjB;IACI,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,SAAS,CAAC,MAAM,qBAAqB,CAAC,EAAE,CAAC;CAC9D,CAuDJ,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB;aA9D9C,mBAAmB;sBACV,SAAS,CAAC,MAAM,qBAAqB,CAAC,EAAE;EA+DjE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAYxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,cAAc,CAAC;CAKnC;AAED;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,qBAAqB,KAAK,YAAY,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,SAAS,CAAC,MAAM,qBAAqB,CAAC,EAAE,CAAC;IAC3D,gBAAgB,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CAC9C;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CAsDvF,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,yBAAyB,CAE1F"}
@@ -1,4 +1,4 @@
1
- import "../../chunk-C6A6W6XS.js";
1
+ import "../../chunk-PTJYTZNU.js";
2
2
  import { createSearchHistoryTool } from "./implementations/search-history-tool.js";
3
3
  import { createAskUserTool } from "./implementations/ask-user-tool.js";
4
4
  import { createReadFileTool } from "./implementations/read-file-tool.js";
@@ -17,7 +17,8 @@ const INTERNAL_TOOL_REGISTRY = {
17
17
  },
18
18
  ask_user: {
19
19
  factory: (services) => createAskUserTool(services.approvalManager),
20
- requiredServices: ["approvalManager"]
20
+ requiredServices: ["approvalManager"],
21
+ requiredFeatures: ["elicitation"]
21
22
  },
22
23
  read_file: {
23
24
  factory: (services) => createReadFileTool(services.fileSystemService),
@@ -40,8 +41,8 @@ const INTERNAL_TOOL_REGISTRY = {
40
41
  requiredServices: ["fileSystemService"]
41
42
  },
42
43
  bash_exec: {
43
- factory: (services) => createBashExecTool(services.processService, services.approvalManager),
44
- requiredServices: ["processService", "approvalManager"]
44
+ factory: (services) => createBashExecTool(services.processService),
45
+ requiredServices: ["processService"]
45
46
  },
46
47
  bash_output: {
47
48
  factory: (services) => createBashOutputTool(services.processService),
@@ -25,7 +25,9 @@ __export(schemas_exports, {
25
25
  InternalToolsSchema: () => InternalToolsSchema,
26
26
  TOOL_CONFIRMATION_MODES: () => TOOL_CONFIRMATION_MODES,
27
27
  ToolConfirmationConfigSchema: () => ToolConfirmationConfigSchema,
28
- ToolPoliciesSchema: () => ToolPoliciesSchema
28
+ ToolLimitsSchema: () => ToolLimitsSchema,
29
+ ToolPoliciesSchema: () => ToolPoliciesSchema,
30
+ ToolsConfigSchema: () => ToolsConfigSchema
29
31
  });
30
32
  module.exports = __toCommonJS(schemas_exports);
31
33
  var import_zod = require("zod");
@@ -49,8 +51,8 @@ const ToolConfirmationConfigSchema = import_zod.z.object({
49
51
  mode: import_zod.z.enum(TOOL_CONFIRMATION_MODES).default(DEFAULT_TOOL_CONFIRMATION_MODE).describe(
50
52
  "Tool confirmation mode: manual (interactive), auto-approve (all tools), auto-deny (no tools)"
51
53
  ),
52
- timeout: import_zod.z.number().int().positive().default(12e4).describe(
53
- "Timeout for tool confirmation requests in milliseconds, defaults to 120000ms (2 mins)"
54
+ timeout: import_zod.z.number().int().positive().optional().describe(
55
+ "Timeout for tool confirmation requests in milliseconds (optional - no timeout if not specified)"
54
56
  ),
55
57
  allowedToolsStorage: import_zod.z.enum(ALLOWED_TOOLS_STORAGE_TYPES).default(DEFAULT_ALLOWED_TOOLS_STORAGE).describe(
56
58
  "Storage type for remembered tool approvals: memory (session-only) or storage (persistent)"
@@ -63,12 +65,18 @@ const ElicitationConfigSchema = import_zod.z.object({
63
65
  enabled: import_zod.z.boolean().default(false).describe(
64
66
  "Enable elicitation support (ask_user tool and MCP server elicitations). When disabled, elicitation requests will be rejected."
65
67
  ),
66
- timeout: import_zod.z.number().int().positive().default(12e4).describe(
67
- "Timeout for elicitation requests in milliseconds, defaults to 120000ms (2 mins)"
68
+ timeout: import_zod.z.number().int().positive().optional().describe(
69
+ "Timeout for elicitation requests in milliseconds (optional - no timeout if not specified)"
68
70
  )
69
71
  }).strict().describe(
70
72
  "Elicitation configuration for user input requests. Independent from tool confirmation mode, allowing auto-approve for tools while still supporting elicitation."
71
73
  );
74
+ const ToolLimitsSchema = import_zod.z.object({
75
+ maxOutputChars: import_zod.z.number().optional().describe("Maximum number of characters for tool output"),
76
+ maxLines: import_zod.z.number().optional().describe("Maximum number of lines for tool output"),
77
+ maxLineLength: import_zod.z.number().optional().describe("Maximum length of a single line")
78
+ }).strict();
79
+ const ToolsConfigSchema = import_zod.z.record(ToolLimitsSchema).describe("Per-tool configuration limits");
72
80
  // Annotate the CommonJS export names for ESM import in node:
73
81
  0 && (module.exports = {
74
82
  ALLOWED_TOOLS_STORAGE_TYPES,
@@ -78,5 +86,7 @@ const ElicitationConfigSchema = import_zod.z.object({
78
86
  InternalToolsSchema,
79
87
  TOOL_CONFIRMATION_MODES,
80
88
  ToolConfirmationConfigSchema,
81
- ToolPoliciesSchema
89
+ ToolLimitsSchema,
90
+ ToolPoliciesSchema,
91
+ ToolsConfigSchema
82
92
  });