@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.
- package/README.md +12 -0
- package/dist/api-surface.d.ts +61 -0
- package/dist/api-surface.d.ts.map +1 -0
- package/dist/api-surface.js +22 -0
- package/dist/api-surface.js.map +1 -0
- package/dist/approval-ledger.d.ts +23 -0
- package/dist/approval-ledger.d.ts.map +1 -0
- package/dist/approval-ledger.js +22 -0
- package/dist/approval-ledger.js.map +1 -0
- package/dist/artifacts.d.ts +285 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +30 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/config.d.ts +179 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +89 -0
- package/dist/config.js.map +1 -0
- package/dist/defect.d.ts +72 -0
- package/dist/defect.d.ts.map +1 -0
- package/dist/defect.js +46 -0
- package/dist/defect.js.map +1 -0
- package/dist/evidence.d.ts +48 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +40 -0
- package/dist/evidence.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/json-schema/api-surface.json +67 -0
- package/dist/json-schema/approval-ledger.json +56 -0
- package/dist/json-schema/config.json +261 -0
- package/dist/json-schema/defect-draft.json +120 -0
- package/dist/json-schema/evidence.json +61 -0
- package/dist/json-schema/manifest.json +42 -0
- package/dist/json-schema/rca.json +84 -0
- package/dist/json-schema/run-result.json +87 -0
- package/dist/json-schema/scope.json +91 -0
- package/dist/json-schema/selector-registry.json +107 -0
- package/dist/json-schema/test-case.json +83 -0
- package/dist/manifest.d.ts +15 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +19 -0
- package/dist/manifest.js.map +1 -0
- package/dist/primitives.d.ts +10 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +21 -0
- package/dist/primitives.js.map +1 -0
- package/dist/rca.d.ts +41 -0
- package/dist/rca.d.ts.map +1 -0
- package/dist/rca.js +26 -0
- package/dist/rca.js.map +1 -0
- package/dist/run-result.d.ts +43 -0
- package/dist/run-result.d.ts.map +1 -0
- package/dist/run-result.js +44 -0
- package/dist/run-result.js.map +1 -0
- package/dist/scope.d.ts +42 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +24 -0
- package/dist/scope.js.map +1 -0
- package/dist/selector-registry.d.ts +60 -0
- package/dist/selector-registry.d.ts.map +1 -0
- package/dist/selector-registry.js +31 -0
- package/dist/selector-registry.js.map +1 -0
- package/dist/test-case.d.ts +41 -0
- package/dist/test-case.d.ts.map +1 -0
- package/dist/test-case.js +25 -0
- package/dist/test-case.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +9 -0
- package/dist/version.js.map +1 -0
- 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"}
|
package/dist/manifest.js
ADDED
|
@@ -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
|
package/dist/rca.js.map
ADDED
|
@@ -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"}
|