@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
@@ -1,6 +1,6 @@
1
1
  import { MCPManager } from '../mcp/manager.js';
2
2
  import { InternalToolsServices } from './internal-tools/registry.js';
3
- import type { InternalToolsConfig, ToolPolicies } from './schemas.js';
3
+ import type { InternalToolsConfig, CustomToolsConfig, ToolPolicies } from './schemas.js';
4
4
  import { ToolSet } from './types.js';
5
5
  import type { IDextoLogger } from '../logger/v2/types.js';
6
6
  import type { AgentEventBus } from '../events/index.js';
@@ -15,6 +15,7 @@ import type { AgentStateManager } from '../agent/state-manager.js';
15
15
  export interface InternalToolsOptions {
16
16
  internalToolsServices?: InternalToolsServices;
17
17
  internalToolsConfig?: InternalToolsConfig;
18
+ customToolsConfig?: CustomToolsConfig;
18
19
  }
19
20
  /**
20
21
  * Unified Tool Manager - Single interface for all tool operations
@@ -55,6 +56,7 @@ export declare class ToolManager {
55
56
  private stateManager?;
56
57
  private static readonly MCP_TOOL_PREFIX;
57
58
  private static readonly INTERNAL_TOOL_PREFIX;
59
+ private static readonly CUSTOM_TOOL_PREFIX;
58
60
  private toolsCache;
59
61
  private cacheValid;
60
62
  private logger;
@@ -67,6 +69,11 @@ export declare class ToolManager {
67
69
  * Set plugin support services (called after construction to avoid circular dependencies)
68
70
  */
69
71
  setPluginSupport(pluginManager: PluginManager, sessionManager: SessionManager, stateManager: AgentStateManager): void;
72
+ /**
73
+ * Set agent reference for custom tools (called after construction to avoid circular dependencies)
74
+ * Must be called before initialize() if custom tools are configured
75
+ */
76
+ setAgent(agent: any): void;
70
77
  /**
71
78
  * Invalidate the tools cache when tool sources change
72
79
  */
@@ -135,13 +142,14 @@ export declare class ToolManager {
135
142
  total: number;
136
143
  mcp: number;
137
144
  internal: number;
145
+ custom: number;
138
146
  }>;
139
147
  /**
140
- * Get the source of a tool (mcp, internal, or unknown)
148
+ * Get the source of a tool (mcp, internal, custom, or unknown)
141
149
  * @param toolName The name of the tool to check
142
150
  * @returns The source of the tool
143
151
  */
144
- getToolSource(toolName: string): 'mcp' | 'internal' | 'unknown';
152
+ getToolSource(toolName: string): 'mcp' | 'internal' | 'custom' | 'unknown';
145
153
  /**
146
154
  * Check if a tool matches a policy pattern
147
155
  * Supports both exact matching and suffix matching for MCP tools with server prefixes
@@ -170,6 +178,17 @@ export declare class ToolManager {
170
178
  * @returns true if the tool is in the allow list
171
179
  */
172
180
  private isInAlwaysAllowList;
