@glassly/engine 0.3.5-dev.823 → 0.3.5-dev.826
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/build/engine.d.ts +3 -0
- package/build/engine.d.ts.map +1 -1
- package/build/facades/providerKeys.d.ts +6 -2
- package/build/facades/providerKeys.d.ts.map +1 -1
- package/build/facades/providerKeys.js +6 -2
- package/build/facades/providerKeys.js.map +1 -1
- package/build/generated/releaseMetadata.js +3 -3
- package/build/generated/releaseMetadata.js.map +1 -1
- package/build/services/AiTierResolution.d.ts +3 -2
- package/build/services/AiTierResolution.d.ts.map +1 -1
- package/build/services/AiTierResolution.js +7 -2
- package/build/services/AiTierResolution.js.map +1 -1
- package/build/services/CloudClientService.d.ts +4 -4
- package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
- package/build/services/LocalMiniappRuntime.js +6 -2
- package/build/services/LocalMiniappRuntime.js.map +1 -1
- package/build/services/ProviderKeyValidation.d.ts +2 -0
- package/build/services/ProviderKeyValidation.d.ts.map +1 -1
- package/build/services/ProviderKeyValidation.js +4 -0
- package/build/services/ProviderKeyValidation.js.map +1 -1
- package/build/stores/settings.d.ts.map +1 -1
- package/build/stores/settings.js +7 -0
- package/build/stores/settings.js.map +1 -1
- package/package.json +7 -7
- package/src/facades/providerKeys.ts +6 -1
- package/src/generated/releaseMetadata.ts +3 -3
- package/src/services/AiTierResolution.ts +9 -3
- package/src/services/LocalMiniappRuntime.ts +6 -1
- package/src/services/ProviderKeyValidation.ts +5 -0
- package/src/stores/settings.ts +7 -0
package/build/engine.d.ts
CHANGED
|
@@ -403,6 +403,9 @@ export declare const engine: {
|
|
|
403
403
|
openai: {
|
|
404
404
|
validateKey: (apiKey: string) => Promise<import("./services/ProviderKeyValidation").KeyValidationResult>;
|
|
405
405
|
};
|
|
406
|
+
deepseek: {
|
|
407
|
+
validateKey: (apiKey: string) => Promise<import("./services/ProviderKeyValidation").KeyValidationResult>;
|
|
408
|
+
};
|
|
406
409
|
elevenlabs: {
|
|
407
410
|
validateKey: (apiKey: string) => Promise<import("./services/ProviderKeyValidation").KeyValidationResult>;
|
|
408
411
|
};
|
package/build/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAC,SAAS,EAAkD,aAAa,EAAC,MAAM,qBAAqB,CAAA;AA+C5G,eAAO,MAAM,MAAM;IACjB,2EAA2E;;IAE3E,8EAA8E;;IAE9E;iDAC6C;;IAyG7C;;yCAEqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCrC,kEAAkE;;;;;;;;;;;;;;;;;;IAElE,wEAAwE;;;;;;;;IAExE,sEAAsE;;;;;;;;;;;;IAEtE,qFAAqF;;;;gBA3IhD,CAAC;mBAAiB,CAAC;;;gBAIrC,CAAC;mBAAkB,CAAA;;;;;;;;;;;;;;;;;IAyItC,qEAAqE;;;;IAErE,sFAAsF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEtF,6EAA6E;;;;;;;;;;;;IAE7E,iFAAiF;;;;;;;;;;;;;;;;;;;;;;;;IAEjF,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE9C,uDAAuD;;;;;;;;;;;;;;;;IAEvD,8EAA8E;;;;;;;;IAE9E,qFAAqF;;;;IAErF,4EAA4E;;;;;;;;;;;IAE5E,+EAA+E;;;;;;;;;;;;;;;IAE/E,kFAAkF;;;;;+BAlKnE,CAAC;;;+BAUd,CAAA;;;;;;;;;;;;IA0JF,mFAAmF
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAC,SAAS,EAAkD,aAAa,EAAC,MAAM,qBAAqB,CAAA;AA+C5G,eAAO,MAAM,MAAM;IACjB,2EAA2E;;IAE3E,8EAA8E;;IAE9E;iDAC6C;;IAyG7C;;yCAEqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoCrC,kEAAkE;;;;;;;;;;;;;;;;;;IAElE,wEAAwE;;;;;;;;IAExE,sEAAsE;;;;;;;;;;;;IAEtE,qFAAqF;;;;gBA3IhD,CAAC;mBAAiB,CAAC;;;gBAIrC,CAAC;mBAAkB,CAAA;;;;;;;;;;;;;;;;;IAyItC,qEAAqE;;;;IAErE,sFAAsF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEtF,6EAA6E;;;;;;;;;;;;IAE7E,iFAAiF;;;;;;;;;;;;;;;;;;;;;;;;IAEjF,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE9C,uDAAuD;;;;;;;;;;;;;;;;IAEvD,8EAA8E;;;;;;;;IAE9E,qFAAqF;;;;IAErF,4EAA4E;;;;;;;;;;;IAE5E,+EAA+E;;;;;;;;;;;;;;;IAE/E,kFAAkF;;;;;+BAlKnE,CAAC;;;+BAUd,CAAA;;;;;;;;;;;;IA0JF,mFAAmF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGpF,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* providerKeys facade — `engine.providerKeys.{anthropic,gemini,elevenlabs}`:
|
|
2
|
+
* providerKeys facade — `engine.providerKeys.{anthropic,gemini,openai,deepseek,elevenlabs}`:
|
|
3
3
|
* validate-before-save probes for the user-supplied AI/voice provider keys
|
|
4
4
|
* (Settings > API Keys). Same per-provider shape as `engine.maps.mapbox` /
|
|
5
5
|
* `engine.speech.sonioxDirect` so the Keys screen treats providers uniformly.
|
|
6
6
|
*/
|
|
7
|
-
import { validateAnthropicApiKey, validateElevenLabsApiKey, validateGeminiApiKey, validateOpenAiApiKey } from "../services/ProviderKeyValidation";
|
|
7
|
+
import { validateAnthropicApiKey, validateDeepSeekApiKey, validateElevenLabsApiKey, validateGeminiApiKey, validateOpenAiApiKey } from "../services/ProviderKeyValidation";
|
|
8
8
|
export declare const providerKeys: {
|
|
9
9
|
anthropic: {
|
|
10
10
|
/** Probe a key against the Anthropic API without saving it. */
|
|
@@ -18,6 +18,10 @@ export declare const providerKeys: {
|
|
|
18
18
|
/** Probe a key against the OpenAI API without saving it. */
|
|
19
19
|
validateKey: (apiKey: string) => Promise<import("../services/ProviderKeyValidation").KeyValidationResult>;
|
|
20
20
|
};
|
|
21
|
+
deepseek: {
|
|
22
|
+
/** Probe a key against the DeepSeek API without saving it. */
|
|
23
|
+
validateKey: (apiKey: string) => Promise<import("../services/ProviderKeyValidation").KeyValidationResult>;
|
|
24
|
+
};
|
|
21
25
|
elevenlabs: {
|
|
22
26
|
/** Probe a key against the ElevenLabs API without saving it. */
|
|
23
27
|
validateKey: (apiKey: string) => Promise<import("../services/ProviderKeyValidation").KeyValidationResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerKeys.d.ts","sourceRoot":"","sources":["../../src/facades/providerKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,mCAAmC,CAAA;AAE1C,eAAO,MAAM,YAAY;;QAErB,+DAA+D;;;;QAI/D,4DAA4D;;;;QAI5D,4DAA4D;;;;QAI5D,gEAAgE;;;CAGnE,CAAA"}
|
|
1
|
+
{"version":3,"file":"providerKeys.d.ts","sourceRoot":"","sources":["../../src/facades/providerKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,mCAAmC,CAAA;AAE1C,eAAO,MAAM,YAAY;;QAErB,+DAA+D;;;;QAI/D,4DAA4D;;;;QAI5D,4DAA4D;;;;QAI5D,8DAA8D;;;;QAI9D,gEAAgE;;;CAGnE,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* providerKeys facade — `engine.providerKeys.{anthropic,gemini,elevenlabs}`:
|
|
2
|
+
* providerKeys facade — `engine.providerKeys.{anthropic,gemini,openai,deepseek,elevenlabs}`:
|
|
3
3
|
* validate-before-save probes for the user-supplied AI/voice provider keys
|
|
4
4
|
* (Settings > API Keys). Same per-provider shape as `engine.maps.mapbox` /
|
|
5
5
|
* `engine.speech.sonioxDirect` so the Keys screen treats providers uniformly.
|
|
6
6
|
*/
|
|
7
|
-
import { validateAnthropicApiKey, validateElevenLabsApiKey, validateGeminiApiKey, validateOpenAiApiKey, } from "../services/ProviderKeyValidation";
|
|
7
|
+
import { validateAnthropicApiKey, validateDeepSeekApiKey, validateElevenLabsApiKey, validateGeminiApiKey, validateOpenAiApiKey, } from "../services/ProviderKeyValidation";
|
|
8
8
|
export const providerKeys = {
|
|
9
9
|
anthropic: {
|
|
10
10
|
/** Probe a key against the Anthropic API without saving it. */
|
|
@@ -18,6 +18,10 @@ export const providerKeys = {
|
|
|
18
18
|
/** Probe a key against the OpenAI API without saving it. */
|
|
19
19
|
validateKey: (...args) => validateOpenAiApiKey(...args),
|
|
20
20
|
},
|
|
21
|
+
deepseek: {
|
|
22
|
+
/** Probe a key against the DeepSeek API without saving it. */
|
|
23
|
+
validateKey: (...args) => validateDeepSeekApiKey(...args),
|
|
24
|
+
},
|
|
21
25
|
elevenlabs: {
|
|
22
26
|
/** Probe a key against the ElevenLabs API without saving it. */
|
|
23
27
|
validateKey: (...args) => validateElevenLabsApiKey(...args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerKeys.js","sourceRoot":"","sources":["../../src/facades/providerKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mCAAmC,CAAA;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE;QACT,+DAA+D;QAC/D,WAAW,EAAE,CAAC,GAAG,IAAgD,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;KACvG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,UAAU,EAAE;QACV,gEAAgE;QAChE,WAAW,EAAE,CAAC,GAAG,IAAiD,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;KACzG;CACF,CAAA","sourcesContent":["/**\n * providerKeys facade — `engine.providerKeys.{anthropic,gemini,elevenlabs}`:\n * validate-before-save probes for the user-supplied AI/voice provider keys\n * (Settings > API Keys). Same per-provider shape as `engine.maps.mapbox` /\n * `engine.speech.sonioxDirect` so the Keys screen treats providers uniformly.\n */\nimport {\n validateAnthropicApiKey,\n validateElevenLabsApiKey,\n validateGeminiApiKey,\n validateOpenAiApiKey,\n} from \"../services/ProviderKeyValidation\"\n\nexport const providerKeys = {\n anthropic: {\n /** Probe a key against the Anthropic API without saving it. */\n validateKey: (...args: Parameters<typeof validateAnthropicApiKey>) => validateAnthropicApiKey(...args),\n },\n gemini: {\n /** Probe a key against the Gemini API without saving it. */\n validateKey: (...args: Parameters<typeof validateGeminiApiKey>) => validateGeminiApiKey(...args),\n },\n openai: {\n /** Probe a key against the OpenAI API without saving it. */\n validateKey: (...args: Parameters<typeof validateOpenAiApiKey>) => validateOpenAiApiKey(...args),\n },\n elevenlabs: {\n /** Probe a key against the ElevenLabs API without saving it. */\n validateKey: (...args: Parameters<typeof validateElevenLabsApiKey>) => validateElevenLabsApiKey(...args),\n },\n}\n"]}
|
|
1
|
+
{"version":3,"file":"providerKeys.js","sourceRoot":"","sources":["../../src/facades/providerKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,mCAAmC,CAAA;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE;QACT,+DAA+D;QAC/D,WAAW,EAAE,CAAC,GAAG,IAAgD,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;KACvG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,MAAM,EAAE;QACN,4DAA4D;QAC5D,WAAW,EAAE,CAAC,GAAG,IAA6C,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;KACjG;IACD,QAAQ,EAAE;QACR,8DAA8D;QAC9D,WAAW,EAAE,CAAC,GAAG,IAA+C,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;KACrG;IACD,UAAU,EAAE;QACV,gEAAgE;QAChE,WAAW,EAAE,CAAC,GAAG,IAAiD,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;KACzG;CACF,CAAA","sourcesContent":["/**\n * providerKeys facade — `engine.providerKeys.{anthropic,gemini,openai,deepseek,elevenlabs}`:\n * validate-before-save probes for the user-supplied AI/voice provider keys\n * (Settings > API Keys). Same per-provider shape as `engine.maps.mapbox` /\n * `engine.speech.sonioxDirect` so the Keys screen treats providers uniformly.\n */\nimport {\n validateAnthropicApiKey,\n validateDeepSeekApiKey,\n validateElevenLabsApiKey,\n validateGeminiApiKey,\n validateOpenAiApiKey,\n} from \"../services/ProviderKeyValidation\"\n\nexport const providerKeys = {\n anthropic: {\n /** Probe a key against the Anthropic API without saving it. */\n validateKey: (...args: Parameters<typeof validateAnthropicApiKey>) => validateAnthropicApiKey(...args),\n },\n gemini: {\n /** Probe a key against the Gemini API without saving it. */\n validateKey: (...args: Parameters<typeof validateGeminiApiKey>) => validateGeminiApiKey(...args),\n },\n openai: {\n /** Probe a key against the OpenAI API without saving it. */\n validateKey: (...args: Parameters<typeof validateOpenAiApiKey>) => validateOpenAiApiKey(...args),\n },\n deepseek: {\n /** Probe a key against the DeepSeek API without saving it. */\n validateKey: (...args: Parameters<typeof validateDeepSeekApiKey>) => validateDeepSeekApiKey(...args),\n },\n elevenlabs: {\n /** Probe a key against the ElevenLabs API without saving it. */\n validateKey: (...args: Parameters<typeof validateElevenLabsApiKey>) => validateElevenLabsApiKey(...args),\n },\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const ENGINE_RELEASE_METADATA = Object.freeze({
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"familyBaseVersion": "0.3.5",
|
|
4
|
-
"releaseIdentity": "0.3.5-dev.
|
|
5
|
-
"releaseSetId": "glassly-0.3.5-dev.
|
|
6
|
-
"sourceCommit": "
|
|
4
|
+
"releaseIdentity": "0.3.5-dev.826",
|
|
5
|
+
"releaseSetId": "glassly-0.3.5-dev.826",
|
|
6
|
+
"sourceCommit": "7b23787f22b526ef6ecb96c9ffcd9032e98c0e5d",
|
|
7
7
|
"otaManifestUrl": null,
|
|
8
8
|
"otaManifestSha256": null
|
|
9
9
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,uBAAuB,GAAoC,MAAM,CAAC,MAAM,CAAC;IACpF,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,eAAe;IAClC,cAAc,EAAE,uBAAuB;IACvC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;CAC1B,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface EngineReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const ENGINE_RELEASE_METADATA: Readonly<EngineReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"0.3.5\",\n \"releaseIdentity\": \"0.3.5-dev.
|
|
1
|
+
{"version":3,"file":"releaseMetadata.js","sourceRoot":"","sources":["../../src/generated/releaseMetadata.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,uBAAuB,GAAoC,MAAM,CAAC,MAAM,CAAC;IACpF,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,OAAO;IAC5B,iBAAiB,EAAE,eAAe;IAClC,cAAc,EAAE,uBAAuB;IACvC,cAAc,EAAE,0CAA0C;IAC1D,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;CAC1B,CAAC,CAAA","sourcesContent":["/** Generated by release CI. Do not edit in a release checkout. */\nexport interface EngineReleaseMetadata {\n schemaVersion: 1\n familyBaseVersion: string | null\n releaseIdentity: string | null\n releaseSetId: string | null\n sourceCommit: string | null\n otaManifestUrl: string | null\n otaManifestSha256: string | null\n}\n\nexport const ENGINE_RELEASE_METADATA: Readonly<EngineReleaseMetadata> = Object.freeze({\n \"schemaVersion\": 1,\n \"familyBaseVersion\": \"0.3.5\",\n \"releaseIdentity\": \"0.3.5-dev.826\",\n \"releaseSetId\": \"glassly-0.3.5-dev.826\",\n \"sourceCommit\": \"7b23787f22b526ef6ecb96c9ffcd9032e98c0e5d\",\n \"otaManifestUrl\": null,\n \"otaManifestSha256\": null\n})\n"]}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* supplies settings/keys and does the side effects.
|
|
11
11
|
*/
|
|
12
12
|
export type AiTier = "quick" | "balanced" | "frontier";
|
|
13
|
-
export type AiTierProvider = "anthropic" | "gemini" | "openai";
|
|
13
|
+
export type AiTierProvider = "anthropic" | "gemini" | "openai" | "deepseek";
|
|
14
14
|
export declare const AI_TIERS: readonly AiTier[];
|
|
15
15
|
/** One curated dropdown entry for a tier. */
|
|
16
16
|
export interface TierModelOption {
|
|
@@ -23,7 +23,8 @@ export interface TierModelOption {
|
|
|
23
23
|
* Curated per-tier model registry — the only place model ids live on the
|
|
24
24
|
* phone. Order within a tier is the "auto" preference order: first entry
|
|
25
25
|
* whose provider has a saved key wins. Anthropic leads (matching the cloud's
|
|
26
|
-
* default provider), then Gemini (the pre-tier quick default), then OpenAI
|
|
26
|
+
* default provider), then Gemini (the pre-tier quick default), then OpenAI,
|
|
27
|
+
* then DeepSeek.
|
|
27
28
|
*/
|
|
28
29
|
export declare const TIER_MODEL_OPTIONS: Record<AiTier, TierModelOption[]>;
|
|
29
30
|
/** Which providers currently have a user key saved (Settings > API Keys). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiTierResolution.d.ts","sourceRoot":"","sources":["../../src/services/AiTierResolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAA;AACtD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"AiTierResolution.d.ts","sourceRoot":"","sources":["../../src/services/AiTierResolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAA;AACtD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE3E,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAAsC,CAAA;AAE5E,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAmBhE,CAAA;AAED,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;AAE1D;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAUD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAYjG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,iBAAiB,CAaxG"}
|
|
@@ -14,23 +14,27 @@ export const AI_TIERS = ["quick", "balanced", "frontier"];
|
|
|
14
14
|
* Curated per-tier model registry — the only place model ids live on the
|
|
15
15
|
* phone. Order within a tier is the "auto" preference order: first entry
|
|
16
16
|
* whose provider has a saved key wins. Anthropic leads (matching the cloud's
|
|
17
|
-
* default provider), then Gemini (the pre-tier quick default), then OpenAI
|
|
17
|
+
* default provider), then Gemini (the pre-tier quick default), then OpenAI,
|
|
18
|
+
* then DeepSeek.
|
|
18
19
|
*/
|
|
19
20
|
export const TIER_MODEL_OPTIONS = {
|
|
20
21
|
quick: [
|
|
21
22
|
{ provider: "anthropic", model: "claude-haiku-4-5", label: "Claude Haiku 4.5" },
|
|
22
23
|
{ provider: "gemini", model: "gemini-3.5-flash-lite", label: "Gemini 3.5 Flash Lite" },
|
|
23
24
|
{ provider: "openai", model: "gpt-5-mini", label: "GPT-5 mini" },
|
|
25
|
+
{ provider: "deepseek", model: "deepseek-chat", label: "DeepSeek Chat" },
|
|
24
26
|
],
|
|
25
27
|
balanced: [
|
|
26
28
|
{ provider: "anthropic", model: "claude-haiku-4-5", label: "Claude Haiku 4.5" },
|
|
27
29
|
{ provider: "gemini", model: "gemini-3.5-flash", label: "Gemini 3.5 Flash" },
|
|
28
30
|
{ provider: "openai", model: "gpt-5.1", label: "GPT-5.1" },
|
|
31
|
+
{ provider: "deepseek", model: "deepseek-chat", label: "DeepSeek Chat" },
|
|
29
32
|
],
|
|
30
33
|
frontier: [
|
|
31
34
|
{ provider: "anthropic", model: "claude-sonnet-5", label: "Claude Sonnet 5" },
|
|
32
35
|
{ provider: "gemini", model: "gemini-3.1-pro-preview", label: "Gemini 3.1 Pro" },
|
|
33
36
|
{ provider: "openai", model: "gpt-5.1", label: "GPT-5.1" },
|
|
37
|
+
{ provider: "deepseek", model: "deepseek-reasoner", label: "DeepSeek Reasoner" },
|
|
34
38
|
],
|
|
35
39
|
};
|
|
36
40
|
/**
|
|
@@ -56,8 +60,9 @@ export function parseTierSetting(value) {
|
|
|
56
60
|
if (!stored)
|
|
57
61
|
return null;
|
|
58
62
|
const model = RETIRED_MODELS[stored] ?? stored;
|
|
59
|
-
if (provider !== "anthropic" && provider !== "gemini" && provider !== "openai")
|
|
63
|
+
if (provider !== "anthropic" && provider !== "gemini" && provider !== "openai" && provider !== "deepseek") {
|
|
60
64
|
return null;
|
|
65
|
+
}
|
|
61
66
|
return { provider, model };
|
|
62
67
|
}
|
|
63
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiTierResolution.js","sourceRoot":"","sources":["../../src/services/AiTierResolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAU5E
|
|
1
|
+
{"version":3,"file":"AiTierResolution.js","sourceRoot":"","sources":["../../src/services/AiTierResolution.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AiTierResolution — pure decision logic for mapping a miniapp's requested AI\n * tier (\"quick\" / \"balanced\" / \"frontier\") to a concrete provider+model.\n *\n * Miniapps never name a provider or model (the session.ai contract is\n * tier-only); the user picks per-tier models in Settings > AI Models, or\n * leaves \"auto\" and the pick follows from whichever provider keys they saved.\n * Extracted from LocalMiniappRuntime as pure functions so the routing rules\n * are unit-testable (the TranscriptionRouting.ts pattern) — the singleton\n * supplies settings/keys and does the side effects.\n */\n\nexport type AiTier = \"quick\" | \"balanced\" | \"frontier\"\nexport type AiTierProvider = \"anthropic\" | \"gemini\" | \"openai\" | \"deepseek\"\n\nexport const AI_TIERS: readonly AiTier[] = [\"quick\", \"balanced\", \"frontier\"]\n\n/** One curated dropdown entry for a tier. */\nexport interface TierModelOption {\n provider: AiTierProvider\n model: string\n /** Human label for the Settings dropdown. */\n label: string\n}\n\n/**\n * Curated per-tier model registry — the only place model ids live on the\n * phone. Order within a tier is the \"auto\" preference order: first entry\n * whose provider has a saved key wins. Anthropic leads (matching the cloud's\n * default provider), then Gemini (the pre-tier quick default), then OpenAI,\n * then DeepSeek.\n */\nexport const TIER_MODEL_OPTIONS: Record<AiTier, TierModelOption[]> = {\n quick: [\n {provider: \"anthropic\", model: \"claude-haiku-4-5\", label: \"Claude Haiku 4.5\"},\n {provider: \"gemini\", model: \"gemini-3.5-flash-lite\", label: \"Gemini 3.5 Flash Lite\"},\n {provider: \"openai\", model: \"gpt-5-mini\", label: \"GPT-5 mini\"},\n {provider: \"deepseek\", model: \"deepseek-chat\", label: \"DeepSeek Chat\"},\n ],\n balanced: [\n {provider: \"anthropic\", model: \"claude-haiku-4-5\", label: \"Claude Haiku 4.5\"},\n {provider: \"gemini\", model: \"gemini-3.5-flash\", label: \"Gemini 3.5 Flash\"},\n {provider: \"openai\", model: \"gpt-5.1\", label: \"GPT-5.1\"},\n {provider: \"deepseek\", model: \"deepseek-chat\", label: \"DeepSeek Chat\"},\n ],\n frontier: [\n {provider: \"anthropic\", model: \"claude-sonnet-5\", label: \"Claude Sonnet 5\"},\n {provider: \"gemini\", model: \"gemini-3.1-pro-preview\", label: \"Gemini 3.1 Pro\"},\n {provider: \"openai\", model: \"gpt-5.1\", label: \"GPT-5.1\"},\n {provider: \"deepseek\", model: \"deepseek-reasoner\", label: \"DeepSeek Reasoner\"},\n ],\n}\n\n/** Which providers currently have a user key saved (Settings > API Keys). */\nexport type SavedLlmKeys = Record<AiTierProvider, boolean>\n\n/**\n * A resolved pick. `provider`/`model` may both be absent: that means \"no\n * opinion — let the cloud's default provider serve it\", which is the right\n * answer for platform-funded balanced/frontier calls with no keys saved.\n */\nexport interface ResolvedTierModel {\n provider?: AiTierProvider\n model?: string\n}\n\n/**\n * Stored dropdown picks for model ids the provider never served, mapped to the\n * curated replacement. gemini-3.5-pro 404s on generateContent.\n */\nconst RETIRED_MODELS: Record<string, string> = {\n \"gemini-3.5-pro\": \"gemini-3.1-pro-preview\",\n}\n\n/** Coerce an untrusted wire value into a tier; anything else is \"balanced\". */\nexport function normalizeAiTier(value: unknown): AiTier {\n return value === \"quick\" || value === \"frontier\" ? value : \"balanced\"\n}\n\n/** Parse a stored \"<provider>:<model>\" dropdown value; null for \"auto\"/garbage. */\nexport function parseTierSetting(value: unknown): {provider: AiTierProvider; model: string} | null {\n if (typeof value !== \"string\") return null\n const sep = value.indexOf(\":\")\n if (sep <= 0) return null\n const provider = value.slice(0, sep)\n const stored = value.slice(sep + 1).trim()\n if (!stored) return null\n const model = RETIRED_MODELS[stored] ?? stored\n if (provider !== \"anthropic\" && provider !== \"gemini\" && provider !== \"openai\" && provider !== \"deepseek\") {\n return null\n }\n return {provider, model}\n}\n\n/**\n * Resolve one tier to a provider+model.\n *\n * Explicit dropdown pick wins verbatim — even if that provider's key was\n * since removed (the call falls through to the cloud path, which may serve it\n * on the platform key or fail loudly; silently substituting a different model\n * the user didn't pick would be worse).\n *\n * \"auto\": first curated entry whose provider has a saved key. With no keys at\n * all, quick still pins its cheapest curated model on the cloud's Gemini key\n * (high-volume triage on the default Sonnet would burn platform credit ~30x\n * faster), while balanced/frontier stay unpinned and take the cloud default.\n */\nexport function resolveAiTier(tier: AiTier, settingValue: unknown, keys: SavedLlmKeys): ResolvedTierModel {\n const explicit = parseTierSetting(settingValue)\n if (explicit) return explicit\n\n for (const option of TIER_MODEL_OPTIONS[tier]) {\n if (keys[option.provider]) return {provider: option.provider, model: option.model}\n }\n\n if (tier === \"quick\") {\n const gemini = TIER_MODEL_OPTIONS.quick.find((o) => o.provider === \"gemini\")\n if (gemini) return {provider: gemini.provider, model: gemini.model}\n }\n return {}\n}\n"]}
|
|
@@ -140,7 +140,7 @@ export declare const cloudClientService: {
|
|
|
140
140
|
*/
|
|
141
141
|
complete(req: Parameters<CloudClient["runtime"]["llm"]["complete"]>[0], opts?: Parameters<CloudClient["runtime"]["llm"]["complete"]>[1]): Promise<{
|
|
142
142
|
text: string;
|
|
143
|
-
provider: "anthropic" | "gemini" | "openai";
|
|
143
|
+
provider: "anthropic" | "gemini" | "openai" | "deepseek";
|
|
144
144
|
model: string;
|
|
145
145
|
stopReason: "end_turn" | "tool_use" | "max_tokens" | "refusal";
|
|
146
146
|
usage: {
|
|
@@ -158,7 +158,7 @@ export declare const cloudClientService: {
|
|
|
158
158
|
/** One agentic visual-generation run. Long-running; see cloud-client docs. */
|
|
159
159
|
generate(req: Parameters<CloudClient["runtime"]["llm"]["generate"]>[0], opts?: Parameters<CloudClient["runtime"]["llm"]["generate"]>[1]): Promise<{
|
|
160
160
|
text: string;
|
|
161
|
-
provider: "anthropic" | "gemini" | "openai";
|
|
161
|
+
provider: "anthropic" | "gemini" | "openai" | "deepseek";
|
|
162
162
|
model: string;
|
|
163
163
|
images: {
|
|
164
164
|
data: string;
|
|
@@ -185,7 +185,7 @@ export declare const cloudClientService: {
|
|
|
185
185
|
activity?: string | undefined;
|
|
186
186
|
result?: {
|
|
187
187
|
text: string;
|
|
188
|
-
provider: "anthropic" | "gemini" | "openai";
|
|
188
|
+
provider: "anthropic" | "gemini" | "openai" | "deepseek";
|
|
189
189
|
model: string;
|
|
190
190
|
images: {
|
|
191
191
|
data: string;
|
|
@@ -209,7 +209,7 @@ export declare const cloudClientService: {
|
|
|
209
209
|
activity?: string | undefined;
|
|
210
210
|
result?: {
|
|
211
211
|
text: string;
|
|
212
|
-
provider: "anthropic" | "gemini" | "openai";
|
|
212
|
+
provider: "anthropic" | "gemini" | "openai" | "deepseek";
|
|
213
213
|
model: string;
|
|
214
214
|
images: {
|
|
215
215
|
data: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalMiniappRuntime.d.ts","sourceRoot":"","sources":["../../src/services/LocalMiniappRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH,OAAO,KAAK,EAAkB,mBAAmB,EAAqB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"LocalMiniappRuntime.d.ts","sourceRoot":"","sources":["../../src/services/LocalMiniappRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ import { useGlassesStore } from "../stores/glasses";
|
|
|
32
32
|
import { SETTINGS, useSettingsStore } from "../stores/settings";
|
|
33
33
|
import { markTranscriptSourceRecent, useTranscriptionDebugStore } from "../stores/transcriptionDebug";
|
|
34
34
|
import { resolveMapboxRenderToken } from "./MapboxTokenService";
|
|
35
|
-
import { createAnthropicProvider, createGeminiProvider, createOpenAiProvider, } from "@glassly/llm-providers";
|
|
35
|
+
import { createAnthropicProvider, createDeepSeekProvider, createGeminiProvider, createOpenAiProvider, } from "@glassly/llm-providers";
|
|
36
36
|
import { normalizeAiTier, resolveAiTier } from "./AiTierResolution";
|
|
37
37
|
import { decideLlmRoute, localLlmReason } from "./LlmRouting";
|
|
38
38
|
import localLlmModelManager from "./LocalLlmModelManager";
|
|
@@ -250,6 +250,7 @@ const MINIAPP_READABLE_API_KEYS = {
|
|
|
250
250
|
anthropic: SETTINGS.anthropic_api_key.key,
|
|
251
251
|
gemini: SETTINGS.gemini_api_key.key,
|
|
252
252
|
openai: SETTINGS.openai_api_key.key,
|
|
253
|
+
deepseek: SETTINGS.deepseek_api_key.key,
|
|
253
254
|
elevenlabs: SETTINGS.elevenlabs_api_key.key,
|
|
254
255
|
mapbox: SETTINGS.mapbox_api_key.key,
|
|
255
256
|
};
|
|
@@ -270,7 +271,9 @@ function directLlmProvider(name) {
|
|
|
270
271
|
? createGeminiProvider({ logger })
|
|
271
272
|
: name === "openai"
|
|
272
273
|
? createOpenAiProvider({ logger })
|
|
273
|
-
:
|
|
274
|
+
: name === "deepseek"
|
|
275
|
+
? createDeepSeekProvider({ logger })
|
|
276
|
+
: createAnthropicProvider({ logger });
|
|
274
277
|
directLlmProviders.set(name, built);
|
|
275
278
|
return built;
|
|
276
279
|
}
|
|
@@ -286,6 +289,7 @@ function savedLlmKeys() {
|
|
|
286
289
|
anthropic: userLlmKey("anthropic").length > 0,
|
|
287
290
|
gemini: userLlmKey("gemini").length > 0,
|
|
288
291
|
openai: userLlmKey("openai").length > 0,
|
|
292
|
+
deepseek: userLlmKey("deepseek").length > 0,
|
|
289
293
|
};
|
|
290
294
|
}
|
|
291
295
|
/** The stored Settings > AI Models dropdown value for a tier ("auto" default). */
|