@dexto/core 1.4.0 → 1.5.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 (497) hide show
  1. package/README.md +36 -0
  2. package/dist/agent/DextoAgent.cjs +22 -3
  3. package/dist/agent/DextoAgent.d.ts +19 -2
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +23 -4
  6. package/dist/agent/index.cjs +4 -1
  7. package/dist/agent/index.d.ts +1 -1
  8. package/dist/agent/index.d.ts.map +1 -1
  9. package/dist/agent/index.js +5 -1
  10. package/dist/agent/schemas.cjs +90 -71
  11. package/dist/agent/schemas.d.ts +5911 -96
  12. package/dist/agent/schemas.d.ts.map +1 -1
  13. package/dist/agent/schemas.js +87 -66
  14. package/dist/approval/manager.cjs +165 -1
  15. package/dist/approval/manager.d.ts +91 -2
  16. package/dist/approval/manager.d.ts.map +1 -1
  17. package/dist/approval/manager.js +155 -1
  18. package/dist/approval/schemas.cjs +39 -3
  19. package/dist/approval/schemas.d.ts +238 -1
  20. package/dist/approval/schemas.d.ts.map +1 -1
  21. package/dist/approval/schemas.js +35 -3
  22. package/dist/approval/types.cjs +1 -0
  23. package/dist/approval/types.d.ts +26 -1
  24. package/dist/approval/types.d.ts.map +1 -1
  25. package/dist/approval/types.js +1 -0
  26. package/dist/context/compaction/factory.cjs +57 -0
  27. package/dist/context/compaction/factory.d.ts +17 -0
  28. package/dist/context/compaction/factory.d.ts.map +1 -0
  29. package/dist/context/compaction/factory.js +34 -0
  30. package/dist/context/compaction/index.cjs +49 -0
  31. package/dist/context/compaction/index.d.ts +11 -0
  32. package/dist/context/compaction/index.d.ts.map +1 -0
  33. package/dist/context/compaction/index.js +19 -0
  34. package/dist/context/{compression → compaction}/overflow.cjs +3 -3
  35. package/dist/context/{compression → compaction}/overflow.d.ts +4 -4
  36. package/dist/context/compaction/overflow.d.ts.map +1 -0
  37. package/dist/context/{compression → compaction}/overflow.js +2 -2
  38. package/dist/context/compaction/provider.cjs +16 -0
  39. package/dist/context/compaction/provider.d.ts +48 -0
  40. package/dist/context/compaction/provider.d.ts.map +1 -0
  41. package/dist/context/compaction/providers/noop-provider.cjs +48 -0
  42. package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
  43. package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
  44. package/dist/context/compaction/providers/noop-provider.js +24 -0
  45. package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
  46. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
  47. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
  48. package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
  49. package/dist/context/compaction/registry.cjs +39 -0
  50. package/dist/context/compaction/registry.d.ts +19 -0
  51. package/dist/context/compaction/registry.d.ts.map +1 -0
  52. package/dist/context/compaction/registry.js +16 -0
  53. package/dist/context/compaction/schemas.cjs +38 -0
  54. package/dist/context/compaction/schemas.d.ts +24 -0
  55. package/dist/context/compaction/schemas.d.ts.map +1 -0
  56. package/dist/context/compaction/schemas.js +14 -0
  57. package/dist/context/compaction/strategies/noop.cjs +36 -0
  58. package/dist/context/compaction/strategies/noop.d.ts +18 -0
  59. package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
  60. package/dist/context/compaction/strategies/noop.js +13 -0
  61. package/dist/context/{compression → compaction/strategies}/reactive-overflow.cjs +3 -3
  62. package/dist/context/{compression → compaction/strategies}/reactive-overflow.d.ts +6 -6
  63. package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
  64. package/dist/context/{compression → compaction/strategies}/reactive-overflow.js +4 -4
  65. package/dist/context/{compression → compaction}/types.d.ts +4 -4
  66. package/dist/context/compaction/types.d.ts.map +1 -0
  67. package/dist/context/compaction/types.js +0 -0
  68. package/dist/context/error-codes.cjs +4 -0
  69. package/dist/context/error-codes.d.ts +4 -0
  70. package/dist/context/error-codes.d.ts.map +1 -1
  71. package/dist/context/error-codes.js +4 -0
  72. package/dist/context/errors.cjs +40 -0
  73. package/dist/context/errors.d.ts +14 -0
  74. package/dist/context/errors.d.ts.map +1 -1
  75. package/dist/context/errors.js +40 -0
  76. package/dist/context/index.cjs +3 -1
  77. package/dist/context/index.d.ts +1 -0
  78. package/dist/context/index.d.ts.map +1 -1
  79. package/dist/context/index.js +1 -0
  80. package/dist/context/types.d.ts +6 -0
  81. package/dist/context/types.d.ts.map +1 -1
  82. package/dist/context/utils.cjs +27 -7
  83. package/dist/context/utils.d.ts.map +1 -1
  84. package/dist/context/utils.js +27 -7
  85. package/dist/errors/result-bridge.cjs +2 -3
  86. package/dist/errors/result-bridge.d.ts.map +1 -1
  87. package/dist/errors/result-bridge.js +2 -3
  88. package/dist/events/index.cjs +2 -2
  89. package/dist/events/index.d.ts +16 -16
  90. package/dist/events/index.d.ts.map +1 -1
  91. package/dist/events/index.js +2 -2
  92. package/dist/filesystem/filesystem-service.cjs +39 -0
  93. package/dist/filesystem/filesystem-service.d.ts +32 -0
  94. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  95. package/dist/filesystem/filesystem-service.js +39 -0
  96. package/dist/filesystem/index.d.ts +1 -1
  97. package/dist/filesystem/index.d.ts.map +1 -1
  98. package/dist/filesystem/path-validator.cjs +69 -1
  99. package/dist/filesystem/path-validator.d.ts +43 -2
  100. package/dist/filesystem/path-validator.d.ts.map +1 -1
  101. package/dist/filesystem/path-validator.js +69 -1
  102. package/dist/image/define-image.cjs +146 -0
  103. package/dist/image/define-image.d.ts +71 -0
  104. package/dist/image/define-image.d.ts.map +1 -0
  105. package/dist/image/define-image.js +121 -0
  106. package/dist/image/index.cjs +32 -0
  107. package/dist/image/index.d.ts +53 -0
  108. package/dist/image/index.d.ts.map +1 -0
  109. package/dist/image/index.js +7 -0
  110. package/dist/image/types.cjs +16 -0
  111. package/dist/image/types.d.ts +231 -0
  112. package/dist/image/types.d.ts.map +1 -0
  113. package/dist/image/types.js +0 -0
  114. package/dist/index.cjs +5 -1
  115. package/dist/index.d.ts +2 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +2 -0
  118. package/dist/llm/error-codes.cjs +1 -0
  119. package/dist/llm/error-codes.d.ts +1 -0
  120. package/dist/llm/error-codes.d.ts.map +1 -1
  121. package/dist/llm/error-codes.js +1 -0
  122. package/dist/llm/errors.cjs +24 -0
  123. package/dist/llm/errors.d.ts +19 -6
  124. package/dist/llm/errors.d.ts.map +1 -1
  125. package/dist/llm/errors.js +24 -0
  126. package/dist/llm/executor/stream-processor.cjs +11 -3
  127. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  128. package/dist/llm/executor/stream-processor.js +11 -3
  129. package/dist/llm/executor/turn-executor.cjs +50 -23
  130. package/dist/llm/executor/turn-executor.d.ts +6 -5
  131. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  132. package/dist/llm/executor/turn-executor.js +50 -23
  133. package/dist/llm/formatters/vercel.cjs +6 -2
  134. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  135. package/dist/llm/formatters/vercel.js +6 -2
  136. package/dist/llm/index.cjs +18 -1
  137. package/dist/llm/index.d.ts +2 -0
  138. package/dist/llm/index.d.ts.map +1 -1
  139. package/dist/llm/index.js +14 -0
  140. package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
  141. package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
  142. package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
  143. package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
  144. package/dist/llm/providers/local/downloader.cjs +291 -0
  145. package/dist/llm/providers/local/downloader.d.ts +82 -0
  146. package/dist/llm/providers/local/downloader.d.ts.map +1 -0
  147. package/dist/llm/providers/local/downloader.js +251 -0
  148. package/dist/llm/providers/local/error-codes.cjs +57 -0
  149. package/dist/llm/providers/local/error-codes.d.ts +66 -0
  150. package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
  151. package/dist/llm/providers/local/error-codes.js +34 -0
  152. package/dist/llm/providers/local/errors.cjs +240 -0
  153. package/dist/llm/providers/local/errors.d.ts +31 -0
  154. package/dist/llm/providers/local/errors.d.ts.map +1 -0
  155. package/dist/llm/providers/local/errors.js +217 -0
  156. package/dist/llm/providers/local/gpu-detector.cjs +214 -0
  157. package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
  158. package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
  159. package/dist/llm/providers/local/gpu-detector.js +178 -0
  160. package/dist/llm/providers/local/index.cjs +147 -0
  161. package/dist/llm/providers/local/index.d.ts +21 -0
  162. package/dist/llm/providers/local/index.d.ts.map +1 -0
  163. package/dist/llm/providers/local/index.js +126 -0
  164. package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
  165. package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
  166. package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
  167. package/dist/llm/providers/local/node-llama-provider.js +176 -0
  168. package/dist/llm/providers/local/ollama-provider.cjs +230 -0
  169. package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
  170. package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
  171. package/dist/llm/providers/local/ollama-provider.js +198 -0
  172. package/dist/llm/providers/local/registry.cjs +343 -0
  173. package/dist/llm/providers/local/registry.d.ts +51 -0
  174. package/dist/llm/providers/local/registry.d.ts.map +1 -0
  175. package/dist/llm/providers/local/registry.js +312 -0
  176. package/dist/llm/providers/local/schemas.cjs +169 -0
  177. package/dist/llm/providers/local/schemas.d.ts +395 -0
  178. package/dist/llm/providers/local/schemas.d.ts.map +1 -0
  179. package/dist/llm/providers/local/schemas.js +133 -0
  180. package/dist/llm/providers/local/types.cjs +16 -0
  181. package/dist/llm/providers/local/types.d.ts +219 -0
  182. package/dist/llm/providers/local/types.d.ts.map +1 -0
  183. package/dist/llm/providers/local/types.js +0 -0
  184. package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
  185. package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
  186. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
  187. package/dist/llm/providers/openrouter-model-registry.js +309 -0
  188. package/dist/llm/registry.cjs +535 -9
  189. package/dist/llm/registry.d.ts +26 -0
  190. package/dist/llm/registry.d.ts.map +1 -1
  191. package/dist/llm/registry.js +532 -9
  192. package/dist/llm/resolver.cjs +63 -5
  193. package/dist/llm/resolver.d.ts +3 -3
  194. package/dist/llm/resolver.d.ts.map +1 -1
  195. package/dist/llm/resolver.js +69 -6
  196. package/dist/llm/schemas.cjs +90 -80
  197. package/dist/llm/schemas.d.ts +158 -22
  198. package/dist/llm/schemas.d.ts.map +1 -1
  199. package/dist/llm/schemas.js +90 -80
  200. package/dist/llm/services/factory.cjs +87 -13
  201. package/dist/llm/services/factory.d.ts +4 -1
  202. package/dist/llm/services/factory.d.ts.map +1 -1
  203. package/dist/llm/services/factory.js +85 -12
  204. package/dist/llm/services/test-utils.integration.cjs +22 -2
  205. package/dist/llm/services/test-utils.integration.d.ts +7 -1
  206. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  207. package/dist/llm/services/test-utils.integration.js +26 -3
  208. package/dist/llm/services/vercel.cjs +5 -2
  209. package/dist/llm/services/vercel.d.ts +3 -2
  210. package/dist/llm/services/vercel.d.ts.map +1 -1
  211. package/dist/llm/services/vercel.js +5 -2
  212. package/dist/llm/types.cjs +11 -1
  213. package/dist/llm/types.d.ts +1 -1
  214. package/dist/llm/types.d.ts.map +1 -1
  215. package/dist/llm/types.js +11 -1
  216. package/dist/mcp/manager.cjs +8 -0
  217. package/dist/mcp/manager.d.ts +17 -0
  218. package/dist/mcp/manager.d.ts.map +1 -1
  219. package/dist/mcp/manager.js +8 -0
  220. package/dist/mcp/mcp-client.cjs +0 -3
  221. package/dist/mcp/mcp-client.d.ts.map +1 -1
  222. package/dist/mcp/mcp-client.js +0 -3
  223. package/dist/memory/schemas.d.ts +1 -1
  224. package/dist/plugins/error-codes.cjs +3 -0
  225. package/dist/plugins/error-codes.d.ts +7 -1
  226. package/dist/plugins/error-codes.d.ts.map +1 -1
  227. package/dist/plugins/error-codes.js +3 -0
  228. package/dist/plugins/index.cjs +7 -0
  229. package/dist/plugins/index.d.ts +4 -2
  230. package/dist/plugins/index.d.ts.map +1 -1
  231. package/dist/plugins/index.js +6 -1
  232. package/dist/plugins/manager.cjs +92 -7
  233. package/dist/plugins/manager.d.ts +10 -3
  234. package/dist/plugins/manager.d.ts.map +1 -1
  235. package/dist/plugins/manager.js +92 -7
  236. package/dist/plugins/registry.cjs +63 -0
  237. package/dist/plugins/registry.d.ts +101 -0
  238. package/dist/plugins/registry.d.ts.map +1 -0
  239. package/dist/plugins/registry.js +39 -0
  240. package/dist/plugins/schemas.cjs +17 -5
  241. package/dist/plugins/schemas.d.ts +62 -5
  242. package/dist/plugins/schemas.d.ts.map +1 -1
  243. package/dist/plugins/schemas.js +15 -4
  244. package/dist/providers/base-registry.cjs +147 -0
  245. package/dist/providers/base-registry.d.ts +147 -0
  246. package/dist/providers/base-registry.d.ts.map +1 -0
  247. package/dist/providers/base-registry.js +123 -0
  248. package/dist/providers/discovery.cjs +95 -0
  249. package/dist/providers/discovery.d.ts +94 -0
  250. package/dist/providers/discovery.d.ts.map +1 -0
  251. package/dist/providers/discovery.js +70 -0
  252. package/dist/providers/index.cjs +24 -0
  253. package/dist/providers/index.d.ts +32 -0
  254. package/dist/providers/index.d.ts.map +1 -0
  255. package/dist/providers/index.js +2 -0
  256. package/dist/resources/reference-parser.cjs +3 -3
  257. package/dist/resources/reference-parser.d.ts.map +1 -1
  258. package/dist/resources/reference-parser.js +3 -3
  259. package/dist/session/chat-session.cjs +20 -3
  260. package/dist/session/chat-session.d.ts.map +1 -1
  261. package/dist/session/chat-session.js +21 -4
  262. package/dist/storage/blob/factory.cjs +8 -11
  263. package/dist/storage/blob/factory.d.ts +32 -6
  264. package/dist/storage/blob/factory.d.ts.map +1 -1
  265. package/dist/storage/blob/factory.js +8 -11
  266. package/dist/storage/blob/index.cjs +56 -0
  267. package/dist/storage/blob/index.d.ts +45 -0
  268. package/dist/storage/blob/index.d.ts.map +1 -0
  269. package/dist/storage/blob/index.js +30 -0
  270. package/dist/storage/blob/provider.cjs +16 -0
  271. package/dist/storage/blob/provider.d.ts +50 -0
  272. package/dist/storage/blob/provider.d.ts.map +1 -0
  273. package/dist/storage/blob/provider.js +0 -0
  274. package/dist/storage/blob/providers/index.cjs +31 -0
  275. package/dist/storage/blob/providers/index.d.ts +8 -0
  276. package/dist/storage/blob/providers/index.d.ts.map +1 -0
  277. package/dist/storage/blob/providers/index.js +7 -0
  278. package/dist/storage/blob/providers/local.cjs +39 -0
  279. package/dist/storage/blob/providers/local.d.ts +17 -0
  280. package/dist/storage/blob/providers/local.d.ts.map +1 -0
  281. package/dist/storage/blob/providers/local.js +16 -0
  282. package/dist/storage/blob/providers/memory.cjs +39 -0
  283. package/dist/storage/blob/providers/memory.d.ts +17 -0
  284. package/dist/storage/blob/providers/memory.d.ts.map +1 -0
  285. package/dist/storage/blob/providers/memory.js +16 -0
  286. package/dist/storage/blob/registry.cjs +50 -0
  287. package/dist/storage/blob/registry.d.ts +42 -0
  288. package/dist/storage/blob/registry.d.ts.map +1 -0
  289. package/dist/storage/blob/registry.js +26 -0
  290. package/dist/storage/blob/schemas.cjs +9 -12
  291. package/dist/storage/blob/schemas.d.ts +39 -34
  292. package/dist/storage/blob/schemas.d.ts.map +1 -1
  293. package/dist/storage/blob/schemas.js +6 -11
  294. package/dist/storage/cache/factory.cjs +8 -36
  295. package/dist/storage/cache/factory.d.ts +32 -7
  296. package/dist/storage/cache/factory.d.ts.map +1 -1
  297. package/dist/storage/cache/factory.js +8 -26
  298. package/dist/storage/cache/index.cjs +53 -0
  299. package/dist/storage/cache/index.d.ts +44 -0
  300. package/dist/storage/cache/index.d.ts.map +1 -0
  301. package/dist/storage/cache/index.js +28 -0
  302. package/dist/storage/cache/provider.cjs +16 -0
  303. package/dist/storage/cache/provider.d.ts +56 -0
  304. package/dist/storage/cache/provider.d.ts.map +1 -0
  305. package/dist/storage/cache/provider.js +0 -0
  306. package/dist/storage/cache/providers/index.cjs +31 -0
  307. package/dist/storage/cache/providers/index.d.ts +8 -0
  308. package/dist/storage/cache/providers/index.d.ts.map +1 -0
  309. package/dist/storage/cache/providers/index.js +7 -0
  310. package/dist/storage/cache/providers/memory.cjs +40 -0
  311. package/dist/storage/cache/providers/memory.d.ts +17 -0
  312. package/dist/storage/cache/providers/memory.d.ts.map +1 -0
  313. package/dist/storage/cache/providers/memory.js +17 -0
  314. package/dist/storage/cache/providers/redis.cjs +66 -0
  315. package/dist/storage/cache/providers/redis.d.ts +20 -0
  316. package/dist/storage/cache/providers/redis.d.ts.map +1 -0
  317. package/dist/storage/cache/providers/redis.js +33 -0
  318. package/dist/storage/cache/registry.cjs +50 -0
  319. package/dist/storage/cache/registry.d.ts +42 -0
  320. package/dist/storage/cache/registry.d.ts.map +1 -0
  321. package/dist/storage/cache/registry.js +26 -0
  322. package/dist/storage/cache/schemas.cjs +6 -2
  323. package/dist/storage/cache/schemas.d.ts +2 -3
  324. package/dist/storage/cache/schemas.d.ts.map +1 -1
  325. package/dist/storage/cache/schemas.js +3 -1
  326. package/dist/storage/database/factory.cjs +8 -47
  327. package/dist/storage/database/factory.d.ts +34 -8
  328. package/dist/storage/database/factory.d.ts.map +1 -1
  329. package/dist/storage/database/factory.js +8 -37
  330. package/dist/storage/database/index.cjs +58 -0
  331. package/dist/storage/database/index.d.ts +45 -0
  332. package/dist/storage/database/index.d.ts.map +1 -0
  333. package/dist/storage/database/index.js +37 -0
  334. package/dist/storage/database/provider.cjs +16 -0
  335. package/dist/storage/database/provider.d.ts +56 -0
  336. package/dist/storage/database/provider.d.ts.map +1 -0
  337. package/dist/storage/database/provider.js +0 -0
  338. package/dist/storage/database/providers/index.cjs +34 -0
  339. package/dist/storage/database/providers/index.d.ts +9 -0
  340. package/dist/storage/database/providers/index.d.ts.map +1 -0
  341. package/dist/storage/database/providers/index.js +9 -0
  342. package/dist/storage/database/providers/memory.cjs +40 -0
  343. package/dist/storage/database/providers/memory.d.ts +16 -0
  344. package/dist/storage/database/providers/memory.d.ts.map +1 -0
  345. package/dist/storage/database/providers/memory.js +17 -0
  346. package/dist/storage/database/providers/postgres.cjs +62 -0
  347. package/dist/storage/database/providers/postgres.d.ts +19 -0
  348. package/dist/storage/database/providers/postgres.d.ts.map +1 -0
  349. package/dist/storage/database/providers/postgres.js +29 -0
  350. package/dist/storage/database/providers/sqlite.cjs +66 -0
  351. package/dist/storage/database/providers/sqlite.d.ts +20 -0
  352. package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
  353. package/dist/storage/database/providers/sqlite.js +33 -0
  354. package/dist/storage/database/registry.cjs +50 -0
  355. package/dist/storage/database/registry.d.ts +42 -0
  356. package/dist/storage/database/registry.d.ts.map +1 -0
  357. package/dist/storage/database/registry.js +26 -0
  358. package/dist/storage/database/schemas.cjs +8 -2
  359. package/dist/storage/database/schemas.d.ts +3 -4
  360. package/dist/storage/database/schemas.d.ts.map +1 -1
  361. package/dist/storage/database/schemas.js +4 -1
  362. package/dist/storage/error-codes.cjs +6 -0
  363. package/dist/storage/error-codes.d.ts +7 -1
  364. package/dist/storage/error-codes.d.ts.map +1 -1
  365. package/dist/storage/error-codes.js +6 -0
  366. package/dist/storage/errors.cjs +80 -0
  367. package/dist/storage/errors.d.ts +24 -0
  368. package/dist/storage/errors.d.ts.map +1 -1
  369. package/dist/storage/errors.js +80 -0
  370. package/dist/storage/index.cjs +47 -4
  371. package/dist/storage/index.d.ts +34 -8
  372. package/dist/storage/index.d.ts.map +1 -1
  373. package/dist/storage/index.js +32 -3
  374. package/dist/storage/schemas.cjs +4 -0
  375. package/dist/storage/schemas.d.ts +17 -50
  376. package/dist/storage/schemas.d.ts.map +1 -1
  377. package/dist/storage/schemas.js +5 -1
  378. package/dist/storage/storage-manager.cjs +6 -6
  379. package/dist/storage/storage-manager.d.ts.map +1 -1
  380. package/dist/storage/storage-manager.js +3 -3
  381. package/dist/systemPrompt/in-built-prompts.cjs +7 -6
  382. package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
  383. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  384. package/dist/systemPrompt/in-built-prompts.js +6 -5
  385. package/dist/systemPrompt/registry.cjs +2 -2
  386. package/dist/systemPrompt/registry.d.ts +1 -1
  387. package/dist/systemPrompt/registry.d.ts.map +1 -1
  388. package/dist/systemPrompt/registry.js +2 -2
  389. package/dist/systemPrompt/schemas.cjs +2 -2
  390. package/dist/systemPrompt/schemas.d.ts +13 -13
  391. package/dist/systemPrompt/schemas.js +2 -2
  392. package/dist/tools/custom-tool-registry.cjs +64 -0
  393. package/dist/tools/custom-tool-registry.d.ts +120 -0
  394. package/dist/tools/custom-tool-registry.d.ts.map +1 -0
  395. package/dist/tools/custom-tool-registry.js +40 -0
  396. package/dist/tools/custom-tool-schema-registry.cjs +164 -0
  397. package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
  398. package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
  399. package/dist/tools/custom-tool-schema-registry.js +140 -0
  400. package/dist/tools/error-codes.cjs +3 -0
  401. package/dist/tools/error-codes.d.ts +4 -1
  402. package/dist/tools/error-codes.d.ts.map +1 -1
  403. package/dist/tools/error-codes.js +3 -0
  404. package/dist/tools/errors.cjs +41 -0
  405. package/dist/tools/errors.d.ts +17 -0
  406. package/dist/tools/errors.d.ts.map +1 -1
  407. package/dist/tools/errors.js +41 -0
  408. package/dist/tools/index.cjs +13 -1
  409. package/dist/tools/index.d.ts +4 -0
  410. package/dist/tools/index.d.ts.map +1 -1
  411. package/dist/tools/index.js +11 -1
  412. package/dist/tools/internal-tools/constants.cjs +3 -9
  413. package/dist/tools/internal-tools/constants.d.ts +1 -1
  414. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  415. package/dist/tools/internal-tools/constants.js +3 -9
  416. package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
  417. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
  418. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
  419. package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
  420. package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
  421. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
  422. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
  423. package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
  424. package/dist/tools/internal-tools/provider.cjs +150 -23
  425. package/dist/tools/internal-tools/provider.d.ts +55 -10
  426. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  427. package/dist/tools/internal-tools/provider.js +150 -23
  428. package/dist/tools/internal-tools/registry.cjs +18 -43
  429. package/dist/tools/internal-tools/registry.d.ts +4 -4
  430. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  431. package/dist/tools/internal-tools/registry.js +18 -43
  432. package/dist/tools/schemas.cjs +20 -0
  433. package/dist/tools/schemas.d.ts +43 -1
  434. package/dist/tools/schemas.d.ts.map +1 -1
  435. package/dist/tools/schemas.js +16 -0
  436. package/dist/tools/tool-manager.cjs +140 -13
  437. package/dist/tools/tool-manager.d.ts +22 -3
  438. package/dist/tools/tool-manager.d.ts.map +1 -1
  439. package/dist/tools/tool-manager.js +140 -13
  440. package/dist/tools/types.d.ts +43 -0
  441. package/dist/tools/types.d.ts.map +1 -1
  442. package/dist/utils/api-key-resolver.cjs +19 -1
  443. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  444. package/dist/utils/api-key-resolver.js +19 -1
  445. package/dist/utils/index.cjs +0 -2
  446. package/dist/utils/index.d.ts +0 -1
  447. package/dist/utils/index.d.ts.map +1 -1
  448. package/dist/utils/index.js +0 -1
  449. package/dist/utils/redactor.cjs +18 -3
  450. package/dist/utils/redactor.d.ts +0 -7
  451. package/dist/utils/redactor.d.ts.map +1 -1
  452. package/dist/utils/redactor.js +18 -3
  453. package/dist/utils/service-initializer.cjs +9 -35
  454. package/dist/utils/service-initializer.d.ts.map +1 -1
  455. package/dist/utils/service-initializer.js +9 -35
  456. package/package.json +5 -2
  457. package/dist/context/compression/overflow.d.ts.map +0 -1
  458. package/dist/context/compression/reactive-overflow.d.ts.map +0 -1
  459. package/dist/context/compression/types.d.ts.map +0 -1
  460. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -130
  461. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
  462. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
  463. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -97
  464. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
  465. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
  466. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
  467. package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
  468. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -127
  469. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
  470. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
  471. package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -104
  472. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -70
  473. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
  474. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
  475. package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -47
  476. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -86
  477. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
  478. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
  479. package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -63
  480. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
  481. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
  482. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
  483. package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
  484. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -63
  485. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
  486. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
  487. package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -40
  488. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -124
  489. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
  490. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
  491. package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -103
  492. package/dist/utils/env-file.cjs +0 -118
  493. package/dist/utils/env-file.d.ts +0 -5
  494. package/dist/utils/env-file.d.ts.map +0 -1
  495. package/dist/utils/env-file.js +0 -85
  496. /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
  497. /package/dist/context/{compression → compaction}/types.cjs +0 -0
