@kb-labs/qa-entry 2.103.0 → 2.105.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.
@@ -0,0 +1,786 @@
1
+ {
2
+ "schema": "kb.plugin/3",
3
+ "id": "@kb-labs/qa",
4
+ "version": "0.1.0",
5
+ "configSection": "qa",
6
+ "display": {
7
+ "name": "QA Plugin",
8
+ "description": "Smart wrapper around kb-devkit — history, trends, baseline diffing, and health UI",
9
+ "tags": [
10
+ "qa",
11
+ "quality",
12
+ "baseline",
13
+ "regression",
14
+ "devkit"
15
+ ]
16
+ },
17
+ "platform": {
18
+ "requires": [],
19
+ "optional": [
20
+ "cache",
21
+ "analytics",
22
+ "logger"
23
+ ]
24
+ },
25
+ "cli": {
26
+ "groupMeta": [
27
+ {
28
+ "path": "qa",
29
+ "describe": "Quality assurance powered by kb-devkit"
30
+ },
31
+ {
32
+ "path": "qa baseline",
33
+ "describe": "Baseline management"
34
+ }
35
+ ],
36
+ "commands": [
37
+ {
38
+ "path": "qa run",
39
+ "category": "Run",
40
+ "describe": "Run devkit tasks and record results",
41
+ "operationType": "execute",
42
+ "handler": "./cli/commands/qa-run.js#default",
43
+ "flags": [
44
+ {
45
+ "name": "tasks",
46
+ "type": "string",
47
+ "description": "Comma-separated tasks to run (default: build,lint,type-check,test)"
48
+ },
49
+ {
50
+ "name": "save",
51
+ "type": "boolean",
52
+ "default": true,
53
+ "description": "Save snapshot to history"
54
+ },
55
+ {
56
+ "name": "json",
57
+ "type": "boolean",
58
+ "default": false,
59
+ "description": "Output JSON"
60
+ }
61
+ ],
62
+ "permissions": {
63
+ "fs": {
64
+ "read": [
65
+ ".kb/**",
66
+ "**"
67
+ ],
68
+ "write": [
69
+ ".kb/**",
70
+ "**"
71
+ ]
72
+ },
73
+ "env": {
74
+ "read": [
75
+ "HOME",
76
+ "USER",
77
+ "PATH",
78
+ "TMPDIR",
79
+ "NODE_ENV",
80
+ "KB_*"
81
+ ]
82
+ },
83
+ "shell": {
84
+ "allow": [
85
+ "kb-devkit",
86
+ "git"
87
+ ]
88
+ },
89
+ "platform": {
90
+ "analytics": true
91
+ },
92
+ "quotas": {
93
+ "timeoutMs": 600000,
94
+ "memoryMb": 512
95
+ }
96
+ }
97
+ },
98
+ {
99
+ "path": "qa check",
100
+ "category": "Run",
101
+ "describe": "Run devkit structural checks",
102
+ "operationType": "analyze",
103
+ "handler": "./cli/commands/qa-check.js#default",
104
+ "flags": [
105
+ {
106
+ "name": "save",
107
+ "type": "boolean",
108
+ "default": true,
109
+ "description": "Save snapshot to history"
110
+ },
111
+ {
112
+ "name": "json",
113
+ "type": "boolean",
114
+ "default": false,
115
+ "description": "Output JSON"
116
+ }
117
+ ],
118
+ "permissions": {
119
+ "fs": {
120
+ "read": [
121
+ ".kb/**",
122
+ "**"
123
+ ],
124
+ "write": [
125
+ ".kb/**",
126
+ "**"
127
+ ]
128
+ },
129
+ "env": {
130
+ "read": [
131
+ "HOME",
132
+ "USER",
133
+ "PATH",
134
+ "TMPDIR",
135
+ "NODE_ENV",
136
+ "KB_*"
137
+ ]
138
+ },
139
+ "shell": {
140
+ "allow": [
141
+ "kb-devkit",
142
+ "git"
143
+ ]
144
+ },
145
+ "platform": {
146
+ "analytics": true
147
+ },
148
+ "quotas": {
149
+ "timeoutMs": 600000,
150
+ "memoryMb": 512
151
+ }
152
+ }
153
+ },
154
+ {
155
+ "path": "qa stats",
156
+ "category": "Run",
157
+ "describe": "Show devkit health score and category breakdown",
158
+ "operationType": "read",
159
+ "handler": "./cli/commands/qa-stats.js#default",
160
+ "flags": [
161
+ {
162
+ "name": "save",
163
+ "type": "boolean",
164
+ "default": true,
165
+ "description": "Save snapshot to history"
166
+ },
167
+ {
168
+ "name": "json",
169
+ "type": "boolean",
170
+ "default": false,
171
+ "description": "Output JSON"
172
+ }
173
+ ],
174
+ "permissions": {
175
+ "fs": {
176
+ "read": [
177
+ ".kb/**",
178
+ "**"
179
+ ],
180
+ "write": [
181
+ ".kb/**",
182
+ "**"
183
+ ]
184
+ },
185
+ "env": {
186
+ "read": [
187
+ "HOME",
188
+ "USER",
189
+ "PATH",
190
+ "TMPDIR",
191
+ "NODE_ENV",
192
+ "KB_*"
193
+ ]
194
+ },
195
+ "shell": {
196
+ "allow": [
197
+ "kb-devkit",
198
+ "git"
199
+ ]
200
+ },
201
+ "platform": {
202
+ "analytics": true
203
+ },
204
+ "quotas": {
205
+ "timeoutMs": 600000,
206
+ "memoryMb": 512
207
+ }
208
+ }
209
+ },
210
+ {
211
+ "path": "qa gate",
212
+ "category": "Run",
213
+ "describe": "Run pre-commit gate check (exits 1 if violations found)",
214
+ "operationType": "analyze",
215
+ "handler": "./cli/commands/qa-gate.js#default",
216
+ "flags": [
217
+ {
218
+ "name": "save",
219
+ "type": "boolean",
220
+ "default": false,
221
+ "description": "Save snapshot to history"
222
+ },
223
+ {
224
+ "name": "json",
225
+ "type": "boolean",
226
+ "default": false,
227
+ "description": "Output JSON"
228
+ }
229
+ ],
230
+ "permissions": {
231
+ "fs": {
232
+ "read": [
233
+ ".kb/**",
234
+ "**"
235
+ ],
236
+ "write": [
237
+ ".kb/**",
238
+ "**"
239
+ ]
240
+ },
241
+ "env": {
242
+ "read": [
243
+ "HOME",
244
+ "USER",
245
+ "PATH",
246
+ "TMPDIR",
247
+ "NODE_ENV",
248
+ "KB_*"
249
+ ]
250
+ },
251
+ "shell": {
252
+ "allow": [
253
+ "kb-devkit",
254
+ "git"
255
+ ]
256
+ },
257
+ "platform": {
258
+ "analytics": true
259
+ },
260
+ "quotas": {
261
+ "timeoutMs": 600000,
262
+ "memoryMb": 512
263
+ }
264
+ }
265
+ },
266
+ {
267
+ "path": "qa history",
268
+ "category": "History",
269
+ "describe": "Show QA run history",
270
+ "operationType": "read",
271
+ "handler": "./cli/commands/qa-history.js#default",
272
+ "flags": [
273
+ {
274
+ "name": "limit",
275
+ "type": "number",
276
+ "default": 20,
277
+ "description": "Max entries to show"
278
+ },
279
+ {
280
+ "name": "json",
281
+ "type": "boolean",
282
+ "default": false,
283
+ "description": "Output JSON"
284
+ }
285
+ ],
286
+ "permissions": {
287
+ "fs": {
288
+ "read": [
289
+ ".kb/**",
290
+ "**"
291
+ ],
292
+ "write": [
293
+ ".kb/**",
294
+ "**"
295
+ ]
296
+ },
297
+ "env": {
298
+ "read": [
299
+ "HOME",
300
+ "USER",
301
+ "PATH",
302
+ "TMPDIR",
303
+ "NODE_ENV",
304
+ "KB_*"
305
+ ]
306
+ },
307
+ "shell": {
308
+ "allow": [
309
+ "kb-devkit",
310
+ "git"
311
+ ]
312
+ },
313
+ "platform": {
314
+ "analytics": true
315
+ },
316
+ "quotas": {
317
+ "timeoutMs": 600000,
318
+ "memoryMb": 512
319
+ }
320
+ }
321
+ },
322
+ {
323
+ "path": "qa trends",
324
+ "category": "History",
325
+ "describe": "Show QA quality trends over time",
326
+ "operationType": "read",
327
+ "handler": "./cli/commands/qa-trends.js#default",
328
+ "flags": [
329
+ {
330
+ "name": "window",
331
+ "type": "number",
332
+ "default": 10,
333
+ "description": "Number of history entries to analyze"
334
+ },
335
+ {
336
+ "name": "json",
337
+ "type": "boolean",
338
+ "default": false,
339
+ "description": "Output JSON"
340
+ }
341
+ ],
342
+ "permissions": {
343
+ "fs": {
344
+ "read": [
345
+ ".kb/**",
346
+ "**"
347
+ ],
348
+ "write": [
349
+ ".kb/**",
350
+ "**"
351
+ ]
352
+ },
353
+ "env": {
354
+ "read": [
355
+ "HOME",
356
+ "USER",
357
+ "PATH",
358
+ "TMPDIR",
359
+ "NODE_ENV",
360
+ "KB_*"
361
+ ]
362
+ },
363
+ "shell": {
364
+ "allow": [
365
+ "kb-devkit",
366
+ "git"
367
+ ]
368
+ },
369
+ "platform": {
370
+ "analytics": true
371
+ },
372
+ "quotas": {
373
+ "timeoutMs": 600000,
374
+ "memoryMb": 512
375
+ }
376
+ }
377
+ },
378
+ {
379
+ "path": "qa e2e flaky",
380
+ "category": "History",
381
+ "describe": "Track flaky e2e cases across CI runs (agent-first overview + drill-down)",
382
+ "operationType": "read",
383
+ "handler": "./cli/commands/qa-e2e-flaky.js#default",
384
+ "flags": [
385
+ {
386
+ "name": "agent",
387
+ "type": "boolean",
388
+ "default": false,
389
+ "description": "Emit compact machine-readable agent JSON (alias for --json)"
390
+ },
391
+ {
392
+ "name": "json",
393
+ "type": "boolean",
394
+ "default": false,
395
+ "description": "Output JSON"
396
+ },
397
+ {
398
+ "name": "case",
399
+ "type": "string",
400
+ "description": "Drill down into one case: \"<suite>/<spec>#<testId>\" (from the overview's \"top\" list)"
401
+ },
402
+ {
403
+ "name": "window",
404
+ "type": "number",
405
+ "default": 10,
406
+ "description": "Number of e2e-flaky history entries (runs) to analyze"
407
+ },
408
+ {
409
+ "name": "sync",
410
+ "type": "boolean",
411
+ "default": false,
412
+ "description": "Fetch the latest flaky history from the \"ci-data\" branch before analyzing"
413
+ },
414
+ {
415
+ "name": "ingest",
416
+ "type": "string",
417
+ "description": "CI-only: directory of per-shard flaky-report.json files to merge and save as a new snapshot"
418
+ }
419
+ ],
420
+ "permissions": {
421
+ "fs": {
422
+ "read": [
423
+ ".kb/**",
424
+ "**"
425
+ ],
426
+ "write": [
427
+ ".kb/**",
428
+ "**"
429
+ ]
430
+ },
431
+ "env": {
432
+ "read": [
433
+ "HOME",
434
+ "USER",
435
+ "PATH",
436
+ "TMPDIR",
437
+ "NODE_ENV",
438
+ "KB_*"
439
+ ]
440
+ },
441
+ "shell": {
442
+ "allow": [
443
+ "kb-devkit",
444
+ "git"
445
+ ]
446
+ },
447
+ "platform": {
448
+ "analytics": true
449
+ },
450
+ "quotas": {
451
+ "timeoutMs": 600000,
452
+ "memoryMb": 512
453
+ }
454
+ }
455
+ },
456
+ {
457
+ "path": "qa regressions",
458
+ "category": "History",
459
+ "describe": "Detect regressions since last run",
460
+ "operationType": "read",
461
+ "handler": "./cli/commands/qa-regressions.js#default",
462
+ "flags": [
463
+ {
464
+ "name": "json",
465
+ "type": "boolean",
466
+ "default": false,
467
+ "description": "Output JSON"
468
+ }
469
+ ],
470
+ "permissions": {
471
+ "fs": {
472
+ "read": [
473
+ ".kb/**",
474
+ "**"
475
+ ],
476
+ "write": [
477
+ ".kb/**",
478
+ "**"
479
+ ]
480
+ },
481
+ "env": {
482
+ "read": [
483
+ "HOME",
484
+ "USER",
485
+ "PATH",
486
+ "TMPDIR",
487
+ "NODE_ENV",
488
+ "KB_*"
489
+ ]
490
+ },
491
+ "shell": {
492
+ "allow": [
493
+ "kb-devkit",
494
+ "git"
495
+ ]
496
+ },
497
+ "platform": {
498
+ "analytics": true
499
+ },
500
+ "quotas": {
501
+ "timeoutMs": 600000,
502
+ "memoryMb": 512
503
+ }
504
+ }
505
+ },
506
+ {
507
+ "path": "qa baseline update",
508
+ "category": "Baseline",
509
+ "describe": "Run check + stats and save as new baseline",
510
+ "operationType": "mutate",
511
+ "handler": "./cli/commands/baseline-update.js#default",
512
+ "flags": [
513
+ {
514
+ "name": "json",
515
+ "type": "boolean",
516
+ "default": false,
517
+ "description": "Output JSON"
518
+ }
519
+ ],
520
+ "permissions": {
521
+ "fs": {
522
+ "read": [
523
+ ".kb/**",
524
+ "**"
525
+ ],
526
+ "write": [
527
+ ".kb/**",
528
+ "**"
529
+ ]
530
+ },
531
+ "env": {
532
+ "read": [
533
+ "HOME",
534
+ "USER",
535
+ "PATH",
536
+ "TMPDIR",
537
+ "NODE_ENV",
538
+ "KB_*"
539
+ ]
540
+ },
541
+ "shell": {
542
+ "allow": [
543
+ "kb-devkit",
544
+ "git"
545
+ ]
546
+ },
547
+ "platform": {
548
+ "analytics": true
549
+ },
550
+ "quotas": {
551
+ "timeoutMs": 600000,
552
+ "memoryMb": 512
553
+ }
554
+ }
555
+ },
556
+ {
557
+ "path": "qa baseline status",
558
+ "category": "Baseline",
559
+ "describe": "Show current baseline",
560
+ "operationType": "read",
561
+ "handler": "./cli/commands/baseline-status.js#default",
562
+ "flags": [
563
+ {
564
+ "name": "json",
565
+ "type": "boolean",
566
+ "default": false,
567
+ "description": "Output JSON"
568
+ }
569
+ ],
570
+ "permissions": {
571
+ "fs": {
572
+ "read": [
573
+ ".kb/**",
574
+ "**"
575
+ ],
576
+ "write": [
577
+ ".kb/**",
578
+ "**"
579
+ ]
580
+ },
581
+ "env": {
582
+ "read": [
583
+ "HOME",
584
+ "USER",
585
+ "PATH",
586
+ "TMPDIR",
587
+ "NODE_ENV",
588
+ "KB_*"
589
+ ]
590
+ },
591
+ "shell": {
592
+ "allow": [
593
+ "kb-devkit",
594
+ "git"
595
+ ]
596
+ },
597
+ "platform": {
598
+ "analytics": true
599
+ },
600
+ "quotas": {
601
+ "timeoutMs": 600000,
602
+ "memoryMb": 512
603
+ }
604
+ }
605
+ },
606
+ {
607
+ "path": "qa baseline diff",
608
+ "category": "Baseline",
609
+ "describe": "Diff current state against baseline",
610
+ "operationType": "read",
611
+ "handler": "./cli/commands/baseline-diff.js#default",
612
+ "flags": [
613
+ {
614
+ "name": "json",
615
+ "type": "boolean",
616
+ "default": false,
617
+ "description": "Output JSON"
618
+ }
619
+ ],
620
+ "permissions": {
621
+ "fs": {
622
+ "read": [
623
+ ".kb/**",
624
+ "**"
625
+ ],
626
+ "write": [
627
+ ".kb/**",
628
+ "**"
629
+ ]
630
+ },
631
+ "env": {
632
+ "read": [
633
+ "HOME",
634
+ "USER",
635
+ "PATH",
636
+ "TMPDIR",
637
+ "NODE_ENV",
638
+ "KB_*"
639
+ ]
640
+ },
641
+ "shell": {
642
+ "allow": [
643
+ "kb-devkit",
644
+ "git"
645
+ ]
646
+ },
647
+ "platform": {
648
+ "analytics": true
649
+ },
650
+ "quotas": {
651
+ "timeoutMs": 600000,
652
+ "memoryMb": 512
653
+ }
654
+ }
655
+ }
656
+ ]
657
+ },
658
+ "rest": {
659
+ "basePath": "/v1/plugins/qa",
660
+ "routes": [
661
+ {
662
+ "method": "GET",
663
+ "path": "/summary",
664
+ "handler": "./rest/handlers/summary-handler.js#default"
665
+ },
666
+ {
667
+ "method": "POST",
668
+ "path": "/run",
669
+ "handler": "./rest/handlers/run-handler.js#default"
670
+ },
671
+ {
672
+ "method": "POST",
673
+ "path": "/check",
674
+ "handler": "./rest/handlers/check-handler.js#default"
675
+ },
676
+ {
677
+ "method": "GET",
678
+ "path": "/stats",
679
+ "handler": "./rest/handlers/stats-handler.js#default"
680
+ },
681
+ {
682
+ "method": "POST",
683
+ "path": "/gate",
684
+ "handler": "./rest/handlers/gate-handler.js#default"
685
+ },
686
+ {
687
+ "method": "GET",
688
+ "path": "/history",
689
+ "handler": "./rest/handlers/history-handler.js#default"
690
+ },
691
+ {
692
+ "method": "GET",
693
+ "path": "/trends",
694
+ "handler": "./rest/handlers/trends-handler.js#default"
695
+ },
696
+ {
697
+ "method": "GET",
698
+ "path": "/regressions",
699
+ "handler": "./rest/handlers/regressions-handler.js#default"
700
+ },
701
+ {
702
+ "method": "GET",
703
+ "path": "/baseline",
704
+ "handler": "./rest/handlers/baseline-handler.js#default"
705
+ },
706
+ {
707
+ "method": "POST",
708
+ "path": "/baseline/update",
709
+ "handler": "./rest/handlers/baseline-update-handler.js#default"
710
+ },
711
+ {
712
+ "method": "GET",
713
+ "path": "/baseline/diff",
714
+ "handler": "./rest/handlers/baseline-diff-handler.js#default"
715
+ },
716
+ {
717
+ "method": "GET",
718
+ "path": "/packages/:name/timeline",
719
+ "handler": "./rest/handlers/package-timeline-handler.js#default"
720
+ },
721
+ {
722
+ "method": "GET",
723
+ "path": "/tasks",
724
+ "handler": "./rest/handlers/tasks-handler.js#default"
725
+ }
726
+ ]
727
+ },
728
+ "studio": {
729
+ "version": 2,
730
+ "remoteName": "qaPlugin",
731
+ "pages": [
732
+ {
733
+ "id": "qa.overview",
734
+ "title": "QA",
735
+ "icon": "ExperimentOutlined",
736
+ "route": "/p/qa",
737
+ "entry": "./QADashboard",
738
+ "order": 1
739
+ }
740
+ ],
741
+ "menus": [
742
+ {
743
+ "id": "qa",
744
+ "label": "QA",
745
+ "icon": "ExperimentOutlined",
746
+ "target": "qa.overview",
747
+ "order": 50
748
+ }
749
+ ]
750
+ },
751
+ "permissions": {
752
+ "fs": {
753
+ "read": [
754
+ ".kb/**",
755
+ "**"
756
+ ],
757
+ "write": [
758
+ ".kb/**",
759
+ "**"
760
+ ]
761
+ },
762
+ "env": {
763
+ "read": [
764
+ "HOME",
765
+ "USER",
766
+ "PATH",
767
+ "TMPDIR",
768
+ "NODE_ENV",
769
+ "KB_*"
770
+ ]
771
+ },
772
+ "shell": {
773
+ "allow": [
774
+ "kb-devkit",
775
+ "git"
776
+ ]
777
+ },
778
+ "platform": {
779
+ "analytics": true
780
+ },
781
+ "quotas": {
782
+ "timeoutMs": 600000,
783
+ "memoryMb": 512
784
+ }
785
+ }
786
+ }