@mastra/code-sdk 1.8.0-alpha.7 → 1.8.0-alpha.9

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 (79) hide show
  1. package/dist/agents/mastracode-gateway.d.ts +2 -0
  2. package/dist/agents/mastracode-gateway.d.ts.map +1 -1
  3. package/dist/agents/mastracode-gateway.js +29 -10
  4. package/dist/agents/mastracode-gateway.js.map +1 -1
  5. package/dist/agents/memory.d.ts +1 -1
  6. package/dist/agents/memory.d.ts.map +1 -1
  7. package/dist/agents/memory.js +32 -25
  8. package/dist/agents/memory.js.map +1 -1
  9. package/dist/agents/model.d.ts +41 -1
  10. package/dist/agents/model.d.ts.map +1 -1
  11. package/dist/agents/model.js +141 -7
  12. package/dist/agents/model.js.map +1 -1
  13. package/dist/auth/account-rotation-processor.d.ts +207 -0
  14. package/dist/auth/account-rotation-processor.d.ts.map +1 -0
  15. package/dist/auth/account-rotation-processor.js +669 -0
  16. package/dist/auth/account-rotation-processor.js.map +1 -0
  17. package/dist/auth/account-routing-context.d.ts +13 -0
  18. package/dist/auth/account-routing-context.d.ts.map +1 -0
  19. package/dist/auth/account-routing-context.js +41 -0
  20. package/dist/auth/account-routing-context.js.map +1 -0
  21. package/dist/auth/index.d.ts +1 -0
  22. package/dist/auth/index.d.ts.map +1 -1
  23. package/dist/auth/index.js +2 -1
  24. package/dist/auth/providers/anthropic.d.ts.map +1 -1
  25. package/dist/auth/providers/anthropic.js +2 -8
  26. package/dist/auth/providers/anthropic.js.map +1 -1
  27. package/dist/auth/providers/github-copilot.d.ts.map +1 -1
  28. package/dist/auth/providers/github-copilot.js +34 -12
  29. package/dist/auth/providers/github-copilot.js.map +1 -1
  30. package/dist/auth/providers/kimi-coding.d.ts.map +1 -1
  31. package/dist/auth/providers/kimi-coding.js +2 -6
  32. package/dist/auth/providers/kimi-coding.js.map +1 -1
  33. package/dist/auth/providers/openai-codex.d.ts +3 -1
  34. package/dist/auth/providers/openai-codex.d.ts.map +1 -1
  35. package/dist/auth/providers/openai-codex.js +50 -24
  36. package/dist/auth/providers/openai-codex.js.map +1 -1
  37. package/dist/auth/providers/xai.d.ts +1 -1
  38. package/dist/auth/providers/xai.d.ts.map +1 -1
  39. package/dist/auth/providers/xai.js +36 -16
  40. package/dist/auth/providers/xai.js.map +1 -1
  41. package/dist/auth/storage.d.ts +130 -8
  42. package/dist/auth/storage.d.ts.map +1 -1
  43. package/dist/auth/storage.js +602 -39
  44. package/dist/auth/storage.js.map +1 -1
  45. package/dist/auth/types.d.ts +69 -2
  46. package/dist/auth/types.d.ts.map +1 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +88 -23
  49. package/dist/index.js.map +1 -1
  50. package/dist/onboarding/custom-packs.d.ts.map +1 -1
  51. package/dist/onboarding/custom-packs.js +3 -0
  52. package/dist/onboarding/custom-packs.js.map +1 -1
  53. package/dist/onboarding/index.js +1 -1
  54. package/dist/onboarding/packs.d.ts +44 -0
  55. package/dist/onboarding/packs.d.ts.map +1 -1
  56. package/dist/onboarding/packs.js +80 -2
  57. package/dist/onboarding/packs.js.map +1 -1
  58. package/dist/onboarding/settings.d.ts +28 -0
  59. package/dist/onboarding/settings.d.ts.map +1 -1
  60. package/dist/onboarding/settings.js +81 -8
  61. package/dist/onboarding/settings.js.map +1 -1
  62. package/dist/providers/claude-max.d.ts.map +1 -1
  63. package/dist/providers/claude-max.js +4 -5
  64. package/dist/providers/claude-max.js.map +1 -1
  65. package/dist/providers/github-copilot.d.ts +1 -1
  66. package/dist/providers/github-copilot.d.ts.map +1 -1
  67. package/dist/providers/github-copilot.js +89 -37
  68. package/dist/providers/github-copilot.js.map +1 -1
  69. package/dist/providers/kimi-coding.d.ts.map +1 -1
  70. package/dist/providers/kimi-coding.js +16 -2
  71. package/dist/providers/kimi-coding.js.map +1 -1
  72. package/dist/providers/openai-codex.d.ts.map +1 -1
  73. package/dist/providers/openai-codex.js +42 -27
  74. package/dist/providers/openai-codex.js.map +1 -1
  75. package/dist/schema.d.ts +27 -0
  76. package/dist/schema.d.ts.map +1 -1
  77. package/dist/schema.js +9 -0
  78. package/dist/schema.js.map +1 -1
  79. package/package.json +8 -8
@@ -6,6 +6,12 @@ export interface ModePack {
6
6
  build: string;
7
7
  plan: string;
8
8
  fast: string;
9
+ /**
10
+ * Optional observational-memory model. When set, OM observer/reflector
11
+ * resolve from the pack (and its fallback chain) instead of the standalone
12
+ * OM settings, unless an explicit OM role override exists.
13
+ */
14
+ memory?: string;
9
15
  };
10
16
  }
