@mastra/code-sdk 0.0.0-mastracode-cloud-20260706153555

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 (456) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE.md +30 -0
  3. package/README.md +50 -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 +173 -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 +166 -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 +54 -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 +34 -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 +5 -0
  23. package/dist/acp.js.map +1 -0
  24. package/dist/agents/instructions.d.ts +6 -0
  25. package/dist/agents/instructions.d.ts.map +1 -0
  26. package/dist/agents/instructions.js +41 -0
  27. package/dist/agents/instructions.js.map +1 -0
  28. package/dist/agents/mastracode-gateway.d.ts +65 -0
  29. package/dist/agents/mastracode-gateway.d.ts.map +1 -0
  30. package/dist/agents/mastracode-gateway.js +442 -0
  31. package/dist/agents/mastracode-gateway.js.map +1 -0
  32. package/dist/agents/memory.d.ts +13 -0
  33. package/dist/agents/memory.d.ts.map +1 -0
  34. package/dist/agents/memory.js +107 -0
  35. package/dist/agents/memory.js.map +1 -0
  36. package/dist/agents/model.d.ts +55 -0
  37. package/dist/agents/model.d.ts.map +1 -0
  38. package/dist/agents/model.js +115 -0
  39. package/dist/agents/model.js.map +1 -0
  40. package/dist/agents/modes/build.d.ts +10 -0
  41. package/dist/agents/modes/build.d.ts.map +1 -0
  42. package/dist/agents/modes/build.js +45 -0
  43. package/dist/agents/modes/build.js.map +1 -0
  44. package/dist/agents/modes/explore.d.ts +10 -0
  45. package/dist/agents/modes/explore.d.ts.map +1 -0
  46. package/dist/agents/modes/explore.js +38 -0
  47. package/dist/agents/modes/explore.js.map +1 -0
  48. package/dist/agents/modes/plan.d.ts +6 -0
  49. package/dist/agents/modes/plan.d.ts.map +1 -0
  50. package/dist/agents/modes/plan.js +38 -0
  51. package/dist/agents/modes/plan.js.map +1 -0
  52. package/dist/agents/prompts/agent-instructions.d.ts +20 -0
  53. package/dist/agents/prompts/agent-instructions.d.ts.map +1 -0
  54. package/dist/agents/prompts/agent-instructions.js +82 -0
  55. package/dist/agents/prompts/agent-instructions.js.map +1 -0
  56. package/dist/agents/prompts/build.d.ts +12 -0
  57. package/dist/agents/prompts/build.d.ts.map +1 -0
  58. package/dist/agents/prompts/build.js +73 -0
  59. package/dist/agents/prompts/build.js.map +1 -0
  60. package/dist/agents/prompts/fast.d.ts +5 -0
  61. package/dist/agents/prompts/fast.d.ts.map +1 -0
  62. package/dist/agents/prompts/fast.js +22 -0
  63. package/dist/agents/prompts/fast.js.map +1 -0
  64. package/dist/agents/prompts/index.d.ts +19 -0
  65. package/dist/agents/prompts/index.d.ts.map +1 -0
  66. package/dist/agents/prompts/index.js +57 -0
  67. package/dist/agents/prompts/index.js.map +1 -0
  68. package/dist/agents/prompts/model.d.ts +5 -0
  69. package/dist/agents/prompts/model.d.ts.map +1 -0
  70. package/dist/agents/prompts/model.js +22 -0
  71. package/dist/agents/prompts/model.js.map +1 -0
  72. package/dist/agents/prompts/plan.d.ts +6 -0
  73. package/dist/agents/prompts/plan.d.ts.map +1 -0
  74. package/dist/agents/prompts/plan.js +107 -0
  75. package/dist/agents/prompts/plan.js.map +1 -0
  76. package/dist/agents/prompts/tool-guidance.d.ts +13 -0
  77. package/dist/agents/prompts/tool-guidance.d.ts.map +1 -0
  78. package/dist/agents/prompts/tool-guidance.js +181 -0
  79. package/dist/agents/prompts/tool-guidance.js.map +1 -0
  80. package/dist/agents/sandbox-filesystem.d.ts +89 -0
  81. package/dist/agents/sandbox-filesystem.d.ts.map +1 -0
  82. package/dist/agents/sandbox-filesystem.js +268 -0
  83. package/dist/agents/sandbox-filesystem.js.map +1 -0
  84. package/dist/agents/sandbox-reattach.d.ts +19 -0
  85. package/dist/agents/sandbox-reattach.d.ts.map +1 -0
  86. package/dist/agents/sandbox-reattach.js +17 -0
  87. package/dist/agents/sandbox-reattach.js.map +1 -0
  88. package/dist/agents/thread-caveman-state.d.ts +17 -0
  89. package/dist/agents/thread-caveman-state.d.ts.map +1 -0
  90. package/dist/agents/thread-caveman-state.js +96 -0
  91. package/dist/agents/thread-caveman-state.js.map +1 -0
  92. package/dist/agents/tool-availability.d.ts +10 -0
  93. package/dist/agents/tool-availability.d.ts.map +1 -0
  94. package/dist/agents/tool-availability.js +105 -0
  95. package/dist/agents/tool-availability.js.map +1 -0
  96. package/dist/agents/tools.d.ts +18 -0
  97. package/dist/agents/tools.d.ts.map +1 -0
  98. package/dist/agents/tools.js +126 -0
  99. package/dist/agents/tools.js.map +1 -0
  100. package/dist/agents/workspace.d.ts +22 -0
  101. package/dist/agents/workspace.d.ts.map +1 -0
  102. package/dist/agents/workspace.js +194 -0
  103. package/dist/agents/workspace.js.map +1 -0
  104. package/dist/analytics.d.ts +18 -0
  105. package/dist/analytics.d.ts.map +1 -0
  106. package/dist/analytics.js +152 -0
  107. package/dist/analytics.js.map +1 -0
  108. package/dist/auth/index.d.ts +9 -0
  109. package/dist/auth/index.d.ts.map +1 -0
  110. package/dist/auth/index.js +11 -0
  111. package/dist/auth/index.js.map +1 -0
  112. package/dist/auth/pkce.d.ts +13 -0
  113. package/dist/auth/pkce.d.ts.map +1 -0
  114. package/dist/auth/pkce.js +21 -0
  115. package/dist/auth/pkce.js.map +1 -0
  116. package/dist/auth/providers/anthropic.d.ts +17 -0
  117. package/dist/auth/providers/anthropic.d.ts.map +1 -0
  118. package/dist/auth/providers/anthropic.js +94 -0
  119. package/dist/auth/providers/anthropic.js.map +1 -0
  120. package/dist/auth/providers/github-copilot.d.ts +100 -0
  121. package/dist/auth/providers/github-copilot.d.ts.map +1 -0
  122. package/dist/auth/providers/github-copilot.js +302 -0
  123. package/dist/auth/providers/github-copilot.js.map +1 -0
  124. package/dist/auth/providers/openai-codex.d.ts +95 -0
  125. package/dist/auth/providers/openai-codex.d.ts.map +1 -0
  126. package/dist/auth/providers/openai-codex.js +527 -0
  127. package/dist/auth/providers/openai-codex.js.map +1 -0
  128. package/dist/auth/storage.d.ts +91 -0
  129. package/dist/auth/storage.d.ts.map +1 -0
  130. package/dist/auth/storage.js +187 -0
  131. package/dist/auth/storage.js.map +1 -0
  132. package/dist/auth/types.d.ts +68 -0
  133. package/dist/auth/types.d.ts.map +1 -0
  134. package/dist/auth/types.js +1 -0
  135. package/dist/auth/types.js.map +1 -0
  136. package/dist/clipboard/index.d.ts +26 -0
  137. package/dist/clipboard/index.d.ts.map +1 -0
  138. package/dist/clipboard/index.js +192 -0
  139. package/dist/clipboard/index.js.map +1 -0
  140. package/dist/constants.d.ts +10 -0
  141. package/dist/constants.d.ts.map +1 -0
  142. package/dist/constants.js +23 -0
  143. package/dist/constants.js.map +1 -0
  144. package/dist/error-classification.d.ts +10 -0
  145. package/dist/error-classification.d.ts.map +1 -0
  146. package/dist/error-classification.js +14 -0
  147. package/dist/error-classification.js.map +1 -0
  148. package/dist/evals/context-builder.d.ts +41 -0
  149. package/dist/evals/context-builder.d.ts.map +1 -0
  150. package/dist/evals/context-builder.js +120 -0
  151. package/dist/evals/context-builder.js.map +1 -0
  152. package/dist/evals/index.d.ts +4 -0
  153. package/dist/evals/index.d.ts.map +1 -0
  154. package/dist/evals/index.js +8 -0
  155. package/dist/evals/index.js.map +1 -0
  156. package/dist/evals/scorers/classify-command.d.ts +31 -0
  157. package/dist/evals/scorers/classify-command.d.ts.map +1 -0
  158. package/dist/evals/scorers/classify-command.js +52 -0
  159. package/dist/evals/scorers/classify-command.js.map +1 -0
  160. package/dist/evals/scorers/efficiency.d.ts +44 -0
  161. package/dist/evals/scorers/efficiency.d.ts.map +1 -0
  162. package/dist/evals/scorers/efficiency.js +201 -0
  163. package/dist/evals/scorers/efficiency.js.map +1 -0
  164. package/dist/evals/scorers/extract-tools.d.ts +25 -0
  165. package/dist/evals/scorers/extract-tools.d.ts.map +1 -0
  166. package/dist/evals/scorers/extract-tools.js +56 -0
  167. package/dist/evals/scorers/extract-tools.js.map +1 -0
  168. package/dist/evals/scorers/index.d.ts +3 -0
  169. package/dist/evals/scorers/index.d.ts.map +1 -0
  170. package/dist/evals/scorers/index.js +7 -0
  171. package/dist/evals/scorers/index.js.map +1 -0
  172. package/dist/evals/scorers/outcome.d.ts +49 -0
  173. package/dist/evals/scorers/outcome.d.ts.map +1 -0
  174. package/dist/evals/scorers/outcome.js +238 -0
  175. package/dist/evals/scorers/outcome.js.map +1 -0
  176. package/dist/headless/cli.d.ts +42 -0
  177. package/dist/headless/cli.d.ts.map +1 -0
  178. package/dist/headless/cli.js +196 -0
  179. package/dist/headless/cli.js.map +1 -0
  180. package/dist/headless/flags.d.ts +33 -0
  181. package/dist/headless/flags.d.ts.map +1 -0
  182. package/dist/headless/flags.js +188 -0
  183. package/dist/headless/flags.js.map +1 -0
  184. package/dist/headless/format.d.ts +38 -0
  185. package/dist/headless/format.d.ts.map +1 -0
  186. package/dist/headless/format.js +85 -0
  187. package/dist/headless/format.js.map +1 -0
  188. package/dist/headless/index.d.ts +25 -0
  189. package/dist/headless/index.d.ts.map +1 -0
  190. package/dist/headless/index.js +32 -0
  191. package/dist/headless/index.js.map +1 -0
  192. package/dist/headless/policy.d.ts +17 -0
  193. package/dist/headless/policy.d.ts.map +1 -0
  194. package/dist/headless/policy.js +38 -0
  195. package/dist/headless/policy.js.map +1 -0
  196. package/dist/headless/run-mc.d.ts +7 -0
  197. package/dist/headless/run-mc.d.ts.map +1 -0
  198. package/dist/headless/run-mc.js +296 -0
  199. package/dist/headless/run-mc.js.map +1 -0
  200. package/dist/headless/types.d.ts +134 -0
  201. package/dist/headless/types.d.ts.map +1 -0
  202. package/dist/headless/types.js +9 -0
  203. package/dist/headless/types.js.map +1 -0
  204. package/dist/hooks/config.d.ts +11 -0
  205. package/dist/hooks/config.d.ts.map +1 -0
  206. package/dist/hooks/config.js +78 -0
  207. package/dist/hooks/config.js.map +1 -0
  208. package/dist/hooks/executor.d.ts +13 -0
  209. package/dist/hooks/executor.d.ts.map +1 -0
  210. package/dist/hooks/executor.js +125 -0
  211. package/dist/hooks/executor.js.map +1 -0
  212. package/dist/hooks/index.d.ts +6 -0
  213. package/dist/hooks/index.d.ts.map +1 -0
  214. package/dist/hooks/index.js +16 -0
  215. package/dist/hooks/index.js.map +1 -0
  216. package/dist/hooks/manager.d.ts +47 -0
  217. package/dist/hooks/manager.d.ts.map +1 -0
  218. package/dist/hooks/manager.js +284 -0
  219. package/dist/hooks/manager.js.map +1 -0
  220. package/dist/hooks/types.d.ts +152 -0
  221. package/dist/hooks/types.d.ts.map +1 -0
  222. package/dist/hooks/types.js +7 -0
  223. package/dist/hooks/types.js.map +1 -0
  224. package/dist/index.d.ts +241 -0
  225. package/dist/index.d.ts.map +1 -0
  226. package/dist/index.js +712 -0
  227. package/dist/index.js.map +1 -0
  228. package/dist/ipc/ipc-reporter.d.ts +14 -0
  229. package/dist/ipc/ipc-reporter.d.ts.map +1 -0
  230. package/dist/ipc/ipc-reporter.js +24 -0
  231. package/dist/ipc/ipc-reporter.js.map +1 -0
  232. package/dist/lsp/client.d.ts +56 -0
  233. package/dist/lsp/client.d.ts.map +1 -0
  234. package/dist/lsp/client.js +309 -0
  235. package/dist/lsp/client.js.map +1 -0
  236. package/dist/lsp/index.d.ts +4 -0
  237. package/dist/lsp/index.d.ts.map +1 -0
  238. package/dist/lsp/index.js +9 -0
  239. package/dist/lsp/index.js.map +1 -0
  240. package/dist/lsp/language.d.ts +9 -0
  241. package/dist/lsp/language.d.ts.map +1 -0
  242. package/dist/lsp/language.js +48 -0
  243. package/dist/lsp/language.js.map +1 -0
  244. package/dist/lsp/manager.d.ts +34 -0
  245. package/dist/lsp/manager.d.ts.map +1 -0
  246. package/dist/lsp/manager.js +97 -0
  247. package/dist/lsp/manager.js.map +1 -0
  248. package/dist/lsp/server.d.ts +27 -0
  249. package/dist/lsp/server.d.ts.map +1 -0
  250. package/dist/lsp/server.js +128 -0
  251. package/dist/lsp/server.js.map +1 -0
  252. package/dist/lsp/workspace.d.ts +9 -0
  253. package/dist/lsp/workspace.d.ts.map +1 -0
  254. package/dist/lsp/workspace.js +52 -0
  255. package/dist/lsp/workspace.js.map +1 -0
  256. package/dist/mcp/config.d.ts +34 -0
  257. package/dist/mcp/config.d.ts.map +1 -0
  258. package/dist/mcp/config.js +205 -0
  259. package/dist/mcp/config.js.map +1 -0
  260. package/dist/mcp/index.d.ts +5 -0
  261. package/dist/mcp/index.d.ts.map +1 -0
  262. package/dist/mcp/index.js +10 -0
  263. package/dist/mcp/index.js.map +1 -0
  264. package/dist/mcp/manager.d.ts +49 -0
  265. package/dist/mcp/manager.d.ts.map +1 -0
  266. package/dist/mcp/manager.js +374 -0
  267. package/dist/mcp/manager.js.map +1 -0
  268. package/dist/mcp/types.d.ts +85 -0
  269. package/dist/mcp/types.d.ts.map +1 -0
  270. package/dist/mcp/types.js +1 -0
  271. package/dist/mcp/types.js.map +1 -0
  272. package/dist/onboarding/custom-packs.d.ts +7 -0
  273. package/dist/onboarding/custom-packs.d.ts.map +1 -0
  274. package/dist/onboarding/custom-packs.js +20 -0
  275. package/dist/onboarding/custom-packs.js.map +1 -0
  276. package/dist/onboarding/custom-providers.d.ts +4 -0
  277. package/dist/onboarding/custom-providers.d.ts.map +1 -0
  278. package/dist/onboarding/custom-providers.js +28 -0
  279. package/dist/onboarding/custom-providers.js.map +1 -0
  280. package/dist/onboarding/index.d.ts +5 -0
  281. package/dist/onboarding/index.d.ts.map +1 -0
  282. package/dist/onboarding/index.js +21 -0
  283. package/dist/onboarding/index.js.map +1 -0
  284. package/dist/onboarding/om-settings.d.ts +20 -0
  285. package/dist/onboarding/om-settings.d.ts.map +1 -0
  286. package/dist/onboarding/om-settings.js +26 -0
  287. package/dist/onboarding/om-settings.js.map +1 -0
  288. package/dist/onboarding/packs.d.ts +48 -0
  289. package/dist/onboarding/packs.d.ts.map +1 -0
  290. package/dist/onboarding/packs.js +111 -0
  291. package/dist/onboarding/packs.js.map +1 -0
  292. package/dist/onboarding/settings.d.ts +323 -0
  293. package/dist/onboarding/settings.d.ts.map +1 -0
  294. package/dist/onboarding/settings.js +594 -0
  295. package/dist/onboarding/settings.js.map +1 -0
  296. package/dist/permissions.d.ts +55 -0
  297. package/dist/permissions.d.ts.map +1 -0
  298. package/dist/permissions.js +119 -0
  299. package/dist/permissions.js.map +1 -0
  300. package/dist/plugin.d.ts +81 -0
  301. package/dist/plugin.d.ts.map +1 -0
  302. package/dist/plugin.js +30 -0
  303. package/dist/plugin.js.map +1 -0
  304. package/dist/plugins/install.d.ts +20 -0
  305. package/dist/plugins/install.d.ts.map +1 -0
  306. package/dist/plugins/install.js +179 -0
  307. package/dist/plugins/install.js.map +1 -0
  308. package/dist/plugins/loader.d.ts +15 -0
  309. package/dist/plugins/loader.d.ts.map +1 -0
  310. package/dist/plugins/loader.js +221 -0
  311. package/dist/plugins/loader.js.map +1 -0
  312. package/dist/plugins/manager.d.ts +60 -0
  313. package/dist/plugins/manager.d.ts.map +1 -0
  314. package/dist/plugins/manager.js +369 -0
  315. package/dist/plugins/manager.js.map +1 -0
  316. package/dist/plugins/manifest.d.ts +14 -0
  317. package/dist/plugins/manifest.d.ts.map +1 -0
  318. package/dist/plugins/manifest.js +75 -0
  319. package/dist/plugins/manifest.js.map +1 -0
  320. package/dist/plugins/package-link.d.ts +2 -0
  321. package/dist/plugins/package-link.d.ts.map +1 -0
  322. package/dist/plugins/package-link.js +20 -0
  323. package/dist/plugins/package-link.js.map +1 -0
  324. package/dist/plugins/paths.d.ts +10 -0
  325. package/dist/plugins/paths.d.ts.map +1 -0
  326. package/dist/plugins/paths.js +26 -0
  327. package/dist/plugins/paths.js.map +1 -0
  328. package/dist/plugins/registry.d.ts +8 -0
  329. package/dist/plugins/registry.d.ts.map +1 -0
  330. package/dist/plugins/registry.js +96 -0
  331. package/dist/plugins/registry.js.map +1 -0
  332. package/dist/plugins/scaffold.d.ts +10 -0
  333. package/dist/plugins/scaffold.d.ts.map +1 -0
  334. package/dist/plugins/scaffold.js +152 -0
  335. package/dist/plugins/scaffold.js.map +1 -0
  336. package/dist/plugins/types.d.ts +45 -0
  337. package/dist/plugins/types.d.ts.map +1 -0
  338. package/dist/plugins/types.js +1 -0
  339. package/dist/plugins/types.js.map +1 -0
  340. package/dist/processors/plan-rejection-abort.d.ts +12 -0
  341. package/dist/processors/plan-rejection-abort.d.ts.map +1 -0
  342. package/dist/processors/plan-rejection-abort.js +53 -0
  343. package/dist/processors/plan-rejection-abort.js.map +1 -0
  344. package/dist/providers/amazon-bedrock-gateway.d.ts +40 -0
  345. package/dist/providers/amazon-bedrock-gateway.d.ts.map +1 -0
  346. package/dist/providers/amazon-bedrock-gateway.js +79 -0
  347. package/dist/providers/amazon-bedrock-gateway.js.map +1 -0
  348. package/dist/providers/amazon-bedrock.d.ts +28 -0
  349. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  350. package/dist/providers/amazon-bedrock.js +62 -0
  351. package/dist/providers/amazon-bedrock.js.map +1 -0
  352. package/dist/providers/claude-max.d.ts +50 -0
  353. package/dist/providers/claude-max.d.ts.map +1 -0
  354. package/dist/providers/claude-max.js +151 -0
  355. package/dist/providers/claude-max.js.map +1 -0
  356. package/dist/providers/github-copilot.d.ts +58 -0
  357. package/dist/providers/github-copilot.d.ts.map +1 -0
  358. package/dist/providers/github-copilot.js +263 -0
  359. package/dist/providers/github-copilot.js.map +1 -0
  360. package/dist/providers/openai-codex.d.ts +70 -0
  361. package/dist/providers/openai-codex.d.ts.map +1 -0
  362. package/dist/providers/openai-codex.js +291 -0
  363. package/dist/providers/openai-codex.js.map +1 -0
  364. package/dist/schema.d.ts +167 -0
  365. package/dist/schema.d.ts.map +1 -0
  366. package/dist/schema.js +92 -0
  367. package/dist/schema.js.map +1 -0
  368. package/dist/theme-palette.d.ts +17 -0
  369. package/dist/theme-palette.d.ts.map +1 -0
  370. package/dist/theme-palette.js +17 -0
  371. package/dist/theme-palette.js.map +1 -0
  372. package/dist/tool-names.d.ts +73 -0
  373. package/dist/tool-names.d.ts.map +1 -0
  374. package/dist/tool-names.js +43 -0
  375. package/dist/tool-names.js.map +1 -0
  376. package/dist/tools/index.d.ts +6 -0
  377. package/dist/tools/index.d.ts.map +1 -0
  378. package/dist/tools/index.js +9 -0
  379. package/dist/tools/index.js.map +1 -0
  380. package/dist/tools/request-sandbox-access.d.ts +6 -0
  381. package/dist/tools/request-sandbox-access.d.ts.map +1 -0
  382. package/dist/tools/request-sandbox-access.js +88 -0
  383. package/dist/tools/request-sandbox-access.js.map +1 -0
  384. package/dist/tools/utils.d.ts +20 -0
  385. package/dist/tools/utils.d.ts.map +1 -0
  386. package/dist/tools/utils.js +22 -0
  387. package/dist/tools/utils.js.map +1 -0
  388. package/dist/tools/web-search.d.ts +35 -0
  389. package/dist/tools/web-search.d.ts.map +1 -0
  390. package/dist/tools/web-search.js +65 -0
  391. package/dist/tools/web-search.js.map +1 -0
  392. package/dist/utils/binaries.d.ts +7 -0
  393. package/dist/utils/binaries.d.ts.map +1 -0
  394. package/dist/utils/binaries.js +74 -0
  395. package/dist/utils/binaries.js.map +1 -0
  396. package/dist/utils/debug-log.d.ts +12 -0
  397. package/dist/utils/debug-log.d.ts.map +1 -0
  398. package/dist/utils/debug-log.js +55 -0
  399. package/dist/utils/debug-log.js.map +1 -0
  400. package/dist/utils/errors.d.ts +36 -0
  401. package/dist/utils/errors.d.ts.map +1 -0
  402. package/dist/utils/errors.js +207 -0
  403. package/dist/utils/errors.js.map +1 -0
  404. package/dist/utils/gateway-sync.d.ts +26 -0
  405. package/dist/utils/gateway-sync.d.ts.map +1 -0
  406. package/dist/utils/gateway-sync.js +49 -0
  407. package/dist/utils/gateway-sync.js.map +1 -0
  408. package/dist/utils/plan-diff.d.ts +25 -0
  409. package/dist/utils/plan-diff.d.ts.map +1 -0
  410. package/dist/utils/plan-diff.js +43 -0
  411. package/dist/utils/plan-diff.js.map +1 -0
  412. package/dist/utils/plans.d.ts +56 -0
  413. package/dist/utils/plans.d.ts.map +1 -0
  414. package/dist/utils/plans.js +99 -0
  415. package/dist/utils/plans.js.map +1 -0
  416. package/dist/utils/project.d.ts +161 -0
  417. package/dist/utils/project.d.ts.map +1 -0
  418. package/dist/utils/project.js +302 -0
  419. package/dist/utils/project.js.map +1 -0
  420. package/dist/utils/signals-pubsub.d.ts +41 -0
  421. package/dist/utils/signals-pubsub.d.ts.map +1 -0
  422. package/dist/utils/signals-pubsub.js +104 -0
  423. package/dist/utils/signals-pubsub.js.map +1 -0
  424. package/dist/utils/slash-command-loader.d.ts +48 -0
  425. package/dist/utils/slash-command-loader.d.ts.map +1 -0
  426. package/dist/utils/slash-command-loader.js +155 -0
  427. package/dist/utils/slash-command-loader.js.map +1 -0
  428. package/dist/utils/slash-command-processor.d.ts +14 -0
  429. package/dist/utils/slash-command-processor.d.ts.map +1 -0
  430. package/dist/utils/slash-command-processor.js +96 -0
  431. package/dist/utils/slash-command-processor.js.map +1 -0
  432. package/dist/utils/stdin-pipe.d.ts +33 -0
  433. package/dist/utils/stdin-pipe.d.ts.map +1 -0
  434. package/dist/utils/stdin-pipe.js +72 -0
  435. package/dist/utils/stdin-pipe.js.map +1 -0
  436. package/dist/utils/storage-factory.d.ts +50 -0
  437. package/dist/utils/storage-factory.d.ts.map +1 -0
  438. package/dist/utils/storage-factory.js +98 -0
  439. package/dist/utils/storage-factory.js.map +1 -0
  440. package/dist/utils/thread-lock.d.ts +26 -0
  441. package/dist/utils/thread-lock.d.ts.map +1 -0
  442. package/dist/utils/thread-lock.js +108 -0
  443. package/dist/utils/thread-lock.js.map +1 -0
  444. package/dist/utils/token-estimator.d.ts +3 -0
  445. package/dist/utils/token-estimator.d.ts.map +1 -0
  446. package/dist/utils/token-estimator.js +21 -0
  447. package/dist/utils/token-estimator.js.map +1 -0
  448. package/dist/utils/update-check.d.ts +52 -0
  449. package/dist/utils/update-check.d.ts.map +1 -0
  450. package/dist/utils/update-check.js +177 -0
  451. package/dist/utils/update-check.js.map +1 -0
  452. package/dist/voice/stt-registry.d.ts +64 -0
  453. package/dist/voice/stt-registry.d.ts.map +1 -0
  454. package/dist/voice/stt-registry.js +126 -0
  455. package/dist/voice/stt-registry.js.map +1 -0
  456. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/lsp/language.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+CtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE"}
