@gaunt-sloth/core 2.0.0-alpha.23 → 2.0.0-alpha.24
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/defaults.d.ts +5 -7
- package/dist/config/defaults.js +3 -8
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts +40 -0
- package/dist/config/loader.js +179 -6
- package/dist/config/loader.js.map +1 -1
- 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 +69 -2
- package/dist/config/schema.js +87 -5
- package/dist/config/schema.js.map +1 -1
- package/dist/config/types.d.ts +103 -5
- package/dist/config/types.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +26 -1
- package/dist/core/GthAbstractAgent.js +122 -1
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.js +40 -0
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.d.ts +99 -0
- package/dist/core/GthLangChainAgent.js +333 -2
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/debugCapture.d.ts +16 -0
- package/dist/core/debugCapture.js.map +1 -1
- package/dist/core/plainToolIndication.js +48 -28
- 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/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/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/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/package.json +1 -1
- package/schema/gsloth-config.schema.json +224 -5
|
@@ -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":"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"}
|
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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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* GS2-48 — a process-level crash handler that writes an unattended, GS2-47-redacted debug snapshot
|
|
4
|
+
* when the process DIES, then exits — the counterpart to GS2-46's `/debug-dump`, which only helps
|
|
5
|
+
* while the process is alive to run the slash command. Most real failures are the process dying, at
|
|
6
|
+
* which point a slash command can't help, so this fires unconditionally, regardless of whether
|
|
7
|
+
* `debugLog` was ever turned on for the session (the snapshot draws on the always-on in-memory
|
|
8
|
+
* ring buffer — see {@link file://./debugUtils.ts}).
|
|
9
|
+
*
|
|
10
|
+
* SCOPE (deliberate): only `uncaughtException` and `unhandledRejection` are handled. Fatal SIGNALS
|
|
11
|
+
* are intentionally left to a follow-up — `SIGINT`/`SIGTERM` are already GRACEFUL-exit paths
|
|
12
|
+
* ({@link file://./systemUtils.ts} closes the log stream and exits 0), the TUI owns raw-mode Ctrl-C,
|
|
13
|
+
* and dumping a crash file on every Ctrl-C would be noise, not signal. Adding signal capture without
|
|
14
|
+
* fighting those handlers is a separate, careful piece of work.
|
|
15
|
+
*
|
|
16
|
+
* Exiting on these two events is NOT a behavioural regression: Node's default for an unhandled
|
|
17
|
+
* rejection is already to throw (terminate), and its default for an uncaught exception is to print
|
|
18
|
+
* the error and exit(1). This handler replicates that terminal behaviour (it still prints the
|
|
19
|
+
* ORIGINAL error) and only ADDS the snapshot — an uncaughtException LISTENER suppresses Node's own
|
|
20
|
+
* auto-print, which is exactly why the handler prints the error itself.
|
|
21
|
+
*
|
|
22
|
+
* CRASH-SAFETY invariants (the whole point of the node):
|
|
23
|
+
* - The handler is fully SYNCHRONOUS — no `async`/`await`, returns no promise. An async handler that
|
|
24
|
+
* rejected would raise a fresh `unhandledRejection` and re-enter, the exact loop the brief forbids.
|
|
25
|
+
* - A module-level {@link handling} guard is set BEFORE any work, so a throw anywhere inside cannot
|
|
26
|
+
* re-enter the handler and loop; a genuine re-entry short-circuits straight to exit.
|
|
27
|
+
* - Snapshotting is wrapped in try/catch; if it fails, the handler DEGRADES to printing the original
|
|
28
|
+
* error plus a one-line "failed to write crash snapshot" reason and still exits — it never masks
|
|
29
|
+
* the original error and never re-enters.
|
|
30
|
+
* - stderr is written with `fs.writeSync(2, …)`, NOT the async `consoleUtils`/`systemUtils` stream:
|
|
31
|
+
* `process.exit()` truncates pending async pipe writes, so the printed snapshot path (asserted by
|
|
32
|
+
* the e2e over a pipe) could be lost. This is a conscious, documented deviation from the
|
|
33
|
+
* "use consoleUtils for output" rule — that path is unsafe at crash time.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Session-supplied context folded into the snapshot when a crash fires. All optional: a crash before
|
|
37
|
+
* a session registers anything still produces a useful snapshot (error + stack + debugLog buffer +
|
|
38
|
+
* env), just without config/transcript.
|
|
39
|
+
*/
|
|
40
|
+
export interface CrashContext {
|
|
41
|
+
/** The effective resolved config. */
|
|
42
|
+
config?: unknown;
|
|
43
|
+
/** Model display name. */
|
|
44
|
+
modelDisplayName?: string;
|
|
45
|
+
/** The in-flight turn's transcript tail. */
|
|
46
|
+
transcriptTail?: unknown;
|
|
47
|
+
}
|
|
48
|
+
/** Replace the crash context wholesale. */
|
|
49
|
+
export declare function setCrashContext(ctx: CrashContext): void;
|
|
50
|
+
/**
|
|
51
|
+
* Merge a partial update into the crash context. The running agent calls this as it learns things
|
|
52
|
+
* (config at init, transcript tail before each turn) so a crash mid-run captures the latest state.
|
|
53
|
+
*/
|
|
54
|
+
export declare function updateCrashContext(patch: Partial<CrashContext>): void;
|
|
55
|
+
/** Clear the crash context (e.g. when a session ends). */
|
|
56
|
+
export declare function clearCrashContext(): void;
|
|
57
|
+
/** Read the current crash context (used as the default context source by the installed handler). */
|
|
58
|
+
export declare function getCrashContext(): CrashContext;
|
|
59
|
+
/**
|
|
60
|
+
* The crash-handling body. Exported (rather than only closed over by the listeners) so it can be
|
|
61
|
+
* unit-tested directly with an injected `exit` and `getContext`, without registering real process
|
|
62
|
+
* listeners or killing the test runner.
|
|
63
|
+
*
|
|
64
|
+
* @param error the thrown value / rejection reason
|
|
65
|
+
* @param origin `'uncaughtException'` | `'unhandledRejection'`
|
|
66
|
+
* @param exit terminator (default {@link process.exit}); injectable so tests capture the code
|
|
67
|
+
* @param getContext source of the snapshot context (default the module context)
|
|
68
|
+
*/
|
|
69
|
+
export declare function handleCrash(error: unknown, origin: string, exit?: (code: number) => void, getContext?: () => CrashContext): void;
|
|
70
|
+
/** Options for {@link installCrashHandler}. */
|
|
71
|
+
export interface InstallCrashHandlerOptions {
|
|
72
|
+
/** Terminator (default {@link process.exit}). Injectable for tests. */
|
|
73
|
+
exit?: (code: number) => void;
|
|
74
|
+
/** Snapshot-context source (default the module crash context). */
|
|
75
|
+
getContext?: () => CrashContext;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Install the process-level crash handler (idempotent). Registers `uncaughtException` and
|
|
79
|
+
* `unhandledRejection` listeners that write a redacted snapshot and exit. Inert on a normal exit —
|
|
80
|
+
* no `exit`/`beforeExit` hook is registered, so a clean run behaves exactly as before.
|
|
81
|
+
*/
|
|
82
|
+
export declare function installCrashHandler(options?: InstallCrashHandlerOptions): void;
|
|
83
|
+
/**
|
|
84
|
+
* Remove the crash-handler listeners and reset internal state. Primarily for tests (so the module
|
|
85
|
+
* singleton's `handling`/`installed` flags don't leak between cases); harmless in production.
|
|
86
|
+
*/
|
|
87
|
+
export declare function uninstallCrashHandler(): void;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { writeSync } from 'node:fs';
|
|
2
|
+
import { writeCrashSnapshot } from '#src/utils/debugDump.js';
|
|
3
|
+
/** The live context read at crash time. Updated in place by the running session (see below). */
|
|
4
|
+
let crashContext = {};
|
|
5
|
+
/** Replace the crash context wholesale. */
|
|
6
|
+
export function setCrashContext(ctx) {
|
|
7
|
+
crashContext = ctx ?? {};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Merge a partial update into the crash context. The running agent calls this as it learns things
|
|
11
|
+
* (config at init, transcript tail before each turn) so a crash mid-run captures the latest state.
|
|
12
|
+
*/
|
|
13
|
+
export function updateCrashContext(patch) {
|
|
14
|
+
crashContext = { ...crashContext, ...patch };
|
|
15
|
+
}
|
|
16
|
+
/** Clear the crash context (e.g. when a session ends). */
|
|
17
|
+
export function clearCrashContext() {
|
|
18
|
+
crashContext = {};
|
|
19
|
+
}
|
|
20
|
+
/** Read the current crash context (used as the default context source by the installed handler). */
|
|
21
|
+
export function getCrashContext() {
|
|
22
|
+
return crashContext;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Re-entry guard. Module-level so it survives across the two listeners and any nested failure: once
|
|
26
|
+
* we are handling a crash, a second crash (including one thrown by the handler itself) must NOT
|
|
27
|
+
* re-run the snapshot logic — it goes straight to exit.
|
|
28
|
+
*/
|
|
29
|
+
let handling = false;
|
|
30
|
+
/** Whether {@link installCrashHandler} has already registered listeners (idempotent install). */
|
|
31
|
+
let installed = false;
|
|
32
|
+
let onUncaughtException;
|
|
33
|
+
let onUnhandledRejection;
|
|
34
|
+
/** A short, never-throwing, single-block rendering of the original error for stderr. */
|
|
35
|
+
function describeError(error) {
|
|
36
|
+
try {
|
|
37
|
+
if (error instanceof Error) {
|
|
38
|
+
return error.stack ?? `${error.name}: ${error.message}`;
|
|
39
|
+
}
|
|
40
|
+
return String(error);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return '<unprintable error>';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Write a line to fd 2 (stderr) synchronously, swallowing any failure — last-resort output. */
|
|
47
|
+
function writeStderr(line) {
|
|
48
|
+
try {
|
|
49
|
+
writeSync(2, line);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Nothing more we can safely do if even fd 2 is gone.
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The crash-handling body. Exported (rather than only closed over by the listeners) so it can be
|
|
57
|
+
* unit-tested directly with an injected `exit` and `getContext`, without registering real process
|
|
58
|
+
* listeners or killing the test runner.
|
|
59
|
+
*
|
|
60
|
+
* @param error the thrown value / rejection reason
|
|
61
|
+
* @param origin `'uncaughtException'` | `'unhandledRejection'`
|
|
62
|
+
* @param exit terminator (default {@link process.exit}); injectable so tests capture the code
|
|
63
|
+
* @param getContext source of the snapshot context (default the module context)
|
|
64
|
+
*/
|
|
65
|
+
export function handleCrash(error, origin, exit = (code) => process.exit(code), getContext = getCrashContext) {
|
|
66
|
+
// GUARD FIRST — before touching anything that could throw — so a failure below (or a crash raised
|
|
67
|
+
// WHILE handling) can never re-enter and loop.
|
|
68
|
+
if (handling) {
|
|
69
|
+
writeStderr(`\n[gaunt-sloth] crash handler re-entered while handling ${origin}; exiting.\n`);
|
|
70
|
+
exit(1);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
handling = true;
|
|
74
|
+
const original = describeError(error);
|
|
75
|
+
try {
|
|
76
|
+
const ctx = getContext();
|
|
77
|
+
const { crashDir } = writeCrashSnapshot({
|
|
78
|
+
error,
|
|
79
|
+
origin,
|
|
80
|
+
config: ctx.config,
|
|
81
|
+
modelDisplayName: ctx.modelDisplayName,
|
|
82
|
+
transcriptTail: ctx.transcriptTail,
|
|
83
|
+
});
|
|
84
|
+
// Surface the ORIGINAL error first (Node's own auto-print is suppressed by our listener), then
|
|
85
|
+
// the snapshot path. writeSync so the path is not truncated by the imminent process.exit.
|
|
86
|
+
writeStderr(`\n[gaunt-sloth] fatal ${origin}:\n${original}\n`);
|
|
87
|
+
writeStderr(`[gaunt-sloth] crash snapshot written to: ${crashDir}\n`);
|
|
88
|
+
}
|
|
89
|
+
catch (snapErr) {
|
|
90
|
+
// Snapshotting itself failed — DEGRADE: still surface the original error + a short reason, never
|
|
91
|
+
// mask it, never re-enter.
|
|
92
|
+
const reason = snapErr instanceof Error ? snapErr.message : String(snapErr);
|
|
93
|
+
writeStderr(`\n[gaunt-sloth] fatal ${origin}:\n${original}\n`);
|
|
94
|
+
writeStderr(`[gaunt-sloth] failed to write crash snapshot: ${reason}\n`);
|
|
95
|
+
}
|
|
96
|
+
exit(1);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Install the process-level crash handler (idempotent). Registers `uncaughtException` and
|
|
100
|
+
* `unhandledRejection` listeners that write a redacted snapshot and exit. Inert on a normal exit —
|
|
101
|
+
* no `exit`/`beforeExit` hook is registered, so a clean run behaves exactly as before.
|
|
102
|
+
*/
|
|
103
|
+
export function installCrashHandler(options = {}) {
|
|
104
|
+
if (installed)
|
|
105
|
+
return;
|
|
106
|
+
installed = true;
|
|
107
|
+
const exit = options.exit ?? ((code) => process.exit(code));
|
|
108
|
+
const getContext = options.getContext ?? getCrashContext;
|
|
109
|
+
onUncaughtException = (error) => handleCrash(error, 'uncaughtException', exit, getContext);
|
|
110
|
+
onUnhandledRejection = (reason) => handleCrash(reason, 'unhandledRejection', exit, getContext);
|
|
111
|
+
process.on('uncaughtException', onUncaughtException);
|
|
112
|
+
process.on('unhandledRejection', onUnhandledRejection);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Remove the crash-handler listeners and reset internal state. Primarily for tests (so the module
|
|
116
|
+
* singleton's `handling`/`installed` flags don't leak between cases); harmless in production.
|
|
117
|
+
*/
|
|
118
|
+
export function uninstallCrashHandler() {
|
|
119
|
+
if (onUncaughtException)
|
|
120
|
+
process.removeListener('uncaughtException', onUncaughtException);
|
|
121
|
+
if (onUnhandledRejection)
|
|
122
|
+
process.removeListener('unhandledRejection', onUnhandledRejection);
|
|
123
|
+
onUncaughtException = undefined;
|
|
124
|
+
onUnhandledRejection = undefined;
|
|
125
|
+
installed = false;
|
|
126
|
+
handling = false;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=crashHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crashHandler.js","sourceRoot":"","sources":["../../src/utils/crashHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { LastModelRequest } from '#src/core/debugCapture.js';
|
|
1
2
|
/**
|
|
2
3
|
* GS2-46/GS2-47 — `/debug-dump`: a live-session diagnostic archive. GS2-46 shipped it raw; GS2-47
|
|
3
4
|
* adds a shared secret-redaction pass ({@link file://./redactSecrets.ts}) that is ON BY DEFAULT and
|
|
@@ -26,6 +27,17 @@ export interface WriteDebugDumpInput {
|
|
|
26
27
|
* depending on where the test runner happens to execute.
|
|
27
28
|
*/
|
|
28
29
|
cwd?: string;
|
|
30
|
+
/**
|
|
31
|
+
* GS2-56 — the always-on snapshot of the last model request (the composed system prompt, tool
|
|
32
|
+
* defs with schema, model params, tool-choice, and the AS-SENT post-summarization messages),
|
|
33
|
+
* threaded straight from `agent.lastModelRequest` by the caller (both the TUI and the readline
|
|
34
|
+
* `--no-tui` surface). ADDITIVE & optional: when present, `writeDebugDump` writes
|
|
35
|
+
* `model-request.json` (the extras) and `model-messages.json` (the as-sent messages, distinct
|
|
36
|
+
* from the conversation-view `transcript.json`), both routed through the same redaction pass as
|
|
37
|
+
* every other artifact. Absent (no model call yet / a surface with no agent handle) ⇒ those two
|
|
38
|
+
* files are simply omitted.
|
|
39
|
+
*/
|
|
40
|
+
modelRequest?: LastModelRequest;
|
|
29
41
|
}
|
|
30
42
|
export interface WriteDebugDumpResult {
|
|
31
43
|
/** The absolute path to the archive directory just written. */
|
|
@@ -55,3 +67,49 @@ export declare function debugDumpDirName(date?: Date): string;
|
|
|
55
67
|
* On opt-out the archive is raw and the caller surfaces the loud "may contain secrets" warning.
|
|
56
68
|
*/
|
|
57
69
|
export declare function writeDebugDump(input: WriteDebugDumpInput): WriteDebugDumpResult;
|
|
70
|
+
/** Input to {@link writeCrashSnapshot}. */
|
|
71
|
+
export interface WriteCrashSnapshotInput {
|
|
72
|
+
/** The thrown error / rejection reason. Need not be an `Error`. */
|
|
73
|
+
error: unknown;
|
|
74
|
+
/** Where the failure came from — e.g. `'uncaughtException'` / `'unhandledRejection'`. */
|
|
75
|
+
origin: string;
|
|
76
|
+
/** The effective resolved config, if the crashing process had one registered. Opaque. */
|
|
77
|
+
config?: unknown;
|
|
78
|
+
/** Model display name, if known. */
|
|
79
|
+
modelDisplayName?: string;
|
|
80
|
+
/** The in-flight turn's transcript tail, if a session registered one. Opaque. */
|
|
81
|
+
transcriptTail?: unknown;
|
|
82
|
+
}
|
|
83
|
+
export interface WriteCrashSnapshotResult {
|
|
84
|
+
/** The absolute path to the crash directory just written. */
|
|
85
|
+
crashDir: string;
|
|
86
|
+
/** The absolute path to the `crash.json` file inside it. */
|
|
87
|
+
crashFile: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* GS2-48 — write a MINIMAL, ALWAYS-REDACTED crash snapshot to
|
|
91
|
+
* `~/.gsloth/debug-dumps/crash-<timestamp>/crash.json` and return its paths.
|
|
92
|
+
*
|
|
93
|
+
* This is the unattended sibling of {@link writeDebugDump}: it fires from the process-level crash
|
|
94
|
+
* handler ({@link file://./crashHandler.ts}) with no human present, so — unlike `/debug-dump` — it
|
|
95
|
+
* exposes NO `redact` opt-out. Redaction (GS2-47, hard-dep) is MANDATORY and applied to the whole
|
|
96
|
+
* snapshot. It reuses this module's location convention (`ensureGlobalGslothDir()` + `debug-dumps/`)
|
|
97
|
+
* and rendering helpers, but deliberately stays minimal and crash-safe:
|
|
98
|
+
* - a SINGLE `crash.json` (not the multi-file interactive archive);
|
|
99
|
+
* - it does NOT shell out for git state (a subprocess is unsafe/slow while the process is dying);
|
|
100
|
+
* - it keeps only the last {@link CRASH_DEBUG_LOG_TAIL_LINES} debugLog lines and the transcript TAIL.
|
|
101
|
+
*
|
|
102
|
+
* Redaction shape (conscious choice): the entire normalized snapshot is passed through
|
|
103
|
+
* {@link redactValue} in one pass. That is stricter than {@link writeDebugDump}, which uses
|
|
104
|
+
* {@link redactText} (literal+pattern only) for its non-config artifacts to avoid field-masking a
|
|
105
|
+
* legitimately `token`/`secret`-named field in tool output. For an unattended crash file the
|
|
106
|
+
* over-masking is the SAFE direction and buys uniform circular-ref / depth / function handling in
|
|
107
|
+
* one place, so it is intended, not an oversight. The config subtree is stripped of live instances
|
|
108
|
+
* first (as `writeDebugDump` does) so a live LLM client's internals never serialize.
|
|
109
|
+
*
|
|
110
|
+
* Callers wrap this in their own try/catch (see {@link file://./crashHandler.ts}); it does its best
|
|
111
|
+
* to be fail-safe internally (`redactValue`/`safeStringify` never throw), but the ONE unavoidably
|
|
112
|
+
* throwing operation is the `mkdirSync`/`writeFileSync` to disk — an unwritable `~/.gsloth` is what
|
|
113
|
+
* the handler's degraded path is for.
|
|
114
|
+
*/
|
|
115
|
+
export declare function writeCrashSnapshot(input: WriteCrashSnapshotInput): WriteCrashSnapshotResult;
|