@gaunt-sloth/core 2.0.0-alpha.2 → 2.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gsloth.code.md +10 -0
- package/README.md +6 -6
- package/dist/config/defaults.d.ts +85 -0
- package/dist/config/defaults.js +103 -0
- package/dist/config/defaults.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 +169 -0
- package/dist/config/loader.js +872 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +673 -0
- package/dist/config/schema.js +524 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/shell-policy.d.ts +331 -0
- package/dist/config/shell-policy.js +238 -0
- package/dist/config/shell-policy.js.map +1 -0
- package/dist/config/types.d.ts +596 -0
- package/dist/config/types.js +13 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config.d.ts +18 -647
- package/dist/config.js +15 -516
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +42 -0
- package/dist/constants.js +42 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +85 -2
- package/dist/core/GthAbstractAgent.js +398 -28
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +158 -1
- package/dist/core/GthAgentRunner.js +367 -4
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/core/GthLangChainAgent.js +193 -16
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/debugCapture.d.ts +59 -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/plainToolIndication.d.ts +15 -0
- package/dist/core/plainToolIndication.js +148 -0
- package/dist/core/plainToolIndication.js.map +1 -0
- package/dist/core/runStats.d.ts +41 -0
- package/dist/core/runStats.js +73 -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/allowlist.d.ts +75 -0
- package/dist/core/shell/allowlist.js +187 -0
- package/dist/core/shell/allowlist.js.map +1 -0
- package/dist/core/shell/arity.d.ts +75 -0
- package/dist/core/shell/arity.js +313 -0
- package/dist/core/shell/arity.js.map +1 -0
- package/dist/core/shell/judge.d.ts +161 -0
- package/dist/core/shell/judge.js +261 -0
- package/dist/core/shell/judge.js.map +1 -0
- package/dist/core/shell/normalize.d.ts +27 -0
- package/dist/core/shell/normalize.js +53 -0
- package/dist/core/shell/normalize.js.map +1 -0
- package/dist/core/toolDisplay.d.ts +101 -0
- package/dist/core/toolDisplay.js +374 -0
- package/dist/core/toolDisplay.js.map +1 -0
- package/dist/core/toolOutputChannel.d.ts +68 -0
- package/dist/core/toolOutputChannel.js +112 -0
- package/dist/core/toolOutputChannel.js.map +1 -0
- package/dist/core/types.d.ts +173 -0
- 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 +52 -0
- package/dist/providers/geminiSchemaSanitizer.js +201 -0
- package/dist/providers/geminiSchemaSanitizer.js.map +1 -0
- package/dist/providers/google-genai.d.ts +1 -1
- package/dist/providers/google-genai.js +9 -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 +111 -3
- package/dist/providers/modelDiscovery.js +183 -27
- 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 +5 -10
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter.d.ts +1 -1
- package/dist/providers/openrouter.js +12 -12
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/providers/vertexai.d.ts +1 -1
- package/dist/providers/vertexai.js +9 -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 +62 -0
- package/dist/runtime/askStructured.js +76 -0
- package/dist/runtime/askStructured.js.map +1 -0
- package/dist/runtime/conversation.d.ts +59 -0
- package/dist/runtime/conversation.js +137 -0
- package/dist/runtime/conversation.js.map +1 -0
- package/dist/runtime/singleShot.d.ts +24 -5
- package/dist/runtime/singleShot.js +56 -9
- package/dist/runtime/singleShot.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 +22 -0
- package/dist/utils/consoleUtils.js +45 -0
- package/dist/utils/consoleUtils.js.map +1 -1
- package/dist/utils/debugDump.d.ts +57 -0
- package/dist/utils/debugDump.js +236 -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/fileUtils.d.ts +24 -2
- package/dist/utils/fileUtils.js +54 -12
- package/dist/utils/fileUtils.js.map +1 -1
- package/dist/utils/llmUtils.js.map +1 -1
- package/dist/utils/redactSecrets.d.ts +63 -0
- package/dist/utils/redactSecrets.js +238 -0
- package/dist/utils/redactSecrets.js.map +1 -0
- package/dist/utils/systemPromptNotes.d.ts +181 -0
- package/dist/utils/systemPromptNotes.js +298 -0
- package/dist/utils/systemPromptNotes.js.map +1 -0
- package/dist/utils/systemUtils.d.ts +32 -1
- package/dist/utils/systemUtils.js +50 -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/package.json +17 -8
- package/schema/gsloth-config.schema.json +2111 -0
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Zod schema for the on-disk raw Gaunt Sloth config (`RawGthConfig`).
|
|
4
|
+
*
|
|
5
|
+
* This is the single source of truth for config validation and for the generated
|
|
6
|
+
* JSON Schema (`packages/core/schema/gsloth-config.schema.json`). It models the
|
|
7
|
+
* canonical config shape only — the deprecated aliases (`contentProvider`,
|
|
8
|
+
* `requirementsProvider`, `contentProviderConfig`, `requirementsProviderConfig`)
|
|
9
|
+
* are intentionally NOT part of the schema. GS2-28 (a 2.0 breaking release with NO
|
|
10
|
+
* back-compat coercion) turns those deprecated shapes into HARD validation errors:
|
|
11
|
+
* {@link findDeprecatedConfigIssues} detects them on the raw input BEFORE the schema
|
|
12
|
+
* parse and each entry point (loader `validateRawConfigLayer`, read-side
|
|
13
|
+
* {@link validateRawGthConfig}) rejects the config with a message naming the canonical
|
|
14
|
+
* replacement + migration path. Detection runs on the RAW input on purpose: zod's
|
|
15
|
+
* per-command `z.object` strips unknown keys, so a nested `commands.*.contentProvider`
|
|
16
|
+
* would vanish before any schema-embedded check could see it.
|
|
17
|
+
*
|
|
18
|
+
* Design notes:
|
|
19
|
+
* - The top-level object is a {@link z.looseObject} so unknown keys PASS THROUGH
|
|
20
|
+
* (they are neither stripped nor a hard failure). The loader separately diffs
|
|
21
|
+
* present-vs-known top-level keys ({@link findUnknownTopLevelKeys}) to warn about
|
|
22
|
+
* likely typos without failing. That typo-tolerance is deliberate: only the KNOWN
|
|
23
|
+
* deprecated names ({@link findDeprecatedConfigIssues}) hard-fail; a genuine typo
|
|
24
|
+
* (e.g. `pulrequest`) still only warns.
|
|
25
|
+
* - Every field is optional. The schema validates the *shape/type of what is
|
|
26
|
+
* present*, not requiredness. In particular `llm` is optional so the loader's
|
|
27
|
+
* existing "must at least define llm.type" checks remain the authority on llm
|
|
28
|
+
* validity (and keep emitting their established messages).
|
|
29
|
+
* - Runtime-object-bearing fields (`tools`, `middleware`, `mcpServers`,
|
|
30
|
+
* `a2aAgents`, `builtInToolsConfig`) are modelled permissively because JS/MJS
|
|
31
|
+
* `configure()` returns live instances/objects there.
|
|
32
|
+
*
|
|
33
|
+
* The exported {@link RawGthConfig}/{@link GthConfig} interfaces in `config.ts`
|
|
34
|
+
* remain the public type surface; the `z.infer` here ({@link RawGthConfigInput})
|
|
35
|
+
* is additive and legitimately differs (no deprecated fields).
|
|
36
|
+
*/
|
|
37
|
+
import { z } from 'zod';
|
|
38
|
+
const filesystemSchema = z.union([z.array(z.string()), z.enum(['all', 'read', 'none'])]);
|
|
39
|
+
/**
|
|
40
|
+
* TLS trust for outbound HTTPS (MCP servers over `http` transport, and — because the mechanism is
|
|
41
|
+
* a process-global undici dispatcher — every other `fetch`, including LLM provider calls). Lets a
|
|
42
|
+
* config point Node's `fetch` at a private/corporate CA without prepending `NODE_EXTRA_CA_CERTS`
|
|
43
|
+
* on every invocation (that env var is read once at Node startup and can't be set from config).
|
|
44
|
+
*/
|
|
45
|
+
const tlsSchema = z.object({
|
|
46
|
+
// Extra CA cert file(s) to TRUST in ADDITION to Node's built-in roots. Paths resolve
|
|
47
|
+
// relative-to-project (or `~`/absolute). Additive — this never removes a default root.
|
|
48
|
+
extraCaCerts: z.array(z.string()).optional(),
|
|
49
|
+
// DANGER: `false` disables TLS certificate verification for ALL outbound HTTPS this process makes
|
|
50
|
+
// (not just MCP — LLM calls too). Escape hatch only; emits a loud security warning every session.
|
|
51
|
+
rejectUnauthorized: z.boolean().optional(),
|
|
52
|
+
});
|
|
53
|
+
const llmConfigSchema = z.looseObject({
|
|
54
|
+
type: z.string().optional(),
|
|
55
|
+
model: z.string().optional(),
|
|
56
|
+
configuration: z.record(z.string(), z.unknown()).optional(),
|
|
57
|
+
apiKeyEnvironmentVariable: z.string().optional(),
|
|
58
|
+
});
|
|
59
|
+
const ratingConfigSchema = z.object({
|
|
60
|
+
enabled: z.boolean().optional(),
|
|
61
|
+
passThreshold: z.number().optional(),
|
|
62
|
+
maxRating: z.number().optional(),
|
|
63
|
+
minRating: z.number().optional(),
|
|
64
|
+
errorOnReviewFail: z.boolean().optional(),
|
|
65
|
+
});
|
|
66
|
+
const customCommandParameterSchema = z.object({
|
|
67
|
+
description: z.string(),
|
|
68
|
+
allow: z
|
|
69
|
+
.array(z.enum(['absolute-paths', 'directory-traversal', 'shell-injection', 'null-bytes']))
|
|
70
|
+
.optional(),
|
|
71
|
+
});
|
|
72
|
+
const customCommandConfigSchema = z.object({
|
|
73
|
+
command: z.string(),
|
|
74
|
+
description: z.string(),
|
|
75
|
+
parameters: z.record(z.string(), customCommandParameterSchema).optional(),
|
|
76
|
+
timeout: z.number().optional(),
|
|
77
|
+
});
|
|
78
|
+
const customToolsConfigSchema = z.record(z.string(), customCommandConfigSchema);
|
|
79
|
+
const customToolsOrFalseSchema = z.union([z.literal(false), customToolsConfigSchema]);
|
|
80
|
+
const binaryFormatConfigSchema = z.object({
|
|
81
|
+
type: z.enum(['image', 'file', 'audio', 'video', 'binary']),
|
|
82
|
+
extensions: z.array(z.string()),
|
|
83
|
+
maxSize: z.number().optional(),
|
|
84
|
+
mimeTypes: z.record(z.string(), z.string()).optional(),
|
|
85
|
+
});
|
|
86
|
+
const binaryFormatsSchema = z.union([z.literal(false), z.array(binaryFormatConfigSchema)]);
|
|
87
|
+
const shellJudgeSchema = z.union([
|
|
88
|
+
z.boolean(),
|
|
89
|
+
z.object({
|
|
90
|
+
enabled: z.boolean().optional(),
|
|
91
|
+
autoApproveLow: z.boolean().optional(),
|
|
92
|
+
blockHigh: z.boolean().optional(),
|
|
93
|
+
model: llmConfigSchema.optional(),
|
|
94
|
+
}),
|
|
95
|
+
]);
|
|
96
|
+
/**
|
|
97
|
+
* CFG-18 — the per-tool config object carried as a value in the widened `builtInTools` registry.
|
|
98
|
+
* One permissive shape covering every tool: `command` for the fixed dev-command tools
|
|
99
|
+
* (run_tests/run_lint/run_build/run_single_test), the EXT-9/10/12 knobs for `run_shell_command`
|
|
100
|
+
* (`yolo` is the folded former `shellYolo`), `fileSet` for `gth_grep` (GS2-51), and `enabled` for a
|
|
101
|
+
* plain built-in tool.
|
|
102
|
+
*/
|
|
103
|
+
const builtInToolConfigSchema = z.object({
|
|
104
|
+
enabled: z.boolean().optional(),
|
|
105
|
+
command: z.string().optional(),
|
|
106
|
+
timeout: z.number().optional(),
|
|
107
|
+
maxOutputBytes: z.number().optional(),
|
|
108
|
+
allowlist: z.boolean().optional(),
|
|
109
|
+
persistAllowlist: z.boolean().optional(),
|
|
110
|
+
judge: shellJudgeSchema.optional(),
|
|
111
|
+
yolo: z.boolean().optional(),
|
|
112
|
+
// GS2-51 — `gth_grep`: which corpus to search. `gitignore` (default) respects .gitignore/.ignore
|
|
113
|
+
// and skips hidden dot-files; `all` scans everything but the noise dirs. See BuiltInToolConfig.
|
|
114
|
+
fileSet: z.enum(['gitignore', 'all']).optional(),
|
|
115
|
+
});
|
|
116
|
+
/**
|
|
117
|
+
* CFG-18 — the widened `builtInTools` setting: either the legacy `string[]` (each name enabled) or
|
|
118
|
+
* a registry keyed by tool name whose values enable (`true`), force-disable (`false`), or configure
|
|
119
|
+
* ({@link builtInToolConfigSchema}) each tool. Replaces `builtInTools: string[]` + per-command
|
|
120
|
+
* `devTools`.
|
|
121
|
+
*/
|
|
122
|
+
const builtInToolsSchema = z.union([
|
|
123
|
+
z.array(z.string()),
|
|
124
|
+
z.record(z.string(), z.union([z.boolean(), builtInToolConfigSchema])),
|
|
125
|
+
]);
|
|
126
|
+
const prCommandSchema = z.object({
|
|
127
|
+
contentSource: z.string().optional(),
|
|
128
|
+
requirementSource: z.string().optional(),
|
|
129
|
+
filesystem: filesystemSchema.optional(),
|
|
130
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
131
|
+
customTools: customToolsOrFalseSchema.optional(),
|
|
132
|
+
allowedTools: z.array(z.string()).optional(),
|
|
133
|
+
logWorkForReviewInSeconds: z.number().optional(),
|
|
134
|
+
rating: ratingConfigSchema.optional(),
|
|
135
|
+
binaryFormats: binaryFormatsSchema.optional(),
|
|
136
|
+
});
|
|
137
|
+
const reviewCommandSchema = z.object({
|
|
138
|
+
contentSource: z.string().optional(),
|
|
139
|
+
requirementSource: z.string().optional(),
|
|
140
|
+
filesystem: filesystemSchema.optional(),
|
|
141
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
142
|
+
customTools: customToolsOrFalseSchema.optional(),
|
|
143
|
+
allowedTools: z.array(z.string()).optional(),
|
|
144
|
+
rating: ratingConfigSchema.optional(),
|
|
145
|
+
binaryFormats: binaryFormatsSchema.optional(),
|
|
146
|
+
});
|
|
147
|
+
const askCommandSchema = z.object({
|
|
148
|
+
filesystem: filesystemSchema.optional(),
|
|
149
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
150
|
+
customTools: customToolsOrFalseSchema.optional(),
|
|
151
|
+
allowedTools: z.array(z.string()).optional(),
|
|
152
|
+
binaryFormats: binaryFormatsSchema.optional(),
|
|
153
|
+
});
|
|
154
|
+
const chatCommandSchema = z.object({
|
|
155
|
+
filesystem: filesystemSchema.optional(),
|
|
156
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
157
|
+
customTools: customToolsOrFalseSchema.optional(),
|
|
158
|
+
allowedTools: z.array(z.string()).optional(),
|
|
159
|
+
binaryFormats: binaryFormatsSchema.optional(),
|
|
160
|
+
});
|
|
161
|
+
const codeCommandSchema = z.object({
|
|
162
|
+
filesystem: filesystemSchema.optional(),
|
|
163
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
164
|
+
customTools: customToolsOrFalseSchema.optional(),
|
|
165
|
+
allowedTools: z.array(z.string()).optional(),
|
|
166
|
+
binaryFormats: binaryFormatsSchema.optional(),
|
|
167
|
+
});
|
|
168
|
+
const execCommandSchema = z.object({
|
|
169
|
+
filesystem: filesystemSchema.optional(),
|
|
170
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
171
|
+
customTools: customToolsOrFalseSchema.optional(),
|
|
172
|
+
allowedTools: z.array(z.string()).optional(),
|
|
173
|
+
binaryFormats: binaryFormatsSchema.optional(),
|
|
174
|
+
});
|
|
175
|
+
const apiCommandSchema = z.object({
|
|
176
|
+
filesystem: filesystemSchema.optional(),
|
|
177
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
178
|
+
port: z.number().optional(),
|
|
179
|
+
cors: z
|
|
180
|
+
.object({
|
|
181
|
+
allowOrigin: z.string().optional(),
|
|
182
|
+
allowMethods: z.string().optional(),
|
|
183
|
+
allowHeaders: z.string().optional(),
|
|
184
|
+
})
|
|
185
|
+
.optional(),
|
|
186
|
+
});
|
|
187
|
+
const commandsSchema = z.object({
|
|
188
|
+
pr: prCommandSchema.optional(),
|
|
189
|
+
review: reviewCommandSchema.optional(),
|
|
190
|
+
ask: askCommandSchema.optional(),
|
|
191
|
+
chat: chatCommandSchema.optional(),
|
|
192
|
+
code: codeCommandSchema.optional(),
|
|
193
|
+
exec: execCommandSchema.optional(),
|
|
194
|
+
api: apiCommandSchema.optional(),
|
|
195
|
+
});
|
|
196
|
+
/**
|
|
197
|
+
* The command names, derived from {@link commandsSchema}'s own shape so it can never drift
|
|
198
|
+
* from the schema. A command config must live under `commands.<cmd>`; the SAME name appearing
|
|
199
|
+
* at the config ROOT is the removed pre-2.0 top-level shape and is hard-rejected by
|
|
200
|
+
* {@link findDeprecatedConfigIssues}. (None of these are valid top-level keys, so there is no
|
|
201
|
+
* collision with {@link KNOWN_TOP_LEVEL_KEYS}.)
|
|
202
|
+
*/
|
|
203
|
+
const COMMAND_KEYS = Object.keys(commandsSchema.shape);
|
|
204
|
+
/**
|
|
205
|
+
* Zod schema for the raw, on-disk Gaunt Sloth config. Loose at the top level so
|
|
206
|
+
* unknown keys are preserved (warn-only via {@link findUnknownTopLevelKeys}).
|
|
207
|
+
*/
|
|
208
|
+
export const rawGthConfigSchema = z.looseObject({
|
|
209
|
+
// Allow a JSON Schema reference for editor support; never read at runtime.
|
|
210
|
+
$schema: z.string().optional(),
|
|
211
|
+
llm: llmConfigSchema.optional(),
|
|
212
|
+
// Selects the agent backend. `lean` (the default when omitted) uses the plain LangChain agent
|
|
213
|
+
// with gsloth's full toolset (no `/large_tool_results` offload). `deep` is the EXPERIMENTAL,
|
|
214
|
+
// opt-in deepagents runtime and emits a warning when selected. The ACP server is deep-only.
|
|
215
|
+
agent: z
|
|
216
|
+
.object({
|
|
217
|
+
backend: z.enum(['deep', 'lean']).optional(),
|
|
218
|
+
})
|
|
219
|
+
.optional(),
|
|
220
|
+
// GS2-7 (B20) — local, opt-in session history. DEFAULT OFF: absent or `enabled: false` means
|
|
221
|
+
// nothing is persisted and runs behave exactly as before (stateless identity preserved).
|
|
222
|
+
history: z
|
|
223
|
+
.object({
|
|
224
|
+
enabled: z.boolean().optional(),
|
|
225
|
+
dbPath: z.string().optional(),
|
|
226
|
+
})
|
|
227
|
+
.optional(),
|
|
228
|
+
// GS2-7 (B21) — opt-in file-backed memory (MEMORY.md / USER.md). DEFAULT OFF. The toggle exists
|
|
229
|
+
// for forward-compat; the feature itself is a deferred follow-up.
|
|
230
|
+
memory: z
|
|
231
|
+
.object({
|
|
232
|
+
enabled: z.boolean().optional(),
|
|
233
|
+
})
|
|
234
|
+
.optional(),
|
|
235
|
+
binaryFormats: binaryFormatsSchema.optional(),
|
|
236
|
+
contentSource: z.string().optional(),
|
|
237
|
+
requirementSource: z.string().optional(),
|
|
238
|
+
contentSourceConfig: z.record(z.string(), z.unknown()).optional(),
|
|
239
|
+
requirementSourceConfig: z.record(z.string(), z.unknown()).optional(),
|
|
240
|
+
projectGuidelines: z.string().optional(),
|
|
241
|
+
identityProfile: z.string().optional(),
|
|
242
|
+
includeCurrentDateAfterGuidelines: z.boolean().optional(),
|
|
243
|
+
organization: z
|
|
244
|
+
.object({
|
|
245
|
+
name: z.string().optional(),
|
|
246
|
+
locale: z.string().optional(),
|
|
247
|
+
timezone: z.string().optional(),
|
|
248
|
+
})
|
|
249
|
+
.optional(),
|
|
250
|
+
projectReviewInstructions: z.string().optional(),
|
|
251
|
+
noDefaultPrompts: z.boolean().optional(),
|
|
252
|
+
filesystem: filesystemSchema.optional(),
|
|
253
|
+
builtInTools: builtInToolsSchema.optional(),
|
|
254
|
+
// Live tool instances / toolkits in JS configs — kept permissive.
|
|
255
|
+
tools: z.array(z.unknown()).optional(),
|
|
256
|
+
allowedTools: z.array(z.string()).optional(),
|
|
257
|
+
// Predefined (string/object) or custom (object) middleware — permissive.
|
|
258
|
+
middleware: z.array(z.unknown()).optional(),
|
|
259
|
+
streamOutput: z.boolean().optional(),
|
|
260
|
+
writeOutputToFile: z.union([z.boolean(), z.string()]).optional(),
|
|
261
|
+
writeBinaryOutputsToFile: z.boolean().optional(),
|
|
262
|
+
useColour: z.boolean().optional(),
|
|
263
|
+
streamSessionInferenceLog: z.boolean().optional(),
|
|
264
|
+
canInterruptInferenceWithEsc: z.boolean().optional(),
|
|
265
|
+
debugLog: z.boolean().optional(),
|
|
266
|
+
recursionLimit: z.number().optional(),
|
|
267
|
+
consoleLevel: z.union([z.string(), z.number()]).optional(),
|
|
268
|
+
customTools: customToolsConfigSchema.optional(),
|
|
269
|
+
mcpServers: z.record(z.string(), z.unknown()).optional(),
|
|
270
|
+
tls: tlsSchema.optional(),
|
|
271
|
+
a2aAgents: z.record(z.string(), z.unknown()).optional(),
|
|
272
|
+
builtInToolsConfig: z.record(z.string(), z.unknown()).optional(),
|
|
273
|
+
aiignore: z
|
|
274
|
+
.object({
|
|
275
|
+
enabled: z.boolean().optional(),
|
|
276
|
+
patterns: z.array(z.string()).optional(),
|
|
277
|
+
})
|
|
278
|
+
.optional(),
|
|
279
|
+
commands: commandsSchema.optional(),
|
|
280
|
+
// GS2-35 — identity used in the `Co-Authored-By` trailer of agent-authored git commits. Optional;
|
|
281
|
+
// when omitted the agent is instructed to co-author as the Gaunt Sloth account
|
|
282
|
+
// (`Gaunt Sloth <code@gauntsloth.app>`), NEVER the underlying model. Either field may be set
|
|
283
|
+
// alone; the other falls back to its default (see `appendCommitCoAuthorNote`).
|
|
284
|
+
commit: z
|
|
285
|
+
.object({
|
|
286
|
+
coAuthor: z
|
|
287
|
+
.object({
|
|
288
|
+
name: z.string().optional(),
|
|
289
|
+
email: z.string().optional(),
|
|
290
|
+
})
|
|
291
|
+
.optional(),
|
|
292
|
+
})
|
|
293
|
+
.optional(),
|
|
294
|
+
modelDisplayName: z.string().optional(),
|
|
295
|
+
// GS2-34 — inject the resolved active `provider:model` identity into the system prompt (default ON;
|
|
296
|
+
// set `false` to opt out for reproducible / model-agnostic runs). Defaulted at the read site, so it
|
|
297
|
+
// is intentionally absent from DEFAULT_CONFIG (no effective-config snapshot churn).
|
|
298
|
+
injectModelContext: z.boolean().optional(),
|
|
299
|
+
// GS2-47 — secret-redaction for `/debug-dump` artifacts. `redact` DEFAULTS ON (omitted = redact);
|
|
300
|
+
// set `false` to write a raw, unredacted archive (the command then shows a loud secrets warning).
|
|
301
|
+
// Defaulted at the read site (`!== false`), not in DEFAULT_CONFIG, to avoid churning the
|
|
302
|
+
// effective-config snapshot (à la GS2-34 injectModelContext).
|
|
303
|
+
debugDump: z
|
|
304
|
+
.object({
|
|
305
|
+
redact: z.boolean().optional(),
|
|
306
|
+
})
|
|
307
|
+
.optional(),
|
|
308
|
+
allowDirs: z.array(z.string()).optional(),
|
|
309
|
+
askWriteMode: z.boolean().optional(),
|
|
310
|
+
// GS2-63 — output surface controls. `header` DEFAULTS ON (omitted = show); set `false` to
|
|
311
|
+
// suppress the technical run-header preamble (the Workdir/Model/Tools/Middleware block, the
|
|
312
|
+
// `Press Escape or Q to interrupt` hint, and their surrounding blank lines) in NON-TUI text
|
|
313
|
+
// modes (`--no-tui`, `ask`, `exec`, `eval`, `pr`, `review`, piped/CI), keeping captured stdout /
|
|
314
|
+
// log diffs clean. The interactive TUI ignores it and always shows the header. Suppresses ONLY
|
|
315
|
+
// that preamble — never model/tool output, errors, or config-validation warnings. Defaulted at
|
|
316
|
+
// the read site (`!== false`), not in DEFAULT_CONFIG, to avoid churning the effective-config
|
|
317
|
+
// snapshot (à la GS2-34 injectModelContext).
|
|
318
|
+
output: z
|
|
319
|
+
.object({
|
|
320
|
+
header: z.boolean().optional(),
|
|
321
|
+
})
|
|
322
|
+
.optional(),
|
|
323
|
+
// BATCH-19 — custom `gth eval` reporters. Maps a reporter NAME (as selected with
|
|
324
|
+
// `--reporter <name>`) to a MODULE PATH (relative to the project dir) whose default export is an
|
|
325
|
+
// `EvalReporterFactory` (`() => EvalReporter`). Registered through the same seam the bundled
|
|
326
|
+
// reporters use; a name here overrides a built-in of the same name.
|
|
327
|
+
reporters: z.record(z.string(), z.string()).optional(),
|
|
328
|
+
});
|
|
329
|
+
/**
|
|
330
|
+
* The set of known top-level config keys, derived from the schema shape so it can
|
|
331
|
+
* never drift from {@link rawGthConfigSchema}. Includes `$schema`.
|
|
332
|
+
*/
|
|
333
|
+
export const KNOWN_TOP_LEVEL_KEYS = new Set(Object.keys(rawGthConfigSchema.shape));
|
|
334
|
+
/**
|
|
335
|
+
* True when a raw config value is a plain (non-null, non-array) object, so the key scans
|
|
336
|
+
* ({@link findDeprecatedConfigIssues}, {@link findUnknownTopLevelKeys}) are safe to run. A
|
|
337
|
+
* `null`/array/primitive config (e.g. a JSON file that is just `null`, or a module
|
|
338
|
+
* `configure()` returning null) must NOT reach those scans — they'd throw on
|
|
339
|
+
* `hasOwnProperty`/`Object.keys`; the entry points instead hand it straight to
|
|
340
|
+
* `rawGthConfigSchema.safeParse`, which reports a clean "expected object" error.
|
|
341
|
+
*/
|
|
342
|
+
export function isRecordConfig(value) {
|
|
343
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Return the top-level keys present in `raw` that are not part of the known config
|
|
347
|
+
* surface. KNOWN deprecated names are rejected earlier by {@link findDeprecatedConfigIssues}
|
|
348
|
+
* (the entry points short-circuit on those), so a key that reaches here is a genuinely
|
|
349
|
+
* unknown key (a likely typo) that only warrants a warning.
|
|
350
|
+
*/
|
|
351
|
+
export function findUnknownTopLevelKeys(raw) {
|
|
352
|
+
return Object.keys(raw).filter((key) => !KNOWN_TOP_LEVEL_KEYS.has(key));
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Render ` - <path>: <message>` lines (one per issue), with `(root)` for an empty
|
|
356
|
+
* path. Shared by {@link formatConfigValidationError} (Zod issues) and
|
|
357
|
+
* {@link formatDeprecatedConfigIssues} (deprecated-shape issues) so both surfaces read
|
|
358
|
+
* identically.
|
|
359
|
+
*/
|
|
360
|
+
function formatIssueLines(issues) {
|
|
361
|
+
return issues.map((issue) => ` - ${issue.path || '(root)'}: ${issue.message}`).join('\n');
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Render a friendly, path-scoped validation message from a Zod error. Each issue
|
|
365
|
+
* becomes a line ` - <path>: <message>`, with `(root)` for top-level issues.
|
|
366
|
+
*/
|
|
367
|
+
export function formatConfigValidationError(error) {
|
|
368
|
+
return formatIssueLines(error.issues.map((issue) => ({
|
|
369
|
+
path: issue.path.length > 0 ? issue.path.join('.') : '',
|
|
370
|
+
message: issue.message,
|
|
371
|
+
})));
|
|
372
|
+
}
|
|
373
|
+
/** Deprecated → canonical key pairs at the config root (SSOT for the rejecter). */
|
|
374
|
+
const DEPRECATED_ROOT_PAIRS = [
|
|
375
|
+
['contentProvider', 'contentSource'],
|
|
376
|
+
['requirementsProvider', 'requirementSource'],
|
|
377
|
+
['contentProviderConfig', 'contentSourceConfig'],
|
|
378
|
+
['requirementsProviderConfig', 'requirementSourceConfig'],
|
|
379
|
+
];
|
|
380
|
+
/** Deprecated → canonical key pairs inside a `commands.<name>` block (SSOT for the rejecter). */
|
|
381
|
+
const DEPRECATED_COMMAND_PAIRS = [
|
|
382
|
+
['contentProvider', 'contentSource'],
|
|
383
|
+
['requirementsProvider', 'requirementSource'],
|
|
384
|
+
];
|
|
385
|
+
/**
|
|
386
|
+
* CFG-18 — removed per-command keys with no 1:1 rename: the config they carried was FOLDED into
|
|
387
|
+
* another key. `[removed, replacement]`. `devTools` (the split dev/shell config) is now configured
|
|
388
|
+
* under the unified `builtInTools` registry. Rejected here specifically because `devTools` lived
|
|
389
|
+
* under a per-command `z.object`, which SILENTLY STRIPS unknown keys — so without this pre-parse
|
|
390
|
+
* reject an old `commands.<cmd>.devTools` block would vanish with no error (worse than today).
|
|
391
|
+
*/
|
|
392
|
+
const REMOVED_COMMAND_KEYS = [
|
|
393
|
+
['devTools', 'builtInTools'],
|
|
394
|
+
];
|
|
395
|
+
/**
|
|
396
|
+
* Pointer to the migration path, appended to every deprecated-shape error so the user
|
|
397
|
+
* always learns HOW to fix it, not just that it broke. Matches the guidance the 2.0
|
|
398
|
+
* migration notes carry.
|
|
399
|
+
*/
|
|
400
|
+
const MIGRATION_HINT = 'See the 2.0 migration notes (or run `gth config migrate` / `gth doctor --fix`).';
|
|
401
|
+
/**
|
|
402
|
+
* GS2-28 — detect the removed pre-2.0 config shapes on the RAW input (read-only; no
|
|
403
|
+
* mutation), returning one {@link DeprecatedConfigIssue} per occurrence. A non-empty
|
|
404
|
+
* result is a HARD validation failure: 2.0 dropped back-compat coercion, so an old shape
|
|
405
|
+
* must error and point at the fix rather than be silently remapped or ignored.
|
|
406
|
+
*
|
|
407
|
+
* Detects:
|
|
408
|
+
* - (A) a COMMAND name ({@link COMMAND_KEYS}) at the config ROOT — must move under `commands.<cmd>`;
|
|
409
|
+
* - (C) a deprecated `*Provider*` name ({@link DEPRECATED_ROOT_PAIRS} at root,
|
|
410
|
+
* {@link DEPRECATED_COMMAND_PAIRS} per command) — must use its `*Source*` replacement;
|
|
411
|
+
* - (D, CFG-18) a removed per-command key folded into another ({@link REMOVED_COMMAND_KEYS}, e.g.
|
|
412
|
+
* `commands.<cmd>.devTools` → configure under `builtInTools`).
|
|
413
|
+
*
|
|
414
|
+
* Runs on the raw input specifically so nested `commands.*.contentProvider` is still visible
|
|
415
|
+
* (zod's per-command `z.object` would strip it before any schema-embedded check could fire).
|
|
416
|
+
* A genuinely-unknown key is NOT flagged here (it stays a warn-only unknown key), preserving
|
|
417
|
+
* the deliberate typo-tolerance.
|
|
418
|
+
*/
|
|
419
|
+
export function findDeprecatedConfigIssues(raw) {
|
|
420
|
+
const issues = [];
|
|
421
|
+
// (A) Command name used as a top-level key — command configs must live under commands.<cmd>.
|
|
422
|
+
for (const command of COMMAND_KEYS) {
|
|
423
|
+
if (Object.prototype.hasOwnProperty.call(raw, command)) {
|
|
424
|
+
issues.push({
|
|
425
|
+
path: command,
|
|
426
|
+
message: `Top-level command config "${command}" is no longer supported in 2.0. ` +
|
|
427
|
+
`Move it under "commands.${command}". ${MIGRATION_HINT}`,
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// (C) Deprecated *Provider* names at the config root.
|
|
432
|
+
for (const [deprecated, canonical] of DEPRECATED_ROOT_PAIRS) {
|
|
433
|
+
if (Object.prototype.hasOwnProperty.call(raw, deprecated)) {
|
|
434
|
+
issues.push({
|
|
435
|
+
path: deprecated,
|
|
436
|
+
message: `Config property "${deprecated}" was renamed in 2.0. Use "${canonical}" instead. ` +
|
|
437
|
+
MIGRATION_HINT,
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
// (C) Deprecated *Provider* names + (CFG-18) removed keys inside each commands.<name> block.
|
|
442
|
+
const commands = raw.commands;
|
|
443
|
+
if (commands && typeof commands === 'object' && !Array.isArray(commands)) {
|
|
444
|
+
for (const [name, cmd] of Object.entries(commands)) {
|
|
445
|
+
if (cmd && typeof cmd === 'object' && !Array.isArray(cmd)) {
|
|
446
|
+
for (const [deprecated, canonical] of DEPRECATED_COMMAND_PAIRS) {
|
|
447
|
+
if (Object.prototype.hasOwnProperty.call(cmd, deprecated)) {
|
|
448
|
+
issues.push({
|
|
449
|
+
path: `commands.${name}.${deprecated}`,
|
|
450
|
+
message: `Config property "${deprecated}" in commands.${name} was renamed in 2.0. ` +
|
|
451
|
+
`Use "${canonical}" instead. ${MIGRATION_HINT}`,
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
// (CFG-18) removed per-command keys folded into another key (e.g. devTools → builtInTools).
|
|
456
|
+
for (const [removed, replacement] of REMOVED_COMMAND_KEYS) {
|
|
457
|
+
if (Object.prototype.hasOwnProperty.call(cmd, removed)) {
|
|
458
|
+
issues.push({
|
|
459
|
+
path: `commands.${name}.${removed}`,
|
|
460
|
+
message: `Config property "${removed}" in commands.${name} is no longer supported in 2.0. ` +
|
|
461
|
+
`Configure tools under "${replacement}" instead. ${MIGRATION_HINT}`,
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
return issues;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Render {@link DeprecatedConfigIssue}s as the same ` - <path>: <message>` block used for
|
|
472
|
+
* Zod validation errors, so a deprecated-shape rejection reads identically to a type-mismatch
|
|
473
|
+
* rejection (loader wraps it with `Invalid configuration in <source>:`).
|
|
474
|
+
*/
|
|
475
|
+
export function formatDeprecatedConfigIssues(issues) {
|
|
476
|
+
return formatIssueLines(issues);
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Generate the JSON Schema for the raw config from {@link rawGthConfigSchema} using
|
|
480
|
+
* zod 4's native `z.toJSONSchema`. The output is committed to
|
|
481
|
+
* `packages/core/schema/gsloth-config.schema.json` and asserted by a golden test.
|
|
482
|
+
*/
|
|
483
|
+
export function generateConfigJsonSchema() {
|
|
484
|
+
return z.toJSONSchema(rawGthConfigSchema, { io: 'input' });
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Validate a freshly-loaded raw config object against {@link rawGthConfigSchema} and
|
|
488
|
+
* report the outcome as data (a pure function — no `displayWarning`/`exit`). Mirrors the
|
|
489
|
+
* loader's policy: a removed pre-2.0 shape (a top-level command key or a deprecated
|
|
490
|
+
* `*Provider*` name) is a HARD failure that names the fix, unknown top-level keys warn but
|
|
491
|
+
* do not fail, and a genuine type mismatch on a known field fails with a path-scoped message.
|
|
492
|
+
*
|
|
493
|
+
* Read-only: `findDeprecatedConfigIssues`, `findUnknownTopLevelKeys` and `safeParse` never
|
|
494
|
+
* mutate `raw`, so no defensive copy is needed.
|
|
495
|
+
*/
|
|
496
|
+
export function validateRawGthConfig(raw) {
|
|
497
|
+
const warnings = [];
|
|
498
|
+
// Only an object config can carry deprecated/unknown keys. A null/array/primitive config is
|
|
499
|
+
// handed straight to safeParse (below), which returns a clean "expected object" failure — the
|
|
500
|
+
// scans would otherwise throw a raw TypeError, and coercing to {} would wrongly report ok:true.
|
|
501
|
+
if (isRecordConfig(raw)) {
|
|
502
|
+
// Removed pre-2.0 shapes short-circuit before the unknown-key warning: any deprecated name
|
|
503
|
+
// present is hard-rejected here (and so never doubles as an unknown-key warning).
|
|
504
|
+
const deprecatedIssues = findDeprecatedConfigIssues(raw);
|
|
505
|
+
if (deprecatedIssues.length > 0) {
|
|
506
|
+
return {
|
|
507
|
+
ok: false,
|
|
508
|
+
warnings: [],
|
|
509
|
+
errorMessage: formatDeprecatedConfigIssues(deprecatedIssues),
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
const unknownKeys = findUnknownTopLevelKeys(raw);
|
|
513
|
+
if (unknownKeys.length > 0) {
|
|
514
|
+
warnings.push(`Unknown top-level config ${unknownKeys.length === 1 ? 'key' : 'keys'}: ` +
|
|
515
|
+
`${unknownKeys.join(', ')} (kept as-is but ignored by Gaunt Sloth; check for typos).`);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
const result = rawGthConfigSchema.safeParse(raw);
|
|
519
|
+
if (!result.success) {
|
|
520
|
+
return { ok: false, warnings, errorMessage: formatConfigValidationError(result.error) };
|
|
521
|
+
}
|
|
522
|
+
return { ok: true, warnings };
|
|
523
|
+
}
|
|
524
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|