181
+ /**
182
+ * Check if a tool has a custom approval override and handle it.
183
+ * Tools can implement getApprovalOverride() to request specialized approval flows
184
+ * (e.g., directory access approval for file tools) instead of default tool confirmation.
185
+ *
186
+ * @param toolName The fully qualified tool name
187
+ * @param args The tool arguments
188
+ * @param sessionId Optional session ID
189
+ * @returns { handled: true } if custom approval was processed, { handled: false } to continue normal flow
190
+ */
191
+ private checkCustomApprovalOverride;
173
192
  /**
174
193
  * Handle tool approval/confirmation flow
175
194
  * Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
@@ -1 +1 @@
1
- {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,7 @@ let _ToolManager = class _ToolManager {
40
40
  // Tool source prefixing - ALL tools get prefixed by source
41
41
  static MCP_TOOL_PREFIX = "mcp--";
42
42
  static INTERNAL_TOOL_PREFIX = "internal--";
43
+ static CUSTOM_TOOL_PREFIX = "custom--";
43
44
  // Tool caching for performance
44
45
  toolsCache = {};
45
46
  cacheValid = false;
@@ -52,14 +53,15 @@ let _ToolManager = class _ToolManager {
52
53
  this.agentEventBus = agentEventBus;
53
54
  this.toolPolicies = toolPolicies;
54
55
  this.logger = logger.createChild(DextoLogComponent.TOOLS);
55
- if (options?.internalToolsConfig && options.internalToolsConfig.length > 0) {
56
+ if (options?.internalToolsConfig && options.internalToolsConfig.length > 0 || options?.customToolsConfig && options.customToolsConfig.length > 0) {
56
57
  const internalToolsServices = {
57
58
  ...options.internalToolsServices,
58
59
  approvalManager
59
60
  };
60
61
  this.internalToolsProvider = new InternalToolsProvider(
61
62
  internalToolsServices,
62
- options.internalToolsConfig,
63
+ options.internalToolsConfig || [],
64
+ options.customToolsConfig || [],
63
65
  this.logger
64
66
  );
65
67
  }
@@ -84,6 +86,16 @@ let _ToolManager = class _ToolManager {
84
86
  this.stateManager = stateManager;
85
87
  this.logger.debug("Plugin support configured for ToolManager");
86
88
  }
89
+ /**
90
+ * Set agent reference for custom tools (called after construction to avoid circular dependencies)
91
+ * Must be called before initialize() if custom tools are configured
92
+ */
93
+ setAgent(agent) {
94
+ if (this.internalToolsProvider) {
95
+ this.internalToolsProvider.setAgent(agent);
96
+ this.logger.debug("Agent reference configured for custom tools");
97
+ }
98
+ }
87
99
  /**
88
100
  * Invalidate the tools cache when tool sources change
89
101
  */