@@ -24,60 +24,35 @@ __export(registry_exports, {
24
24
  module.exports = __toCommonJS(registry_exports);
25
25
  var import_search_history_tool = require("./implementations/search-history-tool.js");
26
26
  var import_ask_user_tool = require("./implementations/ask-user-tool.js");
27
- var import_read_file_tool = require("./implementations/read-file-tool.js");
28
- var import_glob_files_tool = require("./implementations/glob-files-tool.js");
29
- var import_grep_content_tool = require("./implementations/grep-content-tool.js");
30
- var import_write_file_tool = require("./implementations/write-file-tool.js");
31
- var import_edit_file_tool = require("./implementations/edit-file-tool.js");
32
- var import_bash_exec_tool = require("./implementations/bash-exec-tool.js");
33
- var import_bash_output_tool = require("./implementations/bash-output-tool.js");
34
- var import_kill_process_tool = require("./implementations/kill-process-tool.js");
35
27
  var import_delegate_to_url_tool = require("./implementations/delegate-to-url-tool.js");
28
+ var import_list_resources_tool = require("./implementations/list-resources-tool.js");
29
+ var import_get_resource_tool = require("./implementations/get-resource-tool.js");
36
30
  const INTERNAL_TOOL_REGISTRY = {
37
31
  search_history: {
38
32
  factory: (services) => (0, import_search_history_tool.createSearchHistoryTool)(services.searchService),
39
- requiredServices: ["searchService"]
33
+ requiredServices: ["searchService"],
34
+ description: "Search through conversation history across sessions"
40
35
  },
41
36
  ask_user: {
42
37
  factory: (services) => (0, import_ask_user_tool.createAskUserTool)(services.approvalManager),
43
38
  requiredServices: ["approvalManager"],
44
- requiredFeatures: ["elicitation"]
45
- },
46
- read_file: {
47
- factory: (services) => (0, import_read_file_tool.createReadFileTool)(services.fileSystemService),
48
- requiredServices: ["fileSystemService"]
49
- },
50
- glob_files: {
51
- factory: (services) => (0, import_glob_files_tool.createGlobFilesTool)(services.fileSystemService),
52
- requiredServices: ["fileSystemService"]
53
- },
54
- grep_content: {
55
- factory: (services) => (0, import_grep_content_tool.createGrepContentTool)(services.fileSystemService),
56
- requiredServices: ["fileSystemService"]
57
- },
58
- write_file: {
59
- factory: (services) => (0, import_write_file_tool.createWriteFileTool)(services.fileSystemService),
60
- requiredServices: ["fileSystemService"]
61
- },
62
- edit_file: {
63
- factory: (services) => (0, import_edit_file_tool.createEditFileTool)(services.fileSystemService),
64
- requiredServices: ["fileSystemService"]
65
- },
66
- bash_exec: {
67
- factory: (services) => (0, import_bash_exec_tool.createBashExecTool)(services.processService),
68
- requiredServices: ["processService"]
69
- },
70
- bash_output: {
71
- factory: (services) => (0, import_bash_output_tool.createBashOutputTool)(services.processService),
72
- requiredServices: ["processService"]
73
- },
74
- kill_process: {
75
- factory: (services) => (0, import_kill_process_tool.createKillProcessTool)(services.processService),
76
- requiredServices: ["processService"]
39
+ requiredFeatures: ["elicitation"],
40
+ description: "Collect structured input from the user through a form interface"
77
41
  },
78
42
  delegate_to_url: {
79
43
  factory: (_services) => (0, import_delegate_to_url_tool.createDelegateToUrlTool)(),
80
- requiredServices: []
44
+ requiredServices: [],
45
+ description: "Delegate tasks to another A2A-compliant agent via URL"
46
+ },
47
+ list_resources: {
48
+ factory: (services) => (0, import_list_resources_tool.createListResourcesTool)(services.resourceManager),
49
+ requiredServices: ["resourceManager"],
50
+ description: "List available resources (images, files, etc.)"
51
+ },
52
+ get_resource: {
53
+ factory: (services) => (0, import_get_resource_tool.createGetResourceTool)(services.resourceManager),
54
+ requiredServices: ["resourceManager"],
55
+ description: "Access a stored resource to get URLs or metadata"
81
56
  }
82
57
  };
83
58
  function getInternalToolInfo(toolName) {
@@ -1,8 +1,7 @@
1
1
  import { InternalTool } from '../types.js';
2
2
  import { SearchService } from '../../search/index.js';
3
3
  import { ApprovalManager } from '../../approval/manager.js';
4
- import { FileSystemService } from '../../filesystem/index.js';
5
- import { ProcessService } from '../../process/index.js';
4
+ import { ResourceManager } from '../../resources/manager.js';
6
5
  import type { KnownInternalTool } from './constants.js';
7
6
  /**
8
7
  * Agent features that tools can depend on.
@@ -30,8 +29,7 @@ export type AgentFeature = 'elicitation';
30
29
  export interface InternalToolsServices {
31
30
  searchService?: SearchService;
32
31
  approvalManager?: ApprovalManager;
33
- fileSystemService?: FileSystemService;
34
- processService?: ProcessService;
32
+ resourceManager?: ResourceManager;
35
33
  }
36
34
  /**
37
35
  * Internal tool factory function type
@@ -44,6 +42,8 @@ export interface InternalToolRegistryEntry {
44
42
  factory: InternalToolFactory;
45
43
  requiredServices: readonly (keyof InternalToolsServices)[];
46
44
  requiredFeatures?: readonly AgentFeature[];
45
+ /** Short description for discovery/UI purposes */
46
+ description: string;
47
47
  }
48
48
  /**
49
49
  * Internal tool registry - Must match names array exactly (TypeScript enforces this)
@@ -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;;;;;;;;;;;;;;;;;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
+ {"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,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAM7D,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,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC;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;IAC3C,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,EAAE,yBAAyB,CA8BvF,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,yBAAyB,CAE1F"}
@@ -1,60 +1,35 @@
1
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
- import { createReadFileTool } from "./implementations/read-file-tool.js";
5
- import { createGlobFilesTool } from "./implementations/glob-files-tool.js";
6
- import { createGrepContentTool } from "./implementations/grep-content-tool.js";
7
- import { createWriteFileTool } from "./implementations/write-file-tool.js";
8
- import { createEditFileTool } from "./implementations/edit-file-tool.js";
9
- import { createBashExecTool } from "./implementations/bash-exec-tool.js";
10
- import { createBashOutputTool } from "./implementations/bash-output-tool.js";
11
- import { createKillProcessTool } from "./implementations/kill-process-tool.js";
12
4
  import { createDelegateToUrlTool } from "./implementations/delegate-to-url-tool.js";
5
+ import { createListResourcesTool } from "./implementations/list-resources-tool.js";
6
+ import { createGetResourceTool } from "./implementations/get-resource-tool.js";
13
7
  const INTERNAL_TOOL_REGISTRY = {
14
8
  search_history: {
15
9
  factory: (services) => createSearchHistoryTool(services.searchService),
16
- requiredServices: ["searchService"]
10
+ requiredServices: ["searchService"],
11
+ description: "Search through conversation history across sessions"
17
12
  },
18
13
  ask_user: {
19
14
  factory: (services) => createAskUserTool(services.approvalManager),
20
15
  requiredServices: ["approvalManager"],
21
- requiredFeatures: ["elicitation"]
22
- },
23
- read_file: {
24
- factory: (services) => createReadFileTool(services.fileSystemService),
25
- requiredServices: ["fileSystemService"]
26
- },
27
- glob_files: {
28
- factory: (services) => createGlobFilesTool(services.fileSystemService),
29
- requiredServices: ["fileSystemService"]
30
- },
31
- grep_content: {
32
- factory: (services) => createGrepContentTool(services.fileSystemService),
33
- requiredServices: ["fileSystemService"]
34
- },
35
- write_file: {
36
- factory: (services) => createWriteFileTool(services.fileSystemService),
37
- requiredServices: ["fileSystemService"]
38
- },
39
- edit_file: {
40
- factory: (services) => createEditFileTool(services.fileSystemService),
41
- requiredServices: ["fileSystemService"]
42
- },
43
- bash_exec: {
44
- factory: (services) => createBashExecTool(services.processService),
45
- requiredServices: ["processService"]
46
- },
47
- bash_output: {
48
- factory: (services) => createBashOutputTool(services.processService),
49
- requiredServices: ["processService"]
50
- },
51
- kill_process: {
52
- factory: (services) => createKillProcessTool(services.processService),
53
- requiredServices: ["processService"]
16
+ requiredFeatures: ["elicitation"],
17
+ description: "Collect structured input from the user through a form interface"
54
18
  },
55
19
  delegate_to_url: {
56
20
  factory: (_services) => createDelegateToUrlTool(),
57
- requiredServices: []
21
+ requiredServices: [],
22
+ description: "Delegate tasks to another A2A-compliant agent via URL"
23
+ },
24
+ list_resources: {
25
+ factory: (services) => createListResourcesTool(services.resourceManager),
26
+ requiredServices: ["resourceManager"],
27
+ description: "List available resources (images, files, etc.)"
28
+ },
29
+ get_resource: {
30
+ factory: (services) => createGetResourceTool(services.resourceManager),
31
+ requiredServices: ["resourceManager"],
32
+ description: "Access a stored resource to get URLs or metadata"
58
33
  }
59
34
  };
60
35
  function getInternalToolInfo(toolName) {
@@ -19,6 +19,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  var schemas_exports = {};
20
20
  __export(schemas_exports, {
21
21
  ALLOWED_TOOLS_STORAGE_TYPES: () => ALLOWED_TOOLS_STORAGE_TYPES,
22
+ CustomToolConfigSchema: () => CustomToolConfigSchema,
23
+ CustomToolConfigSchemaForOpenAPI: () => CustomToolConfigSchemaForOpenAPI,
24
+ CustomToolsSchema: () => CustomToolsSchema,
25
+ CustomToolsSchemaForOpenAPI: () => CustomToolsSchemaForOpenAPI,
22
26
  DEFAULT_ALLOWED_TOOLS_STORAGE: () => DEFAULT_ALLOWED_TOOLS_STORAGE,
23
27
  DEFAULT_TOOL_CONFIRMATION_MODE: () => DEFAULT_TOOL_CONFIRMATION_MODE,
24
28
  ElicitationConfigSchema: () => ElicitationConfigSchema,
@@ -32,6 +36,7 @@ __export(schemas_exports, {
32
36
  module.exports = __toCommonJS(schemas_exports);
33
37
  var import_zod = require("zod");
34
38
  var import_constants = require("./internal-tools/constants.js");
39
+ var import_custom_tool_schema_registry = require("./custom-tool-schema-registry.js");
35
40
  const TOOL_CONFIRMATION_MODES = ["manual", "auto-approve", "auto-deny"];
36
41
  const ALLOWED_TOOLS_STORAGE_TYPES = ["memory", "storage"];
37
42
  const DEFAULT_TOOL_CONFIRMATION_MODE = "auto-approve";
@@ -39,6 +44,17 @@ const DEFAULT_ALLOWED_TOOLS_STORAGE = "storage";
39
44
  const InternalToolsSchema = import_zod.z.array(import_zod.z.enum(import_constants.INTERNAL_TOOL_NAMES).describe("Available internal tool names")).default([]).describe(
40
45
  `Array of internal tool names to enable. Empty array = disabled. Available tools: ${import_constants.INTERNAL_TOOL_NAMES.join(", ")}`
41
46
  );
47
+ function getCustomToolConfigSchema() {
48
+ return import_custom_tool_schema_registry.customToolSchemaRegistry.createUnionSchema();
49
+ }
50
+ const CustomToolConfigSchema = import_zod.z.lazy(() => getCustomToolConfigSchema());
51
+ const CustomToolConfigSchemaForOpenAPI = import_zod.z.object({
52
+ type: import_zod.z.string().describe("Tool provider type identifier")
53
+ }).passthrough().describe("Custom tool provider configuration (generic representation for OpenAPI docs)");
54
+ const CustomToolsSchema = import_zod.z.array(CustomToolConfigSchema).default([]).describe(
55
+ "Array of custom tool provider configurations. Providers are validated against registered schemas."
56
+ );
57
+ const CustomToolsSchemaForOpenAPI = import_zod.z.array(CustomToolConfigSchemaForOpenAPI).default([]).describe("Array of custom tool provider configurations");
42
58
  const ToolPoliciesSchema = import_zod.z.object({
43
59
  alwaysAllow: import_zod.z.array(import_zod.z.string()).default([]).describe(
44
60
  'Tools that never require approval (low-risk). Use full qualified names (e.g., "internal--ask_user", "mcp--filesystem--read_file")'
@@ -80,6 +96,10 @@ const ToolsConfigSchema = import_zod.z.record(ToolLimitsSchema).describe("Per-to
80
96
  // Annotate the CommonJS export names for ESM import in node:
81
97
  0 && (module.exports = {
82
98
  ALLOWED_TOOLS_STORAGE_TYPES,
99
+ CustomToolConfigSchema,
100
+ CustomToolConfigSchemaForOpenAPI,
101
+ CustomToolsSchema,
102
+ CustomToolsSchemaForOpenAPI,
83
103
  DEFAULT_ALLOWED_TOOLS_STORAGE,
84
104
  DEFAULT_TOOL_CONFIRMATION_MODE,
85
105
  ElicitationConfigSchema,
@@ -5,8 +5,50 @@ export declare const ALLOWED_TOOLS_STORAGE_TYPES: readonly ["memory", "storage"]
5
5
  export type AllowedToolsStorageType = (typeof ALLOWED_TOOLS_STORAGE_TYPES)[number];
6
6
  export declare const DEFAULT_TOOL_CONFIRMATION_MODE: ToolConfirmationMode;
7
7
  export declare const DEFAULT_ALLOWED_TOOLS_STORAGE: AllowedToolsStorageType;
8
- export declare const InternalToolsSchema: z.ZodDefault<z.ZodArray<z.ZodEnum<["search_history", "ask_user", "read_file", "glob_files", "grep_content", "write_file", "edit_file", "bash_exec", "bash_output", "kill_process", "delegate_to_url"]>, "many">>;
8
+ export declare const InternalToolsSchema: z.ZodDefault<z.ZodArray<z.ZodEnum<["search_history", "ask_user", "delegate_to_url", "list_resources", "get_resource"]>, "many">>;
9
9
  export type InternalToolsConfig = z.output<typeof InternalToolsSchema>;
10
+ /**
11
+ * Custom tool configuration schema.
12
+ *
13
+ * This schema is built dynamically from registered providers:
14
+ * - If providers are registered → discriminated union with full validation
15
+ * - If no providers registered → passthrough schema (backward compatible)
16
+ *
17
+ * Provider-specific fields are validated based on their registered schemas.
18
+ */
19
+ export declare const CustomToolConfigSchema: z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>;
20
+ export type CustomToolConfig = z.output<typeof CustomToolConfigSchema>;
21
+ /**
22
+ * OpenAPI-safe version of CustomToolConfigSchema.
23
+ * Uses a generic object schema instead of lazy loading for OpenAPI compatibility.
24
+ */
25
+ export declare const CustomToolConfigSchemaForOpenAPI: z.ZodObject<{
26
+ type: z.ZodString;
27
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
28
+ type: z.ZodString;
29
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
30
+ type: z.ZodString;
31
+ }, z.ZodTypeAny, "passthrough">>;
32
+ /**
33
+ * Array of custom tool provider configurations.
34
+ *
35
+ * Custom tools must be registered via customToolRegistry before loading agent config
36
+ * for early validation to work. If providers are not registered, validation will
37
+ * fall back to runtime validation by the provider.
38
+ */
39
+ export declare const CustomToolsSchema: z.ZodDefault<z.ZodArray<z.ZodLazy<z.ZodType<any, z.ZodTypeDef, any>>, "many">>;
40
+ export type CustomToolsConfig = z.output<typeof CustomToolsSchema>;
41
+ /**
42
+ * OpenAPI-safe version of CustomToolsSchema.
43
+ * Uses generic object schema for OpenAPI compatibility.
44
+ */
45
+ export declare const CustomToolsSchemaForOpenAPI: z.ZodDefault<z.ZodArray<z.ZodObject<{
46
+ type: z.ZodString;
47
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
48
+ type: z.ZodString;
49
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
50
+ type: z.ZodString;
51
+ }, z.ZodTypeAny, "passthrough">>, "many">>;
10
52
  export declare const ToolPoliciesSchema: z.ZodDefault<z.ZodObject<{
11
53
  alwaysAllow: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
12
54
  alwaysDeny: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,uBAAuB,kDAAmD,CAAC;AACxF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,2BAA2B,gCAAiC,CAAC;AAC1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnF,eAAO,MAAM,8BAA8B,EAAE,oBAAqC,CAAC;AACnF,eAAO,MAAM,6BAA6B,EAAE,uBAAmC,CAAC;AAIhF,eAAO,MAAM,mBAAmB,kNAK3B,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGvE,eAAO,MAAM,kBAAkB;;;;;;;;;GAiB2B,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE/D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BoB,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAG5F,eAAO,MAAM,uBAAuB;;;;;;;;;EAoB/B,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGlF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAShB,CAAC;AAEd,eAAO,MAAM,iBAAiB;;;;;;;;;;;;GAEgB,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,uBAAuB,kDAAmD,CAAC;AACxF,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,2BAA2B,gCAAiC,CAAC;AAC1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnF,eAAO,MAAM,8BAA8B,EAAE,oBAAqC,CAAC;AACnF,eAAO,MAAM,6BAA6B,EAAE,uBAAmC,CAAC;AAIhF,eAAO,MAAM,mBAAmB,kIAK3B,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAkBvE;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,8CAA4C,CAAC;AAEhF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,gCAAgC;;;;;;gCAKgD,CAAC;AAE9F;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,gFAKzB,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;0CAGqB,CAAC;AAG9D,eAAO,MAAM,kBAAkB;;;;;;;;;GAiB2B,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE/D,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BoB,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAG5F,eAAO,MAAM,uBAAuB;;;;;;;;;EAoB/B,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGlF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAShB,CAAC;AAEd,eAAO,MAAM,iBAAiB;;;;;;;;;;;;GAEgB,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import "../chunk-PTJYTZNU.js";
2
2
  import { z } from "zod";
3
3
  import { INTERNAL_TOOL_NAMES } from "./internal-tools/constants.js";
4
+ import { customToolSchemaRegistry } from "./custom-tool-schema-registry.js";
4
5
  const TOOL_CONFIRMATION_MODES = ["manual", "auto-approve", "auto-deny"];
5
6
  const ALLOWED_TOOLS_STORAGE_TYPES = ["memory", "storage"];
6
7
  const DEFAULT_TOOL_CONFIRMATION_MODE = "auto-approve";
@@ -8,6 +9,17 @@ const DEFAULT_ALLOWED_TOOLS_STORAGE = "storage";
8
9
  const InternalToolsSchema = z.array(z.enum(INTERNAL_TOOL_NAMES).describe("Available internal tool names")).default([]).describe(
9
10
  `Array of internal tool names to enable. Empty array = disabled. Available tools: ${INTERNAL_TOOL_NAMES.join(", ")}`
10
11
  );
12
+ function getCustomToolConfigSchema() {
13
+ return customToolSchemaRegistry.createUnionSchema();
14
+ }
15
+ const CustomToolConfigSchema = z.lazy(() => getCustomToolConfigSchema());
16
+ const CustomToolConfigSchemaForOpenAPI = z.object({
17
+ type: z.string().describe("Tool provider type identifier")
18
+ }).passthrough().describe("Custom tool provider configuration (generic representation for OpenAPI docs)");
19
+ const CustomToolsSchema = z.array(CustomToolConfigSchema).default([]).describe(
20
+ "Array of custom tool provider configurations. Providers are validated against registered schemas."
21
+ );
22
+ const CustomToolsSchemaForOpenAPI = z.array(CustomToolConfigSchemaForOpenAPI).default([]).describe("Array of custom tool provider configurations");
11
23
  const ToolPoliciesSchema = z.object({
12
24
  alwaysAllow: z.array(z.string()).default([]).describe(
13
25
  'Tools that never require approval (low-risk). Use full qualified names (e.g., "internal--ask_user", "mcp--filesystem--read_file")'
@@ -48,6 +60,10 @@ const ToolLimitsSchema = z.object({
48
60
  const ToolsConfigSchema = z.record(ToolLimitsSchema).describe("Per-tool configuration limits");
49
61
  export {
50
62
  ALLOWED_TOOLS_STORAGE_TYPES,
63
+ CustomToolConfigSchema,
64
+ CustomToolConfigSchemaForOpenAPI,
65
+ CustomToolsSchema,
66
+ CustomToolsSchemaForOpenAPI,
51
67
  DEFAULT_ALLOWED_TOOLS_STORAGE,
52
68
  DEFAULT_TOOL_CONFIRMATION_MODE,
53
69
  ElicitationConfigSchema,
@@ -99,6 +99,7 @@ let _ToolManager = class _ToolManager {
99
99
  // Tool source prefixing - ALL tools get prefixed by source
100
100
  static MCP_TOOL_PREFIX = "mcp--";
101
101
  static INTERNAL_TOOL_PREFIX = "internal--";
102
+ static CUSTOM_TOOL_PREFIX = "custom--";
102
103
  // Tool caching for performance
103
104
  toolsCache = {};
104
105
  cacheValid = false;
@@ -111,14 +112,15 @@ let _ToolManager = class _ToolManager {
111
112
  this.agentEventBus = agentEventBus;
112
113
  this.toolPolicies = toolPolicies;
113
114
  this.logger = logger.createChild(import_types2.DextoLogComponent.TOOLS);
114
- if (options?.internalToolsConfig && options.internalToolsConfig.length > 0) {
115
+ if (options?.internalToolsConfig && options.internalToolsConfig.length > 0 || options?.customToolsConfig && options.customToolsConfig.length > 0) {
115
116
  const internalToolsServices = {
116
117
  ...options.internalToolsServices,
117
118
  approvalManager
118
119
  };
119
120
  this.internalToolsProvider = new import_provider.InternalToolsProvider(
120
121
  internalToolsServices,
121
- options.internalToolsConfig,
122
+ options.internalToolsConfig || [],
123
+ options.customToolsConfig || [],
122
124
  this.logger
123
125
  );
124
126
  }
@@ -143,6 +145,16 @@ let _ToolManager = class _ToolManager {
143
145
  this.stateManager = stateManager;
144
146
  this.logger.debug("Plugin support configured for ToolManager");
145
147
  }
148
+ /**
149
+ * Set agent reference for custom tools (called after construction to avoid circular dependencies)
150
+ * Must be called before initialize() if custom tools are configured
151
+ */
152
+ setAgent(agent) {
153
+ if (this.internalToolsProvider) {
154
+ this.internalToolsProvider.setAgent(agent);
155
+ this.logger.debug("Agent reference configured for custom tools");
156
+ }
157
+ }
146
158
  /**
147
159
  * Invalidate the tools cache when tool sources change
148
160
  */
@@ -174,7 +186,7 @@ let _ToolManager = class _ToolManager {
174
186
  * Check if a tool name represents a bash execution tool
175
187
  */
176
188
  isBashTool(toolName) {
177
- return toolName === "bash_exec" || toolName === "internal--bash_exec";
189
+ return toolName === "bash_exec" || toolName === "internal--bash_exec" || toolName === "custom--bash_exec";
178
190
  }
179
191
  /**
180
192
  * Check if a bash command is covered by any approved pattern.
@@ -228,6 +240,7 @@ let _ToolManager = class _ToolManager {
228
240
  const allTools = {};
229
241
  let mcpTools = {};
230
242
  let internalTools = {};
243
+ let customTools = {};
231
244
  try {
232
245
  mcpTools = await this.mcpManager.getAllTools();
233
246
  } catch (error) {
@@ -237,13 +250,21 @@ let _ToolManager = class _ToolManager {
237
250
  mcpTools = {};
238
251
  }
239
252
  try {
240
- internalTools = this.internalToolsProvider?.getAllTools() || {};
253
+ internalTools = this.internalToolsProvider?.getInternalTools() || {};
241
254
  } catch (error) {
242
255
  this.logger.error(
243
256
  `Failed to get internal tools: ${error instanceof Error ? error.message : String(error)}`
244
257
  );
245
258
  internalTools = {};
246
259
  }
260
+ try {
261
+ customTools = this.internalToolsProvider?.getCustomTools() || {};
262
+ } catch (error) {
263
+ this.logger.error(
264
+ `Failed to get custom tools: ${error instanceof Error ? error.message : String(error)}`
265
+ );
266
+ customTools = {};
267
+ }
247
268
  for (const [toolName, toolDef] of Object.entries(internalTools)) {
248
269
  const qualifiedName = `${_ToolManager.INTERNAL_TOOL_PREFIX}${toolName}`;
249
270
  allTools[qualifiedName] = {
@@ -252,6 +273,14 @@ let _ToolManager = class _ToolManager {
252
273
  description: `${toolDef.description || "No description provided"} (internal tool)`
253
274
  };
254
275
  }
276
+ for (const [toolName, toolDef] of Object.entries(customTools)) {
277
+ const qualifiedName = `${_ToolManager.CUSTOM_TOOL_PREFIX}${toolName}`;
278
+ allTools[qualifiedName] = {
279
+ ...toolDef,
280
+ name: qualifiedName,
281
+ description: `${toolDef.description || "No description provided"} (custom tool)`
282
+ };
283
+ }
255
284
  for (const [toolName, toolDef] of Object.entries(mcpTools)) {
256
285
  const qualifiedName = `${_ToolManager.MCP_TOOL_PREFIX}${toolName}`;
257
286
  allTools[qualifiedName] = {
@@ -263,8 +292,9 @@ let _ToolManager = class _ToolManager {
263
292
  const totalTools = Object.keys(allTools).length;
264
293
  const mcpCount = Object.keys(mcpTools).length;
265
294
  const internalCount = Object.keys(internalTools).length;
295
+ const customCount = Object.keys(customTools).length;
266
296
  this.logger.debug(
267
- `\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP \u2192 ${_ToolManager.MCP_TOOL_PREFIX}*, ${internalCount} internal \u2192 ${_ToolManager.INTERNAL_TOOL_PREFIX}*)`
297
+ `\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP, ${internalCount} internal, ${customCount} custom)`
268
298
  );
269
299
  return allTools;
270
300
  }
@@ -365,14 +395,30 @@ let _ToolManager = class _ToolManager {
365
395
  sessionId,
366
396
  abortSignal
367
397
  );
398
+ } else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
399
+ this.logger.debug(`\u{1F527} Detected custom tool: '${toolName}'`);
400
+ const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
401
+ if (actualToolName.length === 0) {
402
+ throw import_errors.ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
403
+ }
404
+ if (!this.internalToolsProvider) {
405
+ throw import_errors.ToolError.internalToolsNotInitialized(toolName);
406
+ }
407
+ this.logger.debug(`\u{1F3AF} Custom routing: '${toolName}' -> '${actualToolName}'`);
408
+ result = await this.internalToolsProvider.executeTool(
409
+ actualToolName,
410
+ args,
411
+ sessionId,
412
+ abortSignal
413
+ );
368
414
  } else {
369
415
  this.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
370
416
  const stats = await this.getToolStats();
371
417
  this.logger.error(
372
- `\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*' or '${_ToolManager.INTERNAL_TOOL_PREFIX}*')`
418
+ `\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*', '${_ToolManager.INTERNAL_TOOL_PREFIX}*', or '${_ToolManager.CUSTOM_TOOL_PREFIX}*')`
373
419
  );
374
420
  this.logger.debug(
375
- `Available: ${stats.mcp} MCP tools, ${stats.internal} internal tools`
421
+ `Available: ${stats.mcp} MCP, ${stats.internal} internal, ${stats.custom} custom tools`
376
422
  );
377
423
  throw import_errors.ToolError.notFound(toolName);
378
424
  }
@@ -438,7 +484,11 @@ let _ToolManager = class _ToolManager {
438
484
  }
439
485
  if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
440
486
  const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
441
- return this.internalToolsProvider?.hasTool(actualToolName) ?? false;
487
+ return this.internalToolsProvider?.hasInternalTool(actualToolName) ?? false;
488
+ }
489
+ if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
490
+ const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
491
+ return this.internalToolsProvider?.hasCustomTool(actualToolName) ?? false;
442
492
  }
443
493
  return false;
444
494
  }
@@ -448,6 +498,7 @@ let _ToolManager = class _ToolManager {
448
498
  async getToolStats() {
449
499
  let mcpTools = {};
450
500
  let internalTools = {};
501
+ let customTools = {};
451
502
  try {
452
503
  mcpTools = await this.mcpManager.getAllTools();
453
504
  } catch (error) {
@@ -457,24 +508,33 @@ let _ToolManager = class _ToolManager {
457
508
  mcpTools = {};
458
509
  }
459
510
  try {
460
- internalTools = this.internalToolsProvider?.getAllTools() || {};
511
+ internalTools = this.internalToolsProvider?.getInternalTools() || {};
461
512
  } catch (error) {
462
513
  this.logger.error(
463
514
  `Failed to get internal tools for stats: ${error instanceof Error ? error.message : String(error)}`
464
515
  );
465
516
  internalTools = {};
466
517
  }
518
+ try {
519
+ customTools = this.internalToolsProvider?.getCustomTools() || {};
520
+ } catch (error) {
521
+ this.logger.error(
522
+ `Failed to get custom tools for stats: ${error instanceof Error ? error.message : String(error)}`
523
+ );
524
+ customTools = {};
525
+ }
467
526
  const mcpCount = Object.keys(mcpTools).length;
468
527
  const internalCount = Object.keys(internalTools).length;
528
+ const customCount = Object.keys(customTools).length;
469
529
  return {
470
- total: mcpCount + internalCount,
471
- // No conflicts with universal prefixing
530
+ total: mcpCount + internalCount + customCount,
472
531
  mcp: mcpCount,
473
- internal: internalCount
532
+ internal: internalCount,
533
+ custom: customCount
474
534
  };
475
535
  }
476
536
  /**
477
- * Get the source of a tool (mcp, internal, or unknown)
537
+ * Get the source of a tool (mcp, internal, custom, or unknown)
478
538
  * @param toolName The name of the tool to check
479
539
  * @returns The source of the tool
480
540
  */
@@ -485,6 +545,9 @@ let _ToolManager = class _ToolManager {
485
545
  if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX) && toolName.length > _ToolManager.INTERNAL_TOOL_PREFIX.length) {
486
546
  return "internal";
487
547
  }
548
+ if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX) && toolName.length > _ToolManager.CUSTOM_TOOL_PREFIX.length) {
549
+ return "custom";
550
+ }
488
551
  return "unknown";
489
552
  }
490
553
  /**
@@ -540,6 +603,62 @@ let _ToolManager = class _ToolManager {
540
603
  (pattern) => this.matchesToolPolicy(toolName, pattern)
541
604
  );
542
605
  }
606
+ /**
607
+ * Check if a tool has a custom approval override and handle it.
608
+ * Tools can implement getApprovalOverride() to request specialized approval flows
609
+ * (e.g., directory access approval for file tools) instead of default tool confirmation.
610
+ *
611
+ * @param toolName The fully qualified tool name
612
+ * @param args The tool arguments
613
+ * @param sessionId Optional session ID
614
+ * @returns { handled: true } if custom approval was processed, { handled: false } to continue normal flow
615
+ */
616
+ async checkCustomApprovalOverride(toolName, args, sessionId) {
617
+ let actualToolName;
618
+ if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
619
+ actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
620
+ } else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
621
+ actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
622
+ }
623
+ if (!actualToolName || !this.internalToolsProvider) {
624
+ return { handled: false };
625
+ }
626
+ const tool = this.internalToolsProvider.getTool(actualToolName);
627
+ if (!tool?.getApprovalOverride) {
628
+ return { handled: false };
629
+ }
630
+ const approvalRequest = tool.getApprovalOverride(args);
631
+ if (!approvalRequest) {
632
+ return { handled: false };
633
+ }
634
+ this.logger.debug(
635
+ `Tool '${toolName}' requested custom approval: type=${approvalRequest.type}`
636
+ );
637
+ if (sessionId && !approvalRequest.sessionId) {
638
+ approvalRequest.sessionId = sessionId;
639
+ }
640
+ const response = await this.approvalManager.requestApproval(approvalRequest);
641
+ if (response.status === import_types3.ApprovalStatus.APPROVED) {
642
+ if (tool.onApprovalGranted) {
643
+ tool.onApprovalGranted(response);
644
+ }
645
+ this.logger.info(
646
+ `Custom approval granted for '${toolName}', type=${approvalRequest.type}, session=${sessionId ?? "global"}`
647
+ );
648
+ return { handled: true };
649
+ }
650
+ this.logger.info(
651
+ `Custom approval denied for '${toolName}', type=${approvalRequest.type}, reason=${response.reason ?? "unknown"}`
652
+ );
653
+ if (approvalRequest.type === "directory_access") {
654
+ const metadata = approvalRequest.metadata;
655
+ throw import_errors.ToolError.directoryAccessDenied(
656
+ metadata?.parentDir ?? "unknown directory",
657
+ sessionId
658
+ );
659
+ }
660
+ throw import_errors.ToolError.executionDenied(toolName, sessionId);
661
+ }
543
662
  /**
544
663
  * Handle tool approval/confirmation flow
545
664
  * Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
@@ -558,6 +677,14 @@ let _ToolManager = class _ToolManager {
558
677
  this.logger.debug(`\u{1F6AB} Tool execution blocked by policy: ${toolName}`);
559
678
  throw import_errors.ToolError.executionDenied(toolName, sessionId);
560
679
  }
680
+ const customApprovalResult = await this.checkCustomApprovalOverride(
681
+ toolName,
682
+ args,
683
+ sessionId
684
+ );
685
+ if (customApprovalResult.handled) {
686
+ return { requireApproval: true, approvalStatus: "approved" };
687
+ }
561
688
  if (this.isInAlwaysAllowList(toolName)) {
562
689
  this.logger.info(
563
690
  `Tool '${toolName}' is in static allow list \u2013 skipping confirmation (session: ${sessionId ?? "global"})`