@dexto/core 1.2.3 → 1.2.5

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 (523) hide show
  1. package/README.md +60 -0
  2. package/dist/agent/DextoAgent.cjs +579 -345
  3. package/dist/agent/DextoAgent.d.ts +131 -83
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +573 -336
  6. package/dist/agent/agentCard.cjs +4 -2
  7. package/dist/agent/agentCard.d.ts +0 -1
  8. package/dist/agent/agentCard.d.ts.map +1 -1
  9. package/dist/agent/agentCard.js +4 -2
  10. package/dist/agent/index.cjs +3 -7
  11. package/dist/agent/index.d.ts +3 -3
  12. package/dist/agent/index.d.ts.map +1 -1
  13. package/dist/agent/index.js +7 -6
  14. package/dist/agent/schemas.cjs +164 -64
  15. package/dist/agent/schemas.d.ts +2605 -517
  16. package/dist/agent/schemas.d.ts.map +1 -1
  17. package/dist/agent/schemas.js +167 -64
  18. package/dist/agent/state-manager.cjs +28 -23
  19. package/dist/agent/state-manager.d.ts +4 -1
  20. package/dist/agent/state-manager.d.ts.map +1 -1
  21. package/dist/agent/state-manager.js +28 -23
  22. package/dist/{preferences/constants.cjs → agent/types.cjs} +2 -14
  23. package/dist/agent/types.d.ts +54 -0
  24. package/dist/agent/types.d.ts.map +1 -0
  25. package/dist/agent/types.js +0 -0
  26. package/dist/approval/errors.cjs +89 -8
  27. package/dist/approval/errors.d.ts +5 -3
  28. package/dist/approval/errors.d.ts.map +1 -1
  29. package/dist/approval/errors.js +89 -8
  30. package/dist/approval/{providers/factory.d.ts → factory.d.ts} +2 -2
  31. package/dist/approval/factory.d.ts.map +1 -0
  32. package/dist/approval/{providers/factory.js → factory.js} +1 -1
  33. package/dist/approval/index.cjs +4 -6
  34. package/dist/approval/index.d.ts +3 -5
  35. package/dist/approval/index.d.ts.map +1 -1
  36. package/dist/approval/index.js +4 -5
  37. package/dist/approval/manager.cjs +140 -37
  38. package/dist/approval/manager.d.ts +56 -17
  39. package/dist/approval/manager.d.ts.map +1 -1
  40. package/dist/approval/manager.js +141 -38
  41. package/dist/approval/schemas.cjs +9 -1
  42. package/dist/approval/schemas.d.ts +120 -35
  43. package/dist/approval/schemas.d.ts.map +1 -1
  44. package/dist/approval/schemas.js +9 -2
  45. package/dist/approval/types.cjs +14 -2
  46. package/dist/approval/types.d.ts +64 -12
  47. package/dist/approval/types.d.ts.map +1 -1
  48. package/dist/approval/types.js +12 -1
  49. package/dist/context/compression/middle-removal.cjs +11 -11
  50. package/dist/context/compression/middle-removal.d.ts +3 -1
  51. package/dist/context/compression/middle-removal.d.ts.map +1 -1
  52. package/dist/context/compression/middle-removal.js +11 -11
  53. package/dist/context/compression/oldest-removal.cjs +18 -5
  54. package/dist/context/compression/oldest-removal.d.ts +3 -1
  55. package/dist/context/compression/oldest-removal.d.ts.map +1 -1
  56. package/dist/context/compression/oldest-removal.js +18 -5
  57. package/dist/context/manager.cjs +94 -67
  58. package/dist/context/manager.d.ts +13 -10
  59. package/dist/context/manager.d.ts.map +1 -1
  60. package/dist/context/manager.js +94 -67
  61. package/dist/context/utils.cjs +79 -65
  62. package/dist/context/utils.d.ts +15 -12
  63. package/dist/context/utils.d.ts.map +1 -1
  64. package/dist/context/utils.js +45 -31
  65. package/dist/errors/DextoRuntimeError.d.ts +5 -5
  66. package/dist/errors/DextoRuntimeError.d.ts.map +1 -1
  67. package/dist/errors/result-bridge.cjs +2 -3
  68. package/dist/errors/result-bridge.d.ts +5 -3
  69. package/dist/errors/result-bridge.d.ts.map +1 -1
  70. package/dist/errors/result-bridge.js +1 -2
  71. package/dist/errors/types.cjs +1 -2
  72. package/dist/errors/types.d.ts +5 -8
  73. package/dist/errors/types.d.ts.map +1 -1
  74. package/dist/errors/types.js +1 -2
  75. package/dist/events/index.cjs +125 -55
  76. package/dist/events/index.d.ts +204 -97
  77. package/dist/events/index.d.ts.map +1 -1
  78. package/dist/events/index.js +123 -55
  79. package/dist/filesystem/filesystem-service.cjs +40 -30
  80. package/dist/filesystem/filesystem-service.d.ts +9 -1
  81. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  82. package/dist/filesystem/filesystem-service.js +40 -30
  83. package/dist/filesystem/path-validator.cjs +4 -3
  84. package/dist/filesystem/path-validator.d.ts +3 -1
  85. package/dist/filesystem/path-validator.d.ts.map +1 -1
  86. package/dist/filesystem/path-validator.js +4 -3
  87. package/dist/filesystem/types.d.ts +3 -3
  88. package/dist/filesystem/types.d.ts.map +1 -1
  89. package/dist/index.browser.cjs +7 -0
  90. package/dist/index.browser.d.ts +2 -0
  91. package/dist/index.browser.d.ts.map +1 -1
  92. package/dist/index.browser.js +4 -0
  93. package/dist/index.cjs +0 -7
  94. package/dist/index.d.ts +12 -3
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +0 -4
  97. package/dist/llm/formatters/anthropic.cjs +32 -21
  98. package/dist/llm/formatters/anthropic.d.ts +3 -0
  99. package/dist/llm/formatters/anthropic.d.ts.map +1 -1
  100. package/dist/llm/formatters/anthropic.js +32 -21
  101. package/dist/llm/formatters/factory.cjs +6 -7
  102. package/dist/llm/formatters/factory.d.ts +2 -1
  103. package/dist/llm/formatters/factory.d.ts.map +1 -1
  104. package/dist/llm/formatters/factory.js +4 -5
  105. package/dist/llm/formatters/openai.cjs +38 -9
  106. package/dist/llm/formatters/openai.d.ts +3 -0
  107. package/dist/llm/formatters/openai.d.ts.map +1 -1
  108. package/dist/llm/formatters/openai.js +38 -9
  109. package/dist/llm/formatters/vercel.cjs +49 -8
  110. package/dist/llm/formatters/vercel.d.ts +3 -0
  111. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  112. package/dist/llm/formatters/vercel.js +49 -8
  113. package/dist/llm/registry.cjs +153 -17
  114. package/dist/llm/registry.d.ts +5 -2
  115. package/dist/llm/registry.d.ts.map +1 -1
  116. package/dist/llm/registry.js +143 -7
  117. package/dist/llm/resolver.cjs +4 -4
  118. package/dist/llm/resolver.d.ts +3 -2
  119. package/dist/llm/resolver.d.ts.map +1 -1
  120. package/dist/llm/resolver.js +4 -4
  121. package/dist/llm/schemas.cjs +6 -3
  122. package/dist/llm/schemas.d.ts +51 -17
  123. package/dist/llm/schemas.d.ts.map +1 -1
  124. package/dist/llm/schemas.js +5 -3
  125. package/dist/llm/services/anthropic.cjs +216 -183
  126. package/dist/llm/services/anthropic.d.ts +3 -1
  127. package/dist/llm/services/anthropic.d.ts.map +1 -1
  128. package/dist/llm/services/anthropic.js +217 -184
  129. package/dist/llm/services/factory.cjs +15 -9
  130. package/dist/llm/services/factory.d.ts +2 -1
  131. package/dist/llm/services/factory.d.ts.map +1 -1
  132. package/dist/llm/services/factory.js +15 -9
  133. package/dist/llm/services/openai.cjs +262 -225
  134. package/dist/llm/services/openai.d.ts +3 -1
  135. package/dist/llm/services/openai.d.ts.map +1 -1
  136. package/dist/llm/services/openai.js +263 -226
  137. package/dist/llm/services/test-utils.integration.cjs +58 -12
  138. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  139. package/dist/llm/services/test-utils.integration.js +58 -12
  140. package/dist/llm/services/types.d.ts +9 -0
  141. package/dist/llm/services/types.d.ts.map +1 -1
  142. package/dist/llm/services/vercel.cjs +163 -111
  143. package/dist/llm/services/vercel.d.ts +3 -1
  144. package/dist/llm/services/vercel.d.ts.map +1 -1
  145. package/dist/llm/services/vercel.js +157 -105
  146. package/dist/llm/tokenizer/factory.cjs +2 -2
  147. package/dist/llm/tokenizer/factory.d.ts +3 -1
  148. package/dist/llm/tokenizer/factory.d.ts.map +1 -1
  149. package/dist/llm/tokenizer/factory.js +2 -2
  150. package/dist/llm/tokenizer/openai.cjs +16 -9
  151. package/dist/llm/tokenizer/openai.d.ts +4 -1
  152. package/dist/llm/tokenizer/openai.d.ts.map +1 -1
  153. package/dist/llm/tokenizer/openai.js +16 -9
  154. package/dist/llm/validation.cjs +8 -9
  155. package/dist/llm/validation.d.ts +3 -1
  156. package/dist/llm/validation.d.ts.map +1 -1
  157. package/dist/llm/validation.js +5 -6
  158. package/dist/logger/factory.cjs +54 -0
  159. package/dist/logger/factory.d.ts +36 -0
  160. package/dist/logger/factory.d.ts.map +1 -0
  161. package/dist/logger/factory.js +31 -0
  162. package/dist/logger/index.cjs +42 -3
  163. package/dist/logger/index.d.ts +17 -1
  164. package/dist/logger/index.d.ts.map +1 -1
  165. package/dist/logger/index.js +26 -1
  166. package/dist/logger/logger.cjs +30 -17
  167. package/dist/logger/logger.d.ts.map +1 -1
  168. package/dist/logger/logger.js +30 -17
  169. package/dist/logger/v2/dexto-logger.cjs +141 -0
  170. package/dist/logger/v2/dexto-logger.d.ts +54 -0
  171. package/dist/logger/v2/dexto-logger.d.ts.map +1 -0
  172. package/dist/logger/v2/dexto-logger.js +118 -0
  173. package/dist/{preferences → logger/v2}/error-codes.cjs +11 -10
  174. package/dist/logger/v2/error-codes.d.ts +13 -0
  175. package/dist/logger/v2/error-codes.d.ts.map +1 -0
  176. package/dist/logger/v2/error-codes.js +13 -0
  177. package/dist/logger/v2/errors.cjs +107 -0
  178. package/dist/logger/v2/errors.d.ts +32 -0
  179. package/dist/logger/v2/errors.d.ts.map +1 -0
  180. package/dist/logger/v2/errors.js +84 -0
  181. package/dist/logger/v2/schemas.cjs +57 -0
  182. package/dist/logger/v2/schemas.d.ts +147 -0
  183. package/dist/logger/v2/schemas.d.ts.map +1 -0
  184. package/dist/logger/v2/schemas.js +33 -0
  185. package/dist/logger/v2/transport-factory.cjs +53 -0
  186. package/dist/logger/v2/transport-factory.d.ts +21 -0
  187. package/dist/logger/v2/transport-factory.d.ts.map +1 -0
  188. package/dist/logger/v2/transport-factory.js +29 -0
  189. package/dist/logger/v2/transports/console-transport.cjs +79 -0
  190. package/dist/logger/v2/transports/console-transport.d.ts +23 -0
  191. package/dist/logger/v2/transports/console-transport.d.ts.map +1 -0
  192. package/dist/logger/v2/transports/console-transport.js +46 -0
  193. package/dist/logger/v2/transports/file-transport.cjs +161 -0
  194. package/dist/logger/v2/transports/file-transport.d.ts +46 -0
  195. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -0
  196. package/dist/logger/v2/transports/file-transport.js +128 -0
  197. package/dist/logger/v2/types.cjs +49 -0
  198. package/dist/logger/v2/types.d.ts +123 -0
  199. package/dist/logger/v2/types.d.ts.map +1 -0
  200. package/dist/logger/v2/types.js +26 -0
  201. package/dist/mcp/manager.cjs +88 -78
  202. package/dist/mcp/manager.d.ts +3 -1
  203. package/dist/mcp/manager.d.ts.map +1 -1
  204. package/dist/mcp/manager.js +88 -78
  205. package/dist/mcp/mcp-client.cjs +109 -79
  206. package/dist/mcp/mcp-client.d.ts +3 -0
  207. package/dist/mcp/mcp-client.d.ts.map +1 -1
  208. package/dist/mcp/mcp-client.js +102 -72
  209. package/dist/memory/manager.cjs +9 -7
  210. package/dist/memory/manager.d.ts +3 -1
  211. package/dist/memory/manager.d.ts.map +1 -1
  212. package/dist/memory/manager.js +9 -7
  213. package/dist/memory/schemas.d.ts +6 -6
  214. package/dist/plugins/manager.cjs +21 -19
  215. package/dist/plugins/manager.d.ts +3 -1
  216. package/dist/plugins/manager.d.ts.map +1 -1
  217. package/dist/plugins/manager.js +21 -19
  218. package/dist/plugins/schemas.d.ts +9 -9
  219. package/dist/plugins/types.d.ts +2 -2
  220. package/dist/plugins/types.d.ts.map +1 -1
  221. package/dist/process/command-validator.cjs +30 -20
  222. package/dist/process/command-validator.d.ts +4 -1
  223. package/dist/process/command-validator.d.ts.map +1 -1
  224. package/dist/process/command-validator.js +30 -20
  225. package/dist/process/process-service.cjs +23 -21
  226. package/dist/process/process-service.d.ts +3 -1
  227. package/dist/process/process-service.d.ts.map +1 -1
  228. package/dist/process/process-service.js +23 -21
  229. package/dist/prompts/prompt-manager.cjs +25 -18
  230. package/dist/prompts/prompt-manager.d.ts +3 -1
  231. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  232. package/dist/prompts/prompt-manager.js +25 -18
  233. package/dist/prompts/providers/custom-prompt-provider.cjs +11 -7
  234. package/dist/prompts/providers/custom-prompt-provider.d.ts +3 -1
  235. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  236. package/dist/prompts/providers/custom-prompt-provider.js +11 -7
  237. package/dist/prompts/providers/file-prompt-provider.cjs +14 -12
  238. package/dist/prompts/providers/file-prompt-provider.d.ts +3 -1
  239. package/dist/prompts/providers/file-prompt-provider.d.ts.map +1 -1
  240. package/dist/prompts/providers/file-prompt-provider.js +14 -12
  241. package/dist/prompts/providers/mcp-prompt-provider.cjs +7 -6
  242. package/dist/prompts/providers/mcp-prompt-provider.d.ts +3 -1
  243. package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -1
  244. package/dist/prompts/providers/mcp-prompt-provider.js +7 -6
  245. package/dist/prompts/providers/starter-prompt-provider.cjs +7 -5
  246. package/dist/prompts/providers/starter-prompt-provider.d.ts +3 -1
  247. package/dist/prompts/providers/starter-prompt-provider.d.ts.map +1 -1
  248. package/dist/prompts/providers/starter-prompt-provider.js +7 -5
  249. package/dist/prompts/schemas.d.ts +3 -3
  250. package/dist/resources/handlers/blob-handler.cjs +15 -11
  251. package/dist/resources/handlers/blob-handler.d.ts +3 -1
  252. package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
  253. package/dist/resources/handlers/blob-handler.js +15 -11
  254. package/dist/resources/handlers/factory.cjs +3 -3
  255. package/dist/resources/handlers/factory.d.ts +2 -1
  256. package/dist/resources/handlers/factory.d.ts.map +1 -1
  257. package/dist/resources/handlers/factory.js +3 -3
  258. package/dist/resources/handlers/filesystem-handler.cjs +10 -8
  259. package/dist/resources/handlers/filesystem-handler.d.ts +3 -1
  260. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  261. package/dist/resources/handlers/filesystem-handler.js +10 -8
  262. package/dist/resources/internal-provider.cjs +28 -20
  263. package/dist/resources/internal-provider.d.ts +3 -1
  264. package/dist/resources/internal-provider.d.ts.map +1 -1
  265. package/dist/resources/internal-provider.js +28 -20
  266. package/dist/resources/manager.cjs +34 -25
  267. package/dist/resources/manager.d.ts +3 -1
  268. package/dist/resources/manager.d.ts.map +1 -1
  269. package/dist/resources/manager.js +34 -25
  270. package/dist/resources/schemas.d.ts +6 -6
  271. package/dist/search/search-service.cjs +8 -6
  272. package/dist/search/search-service.d.ts +3 -1
  273. package/dist/search/search-service.d.ts.map +1 -1
  274. package/dist/search/search-service.js +8 -6
  275. package/dist/session/chat-session.cjs +40 -27
  276. package/dist/session/chat-session.d.ts +10 -7
  277. package/dist/session/chat-session.d.ts.map +1 -1
  278. package/dist/session/chat-session.js +40 -27
  279. package/dist/session/history/database.cjs +18 -11
  280. package/dist/session/history/database.d.ts +3 -1
  281. package/dist/session/history/database.d.ts.map +1 -1
  282. package/dist/session/history/database.js +18 -11
  283. package/dist/session/history/factory.cjs +2 -2
  284. package/dist/session/history/factory.d.ts +5 -1
  285. package/dist/session/history/factory.d.ts.map +1 -1
  286. package/dist/session/history/factory.js +2 -2
  287. package/dist/session/session-manager.cjs +37 -53
  288. package/dist/session/session-manager.d.ts +3 -17
  289. package/dist/session/session-manager.d.ts.map +1 -1
  290. package/dist/session/session-manager.js +37 -53
  291. package/dist/session/title-generator.cjs +3 -2
  292. package/dist/session/title-generator.d.ts +2 -1
  293. package/dist/session/title-generator.d.ts.map +1 -1
  294. package/dist/session/title-generator.js +3 -2
  295. package/dist/storage/blob/factory.cjs +9 -18
  296. package/dist/storage/blob/factory.d.ts +5 -4
  297. package/dist/storage/blob/factory.d.ts.map +1 -1
  298. package/dist/storage/blob/factory.js +8 -17
  299. package/dist/storage/blob/local-blob-store.cjs +25 -32
  300. package/dist/storage/blob/local-blob-store.d.ts +3 -2
  301. package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
  302. package/dist/storage/blob/local-blob-store.js +25 -32
  303. package/dist/storage/blob/memory-blob-store.cjs +326 -0
  304. package/dist/storage/blob/memory-blob-store.d.ts +66 -0
  305. package/dist/storage/blob/memory-blob-store.d.ts.map +1 -0
  306. package/dist/storage/blob/memory-blob-store.js +303 -0
  307. package/dist/storage/blob/schemas.cjs +3 -1
  308. package/dist/storage/blob/schemas.d.ts +6 -6
  309. package/dist/storage/blob/schemas.d.ts.map +1 -1
  310. package/dist/storage/blob/schemas.js +3 -1
  311. package/dist/storage/cache/factory.cjs +7 -8
  312. package/dist/storage/cache/factory.d.ts +4 -1
  313. package/dist/storage/cache/factory.d.ts.map +1 -1
  314. package/dist/storage/cache/factory.js +4 -5
  315. package/dist/storage/cache/redis-store.cjs +4 -1
  316. package/dist/storage/cache/redis-store.d.ts +3 -1
  317. package/dist/storage/cache/redis-store.d.ts.map +1 -1
  318. package/dist/storage/cache/redis-store.js +4 -1
  319. package/dist/storage/database/factory.cjs +13 -16
  320. package/dist/storage/database/factory.d.ts +5 -3
  321. package/dist/storage/database/factory.d.ts.map +1 -1
  322. package/dist/storage/database/factory.js +9 -12
  323. package/dist/storage/database/postgres-store.cjs +4 -1
  324. package/dist/storage/database/postgres-store.d.ts +3 -1
  325. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  326. package/dist/storage/database/postgres-store.js +4 -1
  327. package/dist/storage/database/schemas.cjs +3 -4
  328. package/dist/storage/database/schemas.d.ts +8 -16
  329. package/dist/storage/database/schemas.d.ts.map +1 -1
  330. package/dist/storage/database/schemas.js +3 -4
  331. package/dist/storage/database/sqlite-store.cjs +17 -45
  332. package/dist/storage/database/sqlite-store.d.ts +3 -3
  333. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  334. package/dist/storage/database/sqlite-store.js +17 -45
  335. package/dist/storage/schemas.cjs +3 -1
  336. package/dist/storage/schemas.d.ts +16 -23
  337. package/dist/storage/schemas.d.ts.map +1 -1
  338. package/dist/storage/schemas.js +3 -1
  339. package/dist/storage/storage-manager.cjs +15 -15
  340. package/dist/storage/storage-manager.d.ts +6 -6
  341. package/dist/storage/storage-manager.d.ts.map +1 -1
  342. package/dist/storage/storage-manager.js +15 -15
  343. package/dist/systemPrompt/contributors.cjs +15 -15
  344. package/dist/systemPrompt/contributors.d.ts +5 -3
  345. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  346. package/dist/systemPrompt/contributors.js +15 -15
  347. package/dist/systemPrompt/manager.cjs +11 -8
  348. package/dist/systemPrompt/manager.d.ts +4 -2
  349. package/dist/systemPrompt/manager.d.ts.map +1 -1
  350. package/dist/systemPrompt/manager.js +11 -8
  351. package/dist/systemPrompt/schemas.cjs +21 -1
  352. package/dist/systemPrompt/schemas.d.ts +53 -53
  353. package/dist/systemPrompt/schemas.d.ts.map +1 -1
  354. package/dist/systemPrompt/schemas.js +11 -1
  355. package/dist/telemetry/decorators.cjs +54 -15
  356. package/dist/telemetry/decorators.d.ts.map +1 -1
  357. package/dist/telemetry/decorators.js +54 -15
  358. package/dist/telemetry/utils.cjs +21 -14
  359. package/dist/telemetry/utils.d.ts +7 -3
  360. package/dist/telemetry/utils.d.ts.map +1 -1
  361. package/dist/telemetry/utils.js +21 -14
  362. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +2 -2
  363. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +2 -1
  364. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -1
  365. package/dist/tools/confirmation/allowed-tools-provider/factory.js +2 -2
  366. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +7 -6
  367. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +3 -1
  368. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -1
  369. package/dist/tools/confirmation/allowed-tools-provider/storage.js +7 -6
  370. package/dist/tools/errors.cjs +2 -1
  371. package/dist/tools/errors.d.ts.map +1 -1
  372. package/dist/tools/errors.js +2 -1
  373. package/dist/tools/internal-tools/constants.cjs +2 -1
  374. package/dist/tools/internal-tools/constants.d.ts +1 -1
  375. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  376. package/dist/tools/internal-tools/constants.js +2 -1
  377. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +1 -1
  378. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +1 -1
  379. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.cjs +192 -0
  380. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts +33 -0
  381. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.d.ts.map +1 -0
  382. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +169 -0
  383. package/dist/tools/internal-tools/provider.cjs +21 -17
  384. package/dist/tools/internal-tools/provider.d.ts +3 -1
  385. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  386. package/dist/tools/internal-tools/provider.js +21 -17
  387. package/dist/tools/internal-tools/registry.cjs +5 -0
  388. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  389. package/dist/tools/internal-tools/registry.js +5 -0
  390. package/dist/tools/schemas.cjs +16 -4
  391. package/dist/tools/schemas.d.ts +21 -9
  392. package/dist/tools/schemas.d.ts.map +1 -1
  393. package/dist/tools/schemas.js +15 -4
  394. package/dist/tools/tool-manager.cjs +64 -47
  395. package/dist/tools/tool-manager.d.ts +4 -2
  396. package/dist/tools/tool-manager.d.ts.map +1 -1
  397. package/dist/tools/tool-manager.js +61 -44
  398. package/dist/tools/types.d.ts +0 -4
  399. package/dist/tools/types.d.ts.map +1 -1
  400. package/dist/utils/env-file.cjs +118 -0
  401. package/dist/utils/env-file.d.ts +5 -0
  402. package/dist/utils/env-file.d.ts.map +1 -0
  403. package/dist/utils/env-file.js +85 -0
  404. package/dist/utils/error-conversion.cjs +23 -1
  405. package/dist/utils/error-conversion.d.ts +2 -1
  406. package/dist/utils/error-conversion.d.ts.map +1 -1
  407. package/dist/utils/error-conversion.js +23 -1
  408. package/dist/utils/execution-context.d.ts.map +1 -1
  409. package/dist/utils/fs-walk.d.ts.map +1 -1
  410. package/dist/utils/index.cjs +7 -9
  411. package/dist/utils/index.d.ts +3 -4
  412. package/dist/utils/index.d.ts.map +1 -1
  413. package/dist/utils/index.js +3 -4
  414. package/dist/utils/path.cjs +22 -57
  415. package/dist/utils/path.d.ts +8 -7
  416. package/dist/utils/path.d.ts.map +1 -1
  417. package/dist/utils/path.js +21 -54
  418. package/dist/utils/result.cjs +37 -14
  419. package/dist/utils/result.d.ts.map +1 -1
  420. package/dist/utils/result.js +37 -14
  421. package/dist/utils/schema.cjs +2 -3
  422. package/dist/utils/schema.d.ts +2 -1
  423. package/dist/utils/schema.d.ts.map +1 -1
  424. package/dist/utils/schema.js +1 -2
  425. package/dist/utils/service-initializer.cjs +87 -61
  426. package/dist/utils/service-initializer.d.ts +4 -2
  427. package/dist/utils/service-initializer.d.ts.map +1 -1
  428. package/dist/utils/service-initializer.js +69 -43
  429. package/package.json +7 -3
  430. package/dist/Dexto.cjs +0 -251
  431. package/dist/Dexto.d.ts +0 -191
  432. package/dist/Dexto.d.ts.map +0 -1
  433. package/dist/Dexto.js +0 -228
  434. package/dist/agent/registry/error-codes.cjs +0 -44
  435. package/dist/agent/registry/error-codes.d.ts +0 -21
  436. package/dist/agent/registry/error-codes.d.ts.map +0 -1
  437. package/dist/agent/registry/error-codes.js +0 -21
  438. package/dist/agent/registry/errors.cjs +0 -188
  439. package/dist/agent/registry/errors.d.ts +0 -63
  440. package/dist/agent/registry/errors.d.ts.map +0 -1
  441. package/dist/agent/registry/errors.js +0 -165
  442. package/dist/agent/registry/registry.cjs +0 -479
  443. package/dist/agent/registry/registry.d.ts +0 -130
  444. package/dist/agent/registry/registry.d.ts.map +0 -1
  445. package/dist/agent/registry/registry.js +0 -453
  446. package/dist/agent/registry/types.cjs +0 -74
  447. package/dist/agent/registry/types.d.ts +0 -142
  448. package/dist/agent/registry/types.d.ts.map +0 -1
  449. package/dist/agent/registry/types.js +0 -48
  450. package/dist/agent/registry/user-registry.cjs +0 -140
  451. package/dist/agent/registry/user-registry.d.ts +0 -34
  452. package/dist/agent/registry/user-registry.d.ts.map +0 -1
  453. package/dist/agent/registry/user-registry.js +0 -105
  454. package/dist/approval/providers/event-based-approval-provider.cjs +0 -156
  455. package/dist/approval/providers/event-based-approval-provider.d.ts +0 -39
  456. package/dist/approval/providers/event-based-approval-provider.d.ts.map +0 -1
  457. package/dist/approval/providers/event-based-approval-provider.js +0 -133
  458. package/dist/approval/providers/factory.d.ts.map +0 -1
  459. package/dist/approval/providers/noop-approval-provider.cjs +0 -54
  460. package/dist/approval/providers/noop-approval-provider.d.ts +0 -18
  461. package/dist/approval/providers/noop-approval-provider.d.ts.map +0 -1
  462. package/dist/approval/providers/noop-approval-provider.js +0 -31
  463. package/dist/config/agent-resolver.cjs +0 -153
  464. package/dist/config/agent-resolver.d.ts +0 -14
  465. package/dist/config/agent-resolver.d.ts.map +0 -1
  466. package/dist/config/agent-resolver.js +0 -123
  467. package/dist/config/error-codes.cjs +0 -39
  468. package/dist/config/error-codes.d.ts +0 -16
  469. package/dist/config/error-codes.d.ts.map +0 -1
  470. package/dist/config/error-codes.js +0 -16
  471. package/dist/config/errors.cjs +0 -126
  472. package/dist/config/errors.d.ts +0 -34
  473. package/dist/config/errors.d.ts.map +0 -1
  474. package/dist/config/errors.js +0 -103
  475. package/dist/config/index.cjs +0 -26
  476. package/dist/config/index.d.ts +0 -4
  477. package/dist/config/index.d.ts.map +0 -1
  478. package/dist/config/index.js +0 -3
  479. package/dist/config/loader.cjs +0 -119
  480. package/dist/config/loader.d.ts +0 -16
  481. package/dist/config/loader.d.ts.map +0 -1
  482. package/dist/config/loader.js +0 -86
  483. package/dist/config/writer.cjs +0 -182
  484. package/dist/config/writer.d.ts +0 -35
  485. package/dist/config/writer.d.ts.map +0 -1
  486. package/dist/config/writer.js +0 -147
  487. package/dist/preferences/constants.d.ts +0 -2
  488. package/dist/preferences/constants.d.ts.map +0 -1
  489. package/dist/preferences/constants.js +0 -5
  490. package/dist/preferences/error-codes.d.ts +0 -8
  491. package/dist/preferences/error-codes.d.ts.map +0 -1
  492. package/dist/preferences/error-codes.js +0 -12
  493. package/dist/preferences/errors.cjs +0 -75
  494. package/dist/preferences/errors.d.ts +0 -18
  495. package/dist/preferences/errors.d.ts.map +0 -1
  496. package/dist/preferences/errors.js +0 -51
  497. package/dist/preferences/index.cjs +0 -55
  498. package/dist/preferences/index.d.ts +0 -6
  499. package/dist/preferences/index.d.ts.map +0 -1
  500. package/dist/preferences/index.js +0 -32
  501. package/dist/preferences/loader.cjs +0 -138
  502. package/dist/preferences/loader.d.ts +0 -51
  503. package/dist/preferences/loader.d.ts.map +0 -1
  504. package/dist/preferences/loader.js +0 -110
  505. package/dist/preferences/schemas.cjs +0 -75
  506. package/dist/preferences/schemas.d.ts +0 -110
  507. package/dist/preferences/schemas.d.ts.map +0 -1
  508. package/dist/preferences/schemas.js +0 -49
  509. package/dist/utils/api-key-store.cjs +0 -56
  510. package/dist/utils/api-key-store.d.ts +0 -24
  511. package/dist/utils/api-key-store.d.ts.map +0 -1
  512. package/dist/utils/api-key-store.js +0 -31
  513. package/dist/utils/env.cjs +0 -154
  514. package/dist/utils/env.d.ts +0 -28
  515. package/dist/utils/env.d.ts.map +0 -1
  516. package/dist/utils/env.js +0 -119
  517. package/dist/utils/port-utils.cjs +0 -37
  518. package/dist/utils/port-utils.d.ts +0 -10
  519. package/dist/utils/port-utils.d.ts.map +0 -1
  520. package/dist/utils/port-utils.js +0 -14
  521. package/dist/utils/port-utils.spec.cjs +0 -26
  522. package/dist/utils/port-utils.spec.js +0 -25
  523. /package/dist/approval/{providers/factory.cjs → factory.cjs} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  var _ToolManager_decorators, _init;
