@gaunt-sloth/core 2.0.0-alpha.11 → 2.0.0-alpha.13
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 +223 -105
- package/dist/config/schema.js +206 -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 +38 -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/core/types.d.ts +21 -0
- 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 +734 -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>>;
|
|
@@ -112,6 +138,10 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
112
138
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
113
139
|
}, z.core.$strip>>>;
|
|
114
140
|
mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
141
|
+
tls: z.ZodOptional<z.ZodObject<{
|
|
142
|
+
extraCaCerts: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
143
|
+
rejectUnauthorized: z.ZodOptional<z.ZodBoolean>;
|
|
144
|
+
}, z.core.$strip>>;
|
|
115
145
|
a2aAgents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
116
146
|
builtInToolsConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
117
147
|
aiignore: z.ZodOptional<z.ZodObject<{
|
|
@@ -127,7 +157,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
127
157
|
read: "read";
|
|
128
158
|
none: "none";
|
|
129
159
|
}>]>>;
|
|
130
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
160
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
161
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
162
|
+
command: z.ZodOptional<z.ZodString>;
|
|
163
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
164
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
165
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
166
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
167
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
168
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
169
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
170
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
171
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
172
|
+
type: z.ZodOptional<z.ZodString>;
|
|
173
|
+
model: z.ZodOptional<z.ZodString>;
|
|
174
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
175
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
176
|
+
}, z.core.$loose>>;
|
|
177
|
+
}, z.core.$strip>]>>;
|
|
178
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
179
|
+
}, z.core.$strip>]>>]>>;
|
|
131
180
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
132
181
|
command: z.ZodString;
|
|
133
182
|
description: z.ZodString;
|
|
@@ -172,7 +221,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
172
221
|
read: "read";
|
|
173
222
|
none: "none";
|
|
174
223
|
}>]>>;
|
|
175
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
224
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
225
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
226
|
+
command: z.ZodOptional<z.ZodString>;
|
|
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
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
243
|
+
}, z.core.$strip>]>>]>>;
|
|
176
244
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
177
245
|
command: z.ZodString;
|
|
178
246
|
description: z.ZodString;
|
|
@@ -214,7 +282,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
214
282
|
read: "read";
|
|
215
283
|
none: "none";
|
|
216
284
|
}>]>>;
|
|
217
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
285
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
286
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
287
|
+
command: z.ZodOptional<z.ZodString>;
|
|
288
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
289
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
290
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
291
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
292
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
293
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
294
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
295
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
296
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
297
|
+
type: z.ZodOptional<z.ZodString>;
|
|
298
|
+
model: z.ZodOptional<z.ZodString>;
|
|
299
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
300
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
301
|
+
}, z.core.$loose>>;
|
|
302
|
+
}, z.core.$strip>]>>;
|
|
303
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
304
|
+
}, z.core.$strip>]>>]>>;
|
|
218
305
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
219
306
|
command: z.ZodString;
|
|
220
307
|
description: z.ZodString;
|
|
@@ -230,31 +317,6 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
230
317
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
231
318
|
}, z.core.$strip>>]>>;
|
|
232
319
|
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
320
|
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
259
321
|
type: z.ZodEnum<{
|
|
260
322
|
binary: "binary";
|
|
@@ -274,7 +336,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
274
336
|
read: "read";
|
|
275
337
|
none: "none";
|
|
276
338
|
}>]>>;
|
|
277
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
339
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
340
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
341
|
+
command: z.ZodOptional<z.ZodString>;
|
|
342
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
343
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
344
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
345
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
346
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
347
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
348
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
349
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
350
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
351
|
+
type: z.ZodOptional<z.ZodString>;
|
|
352
|
+
model: z.ZodOptional<z.ZodString>;
|
|
353
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
354
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
355
|
+
}, z.core.$loose>>;
|
|
356
|
+
}, z.core.$strip>]>>;
|
|
357
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
358
|
+
}, z.core.$strip>]>>]>>;
|
|
278
359
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
279
360
|
command: z.ZodString;
|
|
280
361
|
description: z.ZodString;
|
|
@@ -309,7 +390,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
309
390
|
read: "read";
|
|
310
391
|
none: "none";
|
|
311
392
|
}>]>>;
|
|
312
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
393
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
394
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
395
|
+
command: z.ZodOptional<z.ZodString>;
|
|
396
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
397
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
398
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
399
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
400
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
401
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
402
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
403
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
404
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
405
|
+
type: z.ZodOptional<z.ZodString>;
|
|
406
|
+
model: z.ZodOptional<z.ZodString>;
|
|
407
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
408
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
409
|
+
}, z.core.$loose>>;
|
|
410
|
+
}, z.core.$strip>]>>;
|
|
411
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
412
|
+
}, z.core.$strip>]>>]>>;
|
|
313
413
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
314
414
|
command: z.ZodString;
|
|
315
415
|
description: z.ZodString;
|
|
@@ -325,31 +425,6 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
325
425
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
326
426
|
}, z.core.$strip>>]>>;
|
|
327
427
|
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
428
|
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
354
429
|
type: z.ZodEnum<{
|
|
355
430
|
binary: "binary";
|
|
@@ -369,7 +444,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
369
444
|
read: "read";
|
|
370
445
|
none: "none";
|
|
371
446
|
}>]>>;
|
|
372
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
447
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
448
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
449
|
+
command: z.ZodOptional<z.ZodString>;
|
|
450
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
451
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
452
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
453
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
454
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
455
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
456
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
457
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
458
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
459
|
+
type: z.ZodOptional<z.ZodString>;
|
|
460
|
+
model: z.ZodOptional<z.ZodString>;
|
|
461
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
462
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
463
|
+
}, z.core.$loose>>;
|
|
464
|
+
}, z.core.$strip>]>>;
|
|
465
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
466
|
+
}, z.core.$strip>]>>]>>;
|
|
373
467
|
customTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
374
468
|
command: z.ZodString;
|
|
375
469
|
description: z.ZodString;
|
|
@@ -385,31 +479,6 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
385
479
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
386
480
|
}, z.core.$strip>>]>>;
|
|
387
481
|
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
482
|
binaryFormats: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodObject<{
|
|
414
483
|
type: z.ZodEnum<{
|
|
415
484
|
binary: "binary";
|
|
@@ -429,7 +498,26 @@ export declare const rawGthConfigSchema: z.ZodObject<{
|
|
|
429
498
|
read: "read";
|
|
430
499
|
none: "none";
|
|
431
500
|
}>]>>;
|
|
432
|
-
builtInTools: z.ZodOptional<z.ZodArray<z.ZodString
|
|
501
|
+
builtInTools: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
502
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
503
|
+
command: z.ZodOptional<z.ZodString>;
|
|
504
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
505
|
+
maxOutputBytes: z.ZodOptional<z.ZodNumber>;
|
|
506
|
+
allowlist: z.ZodOptional<z.ZodBoolean>;
|
|
507
|
+
persistAllowlist: z.ZodOptional<z.ZodBoolean>;
|
|
508
|
+
judge: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
509
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
510
|
+
autoApproveLow: z.ZodOptional<z.ZodBoolean>;
|
|
511
|
+
blockHigh: z.ZodOptional<z.ZodBoolean>;
|
|
512
|
+
model: z.ZodOptional<z.ZodObject<{
|
|
513
|
+
type: z.ZodOptional<z.ZodString>;
|
|
514
|
+
model: z.ZodOptional<z.ZodString>;
|
|
515
|
+
configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
516
|
+
apiKeyEnvironmentVariable: z.ZodOptional<z.ZodString>;
|
|
517
|
+
}, z.core.$loose>>;
|
|
518
|
+
}, z.core.$strip>]>>;
|
|
519
|
+
yolo: z.ZodOptional<z.ZodBoolean>;
|
|
520
|
+
}, z.core.$strip>]>>]>>;
|
|
433
521
|
port: z.ZodOptional<z.ZodNumber>;
|
|
434
522
|
cors: z.ZodOptional<z.ZodObject<{
|
|
435
523
|
allowOrigin: z.ZodOptional<z.ZodString>;
|
|
@@ -453,10 +541,20 @@ export type RawGthConfigInput = z.infer<typeof rawGthConfigSchema>;
|
|
|
453
541
|
* never drift from {@link rawGthConfigSchema}. Includes `$schema`.
|
|
454
542
|
*/
|
|
455
543
|
export declare const KNOWN_TOP_LEVEL_KEYS: ReadonlySet<string>;
|
|
544
|
+
/**
|
|
545
|
+
* True when a raw config value is a plain (non-null, non-array) object, so the key scans
|
|
546
|
+
* ({@link findDeprecatedConfigIssues}, {@link findUnknownTopLevelKeys}) are safe to run. A
|
|
547
|
+
* `null`/array/primitive config (e.g. a JSON file that is just `null`, or a module
|
|
548
|
+
* `configure()` returning null) must NOT reach those scans — they'd throw on
|
|
549
|
+
* `hasOwnProperty`/`Object.keys`; the entry points instead hand it straight to
|
|
550
|
+
* `rawGthConfigSchema.safeParse`, which reports a clean "expected object" error.
|
|
551
|
+
*/
|
|
552
|
+
export declare function isRecordConfig(value: unknown): value is Record<string, unknown>;
|
|
456
553
|
/**
|
|
457
554
|
* Return the top-level keys present in `raw` that are not part of the known config
|
|
458
|
-
* surface.
|
|
459
|
-
*
|
|
555
|
+
* surface. KNOWN deprecated names are rejected earlier by {@link findDeprecatedConfigIssues}
|
|
556
|
+
* (the entry points short-circuit on those), so a key that reaches here is a genuinely
|
|
557
|
+
* unknown key (a likely typo) that only warrants a warning.
|
|
460
558
|
*/
|
|
461
559
|
export declare function findUnknownTopLevelKeys(raw: Record<string, unknown>): string[];
|
|
462
560
|
/**
|
|
@@ -464,18 +562,38 @@ export declare function findUnknownTopLevelKeys(raw: Record<string, unknown>): s
|
|
|
464
562
|
* becomes a line ` - <path>: <message>`, with `(root)` for top-level issues.
|
|
465
563
|
*/
|
|
466
564
|
export declare function formatConfigValidationError(error: z.ZodError): string;
|
|
565
|
+
/** A single deprecated-config-shape rejection: the offending `path` and the migration message. */
|
|
566
|
+
export interface DeprecatedConfigIssue {
|
|
567
|
+
/** Dotted path of the offending key (e.g. `pr`, `commands.pr.contentProvider`). */
|
|
568
|
+
path: string;
|
|
569
|
+
/** Human message naming the canonical replacement + migration path. */
|
|
570
|
+
message: string;
|
|
571
|
+
}
|
|
572
|
+
/**
|
|
573
|
+
* GS2-28 — detect the removed pre-2.0 config shapes on the RAW input (read-only; no
|
|
574
|
+
* mutation), returning one {@link DeprecatedConfigIssue} per occurrence. A non-empty
|
|
575
|
+
* result is a HARD validation failure: 2.0 dropped back-compat coercion, so an old shape
|
|
576
|
+
* must error and point at the fix rather than be silently remapped or ignored.
|
|
577
|
+
*
|
|
578
|
+
* Detects:
|
|
579
|
+
* - (A) a COMMAND name ({@link COMMAND_KEYS}) at the config ROOT — must move under `commands.<cmd>`;
|
|
580
|
+
* - (C) a deprecated `*Provider*` name ({@link DEPRECATED_ROOT_PAIRS} at root,
|
|
581
|
+
* {@link DEPRECATED_COMMAND_PAIRS} per command) — must use its `*Source*` replacement;
|
|
582
|
+
* - (D, CFG-18) a removed per-command key folded into another ({@link REMOVED_COMMAND_KEYS}, e.g.
|
|
583
|
+
* `commands.<cmd>.devTools` → configure under `builtInTools`).
|
|
584
|
+
*
|
|
585
|
+
* Runs on the raw input specifically so nested `commands.*.contentProvider` is still visible
|
|
586
|
+
* (zod's per-command `z.object` would strip it before any schema-embedded check could fire).
|
|
587
|
+
* A genuinely-unknown key is NOT flagged here (it stays a warn-only unknown key), preserving
|
|
588
|
+
* the deliberate typo-tolerance.
|
|
589
|
+
*/
|
|
590
|
+
export declare function findDeprecatedConfigIssues(raw: Record<string, unknown>): DeprecatedConfigIssue[];
|
|
467
591
|
/**
|
|
468
|
-
*
|
|
469
|
-
*
|
|
470
|
-
*
|
|
471
|
-
* caller should emit via `displayWarning`. Canonical names win when both are
|
|
472
|
-
* present; the deprecated key is always removed so it does not later surface as an
|
|
473
|
-
* "unknown top-level key".
|
|
592
|
+
* Render {@link DeprecatedConfigIssue}s as the same ` - <path>: <message>` block used for
|
|
593
|
+
* Zod validation errors, so a deprecated-shape rejection reads identically to a type-mismatch
|
|
594
|
+
* rejection (loader wraps it with `Invalid configuration in <source>:`).
|
|
474
595
|
*/
|
|
475
|
-
export declare function
|
|
476
|
-
config: T;
|
|
477
|
-
warnings: string[];
|
|
478
|
-
};
|
|
596
|
+
export declare function formatDeprecatedConfigIssues(issues: ReadonlyArray<DeprecatedConfigIssue>): string;
|
|
479
597
|
/**
|
|
480
598
|
* Generate the JSON Schema for the raw config from {@link rawGthConfigSchema} using
|
|
481
599
|
* zod 4's native `z.toJSONSchema`. The output is committed to
|
|
@@ -491,7 +609,7 @@ export declare function generateConfigJsonSchema(): Record<string, unknown>;
|
|
|
491
609
|
export interface RawConfigValidationResult {
|
|
492
610
|
/** True when the config parses against the schema (unknown keys do NOT make it false). */
|
|
493
611
|
ok: boolean;
|
|
494
|
-
/** Non-fatal advisories:
|
|
612
|
+
/** Non-fatal advisories: unknown top-level keys (likely typos). Deprecated shapes are hard errors, not warnings. */
|
|
495
613
|
warnings: string[];
|
|
496
614
|
/** Present only when `ok` is false: the path-scoped, multi-line validation message. */
|
|
497
615
|
errorMessage?: string;
|
|
@@ -499,11 +617,11 @@ export interface RawConfigValidationResult {
|
|
|
499
617
|
/**
|
|
500
618
|
* Validate a freshly-loaded raw config object against {@link rawGthConfigSchema} and
|
|
501
619
|
* report the outcome as data (a pure function — no `displayWarning`/`exit`). Mirrors the
|
|
502
|
-
* loader's policy:
|
|
503
|
-
*
|
|
504
|
-
* with a path-scoped message.
|
|
620
|
+
* loader's policy: a removed pre-2.0 shape (a top-level command key or a deprecated
|
|
621
|
+
* `*Provider*` name) is a HARD failure that names the fix, unknown top-level keys warn but
|
|
622
|
+
* do not fail, and a genuine type mismatch on a known field fails with a path-scoped message.
|
|
505
623
|
*
|
|
506
|
-
*
|
|
507
|
-
*
|
|
624
|
+
* Read-only: `findDeprecatedConfigIssues`, `findUnknownTopLevelKeys` and `safeParse` never
|
|
625
|
+
* mutate `raw`, so no defensive copy is needed.
|
|
508
626
|
*/
|
|
509
627
|
export declare function validateRawGthConfig(raw: Record<string, unknown>): RawConfigValidationResult;
|