@mastra/code-sdk 0.0.0-livekit-beta-v3-20260709031728

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 (460) hide show
  1. package/CHANGELOG.md +41 -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/dependencies.d.ts +9 -0
  305. package/dist/plugins/dependencies.d.ts.map +1 -0
  306. package/dist/plugins/dependencies.js +141 -0
  307. package/dist/plugins/dependencies.js.map +1 -0
  308. package/dist/plugins/install.d.ts +21 -0
  309. package/dist/plugins/install.d.ts.map +1 -0
  310. package/dist/plugins/install.js +200 -0
  311. package/dist/plugins/install.js.map +1 -0
  312. package/dist/plugins/loader.d.ts +15 -0
  313. package/dist/plugins/loader.d.ts.map +1 -0
  314. package/dist/plugins/loader.js +221 -0
  315. package/dist/plugins/loader.js.map +1 -0
  316. package/dist/plugins/manager.d.ts +60 -0
  317. package/dist/plugins/manager.d.ts.map +1 -0
  318. package/dist/plugins/manager.js +378 -0
  319. package/dist/plugins/manager.js.map +1 -0
  320. package/dist/plugins/manifest.d.ts +14 -0
  321. package/dist/plugins/manifest.d.ts.map +1 -0
  322. package/dist/plugins/manifest.js +75 -0
  323. package/dist/plugins/manifest.js.map +1 -0
  324. package/dist/plugins/package-link.d.ts +3 -0
  325. package/dist/plugins/package-link.d.ts.map +1 -0
  326. package/dist/plugins/package-link.js +77 -0
  327. package/dist/plugins/package-link.js.map +1 -0
  328. package/dist/plugins/paths.d.ts +10 -0
  329. package/dist/plugins/paths.d.ts.map +1 -0
  330. package/dist/plugins/paths.js +26 -0
  331. package/dist/plugins/paths.js.map +1 -0
  332. package/dist/plugins/registry.d.ts +8 -0
  333. package/dist/plugins/registry.d.ts.map +1 -0
  334. package/dist/plugins/registry.js +96 -0
  335. package/dist/plugins/registry.js.map +1 -0
  336. package/dist/plugins/scaffold.d.ts +10 -0
  337. package/dist/plugins/scaffold.d.ts.map +1 -0
  338. package/dist/plugins/scaffold.js +152 -0
  339. package/dist/plugins/scaffold.js.map +1 -0
  340. package/dist/plugins/types.d.ts +45 -0
  341. package/dist/plugins/types.d.ts.map +1 -0
  342. package/dist/plugins/types.js +1 -0
  343. package/dist/plugins/types.js.map +1 -0
  344. package/dist/processors/plan-rejection-abort.d.ts +12 -0
  345. package/dist/processors/plan-rejection-abort.d.ts.map +1 -0
  346. package/dist/processors/plan-rejection-abort.js +53 -0
  347. package/dist/processors/plan-rejection-abort.js.map +1 -0
  348. package/dist/providers/amazon-bedrock-gateway.d.ts +40 -0
  349. package/dist/providers/amazon-bedrock-gateway.d.ts.map +1 -0
  350. package/dist/providers/amazon-bedrock-gateway.js +79 -0
  351. package/dist/providers/amazon-bedrock-gateway.js.map +1 -0
  352. package/dist/providers/amazon-bedrock.d.ts +28 -0
  353. package/dist/providers/amazon-bedrock.d.ts.map +1 -0
  354. package/dist/providers/amazon-bedrock.js +62 -0
  355. package/dist/providers/amazon-bedrock.js.map +1 -0
  356. package/dist/providers/claude-max.d.ts +50 -0
  357. package/dist/providers/claude-max.d.ts.map +1 -0
  358. package/dist/providers/claude-max.js +151 -0
  359. package/dist/providers/claude-max.js.map +1 -0
  360. package/dist/providers/github-copilot.d.ts +58 -0
  361. package/dist/providers/github-copilot.d.ts.map +1 -0
  362. package/dist/providers/github-copilot.js +263 -0
  363. package/dist/providers/github-copilot.js.map +1 -0
  364. package/dist/providers/openai-codex.d.ts +70 -0
  365. package/dist/providers/openai-codex.d.ts.map +1 -0
  366. package/dist/providers/openai-codex.js +291 -0
  367. package/dist/providers/openai-codex.js.map +1 -0
  368. package/dist/schema.d.ts +167 -0
  369. package/dist/schema.d.ts.map +1 -0
  370. package/dist/schema.js +92 -0
  371. package/dist/schema.js.map +1 -0
  372. package/dist/theme-palette.d.ts +17 -0
  373. package/dist/theme-palette.d.ts.map +1 -0
  374. package/dist/theme-palette.js +17 -0
  375. package/dist/theme-palette.js.map +1 -0
  376. package/dist/tool-names.d.ts +73 -0
  377. package/dist/tool-names.d.ts.map +1 -0
  378. package/dist/tool-names.js +43 -0
  379. package/dist/tool-names.js.map +1 -0
  380. package/dist/tools/index.d.ts +6 -0
  381. package/dist/tools/index.d.ts.map +1 -0
  382. package/dist/tools/index.js +9 -0
  383. package/dist/tools/index.js.map +1 -0
  384. package/dist/tools/request-sandbox-access.d.ts +6 -0
  385. package/dist/tools/request-sandbox-access.d.ts.map +1 -0
  386. package/dist/tools/request-sandbox-access.js +88 -0
  387. package/dist/tools/request-sandbox-access.js.map +1 -0
  388. package/dist/tools/utils.d.ts +20 -0
  389. package/dist/tools/utils.d.ts.map +1 -0
  390. package/dist/tools/utils.js +22 -0
  391. package/dist/tools/utils.js.map +1 -0
  392. package/dist/tools/web-search.d.ts +35 -0
  393. package/dist/tools/web-search.d.ts.map +1 -0
  394. package/dist/tools/web-search.js +65 -0
  395. package/dist/tools/web-search.js.map +1 -0
  396. package/dist/utils/binaries.d.ts +7 -0
  397. package/dist/utils/binaries.d.ts.map +1 -0
  398. package/dist/utils/binaries.js +74 -0
  399. package/dist/utils/binaries.js.map +1 -0
  400. package/dist/utils/debug-log.d.ts +12 -0
  401. package/dist/utils/debug-log.d.ts.map +1 -0
  402. package/dist/utils/debug-log.js +55 -0
  403. package/dist/utils/debug-log.js.map +1 -0
  404. package/dist/utils/errors.d.ts +36 -0
  405. package/dist/utils/errors.d.ts.map +1 -0
  406. package/dist/utils/errors.js +207 -0
  407. package/dist/utils/errors.js.map +1 -0
  408. package/dist/utils/gateway-sync.d.ts +26 -0
  409. package/dist/utils/gateway-sync.d.ts.map +1 -0
  410. package/dist/utils/gateway-sync.js +49 -0
  411. package/dist/utils/gateway-sync.js.map +1 -0
  412. package/dist/utils/plan-diff.d.ts +25 -0
  413. package/dist/utils/plan-diff.d.ts.map +1 -0
  414. package/dist/utils/plan-diff.js +43 -0
  415. package/dist/utils/plan-diff.js.map +1 -0
  416. package/dist/utils/plans.d.ts +56 -0
  417. package/dist/utils/plans.d.ts.map +1 -0
  418. package/dist/utils/plans.js +99 -0
  419. package/dist/utils/plans.js.map +1 -0
  420. package/dist/utils/project.d.ts +161 -0
  421. package/dist/utils/project.d.ts.map +1 -0
  422. package/dist/utils/project.js +302 -0
  423. package/dist/utils/project.js.map +1 -0
  424. package/dist/utils/signals-pubsub.d.ts +41 -0
  425. package/dist/utils/signals-pubsub.d.ts.map +1 -0
  426. package/dist/utils/signals-pubsub.js +104 -0
  427. package/dist/utils/signals-pubsub.js.map +1 -0
  428. package/dist/utils/slash-command-loader.d.ts +48 -0
  429. package/dist/utils/slash-command-loader.d.ts.map +1 -0
  430. package/dist/utils/slash-command-loader.js +155 -0
  431. package/dist/utils/slash-command-loader.js.map +1 -0
  432. package/dist/utils/slash-command-processor.d.ts +14 -0
  433. package/dist/utils/slash-command-processor.d.ts.map +1 -0
  434. package/dist/utils/slash-command-processor.js +96 -0
  435. package/dist/utils/slash-command-processor.js.map +1 -0
  436. package/dist/utils/stdin-pipe.d.ts +33 -0
  437. package/dist/utils/stdin-pipe.d.ts.map +1 -0
  438. package/dist/utils/stdin-pipe.js +72 -0
  439. package/dist/utils/stdin-pipe.js.map +1 -0
  440. package/dist/utils/storage-factory.d.ts +50 -0
  441. package/dist/utils/storage-factory.d.ts.map +1 -0
  442. package/dist/utils/storage-factory.js +98 -0
  443. package/dist/utils/storage-factory.js.map +1 -0
  444. package/dist/utils/thread-lock.d.ts +26 -0
  445. package/dist/utils/thread-lock.d.ts.map +1 -0
  446. package/dist/utils/thread-lock.js +108 -0
  447. package/dist/utils/thread-lock.js.map +1 -0
  448. package/dist/utils/token-estimator.d.ts +3 -0
  449. package/dist/utils/token-estimator.d.ts.map +1 -0
  450. package/dist/utils/token-estimator.js +21 -0
  451. package/dist/utils/token-estimator.js.map +1 -0
  452. package/dist/utils/update-check.d.ts +52 -0
  453. package/dist/utils/update-check.d.ts.map +1 -0
  454. package/dist/utils/update-check.js +177 -0
  455. package/dist/utils/update-check.js.map +1 -0
  456. package/dist/voice/stt-registry.d.ts +64 -0
  457. package/dist/voice/stt-registry.d.ts.map +1 -0
  458. package/dist/voice/stt-registry.js +126 -0
  459. package/dist/voice/stt-registry.js.map +1 -0
  460. package/package.json +92 -0
