@gaunt-sloth/core 2.0.0-alpha.8 → 2.0.0-beta.0
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/.gsloth.review.md +2 -0
- package/README.md +71 -20
- package/dist/config/colour.d.ts +38 -0
- package/dist/config/colour.js +36 -0
- package/dist/config/colour.js.map +1 -0
- package/dist/config/configDiscovery.d.ts +79 -0
- package/dist/config/configDiscovery.js +80 -0
- package/dist/config/configDiscovery.js.map +1 -0
- package/dist/config/defaults.d.ts +20 -20
- package/dist/config/defaults.js +10 -8
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/filesystem-tools.d.ts +41 -0
- package/dist/config/filesystem-tools.js +56 -0
- package/dist/config/filesystem-tools.js.map +1 -0
- package/dist/config/loader.d.ts +171 -19
- package/dist/config/loader.js +1054 -144
- package/dist/config/loader.js.map +1 -1
- package/dist/config/mouse.d.ts +50 -0
- package/dist/config/mouse.js +44 -0
- package/dist/config/mouse.js.map +1 -0
- package/dist/config/profiles.d.ts +68 -0
- package/dist/config/profiles.js +93 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/config/providerKeys.d.ts +69 -0
- package/dist/config/providerKeys.js +69 -0
- package/dist/config/providerKeys.js.map +1 -0
- package/dist/config/schema.d.ts +2671 -138
- package/dist/config/schema.js +1361 -85
- package/dist/config/schema.js.map +1 -1
- package/dist/config/shell-policy.d.ts +899 -111
- package/dist/config/shell-policy.js +800 -70
- package/dist/config/shell-policy.js.map +1 -1
- package/dist/config/tool-descriptions.d.ts +211 -0
- package/dist/config/tool-descriptions.js +272 -0
- package/dist/config/tool-descriptions.js.map +1 -0
- package/dist/config/types.d.ts +352 -41
- package/dist/config/types.js +1 -0
- package/dist/config/types.js.map +1 -1
- package/dist/config.d.ts +35 -1
- package/dist/config.js +16 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +28 -1
- package/dist/constants.js +28 -1
- package/dist/constants.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +166 -11
- package/dist/core/GthAbstractAgent.js +484 -45
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +543 -57
- package/dist/core/GthAgentRunner.js +1494 -140
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.d.ts +117 -2
- package/dist/core/GthLangChainAgent.js +602 -29
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/approvals/annotations.d.ts +122 -0
- package/dist/core/approvals/annotations.js +137 -0
- package/dist/core/approvals/annotations.js.map +1 -0
- package/dist/core/approvals/grants.d.ts +216 -0
- package/dist/core/approvals/grants.js +469 -0
- package/dist/core/approvals/grants.js.map +1 -0
- package/dist/core/approvals/matcher.d.ts +202 -0
- package/dist/core/approvals/matcher.js +267 -0
- package/dist/core/approvals/matcher.js.map +1 -0
- package/dist/core/approvals/mcpSubjects.d.ts +40 -0
- package/dist/core/approvals/mcpSubjects.js +99 -0
- package/dist/core/approvals/mcpSubjects.js.map +1 -0
- package/dist/core/approvals/promptHeader.d.ts +28 -0
- package/dist/core/approvals/promptHeader.js +62 -0
- package/dist/core/approvals/promptHeader.js.map +1 -0
- package/dist/core/approvals/toolAnnotationSources.d.ts +105 -0
- package/dist/core/approvals/toolAnnotationSources.js +277 -0
- package/dist/core/approvals/toolAnnotationSources.js.map +1 -0
- package/dist/core/approvals/toolHost.d.ts +46 -0
- package/dist/core/approvals/toolHost.js +108 -0
- package/dist/core/approvals/toolHost.js.map +1 -0
- package/dist/core/debugCapture.d.ts +74 -0
- package/dist/core/debugCapture.js +100 -0
- package/dist/core/debugCapture.js.map +1 -0
- package/dist/core/gthLeanAgentFactory.d.ts +4 -4
- package/dist/core/gthLeanAgentFactory.js +4 -4
- package/dist/core/launchBanner.d.ts +127 -0
- package/dist/core/launchBanner.js +414 -0
- package/dist/core/launchBanner.js.map +1 -0
- package/dist/core/modelLabel.d.ts +19 -0
- package/dist/core/modelLabel.js +26 -0
- package/dist/core/modelLabel.js.map +1 -0
- package/dist/core/plainToolIndication.d.ts +15 -0
- package/dist/core/plainToolIndication.js +174 -0
- package/dist/core/plainToolIndication.js.map +1 -0
- package/dist/core/reasoningBlocks.d.ts +65 -0
- package/dist/core/reasoningBlocks.js +103 -0
- package/dist/core/reasoningBlocks.js.map +1 -0
- package/dist/core/refusal.d.ts +53 -0
- package/dist/core/refusal.js +133 -0
- package/dist/core/refusal.js.map +1 -0
- package/dist/core/runHeader.d.ts +38 -0
- package/dist/core/runHeader.js +42 -0
- package/dist/core/runHeader.js.map +1 -0
- package/dist/core/runStats.d.ts +14 -3
- package/dist/core/runStats.js +48 -3
- package/dist/core/runStats.js.map +1 -1
- package/dist/core/shell/ShellCommandFailedError.d.ts +3 -4
- package/dist/core/shell/ShellCommandFailedError.js +3 -4
- package/dist/core/shell/ShellCommandFailedError.js.map +1 -1
- package/dist/core/shell/abstention.d.ts +88 -0
- package/dist/core/shell/abstention.js +184 -0
- package/dist/core/shell/abstention.js.map +1 -0
- package/dist/core/shell/approvalCapture.d.ts +271 -0
- package/dist/core/shell/approvalCapture.js +108 -0
- package/dist/core/shell/approvalCapture.js.map +1 -0
- package/dist/core/shell/approvalStop.d.ts +123 -0
- package/dist/core/shell/approvalStop.js +269 -0
- package/dist/core/shell/approvalStop.js.map +1 -0
- package/dist/core/shell/arity.d.ts +6 -0
- package/dist/core/shell/arity.js +20 -6
- package/dist/core/shell/arity.js.map +1 -1
- package/dist/core/shell/denylist.d.ts +11 -0
- package/dist/core/shell/denylist.js +37 -0
- package/dist/core/shell/denylist.js.map +1 -0
- package/dist/core/shell/escalationSeverity.d.ts +141 -0
- package/dist/core/shell/escalationSeverity.js +89 -0
- package/dist/core/shell/escalationSeverity.js.map +1 -0
- package/dist/core/shell/framing.d.ts +190 -0
- package/dist/core/shell/framing.js +633 -0
- package/dist/core/shell/framing.js.map +1 -0
- package/dist/core/shell/hardline.d.ts +103 -0
- package/dist/core/shell/hardline.js +780 -0
- package/dist/core/shell/hardline.js.map +1 -0
- package/dist/core/shell/negotiation.d.ts +328 -0
- package/dist/core/shell/negotiation.js +488 -0
- package/dist/core/shell/negotiation.js.map +1 -0
- package/dist/core/shell/normalize.d.ts +44 -4
- package/dist/core/shell/normalize.js +61 -7
- package/dist/core/shell/normalize.js.map +1 -1
- package/dist/core/shell/openWorld.d.ts +263 -0
- package/dist/core/shell/openWorld.js +1188 -0
- package/dist/core/shell/openWorld.js.map +1 -0
- package/dist/core/shell/rater.d.ts +873 -0
- package/dist/core/shell/rater.js +1454 -0
- package/dist/core/shell/rater.js.map +1 -0
- package/dist/core/shell/raterModel.d.ts +41 -0
- package/dist/core/shell/raterModel.js +51 -0
- package/dist/core/shell/raterModel.js.map +1 -0
- package/dist/core/shell/raterVocabulary.d.ts +121 -0
- package/dist/core/shell/raterVocabulary.js +116 -0
- package/dist/core/shell/raterVocabulary.js.map +1 -0
- package/dist/core/shell/rejection.d.ts +69 -0
- package/dist/core/shell/rejection.js +38 -0
- package/dist/core/shell/rejection.js.map +1 -0
- package/dist/core/toolCallRepair/grammar.d.ts +41 -0
- package/dist/core/toolCallRepair/grammar.js +116 -0
- package/dist/core/toolCallRepair/grammar.js.map +1 -0
- package/dist/core/toolCallRepair/index.d.ts +2 -0
- package/dist/core/toolCallRepair/index.js +7 -0
- package/dist/core/toolCallRepair/index.js.map +1 -0
- package/dist/core/toolCallRepair/payload.d.ts +36 -0
- package/dist/core/toolCallRepair/payload.js +341 -0
- package/dist/core/toolCallRepair/payload.js.map +1 -0
- package/dist/core/toolCallRepair/promote.d.ts +45 -0
- package/dist/core/toolCallRepair/promote.js +90 -0
- package/dist/core/toolCallRepair/promote.js.map +1 -0
- package/dist/core/toolDisplay.d.ts +123 -0
- package/dist/core/toolDisplay.js +451 -0
- package/dist/core/toolDisplay.js.map +1 -0
- package/dist/core/toolOutputChannel.d.ts +95 -0
- package/dist/core/toolOutputChannel.js +165 -0
- package/dist/core/toolOutputChannel.js.map +1 -0
- package/dist/core/types.d.ts +349 -16
- package/dist/core/types.js.map +1 -1
- package/dist/history/historyFormat.d.ts +12 -3
- package/dist/history/historyFormat.js +50 -8
- package/dist/history/historyFormat.js.map +1 -1
- package/dist/history/historyStore.d.ts +77 -0
- package/dist/history/historyStore.js +173 -6
- package/dist/history/historyStore.js.map +1 -1
- package/dist/history/recordSession.d.ts +10 -1
- package/dist/history/recordSession.js +27 -0
- package/dist/history/recordSession.js.map +1 -1
- package/dist/providers/anthropic.js +12 -0
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/configurationPassthrough.d.ts +107 -0
- package/dist/providers/configurationPassthrough.js +148 -0
- package/dist/providers/configurationPassthrough.js.map +1 -0
- package/dist/providers/geminiSchemaSanitizer.d.ts +55 -0
- package/dist/providers/geminiSchemaSanitizer.js +347 -0
- package/dist/providers/geminiSchemaSanitizer.js.map +1 -0
- package/dist/providers/geminiThinking.d.ts +60 -0
- package/dist/providers/geminiThinking.js +92 -0
- package/dist/providers/geminiThinking.js.map +1 -0
- package/dist/providers/google-genai.js +18 -1
- package/dist/providers/google-genai.js.map +1 -1
- package/dist/providers/groq.js +12 -0
- package/dist/providers/groq.js.map +1 -1
- package/dist/providers/huggingface.d.ts +25 -0
- package/dist/providers/huggingface.js +69 -0
- package/dist/providers/huggingface.js.map +1 -0
- package/dist/providers/modelCatalog.d.ts +109 -0
- package/dist/providers/modelCatalog.js +245 -0
- package/dist/providers/modelCatalog.js.map +1 -0
- package/dist/providers/modelDiscovery.d.ts +99 -5
- package/dist/providers/modelDiscovery.js +191 -35
- package/dist/providers/modelDiscovery.js.map +1 -1
- package/dist/providers/ollama.d.ts +18 -4
- package/dist/providers/ollama.js +67 -37
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.js +34 -0
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +26 -4
- package/dist/providers/openrouter.js +83 -26
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/vertexai.js +19 -1
- package/dist/providers/vertexai.js.map +1 -1
- package/dist/providers/xai.js +20 -0
- package/dist/providers/xai.js.map +1 -1
- package/dist/runtime/askStructured.d.ts +105 -0
- package/dist/runtime/askStructured.js +120 -0
- package/dist/runtime/askStructured.js.map +1 -0
- package/dist/runtime/conversation.d.ts +64 -0
- package/dist/runtime/conversation.js +171 -0
- package/dist/runtime/conversation.js.map +1 -0
- package/dist/runtime/singleShot.d.ts +37 -6
- package/dist/runtime/singleShot.js +113 -67
- package/dist/runtime/singleShot.js.map +1 -1
- package/dist/runtime/structuredOutput.d.ts +104 -0
- package/dist/runtime/structuredOutput.js +393 -0
- package/dist/runtime/structuredOutput.js.map +1 -0
- package/dist/utils/ProgressIndicator.d.ts +21 -0
- package/dist/utils/ProgressIndicator.js +30 -3
- package/dist/utils/ProgressIndicator.js.map +1 -1
- package/dist/utils/aiignoreUtils.js.map +1 -1
- package/dist/utils/binaryOutputUtils.js.map +1 -1
- package/dist/utils/consoleUtils.d.ts +95 -0
- package/dist/utils/consoleUtils.js +112 -2
- package/dist/utils/consoleUtils.js.map +1 -1
- package/dist/utils/crashHandler.d.ts +87 -0
- package/dist/utils/crashHandler.js +128 -0
- package/dist/utils/crashHandler.js.map +1 -0
- package/dist/utils/debugDump.d.ts +134 -0
- package/dist/utils/debugDump.js +381 -0
- package/dist/utils/debugDump.js.map +1 -0
- package/dist/utils/debugUtils.d.ts +13 -4
- package/dist/utils/debugUtils.js +36 -13
- package/dist/utils/debugUtils.js.map +1 -1
- package/dist/utils/displayWidth.d.ts +53 -0
- package/dist/utils/displayWidth.js +195 -0
- package/dist/utils/displayWidth.js.map +1 -0
- package/dist/utils/fileUtils.js.map +1 -1
- package/dist/utils/globalConfigUtils.d.ts +14 -2
- package/dist/utils/globalConfigUtils.js +22 -4
- package/dist/utils/globalConfigUtils.js.map +1 -1
- package/dist/utils/llmUtils.d.ts +39 -8
- package/dist/utils/llmUtils.js +76 -8
- package/dist/utils/llmUtils.js.map +1 -1
- package/dist/utils/redactSecrets.d.ts +63 -0
- package/dist/utils/redactSecrets.js +286 -0
- package/dist/utils/redactSecrets.js.map +1 -0
- package/dist/utils/systemPromptNotes.d.ts +222 -0
- package/dist/utils/systemPromptNotes.js +338 -0
- package/dist/utils/systemPromptNotes.js.map +1 -0
- package/dist/utils/systemUtils.d.ts +18 -1
- package/dist/utils/systemUtils.js +38 -3
- package/dist/utils/systemUtils.js.map +1 -1
- package/dist/utils/toolMatching.d.ts +30 -0
- package/dist/utils/toolMatching.js +44 -0
- package/dist/utils/toolMatching.js.map +1 -0
- package/dist/utils/untrustedText.d.ts +86 -0
- package/dist/utils/untrustedText.js +101 -0
- package/dist/utils/untrustedText.js.map +1 -0
- package/package.json +21 -7
- package/schema/gsloth-config.schema.json +1921 -326
- package/dist/core/shell/allowlist.d.ts +0 -75
- package/dist/core/shell/allowlist.js +0 -187
- package/dist/core/shell/allowlist.js.map +0 -1
- package/dist/core/shell/judge.d.ts +0 -161
- package/dist/core/shell/judge.js +0 -261
- package/dist/core/shell/judge.js.map +0 -1
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* `{ providerId, model }` maps directly onto a `RawGthConfig.llm`.
|
|
25
25
|
*/
|
|
26
26
|
import { type ConfigType } from '#src/config.js';
|
|
27
|
+
import type { MissingProviderKeyDetails } from '#src/config/providerKeys.js';
|
|
27
28
|
/**
|
|
28
29
|
* Provider identifiers understood by model discovery. These match the provider
|
|
29
30
|
* factory module names (`#src/providers/<id>.js`) and {@link LLMConfig.type},
|
|
@@ -49,10 +50,14 @@ export interface ModelInfo {
|
|
|
49
50
|
* Covers openai, openrouter, groq, deepseek, xai and ollama (local).
|
|
50
51
|
* - `anthropic` — Anthropic's native `GET /v1/models`
|
|
51
52
|
* (`{ data: [{ type, id, display_name }] }`) with `x-api-key` auth.
|
|
52
|
-
* - `
|
|
53
|
-
* (
|
|
53
|
+
* - `google` — Google AI Studio's native ListModels
|
|
54
|
+
* (`GET /v1beta/models` → `{ models: [{ name, supportedGenerationMethods }] }`)
|
|
55
|
+
* with `x-goog-api-key` auth. Chat capability is decided by a data-driven
|
|
56
|
+
* `supportedGenerationMethods` check rather than a name regex (google-genai).
|
|
57
|
+
* - `none` — no cheap live endpoint; stay on the curated list (vertexai,
|
|
58
|
+
* which authenticates via gcloud ADC rather than an API key).
|
|
54
59
|
*/
|
|
55
|
-
export type DiscoveryKind = 'openai' | 'anthropic' | 'none';
|
|
60
|
+
export type DiscoveryKind = 'openai' | 'anthropic' | 'google' | 'none';
|
|
56
61
|
/**
|
|
57
62
|
* Per-provider live-discovery adapter. Bundled on the {@link ProviderDescriptor}
|
|
58
63
|
* so {@link discoverModels} can be fully data-driven.
|
|
@@ -112,6 +117,13 @@ export declare const DEFAULT_OLLAMA_HOST = "http://127.0.0.1:11434";
|
|
|
112
117
|
* Provider registry. The curated `preferredModels` are the models we have
|
|
113
118
|
* tested with Gaunt Sloth's agent loop; defaults mirror the `init` templates in
|
|
114
119
|
* each `#src/providers/<id>.js` factory.
|
|
120
|
+
*
|
|
121
|
+
* CFG-22 (2026-07-24): the CLOUD curated lists were trimmed to 1-2 current-gen ids/provider
|
|
122
|
+
* (head-first = the runtime default via getCuratedFallbackModel). Every surviving cloud id was live
|
|
123
|
+
* tool-call-validated with a `gth eval` identity matrix (a marker-read that proves a real tool
|
|
124
|
+
* call), with two exceptions: vertexai (no ADC here → mirrors the google-genai head) and ollama
|
|
125
|
+
* (local ids, out of the cloud-trim scope — kept as-is, validated against the local daemon if
|
|
126
|
+
* present). A dead id was caught and dropped: groq's qwen 404'd (`model_not_found`).
|
|
115
127
|
*/
|
|
116
128
|
export declare const PROVIDER_DESCRIPTORS: readonly ProviderDescriptor[];
|
|
117
129
|
/**
|
|
@@ -140,6 +152,30 @@ export interface DetectedProvider {
|
|
|
140
152
|
* @returns the matching env var name, or undefined when none is set.
|
|
141
153
|
*/
|
|
142
154
|
export declare function findApiKeyEnvVar(descriptor: ProviderDescriptor): string | undefined;
|
|
155
|
+
/**
|
|
156
|
+
* Decide whether an LLM spec has **no resolvable API key at all** for its provider, and if so
|
|
157
|
+
* report which provider and which variable names would have supplied one.
|
|
158
|
+
*
|
|
159
|
+
* This is the classifier the config loader uses to tell a missing secret apart from a provider
|
|
160
|
+
* that broke for some other reason, and it answers that question from the ENVIRONMENT rather than
|
|
161
|
+
* from the text of whatever error a provider SDK happened to throw. Message-sniffing would be
|
|
162
|
+
* wrong on both sides: SDK wording is not ours to depend on, and several providers word the same
|
|
163
|
+
* failure differently (some name the variable, some do not).
|
|
164
|
+
*
|
|
165
|
+
* Returns `undefined` — meaning "not a missing-key failure" — when any of these hold:
|
|
166
|
+
* - the provider is unknown here, or authenticates outside an env-var key (vertexai via ADC,
|
|
167
|
+
* ollama locally), so there is no key to be missing;
|
|
168
|
+
* - the config carries an inline `llm.apiKey`;
|
|
169
|
+
* - the config names an `llm.apiKeyEnvironmentVariable` that IS set;
|
|
170
|
+
* - any variable the provider accepts is set.
|
|
171
|
+
*
|
|
172
|
+
* The last two matter for correctness, not tidiness: classifying a provider outage as a missing
|
|
173
|
+
* key when a key was in fact present would defeat the whole distinction.
|
|
174
|
+
*/
|
|
175
|
+
export declare function findMissingProviderKey(providerType: string | undefined, llmConfig: {
|
|
176
|
+
apiKey?: unknown;
|
|
177
|
+
apiKeyEnvironmentVariable?: unknown;
|
|
178
|
+
} | undefined): MissingProviderKeyDetails | undefined;
|
|
143
179
|
/**
|
|
144
180
|
* Build the {@link ModelInfo} list for a provider given the descriptor and an
|
|
145
181
|
* optional set of model ids known to actually exist (e.g. from a live
|
|
@@ -185,6 +221,46 @@ export declare function getCuratedFallbackModel(providerId: ProviderId): string;
|
|
|
185
221
|
* runtime-ignored config field (see the zod schema), so it never affects loading.
|
|
186
222
|
*/
|
|
187
223
|
export declare function buildInitConfigContent(providerId: ProviderId, model?: string): string;
|
|
224
|
+
/**
|
|
225
|
+
* CFG-21 — the timeout for the *interactive* first-run model fetch. The dialog is
|
|
226
|
+
* blocking on a human who just picked a provider, so it can afford to wait a lot
|
|
227
|
+
* longer than the background probes for a large cloud catalog (OpenRouter ~300
|
|
228
|
+
* models) to arrive over a cold connection, rather than losing the 2s race and
|
|
229
|
+
* silently dropping to a 3-item curated stub. Threaded per-call so ONLY the dialog
|
|
230
|
+
* uses it — `detectProviders` / `resolveInitModel` stay on the short
|
|
231
|
+
* {@link DISCOVERY_TIMEOUT_MS} probe (a long global would hang the *provider* step
|
|
232
|
+
* whenever the local Ollama daemon is down).
|
|
233
|
+
*/
|
|
234
|
+
export declare const INTERACTIVE_MODEL_FETCH_TIMEOUT_MS = 12000;
|
|
235
|
+
/**
|
|
236
|
+
* Provenance of a returned model list (CFG-21). Distinguishes the three outcomes so
|
|
237
|
+
* an interactive caller can tell an honest "couldn't reach the provider" degrade
|
|
238
|
+
* apart from a by-design curated list:
|
|
239
|
+
*
|
|
240
|
+
* - `live` — a successful, non-empty live `/v1/models` query.
|
|
241
|
+
* - `fallback` — a live query WAS attempted (key present / ollama probed) but
|
|
242
|
+
* failed: network error/timeout, non-2xx, or an empty/malformed payload. THIS is
|
|
243
|
+
* the "couldn't reach" case the first-run dialog surfaces.
|
|
244
|
+
* - `curated` — no live query was attempted, by design: a `kind:'none'` provider
|
|
245
|
+
* (vertexai) or a cloud provider with no API key present. The
|
|
246
|
+
* curated catalog is the expected result here, NOT a degrade, so the dialog must
|
|
247
|
+
* NOT show a "couldn't reach" notice for it.
|
|
248
|
+
*/
|
|
249
|
+
export type ModelDiscoveryStatus = 'live' | 'fallback' | 'curated';
|
|
250
|
+
/** Per-call discovery options (CFG-21). */
|
|
251
|
+
export interface ModelDiscoveryOptions {
|
|
252
|
+
/**
|
|
253
|
+
* Live-fetch timeout in ms. Defaults to the short {@link DISCOVERY_TIMEOUT_MS} so
|
|
254
|
+
* every existing caller is unchanged; the interactive first-run dialog passes the
|
|
255
|
+
* generous {@link INTERACTIVE_MODEL_FETCH_TIMEOUT_MS}.
|
|
256
|
+
*/
|
|
257
|
+
timeoutMs?: number;
|
|
258
|
+
}
|
|
259
|
+
/** A model list plus its {@link ModelDiscoveryStatus} provenance (CFG-21). */
|
|
260
|
+
export interface ModelDiscoveryResult {
|
|
261
|
+
models: ModelInfo[];
|
|
262
|
+
status: ModelDiscoveryStatus;
|
|
263
|
+
}
|
|
188
264
|
/**
|
|
189
265
|
* Discover the models for a single provider.
|
|
190
266
|
*
|
|
@@ -192,6 +268,9 @@ export declare function buildInitConfigContent(providerId: ProviderId, model?: s
|
|
|
192
268
|
* - `kind: 'openai' | 'anthropic'` → fetches the models endpoint with a short
|
|
193
269
|
* timeout, parses `data[].id`, applies the chat-only `filter`, and overlays
|
|
194
270
|
* the ⭐ preferred flags via `buildModelList(descriptor, liveIds)`.
|
|
271
|
+
* - `kind: 'google'` → fetches the native ListModels endpoint, parses
|
|
272
|
+
* `models[].name` keeping only `generateContent`-capable entries and stripping
|
|
273
|
+
* the `models/` prefix, then overlays the ⭐ preferred flags likewise.
|
|
195
274
|
*
|
|
196
275
|
* Best-effort: any error / non-2xx / malformed / empty payload falls back to
|
|
197
276
|
* the curated list. This function NEVER throws — a bad key must degrade to the
|
|
@@ -201,15 +280,30 @@ export declare function buildInitConfigContent(providerId: ProviderId, model?: s
|
|
|
201
280
|
* the curated catalog is returned directly. Ollama (no key, local daemon) is
|
|
202
281
|
* always probed.
|
|
203
282
|
*/
|
|
204
|
-
export declare function discoverModels(providerId: ProviderId): Promise<ModelInfo[]>;
|
|
283
|
+
export declare function discoverModels(providerId: ProviderId, options?: ModelDiscoveryOptions): Promise<ModelInfo[]>;
|
|
205
284
|
/**
|
|
206
285
|
* List the models for a single provider.
|
|
207
286
|
*
|
|
208
287
|
* Live-discovers from the provider's models endpoint where possible (with a
|
|
209
288
|
* curated fallback); returns the curated set for `kind: 'none'` providers. Does
|
|
210
289
|
* not require the provider to be "available".
|
|
290
|
+
*
|
|
291
|
+
* `options.timeoutMs` (CFG-21) overrides the default short live-fetch timeout; the
|
|
292
|
+
* bare `listModels(providerId)` call is unchanged.
|
|
293
|
+
*/
|
|
294
|
+
export declare function listModels(providerId: ProviderId, options?: ModelDiscoveryOptions): Promise<ModelInfo[]>;
|
|
295
|
+
/**
|
|
296
|
+
* CFG-21 — like {@link discoverModels} but also returns the model list's
|
|
297
|
+
* {@link ModelDiscoveryStatus} provenance, so an interactive caller (the first-run
|
|
298
|
+
* dialog) can tell an honest "couldn't reach the provider" degrade (`fallback`)
|
|
299
|
+
* apart from a by-design curated list (`curated`) and a real live catalog (`live`).
|
|
300
|
+
* Kept as a separate export so `listModels` / `discoverModels` keep their existing
|
|
301
|
+
* `(providerId) => ModelInfo[]` signatures other callers rely on.
|
|
302
|
+
*
|
|
303
|
+
* Never throws for a discovery failure (that degrades to `fallback`); it only
|
|
304
|
+
* throws for an unknown provider id, mirroring {@link discoverModels}.
|
|
211
305
|
*/
|
|
212
|
-
export declare function
|
|
306
|
+
export declare function discoverModelsWithProvenance(providerId: ProviderId, options?: ModelDiscoveryOptions): Promise<ModelDiscoveryResult>;
|
|
213
307
|
/**
|
|
214
308
|
* Resolve the model id that `init` should bake into a generated config for a
|
|
215
309
|
* provider (CFG-14) — the safeguard against writing a speculative id that 404s
|
|
@@ -52,13 +52,20 @@ const chatOnly = (id) => !NON_CHAT_PATTERN.test(id);
|
|
|
52
52
|
* Provider registry. The curated `preferredModels` are the models we have
|
|
53
53
|
* tested with Gaunt Sloth's agent loop; defaults mirror the `init` templates in
|
|
54
54
|
* each `#src/providers/<id>.js` factory.
|
|
55
|
+
*
|
|
56
|
+
* CFG-22 (2026-07-24): the CLOUD curated lists were trimmed to 1-2 current-gen ids/provider
|
|
57
|
+
* (head-first = the runtime default via getCuratedFallbackModel). Every surviving cloud id was live
|
|
58
|
+
* tool-call-validated with a `gth eval` identity matrix (a marker-read that proves a real tool
|
|
59
|
+
* call), with two exceptions: vertexai (no ADC here → mirrors the google-genai head) and ollama
|
|
60
|
+
* (local ids, out of the cloud-trim scope — kept as-is, validated against the local daemon if
|
|
61
|
+
* present). A dead id was caught and dropped: groq's qwen 404'd (`model_not_found`).
|
|
55
62
|
*/
|
|
56
63
|
export const PROVIDER_DESCRIPTORS = [
|
|
57
64
|
{
|
|
58
65
|
id: 'anthropic',
|
|
59
66
|
label: 'Anthropic (Claude)',
|
|
60
67
|
apiKeyEnvironmentVariables: ['ANTHROPIC_API_KEY'],
|
|
61
|
-
preferredModels: ['claude-sonnet-5', 'claude-opus-4-8'
|
|
68
|
+
preferredModels: ['claude-sonnet-5', 'claude-opus-4-8'],
|
|
62
69
|
discovery: {
|
|
63
70
|
kind: 'anthropic',
|
|
64
71
|
modelsUrl: () => 'https://api.anthropic.com/v1/models',
|
|
@@ -69,7 +76,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
69
76
|
id: 'openai',
|
|
70
77
|
label: 'OpenAI',
|
|
71
78
|
apiKeyEnvironmentVariables: ['OPENAI_API_KEY'],
|
|
72
|
-
preferredModels: ['gpt-5.
|
|
79
|
+
preferredModels: ['gpt-5.6', 'gpt-5.5'],
|
|
73
80
|
discovery: {
|
|
74
81
|
kind: 'openai',
|
|
75
82
|
modelsUrl: () => 'https://api.openai.com/v1/models',
|
|
@@ -81,21 +88,30 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
81
88
|
id: 'google-genai',
|
|
82
89
|
label: 'Google AI Studio (Gemini)',
|
|
83
90
|
apiKeyEnvironmentVariables: ['GOOGLE_API_KEY'],
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
'
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
// GA-only defaults (Andrew 2026-07-24): the Gemini 3.x Pro tier is preview-only, so the curated
|
|
92
|
+
// defaults stay on GA flash tiers — gemini-3.7-flash (head, verified live via ListModels +
|
|
93
|
+
// tool-call probe) and gemini-3.5-flash-lite (the GA routing/summarizing workhorse).
|
|
94
|
+
preferredModels: ['gemini-3.7-flash', 'gemini-3.5-flash-lite'],
|
|
95
|
+
discovery: {
|
|
96
|
+
kind: 'google',
|
|
97
|
+
// Native ListModels — returns the full current family (incl. the 3.x tier)
|
|
98
|
+
// that the OpenAI-compat `/v1beta/openai/models` shim can lag behind.
|
|
99
|
+
modelsUrl: () => 'https://generativelanguage.googleapis.com/v1beta/models',
|
|
100
|
+
// The key rides the header form so it reuses the existing authHeader machinery
|
|
101
|
+
// (no `?key=` URL-building). No `filter`: the google parse path decides chat
|
|
102
|
+
// capability via `supportedGenerationMethods`, not the name-regex chatOnly.
|
|
103
|
+
authHeader: (key) => ({ 'x-goog-api-key': key }),
|
|
104
|
+
},
|
|
92
105
|
},
|
|
93
106
|
{
|
|
94
107
|
id: 'vertexai',
|
|
95
108
|
label: 'Google Vertex AI (Gemini)',
|
|
96
109
|
apiKeyEnvironmentVariables: [],
|
|
97
|
-
// Vertex
|
|
98
|
-
|
|
110
|
+
// Vertex mirrors the AI Studio (google-genai) family under the SAME slugs (the older "bare-slug"
|
|
111
|
+
// assumption was wrong). Verified live 2026-07-24 (Andrew, ADC box): all mirror-genai models
|
|
112
|
+
// resolve, and these GA flash defaults resolve with no extra config (preview models, not used
|
|
113
|
+
// here, are global-location only). Kept exactly in sync with the google-genai GA-only defaults.
|
|
114
|
+
preferredModels: ['gemini-3.7-flash', 'gemini-3.5-flash-lite'],
|
|
99
115
|
discovery: { kind: 'none' },
|
|
100
116
|
requiresExternalAuth: true,
|
|
101
117
|
},
|
|
@@ -103,7 +119,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
103
119
|
id: 'groq',
|
|
104
120
|
label: 'Groq',
|
|
105
121
|
apiKeyEnvironmentVariables: ['GROQ_API_KEY'],
|
|
106
|
-
preferredModels: ['openai/gpt-oss-120b', '
|
|
122
|
+
preferredModels: ['openai/gpt-oss-120b', 'openai/gpt-oss-20b'],
|
|
107
123
|
discovery: {
|
|
108
124
|
kind: 'openai',
|
|
109
125
|
// Groq's OpenAI-compatible surface lives under /openai/v1.
|
|
@@ -128,7 +144,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
128
144
|
id: 'xai',
|
|
129
145
|
label: 'xAI (Grok)',
|
|
130
146
|
apiKeyEnvironmentVariables: ['XAI_API_KEY'],
|
|
131
|
-
preferredModels: ['grok-4.
|
|
147
|
+
preferredModels: ['grok-4.5', 'grok-4.3'],
|
|
132
148
|
discovery: {
|
|
133
149
|
kind: 'openai',
|
|
134
150
|
modelsUrl: () => 'https://api.x.ai/v1/models',
|
|
@@ -142,7 +158,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
142
158
|
// OPENROUTER_API_KEY is accepted as an alias.
|
|
143
159
|
label: 'OpenRouter',
|
|
144
160
|
apiKeyEnvironmentVariables: ['OPEN_ROUTER_API_KEY', 'OPENROUTER_API_KEY'],
|
|
145
|
-
preferredModels: ['
|
|
161
|
+
preferredModels: ['moonshotai/kimi-k3', 'deepseek/deepseek-v4-pro'],
|
|
146
162
|
discovery: {
|
|
147
163
|
kind: 'openai',
|
|
148
164
|
modelsUrl: () => 'https://openrouter.ai/api/v1/models',
|
|
@@ -150,6 +166,19 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
150
166
|
filter: chatOnly,
|
|
151
167
|
},
|
|
152
168
|
},
|
|
169
|
+
{
|
|
170
|
+
id: 'huggingface',
|
|
171
|
+
label: 'Hugging Face (Inference Providers)',
|
|
172
|
+
apiKeyEnvironmentVariables: ['HF_TOKEN', 'HUGGINGFACEHUB_API_TOKEN', 'HF_API_KEY'],
|
|
173
|
+
preferredModels: ['zai-org/GLM-5.2', 'moonshotai/Kimi-K2.7-Code'],
|
|
174
|
+
discovery: {
|
|
175
|
+
kind: 'openai',
|
|
176
|
+
// HF's OpenAI-compatible router exposes /v1/models across all inference providers.
|
|
177
|
+
modelsUrl: () => 'https://router.huggingface.co/v1/models',
|
|
178
|
+
authHeader: bearer,
|
|
179
|
+
filter: chatOnly,
|
|
180
|
+
},
|
|
181
|
+
},
|
|
153
182
|
{
|
|
154
183
|
id: 'ollama',
|
|
155
184
|
label: 'Ollama (local)',
|
|
@@ -189,6 +218,54 @@ export function findApiKeyEnvVar(descriptor) {
|
|
|
189
218
|
}
|
|
190
219
|
return undefined;
|
|
191
220
|
}
|
|
221
|
+
/** A non-empty string, ignoring surrounding whitespace. */
|
|
222
|
+
function isNonEmptyString(value) {
|
|
223
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Decide whether an LLM spec has **no resolvable API key at all** for its provider, and if so
|
|
227
|
+
* report which provider and which variable names would have supplied one.
|
|
228
|
+
*
|
|
229
|
+
* This is the classifier the config loader uses to tell a missing secret apart from a provider
|
|
230
|
+
* that broke for some other reason, and it answers that question from the ENVIRONMENT rather than
|
|
231
|
+
* from the text of whatever error a provider SDK happened to throw. Message-sniffing would be
|
|
232
|
+
* wrong on both sides: SDK wording is not ours to depend on, and several providers word the same
|
|
233
|
+
* failure differently (some name the variable, some do not).
|
|
234
|
+
*
|
|
235
|
+
* Returns `undefined` — meaning "not a missing-key failure" — when any of these hold:
|
|
236
|
+
* - the provider is unknown here, or authenticates outside an env-var key (vertexai via ADC,
|
|
237
|
+
* ollama locally), so there is no key to be missing;
|
|
238
|
+
* - the config carries an inline `llm.apiKey`;
|
|
239
|
+
* - the config names an `llm.apiKeyEnvironmentVariable` that IS set;
|
|
240
|
+
* - any variable the provider accepts is set.
|
|
241
|
+
*
|
|
242
|
+
* The last two matter for correctness, not tidiness: classifying a provider outage as a missing
|
|
243
|
+
* key when a key was in fact present would defeat the whole distinction.
|
|
244
|
+
*/
|
|
245
|
+
export function findMissingProviderKey(providerType, llmConfig) {
|
|
246
|
+
const descriptor = PROVIDER_DESCRIPTORS.find((candidate) => candidate.id === providerType);
|
|
247
|
+
if (!descriptor || descriptor.apiKeyEnvironmentVariables.length === 0) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
if (isNonEmptyString(llmConfig?.apiKey)) {
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
const declaredEnvVar = isNonEmptyString(llmConfig?.apiKeyEnvironmentVariable)
|
|
254
|
+
? llmConfig.apiKeyEnvironmentVariable.trim()
|
|
255
|
+
: undefined;
|
|
256
|
+
if (declaredEnvVar && isNonEmptyString(env[declaredEnvVar])) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
if (findApiKeyEnvVar(descriptor)) {
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
// The config-declared variable leads: it is the name the user chose, so it is the name they will
|
|
263
|
+
// look for. The provider's own accepted names follow, in the order it checks them.
|
|
264
|
+
const envVars = declaredEnvVar
|
|
265
|
+
? [declaredEnvVar, ...descriptor.apiKeyEnvironmentVariables.filter((n) => n !== declaredEnvVar)]
|
|
266
|
+
: [...descriptor.apiKeyEnvironmentVariables];
|
|
267
|
+
return { provider: descriptor.id, envVar: envVars[0], envVars };
|
|
268
|
+
}
|
|
192
269
|
/**
|
|
193
270
|
* Build the {@link ModelInfo} list for a provider given the descriptor and an
|
|
194
271
|
* optional set of model ids known to actually exist (e.g. from a live
|
|
@@ -266,8 +343,23 @@ export function buildInitConfigContent(providerId, model) {
|
|
|
266
343
|
llm.model = model;
|
|
267
344
|
return JSON.stringify({ $schema: CONFIG_SCHEMA_POINTER, llm }, null, 2);
|
|
268
345
|
}
|
|
269
|
-
/**
|
|
346
|
+
/**
|
|
347
|
+
* Live-fetch timeout for the NON-interactive probes: provider detection's Ollama
|
|
348
|
+
* liveness check and `resolveInitModel`. Short enough to never block for long when
|
|
349
|
+
* a daemon is down or a key is dead — every current caller keeps this default.
|
|
350
|
+
*/
|
|
270
351
|
const DISCOVERY_TIMEOUT_MS = 2000;
|
|
352
|
+
/**
|
|
353
|
+
* CFG-21 — the timeout for the *interactive* first-run model fetch. The dialog is
|
|
354
|
+
* blocking on a human who just picked a provider, so it can afford to wait a lot
|
|
355
|
+
* longer than the background probes for a large cloud catalog (OpenRouter ~300
|
|
356
|
+
* models) to arrive over a cold connection, rather than losing the 2s race and
|
|
357
|
+
* silently dropping to a 3-item curated stub. Threaded per-call so ONLY the dialog
|
|
358
|
+
* uses it — `detectProviders` / `resolveInitModel` stay on the short
|
|
359
|
+
* {@link DISCOVERY_TIMEOUT_MS} probe (a long global would hang the *provider* step
|
|
360
|
+
* whenever the local Ollama daemon is down).
|
|
361
|
+
*/
|
|
362
|
+
export const INTERACTIVE_MODEL_FETCH_TIMEOUT_MS = 12_000;
|
|
271
363
|
/**
|
|
272
364
|
* Parse the `id`s out of a models-endpoint payload. Both the OpenAI-compatible
|
|
273
365
|
* shape and Anthropic's native shape use a top-level `{ data: [{ id }] }`
|
|
@@ -281,30 +373,66 @@ function parseModelIds(body) {
|
|
|
281
373
|
.map((m) => m?.id)
|
|
282
374
|
.filter((id) => typeof id === 'string' && id.length > 0);
|
|
283
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* Parse the Google AI Studio (`google-genai`) native ListModels envelope
|
|
378
|
+
* `{ models: [{ name: 'models/<id>', supportedGenerationMethods: [...] }] }`.
|
|
379
|
+
*
|
|
380
|
+
* Unlike the OpenAI/Anthropic `data[].id` shape, this endpoint returns the whole
|
|
381
|
+
* generative-language family — embeddings, TTS, image, etc. — alongside the chat
|
|
382
|
+
* models, so chat capability is decided by a **data-driven** check
|
|
383
|
+
* (`supportedGenerationMethods` includes `generateContent`) that REPLACES the
|
|
384
|
+
* name-regex `chatOnly` filter for this provider. Each surviving `name` is a
|
|
385
|
+
* fully-qualified `models/<id>`; the `models/` prefix is stripped to a bare slug
|
|
386
|
+
* (`gemini-3.6-flash`) — the form `ChatGoogleGenerativeAI` expects and the id the
|
|
387
|
+
* curated ⭐ overlay in {@link buildModelList} matches on.
|
|
388
|
+
*/
|
|
389
|
+
function parseGoogleModels(body) {
|
|
390
|
+
const models = body?.models;
|
|
391
|
+
if (!Array.isArray(models))
|
|
392
|
+
return [];
|
|
393
|
+
return (models
|
|
394
|
+
.filter((m) => {
|
|
395
|
+
const methods = m?.supportedGenerationMethods;
|
|
396
|
+
// Data-driven chat-capability check (replaces the name-regex chatOnly for google).
|
|
397
|
+
return Array.isArray(methods) && methods.includes('generateContent');
|
|
398
|
+
})
|
|
399
|
+
.map((m) => m?.name)
|
|
400
|
+
.filter((name) => typeof name === 'string' && name.length > 0)
|
|
401
|
+
// Strip the `models/` prefix to the bare slug ChatGoogleGenerativeAI / the ⭐ overlay expect.
|
|
402
|
+
.map((name) => name.replace(/^models\//, '')));
|
|
403
|
+
}
|
|
284
404
|
/**
|
|
285
405
|
* Internal: run live discovery for one descriptor, distinguishing a successful
|
|
286
|
-
* live query from a curated fallback
|
|
406
|
+
* live query from a curated fallback and — via {@link ModelDiscoveryStatus} —
|
|
407
|
+
* a by-design curated result from an attempted-and-failed one (CFG-21).
|
|
287
408
|
*
|
|
288
|
-
* @
|
|
289
|
-
*
|
|
290
|
-
*
|
|
409
|
+
* @param options.timeoutMs live-fetch timeout, defaulting to the short
|
|
410
|
+
* {@link DISCOVERY_TIMEOUT_MS} so background probes are unchanged.
|
|
411
|
+
* @returns `{ models, live, status }`. `live` is true only when the models came
|
|
412
|
+
* from a successful, non-empty live `/v1/models` query (kept as the Ollama
|
|
413
|
+
* availability signal). `status` is `live` in that case, `fallback` when a live
|
|
414
|
+
* query was attempted but failed (network/timeout/non-2xx/empty), and `curated`
|
|
415
|
+
* when no live query was attempted (`kind:'none'` or no API key).
|
|
291
416
|
*/
|
|
292
|
-
async function discoverModelsInternal(descriptor) {
|
|
293
|
-
const
|
|
417
|
+
async function discoverModelsInternal(descriptor, options = {}) {
|
|
418
|
+
const timeoutMs = options.timeoutMs ?? DISCOVERY_TIMEOUT_MS;
|
|
419
|
+
const curated = (status) => ({
|
|
294
420
|
models: buildModelList(descriptor),
|
|
295
421
|
live: false,
|
|
422
|
+
status,
|
|
296
423
|
});
|
|
297
424
|
const { discovery } = descriptor;
|
|
298
425
|
if (discovery.kind === 'none' || !discovery.modelsUrl) {
|
|
299
|
-
return curated();
|
|
426
|
+
return curated('curated');
|
|
300
427
|
}
|
|
301
428
|
// Resolve an API key for cloud providers; ollama needs none.
|
|
302
429
|
let key = '';
|
|
303
430
|
if (descriptor.id !== 'ollama') {
|
|
304
431
|
const envVar = findApiKeyEnvVar(descriptor);
|
|
305
432
|
if (!envVar) {
|
|
306
|
-
// No key → don't hit the network; show the curated catalog.
|
|
307
|
-
|
|
433
|
+
// No key → don't hit the network; show the curated catalog. This is the
|
|
434
|
+
// by-design path, NOT a "couldn't reach" degrade — hence `curated`.
|
|
435
|
+
return curated('curated');
|
|
308
436
|
}
|
|
309
437
|
key = env[envVar] ?? '';
|
|
310
438
|
}
|
|
@@ -317,26 +445,29 @@ async function discoverModelsInternal(descriptor) {
|
|
|
317
445
|
const res = await fetch(url, {
|
|
318
446
|
method: 'GET',
|
|
319
447
|
headers,
|
|
320
|
-
signal: AbortSignal.timeout(
|
|
448
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
321
449
|
});
|
|
322
450
|
if (!res.ok) {
|
|
323
451
|
displayDebug(`Model discovery for "${descriptor.id}" returned HTTP ${res.status}.`);
|
|
324
|
-
return curated();
|
|
452
|
+
return curated('fallback');
|
|
325
453
|
}
|
|
326
454
|
const body = await res.json();
|
|
327
|
-
|
|
455
|
+
// The google native ListModels envelope (`{ models: [{ name, supportedGenerationMethods }] }`)
|
|
456
|
+
// differs from the OpenAI/Anthropic `data[].id` shape and carries its own
|
|
457
|
+
// capability-based chat filter + `models/` prefix strip inside the parser.
|
|
458
|
+
let ids = discovery.kind === 'google' ? parseGoogleModels(body) : parseModelIds(body);
|
|
328
459
|
if (discovery.filter) {
|
|
329
460
|
ids = ids.filter(discovery.filter);
|
|
330
461
|
}
|
|
331
462
|
if (ids.length === 0) {
|
|
332
463
|
displayDebug(`Model discovery for "${descriptor.id}" returned no usable models.`);
|
|
333
|
-
return curated();
|
|
464
|
+
return curated('fallback');
|
|
334
465
|
}
|
|
335
|
-
return { models: buildModelList(descriptor, ids), live: true };
|
|
466
|
+
return { models: buildModelList(descriptor, ids), live: true, status: 'live' };
|
|
336
467
|
}
|
|
337
468
|
catch (e) {
|
|
338
469
|
displayDebug(`Model discovery for "${descriptor.id}" failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
339
|
-
return curated();
|
|
470
|
+
return curated('fallback');
|
|
340
471
|
}
|
|
341
472
|
}
|
|
342
473
|
/**
|
|
@@ -346,6 +477,9 @@ async function discoverModelsInternal(descriptor) {
|
|
|
346
477
|
* - `kind: 'openai' | 'anthropic'` → fetches the models endpoint with a short
|
|
347
478
|
* timeout, parses `data[].id`, applies the chat-only `filter`, and overlays
|
|
348
479
|
* the ⭐ preferred flags via `buildModelList(descriptor, liveIds)`.
|
|
480
|
+
* - `kind: 'google'` → fetches the native ListModels endpoint, parses
|
|
481
|
+
* `models[].name` keeping only `generateContent`-capable entries and stripping
|
|
482
|
+
* the `models/` prefix, then overlays the ⭐ preferred flags likewise.
|
|
349
483
|
*
|
|
350
484
|
* Best-effort: any error / non-2xx / malformed / empty payload falls back to
|
|
351
485
|
* the curated list. This function NEVER throws — a bad key must degrade to the
|
|
@@ -355,12 +489,12 @@ async function discoverModelsInternal(descriptor) {
|
|
|
355
489
|
* the curated catalog is returned directly. Ollama (no key, local daemon) is
|
|
356
490
|
* always probed.
|
|
357
491
|
*/
|
|
358
|
-
export async function discoverModels(providerId) {
|
|
492
|
+
export async function discoverModels(providerId, options) {
|
|
359
493
|
const descriptor = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId);
|
|
360
494
|
if (!descriptor) {
|
|
361
495
|
throw new Error(`Unknown provider: ${providerId}`);
|
|
362
496
|
}
|
|
363
|
-
const { models } = await discoverModelsInternal(descriptor);
|
|
497
|
+
const { models } = await discoverModelsInternal(descriptor, options);
|
|
364
498
|
return models;
|
|
365
499
|
}
|
|
366
500
|
/**
|
|
@@ -369,9 +503,31 @@ export async function discoverModels(providerId) {
|
|
|
369
503
|
* Live-discovers from the provider's models endpoint where possible (with a
|
|
370
504
|
* curated fallback); returns the curated set for `kind: 'none'` providers. Does
|
|
371
505
|
* not require the provider to be "available".
|
|
506
|
+
*
|
|
507
|
+
* `options.timeoutMs` (CFG-21) overrides the default short live-fetch timeout; the
|
|
508
|
+
* bare `listModels(providerId)` call is unchanged.
|
|
372
509
|
*/
|
|
373
|
-
export async function listModels(providerId) {
|
|
374
|
-
return discoverModels(providerId);
|
|
510
|
+
export async function listModels(providerId, options) {
|
|
511
|
+
return discoverModels(providerId, options);
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* CFG-21 — like {@link discoverModels} but also returns the model list's
|
|
515
|
+
* {@link ModelDiscoveryStatus} provenance, so an interactive caller (the first-run
|
|
516
|
+
* dialog) can tell an honest "couldn't reach the provider" degrade (`fallback`)
|
|
517
|
+
* apart from a by-design curated list (`curated`) and a real live catalog (`live`).
|
|
518
|
+
* Kept as a separate export so `listModels` / `discoverModels` keep their existing
|
|
519
|
+
* `(providerId) => ModelInfo[]` signatures other callers rely on.
|
|
520
|
+
*
|
|
521
|
+
* Never throws for a discovery failure (that degrades to `fallback`); it only
|
|
522
|
+
* throws for an unknown provider id, mirroring {@link discoverModels}.
|
|
523
|
+
*/
|
|
524
|
+
export async function discoverModelsWithProvenance(providerId, options) {
|
|
525
|
+
const descriptor = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId);
|
|
526
|
+
if (!descriptor) {
|
|
527
|
+
throw new Error(`Unknown provider: ${providerId}`);
|
|
528
|
+
}
|
|
529
|
+
const { models, status } = await discoverModelsInternal(descriptor, options);
|
|
530
|
+
return { models, status };
|
|
375
531
|
}
|
|
376
532
|
/**
|
|
377
533
|
* Resolve the model id that `init` should bake into a generated config for a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelDiscovery.js","sourceRoot":"","sources":["../../src/providers/modelDiscovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modelDiscovery.js","sourceRoot":"","sources":["../../src/providers/modelDiscovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,uBAAuB,EAAmB,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AA6FhD,oEAAoE;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC;AAE5D,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,mBAAmB,CAAC;IACtC,2DAA2D;IAC3D,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9D,OAAO,UAAU,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,yEAAyE;AACzE,MAAM,MAAM,GAAG,CAAC,GAAW,EAA0B,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,CAAC;AAE7F;;;;;GAKG;AACH,MAAM,gBAAgB,GACpB,+FAA+F,CAAC;AAClG,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkC;IACjE;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,oBAAoB;QAC3B,0BAA0B,EAAE,CAAC,mBAAmB,CAAC;QACjD,eAAe,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QACvD,SAAS,EAAE;YACT,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,GAAG,EAAE,CAAC,qCAAqC;YACtD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC;SAC/E;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,0BAA0B,EAAE,CAAC,gBAAgB,CAAC;QAC9C,eAAe,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QACvC,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,GAAG,EAAE,CAAC,kCAAkC;YACnD,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,QAAQ;SACjB;KACF;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,2BAA2B;QAClC,0BAA0B,EAAE,CAAC,gBAAgB,CAAC;QAC9C,gGAAgG;QAChG,2FAA2F;QAC3F,qFAAqF;QACrF,eAAe,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;QAC9D,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,2EAA2E;YAC3E,sEAAsE;YACtE,SAAS,EAAE,GAAG,EAAE,CAAC,yDAAyD;YAC1E,+EAA+E;YAC/E,6EAA6E;YAC7E,4EAA4E;YAC5E,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;SACjD;KACF;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,2BAA2B;QAClC,0BAA0B,EAAE,EAAE;QAC9B,iGAAiG;QACjG,6FAA6F;QAC7F,8FAA8F;QAC9F,gGAAgG;QAChG,eAAe,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;QAC9D,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAC3B,oBAAoB,EAAE,IAAI;KAC3B;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,0BAA0B,EAAE,CAAC,cAAc,CAAC;QAC5C,eAAe,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;QAC9D,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,2DAA2D;YAC3D,SAAS,EAAE,GAAG,EAAE,CAAC,uCAAuC;YACxD,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,QAAQ;SACjB;KACF;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,0BAA0B,EAAE,CAAC,kBAAkB,CAAC;QAChD,eAAe,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;QACzD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,GAAG,EAAE,CAAC,oCAAoC;YACrD,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,QAAQ;SACjB;KACF;IACD;QACE,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,YAAY;QACnB,0BAA0B,EAAE,CAAC,aAAa,CAAC;QAC3C,eAAe,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;QACzC,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,GAAG,EAAE,CAAC,4BAA4B;YAC7C,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,QAAQ;SACjB;KACF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,gFAAgF;QAChF,8CAA8C;QAC9C,KAAK,EAAE,YAAY;QACnB,0BAA0B,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;QACzE,eAAe,EAAE,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;QACnE,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,GAAG,EAAE,CAAC,qCAAqC;YACtD,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,QAAQ;SACjB;KACF;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,oCAAoC;QAC3C,0BAA0B,EAAE,CAAC,UAAU,EAAE,0BAA0B,EAAE,YAAY,CAAC;QAClF,eAAe,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;QACjE,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,mFAAmF;YACnF,SAAS,EAAE,GAAG,EAAE,CAAC,yCAAyC;YAC1D,UAAU,EAAE,MAAM;YAClB,MAAM,EAAE,QAAQ;SACjB;KACF;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,gBAAgB;QACvB,0BAA0B,EAAE,EAAE;QAC9B,6EAA6E;QAC7E,eAAe,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC;QAClE,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,qEAAqE;YACrE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,iBAAiB,EAAE,YAAY;YAC/D,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;SACvB;QACD,oBAAoB,EAAE,IAAI;KAC3B;CACO,CAAC;AAEX;;;GAGG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE,CAAC;IAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,wEAAwE;QACxE,YAAY,CAAC,aAAa,GAAG,sCAAsC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAwBD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAA8B;IAC7D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,0BAA0B,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2DAA2D;AAC3D,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CACpC,YAAgC,EAChC,SAAgF;IAEhF,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;IAC3F,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,0BAA0B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,EAAE,yBAAyB,CAAC;QAC3E,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,EAAE;QAC5C,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,cAAc,IAAI,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,iGAAiG;IACjG,mFAAmF;IACnF,MAAM,OAAO,GAAG,cAAc;QAC5B,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;IAC/C,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,UAA8B,EAC9B,gBAA2B;IAE3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,iFAAiF;IACjF,mFAAmF;IACnF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,CAAC,EAAU,EAAsB,EAAE,CAChD,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;IACtE,MAAM,OAAO,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,iCAAiC;QAC3F,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC,uCAAuC;QACxE,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC;IAChE,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAsB;IAC5D,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sDAAsD,UAAU,IAAI,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAAsB,EAAE,KAAc;IAC3E,MAAM,GAAG,GAAyC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACvE,IAAI,KAAK;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,MAAM,CAAC;AAkCzD;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAa;IAClC,MAAM,IAAI,GAAI,IAAkD,EAAE,IAAI,CAAC;IACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SACjB,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,iBAAiB,CAAC,IAAa;IACtC,MAAM,MAAM,GACV,IAGD,EAAE,MAAM,CAAC;IACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,CACL,MAAM;SACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,CAAC,EAAE,0BAA0B,CAAC;QAC9C,mFAAmF;QACnF,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACvE,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;SACnB,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9E,6FAA6F;SAC5F,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAChD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,sBAAsB,CACnC,UAA8B,EAC9B,OAAO,GAA0B,EAAE;IAEnC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,oBAAoB,CAAC;IAC5D,MAAM,OAAO,GAAG,CACd,MAA6C,EACyB,EAAE,CAAC,CAAC;QAC1E,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;QAClC,IAAI,EAAE,KAAK;QACX,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;IACjC,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,6DAA6D;IAC7D,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,UAAU,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,wEAAwE;YACxE,oEAAoE;YACpE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;YAC1B,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,KAAK;YACb,OAAO;YACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,wBAAwB,UAAU,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACpF,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,+FAA+F;QAC/F,0EAA0E;QAC1E,2EAA2E;QAC3E,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,YAAY,CAAC,wBAAwB,UAAU,CAAC,EAAE,8BAA8B,CAAC,CAAC;YAClF,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,YAAY,CACV,wBAAwB,UAAU,CAAC,EAAE,aAAa,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC/F,CAAC;QACF,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAsB,EACtB,OAA+B;IAE/B,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAsB,EACtB,OAA+B;IAE/B,OAAO,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,UAAsB,EACtB,OAA+B;IAE/B,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAsB;IAC3D,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAClE,gFAAgF;IAChF,wCAAwC;IACxC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,4EAA4E;IAC5E,8EAA8E;IAC9E,wBAAwB;IACxB,MAAM,KAAK,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,gFAAgF;IAChF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAO,GAAqC,EAAE;IAE9C,MAAM,EAAE,kBAAkB,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE9C,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC/B,sEAAsE;YACtE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,SAAS,EAAE,IAAI;gBACf,oBAAoB,EAAE,IAAI;gBAC1B,MAAM;aACP,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,SAAS,EAAE,OAAO,CAAC,yBAAyB,CAAC;YAC7C,yBAAyB;YACzB,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAC9D,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,OAAO,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
import { BaseChatModel,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { BaseChatModel, BaseChatModelParams } from '@langchain/core/language_models/chat_models';
|
|
2
|
+
import type { ChatOllamaInput } from '@langchain/ollama';
|
|
3
|
+
/**
|
|
4
|
+
* GS2-59 — build a native `ChatOllama` client (`@langchain/ollama`, talking to Ollama's
|
|
5
|
+
* `/api/chat`). This replaces the previous `ChatOpenAI`→`/v1` client, which had two fatal
|
|
6
|
+
* properties for local thinking models: it DROPPED the model's separate reasoning field (the
|
|
7
|
+
* completions converter discards it — `__includeRawResponse` is openrouter-only), and it IGNORED
|
|
8
|
+
* `num_ctx` so a large agentic prompt starved the answer to empty content. `ChatOllama` fixes both:
|
|
9
|
+
* it honors `numCtx`, and it surfaces the model's thinking in `additional_kwargs.reasoning_content`
|
|
10
|
+
* — the exact field the reasoning pipeline (`pickReasoningDelta`) already reads — so the `/reasoning`
|
|
11
|
+
* panel populates with no downstream change.
|
|
12
|
+
*
|
|
13
|
+
* Ollama is a local, unauthenticated daemon, so the old OpenAI-client knobs are gone (2.0 migration
|
|
14
|
+
* note): point elsewhere with `OLLAMA_HOST`; the previous `configuration.baseURL` / placeholder
|
|
15
|
+
* `apiKey` fields no longer apply. If a reverse proxy in front of Ollama needs auth, set `headers`
|
|
16
|
+
* in the config (passed straight through to `ChatOllama`).
|
|
17
|
+
*/
|
|
18
|
+
export declare function processJsonConfig(llmConfig: ChatOllamaInput & BaseChatModelParams): Promise<BaseChatModel>;
|
|
5
19
|
export declare function init(configFileName: string, force?: boolean, model?: string): void;
|