@mastra/code-sdk 0.0.0-esbuild-bundle-worker-20260807173433

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 (491) hide show
  1. package/CHANGELOG.md +1349 -0
  2. package/LICENSE.md +30 -0
  3. package/README.md +70 -0
  4. package/dist/acp/agent.d.ts +35 -0
  5. package/dist/acp/agent.d.ts.map +1 -0
  6. package/dist/acp/agent.js +161 -0
  7. package/dist/acp/agent.js.map +1 -0
  8. package/dist/acp/event-mapper.d.ts +22 -0
  9. package/dist/acp/event-mapper.d.ts.map +1 -0
  10. package/dist/acp/event-mapper.js +214 -0
  11. package/dist/acp/event-mapper.js.map +1 -0
  12. package/dist/acp/index.d.ts +8 -0
  13. package/dist/acp/index.d.ts.map +1 -0
  14. package/dist/acp/index.js +65 -0
  15. package/dist/acp/index.js.map +1 -0
  16. package/dist/acp/server.d.ts +7 -0
  17. package/dist/acp/server.d.ts.map +1 -0
  18. package/dist/acp/server.js +35 -0
  19. package/dist/acp/server.js.map +1 -0
  20. package/dist/acp.d.ts +2 -0
  21. package/dist/acp.d.ts.map +1 -0
  22. package/dist/acp.js +2 -0
  23. package/dist/agents/credential-resolver.d.ts +51 -0
  24. package/dist/agents/credential-resolver.d.ts.map +1 -0
  25. package/dist/agents/credential-resolver.js +52 -0
  26. package/dist/agents/credential-resolver.js.map +1 -0
  27. package/dist/agents/custom-provider-source.d.ts +35 -0
  28. package/dist/agents/custom-provider-source.d.ts.map +1 -0
  29. package/dist/agents/custom-provider-source.js +25 -0
  30. package/dist/agents/custom-provider-source.js.map +1 -0
  31. package/dist/agents/instructions.d.ts +6 -0
  32. package/dist/agents/instructions.d.ts.map +1 -0
  33. package/dist/agents/instructions.js +32 -0
  34. package/dist/agents/instructions.js.map +1 -0
  35. package/dist/agents/mastracode-gateway.d.ts +74 -0
  36. package/dist/agents/mastracode-gateway.d.ts.map +1 -0
  37. package/dist/agents/mastracode-gateway.js +400 -0
  38. package/dist/agents/mastracode-gateway.js.map +1 -0
  39. package/dist/agents/memory.d.ts +13 -0
  40. package/dist/agents/memory.d.ts.map +1 -0
  41. package/dist/agents/memory.js +116 -0
  42. package/dist/agents/memory.js.map +1 -0
  43. package/dist/agents/model.d.ts +59 -0
  44. package/dist/agents/model.d.ts.map +1 -0
  45. package/dist/agents/model.js +132 -0
  46. package/dist/agents/model.js.map +1 -0
  47. package/dist/agents/modes/build.d.ts +10 -0
  48. package/dist/agents/modes/build.d.ts.map +1 -0
  49. package/dist/agents/modes/build.js +44 -0
  50. package/dist/agents/modes/build.js.map +1 -0
  51. package/dist/agents/modes/explore.d.ts +10 -0
  52. package/dist/agents/modes/explore.d.ts.map +1 -0
  53. package/dist/agents/modes/explore.js +39 -0
  54. package/dist/agents/modes/explore.js.map +1 -0
  55. package/dist/agents/modes/plan.d.ts +6 -0
  56. package/dist/agents/modes/plan.d.ts.map +1 -0
  57. package/dist/agents/modes/plan.js +37 -0
  58. package/dist/agents/modes/plan.js.map +1 -0
  59. package/dist/agents/prompts/agent-instructions.d.ts +61 -0
  60. package/dist/agents/prompts/agent-instructions.d.ts.map +1 -0
  61. package/dist/agents/prompts/agent-instructions.js +201 -0
  62. package/dist/agents/prompts/agent-instructions.js.map +1 -0
  63. package/dist/agents/prompts/build.d.ts +12 -0
  64. package/dist/agents/prompts/build.d.ts.map +1 -0
  65. package/dist/agents/prompts/build.js +76 -0
  66. package/dist/agents/prompts/build.js.map +1 -0
  67. package/dist/agents/prompts/fast.d.ts +5 -0
  68. package/dist/agents/prompts/fast.d.ts.map +1 -0
  69. package/dist/agents/prompts/fast.js +26 -0
  70. package/dist/agents/prompts/fast.js.map +1 -0
  71. package/dist/agents/prompts/index.d.ts +19 -0
  72. package/dist/agents/prompts/index.d.ts.map +1 -0
  73. package/dist/agents/prompts/index.js +65 -0
  74. package/dist/agents/prompts/index.js.map +1 -0
  75. package/dist/agents/prompts/model.d.ts +5 -0
  76. package/dist/agents/prompts/model.d.ts.map +1 -0
  77. package/dist/agents/prompts/model.js +23 -0
  78. package/dist/agents/prompts/model.js.map +1 -0
  79. package/dist/agents/prompts/plan.d.ts +6 -0
  80. package/dist/agents/prompts/plan.d.ts.map +1 -0
  81. package/dist/agents/prompts/plan.js +111 -0
  82. package/dist/agents/prompts/plan.js.map +1 -0
  83. package/dist/agents/prompts/tool-guidance.d.ts +13 -0
  84. package/dist/agents/prompts/tool-guidance.d.ts.map +1 -0
  85. package/dist/agents/prompts/tool-guidance.js +149 -0
  86. package/dist/agents/prompts/tool-guidance.js.map +1 -0
  87. package/dist/agents/sandbox-filesystem.d.ts +99 -0
  88. package/dist/agents/sandbox-filesystem.d.ts.map +1 -0
  89. package/dist/agents/sandbox-filesystem.js +328 -0
  90. package/dist/agents/sandbox-filesystem.js.map +1 -0
  91. package/dist/agents/sandbox-reattach.d.ts +19 -0
  92. package/dist/agents/sandbox-reattach.d.ts.map +1 -0
  93. package/dist/agents/sandbox-reattach.js +15 -0
  94. package/dist/agents/sandbox-reattach.js.map +1 -0
  95. package/dist/agents/thread-caveman-state.d.ts +17 -0
  96. package/dist/agents/thread-caveman-state.d.ts.map +1 -0
  97. package/dist/agents/thread-caveman-state.js +107 -0
  98. package/dist/agents/thread-caveman-state.js.map +1 -0
  99. package/dist/agents/tool-availability.d.ts +10 -0
  100. package/dist/agents/tool-availability.d.ts.map +1 -0
  101. package/dist/agents/tool-availability.js +87 -0
  102. package/dist/agents/tool-availability.js.map +1 -0
  103. package/dist/agents/tools.d.ts +19 -0
  104. package/dist/agents/tools.d.ts.map +1 -0
  105. package/dist/agents/tools.js +105 -0
  106. package/dist/agents/tools.js.map +1 -0
  107. package/dist/agents/workspace.d.ts +32 -0
  108. package/dist/agents/workspace.d.ts.map +1 -0
  109. package/dist/agents/workspace.js +251 -0
  110. package/dist/agents/workspace.js.map +1 -0
  111. package/dist/analytics.d.ts +18 -0
  112. package/dist/analytics.d.ts.map +1 -0
  113. package/dist/analytics.js +163 -0
  114. package/dist/analytics.js.map +1 -0
  115. package/dist/auth/authorization-input.d.ts +16 -0
  116. package/dist/auth/authorization-input.d.ts.map +1 -0
  117. package/dist/auth/authorization-input.js +42 -0
  118. package/dist/auth/authorization-input.js.map +1 -0
  119. package/dist/auth/device-code.d.ts +93 -0
  120. package/dist/auth/device-code.d.ts.map +1 -0
  121. package/dist/auth/device-code.js +129 -0
  122. package/dist/auth/device-code.js.map +1 -0
  123. package/dist/auth/index.d.ts +10 -0
  124. package/dist/auth/index.d.ts.map +1 -0
  125. package/dist/auth/index.js +6 -0
  126. package/dist/auth/pkce.d.ts +13 -0
  127. package/dist/auth/pkce.d.ts.map +1 -0
  128. package/dist/auth/pkce.js +32 -0
  129. package/dist/auth/pkce.js.map +1 -0
  130. package/dist/auth/providers/anthropic.d.ts +40 -0
  131. package/dist/auth/providers/anthropic.d.ts.map +1 -0
  132. package/dist/auth/providers/anthropic.js +126 -0
  133. package/dist/auth/providers/anthropic.js.map +1 -0
  134. package/dist/auth/providers/github-copilot.d.ts +154 -0
  135. package/dist/auth/providers/github-copilot.d.ts.map +1 -0
  136. package/dist/auth/providers/github-copilot.js +340 -0
  137. package/dist/auth/providers/github-copilot.js.map +1 -0
  138. package/dist/auth/providers/openai-codex.d.ts +139 -0
  139. package/dist/auth/providers/openai-codex.d.ts.map +1 -0
  140. package/dist/auth/providers/openai-codex.js +519 -0
  141. package/dist/auth/providers/openai-codex.js.map +1 -0
  142. package/dist/auth/providers/xai.d.ts +64 -0
  143. package/dist/auth/providers/xai.d.ts.map +1 -0
  144. package/dist/auth/providers/xai.js +205 -0
  145. package/dist/auth/providers/xai.js.map +1 -0
  146. package/dist/auth/storage.d.ts +91 -0
  147. package/dist/auth/storage.d.ts.map +1 -0
  148. package/dist/auth/storage.js +197 -0
  149. package/dist/auth/storage.js.map +1 -0
  150. package/dist/auth/types.d.ts +89 -0
  151. package/dist/auth/types.d.ts.map +1 -0
  152. package/dist/auth/types.js +1 -0
  153. package/dist/clipboard/index.d.ts +26 -0
  154. package/dist/clipboard/index.d.ts.map +1 -0
  155. package/dist/clipboard/index.js +226 -0
  156. package/dist/clipboard/index.js.map +1 -0
  157. package/dist/constants.d.ts +10 -0
  158. package/dist/constants.d.ts.map +1 -0
  159. package/dist/constants.js +18 -0
  160. package/dist/constants.js.map +1 -0
  161. package/dist/error-classification.d.ts +10 -0
  162. package/dist/error-classification.d.ts.map +1 -0
  163. package/dist/error-classification.js +22 -0
  164. package/dist/error-classification.js.map +1 -0
  165. package/dist/evals/context-builder.d.ts +41 -0
  166. package/dist/evals/context-builder.d.ts.map +1 -0
  167. package/dist/evals/context-builder.js +161 -0
  168. package/dist/evals/context-builder.js.map +1 -0
  169. package/dist/evals/index.d.ts +4 -0
  170. package/dist/evals/index.d.ts.map +1 -0
  171. package/dist/evals/index.js +5 -0
  172. package/dist/evals/scorers/classify-command.d.ts +31 -0
  173. package/dist/evals/scorers/classify-command.d.ts.map +1 -0
  174. package/dist/evals/scorers/classify-command.js +73 -0
  175. package/dist/evals/scorers/classify-command.js.map +1 -0
  176. package/dist/evals/scorers/efficiency.d.ts +44 -0
  177. package/dist/evals/scorers/efficiency.d.ts.map +1 -0
  178. package/dist/evals/scorers/efficiency.js +259 -0
  179. package/dist/evals/scorers/efficiency.js.map +1 -0
  180. package/dist/evals/scorers/extract-tools.d.ts +25 -0
  181. package/dist/evals/scorers/extract-tools.d.ts.map +1 -0
  182. package/dist/evals/scorers/extract-tools.js +60 -0
  183. package/dist/evals/scorers/extract-tools.js.map +1 -0
  184. package/dist/evals/scorers/index.d.ts +3 -0
  185. package/dist/evals/scorers/index.d.ts.map +1 -0
  186. package/dist/evals/scorers/index.js +3 -0
  187. package/dist/evals/scorers/outcome.d.ts +49 -0
  188. package/dist/evals/scorers/outcome.d.ts.map +1 -0
  189. package/dist/evals/scorers/outcome.js +347 -0
  190. package/dist/evals/scorers/outcome.js.map +1 -0
  191. package/dist/goal-manager.d.ts +78 -0
  192. package/dist/goal-manager.d.ts.map +1 -0
  193. package/dist/goal-manager.js +273 -0
  194. package/dist/goal-manager.js.map +1 -0
  195. package/dist/goal-signal.d.ts +14 -0
  196. package/dist/goal-signal.d.ts.map +1 -0
  197. package/dist/goal-signal.js +17 -0
  198. package/dist/goal-signal.js.map +1 -0
  199. package/dist/headless/cli.d.ts +42 -0
  200. package/dist/headless/cli.d.ts.map +1 -0
  201. package/dist/headless/cli.js +195 -0
  202. package/dist/headless/cli.js.map +1 -0
  203. package/dist/headless/flags.d.ts +33 -0
  204. package/dist/headless/flags.d.ts.map +1 -0
  205. package/dist/headless/flags.js +190 -0
  206. package/dist/headless/flags.js.map +1 -0
  207. package/dist/headless/format.d.ts +38 -0
  208. package/dist/headless/format.d.ts.map +1 -0
  209. package/dist/headless/format.js +89 -0
  210. package/dist/headless/format.js.map +1 -0
  211. package/dist/headless/index.d.ts +25 -0
  212. package/dist/headless/index.d.ts.map +1 -0
  213. package/dist/headless/index.js +6 -0
  214. package/dist/headless/policy.d.ts +17 -0
  215. package/dist/headless/policy.d.ts.map +1 -0
  216. package/dist/headless/policy.js +42 -0
  217. package/dist/headless/policy.js.map +1 -0
  218. package/dist/headless/run-mc.d.ts +7 -0
  219. package/dist/headless/run-mc.d.ts.map +1 -0
  220. package/dist/headless/run-mc.js +346 -0
  221. package/dist/headless/run-mc.js.map +1 -0
  222. package/dist/headless/types.d.ts +158 -0
  223. package/dist/headless/types.d.ts.map +1 -0
  224. package/dist/headless/types.js +18 -0
  225. package/dist/headless/types.js.map +1 -0
  226. package/dist/hooks/config.d.ts +11 -0
  227. package/dist/hooks/config.d.ts.map +1 -0
  228. package/dist/hooks/config.js +73 -0
  229. package/dist/hooks/config.js.map +1 -0
  230. package/dist/hooks/executor.d.ts +13 -0
  231. package/dist/hooks/executor.d.ts.map +1 -0
  232. package/dist/hooks/executor.js +128 -0
  233. package/dist/hooks/executor.js.map +1 -0
  234. package/dist/hooks/index.d.ts +6 -0
  235. package/dist/hooks/index.d.ts.map +1 -0
  236. package/dist/hooks/index.js +5 -0
  237. package/dist/hooks/manager.d.ts +47 -0
  238. package/dist/hooks/manager.d.ts.map +1 -0
  239. package/dist/hooks/manager.js +225 -0
  240. package/dist/hooks/manager.js.map +1 -0
  241. package/dist/hooks/types.d.ts +152 -0
  242. package/dist/hooks/types.d.ts.map +1 -0
  243. package/dist/hooks/types.js +8 -0
  244. package/dist/hooks/types.js.map +1 -0
  245. package/dist/index.d.ts +258 -0
  246. package/dist/index.d.ts.map +1 -0
  247. package/dist/index.js +740 -0
  248. package/dist/index.js.map +1 -0
  249. package/dist/ipc/ipc-reporter.d.ts +14 -0
  250. package/dist/ipc/ipc-reporter.d.ts.map +1 -0
  251. package/dist/ipc/ipc-reporter.js +21 -0
  252. package/dist/ipc/ipc-reporter.js.map +1 -0
  253. package/dist/lsp/client.d.ts +56 -0
  254. package/dist/lsp/client.d.ts.map +1 -0
  255. package/dist/lsp/client.js +251 -0
  256. package/dist/lsp/client.js.map +1 -0
  257. package/dist/lsp/index.d.ts +4 -0
  258. package/dist/lsp/index.d.ts.map +1 -0
  259. package/dist/lsp/index.js +4 -0
  260. package/dist/lsp/language.d.ts +9 -0
  261. package/dist/lsp/language.d.ts.map +1 -0
  262. package/dist/lsp/language.js +44 -0
  263. package/dist/lsp/language.js.map +1 -0
  264. package/dist/lsp/manager.d.ts +34 -0
  265. package/dist/lsp/manager.d.ts.map +1 -0
  266. package/dist/lsp/manager.js +82 -0
  267. package/dist/lsp/manager.js.map +1 -0
  268. package/dist/lsp/server.d.ts +27 -0
  269. package/dist/lsp/server.d.ts.map +1 -0
  270. package/dist/lsp/server.js +159 -0
  271. package/dist/lsp/server.js.map +1 -0
  272. package/dist/lsp/workspace.d.ts +9 -0
  273. package/dist/lsp/workspace.d.ts.map +1 -0
  274. package/dist/lsp/workspace.js +55 -0
  275. package/dist/lsp/workspace.js.map +1 -0
  276. package/dist/mcp/config.d.ts +54 -0
  277. package/dist/mcp/config.d.ts.map +1 -0
  278. package/dist/mcp/config.js +240 -0
  279. package/dist/mcp/config.js.map +1 -0
  280. package/dist/mcp/index.d.ts +5 -0
  281. package/dist/mcp/index.d.ts.map +1 -0
  282. package/dist/mcp/index.js +3 -0
  283. package/dist/mcp/manager.d.ts +98 -0
  284. package/dist/mcp/manager.d.ts.map +1 -0
  285. package/dist/mcp/manager.js +612 -0
  286. package/dist/mcp/manager.js.map +1 -0
  287. package/dist/mcp/state.d.ts +33 -0
  288. package/dist/mcp/state.d.ts.map +1 -0
  289. package/dist/mcp/state.js +88 -0
  290. package/dist/mcp/state.js.map +1 -0
  291. package/dist/mcp/types.d.ts +120 -0
  292. package/dist/mcp/types.d.ts.map +1 -0
  293. package/dist/mcp/types.js +1 -0
  294. package/dist/onboarding/custom-packs.d.ts +7 -0
  295. package/dist/onboarding/custom-packs.d.ts.map +1 -0
  296. package/dist/onboarding/custom-packs.js +17 -0
  297. package/dist/onboarding/custom-packs.js.map +1 -0
  298. package/dist/onboarding/custom-providers.d.ts +4 -0
  299. package/dist/onboarding/custom-providers.d.ts.map +1 -0
  300. package/dist/onboarding/custom-providers.js +30 -0
  301. package/dist/onboarding/custom-providers.js.map +1 -0
  302. package/dist/onboarding/index.d.ts +5 -0
  303. package/dist/onboarding/index.d.ts.map +1 -0
  304. package/dist/onboarding/index.js +3 -0
  305. package/dist/onboarding/om-settings.d.ts +25 -0
  306. package/dist/onboarding/om-settings.d.ts.map +1 -0
  307. package/dist/onboarding/om-settings.js +47 -0
  308. package/dist/onboarding/om-settings.js.map +1 -0
  309. package/dist/onboarding/packs.d.ts +46 -0
  310. package/dist/onboarding/packs.d.ts.map +1 -0
  311. package/dist/onboarding/packs.js +160 -0
  312. package/dist/onboarding/packs.js.map +1 -0
  313. package/dist/onboarding/settings.d.ts +338 -0
  314. package/dist/onboarding/settings.d.ts.map +1 -0
  315. package/dist/onboarding/settings.js +673 -0
  316. package/dist/onboarding/settings.js.map +1 -0
  317. package/dist/permissions.d.ts +55 -0
  318. package/dist/permissions.d.ts.map +1 -0
  319. package/dist/permissions.js +132 -0
  320. package/dist/permissions.js.map +1 -0
  321. package/dist/plugin.d.ts +81 -0
  322. package/dist/plugin.d.ts.map +1 -0
  323. package/dist/plugin.js +28 -0
  324. package/dist/plugin.js.map +1 -0
  325. package/dist/plugins/dependencies.d.ts +9 -0
  326. package/dist/plugins/dependencies.d.ts.map +1 -0
  327. package/dist/plugins/dependencies.js +88 -0
  328. package/dist/plugins/dependencies.js.map +1 -0
  329. package/dist/plugins/install.d.ts +21 -0
  330. package/dist/plugins/install.d.ts.map +1 -0
  331. package/dist/plugins/install.js +190 -0
  332. package/dist/plugins/install.js.map +1 -0
  333. package/dist/plugins/loader.d.ts +15 -0
  334. package/dist/plugins/loader.d.ts.map +1 -0
  335. package/dist/plugins/loader.js +206 -0
  336. package/dist/plugins/loader.js.map +1 -0
  337. package/dist/plugins/manager.d.ts +64 -0
  338. package/dist/plugins/manager.d.ts.map +1 -0
  339. package/dist/plugins/manager.js +384 -0
  340. package/dist/plugins/manager.js.map +1 -0
  341. package/dist/plugins/manifest.d.ts +14 -0
  342. package/dist/plugins/manifest.d.ts.map +1 -0
  343. package/dist/plugins/manifest.js +50 -0
  344. package/dist/plugins/manifest.js.map +1 -0
  345. package/dist/plugins/package-link.d.ts +3 -0
  346. package/dist/plugins/package-link.d.ts.map +1 -0
  347. package/dist/plugins/package-link.js +61 -0
  348. package/dist/plugins/package-link.js.map +1 -0
  349. package/dist/plugins/paths.d.ts +10 -0
  350. package/dist/plugins/paths.d.ts.map +1 -0
  351. package/dist/plugins/paths.js +25 -0
  352. package/dist/plugins/paths.js.map +1 -0
  353. package/dist/plugins/registry.d.ts +8 -0
  354. package/dist/plugins/registry.d.ts.map +1 -0
  355. package/dist/plugins/registry.js +112 -0
  356. package/dist/plugins/registry.js.map +1 -0
  357. package/dist/plugins/scaffold.d.ts +10 -0
  358. package/dist/plugins/scaffold.d.ts.map +1 -0
  359. package/dist/plugins/scaffold.js +116 -0
  360. package/dist/plugins/scaffold.js.map +1 -0
  361. package/dist/plugins/types.d.ts +45 -0
  362. package/dist/plugins/types.d.ts.map +1 -0
  363. package/dist/plugins/types.js +1 -0
  364. package/dist/processors/plan-rejection-abort.d.ts +12 -0
  365. package/dist/processors/plan-rejection-abort.d.ts.map +1 -0
  366. package/dist/processors/plan-rejection-abort.js +54 -0
  367. package/dist/processors/plan-rejection-abort.js.map +1 -0
  368. package/dist/providers/amazon-bedrock-gateway.d.ts +47 -0
  369. package/dist/providers/amazon-bedrock-gateway.d.ts.map +1 -0
  370. package/dist/providers/amazon-bedrock-gateway.js +152 -0
  371. package/dist/providers/amazon-bedrock-gateway.js.map +1 -0
  372. package/dist/providers/amazon-bedrock.d.ts +28 -0
  373. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  374. package/dist/providers/amazon-bedrock.js +83 -0
  375. package/dist/providers/amazon-bedrock.js.map +1 -0
  376. package/dist/providers/claude-max.d.ts +52 -0
  377. package/dist/providers/claude-max.d.ts.map +1 -0
  378. package/dist/providers/claude-max.js +171 -0
  379. package/dist/providers/claude-max.js.map +1 -0
  380. package/dist/providers/github-copilot.d.ts +60 -0
  381. package/dist/providers/github-copilot.d.ts.map +1 -0
  382. package/dist/providers/github-copilot.js +265 -0
  383. package/dist/providers/github-copilot.js.map +1 -0
  384. package/dist/providers/openai-codex.d.ts +72 -0
  385. package/dist/providers/openai-codex.d.ts.map +1 -0
  386. package/dist/providers/openai-codex.js +302 -0
  387. package/dist/providers/openai-codex.js.map +1 -0
  388. package/dist/providers/xai.d.ts +33 -0
  389. package/dist/providers/xai.d.ts.map +1 -0
  390. package/dist/providers/xai.js +70 -0
  391. package/dist/providers/xai.js.map +1 -0
  392. package/dist/schema.d.ts +192 -0
  393. package/dist/schema.d.ts.map +1 -0
  394. package/dist/schema.js +98 -0
  395. package/dist/schema.js.map +1 -0
  396. package/dist/theme-palette.d.ts +17 -0
  397. package/dist/theme-palette.d.ts.map +1 -0
  398. package/dist/theme-palette.js +21 -0
  399. package/dist/theme-palette.js.map +1 -0
  400. package/dist/tool-names.d.ts +73 -0
  401. package/dist/tool-names.d.ts.map +1 -0
  402. package/dist/tool-names.js +52 -0
  403. package/dist/tool-names.js.map +1 -0
  404. package/dist/tools/index.d.ts +6 -0
  405. package/dist/tools/index.d.ts.map +1 -0
  406. package/dist/tools/index.js +3 -0
  407. package/dist/tools/request-sandbox-access.d.ts +6 -0
  408. package/dist/tools/request-sandbox-access.d.ts.map +1 -0
  409. package/dist/tools/request-sandbox-access.js +79 -0
  410. package/dist/tools/request-sandbox-access.js.map +1 -0
  411. package/dist/tools/utils.d.ts +20 -0
  412. package/dist/tools/utils.d.ts.map +1 -0
  413. package/dist/tools/utils.js +32 -0
  414. package/dist/tools/utils.js.map +1 -0
  415. package/dist/tools/web-search.d.ts +35 -0
  416. package/dist/tools/web-search.d.ts.map +1 -0
  417. package/dist/tools/web-search.js +61 -0
  418. package/dist/tools/web-search.js.map +1 -0
  419. package/dist/utils/binaries.d.ts +7 -0
  420. package/dist/utils/binaries.d.ts.map +1 -0
  421. package/dist/utils/binaries.js +78 -0
  422. package/dist/utils/binaries.js.map +1 -0
  423. package/dist/utils/debug-log.d.ts +12 -0
  424. package/dist/utils/debug-log.d.ts.map +1 -0
  425. package/dist/utils/debug-log.js +59 -0
  426. package/dist/utils/debug-log.js.map +1 -0
  427. package/dist/utils/errors.d.ts +36 -0
  428. package/dist/utils/errors.d.ts.map +1 -0
  429. package/dist/utils/errors.js +172 -0
  430. package/dist/utils/errors.js.map +1 -0
  431. package/dist/utils/gateway-sync.d.ts +26 -0
  432. package/dist/utils/gateway-sync.d.ts.map +1 -0
  433. package/dist/utils/gateway-sync.js +61 -0
  434. package/dist/utils/gateway-sync.js.map +1 -0
  435. package/dist/utils/path-security.d.ts +2 -0
  436. package/dist/utils/path-security.d.ts.map +1 -0
  437. package/dist/utils/path-security.js +10 -0
  438. package/dist/utils/path-security.js.map +1 -0
  439. package/dist/utils/plan-diff.d.ts +25 -0
  440. package/dist/utils/plan-diff.d.ts.map +1 -0
  441. package/dist/utils/plan-diff.js +62 -0
  442. package/dist/utils/plan-diff.js.map +1 -0
  443. package/dist/utils/plans.d.ts +56 -0
  444. package/dist/utils/plans.d.ts.map +1 -0
  445. package/dist/utils/plans.js +117 -0
  446. package/dist/utils/plans.js.map +1 -0
  447. package/dist/utils/project.d.ts +160 -0
  448. package/dist/utils/project.d.ts.map +1 -0
  449. package/dist/utils/project.js +364 -0
  450. package/dist/utils/project.js.map +1 -0
  451. package/dist/utils/signals-pubsub.d.ts +41 -0
  452. package/dist/utils/signals-pubsub.d.ts.map +1 -0
  453. package/dist/utils/signals-pubsub.js +122 -0
  454. package/dist/utils/signals-pubsub.js.map +1 -0
  455. package/dist/utils/slash-command-loader.d.ts +52 -0
  456. package/dist/utils/slash-command-loader.d.ts.map +1 -0
  457. package/dist/utils/slash-command-loader.js +141 -0
  458. package/dist/utils/slash-command-loader.js.map +1 -0
  459. package/dist/utils/slash-command-processor.d.ts +14 -0
  460. package/dist/utils/slash-command-processor.d.ts.map +1 -0
  461. package/dist/utils/slash-command-processor.js +105 -0
  462. package/dist/utils/slash-command-processor.js.map +1 -0
  463. package/dist/utils/stdin-pipe.d.ts +33 -0
  464. package/dist/utils/stdin-pipe.d.ts.map +1 -0
  465. package/dist/utils/stdin-pipe.js +96 -0
  466. package/dist/utils/stdin-pipe.js.map +1 -0
  467. package/dist/utils/storage-factory.d.ts +50 -0
  468. package/dist/utils/storage-factory.d.ts.map +1 -0
  469. package/dist/utils/storage-factory.js +121 -0
  470. package/dist/utils/storage-factory.js.map +1 -0
  471. package/dist/utils/storage-maintenance.d.ts +103 -0
  472. package/dist/utils/storage-maintenance.d.ts.map +1 -0
  473. package/dist/utils/storage-maintenance.js +274 -0
  474. package/dist/utils/storage-maintenance.js.map +1 -0
  475. package/dist/utils/thread-lock.d.ts +26 -0
  476. package/dist/utils/thread-lock.d.ts.map +1 -0
  477. package/dist/utils/thread-lock.js +112 -0
  478. package/dist/utils/thread-lock.js.map +1 -0
  479. package/dist/utils/token-estimator.d.ts +3 -0
  480. package/dist/utils/token-estimator.d.ts.map +1 -0
  481. package/dist/utils/token-estimator.js +21 -0
  482. package/dist/utils/token-estimator.js.map +1 -0
  483. package/dist/utils/update-check.d.ts +101 -0
  484. package/dist/utils/update-check.d.ts.map +1 -0
  485. package/dist/utils/update-check.js +383 -0
  486. package/dist/utils/update-check.js.map +1 -0
  487. package/dist/voice/stt-registry.d.ts +64 -0
  488. package/dist/voice/stt-registry.d.ts.map +1 -0
  489. package/dist/voice/stt-registry.js +144 -0
  490. package/dist/voice/stt-registry.js.map +1 -0
  491. package/package.json +96 -0
