@kb-labs/quality-entry 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +120 -0
  2. package/dist/cli/commands/build-order.d.ts +16 -0
  3. package/dist/cli/commands/build-order.js +113 -0
  4. package/dist/cli/commands/build-order.js.map +1 -0
  5. package/dist/cli/commands/check-builds.d.ts +10 -0
  6. package/dist/cli/commands/check-builds.js +93 -0
  7. package/dist/cli/commands/check-builds.js.map +1 -0
  8. package/dist/cli/commands/check-tests.d.ts +10 -0
  9. package/dist/cli/commands/check-tests.js +114 -0
  10. package/dist/cli/commands/check-tests.js.map +1 -0
  11. package/dist/cli/commands/check-types.d.ts +10 -0
  12. package/dist/cli/commands/check-types.js +108 -0
  13. package/dist/cli/commands/check-types.js.map +1 -0
  14. package/dist/cli/commands/cycles.d.ts +17 -0
  15. package/dist/cli/commands/cycles.js +85 -0
  16. package/dist/cli/commands/cycles.js.map +1 -0
  17. package/dist/cli/commands/dead-code.d.ts +10 -0
  18. package/dist/cli/commands/dead-code.js +217 -0
  19. package/dist/cli/commands/dead-code.js.map +1 -0
  20. package/dist/cli/commands/fix-deps.d.ts +28 -0
  21. package/dist/cli/commands/fix-deps.js +389 -0
  22. package/dist/cli/commands/fix-deps.js.map +1 -0
  23. package/dist/cli/commands/flags.d.ts +344 -0
  24. package/dist/cli/commands/flags.js +298 -0
  25. package/dist/cli/commands/flags.js.map +1 -0
  26. package/dist/cli/commands/health.d.ts +10 -0
  27. package/dist/cli/commands/health.js +210 -0
  28. package/dist/cli/commands/health.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +14 -0
  30. package/dist/cli/commands/index.js +1747 -0
  31. package/dist/cli/commands/index.js.map +1 -0
  32. package/dist/cli/commands/stats.d.ts +10 -0
  33. package/dist/cli/commands/stats.js +282 -0
  34. package/dist/cli/commands/stats.js.map +1 -0
  35. package/dist/cli/commands/visualize.d.ts +26 -0
  36. package/dist/cli/commands/visualize.js +210 -0
  37. package/dist/cli/commands/visualize.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +666 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/manifest.d.ts +168 -0
  42. package/dist/manifest.js +666 -0
  43. package/dist/manifest.js.map +1 -0
  44. package/dist/rest/handlers/build-order-handler.d.ts +17 -0
  45. package/dist/rest/handlers/build-order-handler.js +28 -0
  46. package/dist/rest/handlers/build-order-handler.js.map +1 -0
  47. package/dist/rest/handlers/builds-handler.d.ts +12 -0
  48. package/dist/rest/handlers/builds-handler.js +17 -0
  49. package/dist/rest/handlers/builds-handler.js.map +1 -0
  50. package/dist/rest/handlers/cycles-handler.d.ts +13 -0
  51. package/dist/rest/handlers/cycles-handler.js +23 -0
  52. package/dist/rest/handlers/cycles-handler.js.map +1 -0
  53. package/dist/rest/handlers/dependencies-handler.d.ts +14 -0
  54. package/dist/rest/handlers/dependencies-handler.js +19 -0
  55. package/dist/rest/handlers/dependencies-handler.js.map +1 -0
  56. package/dist/rest/handlers/graph-handler.d.ts +30 -0
  57. package/dist/rest/handlers/graph-handler.js +155 -0
  58. package/dist/rest/handlers/graph-handler.js.map +1 -0
  59. package/dist/rest/handlers/health-handler.d.ts +15 -0
  60. package/dist/rest/handlers/health-handler.js +19 -0
  61. package/dist/rest/handlers/health-handler.js.map +1 -0
  62. package/dist/rest/handlers/stale-handler.d.ts +30 -0
  63. package/dist/rest/handlers/stale-handler.js +20 -0
  64. package/dist/rest/handlers/stale-handler.js.map +1 -0
  65. package/dist/rest/handlers/stats-handler.d.ts +16 -0
  66. package/dist/rest/handlers/stats-handler.js +29 -0
  67. package/dist/rest/handlers/stats-handler.js.map +1 -0
  68. package/dist/rest/handlers/tests-handler.d.ts +14 -0
  69. package/dist/rest/handlers/tests-handler.js +19 -0
  70. package/dist/rest/handlers/tests-handler.js.map +1 -0
  71. package/dist/rest/handlers/types-handler.d.ts +12 -0
  72. package/dist/rest/handlers/types-handler.js +17 -0
  73. package/dist/rest/handlers/types-handler.js.map +1 -0
  74. package/package.json +98 -0