@@ -115,7 +127,7 @@ let _ToolManager = class _ToolManager {
115
127
  * Check if a tool name represents a bash execution tool
116
128
  */
117
129
  isBashTool(toolName) {
118
- return toolName === "bash_exec" || toolName === "internal--bash_exec";
130
+ return toolName === "bash_exec" || toolName === "internal--bash_exec" || toolName === "custom--bash_exec";
119
131
  }
120
132
  /**
121
133
  * Check if a bash command is covered by any approved pattern.
@@ -169,6 +181,7 @@ let _ToolManager = class _ToolManager {
169
181
  const allTools = {};
170
182
  let mcpTools = {};
171
183
  let internalTools = {};
184
+ let customTools = {};
172
185
  try {
173
186
  mcpTools = await this.mcpManager.getAllTools();
174
187
  } catch (error) {
@@ -178,13 +191,21 @@ let _ToolManager = class _ToolManager {
178
191
  mcpTools = {};
179
192
  }
180
193
  try {
181
- internalTools = this.internalToolsProvider?.getAllTools() || {};
194
+ internalTools = this.internalToolsProvider?.getInternalTools() || {};
182
195
  } catch (error) {
183
196
  this.logger.error(
184
197
  `Failed to get internal tools: ${error instanceof Error ? error.message : String(error)}`
185
198
  );
186
199
  internalTools = {};
187
200
  }
201
+ try {
202
+ customTools = this.internalToolsProvider?.getCustomTools() || {};
203
+ } catch (error) {
204
+ this.logger.error(
205
+ `Failed to get custom tools: ${error instanceof Error ? error.message : String(error)}`
206
+ );
207
+ customTools = {};
208
+ }
188
209
  for (const [toolName, toolDef] of Object.entries(internalTools)) {
189
210
  const qualifiedName = `${_ToolManager.INTERNAL_TOOL_PREFIX}${toolName}`;
190
211
  allTools[qualifiedName] = {
@@ -193,6 +214,14 @@ let _ToolManager = class _ToolManager {
193
214
  description: `${toolDef.description || "No description provided"} (internal tool)`
194
215
  };
195
216
  }
217
+ for (const [toolName, toolDef] of Object.entries(customTools)) {
218
+ const qualifiedName = `${_ToolManager.CUSTOM_TOOL_PREFIX}${toolName}`;
219
+ allTools[qualifiedName] = {
220
+ ...toolDef,
221
+ name: qualifiedName,
222
+ description: `${toolDef.description || "No description provided"} (custom tool)`
223
+ };
224
+ }
196
225
  for (const [toolName, toolDef] of Object.entries(mcpTools)) {
197
226
  const qualifiedName = `${_ToolManager.MCP_TOOL_PREFIX}${toolName}`;
198
227
  allTools[qualifiedName] = {
@@ -204,8 +233,9 @@ let _ToolManager = class _ToolManager {
204
233
  const totalTools = Object.keys(allTools).length;
205
234
  const mcpCount = Object.keys(mcpTools).length;
206
235
  const internalCount = Object.keys(internalTools).length;
236
+ const customCount = Object.keys(customTools).length;
207
237
  this.logger.debug(
208
- `\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP \u2192 ${_ToolManager.MCP_TOOL_PREFIX}*, ${internalCount} internal \u2192 ${_ToolManager.INTERNAL_TOOL_PREFIX}*)`
238
+ `\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP, ${internalCount} internal, ${customCount} custom)`
209
239
  );
210
240
  return allTools;
211
241
  }
@@ -306,14 +336,30 @@ let _ToolManager = class _ToolManager {
306
336
  sessionId,
307
337
  abortSignal
308
338
  );
339
+ } else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
340
+ this.logger.debug(`\u{1F527} Detected custom tool: '${toolName}'`);
341
+ const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
342
+ if (actualToolName.length === 0) {
343
+ throw ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
344
+ }
345
+ if (!this.internalToolsProvider) {
346
+ throw ToolError.internalToolsNotInitialized(toolName);
347
+ }
348
+ this.logger.debug(`\u{1F3AF} Custom routing: '${toolName}' -> '${actualToolName}'`);
349
+ result = await this.internalToolsProvider.executeTool(
350
+ actualToolName,
351
+ args,
352
+ sessionId,
353
+ abortSignal
354
+ );
309
355
  } else {
310
356
  this.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
311
357
  const stats = await this.getToolStats();
312
358
  this.logger.error(
313
- `\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*' or '${_ToolManager.INTERNAL_TOOL_PREFIX}*')`
359
+ `\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*', '${_ToolManager.INTERNAL_TOOL_PREFIX}*', or '${_ToolManager.CUSTOM_TOOL_PREFIX}*')`
314
360
  );
315
361
  this.logger.debug(
316
- `Available: ${stats.mcp} MCP tools, ${stats.internal} internal tools`
362
+ `Available: ${stats.mcp} MCP, ${stats.internal} internal, ${stats.custom} custom tools`
317
363
  );
318
364
  throw ToolError.notFound(toolName);
319
365
  }
@@ -379,7 +425,11 @@ let _ToolManager = class _ToolManager {
379
425
  }
380
426
  if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
381
427
  const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
382
- return this.internalToolsProvider?.hasTool(actualToolName) ?? false;
428
+ return this.internalToolsProvider?.hasInternalTool(actualToolName) ?? false;
429
+ }
430
+ if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
431
+ const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
432
+ return this.internalToolsProvider?.hasCustomTool(actualToolName) ?? false;
383
433
  }
384
434
  return false;
385
435
  }
@@ -389,6 +439,7 @@ let _ToolManager = class _ToolManager {
389
439
  async getToolStats() {
390
440
  let mcpTools = {};
391
441
  let internalTools = {};
442
+ let customTools = {};
392
443
  try {
393
444
  mcpTools = await this.mcpManager.getAllTools();
394
445
  } catch (error) {
@@ -398,24 +449,33 @@ let _ToolManager = class _ToolManager {
398
449
  mcpTools = {};
399
450
  }
400
451
  try {
401
- internalTools = this.internalToolsProvider?.getAllTools() || {};
452
+ internalTools = this.internalToolsProvider?.getInternalTools() || {};
402
453
  } catch (error) {
403
454
  this.logger.error(
404
455
  `Failed to get internal tools for stats: ${error instanceof Error ? error.message : String(error)}`
405
456
  );
406
457
  internalTools = {};
407
458
  }
459
+ try {
460
+ customTools = this.internalToolsProvider?.getCustomTools() || {};
461
+ } catch (error) {
462
+ this.logger.error(
463
+ `Failed to get custom tools for stats: ${error instanceof Error ? error.message : String(error)}`
464
+ );
465
+ customTools = {};
466
+ }
408
467
  const mcpCount = Object.keys(mcpTools).length;
409
468
  const internalCount = Object.keys(internalTools).length;
469
+ const customCount = Object.keys(customTools).length;
410
470
  return {
411
- total: mcpCount + internalCount,
412
- // No conflicts with universal prefixing
471
+ total: mcpCount + internalCount + customCount,
413
472
  mcp: mcpCount,
414
- internal: internalCount
473
+ internal: internalCount,
474
+ custom: customCount
415
475
  };
416
476
  }
417
477
  /**
418
- * Get the source of a tool (mcp, internal, or unknown)
478
+ * Get the source of a tool (mcp, internal, custom, or unknown)
419
479
  * @param toolName The name of the tool to check
420
480
  * @returns The source of the tool
421
481
  */
@@ -426,6 +486,9 @@ let _ToolManager = class _ToolManager {
426
486
  if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX) && toolName.length > _ToolManager.INTERNAL_TOOL_PREFIX.length) {
427
487
  return "internal";
428
488
  }
