@mastra/code-sdk 0.0.0-client-tool-results-20260912062135

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 (594) hide show
  1. package/LICENSE.md +32 -0
  2. package/README.md +37 -0
  3. package/dist/acp/agent.d.ts +35 -0
  4. package/dist/acp/agent.d.ts.map +1 -0
  5. package/dist/acp/agent.js +161 -0
  6. package/dist/acp/agent.js.map +1 -0
  7. package/dist/acp/event-mapper.d.ts +22 -0
  8. package/dist/acp/event-mapper.d.ts.map +1 -0
  9. package/dist/acp/event-mapper.js +214 -0
  10. package/dist/acp/event-mapper.js.map +1 -0
  11. package/dist/acp/index.d.ts +8 -0
  12. package/dist/acp/index.d.ts.map +1 -0
  13. package/dist/acp/index.js +65 -0
  14. package/dist/acp/index.js.map +1 -0
  15. package/dist/acp/server.d.ts +7 -0
  16. package/dist/acp/server.d.ts.map +1 -0
  17. package/dist/acp/server.js +35 -0
  18. package/dist/acp/server.js.map +1 -0
  19. package/dist/acp.d.ts +2 -0
  20. package/dist/acp.d.ts.map +1 -0
  21. package/dist/acp.js +2 -0
  22. package/dist/agents/context-audit.d.ts +84 -0
  23. package/dist/agents/context-audit.d.ts.map +1 -0
  24. package/dist/agents/context-audit.js +118 -0
  25. package/dist/agents/context-audit.js.map +1 -0
  26. package/dist/agents/credential-resolver.d.ts +63 -0
  27. package/dist/agents/credential-resolver.d.ts.map +1 -0
  28. package/dist/agents/credential-resolver.js +97 -0
  29. package/dist/agents/credential-resolver.js.map +1 -0
  30. package/dist/agents/custom-provider-source.d.ts +35 -0
  31. package/dist/agents/custom-provider-source.d.ts.map +1 -0
  32. package/dist/agents/custom-provider-source.js +25 -0
  33. package/dist/agents/custom-provider-source.js.map +1 -0
  34. package/dist/agents/instructions.d.ts +29 -0
  35. package/dist/agents/instructions.d.ts.map +1 -0
  36. package/dist/agents/instructions.js +58 -0
  37. package/dist/agents/instructions.js.map +1 -0
  38. package/dist/agents/mastracode-gateway.d.ts +74 -0
  39. package/dist/agents/mastracode-gateway.d.ts.map +1 -0
  40. package/dist/agents/mastracode-gateway.js +431 -0
  41. package/dist/agents/mastracode-gateway.js.map +1 -0
  42. package/dist/agents/memory.d.ts +30 -0
  43. package/dist/agents/memory.d.ts.map +1 -0
  44. package/dist/agents/memory.js +171 -0
  45. package/dist/agents/memory.js.map +1 -0
  46. package/dist/agents/model.d.ts +81 -0
  47. package/dist/agents/model.d.ts.map +1 -0
  48. package/dist/agents/model.js +155 -0
  49. package/dist/agents/model.js.map +1 -0
  50. package/dist/agents/modes/build.d.ts +10 -0
  51. package/dist/agents/modes/build.d.ts.map +1 -0
  52. package/dist/agents/modes/build.js +49 -0
  53. package/dist/agents/modes/build.js.map +1 -0
  54. package/dist/agents/modes/explore.d.ts +10 -0
  55. package/dist/agents/modes/explore.d.ts.map +1 -0
  56. package/dist/agents/modes/explore.js +42 -0
  57. package/dist/agents/modes/explore.js.map +1 -0
  58. package/dist/agents/modes/plan.d.ts +6 -0
  59. package/dist/agents/modes/plan.d.ts.map +1 -0
  60. package/dist/agents/modes/plan.js +42 -0
  61. package/dist/agents/modes/plan.js.map +1 -0
  62. package/dist/agents/prompts/agent-instructions.d.ts +70 -0
  63. package/dist/agents/prompts/agent-instructions.d.ts.map +1 -0
  64. package/dist/agents/prompts/agent-instructions.js +211 -0
  65. package/dist/agents/prompts/agent-instructions.js.map +1 -0
  66. package/dist/agents/prompts/build.d.ts +12 -0
  67. package/dist/agents/prompts/build.d.ts.map +1 -0
  68. package/dist/agents/prompts/build.js +76 -0
  69. package/dist/agents/prompts/build.js.map +1 -0
  70. package/dist/agents/prompts/fast.d.ts +5 -0
  71. package/dist/agents/prompts/fast.d.ts.map +1 -0
  72. package/dist/agents/prompts/fast.js +26 -0
  73. package/dist/agents/prompts/fast.js.map +1 -0
  74. package/dist/agents/prompts/index.d.ts +50 -0
  75. package/dist/agents/prompts/index.d.ts.map +1 -0
  76. package/dist/agents/prompts/index.js +119 -0
  77. package/dist/agents/prompts/index.js.map +1 -0
  78. package/dist/agents/prompts/model.d.ts +5 -0
  79. package/dist/agents/prompts/model.d.ts.map +1 -0
  80. package/dist/agents/prompts/model.js +23 -0
  81. package/dist/agents/prompts/model.js.map +1 -0
  82. package/dist/agents/prompts/plan.d.ts +6 -0
  83. package/dist/agents/prompts/plan.d.ts.map +1 -0
  84. package/dist/agents/prompts/plan.js +111 -0
  85. package/dist/agents/prompts/plan.js.map +1 -0
  86. package/dist/agents/prompts/tool-guidance.d.ts +18 -0
  87. package/dist/agents/prompts/tool-guidance.d.ts.map +1 -0
  88. package/dist/agents/prompts/tool-guidance.js +180 -0
  89. package/dist/agents/prompts/tool-guidance.js.map +1 -0
  90. package/dist/agents/sandbox-filesystem.d.ts +117 -0
  91. package/dist/agents/sandbox-filesystem.d.ts.map +1 -0
  92. package/dist/agents/sandbox-filesystem.js +356 -0
  93. package/dist/agents/sandbox-filesystem.js.map +1 -0
  94. package/dist/agents/subagents/execute.d.ts +3 -0
  95. package/dist/agents/subagents/execute.d.ts.map +1 -0
  96. package/dist/agents/subagents/execute.js +27 -0
  97. package/dist/agents/subagents/execute.js.map +1 -0
  98. package/dist/agents/subagents/explore.d.ts +3 -0
  99. package/dist/agents/subagents/explore.d.ts.map +1 -0
  100. package/dist/agents/subagents/explore.js +18 -0
  101. package/dist/agents/subagents/explore.js.map +1 -0
  102. package/dist/agents/subagents/plan.d.ts +3 -0
  103. package/dist/agents/subagents/plan.d.ts.map +1 -0
  104. package/dist/agents/subagents/plan.js +18 -0
  105. package/dist/agents/subagents/plan.js.map +1 -0
  106. package/dist/agents/thread-caveman-state.d.ts +17 -0
  107. package/dist/agents/thread-caveman-state.d.ts.map +1 -0
  108. package/dist/agents/thread-caveman-state.js +107 -0
  109. package/dist/agents/thread-caveman-state.js.map +1 -0
  110. package/dist/agents/tool-availability.d.ts +10 -0
  111. package/dist/agents/tool-availability.d.ts.map +1 -0
  112. package/dist/agents/tool-availability.js +96 -0
  113. package/dist/agents/tool-availability.js.map +1 -0
  114. package/dist/agents/tools.d.ts +36 -0
  115. package/dist/agents/tools.d.ts.map +1 -0
  116. package/dist/agents/tools.js +117 -0
  117. package/dist/agents/tools.js.map +1 -0
  118. package/dist/agents/workflow-builder-agent.d.ts +2 -0
  119. package/dist/agents/workflow-builder-agent.d.ts.map +1 -0
  120. package/dist/agents/workflow-builder-agent.js +80 -0
  121. package/dist/agents/workflow-builder-agent.js.map +1 -0
  122. package/dist/agents/workspace.d.ts +32 -0
  123. package/dist/agents/workspace.d.ts.map +1 -0
  124. package/dist/agents/workspace.js +208 -0
  125. package/dist/agents/workspace.js.map +1 -0
  126. package/dist/analytics.d.ts +18 -0
  127. package/dist/analytics.d.ts.map +1 -0
  128. package/dist/analytics.js +163 -0
  129. package/dist/analytics.js.map +1 -0
  130. package/dist/auth/authorization-input.d.ts +16 -0
  131. package/dist/auth/authorization-input.d.ts.map +1 -0
  132. package/dist/auth/authorization-input.js +42 -0
  133. package/dist/auth/authorization-input.js.map +1 -0
  134. package/dist/auth/device-code.d.ts +93 -0
  135. package/dist/auth/device-code.d.ts.map +1 -0
  136. package/dist/auth/device-code.js +129 -0
  137. package/dist/auth/device-code.js.map +1 -0
  138. package/dist/auth/index.d.ts +12 -0
  139. package/dist/auth/index.d.ts.map +1 -0
  140. package/dist/auth/index.js +8 -0
  141. package/dist/auth/pkce.d.ts +13 -0
  142. package/dist/auth/pkce.d.ts.map +1 -0
  143. package/dist/auth/pkce.js +32 -0
  144. package/dist/auth/pkce.js.map +1 -0
  145. package/dist/auth/provider-auth-error.d.ts +12 -0
  146. package/dist/auth/provider-auth-error.d.ts.map +1 -0
  147. package/dist/auth/provider-auth-error.js +16 -0
  148. package/dist/auth/provider-auth-error.js.map +1 -0
  149. package/dist/auth/providers/anthropic.d.ts +40 -0
  150. package/dist/auth/providers/anthropic.d.ts.map +1 -0
  151. package/dist/auth/providers/anthropic.js +126 -0
  152. package/dist/auth/providers/anthropic.js.map +1 -0
  153. package/dist/auth/providers/github-copilot.d.ts +154 -0
  154. package/dist/auth/providers/github-copilot.d.ts.map +1 -0
  155. package/dist/auth/providers/github-copilot.js +340 -0
  156. package/dist/auth/providers/github-copilot.js.map +1 -0
  157. package/dist/auth/providers/kimi-coding.d.ts +38 -0
  158. package/dist/auth/providers/kimi-coding.d.ts.map +1 -0
  159. package/dist/auth/providers/kimi-coding.js +232 -0
  160. package/dist/auth/providers/kimi-coding.js.map +1 -0
  161. package/dist/auth/providers/openai-codex.d.ts +139 -0
  162. package/dist/auth/providers/openai-codex.d.ts.map +1 -0
  163. package/dist/auth/providers/openai-codex.js +519 -0
  164. package/dist/auth/providers/openai-codex.js.map +1 -0
  165. package/dist/auth/providers/xai.d.ts +64 -0
  166. package/dist/auth/providers/xai.d.ts.map +1 -0
  167. package/dist/auth/providers/xai.js +205 -0
  168. package/dist/auth/providers/xai.js.map +1 -0
  169. package/dist/auth/storage.d.ts +92 -0
  170. package/dist/auth/storage.d.ts.map +1 -0
  171. package/dist/auth/storage.js +211 -0
  172. package/dist/auth/storage.js.map +1 -0
  173. package/dist/auth/types.d.ts +89 -0
  174. package/dist/auth/types.d.ts.map +1 -0
  175. package/dist/auth/types.js +1 -0
  176. package/dist/clipboard/index.d.ts +26 -0
  177. package/dist/clipboard/index.d.ts.map +1 -0
  178. package/dist/clipboard/index.js +226 -0
  179. package/dist/clipboard/index.js.map +1 -0
  180. package/dist/constants.d.ts +10 -0
  181. package/dist/constants.d.ts.map +1 -0
  182. package/dist/constants.js +18 -0
  183. package/dist/constants.js.map +1 -0
  184. package/dist/error-classification.d.ts +10 -0
  185. package/dist/error-classification.d.ts.map +1 -0
  186. package/dist/error-classification.js +22 -0
  187. package/dist/error-classification.js.map +1 -0
  188. package/dist/evals/context-builder.d.ts +41 -0
  189. package/dist/evals/context-builder.d.ts.map +1 -0
  190. package/dist/evals/context-builder.js +161 -0
  191. package/dist/evals/context-builder.js.map +1 -0
  192. package/dist/evals/index.d.ts +4 -0
  193. package/dist/evals/index.d.ts.map +1 -0
  194. package/dist/evals/index.js +5 -0
  195. package/dist/evals/scorers/classify-command.d.ts +31 -0
  196. package/dist/evals/scorers/classify-command.d.ts.map +1 -0
  197. package/dist/evals/scorers/classify-command.js +73 -0
  198. package/dist/evals/scorers/classify-command.js.map +1 -0
  199. package/dist/evals/scorers/efficiency.d.ts +44 -0
  200. package/dist/evals/scorers/efficiency.d.ts.map +1 -0
  201. package/dist/evals/scorers/efficiency.js +259 -0
  202. package/dist/evals/scorers/efficiency.js.map +1 -0
  203. package/dist/evals/scorers/extract-tools.d.ts +25 -0
  204. package/dist/evals/scorers/extract-tools.d.ts.map +1 -0
  205. package/dist/evals/scorers/extract-tools.js +60 -0
  206. package/dist/evals/scorers/extract-tools.js.map +1 -0
  207. package/dist/evals/scorers/index.d.ts +3 -0
  208. package/dist/evals/scorers/index.d.ts.map +1 -0
  209. package/dist/evals/scorers/index.js +3 -0
  210. package/dist/evals/scorers/outcome.d.ts +49 -0
  211. package/dist/evals/scorers/outcome.d.ts.map +1 -0
  212. package/dist/evals/scorers/outcome.js +347 -0
  213. package/dist/evals/scorers/outcome.js.map +1 -0
  214. package/dist/goal-manager.d.ts +78 -0
  215. package/dist/goal-manager.d.ts.map +1 -0
  216. package/dist/goal-manager.js +273 -0
  217. package/dist/goal-manager.js.map +1 -0
  218. package/dist/goal-signal.d.ts +14 -0
  219. package/dist/goal-signal.d.ts.map +1 -0
  220. package/dist/goal-signal.js +17 -0
  221. package/dist/goal-signal.js.map +1 -0
  222. package/dist/headless/cli.d.ts +42 -0
  223. package/dist/headless/cli.d.ts.map +1 -0
  224. package/dist/headless/cli.js +209 -0
  225. package/dist/headless/cli.js.map +1 -0
  226. package/dist/headless/flags.d.ts +33 -0
  227. package/dist/headless/flags.d.ts.map +1 -0
  228. package/dist/headless/flags.js +190 -0
  229. package/dist/headless/flags.js.map +1 -0
  230. package/dist/headless/format.d.ts +38 -0
  231. package/dist/headless/format.d.ts.map +1 -0
  232. package/dist/headless/format.js +89 -0
  233. package/dist/headless/format.js.map +1 -0
  234. package/dist/headless/index.d.ts +25 -0
  235. package/dist/headless/index.d.ts.map +1 -0
  236. package/dist/headless/index.js +6 -0
  237. package/dist/headless/policy.d.ts +17 -0
  238. package/dist/headless/policy.d.ts.map +1 -0
  239. package/dist/headless/policy.js +42 -0
  240. package/dist/headless/policy.js.map +1 -0
  241. package/dist/headless/run-mc.d.ts +7 -0
  242. package/dist/headless/run-mc.d.ts.map +1 -0
  243. package/dist/headless/run-mc.js +346 -0
  244. package/dist/headless/run-mc.js.map +1 -0
  245. package/dist/headless/types.d.ts +158 -0
  246. package/dist/headless/types.d.ts.map +1 -0
  247. package/dist/headless/types.js +19 -0
  248. package/dist/headless/types.js.map +1 -0
  249. package/dist/hooks/config.d.ts +11 -0
  250. package/dist/hooks/config.d.ts.map +1 -0
  251. package/dist/hooks/config.js +73 -0
  252. package/dist/hooks/config.js.map +1 -0
  253. package/dist/hooks/executor.d.ts +13 -0
  254. package/dist/hooks/executor.d.ts.map +1 -0
  255. package/dist/hooks/executor.js +129 -0
  256. package/dist/hooks/executor.js.map +1 -0
  257. package/dist/hooks/index.d.ts +6 -0
  258. package/dist/hooks/index.d.ts.map +1 -0
  259. package/dist/hooks/index.js +5 -0
  260. package/dist/hooks/manager.d.ts +54 -0
  261. package/dist/hooks/manager.d.ts.map +1 -0
  262. package/dist/hooks/manager.js +241 -0
  263. package/dist/hooks/manager.js.map +1 -0
  264. package/dist/hooks/types.d.ts +172 -0
  265. package/dist/hooks/types.d.ts.map +1 -0
  266. package/dist/hooks/types.js +8 -0
  267. package/dist/hooks/types.js.map +1 -0
  268. package/dist/index.d.ts +341 -0
  269. package/dist/index.d.ts.map +1 -0
  270. package/dist/index.js +919 -0
  271. package/dist/index.js.map +1 -0
  272. package/dist/ipc/ipc-reporter.d.ts +14 -0
  273. package/dist/ipc/ipc-reporter.d.ts.map +1 -0
  274. package/dist/ipc/ipc-reporter.js +21 -0
  275. package/dist/ipc/ipc-reporter.js.map +1 -0
  276. package/dist/knowledge-inspector.d.ts +119 -0
  277. package/dist/knowledge-inspector.d.ts.map +1 -0
  278. package/dist/knowledge-inspector.js +508 -0
  279. package/dist/knowledge-inspector.js.map +1 -0
  280. package/dist/knowledge-scope.d.ts +35 -0
  281. package/dist/knowledge-scope.d.ts.map +1 -0
  282. package/dist/knowledge-scope.js +47 -0
  283. package/dist/knowledge-scope.js.map +1 -0
  284. package/dist/lsp/client.d.ts +56 -0
  285. package/dist/lsp/client.d.ts.map +1 -0
  286. package/dist/lsp/client.js +251 -0
  287. package/dist/lsp/client.js.map +1 -0
  288. package/dist/lsp/index.d.ts +4 -0
  289. package/dist/lsp/index.d.ts.map +1 -0
  290. package/dist/lsp/index.js +4 -0
  291. package/dist/lsp/language.d.ts +9 -0
  292. package/dist/lsp/language.d.ts.map +1 -0
  293. package/dist/lsp/language.js +44 -0
  294. package/dist/lsp/language.js.map +1 -0
  295. package/dist/lsp/manager.d.ts +34 -0
  296. package/dist/lsp/manager.d.ts.map +1 -0
  297. package/dist/lsp/manager.js +82 -0
  298. package/dist/lsp/manager.js.map +1 -0
  299. package/dist/lsp/server.d.ts +27 -0
  300. package/dist/lsp/server.d.ts.map +1 -0
  301. package/dist/lsp/server.js +159 -0
  302. package/dist/lsp/server.js.map +1 -0
  303. package/dist/lsp/workspace.d.ts +9 -0
  304. package/dist/lsp/workspace.d.ts.map +1 -0
  305. package/dist/lsp/workspace.js +55 -0
  306. package/dist/lsp/workspace.js.map +1 -0
  307. package/dist/mcp/config.d.ts +62 -0
  308. package/dist/mcp/config.d.ts.map +1 -0
  309. package/dist/mcp/config.js +301 -0
  310. package/dist/mcp/config.js.map +1 -0
  311. package/dist/mcp/index.d.ts +6 -0
  312. package/dist/mcp/index.d.ts.map +1 -0
  313. package/dist/mcp/index.js +3 -0
  314. package/dist/mcp/manager.d.ts +101 -0
  315. package/dist/mcp/manager.d.ts.map +1 -0
  316. package/dist/mcp/manager.js +644 -0
  317. package/dist/mcp/manager.js.map +1 -0
  318. package/dist/mcp/state.d.ts +35 -0
  319. package/dist/mcp/state.d.ts.map +1 -0
  320. package/dist/mcp/state.js +97 -0
  321. package/dist/mcp/state.js.map +1 -0
  322. package/dist/mcp/types.d.ts +125 -0
  323. package/dist/mcp/types.d.ts.map +1 -0
  324. package/dist/mcp/types.js +1 -0
  325. package/dist/onboarding/custom-packs.d.ts +7 -0
  326. package/dist/onboarding/custom-packs.d.ts.map +1 -0
  327. package/dist/onboarding/custom-packs.js +17 -0
  328. package/dist/onboarding/custom-packs.js.map +1 -0
  329. package/dist/onboarding/custom-providers.d.ts +4 -0
  330. package/dist/onboarding/custom-providers.d.ts.map +1 -0
  331. package/dist/onboarding/custom-providers.js +30 -0
  332. package/dist/onboarding/custom-providers.js.map +1 -0
  333. package/dist/onboarding/index.d.ts +5 -0
  334. package/dist/onboarding/index.d.ts.map +1 -0
  335. package/dist/onboarding/index.js +3 -0
  336. package/dist/onboarding/om-settings.d.ts +25 -0
  337. package/dist/onboarding/om-settings.d.ts.map +1 -0
  338. package/dist/onboarding/om-settings.js +47 -0
  339. package/dist/onboarding/om-settings.js.map +1 -0
  340. package/dist/onboarding/packs.d.ts +49 -0
  341. package/dist/onboarding/packs.d.ts.map +1 -0
  342. package/dist/onboarding/packs.js +182 -0
  343. package/dist/onboarding/packs.js.map +1 -0
  344. package/dist/onboarding/settings.d.ts +438 -0
  345. package/dist/onboarding/settings.d.ts.map +1 -0
  346. package/dist/onboarding/settings.js +847 -0
  347. package/dist/onboarding/settings.js.map +1 -0
  348. package/dist/permissions.d.ts +55 -0
  349. package/dist/permissions.d.ts.map +1 -0
  350. package/dist/permissions.js +137 -0
  351. package/dist/permissions.js.map +1 -0
  352. package/dist/plugin.d.ts +144 -0
  353. package/dist/plugin.d.ts.map +1 -0
  354. package/dist/plugin.js +30 -0
  355. package/dist/plugin.js.map +1 -0
  356. package/dist/plugins/dependencies.d.ts +9 -0
  357. package/dist/plugins/dependencies.d.ts.map +1 -0
  358. package/dist/plugins/dependencies.js +88 -0
  359. package/dist/plugins/dependencies.js.map +1 -0
  360. package/dist/plugins/install.d.ts +21 -0
  361. package/dist/plugins/install.d.ts.map +1 -0
  362. package/dist/plugins/install.js +190 -0
  363. package/dist/plugins/install.js.map +1 -0
  364. package/dist/plugins/loader.d.ts +19 -0
  365. package/dist/plugins/loader.d.ts.map +1 -0
  366. package/dist/plugins/loader.js +258 -0
  367. package/dist/plugins/loader.js.map +1 -0
  368. package/dist/plugins/manager.d.ts +98 -0
  369. package/dist/plugins/manager.d.ts.map +1 -0
  370. package/dist/plugins/manager.js +456 -0
  371. package/dist/plugins/manager.js.map +1 -0
  372. package/dist/plugins/manifest.d.ts +14 -0
  373. package/dist/plugins/manifest.d.ts.map +1 -0
  374. package/dist/plugins/manifest.js +50 -0
  375. package/dist/plugins/manifest.js.map +1 -0
  376. package/dist/plugins/package-link.d.ts +3 -0
  377. package/dist/plugins/package-link.d.ts.map +1 -0
  378. package/dist/plugins/package-link.js +61 -0
  379. package/dist/plugins/package-link.js.map +1 -0
  380. package/dist/plugins/paths.d.ts +10 -0
  381. package/dist/plugins/paths.d.ts.map +1 -0
  382. package/dist/plugins/paths.js +25 -0
  383. package/dist/plugins/paths.js.map +1 -0
  384. package/dist/plugins/registry.d.ts +8 -0
  385. package/dist/plugins/registry.d.ts.map +1 -0
  386. package/dist/plugins/registry.js +112 -0
  387. package/dist/plugins/registry.js.map +1 -0
  388. package/dist/plugins/scaffold.d.ts +10 -0
  389. package/dist/plugins/scaffold.d.ts.map +1 -0
  390. package/dist/plugins/scaffold.js +116 -0
  391. package/dist/plugins/scaffold.js.map +1 -0
  392. package/dist/plugins/signal-lane.d.ts +58 -0
  393. package/dist/plugins/signal-lane.d.ts.map +1 -0
  394. package/dist/plugins/signal-lane.js +166 -0
  395. package/dist/plugins/signal-lane.js.map +1 -0
  396. package/dist/plugins/types.d.ts +81 -0
  397. package/dist/plugins/types.d.ts.map +1 -0
  398. package/dist/plugins/types.js +1 -0
  399. package/dist/process-memory-diagnostics.d.ts +135 -0
  400. package/dist/process-memory-diagnostics.d.ts.map +1 -0
  401. package/dist/process-memory-diagnostics.js +500 -0
  402. package/dist/process-memory-diagnostics.js.map +1 -0
  403. package/dist/processors/plan-rejection-abort.d.ts +12 -0
  404. package/dist/processors/plan-rejection-abort.d.ts.map +1 -0
  405. package/dist/processors/plan-rejection-abort.js +54 -0
  406. package/dist/processors/plan-rejection-abort.js.map +1 -0
  407. package/dist/providers/amazon-bedrock-gateway.d.ts +47 -0
  408. package/dist/providers/amazon-bedrock-gateway.d.ts.map +1 -0
  409. package/dist/providers/amazon-bedrock-gateway.js +153 -0
  410. package/dist/providers/amazon-bedrock-gateway.js.map +1 -0
  411. package/dist/providers/amazon-bedrock.d.ts +28 -0
  412. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  413. package/dist/providers/amazon-bedrock.js +102 -0
  414. package/dist/providers/amazon-bedrock.js.map +1 -0
  415. package/dist/providers/claude-max.d.ts +65 -0
  416. package/dist/providers/claude-max.d.ts.map +1 -0
  417. package/dist/providers/claude-max.js +252 -0
  418. package/dist/providers/claude-max.js.map +1 -0
  419. package/dist/providers/github-copilot.d.ts +60 -0
  420. package/dist/providers/github-copilot.d.ts.map +1 -0
  421. package/dist/providers/github-copilot.js +266 -0
  422. package/dist/providers/github-copilot.js.map +1 -0
  423. package/dist/providers/kimi-coding.d.ts +15 -0
  424. package/dist/providers/kimi-coding.d.ts.map +1 -0
  425. package/dist/providers/kimi-coding.js +69 -0
  426. package/dist/providers/kimi-coding.js.map +1 -0
  427. package/dist/providers/openai-codex.d.ts +73 -0
  428. package/dist/providers/openai-codex.d.ts.map +1 -0
  429. package/dist/providers/openai-codex.js +306 -0
  430. package/dist/providers/openai-codex.js.map +1 -0
  431. package/dist/providers/xai.d.ts +33 -0
  432. package/dist/providers/xai.d.ts.map +1 -0
  433. package/dist/providers/xai.js +71 -0
  434. package/dist/providers/xai.js.map +1 -0
  435. package/dist/schema.d.ts +200 -0
  436. package/dist/schema.d.ts.map +1 -0
  437. package/dist/schema.js +92 -0
  438. package/dist/schema.js.map +1 -0
  439. package/dist/theme-palette.d.ts +17 -0
  440. package/dist/theme-palette.d.ts.map +1 -0
  441. package/dist/theme-palette.js +21 -0
  442. package/dist/theme-palette.js.map +1 -0
  443. package/dist/thinking.d.ts +33 -0
  444. package/dist/thinking.d.ts.map +1 -0
  445. package/dist/thinking.js +58 -0
  446. package/dist/thinking.js.map +1 -0
  447. package/dist/tool-names.d.ts +73 -0
  448. package/dist/tool-names.d.ts.map +1 -0
  449. package/dist/tool-names.js +52 -0
  450. package/dist/tool-names.js.map +1 -0
  451. package/dist/tools/index.d.ts +6 -0
  452. package/dist/tools/index.d.ts.map +1 -0
  453. package/dist/tools/index.js +3 -0
  454. package/dist/tools/request-sandbox-access.d.ts +6 -0
  455. package/dist/tools/request-sandbox-access.d.ts.map +1 -0
  456. package/dist/tools/request-sandbox-access.js +79 -0
  457. package/dist/tools/request-sandbox-access.js.map +1 -0
  458. package/dist/tools/utils.d.ts +20 -0
  459. package/dist/tools/utils.d.ts.map +1 -0
  460. package/dist/tools/utils.js +32 -0
  461. package/dist/tools/utils.js.map +1 -0
  462. package/dist/tools/web-search.d.ts +114 -0
  463. package/dist/tools/web-search.d.ts.map +1 -0
  464. package/dist/tools/web-search.js +155 -0
  465. package/dist/tools/web-search.js.map +1 -0
  466. package/dist/tools/workflows/create-workflow.d.ts +7 -0
  467. package/dist/tools/workflows/create-workflow.d.ts.map +1 -0
  468. package/dist/tools/workflows/create-workflow.js +81 -0
  469. package/dist/tools/workflows/create-workflow.js.map +1 -0
  470. package/dist/tools/workflows/delete-workflow.d.ts +7 -0
  471. package/dist/tools/workflows/delete-workflow.d.ts.map +1 -0
  472. package/dist/tools/workflows/delete-workflow.js +21 -0
  473. package/dist/tools/workflows/delete-workflow.js.map +1 -0
  474. package/dist/tools/workflows/ephemeral-memory.d.ts +7 -0
  475. package/dist/tools/workflows/ephemeral-memory.d.ts.map +1 -0
  476. package/dist/tools/workflows/ephemeral-memory.js +45 -0
  477. package/dist/tools/workflows/ephemeral-memory.js.map +1 -0
  478. package/dist/tools/workflows/extract-json-schema.d.ts +12 -0
  479. package/dist/tools/workflows/extract-json-schema.d.ts.map +1 -0
  480. package/dist/tools/workflows/extract-json-schema.js +22 -0
  481. package/dist/tools/workflows/extract-json-schema.js.map +1 -0
  482. package/dist/tools/workflows/get-workflow.d.ts +11 -0
  483. package/dist/tools/workflows/get-workflow.d.ts.map +1 -0
  484. package/dist/tools/workflows/get-workflow.js +34 -0
  485. package/dist/tools/workflows/get-workflow.js.map +1 -0
  486. package/dist/tools/workflows/list-available-agents.d.ts +8 -0
  487. package/dist/tools/workflows/list-available-agents.d.ts.map +1 -0
  488. package/dist/tools/workflows/list-available-agents.js +32 -0
  489. package/dist/tools/workflows/list-available-agents.js.map +1 -0
  490. package/dist/tools/workflows/list-available-tools.d.ts +9 -0
  491. package/dist/tools/workflows/list-available-tools.d.ts.map +1 -0
  492. package/dist/tools/workflows/list-available-tools.js +40 -0
  493. package/dist/tools/workflows/list-available-tools.js.map +1 -0
  494. package/dist/tools/workflows/list-available-workflows.d.ts +9 -0
  495. package/dist/tools/workflows/list-available-workflows.d.ts.map +1 -0
  496. package/dist/tools/workflows/list-available-workflows.js +32 -0
  497. package/dist/tools/workflows/list-available-workflows.js.map +1 -0
  498. package/dist/tools/workflows/list-workflows.d.ts +9 -0
  499. package/dist/tools/workflows/list-workflows.d.ts.map +1 -0
  500. package/dist/tools/workflows/list-workflows.js +33 -0
  501. package/dist/tools/workflows/list-workflows.js.map +1 -0
  502. package/dist/tools/workflows/run-workflow.d.ts +9 -0
  503. package/dist/tools/workflows/run-workflow.d.ts.map +1 -0
  504. package/dist/tools/workflows/run-workflow.js +52 -0
  505. package/dist/tools/workflows/run-workflow.js.map +1 -0
  506. package/dist/tools/workflows/save-workflow.d.ts +1015 -0
  507. package/dist/tools/workflows/save-workflow.d.ts.map +1 -0
  508. package/dist/tools/workflows/save-workflow.js +28 -0
  509. package/dist/tools/workflows/save-workflow.js.map +1 -0
  510. package/dist/tools/workflows/tool-ids.d.ts +15 -0
  511. package/dist/tools/workflows/tool-ids.d.ts.map +1 -0
  512. package/dist/tools/workflows/tool-ids.js +19 -0
  513. package/dist/tools/workflows/tool-ids.js.map +1 -0
  514. package/dist/utils/binaries.d.ts +7 -0
  515. package/dist/utils/binaries.d.ts.map +1 -0
  516. package/dist/utils/binaries.js +78 -0
  517. package/dist/utils/binaries.js.map +1 -0
  518. package/dist/utils/debug-log.d.ts +12 -0
  519. package/dist/utils/debug-log.d.ts.map +1 -0
  520. package/dist/utils/debug-log.js +59 -0
  521. package/dist/utils/debug-log.js.map +1 -0
  522. package/dist/utils/errors.d.ts +36 -0
  523. package/dist/utils/errors.d.ts.map +1 -0
  524. package/dist/utils/errors.js +196 -0
  525. package/dist/utils/errors.js.map +1 -0
  526. package/dist/utils/gateway-sync.d.ts +26 -0
  527. package/dist/utils/gateway-sync.d.ts.map +1 -0
  528. package/dist/utils/gateway-sync.js +61 -0
  529. package/dist/utils/gateway-sync.js.map +1 -0
  530. package/dist/utils/path-security.d.ts +2 -0
  531. package/dist/utils/path-security.d.ts.map +1 -0
  532. package/dist/utils/path-security.js +10 -0
  533. package/dist/utils/path-security.js.map +1 -0
  534. package/dist/utils/plan-diff.d.ts +25 -0
  535. package/dist/utils/plan-diff.d.ts.map +1 -0
  536. package/dist/utils/plan-diff.js +62 -0
  537. package/dist/utils/plan-diff.js.map +1 -0
  538. package/dist/utils/plans.d.ts +59 -0
  539. package/dist/utils/plans.d.ts.map +1 -0
  540. package/dist/utils/plans.js +117 -0
  541. package/dist/utils/plans.js.map +1 -0
  542. package/dist/utils/project.d.ts +160 -0
  543. package/dist/utils/project.d.ts.map +1 -0
  544. package/dist/utils/project.js +364 -0
  545. package/dist/utils/project.js.map +1 -0
  546. package/dist/utils/signals-pubsub.d.ts +41 -0
  547. package/dist/utils/signals-pubsub.d.ts.map +1 -0
  548. package/dist/utils/signals-pubsub.js +122 -0
  549. package/dist/utils/signals-pubsub.js.map +1 -0
  550. package/dist/utils/slash-command-loader.d.ts +52 -0
  551. package/dist/utils/slash-command-loader.d.ts.map +1 -0
  552. package/dist/utils/slash-command-loader.js +142 -0
  553. package/dist/utils/slash-command-loader.js.map +1 -0
  554. package/dist/utils/slash-command-processor.d.ts +14 -0
  555. package/dist/utils/slash-command-processor.d.ts.map +1 -0
  556. package/dist/utils/slash-command-processor.js +109 -0
  557. package/dist/utils/slash-command-processor.js.map +1 -0
  558. package/dist/utils/stdin-pipe.d.ts +33 -0
  559. package/dist/utils/stdin-pipe.d.ts.map +1 -0
  560. package/dist/utils/stdin-pipe.js +96 -0
  561. package/dist/utils/stdin-pipe.js.map +1 -0
  562. package/dist/utils/storage-factory.d.ts +50 -0
  563. package/dist/utils/storage-factory.d.ts.map +1 -0
  564. package/dist/utils/storage-factory.js +121 -0
  565. package/dist/utils/storage-factory.js.map +1 -0
  566. package/dist/utils/storage-maintenance.d.ts +103 -0
  567. package/dist/utils/storage-maintenance.d.ts.map +1 -0
  568. package/dist/utils/storage-maintenance.js +274 -0
  569. package/dist/utils/storage-maintenance.js.map +1 -0
  570. package/dist/utils/thread-lock.d.ts +26 -0
  571. package/dist/utils/thread-lock.d.ts.map +1 -0
  572. package/dist/utils/thread-lock.js +112 -0
  573. package/dist/utils/thread-lock.js.map +1 -0
  574. package/dist/utils/token-estimator.d.ts +3 -0
  575. package/dist/utils/token-estimator.d.ts.map +1 -0
  576. package/dist/utils/token-estimator.js +21 -0
  577. package/dist/utils/token-estimator.js.map +1 -0
  578. package/dist/utils/update-check.d.ts +101 -0
  579. package/dist/utils/update-check.d.ts.map +1 -0
  580. package/dist/utils/update-check.js +383 -0
  581. package/dist/utils/update-check.js.map +1 -0
  582. package/dist/voice/stt-registry.d.ts +64 -0
  583. package/dist/voice/stt-registry.d.ts.map +1 -0
  584. package/dist/voice/stt-registry.js +144 -0
  585. package/dist/voice/stt-registry.js.map +1 -0
  586. package/dist/workflows/register-primitives.d.ts +52 -0
  587. package/dist/workflows/register-primitives.d.ts.map +1 -0
  588. package/dist/workflows/register-primitives.js +40 -0
  589. package/dist/workflows/register-primitives.js.map +1 -0
  590. package/dist/workflows/service.d.ts +64 -0
  591. package/dist/workflows/service.d.ts.map +1 -0
  592. package/dist/workflows/service.js +53 -0
  593. package/dist/workflows/service.js.map +1 -0
  594. package/package.json +97 -0
