@gaunt-sloth/core 2.0.0-alpha.2 → 2.0.0-alpha.4
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 +3 -4
- package/dist/config/defaults.d.ts +84 -0
- package/dist/config/defaults.js +97 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +88 -0
- package/dist/config/loader.js +604 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +471 -0
- package/dist/config/schema.js +301 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/shell-policy.d.ts +212 -0
- package/dist/config/shell-policy.js +142 -0
- package/dist/config/shell-policy.js.map +1 -0
- package/dist/config/types.d.ts +453 -0
- package/dist/config/types.js +12 -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 +6 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/GthAbstractAgent.d.ts +24 -1
- package/dist/core/GthAbstractAgent.js +86 -4
- package/dist/core/GthAbstractAgent.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +127 -1
- package/dist/core/GthAgentRunner.js +298 -4
- package/dist/core/GthAgentRunner.js.map +1 -1
- 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/types.d.ts +75 -0
- package/dist/core/types.js.map +1 -1
- package/dist/providers/openrouter.js +2 -2
- package/dist/providers/openrouter.js.map +1 -1
- package/dist/utils/fileUtils.d.ts +4 -1
- package/dist/utils/fileUtils.js +19 -10
- package/dist/utils/fileUtils.js.map +1 -1
- package/dist/utils/systemUtils.d.ts +31 -0
- package/dist/utils/systemUtils.js +38 -0
- package/dist/utils/systemUtils.js.map +1 -1
- package/package.json +12 -8
- package/schema/gsloth-config.schema.json +1548 -0
|
@@ -0,0 +1,471 @@
|
|
|
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. The loader maps those one-way to the
|
|
10
|
+
* canonical names ({@link preMapDeprecatedConfigNames}) BEFORE validating, so by
|
|
11
|
+
* the time a config reaches the schema it only uses canonical names.
|
|
12
|
+
*
|
|
13
|
+
* Design notes:
|
|
14
|
+
* - The top-level object is a {@link z.looseObject} so unknown keys PASS THROUGH
|
|
15
|
+
* (they are neither stripped nor a hard failure). The loader separately diffs
|
|
16
|
+
* present-vs-known top-level keys ({@link findUnknownTopLevelKeys}) to warn about
|
|
17
|
+
* likely typos without failing.
|
|
18
|
+
* - Every field is optional. The schema validates the *shape/type of what is
|
|
19
|
+
* present*, not requiredness. In particular `llm` is optional so the loader's
|
|
20
|
+
* existing "must at least define llm.type" checks remain the authority on llm
|
|
21
|
+
* validity (and keep emitting their established messages).
|
|
22
|
+
* - Runtime-object-bearing fields (`tools`, `middleware`, `mcpServers`,
|
|
23
|
+
* `a2aAgents`, `builtInToolsConfig`) are modelled permissively because JS/MJS
|
|
24
|
+
* `configure()` returns live instances/objects there.
|
|
25
|
+
*
|
|
26
|
+
* The exported {@link RawGthConfig}/{@link GthConfig} interfaces in `config.ts`
|
|
27
|
+
* remain the public type surface; the `z.infer` here ({@link RawGthConfigInput})
|
|
28
|
+
* is additive and legitimately differs (no deprecated fields).
|
|
29
|
+
*/
|
|
30
|
+
import { z } from 'zod';
|
|
31
|
+
/**
|
|
32
|
+
* Zod schema for the raw, on-disk Gaunt Sloth config. Loose at the top level so
|
|
33
|
+
* unknown keys are preserved (warn-only via {@link findUnknownTopLevelKeys}).
|
|
34
|
+
*/
|
|
35
|
+
export declare const rawGthConfigSchema: z.ZodObject<{
|
|
36
|
+
$schema: z.ZodOptional<z.ZodString>;
|
|
37
|
+
llm: z.ZodOptional<z.ZodObject<{
|
|
38
|
+
type: z.ZodOptional<z.ZodString>;
|
|
39
|
+
model: z.ZodOptional<z.ZodString>;
|
|
40
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
41
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, z.core.$loose>>;
|
|
43
|
+
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
44
|
+
type: z.ZodEnum<{
|
|
45
|
+
binary: "binary";
|
|
46
|
+
image: "image";
|
|
47
|
+
audio: "audio";
|
|
48
|
+
video: "video";
|
|
49
|
+
file: "file";
|
|
50
|
+
}>;
|
|
51
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
52
|
+
maxSize: z.ZodOptional<z.ZodNumber>;
|
|
53
|
+
mimeTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
54
|
+
}, z.core.$strip>>]>>;
|
|
55
|
+
contentSource: z.ZodOptional<z.ZodString>;
|
|
56
|
+
requirementSource: z.ZodOptional<z.ZodString>;
|
|
57
|
+
contentSourceConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
58
|
+
requirementSourceConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
59
|
+
projectGuidelines: z.ZodOptional<z.ZodString>;
|
|
60
|
+
identityProfile: z.ZodOptional<z.ZodString>;
|
|
61
|
+
includeCurrentDateAfterGuidelines: z.ZodOptional<z.ZodBoolean>;
|
|
62
|
+
organization: z.ZodOptional<z.ZodObject<{
|
|
63
|
+
name: z.ZodOptional<z.ZodString>;
|
|
64
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
65
|
+
timezone: z.ZodOptional<z.ZodString>;
|
|
66
|
+
}, z.core.$strip>>;
|
|
67
|
+
projectReviewInstructions: z.ZodOptional<z.ZodString>;
|
|
68
|
+
noDefaultPrompts: z.ZodOptional<z.ZodBoolean>;
|
|
69
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
70
|
+
all: "all";
|
|
71
|
+
read: "read";
|
|
72
|
+
none: "none";
|
|
73
|
+
}>]>>;
|
|
74
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
tools: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
76
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
77
|
+
middleware: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
78
|
+
streamOutput: z.ZodOptional<z.ZodBoolean>;
|
|
79
|
+
writeOutputToFile: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
|
|
80
|
+
writeBinaryOutputsToFile: z.ZodOptional<z.ZodBoolean>;
|
|
81
|
+
useColour: z.ZodOptional<z.ZodBoolean>;
|
|
82
|
+
streamSessionInferenceLog: z.ZodOptional<z.ZodBoolean>;
|
|
83
|
+
canInterruptInferenceWithEsc: z.ZodOptional<z.ZodBoolean>;
|
|
84
|
+
debugLog: z.ZodOptional<z.ZodBoolean>;
|
|
85
|
+
recursionLimit: z.ZodOptional<z.ZodNumber>;
|
|
86
|
+
consoleLevel: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
87
|
+
customTools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
88
|
+
command: z.ZodString;
|
|
89
|
+
description: z.ZodString;
|
|
90
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
91
|
+
description: z.ZodString;
|
|
92
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
93
|
+
"absolute-paths": "absolute-paths";
|
|
94
|
+
"directory-traversal": "directory-traversal";
|
|
95
|
+
"shell-injection": "shell-injection";
|
|
96
|
+
"null-bytes": "null-bytes";
|
|
97
|
+
}>>>;
|
|
98
|
+
}, z.core.$strip>>>;
|
|
99
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
100
|
+
}, z.core.$strip>>>;
|
|
101
|
+
mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
102
|
+
a2aAgents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
103
|
+
builtInToolsConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
104
|
+
aiignore: z.ZodOptional<z.ZodObject<{
|
|
105
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
+
patterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
107
|
+
}, z.core.$strip>>;
|
|
108
|
+
commands: z.ZodOptional<z.ZodObject<{
|
|
109
|
+
pr: z.ZodOptional<z.ZodObject<{
|
|
110
|
+
contentSource: z.ZodOptional<z.ZodString>;
|
|
111
|
+
requirementSource: z.ZodOptional<z.ZodString>;
|
|
112
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
113
|
+
all: "all";
|
|
114
|
+
read: "read";
|
|
115
|
+
none: "none";
|
|
116
|
+
}>]>>;
|
|
117
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
118
|
+
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
119
|
+
command: z.ZodString;
|
|
120
|
+
description: z.ZodString;
|
|
121
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
122
|
+
description: z.ZodString;
|
|
123
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
124
|
+
"absolute-paths": "absolute-paths";
|
|
125
|
+
"directory-traversal": "directory-traversal";
|
|
126
|
+
"shell-injection": "shell-injection";
|
|
127
|
+
"null-bytes": "null-bytes";
|
|
128
|
+
}>>>;
|
|
129
|
+
}, z.core.$strip>>>;
|
|
130
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
131
|
+
}, z.core.$strip>>]>>;
|
|
132
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
133
|
+
logWorkForReviewInSeconds: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
rating: z.ZodOptional<z.ZodObject<{
|
|
135
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
136
|
+
passThreshold: z.ZodOptional<z.ZodNumber>;
|
|
137
|
+
maxRating: z.ZodOptional<z.ZodNumber>;
|
|
138
|
+
minRating: z.ZodOptional<z.ZodNumber>;
|
|
139
|
+
errorOnReviewFail: z.ZodOptional<z.ZodBoolean>;
|
|
140
|
+
}, z.core.$strip>>;
|
|
141
|
+
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
142
|
+
type: z.ZodEnum<{
|
|
143
|
+
binary: "binary";
|
|
144
|
+
image: "image";
|
|
145
|
+
audio: "audio";
|
|
146
|
+
video: "video";
|
|
147
|
+
file: "file";
|
|
148
|
+
}>;
|
|
149
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
150
|
+
maxSize: z.ZodOptional<z.ZodNumber>;
|
|
151
|
+
mimeTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
152
|
+
}, z.core.$strip>>]>>;
|
|
153
|
+
}, z.core.$strip>>;
|
|
154
|
+
review: z.ZodOptional<z.ZodObject<{
|
|
155
|
+
contentSource: z.ZodOptional<z.ZodString>;
|
|
156
|
+
requirementSource: z.ZodOptional<z.ZodString>;
|
|
157
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
158
|
+
all: "all";
|
|
159
|
+
read: "read";
|
|
160
|
+
none: "none";
|
|
161
|
+
}>]>>;
|
|
162
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
163
|
+
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
164
|
+
command: z.ZodString;
|
|
165
|
+
description: z.ZodString;
|
|
166
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
167
|
+
description: z.ZodString;
|
|
168
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
169
|
+
"absolute-paths": "absolute-paths";
|
|
170
|
+
"directory-traversal": "directory-traversal";
|
|
171
|
+
"shell-injection": "shell-injection";
|
|
172
|
+
"null-bytes": "null-bytes";
|
|
173
|
+
}>>>;
|
|
174
|
+
}, z.core.$strip>>>;
|
|
175
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
176
|
+
}, z.core.$strip>>]>>;
|
|
177
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
178
|
+
rating: z.ZodOptional<z.ZodObject<{
|
|
179
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
180
|
+
passThreshold: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
maxRating: z.ZodOptional<z.ZodNumber>;
|
|
182
|
+
minRating: z.ZodOptional<z.ZodNumber>;
|
|
183
|
+
errorOnReviewFail: z.ZodOptional<z.ZodBoolean>;
|
|
184
|
+
}, z.core.$strip>>;
|
|
185
|
+
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
186
|
+
type: z.ZodEnum<{
|
|
187
|
+
binary: "binary";
|
|
188
|
+
image: "image";
|
|
189
|
+
audio: "audio";
|
|
190
|
+
video: "video";
|
|
191
|
+
file: "file";
|
|
192
|
+
}>;
|
|
193
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
194
|
+
maxSize: z.ZodOptional<z.ZodNumber>;
|
|
195
|
+
mimeTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
196
|
+
}, z.core.$strip>>]>>;
|
|
197
|
+
}, z.core.$strip>>;
|
|
198
|
+
ask: z.ZodOptional<z.ZodObject<{
|
|
199
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
200
|
+
all: "all";
|
|
201
|
+
read: "read";
|
|
202
|
+
none: "none";
|
|
203
|
+
}>]>>;
|
|
204
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
205
|
+
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
206
|
+
command: z.ZodString;
|
|
207
|
+
description: z.ZodString;
|
|
208
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
209
|
+
description: z.ZodString;
|
|
210
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
211
|
+
"absolute-paths": "absolute-paths";
|
|
212
|
+
"directory-traversal": "directory-traversal";
|
|
213
|
+
"shell-injection": "shell-injection";
|
|
214
|
+
"null-bytes": "null-bytes";
|
|
215
|
+
}>>>;
|
|
216
|
+
}, z.core.$strip>>>;
|
|
217
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
218
|
+
}, z.core.$strip>>]>>;
|
|
219
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
220
|
+
devTools: z.ZodOptional<z.ZodObject<{
|
|
221
|
+
run_tests: z.ZodOptional<z.ZodString>;
|
|
222
|
+
run_lint: z.ZodOptional<z.ZodString>;
|
|
223
|
+
run_build: z.ZodOptional<z.ZodString>;
|
|
224
|
+
run_single_test: z.ZodOptional<z.ZodString>;
|
|
225
|
+
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
226
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
227
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
228
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
229
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
230
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
231
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
232
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
233
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
234
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
235
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
236
|
+
type: z.ZodOptional<z.ZodString>;
|
|
237
|
+
model: z.ZodOptional<z.ZodString>;
|
|
238
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
239
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
240
|
+
}, z.core.$loose>>;
|
|
241
|
+
}, z.core.$strip>]>>;
|
|
242
|
+
}, z.core.$strip>]>>;
|
|
243
|
+
shellYolo: z.ZodOptional<z.ZodBoolean>;
|
|
244
|
+
}, z.core.$strip>>;
|
|
245
|
+
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
246
|
+
type: z.ZodEnum<{
|
|
247
|
+
binary: "binary";
|
|
248
|
+
image: "image";
|
|
249
|
+
audio: "audio";
|
|
250
|
+
video: "video";
|
|
251
|
+
file: "file";
|
|
252
|
+
}>;
|
|
253
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
254
|
+
maxSize: z.ZodOptional<z.ZodNumber>;
|
|
255
|
+
mimeTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
256
|
+
}, z.core.$strip>>]>>;
|
|
257
|
+
}, z.core.$strip>>;
|
|
258
|
+
chat: z.ZodOptional<z.ZodObject<{
|
|
259
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
260
|
+
all: "all";
|
|
261
|
+
read: "read";
|
|
262
|
+
none: "none";
|
|
263
|
+
}>]>>;
|
|
264
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
265
|
+
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
266
|
+
command: z.ZodString;
|
|
267
|
+
description: z.ZodString;
|
|
268
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
269
|
+
description: z.ZodString;
|
|
270
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
271
|
+
"absolute-paths": "absolute-paths";
|
|
272
|
+
"directory-traversal": "directory-traversal";
|
|
273
|
+
"shell-injection": "shell-injection";
|
|
274
|
+
"null-bytes": "null-bytes";
|
|
275
|
+
}>>>;
|
|
276
|
+
}, z.core.$strip>>>;
|
|
277
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
278
|
+
}, z.core.$strip>>]>>;
|
|
279
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
280
|
+
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
281
|
+
type: z.ZodEnum<{
|
|
282
|
+
binary: "binary";
|
|
283
|
+
image: "image";
|
|
284
|
+
audio: "audio";
|
|
285
|
+
video: "video";
|
|
286
|
+
file: "file";
|
|
287
|
+
}>;
|
|
288
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
289
|
+
maxSize: z.ZodOptional<z.ZodNumber>;
|
|
290
|
+
mimeTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
291
|
+
}, z.core.$strip>>]>>;
|
|
292
|
+
}, z.core.$strip>>;
|
|
293
|
+
code: z.ZodOptional<z.ZodObject<{
|
|
294
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
295
|
+
all: "all";
|
|
296
|
+
read: "read";
|
|
297
|
+
none: "none";
|
|
298
|
+
}>]>>;
|
|
299
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
300
|
+
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
301
|
+
command: z.ZodString;
|
|
302
|
+
description: z.ZodString;
|
|
303
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
304
|
+
description: z.ZodString;
|
|
305
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
306
|
+
"absolute-paths": "absolute-paths";
|
|
307
|
+
"directory-traversal": "directory-traversal";
|
|
308
|
+
"shell-injection": "shell-injection";
|
|
309
|
+
"null-bytes": "null-bytes";
|
|
310
|
+
}>>>;
|
|
311
|
+
}, z.core.$strip>>>;
|
|
312
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
313
|
+
}, z.core.$strip>>]>>;
|
|
314
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
315
|
+
devTools: z.ZodOptional<z.ZodObject<{
|
|
316
|
+
run_tests: z.ZodOptional<z.ZodString>;
|
|
317
|
+
run_lint: z.ZodOptional<z.ZodString>;
|
|
318
|
+
run_build: z.ZodOptional<z.ZodString>;
|
|
319
|
+
run_single_test: z.ZodOptional<z.ZodString>;
|
|
320
|
+
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
321
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
322
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
323
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
324
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
325
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
326
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
327
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
328
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
329
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
330
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
331
|
+
type: z.ZodOptional<z.ZodString>;
|
|
332
|
+
model: z.ZodOptional<z.ZodString>;
|
|
333
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
334
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
335
|
+
}, z.core.$loose>>;
|
|
336
|
+
}, z.core.$strip>]>>;
|
|
337
|
+
}, z.core.$strip>]>>;
|
|
338
|
+
shellYolo: z.ZodOptional<z.ZodBoolean>;
|
|
339
|
+
}, z.core.$strip>>;
|
|
340
|
+
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
341
|
+
type: z.ZodEnum<{
|
|
342
|
+
binary: "binary";
|
|
343
|
+
image: "image";
|
|
344
|
+
audio: "audio";
|
|
345
|
+
video: "video";
|
|
346
|
+
file: "file";
|
|
347
|
+
}>;
|
|
348
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
349
|
+
maxSize: z.ZodOptional<z.ZodNumber>;
|
|
350
|
+
mimeTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
351
|
+
}, z.core.$strip>>]>>;
|
|
352
|
+
}, z.core.$strip>>;
|
|
353
|
+
exec: z.ZodOptional<z.ZodObject<{
|
|
354
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
355
|
+
all: "all";
|
|
356
|
+
read: "read";
|
|
357
|
+
none: "none";
|
|
358
|
+
}>]>>;
|
|
359
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
360
|
+
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
361
|
+
command: z.ZodString;
|
|
362
|
+
description: z.ZodString;
|
|
363
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
364
|
+
description: z.ZodString;
|
|
365
|
+
allow: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
366
|
+
"absolute-paths": "absolute-paths";
|
|
367
|
+
"directory-traversal": "directory-traversal";
|
|
368
|
+
"shell-injection": "shell-injection";
|
|
369
|
+
"null-bytes": "null-bytes";
|
|
370
|
+
}>>>;
|
|
371
|
+
}, z.core.$strip>>>;
|
|
372
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
373
|
+
}, z.core.$strip>>]>>;
|
|
374
|
+
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
375
|
+
devTools: z.ZodOptional<z.ZodObject<{
|
|
376
|
+
run_tests: z.ZodOptional<z.ZodString>;
|
|
377
|
+
run_lint: z.ZodOptional<z.ZodString>;
|
|
378
|
+
run_build: z.ZodOptional<z.ZodString>;
|
|
379
|
+
run_single_test: z.ZodOptional<z.ZodString>;
|
|
380
|
+
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
381
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
382
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
383
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
384
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
385
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
386
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
387
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
388
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
389
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
390
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
391
|
+
type: z.ZodOptional<z.ZodString>;
|
|
392
|
+
model: z.ZodOptional<z.ZodString>;
|
|
393
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
394
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
395
|
+
}, z.core.$loose>>;
|
|
396
|
+
}, z.core.$strip>]>>;
|
|
397
|
+
}, z.core.$strip>]>>;
|
|
398
|
+
shellYolo: z.ZodOptional<z.ZodBoolean>;
|
|
399
|
+
}, z.core.$strip>>;
|
|
400
|
+
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
401
|
+
type: z.ZodEnum<{
|
|
402
|
+
binary: "binary";
|
|
403
|
+
image: "image";
|
|
404
|
+
audio: "audio";
|
|
405
|
+
video: "video";
|
|
406
|
+
file: "file";
|
|
407
|
+
}>;
|
|
408
|
+
extensions: z.ZodArray<z.ZodString>;
|
|
409
|
+
maxSize: z.ZodOptional<z.ZodNumber>;
|
|
410
|
+
mimeTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
411
|
+
}, z.core.$strip>>]>>;
|
|
412
|
+
}, z.core.$strip>>;
|
|
413
|
+
api: z.ZodOptional<z.ZodObject<{
|
|
414
|
+
filesystem: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodEnum<{
|
|
415
|
+
all: "all";
|
|
416
|
+
read: "read";
|
|
417
|
+
none: "none";
|
|
418
|
+
}>]>>;
|
|
419
|
+
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
420
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
421
|
+
cors: z.ZodOptional<z.ZodObject<{
|
|
422
|
+
allowOrigin: z.ZodOptional<z.ZodString>;
|
|
423
|
+
allowMethods: z.ZodOptional<z.ZodString>;
|
|
424
|
+
allowHeaders: z.ZodOptional<z.ZodString>;
|
|
425
|
+
}, z.core.$strip>>;
|
|
426
|
+
}, z.core.$strip>>;
|
|
427
|
+
}, z.core.$strip>>;
|
|
428
|
+
modelDisplayName: z.ZodOptional<z.ZodString>;
|
|
429
|
+
allowDirs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
430
|
+
askWriteMode: z.ZodOptional<z.ZodBoolean>;
|
|
431
|
+
}, z.core.$loose>;
|
|
432
|
+
/**
|
|
433
|
+
* Type inferred from {@link rawGthConfigSchema}. This is additive and intentionally
|
|
434
|
+
* separate from the hand-written `RawGthConfig` interface in `config.ts` (it omits
|
|
435
|
+
* the deprecated aliases). Prefer `RawGthConfig` for the public surface.
|
|
436
|
+
*/
|
|
437
|
+
export type RawGthConfigInput = z.infer<typeof rawGthConfigSchema>;
|
|
438
|
+
/**
|
|
439
|
+
* The set of known top-level config keys, derived from the schema shape so it can
|
|
440
|
+
* never drift from {@link rawGthConfigSchema}. Includes `$schema`.
|
|
441
|
+
*/
|
|
442
|
+
export declare const KNOWN_TOP_LEVEL_KEYS: ReadonlySet<string>;
|
|
443
|
+
/**
|
|
444
|
+
* Return the top-level keys present in `raw` that are not part of the known config
|
|
445
|
+
* surface. Deprecated aliases should be pre-mapped away first (see
|
|
446
|
+
* {@link preMapDeprecatedConfigNames}) so they do not show up here.
|
|
447
|
+
*/
|
|
448
|
+
export declare function findUnknownTopLevelKeys(raw: Record<string, unknown>): string[];
|
|
449
|
+
/**
|
|
450
|
+
* Render a friendly, path-scoped validation message from a Zod error. Each issue
|
|
451
|
+
* becomes a line ` - <path>: <message>`, with `(root)` for top-level issues.
|
|
452
|
+
*/
|
|
453
|
+
export declare function formatConfigValidationError(error: z.ZodError): string;
|
|
454
|
+
/**
|
|
455
|
+
* B3 — one-way pre-map of deprecated config key names to their canonical names, at
|
|
456
|
+
* the config root AND per-command. Mutates `raw` in place (it is always a freshly
|
|
457
|
+
* loaded config layer) and returns it alongside a list of deprecation warnings the
|
|
458
|
+
* caller should emit via `displayWarning`. Canonical names win when both are
|
|
459
|
+
* present; the deprecated key is always removed so it does not later surface as an
|
|
460
|
+
* "unknown top-level key".
|
|
461
|
+
*/
|
|
462
|
+
export declare function preMapDeprecatedConfigNames<T extends Record<string, unknown>>(raw: T): {
|
|
463
|
+
config: T;
|
|
464
|
+
warnings: string[];
|
|
465
|
+
};
|
|
466
|
+
/**
|
|
467
|
+
* Generate the JSON Schema for the raw config from {@link rawGthConfigSchema} using
|
|
468
|
+
* zod 4's native `z.toJSONSchema`. The output is committed to
|
|
469
|
+
* `packages/core/schema/gsloth-config.schema.json` and asserted by a golden test.
|
|
470
|
+
*/
|
|
471
|
+
export declare function generateConfigJsonSchema(): Record<string, unknown>;
|