@qa-ai-stlc/schemas 0.0.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.
Files changed (73) hide show
  1. package/README.md +12 -0
  2. package/dist/api-surface.d.ts +61 -0
  3. package/dist/api-surface.d.ts.map +1 -0
  4. package/dist/api-surface.js +22 -0
  5. package/dist/api-surface.js.map +1 -0
  6. package/dist/approval-ledger.d.ts +23 -0
  7. package/dist/approval-ledger.d.ts.map +1 -0
  8. package/dist/approval-ledger.js +22 -0
  9. package/dist/approval-ledger.js.map +1 -0
  10. package/dist/artifacts.d.ts +285 -0
  11. package/dist/artifacts.d.ts.map +1 -0
  12. package/dist/artifacts.js +30 -0
  13. package/dist/artifacts.js.map +1 -0
  14. package/dist/config.d.ts +179 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +89 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/defect.d.ts +72 -0
  19. package/dist/defect.d.ts.map +1 -0
  20. package/dist/defect.js +46 -0
  21. package/dist/defect.js.map +1 -0
  22. package/dist/evidence.d.ts +48 -0
  23. package/dist/evidence.d.ts.map +1 -0
  24. package/dist/evidence.js +40 -0
  25. package/dist/evidence.js.map +1 -0
  26. package/dist/index.d.ts +15 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +17 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/json-schema/api-surface.json +67 -0
  31. package/dist/json-schema/approval-ledger.json +56 -0
  32. package/dist/json-schema/config.json +261 -0
  33. package/dist/json-schema/defect-draft.json +120 -0
  34. package/dist/json-schema/evidence.json +61 -0
  35. package/dist/json-schema/manifest.json +42 -0
  36. package/dist/json-schema/rca.json +84 -0
  37. package/dist/json-schema/run-result.json +87 -0
  38. package/dist/json-schema/scope.json +91 -0
  39. package/dist/json-schema/selector-registry.json +107 -0
  40. package/dist/json-schema/test-case.json +83 -0
  41. package/dist/manifest.d.ts +15 -0
  42. package/dist/manifest.d.ts.map +1 -0
  43. package/dist/manifest.js +19 -0
  44. package/dist/manifest.js.map +1 -0
  45. package/dist/primitives.d.ts +10 -0
  46. package/dist/primitives.d.ts.map +1 -0
  47. package/dist/primitives.js +21 -0
  48. package/dist/primitives.js.map +1 -0
  49. package/dist/rca.d.ts +41 -0
  50. package/dist/rca.d.ts.map +1 -0
  51. package/dist/rca.js +26 -0
  52. package/dist/rca.js.map +1 -0
  53. package/dist/run-result.d.ts +43 -0
  54. package/dist/run-result.d.ts.map +1 -0
  55. package/dist/run-result.js +44 -0
  56. package/dist/run-result.js.map +1 -0
  57. package/dist/scope.d.ts +42 -0
  58. package/dist/scope.d.ts.map +1 -0
  59. package/dist/scope.js +24 -0
  60. package/dist/scope.js.map +1 -0
  61. package/dist/selector-registry.d.ts +60 -0
  62. package/dist/selector-registry.d.ts.map +1 -0
  63. package/dist/selector-registry.js +31 -0
  64. package/dist/selector-registry.js.map +1 -0
  65. package/dist/test-case.d.ts +41 -0
  66. package/dist/test-case.d.ts.map +1 -0
  67. package/dist/test-case.js +25 -0
  68. package/dist/test-case.js.map +1 -0
  69. package/dist/version.d.ts +5 -0
  70. package/dist/version.d.ts.map +1 -0
  71. package/dist/version.js +9 -0
  72. package/dist/version.js.map +1 -0
  73. package/package.json +30 -0