@@ -0,0 +1,240 @@
1
+ import { DEFAULT_CONFIG_DIR } from "../constants.js";
2
+ import * as fs$1 from "fs";
3
+ import * as os$1 from "os";
4
+ import * as path$1 from "path";
5
+ //#region src/mcp/config.ts
6
+ /**
7
+ * MCP server configuration loading from filesystem.
8
+ * Loads from:
9
+ * 1. .claude/settings.local.json (Claude Code compat — lowest priority)
10
+ * 2. ~/.mastracode/mcp.json (global)
11
+ * 3. .mcp.json (project root — Claude Code compatible)
12
+ * 4. .mastracode/mcp.json (project — highest priority)
13
+ *
14
+ * Higher-priority configs override lower ones by server name. The project root
15
+ * `.mcp.json` is read so a project that already keeps MCP servers there for
16
+ * Claude Code does not need to duplicate them under `.mastracode/`.
17
+ */
18
+ /**
19
+ * Default OAuth redirect URL for servers that do not configure one.
20
+ * Port 1458 is stable across sessions so persisted tokens keep the same
21
+ * storage fingerprint; it sits clear of the ports the Codex login flow
22
+ * reserves (1455/1457). When 1458 is busy the callback server falls back
23
+ * to the next sequential port, which stays covered by the client
24
+ * registration (see `@mastra/mcp`'s `getCallbackUrlCandidates`).
25
+ */
26
+ const DEFAULT_OAUTH_REDIRECT_URL = "http://127.0.0.1:1458/oauth/callback";
27
+ const LOOPBACK_IPV4 = /^127\.(?:\d{1,3})\.(?:\d{1,3})\.(?:\d{1,3})$/;
28
+ function isLoopbackHostname(hostname) {
29
+ return hostname === "localhost" || hostname === "[::1]" || hostname === "::1" || LOOPBACK_IPV4.test(hostname);
30
+ }
31
+ /**
32
+ * Resolve the effective OAuth redirect URL for a server config.
33
+ *
34
+ * `callbackPort` (the Claude Code / Codex convention) takes precedence and
35
+ * synthesizes `http://localhost:<port>/callback`. Config-file entries are
36
+ * normalized by `parseOAuthConfig` (which also enforces that `callbackPort`
37
+ * and `redirectUrl` are mutually exclusive), but programmatically registered
38
+ * servers bypass the parser, so every consumer of the redirect URL must
39
+ * resolve it through this helper rather than reading `redirectUrl` directly.
40
+ */
41
+ function resolveOAuthRedirectUrl(oauth) {
42
+ if (oauth?.callbackPort !== void 0) return `http://localhost:${oauth.callbackPort}/callback`;
43
+ return oauth?.redirectUrl ?? "http://127.0.0.1:1458/oauth/callback";
44
+ }
45
+ function loadMcpConfig(projectDir, configDirName = DEFAULT_CONFIG_DIR) {
46
+ return mergeConfigs(loadClaudeSettings(projectDir), loadSingleConfig(getGlobalMcpPath(configDirName)), loadSingleConfig(getRootMcpPath(projectDir)), loadSingleConfig(getProjectMcpPath(projectDir, configDirName)));
47
+ }
48
+ function getProjectMcpPath(projectDir, configDirName = DEFAULT_CONFIG_DIR) {
49
+ return path$1.join(projectDir, configDirName, "mcp.json");
50
+ }
51
+ function getRootMcpPath(projectDir) {
52
+ return path$1.join(projectDir, ".mcp.json");
53
+ }
54
+ function getGlobalMcpPath(configDirName = DEFAULT_CONFIG_DIR) {
55
+ return path$1.join(os$1.homedir(), configDirName, "mcp.json");
56
+ }
57
+ function getClaudeSettingsPath(projectDir) {
58
+ return path$1.join(projectDir, ".claude", "settings.local.json");
59
+ }
60
+ function loadSingleConfig(filePath) {
61
+ try {
62
+ if (!fs$1.existsSync(filePath)) return {};
63
+ const raw = fs$1.readFileSync(filePath, "utf-8");
64
+ return validateConfig(JSON.parse(raw));
65
+ } catch {
66
+ return {};
67
+ }
68
+ }
69
+ function loadClaudeSettings(projectDir) {
70
+ try {
71
+ const filePath = getClaudeSettingsPath(projectDir);
72
+ if (!fs$1.existsSync(filePath)) return {};
73
+ const raw = fs$1.readFileSync(filePath, "utf-8");
74
+ const parsed = JSON.parse(raw);
75
+ if (parsed?.mcpServers && typeof parsed.mcpServers === "object") return validateConfig({ mcpServers: parsed.mcpServers });
76
+ return {};
77
+ } catch {
78
+ return {};
79
+ }
80
+ }
81
+ /**
82
+ * Expand `${VAR}` and `${VAR:-default}` references in a string from the
83
+ * environment, matching how Claude Code resolves values in `.mcp.json`.
84
+ * A referenced variable that is unset or empty falls back to its default,
85
+ * or to an empty string when no default is given.
86
+ */
87
+ function expandEnvVars(value, env = process.env) {
88
+ return value.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)(?::-([^}]*))?\}|\$([A-Za-z_][A-Za-z0-9_]*)/g, (_match, bracedName, fallback, bareName) => {
89
+ const resolved = env[bracedName ?? bareName];
90
+ if (resolved !== void 0 && resolved !== "") return resolved;
91
+ return fallback ?? "";
92
+ });
93
+ }
94
+ /**
95
+ * Expand `${VAR}` and `$VAR` references in every string-valued HTTP header so that
96
+ * secrets like API keys can be referenced from the environment instead of
97
+ * being hardcoded in `mcp.json`.
98
+ */
99
+ function expandHeaderEnvVars(headers) {
100
+ const expanded = {};
101
+ for (const [key, value] of Object.entries(headers)) if (typeof value === "string") expanded[key] = expandEnvVars(value);
102
+ return expanded;
103
+ }
104
+ /**
105
+ * Expand `${VAR}` and `$VAR` references in every string-valued environment
106
+ * variable passed to a stdio server, so that secrets can be referenced from the
107
+ * host environment instead of being hardcoded in `mcp.json`.
108
+ */
109
+ function expandEnvValues(env) {
110
+ const expanded = {};
111
+ for (const [key, value] of Object.entries(env)) if (typeof value === "string") expanded[key] = expandEnvVars(value);
112
+ return expanded;
113
+ }
114
+ /**
115
+ * Classify a raw server entry as stdio, http, or skip (with reason).
116
+ */
117
+ function classifyServerEntry(raw) {
118
+ if (!raw || typeof raw !== "object") return {
119
+ kind: "skip",
120
+ reason: "Invalid entry: expected an object"
121
+ };
122
+ const obj = raw;
123
+ const hasCommand = typeof obj.command === "string";
124
+ const hasUrl = typeof obj.url === "string";
125
+ if (hasCommand && hasUrl) return {
126
+ kind: "skip",
127
+ reason: "Cannot specify both \"command\" and \"url\""
128
+ };
129
+ if (hasCommand) return { kind: "stdio" };
130
+ if (hasUrl) {
131
+ try {
132
+ new URL(expandEnvVars(obj.url));
133
+ } catch {
134
+ return {
135
+ kind: "skip",
136
+ reason: `Invalid URL: "${obj.url}"`
137
+ };
138
+ }
139
+ return { kind: "http" };
140
+ }
141
+ return {
142
+ kind: "skip",
143
+ reason: "Missing required field: \"command\" (stdio) or \"url\" (http)"
144
+ };
145
+ }
146
+ function validateConfig(raw) {
147
+ if (!raw || typeof raw !== "object") return {};
148
+ const obj = raw;
149
+ if (!obj.mcpServers || typeof obj.mcpServers !== "object") return {};
150
+ const servers = {};
151
+ const skippedServers = [];
152
+ const rawServers = obj.mcpServers;
153
+ for (const [name, entry] of Object.entries(rawServers)) {
154
+ const classification = classifyServerEntry(entry);
155
+ if (classification.kind === "stdio") {
156
+ const e = entry;
157
+ servers[name] = {
158
+ command: e.command,
159
+ args: Array.isArray(e.args) ? e.args : void 0,
160
+ env: typeof e.env === "object" && e.env !== null ? expandEnvValues(e.env) : void 0
161
+ };
162
+ } else if (classification.kind === "http") {
163
+ const e = entry;
164
+ const oauthResult = parseOAuthConfig(e.oauth);
165
+ if (oauthResult.reason) {
166
+ skippedServers.push({
167
+ name,
168
+ reason: oauthResult.reason
169
+ });
170
+ continue;
171
+ }
172
+ servers[name] = {
173
+ url: expandEnvVars(e.url),
174
+ headers: typeof e.headers === "object" && e.headers !== null ? expandHeaderEnvVars(e.headers) : void 0,
175
+ oauth: oauthResult.config
176
+ };
177
+ } else skippedServers.push({
178
+ name,
179
+ reason: classification.reason
180
+ });
181
+ }
182
+ const result = {};
183
+ if (Object.keys(servers).length > 0) result.mcpServers = servers;
184
+ if (skippedServers.length > 0) result.skippedServers = skippedServers;
185
+ return result;
186
+ }
187
+ function parseOAuthConfig(raw) {
188
+ if (raw === void 0) return {};
189
+ if (!raw || typeof raw !== "object") return { reason: "Invalid OAuth config: expected an object" };
190
+ const obj = raw;
191
+ if (obj.redirectUrl !== void 0 && typeof obj.redirectUrl !== "string") return { reason: "Invalid OAuth config: \"redirectUrl\" must be a string" };
192
+ let callbackPortRedirectUrl;
193
+ if (obj.callbackPort !== void 0) {
194
+ if (obj.redirectUrl !== void 0) return { reason: "Invalid OAuth config: set either \"redirectUrl\" or \"callbackPort\", not both" };
195
+ if (typeof obj.callbackPort !== "number" || !Number.isInteger(obj.callbackPort) || obj.callbackPort < 1 || obj.callbackPort > 65535) return { reason: "Invalid OAuth config: \"callbackPort\" must be an integer between 1 and 65535" };
196
+ callbackPortRedirectUrl = resolveOAuthRedirectUrl({ callbackPort: obj.callbackPort });
197
+ }
198
+ const rawRedirectUrl = callbackPortRedirectUrl ?? obj.redirectUrl ?? "http://127.0.0.1:1458/oauth/callback";
199
+ try {
200
+ const redirectUrl = new URL(rawRedirectUrl);
201
+ const isLoopback = isLoopbackHostname(redirectUrl.hostname);
202
+ if (redirectUrl.protocol !== "https:" && !(redirectUrl.protocol === "http:" && isLoopback)) return { reason: "Invalid OAuth redirectUrl: must use HTTPS unless it is a loopback HTTP URL" };
203
+ } catch {
204
+ return { reason: `Invalid OAuth redirectUrl: "${rawRedirectUrl}"` };
205
+ }
206
+ if (obj.scopes !== void 0 && (!Array.isArray(obj.scopes) || obj.scopes.some((scope) => typeof scope !== "string"))) return { reason: "Invalid OAuth config: \"scopes\" must be an array of strings" };
207
+ return { config: {
208
+ redirectUrl: rawRedirectUrl,
209
+ clientName: typeof obj.clientName === "string" ? obj.clientName : void 0,
210
+ scopes: obj.scopes,
211
+ clientId: typeof obj.clientId === "string" ? obj.clientId : void 0,
212
+ clientSecret: typeof obj.clientSecret === "string" ? obj.clientSecret : void 0
213
+ } };
214
+ }
215
+ /**
216
+ * Merge configs: claude (lowest priority) < global < project (highest).
217
+ * Later configs override earlier by server name.
218
+ * Skipped entries are accumulated, but if a higher-priority config provides
219
+ * a valid entry for a skipped name, the skip is removed.
220
+ */
221
+ function mergeConfigs(...configs) {
222
+ const merged = {};
223
+ const allSkipped = [];
224
+ for (const config of configs) {
225
+ if (config.mcpServers) for (const [name, server] of Object.entries(config.mcpServers)) merged[name] = server;
226
+ if (config.skippedServers) allSkipped.push(...config.skippedServers);
227
+ }
228
+ const validNames = new Set(Object.keys(merged));
229
+ const filteredSkipped = allSkipped.filter((s) => !validNames.has(s.name));
230
+ const skippedMap = /* @__PURE__ */ new Map();
231
+ for (const s of filteredSkipped) skippedMap.set(s.name, s);
232
+ const result = {};
233
+ if (Object.keys(merged).length > 0) result.mcpServers = merged;
234
+ if (skippedMap.size > 0) result.skippedServers = Array.from(skippedMap.values());
235
+ return result;
236
+ }
237
+ //#endregion
238
+ export { DEFAULT_OAUTH_REDIRECT_URL, classifyServerEntry, expandEnvVars, getClaudeSettingsPath, getGlobalMcpPath, getProjectMcpPath, getRootMcpPath, loadMcpConfig, resolveOAuthRedirectUrl, validateConfig };
239
+
240
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","names":["path","os","fs"],"sources":["../../src/mcp/config.ts"],"sourcesContent":["/**\n * MCP server configuration loading from filesystem.\n * Loads from:\n * 1. .claude/settings.local.json (Claude Code compat — lowest priority)\n * 2. ~/.mastracode/mcp.json (global)\n * 3. .mcp.json (project root — Claude Code compatible)\n * 4. .mastracode/mcp.json (project — highest priority)\n *\n * Higher-priority configs override lower ones by server name. The project root\n * `.mcp.json` is read so a project that already keeps MCP servers there for\n * Claude Code does not need to duplicate them under `.mastracode/`.\n */\n\nimport * as fs from 'node:fs';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport { DEFAULT_CONFIG_DIR } from '../constants.js';\nimport type { McpConfig, McpHttpOAuthConfig, McpServerConfig, McpSkippedServer } from './types.js';\n\n/**\n * Default OAuth redirect URL for servers that do not configure one.\n * Port 1458 is stable across sessions so persisted tokens keep the same\n * storage fingerprint; it sits clear of the ports the Codex login flow\n * reserves (1455/1457). When 1458 is busy the callback server falls back\n * to the next sequential port, which stays covered by the client\n * registration (see `@mastra/mcp`'s `getCallbackUrlCandidates`).\n */\nexport const DEFAULT_OAUTH_REDIRECT_URL = 'http://127.0.0.1:1458/oauth/callback';\n\n// Matches the entire 127.0.0.0/8 range in dotted-quad form. `URL` normalizes\n// IPv4 hosts to four octets (so `127.1` becomes `127.0.0.1`), so anchoring the\n// pattern is enough — and it rejects lookalikes like `127.evil.com` that a\n// `startsWith('127.')` check would wrongly accept.\nconst LOOPBACK_IPV4 = /^127\\.(?:\\d{1,3})\\.(?:\\d{1,3})\\.(?:\\d{1,3})$/;\n\nfunction isLoopbackHostname(hostname: string): boolean {\n return hostname === 'localhost' || hostname === '[::1]' || hostname === '::1' || LOOPBACK_IPV4.test(hostname);\n}\n\n/**\n * Resolve the effective OAuth redirect URL for a server config.\n *\n * `callbackPort` (the Claude Code / Codex convention) takes precedence and\n * synthesizes `http://localhost:<port>/callback`. Config-file entries are\n * normalized by `parseOAuthConfig` (which also enforces that `callbackPort`\n * and `redirectUrl` are mutually exclusive), but programmatically registered\n * servers bypass the parser, so every consumer of the redirect URL must\n * resolve it through this helper rather than reading `redirectUrl` directly.\n */\nexport function resolveOAuthRedirectUrl(oauth: McpHttpOAuthConfig | undefined): string {\n if (oauth?.callbackPort !== undefined) {\n return `http://localhost:${oauth.callbackPort}/callback`;\n }\n return oauth?.redirectUrl ?? DEFAULT_OAUTH_REDIRECT_URL;\n}\n\nexport function loadMcpConfig(projectDir: string, configDirName = DEFAULT_CONFIG_DIR): McpConfig {\n const claudeConfig = loadClaudeSettings(projectDir);\n const globalConfig = loadSingleConfig(getGlobalMcpPath(configDirName));\n const rootConfig = loadSingleConfig(getRootMcpPath(projectDir));\n const projectConfig = loadSingleConfig(getProjectMcpPath(projectDir, configDirName));\n\n return mergeConfigs(claudeConfig, globalConfig, rootConfig, projectConfig);\n}\n\nexport function getProjectMcpPath(projectDir: string, configDirName = DEFAULT_CONFIG_DIR): string {\n return path.join(projectDir, configDirName, 'mcp.json');\n}\n\nexport function getRootMcpPath(projectDir: string): string {\n return path.join(projectDir, '.mcp.json');\n}\n\nexport function getGlobalMcpPath(configDirName = DEFAULT_CONFIG_DIR): string {\n return path.join(os.homedir(), configDirName, 'mcp.json');\n}\n\nexport function getClaudeSettingsPath(projectDir: string): string {\n return path.join(projectDir, '.claude', 'settings.local.json');\n}\n\nfunction loadSingleConfig(filePath: string): McpConfig {\n try {\n if (!fs.existsSync(filePath)) return {};\n const raw = fs.readFileSync(filePath, 'utf-8');\n return validateConfig(JSON.parse(raw));\n } catch {\n return {};\n }\n}\n\nfunction loadClaudeSettings(projectDir: string): McpConfig {\n try {\n const filePath = getClaudeSettingsPath(projectDir);\n if (!fs.existsSync(filePath)) return {};\n const raw = fs.readFileSync(filePath, 'utf-8');\n const parsed = JSON.parse(raw);\n // Claude Code stores mcpServers at the top level of settings\n if (parsed?.mcpServers && typeof parsed.mcpServers === 'object') {\n return validateConfig({ mcpServers: parsed.mcpServers });\n }\n return {};\n } catch {\n return {};\n }\n}\n\n/**\n * Expand `${VAR}` and `${VAR:-default}` references in a string from the\n * environment, matching how Claude Code resolves values in `.mcp.json`.\n * A referenced variable that is unset or empty falls back to its default,\n * or to an empty string when no default is given.\n */\nexport function expandEnvVars(value: string, env: NodeJS.ProcessEnv = process.env): string {\n return value.replace(\n /\\$\\{([A-Za-z_][A-Za-z0-9_]*)(?::-([^}]*))?\\}|\\$([A-Za-z_][A-Za-z0-9_]*)/g,\n (_match, bracedName, fallback, bareName) => {\n const name = bracedName ?? bareName;\n const resolved = env[name];\n if (resolved !== undefined && resolved !== '') return resolved;\n return fallback ?? '';\n },\n );\n}\n\n/**\n * Expand `${VAR}` and `$VAR` references in every string-valued HTTP header so that\n * secrets like API keys can be referenced from the environment instead of\n * being hardcoded in `mcp.json`.\n */\nfunction expandHeaderEnvVars(headers: Record<string, unknown>): Record<string, string> {\n const expanded: Record<string, string> = {};\n for (const [key, value] of Object.entries(headers)) {\n if (typeof value === 'string') expanded[key] = expandEnvVars(value);\n }\n return expanded;\n}\n\n/**\n * Expand `${VAR}` and `$VAR` references in every string-valued environment\n * variable passed to a stdio server, so that secrets can be referenced from the\n * host environment instead of being hardcoded in `mcp.json`.\n */\nfunction expandEnvValues(env: Record<string, unknown>): Record<string, string> {\n const expanded: Record<string, string> = {};\n for (const [key, value] of Object.entries(env)) {\n if (typeof value === 'string') expanded[key] = expandEnvVars(value);\n }\n return expanded;\n}\n\n/**\n * Classify a raw server entry as stdio, http, or skip (with reason).\n */\nexport function classifyServerEntry(raw: unknown): { kind: 'stdio' | 'http' | 'skip'; reason?: string } {\n if (!raw || typeof raw !== 'object') {\n return { kind: 'skip', reason: 'Invalid entry: expected an object' };\n }\n\n const obj = raw as Record<string, unknown>;\n const hasCommand = typeof obj.command === 'string';\n const hasUrl = typeof obj.url === 'string';\n\n if (hasCommand && hasUrl) {\n return { kind: 'skip', reason: 'Cannot specify both \"command\" and \"url\"' };\n }\n\n if (hasCommand) {\n return { kind: 'stdio' };\n }\n\n if (hasUrl) {\n try {\n new URL(expandEnvVars(obj.url as string));\n } catch {\n return { kind: 'skip', reason: `Invalid URL: \"${obj.url}\"` };\n }\n return { kind: 'http' };\n }\n\n return { kind: 'skip', reason: 'Missing required field: \"command\" (stdio) or \"url\" (http)' };\n}\n\nexport function validateConfig(raw: unknown): McpConfig {\n if (!raw || typeof raw !== 'object') return {};\n const obj = raw as Record<string, unknown>;\n\n if (!obj.mcpServers || typeof obj.mcpServers !== 'object') return {};\n\n const servers: Record<string, McpServerConfig> = {};\n const skippedServers: McpSkippedServer[] = [];\n const rawServers = obj.mcpServers as Record<string, unknown>;\n\n for (const [name, entry] of Object.entries(rawServers)) {\n const classification = classifyServerEntry(entry);\n\n if (classification.kind === 'stdio') {\n const e = entry as Record<string, unknown>;\n servers[name] = {\n command: e.command as string,\n args: Array.isArray(e.args) ? (e.args as string[]) : undefined,\n env:\n typeof e.env === 'object' && e.env !== null ? expandEnvValues(e.env as Record<string, unknown>) : undefined,\n };\n } else if (classification.kind === 'http') {\n const e = entry as Record<string, unknown>;\n const oauthResult = parseOAuthConfig(e.oauth);\n if (oauthResult.reason) {\n skippedServers.push({ name, reason: oauthResult.reason });\n continue;\n }\n servers[name] = {\n url: expandEnvVars(e.url as string),\n headers:\n typeof e.headers === 'object' && e.headers !== null\n ? expandHeaderEnvVars(e.headers as Record<string, unknown>)\n : undefined,\n oauth: oauthResult.config,\n };\n } else {\n skippedServers.push({ name, reason: classification.reason! });\n }\n }\n\n const result: McpConfig = {};\n if (Object.keys(servers).length > 0) {\n result.mcpServers = servers;\n }\n if (skippedServers.length > 0) {\n result.skippedServers = skippedServers;\n }\n return result;\n}\n\nfunction parseOAuthConfig(raw: unknown): { config?: McpHttpOAuthConfig; reason?: string } {\n if (raw === undefined) return {};\n if (!raw || typeof raw !== 'object') {\n return { reason: 'Invalid OAuth config: expected an object' };\n }\n\n const obj = raw as Record<string, unknown>;\n if (obj.redirectUrl !== undefined && typeof obj.redirectUrl !== 'string') {\n return { reason: 'Invalid OAuth config: \"redirectUrl\" must be a string' };\n }\n // `callbackPort` is a shorthand for a loopback redirect URL. It synthesizes\n // `http://localhost:<port>/callback` — the convention Claude Code and Codex\n // emit — so those clients' config (e.g. Slack's official MCP plugin config)\n // can be pasted verbatim. `redirectUrl` stays as the full-control escape\n // hatch (any loopback host/path). The two are mutually exclusive to avoid\n // an ambiguous redirect.\n let callbackPortRedirectUrl: string | undefined;\n if (obj.callbackPort !== undefined) {\n if (obj.redirectUrl !== undefined) {\n return { reason: 'Invalid OAuth config: set either \"redirectUrl\" or \"callbackPort\", not both' };\n }\n if (\n typeof obj.callbackPort !== 'number' ||\n !Number.isInteger(obj.callbackPort) ||\n obj.callbackPort < 1 ||\n obj.callbackPort > 65535\n ) {\n return { reason: 'Invalid OAuth config: \"callbackPort\" must be an integer between 1 and 65535' };\n }\n callbackPortRedirectUrl = resolveOAuthRedirectUrl({ callbackPort: obj.callbackPort });\n }\n\n const rawRedirectUrl = callbackPortRedirectUrl ?? obj.redirectUrl ?? DEFAULT_OAUTH_REDIRECT_URL;\n try {\n const redirectUrl = new URL(rawRedirectUrl);\n const isLoopback = isLoopbackHostname(redirectUrl.hostname);\n if (redirectUrl.protocol !== 'https:' && !(redirectUrl.protocol === 'http:' && isLoopback)) {\n return { reason: 'Invalid OAuth redirectUrl: must use HTTPS unless it is a loopback HTTP URL' };\n }\n } catch {\n return { reason: `Invalid OAuth redirectUrl: \"${rawRedirectUrl}\"` };\n }\n\n if (obj.scopes !== undefined && (!Array.isArray(obj.scopes) || obj.scopes.some(scope => typeof scope !== 'string'))) {\n return { reason: 'Invalid OAuth config: \"scopes\" must be an array of strings' };\n }\n\n return {\n config: {\n redirectUrl: rawRedirectUrl,\n clientName: typeof obj.clientName === 'string' ? obj.clientName : undefined,\n scopes: obj.scopes as string[] | undefined,\n clientId: typeof obj.clientId === 'string' ? obj.clientId : undefined,\n clientSecret: typeof obj.clientSecret === 'string' ? obj.clientSecret : undefined,\n },\n };\n}\n\n/**\n * Merge configs: claude (lowest priority) < global < project (highest).\n * Later configs override earlier by server name.\n * Skipped entries are accumulated, but if a higher-priority config provides\n * a valid entry for a skipped name, the skip is removed.\n */\nfunction mergeConfigs(...configs: McpConfig[]): McpConfig {\n const merged: Record<string, McpServerConfig> = {};\n const allSkipped: McpSkippedServer[] = [];\n\n for (const config of configs) {\n if (config.mcpServers) {\n for (const [name, server] of Object.entries(config.mcpServers)) {\n merged[name] = server;\n }\n }\n if (config.skippedServers) {\n allSkipped.push(...config.skippedServers);\n }\n }\n\n // Remove skipped entries that were resolved by a valid config at any priority\n const validNames = new Set(Object.keys(merged));\n const filteredSkipped = allSkipped.filter(s => !validNames.has(s.name));\n\n // Deduplicate skipped entries by name (keep last occurrence — highest priority reason)\n const skippedMap = new Map<string, McpSkippedServer>();\n for (const s of filteredSkipped) {\n skippedMap.set(s.name, s);\n }\n\n const result: McpConfig = {};\n if (Object.keys(merged).length > 0) {\n result.mcpServers = merged;\n }\n if (skippedMap.size > 0) {\n result.skippedServers = Array.from(skippedMap.values());\n }\n return result;\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { createMcpManager } from './manager.js';
2
+ export type { McpManager, McpInitResult } from './manager.js';
3
+ export { loadMcpConfig, getProjectMcpPath, getGlobalMcpPath, getClaudeSettingsPath } from './config.js';
4
+ export type { McpConfig, McpServerConfig, McpStdioServerConfig, McpHttpServerConfig, McpSkippedServer, McpServerStatus, } from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxG,YAAY,EACV,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { getClaudeSettingsPath, getGlobalMcpPath, getProjectMcpPath, loadMcpConfig } from "./config.js";
2
+ import { createMcpManager } from "./manager.js";
3
+ export { createMcpManager, getClaudeSettingsPath, getGlobalMcpPath, getProjectMcpPath, loadMcpConfig };
@@ -0,0 +1,98 @@
1
+ /**
2
+ * MCP manager — orchestrates MCP server connections using MCPClient directly.
3
+ * Created once at startup, provides tools from connected MCP servers.
4
+ */
5
+ import type { McpConfig, McpServerConfig, McpServerStatus, McpSkippedServer } from './types.js';
6
+ /** Summary of MCP initialization result. */
7
+ export interface McpInitResult {
8
+ connected: McpServerStatus[];
9
+ failed: McpServerStatus[];
10
+ skipped: McpSkippedServer[];
11
+ totalTools: number;
12
+ }
13
+ /** Public interface for the MCP manager returned by createMcpManager(). */
14
+ export interface McpManager {
15
+ /** Connect to all configured MCP servers and collect their tools. */
16
+ init(): Promise<void>;
17
+ /** Start init in the background. Returns a promise that resolves with status when done. */
18
+ initInBackground(): Promise<McpInitResult>;
19
+ /** Disconnect all servers, reload config from disk, reconnect. */
20
+ reload(): Promise<void>;
21
+ /** Reconnect a single server by name. Returns updated status. */
22
+ reconnectServer(name: string): Promise<McpServerStatus>;
23
+ /**
24
+ * Run the OAuth authorization-code flow for an HTTP server, then reconnect it.
25
+ * Servers without an `oauth` config are provisioned with a zero-config default
26
+ * (dynamic client registration). The authorization URL is surfaced through
27
+ * `onAuthorizationUrl` for the caller to open in a browser.
28
+ *
29
+ * Resolves with the resulting {@link McpServerStatus}: a connected status on
30
+ * success, or a status carrying an `error` message on failure (including
31
+ * cancellation) — it does not reject. Inspect the returned status rather than
32
+ * relying on a thrown error.
33
+ */
34
+ authenticateServer(name: string, options?: {
35
+ onAuthorizationUrl?: (url: string) => void;
36
+ timeoutMs?: number;
37
+ }): Promise<McpServerStatus>;
38
+ /**
39
+ * Cancel a pending {@link authenticateServer} flow for a server (e.g. the
40
+ * user closed the browser without completing consent). The pending
41
+ * authenticate call rejects and the server returns to the `needsAuth` state
42
+ * so it can be retried. Returns `true` if a flow was cancelled.
43
+ */
44
+ cancelServerAuthentication(name: string): Promise<boolean>;
45
+ /**
46
+ * Disable or enable a single server by name. The change is persisted (in
47
+ * mastracode's app data, not the user's config files) and survives restarts.
48
+ * With `global: true` the change applies to every project; otherwise it is
49
+ * scoped to this project. Enabling only removes the server from the given
50
+ * scope — a server disabled in the other scope stays disabled, and the
51
+ * returned status's `disabledScope` says which scope still applies.
52
+ * Connections are rebuilt, so other servers reconnect — same behavior as
53
+ * {@link reload}. Returns the server's resulting status.
54
+ */
55
+ setServerDisabled(name: string, disabled: boolean, options?: {
56
+ global?: boolean;
57
+ }): Promise<McpServerStatus>;
58
+ /**
59
+ * Disable or enable all servers at once. Project scope records every
60
+ * currently-configured server name; enabling clears the project list.
61
+ * Global scope sets/clears a persisted all-MCP kill switch (and, when
62
+ * enabling, also clears globally disabled server names). Persisted like
63
+ * {@link setServerDisabled}.
64
+ */
65
+ setAllDisabled(disabled: boolean, options?: {
66
+ global?: boolean;
67
+ }): Promise<void>;
68
+ /** Names of configured servers that are currently disabled (any scope). */
69
+ getDisabledServers(): string[];
70
+ /** Whether all MCP is disabled globally (across every project). */
71
+ isAllDisabledGlobally(): boolean;
72
+ /** Disconnect from all MCP servers and clean up. */
73
+ disconnect(): Promise<void>;
74
+ /** Get all tools from connected MCP servers (namespaced as serverName_toolName). */
75
+ getTools(): Record<string, any>;
76
+ /** Check if any MCP servers are configured (or skipped). */
77
+ hasServers(): boolean;
78
+ /** Get status of all servers. */
79
+ getServerStatuses(): McpServerStatus[];
80
+ /** Get servers that were skipped during config loading. */
81
+ getSkippedServers(): McpSkippedServer[];
82
+ /** Get config file paths for display. */
83
+ getConfigPaths(): {
84
+ project: string;
85
+ global: string;
86
+ claude: string;
87
+ };
88
+ /** Get the merged config. */
89
+ getConfig(): McpConfig;
90
+ /** Get captured stderr logs for a server. */
91
+ getServerLogs(name: string): string[];
92
+ }
93
+ /**
94
+ * Create an MCP manager that wraps MCPClient with config-file discovery
95
+ * and per-server status tracking.
96
+ */
97
+ export declare function createMcpManager(projectDir: string, configDirName?: string, extraServers?: Record<string, McpServerConfig>): McpManager;
98
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/mcp/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,KAAK,EACV,SAAS,EAGT,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAIpB,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,2FAA2F;IAC3F,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,kEAAkE;IAClE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,iEAAiE;IACjE,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACxD;;;;;;;;;;OAUG;IACH,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3E,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5B;;;;;OAKG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D;;;;;;;;;OASG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7G;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,2EAA2E;IAC3E,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAC/B,mEAAmE;IACnE,qBAAqB,IAAI,OAAO,CAAC;IACjC,oDAAoD;IACpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,4DAA4D;IAC5D,UAAU,IAAI,OAAO,CAAC;IACtB,iCAAiC;IACjC,iBAAiB,IAAI,eAAe,EAAE,CAAC;IACvC,2DAA2D;IAC3D,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;IACxC,yCAAyC;IACzC,cAAc,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,6BAA6B;IAC7B,SAAS,IAAI,SAAS,CAAC;IACvB,6CAA6C;IAC7C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACvC;AA0ED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,SAAqB,EAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAC7C,UAAU,CA0sBZ"}