@dexto/core 1.2.4 → 1.2.6

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 (551) hide show
  1. package/README.md +60 -0
  2. package/dist/agent/DextoAgent.cjs +579 -345
  3. package/dist/agent/DextoAgent.d.ts +131 -83
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +573 -336
  6. package/dist/agent/agentCard.cjs +4 -2
  7. package/dist/agent/agentCard.d.ts +0 -1
  8. package/dist/agent/agentCard.d.ts.map +1 -1
  9. package/dist/agent/agentCard.js +4 -2
  10. package/dist/agent/index.cjs +3 -7
  11. package/dist/agent/index.d.ts +3 -3
  12. package/dist/agent/index.d.ts.map +1 -1
  13. package/dist/agent/index.js +7 -6
  14. package/dist/agent/schemas.cjs +179 -75
  15. package/dist/agent/schemas.d.ts +2678 -586
  16. package/dist/agent/schemas.d.ts.map +1 -1
  17. package/dist/agent/schemas.js +172 -65
  18. package/dist/agent/state-manager.cjs +28 -23
  19. package/dist/agent/state-manager.d.ts +4 -1
  20. package/dist/agent/state-manager.d.ts.map +1 -1
  21. package/dist/agent/state-manager.js +28 -23
  22. package/dist/{preferences/constants.cjs → agent/types.cjs} +2 -14
  23. package/dist/agent/types.d.ts +54 -0
  24. package/dist/agent/types.d.ts.map +1 -0
  25. package/dist/agent/types.js +0 -0
  26. package/dist/approval/errors.cjs +89 -8
  27. package/dist/approval/errors.d.ts +5 -3
  28. package/dist/approval/errors.d.ts.map +1 -1
  29. package/dist/approval/errors.js +89 -8
  30. package/dist/approval/{providers/factory.d.ts → factory.d.ts} +2 -2
  31. package/dist/approval/factory.d.ts.map +1 -0
  32. package/dist/approval/{providers/factory.js → factory.js} +1 -1
  33. package/dist/approval/index.cjs +4 -6
  34. package/dist/approval/index.d.ts +3 -5
  35. package/dist/approval/index.d.ts.map +1 -1
  36. package/dist/approval/index.js +4 -5
  37. package/dist/approval/manager.cjs +140 -37
  38. package/dist/approval/manager.d.ts +56 -17
  39. package/dist/approval/manager.d.ts.map +1 -1
  40. package/dist/approval/manager.js +141 -38
  41. package/dist/approval/schemas.cjs +9 -1
  42. package/dist/approval/schemas.d.ts +120 -35
  43. package/dist/approval/schemas.d.ts.map +1 -1
  44. package/dist/approval/schemas.js +9 -2
  45. package/dist/approval/types.cjs +14 -2
  46. package/dist/approval/types.d.ts +64 -12
  47. package/dist/approval/types.d.ts.map +1 -1
  48. package/dist/approval/types.js +12 -1
  49. package/dist/context/compression/middle-removal.cjs +11 -11
  50. package/dist/context/compression/middle-removal.d.ts +3 -1
  51. package/dist/context/compression/middle-removal.d.ts.map +1 -1
  52. package/dist/context/compression/middle-removal.js +11 -11
  53. package/dist/context/compression/oldest-removal.cjs +18 -5
  54. package/dist/context/compression/oldest-removal.d.ts +3 -1
  55. package/dist/context/compression/oldest-removal.d.ts.map +1 -1
  56. package/dist/context/compression/oldest-removal.js +18 -5
  57. package/dist/context/manager.cjs +94 -67
  58. package/dist/context/manager.d.ts +13 -10
  59. package/dist/context/manager.d.ts.map +1 -1
  60. package/dist/context/manager.js +94 -67
  61. package/dist/context/utils.cjs +79 -65
  62. package/dist/context/utils.d.ts +15 -12
  63. package/dist/context/utils.d.ts.map +1 -1
  64. package/dist/context/utils.js +45 -31
  65. package/dist/errors/DextoRuntimeError.d.ts +5 -5
  66. package/dist/errors/DextoRuntimeError.d.ts.map +1 -1
  67. package/dist/errors/result-bridge.cjs +2 -3
  68. package/dist/errors/result-bridge.d.ts +5 -3
  69. package/dist/errors/result-bridge.d.ts.map +1 -1
  70. package/dist/errors/result-bridge.js +1 -2
  71. package/dist/errors/types.cjs +1 -2
  72. package/dist/errors/types.d.ts +5 -8
  73. package/dist/errors/types.d.ts.map +1 -1
  74. package/dist/errors/types.js +1 -2
  75. package/dist/events/index.cjs +125 -55
  76. package/dist/events/index.d.ts +204 -97
  77. package/dist/events/index.d.ts.map +1 -1
  78. package/dist/events/index.js +123 -55
  79. package/dist/filesystem/filesystem-service.cjs +40 -30
  80. package/dist/filesystem/filesystem-service.d.ts +9 -1
  81. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  82. package/dist/filesystem/filesystem-service.js +40 -30
  83. package/dist/filesystem/path-validator.cjs +4 -3
  84. package/dist/filesystem/path-validator.d.ts +3 -1
  85. package/dist/filesystem/path-validator.d.ts.map +1 -1
  86. package/dist/filesystem/path-validator.js +4 -3
  87. package/dist/filesystem/types.d.ts +3 -3
  88. package/dist/filesystem/types.d.ts.map +1 -1
  89. package/dist/index.browser.cjs +7 -0
  90. package/dist/index.browser.d.ts +2 -0
  91. package/dist/index.browser.d.ts.map +1 -1
  92. package/dist/index.browser.js +4 -0
  93. package/dist/index.cjs +0 -7
  94. package/dist/index.d.ts +12 -3
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +0 -4
  97. package/dist/llm/formatters/anthropic.cjs +32 -21
  98. package/dist/llm/formatters/anthropic.d.ts +3 -0
  99. package/dist/llm/formatters/anthropic.d.ts.map +1 -1
  100. package/dist/llm/formatters/anthropic.js +32 -21
  101. package/dist/llm/formatters/factory.cjs +6 -7
  102. package/dist/llm/formatters/factory.d.ts +2 -1
  103. package/dist/llm/formatters/factory.d.ts.map +1 -1
  104. package/dist/llm/formatters/factory.js +4 -5
  105. package/dist/llm/formatters/openai.cjs +38 -9
  106. package/dist/llm/formatters/openai.d.ts +3 -0
  107. package/dist/llm/formatters/openai.d.ts.map +1 -1
  108. package/dist/llm/formatters/openai.js +38 -9
  109. package/dist/llm/formatters/vercel.cjs +49 -8
  110. package/dist/llm/formatters/vercel.d.ts +3 -0
  111. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  112. package/dist/llm/formatters/vercel.js +49 -8
  113. package/dist/llm/registry.cjs +153 -17
  114. package/dist/llm/registry.d.ts +5 -2
  115. package/dist/llm/registry.d.ts.map +1 -1
  116. package/dist/llm/registry.js +143 -7
  117. package/dist/llm/resolver.cjs +4 -4
  118. package/dist/llm/resolver.d.ts +3 -2
  119. package/dist/llm/resolver.d.ts.map +1 -1
  120. package/dist/llm/resolver.js +4 -4
  121. package/dist/llm/schemas.cjs +6 -3
  122. package/dist/llm/schemas.d.ts +51 -17
  123. package/dist/llm/schemas.d.ts.map +1 -1
  124. package/dist/llm/schemas.js +5 -3
  125. package/dist/llm/services/anthropic.cjs +216 -183
  126. package/dist/llm/services/anthropic.d.ts +3 -1
  127. package/dist/llm/services/anthropic.d.ts.map +1 -1
  128. package/dist/llm/services/anthropic.js +217 -184
  129. package/dist/llm/services/factory.cjs +15 -9
  130. package/dist/llm/services/factory.d.ts +2 -1
  131. package/dist/llm/services/factory.d.ts.map +1 -1
  132. package/dist/llm/services/factory.js +15 -9
  133. package/dist/llm/services/openai.cjs +262 -225
  134. package/dist/llm/services/openai.d.ts +3 -1
  135. package/dist/llm/services/openai.d.ts.map +1 -1
  136. package/dist/llm/services/openai.js +263 -226
  137. package/dist/llm/services/test-utils.integration.cjs +58 -12
  138. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  139. package/dist/llm/services/test-utils.integration.js +58 -12
  140. package/dist/llm/services/types.d.ts +9 -0
  141. package/dist/llm/services/types.d.ts.map +1 -1
  142. package/dist/llm/services/vercel.cjs +163 -111
  143. package/dist/llm/services/vercel.d.ts +3 -1
  144. package/dist/llm/services/vercel.d.ts.map +1 -1
  145. package/dist/llm/services/vercel.js +157 -105
  146. package/dist/llm/tokenizer/factory.cjs +2 -2
  147. package/dist/llm/tokenizer/factory.d.ts +3 -1
  148. package/dist/llm/tokenizer/factory.d.ts.map +1 -1
  149. package/dist/llm/tokenizer/factory.js +2 -2
  150. package/dist/llm/tokenizer/openai.cjs +16 -9
  151. package/dist/llm/tokenizer/openai.d.ts +4 -1
  152. package/dist/llm/tokenizer/openai.d.ts.map +1 -1
  153. package/dist/llm/tokenizer/openai.js +16 -9
  154. package/dist/llm/validation.cjs +8 -9
  155. package/dist/llm/validation.d.ts +3 -1
  156. package/dist/llm/validation.d.ts.map +1 -1
  157. package/dist/llm/validation.js +5 -6
  158. package/dist/logger/factory.cjs +54 -0
  159. package/dist/logger/factory.d.ts +36 -0
  160. package/dist/logger/factory.d.ts.map +1 -0
  161. package/dist/logger/factory.js +31 -0
  162. package/dist/logger/index.cjs +42 -3
  163. package/dist/logger/index.d.ts +17 -1
  164. package/dist/logger/index.d.ts.map +1 -1
  165. package/dist/logger/index.js +26 -1
  166. package/dist/logger/logger.cjs +30 -17
  167. package/dist/logger/logger.d.ts.map +1 -1
  168. package/dist/logger/logger.js +30 -17
  169. package/dist/logger/v2/dexto-logger.cjs +141 -0
  170. package/dist/logger/v2/dexto-logger.d.ts +54 -0
  171. package/dist/logger/v2/dexto-logger.d.ts.map +1 -0
  172. package/dist/logger/v2/dexto-logger.js +118 -0
  173. package/dist/{preferences → logger/v2}/error-codes.cjs +11 -10
  174. package/dist/logger/v2/error-codes.d.ts +13 -0
  175. package/dist/logger/v2/error-codes.d.ts.map +1 -0
  176. package/dist/logger/v2/error-codes.js +13 -0
  177. package/dist/logger/v2/errors.cjs +107 -0
  178. package/dist/logger/v2/errors.d.ts +32 -0
  179. package/dist/logger/v2/errors.d.ts.map +1 -0
  180. package/dist/logger/v2/errors.js +84 -0
  181. package/dist/logger/v2/schemas.cjs +57 -0
  182. package/dist/logger/v2/schemas.d.ts +147 -0
  183. package/dist/logger/v2/schemas.d.ts.map +1 -0
  184. package/dist/logger/v2/schemas.js +33 -0
  185. package/dist/logger/v2/transport-factory.cjs +53 -0
  186. package/dist/logger/v2/transport-factory.d.ts +21 -0
  187. package/dist/logger/v2/transport-factory.d.ts.map +1 -0
  188. package/dist/logger/v2/transport-factory.js +29 -0
  189. package/dist/logger/v2/transports/console-transport.cjs +79 -0
  190. package/dist/logger/v2/transports/console-transport.d.ts +23 -0
  191. package/dist/logger/v2/transports/console-transport.d.ts.map +1 -0
  192. package/dist/logger/v2/transports/console-transport.js +46 -0
  193. package/dist/logger/v2/transports/file-transport.cjs +161 -0
  194. package/dist/logger/v2/transports/file-transport.d.ts +46 -0
  195. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -0
  196. package/dist/logger/v2/transports/file-transport.js +128 -0
  197. package/dist/logger/v2/types.cjs +49 -0
  198. package/dist/logger/v2/types.d.ts +123 -0
  199. package/dist/logger/v2/types.d.ts.map +1 -0
  200. package/dist/logger/v2/types.js +26 -0
  201. package/dist/mcp/manager.cjs +88 -78
  202. package/dist/mcp/manager.d.ts +3 -1
  203. package/dist/mcp/manager.d.ts.map +1 -1
  204. package/dist/mcp/manager.js +88 -78
  205. package/dist/mcp/mcp-client.cjs +109 -79
  206. package/dist/mcp/mcp-client.d.ts +3 -0
  207. package/dist/mcp/mcp-client.d.ts.map +1 -1
  208. package/dist/mcp/mcp-client.js +102 -72
  209. package/dist/memory/index.cjs +2 -0
  210. package/dist/memory/index.d.ts +1 -1
  211. package/dist/memory/index.d.ts.map +1 -1
  212. package/dist/memory/index.js +3 -1
  213. package/dist/memory/manager.cjs +9 -7
  214. package/dist/memory/manager.d.ts +3 -1
  215. package/dist/memory/manager.d.ts.map +1 -1
  216. package/dist/memory/manager.js +9 -7
  217. package/dist/memory/schemas.cjs +10 -0
  218. package/dist/memory/schemas.d.ts +37 -8
  219. package/dist/memory/schemas.d.ts.map +1 -1
  220. package/dist/memory/schemas.js +9 -0
  221. package/dist/plugins/manager.cjs +21 -19
  222. package/dist/plugins/manager.d.ts +3 -1
  223. package/dist/plugins/manager.d.ts.map +1 -1
  224. package/dist/plugins/manager.js +21 -19
  225. package/dist/plugins/schemas.d.ts +9 -9
  226. package/dist/plugins/types.d.ts +2 -2
  227. package/dist/plugins/types.d.ts.map +1 -1
  228. package/dist/process/command-validator.cjs +30 -20
  229. package/dist/process/command-validator.d.ts +4 -1
  230. package/dist/process/command-validator.d.ts.map +1 -1
  231. package/dist/process/command-validator.js +30 -20
  232. package/dist/process/process-service.cjs +23 -21
  233. package/dist/process/process-service.d.ts +3 -1
  234. package/dist/process/process-service.d.ts.map +1 -1
  235. package/dist/process/process-service.js +23 -21
  236. package/dist/prompts/index.cjs +6 -8
  237. package/dist/prompts/index.d.ts +2 -4
  238. package/dist/prompts/index.d.ts.map +1 -1
  239. package/dist/prompts/index.js +4 -6
  240. package/dist/prompts/prompt-manager.cjs +25 -20
  241. package/dist/prompts/prompt-manager.d.ts +3 -1
  242. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  243. package/dist/prompts/prompt-manager.js +25 -20
  244. package/dist/prompts/providers/config-prompt-provider.cjs +331 -0
  245. package/dist/prompts/providers/config-prompt-provider.d.ts +34 -0
  246. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -0
  247. package/dist/prompts/providers/config-prompt-provider.js +308 -0
  248. package/dist/prompts/providers/custom-prompt-provider.cjs +11 -7
  249. package/dist/prompts/providers/custom-prompt-provider.d.ts +3 -1
  250. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  251. package/dist/prompts/providers/custom-prompt-provider.js +11 -7
  252. package/dist/prompts/providers/mcp-prompt-provider.cjs +7 -6
  253. package/dist/prompts/providers/mcp-prompt-provider.d.ts +3 -1
  254. package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
  255. package/dist/prompts/providers/mcp-prompt-provider.js +7 -6
  256. package/dist/prompts/schemas.cjs +42 -23
  257. package/dist/prompts/schemas.d.ts +123 -14
  258. package/dist/prompts/schemas.d.ts.map +1 -1
  259. package/dist/prompts/schemas.js +39 -22
  260. package/dist/prompts/types.d.ts +1 -1
  261. package/dist/prompts/types.d.ts.map +1 -1
  262. package/dist/resources/handlers/blob-handler.cjs +15 -11
  263. package/dist/resources/handlers/blob-handler.d.ts +3 -1
  264. package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
  265. package/dist/resources/handlers/blob-handler.js +15 -11
  266. package/dist/resources/handlers/factory.cjs +3 -3
  267. package/dist/resources/handlers/factory.d.ts +2 -1
  268. package/dist/resources/handlers/factory.d.ts.map +1 -1
  269. package/dist/resources/handlers/factory.js +3 -3
  270. package/dist/resources/handlers/filesystem-handler.cjs +10 -8
  271. package/dist/resources/handlers/filesystem-handler.d.ts +3 -1
  272. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  273. package/dist/resources/handlers/filesystem-handler.js +10 -8
  274. package/dist/resources/internal-provider.cjs +28 -20
  275. package/dist/resources/internal-provider.d.ts +3 -1
  276. package/dist/resources/internal-provider.d.ts.map +1 -1
  277. package/dist/resources/internal-provider.js +28 -20
  278. package/dist/resources/manager.cjs +34 -25
  279. package/dist/resources/manager.d.ts +3 -1
  280. package/dist/resources/manager.d.ts.map +1 -1
  281. package/dist/resources/manager.js +34 -25
  282. package/dist/resources/schemas.d.ts +6 -6
  283. package/dist/search/search-service.cjs +8 -6
  284. package/dist/search/search-service.d.ts +3 -1
  285. package/dist/search/search-service.d.ts.map +1 -1
  286. package/dist/search/search-service.js +8 -6
  287. package/dist/session/chat-session.cjs +40 -27
  288. package/dist/session/chat-session.d.ts +10 -7
  289. package/dist/session/chat-session.d.ts.map +1 -1
  290. package/dist/session/chat-session.js +40 -27
  291. package/dist/session/history/database.cjs +18 -11
  292. package/dist/session/history/database.d.ts +3 -1
  293. package/dist/session/history/database.d.ts.map +1 -1
  294. package/dist/session/history/database.js +18 -11
  295. package/dist/session/history/factory.cjs +2 -2
  296. package/dist/session/history/factory.d.ts +5 -1
  297. package/dist/session/history/factory.d.ts.map +1 -1
  298. package/dist/session/history/factory.js +2 -2
  299. package/dist/session/session-manager.cjs +37 -53
  300. package/dist/session/session-manager.d.ts +3 -17
  301. package/dist/session/session-manager.d.ts.map +1 -1
  302. package/dist/session/session-manager.js +37 -53
  303. package/dist/session/title-generator.cjs +3 -2
  304. package/dist/session/title-generator.d.ts +2 -1
  305. package/dist/session/title-generator.d.ts.map +1 -1
  306. package/dist/session/title-generator.js +3 -2
  307. package/dist/storage/blob/factory.cjs +9 -18
  308. package/dist/storage/blob/factory.d.ts +5 -4
  309. package/dist/storage/blob/factory.d.ts.map +1 -1
  310. package/dist/storage/blob/factory.js +8 -17
  311. package/dist/storage/blob/local-blob-store.cjs +25 -32
  312. package/dist/storage/blob/local-blob-store.d.ts +3 -2
  313. package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
  314. package/dist/storage/blob/local-blob-store.js +25 -32
  315. package/dist/storage/blob/memory-blob-store.cjs +326 -0
  316. package/dist/storage/blob/memory-blob-store.d.ts +66 -0
  317. package/dist/storage/blob/memory-blob-store.d.ts.map +1 -0
  318. package/dist/storage/blob/memory-blob-store.js +303 -0
  319. package/dist/storage/blob/schemas.cjs +3 -1
  320. package/dist/storage/blob/schemas.d.ts +6 -6
  321. package/dist/storage/blob/schemas.d.ts.map +1 -1
  322. package/dist/storage/blob/schemas.js +3 -1
  323. package/dist/storage/cache/factory.cjs +7 -8
  324. package/dist/storage/cache/factory.d.ts +4 -1
  325. package/dist/storage/cache/factory.d.ts.map +1 -1
  326. package/dist/storage/cache/factory.js +4 -5
  327. package/dist/storage/cache/redis-store.cjs +4 -1
  328. package/dist/storage/cache/redis-store.d.ts +3 -1
  329. package/dist/storage/cache/redis-store.d.ts.map +1 -1
  330. package/dist/storage/cache/redis-store.js +4 -1
  331. package/dist/storage/database/factory.cjs +13 -16
  332. package/dist/storage/database/factory.d.ts +5 -3
  333. package/dist/storage/database/factory.d.ts.map +1 -1
  334. package/dist/storage/database/factory.js +9 -12
  335. package/dist/storage/database/postgres-store.cjs +4 -1
  336. package/dist/storage/database/postgres-store.d.ts +3 -1
  337. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  338. package/dist/storage/database/postgres-store.js +4 -1
  339. package/dist/storage/database/schemas.cjs +3 -4
  340. package/dist/storage/database/schemas.d.ts +8 -16
  341. package/dist/storage/database/schemas.d.ts.map +1 -1
  342. package/dist/storage/database/schemas.js +3 -4
  343. package/dist/storage/database/sqlite-store.cjs +17 -45
  344. package/dist/storage/database/sqlite-store.d.ts +3 -3
  345. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  346. package/dist/storage/database/sqlite-store.js +17 -45
  347. package/dist/storage/schemas.cjs +3 -1
  348. package/dist/storage/schemas.d.ts +16 -23
  349. package/dist/storage/schemas.d.ts.map +1 -1
  350. package/dist/storage/schemas.js +3 -1
  351. package/dist/storage/storage-manager.cjs +15 -15
  352. package/dist/storage/storage-manager.d.ts +6 -6
  353. package/dist/storage/storage-manager.d.ts.map +1 -1
  354. package/dist/storage/storage-manager.js +15 -15
  355. package/dist/systemPrompt/contributors.cjs +15 -15
  356. package/dist/systemPrompt/contributors.d.ts +5 -3
  357. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  358. package/dist/systemPrompt/contributors.js +15 -15
  359. package/dist/systemPrompt/in-built-prompts.cjs +0 -5
  360. package/dist/systemPrompt/in-built-prompts.d.ts +1 -2
  361. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  362. package/dist/systemPrompt/in-built-prompts.js +0 -4
  363. package/dist/systemPrompt/manager.cjs +31 -23
  364. package/dist/systemPrompt/manager.d.ts +5 -3
  365. package/dist/systemPrompt/manager.d.ts.map +1 -1
  366. package/dist/systemPrompt/manager.js +31 -23
  367. package/dist/systemPrompt/registry.cjs +1 -2
  368. package/dist/systemPrompt/registry.d.ts +1 -1
  369. package/dist/systemPrompt/registry.d.ts.map +1 -1
  370. package/dist/systemPrompt/registry.js +1 -2
  371. package/dist/systemPrompt/schemas.cjs +24 -18
  372. package/dist/systemPrompt/schemas.d.ts +46 -222
  373. package/dist/systemPrompt/schemas.d.ts.map +1 -1
  374. package/dist/systemPrompt/schemas.js +14 -18
  375. package/dist/telemetry/decorators.cjs +54 -15
  376. package/dist/telemetry/decorators.d.ts.map +1 -1
  377. package/dist/telemetry/decorators.js +54 -15
  378. package/dist/telemetry/utils.cjs +21 -14
  379. package/dist/telemetry/utils.d.ts +7 -3
  380. package/dist/telemetry/utils.d.ts.map +1 -1
  381. package/dist/telemetry/utils.js +21 -14
  382. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +2 -2
  383. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +2 -1
  384. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
  385. package/dist/tools/confirmation/allowed-tools-provider/factory.js +2 -2
  386. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +7 -6
  387. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +3 -1
  388. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
  389. package/dist/tools/confirmation/allowed-tools-provider/storage.js +7 -6
  390. package/dist/tools/errors.cjs +2 -1
  391. package/dist/tools/errors.d.ts.map +1 -1
  392. package/dist/tools/errors.js +2 -1
  393. package/dist/tools/internal-tools/constants.cjs +2 -1
  394. package/dist/tools/internal-tools/constants.d.ts +1 -1
  395. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  396. package/dist/tools/internal-tools/constants.js +2 -1
  397. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +1 -1
  398. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +1 -1
  399. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +192 -0
  400. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +33 -0
  401. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +1 -0
  402. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +169 -0
  403. package/dist/tools/internal-tools/provider.cjs +21 -17
  404. package/dist/tools/internal-tools/provider.d.ts +3 -1
  405. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  406. package/dist/tools/internal-tools/provider.js +21 -17
  407. package/dist/tools/internal-tools/registry.cjs +5 -0
  408. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  409. package/dist/tools/internal-tools/registry.js +5 -0
  410. package/dist/tools/schemas.cjs +16 -4
  411. package/dist/tools/schemas.d.ts +21 -9
  412. package/dist/tools/schemas.d.ts.map +1 -1
  413. package/dist/tools/schemas.js +15 -4
  414. package/dist/tools/tool-manager.cjs +64 -47
  415. package/dist/tools/tool-manager.d.ts +4 -2
  416. package/dist/tools/tool-manager.d.ts.map +1 -1
  417. package/dist/tools/tool-manager.js +61 -44
  418. package/dist/tools/types.d.ts +0 -4
  419. package/dist/tools/types.d.ts.map +1 -1
  420. package/dist/utils/env-file.cjs +118 -0
  421. package/dist/utils/env-file.d.ts +5 -0
  422. package/dist/utils/env-file.d.ts.map +1 -0
  423. package/dist/utils/env-file.js +85 -0
  424. package/dist/utils/error-conversion.cjs +23 -1
  425. package/dist/utils/error-conversion.d.ts +2 -1
  426. package/dist/utils/error-conversion.d.ts.map +1 -1
  427. package/dist/utils/error-conversion.js +23 -1
  428. package/dist/utils/execution-context.d.ts.map +1 -1
  429. package/dist/utils/fs-walk.d.ts.map +1 -1
  430. package/dist/utils/index.cjs +7 -9
  431. package/dist/utils/index.d.ts +3 -4
  432. package/dist/utils/index.d.ts.map +1 -1
  433. package/dist/utils/index.js +3 -4
  434. package/dist/utils/path.cjs +22 -57
  435. package/dist/utils/path.d.ts +8 -7
  436. package/dist/utils/path.d.ts.map +1 -1
  437. package/dist/utils/path.js +21 -54
  438. package/dist/utils/result.cjs +37 -14
  439. package/dist/utils/result.d.ts.map +1 -1
  440. package/dist/utils/result.js +37 -14
  441. package/dist/utils/schema.cjs +2 -3
  442. package/dist/utils/schema.d.ts +2 -1
  443. package/dist/utils/schema.d.ts.map +1 -1
  444. package/dist/utils/schema.js +1 -2
  445. package/dist/utils/service-initializer.cjs +88 -61
  446. package/dist/utils/service-initializer.d.ts +4 -2
  447. package/dist/utils/service-initializer.d.ts.map +1 -1
  448. package/dist/utils/service-initializer.js +70 -43
  449. package/package.json +7 -3
  450. package/dist/Dexto.cjs +0 -251
  451. package/dist/Dexto.d.ts +0 -191
  452. package/dist/Dexto.d.ts.map +0 -1
  453. package/dist/Dexto.js +0 -228
  454. package/dist/agent/registry/error-codes.cjs +0 -44
  455. package/dist/agent/registry/error-codes.d.ts +0 -21
  456. package/dist/agent/registry/error-codes.d.ts.map +0 -1
  457. package/dist/agent/registry/error-codes.js +0 -21
  458. package/dist/agent/registry/errors.cjs +0 -188
  459. package/dist/agent/registry/errors.d.ts +0 -63
  460. package/dist/agent/registry/errors.d.ts.map +0 -1
  461. package/dist/agent/registry/errors.js +0 -165
  462. package/dist/agent/registry/registry.cjs +0 -479
  463. package/dist/agent/registry/registry.d.ts +0 -130
  464. package/dist/agent/registry/registry.d.ts.map +0 -1
  465. package/dist/agent/registry/registry.js +0 -453
  466. package/dist/agent/registry/types.cjs +0 -74
  467. package/dist/agent/registry/types.d.ts +0 -142
  468. package/dist/agent/registry/types.d.ts.map +0 -1
  469. package/dist/agent/registry/types.js +0 -48
  470. package/dist/agent/registry/user-registry.cjs +0 -140
  471. package/dist/agent/registry/user-registry.d.ts +0 -34
  472. package/dist/agent/registry/user-registry.d.ts.map +0 -1
  473. package/dist/agent/registry/user-registry.js +0 -105
  474. package/dist/approval/providers/event-based-approval-provider.cjs +0 -156
  475. package/dist/approval/providers/event-based-approval-provider.d.ts +0 -39
  476. package/dist/approval/providers/event-based-approval-provider.d.ts.map +0 -1
  477. package/dist/approval/providers/event-based-approval-provider.js +0 -133
  478. package/dist/approval/providers/factory.d.ts.map +0 -1
  479. package/dist/approval/providers/noop-approval-provider.cjs +0 -54
  480. package/dist/approval/providers/noop-approval-provider.d.ts +0 -18
  481. package/dist/approval/providers/noop-approval-provider.d.ts.map +0 -1
  482. package/dist/approval/providers/noop-approval-provider.js +0 -31
  483. package/dist/config/agent-resolver.cjs +0 -153
  484. package/dist/config/agent-resolver.d.ts +0 -14
  485. package/dist/config/agent-resolver.d.ts.map +0 -1
  486. package/dist/config/agent-resolver.js +0 -123
  487. package/dist/config/error-codes.cjs +0 -39
  488. package/dist/config/error-codes.d.ts +0 -16
  489. package/dist/config/error-codes.d.ts.map +0 -1
  490. package/dist/config/error-codes.js +0 -16
  491. package/dist/config/errors.cjs +0 -126
  492. package/dist/config/errors.d.ts +0 -34
  493. package/dist/config/errors.d.ts.map +0 -1
  494. package/dist/config/errors.js +0 -103
  495. package/dist/config/index.cjs +0 -26
  496. package/dist/config/index.d.ts +0 -4
  497. package/dist/config/index.d.ts.map +0 -1
  498. package/dist/config/index.js +0 -3
  499. package/dist/config/loader.cjs +0 -119
  500. package/dist/config/loader.d.ts +0 -16
  501. package/dist/config/loader.d.ts.map +0 -1
  502. package/dist/config/loader.js +0 -86
  503. package/dist/config/writer.cjs +0 -182
  504. package/dist/config/writer.d.ts +0 -35
  505. package/dist/config/writer.d.ts.map +0 -1
  506. package/dist/config/writer.js +0 -147
  507. package/dist/preferences/constants.d.ts +0 -2
  508. package/dist/preferences/constants.d.ts.map +0 -1
  509. package/dist/preferences/constants.js +0 -5
  510. package/dist/preferences/error-codes.d.ts +0 -8
  511. package/dist/preferences/error-codes.d.ts.map +0 -1
  512. package/dist/preferences/error-codes.js +0 -12
  513. package/dist/preferences/errors.cjs +0 -75
  514. package/dist/preferences/errors.d.ts +0 -18
  515. package/dist/preferences/errors.d.ts.map +0 -1
  516. package/dist/preferences/errors.js +0 -51
  517. package/dist/preferences/index.cjs +0 -55
  518. package/dist/preferences/index.d.ts +0 -6
  519. package/dist/preferences/index.d.ts.map +0 -1
  520. package/dist/preferences/index.js +0 -32
  521. package/dist/preferences/loader.cjs +0 -138
  522. package/dist/preferences/loader.d.ts +0 -51
  523. package/dist/preferences/loader.d.ts.map +0 -1
  524. package/dist/preferences/loader.js +0 -110
  525. package/dist/preferences/schemas.cjs +0 -75
  526. package/dist/preferences/schemas.d.ts +0 -110
  527. package/dist/preferences/schemas.d.ts.map +0 -1
  528. package/dist/preferences/schemas.js +0 -49
  529. package/dist/prompts/providers/file-prompt-provider.cjs +0 -399
  530. package/dist/prompts/providers/file-prompt-provider.d.ts +0 -47
  531. package/dist/prompts/providers/file-prompt-provider.d.ts.map +0 -1
  532. package/dist/prompts/providers/file-prompt-provider.js +0 -376
  533. package/dist/prompts/providers/starter-prompt-provider.cjs +0 -170
  534. package/dist/prompts/providers/starter-prompt-provider.d.ts +0 -45
  535. package/dist/prompts/providers/starter-prompt-provider.d.ts.map +0 -1
  536. package/dist/prompts/providers/starter-prompt-provider.js +0 -147
  537. package/dist/utils/api-key-store.cjs +0 -56
  538. package/dist/utils/api-key-store.d.ts +0 -24
  539. package/dist/utils/api-key-store.d.ts.map +0 -1
  540. package/dist/utils/api-key-store.js +0 -31
  541. package/dist/utils/env.cjs +0 -154
  542. package/dist/utils/env.d.ts +0 -28
  543. package/dist/utils/env.d.ts.map +0 -1
  544. package/dist/utils/env.js +0 -119
  545. package/dist/utils/port-utils.cjs +0 -37
  546. package/dist/utils/port-utils.d.ts +0 -10
  547. package/dist/utils/port-utils.d.ts.map +0 -1
  548. package/dist/utils/port-utils.js +0 -14
  549. package/dist/utils/port-utils.spec.cjs +0 -26
  550. package/dist/utils/port-utils.spec.js +0 -25
  551. /package/dist/approval/{providers/factory.cjs → factory.cjs} +0 -0