@@ -0,0 +1,48 @@
1
+ const LANGUAGE_EXTENSIONS = {
2
+ // TypeScript/JavaScript
3
+ ".ts": "typescript",
4
+ ".tsx": "typescriptreact",
5
+ ".js": "javascript",
6
+ ".jsx": "javascriptreact",
7
+ ".mjs": "javascript",
8
+ ".cjs": "javascript",
9
+ // Python
10
+ ".py": "python",
11
+ ".pyi": "python",
12
+ // Go
13
+ ".go": "go",
14
+ // Rust
15
+ ".rs": "rust",
16
+ // C/C++
17
+ ".c": "c",
18
+ ".cpp": "cpp",
19
+ ".cc": "cpp",
20
+ ".cxx": "cpp",
21
+ ".h": "c",
22
+ ".hpp": "cpp",
23
+ // Java
24
+ ".java": "java",
25
+ // JSON
26
+ ".json": "json",
27
+ ".jsonc": "jsonc",
28
+ // YAML
29
+ ".yaml": "yaml",
30
+ ".yml": "yaml",
31
+ // Markdown
32
+ ".md": "markdown",
33
+ // HTML/CSS
34
+ ".html": "html",
35
+ ".css": "css",
36
+ ".scss": "scss",
37
+ ".sass": "sass",
38
+ ".less": "less"
39
+ };
40
+ function getLanguageId(filePath) {
41
+ const ext = filePath.substring(filePath.lastIndexOf("."));
42
+ return LANGUAGE_EXTENSIONS[ext];
43
+ }
44
+ export {
45
+ LANGUAGE_EXTENSIONS,
46
+ getLanguageId
47
+ };
48
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lsp/language.ts"],"sourcesContent":["/**\n * Maps file extensions to LSP language identifiers\n */\nexport const LANGUAGE_EXTENSIONS: Record<string, string> = {\n // TypeScript/JavaScript\n '.ts': 'typescript',\n '.tsx': 'typescriptreact',\n '.js': 'javascript',\n '.jsx': 'javascriptreact',\n '.mjs': 'javascript',\n '.cjs': 'javascript',\n\n // Python\n '.py': 'python',\n '.pyi': 'python',\n\n // Go\n '.go': 'go',\n\n // Rust\n '.rs': 'rust',\n\n // C/C++\n '.c': 'c',\n '.cpp': 'cpp',\n '.cc': 'cpp',\n '.cxx': 'cpp',\n '.h': 'c',\n '.hpp': 'cpp',\n\n // Java\n '.java': 'java',\n\n // JSON\n '.json': 'json',\n '.jsonc': 'jsonc',\n\n // YAML\n '.yaml': 'yaml',\n '.yml': 'yaml',\n\n // Markdown\n '.md': 'markdown',\n\n // HTML/CSS\n '.html': 'html',\n '.css': 'css',\n '.scss': 'scss',\n '.sass': 'sass',\n '.less': 'less',\n};\n\n/**\n * Get LSP language ID for a file path\n */\nexport function getLanguageId(filePath: string): string | undefined {\n const ext = filePath.substring(filePath.lastIndexOf('.'));\n return LANGUAGE_EXTENSIONS[ext];\n}\n"],"mappings":"AAGO,MAAM,sBAA8C;AAAA;AAAA,EAEzD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA;AAAA,EAGR,OAAO;AAAA,EACP,QAAQ;AAAA;AAAA,EAGR,OAAO;AAAA;AAAA,EAGP,OAAO;AAAA;AAAA,EAGP,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA;AAAA,EAGR,SAAS;AAAA;AAAA,EAGT,SAAS;AAAA,EACT,UAAU;AAAA;AAAA,EAGV,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EAGR,OAAO;AAAA;AAAA,EAGP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAKO,SAAS,cAAc,UAAsC;AAClE,QAAM,MAAM,SAAS,UAAU,SAAS,YAAY,GAAG,CAAC;AACxD,SAAO,oBAAoB,GAAG;AAChC;","names":[]}
@@ -0,0 +1,34 @@
1
+ import { LSPClient } from './client.js';
2
+ /**
3
+ * Singleton LSP client manager that keeps clients alive and reuses them
4
+ * across tool calls for better performance and accuracy
5
+ */
6
+ declare class LSPManager {
7
+ private clients;
8
+ private initializationPromises;
9
+ /**
10
+ * Get or create an LSP client for a file
11
+ * Returns null if no LSP server is available for the file
12
+ */
13
+ getClient(filePath: string, workspaceRoot: string): Promise<LSPClient | null>;
14
+ /**
15
+ * Shutdown a specific client
16
+ */
17
+ shutdownClient(workspaceRoot: string, serverName?: string): Promise<void>;
18
+ /**
19
+ * Shutdown all clients
20
+ */
21
+ shutdownAll(): Promise<void>;
22
+ /**
23
+ * Get the number of active clients
24
+ */
25
+ getActiveClientCount(): number;
26
+ /**
27
+ * Close a document in all active clients
28
+ * This is useful for tests that reuse the same file path
29
+ */
30
+ closeDocument(filePath: string): void;
31
+ }
32
+ export declare const lspManager: LSPManager;
33
+ export {};
34
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/lsp/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,cAAM,UAAU;IACd,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,sBAAsB,CAAyC;IAEvE;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA2DnF;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAOlC;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAI9B;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAStC;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { LSPClient } from "./client.js";
2
+ import { getServersForFile } from "./server.js";
3
+ class LSPManager {
4
+ clients = /* @__PURE__ */ new Map();
5
+ initializationPromises = /* @__PURE__ */ new Map();
6
+ /**
7
+ * Get or create an LSP client for a file
8
+ * Returns null if no LSP server is available for the file
9
+ */
10
+ async getClient(filePath, workspaceRoot) {
11
+ const servers = getServersForFile(filePath, workspaceRoot);
12
+ if (servers.length === 0) {
13
+ return null;
14
+ }
15
+ const serverInfo = servers.find(
16
+ (s) => s.languageIds.includes("typescript") || s.languageIds.includes("javascript") || s.languageIds.includes("python") || s.languageIds.includes("go")
17
+ ) || servers[0];
18
+ if (!serverInfo) {
19
+ return null;
20
+ }
21
+ const key = `${serverInfo.name}:${workspaceRoot}`;
22
+ if (this.clients.has(key)) {
23
+ return this.clients.get(key);
24
+ }
25
+ if (this.initializationPromises.has(key)) {
26
+ await this.initializationPromises.get(key);
27
+ return this.clients.get(key) || null;
28
+ }
29
+ const initPromise = (async () => {
30
+ const client = new LSPClient(serverInfo, workspaceRoot);
31
+ await client.initialize();
32
+ this.clients.set(key, client);
33
+ })();
34
+ this.initializationPromises.set(key, initPromise);
35
+ try {
36
+ await Promise.race([
37
+ initPromise,
38
+ new Promise(
39
+ (_, reject) => setTimeout(() => reject(new Error("LSP client initialization timed out")), 15e3)
40
+ )
41
+ ]);
42
+ return this.clients.get(key) || null;
43
+ } catch {
44
+ this.clients.delete(key);
45
+ return null;
46
+ } finally {
47
+ this.initializationPromises.delete(key);
48
+ }
49
+ }
50
+ /**
51
+ * Shutdown a specific client
52
+ */
53
+ async shutdownClient(workspaceRoot, serverName) {
54
+ const keysToRemove = [];
55
+ for (const [key, client] of this.clients.entries()) {
56
+ if (key.includes(workspaceRoot) && (!serverName || key.startsWith(serverName))) {
57
+ await client.shutdown();
58
+ keysToRemove.push(key);
59
+ }
60
+ }
61
+ for (const key of keysToRemove) {
62
+ this.clients.delete(key);
63
+ }
64
+ }
65
+ /**
66
+ * Shutdown all clients
67
+ */
68
+ async shutdownAll() {
69
+ const shutdownPromises = Array.from(this.clients.values()).map((client) => client.shutdown());
70
+ await Promise.all(shutdownPromises);
71
+ this.clients.clear();
72
+ this.initializationPromises.clear();
73
+ }
74
+ /**
75
+ * Get the number of active clients
76
+ */
77
+ getActiveClientCount() {
78
+ return this.clients.size;
79
+ }
80
+ /**
81
+ * Close a document in all active clients
82
+ * This is useful for tests that reuse the same file path
83
+ */
84
+ closeDocument(filePath) {
85
+ for (const client of this.clients.values()) {
86
+ try {
87
+ client.notifyClose(filePath);
88
+ } catch {
89
+ }
90
+ }
91
+ }
92
+ }
93
+ const lspManager = new LSPManager();
94
+ export {
95
+ lspManager
96
+ };
97
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lsp/manager.ts"],"sourcesContent":["import { LSPClient } from './client.js';\nimport { getServersForFile } from './server.js';\n\n/**\n * Singleton LSP client manager that keeps clients alive and reuses them\n * across tool calls for better performance and accuracy\n */\nclass LSPManager {\n private clients: Map<string, LSPClient> = new Map();\n private initializationPromises: Map<string, Promise<void>> = new Map();\n\n /**\n * Get or create an LSP client for a file\n * Returns null if no LSP server is available for the file\n */\n async getClient(filePath: string, workspaceRoot: string): Promise<LSPClient | null> {\n const servers = getServersForFile(filePath, workspaceRoot);\n if (servers.length === 0) {\n return null;\n }\n\n // Use the first matching server (prioritize TypeScript/JavaScript)\n const serverInfo =\n servers.find(\n s =>\n s.languageIds.includes('typescript') ||\n s.languageIds.includes('javascript') ||\n s.languageIds.includes('python') ||\n s.languageIds.includes('go'),\n ) || servers[0];\n // Create a unique key for this server + workspace combination\n if (!serverInfo) {\n return null;\n }\n const key = `${serverInfo.name}:${workspaceRoot}`;\n\n // Return existing client if available\n if (this.clients.has(key)) {\n return this.clients.get(key)!;\n }\n\n // If initialization is in progress, wait for it\n if (this.initializationPromises.has(key)) {\n await this.initializationPromises.get(key);\n return this.clients.get(key) || null;\n }\n\n // Create and initialize new client with a timeout to prevent indefinite hangs\n // (e.g., npx resolution issues in pnpm-linked projects)\n const initPromise = (async () => {\n const client = new LSPClient(serverInfo, workspaceRoot);\n await client.initialize();\n this.clients.set(key, client);\n })();\n\n this.initializationPromises.set(key, initPromise);\n\n try {\n await Promise.race([\n initPromise,\n new Promise<void>((_, reject) =>\n setTimeout(() => reject(new Error('LSP client initialization timed out')), 15000),\n ),\n ]);\n return this.clients.get(key) || null;\n } catch {\n // If initialization timed out or failed, clean up\n this.clients.delete(key);\n return null;\n } finally {\n this.initializationPromises.delete(key);\n }\n }\n\n /**\n * Shutdown a specific client\n */\n async shutdownClient(workspaceRoot: string, serverName?: string): Promise<void> {\n const keysToRemove: string[] = [];\n\n for (const [key, client] of this.clients.entries()) {\n if (key.includes(workspaceRoot) && (!serverName || key.startsWith(serverName))) {\n await client.shutdown();\n keysToRemove.push(key);\n }\n }\n\n for (const key of keysToRemove) {\n this.clients.delete(key);\n }\n }\n\n /**\n * Shutdown all clients\n */\n async shutdownAll(): Promise<void> {\n const shutdownPromises = Array.from(this.clients.values()).map(client => client.shutdown());\n await Promise.all(shutdownPromises);\n this.clients.clear();\n this.initializationPromises.clear();\n }\n\n /**\n * Get the number of active clients\n */\n getActiveClientCount(): number {\n return this.clients.size;\n }\n\n /**\n * Close a document in all active clients\n * This is useful for tests that reuse the same file path\n */\n closeDocument(filePath: string): void {\n for (const client of this.clients.values()) {\n try {\n client.notifyClose(filePath);\n } catch {\n // Ignore errors if document wasn't open\n }\n }\n }\n}\n\n// Export singleton instance\nexport const lspManager = new LSPManager();\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAS,yBAAyB;AAMlC,MAAM,WAAW;AAAA,EACP,UAAkC,oBAAI,IAAI;AAAA,EAC1C,yBAAqD,oBAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAMrE,MAAM,UAAU,UAAkB,eAAkD;AAClF,UAAM,UAAU,kBAAkB,UAAU,aAAa;AACzD,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AAGA,UAAM,aACJ,QAAQ;AAAA,MACN,OACE,EAAE,YAAY,SAAS,YAAY,KACnC,EAAE,YAAY,SAAS,YAAY,KACnC,EAAE,YAAY,SAAS,QAAQ,KAC/B,EAAE,YAAY,SAAS,IAAI;AAAA,IAC/B,KAAK,QAAQ,CAAC;AAEhB,QAAI,CAAC,YAAY;AACf,aAAO;AAAA,IACT;AACA,UAAM,MAAM,GAAG,WAAW,IAAI,IAAI,aAAa;AAG/C,QAAI,KAAK,QAAQ,IAAI,GAAG,GAAG;AACzB,aAAO,KAAK,QAAQ,IAAI,GAAG;AAAA,IAC7B;AAGA,QAAI,KAAK,uBAAuB,IAAI,GAAG,GAAG;AACxC,YAAM,KAAK,uBAAuB,IAAI,GAAG;AACzC,aAAO,KAAK,QAAQ,IAAI,GAAG,KAAK;AAAA,IAClC;AAIA,UAAM,eAAe,YAAY;AAC/B,YAAM,SAAS,IAAI,UAAU,YAAY,aAAa;AACtD,YAAM,OAAO,WAAW;AACxB,WAAK,QAAQ,IAAI,KAAK,MAAM;AAAA,IAC9B,GAAG;AAEH,SAAK,uBAAuB,IAAI,KAAK,WAAW;AAEhD,QAAI;AACF,YAAM,QAAQ,KAAK;AAAA,QACjB;AAAA,QACA,IAAI;AAAA,UAAc,CAAC,GAAG,WACpB,WAAW,MAAM,OAAO,IAAI,MAAM,qCAAqC,CAAC,GAAG,IAAK;AAAA,QAClF;AAAA,MACF,CAAC;AACD,aAAO,KAAK,QAAQ,IAAI,GAAG,KAAK;AAAA,IAClC,QAAQ;AAEN,WAAK,QAAQ,OAAO,GAAG;AACvB,aAAO;AAAA,IACT,UAAE;AACA,WAAK,uBAAuB,OAAO,GAAG;AAAA,IACxC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,eAAuB,YAAoC;AAC9E,UAAM,eAAyB,CAAC;AAEhC,eAAW,CAAC,KAAK,MAAM,KAAK,KAAK,QAAQ,QAAQ,GAAG;AAClD,UAAI,IAAI,SAAS,aAAa,MAAM,CAAC,cAAc,IAAI,WAAW,UAAU,IAAI;AAC9E,cAAM,OAAO,SAAS;AACtB,qBAAa,KAAK,GAAG;AAAA,MACvB;AAAA,IACF;AAEA,eAAW,OAAO,cAAc;AAC9B,WAAK,QAAQ,OAAO,GAAG;AAAA,IACzB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,cAA6B;AACjC,UAAM,mBAAmB,MAAM,KAAK,KAAK,QAAQ,OAAO,CAAC,EAAE,IAAI,YAAU,OAAO,SAAS,CAAC;AAC1F,UAAM,QAAQ,IAAI,gBAAgB;AAClC,SAAK,QAAQ,MAAM;AACnB,SAAK,uBAAuB,MAAM;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,uBAA+B;AAC7B,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAc,UAAwB;AACpC,eAAW,UAAU,KAAK,QAAQ,OAAO,GAAG;AAC1C,UAAI;AACF,eAAO,YAAY,QAAQ;AAAA,MAC7B,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AACF;AAGO,MAAM,aAAa,IAAI,WAAW;","names":[]}
@@ -0,0 +1,27 @@
1
+ import type { ChildProcess } from 'node:child_process';
2
+ /**
3
+ * LSP Server definition and spawning logic
4
+ */
5
+ export interface LSPServerInfo {
6
+ id: string;
7
+ name: string;
8
+ languageIds: string[];
9
+ root: (cwd: string) => string | null;
10
+ spawn: (root: string) => ChildProcess | Promise<{
11
+ process: ChildProcess;
12
+ initialization?: any;
13
+ } | undefined>;
14
+ }
15
+ /**
16
+ * Find the nearest project root directory
17
+ */
18
+ export declare function findNearestRoot(cwd: string, markers: string[]): string | null;
19
+ /**
20
+ * Built-in LSP server definitions
21
+ */
22
+ export declare const BUILTIN_SERVERS: Record<string, LSPServerInfo>;
23
+ /**
24
+ * Get all servers that can handle a file
25
+ */
26
+ export declare function getServersForFile(filePath: string, cwd: string): LSPServerInfo[];
27
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQvD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,YAAY,CAAC;QAAC,cAAc,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;CAC9G;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAgB7E;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CA4GzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,CAOhF"}
@@ -0,0 +1,128 @@
1
+ import { spawn } from "node:child_process";
2
+ import { existsSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import path, { join } from "node:path";
5
+ import { pathToFileURL } from "node:url";
6
+ import { getLanguageId } from "./language.js";
7
+ function findNearestRoot(cwd, markers) {
8
+ let current = cwd;
9
+ while (current !== "/") {
10
+ for (const marker of markers) {
11
+ if (existsSync(join(current, marker))) {
12
+ return current;
13
+ }
14
+ }
15
+ const parent = join(current, "..");
16
+ if (parent === current) break;
17
+ current = parent;
18
+ }
19
+ return null;
20
+ }
21
+ const BUILTIN_SERVERS = {
22
+ typescript: {
23
+ id: "typescript",
24
+ name: "TypeScript Language Server",
25
+ languageIds: ["typescript", "typescriptreact", "javascript", "javascriptreact"],
26
+ root: (cwd) => findNearestRoot(cwd, ["tsconfig.json", "package.json"]),
27
+ spawn: async (root) => {
28
+ const requireFromRoot = createRequire(pathToFileURL(path.join(root, "package.json")));
29
+ let tsserver;
30
+ try {
31
+ tsserver = requireFromRoot.resolve("typescript/lib/tsserver.js");
32
+ } catch {
33
+ tsserver = void 0;
34
+ }
35
+ if (!tsserver) {
36
+ return void 0;
37
+ }
38
+ const localBin = join(root, "node_modules", ".bin", "typescript-language-server");
39
+ const cwdBin = join(process.cwd(), "node_modules", ".bin", "typescript-language-server");
40
+ let tslsBinary;
41
+ if (existsSync(localBin)) {
42
+ tslsBinary = localBin;
43
+ } else if (existsSync(cwdBin)) {
44
+ tslsBinary = cwdBin;
45
+ } else {
46
+ tslsBinary = "npx";
47
+ }
48
+ const args = tslsBinary === "npx" ? ["typescript-language-server", "--stdio"] : ["--stdio"];
49
+ const proc = spawn(tslsBinary, args, {
50
+ cwd: root,
51
+ stdio: ["pipe", "pipe", "pipe"]
52
+ });
53
+ return {
54
+ process: proc,
55
+ initialization: {
56
+ tsserver: {
57
+ path: tsserver,
58
+ logVerbosity: "off"
59
+ }
60
+ }
61
+ };
62
+ }
63
+ },
64
+ eslint: {
65
+ id: "eslint",
66
+ name: "ESLint Language Server",
67
+ languageIds: ["typescript", "typescriptreact", "javascript", "javascriptreact"],
68
+ root: (cwd) => findNearestRoot(cwd, ["package.json", ".eslintrc.js", ".eslintrc.json", ".eslintrc.yml", ".eslintrc.yaml"]),
69
+ spawn: (root) => {
70
+ const binaryPath = join(process.cwd(), "node_modules", ".bin", "eslint-lsp");
71
+ return spawn(binaryPath, ["--stdio"], {
72
+ cwd: root,
73
+ stdio: ["pipe", "pipe", "pipe"]
74
+ });
75
+ }
76
+ },
77
+ python: {
78
+ id: "python",
79
+ name: "Python Language Server (Pyright)",
80
+ languageIds: ["python"],
81
+ root: (cwd) => findNearestRoot(cwd, ["pyproject.toml", "setup.py", "requirements.txt", ".git"]),
82
+ spawn: (root) => {
83
+ const localPath = join(process.cwd(), "node_modules", ".bin", "pyright-langserver");
84
+ const binaryPath = existsSync(localPath) ? localPath : "pyright-langserver";
85
+ return spawn(binaryPath, ["--stdio"], {
86
+ cwd: root,
87
+ stdio: ["pipe", "pipe", "pipe"]
88
+ });
89
+ }
90
+ },
91
+ go: {
92
+ id: "go",
93
+ name: "Go Language Server (gopls)",
94
+ languageIds: ["go"],
95
+ root: (cwd) => findNearestRoot(cwd, ["go.mod", ".git"]),
96
+ spawn: (root) => {
97
+ return spawn("gopls", ["serve"], {
98
+ cwd: root,
99
+ stdio: ["pipe", "pipe", "pipe"]
100
+ });
101
+ }
102
+ },
103
+ rust: {
104
+ id: "rust",
105
+ name: "Rust Language Server (rust-analyzer)",
106
+ languageIds: ["rust"],
107
+ root: (cwd) => findNearestRoot(cwd, ["Cargo.toml", ".git"]),
108
+ spawn: (root) => {
109
+ return spawn("rust-analyzer", ["--stdio"], {
110
+ cwd: root,
111
+ stdio: ["pipe", "pipe", "pipe"]
112
+ });
113
+ }
114
+ }
115
+ };
116
+ function getServersForFile(filePath, cwd) {
117
+ const languageId = getLanguageId(filePath);
118
+ if (!languageId) return [];
119
+ return Object.values(BUILTIN_SERVERS).filter(
120
+ (server) => server.languageIds.includes(languageId) && server.root(cwd) !== null
121
+ );
122
+ }
123
+ export {
124
+ BUILTIN_SERVERS,
125
+ findNearestRoot,
126
+ getServersForFile
127
+ };
128
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lsp/server.ts"],"sourcesContent":["import type { ChildProcess } from 'node:child_process';\nimport { spawn } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path, { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { getLanguageId } from './language.js';\n\n/**\n * LSP Server definition and spawning logic\n */\nexport interface LSPServerInfo {\n id: string;\n name: string;\n languageIds: string[];\n root: (cwd: string) => string | null;\n spawn: (root: string) => ChildProcess | Promise<{ process: ChildProcess; initialization?: any } | undefined>;\n}\n\n/**\n * Find the nearest project root directory\n */\nexport function findNearestRoot(cwd: string, markers: string[]): string | null {\n let current = cwd;\n\n while (current !== '/') {\n for (const marker of markers) {\n if (existsSync(join(current, marker))) {\n return current;\n }\n }\n\n const parent = join(current, '..');\n if (parent === current) break;\n current = parent;\n }\n\n return null;\n}\n\n/**\n * Built-in LSP server definitions\n */\nexport const BUILTIN_SERVERS: Record<string, LSPServerInfo> = {\n typescript: {\n id: 'typescript',\n name: 'TypeScript Language Server',\n languageIds: ['typescript', 'typescriptreact', 'javascript', 'javascriptreact'],\n root: (cwd: string) => findNearestRoot(cwd, ['tsconfig.json', 'package.json']),\n spawn: async (root: string) => {\n // Try to resolve TypeScript from the project directory\n const requireFromRoot = createRequire(pathToFileURL(path.join(root, 'package.json')));\n let tsserver: string | undefined;\n try {\n tsserver = requireFromRoot.resolve('typescript/lib/tsserver.js');\n } catch {\n tsserver = undefined;\n }\n if (!tsserver) {\n return undefined;\n }\n\n // Resolve typescript-language-server binary directly to avoid npx hangs\n // (npx can hang indefinitely in projects with pnpm links)\n const localBin = join(root, 'node_modules', '.bin', 'typescript-language-server');\n const cwdBin = join(process.cwd(), 'node_modules', '.bin', 'typescript-language-server');\n let tslsBinary: string;\n if (existsSync(localBin)) {\n tslsBinary = localBin;\n } else if (existsSync(cwdBin)) {\n tslsBinary = cwdBin;\n } else {\n // Fall back to npx as last resort, but this may hang with pnpm links\n tslsBinary = 'npx';\n }\n\n const args = tslsBinary === 'npx' ? ['typescript-language-server', '--stdio'] : ['--stdio'];\n\n const proc = spawn(tslsBinary, args, {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n return {\n process: proc,\n initialization: {\n tsserver: {\n path: tsserver,\n logVerbosity: 'off',\n },\n },\n };\n },\n },\n\n eslint: {\n id: 'eslint',\n name: 'ESLint Language Server',\n languageIds: ['typescript', 'typescriptreact', 'javascript', 'javascriptreact'],\n root: (cwd: string) =>\n findNearestRoot(cwd, ['package.json', '.eslintrc.js', '.eslintrc.json', '.eslintrc.yml', '.eslintrc.yaml']),\n spawn: (root: string) => {\n const binaryPath = join(process.cwd(), 'node_modules', '.bin', 'eslint-lsp');\n return spawn(binaryPath, ['--stdio'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n\n python: {\n id: 'python',\n name: 'Python Language Server (Pyright)',\n languageIds: ['python'],\n root: (cwd: string) => findNearestRoot(cwd, ['pyproject.toml', 'setup.py', 'requirements.txt', '.git']),\n spawn: (root: string) => {\n // Try node_modules first, then fall back to system PATH\n const localPath = join(process.cwd(), 'node_modules', '.bin', 'pyright-langserver');\n const binaryPath = existsSync(localPath) ? localPath : 'pyright-langserver';\n return spawn(binaryPath, ['--stdio'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n\n go: {\n id: 'go',\n name: 'Go Language Server (gopls)',\n languageIds: ['go'],\n root: (cwd: string) => findNearestRoot(cwd, ['go.mod', '.git']),\n spawn: (root: string) => {\n return spawn('gopls', ['serve'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n\n rust: {\n id: 'rust',\n name: 'Rust Language Server (rust-analyzer)',\n languageIds: ['rust'],\n root: (cwd: string) => findNearestRoot(cwd, ['Cargo.toml', '.git']),\n spawn: (root: string) => {\n return spawn('rust-analyzer', ['--stdio'], {\n cwd: root,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n },\n },\n};\n\n/**\n * Get all servers that can handle a file\n */\nexport function getServersForFile(filePath: string, cwd: string): LSPServerInfo[] {\n const languageId = getLanguageId(filePath);\n if (!languageId) return [];\n\n return Object.values(BUILTIN_SERVERS).filter(\n server => server.languageIds.includes(languageId) && server.root(cwd) !== null,\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Find the workspace root by walking up from the file path
3
+ * looking for common workspace markers.
4
+ *
5
+ * For monorepos, this prioritizes the closest package/project root
6
+ * (e.g., packages/core) over the monorepo root.
7
+ */
8
+ export declare function findWorkspaceRoot(filePath: string): string;
9
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/lsp/workspace.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiD1D"}
@@ -0,0 +1,52 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ const WORKSPACE_MARKERS = [
4
+ "package.json",
5
+ "tsconfig.json",
6
+ "pyproject.toml",
7
+ "go.mod",
8
+ ".git",
9
+ "Cargo.toml",
10
+ "composer.json"
11
+ ];
12
+ function findWorkspaceRoot(filePath) {
13
+ let currentDir = path.dirname(path.resolve(filePath));
14
+ const root = path.parse(currentDir).root;
15
+ let closestProjectRoot = null;
16
+ let searchDir = currentDir;
17
+ while (searchDir !== root) {
18
+ const hasTsConfig = fs.existsSync(path.join(searchDir, "tsconfig.json"));
19
+ const hasPackageJson = fs.existsSync(path.join(searchDir, "package.json"));
20
+ if (hasTsConfig || hasPackageJson) {
21
+ closestProjectRoot = searchDir;
22
+ break;
23
+ }
24
+ const parentDir = path.dirname(searchDir);
25
+ if (parentDir === searchDir) {
26
+ break;
27
+ }
28
+ searchDir = parentDir;
29
+ }
30
+ if (closestProjectRoot) {
31
+ return closestProjectRoot;
32
+ }
33
+ currentDir = path.dirname(path.resolve(filePath));
34
+ while (currentDir !== root) {
35
+ for (const marker of WORKSPACE_MARKERS) {
36
+ const markerPath = path.join(currentDir, marker);
37
+ if (fs.existsSync(markerPath)) {
38
+ return currentDir;
39
+ }
40
+ }
41
+ const parentDir = path.dirname(currentDir);
42
+ if (parentDir === currentDir) {
43
+ break;
44
+ }
45
+ currentDir = parentDir;
46
+ }
47
+ return path.dirname(path.resolve(filePath));
48
+ }
49
+ export {
50
+ findWorkspaceRoot
51
+ };
52
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lsp/workspace.ts"],"sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\n/**\n * Workspace markers that indicate the root of a project\n */\nconst WORKSPACE_MARKERS = [\n 'package.json',\n 'tsconfig.json',\n 'pyproject.toml',\n 'go.mod',\n '.git',\n 'Cargo.toml',\n 'composer.json',\n];\n\n/**\n * Find the workspace root by walking up from the file path\n * looking for common workspace markers.\n *\n * For monorepos, this prioritizes the closest package/project root\n * (e.g., packages/core) over the monorepo root.\n */\nexport function findWorkspaceRoot(filePath: string): string {\n let currentDir = path.dirname(path.resolve(filePath));\n const root = path.parse(currentDir).root;\n\n // First, find the closest tsconfig.json or package.json\n // This handles monorepos where the actual project is in a subdirectory\n let closestProjectRoot: string | null = null;\n let searchDir = currentDir;\n\n while (searchDir !== root) {\n const hasTsConfig = fs.existsSync(path.join(searchDir, 'tsconfig.json'));\n const hasPackageJson = fs.existsSync(path.join(searchDir, 'package.json'));\n\n if (hasTsConfig || hasPackageJson) {\n closestProjectRoot = searchDir;\n break;\n }\n\n const parentDir = path.dirname(searchDir);\n if (parentDir === searchDir) {\n break;\n }\n searchDir = parentDir;\n }\n\n // If we found a project root, return it\n if (closestProjectRoot) {\n return closestProjectRoot;\n }\n\n // Otherwise, fall back to looking for any workspace marker\n currentDir = path.dirname(path.resolve(filePath));\n while (currentDir !== root) {\n for (const marker of WORKSPACE_MARKERS) {\n const markerPath = path.join(currentDir, marker);\n if (fs.existsSync(markerPath)) {\n return currentDir;\n }\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n break;\n }\n currentDir = parentDir;\n }\n\n // Fallback to the directory containing the file\n return path.dirname(path.resolve(filePath));\n}\n"],"mappings":"AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AAKtB,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASO,SAAS,kBAAkB,UAA0B;AAC1D,MAAI,aAAa,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AACpD,QAAM,OAAO,KAAK,MAAM,UAAU,EAAE;AAIpC,MAAI,qBAAoC;AACxC,MAAI,YAAY;AAEhB,SAAO,cAAc,MAAM;AACzB,UAAM,cAAc,GAAG,WAAW,KAAK,KAAK,WAAW,eAAe,CAAC;AACvE,UAAM,iBAAiB,GAAG,WAAW,KAAK,KAAK,WAAW,cAAc,CAAC;AAEzE,QAAI,eAAe,gBAAgB;AACjC,2BAAqB;AACrB;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,QAAQ,SAAS;AACxC,QAAI,cAAc,WAAW;AAC3B;AAAA,IACF;AACA,gBAAY;AAAA,EACd;AAGA,MAAI,oBAAoB;AACtB,WAAO;AAAA,EACT;AAGA,eAAa,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AAChD,SAAO,eAAe,MAAM;AAC1B,eAAW,UAAU,mBAAmB;AACtC,YAAM,aAAa,KAAK,KAAK,YAAY,MAAM;AAC/C,UAAI,GAAG,WAAW,UAAU,GAAG;AAC7B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,QAAQ,UAAU;AACzC,QAAI,cAAc,YAAY;AAC5B;AAAA,IACF;AACA,iBAAa;AAAA,EACf;AAGA,SAAO,KAAK,QAAQ,KAAK,QAAQ,QAAQ,CAAC;AAC5C;","names":[]}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * MCP server configuration loading from filesystem.
3
+ * Loads from:
4
+ * 1. .claude/settings.local.json (Claude Code compat — lowest priority)
5
+ * 2. ~/.mastracode/mcp.json (global)
6
+ * 3. .mcp.json (project root — Claude Code compatible)
7
+ * 4. .mastracode/mcp.json (project — highest priority)
8
+ *
9
+ * Higher-priority configs override lower ones by server name. The project root
10
+ * `.mcp.json` is read so a project that already keeps MCP servers there for
11
+ * Claude Code does not need to duplicate them under `.mastracode/`.
12
+ */
13
+ import type { McpConfig } from './types.js';
14
+ export declare function loadMcpConfig(projectDir: string, configDirName?: string): McpConfig;
15
+ export declare function getProjectMcpPath(projectDir: string, configDirName?: string): string;
16
+ export declare function getRootMcpPath(projectDir: string): string;
17
+ export declare function getGlobalMcpPath(configDirName?: string): string;
18
+ export declare function getClaudeSettingsPath(projectDir: string): string;
19
+ /**
20
+ * Expand `${VAR}` and `${VAR:-default}` references in a string from the
21
+ * environment, matching how Claude Code resolves values in `.mcp.json`.
22
+ * A referenced variable that is unset or empty falls back to its default,
23
+ * or to an empty string when no default is given.
24
+ */
25
+ export declare function expandEnvVars(value: string, env?: NodeJS.ProcessEnv): string;
26
+ /**
27
+ * Classify a raw server entry as stdio, http, or skip (with reason).
28
+ */
29
+ export declare function classifyServerEntry(raw: unknown): {
30
+ kind: 'stdio' | 'http' | 'skip';
31
+ reason?: string;
32
+ };
33
+ export declare function validateConfig(raw: unknown): McpConfig;
34
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAyD,MAAM,YAAY,CAAC;AAEnG,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAqB,GAAG,SAAS,CAO/F;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAqB,GAAG,MAAM,CAEhG;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,aAAa,SAAqB,GAAG,MAAM,CAE3E;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE;AA4BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAUzF;AA4BD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA2BtG;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAiDtD"}