@gaunt-sloth/core 2.0.0-alpha.3 → 2.0.0-alpha.31
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/README.md +52 -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/defaults.d.ts +84 -0
- package/dist/config/defaults.js +99 -0
- package/dist/config/defaults.js.map +1 -0
- 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/jsonc.d.ts +12 -0
- package/dist/config/jsonc.js +41 -0
- package/dist/config/jsonc.js.map +1 -0
- package/dist/config/loader.d.ts +246 -0
- package/dist/config/loader.js +1321 -0
- package/dist/config/loader.js.map +1 -0
- 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 +2999 -0
- package/dist/config/schema.js +1519 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/shell-policy.d.ts +896 -0
- package/dist/config/shell-policy.js +750 -0
- package/dist/config/shell-policy.js.map +1 -0
- 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 +760 -0
- package/dist/config/types.js +13 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config.d.ts +34 -827
- package/dist/config.js +25 -657
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +46 -0
- package/dist/constants.js +46 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +135 -2
- package/dist/core/GthAbstractAgent.js +496 -30
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +568 -54
- package/dist/core/GthAgentRunner.js +1537 -136
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.d.ts +115 -0
- package/dist/core/GthLangChainAgent.js +644 -17
- 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/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 +75 -0
- package/dist/core/debugCapture.js +101 -0
- package/dist/core/debugCapture.js.map +1 -0
- package/dist/core/gthLeanAgentFactory.d.ts +9 -0
- package/dist/core/gthLeanAgentFactory.js +10 -0
- package/dist/core/gthLeanAgentFactory.js.map +1 -0
- package/dist/core/launchBanner.d.ts +120 -0
- package/dist/core/launchBanner.js +418 -0
- package/dist/core/launchBanner.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 +60 -0
- package/dist/core/reasoningBlocks.js +98 -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/runStats.d.ts +52 -0
- package/dist/core/runStats.js +118 -0
- package/dist/core/runStats.js.map +1 -0
- package/dist/core/shell/ShellCommandFailedError.d.ts +54 -0
- package/dist/core/shell/ShellCommandFailedError.js +68 -0
- package/dist/core/shell/ShellCommandFailedError.js.map +1 -0
- 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 +84 -0
- package/dist/core/shell/approvalStop.js +119 -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 +81 -0
- package/dist/core/shell/hardline.js +607 -0
- package/dist/core/shell/hardline.js.map +1 -0
- package/dist/core/shell/negotiation.d.ts +249 -0
- package/dist/core/shell/negotiation.js +355 -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 +935 -0
- package/dist/core/shell/rater.js +1473 -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/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 +294 -12
- package/dist/core/types.js.map +1 -1
- package/dist/history/historyFormat.d.ts +28 -0
- package/dist/history/historyFormat.js +127 -0
- package/dist/history/historyFormat.js.map +1 -0
- package/dist/history/historyStore.d.ts +198 -0
- package/dist/history/historyStore.js +482 -0
- package/dist/history/historyStore.js.map +1 -0
- package/dist/history/recordSession.d.ts +37 -0
- package/dist/history/recordSession.js +56 -0
- package/dist/history/recordSession.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.js +5 -10
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/deepseek.d.ts +1 -1
- package/dist/providers/deepseek.js +5 -10
- package/dist/providers/deepseek.js.map +1 -1
- 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 +52 -0
- package/dist/providers/geminiThinking.js +72 -0
- package/dist/providers/geminiThinking.js.map +1 -0
- package/dist/providers/google-genai.d.ts +1 -1
- package/dist/providers/google-genai.js +12 -11
- package/dist/providers/google-genai.js.map +1 -1
- package/dist/providers/groq.d.ts +1 -1
- package/dist/providers/groq.js +5 -10
- 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 +153 -6
- package/dist/providers/modelDiscovery.js +295 -41
- package/dist/providers/modelDiscovery.js.map +1 -1
- package/dist/providers/ollama.d.ts +19 -5
- package/dist/providers/ollama.js +60 -52
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.js +39 -10
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +4 -5
- package/dist/providers/openrouter.js +20 -35
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/vertexai.d.ts +1 -1
- package/dist/providers/vertexai.js +12 -11
- package/dist/providers/vertexai.js.map +1 -1
- package/dist/providers/xai.d.ts +1 -1
- package/dist/providers/xai.js +5 -10
- 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 +60 -0
- package/dist/runtime/conversation.js +151 -0
- package/dist/runtime/conversation.js.map +1 -0
- package/dist/runtime/singleShot.d.ts +25 -5
- package/dist/runtime/singleShot.js +95 -36
- 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 +52 -0
- package/dist/utils/consoleUtils.js +72 -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.d.ts +24 -2
- package/dist/utils/fileUtils.js +54 -12
- package/dist/utils/fileUtils.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 +225 -0
- package/dist/utils/systemPromptNotes.js +340 -0
- package/dist/utils/systemPromptNotes.js.map +1 -0
- package/dist/utils/systemUtils.d.ts +49 -1
- package/dist/utils/systemUtils.js +67 -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 +66 -0
- package/dist/utils/untrustedText.js +80 -0
- package/dist/utils/untrustedText.js.map +1 -0
- package/package.json +22 -6
- package/schema/gsloth-config.schema.json +3134 -0
- 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 { availableDefaultConfigs } from '#src/config.js';
|
|
27
|
+
import { CONFIG_SCHEMA_POINTER } from '#src/constants.js';
|
|
27
28
|
import { displayDebug } from '#src/utils/consoleUtils.js';
|
|
28
29
|
import { env } from '#src/utils/systemUtils.js';
|
|
29
30
|
/** Default Ollama host, matching the Ollama CLI/library default. */
|
|
@@ -51,13 +52,20 @@ const chatOnly = (id) => !NON_CHAT_PATTERN.test(id);
|
|
|
51
52
|
* Provider registry. The curated `preferredModels` are the models we have
|
|
52
53
|
* tested with Gaunt Sloth's agent loop; defaults mirror the `init` templates in
|
|
53
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`).
|
|
54
62
|
*/
|
|
55
63
|
export const PROVIDER_DESCRIPTORS = [
|
|
56
64
|
{
|
|
57
65
|
id: 'anthropic',
|
|
58
66
|
label: 'Anthropic (Claude)',
|
|
59
67
|
apiKeyEnvironmentVariables: ['ANTHROPIC_API_KEY'],
|
|
60
|
-
preferredModels: ['claude-sonnet-
|
|
68
|
+
preferredModels: ['claude-sonnet-5', 'claude-opus-4-8'],
|
|
61
69
|
discovery: {
|
|
62
70
|
kind: 'anthropic',
|
|
63
71
|
modelsUrl: () => 'https://api.anthropic.com/v1/models',
|
|
@@ -68,7 +76,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
68
76
|
id: 'openai',
|
|
69
77
|
label: 'OpenAI',
|
|
70
78
|
apiKeyEnvironmentVariables: ['OPENAI_API_KEY'],
|
|
71
|
-
preferredModels: ['gpt-5.
|
|
79
|
+
preferredModels: ['gpt-5.6', 'gpt-5.5'],
|
|
72
80
|
discovery: {
|
|
73
81
|
kind: 'openai',
|
|
74
82
|
modelsUrl: () => 'https://api.openai.com/v1/models',
|
|
@@ -80,21 +88,30 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
80
88
|
id: 'google-genai',
|
|
81
89
|
label: 'Google AI Studio (Gemini)',
|
|
82
90
|
apiKeyEnvironmentVariables: ['GOOGLE_API_KEY'],
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
'
|
|
89
|
-
|
|
90
|
-
|
|
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.6-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.6-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
|
+
},
|
|
91
105
|
},
|
|
92
106
|
{
|
|
93
107
|
id: 'vertexai',
|
|
94
108
|
label: 'Google Vertex AI (Gemini)',
|
|
95
109
|
apiKeyEnvironmentVariables: [],
|
|
96
|
-
// Vertex
|
|
97
|
-
|
|
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.6-flash', 'gemini-3.5-flash-lite'],
|
|
98
115
|
discovery: { kind: 'none' },
|
|
99
116
|
requiresExternalAuth: true,
|
|
100
117
|
},
|
|
@@ -102,7 +119,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
102
119
|
id: 'groq',
|
|
103
120
|
label: 'Groq',
|
|
104
121
|
apiKeyEnvironmentVariables: ['GROQ_API_KEY'],
|
|
105
|
-
preferredModels: ['openai/gpt-oss-120b', '
|
|
122
|
+
preferredModels: ['openai/gpt-oss-120b', 'openai/gpt-oss-20b'],
|
|
106
123
|
discovery: {
|
|
107
124
|
kind: 'openai',
|
|
108
125
|
// Groq's OpenAI-compatible surface lives under /openai/v1.
|
|
@@ -127,7 +144,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
127
144
|
id: 'xai',
|
|
128
145
|
label: 'xAI (Grok)',
|
|
129
146
|
apiKeyEnvironmentVariables: ['XAI_API_KEY'],
|
|
130
|
-
preferredModels: ['grok-4.
|
|
147
|
+
preferredModels: ['grok-4.5', 'grok-4.3'],
|
|
131
148
|
discovery: {
|
|
132
149
|
kind: 'openai',
|
|
133
150
|
modelsUrl: () => 'https://api.x.ai/v1/models',
|
|
@@ -141,7 +158,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
141
158
|
// OPENROUTER_API_KEY is accepted as an alias.
|
|
142
159
|
label: 'OpenRouter',
|
|
143
160
|
apiKeyEnvironmentVariables: ['OPEN_ROUTER_API_KEY', 'OPENROUTER_API_KEY'],
|
|
144
|
-
preferredModels: ['
|
|
161
|
+
preferredModels: ['moonshotai/kimi-k3', 'deepseek/deepseek-v4-pro'],
|
|
145
162
|
discovery: {
|
|
146
163
|
kind: 'openai',
|
|
147
164
|
modelsUrl: () => 'https://openrouter.ai/api/v1/models',
|
|
@@ -149,6 +166,19 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
149
166
|
filter: chatOnly,
|
|
150
167
|
},
|
|
151
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
|
+
},
|
|
152
182
|
{
|
|
153
183
|
id: 'ollama',
|
|
154
184
|
label: 'Ollama (local)',
|
|
@@ -188,6 +218,54 @@ export function findApiKeyEnvVar(descriptor) {
|
|
|
188
218
|
}
|
|
189
219
|
return undefined;
|
|
190
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
|
+
}
|
|
191
269
|
/**
|
|
192
270
|
* Build the {@link ModelInfo} list for a provider given the descriptor and an
|
|
193
271
|
* optional set of model ids known to actually exist (e.g. from a live
|
|
@@ -196,20 +274,92 @@ export function findApiKeyEnvVar(descriptor) {
|
|
|
196
274
|
* - When `discoveredModels` is omitted, the curated `preferredModels` are
|
|
197
275
|
* returned, all flagged ⭐ preferred.
|
|
198
276
|
* - When provided, every discovered model is listed; those that also appear in
|
|
199
|
-
* the curated `preferredModels` are flagged ⭐ preferred.
|
|
277
|
+
* the curated `preferredModels` are flagged ⭐ preferred. The list is ordered
|
|
278
|
+
* **preferred first** (in curated order, so the recommended default sits on top
|
|
279
|
+
* and is pre-selected), then every other discovered model **alphabetically** —
|
|
280
|
+
* so a large catalog (e.g. OpenRouter's 200+ models) is navigable instead of
|
|
281
|
+
* arriving in the endpoint's arbitrary order.
|
|
200
282
|
*/
|
|
201
283
|
export function buildModelList(descriptor, discoveredModels) {
|
|
202
284
|
if (!discoveredModels) {
|
|
203
285
|
return descriptor.preferredModels.map((id) => ({ id, preferred: true }));
|
|
204
286
|
}
|
|
205
|
-
|
|
206
|
-
//
|
|
207
|
-
|
|
208
|
-
const
|
|
209
|
-
|
|
287
|
+
// Rank a discovered id by its position in the curated list, ignoring an explicit
|
|
288
|
+
// `:latest` suffix so `qwen3` matches `qwen3:latest`; `undefined` = not preferred.
|
|
289
|
+
const preferredRank = new Map(descriptor.preferredModels.map((id, i) => [id, i]));
|
|
290
|
+
const rankOf = (id) => preferredRank.get(id) ?? preferredRank.get(id.replace(/:latest$/, ''));
|
|
291
|
+
const isPreferred = (id) => rankOf(id) !== undefined;
|
|
292
|
+
const ordered = [...discoveredModels].sort((a, b) => {
|
|
293
|
+
const ra = rankOf(a);
|
|
294
|
+
const rb = rankOf(b);
|
|
295
|
+
if (ra !== undefined && rb !== undefined)
|
|
296
|
+
return ra - rb; // both preferred → curated order
|
|
297
|
+
if (ra !== undefined)
|
|
298
|
+
return -1; // preferred sorts before non-preferred
|
|
299
|
+
if (rb !== undefined)
|
|
300
|
+
return 1;
|
|
301
|
+
return a.localeCompare(b); // neither preferred → alphabetical
|
|
302
|
+
});
|
|
303
|
+
return ordered.map((id) => ({ id, preferred: isPreferred(id) }));
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* The single fallback source of truth for a provider's default model id (CFG-14).
|
|
307
|
+
*
|
|
308
|
+
* Returns the top curated ⭐ `preferredModels` entry for the provider — the one
|
|
309
|
+
* id that provider factories fall back to when a config carries no `model`, and
|
|
310
|
+
* the id first-run writes when live discovery is impossible. Centralising it here
|
|
311
|
+
* means the fallback lives in exactly ONE place (the curated registry above)
|
|
312
|
+
* instead of being duplicated as a literal in every `providers/<id>.ts`.
|
|
313
|
+
*
|
|
314
|
+
* Every registered provider is required to carry at least one curated model, so
|
|
315
|
+
* this always resolves for a known id; it throws for an unknown provider or a
|
|
316
|
+
* provider whose `preferredModels` is empty (a developer error — the invariant
|
|
317
|
+
* that the fallback source is complete would otherwise fail silently).
|
|
318
|
+
*
|
|
319
|
+
* @returns the curated default model id (always defined for a known provider).
|
|
320
|
+
*/
|
|
321
|
+
export function getCuratedFallbackModel(providerId) {
|
|
322
|
+
const model = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId)?.preferredModels[0];
|
|
323
|
+
if (!model) {
|
|
324
|
+
throw new Error(`No curated fallback model registered for provider "${providerId}".`);
|
|
325
|
+
}
|
|
326
|
+
return model;
|
|
210
327
|
}
|
|
211
|
-
/**
|
|
328
|
+
/**
|
|
329
|
+
* Build the minimal `.gsloth.config.json` body an `init` template writes for a
|
|
330
|
+
* provider (CFG-14). When `model` is omitted, the `model` key is left OUT of the
|
|
331
|
+
* config entirely, so the provider factory resolves it at run time from
|
|
332
|
+
* {@link getCuratedFallbackModel} — the single curated source that tracks the
|
|
333
|
+
* installed version, rather than a literal frozen into the user's file that 404s
|
|
334
|
+
* once the model is retired.
|
|
335
|
+
*
|
|
336
|
+
* A `$schema` pointer ({@link CONFIG_SCHEMA_POINTER}) is written first so editors offer
|
|
337
|
+
* autocomplete/validation against the shipped JSON Schema (GS2-1). `$schema` is a known,
|
|
338
|
+
* runtime-ignored config field (see the zod schema), so it never affects loading.
|
|
339
|
+
*/
|
|
340
|
+
export function buildInitConfigContent(providerId, model) {
|
|
341
|
+
const llm = { type: providerId };
|
|
342
|
+
if (model)
|
|
343
|
+
llm.model = model;
|
|
344
|
+
return JSON.stringify({ $schema: CONFIG_SCHEMA_POINTER, llm }, null, 2);
|
|
345
|
+
}
|
|
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
|
+
*/
|
|
212
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;
|
|
213
363
|
/**
|
|
214
364
|
* Parse the `id`s out of a models-endpoint payload. Both the OpenAI-compatible
|
|
215
365
|
* shape and Anthropic's native shape use a top-level `{ data: [{ id }] }`
|
|
@@ -223,30 +373,66 @@ function parseModelIds(body) {
|
|
|
223
373
|
.map((m) => m?.id)
|
|
224
374
|
.filter((id) => typeof id === 'string' && id.length > 0);
|
|
225
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
|
+
}
|
|
226
404
|
/**
|
|
227
405
|
* Internal: run live discovery for one descriptor, distinguishing a successful
|
|
228
|
-
* 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).
|
|
229
408
|
*
|
|
230
|
-
* @
|
|
231
|
-
*
|
|
232
|
-
*
|
|
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).
|
|
233
416
|
*/
|
|
234
|
-
async function discoverModelsInternal(descriptor) {
|
|
235
|
-
const
|
|
417
|
+
async function discoverModelsInternal(descriptor, options = {}) {
|
|
418
|
+
const timeoutMs = options.timeoutMs ?? DISCOVERY_TIMEOUT_MS;
|
|
419
|
+
const curated = (status) => ({
|
|
236
420
|
models: buildModelList(descriptor),
|
|
237
421
|
live: false,
|
|
422
|
+
status,
|
|
238
423
|
});
|
|
239
424
|
const { discovery } = descriptor;
|
|
240
425
|
if (discovery.kind === 'none' || !discovery.modelsUrl) {
|
|
241
|
-
return curated();
|
|
426
|
+
return curated('curated');
|
|
242
427
|
}
|
|
243
428
|
// Resolve an API key for cloud providers; ollama needs none.
|
|
244
429
|
let key = '';
|
|
245
430
|
if (descriptor.id !== 'ollama') {
|
|
246
431
|
const envVar = findApiKeyEnvVar(descriptor);
|
|
247
432
|
if (!envVar) {
|
|
248
|
-
// No key → don't hit the network; show the curated catalog.
|
|
249
|
-
|
|
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');
|
|
250
436
|
}
|
|
251
437
|
key = env[envVar] ?? '';
|
|
252
438
|
}
|
|
@@ -259,26 +445,29 @@ async function discoverModelsInternal(descriptor) {
|
|
|
259
445
|
const res = await fetch(url, {
|
|
260
446
|
method: 'GET',
|
|
261
447
|
headers,
|
|
262
|
-
signal: AbortSignal.timeout(
|
|
448
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
263
449
|
});
|
|
264
450
|
if (!res.ok) {
|
|
265
451
|
displayDebug(`Model discovery for "${descriptor.id}" returned HTTP ${res.status}.`);
|
|
266
|
-
return curated();
|
|
452
|
+
return curated('fallback');
|
|
267
453
|
}
|
|
268
454
|
const body = await res.json();
|
|
269
|
-
|
|
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);
|
|
270
459
|
if (discovery.filter) {
|
|
271
460
|
ids = ids.filter(discovery.filter);
|
|
272
461
|
}
|
|
273
462
|
if (ids.length === 0) {
|
|
274
463
|
displayDebug(`Model discovery for "${descriptor.id}" returned no usable models.`);
|
|
275
|
-
return curated();
|
|
464
|
+
return curated('fallback');
|
|
276
465
|
}
|
|
277
|
-
return { models: buildModelList(descriptor, ids), live: true };
|
|
466
|
+
return { models: buildModelList(descriptor, ids), live: true, status: 'live' };
|
|
278
467
|
}
|
|
279
468
|
catch (e) {
|
|
280
469
|
displayDebug(`Model discovery for "${descriptor.id}" failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
281
|
-
return curated();
|
|
470
|
+
return curated('fallback');
|
|
282
471
|
}
|
|
283
472
|
}
|
|
284
473
|
/**
|
|
@@ -288,6 +477,9 @@ async function discoverModelsInternal(descriptor) {
|
|
|
288
477
|
* - `kind: 'openai' | 'anthropic'` → fetches the models endpoint with a short
|
|
289
478
|
* timeout, parses `data[].id`, applies the chat-only `filter`, and overlays
|
|
290
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.
|
|
291
483
|
*
|
|
292
484
|
* Best-effort: any error / non-2xx / malformed / empty payload falls back to
|
|
293
485
|
* the curated list. This function NEVER throws — a bad key must degrade to the
|
|
@@ -297,12 +489,12 @@ async function discoverModelsInternal(descriptor) {
|
|
|
297
489
|
* the curated catalog is returned directly. Ollama (no key, local daemon) is
|
|
298
490
|
* always probed.
|
|
299
491
|
*/
|
|
300
|
-
export async function discoverModels(providerId) {
|
|
492
|
+
export async function discoverModels(providerId, options) {
|
|
301
493
|
const descriptor = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId);
|
|
302
494
|
if (!descriptor) {
|
|
303
495
|
throw new Error(`Unknown provider: ${providerId}`);
|
|
304
496
|
}
|
|
305
|
-
const { models } = await discoverModelsInternal(descriptor);
|
|
497
|
+
const { models } = await discoverModelsInternal(descriptor, options);
|
|
306
498
|
return models;
|
|
307
499
|
}
|
|
308
500
|
/**
|
|
@@ -311,9 +503,71 @@ export async function discoverModels(providerId) {
|
|
|
311
503
|
* Live-discovers from the provider's models endpoint where possible (with a
|
|
312
504
|
* curated fallback); returns the curated set for `kind: 'none'` providers. Does
|
|
313
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.
|
|
314
509
|
*/
|
|
315
|
-
export async function listModels(providerId) {
|
|
316
|
-
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 };
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Resolve the model id that `init` should bake into a generated config for a
|
|
534
|
+
* provider (CFG-14) — the safeguard against writing a speculative id that 404s
|
|
535
|
+
* once the model is retired.
|
|
536
|
+
*
|
|
537
|
+
* - **Live discovery possible** (a key / running daemon and a responding
|
|
538
|
+
* `/v1/models` endpoint): returns a *verified-present* id — the highest-ranked
|
|
539
|
+
* curated ⭐ id that is actually in the live list (matched tolerant of an
|
|
540
|
+
* `:latest` suffix), or, when no curated id is live, the first live id.
|
|
541
|
+
* - **Live discovery impossible** (`kind: 'none'`, no key, offline, empty
|
|
542
|
+
* catalog): returns `undefined`. This is the ONLY speculative path, and it
|
|
543
|
+
* deliberately declines to invent a literal: the caller OMITS `model` so the
|
|
544
|
+
* provider factory falls back to {@link getCuratedFallbackModel} at run time
|
|
545
|
+
* (a single curated source that upgrades with the installed version).
|
|
546
|
+
*
|
|
547
|
+
* Never throws — a bad key or network error degrades to `undefined`, mirroring
|
|
548
|
+
* {@link discoverModels}.
|
|
549
|
+
*/
|
|
550
|
+
export async function resolveInitModel(providerId) {
|
|
551
|
+
const descriptor = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId);
|
|
552
|
+
if (!descriptor)
|
|
553
|
+
return undefined;
|
|
554
|
+
const { models, live } = await discoverModelsInternal(descriptor);
|
|
555
|
+
// Not a live catalog → do NOT emit a speculative literal; defer to the run-time
|
|
556
|
+
// curated fallback by omitting `model`.
|
|
557
|
+
if (!live || models.length === 0)
|
|
558
|
+
return undefined;
|
|
559
|
+
// Prefer the highest-ranked curated id that is actually present in the live
|
|
560
|
+
// list, tolerating an explicit `:latest` suffix (so curated `qwen3` matches a
|
|
561
|
+
// live `qwen3:latest`).
|
|
562
|
+
const strip = (id) => id.replace(/:latest$/, '');
|
|
563
|
+
const liveByStripped = new Map(models.map((m) => [strip(m.id), m.id]));
|
|
564
|
+
for (const curated of descriptor.preferredModels) {
|
|
565
|
+
const hit = liveByStripped.get(strip(curated));
|
|
566
|
+
if (hit)
|
|
567
|
+
return hit;
|
|
568
|
+
}
|
|
569
|
+
// No curated id is live → the first live id is still a verified-present choice.
|
|
570
|
+
return models[0].id;
|
|
317
571
|
}
|
|
318
572
|
/**
|
|
319
573
|
* Detect every known provider on this machine and list its models.
|
|
@@ -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":"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"}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
import { BaseChatModel,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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>;
|
|
19
|
+
export declare function init(configFileName: string, force?: boolean, model?: string): void;
|