@@ -22,55 +22,91 @@ __export(manager_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(manager_exports);
24
24
  var import_types = require("./types.js");
25
- var import_event_based_approval_provider = require("./providers/event-based-approval-provider.js");
26
- var import_noop_approval_provider = require("./providers/noop-approval-provider.js");
27
- var import_factory = require("./providers/factory.js");
28
- var import_logger = require("../logger/index.js");
25
+ var import_factory = require("./factory.js");
26
+ var import_types2 = require("../logger/v2/types.js");
29
27
  var import_errors = require("./errors.js");
30
28
  class ApprovalManager {
31
- provider;
29
+ handler;
32
30
  config;
33
- constructor(agentEventBus, config) {
31
+ logger;
32
+ constructor(config, logger) {
34
33
  this.config = config;
35
- this.provider = this.createProvider(agentEventBus, config);
36
- import_logger.logger.debug(
37
- `ApprovalManager initialized with mode: ${config.mode}, timeout: ${config.timeout}ms`
34
+ this.logger = logger.createChild(import_types2.DextoLogComponent.APPROVAL);
35
+ this.logger.debug(
36
+ `ApprovalManager initialized with toolConfirmation.mode: ${config.toolConfirmation.mode}, elicitation.enabled: ${config.elicitation.enabled}`
38
37
  );
39
38
  }
40
39
  /**
41
- * Create appropriate approval provider based on configuration
42
- * TODO: Move this into factory.ts
40
+ * Request a generic approval
43
41
  */
44
- createProvider(agentEventBus, config) {
45
- switch (config.mode) {
46
- case "event-based":
47
- return new import_event_based_approval_provider.EventBasedApprovalProvider(agentEventBus, {
48
- defaultTimeout: config.timeout
49
- });
50
- case "auto-approve":
51
- return new import_noop_approval_provider.NoOpApprovalProvider({ defaultStatus: import_types.ApprovalStatus.APPROVED });
52
- case "auto-deny":
53
- return new import_noop_approval_provider.NoOpApprovalProvider({ defaultStatus: import_types.ApprovalStatus.DENIED });
54
- default:
55
- throw import_errors.ApprovalError.invalidConfig(`Unknown approval mode: ${config.mode}`);
42
+ async requestApproval(details) {
43
+ const request = (0, import_factory.createApprovalRequest)(details);
44
+ if (request.type === import_types.ApprovalType.ELICITATION && !this.config.elicitation.enabled) {
45
+ throw import_errors.ApprovalError.invalidConfig(
46
+ "Elicitation is disabled. Enable elicitation in your agent configuration to use the ask_user tool or MCP server elicitations."
47
+ );
56
48
  }
49
+ return this.handleApproval(request);
57
50
  }
58
51
  /**
59
- * Request a generic approval
52
+ * Handle approval requests (tool confirmation, elicitation, command confirmation, custom)
53
+ * @private
60
54
  */
61
- async requestApproval(details) {
62
- const request = (0, import_factory.createApprovalRequest)(details);
63
- return this.provider.requestApproval(request);
55
+ async handleApproval(request) {
56
+ if (request.type === import_types.ApprovalType.ELICITATION) {
57
+ const handler2 = this.ensureHandler();
58
+ this.logger.info(
59
+ `Elicitation requested, approvalId: ${request.approvalId}, sessionId: ${request.sessionId ?? "global"}`
60
+ );
61
+ return handler2(request);
62
+ }
63
+ const mode = this.config.toolConfirmation.mode;
64
+ if (mode === "auto-approve") {
65
+ this.logger.info(
66
+ `Auto-approve approval '${request.type}', approvalId: ${request.approvalId}`
67
+ );
68
+ const response = {
69
+ approvalId: request.approvalId,
70
+ status: import_types.ApprovalStatus.APPROVED
71
+ };
72
+ if (request.sessionId !== void 0) {
73
+ response.sessionId = request.sessionId;
74
+ }
75
+ return response;
76
+ }
77
+ if (mode === "auto-deny") {
78
+ this.logger.info(
79
+ `Auto-deny approval '${request.type}', approvalId: ${request.approvalId}`
80
+ );
81
+ const response = {
82
+ approvalId: request.approvalId,
83
+ status: import_types.ApprovalStatus.DENIED,
84
+ reason: import_types.DenialReason.SYSTEM_DENIED,
85
+ message: `Approval automatically denied by system policy (auto-deny mode)`
86
+ };
87
+ if (request.sessionId !== void 0) {
88
+ response.sessionId = request.sessionId;
89
+ }
90
+ return response;
91
+ }
92
+ const handler = this.ensureHandler();
93
+ this.logger.info(
94
+ `Manual approval '${request.type}' requested, approvalId: ${request.approvalId}, sessionId: ${request.sessionId ?? "global"}`
95
+ );
96
+ return handler(request);
64
97
  }
65
98
  /**
66
99
  * Request tool confirmation approval
67
100
  * Convenience method for tool execution confirmation
101
+ *
102
+ * TODO: Make sessionId required once all callers are updated to pass it
103
+ * Tool confirmations always happen in session context during LLM execution
68
104
  */
69
105
  async requestToolConfirmation(metadata) {
70
106
  const { sessionId, timeout, ...toolMetadata } = metadata;
71
107
  const details = {
72
108
  type: import_types.ApprovalType.TOOL_CONFIRMATION,
73
- timeout: timeout ?? this.config.timeout,
109
+ timeout: timeout ?? this.config.toolConfirmation.timeout,
74
110
  metadata: toolMetadata
75
111
  };
76
112
  if (sessionId !== void 0) {
@@ -85,6 +121,9 @@ class ApprovalManager {
85
121
  * This is different from tool confirmation - it's for per-command approval
86
122
  * of dangerous operations (like rm, git push) within tools that are already approved.
87
123
  *
124
+ * TODO: Make sessionId required once all callers are updated to pass it
125
+ * Command confirmations always happen during tool execution which has session context
126
+ *
88
127
  * @example
89
128
  * ```typescript
90
129
  * // bash_exec tool is approved, but dangerous commands still require approval
@@ -100,7 +139,7 @@ class ApprovalManager {
100
139
  const { sessionId, timeout, ...commandMetadata } = metadata;
101
140
  const details = {
102
141
  type: import_types.ApprovalType.COMMAND_CONFIRMATION,
103
- timeout: timeout ?? this.config.timeout,
142
+ timeout: timeout ?? this.config.toolConfirmation.timeout,
104
143
  metadata: commandMetadata
105
144
  };
106
145
  if (sessionId !== void 0) {
@@ -119,7 +158,7 @@ class ApprovalManager {
119
158
  const { sessionId, timeout, ...elicitationMetadata } = metadata;
120
159
  const details = {
121
160
  type: import_types.ApprovalType.ELICITATION,
122
- timeout: timeout ?? this.config.timeout,
161
+ timeout: timeout ?? this.config.elicitation.timeout,
123
162
  metadata: elicitationMetadata
124
163
  };
125
164
  if (sessionId !== void 0) {
@@ -136,9 +175,18 @@ class ApprovalManager {
136
175
  if (response.status === import_types.ApprovalStatus.APPROVED) {
137
176
  return true;
138
177
  } else if (response.status === import_types.ApprovalStatus.DENIED) {
139
- throw import_errors.ApprovalError.toolConfirmationDenied(metadata.toolName, metadata.sessionId);
178
+ throw import_errors.ApprovalError.toolConfirmationDenied(
179
+ metadata.toolName,
180
+ response.reason,
181
+ response.message,
182
+ metadata.sessionId
183
+ );
140
184
  } else {
141
- throw import_errors.ApprovalError.cancelled(response.approvalId, import_types.ApprovalType.TOOL_CONFIRMATION);
185
+ throw import_errors.ApprovalError.cancelled(
186
+ response.approvalId,
187
+ import_types.ApprovalType.TOOL_CONFIRMATION,
188
+ response.message ?? response.reason
189
+ );
142
190
  }
143
191
  }
144
192
  /**
@@ -153,28 +201,37 @@ class ApprovalManager {
153
201
  }
154
202
  return {};
155
203
  } else if (response.status === import_types.ApprovalStatus.DENIED) {
156
- throw import_errors.ApprovalError.elicitationDenied(metadata.serverName, metadata.sessionId);
204
+ throw import_errors.ApprovalError.elicitationDenied(
205
+ metadata.serverName,
206
+ response.reason,
207
+ response.message,
208
+ metadata.sessionId
209
+ );
157
210
  } else {
158
- throw import_errors.ApprovalError.cancelled(response.approvalId, import_types.ApprovalType.ELICITATION);
211
+ throw import_errors.ApprovalError.cancelled(
212
+ response.approvalId,
213
+ import_types.ApprovalType.ELICITATION,
214
+ response.message ?? response.reason
215
+ );
159
216
  }
160
217
  }
161
218
  /**
162
219
  * Cancel a specific approval request
163
220
  */
164
221
  cancelApproval(approvalId) {
165
- this.provider.cancelApproval(approvalId);
222
+ this.handler?.cancel?.(approvalId);
166
223
  }
167
224
  /**
168
225
  * Cancel all pending approval requests
169
226
  */
170
227
  cancelAllApprovals() {
171
- this.provider.cancelAllApprovals();
228
+ this.handler?.cancelAll?.();
172
229
  }
173
230
  /**
174
231
  * Get list of pending approval IDs
175
232
  */
176
233
  getPendingApprovals() {
177
- return this.provider.getPendingApprovals();
234
+ return this.handler?.getPending?.() ?? [];
178
235
  }
179
236
  /**
180
237
  * Get current configuration
@@ -182,6 +239,52 @@ class ApprovalManager {
182
239
  getConfig() {
183
240
  return { ...this.config };
184
241
  }
242
+ /**
243
+ * Set the approval handler for manual approval mode.
244
+ *
245
+ * The handler will be called for:
246
+ * - Tool confirmation requests when toolConfirmation.mode is 'manual'
247
+ * - All elicitation requests (when elicitation is enabled, regardless of toolConfirmation.mode)
248
+ *
249
+ * A handler must be set before processing requests if:
250
+ * - toolConfirmation.mode is 'manual', or
251
+ * - elicitation is enabled (elicitation.enabled is true)
252
+ *
253
+ * @param handler The approval handler function, or null to clear
254
+ */
255
+ setHandler(handler) {
256
+ if (handler === null) {
257
+ this.handler = void 0;
258
+ } else {
259
+ this.handler = handler;
260
+ }
261
+ this.logger.debug(`Approval handler ${handler ? "registered" : "cleared"}`);
262
+ }
263
+ /**
264
+ * Clear the current approval handler
265
+ */
266
+ clearHandler() {
267
+ this.handler = void 0;
268
+ this.logger.debug("Approval handler cleared");
269
+ }
270
+ /**
271
+ * Check if an approval handler is registered
272
+ */
273
+ hasHandler() {
274
+ return this.handler !== void 0;
275
+ }
276
+ /**
277
+ * Get the approval handler, throwing if not set
278
+ * @private
279
+ */
280
+ ensureHandler() {
281
+ if (!this.handler) {
282
+ throw import_errors.ApprovalError.invalidConfig(
283
+ 'An approval handler is required but not configured.\nHandlers are required for:\n \u2022 manual tool confirmation mode\n \u2022 all elicitation requests (when elicitation is enabled)\nEither:\n \u2022 set toolConfirmation.mode to "auto-approve" or "auto-deny", or\n \u2022 disable elicitation (set elicitation.enabled: false), or\n \u2022 call agent.setApprovalHandler(...) before processing requests.'
284
+ );
285
+ }
286
+ return this.handler;
287
+ }
185
288
  }
186
289
  // Annotate the CommonJS export names for ESM import in node:
187
290
  0 && (module.exports = {
@@ -1,15 +1,17 @@
1
- import type { ApprovalResponse, ApprovalRequestDetails, ToolConfirmationMetadata, CommandConfirmationMetadata, ElicitationMetadata } from './types.js';
2
- import type { AgentEventBus } from '../events/index.js';
1
+ import type { ApprovalHandler, ApprovalResponse, ApprovalRequestDetails, ToolConfirmationMetadata, CommandConfirmationMetadata, ElicitationMetadata } from './types.js';
2
+ import type { IDextoLogger } from '../logger/v2/types.js';
3
3
  /**
4
4
  * Configuration for the approval manager
5
5
  */
6
6
  export interface ApprovalManagerConfig {
7
- mode: 'event-based' | 'auto-approve' | 'auto-deny';
8
- /**
9
- * Timeout in milliseconds for approval requests
10
- * @default 120000 (2 minutes)
11
- */
12
- timeout: number;
7
+ toolConfirmation: {
8
+ mode: 'manual' | 'auto-approve' | 'auto-deny';
9
+ timeout: number;
10
+ };
11
+ elicitation: {
12
+ enabled: boolean;
13
+ timeout: number;
14
+ };
13
15
  }
14
16
  /**
15
17
  * ApprovalManager orchestrates all user approval flows in Dexto.
@@ -23,11 +25,14 @@ export interface ApprovalManagerConfig {
23
25
  * - Route approvals to appropriate providers
24
26
  * - Provide convenience methods for specific approval types
25
27
  * - Handle approval responses and errors
26
- * - Support multiple approval modes (event-based, auto-approve, auto-deny)
28
+ * - Support multiple approval modes (manual, auto-approve, auto-deny)
27
29
  *
28
30
  * @example
29
31
  * ```typescript
30
- * const manager = new ApprovalManager(eventBus, { mode: 'event-based' });
32
+ * const manager = new ApprovalManager(
33
+ * { toolConfirmation: { mode: 'manual', timeout: 60000 }, elicitation: { enabled: true, timeout: 60000 } },
34
+ * logger
35
+ * );
31
36
  *
32
37
  * // Request tool confirmation
33
38
  * const response = await manager.requestToolConfirmation({
@@ -42,21 +47,25 @@ export interface ApprovalManagerConfig {
42
47
  * ```
43
48
  */
44
49
  export declare class ApprovalManager {
45
- private provider;
50
+ private handler;
46
51
  private config;
47
- constructor(agentEventBus: AgentEventBus, config: ApprovalManagerConfig);
48
- /**
49
- * Create appropriate approval provider based on configuration
50
- * TODO: Move this into factory.ts
51
- */
52
- private createProvider;
52
+ private logger;
53
+ constructor(config: ApprovalManagerConfig, logger: IDextoLogger);
53
54
  /**
54
55
  * Request a generic approval
55
56
  */
56
57
  requestApproval(details: ApprovalRequestDetails): Promise<ApprovalResponse>;
58
+ /**
59
+ * Handle approval requests (tool confirmation, elicitation, command confirmation, custom)
60
+ * @private
61
+ */
62
+ private handleApproval;
57
63
  /**
58
64
  * Request tool confirmation approval
59
65
  * Convenience method for tool execution confirmation
66
+ *
67
+ * TODO: Make sessionId required once all callers are updated to pass it
68
+ * Tool confirmations always happen in session context during LLM execution
60
69
  */
61
70
  requestToolConfirmation(metadata: ToolConfirmationMetadata & {
62
71
  sessionId?: string;
@@ -69,6 +78,9 @@ export declare class ApprovalManager {
69
78
  * This is different from tool confirmation - it's for per-command approval
70
79
  * of dangerous operations (like rm, git push) within tools that are already approved.
71
80
  *
81
+ * TODO: Make sessionId required once all callers are updated to pass it
82
+ * Command confirmations always happen during tool execution which has session context
83
+ *
72
84
  * @example
73
85
  * ```typescript
74
86
  * // bash_exec tool is approved, but dangerous commands still require approval
@@ -127,5 +139,32 @@ export declare class ApprovalManager {
127
139
  * Get current configuration
128
140
  */
129
141
  getConfig(): ApprovalManagerConfig;
142
+ /**
143
+ * Set the approval handler for manual approval mode.
144
+ *
145
+ * The handler will be called for:
146
+ * - Tool confirmation requests when toolConfirmation.mode is 'manual'
147
+ * - All elicitation requests (when elicitation is enabled, regardless of toolConfirmation.mode)
148
+ *
149
+ * A handler must be set before processing requests if:
150
+ * - toolConfirmation.mode is 'manual', or
151
+ * - elicitation is enabled (elicitation.enabled is true)
152
+ *
153
+ * @param handler The approval handler function, or null to clear
154
+ */
155
+ setHandler(handler: ApprovalHandler | null): void;
156
+ /**
157
+ * Clear the current approval handler
158
+ */
159
+ clearHandler(): void;
160
+ /**
161
+ * Check if an approval handler is registered
162
+ */
163
+ hasHandler(): boolean;
164
+ /**
165
+ * Get the approval handler, throwing if not set
166
+ * @private
167
+ */
168
+ private ensureHandler;
130
169
  }
131
170
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/approval/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,mBAAmB,EACtB,MAAM,YAAY,CAAC;AAKpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;IACnD;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAwB;gBAE1B,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,qBAAqB;IASvE;;;OAGG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAKjF;;;OAGG;IACG,uBAAuB,CACzB,QAAQ,EAAE,wBAAwB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;;;;;;;;;;;;;;;;OAiBG;IACG,0BAA0B,CAC5B,QAAQ,EAAE,2BAA2B,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACjF,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;;;;;OAMG;IACG,kBAAkB,CACpB,QAAQ,EAAE,mBAAmB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;;OAGG;IACG,qBAAqB,CACvB,QAAQ,EAAE,wBAAwB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,OAAO,CAAC;IAYnB;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,mBAAmB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwBnC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,SAAS,IAAI,qBAAqB;CAGrC"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/approval/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EAEf,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,mBAAmB,EACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,gBAAgB,EAAE;QACd,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,WAAW,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;CACL;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY;IAS/D;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAcjF;;;OAGG;YACW,cAAc;IAqD5B;;;;;;OAMG;IACG,uBAAuB,CACzB,QAAQ,EAAE,wBAAwB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,0BAA0B,CAC5B,QAAQ,EAAE,2BAA2B,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACjF,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;;;;;OAMG;IACG,kBAAkB,CACpB,QAAQ,EAAE,mBAAmB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;;OAGG;IACG,qBAAqB,CACvB,QAAQ,EAAE,wBAAwB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,OAAO,CAAC;IAqBnB;;;OAGG;IACG,kBAAkB,CACpB,QAAQ,EAAE,mBAAmB,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACzE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAgCnC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACH,SAAS,IAAI,qBAAqB;IAIlC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IASjD;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACI,UAAU,IAAI,OAAO;IAI5B;;;OAGG;IACH,OAAO,CAAC,aAAa;CAgBxB"}
@@ -1,54 +1,90 @@
1
1
  import "../chunk-C6A6W6XS.js";
2
- import { ApprovalType, ApprovalStatus } from "./types.js";
3
- import { EventBasedApprovalProvider } from "./providers/event-based-approval-provider.js";
4
- import { NoOpApprovalProvider } from "./providers/noop-approval-provider.js";
5
- import { createApprovalRequest } from "./providers/factory.js";
6
- import { logger } from "../logger/index.js";
2
+ import { ApprovalType, ApprovalStatus, DenialReason } from "./types.js";
3
+ import { createApprovalRequest } from "./factory.js";
4
+ import { DextoLogComponent } from "../logger/v2/types.js";
7
5
  import { ApprovalError } from "./errors.js";
8
6
  class ApprovalManager {
9
- provider;
7
+ handler;
10
8
  config;
11
- constructor(agentEventBus, config) {
9
+ logger;
10
+ constructor(config, logger) {
12
11
  this.config = config;
13
- this.provider = this.createProvider(agentEventBus, config);
14
- logger.debug(
15
- `ApprovalManager initialized with mode: ${config.mode}, timeout: ${config.timeout}ms`
12
+ this.logger = logger.createChild(DextoLogComponent.APPROVAL);
13
+ this.logger.debug(
14
+ `ApprovalManager initialized with toolConfirmation.mode: ${config.toolConfirmation.mode}, elicitation.enabled: ${config.elicitation.enabled}`
16
15
  );
17
16
  }
18
17
  /**
19
- * Create appropriate approval provider based on configuration
20
- * TODO: Move this into factory.ts
18
+ * Request a generic approval
21
19
  */
22
- createProvider(agentEventBus, config) {
23
- switch (config.mode) {
24
- case "event-based":
25
- return new EventBasedApprovalProvider(agentEventBus, {
26
- defaultTimeout: config.timeout
27
- });
28
- case "auto-approve":
29
- return new NoOpApprovalProvider({ defaultStatus: ApprovalStatus.APPROVED });
30
- case "auto-deny":
31
- return new NoOpApprovalProvider({ defaultStatus: ApprovalStatus.DENIED });
32
- default:
33
- throw ApprovalError.invalidConfig(`Unknown approval mode: ${config.mode}`);
20
+ async requestApproval(details) {
21
+ const request = createApprovalRequest(details);
22
+ if (request.type === ApprovalType.ELICITATION && !this.config.elicitation.enabled) {
23
+ throw ApprovalError.invalidConfig(
24
+ "Elicitation is disabled. Enable elicitation in your agent configuration to use the ask_user tool or MCP server elicitations."
25
+ );
34
26
  }
27
+ return this.handleApproval(request);
35
28
  }
36
29
  /**
37
- * Request a generic approval
30
+ * Handle approval requests (tool confirmation, elicitation, command confirmation, custom)
31
+ * @private
38
32
  */
39
- async requestApproval(details) {
40
- const request = createApprovalRequest(details);
41
- return this.provider.requestApproval(request);
33
+ async handleApproval(request) {
34
+ if (request.type === ApprovalType.ELICITATION) {
35
+ const handler2 = this.ensureHandler();
36
+ this.logger.info(
37
+ `Elicitation requested, approvalId: ${request.approvalId}, sessionId: ${request.sessionId ?? "global"}`
38
+ );
39
+ return handler2(request);
40
+ }
41
+ const mode = this.config.toolConfirmation.mode;
42
+ if (mode === "auto-approve") {
43
+ this.logger.info(
44
+ `Auto-approve approval '${request.type}', approvalId: ${request.approvalId}`
45
+ );
46
+ const response = {
47
+ approvalId: request.approvalId,
48
+ status: ApprovalStatus.APPROVED
49
+ };
50
+ if (request.sessionId !== void 0) {
51
+ response.sessionId = request.sessionId;
52
+ }
53
+ return response;
54
+ }
55
+ if (mode === "auto-deny") {
56
+ this.logger.info(
57
+ `Auto-deny approval '${request.type}', approvalId: ${request.approvalId}`
58
+ );
59
+ const response = {
60
+ approvalId: request.approvalId,
61
+ status: ApprovalStatus.DENIED,
62
+ reason: DenialReason.SYSTEM_DENIED,
63
+ message: `Approval automatically denied by system policy (auto-deny mode)`
64
+ };
65
+ if (request.sessionId !== void 0) {
66
+ response.sessionId = request.sessionId;
67
+ }
68
+ return response;
69
+ }
70
+ const handler = this.ensureHandler();
71
+ this.logger.info(
72
+ `Manual approval '${request.type}' requested, approvalId: ${request.approvalId}, sessionId: ${request.sessionId ?? "global"}`
73
+ );
74
+ return handler(request);
42
75
  }
43
76
  /**
44
77
  * Request tool confirmation approval
45
78
  * Convenience method for tool execution confirmation
79
+ *
80
+ * TODO: Make sessionId required once all callers are updated to pass it
81
+ * Tool confirmations always happen in session context during LLM execution
46
82
  */
47
83
  async requestToolConfirmation(metadata) {
48
84
  const { sessionId, timeout, ...toolMetadata } = metadata;
49
85
  const details = {
50
86
  type: ApprovalType.TOOL_CONFIRMATION,
51
- timeout: timeout ?? this.config.timeout,
87
+ timeout: timeout ?? this.config.toolConfirmation.timeout,
52
88
  metadata: toolMetadata
53
89
  };
54
90
  if (sessionId !== void 0) {
@@ -63,6 +99,9 @@ class ApprovalManager {
63
99
  * This is different from tool confirmation - it's for per-command approval
64
100
  * of dangerous operations (like rm, git push) within tools that are already approved.
65
101
  *
102
+ * TODO: Make sessionId required once all callers are updated to pass it
103
+ * Command confirmations always happen during tool execution which has session context
104
+ *
66
105
  * @example
67
106
  * ```typescript
68
107
  * // bash_exec tool is approved, but dangerous commands still require approval
@@ -78,7 +117,7 @@ class ApprovalManager {
78
117
  const { sessionId, timeout, ...commandMetadata } = metadata;
79
118
  const details = {
80
119
  type: ApprovalType.COMMAND_CONFIRMATION,
81
- timeout: timeout ?? this.config.timeout,
120
+ timeout: timeout ?? this.config.toolConfirmation.timeout,
82
121
  metadata: commandMetadata
83
122
  };
84
123
  if (sessionId !== void 0) {
@@ -97,7 +136,7 @@ class ApprovalManager {
97
136
  const { sessionId, timeout, ...elicitationMetadata } = metadata;
98
137
  const details = {
99
138
  type: ApprovalType.ELICITATION,
100
- timeout: timeout ?? this.config.timeout,
139
+ timeout: timeout ?? this.config.elicitation.timeout,
101
140
  metadata: elicitationMetadata
102
141
  };
103
142
  if (sessionId !== void 0) {
@@ -114,9 +153,18 @@ class ApprovalManager {
114
153
  if (response.status === ApprovalStatus.APPROVED) {
115
154
  return true;
116
155
  } else if (response.status === ApprovalStatus.DENIED) {
117
- throw ApprovalError.toolConfirmationDenied(metadata.toolName, metadata.sessionId);
156
+ throw ApprovalError.toolConfirmationDenied(
157
+ metadata.toolName,
158
+ response.reason,
159
+ response.message,
160
+ metadata.sessionId
161
+ );
118
162
  } else {
119
- throw ApprovalError.cancelled(response.approvalId, ApprovalType.TOOL_CONFIRMATION);
163
+ throw ApprovalError.cancelled(
164
+ response.approvalId,
165
+ ApprovalType.TOOL_CONFIRMATION,
166
+ response.message ?? response.reason
167
+ );
120
168
  }
121
169
  }
122
170
  /**
@@ -131,28 +179,37 @@ class ApprovalManager {
131
179
  }
132
180
  return {};
133
181
  } else if (response.status === ApprovalStatus.DENIED) {
134
- throw ApprovalError.elicitationDenied(metadata.serverName, metadata.sessionId);
182
+ throw ApprovalError.elicitationDenied(
183
+ metadata.serverName,
184
+ response.reason,
185
+ response.message,
186
+ metadata.sessionId
187
+ );
135
188
  } else {
136
- throw ApprovalError.cancelled(response.approvalId, ApprovalType.ELICITATION);
189
+ throw ApprovalError.cancelled(
190
+ response.approvalId,
191
+ ApprovalType.ELICITATION,
192
+ response.message ?? response.reason
193
+ );
137
194
  }
138
195
  }
139
196
  /**
140
197
  * Cancel a specific approval request
141
198
  */
142
199
  cancelApproval(approvalId) {
143
- this.provider.cancelApproval(approvalId);
200
+ this.handler?.cancel?.(approvalId);
144
201
  }
145
202
  /**
146
203
  * Cancel all pending approval requests
147
204
  */
148
205
  cancelAllApprovals() {
149
- this.provider.cancelAllApprovals();
206
+ this.handler?.cancelAll?.();
150
207
  }
151
208
  /**
152
209
  * Get list of pending approval IDs
153
210
  */
154
211
  getPendingApprovals() {
155
- return this.provider.getPendingApprovals();
212
+ return this.handler?.getPending?.() ?? [];
156
213
  }
157
214
  /**
158
215
  * Get current configuration
@@ -160,6 +217,52 @@ class ApprovalManager {
160
217
  getConfig() {
161
218
  return { ...this.config };
162
219
  }
220
+ /**
221
+ * Set the approval handler for manual approval mode.
222
+ *
223
+ * The handler will be called for:
224
+ * - Tool confirmation requests when toolConfirmation.mode is 'manual'
225
+ * - All elicitation requests (when elicitation is enabled, regardless of toolConfirmation.mode)
226
+ *
227
+ * A handler must be set before processing requests if:
228
+ * - toolConfirmation.mode is 'manual', or
229
+ * - elicitation is enabled (elicitation.enabled is true)
230
+ *
231
+ * @param handler The approval handler function, or null to clear
232
+ */
233
+ setHandler(handler) {
234
+ if (handler === null) {
235
+ this.handler = void 0;
236
+ } else {
237
+ this.handler = handler;
238
+ }
239
+ this.logger.debug(`Approval handler ${handler ? "registered" : "cleared"}`);
240
+ }
241
+ /**
242
+ * Clear the current approval handler
243
+ */
244
+ clearHandler() {
245
+ this.handler = void 0;
246
+ this.logger.debug("Approval handler cleared");
247
+ }
248
+ /**
249
+ * Check if an approval handler is registered
250
+ */
251
+ hasHandler() {
252
+ return this.handler !== void 0;
253
+ }
254
+ /**
255
+ * Get the approval handler, throwing if not set
256
+ * @private
257
+ */
258
+ ensureHandler() {
259
+ if (!this.handler) {
260
+ throw ApprovalError.invalidConfig(
261
+ 'An approval handler is required but not configured.\nHandlers are required for:\n \u2022 manual tool confirmation mode\n \u2022 all elicitation requests (when elicitation is enabled)\nEither:\n \u2022 set toolConfirmation.mode to "auto-approve" or "auto-deny", or\n \u2022 disable elicitation (set elicitation.enabled: false), or\n \u2022 call agent.setApprovalHandler(...) before processing requests.'
262
+ );
263
+ }
264
+ return this.handler;
265
+ }
163
266
  }
164
267
  export {
165
268
  ApprovalManager