@mastra/code-sdk 1.8.0-alpha.7 → 1.8.0-alpha.8
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.
- package/dist/agents/mastracode-gateway.d.ts +2 -0
- package/dist/agents/mastracode-gateway.d.ts.map +1 -1
- package/dist/agents/mastracode-gateway.js +29 -10
- package/dist/agents/mastracode-gateway.js.map +1 -1
- package/dist/agents/memory.d.ts +1 -1
- package/dist/agents/memory.d.ts.map +1 -1
- package/dist/agents/memory.js +32 -25
- package/dist/agents/memory.js.map +1 -1
- package/dist/agents/model.d.ts +41 -1
- package/dist/agents/model.d.ts.map +1 -1
- package/dist/agents/model.js +141 -7
- package/dist/agents/model.js.map +1 -1
- package/dist/auth/account-rotation-processor.d.ts +207 -0
- package/dist/auth/account-rotation-processor.d.ts.map +1 -0
- package/dist/auth/account-rotation-processor.js +669 -0
- package/dist/auth/account-rotation-processor.js.map +1 -0
- package/dist/auth/account-routing-context.d.ts +13 -0
- package/dist/auth/account-routing-context.d.ts.map +1 -0
- package/dist/auth/account-routing-context.js +41 -0
- package/dist/auth/account-routing-context.js.map +1 -0
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -1
- package/dist/auth/providers/anthropic.d.ts.map +1 -1
- package/dist/auth/providers/anthropic.js +2 -8
- package/dist/auth/providers/anthropic.js.map +1 -1
- package/dist/auth/providers/github-copilot.d.ts.map +1 -1
- package/dist/auth/providers/github-copilot.js +34 -12
- package/dist/auth/providers/github-copilot.js.map +1 -1
- package/dist/auth/providers/kimi-coding.d.ts.map +1 -1
- package/dist/auth/providers/kimi-coding.js +2 -6
- package/dist/auth/providers/kimi-coding.js.map +1 -1
- package/dist/auth/providers/openai-codex.d.ts +3 -1
- package/dist/auth/providers/openai-codex.d.ts.map +1 -1
- package/dist/auth/providers/openai-codex.js +50 -24
- package/dist/auth/providers/openai-codex.js.map +1 -1
- package/dist/auth/providers/xai.d.ts +1 -1
- package/dist/auth/providers/xai.d.ts.map +1 -1
- package/dist/auth/providers/xai.js +36 -16
- package/dist/auth/providers/xai.js.map +1 -1
- package/dist/auth/storage.d.ts +130 -8
- package/dist/auth/storage.d.ts.map +1 -1
- package/dist/auth/storage.js +602 -39
- package/dist/auth/storage.js.map +1 -1
- package/dist/auth/types.d.ts +69 -2
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +88 -23
- package/dist/index.js.map +1 -1
- package/dist/onboarding/custom-packs.d.ts.map +1 -1
- package/dist/onboarding/custom-packs.js +3 -0
- package/dist/onboarding/custom-packs.js.map +1 -1
- package/dist/onboarding/index.js +1 -1
- package/dist/onboarding/packs.d.ts +44 -0
- package/dist/onboarding/packs.d.ts.map +1 -1
- package/dist/onboarding/packs.js +80 -2
- package/dist/onboarding/packs.js.map +1 -1
- package/dist/onboarding/settings.d.ts +28 -0
- package/dist/onboarding/settings.d.ts.map +1 -1
- package/dist/onboarding/settings.js +81 -8
- package/dist/onboarding/settings.js.map +1 -1
- package/dist/providers/claude-max.d.ts.map +1 -1
- package/dist/providers/claude-max.js +4 -5
- package/dist/providers/claude-max.js.map +1 -1
- package/dist/providers/github-copilot.d.ts +1 -1
- package/dist/providers/github-copilot.d.ts.map +1 -1
- package/dist/providers/github-copilot.js +89 -37
- package/dist/providers/github-copilot.js.map +1 -1
- package/dist/providers/kimi-coding.d.ts.map +1 -1
- package/dist/providers/kimi-coding.js +16 -2
- package/dist/providers/kimi-coding.js.map +1 -1
- package/dist/providers/openai-codex.d.ts.map +1 -1
- package/dist/providers/openai-codex.js +42 -27
- package/dist/providers/openai-codex.js.map +1 -1
- package/dist/schema.d.ts +27 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +9 -0
- package/dist/schema.js.map +1 -1
- package/package.json +9 -9
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../../src/onboarding/packs.ts"],"names":[],"mappings":"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"}
|
package/dist/onboarding/packs.js
CHANGED
|
@@ -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":"AAAA;;;;GAIG;
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|