@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
@@ -0,0 +1,87 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "default": 1,
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "id": {
11
+ "type": "string",
12
+ "minLength": 1
13
+ },
14
+ "runId": {
15
+ "type": "string",
16
+ "minLength": 1
17
+ },
18
+ "testCaseId": {
19
+ "type": "string",
20
+ "minLength": 1
21
+ },
22
+ "testType": {
23
+ "type": "string",
24
+ "enum": [
25
+ "e2e",
26
+ "api",
27
+ "a11y"
28
+ ]
29
+ },
30
+ "status": {
31
+ "type": "string",
32
+ "enum": [
33
+ "passed",
34
+ "failed",
35
+ "blocked",
36
+ "skipped",
37
+ "uncertain",
38
+ "partial"
39
+ ]
40
+ },
41
+ "startedAt": {
42
+ "type": "string",
43
+ "format": "date-time",
44
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
45
+ },
46
+ "finishedAt": {
47
+ "type": "string",
48
+ "format": "date-time",
49
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
50
+ },
51
+ "evidenceIds": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ }
57
+ },
58
+ "failure": {
59
+ "type": "object",
60
+ "properties": {
61
+ "message": {
62
+ "type": "string",
63
+ "minLength": 1
64
+ },
65
+ "stack": {
66
+ "type": "string"
67
+ }
68
+ },
69
+ "required": [
70
+ "message"
71
+ ],
72
+ "additionalProperties": false
73
+ }
74
+ },
75
+ "required": [
76
+ "schemaVersion",
77
+ "id",
78
+ "runId",
79
+ "testCaseId",
80
+ "testType",
81
+ "status",
82
+ "startedAt",
83
+ "finishedAt",
84
+ "evidenceIds"
85
+ ],
86
+ "additionalProperties": false
87
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "default": 1,
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "generatedAt": {
11
+ "type": "string",
12
+ "format": "date-time",
13
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
14
+ },
15
+ "requirements": {
16
+ "type": "array",
17
+ "items": {
18
+ "type": "object",
19
+ "properties": {
20
+ "id": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "title": {
25
+ "type": "string",
26
+ "minLength": 1
27
+ },
28
+ "description": {
29
+ "type": "string"
30
+ },
31
+ "source": {
32
+ "anyOf": [
33
+ {
34
+ "type": "object",
35
+ "properties": {
36
+ "kind": {
37
+ "type": "string",
38
+ "const": "file"
39
+ },
40
+ "path": {
41
+ "type": "string",
42
+ "minLength": 1
43
+ }
44
+ },
45
+ "required": [
46
+ "kind",
47
+ "path"
48
+ ],
49
+ "additionalProperties": false
50
+ },
51
+ {
52
+ "type": "object",
53
+ "properties": {
54
+ "kind": {
55
+ "type": "string",
56
+ "const": "text"
57
+ },
58
+ "label": {
59
+ "type": "string",
60
+ "minLength": 1
61
+ }
62
+ },
63
+ "required": [
64
+ "kind",
65
+ "label"
66
+ ],
67
+ "additionalProperties": false
68
+ }
69
+ ]
70
+ },
71
+ "inScope": {
72
+ "type": "boolean"
73
+ }
74
+ },
75
+ "required": [
76
+ "id",
77
+ "title",
78
+ "source",
79
+ "inScope"
80
+ ],
81
+ "additionalProperties": false
82
+ }
83
+ }
84
+ },
85
+ "required": [
86
+ "schemaVersion",
87
+ "generatedAt",
88
+ "requirements"
89
+ ],
90
+ "additionalProperties": false
91
+ }
@@ -0,0 +1,107 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "default": 1,
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "generatedAt": {
11
+ "type": "string",
12
+ "format": "date-time",
13
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
14
+ },
15
+ "elements": {
16
+ "type": "array",
17
+ "items": {
18
+ "type": "object",
19
+ "properties": {
20
+ "elementId": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "kind": {
25
+ "type": "string",
26
+ "minLength": 1
27
+ },
28
+ "library": {
29
+ "type": "string"
30
+ },
31
+ "locatorCandidates": {
32
+ "minItems": 1,
33
+ "type": "array",
34
+ "items": {
35
+ "type": "object",
36
+ "properties": {
37
+ "strategy": {
38
+ "type": "string",
39
+ "minLength": 1
40
+ },
41
+ "value": {
42
+ "type": "string",
43
+ "minLength": 1
44
+ },
45
+ "fragile": {
46
+ "type": "boolean"
47
+ }
48
+ },
49
+ "required": [
50
+ "strategy",
51
+ "value",
52
+ "fragile"
53
+ ],
54
+ "additionalProperties": false
55
+ }
56
+ },
57
+ "stabilityScore": {
58
+ "type": "number",
59
+ "minimum": 0,
60
+ "maximum": 1
61
+ },
62
+ "lastVerifiedAt": {
63
+ "type": "string",
64
+ "format": "date-time",
65
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
66
+ },
67
+ "pii": {
68
+ "type": "boolean"
69
+ },
70
+ "dynamicText": {
71
+ "type": "boolean"
72
+ },
73
+ "source": {
74
+ "type": "string",
75
+ "enum": [
76
+ "crawl",
77
+ "static",
78
+ "manual"
79
+ ]
80
+ },
81
+ "deprecatedAt": {
82
+ "type": "string",
83
+ "format": "date-time",
84
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
85
+ }
86
+ },
87
+ "required": [
88
+ "elementId",
89
+ "kind",
90
+ "locatorCandidates",
91
+ "stabilityScore",
92
+ "lastVerifiedAt",
93
+ "pii",
94
+ "dynamicText",
95
+ "source"
96
+ ],
97
+ "additionalProperties": false
98
+ }
99
+ }
100
+ },
101
+ "required": [
102
+ "schemaVersion",
103
+ "generatedAt",
104
+ "elements"
105
+ ],
106
+ "additionalProperties": false
107
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schemaVersion": {
6
+ "default": 1,
7
+ "type": "number",
8
+ "const": 1
9
+ },
10
+ "id": {
11
+ "type": "string",
12
+ "minLength": 1
13
+ },
14
+ "requirementIds": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string",
18
+ "minLength": 1
19
+ }
20
+ },
21
+ "testType": {
22
+ "type": "string",
23
+ "enum": [
24
+ "e2e",
25
+ "api",
26
+ "a11y"
27
+ ]
28
+ },
29
+ "title": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "description": {
34
+ "type": "string"
35
+ },
36
+ "steps": {
37
+ "minItems": 1,
38
+ "type": "array",
39
+ "items": {
40
+ "type": "object",
41
+ "properties": {
42
+ "description": {
43
+ "type": "string",
44
+ "minLength": 1
45
+ }
46
+ },
47
+ "required": [
48
+ "description"
49
+ ],
50
+ "additionalProperties": false
51
+ }
52
+ },
53
+ "expectedResult": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ },
57
+ "status": {
58
+ "type": "string",
59
+ "enum": [
60
+ "draft",
61
+ "approved",
62
+ "rejected"
63
+ ]
64
+ },
65
+ "createdAt": {
66
+ "type": "string",
67
+ "format": "date-time",
68
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
69
+ }
70
+ },
71
+ "required": [
72
+ "schemaVersion",
73
+ "id",
74
+ "requirementIds",
75
+ "testType",
76
+ "title",
77
+ "steps",
78
+ "expectedResult",
79
+ "status",
80
+ "createdAt"
81
+ ],
82
+ "additionalProperties": false
83
+ }
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const ManifestEntrySchema: z.ZodObject<{
3
+ sha256: z.ZodString;
4
+ registeredAt: z.ZodISODateTime;
5
+ }, z.core.$strip>;
6
+ export type ManifestEntry = z.infer<typeof ManifestEntrySchema>;
7
+ export declare const ManifestSchema: z.ZodObject<{
8
+ schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
9
+ artifacts: z.ZodRecord<z.ZodString, z.ZodObject<{
10
+ sha256: z.ZodString;
11
+ registeredAt: z.ZodISODateTime;
12
+ }, z.core.$strip>>;
13
+ }, z.core.$strip>;
14
+ export type Manifest = z.infer<typeof ManifestSchema>;
15
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMhE,eAAO,MAAM,cAAc;;;;;;iBAIzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,19 @@
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
+ export const ManifestEntrySchema = z.object({
7
+ sha256: Sha256HexSchema,
8
+ registeredAt: IsoDateTimeSchema,
9
+ });
10
+ // `.qa/manifest.json`: the hash of every registered artifact (AGENTS.md 2.5). `qa validate` and
11
+ // every MCP mutation reject a file that is unregistered or whose content no longer matches its
12
+ // recorded hash, so an agent cannot make a direct filesystem write pass for an engine-produced
13
+ // artifact.
14
+ export const ManifestSchema = z.object({
15
+ schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
16
+ // Keyed by the artifact's project-relative path.
17
+ artifacts: z.record(RelativePathSchema, ManifestEntrySchema),
18
+ });
19
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.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,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,eAAe;IACvB,YAAY,EAAE,iBAAiB;CAChC,CAAC,CAAC;AAGH,gGAAgG;AAChG,+FAA+F;AAC/F,+FAA+F;AAC/F,YAAY;AACZ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,iDAAiD;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;CAC7D,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export declare const Sha256HexSchema: z.ZodString;
3
+ export type Sha256Hex = z.infer<typeof Sha256HexSchema>;
4
+ export declare const RelativePathSchema: z.ZodString;
5
+ export type RelativePath = z.infer<typeof RelativePathSchema>;
6
+ export declare const IsoDateTimeSchema: z.ZodISODateTime;
7
+ export type IsoDateTime = z.infer<typeof IsoDateTimeSchema>;
8
+ export declare const IdentifierSchema: z.ZodString;
9
+ export type Identifier = z.infer<typeof IdentifierSchema>;
10
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,aAEqD,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAQxD,eAAO,MAAM,kBAAkB,aAU5B,CAAC;AACJ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,iBAAiB,kBAAmC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,gBAAgB,aAAoB,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ // Copyright The QA-AI-STLC Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from 'zod';
4
+ export const Sha256HexSchema = z
5
+ .string()
6
+ .regex(/^[0-9a-f]{64}$/, 'must be a lowercase 64-character SHA-256 hex digest');
7
+ // Artifact paths are project-relative and use `/` on every OS (AGENTS.md 5.6), never an absolute
8
+ // path or a Windows backslash, so a hash or a reference recorded on one OS still resolves on
9
+ // another. A drive-letter prefix (`C:/x`, `C:x`) is also absolute on Windows even though it
10
+ // starts with neither `/` nor `\`.
11
+ const DRIVE_LETTER_PREFIX = /^[A-Za-z]:/;
12
+ export const RelativePathSchema = z
13
+ .string()
14
+ .min(1)
15
+ .refine((value) => !value.startsWith('/') &&
16
+ !value.includes('\\') &&
17
+ !DRIVE_LETTER_PREFIX.test(value) &&
18
+ !value.split('/').includes('..'), 'must be a project-relative, forward-slash path with no ".." segments');
19
+ export const IsoDateTimeSchema = z.iso.datetime({ offset: true });
20
+ export const IdentifierSchema = z.string().min(1);
21
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../src/primitives.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,EAAE;KACR,KAAK,CAAC,gBAAgB,EAAE,qDAAqD,CAAC,CAAC;AAGlF,iGAAiG;AACjG,6FAA6F;AAC7F,4FAA4F;AAC5F,mCAAmC;AACnC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;IACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IACrB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAClC,sEAAsE,CACvE,CAAC;AAGJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAGlE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC"}
package/dist/rca.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ export declare const RcaHypothesisSchema: z.ZodObject<{
3
+ description: z.ZodString;
4
+ confidence: z.ZodEnum<{
5
+ low: "low";
6
+ medium: "medium";
7
+ high: "high";
8
+ }>;
9
+ evidenceNeeded: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strip>;
11
+ export type RcaHypothesis = z.infer<typeof RcaHypothesisSchema>;
12
+ export declare const RcaStatusSchema: z.ZodEnum<{
13
+ draft: "draft";
14
+ rejected: "rejected";
15
+ approved: "approved";
16
+ }>;
17
+ export type RcaStatus = z.infer<typeof RcaStatusSchema>;
18
+ export declare const RcaSchema: z.ZodObject<{
19
+ schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
20
+ defectId: z.ZodString;
21
+ facts: z.ZodArray<z.ZodString>;
22
+ hypotheses: z.ZodArray<z.ZodObject<{
23
+ description: z.ZodString;
24
+ confidence: z.ZodEnum<{
25
+ low: "low";
26
+ medium: "medium";
27
+ high: "high";
28
+ }>;
29
+ evidenceNeeded: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strip>>;
31
+ remediation: z.ZodArray<z.ZodString>;
32
+ regressionRecommendation: z.ZodOptional<z.ZodString>;
33
+ status: z.ZodEnum<{
34
+ draft: "draft";
35
+ rejected: "rejected";
36
+ approved: "approved";
37
+ }>;
38
+ createdAt: z.ZodISODateTime;
39
+ }, z.core.$strip>;
40
+ export type Rca = z.infer<typeof RcaSchema>;
41
+ //# sourceMappingURL=rca.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rca.d.ts","sourceRoot":"","sources":["../src/rca.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,mBAAmB;;;;;;;;iBAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,eAAe;;;;EAA4C,CAAC;AACzE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAKxD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;iBASpB,CAAC;AACH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC"}
package/dist/rca.js ADDED
@@ -0,0 +1,26 @@
1
+ // Copyright The QA-AI-STLC Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from 'zod';
4
+ import { IdentifierSchema, IsoDateTimeSchema } from './primitives.js';
5
+ import { SecurityConfidenceSchema } from './defect.js';
6
+ import { SCHEMA_VERSION, SchemaVersionSchema } from './version.js';
7
+ export const RcaHypothesisSchema = z.object({
8
+ description: z.string().min(1),
9
+ confidence: SecurityConfidenceSchema,
10
+ evidenceNeeded: z.string().optional(),
11
+ });
12
+ export const RcaStatusSchema = z.enum(['draft', 'approved', 'rejected']);
13
+ // An RCA exists only for a defect in state `accepted` and separates confirmed facts from
14
+ // hypotheses (development plan section 2.4). Only an `approved` RCA attaches to the report and
15
+ // the release recommendation.
16
+ export const RcaSchema = z.object({
17
+ schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
18
+ defectId: IdentifierSchema,
19
+ facts: z.array(z.string().min(1)),
20
+ hypotheses: z.array(RcaHypothesisSchema).min(1),
21
+ remediation: z.array(z.string().min(1)),
22
+ regressionRecommendation: z.string().optional(),
23
+ status: RcaStatusSchema,
24
+ createdAt: IsoDateTimeSchema,
25
+ });
26
+ //# sourceMappingURL=rca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rca.js","sourceRoot":"","sources":["../src/rca.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,UAAU,EAAE,wBAAwB;IACpC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAGzE,yFAAyF;AACzF,+FAA+F;AAC/F,8BAA8B;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,QAAQ,EAAE,gBAAgB;IAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,eAAe;IACvB,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ export declare const RunResultStatusSchema: z.ZodEnum<{
3
+ passed: "passed";
4
+ failed: "failed";
5
+ blocked: "blocked";
6
+ skipped: "skipped";
7
+ uncertain: "uncertain";
8
+ partial: "partial";
9
+ }>;
10
+ export type RunResultStatus = z.infer<typeof RunResultStatusSchema>;
11
+ export declare const RunResultFailureSchema: z.ZodObject<{
12
+ message: z.ZodString;
13
+ stack: z.ZodOptional<z.ZodString>;
14
+ }, z.core.$strip>;
15
+ export type RunResultFailure = z.infer<typeof RunResultFailureSchema>;
16
+ export declare const RunResultSchema: z.ZodObject<{
17
+ schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
18
+ id: z.ZodString;
19
+ runId: z.ZodString;
20
+ testCaseId: z.ZodString;
21
+ testType: z.ZodEnum<{
22
+ e2e: "e2e";
23
+ api: "api";
24
+ a11y: "a11y";
25
+ }>;
26
+ status: z.ZodEnum<{
27
+ passed: "passed";
28
+ failed: "failed";
29
+ blocked: "blocked";
30
+ skipped: "skipped";
31
+ uncertain: "uncertain";
32
+ partial: "partial";
33
+ }>;
34
+ startedAt: z.ZodISODateTime;
35
+ finishedAt: z.ZodISODateTime;
36
+ evidenceIds: z.ZodArray<z.ZodString>;
37
+ failure: z.ZodOptional<z.ZodObject<{
38
+ message: z.ZodString;
39
+ stack: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strip>>;
41
+ }, z.core.$strip>;
42
+ export type RunResult = z.infer<typeof RunResultSchema>;
43
+ //# sourceMappingURL=run-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-result.d.ts","sourceRoot":"","sources":["../src/run-result.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,qBAAqB;;;;;;;EAOhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBxB,CAAC;AACL,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ // Copyright The QA-AI-STLC Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from 'zod';
4
+ import { IdentifierSchema, IsoDateTimeSchema } from './primitives.js';
5
+ import { TestTypeSchema } from './test-case.js';
6
+ import { SCHEMA_VERSION, SchemaVersionSchema } from './version.js';
7
+ // `blocked`, `skipped`, `uncertain` and `partial` are honest statuses, never reported as `passed`
8
+ // or `failed` (AGENTS.md 12.5): a result the engine could not fully determine must say so.
9
+ export const RunResultStatusSchema = z.enum([
10
+ 'passed',
11
+ 'failed',
12
+ 'blocked',
13
+ 'skipped',
14
+ 'uncertain',
15
+ 'partial',
16
+ ]);
17
+ export const RunResultFailureSchema = z.object({
18
+ message: z.string().min(1),
19
+ stack: z.string().optional(),
20
+ });
21
+ export const RunResultSchema = z
22
+ .object({
23
+ schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
24
+ id: IdentifierSchema,
25
+ runId: IdentifierSchema,
26
+ testCaseId: IdentifierSchema,
27
+ testType: TestTypeSchema,
28
+ status: RunResultStatusSchema,
29
+ startedAt: IsoDateTimeSchema,
30
+ finishedAt: IsoDateTimeSchema,
31
+ evidenceIds: z.array(IdentifierSchema),
32
+ failure: RunResultFailureSchema.optional(),
33
+ })
34
+ // Valid JSON is not a correct result: a result that finished before it started, or that claims
35
+ // to have failed without saying what failed, is not a shape the engine ever produces.
36
+ .refine((result) => new Date(result.finishedAt) >= new Date(result.startedAt), {
37
+ message: '"finishedAt" must not be earlier than "startedAt"',
38
+ path: ['finishedAt'],
39
+ })
40
+ .refine((result) => result.status !== 'failed' || result.failure !== undefined, {
41
+ message: '"failure" is required when status is "failed"',
42
+ path: ['failure'],
43
+ });
44
+ //# sourceMappingURL=run-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-result.js","sourceRoot":"","sources":["../src/run-result.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnE,kGAAkG;AAClG,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1C,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,SAAS;IACT,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,gBAAgB;IACvB,UAAU,EAAE,gBAAgB;IAC5B,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,qBAAqB;IAC7B,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE,iBAAiB;IAC7B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACtC,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE;CAC3C,CAAC;IACF,+FAA+F;IAC/F,sFAAsF;KACrF,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IAC7E,OAAO,EAAE,mDAAmD;IAC5D,IAAI,EAAE,CAAC,YAAY,CAAC;CACrB,CAAC;KACD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;IAC9E,OAAO,EAAE,+CAA+C;IACxD,IAAI,EAAE,CAAC,SAAS,CAAC;CAClB,CAAC,CAAC"}