489
+ if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX) && toolName.length > _ToolManager.CUSTOM_TOOL_PREFIX.length) {
490
+ return "custom";
491
+ }
429
492
  return "unknown";
430
493
  }
431
494
  /**
@@ -481,6 +544,62 @@ let _ToolManager = class _ToolManager {
481
544
  (pattern) => this.matchesToolPolicy(toolName, pattern)
482
545
  );
483
546
  }
547
+ /**
548
+ * Check if a tool has a custom approval override and handle it.
549
+ * Tools can implement getApprovalOverride() to request specialized approval flows
550
+ * (e.g., directory access approval for file tools) instead of default tool confirmation.
551
+ *
552
+ * @param toolName The fully qualified tool name
553
+ * @param args The tool arguments
554
+ * @param sessionId Optional session ID
555
+ * @returns { handled: true } if custom approval was processed, { handled: false } to continue normal flow
556
+ */
557
+ async checkCustomApprovalOverride(toolName, args, sessionId) {
558
+ let actualToolName;
559
+ if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
560
+ actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
561
+ } else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
562
+ actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
563
+ }
564
+ if (!actualToolName || !this.internalToolsProvider) {
565
+ return { handled: false };
566
+ }
567
+ const tool = this.internalToolsProvider.getTool(actualToolName);
568
+ if (!tool?.getApprovalOverride) {
569
+ return { handled: false };
570
+ }
571
+ const approvalRequest = tool.getApprovalOverride(args);
572
+ if (!approvalRequest) {
573
+ return { handled: false };
574
+ }
575
+ this.logger.debug(
576
+ `Tool '${toolName}' requested custom approval: type=${approvalRequest.type}`
577
+ );
578
+ if (sessionId && !approvalRequest.sessionId) {
579
+ approvalRequest.sessionId = sessionId;
580
+ }
581
+ const response = await this.approvalManager.requestApproval(approvalRequest);
582
+ if (response.status === ApprovalStatus.APPROVED) {
583
+ if (tool.onApprovalGranted) {
584
+ tool.onApprovalGranted(response);
585
+ }
586
+ this.logger.info(
587
+ `Custom approval granted for '${toolName}', type=${approvalRequest.type}, session=${sessionId ?? "global"}`
588
+ );
589
+ return { handled: true };
590
+ }
591
+ this.logger.info(
592
+ `Custom approval denied for '${toolName}', type=${approvalRequest.type}, reason=${response.reason ?? "unknown"}`
593
+ );
594
+ if (approvalRequest.type === "directory_access") {
595
+ const metadata = approvalRequest.metadata;
596
+ throw ToolError.directoryAccessDenied(
597
+ metadata?.parentDir ?? "unknown directory",
598
+ sessionId
599
+ );
600
+ }
601
+ throw ToolError.executionDenied(toolName, sessionId);
602
+ }
484
603
  /**
485
604
  * Handle tool approval/confirmation flow
486
605
  * Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
@@ -499,6 +618,14 @@ let _ToolManager = class _ToolManager {
499
618
  this.logger.debug(`\u{1F6AB} Tool execution blocked by policy: ${toolName}`);
500
619
  throw ToolError.executionDenied(toolName, sessionId);
501
620
  }
621
+ const customApprovalResult = await this.checkCustomApprovalOverride(
622
+ toolName,
623
+ args,
624
+ sessionId
625
+ );
626
+ if (customApprovalResult.handled) {
627
+ return { requireApproval: true, approvalStatus: "approved" };
628
+ }
502
629
  if (this.isInAlwaysAllowList(toolName)) {
503
630
  this.logger.info(
504
631
  `Tool '${toolName}' is in static allow list \u2013 skipping confirmation (session: ${sessionId ?? "global"})`
@@ -1,6 +1,7 @@
1
1
  import type { JSONSchema7 } from 'json-schema';
2
2
  import type { ZodSchema } from 'zod';
3
3
  import type { ToolDisplayData } from './display-types.js';
4
+ import type { ApprovalRequestDetails, ApprovalResponse } from '../approval/types.js';
4
5
  /**
5
6
  * Context passed to tool execution
6
7
  */
