@dexto/core 1.1.11 → 1.2.1

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 (416) hide show
  1. package/README.md +24 -4
  2. package/dist/Dexto.cjs +4 -14
  3. package/dist/Dexto.d.ts +8 -29
  4. package/dist/Dexto.d.ts.map +1 -1
  5. package/dist/Dexto.js +4 -12
  6. package/dist/agent/DextoAgent.cjs +92 -3
  7. package/dist/agent/DextoAgent.d.ts +12 -4
  8. package/dist/agent/DextoAgent.d.ts.map +1 -1
  9. package/dist/agent/DextoAgent.js +52 -3
  10. package/dist/agent/agentCard.js +1 -0
  11. package/dist/agent/error-codes.cjs +1 -0
  12. package/dist/agent/error-codes.d.ts +1 -0
  13. package/dist/agent/error-codes.d.ts.map +1 -1
  14. package/dist/agent/error-codes.js +2 -0
  15. package/dist/agent/errors.cjs +13 -0
  16. package/dist/agent/errors.d.ts +4 -0
  17. package/dist/agent/errors.d.ts.map +1 -1
  18. package/dist/agent/errors.js +14 -0
  19. package/dist/agent/index.js +1 -0
  20. package/dist/agent/registry/error-codes.js +1 -0
  21. package/dist/agent/registry/errors.js +1 -0
  22. package/dist/agent/registry/registry.js +1 -0
  23. package/dist/agent/registry/types.js +1 -0
  24. package/dist/agent/registry/user-registry.js +1 -0
  25. package/dist/agent/schemas.cjs +6 -1
  26. package/dist/agent/schemas.d.ts +113 -3
  27. package/dist/agent/schemas.d.ts.map +1 -1
  28. package/dist/agent/schemas.js +7 -1
  29. package/dist/agent/state-manager.js +1 -0
  30. package/dist/approval/error-codes.js +1 -0
  31. package/dist/approval/errors.js +1 -0
  32. package/dist/approval/index.js +1 -0
  33. package/dist/approval/manager.cjs +30 -0
  34. package/dist/approval/manager.d.ts +23 -1
  35. package/dist/approval/manager.d.ts.map +1 -1
  36. package/dist/approval/manager.js +31 -0
  37. package/dist/approval/providers/event-based-approval-provider.js +1 -0
  38. package/dist/approval/providers/factory.js +1 -0
  39. package/dist/approval/providers/noop-approval-provider.js +1 -0
  40. package/dist/approval/schemas.cjs +36 -0
  41. package/dist/approval/schemas.d.ts +173 -0
  42. package/dist/approval/schemas.d.ts.map +1 -1
  43. package/dist/approval/schemas.js +33 -0
  44. package/dist/approval/types.cjs +1 -0
  45. package/dist/approval/types.d.ts +27 -1
  46. package/dist/approval/types.d.ts.map +1 -1
  47. package/dist/approval/types.js +2 -0
  48. package/dist/chunk-C6A6W6XS.js +53 -0
  49. package/dist/config/agent-resolver.js +1 -0
  50. package/dist/config/error-codes.js +1 -0
  51. package/dist/config/errors.js +1 -0
  52. package/dist/config/loader.js +1 -0
  53. package/dist/config/writer.js +1 -0
  54. package/dist/context/compression/middle-removal.js +1 -0
  55. package/dist/context/compression/oldest-removal.js +1 -0
  56. package/dist/context/error-codes.js +1 -0
  57. package/dist/context/errors.js +1 -0
  58. package/dist/context/index.js +1 -0
  59. package/dist/context/manager.cjs +36 -1
  60. package/dist/context/manager.d.ts.map +1 -1
  61. package/dist/context/manager.js +27 -1
  62. package/dist/context/media-helpers.js +1 -0
  63. package/dist/context/utils.cjs +102 -6
  64. package/dist/context/utils.d.ts +35 -2
  65. package/dist/context/utils.d.ts.map +1 -1
  66. package/dist/context/utils.js +100 -6
  67. package/dist/errors/DextoBaseError.js +1 -0
  68. package/dist/errors/DextoRuntimeError.js +1 -0
  69. package/dist/errors/DextoValidationError.js +1 -0
  70. package/dist/errors/index.js +1 -0
  71. package/dist/errors/result-bridge.js +1 -0
  72. package/dist/errors/types.cjs +3 -0
  73. package/dist/errors/types.d.ts +7 -2
  74. package/dist/errors/types.d.ts.map +1 -1
  75. package/dist/errors/types.js +4 -0
  76. package/dist/events/index.cjs +1 -0
  77. package/dist/events/index.d.ts +6 -2
  78. package/dist/events/index.d.ts.map +1 -1
  79. package/dist/events/index.js +2 -0
  80. package/dist/filesystem/error-codes.cjs +53 -0
  81. package/dist/filesystem/error-codes.d.ts +31 -0
  82. package/dist/filesystem/error-codes.d.ts.map +1 -0
  83. package/dist/filesystem/error-codes.js +30 -0
  84. package/dist/filesystem/errors.cjs +303 -0
  85. package/dist/filesystem/errors.d.ts +109 -0
  86. package/dist/filesystem/errors.d.ts.map +1 -0
  87. package/dist/filesystem/errors.js +280 -0
  88. package/dist/filesystem/filesystem-service.cjs +482 -0
  89. package/dist/filesystem/filesystem-service.d.ts +57 -0
  90. package/dist/filesystem/filesystem-service.d.ts.map +1 -0
  91. package/dist/filesystem/filesystem-service.js +449 -0
  92. package/dist/filesystem/index.cjs +37 -0
  93. package/dist/filesystem/index.d.ts +11 -0
  94. package/dist/filesystem/index.d.ts.map +1 -0
  95. package/dist/filesystem/index.js +11 -0
  96. package/dist/filesystem/path-validator.cjs +172 -0
  97. package/dist/filesystem/path-validator.d.ts +53 -0
  98. package/dist/filesystem/path-validator.d.ts.map +1 -0
  99. package/dist/filesystem/path-validator.js +139 -0
  100. package/dist/filesystem/types.cjs +16 -0
  101. package/dist/filesystem/types.d.ts +171 -0
  102. package/dist/filesystem/types.d.ts.map +1 -0
  103. package/dist/filesystem/types.js +0 -0
  104. package/dist/index.browser.js +1 -0
  105. package/dist/index.cjs +3 -3
  106. package/dist/index.d.ts +2 -1
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +3 -2
  109. package/dist/llm/error-codes.js +1 -0
  110. package/dist/llm/errors.js +1 -0
  111. package/dist/llm/formatters/anthropic.js +1 -0
  112. package/dist/llm/formatters/factory.js +1 -0
  113. package/dist/llm/formatters/openai.js +1 -0
  114. package/dist/llm/formatters/vercel.js +1 -0
  115. package/dist/llm/registry.cjs +15 -15
  116. package/dist/llm/registry.d.ts +1 -1
  117. package/dist/llm/registry.js +16 -15
  118. package/dist/llm/resolver.js +1 -0
  119. package/dist/llm/schemas.cjs +6 -2
  120. package/dist/llm/schemas.d.ts +10 -0
  121. package/dist/llm/schemas.d.ts.map +1 -1
  122. package/dist/llm/schemas.js +7 -2
  123. package/dist/llm/services/anthropic.cjs +67 -0
  124. package/dist/llm/services/anthropic.d.ts +6 -0
  125. package/dist/llm/services/anthropic.d.ts.map +1 -1
  126. package/dist/llm/services/anthropic.js +27 -0
  127. package/dist/llm/services/factory.js +1 -0
  128. package/dist/llm/services/openai.cjs +87 -0
  129. package/dist/llm/services/openai.d.ts +6 -0
  130. package/dist/llm/services/openai.d.ts.map +1 -1
  131. package/dist/llm/services/openai.js +47 -0
  132. package/dist/llm/services/test-utils.integration.cjs +1 -1
  133. package/dist/llm/services/test-utils.integration.js +2 -1
  134. package/dist/llm/services/vercel.cjs +144 -97
  135. package/dist/llm/services/vercel.d.ts +6 -1
  136. package/dist/llm/services/vercel.d.ts.map +1 -1
  137. package/dist/llm/services/vercel.js +105 -98
  138. package/dist/llm/tokenizer/anthropic.js +1 -0
  139. package/dist/llm/tokenizer/default.js +1 -0
  140. package/dist/llm/tokenizer/factory.js +1 -0
  141. package/dist/llm/tokenizer/google.js +1 -0
  142. package/dist/llm/tokenizer/openai.cjs +1 -1
  143. package/dist/llm/tokenizer/openai.d.ts +1 -1
  144. package/dist/llm/tokenizer/openai.js +2 -1
  145. package/dist/llm/tokenizer/types.js +1 -0
  146. package/dist/llm/types.d.ts +2 -2
  147. package/dist/llm/types.d.ts.map +1 -1
  148. package/dist/llm/types.js +1 -0
  149. package/dist/llm/validation.js +1 -0
  150. package/dist/logger/browser.js +1 -0
  151. package/dist/logger/logger.d.ts +42 -0
  152. package/dist/logger/logger.d.ts.map +1 -1
  153. package/dist/logger/logger.js +1 -0
  154. package/dist/mcp/error-codes.cjs +1 -0
  155. package/dist/mcp/error-codes.d.ts +1 -0
  156. package/dist/mcp/error-codes.d.ts.map +1 -1
  157. package/dist/mcp/error-codes.js +2 -0
  158. package/dist/mcp/errors.cjs +12 -0
  159. package/dist/mcp/errors.d.ts +7 -0
  160. package/dist/mcp/errors.d.ts.map +1 -1
  161. package/dist/mcp/errors.js +13 -0
  162. package/dist/mcp/manager.cjs +66 -16
  163. package/dist/mcp/manager.d.ts +7 -0
  164. package/dist/mcp/manager.d.ts.map +1 -1
  165. package/dist/mcp/manager.js +67 -16
  166. package/dist/mcp/mcp-client.js +1 -0
  167. package/dist/mcp/resolver.js +1 -0
  168. package/dist/mcp/schemas.js +1 -0
  169. package/dist/mcp/types.d.ts +1 -1
  170. package/dist/mcp/types.d.ts.map +1 -1
  171. package/dist/memory/error-codes.js +1 -0
  172. package/dist/memory/errors.js +1 -0
  173. package/dist/memory/index.js +1 -0
  174. package/dist/memory/manager.js +1 -0
  175. package/dist/memory/schemas.js +1 -0
  176. package/dist/plugins/builtins/content-policy.js +1 -0
  177. package/dist/plugins/builtins/response-sanitizer.js +1 -0
  178. package/dist/plugins/error-codes.js +1 -0
  179. package/dist/plugins/index.js +1 -0
  180. package/dist/plugins/loader.js +1 -0
  181. package/dist/plugins/manager.js +1 -0
  182. package/dist/plugins/registrations/builtins.js +1 -0
  183. package/dist/plugins/schemas.js +1 -0
  184. package/dist/preferences/constants.js +1 -0
  185. package/dist/preferences/error-codes.js +1 -0
  186. package/dist/preferences/errors.js +1 -0
  187. package/dist/preferences/index.js +1 -0
  188. package/dist/preferences/loader.cjs +3 -1
  189. package/dist/preferences/loader.d.ts +10 -1
  190. package/dist/preferences/loader.d.ts.map +1 -1
  191. package/dist/preferences/loader.js +4 -1
  192. package/dist/preferences/schemas.cjs +2 -1
  193. package/dist/preferences/schemas.d.ts +8 -0
  194. package/dist/preferences/schemas.d.ts.map +1 -1
  195. package/dist/preferences/schemas.js +3 -1
  196. package/dist/process/command-validator.cjs +544 -0
  197. package/dist/process/command-validator.d.ts +46 -0
  198. package/dist/process/command-validator.d.ts.map +1 -0
  199. package/dist/process/command-validator.js +521 -0
  200. package/dist/process/error-codes.cjs +47 -0
  201. package/dist/process/error-codes.d.ts +25 -0
  202. package/dist/process/error-codes.d.ts.map +1 -0
  203. package/dist/process/error-codes.js +24 -0
  204. package/dist/process/errors.cjs +244 -0
  205. package/dist/process/errors.d.ts +87 -0
  206. package/dist/process/errors.d.ts.map +1 -0
  207. package/dist/process/errors.js +221 -0
  208. package/dist/process/index.cjs +37 -0
  209. package/dist/process/index.d.ts +11 -0
  210. package/dist/process/index.d.ts.map +1 -0
  211. package/dist/process/index.js +11 -0
  212. package/dist/process/process-service.cjs +443 -0
  213. package/dist/process/process-service.d.ts +62 -0
  214. package/dist/process/process-service.d.ts.map +1 -0
  215. package/dist/process/process-service.js +410 -0
  216. package/dist/process/types.cjs +16 -0
  217. package/dist/process/types.d.ts +107 -0
  218. package/dist/process/types.d.ts.map +1 -0
  219. package/dist/process/types.js +0 -0
  220. package/dist/prompts/error-codes.js +1 -0
  221. package/dist/prompts/errors.js +1 -0
  222. package/dist/prompts/index.js +1 -0
  223. package/dist/prompts/name-validation.js +1 -0
  224. package/dist/prompts/prompt-manager.js +1 -0
  225. package/dist/prompts/providers/custom-prompt-provider.js +1 -0
  226. package/dist/prompts/providers/file-prompt-provider.js +1 -0
  227. package/dist/prompts/providers/mcp-prompt-provider.js +1 -0
  228. package/dist/prompts/providers/starter-prompt-provider.js +1 -0
  229. package/dist/prompts/schemas.js +1 -0
  230. package/dist/prompts/utils.js +1 -0
  231. package/dist/resources/error-codes.js +1 -0
  232. package/dist/resources/errors.js +1 -0
  233. package/dist/resources/handlers/blob-handler.js +1 -0
  234. package/dist/resources/handlers/factory.js +1 -0
  235. package/dist/resources/handlers/filesystem-handler.cjs +1 -1
  236. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  237. package/dist/resources/handlers/filesystem-handler.js +2 -1
  238. package/dist/resources/index.js +1 -0
  239. package/dist/resources/internal-provider.js +1 -0
  240. package/dist/resources/manager.js +1 -0
  241. package/dist/resources/reference-parser.js +1 -0
  242. package/dist/resources/schemas.js +1 -0
  243. package/dist/search/index.js +1 -0
  244. package/dist/search/search-service.js +1 -0
  245. package/dist/session/chat-session.cjs +2 -2
  246. package/dist/session/chat-session.d.ts +2 -2
  247. package/dist/session/chat-session.js +3 -2
  248. package/dist/session/error-codes.js +1 -0
  249. package/dist/session/errors.js +1 -0
  250. package/dist/session/history/database.js +1 -0
  251. package/dist/session/history/factory.js +1 -0
  252. package/dist/session/history/memory.js +1 -0
  253. package/dist/session/index.js +1 -0
  254. package/dist/session/schemas.js +1 -0
  255. package/dist/session/session-manager.d.ts +6 -0
  256. package/dist/session/session-manager.d.ts.map +1 -1
  257. package/dist/session/session-manager.js +1 -0
  258. package/dist/session/title-generator.js +1 -0
  259. package/dist/storage/blob/factory.cjs +3 -3
  260. package/dist/storage/blob/factory.d.ts +3 -1
  261. package/dist/storage/blob/factory.d.ts.map +1 -1
  262. package/dist/storage/blob/factory.js +4 -3
  263. package/dist/storage/blob/local-blob-store.cjs +18 -2
  264. package/dist/storage/blob/local-blob-store.d.ts +2 -1
  265. package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
  266. package/dist/storage/blob/local-blob-store.js +19 -2
  267. package/dist/storage/blob/schemas.js +1 -0
  268. package/dist/storage/cache/factory.js +1 -0
  269. package/dist/storage/cache/memory-cache-store.js +1 -0
  270. package/dist/storage/cache/redis-store.js +1 -0
  271. package/dist/storage/cache/schemas.js +1 -0
  272. package/dist/storage/database/factory.cjs +7 -5
  273. package/dist/storage/database/factory.d.ts +3 -1
  274. package/dist/storage/database/factory.d.ts.map +1 -1
  275. package/dist/storage/database/factory.js +8 -5
  276. package/dist/storage/database/memory-database-store.js +1 -0
  277. package/dist/storage/database/postgres-store.js +1 -0
  278. package/dist/storage/database/schemas.cjs +1 -1
  279. package/dist/storage/database/schemas.js +2 -1
  280. package/dist/storage/database/sqlite-store.cjs +20 -2
  281. package/dist/storage/database/sqlite-store.d.ts +2 -1
  282. package/dist/storage/database/sqlite-store.d.ts.map +1 -1
  283. package/dist/storage/database/sqlite-store.js +21 -2
  284. package/dist/storage/error-codes.cjs +1 -0
  285. package/dist/storage/error-codes.d.ts +1 -0
  286. package/dist/storage/error-codes.d.ts.map +1 -1
  287. package/dist/storage/error-codes.js +2 -0
  288. package/dist/storage/errors.cjs +15 -0
  289. package/dist/storage/errors.d.ts +4 -0
  290. package/dist/storage/errors.d.ts.map +1 -1
  291. package/dist/storage/errors.js +16 -0
  292. package/dist/storage/index.js +1 -0
  293. package/dist/storage/schemas.js +1 -0
  294. package/dist/storage/storage-manager.cjs +7 -5
  295. package/dist/storage/storage-manager.d.ts +5 -2
  296. package/dist/storage/storage-manager.d.ts.map +1 -1
  297. package/dist/storage/storage-manager.js +8 -5
  298. package/dist/systemPrompt/contributors.js +1 -0
  299. package/dist/systemPrompt/error-codes.js +1 -0
  300. package/dist/systemPrompt/errors.js +1 -0
  301. package/dist/systemPrompt/in-built-prompts.js +1 -0
  302. package/dist/systemPrompt/index.js +1 -0
  303. package/dist/systemPrompt/manager.js +1 -0
  304. package/dist/systemPrompt/registry.js +1 -0
  305. package/dist/systemPrompt/schemas.js +1 -0
  306. package/dist/telemetry/decorators.cjs +175 -0
  307. package/dist/telemetry/decorators.d.ts +17 -0
  308. package/dist/telemetry/decorators.d.ts.map +1 -0
  309. package/dist/telemetry/decorators.js +157 -0
  310. package/dist/telemetry/exporters.cjs +108 -0
  311. package/dist/telemetry/exporters.d.ts +29 -0
  312. package/dist/telemetry/exporters.d.ts.map +1 -0
  313. package/dist/telemetry/exporters.js +85 -0
  314. package/dist/telemetry/index.cjs +28 -0
  315. package/dist/telemetry/index.d.ts +2 -0
  316. package/dist/telemetry/index.d.ts.map +1 -0
  317. package/dist/telemetry/index.js +5 -0
  318. package/dist/telemetry/schemas.cjs +71 -0
  319. package/dist/telemetry/schemas.d.ts +54 -0
  320. package/dist/telemetry/schemas.d.ts.map +1 -0
  321. package/dist/telemetry/schemas.js +48 -0
  322. package/dist/telemetry/telemetry.cjs +228 -0
  323. package/dist/telemetry/telemetry.d.ts +74 -0
  324. package/dist/telemetry/telemetry.d.ts.map +1 -0
  325. package/dist/telemetry/telemetry.js +205 -0
  326. package/dist/telemetry/types.cjs +16 -0
  327. package/dist/telemetry/types.d.ts +22 -0
  328. package/dist/telemetry/types.d.ts.map +1 -0
  329. package/dist/telemetry/types.js +0 -0
  330. package/dist/telemetry/utils.cjs +87 -0
  331. package/dist/telemetry/utils.d.ts +21 -0
  332. package/dist/telemetry/utils.d.ts.map +1 -0
  333. package/dist/telemetry/utils.js +62 -0
  334. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -0
  335. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -0
  336. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -0
  337. package/dist/tools/error-codes.js +1 -0
  338. package/dist/tools/errors.js +1 -0
  339. package/dist/tools/index.js +1 -0
  340. package/dist/tools/internal-tools/constants.cjs +39 -0
  341. package/dist/tools/internal-tools/constants.d.ts +12 -0
  342. package/dist/tools/internal-tools/constants.d.ts.map +1 -0
  343. package/dist/tools/internal-tools/constants.js +16 -0
  344. package/dist/tools/internal-tools/implementations/ask-user-tool.js +1 -0
  345. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +106 -0
  346. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +13 -0
  347. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -0
  348. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +73 -0
  349. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +49 -0
  350. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +12 -0
  351. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +1 -0
  352. package/dist/tools/internal-tools/implementations/bash-output-tool.js +26 -0
  353. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +62 -0
  354. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +12 -0
  355. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -0
  356. package/dist/tools/internal-tools/implementations/edit-file-tool.js +39 -0
  357. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +57 -0
  358. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +12 -0
  359. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -0
  360. package/dist/tools/internal-tools/implementations/glob-files-tool.js +34 -0
  361. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +71 -0
  362. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +12 -0
  363. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -0
  364. package/dist/tools/internal-tools/implementations/grep-content-tool.js +48 -0
  365. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +47 -0
  366. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +12 -0
  367. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +1 -0
  368. package/dist/tools/internal-tools/implementations/kill-process-tool.js +24 -0
  369. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +55 -0
  370. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +12 -0
  371. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -0
  372. package/dist/tools/internal-tools/implementations/read-file-tool.js +32 -0
  373. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -0
  374. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +56 -0
  375. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +12 -0
  376. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -0
  377. package/dist/tools/internal-tools/implementations/write-file-tool.js +33 -0
  378. package/dist/tools/internal-tools/index.cjs +3 -1
  379. package/dist/tools/internal-tools/index.d.ts +1 -0
  380. package/dist/tools/internal-tools/index.d.ts.map +1 -1
  381. package/dist/tools/internal-tools/index.js +1 -0
  382. package/dist/tools/internal-tools/provider.js +1 -0
  383. package/dist/tools/internal-tools/registry.cjs +40 -4
  384. package/dist/tools/internal-tools/registry.d.ts +5 -9
  385. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  386. package/dist/tools/internal-tools/registry.js +41 -3
  387. package/dist/tools/schemas.cjs +18 -5
  388. package/dist/tools/schemas.d.ts +30 -1
  389. package/dist/tools/schemas.d.ts.map +1 -1
  390. package/dist/tools/schemas.js +15 -2
  391. package/dist/tools/tool-manager.cjs +158 -19
  392. package/dist/tools/tool-manager.d.ts +48 -2
  393. package/dist/tools/tool-manager.d.ts.map +1 -1
  394. package/dist/tools/tool-manager.js +118 -19
  395. package/dist/utils/api-key-resolver.js +1 -0
  396. package/dist/utils/api-key-store.js +1 -0
  397. package/dist/utils/async-context.js +1 -0
  398. package/dist/utils/debug.js +1 -0
  399. package/dist/utils/env.js +1 -0
  400. package/dist/utils/error-conversion.js +1 -0
  401. package/dist/utils/execution-context.js +1 -0
  402. package/dist/utils/fs-walk.js +1 -0
  403. package/dist/utils/path.js +1 -0
  404. package/dist/utils/port-utils.js +1 -0
  405. package/dist/utils/redactor.js +1 -0
  406. package/dist/utils/result.js +1 -0
  407. package/dist/utils/safe-stringify.js +1 -0
  408. package/dist/utils/schema-metadata.js +1 -0
  409. package/dist/utils/schema.js +1 -0
  410. package/dist/utils/service-initializer.cjs +42 -4
  411. package/dist/utils/service-initializer.d.ts +2 -1
  412. package/dist/utils/service-initializer.d.ts.map +1 -1
  413. package/dist/utils/service-initializer.js +33 -4
  414. package/dist/utils/user-info.js +1 -0
  415. package/dist/utils/zod-schema-converter.js +1 -0
  416. package/package.json +11 -1