11
17
  export interface OMPack {
@@ -29,6 +35,44 @@ export interface ProviderAccess {
29
35
  export declare function getBuiltinModePack(packId: string): (ModePack & {
30
36
  providerId: string;
31
37
  }) | undefined;
38
+ /**
39
+ * All builtin mode packs regardless of provider access (descriptions use the
40
+ * apikey variant). For resolution-time lookups — fallback chains must resolve
41
+ * even when an access probe is stale; actual auth failures surface through
42
+ * the provider call itself.
43
+ */
44
+ export declare function listBuiltinModePacks(): ModePack[];
45
+ /** A pack id is known when it is a builtin mode pack or a saved custom pack. */
46
+ export declare function isKnownModePackId(packId: string, savedCustomPacks?: Array<{
47
+ name: string;
48
+ }>): boolean;
49
+ /**
50
+ * Drop pack-fallback entries whose source or target pack no longer exists
51
+ * (e.g. a deleted custom pack). Shape validation happens before this; here we
52
+ * only prune dangling references, with the same tolerance the rest of settings
53
+ * parsing uses.
54
+ */
55
+ export declare function pruneUnknownModePackFallbacks(fallbacks: Record<string, string>, savedCustomPacks?: Array<{
56
+ name: string;
57
+ }>): Record<string, string>;
58
+ /** Drop preferred-account bindings for missing packs or models no longer used by that pack. */
59
+ export declare function pruneUnknownPackAccountPreferences(preferences: Record<string, Record<string, string>>, savedCustomPacks?: Array<{
60
+ name: string;
61
+ models: Record<string, string>;
62
+ }>, modePackOverrides?: Record<string, Record<string, string>>): Record<string, Record<string, string>>;
63
+ /**
64
+ * Walk `settings.models.packFallbacks` from `startPackId`, returning the pack
65
+ * ids in cascade order starting with the pack itself. Cycles are allowed but
66
+ * the cascade gets exactly one revisit total (Q15: "full circle then one
67
+ * revisit then surface"): the walk stops when the next link would add a pack
68
+ * already in the chain after the revisit was consumed, or when a link
69
+ * dangles at an unknown pack. An A⇄B cycle therefore yields [A, B, A#2] and
70
+ * stops. This cap is the cycle handling for both the fallback model chain
71
+ * (request time) and the /models picker's chain display.
72
+ */
73
+ export declare function resolveModePackFallbackChain(fallbacks: Record<string, string>, startPackId: string, savedCustomPacks?: Array<{
74
+ name: string;
75
+ }>): string[];
32
76
  /**
33
77
  * Build the list of available mode packs based on which providers the user
34
78
  * can actually reach (API key or OAuth login).
@@ -1 +1 @@
1
- {"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../../src/onboarding/packs.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7D,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACzC;AAiDD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,CAUlG;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAM,GAC7E,QAAQ,EAAE,CAsCZ;AAyCD,6FAA6F;AAC7F,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,SAAsB,GAAG,MAAM,CAkB1G;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAuBpE;AAED,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc9G;AAMD,eAAO,MAAM,kBAAkB,IAAI,CAAC"}
1
+ {"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../../src/onboarding/packs.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb;;;;WAIG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7D,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;CACzC;AAiDD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,CAUlG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,QAAQ,EAAE,CAOjD;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GAAG,OAAO,CAQzG;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,gBAAgB,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAED,+FAA+F;AAC/F,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACnD,gBAAgB,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAM,EAC9E,iBAAiB,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAC7D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqBxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,WAAW,EAAE,MAAM,EACnB,gBAAgB,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAM,GAC7C,MAAM,EAAE,CAeV;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,gBAAgB,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAM,GAC7E,QAAQ,EAAE,CAuCZ;AAyCD,6FAA6F;AAC7F,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,SAAsB,GAAG,MAAM,CAkB1G;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAuBpE;AAED,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc9G;AAMD,eAAO,MAAM,kBAAkB,IAAI,CAAC"}
@@ -53,6 +53,83 @@ function getBuiltinModePack(packId) {
53
53
  };
54
54
  }
55
55
  /**
56
+ * All builtin mode packs regardless of provider access (descriptions use the
57
+ * apikey variant). For resolution-time lookups — fallback chains must resolve
58
+ * even when an access probe is stale; actual auth failures surface through
59
+ * the provider call itself.
60
+ */
61
+ function listBuiltinModePacks() {
62
+ return BUILTIN_MODE_PACKS.map((pack) => ({
63
+ id: pack.id,
64
+ name: pack.name,
65
+ description: pack.description("apikey"),
66
+ models: { ...pack.models }
67
+ }));
68
+ }
69
+ /** A pack id is known when it is a builtin mode pack or a saved custom pack. */
70
+ function isKnownModePackId(packId, savedCustomPacks = []) {
71
+ if (BUILTIN_MODE_PACKS.some((pack) => pack.id === packId)) return true;
72
+ if (!packId.startsWith("custom:")) return false;
73
+ return savedCustomPacks.some((pack) => typeof pack?.name === "string" && `custom:${pack.name}` === packId);
74
+ }
75
+ /**
76
+ * Drop pack-fallback entries whose source or target pack no longer exists
77
+ * (e.g. a deleted custom pack). Shape validation happens before this; here we
78
+ * only prune dangling references, with the same tolerance the rest of settings
79
+ * parsing uses.
80
+ */
81
+ function pruneUnknownModePackFallbacks(fallbacks, savedCustomPacks = []) {
82
+ const result = {};
83
+ for (const [packId, fallbackId] of Object.entries(fallbacks)) if (isKnownModePackId(packId, savedCustomPacks) && isKnownModePackId(fallbackId, savedCustomPacks)) result[packId] = fallbackId;
84
+ return result;
85
+ }
86
+ /** Drop preferred-account bindings for missing packs or models no longer used by that pack. */
87
+ function pruneUnknownPackAccountPreferences(preferences, savedCustomPacks = [], modePackOverrides = {}) {
88
+ const packModels = /* @__PURE__ */ new Map();
89
+ for (const pack of listBuiltinModePacks()) packModels.set(pack.id, new Set(Object.values({
90
+ ...pack.models,
91
+ ...modePackOverrides[pack.id]
92
+ })));
93
+ for (const pack of savedCustomPacks) {
94
+ const models = pack?.models && typeof pack.models === "object" ? pack.models : {};
95
+ packModels.set(`custom:${pack.name}`, new Set(Object.values(models)));
96
+ }
97
+ const result = {};
98
+ for (const [packId, modelPreferences] of Object.entries(preferences)) {
99
+ const models = packModels.get(packId);
100
+ if (!models) continue;
101
+ const validEntries = Object.entries(modelPreferences).filter(([modelId]) => models.has(modelId));
102
+ if (validEntries.length > 0) result[packId] = Object.fromEntries(validEntries);
103
+ }
104
+ return result;
105
+ }
106
+ /**
107
+ * Walk `settings.models.packFallbacks` from `startPackId`, returning the pack
108
+ * ids in cascade order starting with the pack itself. Cycles are allowed but
109
+ * the cascade gets exactly one revisit total (Q15: "full circle then one
110
+ * revisit then surface"): the walk stops when the next link would add a pack
111
+ * already in the chain after the revisit was consumed, or when a link
112
+ * dangles at an unknown pack. An A⇄B cycle therefore yields [A, B, A#2] and
113
+ * stops. This cap is the cycle handling for both the fallback model chain
114
+ * (request time) and the /models picker's chain display.
115
+ */
116
+ function resolveModePackFallbackChain(fallbacks, startPackId, savedCustomPacks = []) {
117
+ const chain = [startPackId];
118
+ let revisitUsed = false;
119
+ let current = startPackId;
120
+ while (true) {
121
+ const next = fallbacks[current];
122
+ if (!next || !isKnownModePackId(next, savedCustomPacks)) break;
123
+ if (chain.includes(next)) {
124
+ if (revisitUsed) break;
125
+ revisitUsed = true;
126
+ }
127
+ chain.push(next);
128
+ current = next;
129
+ }
130
+ return chain;
131
+ }
132
+ /**
56
133
  * Build the list of available mode packs based on which providers the user
57
134
  * can actually reach (API key or OAuth login).
58
135
  *
@@ -77,7 +154,8 @@ function getAvailableModePacks(access, savedCustomPacks = []) {
77
154
  models: {
78
155
  build: cp.models.build ?? "",
79
156
  plan: cp.models.plan ?? "",
80
- fast: cp.models.fast ?? ""
157
+ fast: cp.models.fast ?? "",
158
+ ...typeof cp.models.memory === "string" && cp.models.memory.length > 0 ? { memory: cp.models.memory } : {}
81
159
  }
82
160
  });
83
161
  const hasCustom = savedCustomPacks.length > 0;
@@ -177,6 +255,6 @@ function selectPreferredOMPack(access, preferredProviderId) {
177
255
  }
178
256
  const ONBOARDING_VERSION = 1;
179
257
  //#endregion
180
- export { ONBOARDING_VERSION, getAvailableModePacks, getAvailableOmPacks, getBuiltinModePack, resolveProviderOMDefault, selectPreferredOMPack };
258
+ export { ONBOARDING_VERSION, getAvailableModePacks, getAvailableOmPacks, getBuiltinModePack, isKnownModePackId, listBuiltinModePacks, pruneUnknownModePackFallbacks, pruneUnknownPackAccountPreferences, resolveModePackFallbackChain, resolveProviderOMDefault, selectPreferredOMPack };
181
259
 
182
260
  //# sourceMappingURL=packs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packs.js","names":[],"sources":["../../src/onboarding/packs.ts"],"sourcesContent":["/**\n * Onboarding \"packs\" — predefined model configurations for each mode.\n *\n * Each pack assigns a default model to the build, plan, and fast modes,\n * plus an OM (observational memory) model.\n */\nimport { DEFAULT_OM_MODEL_ID } from '../constants.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface ModePack {\n id: string;\n name: string;\n description: string;\n models: {\n build: string;\n plan: string;\n fast: string;\n };\n}\n\nexport interface OMPack {\n id: string;\n name: string;\n description: string;\n modelId: string;\n}\n\ninterface BuiltinOMPack {\n id: string;\n providerId: string;\n name: string;\n modelId: string;\n description: (access: Exclude<ProviderAccessLevel, false>) => string;\n}\n\n/** How a provider is accessed: OAuth subscription, API key, or not at all. */\nexport type ProviderAccessLevel = 'oauth' | 'apikey' | false;\n\n/** Which providers the user has access to and how. */\nexport interface ProviderAccess {\n anthropic: ProviderAccessLevel;\n openai: ProviderAccessLevel;\n cerebras: ProviderAccessLevel;\n google: ProviderAccessLevel;\n deepseek: ProviderAccessLevel;\n 'github-copilot': ProviderAccessLevel;\n [provider: string]: ProviderAccessLevel;\n}\n\n// ---------------------------------------------------------------------------\n// Mode Packs\n// ---------------------------------------------------------------------------\n\ninterface BuiltinModePack extends Omit<ModePack, 'description'> {\n providerId: string;\n description: (access: Exclude<ProviderAccessLevel, false>) => string;\n}\n\nconst BUILTIN_MODE_PACKS: BuiltinModePack[] = [\n {\n id: 'anthropic',\n providerId: 'anthropic',\n name: 'Anthropic',\n description: access =>\n access === 'oauth' ? 'All Anthropic models via Max subscription' : 'All Anthropic models via API key',\n models: {\n build: 'anthropic/claude-fable-5',\n plan: 'anthropic/claude-fable-5',\n fast: 'anthropic/claude-haiku-4-5',\n },\n },\n {\n id: 'openai',\n providerId: 'openai',\n name: 'OpenAI',\n description: access =>\n access === 'oauth' ? 'All OpenAI models via Codex subscription' : 'All OpenAI models via API key',\n models: {\n build: 'openai/gpt-5.6-sol',\n plan: 'openai/gpt-5.6-sol',\n fast: 'openai/gpt-5.4-mini',\n },\n },\n {\n id: 'github-copilot',\n providerId: 'github-copilot',\n name: 'GitHub Copilot',\n description: () => 'GitHub Copilot subscription',\n models: {\n build: 'github-copilot/gpt-4.1',\n plan: 'github-copilot/gemini-2.5-pro',\n fast: 'github-copilot/grok-code-fast-1',\n },\n },\n];\n\nexport function getBuiltinModePack(packId: string): (ModePack & { providerId: string }) | undefined {\n const pack = BUILTIN_MODE_PACKS.find(item => item.id === packId);\n if (!pack) return undefined;\n return {\n id: pack.id,\n providerId: pack.providerId,\n name: pack.name,\n description: pack.description('apikey'),\n models: { ...pack.models },\n };\n}\n\n/**\n * Build the list of available mode packs based on which providers the user\n * can actually reach (API key or OAuth login).\n *\n * @param savedCustomPacks Previously saved custom packs from settings.json.\n * These are inserted before the \"New Custom\" option.\n */\nexport function getAvailableModePacks(\n access: ProviderAccess,\n savedCustomPacks: Array<{ name: string; models: Record<string, string> }> = [],\n): ModePack[] {\n const packs: ModePack[] = BUILTIN_MODE_PACKS.flatMap(pack => {\n const providerAccess = access[pack.providerId];\n if (!providerAccess) return [];\n return [\n {\n id: pack.id,\n name: pack.name,\n description: pack.description(providerAccess),\n models: { ...pack.models },\n },\n ];\n });\n\n // Saved custom packs — inserted before the \"New Custom\" option\n for (const cp of savedCustomPacks) {\n packs.push({\n id: `custom:${cp.name}`,\n name: cp.name,\n description: 'Saved custom pack',\n models: {\n build: cp.models.build ?? '',\n plan: cp.models.plan ?? '',\n fast: cp.models.fast ?? '',\n },\n });\n }\n\n // New Custom — always available; user picks each model individually\n const hasCustom = savedCustomPacks.length > 0;\n packs.push({\n id: 'custom',\n name: hasCustom ? 'New Custom' : 'Custom',\n description: 'Choose a model for each mode',\n models: { build: '', plan: '', fast: '' },\n });\n\n return packs;\n}\n\n// ---------------------------------------------------------------------------\n// OM Packs\n// ---------------------------------------------------------------------------\n\nconst BUILTIN_OM_PACKS: BuiltinOMPack[] = [\n {\n id: 'gemini',\n providerId: 'google',\n name: 'Gemini Flash',\n modelId: 'google/gemini-3.5-flash',\n description: access => (access === 'oauth' ? 'Via Google OAuth' : 'Via Google API key'),\n },\n {\n id: 'anthropic',\n providerId: 'anthropic',\n name: 'Claude Haiku',\n modelId: 'anthropic/claude-haiku-4-5',\n description: access => (access === 'oauth' ? 'Via Max subscription' : 'Via Anthropic API key'),\n },\n {\n id: 'openai',\n providerId: 'openai',\n name: 'OpenAI Mini',\n modelId: 'openai/gpt-5.4-mini',\n description: access => (access === 'oauth' ? 'Via Codex subscription' : 'Via OpenAI API key'),\n },\n {\n id: 'deepseek',\n providerId: 'deepseek',\n name: 'DeepSeek',\n modelId: 'deepseek/deepseek-v4-flash',\n description: () => 'Via DeepSeek API key',\n },\n];\n\nfunction normalizeOMProviderId(providerId: string): string {\n return providerId === 'openai-codex' ? 'openai' : providerId;\n}\n\n/** A provider's low-cost OM pack, or a custom pack on `fallbackModelId` when it has none. */\nexport function resolveProviderOMDefault(providerId: string, fallbackModelId = DEFAULT_OM_MODEL_ID): OMPack {\n const normalizedProviderId = normalizeOMProviderId(providerId);\n const builtin = BUILTIN_OM_PACKS.find(pack => pack.providerId === normalizedProviderId);\n if (builtin) {\n return {\n id: builtin.id,\n name: builtin.name,\n description: builtin.description('apikey'),\n modelId: builtin.modelId,\n };\n }\n\n return {\n id: 'custom',\n name: 'Custom',\n description: 'Uses the selected provider model',\n modelId: fallbackModelId || DEFAULT_OM_MODEL_ID,\n };\n}\n\nexport function getAvailableOmPacks(access: ProviderAccess): OMPack[] {\n const packs = BUILTIN_OM_PACKS.flatMap(pack => {\n const providerAccess = access[pack.providerId];\n if (!providerAccess) return [];\n return [\n {\n id: pack.id,\n name: pack.name,\n description: pack.description(providerAccess),\n modelId: pack.modelId,\n },\n ];\n });\n\n // Custom — always available; user picks any model\n packs.push({\n id: 'custom',\n name: 'Custom',\n description: 'Choose any available model',\n modelId: '',\n });\n\n return packs;\n}\n\n/** Best reachable built-in OM pack: preferred provider, then OAuth, then built-in order. */\nexport function selectPreferredOMPack(access: ProviderAccess, preferredProviderId?: string): OMPack | undefined {\n const available = getAvailableOmPacks(access).filter(pack => pack.id !== 'custom');\n\n if (preferredProviderId) {\n const preferredPackId = resolveProviderOMDefault(preferredProviderId).id;\n const preferred = available.find(pack => pack.id === preferredPackId);\n if (preferred) return preferred;\n }\n\n const oauth = available.find(pack => {\n const definition = BUILTIN_OM_PACKS.find(candidate => candidate.id === pack.id);\n return definition ? access[definition.providerId] === 'oauth' : false;\n });\n return oauth ?? available[0];\n}\n\n// ---------------------------------------------------------------------------\n// Current onboarding version — bump when adding new steps\n// ---------------------------------------------------------------------------\n\nexport const ONBOARDING_VERSION = 1;\n"],"mappings":"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"}
1
+ {"version":3,"file":"packs.js","names":[],"sources":["../../src/onboarding/packs.ts"],"sourcesContent":["/**\n * Onboarding \"packs\" — predefined model configurations for each mode.\n *\n * Each pack assigns a default model to the build, plan, and fast modes,\n * plus an OM (observational memory) model.\n */\nimport { DEFAULT_OM_MODEL_ID } from '../constants.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface ModePack {\n id: string;\n name: string;\n description: string;\n models: {\n build: string;\n plan: string;\n fast: string;\n /**\n * Optional observational-memory model. When set, OM observer/reflector\n * resolve from the pack (and its fallback chain) instead of the standalone\n * OM settings, unless an explicit OM role override exists.\n */\n memory?: string;\n };\n}\n\nexport interface OMPack {\n id: string;\n name: string;\n description: string;\n modelId: string;\n}\n\ninterface BuiltinOMPack {\n id: string;\n providerId: string;\n name: string;\n modelId: string;\n description: (access: Exclude<ProviderAccessLevel, false>) => string;\n}\n\n/** How a provider is accessed: OAuth subscription, API key, or not at all. */\nexport type ProviderAccessLevel = 'oauth' | 'apikey' | false;\n\n/** Which providers the user has access to and how. */\nexport interface ProviderAccess {\n anthropic: ProviderAccessLevel;\n openai: ProviderAccessLevel;\n cerebras: ProviderAccessLevel;\n google: ProviderAccessLevel;\n deepseek: ProviderAccessLevel;\n 'github-copilot': ProviderAccessLevel;\n [provider: string]: ProviderAccessLevel;\n}\n\n// ---------------------------------------------------------------------------\n// Mode Packs\n// ---------------------------------------------------------------------------\n\ninterface BuiltinModePack extends Omit<ModePack, 'description'> {\n providerId: string;\n description: (access: Exclude<ProviderAccessLevel, false>) => string;\n}\n\nconst BUILTIN_MODE_PACKS: BuiltinModePack[] = [\n {\n id: 'anthropic',\n providerId: 'anthropic',\n name: 'Anthropic',\n description: access =>\n access === 'oauth' ? 'All Anthropic models via Max subscription' : 'All Anthropic models via API key',\n models: {\n build: 'anthropic/claude-fable-5',\n plan: 'anthropic/claude-fable-5',\n fast: 'anthropic/claude-haiku-4-5',\n },\n },\n {\n id: 'openai',\n providerId: 'openai',\n name: 'OpenAI',\n description: access =>\n access === 'oauth' ? 'All OpenAI models via Codex subscription' : 'All OpenAI models via API key',\n models: {\n build: 'openai/gpt-5.6-sol',\n plan: 'openai/gpt-5.6-sol',\n fast: 'openai/gpt-5.4-mini',\n },\n },\n {\n id: 'github-copilot',\n providerId: 'github-copilot',\n name: 'GitHub Copilot',\n description: () => 'GitHub Copilot subscription',\n models: {\n build: 'github-copilot/gpt-4.1',\n plan: 'github-copilot/gemini-2.5-pro',\n fast: 'github-copilot/grok-code-fast-1',\n },\n },\n];\n\nexport function getBuiltinModePack(packId: string): (ModePack & { providerId: string }) | undefined {\n const pack = BUILTIN_MODE_PACKS.find(item => item.id === packId);\n if (!pack) return undefined;\n return {\n id: pack.id,\n providerId: pack.providerId,\n name: pack.name,\n description: pack.description('apikey'),\n models: { ...pack.models },\n };\n}\n\n/**\n * All builtin mode packs regardless of provider access (descriptions use the\n * apikey variant). For resolution-time lookups — fallback chains must resolve\n * even when an access probe is stale; actual auth failures surface through\n * the provider call itself.\n */\nexport function listBuiltinModePacks(): ModePack[] {\n return BUILTIN_MODE_PACKS.map(pack => ({\n id: pack.id,\n name: pack.name,\n description: pack.description('apikey'),\n models: { ...pack.models },\n }));\n}\n\n/** A pack id is known when it is a builtin mode pack or a saved custom pack. */\nexport function isKnownModePackId(packId: string, savedCustomPacks: Array<{ name: string }> = []): boolean {\n if (BUILTIN_MODE_PACKS.some(pack => pack.id === packId)) return true;\n if (!packId.startsWith('custom:')) return false;\n // Settings files are user-editable: a malformed entry (null, or an element\n // without `name`) would throw on `pack.name` and the loader's catch-all would\n // replace the whole saved settings object with defaults. An unusable entry is\n // simply not a known pack id.\n return savedCustomPacks.some(pack => typeof pack?.name === 'string' && `custom:${pack.name}` === packId);\n}\n\n/**\n * Drop pack-fallback entries whose source or target pack no longer exists\n * (e.g. a deleted custom pack). Shape validation happens before this; here we\n * only prune dangling references, with the same tolerance the rest of settings\n * parsing uses.\n */\nexport function pruneUnknownModePackFallbacks(\n fallbacks: Record<string, string>,\n savedCustomPacks: Array<{ name: string }> = [],\n): Record<string, string> {\n const result: Record<string, string> = {};\n for (const [packId, fallbackId] of Object.entries(fallbacks)) {\n if (isKnownModePackId(packId, savedCustomPacks) && isKnownModePackId(fallbackId, savedCustomPacks)) {\n result[packId] = fallbackId;\n }\n }\n return result;\n}\n\n/** Drop preferred-account bindings for missing packs or models no longer used by that pack. */\nexport function pruneUnknownPackAccountPreferences(\n preferences: Record<string, Record<string, string>>,\n savedCustomPacks: Array<{ name: string; models: Record<string, string> }> = [],\n modePackOverrides: Record<string, Record<string, string>> = {},\n): Record<string, Record<string, string>> {\n const packModels = new Map<string, Set<string>>();\n for (const pack of listBuiltinModePacks()) {\n packModels.set(pack.id, new Set(Object.values({ ...pack.models, ...modePackOverrides[pack.id] })));\n }\n for (const pack of savedCustomPacks) {\n // Settings files are user-editable: a malformed entry without `models`\n // would otherwise throw here, and the loader's catch-all would replace the\n // whole saved settings object with defaults. Treat it as having no models.\n const models = pack?.models && typeof pack.models === 'object' ? pack.models : {};\n packModels.set(`custom:${pack.name}`, new Set(Object.values(models)));\n }\n\n const result: Record<string, Record<string, string>> = {};\n for (const [packId, modelPreferences] of Object.entries(preferences)) {\n const models = packModels.get(packId);\n if (!models) continue;\n const validEntries = Object.entries(modelPreferences).filter(([modelId]) => models.has(modelId));\n if (validEntries.length > 0) result[packId] = Object.fromEntries(validEntries);\n }\n return result;\n}\n\n/**\n * Walk `settings.models.packFallbacks` from `startPackId`, returning the pack\n * ids in cascade order starting with the pack itself. Cycles are allowed but\n * the cascade gets exactly one revisit total (Q15: \"full circle then one\n * revisit then surface\"): the walk stops when the next link would add a pack\n * already in the chain after the revisit was consumed, or when a link\n * dangles at an unknown pack. An A⇄B cycle therefore yields [A, B, A#2] and\n * stops. This cap is the cycle handling for both the fallback model chain\n * (request time) and the /models picker's chain display.\n */\nexport function resolveModePackFallbackChain(\n fallbacks: Record<string, string>,\n startPackId: string,\n savedCustomPacks: Array<{ name: string }> = [],\n): string[] {\n const chain = [startPackId];\n let revisitUsed = false;\n let current = startPackId;\n while (true) {\n const next = fallbacks[current];\n if (!next || !isKnownModePackId(next, savedCustomPacks)) break;\n if (chain.includes(next)) {\n if (revisitUsed) break;\n revisitUsed = true;\n }\n chain.push(next);\n current = next;\n }\n return chain;\n}\n\n/**\n * Build the list of available mode packs based on which providers the user\n * can actually reach (API key or OAuth login).\n *\n * @param savedCustomPacks Previously saved custom packs from settings.json.\n * These are inserted before the \"New Custom\" option.\n */\nexport function getAvailableModePacks(\n access: ProviderAccess,\n savedCustomPacks: Array<{ name: string; models: Record<string, string> }> = [],\n): ModePack[] {\n const packs: ModePack[] = BUILTIN_MODE_PACKS.flatMap(pack => {\n const providerAccess = access[pack.providerId];\n if (!providerAccess) return [];\n return [\n {\n id: pack.id,\n name: pack.name,\n description: pack.description(providerAccess),\n models: { ...pack.models },\n },\n ];\n });\n\n // Saved custom packs — inserted before the \"New Custom\" option\n for (const cp of savedCustomPacks) {\n packs.push({\n id: `custom:${cp.name}`,\n name: cp.name,\n description: 'Saved custom pack',\n models: {\n build: cp.models.build ?? '',\n plan: cp.models.plan ?? '',\n fast: cp.models.fast ?? '',\n ...(typeof cp.models.memory === 'string' && cp.models.memory.length > 0 ? { memory: cp.models.memory } : {}),\n },\n });\n }\n\n // New Custom — always available; user picks each model individually\n const hasCustom = savedCustomPacks.length > 0;\n packs.push({\n id: 'custom',\n name: hasCustom ? 'New Custom' : 'Custom',\n description: 'Choose a model for each mode',\n models: { build: '', plan: '', fast: '' },\n });\n\n return packs;\n}\n\n// ---------------------------------------------------------------------------\n// OM Packs\n// ---------------------------------------------------------------------------\n\nconst BUILTIN_OM_PACKS: BuiltinOMPack[] = [\n {\n id: 'gemini',\n providerId: 'google',\n name: 'Gemini Flash',\n modelId: 'google/gemini-3.5-flash',\n description: access => (access === 'oauth' ? 'Via Google OAuth' : 'Via Google API key'),\n },\n {\n id: 'anthropic',\n providerId: 'anthropic',\n name: 'Claude Haiku',\n modelId: 'anthropic/claude-haiku-4-5',\n description: access => (access === 'oauth' ? 'Via Max subscription' : 'Via Anthropic API key'),\n },\n {\n id: 'openai',\n providerId: 'openai',\n name: 'OpenAI Mini',\n modelId: 'openai/gpt-5.4-mini',\n description: access => (access === 'oauth' ? 'Via Codex subscription' : 'Via OpenAI API key'),\n },\n {\n id: 'deepseek',\n providerId: 'deepseek',\n name: 'DeepSeek',\n modelId: 'deepseek/deepseek-v4-flash',\n description: () => 'Via DeepSeek API key',\n },\n];\n\nfunction normalizeOMProviderId(providerId: string): string {\n return providerId === 'openai-codex' ? 'openai' : providerId;\n}\n\n/** A provider's low-cost OM pack, or a custom pack on `fallbackModelId` when it has none. */\nexport function resolveProviderOMDefault(providerId: string, fallbackModelId = DEFAULT_OM_MODEL_ID): OMPack {\n const normalizedProviderId = normalizeOMProviderId(providerId);\n const builtin = BUILTIN_OM_PACKS.find(pack => pack.providerId === normalizedProviderId);\n if (builtin) {\n return {\n id: builtin.id,\n name: builtin.name,\n description: builtin.description('apikey'),\n modelId: builtin.modelId,\n };\n }\n\n return {\n id: 'custom',\n name: 'Custom',\n description: 'Uses the selected provider model',\n modelId: fallbackModelId || DEFAULT_OM_MODEL_ID,\n };\n}\n\nexport function getAvailableOmPacks(access: ProviderAccess): OMPack[] {\n const packs = BUILTIN_OM_PACKS.flatMap(pack => {\n const providerAccess = access[pack.providerId];\n if (!providerAccess) return [];\n return [\n {\n id: pack.id,\n name: pack.name,\n description: pack.description(providerAccess),\n modelId: pack.modelId,\n },\n ];\n });\n\n // Custom — always available; user picks any model\n packs.push({\n id: 'custom',\n name: 'Custom',\n description: 'Choose any available model',\n modelId: '',\n });\n\n return packs;\n}\n\n/** Best reachable built-in OM pack: preferred provider, then OAuth, then built-in order. */\nexport function selectPreferredOMPack(access: ProviderAccess, preferredProviderId?: string): OMPack | undefined {\n const available = getAvailableOmPacks(access).filter(pack => pack.id !== 'custom');\n\n if (preferredProviderId) {\n const preferredPackId = resolveProviderOMDefault(preferredProviderId).id;\n const preferred = available.find(pack => pack.id === preferredPackId);\n if (preferred) return preferred;\n }\n\n const oauth = available.find(pack => {\n const definition = BUILTIN_OM_PACKS.find(candidate => candidate.id === pack.id);\n return definition ? access[definition.providerId] === 'oauth' : false;\n });\n return oauth ?? available[0];\n}\n\n// ---------------------------------------------------------------------------\n// Current onboarding version — bump when adding new steps\n// ---------------------------------------------------------------------------\n\nexport const ONBOARDING_VERSION = 1;\n"],"mappings":"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"}
@@ -169,6 +169,7 @@ export interface BrowserSettings {
169
169
  /** AgentBrowser-specific settings. */
170
170
  agentBrowser?: AgentBrowserSettings;
171
171
  }
172
+ export type PackAccountPreferences = Record<string, Record<string, string>>;
172
173
  export interface GlobalSettings {
173
174
  onboarding: {
174
175
  completedAt: string | null;
@@ -189,6 +190,16 @@ export interface GlobalSettings {
189
190
  activeModelPackId: string | null;
190
191
  /** Per-mode overrides keyed by built-in pack ID. */
191
192
  modePackOverrides: Record<string, Record<string, string>>;
193
+ /**
194
+ * Fallback pack per pack ID (packId → packId; builtin ids and
195
+ * "custom:<name>" both allowed). When every account serving a pack's
196
+ * provider is exhausted — or the provider is persistently down — the turn
197
+ * hops to the fallback pack's model. Chains are allowed; a cycle is
198
+ * capped at one revisit per cascade, then the error surfaces.
199
+ */
200
+ packFallbacks: Record<string, string>;
201
+ /** Preferred OAuth account by pack ID and resolved model ID. */
202
+ packAccountPreferences: Record<string, Record<string, string>>;
192
203
  /** Explicit per-mode defaults — used when no activeModelPackId is set. */
193
204
  modeDefaults: Record<string, string>;
194
205
  /**
@@ -321,6 +332,10 @@ export declare const STORAGE_DEFAULTS: StorageSettings;
321
332
  /** Default STT engine: on-device macOS recognizer where available, else cloud. */
322
333
  export declare function defaultVoiceEngine(): VoiceEngine;
323
334
  export declare const WEB_SEARCH_PROVIDER_VALUES: WebSearchProviderSetting[];
335
+ /** Move persisted routing choices when re-authentication changes an account instance id. */
336
+ export declare function migrateAccountPreferences(settings: GlobalSettings, previousAccountId: string, nextAccountId: string): void;
337
+ /** Remove persisted routing choices that point at deleted OAuth account instances. */
338
+ export declare function pruneRemovedAccountPreferences(settings: GlobalSettings, removedAccountIds: Iterable<string>): void;
324
339
  export declare function getSettingsPath(): string;
325
340
  export declare function getCustomProviderId(name: string): string;
326
341
  export declare function toCustomProviderModelId(providerName: string, modelName: string): string;
@@ -344,6 +359,7 @@ export declare function resolveLspSetting(lsp: boolean | LSPConfig | undefined):
344
359
  export declare function migrateLegacyVariedPack(settings: GlobalSettings): boolean;
345
360
  export declare function loadSettings(filePath?: string): GlobalSettings;
346
361
  export declare const THREAD_ACTIVE_MODEL_PACK_ID_KEY = "activeModelPackId";
362
+ export declare const THREAD_FALLBACK_STATUS_KEY = "mastracodeFallbackStatus";
347
363
  export interface ThreadSettings {
348
364
  activeModelPackId: string | null;
349
365
  modeModelIds: Record<string, string>;
@@ -375,6 +391,18 @@ export declare function resolveModePackModels(settings: GlobalSettings, pack: {
375
391
  id: string;
376
392
  models: Record<string, string>;
377
393
  }): Record<string, string>;
394
+ /**
395
+ * Resolve a session's explicitly active pack when its mode model still matches.
396
+ * Model matching alone is not pack identity: multiple packs may intentionally
397
+ * use the same model, and inference would attach an unrelated fallback chain.
398
+ */
399
+ export declare function findModePackForModel(settings: GlobalSettings, packs: Array<{
400
+ id: string;
401
+ models: Record<string, string>;
402
+ }>, modelId: string, modeId: string, activePackId: string | undefined): {
403
+ id: string;
404
+ models: Record<string, string>;
405
+ } | undefined;
378
406
  export declare function resolveModelDefaults(settings: GlobalSettings, builtinPacks: Array<{
379
407
  id: string;
380
408
  models: Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/onboarding/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/onboarding/settings.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ import { AuthStorage } from "../auth/storage.js";
3
3
  import { THINKING_LEVEL_VALUES, isThinkingLevelSetting, resolveDefaultThinkingLevel as resolveDefaultThinkingLevel$1 } from "../thinking.js";
4
4
  import { buildCodexStagehandFetch, createCodexMiddleware } from "../providers/openai-codex.js";
5
5
  import { DEFAULT_STT_PROVIDER, resolveSTTModel } from "../voice/stt-registry.js";
6
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
6
+ import { pruneUnknownModePackFallbacks, pruneUnknownPackAccountPreferences } from "./packs.js";
7
+ import { randomUUID } from "crypto";
8
+ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "fs";
7
9
  import { dirname, join } from "path";
8
10
  //#region src/onboarding/settings.ts
9
11
  /**
@@ -95,6 +97,8 @@ const DEFAULTS = {
95
97
  models: {
96
98
  activeModelPackId: null,
97
99
  modePackOverrides: {},
100
+ packFallbacks: {},
101
+ packAccountPreferences: {},
98
102
  modeDefaults: {},
99
103
  modeThinkingDefaults: {},
100
104
  activeOmPackId: null,
@@ -193,6 +197,45 @@ function parseModePackOverrides(value) {
193
197
  }
194
198
  return result;
195
199
  }
200
+ function parsePackFallbacks(value) {
201
+ if (!value || typeof value !== "object") return {};
202
+ const result = {};
203
+ for (const [packId, fallbackId] of Object.entries(value)) if (typeof fallbackId === "string" && fallbackId.length > 0) result[packId] = fallbackId;
204
+ return result;
205
+ }
206
+ /** Shape-parse + drop entries whose source or target pack no longer exists. */
207
+ function loadPackFallbacks(value, customModelPacks) {
208
+ return pruneUnknownModePackFallbacks(parsePackFallbacks(value), customModelPacks);
209
+ }
210
+ function parsePackAccountPreferences(value) {
211
+ if (!value || typeof value !== "object") return {};
212
+ const result = {};
213
+ for (const [packId, modelPreferences] of Object.entries(value)) {
214
+ if (!modelPreferences || typeof modelPreferences !== "object") continue;
215
+ const parsed = Object.fromEntries(Object.entries(modelPreferences).filter((entry) => entry[0].length > 0 && typeof entry[1] === "string" && entry[1].length > 0));
216
+ if (Object.keys(parsed).length > 0) result[packId] = parsed;
217
+ }
218
+ return result;
219
+ }
220
+ function loadPackAccountPreferences(value, customModelPacks, modePackOverrides) {
221
+ return pruneUnknownPackAccountPreferences(parsePackAccountPreferences(value), customModelPacks, modePackOverrides);
222
+ }
223
+ /** Move persisted routing choices when re-authentication changes an account instance id. */
224
+ function migrateAccountPreferences(settings, previousAccountId, nextAccountId) {
225
+ if (previousAccountId === nextAccountId) return;
226
+ for (const modelPreferences of Object.values(settings.models.packAccountPreferences ?? {})) for (const [modelId, accountInstanceId] of Object.entries(modelPreferences)) if (accountInstanceId === previousAccountId) modelPreferences[modelId] = nextAccountId;
227
+ }
228
+ /** Remove persisted routing choices that point at deleted OAuth account instances. */
229
+ function pruneRemovedAccountPreferences(settings, removedAccountIds) {
230
+ const removed = new Set(removedAccountIds);
231
+ if (removed.size === 0) return;
232
+ const next = {};
233
+ for (const [packId, modelPreferences] of Object.entries(settings.models.packAccountPreferences ?? {})) {
234
+ const retained = Object.fromEntries(Object.entries(modelPreferences).filter(([, accountInstanceId]) => !removed.has(accountInstanceId)));
235
+ if (Object.keys(retained).length > 0) next[packId] = retained;
236
+ }
237
+ settings.models.packAccountPreferences = next;
238
+ }
196
239
  function parseQuietModeMaxToolPreviewLines(value) {
197
240
  const rawValue = typeof value === "number" && Number.isFinite(value) ? value : DEFAULTS.preferences.quietModeMaxToolPreviewLines;
198
241
  return Math.min(QUIET_MODE_MAX_TOOL_PREVIEW_LINES_MAX, Math.max(0, Math.floor(rawValue)));
@@ -455,6 +498,8 @@ function migrateFromAuth(settingsPath) {
455
498
  let settings;
456
499
  if (existsSync(settingsPath)) try {
457
500
  const raw = JSON.parse(readFileSync(settingsPath, "utf-8"));
501
+ const rawCustomPacks = Array.isArray(raw.customModelPacks) ? raw.customModelPacks : [];
502
+ const modePackOverrides = parseModePackOverrides(raw.models?.modePackOverrides);
458
503
  settings = {
459
504
  onboarding: {
460
505
  ...DEFAULTS.onboarding,
@@ -463,8 +508,10 @@ function migrateFromAuth(settingsPath) {
463
508
  models: {
464
509
  ...DEFAULTS.models,
465
510
  ...raw.models,
466
- modePackOverrides: parseModePackOverrides(raw.models?.modePackOverrides),
467
- modeThinkingDefaults: parseModeThinkingDefaults(raw.models?.modeThinkingDefaults)
511
+ modePackOverrides,
512
+ modeThinkingDefaults: parseModeThinkingDefaults(raw.models?.modeThinkingDefaults),
513
+ packFallbacks: loadPackFallbacks(raw.models?.packFallbacks, rawCustomPacks),
514
+ packAccountPreferences: loadPackAccountPreferences(raw.models?.packAccountPreferences, rawCustomPacks, modePackOverrides)
468
515
  },
469
516
  preferences: parsePreferences(raw.preferences),
470
517
  storage: {
@@ -514,7 +561,7 @@ function migrateFromAuth(settingsPath) {
514
561
  saveSettings(settings, settingsPath);
515
562
  for (const key of modelKeys) delete authData[key];
516
563
  try {
517
- writeFileSync(authPath, JSON.stringify(authData, null, 2), "utf-8");
564
+ writeFileAtomically(authPath, JSON.stringify(authData, null, 2));
518
565
  } catch {}
519
566
  return true;
520
567
  }
@@ -548,6 +595,8 @@ function loadSettings(filePath = getSettingsPath()) {
548
595
  if (!existsSync(filePath)) return rememberLoadedSettings(getNewInstallDefaults());
549
596
  try {
550
597
  const raw = JSON.parse(readFileSync(filePath, "utf-8"));
598
+ const rawCustomPacks = Array.isArray(raw.customModelPacks) ? raw.customModelPacks : [];
599
+ const modePackOverrides = parseModePackOverrides(raw.models?.modePackOverrides);
551
600
  const settings = {
552
601
  ...raw,
553
602
  onboarding: {
@@ -557,8 +606,10 @@ function loadSettings(filePath = getSettingsPath()) {
557
606
  models: {
558
607
  ...DEFAULTS.models,
559
608
  ...raw.models,
560
- modePackOverrides: parseModePackOverrides(raw.models?.modePackOverrides),
561
- modeThinkingDefaults: parseModeThinkingDefaults(raw.models?.modeThinkingDefaults)
609
+ modePackOverrides,
610
+ modeThinkingDefaults: parseModeThinkingDefaults(raw.models?.modeThinkingDefaults),
611
+ packFallbacks: loadPackFallbacks(raw.models?.packFallbacks, rawCustomPacks),
612
+ packAccountPreferences: loadPackAccountPreferences(raw.models?.packAccountPreferences, rawCustomPacks, modePackOverrides)
562
613
  },
563
614
  preferences: parsePreferences(raw.preferences),
564
615
  storage: {
@@ -604,6 +655,7 @@ function loadSettings(filePath = getSettingsPath()) {
604
655
  }
605
656
  }
606
657
  const THREAD_ACTIVE_MODEL_PACK_ID_KEY = "activeModelPackId";
658
+ const THREAD_FALLBACK_STATUS_KEY = "mastracodeFallbackStatus";
607
659
  function parseThreadSettings(metadata) {
608
660
  const modeModelIds = {};
609
661
  for (const [key, value] of Object.entries(metadata ?? {})) {
@@ -663,6 +715,15 @@ function resolveModePackModels(settings, pack) {
663
715
  ...settings.models.modePackOverrides?.[pack.id]
664
716
  };
665
717
  }
718
+ /**
719
+ * Resolve a session's explicitly active pack when its mode model still matches.
720
+ * Model matching alone is not pack identity: multiple packs may intentionally
721
+ * use the same model, and inference would attach an unrelated fallback chain.
722
+ */
723
+ function findModePackForModel(settings, packs, modelId, modeId, activePackId) {
724
+ const activePack = packs.find((pack) => pack.id === activePackId);
725
+ return activePack && resolveModePackModels(settings, activePack)[modeId] === modelId ? activePack : void 0;
726
+ }
666
727
  function resolveModelDefaults(settings, builtinPacks) {
667
728
  const { activeModelPackId, modeDefaults } = settings.models;
668
729
  if (!activeModelPackId) return modeDefaults;
@@ -733,13 +794,25 @@ function getSignalSettingsForSave(settings, filePath) {
733
794
  } catch {}
734
795
  return settings.signals;
735
796
  }
797
+ function writeFileAtomically(filePath, content) {
798
+ const tempPath = `${filePath}.${process.pid}.${randomUUID()}.tmp`;
799
+ try {
800
+ writeFileSync(tempPath, content, {
801
+ encoding: "utf-8",
802
+ mode: existsSync(filePath) ? statSync(filePath).mode & 511 : 384
803
+ });
804
+ renameSync(tempPath, filePath);
805
+ } finally {
806
+ rmSync(tempPath, { force: true });
807
+ }
808
+ }
736
809
  function saveSettings(settings, filePath = getSettingsPath()) {
737
810
  const dir = dirname(filePath);
738
811
  if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
739
812
  const signals = getSignalSettingsForSave(settings, filePath);
740
813
  settings.signals = signals;
741
814
  loadedSignalSettings.set(settings, cloneSignalSettings(signals));
742
- writeFileSync(filePath, JSON.stringify(settings, null, 2), "utf-8");
815
+ writeFileAtomically(filePath, JSON.stringify(settings, null, 2));
743
816
  }
744
817
  /** Marker file name to track which provider last used a profile. */
745
818
  const PROFILE_PROVIDER_MARKER = ".mastra-provider";
@@ -851,6 +924,6 @@ async function createBrowserFromSettings(settings) {
851
924
  throw new Error(`Unsupported browser provider: ${provider}`);
852
925
  }
853
926
  //#endregion
854
- export { GITHUB_POLL_INTERVAL_DEFAULT_MS, GITHUB_POLL_INTERVAL_MAX_MS, GITHUB_POLL_INTERVAL_MIN_MS, MASTRA_GATEWAY_DEFAULT_URL, MASTRA_GATEWAY_PROVIDER, MEMORY_GATEWAY_DEFAULT_URL, MEMORY_GATEWAY_PROVIDER, OBSERVABILITY_AUTH_PREFIX, STORAGE_DEFAULTS, THINKING_LEVEL_VALUES, THREAD_ACTIVE_MODEL_PACK_ID_KEY, VIEWPORT_PRESETS, WEB_SEARCH_PROVIDER_VALUES, checkProfileProviderMismatch, createBrowserFromSettings, defaultVoiceEngine, getCustomProviderId, getProfileProvider, getSettingsPath, isThinkingLevelSetting, loadSettings, migrateLegacyVariedPack, parseCustomProviders, parseThreadSettings, parseViewportInput, resolveDefaultThinkingLevel, resolveLspSetting, resolveModePackModels, resolveModelDefaults, resolveOmModel, resolveOmRoleModel, resolveThreadActiveModelPackId, saveSettings, setProfileProvider, stripMastraCodeCustomProviderPrefix, toCustomProviderModelId };
927
+ export { GITHUB_POLL_INTERVAL_DEFAULT_MS, GITHUB_POLL_INTERVAL_MAX_MS, GITHUB_POLL_INTERVAL_MIN_MS, MASTRA_GATEWAY_DEFAULT_URL, MASTRA_GATEWAY_PROVIDER, MEMORY_GATEWAY_DEFAULT_URL, MEMORY_GATEWAY_PROVIDER, OBSERVABILITY_AUTH_PREFIX, STORAGE_DEFAULTS, THINKING_LEVEL_VALUES, THREAD_ACTIVE_MODEL_PACK_ID_KEY, THREAD_FALLBACK_STATUS_KEY, VIEWPORT_PRESETS, WEB_SEARCH_PROVIDER_VALUES, checkProfileProviderMismatch, createBrowserFromSettings, defaultVoiceEngine, findModePackForModel, getCustomProviderId, getProfileProvider, getSettingsPath, isThinkingLevelSetting, loadSettings, migrateAccountPreferences, migrateLegacyVariedPack, parseCustomProviders, parseThreadSettings, parseViewportInput, pruneRemovedAccountPreferences, resolveDefaultThinkingLevel, resolveLspSetting, resolveModePackModels, resolveModelDefaults, resolveOmModel, resolveOmRoleModel, resolveThreadActiveModelPackId, saveSettings, setProfileProvider, stripMastraCodeCustomProviderPrefix, toCustomProviderModelId };
855
928
 
856
929
  //# sourceMappingURL=settings.js.map