@@ -39,6 +40,48 @@ export interface InternalTool {
39
40
  * Returns null if no preview is available.
40
41
  */
41
42
  generatePreview?: (input: unknown, context?: ToolExecutionContext) => Promise<ToolDisplayData | null>;
43
+ /**
44
+ * Optional custom approval override.
45
+ * If present and returns non-null, this approval request is used instead of
46
+ * the default tool confirmation. Allows tools to request specialized approval
47
+ * flows (e.g., directory access approval for file tools).
48
+ *
49
+ * @param args The validated input arguments for the tool
50
+ * @returns ApprovalRequestDetails for custom approval, or null to use default tool confirmation
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // File tool requesting directory access approval for external paths
55
+ * getApprovalOverride: (args) => {
56
+ * const filePath = (args as {file_path: string}).file_path;
57
+ * if (!isPathWithinAllowed(filePath)) {
58
+ * return {
59
+ * type: ApprovalType.DIRECTORY_ACCESS,
60
+ * metadata: { path: filePath, operation: 'read', ... }
61
+ * };
62
+ * }
63
+ * return null; // Use default tool confirmation
64
+ * }
65
+ * ```
66
+ */
67
+ getApprovalOverride?: (args: unknown) => ApprovalRequestDetails | null;
68
+ /**
69
+ * Optional callback invoked when custom approval is granted.
70
+ * Allows tools to handle approval responses (e.g., remember approved directories).
71
+ * Only called when getApprovalOverride returned non-null and approval was granted.
72
+ *
73
+ * @param response The approval response from ApprovalManager
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * onApprovalGranted: (response) => {
78
+ * if (response.data?.rememberDirectory) {
79
+ * directoryApproval.addApproved(parentDir, 'session');
80
+ * }
81
+ * }
82
+ * ```
83
+ */
84
+ onApprovalGranted?: (response: ApprovalResponse) => void;
42
85
  }