7
7
  import { InternalToolsProvider } from "./internal-tools/provider.js";
8
8
  import { ToolError } from "./errors.js";
9
- import { logger } from "../logger/index.js";
9
+ import { DextoLogComponent } from "../logger/v2/types.js";
10
10
  import { ApprovalStatus } from "../approval/types.js";
11
11
  import { InstrumentClass } from "../telemetry/decorators.js";
12
12
  _ToolManager_decorators = [InstrumentClass({
@@ -36,22 +36,25 @@ let _ToolManager = class _ToolManager {
36
36
  // Tool caching for performance
37
37
  toolsCache = {};
38
38
  cacheValid = false;
39
- constructor(mcpManager, approvalManager, allowedToolsProvider, approvalMode, agentEventBus, toolPolicies, options) {
39
+ logger;
40
+ constructor(mcpManager, approvalManager, allowedToolsProvider, approvalMode, agentEventBus, toolPolicies, options, logger) {
40
41
  this.mcpManager = mcpManager;
41
42
  this.approvalManager = approvalManager;
42
43
  this.allowedToolsProvider = allowedToolsProvider;
43
44
  this.approvalMode = approvalMode;
44
45
  this.agentEventBus = agentEventBus;
45
46
  this.toolPolicies = toolPolicies;
47
+ this.logger = logger.createChild(DextoLogComponent.TOOLS);
46
48
  if (options?.internalToolsConfig && options.internalToolsConfig.length > 0) {
47
49
  this.internalToolsProvider = new InternalToolsProvider(
48
50
  options.internalToolsServices || {},
49
51
  approvalManager,
50
- options.internalToolsConfig
52
+ options.internalToolsConfig,
53
+ this.logger
51
54
  );
52
55
  }
53
56
  this.setupNotificationListeners();
54
- logger.debug("ToolManager initialized");
57
+ this.logger.debug("ToolManager initialized");
55
58
  }
56
59
  /**
57
60
  * Initialize the ToolManager and its components
@@ -60,7 +63,7 @@ let _ToolManager = class _ToolManager {
60
63
  if (this.internalToolsProvider) {
61
64
  await this.internalToolsProvider.initialize();
62
65
  }
63
- logger.debug("ToolManager initialization complete");
66
+ this.logger.debug("ToolManager initialization complete");
64
67
  }
65
68
  /**
66
69
  * Set plugin support services (called after construction to avoid circular dependencies)
@@ -69,7 +72,7 @@ let _ToolManager = class _ToolManager {
69
72
  this.pluginManager = pluginManager;
70
73
  this.sessionManager = sessionManager;
71
74
  this.stateManager = stateManager;
72
- logger.debug("Plugin support configured for ToolManager");
75
+ this.logger.debug("Plugin support configured for ToolManager");
73
76
  }
74
77
  /**
75
78
  * Invalidate the tools cache when tool sources change
@@ -82,14 +85,18 @@ let _ToolManager = class _ToolManager {
82
85
  * Set up listeners for MCP notifications to invalidate cache on changes
83
86
  */
84
87
  setupNotificationListeners() {
85
- this.agentEventBus.on("dexto:mcpServerConnected", async (payload) => {
88
+ this.agentEventBus.on("mcp:server-connected", async (payload) => {
86
89
  if (payload.success) {
87
- logger.debug(`\u{1F504} MCP server connected, invalidating tool cache: ${payload.name}`);
90
+ this.logger.debug(
91
+ `\u{1F504} MCP server connected, invalidating tool cache: ${payload.name}`
92
+ );
88
93
  this.invalidateCache();
89
94
  }
90
95
  });
91
- this.agentEventBus.on("dexto:mcpServerRemoved", async (payload) => {
92
- logger.debug(`\u{1F504} MCP server removed: ${payload.serverName}, invalidating tool cache`);
96
+ this.agentEventBus.on("mcp:server-removed", async (payload) => {
97
+ this.logger.debug(
98
+ `\u{1F504} MCP server removed: ${payload.serverName}, invalidating tool cache`
99
+ );
93
100
  this.invalidateCache();
94
101
  });
95
102
  }
@@ -124,7 +131,7 @@ let _ToolManager = class _ToolManager {
124
131
  try {
125
132
  mcpTools = await this.mcpManager.getAllTools();
126
133
  } catch (error) {
127
- logger.error(
134
+ this.logger.error(
128
135
  `Failed to get MCP tools: ${error instanceof Error ? error.message : String(error)}`
129
136
  );
130
137
  mcpTools = {};
@@ -132,7 +139,7 @@ let _ToolManager = class _ToolManager {
132
139
  try {
133
140
  internalTools = this.internalToolsProvider?.getAllTools() || {};
134
141
  } catch (error) {
135
- logger.error(
142
+ this.logger.error(
136
143
  `Failed to get internal tools: ${error instanceof Error ? error.message : String(error)}`
137
144
  );
138
145
  internalTools = {};
@@ -156,7 +163,7 @@ let _ToolManager = class _ToolManager {
156
163
  const totalTools = Object.keys(allTools).length;
157
164
  const mcpCount = Object.keys(mcpTools).length;
158
165
  const internalCount = Object.keys(internalTools).length;
159
- logger.debug(
166
+ this.logger.debug(
160
167
  `\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP \u2192 ${_ToolManager.MCP_TOOL_PREFIX}*, ${internalCount} internal \u2192 ${_ToolManager.INTERNAL_TOOL_PREFIX}*)`
161
168
  );
162
169
  return allTools;
@@ -179,11 +186,11 @@ let _ToolManager = class _ToolManager {
179
186
  * ALL tools must have source prefix - no exceptions
180
187
  */
181
188
  async executeTool(toolName, args, sessionId) {
182
- logger.debug(`\u{1F527} Tool execution requested: '${toolName}'`);
183
- logger.debug(`Tool args: ${JSON.stringify(args, null, 2)}`);
189
+ this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}'`);
190
+ this.logger.debug(`Tool args: ${JSON.stringify(args, null, 2)}`);
184
191
  await this.handleToolApproval(toolName, args, sessionId);
185
- logger.debug(`\u2705 Tool execution approved: ${toolName}`);
186
- logger.info(
192
+ this.logger.debug(`\u2705 Tool execution approved: ${toolName}`);
193
+ this.logger.info(
187
194
  `\u{1F527} Tool execution started for ${toolName}, sessionId: ${sessionId ?? "global"}`
188
195
  );
189
196
  const startTime = Date.now();
@@ -209,15 +216,15 @@ let _ToolManager = class _ToolManager {
209
216
  try {
210
217
  let result;
211
218
  if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
212
- logger.debug(`\u{1F527} Detected MCP tool: '${toolName}'`);
219
+ this.logger.debug(`\u{1F527} Detected MCP tool: '${toolName}'`);
213
220
  const actualToolName = toolName.substring(_ToolManager.MCP_TOOL_PREFIX.length);
214
221
  if (actualToolName.length === 0) {
215
222
  throw ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
216
223
  }
217
- logger.debug(`\u{1F3AF} MCP routing: '${toolName}' -> '${actualToolName}'`);
224
+ this.logger.debug(`\u{1F3AF} MCP routing: '${toolName}' -> '${actualToolName}'`);
218
225
  result = await this.mcpManager.executeTool(actualToolName, args, sessionId);
219
226
  } else if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
220
- logger.debug(`\u{1F527} Detected internal tool: '${toolName}'`);
227
+ this.logger.debug(`\u{1F527} Detected internal tool: '${toolName}'`);
221
228
  const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
222
229
  if (actualToolName.length === 0) {
223
230
  throw ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
@@ -225,24 +232,26 @@ let _ToolManager = class _ToolManager {
225
232
  if (!this.internalToolsProvider) {
226
233
  throw ToolError.internalToolsNotInitialized(toolName);
227
234
  }
228
- logger.debug(`\u{1F3AF} Internal routing: '${toolName}' -> '${actualToolName}'`);
235
+ this.logger.debug(`\u{1F3AF} Internal routing: '${toolName}' -> '${actualToolName}'`);
229
236
  result = await this.internalToolsProvider.executeTool(
230
237
  actualToolName,
231
238
  args,
232
239
  sessionId
233
240
  );
234
241
  } else {
235
- logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
242
+ this.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
236
243
  const stats = await this.getToolStats();
237
- logger.error(
244
+ this.logger.error(
238
245
  `\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*' or '${_ToolManager.INTERNAL_TOOL_PREFIX}*')`
239
246
  );
240
- logger.debug(`Available: ${stats.mcp} MCP tools, ${stats.internal} internal tools`);
247
+ this.logger.debug(
248
+ `Available: ${stats.mcp} MCP tools, ${stats.internal} internal tools`
249
+ );
241
250
  throw ToolError.notFound(toolName);
242
251
  }
243
252
  const duration = Date.now() - startTime;
244
- logger.debug(`\u{1F3AF} Tool execution completed in ${duration}ms: '${toolName}'`);
245
- logger.info(
253
+ this.logger.debug(`\u{1F3AF} Tool execution completed in ${duration}ms: '${toolName}'`);
254
+ this.logger.info(
246
255
  `\u2705 Tool execution completed successfully for ${toolName} in ${duration}ms, sessionId: ${sessionId ?? "global"}`
247
256
  );
248
257
  if (this.pluginManager && this.sessionManager && this.stateManager) {
@@ -268,7 +277,7 @@ let _ToolManager = class _ToolManager {
268
277
  return result;
269
278
  } catch (error) {
270
279
  const duration = Date.now() - startTime;
271
- logger.error(
280
+ this.logger.error(
272
281
  `\u274C Tool execution failed for ${toolName} after ${duration}ms, sessionId: ${sessionId ?? "global"}: ${error instanceof Error ? error.message : String(error)}`
273
282
  );
274
283
  if (this.pluginManager && this.sessionManager && this.stateManager) {
@@ -312,7 +321,7 @@ let _ToolManager = class _ToolManager {
312
321
  try {
313
322
  mcpTools = await this.mcpManager.getAllTools();
314
323
  } catch (error) {
315
- logger.error(
324
+ this.logger.error(
316
325
  `Failed to get MCP tools for stats: ${error instanceof Error ? error.message : String(error)}`
317
326
  );
318
327
  mcpTools = {};
@@ -320,7 +329,7 @@ let _ToolManager = class _ToolManager {
320
329
  try {
321
330
  internalTools = this.internalToolsProvider?.getAllTools() || {};
322
331
  } catch (error) {
323
- logger.error(
332
+ this.logger.error(
324
333
  `Failed to get internal tools for stats: ${error instanceof Error ? error.message : String(error)}`
325
334
  );
326
335
  internalTools = {};
@@ -403,39 +412,39 @@ let _ToolManager = class _ToolManager {
403
412
  }
404
413
  /**
405
414
  * Handle tool approval/confirmation flow
406
- * Checks allowed list, manages approval modes (event-based, auto-approve, auto-deny),
415
+ * Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
407
416
  * and handles remember choice logic
408
417
  */
409
418
  async handleToolApproval(toolName, args, sessionId) {
410
419
  if (this.isInAlwaysDenyList(toolName)) {
411
- logger.info(
420
+ this.logger.info(
412
421
  `Tool '${toolName}' is in static deny list \u2013 blocking execution (session: ${sessionId ?? "global"})`
413
422
  );
414
- logger.debug(`\u{1F6AB} Tool execution blocked by policy: ${toolName}`);
423
+ this.logger.debug(`\u{1F6AB} Tool execution blocked by policy: ${toolName}`);
415
424
  throw ToolError.executionDenied(toolName, sessionId);
416
425
  }
417
426
  if (this.isInAlwaysAllowList(toolName)) {
418
- logger.info(
427
+ this.logger.info(
419
428
  `Tool '${toolName}' is in static allow list \u2013 skipping confirmation (session: ${sessionId ?? "global"})`
420
429
  );
421
430
  return;
422
431
  }
423
432
  const isAllowed = await this.allowedToolsProvider.isToolAllowed(toolName, sessionId);
424
433
  if (isAllowed) {
425
- logger.info(
434
+ this.logger.info(
426
435
  `Tool '${toolName}' already allowed for session '${sessionId ?? "global"}' \u2013 skipping confirmation.`
427
436
  );
428
437
  return;
429
438
  }
430
439
  if (this.approvalMode === "auto-approve") {
431
- logger.debug(`\u{1F7E2} Auto-approving tool execution: ${toolName}`);
440
+ this.logger.debug(`\u{1F7E2} Auto-approving tool execution: ${toolName}`);
432
441
  return;
433
442
  }
434
443
  if (this.approvalMode === "auto-deny") {
435
- logger.debug(`\u{1F6AB} Auto-denying tool execution: ${toolName}`);
444
+ this.logger.debug(`\u{1F6AB} Auto-denying tool execution: ${toolName}`);
436
445
  throw ToolError.executionDenied(toolName, sessionId);
437
446
  }
438
- logger.info(
447
+ this.logger.info(
439
448
  `Tool confirmation requested for ${toolName}, sessionId: ${sessionId ?? "global"}`
440
449
  );
441
450
  try {
@@ -451,23 +460,31 @@ let _ToolManager = class _ToolManager {
451
460
  if (response.status === ApprovalStatus.APPROVED && rememberChoice) {
452
461
  const allowSessionId = sessionId ?? response.sessionId;
453
462
  await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
454
- logger.info(
463
+ this.logger.info(
455
464
  `Tool '${toolName}' added to allowed tools for session '${allowSessionId ?? "global"}' (remember choice selected)`
456
465
  );
457
466
  }
458
467
  const approved = response.status === ApprovalStatus.APPROVED;
459
468
  if (!approved) {
460
- logger.info(
461
- `Tool confirmation denied for ${toolName}, sessionId: ${sessionId ?? "global"}`
469
+ if (response.status === ApprovalStatus.CANCELLED && response.reason === "timeout") {
470
+ this.logger.info(
471
+ `Tool confirmation timed out for ${toolName}, sessionId: ${sessionId ?? "global"}`
472
+ );
473
+ this.logger.debug(`\u23F1\uFE0F Tool execution timed out: ${toolName}`);
474
+ const timeoutMs = response.timeoutMs ?? 0;
475
+ throw ToolError.executionTimeout(toolName, timeoutMs, sessionId);
476
+ }
477
+ this.logger.info(
478
+ `Tool confirmation denied for ${toolName}, sessionId: ${sessionId ?? "global"}, reason: ${response.reason ?? "unknown"}`
462
479
  );
463
- logger.debug(`\u{1F6AB} Tool execution denied: ${toolName}`);
480
+ this.logger.debug(`\u{1F6AB} Tool execution denied: ${toolName}`);
464
481
  throw ToolError.executionDenied(toolName, sessionId);
465
482
  }
466
- logger.info(
483
+ this.logger.info(
467
484
  `Tool confirmation approved for ${toolName}, sessionId: ${sessionId ?? "global"}`
468
485
  );
469
486
  } catch (error) {
470
- logger.error(
487
+ this.logger.error(
471
488
  `Tool confirmation error for ${toolName}: ${error instanceof Error ? error.message : String(error)}`
472
489
  );
473
490
  throw error;
@@ -480,7 +497,7 @@ let _ToolManager = class _ToolManager {
480
497
  async refresh() {
481
498
  await this.mcpManager.refresh();
482
499
  this.invalidateCache();
483
- logger.debug("ToolManager refreshed (including MCP server capabilities)");
500
+ this.logger.debug("ToolManager refreshed (including MCP server capabilities)");
484
501
  }
485
502
  /**
486
503
  * Get list of pending confirmation requests
@@ -38,10 +38,6 @@ export interface ToolResult {
38
38
  success: boolean;
39
39
  data?: any;
40
40
  error?: string;
41
- metadata?: {
42
- type: string;
43
- mimeType?: string;
44
- };
45
41
  }
46
42
  /**
47
43
  * Tool call representation
@@ -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;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;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;CAC3F;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;IACf,QAAQ,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;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;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;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;CAC3F;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,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;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"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var env_file_exports = {};
30
+ __export(env_file_exports, {
31
+ updateEnvFile: () => updateEnvFile
32
+ });
33
+ module.exports = __toCommonJS(env_file_exports);
34
+ var path = __toESM(require("node:path"), 1);
35
+ var import_node_fs = require("node:fs");
36
+ const DEXTO_ENV_KEYS = [
37
+ "OPENAI_API_KEY",
38
+ "ANTHROPIC_API_KEY",
39
+ "GOOGLE_GENERATIVE_AI_API_KEY",
40
+ "GROQ_API_KEY",
41
+ "COHERE_API_KEY",
42
+ "XAI_API_KEY",
43
+ "DEXTO_LOG_LEVEL"
44
+ ];
45
+ function isDextoEnvKey(value) {
46
+ return DEXTO_ENV_KEYS.includes(value);
47
+ }
48
+ async function updateEnvFile(envFilePath, updates) {
49
+ await import_node_fs.promises.mkdir(path.dirname(envFilePath), { recursive: true });
50
+ let envLines = [];
51
+ try {
52
+ const existingEnv = await import_node_fs.promises.readFile(envFilePath, "utf8");
53
+ envLines = existingEnv.split("\n");
54
+ } catch {
55
+ }
56
+ const currentValues = {};
57
+ envLines.forEach((line) => {
58
+ const match = line.match(/^([A-Z0-9_]+)=(.*)$/);
59
+ if (match && match[1] && isDextoEnvKey(match[1])) {
60
+ const value = match[2] ?? "";
61
+ currentValues[match[1]] = value;
62
+ }
63
+ });
64
+ const updatedValues = Object.fromEntries(
65
+ DEXTO_ENV_KEYS.map((key) => {
66
+ const update = updates[key];
67
+ const current = currentValues[key];
68
+ const fallback = key === "DEXTO_LOG_LEVEL" ? "info" : "";
69
+ const value = update !== void 0 ? update : current ?? fallback;
70
+ return [key, value];
71
+ })
72
+ );
73
+ const sectionHeader = "## Dexto env variables";
74
+ const headerIndex = envLines.findIndex((line) => line.trim() === sectionHeader);
75
+ let contentLines;
76
+ if (headerIndex !== -1) {
77
+ const beforeSection = envLines.slice(0, headerIndex);
78
+ let sectionEnd = headerIndex + 1;
79
+ while (sectionEnd < envLines.length && envLines[sectionEnd]?.trim() !== "") {
80
+ sectionEnd++;
81
+ }
82
+ if (sectionEnd < envLines.length && envLines[sectionEnd]?.trim() === "") {
83
+ sectionEnd++;
84
+ }
85
+ const afterSection = envLines.slice(sectionEnd);
86
+ contentLines = [...beforeSection, ...afterSection];
87
+ } else {
88
+ contentLines = envLines;
89
+ }
90
+ const existingEnvVars = {};
91
+ contentLines.forEach((line) => {
92
+ const match = line.match(/^([A-Z0-9_]+)=(.*)$/);
93
+ if (match && match[1] && isDextoEnvKey(match[1])) {
94
+ const value = match[2] ?? "";
95
+ existingEnvVars[match[1]] = value;
96
+ }
97
+ });
98
+ if (contentLines.length > 0) {
99
+ if (contentLines[contentLines.length - 1]?.trim() !== "") {
100
+ contentLines.push("");
101
+ }
102
+ } else {
103
+ contentLines.push("");
104
+ }
105
+ contentLines.push(sectionHeader);
106
+ for (const key of DEXTO_ENV_KEYS) {
107
+ if (key in existingEnvVars && !(key in updates)) {
108
+ continue;
109
+ }
110
+ contentLines.push(`${key}=${updatedValues[key]}`);
111
+ }
112
+ contentLines.push("");
113
+ await import_node_fs.promises.writeFile(envFilePath, contentLines.join("\n"), "utf8");
114
+ }
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ updateEnvFile
118
+ });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Update a .env file with Dexto environment variables, ensuring our section stays consistent.
3
+ */
4
+ export declare function updateEnvFile(envFilePath: string, updates: Record<string, string>): Promise<void>;
5
+ //# sourceMappingURL=env-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-file.d.ts","sourceRoot":"","sources":["../../src/utils/env-file.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,wBAAsB,aAAa,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAgFf"}
@@ -0,0 +1,85 @@
1
+ import "../chunk-C6A6W6XS.js";
2
+ import * as path from "node:path";
3
+ import { promises as fs } from "node:fs";
4
+ const DEXTO_ENV_KEYS = [
5
+ "OPENAI_API_KEY",
6
+ "ANTHROPIC_API_KEY",
7
+ "GOOGLE_GENERATIVE_AI_API_KEY",
8
+ "GROQ_API_KEY",
9
+ "COHERE_API_KEY",
10
+ "XAI_API_KEY",
11
+ "DEXTO_LOG_LEVEL"
12
+ ];
13
+ function isDextoEnvKey(value) {
14
+ return DEXTO_ENV_KEYS.includes(value);
15
+ }
16
+ async function updateEnvFile(envFilePath, updates) {
17
+ await fs.mkdir(path.dirname(envFilePath), { recursive: true });
18
+ let envLines = [];
19
+ try {
20
+ const existingEnv = await fs.readFile(envFilePath, "utf8");
21
+ envLines = existingEnv.split("\n");
22
+ } catch {
23
+ }
24
+ const currentValues = {};
25
+ envLines.forEach((line) => {
26
+ const match = line.match(/^([A-Z0-9_]+)=(.*)$/);
27
+ if (match && match[1] && isDextoEnvKey(match[1])) {
28
+ const value = match[2] ?? "";
29
+ currentValues[match[1]] = value;
30
+ }
31
+ });
32
+ const updatedValues = Object.fromEntries(
33
+ DEXTO_ENV_KEYS.map((key) => {
34
+ const update = updates[key];
35
+ const current = currentValues[key];
36
+ const fallback = key === "DEXTO_LOG_LEVEL" ? "info" : "";
37
+ const value = update !== void 0 ? update : current ?? fallback;
38
+ return [key, value];
39
+ })
40
+ );
41
+ const sectionHeader = "## Dexto env variables";
42
+ const headerIndex = envLines.findIndex((line) => line.trim() === sectionHeader);
43
+ let contentLines;
44
+ if (headerIndex !== -1) {
45
+ const beforeSection = envLines.slice(0, headerIndex);
46
+ let sectionEnd = headerIndex + 1;
47
+ while (sectionEnd < envLines.length && envLines[sectionEnd]?.trim() !== "") {
48
+ sectionEnd++;
49
+ }
50
+ if (sectionEnd < envLines.length && envLines[sectionEnd]?.trim() === "") {
51
+ sectionEnd++;
52
+ }
53
+ const afterSection = envLines.slice(sectionEnd);
54
+ contentLines = [...beforeSection, ...afterSection];
55
+ } else {
56
+ contentLines = envLines;
57
+ }
58
+ const existingEnvVars = {};
59
+ contentLines.forEach((line) => {
60
+ const match = line.match(/^([A-Z0-9_]+)=(.*)$/);
61
+ if (match && match[1] && isDextoEnvKey(match[1])) {
62
+ const value = match[2] ?? "";
63
+ existingEnvVars[match[1]] = value;
64
+ }
65
+ });
66
+ if (contentLines.length > 0) {
67
+ if (contentLines[contentLines.length - 1]?.trim() !== "") {
68
+ contentLines.push("");
69
+ }
70
+ } else {
71
+ contentLines.push("");
72
+ }
73
+ contentLines.push(sectionHeader);
74
+ for (const key of DEXTO_ENV_KEYS) {
75
+ if (key in existingEnvVars && !(key in updates)) {
76
+ continue;
77
+ }
78
+ contentLines.push(`${key}=${updatedValues[key]}`);
79
+ }
80
+ contentLines.push("");
81
+ await fs.writeFile(envFilePath, contentLines.join("\n"), "utf8");
82
+ }
83
+ export {
84
+ updateEnvFile
85
+ };
@@ -22,11 +22,32 @@ __export(error_conversion_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(error_conversion_exports);
24
24
  var import_safe_stringify = require("./safe-stringify.js");
25
- function toError(error) {
25
+ function toError(error, logger) {
26
26
  if (error instanceof Error) {
27
+ logger.info(`error is already an Error: ${error.message}`);
27
28
  return error;
28
29
  }
29
30
  if (error && typeof error === "object") {
31
+ const errorObj = error;
32
+ if (errorObj.error?.data?.error?.message) {
33
+ logger.info(
34
+ `Extracted error from error.error.data.error.message: ${errorObj.error.data.error.message}`
35
+ );
36
+ return new Error(errorObj.error.data.error.message, { cause: error });
37
+ }
38
+ if (errorObj.error?.responseBody && typeof errorObj.error.responseBody === "string") {
39
+ try {
40
+ const parsed = JSON.parse(errorObj.error.responseBody);
41
+ if (parsed?.error?.message) {
42
+ logger.info(
43
+ `Extracted error from error.error.responseBody: ${parsed.error.message}`
44
+ );
45
+ return new Error(parsed.error.message, { cause: error });
46
+ }
47
+ } catch {
48
+ logger.info(`Failed to parse error.error.responseBody as JSON`);
49
+ }
50
+ }
30
51
  if ("message" in error && typeof error.message === "string") {
31
52
  return new Error(error.message, { cause: error });
32
53
  }
@@ -40,6 +61,7 @@ function toError(error) {
40
61
  return new Error(error.description, { cause: error });
41
62
  }
42
63
  const serialized = (0, import_safe_stringify.safeStringify)(error);
64
+ logger.info(`falling back to safe serialization for complex objects: ${serialized}`);
43
65
  return new Error(serialized);
44
66
  }
45
67
  if (typeof error === "string") {
@@ -2,11 +2,12 @@
2
2
  * Utility functions for converting various error types to proper Error instances
3
3
  * with meaningful messages instead of "[object Object]"
4
4
  */
5
+ import type { IDextoLogger } from '../logger/v2/types.js';
5
6
  /**
6
7
  * Converts any error value to an Error instance with a meaningful message
7
8
  *
8
9
  * @param error - The error value to convert (can be Error, object, string, etc.)
9
10
  * @returns Error instance with extracted or serialized message
10
11
  */
11
- export declare function toError(error: unknown): Error;
12
+ export declare function toError(error: unknown, logger: IDextoLogger): Error;
12
13
  //# sourceMappingURL=error-conversion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-conversion.d.ts","sourceRoot":"","sources":["../../src/utils/error-conversion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAkC7C"}
1
+ {"version":3,"file":"error-conversion.d.ts","sourceRoot":"","sources":["../../src/utils/error-conversion.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,CAkEnE"}
@@ -1,10 +1,31 @@
1
1
  import "../chunk-C6A6W6XS.js";
2
2
  import { safeStringify } from "./safe-stringify.js";
3
- function toError(error) {
3
+ function toError(error, logger) {
4
4
  if (error instanceof Error) {
5
+ logger.info(`error is already an Error: ${error.message}`);
5
6
  return error;
6
7
  }
7
8
  if (error && typeof error === "object") {
9
+ const errorObj = error;
10
+ if (errorObj.error?.data?.error?.message) {
11
+ logger.info(
12
+ `Extracted error from error.error.data.error.message: ${errorObj.error.data.error.message}`
13
+ );
14
+ return new Error(errorObj.error.data.error.message, { cause: error });
15
+ }
16
+ if (errorObj.error?.responseBody && typeof errorObj.error.responseBody === "string") {
17
+ try {
18
+ const parsed = JSON.parse(errorObj.error.responseBody);
19
+ if (parsed?.error?.message) {
20
+ logger.info(
21
+ `Extracted error from error.error.responseBody: ${parsed.error.message}`
22
+ );
23
+ return new Error(parsed.error.message, { cause: error });
24
+ }
25
+ } catch {
26
+ logger.info(`Failed to parse error.error.responseBody as JSON`);
27
+ }
28
+ }
8
29
  if ("message" in error && typeof error.message === "string") {
9
30
  return new Error(error.message, { cause: error });
10
31
  }
@@ -18,6 +39,7 @@ function toError(error) {
18
39
  return new Error(error.description, { cause: error });
19
40
  }
20
41
  const serialized = safeStringify(error);
42
+ logger.info(`falling back to safe serialization for complex objects: ${serialized}`);
21
43
  return new Error(serialized);
22
44
  }
23
45
  if (typeof error === "string") {
@@ -1 +1 @@
1
- {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/utils/execution-context.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,CAAC;AAgD/E;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAErF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAsB,GAAG,gBAAgB,CAavF"}
1
+ {"version":3,"file":"execution-context.d.ts","sourceRoot":"","sources":["../../src/utils/execution-context.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,CAAC;AAgD/E;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAErF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAsB,GAAG,gBAAgB,CAavF"}
@@ -1 +1 @@
1
- {"version":3,"file":"fs-walk.d.ts","sourceRoot":"","sources":["../../src/utils/fs-walk.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACxC,MAAM,GAAG,IAAI,CAef"}
1
+ {"version":3,"file":"fs-walk.d.ts","sourceRoot":"","sources":["../../src/utils/fs-walk.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACxC,MAAM,GAAG,IAAI,CAef"}