@kb-labs/qa-entry 2.94.0 → 2.96.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/baseline-diff.d.ts +14 -0
- package/dist/cli/commands/baseline-diff.js +40 -0
- package/dist/cli/commands/baseline-diff.js.map +1 -0
- package/dist/cli/commands/baseline-status.d.ts +10 -5
- package/dist/cli/commands/baseline-status.js +14 -17
- package/dist/cli/commands/baseline-status.js.map +1 -1
- package/dist/cli/commands/baseline-update.d.ts +10 -5
- package/dist/cli/commands/baseline-update.js +26 -18
- package/dist/cli/commands/baseline-update.js.map +1 -1
- package/dist/cli/commands/flags.d.ts +117 -132
- package/dist/cli/commands/flags.js +65 -79
- package/dist/cli/commands/flags.js.map +1 -1
- package/dist/cli/commands/qa-check.d.ts +13 -34
- package/dist/cli/commands/qa-check.js +26 -106
- package/dist/cli/commands/qa-check.js.map +1 -1
- package/dist/cli/commands/qa-gate.d.ts +19 -0
- package/dist/cli/commands/qa-gate.js +36 -0
- package/dist/cli/commands/qa-gate.js.map +1 -0
- package/dist/cli/commands/qa-history.d.ts +15 -5
- package/dist/cli/commands/qa-history.js +13 -24
- package/dist/cli/commands/qa-history.js.map +1 -1
- package/dist/cli/commands/qa-regressions.d.ts +10 -5
- package/dist/cli/commands/qa-regressions.js +15 -18
- package/dist/cli/commands/qa-regressions.js.map +1 -1
- package/dist/cli/commands/qa-run.d.ts +18 -11
- package/dist/cli/commands/qa-run.js +28 -141
- package/dist/cli/commands/qa-run.js.map +1 -1
- package/dist/cli/commands/qa-stats.d.ts +19 -0
- package/dist/cli/commands/qa-stats.js +43 -0
- package/dist/cli/commands/qa-stats.js.map +1 -0
- package/dist/cli/commands/qa-trends.d.ts +15 -5
- package/dist/cli/commands/qa-trends.js +15 -18
- package/dist/cli/commands/qa-trends.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +143 -291
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +74 -106
- package/dist/manifest.js +143 -291
- package/dist/manifest.js.map +1 -1
- package/dist/rest/handlers/baseline-diff-handler.d.ts +7 -27
- package/dist/rest/handlers/baseline-diff-handler.js +15 -41
- package/dist/rest/handlers/baseline-diff-handler.js.map +1 -1
- package/dist/rest/handlers/baseline-handler.d.ts +3 -13
- package/dist/rest/handlers/baseline-handler.js +10 -5
- package/dist/rest/handlers/baseline-handler.js.map +1 -1
- package/dist/rest/handlers/baseline-update-handler.d.ts +4 -14
- package/dist/rest/handlers/baseline-update-handler.js +15 -13
- package/dist/rest/handlers/baseline-update-handler.js.map +1 -1
- package/dist/rest/handlers/check-handler.d.ts +15 -0
- package/dist/rest/handlers/check-handler.js +28 -0
- package/dist/rest/handlers/check-handler.js.map +1 -0
- package/dist/rest/handlers/gate-handler.d.ts +13 -0
- package/dist/rest/handlers/gate-handler.js +28 -0
- package/dist/rest/handlers/gate-handler.js.map +1 -0
- package/dist/rest/handlers/history-handler.d.ts +3 -16
- package/dist/rest/handlers/history-handler.js +10 -11
- package/dist/rest/handlers/history-handler.js.map +1 -1
- package/dist/rest/handlers/package-timeline-handler.d.ts +5 -20
- package/dist/rest/handlers/package-timeline-handler.js +11 -7
- package/dist/rest/handlers/package-timeline-handler.js.map +1 -1
- package/dist/rest/handlers/regressions-handler.d.ts +2 -11
- package/dist/rest/handlers/regressions-handler.js +11 -5
- package/dist/rest/handlers/regressions-handler.js.map +1 -1
- package/dist/rest/handlers/run-handler.d.ts +10 -27
- package/dist/rest/handlers/run-handler.js +18 -63
- package/dist/rest/handlers/run-handler.js.map +1 -1
- package/dist/rest/handlers/{error-groups-handler.d.ts → stats-handler.d.ts} +5 -9
- package/dist/rest/handlers/stats-handler.js +21 -0
- package/dist/rest/handlers/stats-handler.js.map +1 -0
- package/dist/rest/handlers/summary-handler.d.ts +7 -20
- package/dist/rest/handlers/summary-handler.js +16 -26
- package/dist/rest/handlers/summary-handler.js.map +1 -1
- package/dist/rest/handlers/tasks-handler.d.ts +9 -0
- package/dist/rest/handlers/tasks-handler.js +38 -0
- package/dist/rest/handlers/tasks-handler.js.map +1 -0
- package/dist/rest/handlers/trends-handler.d.ts +4 -43
- package/dist/rest/handlers/trends-handler.js +11 -18
- package/dist/rest/handlers/trends-handler.js.map +1 -1
- package/dist/widgets/117.js +24 -1
- package/dist/widgets/{919.js → 215.js} +1 -1
- package/dist/widgets/370.js +1 -1
- package/dist/widgets/{805.js → 46.js} +92 -92
- package/dist/widgets/50.js +1 -1
- package/dist/widgets/62.js +96 -0
- package/dist/widgets/648.js +1 -0
- package/dist/widgets/669.js +1 -1
- package/dist/widgets/775.js +1 -1
- package/dist/widgets/78.js +1 -0
- package/dist/widgets/823.js +1 -0
- package/dist/widgets/968.js +2 -2
- package/dist/widgets/__federation_expose_QADashboard.js +1 -1
- package/dist/widgets/mf-manifest.json +32 -31
- package/dist/widgets/mf-stats.json +32 -31
- package/dist/widgets/remoteEntry.js +2 -2
- package/package.json +11 -8
- package/dist/cli/commands/qa-save.d.ts +0 -10
- package/dist/cli/commands/qa-save.js +0 -69
- package/dist/cli/commands/qa-save.js.map +0 -1
- package/dist/rest/handlers/details-handler.d.ts +0 -61
- package/dist/rest/handlers/details-handler.js +0 -70
- package/dist/rest/handlers/details-handler.js.map +0 -1
- package/dist/rest/handlers/error-groups-handler.js +0 -17
- package/dist/rest/handlers/error-groups-handler.js.map +0 -1
- package/dist/rest/handlers/latest-handler.d.ts +0 -22
- package/dist/rest/handlers/latest-handler.js +0 -17
- package/dist/rest/handlers/latest-handler.js.map +0 -1
- package/dist/rest/handlers/run-check-handler.d.ts +0 -20
- package/dist/rest/handlers/run-check-handler.js +0 -58
- package/dist/rest/handlers/run-check-handler.js.map +0 -1
- package/dist/widgets/418.js +0 -38
- package/dist/widgets/451.js +0 -1
- package/dist/widgets/694.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1,138 +1,121 @@
|
|
|
1
|
-
import { combinePermissions, kbPlatformPreset, defineCommandFlags } from '@kb-labs/sdk';
|
|
1
|
+
import { defineFlags, combinePermissions, kbPlatformPreset, defineCommandFlags } from '@kb-labs/sdk';
|
|
2
2
|
import { QA_ROUTES, QA_BASE_PATH } from '@kb-labs/qa-contracts';
|
|
3
3
|
|
|
4
4
|
// src/manifest.ts
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
json: {
|
|
10
|
-
type: "boolean",
|
|
11
|
-
description: JSON_FLAG_DESCRIPTION,
|
|
12
|
-
default: false
|
|
13
|
-
},
|
|
14
|
-
"skip-check": {
|
|
15
|
-
type: "array",
|
|
16
|
-
description: "Skip specific check IDs (e.g. --skip-check build --skip-check lint)"
|
|
5
|
+
var qaRunFlags = defineFlags({
|
|
6
|
+
tasks: {
|
|
7
|
+
type: "string",
|
|
8
|
+
description: "Comma-separated tasks to run (default: build,lint,type-check,test)"
|
|
17
9
|
},
|
|
18
|
-
|
|
10
|
+
save: {
|
|
19
11
|
type: "boolean",
|
|
20
|
-
description: "
|
|
21
|
-
default:
|
|
12
|
+
description: "Save snapshot to history",
|
|
13
|
+
default: true
|
|
22
14
|
},
|
|
23
|
-
|
|
15
|
+
json: {
|
|
24
16
|
type: "boolean",
|
|
25
|
-
description: "
|
|
17
|
+
description: "Output JSON",
|
|
26
18
|
default: false
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
var qaCheckFlags = defineFlags({
|
|
22
|
+
save: {
|
|
23
|
+
type: "boolean",
|
|
24
|
+
description: "Save snapshot to history",
|
|
25
|
+
default: true
|
|
27
26
|
},
|
|
28
|
-
|
|
29
|
-
type: "string",
|
|
30
|
-
description: "Filter by package name",
|
|
31
|
-
alias: "p"
|
|
32
|
-
},
|
|
33
|
-
repo: {
|
|
34
|
-
type: "string",
|
|
35
|
-
description: "Filter by repo name",
|
|
36
|
-
alias: "r"
|
|
37
|
-
},
|
|
38
|
-
scope: {
|
|
39
|
-
type: "string",
|
|
40
|
-
description: "Filter by npm scope",
|
|
41
|
-
alias: "s"
|
|
42
|
-
},
|
|
43
|
-
summary: {
|
|
27
|
+
json: {
|
|
44
28
|
type: "boolean",
|
|
45
|
-
description: "
|
|
29
|
+
description: "Output JSON",
|
|
46
30
|
default: false
|
|
47
31
|
}
|
|
48
|
-
};
|
|
49
|
-
var
|
|
32
|
+
});
|
|
33
|
+
var qaStatsFlags = defineFlags({
|
|
34
|
+
save: {
|
|
35
|
+
type: "boolean",
|
|
36
|
+
description: "Save snapshot to history",
|
|
37
|
+
default: true
|
|
38
|
+
},
|
|
50
39
|
json: {
|
|
51
40
|
type: "boolean",
|
|
52
|
-
description:
|
|
41
|
+
description: "Output JSON",
|
|
53
42
|
default: false
|
|
54
43
|
}
|
|
55
|
-
};
|
|
56
|
-
var
|
|
57
|
-
|
|
44
|
+
});
|
|
45
|
+
var qaGateFlags = defineFlags({
|
|
46
|
+
save: {
|
|
58
47
|
type: "boolean",
|
|
59
|
-
description:
|
|
48
|
+
description: "Save snapshot to history",
|
|
60
49
|
default: false
|
|
61
50
|
},
|
|
51
|
+
json: {
|
|
52
|
+
type: "boolean",
|
|
53
|
+
description: "Output JSON",
|
|
54
|
+
default: false
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
var qaHistoryFlags = defineFlags({
|
|
62
58
|
limit: {
|
|
63
59
|
type: "number",
|
|
64
|
-
description: "
|
|
60
|
+
description: "Max entries to show",
|
|
65
61
|
default: 20
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
var qaTrendsFlags = {
|
|
62
|
+
},
|
|
69
63
|
json: {
|
|
70
64
|
type: "boolean",
|
|
71
|
-
description:
|
|
65
|
+
description: "Output JSON",
|
|
72
66
|
default: false
|
|
73
|
-
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
var qaTrendsFlags = defineFlags({
|
|
74
70
|
window: {
|
|
75
71
|
type: "number",
|
|
76
|
-
description: "Number of entries
|
|
72
|
+
description: "Number of history entries to analyze",
|
|
77
73
|
default: 10
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
var qaRegressionsFlags = {
|
|
74
|
+
},
|
|
81
75
|
json: {
|
|
82
76
|
type: "boolean",
|
|
83
|
-
description:
|
|
77
|
+
description: "Output JSON",
|
|
84
78
|
default: false
|
|
85
79
|
}
|
|
86
|
-
};
|
|
87
|
-
var
|
|
80
|
+
});
|
|
81
|
+
var qaRegressionsFlags = defineFlags({
|
|
88
82
|
json: {
|
|
89
83
|
type: "boolean",
|
|
90
|
-
description:
|
|
84
|
+
description: "Output JSON",
|
|
91
85
|
default: false
|
|
92
86
|
}
|
|
93
|
-
};
|
|
94
|
-
var
|
|
87
|
+
});
|
|
88
|
+
var baselineUpdateFlags = defineFlags({
|
|
95
89
|
json: {
|
|
96
90
|
type: "boolean",
|
|
97
|
-
description:
|
|
91
|
+
description: "Output JSON",
|
|
98
92
|
default: false
|
|
99
93
|
}
|
|
100
|
-
};
|
|
101
|
-
var
|
|
102
|
-
id: {
|
|
103
|
-
type: "string",
|
|
104
|
-
description: "Check ID to run (must match a check in qa.checks config)",
|
|
105
|
-
demandOption: true
|
|
106
|
-
},
|
|
107
|
-
base: {
|
|
108
|
-
type: "string",
|
|
109
|
-
description: "Base branch/commit for diff strategies (diffOnly, newFiles). Default: main",
|
|
110
|
-
default: "main"
|
|
111
|
-
},
|
|
112
|
-
context: {
|
|
113
|
-
type: "string",
|
|
114
|
-
description: 'JSON context to attach to history entry (e.g. {"taskId":"123"})'
|
|
115
|
-
},
|
|
94
|
+
});
|
|
95
|
+
var baselineStatusFlags = defineFlags({
|
|
116
96
|
json: {
|
|
117
97
|
type: "boolean",
|
|
118
|
-
description:
|
|
98
|
+
description: "Output JSON",
|
|
119
99
|
default: false
|
|
120
|
-
}
|
|
121
|
-
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
var baselineDiffFlags = defineFlags({
|
|
103
|
+
json: {
|
|
122
104
|
type: "boolean",
|
|
123
|
-
description: "
|
|
124
|
-
default:
|
|
105
|
+
description: "Output JSON",
|
|
106
|
+
default: false
|
|
125
107
|
}
|
|
126
|
-
};
|
|
108
|
+
});
|
|
127
109
|
var pluginPermissions = combinePermissions().with(kbPlatformPreset).withFs({
|
|
128
110
|
mode: "readWrite",
|
|
129
111
|
allow: ["**"]
|
|
112
|
+
}).withShell({
|
|
113
|
+
allow: ["kb-devkit", "git"]
|
|
130
114
|
}).withPlatform({
|
|
131
|
-
cache: ["qa:"],
|
|
132
115
|
analytics: true
|
|
133
116
|
}).withQuotas({
|
|
134
117
|
timeoutMs: 6e5,
|
|
135
|
-
memoryMb:
|
|
118
|
+
memoryMb: 512
|
|
136
119
|
}).build();
|
|
137
120
|
var manifest = {
|
|
138
121
|
schema: "kb.plugin/3",
|
|
@@ -141,260 +124,129 @@ var manifest = {
|
|
|
141
124
|
configSection: "qa",
|
|
142
125
|
display: {
|
|
143
126
|
name: "QA Plugin",
|
|
144
|
-
description: "
|
|
145
|
-
tags: ["qa", "quality", "baseline", "regression", "
|
|
127
|
+
description: "Smart wrapper around kb-devkit \u2014 history, trends, baseline diffing, and health UI",
|
|
128
|
+
tags: ["qa", "quality", "baseline", "regression", "devkit"]
|
|
146
129
|
},
|
|
147
130
|
platform: {
|
|
148
|
-
requires: [
|
|
131
|
+
requires: [],
|
|
149
132
|
optional: ["cache", "analytics", "logger"]
|
|
150
133
|
},
|
|
151
134
|
cli: {
|
|
135
|
+
groupMeta: [
|
|
136
|
+
{ path: "qa", describe: "Quality assurance powered by kb-devkit" },
|
|
137
|
+
{ path: "qa baseline", describe: "Baseline management" }
|
|
138
|
+
],
|
|
152
139
|
commands: [
|
|
153
140
|
{
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
describe: "Run
|
|
157
|
-
|
|
141
|
+
path: "qa run",
|
|
142
|
+
category: "Run",
|
|
143
|
+
describe: "Run devkit tasks and record results",
|
|
144
|
+
operationType: "execute",
|
|
158
145
|
handler: "./cli/commands/qa-run.js#default",
|
|
159
|
-
|
|
160
|
-
flags: defineCommandFlags(qaRunFlags),
|
|
146
|
+
flags: defineCommandFlags(qaRunFlags.schema),
|
|
161
147
|
permissions: pluginPermissions
|
|
162
148
|
},
|
|
163
149
|
{
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
describe: "Run
|
|
167
|
-
|
|
150
|
+
path: "qa check",
|
|
151
|
+
category: "Run",
|
|
152
|
+
describe: "Run devkit structural checks",
|
|
153
|
+
operationType: "analyze",
|
|
168
154
|
handler: "./cli/commands/qa-check.js#default",
|
|
169
|
-
|
|
170
|
-
|
|
155
|
+
flags: defineCommandFlags(qaCheckFlags.schema),
|
|
156
|
+
permissions: pluginPermissions
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
path: "qa stats",
|
|
160
|
+
category: "Run",
|
|
161
|
+
describe: "Show devkit health score and category breakdown",
|
|
162
|
+
operationType: "read",
|
|
163
|
+
handler: "./cli/commands/qa-stats.js#default",
|
|
164
|
+
flags: defineCommandFlags(qaStatsFlags.schema),
|
|
171
165
|
permissions: pluginPermissions
|
|
172
166
|
},
|
|
173
167
|
{
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
describe: "Run
|
|
177
|
-
|
|
178
|
-
handler: "./cli/commands/qa-
|
|
179
|
-
|
|
180
|
-
flags: defineCommandFlags(qaSaveFlags),
|
|
168
|
+
path: "qa gate",
|
|
169
|
+
category: "Run",
|
|
170
|
+
describe: "Run pre-commit gate check (exits 1 if violations found)",
|
|
171
|
+
operationType: "analyze",
|
|
172
|
+
handler: "./cli/commands/qa-gate.js#default",
|
|
173
|
+
flags: defineCommandFlags(qaGateFlags.schema),
|
|
181
174
|
permissions: pluginPermissions
|
|
182
175
|
},
|
|
183
176
|
{
|
|
184
|
-
|
|
185
|
-
|
|
177
|
+
path: "qa history",
|
|
178
|
+
category: "History",
|
|
186
179
|
describe: "Show QA run history",
|
|
187
|
-
|
|
180
|
+
operationType: "read",
|
|
188
181
|
handler: "./cli/commands/qa-history.js#default",
|
|
189
|
-
|
|
190
|
-
flags: defineCommandFlags(qaHistoryFlags),
|
|
182
|
+
flags: defineCommandFlags(qaHistoryFlags.schema),
|
|
191
183
|
permissions: pluginPermissions
|
|
192
184
|
},
|
|
193
185
|
{
|
|
194
|
-
|
|
195
|
-
|
|
186
|
+
path: "qa trends",
|
|
187
|
+
category: "History",
|
|
196
188
|
describe: "Show QA quality trends over time",
|
|
197
|
-
|
|
189
|
+
operationType: "read",
|
|
198
190
|
handler: "./cli/commands/qa-trends.js#default",
|
|
199
|
-
|
|
200
|
-
flags: defineCommandFlags(qaTrendsFlags),
|
|
191
|
+
flags: defineCommandFlags(qaTrendsFlags.schema),
|
|
201
192
|
permissions: pluginPermissions
|
|
202
193
|
},
|
|
203
194
|
{
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
describe: "Detect regressions since last
|
|
207
|
-
|
|
195
|
+
path: "qa regressions",
|
|
196
|
+
category: "History",
|
|
197
|
+
describe: "Detect regressions since last run",
|
|
198
|
+
operationType: "read",
|
|
208
199
|
handler: "./cli/commands/qa-regressions.js#default",
|
|
209
|
-
|
|
210
|
-
flags: defineCommandFlags(qaRegressionsFlags),
|
|
200
|
+
flags: defineCommandFlags(qaRegressionsFlags.schema),
|
|
211
201
|
permissions: pluginPermissions
|
|
212
202
|
},
|
|
213
203
|
{
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
describe: "Run
|
|
217
|
-
|
|
204
|
+
path: "qa baseline update",
|
|
205
|
+
category: "Baseline",
|
|
206
|
+
describe: "Run check + stats and save as new baseline",
|
|
207
|
+
operationType: "mutate",
|
|
218
208
|
handler: "./cli/commands/baseline-update.js#default",
|
|
219
|
-
|
|
220
|
-
flags: defineCommandFlags(baselineUpdateFlags),
|
|
209
|
+
flags: defineCommandFlags(baselineUpdateFlags.schema),
|
|
221
210
|
permissions: pluginPermissions
|
|
222
211
|
},
|
|
223
212
|
{
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
describe: "Show current baseline
|
|
227
|
-
|
|
213
|
+
path: "qa baseline status",
|
|
214
|
+
category: "Baseline",
|
|
215
|
+
describe: "Show current baseline",
|
|
216
|
+
operationType: "read",
|
|
228
217
|
handler: "./cli/commands/baseline-status.js#default",
|
|
229
|
-
|
|
230
|
-
|
|
218
|
+
flags: defineCommandFlags(baselineStatusFlags.schema),
|
|
219
|
+
permissions: pluginPermissions
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
path: "qa baseline diff",
|
|
223
|
+
category: "Baseline",
|
|
224
|
+
describe: "Diff current state against baseline",
|
|
225
|
+
operationType: "read",
|
|
226
|
+
handler: "./cli/commands/baseline-diff.js#default",
|
|
227
|
+
flags: defineCommandFlags(baselineDiffFlags.schema),
|
|
231
228
|
permissions: pluginPermissions
|
|
232
229
|
}
|
|
233
230
|
]
|
|
234
231
|
},
|
|
235
|
-
// REST API routes
|
|
236
232
|
rest: {
|
|
237
233
|
basePath: QA_BASE_PATH,
|
|
238
234
|
routes: [
|
|
239
|
-
|
|
240
|
-
{
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
},
|
|
251
|
-
|
|
252
|
-
{
|
|
253
|
-
method: "GET",
|
|
254
|
-
path: QA_ROUTES.LATEST,
|
|
255
|
-
handler: "./rest/handlers/latest-handler.js#default",
|
|
256
|
-
input: {
|
|
257
|
-
zod: "@kb-labs/qa-contracts#QALatestRequestSchema"
|
|
258
|
-
},
|
|
259
|
-
output: {
|
|
260
|
-
zod: "@kb-labs/qa-contracts#QALatestResponseSchema"
|
|
261
|
-
}
|
|
262
|
-
},
|
|
263
|
-
// GET /history
|
|
264
|
-
{
|
|
265
|
-
method: "GET",
|
|
266
|
-
path: QA_ROUTES.HISTORY,
|
|
267
|
-
handler: "./rest/handlers/history-handler.js#default",
|
|
268
|
-
input: {
|
|
269
|
-
zod: "@kb-labs/qa-contracts#QAHistoryRequestSchema"
|
|
270
|
-
},
|
|
271
|
-
output: {
|
|
272
|
-
zod: "@kb-labs/qa-contracts#QAHistoryResponseSchema"
|
|
273
|
-
}
|
|
274
|
-
},
|
|
275
|
-
// GET /trends
|
|
276
|
-
{
|
|
277
|
-
method: "GET",
|
|
278
|
-
path: QA_ROUTES.TRENDS,
|
|
279
|
-
handler: "./rest/handlers/trends-handler.js#default",
|
|
280
|
-
input: {
|
|
281
|
-
zod: "@kb-labs/qa-contracts#QATrendsRequestSchema"
|
|
282
|
-
},
|
|
283
|
-
output: {
|
|
284
|
-
zod: "@kb-labs/qa-contracts#QATrendsResponseSchema"
|
|
285
|
-
}
|
|
286
|
-
},
|
|
287
|
-
// GET /regressions
|
|
288
|
-
{
|
|
289
|
-
method: "GET",
|
|
290
|
-
path: QA_ROUTES.REGRESSIONS,
|
|
291
|
-
handler: "./rest/handlers/regressions-handler.js#default",
|
|
292
|
-
input: {
|
|
293
|
-
zod: "@kb-labs/qa-contracts#QARegressionsRequestSchema"
|
|
294
|
-
},
|
|
295
|
-
output: {
|
|
296
|
-
zod: "@kb-labs/qa-contracts#QARegressionsResponseSchema"
|
|
297
|
-
}
|
|
298
|
-
},
|
|
299
|
-
// GET /baseline
|
|
300
|
-
{
|
|
301
|
-
method: "GET",
|
|
302
|
-
path: QA_ROUTES.BASELINE,
|
|
303
|
-
handler: "./rest/handlers/baseline-handler.js#default",
|
|
304
|
-
input: {
|
|
305
|
-
zod: "@kb-labs/qa-contracts#QABaselineRequestSchema"
|
|
306
|
-
},
|
|
307
|
-
output: {
|
|
308
|
-
zod: "@kb-labs/qa-contracts#QABaselineResponseSchema"
|
|
309
|
-
}
|
|
310
|
-
},
|
|
311
|
-
// POST /run
|
|
312
|
-
{
|
|
313
|
-
method: "POST",
|
|
314
|
-
path: QA_ROUTES.RUN,
|
|
315
|
-
handler: "./rest/handlers/run-handler.js#default",
|
|
316
|
-
input: {
|
|
317
|
-
zod: "@kb-labs/qa-contracts#QARunRequestSchema"
|
|
318
|
-
},
|
|
319
|
-
output: {
|
|
320
|
-
zod: "@kb-labs/qa-contracts#QARunResponseSchema"
|
|
321
|
-
}
|
|
322
|
-
},
|
|
323
|
-
// GET /details — per-package details with error text
|
|
324
|
-
{
|
|
325
|
-
method: "GET",
|
|
326
|
-
path: QA_ROUTES.DETAILS,
|
|
327
|
-
handler: "./rest/handlers/details-handler.js#default",
|
|
328
|
-
input: {
|
|
329
|
-
zod: "@kb-labs/qa-contracts#QADetailsRequestSchema"
|
|
330
|
-
},
|
|
331
|
-
output: {
|
|
332
|
-
zod: "@kb-labs/qa-contracts#QADetailsResponseSchema"
|
|
333
|
-
}
|
|
334
|
-
},
|
|
335
|
-
// POST /run/check — run a single check type
|
|
336
|
-
{
|
|
337
|
-
method: "POST",
|
|
338
|
-
path: QA_ROUTES.RUN_CHECK,
|
|
339
|
-
handler: "./rest/handlers/run-check-handler.js#default",
|
|
340
|
-
input: {
|
|
341
|
-
zod: "@kb-labs/qa-contracts#QARunCheckRequestSchema"
|
|
342
|
-
},
|
|
343
|
-
output: {
|
|
344
|
-
zod: "@kb-labs/qa-contracts#QARunCheckResponseSchema"
|
|
345
|
-
}
|
|
346
|
-
},
|
|
347
|
-
// POST /baseline/update — update baseline from last run
|
|
348
|
-
{
|
|
349
|
-
method: "POST",
|
|
350
|
-
path: QA_ROUTES.BASELINE_UPDATE,
|
|
351
|
-
handler: "./rest/handlers/baseline-update-handler.js#default",
|
|
352
|
-
input: {
|
|
353
|
-
zod: "@kb-labs/qa-contracts#QABaselineUpdateRequestSchema"
|
|
354
|
-
},
|
|
355
|
-
output: {
|
|
356
|
-
zod: "@kb-labs/qa-contracts#QABaselineUpdateResponseSchema"
|
|
357
|
-
}
|
|
358
|
-
},
|
|
359
|
-
// GET /baseline/diff — diff current state vs baseline
|
|
360
|
-
{
|
|
361
|
-
method: "GET",
|
|
362
|
-
path: QA_ROUTES.BASELINE_DIFF,
|
|
363
|
-
handler: "./rest/handlers/baseline-diff-handler.js#default",
|
|
364
|
-
input: {
|
|
365
|
-
zod: "@kb-labs/qa-contracts#QABaselineDiffRequestSchema"
|
|
366
|
-
},
|
|
367
|
-
output: {
|
|
368
|
-
zod: "@kb-labs/qa-contracts#QABaselineDiffResponseSchema"
|
|
369
|
-
}
|
|
370
|
-
},
|
|
371
|
-
// GET /packages/:name/timeline — per-package QA timeline
|
|
372
|
-
{
|
|
373
|
-
method: "GET",
|
|
374
|
-
path: QA_ROUTES.PACKAGE_TIMELINE,
|
|
375
|
-
handler: "./rest/handlers/package-timeline-handler.js#default",
|
|
376
|
-
input: {
|
|
377
|
-
zod: "@kb-labs/qa-contracts#QAPackageTimelineRequestSchema"
|
|
378
|
-
},
|
|
379
|
-
output: {
|
|
380
|
-
zod: "@kb-labs/qa-contracts#QAPackageTimelineResponseSchema"
|
|
381
|
-
}
|
|
382
|
-
},
|
|
383
|
-
// GET /errors/groups — grouped errors by pattern
|
|
384
|
-
{
|
|
385
|
-
method: "GET",
|
|
386
|
-
path: QA_ROUTES.ERROR_GROUPS,
|
|
387
|
-
handler: "./rest/handlers/error-groups-handler.js#default",
|
|
388
|
-
input: {
|
|
389
|
-
zod: "@kb-labs/qa-contracts#QAErrorGroupsRequestSchema"
|
|
390
|
-
},
|
|
391
|
-
output: {
|
|
392
|
-
zod: "@kb-labs/qa-contracts#QAErrorGroupsResponseSchema"
|
|
393
|
-
}
|
|
394
|
-
}
|
|
235
|
+
{ method: "GET", path: QA_ROUTES.SUMMARY, handler: "./rest/handlers/summary-handler.js#default" },
|
|
236
|
+
{ method: "POST", path: QA_ROUTES.RUN, handler: "./rest/handlers/run-handler.js#default" },
|
|
237
|
+
{ method: "POST", path: QA_ROUTES.CHECK, handler: "./rest/handlers/check-handler.js#default" },
|
|
238
|
+
{ method: "GET", path: QA_ROUTES.STATS, handler: "./rest/handlers/stats-handler.js#default" },
|
|
239
|
+
{ method: "POST", path: QA_ROUTES.GATE, handler: "./rest/handlers/gate-handler.js#default" },
|
|
240
|
+
{ method: "GET", path: QA_ROUTES.HISTORY, handler: "./rest/handlers/history-handler.js#default" },
|
|
241
|
+
{ method: "GET", path: QA_ROUTES.TRENDS, handler: "./rest/handlers/trends-handler.js#default" },
|
|
242
|
+
{ method: "GET", path: QA_ROUTES.REGRESSIONS, handler: "./rest/handlers/regressions-handler.js#default" },
|
|
243
|
+
{ method: "GET", path: QA_ROUTES.BASELINE, handler: "./rest/handlers/baseline-handler.js#default" },
|
|
244
|
+
{ method: "POST", path: QA_ROUTES.BASELINE_UPDATE, handler: "./rest/handlers/baseline-update-handler.js#default" },
|
|
245
|
+
{ method: "GET", path: QA_ROUTES.BASELINE_DIFF, handler: "./rest/handlers/baseline-diff-handler.js#default" },
|
|
246
|
+
{ method: "GET", path: QA_ROUTES.PACKAGE_TIMELINE, handler: "./rest/handlers/package-timeline-handler.js#default" },
|
|
247
|
+
{ method: "GET", path: QA_ROUTES.TASKS, handler: "./rest/handlers/tasks-handler.js#default" }
|
|
395
248
|
]
|
|
396
249
|
},
|
|
397
|
-
// Studio V2 — Module Federation pages
|
|
398
250
|
studio: {
|
|
399
251
|
version: 2,
|
|
400
252
|
remoteName: "qaPlugin",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/flags.ts","../src/manifest.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * QA Plugin CLI flag definitions.\n * DRY: Define once, use in manifest and command handlers.\n */\n\nconst JSON_FLAG_DESCRIPTION = 'Output JSON format';\n\nexport const qaRunFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n 'skip-check': {\n type: 'array',\n description: 'Skip specific check IDs (e.g. --skip-check build --skip-check lint)',\n },\n 'no-cache': {\n type: 'boolean',\n description: 'Disable caching (force full run)',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Run all packages, ignoring affected analysis',\n default: false,\n },\n package: {\n type: 'string',\n description: 'Filter by package name',\n alias: 'p',\n },\n repo: {\n type: 'string',\n description: 'Filter by repo name',\n alias: 'r',\n },\n scope: {\n type: 'string',\n description: 'Filter by npm scope',\n alias: 's',\n },\n summary: {\n type: 'boolean',\n description: 'Show summary-only report (legacy flat format)',\n default: false,\n },\n} as const;\n\nexport type QARunFlags = typeof qaRunFlags;\n\nexport const qaSaveFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QASaveFlags = typeof qaSaveFlags;\n\nexport const qaHistoryFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n limit: {\n type: 'number',\n description: 'Number of entries to show',\n default: 20,\n },\n} as const;\n\nexport type QAHistoryFlags = typeof qaHistoryFlags;\n\nexport const qaTrendsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n window: {\n type: 'number',\n description: 'Number of entries for trend window',\n default: 10,\n },\n} as const;\n\nexport type QATrendsFlags = typeof qaTrendsFlags;\n\nexport const qaRegressionsFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type QARegressionsFlags = typeof qaRegressionsFlags;\n\nexport const baselineUpdateFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineUpdateFlags = typeof baselineUpdateFlags;\n\nexport const baselineStatusFlags = {\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n} as const;\n\nexport type BaselineStatusFlags = typeof baselineStatusFlags;\n\nexport const qaCheckFlags = {\n id: {\n type: 'string',\n description: 'Check ID to run (must match a check in qa.checks config)',\n demandOption: true,\n },\n base: {\n type: 'string',\n description: 'Base branch/commit for diff strategies (diffOnly, newFiles). Default: main',\n default: 'main',\n },\n context: {\n type: 'string',\n description: 'JSON context to attach to history entry (e.g. {\"taskId\":\"123\"})',\n },\n json: {\n type: 'boolean',\n description: JSON_FLAG_DESCRIPTION,\n default: false,\n },\n save: {\n type: 'boolean',\n description: 'Save result to history after running (default: true)',\n default: true,\n },\n} as const;\n\nexport type QACheckFlags = typeof qaCheckFlags;\n","/**\n * QA Plugin Manifest V3\n *\n * Automated quality checks, baseline tracking, and regression detection.\n */\n\nimport {\n combinePermissions,\n kbPlatformPreset,\n defineCommandFlags,\n} from '@kb-labs/sdk';\nimport {\n qaRunFlags,\n qaSaveFlags,\n qaHistoryFlags,\n qaTrendsFlags,\n qaRegressionsFlags,\n baselineUpdateFlags,\n baselineStatusFlags,\n qaCheckFlags,\n} from './cli/commands/flags.js';\nimport {\n QA_BASE_PATH,\n QA_ROUTES,\n} from '@kb-labs/qa-contracts';\n\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withFs({\n mode: 'readWrite',\n allow: ['**'],\n })\n .withPlatform({\n cache: ['qa:'],\n analytics: true,\n })\n .withQuotas({\n timeoutMs: 600000,\n memoryMb: 2048,\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/qa',\n version: '0.1.0',\n\n configSection: 'qa',\n\n display: {\n name: 'QA Plugin',\n description: 'Automated quality checks, baseline tracking, and regression detection',\n tags: ['qa', 'quality', 'baseline', 'regression', 'testing'],\n },\n\n platform: {\n requires: ['storage'],\n optional: ['cache', 'analytics', 'logger'],\n },\n\n cli: {\n commands: [\n {\n id: 'run',\n group: 'qa',\n describe: 'Run all QA checks (build, lint, types, tests)',\n longDescription:\n 'Runs comprehensive QA checks across the monorepo: build, lint, type check, and tests. ' +\n 'Compares with baseline if available. Supports incremental builds and package filtering.',\n handler: './cli/commands/qa-run.js#default',\n handlerPath: './cli/commands/qa-run.js',\n flags: defineCommandFlags(qaRunFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'check',\n group: 'qa',\n describe: 'Run a single QA check atomically',\n longDescription:\n 'Runs one check by ID, optionally saves to history with caller context. ' +\n 'Designed for workflow steps: exit 0 = pass, exit 1 = blocker failed. ' +\n 'Supports diffOnly/newFiles strategies and structured JSON output for agents.',\n handler: './cli/commands/qa-check.js#default',\n handlerPath: './cli/commands/qa-check.js',\n flags: defineCommandFlags(qaCheckFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'save',\n group: 'qa',\n describe: 'Run QA checks and save results to history',\n longDescription:\n 'Runs all QA checks and saves the results as a history entry. ' +\n 'History is stored in .kb/qa/history.json (max 50 entries).',\n handler: './cli/commands/qa-save.js#default',\n handlerPath: './cli/commands/qa-save.js',\n flags: defineCommandFlags(qaSaveFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'history',\n group: 'qa',\n describe: 'Show QA run history',\n longDescription: 'Displays the QA run history with pass/fail status for each check type.',\n handler: './cli/commands/qa-history.js#default',\n handlerPath: './cli/commands/qa-history.js',\n flags: defineCommandFlags(qaHistoryFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'trends',\n group: 'qa',\n describe: 'Show QA quality trends over time',\n longDescription:\n 'Analyzes quality trends by comparing failure counts over a sliding window of history entries.',\n handler: './cli/commands/qa-trends.js#default',\n handlerPath: './cli/commands/qa-trends.js',\n flags: defineCommandFlags(qaTrendsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'regressions',\n group: 'qa',\n describe: 'Detect regressions since last QA save',\n longDescription:\n 'Compares the last two history entries to detect new failures. ' +\n 'Exits with code 1 if regressions are found. Use before merging.',\n handler: './cli/commands/qa-regressions.js#default',\n handlerPath: './cli/commands/qa-regressions.js',\n flags: defineCommandFlags(qaRegressionsFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:update',\n group: 'qa',\n describe: 'Run full QA and save as new baseline',\n longDescription:\n 'Runs all QA checks and saves the results as the current baseline. ' +\n 'Future qa:run calls will compare against this baseline.',\n handler: './cli/commands/baseline-update.js#default',\n handlerPath: './cli/commands/baseline-update.js',\n flags: defineCommandFlags(baselineUpdateFlags),\n permissions: pluginPermissions,\n },\n {\n id: 'baseline:status',\n group: 'qa',\n describe: 'Show current baseline status',\n longDescription: 'Displays the current baseline snapshot with pass/fail counts per check type.',\n handler: './cli/commands/baseline-status.js#default',\n handlerPath: './cli/commands/baseline-status.js',\n flags: defineCommandFlags(baselineStatusFlags),\n permissions: pluginPermissions,\n },\n ],\n },\n\n // REST API routes\n rest: {\n basePath: QA_BASE_PATH,\n routes: [\n // GET /summary\n {\n method: 'GET',\n path: QA_ROUTES.SUMMARY,\n handler: './rest/handlers/summary-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QASummaryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QASummaryResponseSchema',\n },\n },\n // GET /latest\n {\n method: 'GET',\n path: QA_ROUTES.LATEST,\n handler: './rest/handlers/latest-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QALatestRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QALatestResponseSchema',\n },\n },\n // GET /history\n {\n method: 'GET',\n path: QA_ROUTES.HISTORY,\n handler: './rest/handlers/history-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAHistoryRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAHistoryResponseSchema',\n },\n },\n // GET /trends\n {\n method: 'GET',\n path: QA_ROUTES.TRENDS,\n handler: './rest/handlers/trends-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QATrendsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QATrendsResponseSchema',\n },\n },\n // GET /regressions\n {\n method: 'GET',\n path: QA_ROUTES.REGRESSIONS,\n handler: './rest/handlers/regressions-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARegressionsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARegressionsResponseSchema',\n },\n },\n // GET /baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE,\n handler: './rest/handlers/baseline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineResponseSchema',\n },\n },\n // POST /run\n {\n method: 'POST',\n path: QA_ROUTES.RUN,\n handler: './rest/handlers/run-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunResponseSchema',\n },\n },\n // GET /details — per-package details with error text\n {\n method: 'GET',\n path: QA_ROUTES.DETAILS,\n handler: './rest/handlers/details-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QADetailsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QADetailsResponseSchema',\n },\n },\n // POST /run/check — run a single check type\n {\n method: 'POST',\n path: QA_ROUTES.RUN_CHECK,\n handler: './rest/handlers/run-check-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QARunCheckRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QARunCheckResponseSchema',\n },\n },\n // POST /baseline/update — update baseline from last run\n {\n method: 'POST',\n path: QA_ROUTES.BASELINE_UPDATE,\n handler: './rest/handlers/baseline-update-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineUpdateResponseSchema',\n },\n },\n // GET /baseline/diff — diff current state vs baseline\n {\n method: 'GET',\n path: QA_ROUTES.BASELINE_DIFF,\n handler: './rest/handlers/baseline-diff-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QABaselineDiffResponseSchema',\n },\n },\n // GET /packages/:name/timeline — per-package QA timeline\n {\n method: 'GET',\n path: QA_ROUTES.PACKAGE_TIMELINE,\n handler: './rest/handlers/package-timeline-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAPackageTimelineResponseSchema',\n },\n },\n // GET /errors/groups — grouped errors by pattern\n {\n method: 'GET',\n path: QA_ROUTES.ERROR_GROUPS,\n handler: './rest/handlers/error-groups-handler.js#default',\n input: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsRequestSchema',\n },\n output: {\n zod: '@kb-labs/qa-contracts#QAErrorGroupsResponseSchema',\n },\n },\n ],\n },\n\n // Studio V2 — Module Federation pages\n studio: {\n version: 2 as const,\n remoteName: 'qaPlugin',\n pages: [\n {\n id: 'qa.overview',\n title: 'QA',\n icon: 'ExperimentOutlined',\n route: '/p/qa',\n entry: './QADashboard',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'qa',\n label: 'QA',\n icon: 'ExperimentOutlined',\n target: 'qa.overview',\n order: 50,\n },\n ],\n },\n\n permissions: pluginPermissions,\n};\n\nexport default manifest;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/flags.ts","../src/manifest.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { defineFlags } from '@kb-labs/sdk';\n\nexport const qaRunFlags = defineFlags({\n tasks: {\n type: 'string',\n description: 'Comma-separated tasks to run (default: build,lint,type-check,test)',\n },\n save: {\n type: 'boolean',\n description: 'Save snapshot to history',\n default: true,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type QaRunFlags = typeof qaRunFlags.infer;\n\nexport const qaCheckFlags = defineFlags({\n save: {\n type: 'boolean',\n description: 'Save snapshot to history',\n default: true,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type QaCheckFlags = typeof qaCheckFlags.infer;\n\nexport const qaStatsFlags = defineFlags({\n save: {\n type: 'boolean',\n description: 'Save snapshot to history',\n default: true,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type QaStatsFlags = typeof qaStatsFlags.infer;\n\nexport const qaGateFlags = defineFlags({\n save: {\n type: 'boolean',\n description: 'Save snapshot to history',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type QaGateFlags = typeof qaGateFlags.infer;\n\nexport const qaHistoryFlags = defineFlags({\n limit: {\n type: 'number',\n description: 'Max entries to show',\n default: 20,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type QaHistoryFlags = typeof qaHistoryFlags.infer;\n\nexport const qaTrendsFlags = defineFlags({\n window: {\n type: 'number',\n description: 'Number of history entries to analyze',\n default: 10,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type QaTrendsFlags = typeof qaTrendsFlags.infer;\n\nexport const qaRegressionsFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type QaRegressionsFlags = typeof qaRegressionsFlags.infer;\n\nexport const baselineUpdateFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type BaselineUpdateFlags = typeof baselineUpdateFlags.infer;\n\nexport const baselineStatusFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type BaselineStatusFlags = typeof baselineStatusFlags.infer;\n\nexport const baselineDiffFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output JSON',\n default: false,\n },\n});\nexport type BaselineDiffFlags = typeof baselineDiffFlags.infer;\n","import {\n combinePermissions,\n kbPlatformPreset,\n defineCommandFlags,\n} from '@kb-labs/sdk';\nimport {\n qaRunFlags,\n qaCheckFlags,\n qaStatsFlags,\n qaGateFlags,\n qaHistoryFlags,\n qaTrendsFlags,\n qaRegressionsFlags,\n baselineUpdateFlags,\n baselineStatusFlags,\n baselineDiffFlags,\n} from './cli/commands/flags.js';\nimport { QA_BASE_PATH, QA_ROUTES } from '@kb-labs/qa-contracts';\n\nconst pluginPermissions = combinePermissions()\n .with(kbPlatformPreset)\n .withFs({\n mode: 'readWrite',\n allow: ['**'],\n })\n .withShell({\n allow: ['kb-devkit', 'git'],\n })\n .withPlatform({\n analytics: true,\n })\n .withQuotas({\n timeoutMs: 600_000,\n memoryMb: 512,\n })\n .build();\n\nexport const manifest = {\n schema: 'kb.plugin/3',\n id: '@kb-labs/qa',\n version: '0.1.0',\n\n configSection: 'qa',\n\n display: {\n name: 'QA Plugin',\n description: 'Smart wrapper around kb-devkit — history, trends, baseline diffing, and health UI',\n tags: ['qa', 'quality', 'baseline', 'regression', 'devkit'],\n },\n\n platform: {\n requires: [],\n optional: ['cache', 'analytics', 'logger'],\n },\n\n cli: {\n groupMeta: [\n { path: 'qa', describe: 'Quality assurance powered by kb-devkit' },\n { path: 'qa baseline', describe: 'Baseline management' },\n ],\n commands: [\n {\n path: 'qa run',\n category: 'Run',\n describe: 'Run devkit tasks and record results',\n operationType: 'execute' as const,\n handler: './cli/commands/qa-run.js#default',\n flags: defineCommandFlags(qaRunFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa check',\n category: 'Run',\n describe: 'Run devkit structural checks',\n operationType: 'analyze' as const,\n handler: './cli/commands/qa-check.js#default',\n flags: defineCommandFlags(qaCheckFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa stats',\n category: 'Run',\n describe: 'Show devkit health score and category breakdown',\n operationType: 'read' as const,\n handler: './cli/commands/qa-stats.js#default',\n flags: defineCommandFlags(qaStatsFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa gate',\n category: 'Run',\n describe: 'Run pre-commit gate check (exits 1 if violations found)',\n operationType: 'analyze' as const,\n handler: './cli/commands/qa-gate.js#default',\n flags: defineCommandFlags(qaGateFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa history',\n category: 'History',\n describe: 'Show QA run history',\n operationType: 'read' as const,\n handler: './cli/commands/qa-history.js#default',\n flags: defineCommandFlags(qaHistoryFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa trends',\n category: 'History',\n describe: 'Show QA quality trends over time',\n operationType: 'read' as const,\n handler: './cli/commands/qa-trends.js#default',\n flags: defineCommandFlags(qaTrendsFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa regressions',\n category: 'History',\n describe: 'Detect regressions since last run',\n operationType: 'read' as const,\n handler: './cli/commands/qa-regressions.js#default',\n flags: defineCommandFlags(qaRegressionsFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa baseline update',\n category: 'Baseline',\n describe: 'Run check + stats and save as new baseline',\n operationType: 'mutate' as const,\n handler: './cli/commands/baseline-update.js#default',\n flags: defineCommandFlags(baselineUpdateFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa baseline status',\n category: 'Baseline',\n describe: 'Show current baseline',\n operationType: 'read' as const,\n handler: './cli/commands/baseline-status.js#default',\n flags: defineCommandFlags(baselineStatusFlags.schema),\n permissions: pluginPermissions,\n },\n {\n path: 'qa baseline diff',\n category: 'Baseline',\n describe: 'Diff current state against baseline',\n operationType: 'read' as const,\n handler: './cli/commands/baseline-diff.js#default',\n flags: defineCommandFlags(baselineDiffFlags.schema),\n permissions: pluginPermissions,\n },\n ],\n },\n\n rest: {\n basePath: QA_BASE_PATH,\n routes: [\n { method: 'GET', path: QA_ROUTES.SUMMARY, handler: './rest/handlers/summary-handler.js#default' },\n { method: 'POST', path: QA_ROUTES.RUN, handler: './rest/handlers/run-handler.js#default' },\n { method: 'POST', path: QA_ROUTES.CHECK, handler: './rest/handlers/check-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.STATS, handler: './rest/handlers/stats-handler.js#default' },\n { method: 'POST', path: QA_ROUTES.GATE, handler: './rest/handlers/gate-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.HISTORY, handler: './rest/handlers/history-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.TRENDS, handler: './rest/handlers/trends-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.REGRESSIONS, handler: './rest/handlers/regressions-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.BASELINE, handler: './rest/handlers/baseline-handler.js#default' },\n { method: 'POST', path: QA_ROUTES.BASELINE_UPDATE, handler: './rest/handlers/baseline-update-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.BASELINE_DIFF, handler: './rest/handlers/baseline-diff-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.PACKAGE_TIMELINE, handler: './rest/handlers/package-timeline-handler.js#default' },\n { method: 'GET', path: QA_ROUTES.TASKS, handler: './rest/handlers/tasks-handler.js#default' },\n ],\n },\n\n studio: {\n version: 2 as const,\n remoteName: 'qaPlugin',\n pages: [\n {\n id: 'qa.overview',\n title: 'QA',\n icon: 'ExperimentOutlined',\n route: '/p/qa',\n entry: './QADashboard',\n order: 1,\n },\n ],\n menus: [\n {\n id: 'qa',\n label: 'QA',\n icon: 'ExperimentOutlined',\n target: 'qa.overview',\n order: 50,\n },\n ],\n },\n\n permissions: pluginPermissions,\n};\n\nexport default manifest;\n"]}
|