@@ -9,7 +9,7 @@ export declare class OpenAITokenizer implements ITokenizer {
9
9
  private encoding;
10
10
  /**
11
11
  * Initializes the tokenizer for a specific OpenAI model or compatible model.
12
- * @param model The OpenAI model name (e.g., 'gpt-4o') or a custom model name.
12
+ * @param model The OpenAI model name (e.g., 'gpt-5') or a custom model name.
13
13
  * @throws TokenizationError if tiktoken initialization fails for both specific model and fallback.
14
14
  */
15
15
  constructor(model: string);
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  import { TokenizationError } from "./types.js";
2
3
  import { createRequire } from "module";
3
4
  import { logger } from "../../logger/index.js";
@@ -9,7 +10,7 @@ class OpenAITokenizer {
9
10
  // Tiktoken encoding instance
10
11
  /**
11
12
  * Initializes the tokenizer for a specific OpenAI model or compatible model.
12
- * @param model The OpenAI model name (e.g., 'gpt-4o') or a custom model name.
13
+ * @param model The OpenAI model name (e.g., 'gpt-5') or a custom model name.
13
14
  * @throws TokenizationError if tiktoken initialization fails for both specific model and fallback.
14
15
  */
15
16
  constructor(model) {
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  class TokenizationError extends Error {
2
3
  constructor(message) {
3
4
  super(message);
@@ -14,9 +14,9 @@ export type SupportedFileType = (typeof SUPPORTED_FILE_TYPES)[number];
14
14
  * Provides runtime information for model-aware processing.
15
15
  */
16
16
  export interface LLMContext {
17
- /** LLM provider name (e.g., 'google.generative-ai', 'openai') */
17
+ /** LLM provider name (e.g., 'google', 'openai') */
18
18
  provider: LLMProvider;
19
- /** Specific LLM model name (e.g., 'gemini-2.5-flash', 'gpt-4') */
19
+ /** Specific LLM model name (e.g., 'gemini-2.5-flash', 'gpt-5') */
20
20
  model: string;
21
21
  }
22
22
  export interface LLMUpdateContext {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,0FAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,WAAW,iCAAkC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,oBAAoB,oCAAqC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;GAIG;AACH;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACvB,iEAAiE;IACjE,QAAQ,EAAE,WAAW,CAAC;IAEtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/llm/types.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,0FAQhB,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,WAAW,iCAAkC,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,eAAO,MAAM,oBAAoB,oCAAqC,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;GAIG;AACH;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACvB,mDAAmD;IACnD,QAAQ,EAAE,WAAW,CAAC;IAEtB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
package/dist/llm/types.js CHANGED
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  const LLM_PROVIDERS = [
2
3
  "openai",
3
4
  "openai-compatible",
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { validateModelFileSupport, getAllowedMimeTypes } from "./registry.js";
2
3
  import { logger } from "../logger/index.js";
3
4
  import { ok, fail } from "../utils/result.js";
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  class Logger {
2
3
  level;
3
4
  isSilent;
@@ -1,3 +1,45 @@
1
+ /**
2
+ * TODO(logger-browser-safety): Make logging environment-safe without breaking consumers
3
+ *
4
+ * Problem
5
+ * - The core logger is Node-only (winston + fs/path + file IO). If any module that depends on this
6
+ * logger is included in a browser bundle (directly or via an overly broad root export), Web UI builds
7
+ * can fail. Today our Web UI only imports types and a small util, so bundlers tree‑shake away the
8
+ * Node logger, but this is fragile if future UI imports include runtime modules.
9
+ *
10
+ * Constraints/Goals
11
+ * - Keep file-based logging as the default for Node (excellent DX/UX).
12
+ * - Keep logs visible in the browser (console-based), never a no‑op.
13
+ * - Avoid touching "a lot of files" or changing call sites for consumers.
14
+ * - Keep `@dexto/core` ergonomic; browser consumers should not have to learn a separate API.
15
+ *
16
+ * Plan (incremental)
17
+ * 1) Introduce an environment-aware logging boundary:
18
+ * - Create a browser-safe logger implementation (console-based) that matches the logger API.
19
+ * - Expose logging via a subpath `@dexto/core/logger` and add conditional exports so that:
20
+ * - Browser resolves to the console logger
21
+ * - Node resolves to this file-based logger (current Winston version)
22
+ * - Alternative: use the `browser` field in package.json to alias the Node logger file to a
23
+ * browser-safe implementation at bundle time. Subpath conditional exports are preferred for clarity.
24
+ *
25
+ * 2) Keep the root export of `@dexto/core` browser-safe by default:
26
+ * - Continue to expose types and UI-safe helpers from the root.
27
+ * - Keep Node-only modules (storage/config/agent-registry/etc.) on explicit subpaths so browser
28
+ * builds do not pull them accidentally.
29
+ *
30
+ * 3) Optional API ergonomics:
31
+ * - Provide a top-level `Dexto` object (runtime orchestrator) that accepts a `logger` in its config
32
+ * and propagates it to sub-services (MCP manager, storage, etc.). This allows injection without
33
+ * consumers needing to import Node-only loggers.
34
+ *
35
+ * 4) UI safety now (tactical):
36
+ * - Ensure the Web UI imports types with `import type { ... } from '@dexto/core'` and uses API calls
37
+ * for runtime. This avoids bundling Node code until the logger split is implemented.
38
+ *
39
+ * Verification & Guardrails
40
+ * - Add a CI check that building a minimal Next/Vite app that imports root `@dexto/core` types succeeds.
41
+ * - Mark side-effect status appropriately and keep top-level Node-only side effects out of root paths.
42
+ */
1
43
  type ChalkColor = 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray' | 'grey' | 'blackBright' | 'redBright' | 'greenBright' | 'yellowBright' | 'blueBright' | 'magentaBright' | 'cyanBright' | 'whiteBright';
2
44
  export interface LoggerOptions {
3
45
  level?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AA6DA,KAAK,UAAU,GACT,OAAO,GACP,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,aAAa,GACb,WAAW,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,aAAa,CAAC;AA2CpB,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAkB;gBAE1B,OAAO,GAAE,aAAkB;IAsBvC,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,gBAAgB;IA4DxB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IASrD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQpD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQvD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAU9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IASrD,iBAAiB,CAAC,QAAQ,EAAE,GAAG;IAkB/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAUpC,UAAU,CAAC,MAAM,EAAE,GAAG;IA4EtB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAatB,cAAc,IAAI,MAAM,GAAG,IAAI;IAK/B,QAAQ,IAAI,MAAM;IAKlB,kBAAkB,CAAC,IAAI,EAAE;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACtD,iBAAiB,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC9C,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB;IAoDD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAkB9C;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAyCH,KAAK,UAAU,GACT,OAAO,GACP,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,aAAa,GACb,WAAW,GACX,aAAa,GACb,cAAc,GACd,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,aAAa,CAAC;AA2CpB,MAAM,WAAW,aAAa;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD,qBAAa,MAAM;IACf,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAkB;gBAE1B,OAAO,GAAE,aAAkB;IAsBvC,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,gBAAgB;IA4DxB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IASrD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQpD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAQvD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IAU9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,UAAU;IASrD,iBAAiB,CAAC,QAAQ,EAAE,GAAG;IAkB/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;IAUpC,UAAU,CAAC,MAAM,EAAE,GAAG;IA4EtB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAatB,cAAc,IAAI,MAAM,GAAG,IAAI;IAK/B,QAAQ,IAAI,MAAM;IAKlB,kBAAkB,CAAC,IAAI,EAAE;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACtD,iBAAiB,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC9C,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB;IAoDD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAkB9C;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import * as winston from "winston";
2
3
  import chalk from "chalk";
3
4
  import boxen from "boxen";
@@ -27,6 +27,7 @@ var MCPErrorCode = /* @__PURE__ */ ((MCPErrorCode2) => {
27
27
  MCPErrorCode2["DUPLICATE_NAME"] = "mcp_duplicate_name";
28
28
  MCPErrorCode2["CONNECTION_FAILED"] = "mcp_connection_failed";
29
29
  MCPErrorCode2["PROTOCOL_ERROR"] = "mcp_protocol_error";
30
+ MCPErrorCode2["SERVER_NOT_FOUND"] = "mcp_server_not_found";
30
31
  MCPErrorCode2["TOOL_NOT_FOUND"] = "mcp_tool_not_found";
31
32
  MCPErrorCode2["PROMPT_NOT_FOUND"] = "mcp_prompt_not_found";
32
33
  MCPErrorCode2["RESOURCE_NOT_FOUND"] = "mcp_resource_not_found";
@@ -8,6 +8,7 @@ export declare enum MCPErrorCode {
8
8
  DUPLICATE_NAME = "mcp_duplicate_name",
9
9
  CONNECTION_FAILED = "mcp_connection_failed",
10
10
  PROTOCOL_ERROR = "mcp_protocol_error",
11
+ SERVER_NOT_FOUND = "mcp_server_not_found",
11
12
  TOOL_NOT_FOUND = "mcp_tool_not_found",
12
13
  PROMPT_NOT_FOUND = "mcp_prompt_not_found",
13
14
  RESOURCE_NOT_FOUND = "mcp_resource_not_found"
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/mcp/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,YAAY;IAEpB,iBAAiB,0BAA0B;IAC3C,eAAe,wBAAwB;IACvC,cAAc,uBAAuB;IAGrC,iBAAiB,0BAA0B;IAG3C,cAAc,uBAAuB;IAGrC,cAAc,uBAAuB;IACrC,gBAAgB,yBAAyB;IACzC,kBAAkB,2BAA2B;CAChD"}
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/mcp/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,YAAY;IAEpB,iBAAiB,0BAA0B;IAC3C,eAAe,wBAAwB;IACvC,cAAc,uBAAuB;IAGrC,iBAAiB,0BAA0B;IAG3C,cAAc,uBAAuB;IAGrC,gBAAgB,yBAAyB;IACzC,cAAc,uBAAuB;IACrC,gBAAgB,yBAAyB;IACzC,kBAAkB,2BAA2B;CAChD"}
@@ -1,9 +1,11 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  var MCPErrorCode = /* @__PURE__ */ ((MCPErrorCode2) => {
2
3
  MCPErrorCode2["SCHEMA_VALIDATION"] = "mcp_schema_validation";
3
4
  MCPErrorCode2["COMMAND_MISSING"] = "mcp_command_missing";
4
5
  MCPErrorCode2["DUPLICATE_NAME"] = "mcp_duplicate_name";
5
6
  MCPErrorCode2["CONNECTION_FAILED"] = "mcp_connection_failed";
6
7
  MCPErrorCode2["PROTOCOL_ERROR"] = "mcp_protocol_error";
8
+ MCPErrorCode2["SERVER_NOT_FOUND"] = "mcp_server_not_found";
7
9
  MCPErrorCode2["TOOL_NOT_FOUND"] = "mcp_tool_not_found";
8
10
  MCPErrorCode2["PROMPT_NOT_FOUND"] = "mcp_prompt_not_found";
9
11
  MCPErrorCode2["RESOURCE_NOT_FOUND"] = "mcp_resource_not_found";
@@ -64,6 +64,18 @@ class MCPError {
64
64
  "Use a unique name for each MCP server"
65
65
  );
66
66
  }
67
+ /**
68
+ * MCP server not found
69
+ */
70
+ static serverNotFound(serverName, reason) {
71
+ return new import_DextoRuntimeError.DextoRuntimeError(
72
+ import_error_codes.MCPErrorCode.SERVER_NOT_FOUND,
73
+ import_types.ErrorScope.MCP,
74
+ import_types.ErrorType.NOT_FOUND,
75
+ `MCP server '${serverName}' not found${reason ? `: ${reason}` : ""}`,
76
+ { serverName, reason }
77
+ );
78
+ }
67
79
  /**
68
80
  * MCP tool not found
69
81
  */
@@ -22,6 +22,13 @@ export declare class MCPError {
22
22
  name: string;
23
23
  existingName: string;
24
24
  }>;
25
+ /**
26
+ * MCP server not found
27
+ */
28
+ static serverNotFound(serverName: string, reason?: string): DextoRuntimeError<{
29
+ serverName: string;
30
+ reason: string | undefined;
31
+ }>;
25
32
  /**
26
33
  * MCP tool not found
27
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;GAGG;AACH,qBAAa,QAAQ;IACjB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAW1D;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAWvD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;IAWvD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM;;;IAUpC;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM;;;IAUxC;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM;;;IAU3C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM;;;IAU1C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;CAS5D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAItE;;;GAGG;AACH,qBAAa,QAAQ;IACjB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAW1D;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAWvD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;;;;IAWvD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;;;;IAUzD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM;;;IAUpC;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM;;;IAUxC;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,MAAM;;;IAU3C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM;;;IAU1C;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;CAS5D"}
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { DextoRuntimeError } from "../errors/DextoRuntimeError.js";
2
3
  import { ErrorScope, ErrorType } from "../errors/types.js";
3
4
  import { MCPErrorCode } from "./error-codes.js";
@@ -41,6 +42,18 @@ class MCPError {
41
42
  "Use a unique name for each MCP server"
42
43
  );
43
44
  }
45
+ /**
46
+ * MCP server not found
47
+ */
48
+ static serverNotFound(serverName, reason) {
49
+ return new DextoRuntimeError(
50
+ MCPErrorCode.SERVER_NOT_FOUND,
51
+ ErrorScope.MCP,
52
+ ErrorType.NOT_FOUND,
53
+ `MCP server '${serverName}' not found${reason ? `: ${reason}` : ""}`,
54
+ { serverName, reason }
55
+ );
56
+ }
44
57
  /**
45
58
  * MCP tool not found
46
59
  */
@@ -28,6 +28,8 @@ var import_events = require("../events/index.js");
28
28
  class MCPManager {
29
29
  clients = /* @__PURE__ */ new Map();
30
30
  connectionErrors = {};
31
+ configCache = /* @__PURE__ */ new Map();
32
+ // Store original configs for restart
31
33
  toolCache = /* @__PURE__ */ new Map();
32
34
  toolConflicts = /* @__PURE__ */ new Set();
33
35
  // Track which tool names have conflicts
@@ -536,6 +538,7 @@ class MCPManager {
536
538
  }
537
539
  this.registerClient(name, client);
538
540
  await this.updateClientCache(name, client);
541
+ this.configCache.set(name, config);
539
542
  import_logger.logger.info(`Successfully connected and cached new server '${name}'`);
540
543
  } catch (error) {
541
544
  const errorMsg = error instanceof Error ? error.message : String(error);
@@ -580,18 +583,17 @@ class MCPManager {
580
583
  async removeClient(name) {
581
584
  const client = this.clients.get(name);
582
585
  if (client) {
583
- if (typeof client.disconnect === "function") {
584
- try {
585
- await client.disconnect();
586
- import_logger.logger.info(`Successfully disconnected client: ${name}`);
587
- } catch (error) {
588
- import_logger.logger.error(
589
- `Error disconnecting client '${name}': ${error instanceof Error ? error.message : String(error)}`
590
- );
591
- }
586
+ try {
587
+ await client.disconnect();
588
+ import_logger.logger.info(`Successfully disconnected client: ${name}`);
589
+ } catch (error) {
590
+ import_logger.logger.error(
591
+ `Error disconnecting client '${name}': ${error instanceof Error ? error.message : String(error)}`
592
+ );
592
593
  }
593
594
  this.clearClientCache(name);
594
595
  this.clients.delete(name);
596
+ this.configCache.delete(name);
595
597
  import_logger.logger.info(`Removed client from manager: ${name}`);
596
598
  }
597
599
  if (this.connectionErrors[name]) {
@@ -599,23 +601,71 @@ class MCPManager {
599
601
  import_logger.logger.info(`Cleared connection error for removed client: ${name}`);
600
602
  }
601
603
  }
604
+ /**
605
+ * Restart a specific MCP server by disconnecting and reconnecting with original config.
606
+ * @param name The name of the server to restart.
607
+ * @throws Error if server doesn't exist or config is not cached.
608
+ */
609
+ async restartServer(name) {
610
+ const config = this.configCache.get(name);
611
+ if (!config) {
612
+ throw import_errors.MCPError.serverNotFound(
613
+ name,
614
+ "Server config not found - cannot restart dynamically added servers without stored config"
615
+ );
616
+ }
617
+ const client = this.clients.get(name);
618
+ import_logger.logger.info(`Restarting MCP server '${name}'...`);
619
+ if (client) {
620
+ try {
621
+ await client.disconnect();
622
+ import_logger.logger.info(`Disconnected server '${name}' for restart`);
623
+ } catch (error) {
624
+ import_logger.logger.warn(
625
+ `Error disconnecting server '${name}' during restart (continuing): ${error instanceof Error ? error.message : String(error)}`
626
+ );
627
+ }
628
+ } else {
629
+ import_logger.logger.info(
630
+ `No active client found for '${name}' during restart; attempting fresh connection`
631
+ );
632
+ }
633
+ this.clearClientCache(name);
634
+ this.clients.delete(name);
635
+ delete this.connectionErrors[name];
636
+ try {
637
+ const newClient = new import_mcp_client.MCPClient();
638
+ await newClient.connect(config, name);
639
+ if (this.approvalManager) {
640
+ newClient.setApprovalManager(this.approvalManager);
641
+ }
642
+ this.registerClient(name, newClient);
643
+ await this.updateClientCache(name, newClient);
644
+ import_logger.logger.info(`Successfully restarted server '${name}'`);
645
+ import_events.eventBus.emit("dexto:mcpServerRestarted", { serverName: name });
646
+ } catch (error) {
647
+ const errorMsg = error instanceof Error ? error.message : String(error);
648
+ this.connectionErrors[name] = errorMsg;
649
+ import_logger.logger.error(`Failed to restart server '${name}': ${errorMsg}`);
650
+ throw import_errors.MCPError.connectionFailed(name, errorMsg);
651
+ }
652
+ }
602
653
  /**
603
654
  * Disconnect all clients and clear caches
604
655
  */
605
656
  async disconnectAll() {
606
657
  const disconnectPromises = [];
607
658
  for (const [name, client] of Array.from(this.clients.entries())) {
608
- if (client.disconnect) {
609
- disconnectPromises.push(
610
- client.disconnect().then(() => import_logger.logger.info(`Disconnected client: ${name}`)).catch(
611
- (error) => import_logger.logger.error(`Failed to disconnect client '${name}': ${error}`)
612
- )
613
- );
614
- }
659
+ disconnectPromises.push(
660
+ client.disconnect().then(() => import_logger.logger.info(`Disconnected client: ${name}`)).catch(
661
+ (error) => import_logger.logger.error(`Failed to disconnect client '${name}': ${error}`)
662
+ )
663
+ );
615
664
  }
616
665
  await Promise.all(disconnectPromises);
617
666
  this.clients.clear();
618
667
  this.connectionErrors = {};
668
+ this.configCache.clear();
619
669
  this.toolCache.clear();
620
670
  this.toolConflicts.clear();
621
671
  this.promptCache.clear();
@@ -7,6 +7,7 @@ import type { ApprovalManager } from '../approval/manager.js';
7
7
  export declare class MCPManager {
8
8
  private clients;
9
9
  private connectionErrors;
10
+ private configCache;
10
11
  private toolCache;
11
12
  private toolConflicts;
12
13
  private promptCache;
@@ -198,6 +199,12 @@ export declare class MCPManager {
198
199
  * @param name The name of the client to remove.
199
200
  */
200
201
  removeClient(name: string): Promise<void>;
202
+ /**
203
+ * Restart a specific MCP server by disconnecting and reconnecting with original config.
204
+ * @param name The name of the server to restart.
205
+ * @throws Error if server doesn't exist or config is not cached.
206
+ */
207
+ restartServer(name: string): Promise<void>;
201
208
  /**
202
209
  * Disconnect all clients and clear caches
203
210
  */
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/mcp/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/mcp/manager.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { MCPClient } from "./mcp-client.js";
2
3
  import { logger } from "../logger/index.js";
3
4
  import { MCPError } from "./errors.js";
@@ -5,6 +6,8 @@ import { eventBus } from "../events/index.js";
5
6
  class MCPManager {
6
7
  clients = /* @__PURE__ */ new Map();
7
8
  connectionErrors = {};
9
+ configCache = /* @__PURE__ */ new Map();
10
+ // Store original configs for restart
8
11
  toolCache = /* @__PURE__ */ new Map();
9
12
  toolConflicts = /* @__PURE__ */ new Set();
10
13
  // Track which tool names have conflicts
@@ -513,6 +516,7 @@ class MCPManager {
513
516
  }
514
517
  this.registerClient(name, client);
515
518
  await this.updateClientCache(name, client);
519
+ this.configCache.set(name, config);
516
520
  logger.info(`Successfully connected and cached new server '${name}'`);
517
521
  } catch (error) {
518
522
  const errorMsg = error instanceof Error ? error.message : String(error);
@@ -557,18 +561,17 @@ class MCPManager {
557
561
  async removeClient(name) {
558
562
  const client = this.clients.get(name);
559
563
  if (client) {
560
- if (typeof client.disconnect === "function") {
561
- try {
562
- await client.disconnect();
563
- logger.info(`Successfully disconnected client: ${name}`);
564
- } catch (error) {
565
- logger.error(
566
- `Error disconnecting client '${name}': ${error instanceof Error ? error.message : String(error)}`
567
- );
568
- }
564
+ try {
565
+ await client.disconnect();
566
+ logger.info(`Successfully disconnected client: ${name}`);
567
+ } catch (error) {
568
+ logger.error(
569
+ `Error disconnecting client '${name}': ${error instanceof Error ? error.message : String(error)}`
570
+ );
569
571
  }
570
572
  this.clearClientCache(name);
571
573
  this.clients.delete(name);
574
+ this.configCache.delete(name);
572
575
  logger.info(`Removed client from manager: ${name}`);
573
576
  }
574
577
  if (this.connectionErrors[name]) {
@@ -576,23 +579,71 @@ class MCPManager {
576
579
  logger.info(`Cleared connection error for removed client: ${name}`);
577
580
  }
578
581
  }
582
+ /**
583
+ * Restart a specific MCP server by disconnecting and reconnecting with original config.
584
+ * @param name The name of the server to restart.
585
+ * @throws Error if server doesn't exist or config is not cached.
586
+ */
587
+ async restartServer(name) {
588
+ const config = this.configCache.get(name);
589
+ if (!config) {
590
+ throw MCPError.serverNotFound(
591
+ name,
592
+ "Server config not found - cannot restart dynamically added servers without stored config"
593
+ );
594
+ }
595
+ const client = this.clients.get(name);
596
+ logger.info(`Restarting MCP server '${name}'...`);
597
+ if (client) {
598
+ try {
599
+ await client.disconnect();
600
+ logger.info(`Disconnected server '${name}' for restart`);
601
+ } catch (error) {
602
+ logger.warn(
603
+ `Error disconnecting server '${name}' during restart (continuing): ${error instanceof Error ? error.message : String(error)}`
604
+ );
605
+ }
606
+ } else {
607
+ logger.info(
608
+ `No active client found for '${name}' during restart; attempting fresh connection`
609
+ );
610
+ }
611
+ this.clearClientCache(name);
612
+ this.clients.delete(name);
613
+ delete this.connectionErrors[name];
614
+ try {
615
+ const newClient = new MCPClient();
616
+ await newClient.connect(config, name);
617
+ if (this.approvalManager) {
618
+ newClient.setApprovalManager(this.approvalManager);
619
+ }
620
+ this.registerClient(name, newClient);
621
+ await this.updateClientCache(name, newClient);
622
+ logger.info(`Successfully restarted server '${name}'`);
623
+ eventBus.emit("dexto:mcpServerRestarted", { serverName: name });
624
+ } catch (error) {
625
+ const errorMsg = error instanceof Error ? error.message : String(error);
626
+ this.connectionErrors[name] = errorMsg;
627
+ logger.error(`Failed to restart server '${name}': ${errorMsg}`);
628
+ throw MCPError.connectionFailed(name, errorMsg);
629
+ }
630
+ }
579
631
  /**
580
632
  * Disconnect all clients and clear caches
581
633
  */
582
634
  async disconnectAll() {
583
635
  const disconnectPromises = [];
584
636
  for (const [name, client] of Array.from(this.clients.entries())) {
585
- if (client.disconnect) {
586
- disconnectPromises.push(
587
- client.disconnect().then(() => logger.info(`Disconnected client: ${name}`)).catch(
588
- (error) => logger.error(`Failed to disconnect client '${name}': ${error}`)
589
- )
590
- );
591
- }
637
+ disconnectPromises.push(
638
+ client.disconnect().then(() => logger.info(`Disconnected client: ${name}`)).catch(
639
+ (error) => logger.error(`Failed to disconnect client '${name}': ${error}`)
640
+ )
641
+ );
592
642
  }
593
643
  await Promise.all(disconnectPromises);
594
644
  this.clients.clear();
595
645
  this.connectionErrors = {};
646
+ this.configCache.clear();
596
647
  this.toolCache.clear();
597
648
  this.toolConflicts.clear();
598
649
  this.promptCache.clear();
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
3
  import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
3
4
  import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { ok, fail, hasErrors, zodToIssues } from "../utils/result.js";
2
3
  import { ErrorScope, ErrorType } from "../errors/types.js";
3
4
  import { MCPErrorCode } from "./error-codes.js";
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { MCPErrorCode } from "./error-codes.js";
2
3
  import { ErrorScope, ErrorType } from "../errors/types.js";
3
4
  import { EnvExpandedString, RequiredEnvURL } from "../utils/result.js";
@@ -19,7 +19,7 @@ export interface MCPResolvedResource {
19
19
  */
20
20
  export interface IMCPClient extends ToolProvider, EventEmitter {
21
21
  connect(config: ValidatedMcpServerConfig, serverName: string): Promise<Client>;
22
- disconnect?(): Promise<void>;
22
+ disconnect(): Promise<void>;
23
23
  listPrompts(): Promise<Prompt[]>;
24
24
  getPrompt(name: string, args?: Record<string, unknown>): Promise<GetPromptResult>;
25
25
  listResources(): Promise<MCPResourceSummary[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,YAAY,EAAE,YAAY;IAE1D,OAAO,CAAC,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG7B,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAGlF,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC/C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAGvD,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,YAAY,EAAE,YAAY;IAE1D,OAAO,CAAC,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5B,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAGlF,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC/C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAGvD,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzC"}
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  var MemoryErrorCode = /* @__PURE__ */ ((MemoryErrorCode2) => {
2
3
  MemoryErrorCode2["MEMORY_NOT_FOUND"] = "MEMORY_NOT_FOUND";
3
4
  MemoryErrorCode2["MEMORY_ALREADY_EXISTS"] = "MEMORY_ALREADY_EXISTS";
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { DextoRuntimeError } from "../errors/DextoRuntimeError.js";
2
3
  import { ErrorScope, ErrorType } from "../errors/types.js";
3
4
  import { MemoryErrorCode } from "./error-codes.js";
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { MemoryManager } from "./manager.js";
2
3
  import {
3
4
  MemorySchema,
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import {
2
3
  MemorySchema,
3
4
  CreateMemoryInputSchema,
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { z } from "zod";
2
3
  const MAX_CONTENT_LENGTH = 1e4;
3
4
  const MAX_TAG_LENGTH = 50;
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  const DEFAULTS = {
2
3
  maxInputChars: 0,
3
4
  redactEmails: false,
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  const DEFAULTS = {
2
3
  redactEmails: false,
3
4
  redactApiKeys: false,
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  var PluginErrorCode = /* @__PURE__ */ ((PluginErrorCode2) => {
2
3
  PluginErrorCode2["PLUGIN_LOAD_FAILED"] = "PLUGIN_LOAD_FAILED";
3
4
  PluginErrorCode2["PLUGIN_INVALID_SHAPE"] = "PLUGIN_INVALID_SHAPE";
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { PluginManager } from "./manager.js";
2
3
  import {
3
4
  CustomPluginConfigSchema,
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { isAbsolute } from "path";
2
3
  import { pathToFileURL } from "url";
3
4
  import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
@@ -1,3 +1,4 @@
1
+ import "../chunk-C6A6W6XS.js";
1
2
  import { logger } from "../logger/index.js";
2
3
  import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
3
4
  import { PluginErrorCode } from "./error-codes.js";
@@ -1,3 +1,4 @@
1
+ import "../../chunk-C6A6W6XS.js";
1
2
  import { ContentPolicyPlugin } from "../builtins/content-policy.js";
2
3
  import { ResponseSanitizerPlugin } from "../builtins/response-sanitizer.js";
3
4
  function registerBuiltInPlugins(args) {