@cat-factory/contracts 0.186.0 → 0.187.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/routes/validation-checks.d.ts +48 -0
- package/dist/routes/validation-checks.d.ts.map +1 -1
- package/dist/routes/validation-checks.js +13 -1
- package/dist/routes/validation-checks.js.map +1 -1
- package/dist/validation-checks.d.ts +38 -0
- package/dist/validation-checks.d.ts.map +1 -1
- package/dist/validation-checks.js +47 -0
- package/dist/validation-checks.js.map +1 -1
- package/package.json +1 -1
|
@@ -135,6 +135,54 @@ export declare const deleteServiceValidationConfigContract: {
|
|
|
135
135
|
readonly 204: typeof ContractNoBody;
|
|
136
136
|
};
|
|
137
137
|
};
|
|
138
|
+
/**
|
|
139
|
+
* Suggest checks for a service frame by reading its repo's root manifests (the inspector's
|
|
140
|
+
* "Detect" button). A pure READ — it inspects the repo's default branch and returns
|
|
141
|
+
* suggestions; the operator still saves them through the `put` above. GET, so it stays
|
|
142
|
+
* available to a reader of the panel and cannot be mistaken for a write.
|
|
143
|
+
*/
|
|
144
|
+
export declare const detectServiceValidationChecksContract: {
|
|
145
|
+
readonly method: "get";
|
|
146
|
+
readonly requestPathParamsSchema: v.ObjectSchema<{
|
|
147
|
+
blockId: v.StringSchema<undefined>;
|
|
148
|
+
}, undefined> & import("@toad-contracts/core").StandardObjectKeysV1<unknown, unknown>;
|
|
149
|
+
readonly pathResolver: ({ blockId }: {
|
|
150
|
+
blockId: string;
|
|
151
|
+
}) => string;
|
|
152
|
+
readonly responsesByStatusCode: {
|
|
153
|
+
readonly '4xx': v.ObjectSchema<{
|
|
154
|
+
readonly error: v.ObjectSchema<{
|
|
155
|
+
readonly code: v.StringSchema<undefined>;
|
|
156
|
+
readonly message: v.StringSchema<undefined>;
|
|
157
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
158
|
+
readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
159
|
+
readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
160
|
+
readonly message: v.StringSchema<undefined>;
|
|
161
|
+
}, undefined>, undefined>, undefined>;
|
|
162
|
+
}, undefined>;
|
|
163
|
+
}, undefined>;
|
|
164
|
+
readonly '5xx': v.ObjectSchema<{
|
|
165
|
+
readonly error: v.ObjectSchema<{
|
|
166
|
+
readonly code: v.StringSchema<undefined>;
|
|
167
|
+
readonly message: v.StringSchema<undefined>;
|
|
168
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
169
|
+
readonly issues: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
170
|
+
readonly path: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
171
|
+
readonly message: v.StringSchema<undefined>;
|
|
172
|
+
}, undefined>, undefined>, undefined>;
|
|
173
|
+
}, undefined>;
|
|
174
|
+
}, undefined>;
|
|
175
|
+
readonly 200: v.ObjectSchema<{
|
|
176
|
+
readonly status: v.PicklistSchema<["ok", "repo_unavailable", "failed"], undefined>;
|
|
177
|
+
readonly ecosystems: v.ArraySchema<v.PicklistSchema<readonly ["node", "python", "go", "rust", "maven", "gradle", "dotnet", "ruby", "php", "elixir", "make", "just", "task"], undefined>, undefined>;
|
|
178
|
+
readonly checks: v.ArraySchema<v.ObjectSchema<{
|
|
179
|
+
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
|
|
180
|
+
readonly command: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
181
|
+
}, undefined>, undefined>;
|
|
182
|
+
readonly truncated: v.BooleanSchema<undefined>;
|
|
183
|
+
}, undefined>;
|
|
184
|
+
};
|
|
185
|
+
};
|
|
138
186
|
/** Every configured service's validation checks in the workspace (the store's hydrate read). */
|
|
139
187
|
export declare const listServiceValidationConfigsContract: {
|
|
140
188
|
readonly method: "get";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-checks.d.ts","sourceRoot":"","sources":["../../src/routes/validation-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"validation-checks.d.ts","sourceRoot":"","sources":["../../src/routes/validation-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqB,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAiB5B,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAK7C,CAAA;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM7C,CAAA;AAEF,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhD,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKhD,CAAA;AAEF,gGAAgG;AAChG,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO/C,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ContractNoBody, defineApiContract } from '@toad-contracts/valibot';
|
|
2
2
|
import * as v from 'valibot';
|
|
3
|
-
import { serviceValidationConfigSchema, upsertServiceValidationConfigSchema, } from '../validation-checks.js';
|
|
3
|
+
import { detectedValidationChecksSchema, serviceValidationConfigSchema, upsertServiceValidationConfigSchema, } from '../validation-checks.js';
|
|
4
4
|
import { errorResponses, singleStringParam } from './_shared.js';
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
6
6
|
// Pre-PR validation-check route contracts. Mounted under `/workspaces/:workspaceId`,
|
|
@@ -28,6 +28,18 @@ export const deleteServiceValidationConfigContract = defineApiContract({
|
|
|
28
28
|
pathResolver: ({ blockId }) => `/services/${blockId}/validation-checks`,
|
|
29
29
|
responsesByStatusCode: { 204: ContractNoBody, ...errorResponses },
|
|
30
30
|
});
|
|
31
|
+
/**
|
|
32
|
+
* Suggest checks for a service frame by reading its repo's root manifests (the inspector's
|
|
33
|
+
* "Detect" button). A pure READ — it inspects the repo's default branch and returns
|
|
34
|
+
* suggestions; the operator still saves them through the `put` above. GET, so it stays
|
|
35
|
+
* available to a reader of the panel and cannot be mistaken for a write.
|
|
36
|
+
*/
|
|
37
|
+
export const detectServiceValidationChecksContract = defineApiContract({
|
|
38
|
+
method: 'get',
|
|
39
|
+
requestPathParamsSchema: blockIdParams,
|
|
40
|
+
pathResolver: ({ blockId }) => `/services/${blockId}/validation-checks/detect`,
|
|
41
|
+
responsesByStatusCode: { 200: detectedValidationChecksSchema, ...errorResponses },
|
|
42
|
+
});
|
|
31
43
|
/** Every configured service's validation checks in the workspace (the store's hydrate read). */
|
|
32
44
|
export const listServiceValidationConfigsContract = defineApiContract({
|
|
33
45
|
method: 'get',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-checks.js","sourceRoot":"","sources":["../../src/routes/validation-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EACL,6BAA6B,EAC7B,mCAAmC,GACpC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhE,8EAA8E;AAC9E,qFAAqF;AACrF,gFAAgF;AAChF,sEAAsE;AACtE,8BAA8B;AAC9B,8EAA8E;AAE9E,MAAM,aAAa,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;AAElD,MAAM,CAAC,MAAM,kCAAkC,GAAG,iBAAiB,CAAC;IAClE,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,OAAO,oBAAoB;IACvE,qBAAqB,EAAE,EAAE,GAAG,EAAE,6BAA6B,EAAE,GAAG,cAAc,EAAE;CACjF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,iBAAiB,CAAC;IAClE,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,OAAO,oBAAoB;IACvE,iBAAiB,EAAE,mCAAmC;IACtD,qBAAqB,EAAE,EAAE,GAAG,EAAE,6BAA6B,EAAE,GAAG,cAAc,EAAE;CACjF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAG,iBAAiB,CAAC;IACrE,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,OAAO,oBAAoB;IACvE,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,oCAAoC,GAAG,iBAAiB,CAAC;IACpE,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,oBAAoB;IACxC,qBAAqB,EAAE;QACrB,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;QAC3C,GAAG,cAAc;KAClB;CACF,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"validation-checks.js","sourceRoot":"","sources":["../../src/routes/validation-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,mCAAmC,GACpC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhE,8EAA8E;AAC9E,qFAAqF;AACrF,gFAAgF;AAChF,sEAAsE;AACtE,8BAA8B;AAC9B,8EAA8E;AAE9E,MAAM,aAAa,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAA;AAElD,MAAM,CAAC,MAAM,kCAAkC,GAAG,iBAAiB,CAAC;IAClE,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,OAAO,oBAAoB;IACvE,qBAAqB,EAAE,EAAE,GAAG,EAAE,6BAA6B,EAAE,GAAG,cAAc,EAAE;CACjF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAAG,iBAAiB,CAAC;IAClE,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,OAAO,oBAAoB;IACvE,iBAAiB,EAAE,mCAAmC;IACtD,qBAAqB,EAAE,EAAE,GAAG,EAAE,6BAA6B,EAAE,GAAG,cAAc,EAAE;CACjF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAG,iBAAiB,CAAC;IACrE,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,OAAO,oBAAoB;IACvE,qBAAqB,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;CAClE,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,iBAAiB,CAAC;IACrE,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,aAAa;IACtC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,aAAa,OAAO,2BAA2B;IAC9E,qBAAqB,EAAE,EAAE,GAAG,EAAE,8BAA8B,EAAE,GAAG,cAAc,EAAE;CAClF,CAAC,CAAA;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,oCAAoC,GAAG,iBAAiB,CAAC;IACpE,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,oBAAoB;IACxC,qBAAqB,EAAE;QACrB,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;QAC3C,GAAG,cAAc;KAClB;CACF,CAAC,CAAA"}
|
|
@@ -64,6 +64,44 @@ export declare const resolvedValidationChecksSchema: v.ObjectSchema<{
|
|
|
64
64
|
readonly maxAttempts: v.NumberSchema<undefined>;
|
|
65
65
|
}, undefined>;
|
|
66
66
|
export type ResolvedValidationChecks = v.InferOutput<typeof resolvedValidationChecksSchema>;
|
|
67
|
+
/**
|
|
68
|
+
* The ecosystems the pre-PR validation AUTODETECTOR recognises at a repo's root. The
|
|
69
|
+
* detection rules live in `@cat-factory/kernel` (`domain/validation-detectors.ts`); this
|
|
70
|
+
* picklist is the wire vocabulary, so the SPA can label each hit from its own catalog
|
|
71
|
+
* rather than rendering a backend-authored string.
|
|
72
|
+
*
|
|
73
|
+
* Adding a member here is what makes a new detector reachable: the kernel detector's
|
|
74
|
+
* `ecosystem` id is typed against this union, and the SPA's exhaustive label map fails to
|
|
75
|
+
* typecheck until the locale key exists.
|
|
76
|
+
*/
|
|
77
|
+
export declare const VALIDATION_ECOSYSTEMS: readonly ['node', 'python', 'go', 'rust', 'maven', 'gradle', 'dotnet', 'ruby', 'php', 'elixir', 'make', 'just', 'task'];
|
|
78
|
+
export declare const validationEcosystemSchema: v.PicklistSchema<readonly ["node", "python", "go", "rust", "maven", "gradle", "dotnet", "ruby", "php", "elixir", "make", "just", "task"], undefined>;
|
|
79
|
+
export type ValidationEcosystem = v.InferOutput<typeof validationEcosystemSchema>;
|
|
80
|
+
/**
|
|
81
|
+
* How a detection attempt ended. Stated rather than inferred from an empty result: "this
|
|
82
|
+
* service has no repo linked", "GitHub could not be read" and "we read the repo and
|
|
83
|
+
* recognised nothing" need three different things from the operator, and collapsing them
|
|
84
|
+
* into one empty list tells them to go looking in the wrong place.
|
|
85
|
+
*/
|
|
86
|
+
export declare const validationDetectionStatusSchema: v.PicklistSchema<["ok", "repo_unavailable", "failed"], undefined>;
|
|
87
|
+
export type ValidationDetectionStatus = v.InferOutput<typeof validationDetectionStatusSchema>;
|
|
88
|
+
/**
|
|
89
|
+
* What `GET .../validation-checks/detect` returns: the checks the repo's own manifests,
|
|
90
|
+
* scripts and tool configs imply. A SUGGESTION only — the endpoint writes nothing, so the
|
|
91
|
+
* operator reviews (and edits) the rows before saving them as the service's config.
|
|
92
|
+
*/
|
|
93
|
+
export declare const detectedValidationChecksSchema: v.ObjectSchema<{
|
|
94
|
+
readonly status: v.PicklistSchema<["ok", "repo_unavailable", "failed"], undefined>;
|
|
95
|
+
/** Every ecosystem that contributed a suggestion, in the detector's canonical order. */
|
|
96
|
+
readonly ecosystems: v.ArraySchema<v.PicklistSchema<readonly ["node", "python", "go", "rust", "maven", "gradle", "dotnet", "ruby", "php", "elixir", "make", "just", "task"], undefined>, undefined>;
|
|
97
|
+
readonly checks: v.ArraySchema<v.ObjectSchema<{
|
|
98
|
+
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 80, undefined>]>;
|
|
99
|
+
readonly command: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
100
|
+
}, undefined>, undefined>;
|
|
101
|
+
/** Whether {@link VALIDATION_MAX_CHECKS} dropped suggestions the detectors produced. */
|
|
102
|
+
readonly truncated: v.BooleanSchema<undefined>;
|
|
103
|
+
}, undefined>;
|
|
104
|
+
export type DetectedValidationChecks = v.InferOutput<typeof detectedValidationChecksSchema>;
|
|
67
105
|
/** One command's outcome in a validation attempt. */
|
|
68
106
|
export declare const validationCheckOutcomeSchema: v.ObjectSchema<{
|
|
69
107
|
readonly label: v.SchemaWithFallback<v.StringSchema<undefined>, "check">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-checks.d.ts","sourceRoot":"","sources":["../src/validation-checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA6B5B,wEAAwE;AACxE,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAChD,eAAO,MAAM,+BAA+B,KAAK,CAAA;AASjD,mGAAmG;AACnG,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,kFAAkF;AAClF,eAAO,MAAM,mCAAmC;;;;;IAG5C,8EAA8E;;;;;;;;;;;;;;gDAWjF,CAAA;AACD,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,WAAW,CAC5D,OAAO,mCAAmC,CAC3C,CAAA;AAED,sEAAsE;AACtE,eAAO,MAAM,6BAA6B;IACxC,sDAAsD;;;;;;;aAItD,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;aAGzC,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAI3F,qDAAqD;AACrD,eAAO,MAAM,4BAA4B;;;IAGvC,yFAAyF;;;IAGzF,6EAA6E;;IAE7E,qCAAqC;;IAErC,mEAAmE;;aAEnE,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB;IACjC,2FAA2F;;IAE3F,wFAAwF;;IAExF,0EAA0E;;IAE1E,uEAAuE;;;;QA3BvE,yFAAyF;;;QAGzF,6EAA6E;;QAE7E,qCAAqC;;QAErC,mEAAmE;;;IAsBnE,4CAA4C;;aAE5C,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAQ3E"}
|
|
1
|
+
{"version":3,"file":"validation-checks.d.ts","sourceRoot":"","sources":["../src/validation-checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AA6B5B,wEAAwE;AACxE,eAAO,MAAM,qBAAqB;;;aAGhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAA;AAChD,eAAO,MAAM,+BAA+B,KAAK,CAAA;AASjD,mGAAmG;AACnG,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,kFAAkF;AAClF,eAAO,MAAM,mCAAmC;;;;;IAG5C,8EAA8E;;;;;;;;;;;;;;gDAWjF,CAAA;AACD,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,WAAW,CAC5D,OAAO,mCAAmC,CAC3C,CAAA;AAED,sEAAsE;AACtE,eAAO,MAAM,6BAA6B;IACxC,sDAAsD;;;;;;;aAItD,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEzF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;aAGzC,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAI3F;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,YAChC,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,MAAM,CACE,CAAA;AACV,eAAO,MAAM,yBAAyB,sJAAoC,CAAA;AAC1E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,mEAAmD,CAAA;AAC/F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAE7F;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;IAEzC,wFAAwF;;;;;;IAGxF,wFAAwF;;aAExF,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAI3F,qDAAqD;AACrD,eAAO,MAAM,4BAA4B;;;IAGvC,yFAAyF;;;IAGzF,6EAA6E;;IAE7E,qCAAqC;;IAErC,mEAAmE;;aAEnE,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB;IACjC,2FAA2F;;IAE3F,wFAAwF;;IAExF,0EAA0E;;IAE1E,uEAAuE;;;;QA3BvE,yFAAyF;;;QAGzF,6EAA6E;;QAE7E,qCAAqC;;QAErC,mEAAmE;;;IAsBnE,4CAA4C;;aAE5C,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAQ3E"}
|
|
@@ -64,6 +64,53 @@ export const resolvedValidationChecksSchema = v.object({
|
|
|
64
64
|
checks: v.array(validationCheckSchema),
|
|
65
65
|
maxAttempts: v.number(),
|
|
66
66
|
});
|
|
67
|
+
// ---- Autodetection --------------------------------------------------------
|
|
68
|
+
/**
|
|
69
|
+
* The ecosystems the pre-PR validation AUTODETECTOR recognises at a repo's root. The
|
|
70
|
+
* detection rules live in `@cat-factory/kernel` (`domain/validation-detectors.ts`); this
|
|
71
|
+
* picklist is the wire vocabulary, so the SPA can label each hit from its own catalog
|
|
72
|
+
* rather than rendering a backend-authored string.
|
|
73
|
+
*
|
|
74
|
+
* Adding a member here is what makes a new detector reachable: the kernel detector's
|
|
75
|
+
* `ecosystem` id is typed against this union, and the SPA's exhaustive label map fails to
|
|
76
|
+
* typecheck until the locale key exists.
|
|
77
|
+
*/
|
|
78
|
+
export const VALIDATION_ECOSYSTEMS = [
|
|
79
|
+
'node',
|
|
80
|
+
'python',
|
|
81
|
+
'go',
|
|
82
|
+
'rust',
|
|
83
|
+
'maven',
|
|
84
|
+
'gradle',
|
|
85
|
+
'dotnet',
|
|
86
|
+
'ruby',
|
|
87
|
+
'php',
|
|
88
|
+
'elixir',
|
|
89
|
+
'make',
|
|
90
|
+
'just',
|
|
91
|
+
'task',
|
|
92
|
+
];
|
|
93
|
+
export const validationEcosystemSchema = v.picklist(VALIDATION_ECOSYSTEMS);
|
|
94
|
+
/**
|
|
95
|
+
* How a detection attempt ended. Stated rather than inferred from an empty result: "this
|
|
96
|
+
* service has no repo linked", "GitHub could not be read" and "we read the repo and
|
|
97
|
+
* recognised nothing" need three different things from the operator, and collapsing them
|
|
98
|
+
* into one empty list tells them to go looking in the wrong place.
|
|
99
|
+
*/
|
|
100
|
+
export const validationDetectionStatusSchema = v.picklist(['ok', 'repo_unavailable', 'failed']);
|
|
101
|
+
/**
|
|
102
|
+
* What `GET .../validation-checks/detect` returns: the checks the repo's own manifests,
|
|
103
|
+
* scripts and tool configs imply. A SUGGESTION only — the endpoint writes nothing, so the
|
|
104
|
+
* operator reviews (and edits) the rows before saving them as the service's config.
|
|
105
|
+
*/
|
|
106
|
+
export const detectedValidationChecksSchema = v.object({
|
|
107
|
+
status: validationDetectionStatusSchema,
|
|
108
|
+
/** Every ecosystem that contributed a suggestion, in the detector's canonical order. */
|
|
109
|
+
ecosystems: v.array(validationEcosystemSchema),
|
|
110
|
+
checks: v.array(validationCheckSchema),
|
|
111
|
+
/** Whether {@link VALIDATION_MAX_CHECKS} dropped suggestions the detectors produced. */
|
|
112
|
+
truncated: v.boolean(),
|
|
113
|
+
});
|
|
67
114
|
// ---- The harness-produced report ------------------------------------------
|
|
68
115
|
/** One command's outcome in a validation attempt. */
|
|
69
116
|
export const validationCheckOutcomeSchema = v.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation-checks.js","sourceRoot":"","sources":["../src/validation-checks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation-checks.js","sourceRoot":"","sources":["../src/validation-checks.ts"],"names":[],"mappings":"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"}
|