@@ -0,0 +1,594 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { AuthStorage } from "../auth/storage.js";
4
+ import { buildCodexStagehandFetch, createCodexMiddleware } from "../providers/openai-codex.js";
5
+ import { getAppDataDir } from "../utils/project.js";
6
+ import { DEFAULT_STT_PROVIDER, resolveSTTModel } from "../voice/stt-registry.js";
7
+ const MEMORY_GATEWAY_PROVIDER = "mastra-gateway";
8
+ const MEMORY_GATEWAY_DEFAULT_URL = "https://gateway-api.mastra.ai";
9
+ const OBSERVABILITY_AUTH_PREFIX = "observability:";
10
+ const STORAGE_DEFAULTS = {
11
+ backend: "libsql",
12
+ libsql: {},
13
+ pg: {}
14
+ };
15
+ function defaultVoiceEngine() {
16
+ return process.platform === "darwin" ? "macos-native" : "cloud";
17
+ }
18
+ const DEFAULTS = {
19
+ onboarding: {
20
+ completedAt: null,
21
+ skippedAt: null,
22
+ version: 0,
23
+ modePackId: null,
24
+ omPackId: null,
25
+ quietModePreferenceSelected: true
26
+ },
27
+ models: {
28
+ activeModelPackId: null,
29
+ modeDefaults: {},
30
+ activeOmPackId: null,
31
+ omModelOverride: null,
32
+ observerModelOverride: null,
33
+ reflectorModelOverride: null,
34
+ omObservationThreshold: null,
35
+ omReflectionThreshold: null,
36
+ omCavemanObservations: null,
37
+ omObserveAttachments: null,
38
+ subagentModels: {},
39
+ goalJudgeModel: null,
40
+ goalMaxTurns: null
41
+ },
42
+ preferences: {
43
+ yolo: null,
44
+ theme: "auto",
45
+ thinkingLevel: "off",
46
+ quietMode: false,
47
+ quietModeMaxToolPreviewLines: 2
48
+ },
49
+ storage: { ...STORAGE_DEFAULTS },
50
+ customModelPacks: [],
51
+ customProviders: [],
52
+ modelUseCounts: {},
53
+ updateDismissedVersion: null,
54
+ memoryGateway: {},
55
+ lsp: {},
56
+ browser: {
57
+ enabled: false,
58
+ provider: "stagehand",
59
+ headless: false,
60
+ viewport: { width: 1280, height: 720 },
61
+ stagehand: { env: "LOCAL" }
62
+ },
63
+ shellPassthrough: { mode: "default" },
64
+ voice: { enabled: false, engine: defaultVoiceEngine(), provider: DEFAULT_STT_PROVIDER },
65
+ signals: { unixSocketPubSub: false, experimentalGithubSignals: false },
66
+ observability: { resources: {}, localTracing: false }
67
+ };
68
+ const THINKING_LEVEL_VALUES = ["off", "low", "medium", "high", "xhigh"];
69
+ const QUIET_MODE_MAX_TOOL_PREVIEW_LINES_MAX = 8;
70
+ const loadedSignalSettings = /* @__PURE__ */ new WeakMap();
71
+ function cloneSignalSettings(signals) {
72
+ return { ...signals };
73
+ }
74
+ function rememberLoadedSettings(settings) {
75
+ loadedSignalSettings.set(settings, cloneSignalSettings(settings.signals));
76
+ return settings;
77
+ }
78
+ function signalSettingsEqual(left, right) {
79
+ return left.unixSocketPubSub === right.unixSocketPubSub && left.experimentalGithubSignals === right.experimentalGithubSignals;
80
+ }
81
+ function parseThinkingLevel(value) {
82
+ return typeof value === "string" && THINKING_LEVEL_VALUES.includes(value) ? value : DEFAULTS.preferences.thinkingLevel;
83
+ }
84
+ function parseQuietModeMaxToolPreviewLines(value) {
85
+ const rawValue = typeof value === "number" && Number.isFinite(value) ? value : DEFAULTS.preferences.quietModeMaxToolPreviewLines;
86
+ return Math.min(QUIET_MODE_MAX_TOOL_PREVIEW_LINES_MAX, Math.max(0, Math.floor(rawValue)));
87
+ }
88
+ function parsePreferences(rawPreferences) {
89
+ const raw = rawPreferences && typeof rawPreferences === "object" ? rawPreferences : {};
90
+ return {
91
+ ...DEFAULTS.preferences,
92
+ ...raw,
93
+ thinkingLevel: parseThinkingLevel(raw.thinkingLevel),
94
+ quietModeMaxToolPreviewLines: parseQuietModeMaxToolPreviewLines(raw.quietModeMaxToolPreviewLines)
95
+ };
96
+ }
97
+ function parseSignalSettings(rawSignals) {
98
+ const raw = rawSignals && typeof rawSignals === "object" ? rawSignals : {};
99
+ return {
100
+ unixSocketPubSub: typeof raw.unixSocketPubSub === "boolean" ? raw.unixSocketPubSub : DEFAULTS.signals.unixSocketPubSub,
101
+ experimentalGithubSignals: typeof raw.experimentalGithubSignals === "boolean" ? raw.experimentalGithubSignals : DEFAULTS.signals.experimentalGithubSignals
102
+ };
103
+ }
104
+ function hasQuietModePreferenceSelected(rawOnboarding) {
105
+ return Boolean(
106
+ rawOnboarding && typeof rawOnboarding === "object" && Object.prototype.hasOwnProperty.call(rawOnboarding, "quietModePreferenceSelected")
107
+ );
108
+ }
109
+ function applyQuietModePreferenceRollout(settings, rawOnboarding) {
110
+ if (hasQuietModePreferenceSelected(rawOnboarding)) return;
111
+ settings.onboarding.quietModePreferenceSelected = settings.preferences.quietMode === true;
112
+ }
113
+ function getNewInstallDefaults() {
114
+ const settings = structuredClone(DEFAULTS);
115
+ settings.preferences.quietMode = true;
116
+ settings.onboarding.quietModePreferenceSelected = true;
117
+ return settings;
118
+ }
119
+ function getSettingsPath() {
120
+ return join(getAppDataDir(), "settings.json");
121
+ }
122
+ function getCustomProviderId(name) {
123
+ const slug = name.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
124
+ return slug || "provider";
125
+ }
126
+ function toCustomProviderModelId(providerName, modelName) {
127
+ const providerId = getCustomProviderId(providerName);
128
+ const trimmedModelName = modelName.trim();
129
+ const providerPrefix = `${providerId}/`;
130
+ if (trimmedModelName.startsWith(providerPrefix)) {
131
+ return trimmedModelName;
132
+ }
133
+ return `${providerId}/${trimmedModelName}`;
134
+ }
135
+ function parseCustomProviders(rawProviders) {
136
+ if (!Array.isArray(rawProviders)) return [];
137
+ const parsedProviders = [];
138
+ for (const rawProvider of rawProviders) {
139
+ if (!rawProvider || typeof rawProvider !== "object") continue;
140
+ const candidate = rawProvider;
141
+ const name = typeof candidate.name === "string" ? candidate.name.trim() : "";
142
+ const url = typeof candidate.url === "string" ? candidate.url.trim() : "";
143
+ if (!name || !url) continue;
144
+ const providerId = getCustomProviderId(name);
145
+ const models = Array.isArray(candidate.models) ? [
146
+ ...new Set(
147
+ candidate.models.filter((model) => typeof model === "string").map((model) => model.trim()).map((model) => {
148
+ const providerPrefix = `${providerId}/`;
149
+ if (model.startsWith(providerPrefix)) {
150
+ return model.slice(providerPrefix.length);
151
+ }
152
+ return model;
153
+ })
154
+ )
155
+ ].filter((model) => model.length > 0) : [];
156
+ const apiKey = typeof candidate.apiKey === "string" && candidate.apiKey.trim().length > 0 ? candidate.apiKey.trim() : void 0;
157
+ parsedProviders.push({
158
+ name,
159
+ url,
160
+ ...apiKey ? { apiKey } : {},
161
+ models
162
+ });
163
+ }
164
+ return parsedProviders;
165
+ }
166
+ const BROWSER_PROVIDERS = /* @__PURE__ */ new Set(["stagehand", "agent-browser"]);
167
+ const STAGEHAND_ENVS = /* @__PURE__ */ new Set(["LOCAL", "BROWSERBASE"]);
168
+ function parseBrowserSettings(rawBrowser) {
169
+ const raw = rawBrowser && typeof rawBrowser === "object" ? rawBrowser : {};
170
+ const rawViewport = raw.viewport && typeof raw.viewport === "object" ? raw.viewport : {};
171
+ const rawStagehand = raw.stagehand && typeof raw.stagehand === "object" ? raw.stagehand : {};
172
+ const rawAgentBrowser = raw.agentBrowser && typeof raw.agentBrowser === "object" ? raw.agentBrowser : {};
173
+ return {
174
+ enabled: typeof raw.enabled === "boolean" ? raw.enabled : DEFAULTS.browser.enabled,
175
+ provider: typeof raw.provider === "string" && BROWSER_PROVIDERS.has(raw.provider) ? raw.provider : DEFAULTS.browser.provider,
176
+ headless: typeof raw.headless === "boolean" ? raw.headless : DEFAULTS.browser.headless,
177
+ cdpUrl: typeof raw.cdpUrl === "string" && raw.cdpUrl.trim() ? raw.cdpUrl.trim() : void 0,
178
+ profile: typeof raw.profile === "string" && raw.profile.trim() ? raw.profile.trim() : void 0,
179
+ executablePath: typeof raw.executablePath === "string" && raw.executablePath.trim() ? raw.executablePath.trim() : void 0,
180
+ viewport: {
181
+ width: typeof rawViewport.width === "number" ? rawViewport.width : DEFAULTS.browser.viewport.width,
182
+ height: typeof rawViewport.height === "number" ? rawViewport.height : DEFAULTS.browser.viewport.height
183
+ },
184
+ scope: typeof raw.scope === "string" && (raw.scope === "shared" || raw.scope === "thread") ? raw.scope : void 0,
185
+ stagehand: {
186
+ env: typeof rawStagehand.env === "string" && STAGEHAND_ENVS.has(rawStagehand.env) ? rawStagehand.env : DEFAULTS.browser.stagehand.env,
187
+ ...typeof rawStagehand.apiKey === "string" && rawStagehand.apiKey.trim() ? { apiKey: rawStagehand.apiKey.trim() } : {},
188
+ ...typeof rawStagehand.projectId === "string" && rawStagehand.projectId.trim() ? { projectId: rawStagehand.projectId.trim() } : {},
189
+ ...typeof rawStagehand.preserveUserDataDir === "boolean" ? { preserveUserDataDir: rawStagehand.preserveUserDataDir } : {}
190
+ },
191
+ agentBrowser: typeof rawAgentBrowser.storageState === "string" && rawAgentBrowser.storageState.trim() ? { storageState: rawAgentBrowser.storageState.trim() } : void 0
192
+ };
193
+ }
194
+ function parseShellPassthroughSettings(rawShellPassthrough) {
195
+ const raw = rawShellPassthrough && typeof rawShellPassthrough === "object" ? rawShellPassthrough : {};
196
+ const executable = typeof raw.executable === "string" && raw.executable.trim() ? raw.executable.trim() : void 0;
197
+ const family = typeof raw.family === "string" && raw.family.trim() ? raw.family.trim() : void 0;
198
+ const mode = typeof raw.mode === "string" && raw.mode.trim() ? raw.mode.trim() : void 0;
199
+ const defaultMode = executable ? void 0 : DEFAULTS.shellPassthrough.mode;
200
+ return {
201
+ ...mode ?? defaultMode ? { mode: mode ?? defaultMode } : {},
202
+ ...executable ? { executable } : {},
203
+ ...family ? { family } : {}
204
+ };
205
+ }
206
+ function parseVoiceSettings(rawVoice) {
207
+ const raw = rawVoice && typeof rawVoice === "object" ? rawVoice : {};
208
+ const enabled = typeof raw.enabled === "boolean" ? raw.enabled : DEFAULTS.voice.enabled;
209
+ const engine = raw.engine === "macos-native" || raw.engine === "cloud" ? raw.engine : defaultVoiceEngine();
210
+ const provider = typeof raw.provider === "string" ? raw.provider : DEFAULTS.voice.provider;
211
+ const model = typeof raw.model === "string" ? raw.model : void 0;
212
+ const resolved = resolveSTTModel(provider, model);
213
+ return {
214
+ enabled,
215
+ engine,
216
+ provider: resolved.provider,
217
+ model: resolved.model
218
+ };
219
+ }
220
+ const VALID_PROJECT_ID = /^[a-zA-Z0-9_-]+$/;
221
+ function parseObservabilitySettings(raw) {
222
+ if (!raw || typeof raw !== "object") return { resources: {}, localTracing: false };
223
+ const obj = raw;
224
+ const localTracing = obj.localTracing === true;
225
+ const rawResources = obj.resources;
226
+ if (!rawResources || typeof rawResources !== "object") return { resources: {}, localTracing };
227
+ const resources = {};
228
+ for (const [key, val] of Object.entries(rawResources)) {
229
+ if (val && typeof val === "object") {
230
+ const v = val;
231
+ if (typeof v.projectId === "string" && VALID_PROJECT_ID.test(v.projectId)) {
232
+ resources[key] = {
233
+ projectId: v.projectId,
234
+ configuredAt: typeof v.configuredAt === "string" ? v.configuredAt : (/* @__PURE__ */ new Date()).toISOString()
235
+ };
236
+ }
237
+ }
238
+ }
239
+ return { resources, localTracing };
240
+ }
241
+ function migrateFromAuth(settingsPath) {
242
+ const authPath = join(getAppDataDir(), "auth.json");
243
+ if (!existsSync(authPath)) return false;
244
+ let authData;
245
+ try {
246
+ authData = JSON.parse(readFileSync(authPath, "utf-8"));
247
+ } catch {
248
+ return false;
249
+ }
250
+ const modelKeys = Object.keys(authData).filter((k) => k.startsWith("_"));
251
+ if (modelKeys.length === 0) return false;
252
+ let settings;
253
+ if (existsSync(settingsPath)) {
254
+ try {
255
+ const raw = JSON.parse(readFileSync(settingsPath, "utf-8"));
256
+ settings = {
257
+ onboarding: { ...DEFAULTS.onboarding, ...raw.onboarding },
258
+ models: { ...DEFAULTS.models, ...raw.models },
259
+ preferences: parsePreferences(raw.preferences),
260
+ storage: {
261
+ ...STORAGE_DEFAULTS,
262
+ ...raw.storage,
263
+ libsql: { ...STORAGE_DEFAULTS.libsql, ...raw.storage?.libsql },
264
+ pg: { ...STORAGE_DEFAULTS.pg, ...raw.storage?.pg }
265
+ },
266
+ customModelPacks: Array.isArray(raw.customModelPacks) ? raw.customModelPacks : [],
267
+ customProviders: parseCustomProviders(raw.customProviders),
268
+ modelUseCounts: raw.modelUseCounts && typeof raw.modelUseCounts === "object" ? raw.modelUseCounts : {},
269
+ updateDismissedVersion: typeof raw.updateDismissedVersion === "string" ? raw.updateDismissedVersion : null,
270
+ memoryGateway: raw.memoryGateway && typeof raw.memoryGateway === "object" ? raw.memoryGateway : {},
271
+ lsp: raw.lsp && typeof raw.lsp === "object" ? raw.lsp : void 0,
272
+ browser: parseBrowserSettings(raw.browser),
273
+ shellPassthrough: parseShellPassthroughSettings(raw.shellPassthrough),
274
+ voice: parseVoiceSettings(raw.voice),
275
+ signals: parseSignalSettings(raw.signals),
276
+ observability: parseObservabilitySettings(raw.observability)
277
+ };
278
+ applyQuietModePreferenceRollout(settings, raw.onboarding);
279
+ } catch {
280
+ settings = structuredClone(DEFAULTS);
281
+ }
282
+ } else {
283
+ settings = structuredClone(DEFAULTS);
284
+ }
285
+ if (authData._modelRanks && typeof authData._modelRanks === "object") {
286
+ settings.modelUseCounts = { ...authData._modelRanks, ...settings.modelUseCounts };
287
+ }
288
+ for (const key of modelKeys) {
289
+ const modeMatch = key.match(/^_modeModelId_(.+)$/);
290
+ if (modeMatch?.[1] && typeof authData[key] === "string" && !settings.models.modeDefaults[modeMatch[1]]) {
291
+ settings.models.modeDefaults[modeMatch[1]] = authData[key];
292
+ }
293
+ }
294
+ for (const key of modelKeys) {
295
+ if (key === "_subagentModelId" && typeof authData[key] === "string" && !settings.models.subagentModels["default"]) {
296
+ settings.models.subagentModels["default"] = authData[key];
297
+ }
298
+ const saMatch = key.match(/^_subagentModelId_(.+)$/);
299
+ if (saMatch?.[1] && typeof authData[key] === "string" && !settings.models.subagentModels[saMatch[1]]) {
300
+ settings.models.subagentModels[saMatch[1]] = authData[key];
301
+ }
302
+ }
303
+ saveSettings(settings, settingsPath);
304
+ for (const key of modelKeys) {
305
+ delete authData[key];
306
+ }
307
+ try {
308
+ writeFileSync(authPath, JSON.stringify(authData, null, 2), "utf-8");
309
+ } catch {
310
+ }
311
+ return true;
312
+ }
313
+ const LEGACY_VARIED_MODELS = {
314
+ plan: "openai/gpt-5.4",
315
+ build: "anthropic/claude-sonnet-4-5",
316
+ fast: "anthropic/claude-haiku-4-5"
317
+ };
318
+ function migrateLegacyVariedPack(settings) {
319
+ const legacyPackId = "varied";
320
+ const customPackId = "custom:varied";
321
+ const hasLegacyReference = settings.models.activeModelPackId === legacyPackId || settings.onboarding.modePackId === legacyPackId;
322
+ if (!hasLegacyReference) return false;
323
+ const existingIdx = settings.customModelPacks.findIndex((p) => p.name === "varied");
324
+ if (existingIdx >= 0) {
325
+ const existing = settings.customModelPacks[existingIdx];
326
+ const modelsMatch = Object.entries(LEGACY_VARIED_MODELS).every(([k, v]) => existing.models[k] === v);
327
+ if (!modelsMatch) {
328
+ existing.models = { ...LEGACY_VARIED_MODELS };
329
+ }
330
+ } else {
331
+ settings.customModelPacks.push({
332
+ name: "varied",
333
+ models: { ...LEGACY_VARIED_MODELS },
334
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
335
+ });
336
+ }
337
+ if (settings.models.activeModelPackId === legacyPackId) {
338
+ settings.models.activeModelPackId = customPackId;
339
+ if (Object.keys(settings.models.modeDefaults).length === 0) {
340
+ settings.models.modeDefaults = { ...LEGACY_VARIED_MODELS };
341
+ }
342
+ }
343
+ if (settings.onboarding.modePackId === legacyPackId) {
344
+ settings.onboarding.modePackId = customPackId;
345
+ }
346
+ return true;
347
+ }
348
+ function loadSettings(filePath = getSettingsPath()) {
349
+ migrateFromAuth(filePath);
350
+ if (!existsSync(filePath)) return rememberLoadedSettings(getNewInstallDefaults());
351
+ try {
352
+ const raw = JSON.parse(readFileSync(filePath, "utf-8"));
353
+ const settings = {
354
+ ...raw,
355
+ onboarding: { ...DEFAULTS.onboarding, ...raw.onboarding },
356
+ models: { ...DEFAULTS.models, ...raw.models },
357
+ preferences: parsePreferences(raw.preferences),
358
+ storage: {
359
+ ...STORAGE_DEFAULTS,
360
+ ...raw.storage,
361
+ libsql: { ...STORAGE_DEFAULTS.libsql, ...raw.storage?.libsql },
362
+ pg: { ...STORAGE_DEFAULTS.pg, ...raw.storage?.pg }
363
+ },
364
+ customModelPacks: Array.isArray(raw.customModelPacks) ? raw.customModelPacks : [],
365
+ customProviders: parseCustomProviders(raw.customProviders),
366
+ modelUseCounts: raw.modelUseCounts && typeof raw.modelUseCounts === "object" ? raw.modelUseCounts : {},
367
+ updateDismissedVersion: typeof raw.updateDismissedVersion === "string" ? raw.updateDismissedVersion : null,
368
+ memoryGateway: raw.memoryGateway && typeof raw.memoryGateway === "object" ? raw.memoryGateway : {},
369
+ lsp: raw.lsp && typeof raw.lsp === "object" ? raw.lsp : void 0,
370
+ browser: parseBrowserSettings(raw.browser),
371
+ shellPassthrough: parseShellPassthroughSettings(raw.shellPassthrough),
372
+ voice: parseVoiceSettings(raw.voice),
373
+ signals: parseSignalSettings(raw.signals),
374
+ observability: parseObservabilitySettings(raw.observability)
375
+ };
376
+ let settingsChanged = false;
377
+ if (!hasQuietModePreferenceSelected(raw.onboarding)) {
378
+ applyQuietModePreferenceRollout(settings, raw.onboarding);
379
+ settingsChanged = true;
380
+ }
381
+ if (raw.models?.omModelId && !settings.models.omModelOverride) {
382
+ settings.models.omModelOverride = raw.models.omModelId;
383
+ settingsChanged = true;
384
+ }
385
+ if (migrateLegacyVariedPack(settings)) {
386
+ settingsChanged = true;
387
+ }
388
+ if (settingsChanged) {
389
+ saveSettings(settings, filePath);
390
+ }
391
+ return rememberLoadedSettings(settings);
392
+ } catch {
393
+ return rememberLoadedSettings(structuredClone(DEFAULTS));
394
+ }
395
+ }
396
+ const THREAD_ACTIVE_MODEL_PACK_ID_KEY = "activeModelPackId";
397
+ function parseThreadSettings(metadata) {
398
+ const modeModelIds = {};
399
+ for (const [key, value] of Object.entries(metadata ?? {})) {
400
+ const modeMatch = key.match(/^modeModelId_(.+)$/);
401
+ if (modeMatch?.[1] && typeof value === "string" && value.length > 0) {
402
+ modeModelIds[modeMatch[1]] = value;
403
+ }
404
+ }
405
+ const rawPackId = metadata?.[THREAD_ACTIVE_MODEL_PACK_ID_KEY];
406
+ const activeModelPackId = typeof rawPackId === "string" && rawPackId.length > 0 ? rawPackId : null;
407
+ return {
408
+ activeModelPackId,
409
+ modeModelIds
410
+ };
411
+ }
412
+ function resolveThreadActiveModelPackId(settings, builtinPacks, metadata) {
413
+ const threadSettings = parseThreadSettings(metadata);
414
+ const isKnownPack = (packId) => {
415
+ if (packId.startsWith("custom:")) {
416
+ const name = packId.slice("custom:".length);
417
+ return settings.customModelPacks.some((p) => p.name === name);
418
+ }
419
+ return builtinPacks.some((p) => p.id === packId);
420
+ };
421
+ if (threadSettings.activeModelPackId && isKnownPack(threadSettings.activeModelPackId)) {
422
+ return threadSettings.activeModelPackId;
423
+ }
424
+ const allPacks = [
425
+ ...builtinPacks,
426
+ ...settings.customModelPacks.map((p) => ({ id: `custom:${p.name}`, models: p.models }))
427
+ ];
428
+ for (const pack of allPacks) {
429
+ const packEntries = Object.entries(pack.models);
430
+ const threadEntries = Object.keys(threadSettings.modeModelIds);
431
+ const matches = packEntries.length === threadEntries.length && packEntries.every(([modeId, modelId]) => threadSettings.modeModelIds[modeId] === modelId);
432
+ if (matches) return pack.id;
433
+ }
434
+ if (settings.models.activeModelPackId && isKnownPack(settings.models.activeModelPackId)) {
435
+ return settings.models.activeModelPackId;
436
+ }
437
+ return null;
438
+ }
439
+ function resolveModelDefaults(settings, builtinPacks) {
440
+ const { activeModelPackId, modeDefaults } = settings.models;
441
+ if (!activeModelPackId) return modeDefaults;
442
+ if (activeModelPackId.startsWith("custom:")) {
443
+ const name = activeModelPackId.slice("custom:".length);
444
+ const pack = settings.customModelPacks.find((p) => p.name === name);
445
+ if (pack) return pack.models;
446
+ return modeDefaults;
447
+ }
448
+ const builtin = builtinPacks.find((p) => p.id === activeModelPackId);
449
+ if (builtin) return builtin.models;
450
+ return modeDefaults;
451
+ }
452
+ function resolveOmRoleModel(settings, role, builtinOmPacks) {
453
+ const { activeOmPackId, omModelOverride, observerModelOverride, reflectorModelOverride } = settings.models;
454
+ const roleOverride = role === "observer" ? observerModelOverride : reflectorModelOverride;
455
+ if (roleOverride) return roleOverride;
456
+ if (!activeOmPackId) return omModelOverride;
457
+ if (activeOmPackId === "custom") return omModelOverride;
458
+ const pack = builtinOmPacks.find((p) => p.id === activeOmPackId);
459
+ if (pack) return pack.modelId;
460
+ return omModelOverride;
461
+ }
462
+ function resolveOmModel(settings, builtinOmPacks) {
463
+ return resolveOmRoleModel(settings, "observer", builtinOmPacks);
464
+ }
465
+ function getSignalSettingsForSave(settings, filePath) {
466
+ const loadedSignals = loadedSignalSettings.get(settings);
467
+ if (!loadedSignals || !signalSettingsEqual(settings.signals, loadedSignals) || !existsSync(filePath)) {
468
+ return settings.signals;
469
+ }
470
+ try {
471
+ const currentRaw = JSON.parse(readFileSync(filePath, "utf-8"));
472
+ const currentSignals = parseSignalSettings(currentRaw.signals);
473
+ if (!signalSettingsEqual(currentSignals, loadedSignals)) {
474
+ return currentSignals;
475
+ }
476
+ } catch {
477
+ }
478
+ return settings.signals;
479
+ }
480
+ function saveSettings(settings, filePath = getSettingsPath()) {
481
+ const dir = dirname(filePath);
482
+ if (!existsSync(dir)) {
483
+ mkdirSync(dir, { recursive: true });
484
+ }
485
+ const signals = getSignalSettingsForSave(settings, filePath);
486
+ settings.signals = signals;
487
+ loadedSignalSettings.set(settings, cloneSignalSettings(signals));
488
+ writeFileSync(filePath, JSON.stringify(settings, null, 2), "utf-8");
489
+ }
490
+ const PROFILE_PROVIDER_MARKER = ".mastra-provider";
491
+ function getProfileProvider(profilePath) {
492
+ const markerPath = join(profilePath, PROFILE_PROVIDER_MARKER);
493
+ if (!existsSync(markerPath)) {
494
+ return void 0;
495
+ }
496
+ try {
497
+ const content = readFileSync(markerPath, "utf-8").trim();
498
+ if (content === "stagehand" || content === "agent-browser") {
499
+ return content;
500
+ }
501
+ return void 0;
502
+ } catch {
503
+ return void 0;
504
+ }
505
+ }
506
+ function setProfileProvider(profilePath, provider) {
507
+ const markerPath = join(profilePath, PROFILE_PROVIDER_MARKER);
508
+ if (!existsSync(profilePath)) {
509
+ mkdirSync(profilePath, { recursive: true });
510
+ }
511
+ writeFileSync(markerPath, provider, "utf-8");
512
+ }
513
+ function checkProfileProviderMismatch(profilePath, targetProvider) {
514
+ if (!profilePath) {
515
+ return void 0;
516
+ }
517
+ const existingProvider = getProfileProvider(profilePath);
518
+ if (existingProvider && existingProvider !== targetProvider) {
519
+ return existingProvider;
520
+ }
521
+ return void 0;
522
+ }
523
+ function browserRecordingOptions() {
524
+ return { outputDir: join(getAppDataDir(), "browser-recordings") };
525
+ }
526
+ async function createBrowserFromSettings(settings) {
527
+ if (!settings.enabled) {
528
+ return void 0;
529
+ }
530
+ const { provider, headless, viewport, cdpUrl, profile, executablePath, stagehand, agentBrowser } = settings;
531
+ const scope = profile ? "shared" : settings.scope;
532
+ const launchConfig = { headless, viewport, profile, executablePath, scope };
533
+ if (provider === "stagehand") {
534
+ const { StagehandBrowser } = await import("@mastra/stagehand");
535
+ const stagehandOpts = {
536
+ env: stagehand?.env ?? "LOCAL",
537
+ apiKey: stagehand?.apiKey ?? process.env.BROWSERBASE_API_KEY,
538
+ projectId: stagehand?.projectId ?? process.env.BROWSERBASE_PROJECT_ID,
539
+ preserveUserDataDir: stagehand?.preserveUserDataDir,
540
+ recording: browserRecordingOptions()
541
+ };
542
+ const authStorage = new AuthStorage();
543
+ const cred = authStorage.get("openai-codex");
544
+ if (cred?.type === "oauth") {
545
+ const accountId = cred.accountId;
546
+ stagehandOpts.model = {
547
+ modelName: "openai/gpt-5.4-mini",
548
+ apiKey: "codex-oauth",
549
+ baseURL: "https://chatgpt.com/backend-api/codex",
550
+ headers: {
551
+ originator: "mastracode",
552
+ "User-Agent": "mastracode",
553
+ ...accountId ? { "ChatGPT-Account-ID": accountId } : {}
554
+ },
555
+ fetch: buildCodexStagehandFetch(authStorage),
556
+ middleware: createCodexMiddleware()
557
+ };
558
+ }
559
+ return cdpUrl ? new StagehandBrowser({ ...launchConfig, cdpUrl, scope: "shared", ...stagehandOpts }) : new StagehandBrowser({ ...launchConfig, ...stagehandOpts });
560
+ } else if (provider === "agent-browser") {
561
+ const { AgentBrowser } = await import("@mastra/agent-browser");
562
+ const agentBrowserOpts = {
563
+ storageState: agentBrowser?.storageState,
564
+ recording: browserRecordingOptions()
565
+ };
566
+ return cdpUrl ? new AgentBrowser({ ...launchConfig, cdpUrl, scope: "shared", ...agentBrowserOpts }) : new AgentBrowser({ ...launchConfig, ...agentBrowserOpts, scope });
567
+ }
568
+ throw new Error(`Unsupported browser provider: ${provider}`);
569
+ }
570
+ export {
571
+ MEMORY_GATEWAY_DEFAULT_URL,
572
+ MEMORY_GATEWAY_PROVIDER,
573
+ OBSERVABILITY_AUTH_PREFIX,
574
+ STORAGE_DEFAULTS,
575
+ THREAD_ACTIVE_MODEL_PACK_ID_KEY,
576
+ checkProfileProviderMismatch,
577
+ createBrowserFromSettings,
578
+ defaultVoiceEngine,
579
+ getCustomProviderId,
580
+ getProfileProvider,
581
+ getSettingsPath,
582
+ loadSettings,
583
+ migrateLegacyVariedPack,
584
+ parseCustomProviders,
585
+ parseThreadSettings,
586
+ resolveModelDefaults,
587
+ resolveOmModel,
588
+ resolveOmRoleModel,
589
+ resolveThreadActiveModelPackId,
590
+ saveSettings,
591
+ setProfileProvider,
592
+ toCustomProviderModelId
593
+ };
594
+ //# sourceMappingURL=settings.js.map