@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,"sources":["../../src/agents/mastracode-gateway.ts"],"sourcesContent":["import { createAnthropic } from '@ai-sdk/anthropic';\nimport { createOpenAI } from '@ai-sdk/openai';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible';\nimport type { CustomAvailableModel, CustomModelCatalogProvider } from '@mastra/core/agent-controller';\nimport {\n GATEWAY_AUTH_HEADER,\n MastraGateway,\n MastraModelGateway,\n ModelRouterLanguageModel,\n PROVIDER_REGISTRY,\n} from '@mastra/core/llm';\nimport type {\n GatewayAuthRequest,\n GatewayAuthResult,\n GatewayLanguageModel,\n MastraModelGatewayInterface,\n ProviderConfig,\n} from '@mastra/core/llm';\nimport { wrapLanguageModel } from 'ai';\nimport { AuthStorage } from '../auth/storage.js';\nimport { getCustomProviderId, loadSettings, MEMORY_GATEWAY_PROVIDER } from '../onboarding/settings.js';\nimport {\n buildAnthropicOAuthFetch,\n claudeCodeMiddleware,\n opencodeClaudeMaxProvider,\n promptCacheMiddleware,\n} from '../providers/claude-max.js';\nimport { getCopilotModelCatalog, githubCopilotProvider } from '../providers/github-copilot.js';\nimport {\n buildOpenAICodexOAuthFetch,\n createCodexMiddleware,\n getEffectiveThinkingLevel,\n openaiCodexProvider,\n THINKING_LEVEL_TO_REASONING_EFFORT,\n} from '../providers/openai-codex.js';\nimport type { ThinkingLevel } from '../providers/openai-codex.js';\n\nexport const OPENAI_PREFIX = 'openai/';\nexport const MASTRA_GATEWAY_PREFIX = 'mastra/';\nexport const MASTRACODE_GATEWAY_ID = 'mastracode';\n\nconst CODEX_OPENAI_MODEL_REMAPS: Record<string, string> = {\n 'gpt-5.3': 'gpt-5.3-codex',\n 'gpt-5.2': 'gpt-5.2-codex',\n 'gpt-5.1': 'gpt-5.1-codex',\n 'gpt-5.1-mini': 'gpt-5.1-codex-mini',\n 'gpt-5': 'gpt-5-codex',\n};\n\ntype ModelRequestHeaders = Record<string, string>;\n\nexport type MastraCodeCustomProvider = { name: string; url: string; apiKey?: string; models?: string[] };\n\nexport type MastraCodeGatewayOptions = {\n mastraGatewayBaseUrl: string;\n mastraGatewayApiKey?: string;\n routeThroughMastraGateway: boolean;\n thinkingLevel?: ThinkingLevel;\n customProviders?: MastraCodeCustomProvider[];\n settingsPath?: string;\n};\n\nconst authStorage = new AuthStorage();\n\nexport function reloadAuthStorage() {\n authStorage.reload();\n}\n\nexport function stripMastraGatewayPrefix(modelId: string): string {\n return modelId.startsWith(MASTRA_GATEWAY_PREFIX) ? modelId.substring(MASTRA_GATEWAY_PREFIX.length) : modelId;\n}\n\nfunction normalizeAnthropicModelId(modelId: string): string {\n return modelId.replace(/\\.(?=\\d)/g, '-');\n}\n\nexport function remapOpenAIModelForCodexOAuth(modelId: string): string {\n const normalizedModelId = stripMastraGatewayPrefix(modelId);\n\n if (!normalizedModelId.startsWith(OPENAI_PREFIX)) {\n return modelId;\n }\n\n const openaiModelId = normalizedModelId.substring(OPENAI_PREFIX.length);\n\n if (openaiModelId.includes('-codex')) {\n return modelId;\n }\n\n const codexModelId = CODEX_OPENAI_MODEL_REMAPS[openaiModelId];\n if (!codexModelId) {\n return modelId;\n }\n\n const remappedModelId = `${OPENAI_PREFIX}${codexModelId}`;\n return modelId.startsWith(MASTRA_GATEWAY_PREFIX) ? `${MASTRA_GATEWAY_PREFIX}${remappedModelId}` : remappedModelId;\n}\n\n/**\n * Resolve the Anthropic API key.\n * Main slot → dedicated apikey: slot → env var.\n */\nexport function getAnthropicApiKey(): string | undefined {\n const storedCred = authStorage.get('anthropic');\n if (storedCred?.type === 'api_key' && storedCred.key.trim().length > 0) {\n return storedCred.key.trim();\n }\n const dedicatedKey = authStorage.getStoredApiKey('anthropic')?.trim();\n if (dedicatedKey) return dedicatedKey;\n return process.env.ANTHROPIC_API_KEY?.trim() || undefined;\n}\n\n/**\n * Resolve the OpenAI API key.\n * Main slot → dedicated apikey: slot → env var.\n */\nexport function getOpenAIApiKey(): string | undefined {\n const storedCred = authStorage.get('openai-codex');\n if (storedCred?.type === 'api_key' && storedCred.key.trim().length > 0) {\n return storedCred.key.trim();\n }\n const dedicatedKey = authStorage.getStoredApiKey('openai-codex')?.trim();\n if (dedicatedKey) return dedicatedKey;\n return process.env.OPENAI_API_KEY?.trim() || undefined;\n}\n\nfunction anthropicApiKeyProvider(modelId: string, apiKey: string, headers?: ModelRequestHeaders) {\n const anthropic = createAnthropic({ apiKey, headers });\n return wrapLanguageModel({\n model: anthropic(modelId),\n middleware: [promptCacheMiddleware],\n });\n}\n\nfunction openaiApiKeyProvider(modelId: string, apiKey: string, headers?: ModelRequestHeaders) {\n const openai = createOpenAI({ apiKey, baseURL: process.env.OPENAI_BASE_URL, headers });\n return wrapLanguageModel({\n model: openai.responses(modelId),\n middleware: [],\n });\n}\n\nfunction getAuthProviderId(providerId: string): string {\n return providerId === 'openai' ? 'openai-codex' : providerId;\n}\n\nfunction getProviderAuthKey(providerId: string): string | undefined {\n const authProviderId = getAuthProviderId(providerId);\n const storedCred = authStorage.get(authProviderId);\n if (storedCred?.type === 'api_key' && storedCred.key.trim().length > 0) {\n return storedCred.key.trim();\n }\n return authStorage.getStoredApiKey(authProviderId)?.trim() || undefined;\n}\n\nexport function resolveAuth(request: GatewayAuthRequest, memoryGatewayApiKey?: string): GatewayAuthResult | undefined {\n return MastraCodeGateway.resolveProviderAuth(request, memoryGatewayApiKey);\n}\n\nfunction getGatewayProviderKey(gatewayId: string, providerId: string): string {\n if (gatewayId === 'models.dev') return providerId;\n return providerId === gatewayId ? gatewayId : `${gatewayId}/${providerId}`;\n}\n\nfunction parseGatewayRouterId(\n routerId: string,\n gateway: MastraModelGatewayInterface,\n): { gatewayId: string; providerId: string; modelId: string } {\n const [firstPart = '', secondPart = '', ...restParts] = routerId.split('/');\n const gatewayId = gateway.id;\n\n if (firstPart === gatewayId && secondPart) {\n return {\n gatewayId,\n providerId: secondPart,\n modelId: restParts.join('/'),\n };\n }\n\n return {\n gatewayId,\n providerId: firstPart,\n modelId: [secondPart, ...restParts].filter(Boolean).join('/'),\n };\n}\n\nfunction hasResolvedAuth(auth: GatewayAuthResult | undefined): boolean {\n if (!auth) return false;\n if (auth.apiKey || auth.bearerToken) return true;\n return auth.headers ? Object.keys(auth.headers).length > 0 : false;\n}\n\nasync function resolveGatewayProviderAuth(\n gateway: MastraModelGatewayInterface,\n routerId: string,\n): Promise<GatewayAuthResult | undefined> {\n if (!gateway.resolveAuth) return undefined;\n\n const parsed = parseGatewayRouterId(routerId, gateway);\n try {\n const result = await gateway.resolveAuth({\n gatewayId: parsed.gatewayId,\n providerId: parsed.providerId,\n modelId: parsed.modelId,\n routerId,\n });\n return hasResolvedAuth(result) ? result : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function getMastraCodeProviderConfigs(\n gateway: MastraModelGatewayInterface,\n): Promise<Record<string, ProviderConfig>> {\n const providers: Record<string, ProviderConfig> = { ...(PROVIDER_REGISTRY as Record<string, ProviderConfig>) };\n\n try {\n const gatewayProviders = await gateway.fetchProviders();\n for (const [providerId, config] of Object.entries(gatewayProviders)) {\n providers[getGatewayProviderKey(gateway.id, providerId)] = {\n ...config,\n gateway: gateway.id,\n };\n }\n } catch (error) {\n console.warn(`Failed to load providers from gateway ${gateway.id}:`, error);\n }\n\n return providers;\n}\n\nfunction getApiKeyEnvVar(providerConfig: Pick<ProviderConfig, 'apiKeyEnvVar'> | undefined): string | undefined {\n const envVars = providerConfig?.apiKeyEnvVar;\n return Array.isArray(envVars) ? envVars[0] : envVars;\n}\n\nexport class MastraCodeGateway extends MastraModelGateway {\n readonly id = MASTRACODE_GATEWAY_ID;\n readonly name = 'MastraCode Gateway';\n\n readonly #mastraGateway: MastraGateway;\n readonly #mastraGatewayBaseUrl: string;\n readonly #mastraGatewayApiKey?: string;\n readonly #routeThroughMastraGateway: boolean;\n readonly #thinkingLevel?: ThinkingLevel;\n readonly #customProviders?: MastraCodeCustomProvider[];\n readonly #settingsPath?: string;\n\n constructor({\n mastraGatewayBaseUrl,\n mastraGatewayApiKey,\n routeThroughMastraGateway,\n thinkingLevel,\n customProviders,\n settingsPath,\n }: MastraCodeGatewayOptions) {\n super();\n this.#mastraGateway = new MastraGateway({ baseUrl: mastraGatewayBaseUrl });\n this.#mastraGatewayBaseUrl = mastraGatewayBaseUrl;\n this.#mastraGatewayApiKey = mastraGatewayApiKey;\n this.#routeThroughMastraGateway = routeThroughMastraGateway;\n this.#thinkingLevel = thinkingLevel;\n this.#customProviders = customProviders;\n this.#settingsPath = settingsPath;\n }\n\n static getMemoryGatewayApiKey(): string | undefined {\n return authStorage.getStoredApiKey(MEMORY_GATEWAY_PROVIDER) ?? process.env['MASTRA_GATEWAY_API_KEY'];\n }\n\n /**\n * Claim an unprefixed model id (e.g. a bare `anthropic/...`) when this gateway\n * can authenticate it via OAuth or a stored/env credential. This lets the\n * shared gateway router select MastraCode for auth resolution, so the status\n * bar and `/api-keys` reflect OAuth logins instead of only checking env vars.\n */\n handlesModel(modelId: string): boolean {\n const parsed = parseGatewayRouterId(modelId, this);\n if (!parsed.providerId || !parsed.modelId) return false;\n if (this.#routeThroughMastraGateway && this.#mastraGatewayApiKey) return true;\n const customProvider = this.#getCustomProviders().find(\n provider => parsed.providerId === getCustomProviderId(provider.name),\n );\n if (customProvider?.apiKey) return true;\n return hasResolvedAuth(\n MastraCodeGateway.resolveProviderAuth({\n gatewayId: this.id,\n providerId: parsed.providerId,\n modelId: parsed.modelId,\n routerId: modelId,\n }),\n );\n }\n\n static resolveProviderAuth(request: GatewayAuthRequest, memoryGatewayApiKey?: string): GatewayAuthResult | undefined {\n if (request.gatewayId === 'mastra' && memoryGatewayApiKey) {\n return { apiKey: memoryGatewayApiKey, source: 'gateway' };\n }\n\n const storedCred = authStorage.get(getAuthProviderId(request.providerId));\n if (storedCred?.type === 'oauth') {\n return { bearerToken: 'oauth', source: 'gateway' };\n }\n\n const apiKey = getProviderAuthKey(request.providerId);\n return apiKey ? { apiKey, source: 'gateway' } : undefined;\n }\n\n static createModelCatalogProvider(gateway: MastraModelGatewayInterface): CustomModelCatalogProvider {\n return async () => {\n const registry = await getMastraCodeProviderConfigs(gateway);\n const models: CustomAvailableModel[] = [];\n\n for (const [provider, providerConfig] of Object.entries(registry)) {\n const apiKeyEnvVar = getApiKeyEnvVar(providerConfig);\n const hasEnvKey = apiKeyEnvVar ? Boolean(process.env[apiKeyEnvVar]) : false;\n const modelNames = providerConfig.models;\n if (!Array.isArray(modelNames)) continue;\n\n const gatewayAuth = modelNames[0]\n ? await resolveGatewayProviderAuth(gateway, `${provider}/${modelNames[0]}`)\n : undefined;\n\n for (const modelName of modelNames) {\n const id = `${provider}/${modelName}`;\n models.push({\n id,\n provider,\n modelName,\n hasApiKey: hasEnvKey || Boolean(gatewayAuth),\n apiKeyEnvVar: apiKeyEnvVar || undefined,\n });\n }\n }\n\n return models;\n };\n }\n\n createModelCatalogProvider(): CustomModelCatalogProvider {\n return MastraCodeGateway.createModelCatalogProvider(this);\n }\n\n #getCustomProviders(): MastraCodeCustomProvider[] {\n return this.#customProviders ?? loadSettings(this.#settingsPath).customProviders;\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n const providers: Record<string, ProviderConfig> = {};\n for (const provider of this.#getCustomProviders()) {\n const models = provider.models ?? [];\n if (!models.length) continue;\n providers[getCustomProviderId(provider.name)] = {\n name: provider.name,\n url: provider.url,\n apiKeyEnvVar: '',\n apiKeyHeader: 'Authorization',\n gateway: this.id,\n models,\n };\n }\n\n try {\n const copilotModels = await getCopilotModelCatalog({ authStorage });\n providers['github-copilot'] = {\n name: 'GitHub Copilot',\n apiKeyEnvVar: '',\n apiKeyHeader: 'Authorization',\n gateway: this.id,\n models: copilotModels.map(model => model.id),\n };\n } catch (error) {\n console.warn('Failed to load GitHub Copilot model catalog:', error);\n }\n\n return providers;\n }\n\n buildUrl(modelId: string): string | undefined | Promise<string | undefined> {\n return this.#routeThroughMastraGateway ? this.#mastraGateway.buildUrl(modelId) : modelId;\n }\n\n async getApiKey(modelId: string): Promise<string> {\n const providerId = stripMastraGatewayPrefix(modelId).split('/', 1)[0];\n if (this.#routeThroughMastraGateway) return this.#mastraGatewayApiKey ?? '';\n return providerId ? (getProviderAuthKey(providerId) ?? '') : '';\n }\n\n resolveAuth(request: GatewayAuthRequest): GatewayAuthResult | undefined {\n if (this.#routeThroughMastraGateway && this.#mastraGatewayApiKey) {\n return { apiKey: this.#mastraGatewayApiKey, source: 'gateway' };\n }\n\n const customProvider = this.#getCustomProviders().find(\n provider => request.providerId === getCustomProviderId(provider.name),\n );\n if (customProvider?.apiKey) {\n return { apiKey: customProvider.apiKey, source: 'gateway' };\n }\n\n return MastraCodeGateway.resolveProviderAuth(request);\n }\n\n resolveLanguageModel(args: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n transport?: any;\n responsesWebSocket?: any;\n }): GatewayLanguageModel {\n const customProvider = this.#getCustomProviders().find(\n provider => args.providerId === getCustomProviderId(provider.name),\n );\n if (customProvider) {\n const provider = createOpenAICompatible({\n name: args.providerId,\n baseURL: customProvider.url,\n apiKey: args.apiKey,\n headers: args.headers,\n });\n return provider.chatModel(args.modelId) as unknown as GatewayLanguageModel;\n }\n\n if (args.providerId === 'github-copilot') {\n return githubCopilotProvider(args.modelId, { headers: args.headers }) as unknown as GatewayLanguageModel;\n }\n\n if (args.providerId === 'moonshotai') {\n if (!process.env.MOONSHOT_AI_API_KEY) {\n throw new Error(`Need MOONSHOT_AI_API_KEY`);\n }\n return createAnthropic({\n apiKey: process.env.MOONSHOT_AI_API_KEY,\n baseURL: 'https://api.moonshot.ai/anthropic/v1',\n name: 'moonshotai.anthropicv1',\n headers: args.headers,\n })(args.modelId) as unknown as GatewayLanguageModel;\n }\n\n if (args.providerId === 'anthropic') {\n return this.#resolveAnthropicModel(args);\n }\n\n if (args.providerId === 'openai') {\n const openaiModel = this.#resolveOpenAIModel(args);\n if (openaiModel) return openaiModel;\n }\n\n if (this.#routeThroughMastraGateway) {\n return this.#mastraGateway.resolveLanguageModel(args) as GatewayLanguageModel;\n }\n\n return new ModelRouterLanguageModel({\n id: `${args.providerId}/${args.modelId}` as `${string}/${string}`,\n headers: args.headers,\n }) as unknown as GatewayLanguageModel;\n }\n\n #resolveAnthropicModel(args: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n transport?: any;\n responsesWebSocket?: any;\n }): GatewayLanguageModel {\n const bareModelId = normalizeAnthropicModelId(args.modelId);\n const storedCred = authStorage.get('anthropic');\n\n if (this.#routeThroughMastraGateway) {\n if (storedCred?.type === 'oauth') {\n const anthropic = createAnthropic({\n apiKey: 'oauth-gateway-placeholder',\n baseURL: `${this.#mastraGatewayBaseUrl}/v1`,\n headers: {\n [GATEWAY_AUTH_HEADER]: `Bearer ${args.apiKey}`,\n ...args.headers,\n },\n fetch: buildAnthropicOAuthFetch({ authStorage }) as any,\n });\n\n return wrapLanguageModel({\n model: anthropic(bareModelId),\n middleware: [claudeCodeMiddleware, promptCacheMiddleware],\n }) as unknown as GatewayLanguageModel;\n }\n\n return this.#mastraGateway.resolveLanguageModel({ ...args, modelId: bareModelId }) as GatewayLanguageModel;\n }\n\n if (storedCred?.type === 'oauth') {\n return opencodeClaudeMaxProvider(bareModelId, { headers: args.headers }) as unknown as GatewayLanguageModel;\n }\n\n if (storedCred?.type === 'api_key' && storedCred.key.trim().length > 0) {\n return anthropicApiKeyProvider(\n bareModelId,\n storedCred.key.trim(),\n args.headers,\n ) as unknown as GatewayLanguageModel;\n }\n\n const apiKey = getAnthropicApiKey();\n if (apiKey) {\n return anthropicApiKeyProvider(bareModelId, apiKey, args.headers) as unknown as GatewayLanguageModel;\n }\n\n // No stored credentials: use the OAuth-backed provider so the first request can trigger login.\n return opencodeClaudeMaxProvider(bareModelId, { headers: args.headers }) as unknown as GatewayLanguageModel;\n }\n\n #resolveOpenAIModel(args: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n transport?: any;\n responsesWebSocket?: any;\n }): GatewayLanguageModel | undefined {\n const storedCred = authStorage.get('openai-codex');\n\n if (this.#routeThroughMastraGateway) {\n if (storedCred?.type === 'oauth') {\n const resolvedModelId = remapOpenAIModelForCodexOAuth(`openai/${args.modelId}`);\n const resolvedBareModelId = resolvedModelId.substring(OPENAI_PREFIX.length);\n const requestedLevel: ThinkingLevel = this.#thinkingLevel ?? 'medium';\n const effectiveLevel = getEffectiveThinkingLevel(resolvedBareModelId, requestedLevel);\n const reasoningEffort = THINKING_LEVEL_TO_REASONING_EFFORT[effectiveLevel];\n const middleware = createCodexMiddleware(reasoningEffort);\n const openai = createOpenAI({\n apiKey: 'oauth-gateway-placeholder',\n baseURL: `${this.#mastraGatewayBaseUrl}/v1`,\n headers: {\n [GATEWAY_AUTH_HEADER]: `Bearer ${args.apiKey}`,\n ...args.headers,\n },\n fetch: buildOpenAICodexOAuthFetch({ authStorage, rewriteUrl: false }) as any,\n });\n\n return wrapLanguageModel({\n model: openai.responses(resolvedBareModelId),\n middleware: [middleware],\n }) as unknown as GatewayLanguageModel;\n }\n\n return this.#mastraGateway.resolveLanguageModel(args) as GatewayLanguageModel;\n }\n\n if (storedCred?.type === 'oauth') {\n const resolvedModelId = remapOpenAIModelForCodexOAuth(`openai/${args.modelId}`);\n return openaiCodexProvider(resolvedModelId.substring(OPENAI_PREFIX.length), {\n thinkingLevel: this.#thinkingLevel,\n headers: args.headers,\n }) as unknown as GatewayLanguageModel;\n }\n\n const apiKey = getOpenAIApiKey();\n if (apiKey) {\n return openaiApiKeyProvider(args.modelId, apiKey, args.headers) as unknown as GatewayLanguageModel;\n }\n\n return undefined;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,13 @@
1
+ import type { RequestContext } from '@mastra/core/request-context';
2
+ import type { MastraCompositeStore } from '@mastra/core/storage';
3
+ import type { MastraVector } from '@mastra/core/vector';
4
+ import { Memory } from '@mastra/memory';
5
+ /**
6
+ * Dynamic memory factory function.
7
+ * Reads OM thresholds from controller state via requestContext.
8
+ * Model functions also read from requestContext (no mutable bridge needed).
9
+ */
10
+ export declare function getDynamicMemory(storage: MastraCompositeStore, vector?: MastraVector): ({ requestContext }: {
11
+ requestContext: RequestContext;
12
+ }) => Memory;
13
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/agents/memory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAqExC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,YAAY,IAC3E,oBAAoB;IAAE,cAAc,EAAE,cAAc,CAAA;CAAE,YA4D/D"}
@@ -0,0 +1,107 @@
1
+ import { fastembed } from "@mastra/fastembed";
2
+ import { Memory } from "@mastra/memory";
3
+ import { DEFAULT_OM_MODEL_ID, DEFAULT_OBS_THRESHOLD, DEFAULT_REF_THRESHOLD } from "../constants.js";
4
+ import { getOmScope } from "../utils/project.js";
5
+ import { resolveModel } from "./model.js";
6
+ let cachedMemory = null;
7
+ let cachedMemoryKey = null;
8
+ function getAgentControllerState(requestContext) {
9
+ const ctx = requestContext.get("controller");
10
+ return ctx?.getState();
11
+ }
12
+ function getObserverModel({ requestContext }) {
13
+ const state = getAgentControllerState(requestContext);
14
+ return resolveModel(state?.observerModelId ?? DEFAULT_OM_MODEL_ID, {
15
+ remapForCodexOAuth: true,
16
+ requestContext
17
+ });
18
+ }
19
+ function getReflectorModel({ requestContext }) {
20
+ const state = getAgentControllerState(requestContext);
21
+ return resolveModel(state?.reflectorModelId ?? DEFAULT_OM_MODEL_ID, {
22
+ remapForCodexOAuth: true,
23
+ requestContext
24
+ });
25
+ }
26
+ const DYNAMIC_AGENTS_MD_INSTRUCTION = 'Messages wrapped in <system-reminder type="dynamic-agents-md" ...>...</system-reminder> are ephemeral project-context instructions injected from files on disk. Do NOT observe or extract information from these messages \u2014 they are reloaded automatically when needed and should not be stored in memory.';
27
+ const CAVEMAN_OM_INSTRUCTION = `Respond terse like smart caveman. All technical substance stay. Only fluff die.
28
+
29
+ Use full caveman compression style.
30
+
31
+ Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Technical terms exact. Code blocks unchanged. Errors quoted exact. Leave out the words "agent" and "assistant" at the start of each observation line, it is assumed each line is referring to the assistant unless it specifically says it was about the user. Leave out parenthesis and other text characters like * that would not contribute to understanding the observations.
32
+
33
+ Pattern: \`[thing] [action] [reason]. [next step]\`
34
+
35
+ Not: "Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by..."
36
+ Yes: "Bug in auth middleware. Token expiry check use < not <=. Fix:"
37
+
38
+ Example 1
39
+ \u{1F534} 14:31 user asks why React component rerenders
40
+ \u{1F7E1} 14:32 saw inline object prop create new ref each render, cause rerender
41
+ \u2705 14:34 fixed render issue by wrap object in useMemo
42
+
43
+ Example 2
44
+ \u{1F7E1} 15:10 explained pool reuse DB connections, skip repeat handshake overhead
45
+
46
+ Don't say "Agent did x", say "did x". It will be assumed the agent did what was observed. The who should only be specified for the user or other third parties: "user asked x"
47
+
48
+ Drop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question, and anything that requires remembering verbatim content. Resume caveman after clear part done`;
49
+ function getDynamicMemory(storage, vector) {
50
+ return ({ requestContext }) => {
51
+ const state = getAgentControllerState(requestContext);
52
+ const omScope = state?.omScope ?? getOmScope(state?.projectPath);
53
+ const obsThreshold = state?.observationThreshold ?? DEFAULT_OBS_THRESHOLD;
54
+ const refThreshold = state?.reflectionThreshold ?? DEFAULT_REF_THRESHOLD;
55
+ const caveman = state?.cavemanObservations ?? false;
56
+ const observerPreviousObservationTokens = 1e3;
57
+ const observeAttachments = state?.observeAttachments;
58
+ const cacheKey = `${obsThreshold}:${refThreshold}:${omScope}:${observerPreviousObservationTokens}:${caveman ? 1 : 0}:${observeAttachments}`;
59
+ if (cachedMemory && cachedMemoryKey === cacheKey) {
60
+ return cachedMemory;
61
+ }
62
+ const isResourceScope = omScope === "resource";
63
+ const observerInstruction = caveman ? `${DYNAMIC_AGENTS_MD_INSTRUCTION}
64
+
65
+ ${CAVEMAN_OM_INSTRUCTION}` : DYNAMIC_AGENTS_MD_INSTRUCTION;
66
+ const reflectionInstruction = caveman ? CAVEMAN_OM_INSTRUCTION : void 0;
67
+ cachedMemory = new Memory({
68
+ storage,
69
+ vector: vector || false,
70
+ embedder: vector ? fastembed.small : void 0,
71
+ options: {
72
+ observationalMemory: {
73
+ enabled: true,
74
+ temporalMarkers: true,
75
+ retrieval: vector ? { vector: true } : true,
76
+ scope: omScope,
77
+ activateAfterIdle: "auto",
78
+ activateOnProviderChange: true,
79
+ observation: {
80
+ bufferTokens: isResourceScope ? false : 1 / 5,
81
+ bufferActivation: isResourceScope ? void 0 : 2e3,
82
+ model: getObserverModel,
83
+ messageTokens: obsThreshold,
84
+ blockAfter: 2,
85
+ previousObserverTokens: observerPreviousObservationTokens,
86
+ threadTitle: true,
87
+ instruction: observerInstruction,
88
+ observeAttachments
89
+ },
90
+ reflection: {
91
+ bufferActivation: isResourceScope ? void 0 : 1 / 2,
92
+ blockAfter: 1.1,
93
+ model: getReflectorModel,
94
+ observationTokens: refThreshold,
95
+ instruction: reflectionInstruction
96
+ }
97
+ }
98
+ }
99
+ });
100
+ cachedMemoryKey = cacheKey;
101
+ return cachedMemory;
102
+ };
103
+ }
104
+ export {
105
+ getDynamicMemory
106
+ };
107
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/agents/memory.ts"],"sourcesContent":["import type { AgentControllerRequestContext } from '@mastra/core/agent-controller';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MastraCompositeStore } from '@mastra/core/storage';\nimport type { MastraVector } from '@mastra/core/vector';\nimport { fastembed } from '@mastra/fastembed';\nimport { Memory } from '@mastra/memory';\nimport { DEFAULT_OM_MODEL_ID, DEFAULT_OBS_THRESHOLD, DEFAULT_REF_THRESHOLD } from '../constants.js';\nimport type { MastraCodeState } from '../schema.js';\nimport { getOmScope } from '../utils/project.js';\nimport { resolveModel } from './model.js';\n\nlet cachedMemory: Memory | null = null;\nlet cachedMemoryKey: string | null = null;\n\n/**\n * Read controller state from requestContext.\n * Used by both the memory factory and the OM model functions.\n */\nfunction getAgentControllerState(requestContext: RequestContext): MastraCodeState | undefined {\n const ctx = requestContext.get('controller') as AgentControllerRequestContext<MastraCodeState> | undefined;\n return ctx?.getState() as MastraCodeState | undefined;\n}\n\n/**\n * Observer model function — reads the current observer model ID from\n * controller state via requestContext (now propagated by OM's agent.generate).\n */\nfunction getObserverModel({ requestContext }: { requestContext: RequestContext }) {\n const state = getAgentControllerState(requestContext);\n return resolveModel(state?.observerModelId ?? DEFAULT_OM_MODEL_ID, {\n remapForCodexOAuth: true,\n requestContext,\n });\n}\n\n/**\n * Reflector model function — reads the current reflector model ID from\n * controller state via requestContext (now propagated by OM's agent.generate).\n */\nfunction getReflectorModel({ requestContext }: { requestContext: RequestContext }) {\n const state = getAgentControllerState(requestContext);\n return resolveModel(state?.reflectorModelId ?? DEFAULT_OM_MODEL_ID, {\n remapForCodexOAuth: true,\n requestContext,\n });\n}\n\nconst DYNAMIC_AGENTS_MD_INSTRUCTION =\n 'Messages wrapped in <system-reminder type=\"dynamic-agents-md\" ...>...</system-reminder> are ephemeral project-context instructions injected from files on disk. Do NOT observe or extract information from these messages — they are reloaded automatically when needed and should not be stored in memory.';\n\n// Derived from https://github.com/JuliusBrussee/caveman and adapted for OM use with fixed full-level compression.\nconst CAVEMAN_OM_INSTRUCTION = `Respond terse like smart caveman. All technical substance stay. Only fluff die.\n\nUse full caveman compression style.\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). Technical terms exact. Code blocks unchanged. Errors quoted exact. Leave out the words \"agent\" and \"assistant\" at the start of each observation line, it is assumed each line is referring to the assistant unless it specifically says it was about the user. Leave out parenthesis and other text characters like * that would not contribute to understanding the observations.\n\nPattern: \\`[thing] [action] [reason]. [next step]\\`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use < not <=. Fix:\"\n\nExample 1\n🔴 14:31 user asks why React component rerenders\n🟡 14:32 saw inline object prop create new ref each render, cause rerender\n✅ 14:34 fixed render issue by wrap object in useMemo\n\nExample 2\n🟡 15:10 explained pool reuse DB connections, skip repeat handshake overhead\n\nDon't say \"Agent did x\", say \"did x\". It will be assumed the agent did what was observed. The who should only be specified for the user or other third parties: \"user asked x\"\n\nDrop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread, user asks to clarify or repeats question, and anything that requires remembering verbatim content. Resume caveman after clear part done`;\n\n/**\n * Dynamic memory factory function.\n * Reads OM thresholds from controller state via requestContext.\n * Model functions also read from requestContext (no mutable bridge needed).\n */\nexport function getDynamicMemory(storage: MastraCompositeStore, vector?: MastraVector) {\n return ({ requestContext }: { requestContext: RequestContext }) => {\n const state = getAgentControllerState(requestContext);\n const omScope = state?.omScope ?? getOmScope(state?.projectPath);\n\n const obsThreshold = state?.observationThreshold ?? DEFAULT_OBS_THRESHOLD;\n const refThreshold = state?.reflectionThreshold ?? DEFAULT_REF_THRESHOLD;\n const caveman = state?.cavemanObservations ?? false;\n\n const observerPreviousObservationTokens = 1000;\n const observeAttachments = state?.observeAttachments;\n const cacheKey = `${obsThreshold}:${refThreshold}:${omScope}:${observerPreviousObservationTokens}:${caveman ? 1 : 0}:${observeAttachments}`;\n if (cachedMemory && cachedMemoryKey === cacheKey) {\n return cachedMemory;\n }\n\n // Async buffering is not supported with resource scope — disable it\n const isResourceScope = omScope === 'resource';\n\n const observerInstruction = caveman\n ? `${DYNAMIC_AGENTS_MD_INSTRUCTION}\\n\\n${CAVEMAN_OM_INSTRUCTION}`\n : DYNAMIC_AGENTS_MD_INSTRUCTION;\n const reflectionInstruction = caveman ? CAVEMAN_OM_INSTRUCTION : undefined;\n\n cachedMemory = new Memory({\n storage,\n vector: vector || false,\n embedder: vector ? fastembed.small : undefined,\n options: {\n observationalMemory: {\n enabled: true,\n temporalMarkers: true,\n retrieval: vector ? { vector: true } : true,\n scope: omScope,\n activateAfterIdle: 'auto',\n activateOnProviderChange: true,\n observation: {\n bufferTokens: isResourceScope ? false : 1 / 5,\n bufferActivation: isResourceScope ? undefined : 2000,\n model: getObserverModel,\n messageTokens: obsThreshold,\n blockAfter: 2,\n previousObserverTokens: observerPreviousObservationTokens,\n threadTitle: true,\n instruction: observerInstruction,\n observeAttachments,\n },\n reflection: {\n bufferActivation: isResourceScope ? undefined : 1 / 2,\n blockAfter: 1.1,\n model: getReflectorModel,\n observationTokens: refThreshold,\n instruction: reflectionInstruction,\n },\n },\n },\n });\n cachedMemoryKey = cacheKey;\n\n return cachedMemory;\n };\n}\n"],"mappings":"AAIA,SAAS,iBAAiB;AAC1B,SAAS,cAAc;AACvB,SAAS,qBAAqB,uBAAuB,6BAA6B;AAElF,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAE7B,IAAI,eAA8B;AAClC,IAAI,kBAAiC;AAMrC,SAAS,wBAAwB,gBAA6D;AAC5F,QAAM,MAAM,eAAe,IAAI,YAAY;AAC3C,SAAO,KAAK,SAAS;AACvB;AAMA,SAAS,iBAAiB,EAAE,eAAe,GAAuC;AAChF,QAAM,QAAQ,wBAAwB,cAAc;AACpD,SAAO,aAAa,OAAO,mBAAmB,qBAAqB;AAAA,IACjE,oBAAoB;AAAA,IACpB;AAAA,EACF,CAAC;AACH;AAMA,SAAS,kBAAkB,EAAE,eAAe,GAAuC;AACjF,QAAM,QAAQ,wBAAwB,cAAc;AACpD,SAAO,aAAa,OAAO,oBAAoB,qBAAqB;AAAA,IAClE,oBAAoB;AAAA,IACpB;AAAA,EACF,CAAC;AACH;AAEA,MAAM,gCACJ;AAGF,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BxB,SAAS,iBAAiB,SAA+B,QAAuB;AACrF,SAAO,CAAC,EAAE,eAAe,MAA0C;AACjE,UAAM,QAAQ,wBAAwB,cAAc;AACpD,UAAM,UAAU,OAAO,WAAW,WAAW,OAAO,WAAW;AAE/D,UAAM,eAAe,OAAO,wBAAwB;AACpD,UAAM,eAAe,OAAO,uBAAuB;AACnD,UAAM,UAAU,OAAO,uBAAuB;AAE9C,UAAM,oCAAoC;AAC1C,UAAM,qBAAqB,OAAO;AAClC,UAAM,WAAW,GAAG,YAAY,IAAI,YAAY,IAAI,OAAO,IAAI,iCAAiC,IAAI,UAAU,IAAI,CAAC,IAAI,kBAAkB;AACzI,QAAI,gBAAgB,oBAAoB,UAAU;AAChD,aAAO;AAAA,IACT;AAGA,UAAM,kBAAkB,YAAY;AAEpC,UAAM,sBAAsB,UACxB,GAAG,6BAA6B;AAAA;AAAA,EAAO,sBAAsB,KAC7D;AACJ,UAAM,wBAAwB,UAAU,yBAAyB;AAEjE,mBAAe,IAAI,OAAO;AAAA,MACxB;AAAA,MACA,QAAQ,UAAU;AAAA,MAClB,UAAU,SAAS,UAAU,QAAQ;AAAA,MACrC,SAAS;AAAA,QACP,qBAAqB;AAAA,UACnB,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,WAAW,SAAS,EAAE,QAAQ,KAAK,IAAI;AAAA,UACvC,OAAO;AAAA,UACP,mBAAmB;AAAA,UACnB,0BAA0B;AAAA,UAC1B,aAAa;AAAA,YACX,cAAc,kBAAkB,QAAQ,IAAI;AAAA,YAC5C,kBAAkB,kBAAkB,SAAY;AAAA,YAChD,OAAO;AAAA,YACP,eAAe;AAAA,YACf,YAAY;AAAA,YACZ,wBAAwB;AAAA,YACxB,aAAa;AAAA,YACb,aAAa;AAAA,YACb;AAAA,UACF;AAAA,UACA,YAAY;AAAA,YACV,kBAAkB,kBAAkB,SAAY,IAAI;AAAA,YACpD,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,mBAAmB;AAAA,YACnB,aAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD,sBAAkB;AAElB,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -0,0 +1,55 @@
1
+ import type { GatewayLanguageModel, MastraModelGatewayInterface } from '@mastra/core/llm';
2
+ import type { RequestContext } from '@mastra/core/request-context';
3
+ import type { ThinkingLevel } from '../providers/openai-codex.js';
4
+ import { MastraCodeGateway } from './mastracode-gateway.js';
5
+ import type { MastraCodeGatewayOptions } from './mastracode-gateway.js';
6
+ export { getAnthropicApiKey, getOpenAIApiKey, MASTRACODE_GATEWAY_ID, MastraCodeGateway, remapOpenAIModelForCodexOAuth, resolveAuth, } from './mastracode-gateway.js';
7
+ export type { MastraCodeCustomProvider, MastraCodeGatewayOptions } from './mastracode-gateway.js';
8
+ type ResolvedModel = GatewayLanguageModel;
9
+ export declare function createMastraCodeGateway(options: MastraCodeGatewayOptions): MastraCodeGateway;
10
+ export declare function createMastraCodeModelCatalogProvider(gateway: MastraModelGatewayInterface): import("@mastra/core/harness").CustomModelCatalogProvider;
11
+ /**
12
+ * Placeholder for future model ID normalization.
13
+ * Currently returns the input unchanged, but exists as a seam
14
+ * for aliasing, casing fixes, or validation in the future.
15
+ */
16
+ export declare function resolveModelId(modelId: string): string;
17
+ /**
18
+ * Resolve a model ID to the correct provider instance.
19
+ * Shared by the main agent, observer, and reflector.
20
+ *
21
+ * - For anthropic/* models: Uses stored OAuth credentials when present, otherwise direct API key
22
+ * - For openai/* models: Uses OAuth when configured, otherwise direct API key from AuthStorage
23
+ * - For moonshotai/* models: Uses Moonshot AI Anthropic-compatible endpoint
24
+ * - For all other providers: Uses Mastra's model router (models.dev gateway)
25
+ */
26
+ export declare function resolveModel(modelId: string, options?: {
27
+ thinkingLevel?: ThinkingLevel;
28
+ remapForCodexOAuth?: boolean;
29
+ requestContext?: RequestContext;
30
+ }): GatewayLanguageModel;
31
+ /**
32
+ * Dynamic model function that reads the current model from controller state.
33
+ * This allows runtime model switching via the /models picker.
34
+ */
35
+ export declare function getDynamicModel({ requestContext }: {
36
+ requestContext: RequestContext;
37
+ }): ResolvedModel;
38
+ /**
39
+ * Goal judge model resolver for the agent's `goal.judge` config. Resolves the
40
+ * configured goal judge model through mastracode's gateway so provider
41
+ * credentials (stored in auth storage, not just env) are injected — a bare model
42
+ * id handed to core's default model router would fail to find the API key.
43
+ *
44
+ * Returns `undefined` when no judge model is configured, which keeps the goal
45
+ * step a complete no-op (the goal mechanism requires a judge to do anything).
46
+ *
47
+ * `settingsPath` must be the same source `createMastraCode()` reads from so the
48
+ * judge model and the goal budget (`goalMaxTurns`) come from one config — with a
49
+ * custom `settingsPath` a bare `loadSettings()` here could read a different file
50
+ * and silently turn the goal step into a no-op.
51
+ */
52
+ export declare function getGoalJudgeModel({ requestContext }: {
53
+ requestContext: RequestContext;
54
+ }, settingsPath?: string): ResolvedModel | undefined;
55
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/agents/model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAGL,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,6BAA6B,EAC7B,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAElG,KAAK,aAAa,GAAG,oBAAoB,CAAC;AAa1C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAE5F;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,2BAA2B,6DAIxF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,aAAa,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAA;CAAE,GACzG,oBAAoB,CA+DtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,cAAc,EAAE,EAAE;IAAE,cAAc,EAAE,cAAc,CAAA;CAAE,GAAG,aAAa,CAWrG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,cAAc,EAAE,EAAE;IAAE,cAAc,EAAE,cAAc,CAAA;CAAE,EACtD,YAAY,CAAC,EAAE,MAAM,GACpB,aAAa,GAAG,SAAS,CAI3B"}
@@ -0,0 +1,115 @@
1
+ import { loadSettings } from "../onboarding/settings.js";
2
+ import { AMAZON_BEDROCK_GATEWAY_ID, createAmazonBedrockGateway } from "../providers/amazon-bedrock-gateway.js";
3
+ import {
4
+ MASTRA_GATEWAY_PREFIX,
5
+ MASTRACODE_GATEWAY_ID,
6
+ MastraCodeGateway,
7
+ reloadAuthStorage,
8
+ stripMastraGatewayPrefix
9
+ } from "./mastracode-gateway.js";
10
+ import {
11
+ getAnthropicApiKey,
12
+ getOpenAIApiKey,
13
+ MASTRACODE_GATEWAY_ID as MASTRACODE_GATEWAY_ID2,
14
+ MastraCodeGateway as MastraCodeGateway2,
15
+ remapOpenAIModelForCodexOAuth,
16
+ resolveAuth
17
+ } from "./mastracode-gateway.js";
18
+ function getAgentControllerHeaders(requestContext) {
19
+ const agentControllerContext = requestContext?.get("controller");
20
+ const headers = {
21
+ ...agentControllerContext?.threadId ? { "x-thread-id": agentControllerContext.threadId } : {},
22
+ ...agentControllerContext?.resourceId ? { "x-resource-id": agentControllerContext.resourceId } : {}
23
+ };
24
+ return Object.keys(headers).length > 0 ? headers : void 0;
25
+ }
26
+ function createMastraCodeGateway(options) {
27
+ return new MastraCodeGateway(options);
28
+ }
29
+ function createMastraCodeModelCatalogProvider(gateway) {
30
+ return gateway instanceof MastraCodeGateway ? gateway.createModelCatalogProvider() : MastraCodeGateway.createModelCatalogProvider(gateway);
31
+ }
32
+ function resolveModelId(modelId) {
33
+ return modelId;
34
+ }
35
+ function resolveModel(modelId, options) {
36
+ reloadAuthStorage();
37
+ const headers = getAgentControllerHeaders(options?.requestContext);
38
+ const settings = loadSettings();
39
+ const bedrockLegacyPrefix = `${MASTRACODE_GATEWAY_ID}/amazon-bedrock/`;
40
+ const normalizedInput = modelId.startsWith(bedrockLegacyPrefix) ? modelId.slice(MASTRACODE_GATEWAY_ID.length + 1) : modelId;
41
+ const isMastraGatewayModel = normalizedInput.startsWith(MASTRA_GATEWAY_PREFIX);
42
+ const normalizedModelId = stripMastraGatewayPrefix(normalizedInput);
43
+ const [providerId, ...modelParts] = normalizedModelId.split("/");
44
+ const bareModelId = modelParts.join("/");
45
+ if (!providerId || !bareModelId) {
46
+ throw new Error(`Invalid model id: ${modelId}`);
47
+ }
48
+ if (providerId === AMAZON_BEDROCK_GATEWAY_ID) {
49
+ const bedrockGateway = createAmazonBedrockGateway();
50
+ const routerId2 = `${AMAZON_BEDROCK_GATEWAY_ID}/${bareModelId}`;
51
+ const auth2 = bedrockGateway.resolveAuth({
52
+ gatewayId: AMAZON_BEDROCK_GATEWAY_ID,
53
+ providerId: AMAZON_BEDROCK_GATEWAY_ID,
54
+ modelId: bareModelId,
55
+ routerId: routerId2
56
+ });
57
+ return bedrockGateway.resolveLanguageModel({
58
+ providerId: AMAZON_BEDROCK_GATEWAY_ID,
59
+ modelId: bareModelId,
60
+ apiKey: auth2?.apiKey ?? "",
61
+ headers
62
+ });
63
+ }
64
+ const routerId = `${MASTRACODE_GATEWAY_ID}/${normalizedModelId}`;
65
+ const mgApiKey = MastraCodeGateway.getMemoryGatewayApiKey();
66
+ const rawGatewayBase = settings.memoryGateway?.baseUrl ?? process.env["MASTRA_GATEWAY_URL"] ?? "https://gateway-api.mastra.ai";
67
+ const gateway = createMastraCodeGateway({
68
+ mastraGatewayBaseUrl: rawGatewayBase.replace(/\/+$/, "").replace(/\/v1$/, ""),
69
+ mastraGatewayApiKey: mgApiKey,
70
+ routeThroughMastraGateway: Boolean(mgApiKey && isMastraGatewayModel),
71
+ thinkingLevel: options?.thinkingLevel,
72
+ customProviders: settings.customProviders
73
+ });
74
+ const auth = gateway.resolveAuth({
75
+ gatewayId: MASTRACODE_GATEWAY_ID,
76
+ providerId,
77
+ modelId: bareModelId,
78
+ routerId
79
+ });
80
+ return gateway.resolveLanguageModel({
81
+ providerId,
82
+ modelId: bareModelId,
83
+ apiKey: auth?.apiKey ?? mgApiKey ?? "",
84
+ headers
85
+ });
86
+ }
87
+ function getDynamicModel({ requestContext }) {
88
+ const agentControllerContext = requestContext.get("controller");
89
+ const modelId = agentControllerContext?.session?.modelId;
90
+ if (!modelId) {
91
+ throw new Error("No model selected. Use /models to select a model first.");
92
+ }
93
+ const thinkingLevel = agentControllerContext?.state?.thinkingLevel;
94
+ return resolveModel(modelId, { thinkingLevel, remapForCodexOAuth: true, requestContext });
95
+ }
96
+ function getGoalJudgeModel({ requestContext }, settingsPath) {
97
+ const judgeModelId = loadSettings(settingsPath).models.goalJudgeModel;
98
+ if (!judgeModelId) return void 0;
99
+ return resolveModel(judgeModelId, { remapForCodexOAuth: true, requestContext });
100
+ }
101
+ export {
102
+ MASTRACODE_GATEWAY_ID2 as MASTRACODE_GATEWAY_ID,
103
+ MastraCodeGateway2 as MastraCodeGateway,
104
+ createMastraCodeGateway,
105
+ createMastraCodeModelCatalogProvider,
106
+ getAnthropicApiKey,
107
+ getDynamicModel,
108
+ getGoalJudgeModel,
109
+ getOpenAIApiKey,
110
+ remapOpenAIModelForCodexOAuth,
111
+ resolveAuth,
112
+ resolveModel,
113
+ resolveModelId
114
+ };
115
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/agents/model.ts"],"sourcesContent":["import type { AgentControllerRequestContext } from '@mastra/core/agent-controller';\nimport type { GatewayLanguageModel, MastraModelGatewayInterface } from '@mastra/core/llm';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { loadSettings } from '../onboarding/settings.js';\nimport { AMAZON_BEDROCK_GATEWAY_ID, createAmazonBedrockGateway } from '../providers/amazon-bedrock-gateway.js';\nimport type { ThinkingLevel } from '../providers/openai-codex.js';\nimport {\n MASTRA_GATEWAY_PREFIX,\n MASTRACODE_GATEWAY_ID,\n MastraCodeGateway,\n reloadAuthStorage,\n stripMastraGatewayPrefix,\n} from './mastracode-gateway.js';\nimport type { MastraCodeGatewayOptions } from './mastracode-gateway.js';\n\nexport {\n getAnthropicApiKey,\n getOpenAIApiKey,\n MASTRACODE_GATEWAY_ID,\n MastraCodeGateway,\n remapOpenAIModelForCodexOAuth,\n resolveAuth,\n} from './mastracode-gateway.js';\nexport type { MastraCodeCustomProvider, MastraCodeGatewayOptions } from './mastracode-gateway.js';\n\ntype ResolvedModel = GatewayLanguageModel;\ntype ModelRequestHeaders = Record<string, string>;\n\nfunction getAgentControllerHeaders(requestContext?: RequestContext): ModelRequestHeaders | undefined {\n const agentControllerContext = requestContext?.get('controller') as AgentControllerRequestContext<any> | undefined;\n const headers = {\n ...(agentControllerContext?.threadId ? { 'x-thread-id': agentControllerContext.threadId } : {}),\n ...(agentControllerContext?.resourceId ? { 'x-resource-id': agentControllerContext.resourceId } : {}),\n };\n\n return Object.keys(headers).length > 0 ? headers : undefined;\n}\n\nexport function createMastraCodeGateway(options: MastraCodeGatewayOptions): MastraCodeGateway {\n return new MastraCodeGateway(options);\n}\n\nexport function createMastraCodeModelCatalogProvider(gateway: MastraModelGatewayInterface) {\n return gateway instanceof MastraCodeGateway\n ? gateway.createModelCatalogProvider()\n : MastraCodeGateway.createModelCatalogProvider(gateway);\n}\n\n/**\n * Placeholder for future model ID normalization.\n * Currently returns the input unchanged, but exists as a seam\n * for aliasing, casing fixes, or validation in the future.\n */\nexport function resolveModelId(modelId: string): string {\n return modelId;\n}\n\n/**\n * Resolve a model ID to the correct provider instance.\n * Shared by the main agent, observer, and reflector.\n *\n * - For anthropic/* models: Uses stored OAuth credentials when present, otherwise direct API key\n * - For openai/* models: Uses OAuth when configured, otherwise direct API key from AuthStorage\n * - For moonshotai/* models: Uses Moonshot AI Anthropic-compatible endpoint\n * - For all other providers: Uses Mastra's model router (models.dev gateway)\n */\nexport function resolveModel(\n modelId: string,\n options?: { thinkingLevel?: ThinkingLevel; remapForCodexOAuth?: boolean; requestContext?: RequestContext },\n): GatewayLanguageModel {\n reloadAuthStorage();\n const headers = getAgentControllerHeaders(options?.requestContext);\n const settings = loadSettings();\n // Bedrock was previously cataloged under the MastraCode gateway namespace\n // (`mastracode/amazon-bedrock/<model>`). Normalize any legacy saved ids to the\n // standalone `amazon-bedrock/<model>` form so they resolve through the\n // dedicated Bedrock gateway.\n const bedrockLegacyPrefix = `${MASTRACODE_GATEWAY_ID}/amazon-bedrock/`;\n const normalizedInput = modelId.startsWith(bedrockLegacyPrefix)\n ? modelId.slice(MASTRACODE_GATEWAY_ID.length + 1)\n : modelId;\n const isMastraGatewayModel = normalizedInput.startsWith(MASTRA_GATEWAY_PREFIX);\n const normalizedModelId = stripMastraGatewayPrefix(normalizedInput);\n const [providerId, ...modelParts] = normalizedModelId.split('/');\n const bareModelId = modelParts.join('/');\n if (!providerId || !bareModelId) {\n throw new Error(`Invalid model id: ${modelId}`);\n }\n\n if (providerId === AMAZON_BEDROCK_GATEWAY_ID) {\n const bedrockGateway = createAmazonBedrockGateway();\n const routerId = `${AMAZON_BEDROCK_GATEWAY_ID}/${bareModelId}`;\n const auth = bedrockGateway.resolveAuth({\n gatewayId: AMAZON_BEDROCK_GATEWAY_ID,\n providerId: AMAZON_BEDROCK_GATEWAY_ID,\n modelId: bareModelId,\n routerId,\n });\n return bedrockGateway.resolveLanguageModel({\n providerId: AMAZON_BEDROCK_GATEWAY_ID,\n modelId: bareModelId,\n apiKey: auth?.apiKey ?? '',\n headers,\n });\n }\n\n const routerId = `${MASTRACODE_GATEWAY_ID}/${normalizedModelId}`;\n\n const mgApiKey = MastraCodeGateway.getMemoryGatewayApiKey();\n const rawGatewayBase =\n settings.memoryGateway?.baseUrl ?? process.env['MASTRA_GATEWAY_URL'] ?? 'https://gateway-api.mastra.ai';\n const gateway = createMastraCodeGateway({\n mastraGatewayBaseUrl: rawGatewayBase.replace(/\\/+$/, '').replace(/\\/v1$/, ''),\n mastraGatewayApiKey: mgApiKey,\n routeThroughMastraGateway: Boolean(mgApiKey && isMastraGatewayModel),\n thinkingLevel: options?.thinkingLevel,\n customProviders: settings.customProviders,\n });\n\n const auth = gateway.resolveAuth({\n gatewayId: MASTRACODE_GATEWAY_ID,\n providerId,\n modelId: bareModelId,\n routerId,\n });\n\n return gateway.resolveLanguageModel({\n providerId,\n modelId: bareModelId,\n apiKey: auth?.apiKey ?? mgApiKey ?? '',\n headers,\n });\n}\n\n/**\n * Dynamic model function that reads the current model from controller state.\n * This allows runtime model switching via the /models picker.\n */\nexport function getDynamicModel({ requestContext }: { requestContext: RequestContext }): ResolvedModel {\n const agentControllerContext = requestContext.get('controller') as AgentControllerRequestContext<any> | undefined;\n\n const modelId = agentControllerContext?.session?.modelId;\n if (!modelId) {\n throw new Error('No model selected. Use /models to select a model first.');\n }\n\n const thinkingLevel = agentControllerContext?.state?.thinkingLevel as ThinkingLevel | undefined;\n\n return resolveModel(modelId, { thinkingLevel, remapForCodexOAuth: true, requestContext });\n}\n\n/**\n * Goal judge model resolver for the agent's `goal.judge` config. Resolves the\n * configured goal judge model through mastracode's gateway so provider\n * credentials (stored in auth storage, not just env) are injected — a bare model\n * id handed to core's default model router would fail to find the API key.\n *\n * Returns `undefined` when no judge model is configured, which keeps the goal\n * step a complete no-op (the goal mechanism requires a judge to do anything).\n *\n * `settingsPath` must be the same source `createMastraCode()` reads from so the\n * judge model and the goal budget (`goalMaxTurns`) come from one config — with a\n * custom `settingsPath` a bare `loadSettings()` here could read a different file\n * and silently turn the goal step into a no-op.\n */\nexport function getGoalJudgeModel(\n { requestContext }: { requestContext: RequestContext },\n settingsPath?: string,\n): ResolvedModel | undefined {\n const judgeModelId = loadSettings(settingsPath).models.goalJudgeModel;\n if (!judgeModelId) return undefined;\n return resolveModel(judgeModelId, { remapForCodexOAuth: true, requestContext });\n}\n"],"mappings":"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","names":["MASTRACODE_GATEWAY_ID","MastraCodeGateway","routerId","auth"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Execute subagent — focused task execution with write capabilities.
3
+ *
4
+ * This subagent is given a specific implementation task and uses both
5
+ * read and write tools to complete it. It can modify files, run commands,
6
+ * and perform actual development work within a constrained scope.
7
+ */
8
+ import type { AgentControllerMode } from '@mastra/core/agent-controller';
9
+ export declare const buildMode: AgentControllerMode;
10
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/agents/modes/build.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,eAAO,MAAM,SAAS,EAAE,mBAyCvB,CAAC"}
@@ -0,0 +1,45 @@
1
+ const buildMode = {
2
+ id: "build",
3
+ name: "Build",
4
+ description: "Task execution with write capabilities. Use for 'implement feature X', 'fix bug Y', 'refactor module Z'.",
5
+ instructions: `You are a focused execution agent. Your job is to complete a specific, well-defined task by making the necessary changes to the codebase.
6
+
7
+ ## Rules
8
+ - You have FULL ACCESS to read, write, and execute within your task scope.
9
+ - Stay focused on the specific task given. Do not make unrelated changes.
10
+ - Read files before modifying them \u2014 use view first, then string_replace_lsp or write_file.
11
+ - Verify your changes work by running relevant tests or checking for errors.
12
+
13
+ ## Tool Strategy
14
+ - **Read first**: Always view a file before editing it
15
+ - **Edit precisely**: Use string_replace_lsp with enough context to match uniquely
16
+ - **Use specialized tools**: Prefer view/search_content/find_files over shell commands for reading
17
+ - **Parallelize**: Make independent tool calls together (e.g., view multiple files at once)
18
+
19
+ ## Workflow
20
+ . Understand the task and explore relevant code
21
+ . For complex tasks (3+ steps): track progress internally and summarize it in your final answer
22
+ . Make changes incrementally \u2014 verify each change before moving on
23
+ . Run tests or type-check to verify
24
+
25
+ ## Efficiency
26
+ Your output returns to the parent agent. Be concise:
27
+ - Don't repeat file contents in your response
28
+ - Summarize what changed, don't narrate each step
29
+ - Keep your final summary under 300 words
30
+
31
+ ## Output Format
32
+ End with a structured summary:
33
+ . **Completed**: What you implemented (1-2 sentences)
34
+ . **Changes**: Files modified/created
35
+ . **Verification**: How you verified it works
36
+ . **Notes**: Follow-up needed (if any)`,
37
+ defaultModelId: "openai/gpt-5.5",
38
+ metadata: {
39
+ default: true
40
+ }
41
+ };
42
+ export {
43
+ buildMode
44
+ };
45
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/agents/modes/build.ts"],"sourcesContent":["/**\n * Execute subagent — focused task execution with write capabilities.\n *\n * This subagent is given a specific implementation task and uses both\n * read and write tools to complete it. It can modify files, run commands,\n * and perform actual development work within a constrained scope.\n */\nimport type { AgentControllerMode } from '@mastra/core/agent-controller';\n\nexport const buildMode: AgentControllerMode = {\n id: 'build',\n name: 'Build',\n description:\n \"Task execution with write capabilities. Use for 'implement feature X', 'fix bug Y', 'refactor module Z'.\",\n instructions: `You are a focused execution agent. Your job is to complete a specific, well-defined task by making the necessary changes to the codebase.\n\n## Rules\n- You have FULL ACCESS to read, write, and execute within your task scope.\n- Stay focused on the specific task given. Do not make unrelated changes.\n- Read files before modifying them — use view first, then string_replace_lsp or write_file.\n- Verify your changes work by running relevant tests or checking for errors.\n\n## Tool Strategy\n- **Read first**: Always view a file before editing it\n- **Edit precisely**: Use string_replace_lsp with enough context to match uniquely\n- **Use specialized tools**: Prefer view/search_content/find_files over shell commands for reading\n- **Parallelize**: Make independent tool calls together (e.g., view multiple files at once)\n\n## Workflow\n. Understand the task and explore relevant code\n. For complex tasks (3+ steps): track progress internally and summarize it in your final answer\n. Make changes incrementally — verify each change before moving on\n. Run tests or type-check to verify\n\n## Efficiency\nYour output returns to the parent agent. Be concise:\n- Don't repeat file contents in your response\n- Summarize what changed, don't narrate each step\n- Keep your final summary under 300 words\n\n## Output Format\nEnd with a structured summary:\n. **Completed**: What you implemented (1-2 sentences)\n. **Changes**: Files modified/created\n. **Verification**: How you verified it works\n. **Notes**: Follow-up needed (if any)`,\n defaultModelId: 'openai/gpt-5.5',\n metadata: {\n default: true,\n },\n};\n"],"mappings":"AASO,MAAM,YAAiC;AAAA,EAC5C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aACE;AAAA,EACF,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgCd,gBAAgB;AAAA,EAChB,UAAU;AAAA,IACR,SAAS;AAAA,EACX;AACF;","names":[]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Explore subagent — read-only codebase exploration.
3
+ *
4
+ * This subagent is given a focused task (e.g., "find all usages of X",
5
+ * "understand how module Y works") and uses read-only tools to explore
6
+ * the codebase, then returns a concise summary of its findings.
7
+ */
8
+ import type { AgentControllerMode } from '@mastra/core/agent-controller';
9
+ export declare const fastMode: AgentControllerMode;
10
+ //# sourceMappingURL=explore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../../src/agents/modes/explore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,eAAO,MAAM,QAAQ,EAAE,mBAkCtB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { EXPLORE_MODE_AVAILABLE_TOOLS } from "../tool-availability.js";
2
+ const fastMode = {
3
+ id: "fast",
4
+ name: "Explore",
5
+ description: "Read-only codebase exploration. Use for questions like 'find all usages of X', 'how does module Y work'.",
6
+ defaultModelId: "openai/gpt-5.4-mini",
7
+ instructions: `You are an expert code explorer. Your job is to investigate a codebase and answer a specific question or gather specific information.
8
+
9
+ ## Rules
10
+ - You have READ-ONLY access. You cannot modify files or run commands.
11
+ - Be thorough \u2014 search broadly first, then drill into relevant files.
12
+ - After gathering enough information, produce a clear, concise summary of your findings.
13
+
14
+ ## Tool Strategy
15
+ - **Start broad**: Use find_files (glob) to understand project structure
16
+ - **Search smart**: Use search_content (grep) with specific patterns \u2014 avoid overly broad searches
17
+ - **Read efficiently**: Use view with view_range for large files \u2014 don't read entire files if you only need a section
18
+ - **Parallelize**: Make multiple independent tool calls in one round when exploring different areas
19
+
20
+ ## Efficiency
21
+ Your output returns to the parent agent. Be concise:
22
+ - Don't include raw file contents in your response \u2014 summarize what you found
23
+ - Reference files by path and line number, not by copying code
24
+ - If a search returns many results, report the count and key examples, not every match
25
+
26
+ ## Output Format
27
+ End with a structured summary:
28
+ . **Answer**: Direct answer to the question (1-2 sentences)
29
+ . **Key Files**: Most relevant files with line numbers
30
+ . **Details**: Additional context if needed
31
+
32
+ Keep your summary under 300 words.`,
33
+ availableTools: [...EXPLORE_MODE_AVAILABLE_TOOLS]
34
+ };
35
+ export {
36
+ fastMode
37
+ };
38
+ //# sourceMappingURL=explore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/agents/modes/explore.ts"],"sourcesContent":["/**\n * Explore subagent — read-only codebase exploration.\n *\n * This subagent is given a focused task (e.g., \"find all usages of X\",\n * \"understand how module Y works\") and uses read-only tools to explore\n * the codebase, then returns a concise summary of its findings.\n */\nimport type { AgentControllerMode } from '@mastra/core/agent-controller';\nimport { EXPLORE_MODE_AVAILABLE_TOOLS } from '../tool-availability.js';\n\nexport const fastMode: AgentControllerMode = {\n id: 'fast',\n name: 'Explore',\n description:\n \"Read-only codebase exploration. Use for questions like 'find all usages of X', 'how does module Y work'.\",\n defaultModelId: 'openai/gpt-5.4-mini',\n instructions: `You are an expert code explorer. Your job is to investigate a codebase and answer a specific question or gather specific information.\n\n## Rules\n- You have READ-ONLY access. You cannot modify files or run commands.\n- Be thorough — search broadly first, then drill into relevant files.\n- After gathering enough information, produce a clear, concise summary of your findings.\n\n## Tool Strategy\n- **Start broad**: Use find_files (glob) to understand project structure\n- **Search smart**: Use search_content (grep) with specific patterns — avoid overly broad searches\n- **Read efficiently**: Use view with view_range for large files — don't read entire files if you only need a section\n- **Parallelize**: Make multiple independent tool calls in one round when exploring different areas\n\n## Efficiency\nYour output returns to the parent agent. Be concise:\n- Don't include raw file contents in your response — summarize what you found\n- Reference files by path and line number, not by copying code\n- If a search returns many results, report the count and key examples, not every match\n\n## Output Format\nEnd with a structured summary:\n. **Answer**: Direct answer to the question (1-2 sentences)\n. **Key Files**: Most relevant files with line numbers\n. **Details**: Additional context if needed\n\nKeep your summary under 300 words.`,\n\n availableTools: [...EXPLORE_MODE_AVAILABLE_TOOLS],\n};\n"],"mappings":"AAQA,SAAS,oCAAoC;AAEtC,MAAM,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aACE;AAAA,EACF,gBAAgB;AAAA,EAChB,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2Bd,gBAAgB,CAAC,GAAG,4BAA4B;AAClD;","names":[]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Plan mode — read-only analysis and planning.
3
+ */
4
+ import type { AgentControllerMode } from '@mastra/core/agent-controller';
5
+ export declare const planMode: AgentControllerMode;
6
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/agents/modes/plan.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,eAAO,MAAM,QAAQ,EAAE,mBAmCtB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { PLAN_MODE_AVAILABLE_TOOLS } from "../tool-availability.js";
2
+ const planMode = {
3
+ id: "plan",
4
+ name: "Plan",
5
+ transitionsTo: "build",
6
+ defaultModelId: "openai/gpt-5.5",
7
+ description: "Read-only analysis and planning. Use for 'create an implementation plan for X', 'analyze the architecture of Y'.",
8
+ instructions: `You are an expert software architect and planner. Your job is to analyze a codebase and produce a detailed implementation plan for a given task.
9
+
10
+ ## Rules
11
+ - You have READ-ONLY access to the project. You cannot modify project files or run commands.
12
+ - The one exception is plan files: you can create and edit markdown files inside \`.mastracode/plans/\` using \`write_file\`, \`view\`, and \`string_replace_lsp\`. You may not write anywhere else.
13
+ - First, explore the codebase to understand existing patterns, architecture, and conventions.
14
+ - Produce a concrete, actionable plan \u2014 not vague suggestions.
15
+
16
+ ## Tool Strategy
17
+ - **Discover structure**: Use find_files (glob) to understand project layout and find relevant files
18
+ - **Find patterns**: Use search_content (grep) to locate existing implementations, imports, and conventions
19
+ - **Understand deeply**: Use view with view_range to read specific sections of key files
20
+ - **Parallelize**: Make multiple independent tool calls when exploring different areas
21
+
22
+ ## Plan Delivery
23
+ - Write your plan to a markdown file under \`.mastracode/plans/\` (e.g. \`.mastracode/plans/add-dark-mode.md\`) using \`write_file\`, then call \`submit_plan({ path })\` with the path to that file (never the plan body).
24
+ - Start the file with a \`# Title\` heading describing the plan.
25
+ - Reuse the same file while iterating on the same plan; only create a new file for a genuinely different plan so each plan stays available to review.
26
+ - Do NOT output the plan as text \u2014 it MUST live in the plan file.
27
+ - Be concise: reference files by path and line number, don't include raw contents.
28
+ - Focus on actionable details, not general observations.
29
+ - To revise after "Request changes", edit the same file in place with \`string_replace_lsp\`, and call \`submit_plan\` again with the same path.`,
30
+ metadata: {
31
+ default: false
32
+ },
33
+ availableTools: [...PLAN_MODE_AVAILABLE_TOOLS]
34
+ };
35
+ export {
36
+ planMode
37
+ };
38
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/agents/modes/plan.ts"],"sourcesContent":["/**\n * Plan mode — read-only analysis and planning.\n */\nimport type { AgentControllerMode } from '@mastra/core/agent-controller';\nimport { PLAN_MODE_AVAILABLE_TOOLS } from '../tool-availability.js';\n\nexport const planMode: AgentControllerMode = {\n id: 'plan',\n name: 'Plan',\n transitionsTo: 'build',\n defaultModelId: 'openai/gpt-5.5',\n description:\n \"Read-only analysis and planning. Use for 'create an implementation plan for X', 'analyze the architecture of Y'.\",\n instructions: `You are an expert software architect and planner. Your job is to analyze a codebase and produce a detailed implementation plan for a given task.\n\n## Rules\n- You have READ-ONLY access to the project. You cannot modify project files or run commands.\n- The one exception is plan files: you can create and edit markdown files inside \\`.mastracode/plans/\\` using \\`write_file\\`, \\`view\\`, and \\`string_replace_lsp\\`. You may not write anywhere else.\n- First, explore the codebase to understand existing patterns, architecture, and conventions.\n- Produce a concrete, actionable plan — not vague suggestions.\n\n## Tool Strategy\n- **Discover structure**: Use find_files (glob) to understand project layout and find relevant files\n- **Find patterns**: Use search_content (grep) to locate existing implementations, imports, and conventions\n- **Understand deeply**: Use view with view_range to read specific sections of key files\n- **Parallelize**: Make multiple independent tool calls when exploring different areas\n\n## Plan Delivery\n- Write your plan to a markdown file under \\`.mastracode/plans/\\` (e.g. \\`.mastracode/plans/add-dark-mode.md\\`) using \\`write_file\\`, then call \\`submit_plan({ path })\\` with the path to that file (never the plan body).\n- Start the file with a \\`# Title\\` heading describing the plan.\n- Reuse the same file while iterating on the same plan; only create a new file for a genuinely different plan so each plan stays available to review.\n- Do NOT output the plan as text — it MUST live in the plan file.\n- Be concise: reference files by path and line number, don't include raw contents.\n- Focus on actionable details, not general observations.\n- To revise after \"Request changes\", edit the same file in place with \\`string_replace_lsp\\`, and call \\`submit_plan\\` again with the same path.`,\n\n metadata: {\n default: false,\n },\n\n availableTools: [...PLAN_MODE_AVAILABLE_TOOLS],\n};\n"],"mappings":"AAIA,SAAS,iCAAiC;AAEnC,MAAM,WAAgC;AAAA,EAC3C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,aACE;AAAA,EACF,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBd,UAAU;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EAEA,gBAAgB,CAAC,GAAG,yBAAyB;AAC/C;","names":[]}