package/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # @qa-ai-stlc/schemas
2
+
3
+ Zod schemas for every QA-AI-STLC artifact under `.qa/`: config, scope, test case, run result,
4
+ evidence, defect draft, RCA, selector registry, API surface, approval ledger and manifest. This is
5
+ the versioned contract between the agent layer and the engine — every other package derives its
6
+ types from `z.infer` here rather than declaring a parallel interface.
7
+
8
+ Each schema also has a generated JSON Schema counterpart under `dist/json-schema/`, built with
9
+ `npm run build`, for consumers outside TypeScript.
10
+
11
+ Part of [QA-AI-STLC](https://github.com/Klim-101/QA-AI-STLC). See the repository root for
12
+ license, contributing and security information.
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ export declare const HttpMethodSchema: z.ZodEnum<{
3
+ GET: "GET";
4
+ POST: "POST";
5
+ PUT: "PUT";
6
+ PATCH: "PATCH";
7
+ DELETE: "DELETE";
8
+ HEAD: "HEAD";
9
+ OPTIONS: "OPTIONS";
10
+ }>;
11
+ export type HttpMethod = z.infer<typeof HttpMethodSchema>;
12
+ export declare const ApiEndpointSourceSchema: z.ZodEnum<{
13
+ openapi: "openapi";
14
+ discovered: "discovered";
15
+ synthesized: "synthesized";
16
+ }>;
17
+ export type ApiEndpointSource = z.infer<typeof ApiEndpointSourceSchema>;
18
+ export declare const ApiEndpointSchema: z.ZodObject<{
19
+ method: z.ZodEnum<{
20
+ GET: "GET";
21
+ POST: "POST";
22
+ PUT: "PUT";
23
+ PATCH: "PATCH";
24
+ DELETE: "DELETE";
25
+ HEAD: "HEAD";
26
+ OPTIONS: "OPTIONS";
27
+ }>;
28
+ path: z.ZodString;
29
+ operationId: z.ZodOptional<z.ZodString>;
30
+ source: z.ZodEnum<{
31
+ openapi: "openapi";
32
+ discovered: "discovered";
33
+ synthesized: "synthesized";
34
+ }>;
35
+ }, z.core.$strip>;
36
+ export type ApiEndpoint = z.infer<typeof ApiEndpointSchema>;
37
+ export declare const ApiSurfaceSchema: z.ZodObject<{
38
+ schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
39
+ generatedAt: z.ZodISODateTime;
40
+ contractSha256: z.ZodOptional<z.ZodString>;
41
+ endpoints: z.ZodArray<z.ZodObject<{
42
+ method: z.ZodEnum<{
43
+ GET: "GET";
44
+ POST: "POST";
45
+ PUT: "PUT";
46
+ PATCH: "PATCH";
47
+ DELETE: "DELETE";
48
+ HEAD: "HEAD";
49
+ OPTIONS: "OPTIONS";
50
+ }>;
51
+ path: z.ZodString;
52
+ operationId: z.ZodOptional<z.ZodString>;
53
+ source: z.ZodEnum<{
54
+ openapi: "openapi";
55
+ discovered: "discovered";
56
+ synthesized: "synthesized";
57
+ }>;
58
+ }, z.core.$strip>>;
59
+ }, z.core.$strip>;
60
+ export type ApiSurface = z.infer<typeof ApiSurfaceSchema>;
61
+ //# sourceMappingURL=api-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-surface.d.ts","sourceRoot":"","sources":["../src/api-surface.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;;;EAAuE,CAAC;AACrG,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,eAAO,MAAM,uBAAuB;;;;EAAmD,CAAC;AACxF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;iBAK5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;iBAK3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ // Copyright The QA-AI-STLC Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from 'zod';
4
+ import { IsoDateTimeSchema, Sha256HexSchema } from './primitives.js';
5
+ import { SCHEMA_VERSION, SchemaVersionSchema } from './version.js';
6
+ export const HttpMethodSchema = z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']);
7
+ // Matches the three contract sources `api.source` allows in config.yaml (development plan
8
+ // section 3.3): a supplied or discovered document, or an operator-approved synthesized draft.
9
+ export const ApiEndpointSourceSchema = z.enum(['openapi', 'discovered', 'synthesized']);
10
+ export const ApiEndpointSchema = z.object({
11
+ method: HttpMethodSchema,
12
+ path: z.string().min(1),
13
+ operationId: z.string().optional(),
14
+ source: ApiEndpointSourceSchema,
15
+ });
16
+ export const ApiSurfaceSchema = z.object({
17
+ schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
18
+ generatedAt: IsoDateTimeSchema,
19
+ contractSha256: Sha256HexSchema.optional(),
20
+ endpoints: z.array(ApiEndpointSchema),
21
+ });
22
+ //# sourceMappingURL=api-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-surface.js","sourceRoot":"","sources":["../src/api-surface.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAGrG,0FAA0F;AAC1F,8FAA8F;AAC9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;AAGxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,gBAAgB;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,uBAAuB;CAChC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,WAAW,EAAE,iBAAiB;IAC9B,cAAc,EAAE,eAAe,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;CACtC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export declare const ApprovalSchema: z.ZodObject<{
3
+ gate: z.ZodString;
4
+ artifactPath: z.ZodString;
5
+ artifactSha256: z.ZodString;
6
+ approvedBy: z.ZodString;
7
+ approvedAt: z.ZodISODateTime;
8
+ note: z.ZodOptional<z.ZodString>;
9
+ }, z.core.$strip>;
10
+ export type Approval = z.infer<typeof ApprovalSchema>;
11
+ export declare const ApprovalLedgerSchema: z.ZodObject<{
12
+ schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
13
+ approvals: z.ZodArray<z.ZodObject<{
14
+ gate: z.ZodString;
15
+ artifactPath: z.ZodString;
16
+ artifactSha256: z.ZodString;
17
+ approvedBy: z.ZodString;
18
+ approvedAt: z.ZodISODateTime;
19
+ note: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>>;
21
+ }, z.core.$strip>;
22
+ export type ApprovalLedger = z.infer<typeof ApprovalLedgerSchema>;
23
+ //# sourceMappingURL=approval-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-ledger.d.ts","sourceRoot":"","sources":["../src/approval-ledger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,cAAc;;;;;;;iBAOzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,oBAAoB;;;;;;;;;;iBAG/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ // Copyright The QA-AI-STLC Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from 'zod';
4
+ import { IsoDateTimeSchema, RelativePathSchema, Sha256HexSchema } from './primitives.js';
5
+ import { SCHEMA_VERSION, SchemaVersionSchema } from './version.js';
6
+ // One entry per hash-bound gate (ADR-003): `artifactSha256` is the hash of the exact artifact
7
+ // content approved. `qa validate` recomputes the current artifact's hash and compares it to this
8
+ // value; a mismatch means the gate is no longer satisfied regardless of any status field on the
9
+ // artifact itself.
10
+ export const ApprovalSchema = z.object({
11
+ gate: z.string().min(1),
12
+ artifactPath: RelativePathSchema,
13
+ artifactSha256: Sha256HexSchema,
14
+ approvedBy: z.string().min(1),
15
+ approvedAt: IsoDateTimeSchema,
16
+ note: z.string().optional(),
17
+ });
18
+ export const ApprovalLedgerSchema = z.object({
19
+ schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
20
+ approvals: z.array(ApprovalSchema),
21
+ });
22
+ //# sourceMappingURL=approval-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-ledger.js","sourceRoot":"","sources":["../src/approval-ledger.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnE,8FAA8F;AAC9F,iGAAiG;AACjG,gGAAgG;AAChG,mBAAmB;AACnB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,YAAY,EAAE,kBAAkB;IAChC,cAAc,EAAE,eAAe;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,UAAU,EAAE,iBAAiB;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,285 @@
1
+ export declare const artifactSchemas: {
2
+ readonly config: import("zod").ZodObject<{
3
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
4
+ testing: import("zod").ZodObject<{
5
+ e2e: import("zod").ZodEnum<{
6
+ "in-scope": "in-scope";
7
+ "out-of-scope": "out-of-scope";
8
+ undecided: "undecided";
9
+ }>;
10
+ api: import("zod").ZodEnum<{
11
+ "in-scope": "in-scope";
12
+ "out-of-scope": "out-of-scope";
13
+ undecided: "undecided";
14
+ }>;
15
+ a11y: import("zod").ZodEnum<{
16
+ "in-scope": "in-scope";
17
+ "out-of-scope": "out-of-scope";
18
+ undecided: "undecided";
19
+ }>;
20
+ security: import("zod").ZodEnum<{
21
+ "in-scope": "in-scope";
22
+ "out-of-scope": "out-of-scope";
23
+ undecided: "undecided";
24
+ }>;
25
+ }, import("zod/v4/core").$strip>;
26
+ source: import("zod").ZodOptional<import("zod").ZodObject<{
27
+ path: import("zod").ZodString;
28
+ }, import("zod/v4/core").$strip>>;
29
+ api: import("zod").ZodOptional<import("zod").ZodObject<{
30
+ contract: import("zod").ZodLiteral<"openapi">;
31
+ source: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodLiteral<"discover">, import("zod").ZodLiteral<"synthesize">]>;
32
+ }, import("zod/v4/core").$strip>>;
33
+ environments: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
34
+ baseUrl: import("zod").ZodString;
35
+ allowlist: import("zod").ZodArray<import("zod").ZodString>;
36
+ }, import("zod/v4/core").$strip>>;
37
+ identities: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
38
+ auth: import("zod").ZodEnum<{
39
+ "cdp-attach": "cdp-attach";
40
+ "storage-state": "storage-state";
41
+ }>;
42
+ secret: import("zod").ZodString;
43
+ loginUrl: import("zod").ZodOptional<import("zod").ZodString>;
44
+ username: import("zod").ZodOptional<import("zod").ZodString>;
45
+ selectors: import("zod").ZodOptional<import("zod").ZodObject<{
46
+ username: import("zod").ZodOptional<import("zod").ZodString>;
47
+ password: import("zod").ZodOptional<import("zod").ZodString>;
48
+ submit: import("zod").ZodOptional<import("zod").ZodString>;
49
+ }, import("zod/v4/core").$strip>>;
50
+ }, import("zod/v4/core").$strip>>;
51
+ data: import("zod").ZodObject<{
52
+ strategy: import("zod").ZodEnum<{
53
+ disposable: "disposable";
54
+ "reset-endpoint": "reset-endpoint";
55
+ manual: "manual";
56
+ }>;
57
+ ownerMarker: import("zod").ZodString;
58
+ }, import("zod/v4/core").$strip>;
59
+ selectors: import("zod").ZodObject<{
60
+ policy: import("zod").ZodEnum<{
61
+ "playwright-default": "playwright-default";
62
+ "testid-first": "testid-first";
63
+ "strict-no-css": "strict-no-css";
64
+ }>;
65
+ testIdAttribute: import("zod").ZodString;
66
+ }, import("zod/v4/core").$strip>;
67
+ agents: import("zod").ZodObject<{
68
+ parallelism: import("zod").ZodNumber;
69
+ spokeTimeoutSeconds: import("zod").ZodNumber;
70
+ retries: import("zod").ZodNumber;
71
+ }, import("zod/v4/core").$strip>;
72
+ }, import("zod/v4/core").$strip>;
73
+ readonly scope: import("zod").ZodObject<{
74
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
75
+ generatedAt: import("zod").ZodISODateTime;
76
+ requirements: import("zod").ZodArray<import("zod").ZodObject<{
77
+ id: import("zod").ZodString;
78
+ title: import("zod").ZodString;
79
+ description: import("zod").ZodOptional<import("zod").ZodString>;
80
+ source: import("zod").ZodUnion<readonly [import("zod").ZodObject<{
81
+ kind: import("zod").ZodLiteral<"file">;
82
+ path: import("zod").ZodString;
83
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
84
+ kind: import("zod").ZodLiteral<"text">;
85
+ label: import("zod").ZodString;
86
+ }, import("zod/v4/core").$strip>]>;
87
+ inScope: import("zod").ZodBoolean;
88
+ }, import("zod/v4/core").$strip>>;
89
+ }, import("zod/v4/core").$strip>;
90
+ readonly 'test-case': import("zod").ZodObject<{
91
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
92
+ id: import("zod").ZodString;
93
+ requirementIds: import("zod").ZodArray<import("zod").ZodString>;
94
+ testType: import("zod").ZodEnum<{
95
+ e2e: "e2e";
96
+ api: "api";
97
+ a11y: "a11y";
98
+ }>;
99
+ title: import("zod").ZodString;
100
+ description: import("zod").ZodOptional<import("zod").ZodString>;
101
+ steps: import("zod").ZodArray<import("zod").ZodObject<{
102
+ description: import("zod").ZodString;
103
+ }, import("zod/v4/core").$strip>>;
104
+ expectedResult: import("zod").ZodString;
105
+ status: import("zod").ZodEnum<{
106
+ draft: "draft";
107
+ rejected: "rejected";
108
+ approved: "approved";
109
+ }>;
110
+ createdAt: import("zod").ZodISODateTime;
111
+ }, import("zod/v4/core").$strip>;
112
+ readonly 'run-result': import("zod").ZodObject<{
113
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
114
+ id: import("zod").ZodString;
115
+ runId: import("zod").ZodString;
116
+ testCaseId: import("zod").ZodString;
117
+ testType: import("zod").ZodEnum<{
118
+ e2e: "e2e";
119
+ api: "api";
120
+ a11y: "a11y";
121
+ }>;
122
+ status: import("zod").ZodEnum<{
123
+ passed: "passed";
124
+ failed: "failed";
125
+ blocked: "blocked";
126
+ skipped: "skipped";
127
+ uncertain: "uncertain";
128
+ partial: "partial";
129
+ }>;
130
+ startedAt: import("zod").ZodISODateTime;
131
+ finishedAt: import("zod").ZodISODateTime;
132
+ evidenceIds: import("zod").ZodArray<import("zod").ZodString>;
133
+ failure: import("zod").ZodOptional<import("zod").ZodObject<{
134
+ message: import("zod").ZodString;
135
+ stack: import("zod").ZodOptional<import("zod").ZodString>;
136
+ }, import("zod/v4/core").$strip>>;
137
+ }, import("zod/v4/core").$strip>;
138
+ readonly evidence: import("zod").ZodObject<{
139
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
140
+ id: import("zod").ZodString;
141
+ runId: import("zod").ZodString;
142
+ stepId: import("zod").ZodOptional<import("zod").ZodString>;
143
+ kind: import("zod").ZodEnum<{
144
+ screenshot: "screenshot";
145
+ trace: "trace";
146
+ "network-har": "network-har";
147
+ "console-log": "console-log";
148
+ video: "video";
149
+ other: "other";
150
+ }>;
151
+ path: import("zod").ZodString;
152
+ sha256: import("zod").ZodString;
153
+ createdAt: import("zod").ZodISODateTime;
154
+ redacted: import("zod").ZodBoolean;
155
+ }, import("zod/v4/core").$strip>;
156
+ readonly 'defect-draft': import("zod").ZodObject<{
157
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
158
+ id: import("zod").ZodString;
159
+ title: import("zod").ZodString;
160
+ severityProposal: import("zod").ZodEnum<{
161
+ blocker: "blocker";
162
+ critical: "critical";
163
+ major: "major";
164
+ minor: "minor";
165
+ trivial: "trivial";
166
+ }>;
167
+ category: import("zod").ZodEnum<{
168
+ api: "api";
169
+ security: "security";
170
+ functional: "functional";
171
+ ui: "ui";
172
+ accessibility: "accessibility";
173
+ performance: "performance";
174
+ }>;
175
+ steps: import("zod").ZodArray<import("zod").ZodString>;
176
+ expectedResult: import("zod").ZodString;
177
+ actualResult: import("zod").ZodString;
178
+ environment: import("zod").ZodString;
179
+ requirementIds: import("zod").ZodArray<import("zod").ZodString>;
180
+ evidencePaths: import("zod").ZodArray<import("zod").ZodString>;
181
+ status: import("zod").ZodEnum<{
182
+ draft: "draft";
183
+ accepted: "accepted";
184
+ rejected: "rejected";
185
+ }>;
186
+ createdAt: import("zod").ZodISODateTime;
187
+ securityRiskArea: import("zod").ZodOptional<import("zod").ZodString>;
188
+ securityConfidence: import("zod").ZodOptional<import("zod").ZodEnum<{
189
+ low: "low";
190
+ medium: "medium";
191
+ high: "high";
192
+ }>>;
193
+ securitySuggestedRemediation: import("zod").ZodOptional<import("zod").ZodString>;
194
+ securityRegressionCheck: import("zod").ZodOptional<import("zod").ZodString>;
195
+ }, import("zod/v4/core").$strip>;
196
+ readonly rca: import("zod").ZodObject<{
197
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
198
+ defectId: import("zod").ZodString;
199
+ facts: import("zod").ZodArray<import("zod").ZodString>;
200
+ hypotheses: import("zod").ZodArray<import("zod").ZodObject<{
201
+ description: import("zod").ZodString;
202
+ confidence: import("zod").ZodEnum<{
203
+ low: "low";
204
+ medium: "medium";
205
+ high: "high";
206
+ }>;
207
+ evidenceNeeded: import("zod").ZodOptional<import("zod").ZodString>;
208
+ }, import("zod/v4/core").$strip>>;
209
+ remediation: import("zod").ZodArray<import("zod").ZodString>;
210
+ regressionRecommendation: import("zod").ZodOptional<import("zod").ZodString>;
211
+ status: import("zod").ZodEnum<{
212
+ draft: "draft";
213
+ rejected: "rejected";
214
+ approved: "approved";
215
+ }>;
216
+ createdAt: import("zod").ZodISODateTime;
217
+ }, import("zod/v4/core").$strip>;
218
+ readonly 'selector-registry': import("zod").ZodObject<{
219
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
220
+ generatedAt: import("zod").ZodISODateTime;
221
+ elements: import("zod").ZodArray<import("zod").ZodObject<{
222
+ elementId: import("zod").ZodString;
223
+ kind: import("zod").ZodString;
224
+ library: import("zod").ZodOptional<import("zod").ZodString>;
225
+ locatorCandidates: import("zod").ZodArray<import("zod").ZodObject<{
226
+ strategy: import("zod").ZodString;
227
+ value: import("zod").ZodString;
228
+ fragile: import("zod").ZodBoolean;
229
+ }, import("zod/v4/core").$strip>>;
230
+ stabilityScore: import("zod").ZodNumber;
231
+ lastVerifiedAt: import("zod").ZodISODateTime;
232
+ pii: import("zod").ZodBoolean;
233
+ dynamicText: import("zod").ZodBoolean;
234
+ source: import("zod").ZodEnum<{
235
+ manual: "manual";
236
+ crawl: "crawl";
237
+ static: "static";
238
+ }>;
239
+ deprecatedAt: import("zod").ZodOptional<import("zod").ZodISODateTime>;
240
+ }, import("zod/v4/core").$strip>>;
241
+ }, import("zod/v4/core").$strip>;
242
+ readonly 'api-surface': import("zod").ZodObject<{
243
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
244
+ generatedAt: import("zod").ZodISODateTime;
245
+ contractSha256: import("zod").ZodOptional<import("zod").ZodString>;
246
+ endpoints: import("zod").ZodArray<import("zod").ZodObject<{
247
+ method: import("zod").ZodEnum<{
248
+ GET: "GET";
249
+ POST: "POST";
250
+ PUT: "PUT";
251
+ PATCH: "PATCH";
252
+ DELETE: "DELETE";
253
+ HEAD: "HEAD";
254
+ OPTIONS: "OPTIONS";
255
+ }>;
256
+ path: import("zod").ZodString;
257
+ operationId: import("zod").ZodOptional<import("zod").ZodString>;
258
+ source: import("zod").ZodEnum<{
259
+ openapi: "openapi";
260
+ discovered: "discovered";
261
+ synthesized: "synthesized";
262
+ }>;
263
+ }, import("zod/v4/core").$strip>>;
264
+ }, import("zod/v4/core").$strip>;
265
+ readonly 'approval-ledger': import("zod").ZodObject<{
266
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
267
+ approvals: import("zod").ZodArray<import("zod").ZodObject<{
268
+ gate: import("zod").ZodString;
269
+ artifactPath: import("zod").ZodString;
270
+ artifactSha256: import("zod").ZodString;
271
+ approvedBy: import("zod").ZodString;
272
+ approvedAt: import("zod").ZodISODateTime;
273
+ note: import("zod").ZodOptional<import("zod").ZodString>;
274
+ }, import("zod/v4/core").$strip>>;
275
+ }, import("zod/v4/core").$strip>;
276
+ readonly manifest: import("zod").ZodObject<{
277
+ schemaVersion: import("zod").ZodDefault<import("zod").ZodLiteral<1>>;
278
+ artifacts: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
279
+ sha256: import("zod").ZodString;
280
+ registeredAt: import("zod").ZodISODateTime;
281
+ }, import("zod/v4/core").$strip>>;
282
+ }, import("zod/v4/core").$strip>;
283
+ };
284
+ export type ArtifactKind = keyof typeof artifactSchemas;
285
+ //# sourceMappingURL=artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYlB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC"}
@@ -0,0 +1,30 @@
1
+ // Copyright The QA-AI-STLC Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { ApiSurfaceSchema } from './api-surface.js';
4
+ import { ApprovalLedgerSchema } from './approval-ledger.js';
5
+ import { ConfigSchema } from './config.js';
6
+ import { DefectDraftSchema } from './defect.js';
7
+ import { EvidenceSchema } from './evidence.js';
8
+ import { ManifestSchema } from './manifest.js';
9
+ import { RcaSchema } from './rca.js';
10
+ import { RunResultSchema } from './run-result.js';
11
+ import { ScopeSchema } from './scope.js';
12
+ import { SelectorRegistrySchema } from './selector-registry.js';
13
+ import { TestCaseSchema } from './test-case.js';
14
+ // One entry per artifact kind under `.qa/` (development plan section 3.2). This is the single
15
+ // source `scripts/generate-json-schema.mjs` walks to emit `dist/json-schema/<name>.json`; adding
16
+ // a new artifact kind means adding it here, not teaching the generator a new naming heuristic.
17
+ export const artifactSchemas = {
18
+ config: ConfigSchema,
19
+ scope: ScopeSchema,
20
+ 'test-case': TestCaseSchema,
21
+ 'run-result': RunResultSchema,
22
+ evidence: EvidenceSchema,
23
+ 'defect-draft': DefectDraftSchema,
24
+ rca: RcaSchema,
25
+ 'selector-registry': SelectorRegistrySchema,
26
+ 'api-surface': ApiSurfaceSchema,
27
+ 'approval-ledger': ApprovalLedgerSchema,
28
+ manifest: ManifestSchema,
29
+ };
30
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,8FAA8F;AAC9F,iGAAiG;AACjG,+FAA+F;AAC/F,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,cAAc;IACxB,cAAc,EAAE,iBAAiB;IACjC,GAAG,EAAE,SAAS;IACd,mBAAmB,EAAE,sBAAsB;IAC3C,aAAa,EAAE,gBAAgB;IAC/B,iBAAiB,EAAE,oBAAoB;IACvC,QAAQ,EAAE,cAAc;CAChB,CAAC"}