@gaunt-sloth/core 2.0.0-alpha.23 → 2.0.0-alpha.25
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 +43 -18
- 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 +6 -7
- package/dist/config/defaults.js +4 -8
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts +50 -3
- package/dist/config/loader.js +345 -29
- 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/schema.d.ts +2441 -116
- package/dist/config/schema.js +930 -19
- package/dist/config/schema.js.map +1 -1
- package/dist/config/shell-policy.d.ts +466 -116
- package/dist/config/shell-policy.js +273 -62
- package/dist/config/shell-policy.js.map +1 -1
- package/dist/config/tool-descriptions.d.ts +165 -0
- package/dist/config/tool-descriptions.js +229 -0
- package/dist/config/tool-descriptions.js.map +1 -0
- package/dist/config/types.d.ts +139 -6
- package/dist/config/types.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +85 -2
- package/dist/core/GthAbstractAgent.js +194 -1
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +341 -58
- package/dist/core/GthAgentRunner.js +857 -149
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.d.ts +99 -0
- package/dist/core/GthLangChainAgent.js +388 -3
- 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 +16 -0
- package/dist/core/debugCapture.js.map +1 -1
- package/dist/core/launchBanner.d.ts +120 -0
- package/dist/core/launchBanner.js +399 -0
- package/dist/core/launchBanner.js.map +1 -0
- package/dist/core/plainToolIndication.js +61 -35
- package/dist/core/plainToolIndication.js.map +1 -1
- package/dist/core/refusal.d.ts +53 -0
- package/dist/core/refusal.js +129 -0
- package/dist/core/refusal.js.map +1 -0
- package/dist/core/shell/approvalStop.d.ts +75 -0
- package/dist/core/shell/approvalStop.js +108 -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/normalize.d.ts +41 -1
- package/dist/core/shell/normalize.js +58 -4
- package/dist/core/shell/normalize.js.map +1 -1
- package/dist/core/shell/openWorld.d.ts +138 -0
- package/dist/core/shell/openWorld.js +523 -0
- package/dist/core/shell/openWorld.js.map +1 -0
- package/dist/core/shell/rater.d.ts +560 -0
- package/dist/core/shell/rater.js +895 -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 +66 -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 +14 -1
- package/dist/core/toolDisplay.js +69 -12
- package/dist/core/toolDisplay.js.map +1 -1
- package/dist/core/toolOutputChannel.d.ts +33 -6
- package/dist/core/toolOutputChannel.js +61 -8
- package/dist/core/toolOutputChannel.js.map +1 -1
- package/dist/core/types.d.ts +71 -9
- package/dist/core/types.js.map +1 -1
- package/dist/providers/geminiSchemaSanitizer.d.ts +6 -3
- package/dist/providers/geminiSchemaSanitizer.js +152 -6
- package/dist/providers/geminiSchemaSanitizer.js.map +1 -1
- package/dist/providers/modelDiscovery.d.ts +18 -4
- package/dist/providers/modelDiscovery.js +67 -17
- package/dist/providers/modelDiscovery.js.map +1 -1
- package/dist/providers/openai.js +34 -0
- package/dist/providers/openai.js.map +1 -1
- package/dist/runtime/askStructured.d.ts +8 -7
- package/dist/runtime/askStructured.js +8 -7
- package/dist/runtime/askStructured.js.map +1 -1
- package/dist/runtime/conversation.js +89 -76
- package/dist/runtime/conversation.js.map +1 -1
- package/dist/runtime/singleShot.js +71 -60
- package/dist/runtime/singleShot.js.map +1 -1
- 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/consoleUtils.d.ts +30 -0
- package/dist/utils/consoleUtils.js +27 -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 +58 -0
- package/dist/utils/debugDump.js +149 -15
- package/dist/utils/debugDump.js.map +1 -1
- package/dist/utils/llmUtils.d.ts +22 -8
- package/dist/utils/llmUtils.js +48 -8
- package/dist/utils/llmUtils.js.map +1 -1
- package/dist/utils/redactSecrets.js +68 -20
- package/dist/utils/redactSecrets.js.map +1 -1
- package/dist/utils/systemUtils.d.ts +17 -0
- package/dist/utils/systemUtils.js +17 -0
- package/dist/utils/systemUtils.js.map +1 -1
- package/package.json +5 -2
- package/schema/gsloth-config.schema.json +1484 -466
- 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
|
@@ -49,10 +49,14 @@ export interface ModelInfo {
|
|
|
49
49
|
* Covers openai, openrouter, groq, deepseek, xai and ollama (local).
|
|
50
50
|
* - `anthropic` — Anthropic's native `GET /v1/models`
|
|
51
51
|
* (`{ data: [{ type, id, display_name }] }`) with `x-api-key` auth.
|
|
52
|
-
* - `
|
|
53
|
-
* (
|
|
52
|
+
* - `google` — Google AI Studio's native ListModels
|
|
53
|
+
* (`GET /v1beta/models` → `{ models: [{ name, supportedGenerationMethods }] }`)
|
|
54
|
+
* with `x-goog-api-key` auth. Chat capability is decided by a data-driven
|
|
55
|
+
* `supportedGenerationMethods` check rather than a name regex (google-genai).
|
|
56
|
+
* - `none` — no cheap live endpoint; stay on the curated list (vertexai,
|
|
57
|
+
* which authenticates via gcloud ADC rather than an API key).
|
|
54
58
|
*/
|
|
55
|
-
export type DiscoveryKind = 'openai' | 'anthropic' | 'none';
|
|
59
|
+
export type DiscoveryKind = 'openai' | 'anthropic' | 'google' | 'none';
|
|
56
60
|
/**
|
|
57
61
|
* Per-provider live-discovery adapter. Bundled on the {@link ProviderDescriptor}
|
|
58
62
|
* so {@link discoverModels} can be fully data-driven.
|
|
@@ -112,6 +116,13 @@ export declare const DEFAULT_OLLAMA_HOST = "http://127.0.0.1:11434";
|
|
|
112
116
|
* Provider registry. The curated `preferredModels` are the models we have
|
|
113
117
|
* tested with Gaunt Sloth's agent loop; defaults mirror the `init` templates in
|
|
114
118
|
* each `#src/providers/<id>.js` factory.
|
|
119
|
+
*
|
|
120
|
+
* CFG-22 (2026-07-24): the CLOUD curated lists were trimmed to 1-2 current-gen ids/provider
|
|
121
|
+
* (head-first = the runtime default via getCuratedFallbackModel). Every surviving cloud id was live
|
|
122
|
+
* tool-call-validated with a `gth eval` identity matrix (a marker-read that proves a real tool
|
|
123
|
+
* call), with two exceptions: vertexai (no ADC here → mirrors the google-genai head) and ollama
|
|
124
|
+
* (local ids, out of the cloud-trim scope — kept as-is, validated against the local daemon if
|
|
125
|
+
* present). A dead id was caught and dropped: groq's qwen 404'd (`model_not_found`).
|
|
115
126
|
*/
|
|
116
127
|
export declare const PROVIDER_DESCRIPTORS: readonly ProviderDescriptor[];
|
|
117
128
|
/**
|
|
@@ -206,7 +217,7 @@ export declare const INTERACTIVE_MODEL_FETCH_TIMEOUT_MS = 12000;
|
|
|
206
217
|
* failed: network error/timeout, non-2xx, or an empty/malformed payload. THIS is
|
|
207
218
|
* the "couldn't reach" case the first-run dialog surfaces.
|
|
208
219
|
* - `curated` — no live query was attempted, by design: a `kind:'none'` provider
|
|
209
|
-
* (
|
|
220
|
+
* (vertexai) or a cloud provider with no API key present. The
|
|
210
221
|
* curated catalog is the expected result here, NOT a degrade, so the dialog must
|
|
211
222
|
* NOT show a "couldn't reach" notice for it.
|
|
212
223
|
*/
|
|
@@ -232,6 +243,9 @@ export interface ModelDiscoveryResult {
|
|
|
232
243
|
* - `kind: 'openai' | 'anthropic'` → fetches the models endpoint with a short
|
|
233
244
|
* timeout, parses `data[].id`, applies the chat-only `filter`, and overlays
|
|
234
245
|
* the ⭐ preferred flags via `buildModelList(descriptor, liveIds)`.
|
|
246
|
+
* - `kind: 'google'` → fetches the native ListModels endpoint, parses
|
|
247
|
+
* `models[].name` keeping only `generateContent`-capable entries and stripping
|
|
248
|
+
* the `models/` prefix, then overlays the ⭐ preferred flags likewise.
|
|
235
249
|
*
|
|
236
250
|
* Best-effort: any error / non-2xx / malformed / empty payload falls back to
|
|
237
251
|
* the curated list. This function NEVER throws — a bad key must degrade to the
|
|
@@ -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.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
|
+
},
|
|
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.6-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',
|
|
@@ -154,7 +170,7 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
154
170
|
id: 'huggingface',
|
|
155
171
|
label: 'Hugging Face (Inference Providers)',
|
|
156
172
|
apiKeyEnvironmentVariables: ['HF_TOKEN', 'HUGGINGFACEHUB_API_TOKEN', 'HF_API_KEY'],
|
|
157
|
-
preferredModels: ['
|
|
173
|
+
preferredModels: ['zai-org/GLM-5.2', 'moonshotai/Kimi-K2.7-Code'],
|
|
158
174
|
discovery: {
|
|
159
175
|
kind: 'openai',
|
|
160
176
|
// HF's OpenAI-compatible router exposes /v1/models across all inference providers.
|
|
@@ -309,6 +325,34 @@ function parseModelIds(body) {
|
|
|
309
325
|
.map((m) => m?.id)
|
|
310
326
|
.filter((id) => typeof id === 'string' && id.length > 0);
|
|
311
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* Parse the Google AI Studio (`google-genai`) native ListModels envelope
|
|
330
|
+
* `{ models: [{ name: 'models/<id>', supportedGenerationMethods: [...] }] }`.
|
|
331
|
+
*
|
|
332
|
+
* Unlike the OpenAI/Anthropic `data[].id` shape, this endpoint returns the whole
|
|
333
|
+
* generative-language family — embeddings, TTS, image, etc. — alongside the chat
|
|
334
|
+
* models, so chat capability is decided by a **data-driven** check
|
|
335
|
+
* (`supportedGenerationMethods` includes `generateContent`) that REPLACES the
|
|
336
|
+
* name-regex `chatOnly` filter for this provider. Each surviving `name` is a
|
|
337
|
+
* fully-qualified `models/<id>`; the `models/` prefix is stripped to a bare slug
|
|
338
|
+
* (`gemini-3.6-flash`) — the form `ChatGoogleGenerativeAI` expects and the id the
|
|
339
|
+
* curated ⭐ overlay in {@link buildModelList} matches on.
|
|
340
|
+
*/
|
|
341
|
+
function parseGoogleModels(body) {
|
|
342
|
+
const models = body?.models;
|
|
343
|
+
if (!Array.isArray(models))
|
|
344
|
+
return [];
|
|
345
|
+
return (models
|
|
346
|
+
.filter((m) => {
|
|
347
|
+
const methods = m?.supportedGenerationMethods;
|
|
348
|
+
// Data-driven chat-capability check (replaces the name-regex chatOnly for google).
|
|
349
|
+
return Array.isArray(methods) && methods.includes('generateContent');
|
|
350
|
+
})
|
|
351
|
+
.map((m) => m?.name)
|
|
352
|
+
.filter((name) => typeof name === 'string' && name.length > 0)
|
|
353
|
+
// Strip the `models/` prefix to the bare slug ChatGoogleGenerativeAI / the ⭐ overlay expect.
|
|
354
|
+
.map((name) => name.replace(/^models\//, '')));
|
|
355
|
+
}
|
|
312
356
|
/**
|
|
313
357
|
* Internal: run live discovery for one descriptor, distinguishing a successful
|
|
314
358
|
* live query from a curated fallback and — via {@link ModelDiscoveryStatus} —
|
|
@@ -360,7 +404,10 @@ async function discoverModelsInternal(descriptor, options = {}) {
|
|
|
360
404
|
return curated('fallback');
|
|
361
405
|
}
|
|
362
406
|
const body = await res.json();
|
|
363
|
-
|
|
407
|
+
// The google native ListModels envelope (`{ models: [{ name, supportedGenerationMethods }] }`)
|
|
408
|
+
// differs from the OpenAI/Anthropic `data[].id` shape and carries its own
|
|
409
|
+
// capability-based chat filter + `models/` prefix strip inside the parser.
|
|
410
|
+
let ids = discovery.kind === 'google' ? parseGoogleModels(body) : parseModelIds(body);
|
|
364
411
|
if (discovery.filter) {
|
|
365
412
|
ids = ids.filter(discovery.filter);
|
|
366
413
|
}
|
|
@@ -382,6 +429,9 @@ async function discoverModelsInternal(descriptor, options = {}) {
|
|
|
382
429
|
* - `kind: 'openai' | 'anthropic'` → fetches the models endpoint with a short
|
|
383
430
|
* timeout, parses `data[].id`, applies the chat-only `filter`, and overlays
|
|
384
431
|
* the ⭐ preferred flags via `buildModelList(descriptor, liveIds)`.
|
|
432
|
+
* - `kind: 'google'` → fetches the native ListModels endpoint, parses
|
|
433
|
+
* `models[].name` keeping only `generateContent`-capable entries and stripping
|
|
434
|
+
* the `models/` prefix, then overlays the ⭐ preferred flags likewise.
|
|
385
435
|
*
|
|
386
436
|
* Best-effort: any error / non-2xx / malformed / empty payload falls back to
|
|
387
437
|
* the curated list. This function NEVER throws — a bad key must degrade to the
|
|
@@ -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;AAC1E,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;;;;;;;;;;;;;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"}
|
package/dist/providers/openai.js
CHANGED
|
@@ -16,6 +16,35 @@ const SUPPORTED_DEFAULT_TEMPERATURE = 1;
|
|
|
16
16
|
function isTemperatureRestrictedModel(model) {
|
|
17
17
|
return !!model && TEMPERATURE_RESTRICTED_MODEL.test(model);
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Decide whether to force the OpenAI Responses API (`/v1/responses`) for this request.
|
|
21
|
+
*
|
|
22
|
+
* OpenAI's `/v1/chat/completions` endpoint rejects reasoning-capable models (the gpt-5.x / o-series
|
|
23
|
+
* families) when `reasoning_effort` is combined with function tools:
|
|
24
|
+
* "Function tools with reasoning_effort are not supported for gpt-5.6-luna in
|
|
25
|
+
* /v1/chat/completions. To use function tools, use /v1/responses or set reasoning_effort to
|
|
26
|
+
* 'none'."
|
|
27
|
+
* LangChain's auto-router only flips to the Responses API for OpenAI built-in tools,
|
|
28
|
+
* `reasoning.summary` (not `.effort`), custom tools, or a hardcoded model allowlist — none of which
|
|
29
|
+
* covers ordinary function tools on a reasoning model that isn't yet on that allowlist (e.g.
|
|
30
|
+
* gpt-5.6-luna). Crucially, these models **default `reasoning_effort` to a non-`none` value**, so the
|
|
31
|
+
* collision fires even when the gth config sets NO reasoning at all (the failing case: a bare
|
|
32
|
+
* `{ type: openai, model: gpt-5.6-luna }` still 400s on `chat/completions` + tools). So for any
|
|
33
|
+
* reasoning-capable model, when the user has not made an explicit choice, default `useResponsesApi`
|
|
34
|
+
* to true — do NOT gate on reasoning being explicitly configured (GS2-74's original bug: it required
|
|
35
|
+
* `reasoningEffort`/`reasoning` to be set, missing the far more common bare-config path).
|
|
36
|
+
*
|
|
37
|
+
* Guards: (1) only reasoning-capable models — leave gpt-4o etc. on completions; (2) never override an
|
|
38
|
+
* explicit `useResponsesApi` the user set (true OR false). The model-name guard also scopes this away
|
|
39
|
+
* from OpenAI-compatible providers that reuse this file (Inception/DeepSeek/xAI ids don't match the
|
|
40
|
+
* regex). Routing a no-tools/plain call to Responses is still correct FOR GTH because gth never
|
|
41
|
+
* injects reasoning params itself — so even a non-reasoning `gpt-5`-prefixed id (e.g.
|
|
42
|
+
* `gpt-5-chat-latest`, which this regex also sweeps) is accepted there. (Responses isn't a universal
|
|
43
|
+
* superset — it drops some chat/completions-only params like `n>1` — but gth uses none of those.)
|
|
44
|
+
*/
|
|
45
|
+
function shouldUseResponsesApi(fields) {
|
|
46
|
+
return fields.useResponsesApi === undefined && isTemperatureRestrictedModel(fields.model);
|
|
47
|
+
}
|
|
19
48
|
// Function to process JSON config and create OpenAI LLM instance
|
|
20
49
|
// noinspection JSUnusedGlobalSymbols
|
|
21
50
|
export async function processJsonConfig(llmConfig) {
|
|
@@ -43,6 +72,11 @@ export async function processJsonConfig(llmConfig) {
|
|
|
43
72
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
73
|
delete configFields.temperature;
|
|
45
74
|
}
|
|
75
|
+
// Reasoning-capable OpenAI models 400 on `/v1/chat/completions` when `reasoning_effort` meets
|
|
76
|
+
// function tools; route them to the Responses API unless the user pinned `useResponsesApi`.
|
|
77
|
+
if (shouldUseResponsesApi(configFields)) {
|
|
78
|
+
configFields.useResponsesApi = true;
|
|
79
|
+
}
|
|
46
80
|
return new ChatOpenAI(configFields);
|
|
47
81
|
}
|
|
48
82
|
function getApiKey(llmConfig) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAQhD,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEnG;;;;;;;GAOG;AACH,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAErD,yFAAyF;AACzF,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,SAAS,4BAA4B,CAAC,KAAyB;IAC7D,OAAO,CAAC,CAAC,KAAK,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,iEAAiE;AACjE,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAmE;IAEnE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzD,wEAAwE;IACxE,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG;QACnB,GAAG,SAAS;QACZ,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,uBAAuB,CAAC,QAAQ,CAAC;KAC5D,CAAC;IACF,8DAA8D;IAC9D,OAAQ,YAAoB,CAAC,IAAI,CAAC;IAClC,8DAA8D;IAC9D,OAAQ,YAAoB,CAAC,yBAAyB,CAAC;IAEvD,6FAA6F;IAC7F,8FAA8F;IAC9F,6FAA6F;IAC7F,IACE,4BAA4B,CAAC,YAAY,CAAC,KAAK,CAAC;QAChD,YAAY,CAAC,WAAW,KAAK,SAAS;QACtC,YAAY,CAAC,WAAW,KAAK,6BAA6B,EAC1D,CAAC;QACD,cAAc,CACZ,UAAU,YAAY,CAAC,KAAK,0CAA0C;YACpE,qBAAqB,6BAA6B,gBAAgB;YAClE,0CAA0C,YAAY,CAAC,WAAW,GAAG,CACxE,CAAC;QACF,8DAA8D;QAC9D,OAAQ,YAAoB,CAAC,WAAW,CAAC;IAC3C,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,SAAmE;IACpF,8DAA8D;IAC9D,MAAM,IAAI,GAAG,SAA0C,CAAC;IACxD,IAAI,IAAI,CAAC,yBAAyB,IAAI,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC1E,OAAO,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,cAAsB,EAAE,KAAK,GAAG,KAAK,EAAE,KAAc;IACxE,yDAAyD;IACzD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,2BAA2B,CAAC,cAAc,EAAE,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5F,cAAc,CACZ,yBAAyB,cAAc,uBAAuB;QAC5D,gDAAgD,CACnD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,23 +3,24 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A reusable, non-agentic "ask the LLM and get a schema-validated object back" primitive — the
|
|
5
5
|
* structured-output half the (later) `gth workflow` host calls. Deliberately mirrors the
|
|
6
|
-
* *mechanism* of the
|
|
7
|
-
* `judge.ts
|
|
6
|
+
* *mechanism* of the structured-evaluation calls ({@link judgeEvalCase} — the EVAL GRADER in
|
|
7
|
+
* `@gaunt-sloth/batch`'s `judge.ts` — and its in-core sibling {@link rateShellCommand}, the
|
|
8
|
+
* approvals AI rater in `core/shell/rater.ts`):
|
|
8
9
|
* `model.withStructuredOutput(schema)` for a single structured call, `.invoke([SystemMessage,
|
|
9
10
|
* HumanMessage])` raced against a wall-clock timeout via `Promise.race`, a defensive `safeParse`
|
|
10
11
|
* re-validation, `clearTimeout` in `finally`, and — crucially — it **never throws**, returning a
|
|
11
12
|
* failure object instead.
|
|
12
13
|
*
|
|
13
|
-
* Differences from
|
|
14
|
-
* system/user strings from the caller (
|
|
15
|
-
* prompt), and it reads the model from `config.llm` (like `runSingleShot`/`
|
|
14
|
+
* Differences from those two: this one is **generic** over the Zod schema and takes the
|
|
15
|
+
* system/user strings from the caller (they hard-code a schema and build a rubric/safety
|
|
16
|
+
* prompt), and it reads the model from `config.llm` (like `runSingleShot`/`rateShellCommand`),
|
|
16
17
|
* so the workflow host can hand it the resolved {@link GthConfig} directly. `judgeEvalCase` could
|
|
17
18
|
* later be refactored to delegate to this primitive — out of scope here.
|
|
18
19
|
*/
|
|
19
20
|
import * as z from 'zod';
|
|
20
21
|
import type { GthConfig } from '#src/config.js';
|
|
21
22
|
/**
|
|
22
|
-
* Default wall-clock budget (ms) for the structured LLM call — same value as
|
|
23
|
+
* Default wall-clock budget (ms) for the structured LLM call — same value as their
|
|
23
24
|
* `EVAL_JUDGE_DEFAULT_TIMEOUT_MS` / `JUDGE_DEFAULT_TIMEOUT_MS`, kept as this module's own constant
|
|
24
25
|
* since the primitive is conceptually independent of them.
|
|
25
26
|
*/
|
|
@@ -47,7 +48,7 @@ export type AskStructuredResult<T> = {
|
|
|
47
48
|
};
|
|
48
49
|
/**
|
|
49
50
|
* Ask the configured model for a single schema-validated object — a non-agentic structured-output
|
|
50
|
-
* call that mirrors
|
|
51
|
+
* call that mirrors their mechanism (see the module doc) and never throws.
|
|
51
52
|
*
|
|
52
53
|
* - No usable model (`config.llm` missing or lacking `withStructuredOutput`) →
|
|
53
54
|
* `{ ok: false, error: 'No usable model configured.' }`.
|
|
@@ -3,29 +3,30 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A reusable, non-agentic "ask the LLM and get a schema-validated object back" primitive — the
|
|
5
5
|
* structured-output half the (later) `gth workflow` host calls. Deliberately mirrors the
|
|
6
|
-
* *mechanism* of the
|
|
7
|
-
* `judge.ts
|
|
6
|
+
* *mechanism* of the structured-evaluation calls ({@link judgeEvalCase} — the EVAL GRADER in
|
|
7
|
+
* `@gaunt-sloth/batch`'s `judge.ts` — and its in-core sibling {@link rateShellCommand}, the
|
|
8
|
+
* approvals AI rater in `core/shell/rater.ts`):
|
|
8
9
|
* `model.withStructuredOutput(schema)` for a single structured call, `.invoke([SystemMessage,
|
|
9
10
|
* HumanMessage])` raced against a wall-clock timeout via `Promise.race`, a defensive `safeParse`
|
|
10
11
|
* re-validation, `clearTimeout` in `finally`, and — crucially — it **never throws**, returning a
|
|
11
12
|
* failure object instead.
|
|
12
13
|
*
|
|
13
|
-
* Differences from
|
|
14
|
-
* system/user strings from the caller (
|
|
15
|
-
* prompt), and it reads the model from `config.llm` (like `runSingleShot`/`
|
|
14
|
+
* Differences from those two: this one is **generic** over the Zod schema and takes the
|
|
15
|
+
* system/user strings from the caller (they hard-code a schema and build a rubric/safety
|
|
16
|
+
* prompt), and it reads the model from `config.llm` (like `runSingleShot`/`rateShellCommand`),
|
|
16
17
|
* so the workflow host can hand it the resolved {@link GthConfig} directly. `judgeEvalCase` could
|
|
17
18
|
* later be refactored to delegate to this primitive — out of scope here.
|
|
18
19
|
*/
|
|
19
20
|
import { HumanMessage, SystemMessage } from '@langchain/core/messages';
|
|
20
21
|
/**
|
|
21
|
-
* Default wall-clock budget (ms) for the structured LLM call — same value as
|
|
22
|
+
* Default wall-clock budget (ms) for the structured LLM call — same value as their
|
|
22
23
|
* `EVAL_JUDGE_DEFAULT_TIMEOUT_MS` / `JUDGE_DEFAULT_TIMEOUT_MS`, kept as this module's own constant
|
|
23
24
|
* since the primitive is conceptually independent of them.
|
|
24
25
|
*/
|
|
25
26
|
export const ASK_STRUCTURED_DEFAULT_TIMEOUT_MS = 30_000;
|
|
26
27
|
/**
|
|
27
28
|
* Ask the configured model for a single schema-validated object — a non-agentic structured-output
|
|
28
|
-
* call that mirrors
|
|
29
|
+
* call that mirrors their mechanism (see the module doc) and never throws.
|
|
29
30
|
*
|
|
30
31
|
* - No usable model (`config.llm` missing or lacking `withStructuredOutput`) →
|
|
31
32
|
* `{ ok: false, error: 'No usable model configured.' }`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"askStructured.js","sourceRoot":"","sources":["../../src/runtime/askStructured.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"askStructured.js","sourceRoot":"","sources":["../../src/runtime/askStructured.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKvE;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC;AAmBxD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAoB,EACpB,IAA0B;IAE1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,iCAAiC,CAAC;IAEtE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;IACzB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC/D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,KAAgD,CAAC;IACrD,IAAI,CAAC;QACH,gGAAgG;QAChG,4FAA4F;QAC5F,+FAA+F;QAC/F,MAAM,UAAU,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAA4C,CAAC,CAAC;QAC5F,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7F,MAAM,OAAO,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;YAC7D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAClE,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,SAAS,KAAK,EAAE,CAAC;QACjF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;QACpE,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACtF,CAAC;YAAS,CAAC;QACT,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -48,90 +48,103 @@ import { getProjectDir } from '#src/utils/systemUtils.js';
|
|
|
48
48
|
*/
|
|
49
49
|
export async function runConversation(source, _preamble, userMessages, config, resolvers, command = 'ask', agentFactory) {
|
|
50
50
|
const progressIndicator = config.streamOutput ? undefined : new ProgressIndicator('Thinking.');
|
|
51
|
-
// Resolve output path and initialize session logging if enabled (same discipline as runSingleShot;
|
|
52
|
-
// a no-op when `writeOutputToFile` is off, as `gth eval` forces it — getCommandOutputFilePath null).
|
|
53
|
-
const filePath = getCommandOutputFilePath(config, source);
|
|
54
|
-
if (filePath) {
|
|
55
|
-
initSessionLogging(filePath, config.streamSessionInferenceLog);
|
|
56
|
-
}
|
|
57
|
-
// Build the agent + resolve tools ONCE for the whole conversation (the MCP connection / any OAuth /
|
|
58
|
-
// the toolset must persist across turns so cross-turn memory is real). Cleaned up once, in finally.
|
|
59
|
-
const runner = new GthAgentRunner(defaultStatusCallback, resolvers, agentFactory);
|
|
60
|
-
const results = [];
|
|
61
|
-
// The accumulated conversation: [user1, ai1, user2, ai2, …]. Each turn replays the whole array
|
|
62
|
-
// against a freshly-rotated thread (see the doc block). BATCH-13: NO leading SystemMessage — the
|
|
63
|
-
// agent composes the system prompt via `createAgent({ systemPrompt })` (same as runSingleShot);
|
|
64
|
-
// seeding a preamble SystemMessage here too made two system messages, which Anthropic rejects.
|
|
65
|
-
const messages = [];
|
|
66
51
|
try {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
52
|
+
// Resolve output path and initialize session logging if enabled (same discipline as
|
|
53
|
+
// runSingleShot; a no-op when `writeOutputToFile` is off, as `gth eval` forces it —
|
|
54
|
+
// getCommandOutputFilePath null).
|
|
55
|
+
const filePath = getCommandOutputFilePath(config, source);
|
|
56
|
+
if (filePath) {
|
|
57
|
+
initSessionLogging(filePath, config.streamSessionInferenceLog);
|
|
58
|
+
}
|
|
59
|
+
// Build the agent + resolve tools ONCE for the whole conversation (the MCP connection / any
|
|
60
|
+
// OAuth / the toolset must persist across turns so cross-turn memory is real). Cleaned up once,
|
|
61
|
+
// in finally.
|
|
62
|
+
const runner = new GthAgentRunner(defaultStatusCallback, resolvers, agentFactory);
|
|
63
|
+
const results = [];
|
|
64
|
+
// The accumulated conversation: [user1, ai1, user2, ai2, …]. Each turn replays the whole array
|
|
65
|
+
// against a freshly-rotated thread (see the doc block). BATCH-13: NO leading SystemMessage — the
|
|
66
|
+
// agent composes the system prompt via `createAgent({ systemPrompt })` (same as runSingleShot);
|
|
67
|
+
// seeding a preamble SystemMessage here too made two system messages, which Anthropic rejects.
|
|
68
|
+
const messages = [];
|
|
69
|
+
try {
|
|
70
|
+
await runner.init(command, config, new MemorySaver());
|
|
71
|
+
for (const userMessage of userMessages) {
|
|
72
|
+
// Rotate to a fresh (empty) checkpointer thread so this turn's replay of the full `messages`
|
|
73
|
+
// array is the sole history the agent sees — no double-append from a prior checkpoint.
|
|
74
|
+
runner.resetThread();
|
|
75
|
+
messages.push(new HumanMessage(userMessage));
|
|
76
|
+
const startedAt = Date.now();
|
|
77
|
+
let answer = '';
|
|
78
|
+
let ok = true;
|
|
79
|
+
let error;
|
|
80
|
+
try {
|
|
81
|
+
answer = await runner.processMessages(messages);
|
|
82
|
+
// Append this turn's answer so the NEXT turn's replay includes it (cross-turn memory).
|
|
83
|
+
messages.push(new AIMessage(answer));
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
ok = false;
|
|
87
|
+
error = err instanceof Error ? err.message : String(err);
|
|
88
|
+
displayError(`Failed to get answer: ${error}`);
|
|
89
|
+
}
|
|
90
|
+
// GS2-16: read this turn's token/tool delta from the live agent (before cleanup). Fail-soft
|
|
91
|
+
// — analytics must never affect the run. `processMessages` reset the tally at its top, so
|
|
92
|
+
// this is THIS turn's usage, not the conversation's cumulative total.
|
|
93
|
+
let runStats = { tools: [] };
|
|
94
|
+
try {
|
|
95
|
+
const s = runner.getRunStats?.();
|
|
96
|
+
if (s)
|
|
97
|
+
runStats = s;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
/* fail-soft */
|
|
101
|
+
}
|
|
102
|
+
// GS2-7 (B20): opt-in, fail-soft per-turn session history. A no-op unless `history.enabled`.
|
|
103
|
+
recordSessionSafe(config, {
|
|
104
|
+
command,
|
|
105
|
+
project: getProjectDir(),
|
|
106
|
+
model: config.modelDisplayName,
|
|
107
|
+
prompt: userMessage,
|
|
108
|
+
response: answer,
|
|
109
|
+
tokensInput: runStats.tokensInput,
|
|
110
|
+
tokensOutput: runStats.tokensOutput,
|
|
111
|
+
tools: runStats.tools.length > 0 ? runStats.tools : undefined,
|
|
112
|
+
durationMs: Date.now() - startedAt,
|
|
113
|
+
});
|
|
114
|
+
results.push({ ok, answer, error, ...runStats });
|
|
115
|
+
// A failed turn breaks the conversation's context — stop rather than run later turns on it.
|
|
116
|
+
if (!ok)
|
|
117
|
+
break;
|
|
86
118
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
await runner.cleanup();
|
|
122
|
+
}
|
|
123
|
+
progressIndicator?.stop();
|
|
124
|
+
if (config.writeOutputToFile === false) {
|
|
125
|
+
display('\n'); // something going on in some terminals, they swallow last line of output
|
|
126
|
+
}
|
|
127
|
+
if (filePath) {
|
|
91
128
|
try {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
129
|
+
flushSessionLog();
|
|
130
|
+
stopSessionLogging();
|
|
131
|
+
displaySuccess(`\n\nThis report can be found in ${filePath}`);
|
|
95
132
|
}
|
|
96
|
-
catch {
|
|
97
|
-
|
|
133
|
+
catch (err) {
|
|
134
|
+
displayError(`Failed to write answer to file: ${filePath}`);
|
|
135
|
+
displayError(err instanceof Error ? err.message : String(err));
|
|
98
136
|
}
|
|
99
|
-
// GS2-7 (B20): opt-in, fail-soft per-turn session history. A no-op unless `history.enabled`.
|
|
100
|
-
recordSessionSafe(config, {
|
|
101
|
-
command,
|
|
102
|
-
project: getProjectDir(),
|
|
103
|
-
model: config.modelDisplayName,
|
|
104
|
-
prompt: userMessage,
|
|
105
|
-
response: answer,
|
|
106
|
-
tokensInput: runStats.tokensInput,
|
|
107
|
-
tokensOutput: runStats.tokensOutput,
|
|
108
|
-
tools: runStats.tools.length > 0 ? runStats.tools : undefined,
|
|
109
|
-
durationMs: Date.now() - startedAt,
|
|
110
|
-
});
|
|
111
|
-
results.push({ ok, answer, error, ...runStats });
|
|
112
|
-
// A failed turn breaks the conversation's context — stop rather than run later turns on it.
|
|
113
|
-
if (!ok)
|
|
114
|
-
break;
|
|
115
137
|
}
|
|
138
|
+
return results;
|
|
116
139
|
}
|
|
117
140
|
finally {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
try {
|
|
126
|
-
flushSessionLog();
|
|
127
|
-
stopSessionLogging();
|
|
128
|
-
displaySuccess(`\n\nThis report can be found in ${filePath}`);
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
displayError(`Failed to write answer to file: ${filePath}`);
|
|
132
|
-
displayError(err instanceof Error ? err.message : String(err));
|
|
133
|
-
}
|
|
141
|
+
// EXT-53: the indicator owns a 1s setInterval — an active libuv handle that keeps Node's event
|
|
142
|
+
// loop from ever draining, so leaking it hangs the CLI forever after the work is done. The
|
|
143
|
+
// `stop()` above sits where it does for output ordering (before the trailing newline / the
|
|
144
|
+
// "report can be found in …" line); this `finally` guarantees the handle is also released when
|
|
145
|
+
// anything above throws — notably `runner.init()`, which has no catch, and `runner.cleanup()`.
|
|
146
|
+
// `stop()` is idempotent, so the normal path's second call is a no-op.
|
|
147
|
+
progressIndicator?.stop();
|
|
134
148
|
}
|
|
135
|
-
return results;
|
|
136
149
|
}
|
|
137
150
|
//# sourceMappingURL=conversation.js.map
|