@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
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const TestingScopeDecisionSchema: z.ZodEnum<{
|
|
3
|
+
"in-scope": "in-scope";
|
|
4
|
+
"out-of-scope": "out-of-scope";
|
|
5
|
+
undecided: "undecided";
|
|
6
|
+
}>;
|
|
7
|
+
export type TestingScopeDecision = z.infer<typeof TestingScopeDecisionSchema>;
|
|
8
|
+
export declare const TestingScopeSchema: z.ZodObject<{
|
|
9
|
+
e2e: z.ZodEnum<{
|
|
10
|
+
"in-scope": "in-scope";
|
|
11
|
+
"out-of-scope": "out-of-scope";
|
|
12
|
+
undecided: "undecided";
|
|
13
|
+
}>;
|
|
14
|
+
api: z.ZodEnum<{
|
|
15
|
+
"in-scope": "in-scope";
|
|
16
|
+
"out-of-scope": "out-of-scope";
|
|
17
|
+
undecided: "undecided";
|
|
18
|
+
}>;
|
|
19
|
+
a11y: z.ZodEnum<{
|
|
20
|
+
"in-scope": "in-scope";
|
|
21
|
+
"out-of-scope": "out-of-scope";
|
|
22
|
+
undecided: "undecided";
|
|
23
|
+
}>;
|
|
24
|
+
security: z.ZodEnum<{
|
|
25
|
+
"in-scope": "in-scope";
|
|
26
|
+
"out-of-scope": "out-of-scope";
|
|
27
|
+
undecided: "undecided";
|
|
28
|
+
}>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
export type TestingScope = z.infer<typeof TestingScopeSchema>;
|
|
31
|
+
export declare const SourceConfigSchema: z.ZodObject<{
|
|
32
|
+
path: z.ZodString;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
export type SourceConfig = z.infer<typeof SourceConfigSchema>;
|
|
35
|
+
export declare const ApiConfigSchema: z.ZodObject<{
|
|
36
|
+
contract: z.ZodLiteral<"openapi">;
|
|
37
|
+
source: z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"discover">, z.ZodLiteral<"synthesize">]>;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
export type ApiConfig = z.infer<typeof ApiConfigSchema>;
|
|
40
|
+
export declare const EnvironmentConfigSchema: z.ZodObject<{
|
|
41
|
+
baseUrl: z.ZodString;
|
|
42
|
+
allowlist: z.ZodArray<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
export type EnvironmentConfig = z.infer<typeof EnvironmentConfigSchema>;
|
|
45
|
+
export declare const IdentityAuthSchema: z.ZodEnum<{
|
|
46
|
+
"cdp-attach": "cdp-attach";
|
|
47
|
+
"storage-state": "storage-state";
|
|
48
|
+
}>;
|
|
49
|
+
export type IdentityAuth = z.infer<typeof IdentityAuthSchema>;
|
|
50
|
+
export declare const LoginSelectorsSchema: z.ZodObject<{
|
|
51
|
+
username: z.ZodOptional<z.ZodString>;
|
|
52
|
+
password: z.ZodOptional<z.ZodString>;
|
|
53
|
+
submit: z.ZodOptional<z.ZodString>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
export type LoginSelectors = z.infer<typeof LoginSelectorsSchema>;
|
|
56
|
+
export declare const IdentityConfigSchema: z.ZodObject<{
|
|
57
|
+
auth: z.ZodEnum<{
|
|
58
|
+
"cdp-attach": "cdp-attach";
|
|
59
|
+
"storage-state": "storage-state";
|
|
60
|
+
}>;
|
|
61
|
+
secret: z.ZodString;
|
|
62
|
+
loginUrl: z.ZodOptional<z.ZodString>;
|
|
63
|
+
username: z.ZodOptional<z.ZodString>;
|
|
64
|
+
selectors: z.ZodOptional<z.ZodObject<{
|
|
65
|
+
username: z.ZodOptional<z.ZodString>;
|
|
66
|
+
password: z.ZodOptional<z.ZodString>;
|
|
67
|
+
submit: z.ZodOptional<z.ZodString>;
|
|
68
|
+
}, z.core.$strip>>;
|
|
69
|
+
}, z.core.$strip>;
|
|
70
|
+
export type IdentityConfig = z.infer<typeof IdentityConfigSchema>;
|
|
71
|
+
export declare const DataStrategySchema: z.ZodEnum<{
|
|
72
|
+
disposable: "disposable";
|
|
73
|
+
"reset-endpoint": "reset-endpoint";
|
|
74
|
+
manual: "manual";
|
|
75
|
+
}>;
|
|
76
|
+
export type DataStrategy = z.infer<typeof DataStrategySchema>;
|
|
77
|
+
export declare const DataConfigSchema: z.ZodObject<{
|
|
78
|
+
strategy: z.ZodEnum<{
|
|
79
|
+
disposable: "disposable";
|
|
80
|
+
"reset-endpoint": "reset-endpoint";
|
|
81
|
+
manual: "manual";
|
|
82
|
+
}>;
|
|
83
|
+
ownerMarker: z.ZodString;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
export type DataConfig = z.infer<typeof DataConfigSchema>;
|
|
86
|
+
export declare const SelectorPolicySchema: z.ZodEnum<{
|
|
87
|
+
"playwright-default": "playwright-default";
|
|
88
|
+
"testid-first": "testid-first";
|
|
89
|
+
"strict-no-css": "strict-no-css";
|
|
90
|
+
}>;
|
|
91
|
+
export type SelectorPolicy = z.infer<typeof SelectorPolicySchema>;
|
|
92
|
+
export declare const SelectorsConfigSchema: z.ZodObject<{
|
|
93
|
+
policy: z.ZodEnum<{
|
|
94
|
+
"playwright-default": "playwright-default";
|
|
95
|
+
"testid-first": "testid-first";
|
|
96
|
+
"strict-no-css": "strict-no-css";
|
|
97
|
+
}>;
|
|
98
|
+
testIdAttribute: z.ZodString;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export type SelectorsConfig = z.infer<typeof SelectorsConfigSchema>;
|
|
101
|
+
export declare const AgentsConfigSchema: z.ZodObject<{
|
|
102
|
+
parallelism: z.ZodNumber;
|
|
103
|
+
spokeTimeoutSeconds: z.ZodNumber;
|
|
104
|
+
retries: z.ZodNumber;
|
|
105
|
+
}, z.core.$strip>;
|
|
106
|
+
export type AgentsConfig = z.infer<typeof AgentsConfigSchema>;
|
|
107
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
108
|
+
schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
|
|
109
|
+
testing: z.ZodObject<{
|
|
110
|
+
e2e: z.ZodEnum<{
|
|
111
|
+
"in-scope": "in-scope";
|
|
112
|
+
"out-of-scope": "out-of-scope";
|
|
113
|
+
undecided: "undecided";
|
|
114
|
+
}>;
|
|
115
|
+
api: z.ZodEnum<{
|
|
116
|
+
"in-scope": "in-scope";
|
|
117
|
+
"out-of-scope": "out-of-scope";
|
|
118
|
+
undecided: "undecided";
|
|
119
|
+
}>;
|
|
120
|
+
a11y: z.ZodEnum<{
|
|
121
|
+
"in-scope": "in-scope";
|
|
122
|
+
"out-of-scope": "out-of-scope";
|
|
123
|
+
undecided: "undecided";
|
|
124
|
+
}>;
|
|
125
|
+
security: z.ZodEnum<{
|
|
126
|
+
"in-scope": "in-scope";
|
|
127
|
+
"out-of-scope": "out-of-scope";
|
|
128
|
+
undecided: "undecided";
|
|
129
|
+
}>;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
source: z.ZodOptional<z.ZodObject<{
|
|
132
|
+
path: z.ZodString;
|
|
133
|
+
}, z.core.$strip>>;
|
|
134
|
+
api: z.ZodOptional<z.ZodObject<{
|
|
135
|
+
contract: z.ZodLiteral<"openapi">;
|
|
136
|
+
source: z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<"discover">, z.ZodLiteral<"synthesize">]>;
|
|
137
|
+
}, z.core.$strip>>;
|
|
138
|
+
environments: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
139
|
+
baseUrl: z.ZodString;
|
|
140
|
+
allowlist: z.ZodArray<z.ZodString>;
|
|
141
|
+
}, z.core.$strip>>;
|
|
142
|
+
identities: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
143
|
+
auth: z.ZodEnum<{
|
|
144
|
+
"cdp-attach": "cdp-attach";
|
|
145
|
+
"storage-state": "storage-state";
|
|
146
|
+
}>;
|
|
147
|
+
secret: z.ZodString;
|
|
148
|
+
loginUrl: z.ZodOptional<z.ZodString>;
|
|
149
|
+
username: z.ZodOptional<z.ZodString>;
|
|
150
|
+
selectors: z.ZodOptional<z.ZodObject<{
|
|
151
|
+
username: z.ZodOptional<z.ZodString>;
|
|
152
|
+
password: z.ZodOptional<z.ZodString>;
|
|
153
|
+
submit: z.ZodOptional<z.ZodString>;
|
|
154
|
+
}, z.core.$strip>>;
|
|
155
|
+
}, z.core.$strip>>;
|
|
156
|
+
data: z.ZodObject<{
|
|
157
|
+
strategy: z.ZodEnum<{
|
|
158
|
+
disposable: "disposable";
|
|
159
|
+
"reset-endpoint": "reset-endpoint";
|
|
160
|
+
manual: "manual";
|
|
161
|
+
}>;
|
|
162
|
+
ownerMarker: z.ZodString;
|
|
163
|
+
}, z.core.$strip>;
|
|
164
|
+
selectors: z.ZodObject<{
|
|
165
|
+
policy: z.ZodEnum<{
|
|
166
|
+
"playwright-default": "playwright-default";
|
|
167
|
+
"testid-first": "testid-first";
|
|
168
|
+
"strict-no-css": "strict-no-css";
|
|
169
|
+
}>;
|
|
170
|
+
testIdAttribute: z.ZodString;
|
|
171
|
+
}, z.core.$strip>;
|
|
172
|
+
agents: z.ZodObject<{
|
|
173
|
+
parallelism: z.ZodNumber;
|
|
174
|
+
spokeTimeoutSeconds: z.ZodNumber;
|
|
175
|
+
retries: z.ZodNumber;
|
|
176
|
+
}, z.core.$strip>;
|
|
177
|
+
}, z.core.$strip>;
|
|
178
|
+
export type Config = z.infer<typeof ConfigSchema>;
|
|
179
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,0BAA0B;;;;EAAoD,CAAC;AAC5F,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;iBAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;iBAE7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB;;;EAA0C,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;iBAmB7B,CAAC;AACL,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;;EAAqD,CAAC;AACrF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,gBAAgB;;;;;;;iBAG3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;EAAkE,CAAC;AACpG,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,qBAAqB;;;;;;;iBAGhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBrB,CAAC;AACL,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Copyright The QA-AI-STLC Authors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { RelativePathSchema } from './primitives.js';
|
|
5
|
+
import { SCHEMA_VERSION, SchemaVersionSchema } from './version.js';
|
|
6
|
+
export const TestingScopeDecisionSchema = z.enum(['in-scope', 'out-of-scope', 'undecided']);
|
|
7
|
+
export const TestingScopeSchema = z.object({
|
|
8
|
+
e2e: TestingScopeDecisionSchema,
|
|
9
|
+
api: TestingScopeDecisionSchema,
|
|
10
|
+
a11y: TestingScopeDecisionSchema,
|
|
11
|
+
security: TestingScopeDecisionSchema,
|
|
12
|
+
});
|
|
13
|
+
export const SourceConfigSchema = z.object({
|
|
14
|
+
path: RelativePathSchema,
|
|
15
|
+
});
|
|
16
|
+
// v1 supports an OpenAPI 3.x contract only (development plan section 2.7); GraphQL and other
|
|
17
|
+
// contract formats are deferred.
|
|
18
|
+
export const ApiConfigSchema = z.object({
|
|
19
|
+
contract: z.literal('openapi'),
|
|
20
|
+
source: z.union([z.string().min(1), z.literal('discover'), z.literal('synthesize')]),
|
|
21
|
+
});
|
|
22
|
+
export const EnvironmentConfigSchema = z.object({
|
|
23
|
+
baseUrl: z.string().min(1),
|
|
24
|
+
allowlist: z.array(z.string().min(1)).min(1),
|
|
25
|
+
});
|
|
26
|
+
export const IdentityAuthSchema = z.enum(['cdp-attach', 'storage-state']);
|
|
27
|
+
// A missing selector falls back to a generic default (development plan section 6.2); given only
|
|
28
|
+
// when the application's login form does not match it.
|
|
29
|
+
export const LoginSelectorsSchema = z.object({
|
|
30
|
+
username: z.string().min(1).optional(),
|
|
31
|
+
password: z.string().min(1).optional(),
|
|
32
|
+
submit: z.string().min(1).optional(),
|
|
33
|
+
});
|
|
34
|
+
export const IdentityConfigSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
auth: IdentityAuthSchema,
|
|
37
|
+
// The name of an environment variable holding the credential, never the credential itself
|
|
38
|
+
// (AGENTS.md 5.8, 14): for example `QA_ADMIN_PASSWORD`.
|
|
39
|
+
secret: z.string().regex(/^QA_[A-Z0-9_]+$/, 'must be a QA_-prefixed environment variable name'),
|
|
40
|
+
// Scripted login only ("storage-state" auth, development plan section 6.2); "cdp-attach"
|
|
41
|
+
// reuses a session the operator already signed into and needs neither.
|
|
42
|
+
loginUrl: z.string().min(1).optional(),
|
|
43
|
+
username: z.string().min(1).optional(),
|
|
44
|
+
selectors: LoginSelectorsSchema.optional(),
|
|
45
|
+
})
|
|
46
|
+
.refine((identity) => identity.auth !== 'storage-state' || identity.loginUrl !== undefined, {
|
|
47
|
+
message: '"loginUrl" is required when auth is "storage-state"',
|
|
48
|
+
path: ['loginUrl'],
|
|
49
|
+
})
|
|
50
|
+
.refine((identity) => identity.auth !== 'storage-state' || identity.username !== undefined, {
|
|
51
|
+
message: '"username" is required when auth is "storage-state"',
|
|
52
|
+
path: ['username'],
|
|
53
|
+
});
|
|
54
|
+
export const DataStrategySchema = z.enum(['disposable', 'reset-endpoint', 'manual']);
|
|
55
|
+
export const DataConfigSchema = z.object({
|
|
56
|
+
strategy: DataStrategySchema,
|
|
57
|
+
ownerMarker: z.string().min(1),
|
|
58
|
+
});
|
|
59
|
+
export const SelectorPolicySchema = z.enum(['playwright-default', 'testid-first', 'strict-no-css']);
|
|
60
|
+
export const SelectorsConfigSchema = z.object({
|
|
61
|
+
policy: SelectorPolicySchema,
|
|
62
|
+
testIdAttribute: z.string().min(1),
|
|
63
|
+
});
|
|
64
|
+
export const AgentsConfigSchema = z.object({
|
|
65
|
+
parallelism: z.number().int().positive(),
|
|
66
|
+
spokeTimeoutSeconds: z.number().int().positive(),
|
|
67
|
+
retries: z.number().int().nonnegative(),
|
|
68
|
+
});
|
|
69
|
+
export const ConfigSchema = z
|
|
70
|
+
.object({
|
|
71
|
+
schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
|
|
72
|
+
testing: TestingScopeSchema,
|
|
73
|
+
source: SourceConfigSchema.optional(),
|
|
74
|
+
api: ApiConfigSchema.optional(),
|
|
75
|
+
environments: z.record(z.string().min(1), EnvironmentConfigSchema),
|
|
76
|
+
identities: z.record(z.string().min(1), IdentityConfigSchema),
|
|
77
|
+
data: DataConfigSchema,
|
|
78
|
+
selectors: SelectorsConfigSchema,
|
|
79
|
+
agents: AgentsConfigSchema,
|
|
80
|
+
})
|
|
81
|
+
// The testing scope survey (development plan section 2.7) is the single source of truth for
|
|
82
|
+
// whether a contract or a source checkout is required; a config that claims API is in scope
|
|
83
|
+
// without a contract source, or security code-assisted checks without `source.path`, would let
|
|
84
|
+
// `qa doctor` pass while the pipeline has nothing to run against.
|
|
85
|
+
.refine((config) => config.testing.api !== 'in-scope' || config.api !== undefined, {
|
|
86
|
+
message: '"api" is required when testing.api is "in-scope"',
|
|
87
|
+
path: ['api'],
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/defect.d.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const DefectSeverityProposalSchema: z.ZodEnum<{
|
|
3
|
+
blocker: "blocker";
|
|
4
|
+
critical: "critical";
|
|
5
|
+
major: "major";
|
|
6
|
+
minor: "minor";
|
|
7
|
+
trivial: "trivial";
|
|
8
|
+
}>;
|
|
9
|
+
export type DefectSeverityProposal = z.infer<typeof DefectSeverityProposalSchema>;
|
|
10
|
+
export declare const DefectCategorySchema: z.ZodEnum<{
|
|
11
|
+
api: "api";
|
|
12
|
+
security: "security";
|
|
13
|
+
functional: "functional";
|
|
14
|
+
ui: "ui";
|
|
15
|
+
accessibility: "accessibility";
|
|
16
|
+
performance: "performance";
|
|
17
|
+
}>;
|
|
18
|
+
export type DefectCategory = z.infer<typeof DefectCategorySchema>;
|
|
19
|
+
export declare const DefectStatusSchema: z.ZodEnum<{
|
|
20
|
+
draft: "draft";
|
|
21
|
+
accepted: "accepted";
|
|
22
|
+
rejected: "rejected";
|
|
23
|
+
}>;
|
|
24
|
+
export type DefectStatus = z.infer<typeof DefectStatusSchema>;
|
|
25
|
+
export declare const SecurityConfidenceSchema: z.ZodEnum<{
|
|
26
|
+
low: "low";
|
|
27
|
+
medium: "medium";
|
|
28
|
+
high: "high";
|
|
29
|
+
}>;
|
|
30
|
+
export type SecurityConfidence = z.infer<typeof SecurityConfidenceSchema>;
|
|
31
|
+
export declare const DefectDraftSchema: z.ZodObject<{
|
|
32
|
+
schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
|
|
33
|
+
id: z.ZodString;
|
|
34
|
+
title: z.ZodString;
|
|
35
|
+
severityProposal: z.ZodEnum<{
|
|
36
|
+
blocker: "blocker";
|
|
37
|
+
critical: "critical";
|
|
38
|
+
major: "major";
|
|
39
|
+
minor: "minor";
|
|
40
|
+
trivial: "trivial";
|
|
41
|
+
}>;
|
|
42
|
+
category: z.ZodEnum<{
|
|
43
|
+
api: "api";
|
|
44
|
+
security: "security";
|
|
45
|
+
functional: "functional";
|
|
46
|
+
ui: "ui";
|
|
47
|
+
accessibility: "accessibility";
|
|
48
|
+
performance: "performance";
|
|
49
|
+
}>;
|
|
50
|
+
steps: z.ZodArray<z.ZodString>;
|
|
51
|
+
expectedResult: z.ZodString;
|
|
52
|
+
actualResult: z.ZodString;
|
|
53
|
+
environment: z.ZodString;
|
|
54
|
+
requirementIds: z.ZodArray<z.ZodString>;
|
|
55
|
+
evidencePaths: z.ZodArray<z.ZodString>;
|
|
56
|
+
status: z.ZodEnum<{
|
|
57
|
+
draft: "draft";
|
|
58
|
+
accepted: "accepted";
|
|
59
|
+
rejected: "rejected";
|
|
60
|
+
}>;
|
|
61
|
+
createdAt: z.ZodISODateTime;
|
|
62
|
+
securityRiskArea: z.ZodOptional<z.ZodString>;
|
|
63
|
+
securityConfidence: z.ZodOptional<z.ZodEnum<{
|
|
64
|
+
low: "low";
|
|
65
|
+
medium: "medium";
|
|
66
|
+
high: "high";
|
|
67
|
+
}>>;
|
|
68
|
+
securitySuggestedRemediation: z.ZodOptional<z.ZodString>;
|
|
69
|
+
securityRegressionCheck: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export type DefectDraft = z.infer<typeof DefectDraftSchema>;
|
|
72
|
+
//# sourceMappingURL=defect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defect.d.ts","sourceRoot":"","sources":["../src/defect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,4BAA4B;;;;;;EAA+D,CAAC;AACzG,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAIlF,eAAO,MAAM,oBAAoB;;;;;;;EAO/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;;EAA4C,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,wBAAwB;;;;EAAoC,CAAC;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAK1E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuB1B,CAAC;AACL,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
package/dist/defect.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright The QA-AI-STLC Authors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { IdentifierSchema, IsoDateTimeSchema, RelativePathSchema } from './primitives.js';
|
|
5
|
+
import { SCHEMA_VERSION, SchemaVersionSchema } from './version.js';
|
|
6
|
+
export const DefectSeverityProposalSchema = z.enum(['blocker', 'critical', 'major', 'minor', 'trivial']);
|
|
7
|
+
// `security` findings from the on-demand audit (development plan section 2.7) enter the same
|
|
8
|
+
// defect-acceptance and RCA flow as every other category.
|
|
9
|
+
export const DefectCategorySchema = z.enum([
|
|
10
|
+
'functional',
|
|
11
|
+
'ui',
|
|
12
|
+
'accessibility',
|
|
13
|
+
'api',
|
|
14
|
+
'performance',
|
|
15
|
+
'security',
|
|
16
|
+
]);
|
|
17
|
+
export const DefectStatusSchema = z.enum(['draft', 'accepted', 'rejected']);
|
|
18
|
+
export const SecurityConfidenceSchema = z.enum(['low', 'medium', 'high']);
|
|
19
|
+
// A defect draft is tracker-neutral (AGENTS.md 2.3, development plan section 2.4): the operator
|
|
20
|
+
// files it in their own tracker. The `security*` fields are populated only for
|
|
21
|
+
// `category: "security"` drafts produced by the on-demand audit.
|
|
22
|
+
export const DefectDraftSchema = z
|
|
23
|
+
.object({
|
|
24
|
+
schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
|
|
25
|
+
id: IdentifierSchema,
|
|
26
|
+
title: z.string().min(1),
|
|
27
|
+
severityProposal: DefectSeverityProposalSchema,
|
|
28
|
+
category: DefectCategorySchema,
|
|
29
|
+
steps: z.array(z.string().min(1)).min(1),
|
|
30
|
+
expectedResult: z.string().min(1),
|
|
31
|
+
actualResult: z.string().min(1),
|
|
32
|
+
environment: z.string().min(1),
|
|
33
|
+
requirementIds: z.array(IdentifierSchema),
|
|
34
|
+
evidencePaths: z.array(RelativePathSchema),
|
|
35
|
+
status: DefectStatusSchema,
|
|
36
|
+
createdAt: IsoDateTimeSchema,
|
|
37
|
+
securityRiskArea: z.string().optional(),
|
|
38
|
+
securityConfidence: SecurityConfidenceSchema.optional(),
|
|
39
|
+
securitySuggestedRemediation: z.string().optional(),
|
|
40
|
+
securityRegressionCheck: z.string().optional(),
|
|
41
|
+
})
|
|
42
|
+
.refine((defect) => defect.category === 'security' || defect.securityRiskArea === undefined, {
|
|
43
|
+
message: 'security fields are only valid on a "security" category defect',
|
|
44
|
+
path: ['securityRiskArea'],
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=defect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defect.js","sourceRoot":"","sources":["../src/defect.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAGzG,6FAA6F;AAC7F,0DAA0D;AAC1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,YAAY;IACZ,IAAI;IACJ,eAAe;IACf,KAAK;IACL,aAAa;IACb,UAAU;CACX,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAG5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAG1E,gGAAgG;AAChG,+EAA+E;AAC/E,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,gBAAgB,EAAE,4BAA4B;IAC9C,QAAQ,EAAE,oBAAoB;IAC9B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAC1C,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,kBAAkB,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IACvD,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC;KACD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE;IAC3F,OAAO,EAAE,gEAAgE;IACzE,IAAI,EAAE,CAAC,kBAAkB,CAAC;CAC3B,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const EvidenceKindSchema: z.ZodEnum<{
|
|
3
|
+
screenshot: "screenshot";
|
|
4
|
+
trace: "trace";
|
|
5
|
+
"network-har": "network-har";
|
|
6
|
+
"console-log": "console-log";
|
|
7
|
+
video: "video";
|
|
8
|
+
other: "other";
|
|
9
|
+
}>;
|
|
10
|
+
export type EvidenceKind = z.infer<typeof EvidenceKindSchema>;
|
|
11
|
+
export declare const EvidenceSchema: z.ZodObject<{
|
|
12
|
+
schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
|
|
13
|
+
id: z.ZodString;
|
|
14
|
+
runId: z.ZodString;
|
|
15
|
+
stepId: z.ZodOptional<z.ZodString>;
|
|
16
|
+
kind: z.ZodEnum<{
|
|
17
|
+
screenshot: "screenshot";
|
|
18
|
+
trace: "trace";
|
|
19
|
+
"network-har": "network-har";
|
|
20
|
+
"console-log": "console-log";
|
|
21
|
+
video: "video";
|
|
22
|
+
other: "other";
|
|
23
|
+
}>;
|
|
24
|
+
path: z.ZodString;
|
|
25
|
+
sha256: z.ZodString;
|
|
26
|
+
createdAt: z.ZodISODateTime;
|
|
27
|
+
redacted: z.ZodBoolean;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
export type Evidence = z.infer<typeof EvidenceSchema>;
|
|
30
|
+
export declare const EvidenceQuarantineReceiptSchema: z.ZodObject<{
|
|
31
|
+
schemaVersion: z.ZodDefault<z.ZodLiteral<1>>;
|
|
32
|
+
id: z.ZodString;
|
|
33
|
+
runId: z.ZodString;
|
|
34
|
+
stepId: z.ZodOptional<z.ZodString>;
|
|
35
|
+
kind: z.ZodEnum<{
|
|
36
|
+
screenshot: "screenshot";
|
|
37
|
+
trace: "trace";
|
|
38
|
+
"network-har": "network-har";
|
|
39
|
+
"console-log": "console-log";
|
|
40
|
+
video: "video";
|
|
41
|
+
other: "other";
|
|
42
|
+
}>;
|
|
43
|
+
createdAt: z.ZodISODateTime;
|
|
44
|
+
reason: z.ZodLiteral<"secret-detected">;
|
|
45
|
+
patterns: z.ZodArray<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export type EvidenceQuarantineReceipt = z.infer<typeof EvidenceQuarantineReceiptSchema>;
|
|
48
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,kBAAkB;;;;;;;EAO7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;iBAUzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAKtD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;iBAS1C,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
|
package/dist/evidence.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright The QA-AI-STLC Authors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { IdentifierSchema, IsoDateTimeSchema, RelativePathSchema, Sha256HexSchema } from './primitives.js';
|
|
5
|
+
import { SCHEMA_VERSION, SchemaVersionSchema } from './version.js';
|
|
6
|
+
export const EvidenceKindSchema = z.enum([
|
|
7
|
+
'screenshot',
|
|
8
|
+
'trace',
|
|
9
|
+
'network-har',
|
|
10
|
+
'console-log',
|
|
11
|
+
'video',
|
|
12
|
+
'other',
|
|
13
|
+
]);
|
|
14
|
+
// Evidence is created and hashed by the engine only (AGENTS.md 2.5, 12.5); an agent can reference
|
|
15
|
+
// a file here but cannot register one that the engine did not itself write and scan.
|
|
16
|
+
export const EvidenceSchema = z.object({
|
|
17
|
+
schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
|
|
18
|
+
id: IdentifierSchema,
|
|
19
|
+
runId: IdentifierSchema,
|
|
20
|
+
stepId: IdentifierSchema.optional(),
|
|
21
|
+
kind: EvidenceKindSchema,
|
|
22
|
+
path: RelativePathSchema,
|
|
23
|
+
sha256: Sha256HexSchema,
|
|
24
|
+
createdAt: IsoDateTimeSchema,
|
|
25
|
+
redacted: z.boolean(),
|
|
26
|
+
});
|
|
27
|
+
// Written in place of an `Evidence` record when a secret scan finds a leak (AGENTS.md 12.5): the
|
|
28
|
+
// leaking content is never written to disk, and this receipt names only the kind of pattern
|
|
29
|
+
// found, never the matched value.
|
|
30
|
+
export const EvidenceQuarantineReceiptSchema = z.object({
|
|
31
|
+
schemaVersion: SchemaVersionSchema.default(SCHEMA_VERSION),
|
|
32
|
+
id: IdentifierSchema,
|
|
33
|
+
runId: IdentifierSchema,
|
|
34
|
+
stepId: IdentifierSchema.optional(),
|
|
35
|
+
kind: EvidenceKindSchema,
|
|
36
|
+
createdAt: IsoDateTimeSchema,
|
|
37
|
+
reason: z.literal('secret-detected'),
|
|
38
|
+
patterns: z.array(z.string().min(1)).min(1),
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC;IACvC,YAAY;IACZ,OAAO;IACP,aAAa;IACb,aAAa;IACb,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAGH,kGAAkG;AAClG,qFAAqF;AACrF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,eAAe;IACvB,SAAS,EAAE,iBAAiB;IAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;CACtB,CAAC,CAAC;AAGH,iGAAiG;AACjG,4FAA4F;AAC5F,kCAAkC;AAClC,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1D,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,kBAAkB;IACxB,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5C,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './version.js';
|
|
2
|
+
export * from './primitives.js';
|
|
3
|
+
export * from './artifacts.js';
|
|
4
|
+
export * from './config.js';
|
|
5
|
+
export * from './scope.js';
|
|
6
|
+
export * from './test-case.js';
|
|
7
|
+
export * from './evidence.js';
|
|
8
|
+
export * from './run-result.js';
|
|
9
|
+
export * from './defect.js';
|
|
10
|
+
export * from './rca.js';
|
|
11
|
+
export * from './selector-registry.js';
|
|
12
|
+
export * from './api-surface.js';
|
|
13
|
+
export * from './approval-ledger.js';
|
|
14
|
+
export * from './manifest.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Copyright The QA-AI-STLC Authors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
export * from './version.js';
|
|
4
|
+
export * from './primitives.js';
|
|
5
|
+
export * from './artifacts.js';
|
|
6
|
+
export * from './config.js';
|
|
7
|
+
export * from './scope.js';
|
|
8
|
+
export * from './test-case.js';
|
|
9
|
+
export * from './evidence.js';
|
|
10
|
+
export * from './run-result.js';
|
|
11
|
+
export * from './defect.js';
|
|
12
|
+
export * from './rca.js';
|
|
13
|
+
export * from './selector-registry.js';
|
|
14
|
+
export * from './api-surface.js';
|
|
15
|
+
export * from './approval-ledger.js';
|
|
16
|
+
export * from './manifest.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
"contractSha256": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
18
|
+
},
|
|
19
|
+
"endpoints": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"items": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"properties": {
|
|
24
|
+
"method": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"enum": [
|
|
27
|
+
"GET",
|
|
28
|
+
"POST",
|
|
29
|
+
"PUT",
|
|
30
|
+
"PATCH",
|
|
31
|
+
"DELETE",
|
|
32
|
+
"HEAD",
|
|
33
|
+
"OPTIONS"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"path": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1
|
|
39
|
+
},
|
|
40
|
+
"operationId": {
|
|
41
|
+
"type": "string"
|
|
42
|
+
},
|
|
43
|
+
"source": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"enum": [
|
|
46
|
+
"openapi",
|
|
47
|
+
"discovered",
|
|
48
|
+
"synthesized"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"required": [
|
|
53
|
+
"method",
|
|
54
|
+
"path",
|
|
55
|
+
"source"
|
|
56
|
+
],
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"required": [
|
|
62
|
+
"schemaVersion",
|
|
63
|
+
"generatedAt",
|
|
64
|
+
"endpoints"
|
|
65
|
+
],
|
|
66
|
+
"additionalProperties": false
|
|
67
|
+
}
|