@cat-factory/contracts 0.166.0 → 0.168.0
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/execution.d.ts +78 -0
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +13 -0
- package/dist/execution.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/merge.d.ts +289 -1
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +60 -0
- package/dist/merge.js.map +1 -1
- package/dist/mergeTrackRecord.d.ts +183 -0
- package/dist/mergeTrackRecord.d.ts.map +1 -0
- package/dist/mergeTrackRecord.js +251 -0
- package/dist/mergeTrackRecord.js.map +1 -0
- package/dist/notification-webhooks.d.ts +5 -3
- package/dist/notification-webhooks.d.ts.map +1 -1
- package/dist/notifications.d.ts +42 -3
- package/dist/notifications.d.ts.map +1 -1
- package/dist/notifications.js +33 -1
- package/dist/notifications.js.map +1 -1
- package/dist/public-api.d.ts +3 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/reproduction.d.ts +163 -0
- package/dist/reproduction.d.ts.map +1 -0
- package/dist/reproduction.js +166 -0
- package/dist/reproduction.js.map +1 -0
- package/dist/routes/agent-runs.d.ts +56 -0
- package/dist/routes/agent-runs.d.ts.map +1 -1
- package/dist/routes/execution.d.ts +227 -1
- package/dist/routes/execution.d.ts.map +1 -1
- package/dist/routes/execution.js +5 -1
- package/dist/routes/execution.js.map +1 -1
- package/dist/routes/human-review.d.ts +28 -0
- package/dist/routes/human-review.d.ts.map +1 -1
- package/dist/routes/human-test.d.ts +140 -0
- package/dist/routes/human-test.d.ts.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/merge.d.ts +354 -0
- package/dist/routes/merge.d.ts.map +1 -1
- package/dist/routes/mergeTrackRecord.d.ts +113 -0
- package/dist/routes/mergeTrackRecord.d.ts.map +1 -0
- package/dist/routes/mergeTrackRecord.js +33 -0
- package/dist/routes/mergeTrackRecord.js.map +1 -0
- package/dist/routes/notification-webhooks.d.ts +3 -3
- package/dist/routes/notifications.d.ts +12 -4
- package/dist/routes/notifications.d.ts.map +1 -1
- package/dist/routes/notifications.js +4 -2
- package/dist/routes/notifications.js.map +1 -1
- package/dist/routes/public-api.d.ts +9 -3
- package/dist/routes/public-api.d.ts.map +1 -1
- package/dist/routes/slack.d.ts +3 -3
- package/dist/routes/visual-confirm.d.ts +84 -0
- package/dist/routes/visual-confirm.d.ts.map +1 -1
- package/dist/routes/workspaces.d.ts +180 -2
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/slack.d.ts +2 -2
- package/dist/snapshot.d.ts +90 -1
- package/dist/snapshot.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/merge.d.ts
CHANGED
|
@@ -13,6 +13,84 @@ export declare const requirementConcernLevelSchema: v.PicklistSchema<["none", "l
|
|
|
13
13
|
export type RequirementConcernLevel = v.InferOutput<typeof requirementConcernLevelSchema>;
|
|
14
14
|
/** Rank of a {@link RequirementConcernLevel} for "at or below" comparisons. */
|
|
15
15
|
export declare const REQUIREMENT_CONCERN_RANK: Record<RequirementConcernLevel, number>;
|
|
16
|
+
/**
|
|
17
|
+
* What a preset does with a pull request of a given change class:
|
|
18
|
+
*
|
|
19
|
+
* - `thresholds` — compare the merger's scores against this preset's ceilings (the default,
|
|
20
|
+
* and what an ABSENT entry means, so `{}` behaves exactly like no rules at all).
|
|
21
|
+
* - `always` — auto-merge regardless of the scores.
|
|
22
|
+
* - `never` — always route to a human, regardless of the scores.
|
|
23
|
+
*/
|
|
24
|
+
export declare const mergeClassRuleSchema: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
25
|
+
export type MergeClassRule = v.InferOutput<typeof mergeClassRuleSchema>;
|
|
26
|
+
/**
|
|
27
|
+
* A preset's per-class rules: a PARTIAL map from change class to its rule. An absent class
|
|
28
|
+
* means `thresholds`, so an empty object is the "behave exactly as before" identity.
|
|
29
|
+
*
|
|
30
|
+
* `unknown` is deliberately NOT a member: an unclassifiable diff (no VCS client wired, a
|
|
31
|
+
* transient provider outage) must fall back to the score thresholds rather than silently
|
|
32
|
+
* adopt a widened policy. See `RULEABLE_CHANGE_CLASSES`.
|
|
33
|
+
*/
|
|
34
|
+
export declare const mergeClassRulesSchema: Omit<v.StrictObjectSchema<{
|
|
35
|
+
config: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
36
|
+
dependency: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
37
|
+
docs: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
38
|
+
schema: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
39
|
+
source: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
40
|
+
test: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
41
|
+
}, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
|
|
42
|
+
readonly entries: {
|
|
43
|
+
config: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
44
|
+
dependency: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
45
|
+
docs: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
46
|
+
schema: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
47
|
+
source: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
48
|
+
test: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
49
|
+
};
|
|
50
|
+
readonly "~standard": v.StandardProps<{
|
|
51
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
52
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
53
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
54
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
55
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
56
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
59
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
60
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
61
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
62
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
63
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
66
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
67
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
68
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
69
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
70
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
71
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
72
|
+
}, v.PicklistIssue | v.StrictObjectIssue>;
|
|
73
|
+
readonly "~types"?: {
|
|
74
|
+
readonly input: {
|
|
75
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
76
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
77
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
78
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
79
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
80
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
81
|
+
};
|
|
82
|
+
readonly output: {
|
|
83
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
84
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
85
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
86
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
87
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
88
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
89
|
+
};
|
|
90
|
+
readonly issue: v.PicklistIssue | v.StrictObjectIssue;
|
|
91
|
+
} | undefined;
|
|
92
|
+
};
|
|
93
|
+
export type MergeClassRules = v.InferOutput<typeof mergeClassRulesSchema>;
|
|
16
94
|
export declare const mergeAssessmentSchema: v.ObjectSchema<{
|
|
17
95
|
/** How intricate the change is (size, coupling, subtlety). */
|
|
18
96
|
readonly complexity: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
|
|
@@ -106,6 +184,70 @@ export declare const riskPolicySchema: v.ObjectSchema<{
|
|
|
106
184
|
readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
107
185
|
readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
|
|
108
186
|
}, undefined>, undefined>, undefined>;
|
|
187
|
+
/**
|
|
188
|
+
* Per-change-class auto-merge rules ({@link mergeClassRulesSchema}). An absent class — and
|
|
189
|
+
* therefore an empty object — means "use the score ceilings above", so `{}` is the identity.
|
|
190
|
+
* A rule NEVER overrides `autoMergeEnabled: false`: that master switch wins first.
|
|
191
|
+
*/
|
|
192
|
+
readonly classRules: Omit<v.StrictObjectSchema<{
|
|
193
|
+
config: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
194
|
+
dependency: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
195
|
+
docs: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
196
|
+
schema: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
197
|
+
source: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
198
|
+
test: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
199
|
+
}, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
|
|
200
|
+
readonly entries: {
|
|
201
|
+
config: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
202
|
+
dependency: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
203
|
+
docs: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
204
|
+
schema: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
205
|
+
source: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
206
|
+
test: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
207
|
+
};
|
|
208
|
+
readonly "~standard": v.StandardProps<{
|
|
209
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
210
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
211
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
212
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
213
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
214
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
215
|
+
}, {
|
|
216
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
217
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
218
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
219
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
220
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
221
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
222
|
+
}>;
|
|
223
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
224
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
225
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
226
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
227
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
228
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
229
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
230
|
+
}, v.PicklistIssue | v.StrictObjectIssue>;
|
|
231
|
+
readonly "~types"?: {
|
|
232
|
+
readonly input: {
|
|
233
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
234
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
235
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
236
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
237
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
238
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
239
|
+
};
|
|
240
|
+
readonly output: {
|
|
241
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
242
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
243
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
244
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
245
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
246
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
247
|
+
};
|
|
248
|
+
readonly issue: v.PicklistIssue | v.StrictObjectIssue;
|
|
249
|
+
} | undefined;
|
|
250
|
+
};
|
|
109
251
|
/** The workspace's fallback preset, used by tasks that pick none. Exactly one is true. */
|
|
110
252
|
readonly isDefault: v.BooleanSchema<undefined>;
|
|
111
253
|
/**
|
|
@@ -141,6 +283,66 @@ export declare const createRiskPolicySchema: v.ObjectSchema<{
|
|
|
141
283
|
readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
142
284
|
readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
|
|
143
285
|
}, undefined>, undefined>, undefined>;
|
|
286
|
+
/** Per-change-class auto-merge rules; absent ⇒ every class uses the score ceilings. */
|
|
287
|
+
readonly classRules: v.OptionalSchema<Omit<v.StrictObjectSchema<{
|
|
288
|
+
config: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
289
|
+
dependency: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
290
|
+
docs: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
291
|
+
schema: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
292
|
+
source: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
293
|
+
test: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
294
|
+
}, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
|
|
295
|
+
readonly entries: {
|
|
296
|
+
config: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
297
|
+
dependency: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
298
|
+
docs: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
299
|
+
schema: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
300
|
+
source: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
301
|
+
test: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
302
|
+
};
|
|
303
|
+
readonly "~standard": v.StandardProps<{
|
|
304
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
305
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
306
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
307
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
308
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
309
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
310
|
+
}, {
|
|
311
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
312
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
313
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
314
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
315
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
316
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
317
|
+
}>;
|
|
318
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
319
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
320
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
321
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
322
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
323
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
324
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
325
|
+
}, v.PicklistIssue | v.StrictObjectIssue>;
|
|
326
|
+
readonly "~types"?: {
|
|
327
|
+
readonly input: {
|
|
328
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
329
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
330
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
331
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
332
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
333
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
334
|
+
};
|
|
335
|
+
readonly output: {
|
|
336
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
337
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
338
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
339
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
340
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
341
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
342
|
+
};
|
|
343
|
+
readonly issue: v.PicklistIssue | v.StrictObjectIssue;
|
|
344
|
+
} | undefined;
|
|
345
|
+
}, {}>;
|
|
144
346
|
/** Make this the workspace default (demotes the previous default). */
|
|
145
347
|
readonly isDefault: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
|
|
146
348
|
}, undefined>;
|
|
@@ -166,6 +368,66 @@ export declare const updateRiskPolicySchema: v.ObjectSchema<{
|
|
|
166
368
|
readonly minImpact: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>, undefined>;
|
|
167
369
|
readonly onMissingEstimate: v.OptionalSchema<v.PicklistSchema<["run", "skip"], undefined>, "run">;
|
|
168
370
|
}, undefined>, undefined>, undefined>;
|
|
371
|
+
/** Replaces the whole rule map (not merged), so clearing a class is a plain omission. */
|
|
372
|
+
readonly classRules: v.OptionalSchema<Omit<v.StrictObjectSchema<{
|
|
373
|
+
config: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
374
|
+
dependency: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
375
|
+
docs: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
376
|
+
schema: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
377
|
+
source: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
378
|
+
test: v.PicklistSchema<["thresholds", "always", "never"], undefined>;
|
|
379
|
+
}, undefined>, "entries" | "~run" | "~standard" | "~types"> & {
|
|
380
|
+
readonly entries: {
|
|
381
|
+
config: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
382
|
+
dependency: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
383
|
+
docs: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
384
|
+
schema: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
385
|
+
source: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
386
|
+
test: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
387
|
+
};
|
|
388
|
+
readonly "~standard": v.StandardProps<{
|
|
389
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
390
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
391
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
392
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
393
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
394
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
395
|
+
}, {
|
|
396
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
397
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
398
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
399
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
400
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
401
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
402
|
+
}>;
|
|
403
|
+
readonly "~run": (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
404
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
405
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
406
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
407
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
408
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
409
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
410
|
+
}, v.PicklistIssue | v.StrictObjectIssue>;
|
|
411
|
+
readonly "~types"?: {
|
|
412
|
+
readonly input: {
|
|
413
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
414
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
415
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
416
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
417
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
418
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
419
|
+
};
|
|
420
|
+
readonly output: {
|
|
421
|
+
config?: "always" | "never" | "thresholds" | undefined;
|
|
422
|
+
dependency?: "always" | "never" | "thresholds" | undefined;
|
|
423
|
+
docs?: "always" | "never" | "thresholds" | undefined;
|
|
424
|
+
schema?: "always" | "never" | "thresholds" | undefined;
|
|
425
|
+
source?: "always" | "never" | "thresholds" | undefined;
|
|
426
|
+
test?: "always" | "never" | "thresholds" | undefined;
|
|
427
|
+
};
|
|
428
|
+
readonly issue: v.PicklistIssue | v.StrictObjectIssue;
|
|
429
|
+
} | undefined;
|
|
430
|
+
}, undefined>;
|
|
169
431
|
readonly isDefault: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
170
432
|
}, undefined>;
|
|
171
433
|
export type UpdateRiskPolicyInput = v.InferOutput<typeof updateRiskPolicySchema>;
|
|
@@ -182,6 +444,13 @@ export declare const mergeDecisionThresholdsSchema: v.ObjectSchema<{
|
|
|
182
444
|
readonly maxRisk: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
|
|
183
445
|
readonly maxImpact: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
|
|
184
446
|
readonly autoMergeEnabled: v.BooleanSchema<undefined>;
|
|
447
|
+
/**
|
|
448
|
+
* The rule the preset carried for the run's resolved change class, when one applied —
|
|
449
|
+
* so the decision banner can say "auto-merged because this preset always auto-merges
|
|
450
|
+
* dependency bumps" rather than implying the scores did it. Absent when the class was
|
|
451
|
+
* `unknown` (rules never match it) or the preset left the class on `thresholds`.
|
|
452
|
+
*/
|
|
453
|
+
readonly classRule: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
185
454
|
}, undefined>;
|
|
186
455
|
export type MergeDecisionThresholds = v.InferOutput<typeof mergeDecisionThresholdsSchema>;
|
|
187
456
|
export declare const mergeDecisionSchema: v.ObjectSchema<{
|
|
@@ -200,8 +469,13 @@ export declare const mergeDecisionSchema: v.ObjectSchema<{
|
|
|
200
469
|
* - `merge_partial`: review; a MULTI-REPO task auto-merged some of its PRs but an
|
|
201
470
|
* intermediate merge failed (cross-repo merges are non-atomic), so the block is left
|
|
202
471
|
* blocked with a notification enumerating the merged vs unmerged repos.
|
|
472
|
+
* - `class_auto_merge`: auto-merged because the preset's rule for the run's change class
|
|
473
|
+
* is `always` — the scores (and the rationale-credibility backstop) were bypassed by an
|
|
474
|
+
* explicit operator policy keyed on the DETERMINISTIC backend classification.
|
|
475
|
+
* - `class_requires_review`: review; the preset's rule for the change class is `never`,
|
|
476
|
+
* regardless of how low the scores were.
|
|
203
477
|
*/
|
|
204
|
-
readonly reason: v.PicklistSchema<["within_thresholds", "exceeded_thresholds", "auto_merge_disabled", "no_rationale", "no_assessment", "merge_failed", "merge_partial"], undefined>;
|
|
478
|
+
readonly reason: v.PicklistSchema<["within_thresholds", "exceeded_thresholds", "auto_merge_disabled", "no_rationale", "no_assessment", "merge_failed", "merge_partial", "class_auto_merge", "class_requires_review"], undefined>;
|
|
205
479
|
/** The merger's assessment (absent only when it produced no parseable one). */
|
|
206
480
|
readonly assessment: v.OptionalSchema<v.ObjectSchema<{
|
|
207
481
|
/** How intricate the change is (size, coupling, subtlety). */
|
|
@@ -220,9 +494,23 @@ export declare const mergeDecisionSchema: v.ObjectSchema<{
|
|
|
220
494
|
readonly maxRisk: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
|
|
221
495
|
readonly maxImpact: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 1, undefined>]>;
|
|
222
496
|
readonly autoMergeEnabled: v.BooleanSchema<undefined>;
|
|
497
|
+
/**
|
|
498
|
+
* The rule the preset carried for the run's resolved change class, when one applied —
|
|
499
|
+
* so the decision banner can say "auto-merged because this preset always auto-merges
|
|
500
|
+
* dependency bumps" rather than implying the scores did it. Absent when the class was
|
|
501
|
+
* `unknown` (rules never match it) or the preset left the class on `thresholds`.
|
|
502
|
+
*/
|
|
503
|
+
readonly classRule: v.OptionalSchema<v.PicklistSchema<["thresholds", "always", "never"], undefined>, undefined>;
|
|
223
504
|
}, undefined>;
|
|
224
505
|
/** The axes that exceeded their ceiling (empty unless `reason` is `exceeded_thresholds`). */
|
|
225
506
|
readonly exceededAxes: v.ArraySchema<v.PicklistSchema<["complexity", "risk", "impact"], undefined>, undefined>;
|
|
507
|
+
/**
|
|
508
|
+
* The run's deterministic change class, when classification resolved one. Recorded on the
|
|
509
|
+
* step so the SPA can show WHAT KIND of change the decision was made about (and, with the
|
|
510
|
+
* class's rollup, how that class has historically fared). Absent ⇒ classification did not
|
|
511
|
+
* run (no VCS client wired) — the same state `unknown` denotes on a track record.
|
|
512
|
+
*/
|
|
513
|
+
readonly changeClass: v.OptionalSchema<v.PicklistSchema<["docs", "test", "dependency", "config", "source", "schema", "unknown"], undefined>, undefined>;
|
|
226
514
|
}, undefined>;
|
|
227
515
|
export type MergeDecision = v.InferOutput<typeof mergeDecisionSchema>;
|
|
228
516
|
//# sourceMappingURL=merge.d.ts.map
|
package/dist/merge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"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"}
|
package/dist/merge.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as v from 'valibot';
|
|
2
2
|
import { stepGatingSchema } from './consensus.js';
|
|
3
|
+
import { changeClassSchema, RULEABLE_CHANGE_CLASSES } from './mergeTrackRecord.js';
|
|
3
4
|
// ---------------------------------------------------------------------------
|
|
4
5
|
// Merge-policy wire contracts. After a pipeline's implementation work is done
|
|
5
6
|
// and CI is green, a `merger` agent assesses the pull request along three axes —
|
|
@@ -32,6 +33,34 @@ export const REQUIREMENT_CONCERN_RANK = {
|
|
|
32
33
|
medium: 2,
|
|
33
34
|
high: 3,
|
|
34
35
|
};
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// Per-CLASS auto-merge rules. The score ceilings below apply uniformly to every
|
|
38
|
+
// change, which leaves a workspace unable to express "auto-merge dependency bumps
|
|
39
|
+
// and docs, always review schema changes". A preset therefore also carries an
|
|
40
|
+
// optional rule per {@link ChangeClass}, resolved against the run's deterministic,
|
|
41
|
+
// path-derived classification. See `docs/initiatives/merge-track-record.md`.
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
/**
|
|
44
|
+
* What a preset does with a pull request of a given change class:
|
|
45
|
+
*
|
|
46
|
+
* - `thresholds` — compare the merger's scores against this preset's ceilings (the default,
|
|
47
|
+
* and what an ABSENT entry means, so `{}` behaves exactly like no rules at all).
|
|
48
|
+
* - `always` — auto-merge regardless of the scores.
|
|
49
|
+
* - `never` — always route to a human, regardless of the scores.
|
|
50
|
+
*/
|
|
51
|
+
export const mergeClassRuleSchema = v.picklist(['thresholds', 'always', 'never']);
|
|
52
|
+
/**
|
|
53
|
+
* A preset's per-class rules: a PARTIAL map from change class to its rule. An absent class
|
|
54
|
+
* means `thresholds`, so an empty object is the "behave exactly as before" identity.
|
|
55
|
+
*
|
|
56
|
+
* `unknown` is deliberately NOT a member: an unclassifiable diff (no VCS client wired, a
|
|
57
|
+
* transient provider outage) must fall back to the score thresholds rather than silently
|
|
58
|
+
* adopt a widened policy. See `RULEABLE_CHANGE_CLASSES`.
|
|
59
|
+
*/
|
|
60
|
+
export const mergeClassRulesSchema = v.partial(
|
|
61
|
+
// STRICT: an unknown key (notably `unknown`, which no rule may ever match) is a 400 rather than
|
|
62
|
+
// being silently stripped. A caller who thinks they authored a rule must not be told it worked.
|
|
63
|
+
v.strictObject(Object.fromEntries(RULEABLE_CHANGE_CLASSES.map((c) => [c, mergeClassRuleSchema]))));
|
|
35
64
|
export const mergeAssessmentSchema = v.object({
|
|
36
65
|
/** How intricate the change is (size, coupling, subtlety). */
|
|
37
66
|
complexity: v.pipe(v.number(), v.minValue(0), v.maxValue(1)),
|
|
@@ -118,6 +147,12 @@ export const riskPolicySchema = v.object({
|
|
|
118
147
|
* built-in presets.
|
|
119
148
|
*/
|
|
120
149
|
forkDecision: v.optional(v.nullable(stepGatingSchema)),
|
|
150
|
+
/**
|
|
151
|
+
* Per-change-class auto-merge rules ({@link mergeClassRulesSchema}). An absent class — and
|
|
152
|
+
* therefore an empty object — means "use the score ceilings above", so `{}` is the identity.
|
|
153
|
+
* A rule NEVER overrides `autoMergeEnabled: false`: that master switch wins first.
|
|
154
|
+
*/
|
|
155
|
+
classRules: mergeClassRulesSchema,
|
|
121
156
|
/** The workspace's fallback preset, used by tasks that pick none. Exactly one is true. */
|
|
122
157
|
isDefault: v.boolean(),
|
|
123
158
|
/**
|
|
@@ -154,6 +189,8 @@ export const createRiskPolicySchema = v.object({
|
|
|
154
189
|
autoMergeEnabled: v.optional(v.boolean(), true),
|
|
155
190
|
/** Estimate gating for the implementation-fork decision phase; absent ⇒ off in `auto` mode. */
|
|
156
191
|
forkDecision: v.optional(v.nullable(stepGatingSchema)),
|
|
192
|
+
/** Per-change-class auto-merge rules; absent ⇒ every class uses the score ceilings. */
|
|
193
|
+
classRules: v.optional(mergeClassRulesSchema, {}),
|
|
157
194
|
/** Make this the workspace default (demotes the previous default). */
|
|
158
195
|
isDefault: v.optional(v.boolean(), false),
|
|
159
196
|
});
|
|
@@ -172,6 +209,8 @@ export const updateRiskPolicySchema = v.object({
|
|
|
172
209
|
humanReviewGraceMinutes: v.optional(graceMinutesSchema),
|
|
173
210
|
autoMergeEnabled: v.optional(v.boolean()),
|
|
174
211
|
forkDecision: v.optional(v.nullable(stepGatingSchema)),
|
|
212
|
+
/** Replaces the whole rule map (not merged), so clearing a class is a plain omission. */
|
|
213
|
+
classRules: v.optional(mergeClassRulesSchema),
|
|
175
214
|
isDefault: v.optional(v.boolean()),
|
|
176
215
|
});
|
|
177
216
|
/** Parse-or-throw an assessment payload an agent returned (the engine validates it). */
|
|
@@ -195,6 +234,13 @@ export const mergeDecisionThresholdsSchema = v.object({
|
|
|
195
234
|
maxRisk: v.pipe(v.number(), v.minValue(0), v.maxValue(1)),
|
|
196
235
|
maxImpact: v.pipe(v.number(), v.minValue(0), v.maxValue(1)),
|
|
197
236
|
autoMergeEnabled: v.boolean(),
|
|
237
|
+
/**
|
|
238
|
+
* The rule the preset carried for the run's resolved change class, when one applied —
|
|
239
|
+
* so the decision banner can say "auto-merged because this preset always auto-merges
|
|
240
|
+
* dependency bumps" rather than implying the scores did it. Absent when the class was
|
|
241
|
+
* `unknown` (rules never match it) or the preset left the class on `thresholds`.
|
|
242
|
+
*/
|
|
243
|
+
classRule: v.optional(mergeClassRuleSchema),
|
|
198
244
|
});
|
|
199
245
|
export const mergeDecisionSchema = v.object({
|
|
200
246
|
/** What the engine did: merged the PR for real, or left it open for a human. */
|
|
@@ -212,6 +258,11 @@ export const mergeDecisionSchema = v.object({
|
|
|
212
258
|
* - `merge_partial`: review; a MULTI-REPO task auto-merged some of its PRs but an
|
|
213
259
|
* intermediate merge failed (cross-repo merges are non-atomic), so the block is left
|
|
214
260
|
* blocked with a notification enumerating the merged vs unmerged repos.
|
|
261
|
+
* - `class_auto_merge`: auto-merged because the preset's rule for the run's change class
|
|
262
|
+
* is `always` — the scores (and the rationale-credibility backstop) were bypassed by an
|
|
263
|
+
* explicit operator policy keyed on the DETERMINISTIC backend classification.
|
|
264
|
+
* - `class_requires_review`: review; the preset's rule for the change class is `never`,
|
|
265
|
+
* regardless of how low the scores were.
|
|
215
266
|
*/
|
|
216
267
|
reason: v.picklist([
|
|
217
268
|
'within_thresholds',
|
|
@@ -221,11 +272,20 @@ export const mergeDecisionSchema = v.object({
|
|
|
221
272
|
'no_assessment',
|
|
222
273
|
'merge_failed',
|
|
223
274
|
'merge_partial',
|
|
275
|
+
'class_auto_merge',
|
|
276
|
+
'class_requires_review',
|
|
224
277
|
]),
|
|
225
278
|
/** The merger's assessment (absent only when it produced no parseable one). */
|
|
226
279
|
assessment: v.optional(mergeAssessmentSchema),
|
|
227
280
|
thresholds: mergeDecisionThresholdsSchema,
|
|
228
281
|
/** The axes that exceeded their ceiling (empty unless `reason` is `exceeded_thresholds`). */
|
|
229
282
|
exceededAxes: v.array(mergeAxisSchema),
|
|
283
|
+
/**
|
|
284
|
+
* The run's deterministic change class, when classification resolved one. Recorded on the
|
|
285
|
+
* step so the SPA can show WHAT KIND of change the decision was made about (and, with the
|
|
286
|
+
* class's rollup, how that class has historically fared). Absent ⇒ classification did not
|
|
287
|
+
* run (no VCS client wired) — the same state `unknown` denotes on a track record.
|
|
288
|
+
*/
|
|
289
|
+
changeClass: v.optional(changeClassSchema),
|
|
230
290
|
});
|
|
231
291
|
//# sourceMappingURL=merge.js.map
|
package/dist/merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"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"}
|