@gaunt-sloth/core 2.0.0-alpha.11 → 2.0.0-alpha.12
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/dist/config/loader.d.ts +43 -12
- package/dist/config/loader.js +87 -34
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +219 -105
- package/dist/config/schema.js +191 -80
- package/dist/config/schema.js.map +1 -1
- package/dist/config/shell-policy.d.ts +125 -23
- package/dist/config/shell-policy.js +118 -22
- package/dist/config/shell-policy.js.map +1 -1
- package/dist/config/types.d.ts +20 -17
- package/dist/config/types.js.map +1 -1
- package/dist/core/GthAgentRunner.d.ts +1 -1
- package/dist/core/GthAgentRunner.js +2 -2
- package/dist/core/GthAgentRunner.js.map +1 -1
- package/dist/providers/modelDiscovery.d.ts +57 -2
- package/dist/providers/modelDiscovery.js +64 -19
- package/dist/providers/modelDiscovery.js.map +1 -1
- package/package.json +1 -1
- package/schema/gsloth-config.schema.json +720 -302
package/dist/config/schema.d.ts
CHANGED
|
@@ -6,15 +6,22 @@
|
|
|
6
6
|
* JSON Schema (`packages/core/schema/gsloth-config.schema.json`). It models the
|
|
7
7
|
* canonical config shape only — the deprecated aliases (`contentProvider`,
|
|
8
8
|
* `requirementsProvider`, `contentProviderConfig`, `requirementsProviderConfig`)
|
|
9
|
-
* are intentionally NOT part of the schema.
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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.
|
|
12
17
|
*
|
|
13
18
|
* Design notes:
|
|
14
19
|
* - The top-level object is a {@link z.looseObject} so unknown keys PASS THROUGH
|
|
15
20
|
* (they are neither stripped nor a hard failure). The loader separately diffs
|
|
16
21
|
* present-vs-known top-level keys ({@link findUnknownTopLevelKeys}) to warn about
|
|
17
|
-
* likely typos without failing.
|
|
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.
|
|
18
25
|
* - Every field is optional. The schema validates the *shape/type of what is
|
|
19
26
|
* present*, not requiredness. In particular `llm` is optional so the loader's
|
|
20
27
|
* existing "must at least define llm.type" checks remain the authority on llm
|
|
@@ -84,7 +91,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
84
91
|
read: "read";
|
|
85
92
|
none: "none";
|
|
86
93
|
}>]>>;
|
|
87
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
94
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
95
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
96
|
+
command: z.ZodOptional<z.ZodString>;
|
|
97
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
98
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
99
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
100
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
101
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
102
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
103
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
104
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
105
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
106
|
+
type: z.ZodOptional<z.ZodString>;
|
|
107
|
+
model: z.ZodOptional<z.ZodString>;
|
|
108
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
109
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
110
|
+
}, z.core.$loose>>;
|
|
111
|
+
}, z.core.$strip>]>>;
|
|
112
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
113
|
+
}, z.core.$strip>]>>]>>;
|
|
88
114
|
tools: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
89
115
|
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
90
116
|
middleware: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
@@ -127,7 +153,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
127
153
|
read: "read";
|
|
128
154
|
none: "none";
|
|
129
155
|
}>]>>;
|
|
130
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
156
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
157
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
158
|
+
command: z.ZodOptional<z.ZodString>;
|
|
159
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
160
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
161
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
162
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
163
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
164
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
165
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
166
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
167
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
168
|
+
type: z.ZodOptional<z.ZodString>;
|
|
169
|
+
model: z.ZodOptional<z.ZodString>;
|
|
170
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
171
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
172
|
+
}, z.core.$loose>>;
|
|
173
|
+
}, z.core.$strip>]>>;
|
|
174
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
175
|
+
}, z.core.$strip>]>>]>>;
|
|
131
176
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
132
177
|
command: z.ZodString;
|
|
133
178
|
description: z.ZodString;
|
|
@@ -172,7 +217,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
172
217
|
read: "read";
|
|
173
218
|
none: "none";
|
|
174
219
|
}>]>>;
|
|
175
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
220
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
221
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
222
|
+
command: z.ZodOptional<z.ZodString>;
|
|
223
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
224
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
225
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
226
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
227
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
228
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
229
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
230
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
231
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
232
|
+
type: z.ZodOptional<z.ZodString>;
|
|
233
|
+
model: z.ZodOptional<z.ZodString>;
|
|
234
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
235
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
236
|
+
}, z.core.$loose>>;
|
|
237
|
+
}, z.core.$strip>]>>;
|
|
238
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
239
|
+
}, z.core.$strip>]>>]>>;
|
|
176
240
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
177
241
|
command: z.ZodString;
|
|
178
242
|
description: z.ZodString;
|
|
@@ -214,7 +278,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
214
278
|
read: "read";
|
|
215
279
|
none: "none";
|
|
216
280
|
}>]>>;
|
|
217
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
281
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
282
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
283
|
+
command: z.ZodOptional<z.ZodString>;
|
|
284
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
285
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
286
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
287
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
288
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
289
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
290
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
291
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
292
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
293
|
+
type: z.ZodOptional<z.ZodString>;
|
|
294
|
+
model: z.ZodOptional<z.ZodString>;
|
|
295
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
296
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
297
|
+
}, z.core.$loose>>;
|
|
298
|
+
}, z.core.$strip>]>>;
|
|
299
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
300
|
+
}, z.core.$strip>]>>]>>;
|
|
218
301
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
219
302
|
command: z.ZodString;
|
|
220
303
|
description: z.ZodString;
|
|
@@ -230,31 +313,6 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
230
313
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
231
314
|
}, z.core.$strip>>]>>;
|
|
232
315
|
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
233
|
-
devTools: z.ZodOptional<z.ZodObject<{
|
|
234
|
-
run_tests: z.ZodOptional<z.ZodString>;
|
|
235
|
-
run_lint: z.ZodOptional<z.ZodString>;
|
|
236
|
-
run_build: z.ZodOptional<z.ZodString>;
|
|
237
|
-
run_single_test: z.ZodOptional<z.ZodString>;
|
|
238
|
-
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
239
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
240
|
-
timeout: z.ZodOptional<z.ZodNumber>;
|
|
241
|
-
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
242
|
-
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
243
|
-
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
244
|
-
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
245
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
246
|
-
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
247
|
-
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
248
|
-
model: z.ZodOptional<z.ZodObject<{
|
|
249
|
-
type: z.ZodOptional<z.ZodString>;
|
|
250
|
-
model: z.ZodOptional<z.ZodString>;
|
|
251
|
-
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
252
|
-
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
253
|
-
}, z.core.$loose>>;
|
|
254
|
-
}, z.core.$strip>]>>;
|
|
255
|
-
}, z.core.$strip>]>>;
|
|
256
|
-
shellYolo: z.ZodOptional<z.ZodBoolean>;
|
|
257
|
-
}, z.core.$strip>>;
|
|
258
316
|
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
259
317
|
type: z.ZodEnum<{
|
|
260
318
|
binary: "binary";
|
|
@@ -274,7 +332,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
274
332
|
read: "read";
|
|
275
333
|
none: "none";
|
|
276
334
|
}>]>>;
|
|
277
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
335
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
336
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
337
|
+
command: z.ZodOptional<z.ZodString>;
|
|
338
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
339
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
340
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
341
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
342
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
343
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
344
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
345
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
346
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
347
|
+
type: z.ZodOptional<z.ZodString>;
|
|
348
|
+
model: z.ZodOptional<z.ZodString>;
|
|
349
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
350
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
351
|
+
}, z.core.$loose>>;
|
|
352
|
+
}, z.core.$strip>]>>;
|
|
353
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
354
|
+
}, z.core.$strip>]>>]>>;
|
|
278
355
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
279
356
|
command: z.ZodString;
|
|
280
357
|
description: z.ZodString;
|
|
@@ -309,7 +386,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
309
386
|
read: "read";
|
|
310
387
|
none: "none";
|
|
311
388
|
}>]>>;
|
|
312
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
389
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
390
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
391
|
+
command: z.ZodOptional<z.ZodString>;
|
|
392
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
393
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
394
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
395
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
396
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
397
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
398
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
399
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
400
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
401
|
+
type: z.ZodOptional<z.ZodString>;
|
|
402
|
+
model: z.ZodOptional<z.ZodString>;
|
|
403
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
404
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
405
|
+
}, z.core.$loose>>;
|
|
406
|
+
}, z.core.$strip>]>>;
|
|
407
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
408
|
+
}, z.core.$strip>]>>]>>;
|
|
313
409
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
314
410
|
command: z.ZodString;
|
|
315
411
|
description: z.ZodString;
|
|
@@ -325,31 +421,6 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
325
421
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
326
422
|
}, z.core.$strip>>]>>;
|
|
327
423
|
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
328
|
-
devTools: z.ZodOptional<z.ZodObject<{
|
|
329
|
-
run_tests: z.ZodOptional<z.ZodString>;
|
|
330
|
-
run_lint: z.ZodOptional<z.ZodString>;
|
|
331
|
-
run_build: z.ZodOptional<z.ZodString>;
|
|
332
|
-
run_single_test: z.ZodOptional<z.ZodString>;
|
|
333
|
-
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
334
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
335
|
-
timeout: z.ZodOptional<z.ZodNumber>;
|
|
336
|
-
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
337
|
-
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
338
|
-
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
339
|
-
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
340
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
341
|
-
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
342
|
-
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
343
|
-
model: z.ZodOptional<z.ZodObject<{
|
|
344
|
-
type: z.ZodOptional<z.ZodString>;
|
|
345
|
-
model: z.ZodOptional<z.ZodString>;
|
|
346
|
-
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
347
|
-
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
348
|
-
}, z.core.$loose>>;
|
|
349
|
-
}, z.core.$strip>]>>;
|
|
350
|
-
}, z.core.$strip>]>>;
|
|
351
|
-
shellYolo: z.ZodOptional<z.ZodBoolean>;
|
|
352
|
-
}, z.core.$strip>>;
|
|
353
424
|
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
354
425
|
type: z.ZodEnum<{
|
|
355
426
|
binary: "binary";
|
|
@@ -369,7 +440,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
369
440
|
read: "read";
|
|
370
441
|
none: "none";
|
|
371
442
|
}>]>>;
|
|
372
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
443
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
444
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
445
|
+
command: z.ZodOptional<z.ZodString>;
|
|
446
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
447
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
448
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
449
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
450
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
451
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
452
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
453
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
454
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
455
|
+
type: z.ZodOptional<z.ZodString>;
|
|
456
|
+
model: z.ZodOptional<z.ZodString>;
|
|
457
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
458
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
459
|
+
}, z.core.$loose>>;
|
|
460
|
+
}, z.core.$strip>]>>;
|
|
461
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
462
|
+
}, z.core.$strip>]>>]>>;
|
|
373
463
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
374
464
|
command: z.ZodString;
|
|
375
465
|
description: z.ZodString;
|
|
@@ -385,31 +475,6 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
385
475
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
386
476
|
}, z.core.$strip>>]>>;
|
|
387
477
|
allowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
388
|
-
devTools: z.ZodOptional<z.ZodObject<{
|
|
389
|
-
run_tests: z.ZodOptional<z.ZodString>;
|
|
390
|
-
run_lint: z.ZodOptional<z.ZodString>;
|
|
391
|
-
run_build: z.ZodOptional<z.ZodString>;
|
|
392
|
-
run_single_test: z.ZodOptional<z.ZodString>;
|
|
393
|
-
shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
394
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
395
|
-
timeout: z.ZodOptional<z.ZodNumber>;
|
|
396
|
-
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
397
|
-
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
398
|
-
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
399
|
-
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
400
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
401
|
-
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
402
|
-
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
403
|
-
model: z.ZodOptional<z.ZodObject<{
|
|
404
|
-
type: z.ZodOptional<z.ZodString>;
|
|
405
|
-
model: z.ZodOptional<z.ZodString>;
|
|
406
|
-
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
407
|
-
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
408
|
-
}, z.core.$loose>>;
|
|
409
|
-
}, z.core.$strip>]>>;
|
|
410
|
-
}, z.core.$strip>]>>;
|
|
411
|
-
shellYolo: z.ZodOptional<z.ZodBoolean>;
|
|
412
|
-
}, z.core.$strip>>;
|
|
413
478
|
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
414
479
|
type: z.ZodEnum<{
|
|
415
480
|
binary: "binary";
|
|
@@ -429,7 +494,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
429
494
|
read: "read";
|
|
430
495
|
none: "none";
|
|
431
496
|
}>]>>;
|
|
432
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
497
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
498
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
499
|
+
command: z.ZodOptional<z.ZodString>;
|
|
500
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
501
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
502
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
503
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
504
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
505
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
506
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
507
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
508
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
509
|
+
type: z.ZodOptional<z.ZodString>;
|
|
510
|
+
model: z.ZodOptional<z.ZodString>;
|
|
511
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
512
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
513
|
+
}, z.core.$loose>>;
|
|
514
|
+
}, z.core.$strip>]>>;
|
|
515
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
516
|
+
}, z.core.$strip>]>>]>>;
|
|
433
517
|
port: z.ZodOptional<z.ZodNumber>;
|
|
434
518
|
cors: z.ZodOptional<z.ZodObject<{
|
|
435
519
|
allowOrigin: z.ZodOptional<z.ZodString>;
|
|
@@ -453,10 +537,20 @@ export type RawGthConfigInput = z.infer<typeof rawGthConfigSchema>;
|
|
|
453
537
|
* never drift from {@link rawGthConfigSchema}. Includes `$schema`.
|
|
454
538
|
*/
|
|
455
539
|
export declare const KNOWN_TOP_LEVEL_KEYS: ReadonlySet<string>;
|
|
540
|
+
/**
|
|
541
|
+
* True when a raw config value is a plain (non-null, non-array) object, so the key scans
|
|
542
|
+
* ({@link findDeprecatedConfigIssues}, {@link findUnknownTopLevelKeys}) are safe to run. A
|
|
543
|
+
* `null`/array/primitive config (e.g. a JSON file that is just `null`, or a module
|
|
544
|
+
* `configure()` returning null) must NOT reach those scans — they'd throw on
|
|
545
|
+
* `hasOwnProperty`/`Object.keys`; the entry points instead hand it straight to
|
|
546
|
+
* `rawGthConfigSchema.safeParse`, which reports a clean "expected object" error.
|
|
547
|
+
*/
|
|
548
|
+
export declare function isRecordConfig(value: unknown): value is Record<string, unknown>;
|
|
456
549
|
/**
|
|
457
550
|
* Return the top-level keys present in `raw` that are not part of the known config
|
|
458
|
-
* surface.
|
|
459
|
-
*
|
|
551
|
+
* surface. KNOWN deprecated names are rejected earlier by {@link findDeprecatedConfigIssues}
|
|
552
|
+
* (the entry points short-circuit on those), so a key that reaches here is a genuinely
|
|
553
|
+
* unknown key (a likely typo) that only warrants a warning.
|
|
460
554
|
*/
|
|
461
555
|
export declare function findUnknownTopLevelKeys(raw: Record<string, unknown>): string[];
|
|
462
556
|
/**
|
|
@@ -464,18 +558,38 @@ export declare function findUnknownTopLevelKeys(raw: Record<string, unknown>): s
|
|
|
464
558
|
* becomes a line ` - <path>: <message>`, with `(root)` for top-level issues.
|
|
465
559
|
*/
|
|
466
560
|
export declare function formatConfigValidationError(error: z.ZodError): string;
|
|
561
|
+
/** A single deprecated-config-shape rejection: the offending `path` and the migration message. */
|
|
562
|
+
export interface DeprecatedConfigIssue {
|
|
563
|
+
/** Dotted path of the offending key (e.g. `pr`, `commands.pr.contentProvider`). */
|
|
564
|
+
path: string;
|
|
565
|
+
/** Human message naming the canonical replacement + migration path. */
|
|
566
|
+
message: string;
|
|
567
|
+
}
|
|
467
568
|
/**
|
|
468
|
-
*
|
|
469
|
-
*
|
|
470
|
-
*
|
|
471
|
-
*
|
|
472
|
-
*
|
|
473
|
-
*
|
|
569
|
+
* GS2-28 — detect the removed pre-2.0 config shapes on the RAW input (read-only; no
|
|
570
|
+
* mutation), returning one {@link DeprecatedConfigIssue} per occurrence. A non-empty
|
|
571
|
+
* result is a HARD validation failure: 2.0 dropped back-compat coercion, so an old shape
|
|
572
|
+
* must error and point at the fix rather than be silently remapped or ignored.
|
|
573
|
+
*
|
|
574
|
+
* Detects:
|
|
575
|
+
* - (A) a COMMAND name ({@link COMMAND_KEYS}) at the config ROOT — must move under `commands.<cmd>`;
|
|
576
|
+
* - (C) a deprecated `*Provider*` name ({@link DEPRECATED_ROOT_PAIRS} at root,
|
|
577
|
+
* {@link DEPRECATED_COMMAND_PAIRS} per command) — must use its `*Source*` replacement;
|
|
578
|
+
* - (D, CFG-18) a removed per-command key folded into another ({@link REMOVED_COMMAND_KEYS}, e.g.
|
|
579
|
+
* `commands.<cmd>.devTools` → configure under `builtInTools`).
|
|
580
|
+
*
|
|
581
|
+
* Runs on the raw input specifically so nested `commands.*.contentProvider` is still visible
|
|
582
|
+
* (zod's per-command `z.object` would strip it before any schema-embedded check could fire).
|
|
583
|
+
* A genuinely-unknown key is NOT flagged here (it stays a warn-only unknown key), preserving
|
|
584
|
+
* the deliberate typo-tolerance.
|
|
474
585
|
*/
|
|
475
|
-
export declare function
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
586
|
+
export declare function findDeprecatedConfigIssues(raw: Record<string, unknown>): DeprecatedConfigIssue[];
|
|
587
|
+
/**
|
|
588
|
+
* Render {@link DeprecatedConfigIssue}s as the same ` - <path>: <message>` block used for
|
|
589
|
+
* Zod validation errors, so a deprecated-shape rejection reads identically to a type-mismatch
|
|
590
|
+
* rejection (loader wraps it with `Invalid configuration in <source>:`).
|
|
591
|
+
*/
|
|
592
|
+
export declare function formatDeprecatedConfigIssues(issues: ReadonlyArray<DeprecatedConfigIssue>): string;
|
|
479
593
|
/**
|
|
480
594
|
* Generate the JSON Schema for the raw config from {@link rawGthConfigSchema} using
|
|
481
595
|
* zod 4's native `z.toJSONSchema`. The output is committed to
|
|
@@ -491,7 +605,7 @@ export declare function generateConfigJsonSchema(): Record<string, unknown>;
|
|
|
491
605
|
export interface RawConfigValidationResult {
|
|
492
606
|
/** True when the config parses against the schema (unknown keys do NOT make it false). */
|
|
493
607
|
ok: boolean;
|
|
494
|
-
/** Non-fatal advisories:
|
|
608
|
+
/** Non-fatal advisories: unknown top-level keys (likely typos). Deprecated shapes are hard errors, not warnings. */
|
|
495
609
|
warnings: string[];
|
|
496
610
|
/** Present only when `ok` is false: the path-scoped, multi-line validation message. */
|
|
497
611
|
errorMessage?: string;
|
|
@@ -499,11 +613,11 @@ export interface RawConfigValidationResult {
|
|
|
499
613
|
/**
|
|
500
614
|
* Validate a freshly-loaded raw config object against {@link rawGthConfigSchema} and
|
|
501
615
|
* report the outcome as data (a pure function — no `displayWarning`/`exit`). Mirrors the
|
|
502
|
-
* loader's policy:
|
|
503
|
-
*
|
|
504
|
-
* with a path-scoped message.
|
|
616
|
+
* loader's policy: a removed pre-2.0 shape (a top-level command key or a deprecated
|
|
617
|
+
* `*Provider*` name) is a HARD failure that names the fix, unknown top-level keys warn but
|
|
618
|
+
* do not fail, and a genuine type mismatch on a known field fails with a path-scoped message.
|
|
505
619
|
*
|
|
506
|
-
*
|
|
507
|
-
*
|
|
620
|
+
* Read-only: `findDeprecatedConfigIssues`, `findUnknownTopLevelKeys` and `safeParse` never
|
|
621
|
+
* mutate `raw`, so no defensive copy is needed.
|
|
508
622
|
*/
|
|
509
623
|
export declare function validateRawGthConfig(raw: Record<string, unknown>): RawConfigValidationResult;
|