43
86
  /**
44
87
  * Standard tool set interface - used by AI/LLM services
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAC5C;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IAEX,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;IAEvB,8FAA8F;IAC9F,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAExF;;;;OAIG;IACH,eAAe,CAAC,EAAE,CACd,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,oBAAoB,KAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,WAAW,CAAC;KAC3B,CAAC;CACL;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAC5C;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IAEX,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;IAEvB,8FAA8F;IAC9F,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAExF;;;;OAIG;IACH,eAAe,CAAC,EAAE,CACd,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,oBAAoB,KAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAErC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,sBAAsB,GAAG,IAAI,CAAC;IAEvE;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,WAAW,CAAC;KAC3B,CAAC;CACL;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"}
@@ -31,7 +31,25 @@ const PROVIDER_API_KEY_MAP = {
31
31
  google: ["GOOGLE_GENERATIVE_AI_API_KEY", "GOOGLE_API_KEY", "GEMINI_API_KEY"],
32
32
  groq: ["GROQ_API_KEY"],
33
33
  cohere: ["COHERE_API_KEY"],
34
- xai: ["XAI_API_KEY", "X_AI_API_KEY"]
34
+ xai: ["XAI_API_KEY", "X_AI_API_KEY"],
35
+ openrouter: ["OPENROUTER_API_KEY"],
36
+ litellm: ["LITELLM_API_KEY", "LITELLM_KEY"],
37
+ glama: ["GLAMA_API_KEY"],
38
+ // Vertex uses ADC (Application Default Credentials), not API keys
39
+ // GOOGLE_APPLICATION_CREDENTIALS points to service account JSON (optional)
40
+ // Primary config is GOOGLE_VERTEX_PROJECT (required) + GOOGLE_VERTEX_LOCATION (optional)
41
+ vertex: [],
42
+ // Bedrock supports two auth methods:
43
+ // 1. AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (simplest)
44
+ // 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + AWS_REGION (IAM credentials)
45
+ // AWS_SESSION_TOKEN (optional, for temporary credentials)
46
+ bedrock: ["AWS_BEARER_TOKEN_BEDROCK"],
47
+ // Local providers don't require API keys
48
+ local: [],
49
+ // Native node-llama-cpp execution
50
+ ollama: []
51
+ // Ollama server (no authentication required)
52
+ // TODO: dexto: ['DEXTO_API_KEY'],
35
53
  // perplexity: ['PERPLEXITY_API_KEY'],
36
54
  // together: ['TOGETHER_API_KEY'],
37
55
  // fireworks: ['FIREWORKS_API_KEY'],
@@ -1 +1 @@
1
- {"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/api-key-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;GAGG;AAGH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAY9D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAelF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAGpE"}
1
+ {"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/api-key-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;GAGG;AAGH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CA4B9D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAelF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAGpE"}
@@ -7,7 +7,25 @@ const PROVIDER_API_KEY_MAP = {
7
7
  google: ["GOOGLE_GENERATIVE_AI_API_KEY", "GOOGLE_API_KEY", "GEMINI_API_KEY"],
8
8
  groq: ["GROQ_API_KEY"],
9
9
  cohere: ["COHERE_API_KEY"],
10
- xai: ["XAI_API_KEY", "X_AI_API_KEY"]
10
+ xai: ["XAI_API_KEY", "X_AI_API_KEY"],
11
+ openrouter: ["OPENROUTER_API_KEY"],
12
+ litellm: ["LITELLM_API_KEY", "LITELLM_KEY"],
13
+ glama: ["GLAMA_API_KEY"],
14
+ // Vertex uses ADC (Application Default Credentials), not API keys
15
+ // GOOGLE_APPLICATION_CREDENTIALS points to service account JSON (optional)
16
+ // Primary config is GOOGLE_VERTEX_PROJECT (required) + GOOGLE_VERTEX_LOCATION (optional)
17
+ vertex: [],
18
+ // Bedrock supports two auth methods:
19
+ // 1. AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (simplest)
20
+ // 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + AWS_REGION (IAM credentials)
21
+ // AWS_SESSION_TOKEN (optional, for temporary credentials)
22
+ bedrock: ["AWS_BEARER_TOKEN_BEDROCK"],
23
+ // Local providers don't require API keys
24
+ local: [],
25
+ // Native node-llama-cpp execution
26
+ ollama: []
27
+ // Ollama server (no authentication required)
28
+ // TODO: dexto: ['DEXTO_API_KEY'],
11
29
  // perplexity: ['PERPLEXITY_API_KEY'],
12
30
  // together: ['TOGETHER_API_KEY'],
13
31
  // fireworks: ['FIREWORKS_API_KEY'],
@@ -23,7 +23,6 @@ __reExport(utils_exports, require("./error-conversion.js"), module.exports);
23
23
  __reExport(utils_exports, require("./execution-context.js"), module.exports);
24
24
  __reExport(utils_exports, require("./fs-walk.js"), module.exports);
25
25
  __reExport(utils_exports, require("./redactor.js"), module.exports);
26
- __reExport(utils_exports, require("./env-file.js"), module.exports);
27
26
  __reExport(utils_exports, require("./debug.js"), module.exports);
28
27
  __reExport(utils_exports, require("./safe-stringify.js"), module.exports);
29
28
  __reExport(utils_exports, require("./api-key-resolver.js"), module.exports);
@@ -38,7 +37,6 @@ __reExport(utils_exports, require("./defer.js"), module.exports);
38
37
  ...require("./execution-context.js"),
39
38
  ...require("./fs-walk.js"),
40
39
  ...require("./redactor.js"),
41
- ...require("./env-file.js"),
42
40
  ...require("./debug.js"),
43
41
  ...require("./safe-stringify.js"),
44
42
  ...require("./api-key-resolver.js"),
@@ -6,7 +6,6 @@ export * from './error-conversion.js';
6
6
  export * from './execution-context.js';
7
7
  export * from './fs-walk.js';
8
8
  export * from './redactor.js';
9
- export * from './env-file.js';
10
9
  export * from './debug.js';
11
10
  export * from './safe-stringify.js';
12
11
  export * from './api-key-resolver.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAKA,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAKA,cAAc,WAAW,CAAC;AAC1B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
@@ -6,7 +6,6 @@ export * from "./error-conversion.js";
6
6
  export * from "./execution-context.js";
7
7
  export * from "./fs-walk.js";
8
8
  export * from "./redactor.js";
9
- export * from "./env-file.js";
10
9
  export * from "./debug.js";
11
10
  export * from "./safe-stringify.js";
12
11
  export * from "./api-key-resolver.js";
@@ -45,10 +45,19 @@ const SENSITIVE_PATTERNS = [
45
45
  // OpenAI API keys (at least 20 chars after sk-)
46
46
  /\bBearer\s+[A-Za-z0-9\-_.=]+\b/gi,
47
47
  // Bearer tokens
48
- /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
48
+ /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g
49
49
  // Emails
50
- /\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*/g
51
- // JWT tokens
50
+ ];
51
+ const JWT_PATTERN = /\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*/g;
52
+ const SIGNED_URL_PATTERNS = [
53
+ /supabase\.co\/storage\/.*\?token=/i,
54
+ // Supabase signed URLs
55
+ /\.r2\.cloudflarestorage\.com\/.*\?/i,
56
+ // Cloudflare R2 signed URLs
57
+ /\.s3\..*amazonaws\.com\/.*\?(X-Amz-|AWSAccessKeyId)/i,
58
+ // AWS S3 presigned URLs
59
+ /storage\.googleapis\.com\/.*\?/i
60
+ // Google Cloud Storage signed URLs
52
61
  ];