package/dist/index.js ADDED
@@ -0,0 +1,666 @@
1
+ import { combinePermissions, kbPlatformPreset, defineCommandFlags } from '@kb-labs/sdk';
2
+ import { QUALITY_ROUTES, QUALITY_BASE_PATH } from '@kb-labs/quality-contracts';
3
+
4
+ // src/manifest.ts
5
+
6
+ // src/cli/commands/flags.ts
7
+ var statsFlags = {
8
+ json: {
9
+ type: "boolean",
10
+ description: "Output JSON format",
11
+ default: false
12
+ },
13
+ md: {
14
+ type: "boolean",
15
+ description: "Output Markdown table",
16
+ default: false
17
+ },
18
+ health: {
19
+ type: "boolean",
20
+ description: "Show health score",
21
+ default: false
22
+ },
23
+ refresh: {
24
+ type: "boolean",
25
+ description: "Bypass cache and recalculate",
26
+ default: false
27
+ }
28
+ };
29
+ var healthFlags = {
30
+ json: {
31
+ type: "boolean",
32
+ description: "Output JSON format",
33
+ default: false
34
+ },
35
+ package: {
36
+ type: "string",
37
+ description: "Check health for specific package",
38
+ alias: "p"
39
+ },
40
+ detailed: {
41
+ type: "boolean",
42
+ description: "Show detailed breakdown",
43
+ default: false,
44
+ alias: "d"
45
+ }
46
+ };
47
+ var fixDepsFlags = {
48
+ "dry-run": {
49
+ type: "boolean",
50
+ description: "Preview changes without applying them",
51
+ default: false
52
+ },
53
+ "remove-unused": {
54
+ type: "boolean",
55
+ description: "Remove unused dependencies",
56
+ default: false
57
+ },
58
+ "add-missing": {
59
+ type: "boolean",
60
+ description: "Add missing workspace dependencies",
61
+ default: false
62
+ },
63
+ "align-versions": {
64
+ type: "boolean",
65
+ description: "Align duplicate dependency versions",
66
+ default: false
67
+ },
68
+ all: {
69
+ type: "boolean",
70
+ description: "Apply all fixes (remove-unused + add-missing + align-versions)",
71
+ default: false
72
+ },
73
+ stats: {
74
+ type: "boolean",
75
+ description: "Show dependency statistics",
76
+ default: false
77
+ },
78
+ json: {
79
+ type: "boolean",
80
+ description: "Output JSON format",
81
+ default: false
82
+ }
83
+ };
84
+ var buildOrderFlags = {
85
+ package: {
86
+ type: "string",
87
+ description: "Calculate build order for specific package",
88
+ alias: "p"
89
+ },
90
+ layers: {
91
+ type: "boolean",
92
+ description: "Show build layers (parallel groups)",
93
+ default: false
94
+ },
95
+ script: {
96
+ type: "boolean",
97
+ description: "Output as shell script",
98
+ default: false
99
+ },
100
+ json: {
101
+ type: "boolean",
102
+ description: "Output JSON format",
103
+ default: false
104
+ }
105
+ };
106
+ var cyclesFlags = {
107
+ json: {
108
+ type: "boolean",
109
+ description: "Output JSON format",
110
+ default: false
111
+ }
112
+ };
113
+ var visualizeFlags = {
114
+ package: {
115
+ type: "string",
116
+ description: "Focus on specific package",
117
+ alias: "p"
118
+ },
119
+ tree: {
120
+ type: "boolean",
121
+ description: "Show dependency tree",
122
+ default: false
123
+ },
124
+ dot: {
125
+ type: "boolean",
126
+ description: "Output DOT format for graphviz",
127
+ default: false
128
+ },
129
+ stats: {
130
+ type: "boolean",
131
+ description: "Show graph statistics",
132
+ default: false
133
+ },
134
+ reverse: {
135
+ type: "boolean",
136
+ description: "Show reverse dependencies (who depends on this)",
137
+ default: false
138
+ },
139
+ impact: {
140
+ type: "boolean",
141
+ description: "Show impact analysis (what will be affected)",
142
+ default: false
143
+ },
144
+ json: {
145
+ type: "boolean",
146
+ description: "Output JSON format",
147
+ default: false
148
+ }
149
+ };
150
+ var checkBuildsFlags = {
151
+ package: {
152
+ type: "string",
153
+ description: "Check builds for specific package",
154
+ alias: "p"
155
+ },
156
+ timeout: {
157
+ type: "number",
158
+ description: "Timeout per package in milliseconds",
159
+ default: 3e4
160
+ },
161
+ json: {
162
+ type: "boolean",
163
+ description: "Output JSON format",
164
+ default: false
165
+ },
166
+ refresh: {
167
+ type: "boolean",
168
+ description: "Bypass cache and check fresh",
169
+ default: false
170
+ }
171
+ };
172
+ var checkTypesFlags = {
173
+ package: {
174
+ type: "string",
175
+ description: "Analyze types for specific package",
176
+ alias: "p"
177
+ },
178
+ "errors-only": {
179
+ type: "boolean",
180
+ description: "Show only packages with errors",
181
+ default: false
182
+ },
183
+ json: {
184
+ type: "boolean",
185
+ description: "Output JSON format",
186
+ default: false
187
+ },
188
+ refresh: {
189
+ type: "boolean",
190
+ description: "Bypass cache and analyze fresh",
191
+ default: false
192
+ }
193
+ };
194
+ var checkTestsFlags = {
195
+ package: {
196
+ type: "string",
197
+ description: "Run tests for specific package",
198
+ alias: "p"
199
+ },
200
+ timeout: {
201
+ type: "number",
202
+ description: "Timeout per package in milliseconds",
203
+ default: 6e4
204
+ },
205
+ "with-coverage": {
206
+ type: "boolean",
207
+ description: "Collect coverage statistics",
208
+ default: false
209
+ },
210
+ "coverage-only": {
211
+ type: "boolean",
212
+ description: "Only show existing coverage (skip test execution)",
213
+ default: false
214
+ },
215
+ json: {
216
+ type: "boolean",
217
+ description: "Output JSON format",
218
+ default: false
219
+ },
220
+ refresh: {
221
+ type: "boolean",
222
+ description: "Bypass cache and run fresh",
223
+ default: false
224
+ }
225
+ };
226
+ var deadCodeFlags = {
227
+ package: {
228
+ type: "string",
229
+ description: "Scan specific package only",
230
+ alias: "p"
231
+ },
232
+ json: {
233
+ type: "boolean",
234
+ description: "Output JSON format",
235
+ default: false
236
+ },
237
+ verbose: {
238
+ type: "boolean",
239
+ description: "Show entry points and alive reasons",
240
+ default: false,
241
+ alias: "v"
242
+ },
243
+ "auto-remove": {
244
+ type: "boolean",
245
+ description: "Remove dead files (creates backup first)",
246
+ default: false
247
+ },
248
+ "dry-run": {
249
+ type: "boolean",
250
+ description: "Show what would be removed without actually deleting",
251
+ default: false
252
+ },
253
+ restore: {
254
+ type: "string",
255
+ description: "Restore files from backup ID"
256
+ },
257
+ "list-backups": {
258
+ type: "boolean",
259
+ description: "List available backups",
260
+ default: false
261
+ },
262
+ refresh: {
263
+ type: "boolean",
264
+ description: "Bypass cache and rescan",
265
+ default: false
266
+ }
267
+ };
268
+
269
+ // src/manifest.ts
270
+ var pluginPermissions = combinePermissions().with(kbPlatformPreset).withFs({
271
+ mode: "readWrite",
272
+ allow: ["**"]
273
+ // Access to entire monorepo
274
+ }).withPlatform({
275
+ cache: ["quality:"],
276
+ // Cache namespace prefix
277
+ analytics: true
278
+ // Track command usage
279
+ }).withQuotas({
280
+ timeoutMs: 3e5,
281
+ // 5 minutes for long-running operations
282
+ memoryMb: 1024
283
+ // 1GB memory
284
+ }).build();
285
+ var heavyOperationsPermissions = combinePermissions().with(kbPlatformPreset).withFs({
286
+ mode: "readWrite",
287
+ allow: ["**"]
288
+ }).withPlatform({
289
+ cache: ["quality:"],
290
+ analytics: true
291
+ }).withQuotas({
292
+ timeoutMs: 6e5,
293
+ // 10 minutes for heavy operations
294
+ memoryMb: 2048
295
+ // 2GB memory
296
+ }).build();
297
+ var manifest = {
298
+ schema: "kb.plugin/3",
299
+ id: "@kb-labs/quality",
300
+ version: "0.1.0",
301
+ display: {
302
+ name: "Quality Tools",
303
+ description: "Monorepo quality analysis and automated fixes",
304
+ tags: ["quality", "monorepo", "analysis", "devtools"]
305
+ },
306
+ platform: {
307
+ requires: ["storage", "cache"],
308
+ optional: ["analytics", "logger"]
309
+ },
310
+ cli: {
311
+ commands: [
312
+ // ======================================================================
313
+ // quality:stats - Monorepo statistics and health score
314
+ // ======================================================================
315
+ {
316
+ id: "quality:stats",
317
+ group: "quality",
318
+ describe: "Get monorepo statistics and health score",
319
+ longDescription: "Analyzes monorepo structure, collects package statistics, dependency info, and calculates health score. Results are cached for 5 minutes.",
320
+ handler: "./cli/commands/stats.js#default",
321
+ handlerPath: "./cli/commands/stats.js",
322
+ flags: defineCommandFlags(statsFlags),
323
+ examples: [
324
+ "kb quality:stats",
325
+ "kb quality:stats --health",
326
+ "kb quality:stats --json",
327
+ "kb quality:stats --md"
328
+ ],
329
+ permissions: pluginPermissions
330
+ },
331
+ // ======================================================================
332
+ // quality:health - Monorepo health check
333
+ // ======================================================================
334
+ {
335
+ id: "quality:health",
336
+ group: "quality",
337
+ describe: "Check monorepo health score",
338
+ longDescription: "Analyzes monorepo health including dependency issues, structure problems, and build health. Returns health score (0-100) with grade (A-F) and actionable recommendations.",
339
+ handler: "./cli/commands/health.js#default",
340
+ handlerPath: "./cli/commands/health.js",
341
+ flags: defineCommandFlags(healthFlags),
342
+ examples: [
343
+ "kb quality:health",
344
+ "kb quality:health --detailed",
345
+ "kb quality:health --package @kb-labs/core",
346
+ "kb quality:health --json"
347
+ ],
348
+ permissions: pluginPermissions
349
+ },
350
+ // ======================================================================
351
+ // quality:fix-deps - Dependency auto-fixer
352
+ // ======================================================================
353
+ {
354
+ id: "quality:fix-deps",
355
+ group: "quality",
356
+ describe: "Auto-fix dependency issues",
357
+ longDescription: "Automatically fixes dependency issues including removing unused deps, adding missing workspace deps, and aligning duplicate versions. Supports --dry-run for previewing changes.",
358
+ handler: "./cli/commands/fix-deps.js#default",
359
+ handlerPath: "./cli/commands/fix-deps.js",
360
+ flags: defineCommandFlags(fixDepsFlags),
361
+ examples: [
362
+ "kb quality:fix-deps --stats",
363
+ "kb quality:fix-deps --remove-unused --dry-run",
364
+ "kb quality:fix-deps --align-versions",
365
+ "kb quality:fix-deps --all --dry-run"
366
+ ],
367
+ permissions: pluginPermissions
368
+ },
369
+ // ======================================================================
370
+ // quality:build-order - Calculate build order with topological sort
371
+ // ======================================================================
372
+ {
373
+ id: "quality:build-order",
374
+ group: "quality",
375
+ describe: "Calculate build order using topological sort",
376
+ longDescription: "Analyzes package dependencies and calculates correct build order using topological sort. Shows build layers where each layer can be built in parallel. Detects circular dependencies.",
377
+ handler: "./cli/commands/build-order.js#default",
378
+ handlerPath: "./cli/commands/build-order.js",
379
+ flags: defineCommandFlags(buildOrderFlags),
380
+ examples: [
381
+ "kb quality:build-order",
382
+ "kb quality:build-order --layers",
383
+ "kb quality:build-order --package @kb-labs/core",
384
+ "kb quality:build-order --script > build.sh"
385
+ ],
386
+ permissions: pluginPermissions
387
+ },
388
+ // ======================================================================
389
+ // quality:cycles - Detect circular dependencies
390
+ // ======================================================================
391
+ {
392
+ id: "quality:cycles",
393
+ group: "quality",
394
+ describe: "Detect circular dependencies",
395
+ longDescription: "Uses DFS to find all circular dependency chains in the monorepo. Shows complete dependency cycles with recommendations for breaking them.",
396
+ handler: "./cli/commands/cycles.js#default",
397
+ handlerPath: "./cli/commands/cycles.js",
398
+ flags: defineCommandFlags(cyclesFlags),
399
+ examples: [
400
+ "kb quality:cycles",
401
+ "kb quality:cycles --json"
402
+ ],
403
+ permissions: pluginPermissions
404
+ },
405
+ // ======================================================================
406
+ // quality:visualize - Visualize dependency graph
407
+ // ======================================================================
408
+ {
409
+ id: "quality:visualize",
410
+ group: "quality",
411
+ describe: "Visualize dependency graph",
412
+ longDescription: "Visualize monorepo dependency graph in various formats: tree view, DOT format for graphviz, reverse dependencies (who depends on this), impact analysis (what will be affected by changes), and comprehensive graph statistics.",
413
+ handler: "./cli/commands/visualize.js#default",
414
+ handlerPath: "./cli/commands/visualize.js",
415
+ flags: defineCommandFlags(visualizeFlags),
416
+ examples: [
417
+ "kb quality:visualize --stats",
418
+ "kb quality:visualize --tree --package @kb-labs/core",
419
+ "kb quality:visualize --reverse --package @kb-labs/sdk",
420
+ "kb quality:visualize --impact --package @kb-labs/core",
421
+ "kb quality:visualize --dot > deps.dot"
422
+ ],
423
+ permissions: pluginPermissions
424
+ },
425
+ // ======================================================================
426
+ // quality:check-builds - Check build status across monorepo
427
+ // ======================================================================
428
+ {
429
+ id: "quality:check-builds",
430
+ group: "quality",
431
+ describe: "Check build status across monorepo",
432
+ longDescription: "Analyzes build status across all packages with build scripts. Detects build failures with error messages and stale builds (dist/ older than src/). Results are cached for 10 minutes.",
433
+ handler: "./cli/commands/check-builds.js#default",
434
+ handlerPath: "./cli/commands/check-builds.js",
435
+ flags: defineCommandFlags(checkBuildsFlags),
436
+ examples: [
437
+ "kb quality:check-builds",
438
+ "kb quality:check-builds --package @kb-labs/core",
439
+ "kb quality:check-builds --timeout 60000",
440
+ "kb quality:check-builds --json",
441
+ "kb quality:check-builds --refresh"
442
+ ],
443
+ permissions: heavyOperationsPermissions
444
+ },
445
+ // ======================================================================
446
+ // quality:check-types - TypeScript type safety analysis
447
+ // ======================================================================
448
+ {
449
+ id: "quality:check-types",
450
+ group: "quality",
451
+ describe: "Analyze TypeScript type safety across monorepo",
452
+ longDescription: "Analyzes TypeScript type errors, warnings, and type coverage using TypeScript Compiler API. Detects any usage, @ts-ignore comments, and calculates type coverage percentage. Results are cached for 10 minutes.",
453
+ handler: "./cli/commands/check-types.js#default",
454
+ handlerPath: "./cli/commands/check-types.js",
455
+ flags: defineCommandFlags(checkTypesFlags),
456
+ examples: [
457
+ "kb quality:check-types",
458
+ "kb quality:check-types --package @kb-labs/core",
459
+ "kb quality:check-types --errors-only",
460
+ "kb quality:check-types --json",
461
+ "kb quality:check-types --refresh"
462
+ ],
463
+ permissions: heavyOperationsPermissions
464
+ },
465
+ // ======================================================================
466
+ // quality:check-tests - Test execution and coverage tracking
467
+ // ======================================================================
468
+ {
469
+ id: "quality:check-tests",
470
+ group: "quality",
471
+ describe: "Run tests and track coverage across monorepo",
472
+ longDescription: "Runs tests across all packages with test scripts and collects coverage statistics. Parses test output (vitest/jest) to extract test counts and reads coverage-summary.json. Results are cached for 5 minutes.",
473
+ handler: "./cli/commands/check-tests.js#default",
474
+ handlerPath: "./cli/commands/check-tests.js",
475
+ flags: defineCommandFlags(checkTestsFlags),
476
+ examples: [
477
+ "kb quality:check-tests",
478
+ "kb quality:check-tests --package @kb-labs/core",
479
+ "kb quality:check-tests --with-coverage",
480
+ "kb quality:check-tests --coverage-only",
481
+ "kb quality:check-tests --timeout 120000",
482
+ "kb quality:check-tests --json"
483
+ ],
484
+ permissions: heavyOperationsPermissions
485
+ },
486
+ // ======================================================================
487
+ // quality:dead-code - Dead code file detection
488
+ // ======================================================================
489
+ {
490
+ id: "quality:dead-code",
491
+ group: "quality",
492
+ describe: "Detect dead (unreachable) source files",
493
+ longDescription: "Analyzes import graph to find source files not reachable from any entry point (package.json, tsup.config.ts, manifest.ts). Supports automated removal with backup and restore capabilities. Zero false positives by design.",
494
+ handler: "./cli/commands/dead-code.js#default",
495
+ handlerPath: "./cli/commands/dead-code.js",
496
+ flags: defineCommandFlags(deadCodeFlags),
497
+ examples: [
498
+ "kb quality:dead-code",
499
+ "kb quality:dead-code --package @kb-labs/core",
500
+ "kb quality:dead-code --auto-remove --dry-run",
501
+ "kb quality:dead-code --auto-remove",
502
+ "kb quality:dead-code --list-backups",
503
+ "kb quality:dead-code --restore 2026-02-15T10-30-00",
504
+ "kb quality:dead-code --json"
505
+ ],
506
+ permissions: pluginPermissions
507
+ }
508
+ ]
509
+ },
510
+ // REST API routes
511
+ rest: {
512
+ basePath: QUALITY_BASE_PATH,
513
+ routes: [
514
+ // GET /stats
515
+ {
516
+ method: "GET",
517
+ path: QUALITY_ROUTES.STATS,
518
+ handler: "./rest/handlers/stats-handler.js#default",
519
+ input: {
520
+ zod: "@kb-labs/quality-contracts#StatsRequestSchema"
521
+ },
522
+ output: {
523
+ zod: "@kb-labs/quality-contracts#StatsResponseSchema"
524
+ }
525
+ },
526
+ // GET /health
527
+ {
528
+ method: "GET",
529
+ path: QUALITY_ROUTES.HEALTH,
530
+ handler: "./rest/handlers/health-handler.js#default",
531
+ input: {
532
+ zod: "@kb-labs/quality-contracts#HealthRequestSchema"
533
+ },
534
+ output: {
535
+ zod: "@kb-labs/quality-contracts#HealthResponseSchema"
536
+ }
537
+ },
538
+ // GET /dependencies
539
+ {
540
+ method: "GET",
541
+ path: QUALITY_ROUTES.DEPENDENCIES,
542
+ handler: "./rest/handlers/dependencies-handler.js#default",
543
+ input: {
544
+ zod: "@kb-labs/quality-contracts#DependenciesRequestSchema"
545
+ },
546
+ output: {
547
+ zod: "@kb-labs/quality-contracts#DependenciesResponseSchema"
548
+ }
549
+ },
550
+ // GET /build-order
551
+ {
552
+ method: "GET",
553
+ path: QUALITY_ROUTES.BUILD_ORDER,
554
+ handler: "./rest/handlers/build-order-handler.js#default",
555
+ input: {
556
+ zod: "@kb-labs/quality-contracts#BuildOrderRequestSchema"
557
+ },
558
+ output: {
559
+ zod: "@kb-labs/quality-contracts#BuildOrderResponseSchema"
560
+ }
561
+ },
562
+ // GET /cycles
563
+ {
564
+ method: "GET",
565
+ path: QUALITY_ROUTES.CYCLES,
566
+ handler: "./rest/handlers/cycles-handler.js#default",
567
+ input: {
568
+ zod: "@kb-labs/quality-contracts#CyclesRequestSchema"
569
+ },
570
+ output: {
571
+ zod: "@kb-labs/quality-contracts#CyclesResponseSchema"
572
+ }
573
+ },
574
+ // GET /graph
575
+ {
576
+ method: "GET",
577
+ path: QUALITY_ROUTES.GRAPH,
578
+ handler: "./rest/handlers/graph-handler.js#default",
579
+ input: {
580
+ zod: "@kb-labs/quality-contracts#GraphRequestSchema"
581
+ },
582
+ output: {
583
+ zod: "@kb-labs/quality-contracts#GraphResponseSchema"
584
+ }
585
+ },
586
+ // GET /stale
587
+ {
588
+ method: "GET",
589
+ path: QUALITY_ROUTES.STALE,
590
+ handler: "./rest/handlers/stale-handler.js#default",
591
+ input: {
592
+ zod: "@kb-labs/quality-contracts#StaleRequestSchema"
593
+ },
594
+ output: {
595
+ zod: "@kb-labs/quality-contracts#StaleResponseSchema"
596
+ }
597
+ },
598
+ // GET /builds
599
+ {
600
+ method: "GET",
601
+ path: QUALITY_ROUTES.BUILDS,
602
+ handler: "./rest/handlers/builds-handler.js#default",
603
+ input: {
604
+ zod: "@kb-labs/quality-contracts#BuildsRequestSchema"
605
+ },
606
+ output: {
607
+ zod: "@kb-labs/quality-contracts#BuildsResponseSchema"
608
+ }
609
+ },
610
+ // GET /types
611
+ {
612
+ method: "GET",
613
+ path: QUALITY_ROUTES.TYPES,
614
+ handler: "./rest/handlers/types-handler.js#default",
615
+ input: {
616
+ zod: "@kb-labs/quality-contracts#TypesRequestSchema"
617
+ },
618
+ output: {
619
+ zod: "@kb-labs/quality-contracts#TypesResponseSchema"
620
+ }
621
+ },
622
+ // GET /tests
623
+ {
624
+ method: "GET",
625
+ path: QUALITY_ROUTES.TESTS,
626
+ handler: "./rest/handlers/tests-handler.js#default",
627
+ input: {
628
+ zod: "@kb-labs/quality-contracts#TestsRequestSchema"
629
+ },
630
+ output: {
631
+ zod: "@kb-labs/quality-contracts#TestsResponseSchema"
632
+ }
633
+ }
634
+ ]
635
+ },
636
+ // Studio V2 — Module Federation pages
637
+ studio: {
638
+ version: 2,
639
+ remoteName: "qualityPlugin",
640
+ pages: [
641
+ {
642
+ id: "quality.overview",
643
+ title: "Quality",
644
+ icon: "CheckCircleOutlined",
645
+ route: "/p/quality",
646
+ entry: "./QualityOverview",
647
+ order: 1
648
+ }
649
+ ],
650
+ menus: [
651
+ {
652
+ id: "quality",
653
+ label: "Quality",
654
+ icon: "CheckCircleOutlined",
655
+ target: "quality.overview",
656
+ order: 40
657
+ }
658
+ ]
659
+ },
660
+ permissions: pluginPermissions
661
+ };
662
+ var manifest_default = manifest;
663
+
664
+ export { manifest, manifest_default as manifestDefault };
665
+ //# sourceMappingURL=index.js.map
666
+ //# sourceMappingURL=index.js.map