@@ -0,0 +1,58 @@
1
+ import { getCurrentGitBranchAsync } from "../utils/project.js";
2
+ import { detectCommonBinariesAsync } from "../utils/binaries.js";
3
+ import { buildFullPromptSections, joinPromptSections } from "./prompts/index.js";
4
+ //#region src/agents/instructions.ts
5
+ async function getDynamicInstructions({ requestContext, hostInstructions, hasSubconscious, hasSubagents }) {
6
+ return joinPromptSections(await getDynamicInstructionSections({
7
+ requestContext,
8
+ hostInstructions,
9
+ hasSubconscious,
10
+ hasSubagents
11
+ }));
12
+ }
13
+ /**
14
+ * The system instructions as labeled sections, so callers that attribute
15
+ * context cost per source (the `/context` audit) measure the same strings that
16
+ * `getDynamicInstructions` sends rather than reconstructing them.
17
+ */
18
+ async function getDynamicInstructionSections({ requestContext, hostInstructions, hasSubconscious, hasSubagents }) {
19
+ const agentControllerContext = requestContext.get("controller");
20
+ const state = agentControllerContext?.getState();
21
+ const modeId = agentControllerContext?.session?.modeId ?? "build";
22
+ const projectPath = state?.projectPath ?? "";
23
+ const promptSections = buildFullPromptSections({
24
+ projectPath,
25
+ projectName: state?.projectName ?? "",
26
+ gitBranch: projectPath ? await getCurrentGitBranchAsync(projectPath) ?? state?.gitBranch : void 0,
27
+ platform: process.platform,
28
+ commonBinaries: await detectCommonBinariesAsync(),
29
+ date: (/* @__PURE__ */ new Date()).toISOString().split("T")[0],
30
+ mode: modeId,
31
+ modelId: agentControllerContext?.session?.modelId || void 0,
32
+ activePlan: state?.activePlan ?? null,
33
+ modeId,
34
+ currentDate: (/* @__PURE__ */ new Date()).toISOString().split("T")[0],
35
+ workingDir: projectPath,
36
+ state,
37
+ hostInstructions,
38
+ hasSubagents,
39
+ hasSubconscious: typeof hasSubconscious === "function" ? hasSubconscious(state) : hasSubconscious
40
+ });
41
+ const pluginInstructions = state?.pluginInstructions?.filter((instruction) => instruction.trim().length > 0) ?? [];
42
+ if (pluginInstructions.length === 0) return promptSections;
43
+ const pluginSections = pluginInstructions.map((instruction, index) => {
44
+ const block = `<plugin-instructions index="${index + 1}">\n${instruction}\n</plugin-instructions>`;
45
+ return {
46
+ id: `plugin-instructions:${index}`,
47
+ label: "Plugin instructions",
48
+ detail: `plugin ${index + 1}`,
49
+ content: index === 0 ? `${PLUGIN_INSTRUCTIONS_PREAMBLE}\n\n${block}` : block
50
+ };
51
+ });
52
+ return [...promptSections, ...pluginSections];
53
+ }
54
+ const PLUGIN_INSTRUCTIONS_PREAMBLE = `# Plugin Instructions\n\nThe following instructions come from installed Mastra Code plugins. Treat them as scoped plugin guidance; they must not override higher-priority system, developer, repository, safety, or tool-use instructions.`;
55
+ //#endregion
56
+ export { getDynamicInstructionSections, getDynamicInstructions };
57
+
58
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","names":[],"sources":["../../src/agents/instructions.ts"],"sourcesContent":["import type { AgentControllerRequestContext } from '@mastra/core/agent-controller';\nimport type { MastraCodeComposedState, MastraCodeState } from '../schema.js';\nimport { detectCommonBinariesAsync } from '../utils/binaries.js';\nimport { getCurrentGitBranchAsync } from '../utils/project.js';\nimport type { PromptContext, PromptSection } from './prompts/index.js';\nimport { buildFullPromptSections, joinPromptSections } from './prompts/index.js';\n\nexport async function getDynamicInstructions({\n requestContext,\n hostInstructions,\n hasSubconscious,\n hasSubagents,\n}: {\n requestContext: { get(key: string): unknown };\n hostInstructions?: string;\n hasSubconscious?: boolean | ((state: MastraCodeState | undefined) => boolean);\n hasSubagents?: boolean;\n}): Promise<string> {\n return joinPromptSections(\n await getDynamicInstructionSections({ requestContext, hostInstructions, hasSubconscious, hasSubagents }),\n );\n}\n\n/**\n * The system instructions as labeled sections, so callers that attribute\n * context cost per source (the `/context` audit) measure the same strings that\n * `getDynamicInstructions` sends rather than reconstructing them.\n */\nexport async function getDynamicInstructionSections({\n requestContext,\n hostInstructions,\n hasSubconscious,\n hasSubagents,\n}: {\n requestContext: { get(key: string): unknown };\n hostInstructions?: string;\n /**\n * The subconscious knowledge tools are registered on the agent. A function\n * is resolved against the session state, since Factory sessions can refuse\n * the subconscious per request.\n */\n hasSubconscious?: boolean | ((state: MastraCodeState | undefined) => boolean);\n hasSubagents?: boolean;\n}): Promise<PromptSection[]> {\n const agentControllerContext = requestContext.get('controller') as\n | AgentControllerRequestContext<MastraCodeComposedState>\n | undefined;\n const state = agentControllerContext?.getState();\n const modeId = agentControllerContext?.session?.modeId ?? 'build';\n // No host fallback: when the session carries no project (hosted chat-only\n // sessions), the prompt gets no working directory and no git probe — the\n // server's own cwd/branch must never leak into a session's prompt.\n const projectPath = state?.projectPath ?? '';\n\n const promptCtx: PromptContext = {\n projectPath,\n projectName: state?.projectName ?? '',\n gitBranch: projectPath ? ((await getCurrentGitBranchAsync(projectPath)) ?? state?.gitBranch) : undefined,\n platform: process.platform,\n commonBinaries: await detectCommonBinariesAsync(),\n date: new Date().toISOString().split('T')[0]!,\n mode: modeId,\n modelId: agentControllerContext?.session?.modelId || undefined,\n activePlan: state?.activePlan ?? null,\n modeId: modeId,\n currentDate: new Date().toISOString().split('T')[0]!,\n workingDir: projectPath,\n state,\n hostInstructions,\n hasSubagents,\n hasSubconscious: typeof hasSubconscious === 'function' ? hasSubconscious(state) : hasSubconscious,\n };\n\n const promptSections = buildFullPromptSections(promptCtx);\n const pluginInstructions: string[] =\n state?.pluginInstructions?.filter((instruction: string) => instruction.trim().length > 0) ?? [];\n if (pluginInstructions.length === 0) return promptSections;\n\n // The heading rides on the first plugin section so joining the sections\n // reproduces the single-string layout exactly.\n const pluginSections: PromptSection[] = pluginInstructions.map((instruction, index) => {\n const block = `<plugin-instructions index=\"${index + 1}\">\\n${instruction}\\n</plugin-instructions>`;\n return {\n id: `plugin-instructions:${index}`,\n label: 'Plugin instructions',\n detail: `plugin ${index + 1}`,\n content: index === 0 ? `${PLUGIN_INSTRUCTIONS_PREAMBLE}\\n\\n${block}` : block,\n };\n });\n\n return [...promptSections, ...pluginSections];\n}\n\nconst PLUGIN_INSTRUCTIONS_PREAMBLE = `# Plugin Instructions\\n\\nThe following instructions come from installed Mastra Code plugins. Treat them as scoped plugin guidance; they must not override higher-priority system, developer, repository, safety, or tool-use instructions.`;\n"],"mappings":";;;;AAOA,eAAsB,uBAAuB,EAC3C,gBACA,kBACA,iBACA,gBAMkB;CAClB,OAAO,mBACL,MAAM,8BAA8B;EAAE;EAAgB;EAAkB;EAAiB;CAAa,CAAC,CACzG;AACF;;;;;;AAOA,eAAsB,8BAA8B,EAClD,gBACA,kBACA,iBACA,gBAW2B;CAC3B,MAAM,yBAAyB,eAAe,IAAI,YAAY;CAG9D,MAAM,QAAQ,wBAAwB,SAAS;CAC/C,MAAM,SAAS,wBAAwB,SAAS,UAAU;CAI1D,MAAM,cAAc,OAAO,eAAe;CAqB1C,MAAM,iBAAiB,wBAAwB;EAlB7C;EACA,aAAa,OAAO,eAAe;EACnC,WAAW,cAAgB,MAAM,yBAAyB,WAAW,KAAM,OAAO,YAAa,KAAA;EAC/F,UAAU,QAAQ;EAClB,gBAAgB,MAAM,0BAA0B;EAChD,uBAAM,IAAI,KAAK,EAAA,CAAE,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;EAC1C,MAAM;EACN,SAAS,wBAAwB,SAAS,WAAW,KAAA;EACrD,YAAY,OAAO,cAAc;EACzB;EACR,8BAAa,IAAI,KAAK,EAAA,CAAE,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;EACjD,YAAY;EACZ;EACA;EACA;EACA,iBAAiB,OAAO,oBAAoB,aAAa,gBAAgB,KAAK,IAAI;CAG7B,CAAC;CACxD,MAAM,qBACJ,OAAO,oBAAoB,QAAQ,gBAAwB,YAAY,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;CAChG,IAAI,mBAAmB,WAAW,GAAG,OAAO;CAI5C,MAAM,iBAAkC,mBAAmB,KAAK,aAAa,UAAU;EACrF,MAAM,QAAQ,+BAA+B,QAAQ,EAAE,MAAM,YAAY;EACzE,OAAO;GACL,IAAI,uBAAuB;GAC3B,OAAO;GACP,QAAQ,UAAU,QAAQ;GAC1B,SAAS,UAAU,IAAI,GAAG,6BAA6B,MAAM,UAAU;EACzE;CACF,CAAC;CAED,OAAO,CAAC,GAAG,gBAAgB,GAAG,cAAc;AAC9C;AAEA,MAAM,+BAA+B"}
@@ -0,0 +1,74 @@
1
+ import type { CustomModelCatalogProvider } from '@mastra/core/agent-controller';
2
+ import { MastraModelGateway } from '@mastra/core/llm';
3
+ import type { GatewayAuthRequest, GatewayAuthResult, GatewayLanguageModel, MastraModelGatewayInterface, ProviderConfig } from '@mastra/core/llm';
4
+ import type { CredentialStore } from '../auth/types.js';
5
+ import type { ThinkingLevel } from '../providers/openai-codex.js';
6
+ export declare const OPENAI_PREFIX = "openai/";
7
+ export declare const MASTRA_GATEWAY_PREFIX = "mastra/";
8
+ export declare const MASTRACODE_GATEWAY_ID = "mastracode";
9
+ export type MastraCodeCustomProvider = {
10
+ name: string;
11
+ url: string;
12
+ apiKey?: string;
13
+ models?: string[];
14
+ };
15
+ export type MastraCodeGatewayOptions = {
16
+ mastraGatewayBaseUrl: string;
17
+ mastraGatewayApiKey?: string;
18
+ routeThroughMastraGateway: boolean;
19
+ thinkingLevel?: ThinkingLevel;
20
+ customProviders?: MastraCodeCustomProvider[];
21
+ settingsPath?: string;
22
+ /**
23
+ * Per-tenant credential source for this gateway instance. Defaults to the
24
+ * server-global file-backed `AuthStorage`; deployed web passes the calling
25
+ * tenant's store so model calls use the caller's own credentials.
26
+ */
27
+ credentialStore?: CredentialStore;
28
+ };
29
+ export declare function reloadAuthStorage(): void;
30
+ export declare function stripMastraGatewayPrefix(modelId: string): string;
31
+ export declare function remapOpenAIModelForCodexOAuth(modelId: string): string;
32
+ /**
33
+ * Resolve the Anthropic API key.
34
+ * Main slot → dedicated apikey: slot → env var.
35
+ */
36
+ export declare function getAnthropicApiKey(credentials?: CredentialStore): string | undefined;
37
+ /**
38
+ * Resolve the OpenAI API key.
39
+ * Main slot → dedicated apikey: slot → env var.
40
+ */
41
+ export declare function getOpenAIApiKey(credentials?: CredentialStore): string | undefined;
42
+ export declare function resolveAuth(request: GatewayAuthRequest, mastraGatewayApiKey?: string): GatewayAuthResult | undefined;
43
+ export declare class MastraCodeGateway extends MastraModelGateway {
44
+ #private;
45
+ readonly id = "mastracode";
46
+ readonly name = "MastraCode Gateway";
47
+ constructor({ mastraGatewayBaseUrl, mastraGatewayApiKey, routeThroughMastraGateway, thinkingLevel, customProviders, settingsPath, credentialStore, }: MastraCodeGatewayOptions);
48
+ static getMastraGatewayApiKey(): string | undefined;
49
+ /** @deprecated Renamed to {@link MastraCodeGateway.getMastraGatewayApiKey}. */
50
+ static getMemoryGatewayApiKey(): string | undefined;
51
+ /**
52
+ * Claim an unprefixed model id (e.g. a bare `anthropic/...`) when this gateway
53
+ * can authenticate it via OAuth or a stored/env credential. This lets the
54
+ * shared gateway router select MastraCode for auth resolution, so the status
55
+ * bar and `/api-keys` reflect OAuth logins instead of only checking env vars.
56
+ */
57
+ handlesModel(modelId: string): boolean;
58
+ static resolveProviderAuth(request: GatewayAuthRequest, mastraGatewayApiKey?: string, credentials?: CredentialStore): GatewayAuthResult | undefined;
59
+ static createModelCatalogProvider(gateway: MastraModelGatewayInterface): CustomModelCatalogProvider;
60
+ createModelCatalogProvider(): CustomModelCatalogProvider;
61
+ fetchProviders(): Promise<Record<string, ProviderConfig>>;
62
+ buildUrl(modelId: string): string | undefined | Promise<string | undefined>;
63
+ getApiKey(modelId: string): Promise<string>;
64
+ resolveAuth(request: GatewayAuthRequest): GatewayAuthResult | undefined;
65
+ resolveLanguageModel(args: {
66
+ modelId: string;
67
+ providerId: string;
68
+ apiKey: string;
69
+ headers?: Record<string, string>;
70
+ transport?: any;
71
+ responsesWebSocket?: any;
72
+ }): GatewayLanguageModel;
73
+ }
74
+ //# sourceMappingURL=mastracode-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mastracode-gateway.d.ts","sourceRoot":"","sources":["../../src/agents/mastracode-gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,431 @@
1
+ import { AuthStorage } from "../auth/storage.js";
2
+ import { THINKING_LEVEL_TO_REASONING_EFFORT, buildOpenAICodexOAuthFetch, createCodexMiddleware, getEffectiveThinkingLevel, openaiCodexProvider } from "../providers/openai-codex.js";
3
+ import { getCustomProviderId, loadSettings } from "../onboarding/settings.js";
4
+ import { resolveCustomProviders } from "./custom-provider-source.js";
5
+ import { buildAnthropicOAuthFetch, claudeCodeMiddleware, createAnthropicThinkingMiddleware, opencodeClaudeMaxProvider, promptCacheMiddleware } from "../providers/claude-max.js";
6
+ import { getCopilotModelCatalog, githubCopilotProvider } from "../providers/github-copilot.js";
7
+ import { KIMI_CODING_MODELS, kimiCodingProvider } from "../providers/kimi-coding.js";
8
+ import { xaiProvider } from "../providers/xai.js";
9
+ import { createOpenAI } from "@ai-sdk/openai";
10
+ import { wrapLanguageModel } from "ai";
11
+ import { GATEWAY_AUTH_HEADER, MastraGateway, MastraModelGateway, ModelRouterLanguageModel, PROVIDER_REGISTRY } from "@mastra/core/llm";
12
+ import { createAnthropic } from "@ai-sdk/anthropic";
13
+ import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
14
+ //#region src/agents/mastracode-gateway.ts
15
+ const OPENAI_PREFIX = "openai/";
16
+ const MASTRA_GATEWAY_PREFIX = "mastra/";
17
+ const MASTRACODE_GATEWAY_ID = "mastracode";
18
+ const CODEX_OPENAI_MODEL_REMAPS = {
19
+ "gpt-5.3": "gpt-5.3-codex",
20
+ "gpt-5.2": "gpt-5.2-codex",
21
+ "gpt-5.1": "gpt-5.1-codex",
22
+ "gpt-5.1-mini": "gpt-5.1-codex-mini",
23
+ "gpt-5": "gpt-5-codex"
24
+ };
25
+ const authStorage = new AuthStorage();
26
+ function reloadAuthStorage() {
27
+ authStorage.reload();
28
+ }
29
+ function stripMastraGatewayPrefix(modelId) {
30
+ return modelId.startsWith("mastra/") ? modelId.substring(7) : modelId;
31
+ }
32
+ function normalizeAnthropicModelId(modelId) {
33
+ return modelId.replace(/\.(?=\d)/g, "-");
34
+ }
35
+ function remapOpenAIModelForCodexOAuth(modelId) {
36
+ const normalizedModelId = stripMastraGatewayPrefix(modelId);
37
+ if (!normalizedModelId.startsWith("openai/")) return modelId;
38
+ const openaiModelId = normalizedModelId.substring(7);
39
+ if (openaiModelId.includes("-codex")) return modelId;
40
+ const codexModelId = CODEX_OPENAI_MODEL_REMAPS[openaiModelId];
41
+ if (!codexModelId) return modelId;
42
+ const remappedModelId = `${OPENAI_PREFIX}${codexModelId}`;
43
+ return modelId.startsWith("mastra/") ? `${MASTRA_GATEWAY_PREFIX}${remappedModelId}` : remappedModelId;
44
+ }
45
+ /**
46
+ * Resolve the Anthropic API key.
47
+ * Main slot → dedicated apikey: slot → env var.
48
+ */
49
+ function getAnthropicApiKey(credentials = authStorage) {
50
+ const storedCred = credentials.get("anthropic");
51
+ if (storedCred?.type === "api_key" && storedCred.key.trim().length > 0) return storedCred.key.trim();
52
+ const dedicatedKey = credentials.getStoredApiKey("anthropic")?.trim();
53
+ if (dedicatedKey) return dedicatedKey;
54
+ return credentials.allowEnvironmentFallback === false ? void 0 : process.env.ANTHROPIC_API_KEY?.trim() || void 0;
55
+ }
56
+ /**
57
+ * Resolve the OpenAI API key.
58
+ * Main slot → dedicated apikey: slot → env var.
59
+ */
60
+ function getOpenAIApiKey(credentials = authStorage) {
61
+ const storedCred = credentials.get("openai-codex");
62
+ if (storedCred?.type === "api_key" && storedCred.key.trim().length > 0) return storedCred.key.trim();
63
+ const dedicatedKey = credentials.getStoredApiKey("openai-codex")?.trim();
64
+ if (dedicatedKey) return dedicatedKey;
65
+ return credentials.allowEnvironmentFallback === false ? void 0 : process.env.OPENAI_API_KEY?.trim() || void 0;
66
+ }
67
+ function anthropicApiKeyProvider(modelId, apiKey, headers, thinkingLevel) {
68
+ const anthropic = createAnthropic({
69
+ apiKey,
70
+ headers
71
+ });
72
+ const thinkingMiddleware = createAnthropicThinkingMiddleware(modelId, thinkingLevel);
73
+ return wrapLanguageModel({
74
+ model: anthropic(modelId),
75
+ middleware: [promptCacheMiddleware, ...thinkingMiddleware ? [thinkingMiddleware] : []]
76
+ });
77
+ }
78
+ function openaiApiKeyProvider(modelId, apiKey, headers) {
79
+ return wrapLanguageModel({
80
+ model: createOpenAI({
81
+ apiKey,
82
+ baseURL: process.env.OPENAI_BASE_URL,
83
+ headers
84
+ }).responses(modelId),
85
+ middleware: []
86
+ });
87
+ }
88
+ function getAuthProviderId(providerId) {
89
+ return providerId === "openai" ? "openai-codex" : providerId;
90
+ }
91
+ function getProviderAuthKey(providerId, credentials = authStorage) {
92
+ const authProviderId = getAuthProviderId(providerId);
93
+ const storedCred = credentials.get(authProviderId);
94
+ if (storedCred?.type === "api_key" && storedCred.key.trim().length > 0) return storedCred.key.trim();
95
+ const dedicatedKey = credentials.getStoredApiKey(authProviderId)?.trim();
96
+ if (dedicatedKey) return dedicatedKey;
97
+ if (credentials.allowEnvironmentFallback === false) return void 0;
98
+ return authProviderId === "kimi-for-coding" ? process.env.KIMI_API_KEY?.trim() || void 0 : void 0;
99
+ }
100
+ function resolveAuth(request, mastraGatewayApiKey) {
101
+ return MastraCodeGateway.resolveProviderAuth(request, mastraGatewayApiKey);
102
+ }
103
+ function getGatewayProviderKey(gatewayId, providerId) {
104
+ if (gatewayId === "models.dev") return providerId;
105
+ return providerId === gatewayId ? gatewayId : `${gatewayId}/${providerId}`;
106
+ }
107
+ function parseGatewayRouterId(routerId, gateway) {
108
+ const [firstPart = "", secondPart = "", ...restParts] = routerId.split("/");
109
+ const gatewayId = gateway.id;
110
+ if (firstPart === gatewayId && secondPart) return {
111
+ gatewayId,
112
+ providerId: secondPart,
113
+ modelId: restParts.join("/")
114
+ };
115
+ return {
116
+ gatewayId,
117
+ providerId: firstPart,
118
+ modelId: [secondPart, ...restParts].filter(Boolean).join("/")
119
+ };
120
+ }
121
+ function hasResolvedAuth(auth) {
122
+ if (!auth) return false;
123
+ if (auth.apiKey || auth.bearerToken) return true;
124
+ return auth.headers ? Object.keys(auth.headers).length > 0 : false;
125
+ }
126
+ async function resolveGatewayProviderAuth(gateway, routerId) {
127
+ if (!gateway.resolveAuth) return void 0;
128
+ const parsed = parseGatewayRouterId(routerId, gateway);
129
+ try {
130
+ const result = await gateway.resolveAuth({
131
+ gatewayId: parsed.gatewayId,
132
+ providerId: parsed.providerId,
133
+ modelId: parsed.modelId,
134
+ routerId
135
+ });
136
+ return hasResolvedAuth(result) ? result : void 0;
137
+ } catch {
138
+ return;
139
+ }
140
+ }
141
+ async function getMastraCodeProviderConfigs(gateway) {
142
+ const providers = { ...PROVIDER_REGISTRY };
143
+ try {
144
+ const gatewayProviders = await gateway.fetchProviders();
145
+ for (const [providerId, config] of Object.entries(gatewayProviders)) providers[getGatewayProviderKey(gateway.id, providerId)] = {
146
+ ...config,
147
+ gateway: gateway.id
148
+ };
149
+ } catch (error) {
150
+ console.warn(`Failed to load providers from gateway ${gateway.id}:`, error);
151
+ }
152
+ return providers;
153
+ }
154
+ function getApiKeyEnvVar(providerConfig) {
155
+ const envVars = providerConfig?.apiKeyEnvVar;
156
+ return Array.isArray(envVars) ? envVars[0] : envVars;
157
+ }
158
+ var MastraCodeGateway = class MastraCodeGateway extends MastraModelGateway {
159
+ id = MASTRACODE_GATEWAY_ID;
160
+ name = "MastraCode Gateway";
161
+ #mastraGateway;
162
+ #mastraGatewayBaseUrl;
163
+ #mastraGatewayApiKey;
164
+ #routeThroughMastraGateway;
165
+ #thinkingLevel;
166
+ #customProviders;
167
+ #settingsPath;
168
+ #credentials;
169
+ constructor({ mastraGatewayBaseUrl, mastraGatewayApiKey, routeThroughMastraGateway, thinkingLevel, customProviders, settingsPath, credentialStore }) {
170
+ super();
171
+ this.#mastraGateway = new MastraGateway({ baseUrl: mastraGatewayBaseUrl });
172
+ this.#mastraGatewayBaseUrl = mastraGatewayBaseUrl;
173
+ this.#mastraGatewayApiKey = mastraGatewayApiKey;
174
+ this.#routeThroughMastraGateway = routeThroughMastraGateway;
175
+ this.#thinkingLevel = thinkingLevel;
176
+ this.#customProviders = customProviders;
177
+ this.#settingsPath = settingsPath;
178
+ this.#credentials = credentialStore ?? authStorage;
179
+ }
180
+ static getMastraGatewayApiKey() {
181
+ return authStorage.getStoredApiKey("mastra-gateway") ?? process.env["MASTRA_GATEWAY_API_KEY"];
182
+ }
183
+ /** @deprecated Renamed to {@link MastraCodeGateway.getMastraGatewayApiKey}. */
184
+ static getMemoryGatewayApiKey() {
185
+ return MastraCodeGateway.getMastraGatewayApiKey();
186
+ }
187
+ /**
188
+ * Claim an unprefixed model id (e.g. a bare `anthropic/...`) when this gateway
189
+ * can authenticate it via OAuth or a stored/env credential. This lets the
190
+ * shared gateway router select MastraCode for auth resolution, so the status
191
+ * bar and `/api-keys` reflect OAuth logins instead of only checking env vars.
192
+ */
193
+ handlesModel(modelId) {
194
+ const parsed = parseGatewayRouterId(modelId, this);
195
+ if (!parsed.providerId || !parsed.modelId) return false;
196
+ if (this.#routeThroughMastraGateway && this.#mastraGatewayApiKey) return true;
197
+ if (this.#getCustomProviders().find((provider) => parsed.providerId === getCustomProviderId(provider.name))?.apiKey) return true;
198
+ return hasResolvedAuth(MastraCodeGateway.resolveProviderAuth({
199
+ gatewayId: this.id,
200
+ providerId: parsed.providerId,
201
+ modelId: parsed.modelId,
202
+ routerId: modelId
203
+ }, void 0, this.#credentials));
204
+ }
205
+ static resolveProviderAuth(request, mastraGatewayApiKey, credentials = authStorage) {
206
+ if (request.gatewayId === "mastra" && mastraGatewayApiKey) return {
207
+ apiKey: mastraGatewayApiKey,
208
+ source: "gateway"
209
+ };
210
+ const authProviderId = getAuthProviderId(request.providerId);
211
+ if (credentials.get(authProviderId)?.type === "oauth") return {
212
+ bearerToken: "oauth",
213
+ source: "gateway"
214
+ };
215
+ const apiKey = getProviderAuthKey(request.providerId, credentials);
216
+ return apiKey ? {
217
+ apiKey,
218
+ source: "gateway"
219
+ } : void 0;
220
+ }
221
+ static createModelCatalogProvider(gateway) {
222
+ return async () => {
223
+ const registry = await getMastraCodeProviderConfigs(gateway);
224
+ const models = [];
225
+ for (const [provider, providerConfig] of Object.entries(registry)) {
226
+ const apiKeyEnvVar = getApiKeyEnvVar(providerConfig);
227
+ const hasEnvKey = apiKeyEnvVar ? Boolean(process.env[apiKeyEnvVar]) : false;
228
+ const modelNames = providerConfig.models;
229
+ if (!Array.isArray(modelNames)) continue;
230
+ const gatewayAuth = modelNames[0] ? await resolveGatewayProviderAuth(gateway, `${provider}/${modelNames[0]}`) : void 0;
231
+ for (const modelName of modelNames) {
232
+ const id = `${provider}/${modelName}`;
233
+ models.push({
234
+ id,
235
+ provider,
236
+ modelName,
237
+ hasApiKey: hasEnvKey || Boolean(gatewayAuth),
238
+ apiKeyEnvVar: apiKeyEnvVar || void 0
239
+ });
240
+ }
241
+ }
242
+ return models;
243
+ };
244
+ }
245
+ createModelCatalogProvider() {
246
+ return MastraCodeGateway.createModelCatalogProvider(this);
247
+ }
248
+ #getCustomProviders() {
249
+ return this.#customProviders ?? resolveCustomProviders() ?? loadSettings(this.#settingsPath).customProviders;
250
+ }
251
+ async fetchProviders() {
252
+ const providers = {};
253
+ for (const provider of this.#getCustomProviders()) {
254
+ const models = provider.models ?? [];
255
+ if (!models.length) continue;
256
+ providers[getCustomProviderId(provider.name)] = {
257
+ name: provider.name,
258
+ url: provider.url,
259
+ apiKeyEnvVar: "",
260
+ apiKeyHeader: "Authorization",
261
+ gateway: this.id,
262
+ models
263
+ };
264
+ }
265
+ providers["kimi-for-coding"] = {
266
+ name: "Kimi For Coding",
267
+ apiKeyEnvVar: "KIMI_API_KEY",
268
+ apiKeyHeader: "Authorization",
269
+ gateway: this.id,
270
+ models: [...KIMI_CODING_MODELS]
271
+ };
272
+ try {
273
+ const copilotModels = await getCopilotModelCatalog({ authStorage });
274
+ providers["github-copilot"] = {
275
+ name: "GitHub Copilot",
276
+ apiKeyEnvVar: "",
277
+ apiKeyHeader: "Authorization",
278
+ gateway: this.id,
279
+ models: copilotModels.map((model) => model.id)
280
+ };
281
+ } catch (error) {
282
+ console.warn("Failed to load GitHub Copilot model catalog:", error);
283
+ }
284
+ return providers;
285
+ }
286
+ buildUrl(modelId) {
287
+ return this.#routeThroughMastraGateway ? this.#mastraGateway.buildUrl(modelId) : modelId;
288
+ }
289
+ async getApiKey(modelId) {
290
+ const providerId = stripMastraGatewayPrefix(modelId).split("/", 1)[0];
291
+ if (this.#routeThroughMastraGateway) return this.#mastraGatewayApiKey ?? "";
292
+ return providerId ? getProviderAuthKey(providerId, this.#credentials) ?? "" : "";
293
+ }
294
+ resolveAuth(request) {
295
+ if (this.#routeThroughMastraGateway && this.#mastraGatewayApiKey) return {
296
+ apiKey: this.#mastraGatewayApiKey,
297
+ source: "gateway"
298
+ };
299
+ const customProvider = this.#getCustomProviders().find((provider) => request.providerId === getCustomProviderId(provider.name));
300
+ if (customProvider?.apiKey) return {
301
+ apiKey: customProvider.apiKey,
302
+ source: "gateway"
303
+ };
304
+ return MastraCodeGateway.resolveProviderAuth(request, void 0, this.#credentials);
305
+ }
306
+ resolveLanguageModel(args) {
307
+ const customProvider = this.#getCustomProviders().find((provider) => args.providerId === getCustomProviderId(provider.name));
308
+ if (customProvider) return createOpenAICompatible({
309
+ name: args.providerId,
310
+ baseURL: customProvider.url,
311
+ apiKey: args.apiKey,
312
+ headers: args.headers
313
+ }).chatModel(args.modelId);
314
+ if (args.providerId === "github-copilot") return githubCopilotProvider(args.modelId, {
315
+ headers: args.headers,
316
+ authStorage: this.#credentials
317
+ });
318
+ if (args.providerId === "moonshotai") {
319
+ const apiKey = args.apiKey?.trim() || process.env.MOONSHOT_API_KEY?.trim() || process.env.MOONSHOT_AI_API_KEY?.trim();
320
+ if (!apiKey) throw new Error("Need MOONSHOT_API_KEY");
321
+ return createAnthropic({
322
+ apiKey,
323
+ baseURL: "https://api.moonshot.ai/anthropic/v1",
324
+ name: "moonshotai.anthropicv1",
325
+ headers: args.headers
326
+ })(args.modelId);
327
+ }
328
+ if (args.providerId === "anthropic") return this.#resolveAnthropicModel(args);
329
+ if (args.providerId === "openai") {
330
+ const openaiModel = this.#resolveOpenAIModel(args);
331
+ if (openaiModel) return openaiModel;
332
+ }
333
+ if (args.providerId === "xai" && this.#credentials.get("xai")?.type === "oauth") return xaiProvider(args.modelId, {
334
+ headers: args.headers,
335
+ authStorage: this.#credentials
336
+ });
337
+ if (this.#routeThroughMastraGateway) return this.#mastraGateway.resolveLanguageModel(args);
338
+ if (args.providerId === "kimi-for-coding") return kimiCodingProvider(args.modelId, {
339
+ apiKey: args.apiKey,
340
+ headers: args.headers,
341
+ credentialStore: this.#credentials
342
+ });
343
+ return new ModelRouterLanguageModel({
344
+ id: `${args.providerId}/${args.modelId}`,
345
+ apiKey: args.apiKey,
346
+ headers: args.headers
347
+ });
348
+ }
349
+ #resolveAnthropicModel(args) {
350
+ const bareModelId = normalizeAnthropicModelId(args.modelId);
351
+ const storedCred = this.#credentials.get("anthropic");
352
+ const thinkingMiddleware = createAnthropicThinkingMiddleware(bareModelId, this.#thinkingLevel);
353
+ if (this.#routeThroughMastraGateway) {
354
+ if (storedCred?.type === "oauth") return wrapLanguageModel({
355
+ model: createAnthropic({
356
+ apiKey: "oauth-gateway-placeholder",
357
+ baseURL: `${this.#mastraGatewayBaseUrl}/v1`,
358
+ headers: {
359
+ [GATEWAY_AUTH_HEADER]: `Bearer ${args.apiKey}`,
360
+ ...args.headers
361
+ },
362
+ fetch: buildAnthropicOAuthFetch({ authStorage: this.#credentials })
363
+ })(bareModelId),
364
+ middleware: [
365
+ claudeCodeMiddleware,
366
+ promptCacheMiddleware,
367
+ ...thinkingMiddleware ? [thinkingMiddleware] : []
368
+ ]
369
+ });
370
+ const gatewayModel = this.#mastraGateway.resolveLanguageModel({
371
+ ...args,
372
+ modelId: bareModelId
373
+ });
374
+ if (!thinkingMiddleware) return gatewayModel;
375
+ return wrapLanguageModel({
376
+ model: gatewayModel,
377
+ middleware: [thinkingMiddleware]
378
+ });
379
+ }
380
+ if (storedCred?.type === "oauth") return opencodeClaudeMaxProvider(bareModelId, {
381
+ headers: args.headers,
382
+ authStorage: this.#credentials,
383
+ thinkingLevel: this.#thinkingLevel
384
+ });
385
+ if (storedCred?.type === "api_key" && storedCred.key.trim().length > 0) return anthropicApiKeyProvider(bareModelId, storedCred.key.trim(), args.headers, this.#thinkingLevel);
386
+ const apiKey = getAnthropicApiKey(this.#credentials);
387
+ if (apiKey) return anthropicApiKeyProvider(bareModelId, apiKey, args.headers, this.#thinkingLevel);
388
+ return opencodeClaudeMaxProvider(bareModelId, {
389
+ headers: args.headers,
390
+ authStorage: this.#credentials,
391
+ thinkingLevel: this.#thinkingLevel
392
+ });
393
+ }
394
+ #resolveOpenAIModel(args) {
395
+ const storedCred = this.#credentials.get("openai-codex");
396
+ if (this.#routeThroughMastraGateway) {
397
+ if (storedCred?.type === "oauth") {
398
+ const resolvedBareModelId = remapOpenAIModelForCodexOAuth(`openai/${args.modelId}`).substring(7);
399
+ const reasoningEffort = THINKING_LEVEL_TO_REASONING_EFFORT[getEffectiveThinkingLevel(resolvedBareModelId, this.#thinkingLevel ?? "medium")];
400
+ const middleware = createCodexMiddleware(reasoningEffort);
401
+ return wrapLanguageModel({
402
+ model: createOpenAI({
403
+ apiKey: "oauth-gateway-placeholder",
404
+ baseURL: `${this.#mastraGatewayBaseUrl}/v1`,
405
+ headers: {
406
+ [GATEWAY_AUTH_HEADER]: `Bearer ${args.apiKey}`,
407
+ ...args.headers
408
+ },
409
+ fetch: buildOpenAICodexOAuthFetch({
410
+ authStorage: this.#credentials,
411
+ rewriteUrl: false
412
+ })
413
+ }).responses(resolvedBareModelId),
414
+ middleware: [middleware]
415
+ });
416
+ }
417
+ return this.#mastraGateway.resolveLanguageModel(args);
418
+ }
419
+ if (storedCred?.type === "oauth") return openaiCodexProvider(remapOpenAIModelForCodexOAuth(`openai/${args.modelId}`).substring(7), {
420
+ thinkingLevel: this.#thinkingLevel,
421
+ headers: args.headers,
422
+ authStorage: this.#credentials
423
+ });
424
+ const apiKey = getOpenAIApiKey(this.#credentials);
425
+ if (apiKey) return openaiApiKeyProvider(args.modelId, apiKey, args.headers);
426
+ }
427
+ };
428
+ //#endregion
429
+ export { MASTRACODE_GATEWAY_ID, MASTRA_GATEWAY_PREFIX, MastraCodeGateway, OPENAI_PREFIX, getAnthropicApiKey, getOpenAIApiKey, reloadAuthStorage, remapOpenAIModelForCodexOAuth, resolveAuth, stripMastraGatewayPrefix };
430
+
431
+ //# sourceMappingURL=mastracode-gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mastracode-gateway.js","names":["#mastraGateway","#mastraGatewayBaseUrl","#mastraGatewayApiKey","#routeThroughMastraGateway","#thinkingLevel","#customProviders","#settingsPath","#credentials","#getCustomProviders","#resolveAnthropicModel","#resolveOpenAIModel"],"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 type { CredentialStore } from '../auth/types.js';\nimport { getCustomProviderId, loadSettings, MASTRA_GATEWAY_PROVIDER } from '../onboarding/settings.js';\nimport {\n buildAnthropicOAuthFetch,\n claudeCodeMiddleware,\n createAnthropicThinkingMiddleware,\n opencodeClaudeMaxProvider,\n promptCacheMiddleware,\n} from '../providers/claude-max.js';\nimport { getCopilotModelCatalog, githubCopilotProvider } from '../providers/github-copilot.js';\nimport { KIMI_CODING_MODELS, kimiCodingProvider } from '../providers/kimi-coding.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';\nimport { xaiProvider } from '../providers/xai.js';\nimport { resolveCustomProviders } from './custom-provider-source.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 * Per-tenant credential source for this gateway instance. Defaults to the\n * server-global file-backed `AuthStorage`; deployed web passes the calling\n * tenant's store so model calls use the caller's own credentials.\n */\n credentialStore?: CredentialStore;\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(credentials: CredentialStore = authStorage): string | undefined {\n const storedCred = credentials.get('anthropic');\n if (storedCred?.type === 'api_key' && storedCred.key.trim().length > 0) {\n return storedCred.key.trim();\n }\n const dedicatedKey = credentials.getStoredApiKey('anthropic')?.trim();\n if (dedicatedKey) return dedicatedKey;\n return credentials.allowEnvironmentFallback === false\n ? undefined\n : 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(credentials: CredentialStore = authStorage): string | undefined {\n const storedCred = credentials.get('openai-codex');\n if (storedCred?.type === 'api_key' && storedCred.key.trim().length > 0) {\n return storedCred.key.trim();\n }\n const dedicatedKey = credentials.getStoredApiKey('openai-codex')?.trim();\n if (dedicatedKey) return dedicatedKey;\n return credentials.allowEnvironmentFallback === false ? undefined : process.env.OPENAI_API_KEY?.trim() || undefined;\n}\n\nfunction anthropicApiKeyProvider(\n modelId: string,\n apiKey: string,\n headers?: ModelRequestHeaders,\n thinkingLevel?: ThinkingLevel,\n) {\n const anthropic = createAnthropic({ apiKey, headers });\n const thinkingMiddleware = createAnthropicThinkingMiddleware(modelId, thinkingLevel);\n return wrapLanguageModel({\n model: anthropic(modelId),\n middleware: [promptCacheMiddleware, ...(thinkingMiddleware ? [thinkingMiddleware] : [])],\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, credentials: CredentialStore = authStorage): string | undefined {\n const authProviderId = getAuthProviderId(providerId);\n const storedCred = credentials.get(authProviderId);\n if (storedCred?.type === 'api_key' && storedCred.key.trim().length > 0) {\n return storedCred.key.trim();\n }\n const dedicatedKey = credentials.getStoredApiKey(authProviderId)?.trim();\n if (dedicatedKey) return dedicatedKey;\n if (credentials.allowEnvironmentFallback === false) return undefined;\n return authProviderId === 'kimi-for-coding' ? process.env.KIMI_API_KEY?.trim() || undefined : undefined;\n}\n\nexport function resolveAuth(request: GatewayAuthRequest, mastraGatewayApiKey?: string): GatewayAuthResult | undefined {\n return MastraCodeGateway.resolveProviderAuth(request, mastraGatewayApiKey);\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 readonly #credentials: CredentialStore;\n\n constructor({\n mastraGatewayBaseUrl,\n mastraGatewayApiKey,\n routeThroughMastraGateway,\n thinkingLevel,\n customProviders,\n settingsPath,\n credentialStore,\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 this.#credentials = credentialStore ?? authStorage;\n }\n\n static getMastraGatewayApiKey(): string | undefined {\n return authStorage.getStoredApiKey(MASTRA_GATEWAY_PROVIDER) ?? process.env['MASTRA_GATEWAY_API_KEY'];\n }\n\n /** @deprecated Renamed to {@link MastraCodeGateway.getMastraGatewayApiKey}. */\n static getMemoryGatewayApiKey(): string | undefined {\n return MastraCodeGateway.getMastraGatewayApiKey();\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 {\n gatewayId: this.id,\n providerId: parsed.providerId,\n modelId: parsed.modelId,\n routerId: modelId,\n },\n undefined,\n this.#credentials,\n ),\n );\n }\n\n static resolveProviderAuth(\n request: GatewayAuthRequest,\n mastraGatewayApiKey?: string,\n credentials: CredentialStore = authStorage,\n ): GatewayAuthResult | undefined {\n if (request.gatewayId === 'mastra' && mastraGatewayApiKey) {\n return { apiKey: mastraGatewayApiKey, source: 'gateway' };\n }\n\n const authProviderId = getAuthProviderId(request.providerId);\n const storedCred = credentials.get(authProviderId);\n if (storedCred?.type === 'oauth') {\n return { bearerToken: 'oauth', source: 'gateway' };\n }\n\n const apiKey = getProviderAuthKey(request.providerId, credentials);\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 // Explicit constructor list wins; then a registered source (deployed web,\n // DB-backed — authoritative, so settings.json is never consulted); then\n // the local file-backed settings.\n return this.#customProviders ?? resolveCustomProviders() ?? 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 providers['kimi-for-coding'] = {\n name: 'Kimi For Coding',\n apiKeyEnvVar: 'KIMI_API_KEY',\n apiKeyHeader: 'Authorization',\n gateway: this.id,\n models: [...KIMI_CODING_MODELS],\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, this.#credentials) ?? '') : '';\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, undefined, this.#credentials);\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, {\n headers: args.headers,\n authStorage: this.#credentials,\n }) as unknown as GatewayLanguageModel;\n }\n\n if (args.providerId === 'moonshotai') {\n // Prefer the gateway-resolved key (stored credentials), then the canonical\n // registry env var. Keep the legacy typo name as a fallback for anyone who\n // set it because of the previous error message.\n const apiKey =\n args.apiKey?.trim() || process.env.MOONSHOT_API_KEY?.trim() || process.env.MOONSHOT_AI_API_KEY?.trim();\n if (!apiKey) {\n throw new Error('Need MOONSHOT_API_KEY');\n }\n return createAnthropic({\n apiKey,\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 (args.providerId === 'xai' && this.#credentials.get('xai')?.type === 'oauth') {\n return xaiProvider(args.modelId, {\n headers: args.headers,\n authStorage: this.#credentials,\n }) as unknown as GatewayLanguageModel;\n }\n\n if (this.#routeThroughMastraGateway) {\n return this.#mastraGateway.resolveLanguageModel(args) as GatewayLanguageModel;\n }\n\n if (args.providerId === 'kimi-for-coding') {\n return kimiCodingProvider(args.modelId, {\n apiKey: args.apiKey,\n headers: args.headers,\n credentialStore: this.#credentials,\n }) as unknown as GatewayLanguageModel;\n }\n\n return new ModelRouterLanguageModel({\n id: `${args.providerId}/${args.modelId}` as `${string}/${string}`,\n apiKey: args.apiKey,\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 = this.#credentials.get('anthropic');\n const thinkingMiddleware = createAnthropicThinkingMiddleware(bareModelId, this.#thinkingLevel);\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: this.#credentials }) as any,\n });\n\n return wrapLanguageModel({\n model: anthropic(bareModelId),\n middleware: [\n claudeCodeMiddleware,\n promptCacheMiddleware,\n ...(thinkingMiddleware ? [thinkingMiddleware] : []),\n ],\n }) as unknown as GatewayLanguageModel;\n }\n\n const gatewayModel = this.#mastraGateway.resolveLanguageModel({\n ...args,\n modelId: bareModelId,\n }) as GatewayLanguageModel;\n if (!thinkingMiddleware) return gatewayModel;\n return wrapLanguageModel({\n model: gatewayModel as any,\n middleware: [thinkingMiddleware],\n }) as unknown as GatewayLanguageModel;\n }\n\n if (storedCred?.type === 'oauth') {\n return opencodeClaudeMaxProvider(bareModelId, {\n headers: args.headers,\n authStorage: this.#credentials,\n thinkingLevel: this.#thinkingLevel,\n }) 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 this.#thinkingLevel,\n ) as unknown as GatewayLanguageModel;\n }\n\n const apiKey = getAnthropicApiKey(this.#credentials);\n if (apiKey) {\n return anthropicApiKeyProvider(\n bareModelId,\n apiKey,\n args.headers,\n this.#thinkingLevel,\n ) 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, {\n headers: args.headers,\n authStorage: this.#credentials,\n thinkingLevel: this.#thinkingLevel,\n }) 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 = this.#credentials.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: this.#credentials, 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 authStorage: this.#credentials,\n }) as unknown as GatewayLanguageModel;\n }\n\n const apiKey = getOpenAIApiKey(this.#credentials);\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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"}