53
62
  const REDACTED = "[REDACTED]";
54
63
  const REDACTED_CIRCULAR = "[REDACTED_CIRCULAR]";
@@ -66,12 +75,18 @@ function truncateFileData(value, key, parent) {
66
75
  }
67
76
  return value;
68
77
  }
78
+ function isSignedUrl(value) {
79
+ return SIGNED_URL_PATTERNS.some((pattern) => pattern.test(value));
80
+ }
69
81
  function redactSensitiveData(input, seen = /* @__PURE__ */ new WeakSet()) {
70
82
  if (typeof input === "string") {
71
83
  let result = input;
72
84
  for (const pattern of SENSITIVE_PATTERNS) {
73
85
  result = result.replace(pattern, REDACTED);
74
86
  }
87
+ if (!isSignedUrl(result)) {
88
+ result = result.replace(JWT_PATTERN, REDACTED);
89
+ }
75
90
  return result;
76
91
  }
77
92
  if (Array.isArray(input)) {
@@ -6,12 +6,5 @@
6
6
  * - Recursive and preserves structure
7
7
  * - Easy to extend
8
8
  */
9
- /**
10
- * Redacts sensitive data from an object, array, or string.
11
- * Handles circular references gracefully.
12
- * @param input - The data to redact
13
- * @param seen - Internal set to track circular references
14
- * @returns The redacted data
15
- */
16
9
  export declare function redactSensitiveData(input: unknown, seen?: WeakSet<object>): unknown;
17
10
  //# sourceMappingURL=redactor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redactor.d.ts","sourceRoot":"","sources":["../../src/utils/redactor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqEH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,kBAAgB,GAAG,OAAO,CAiCjF"}
1
+ {"version":3,"file":"redactor.d.ts","sourceRoot":"","sources":["../../src/utils/redactor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8FH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,kBAAgB,GAAG,OAAO,CAsCjF"}
@@ -23,10 +23,19 @@ const SENSITIVE_PATTERNS = [
23
23
  // OpenAI API keys (at least 20 chars after sk-)
24
24
  /\bBearer\s+[A-Za-z0-9\-_.=]+\b/gi,
25
25
  // Bearer tokens
26
- /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
26
+ /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g
27
27
  // Emails
28
- /\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*/g
29
- // JWT tokens
28
+ ];
29
+ const JWT_PATTERN = /\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*/g;
30
+ const SIGNED_URL_PATTERNS = [
31
+ /supabase\.co\/storage\/.*\?token=/i,
32
+ // Supabase signed URLs
33
+ /\.r2\.cloudflarestorage\.com\/.*\?/i,
34
+ // Cloudflare R2 signed URLs
35
+ /\.s3\..*amazonaws\.com\/.*\?(X-Amz-|AWSAccessKeyId)/i,
36
+ // AWS S3 presigned URLs
37
+ /storage\.googleapis\.com\/.*\?/i
38
+ // Google Cloud Storage signed URLs
30
39
  ];
31
40
  const REDACTED = "[REDACTED]";
32
41
  const REDACTED_CIRCULAR = "[REDACTED_CIRCULAR]";
@@ -44,12 +53,18 @@ function truncateFileData(value, key, parent) {
44
53
  }
45
54
  return value;
46
55
  }
56
+ function isSignedUrl(value) {
57
+ return SIGNED_URL_PATTERNS.some((pattern) => pattern.test(value));
58
+ }
47
59
  function redactSensitiveData(input, seen = /* @__PURE__ */ new WeakSet()) {
48
60
  if (typeof input === "string") {
49
61
  let result = input;
50
62
  for (const pattern of SENSITIVE_PATTERNS) {
51
63
  result = result.replace(pattern, REDACTED);
52
64
  }
65
+ if (!isSignedUrl(result)) {
66
+ result = result.replace(JWT_PATTERN, REDACTED);
67
+ }
53
68
  return result;
54
69
  }
55
70
  if (Array.isArray(input)) {