@kb-labs/quality-entry 2.119.0-canary.f8394d5fd → 2.119.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/build-order.js.map +1 -1
- package/dist/cli/commands/check-builds.js.map +1 -1
- package/dist/cli/commands/check-layers.js.map +1 -1
- package/dist/cli/commands/check-tests.js.map +1 -1
- package/dist/cli/commands/check-types.js.map +1 -1
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/coupling.js.map +1 -1
- package/dist/cli/commands/cycles.js.map +1 -1
- package/dist/cli/commands/dead-code.js.map +1 -1
- package/dist/cli/commands/fix-deps.js.map +1 -1
- package/dist/cli/commands/flags.js.map +1 -1
- package/dist/cli/commands/gate.js.map +1 -1
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/snapshot.js.map +1 -1
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/visualize.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.js.map +1 -1
- package/dist/rest/handlers/build-order-handler.js.map +1 -1
- package/dist/rest/handlers/builds-handler.js.map +1 -1
- package/dist/rest/handlers/coupling-handler.js.map +1 -1
- package/dist/rest/handlers/cycles-handler.js.map +1 -1
- package/dist/rest/handlers/dependencies-handler.js.map +1 -1
- package/dist/rest/handlers/graph-handler.js.map +1 -1
- package/dist/rest/handlers/health-handler.js.map +1 -1
- package/dist/rest/handlers/history-handler.js.map +1 -1
- package/dist/rest/handlers/knip-handler.js.map +1 -1
- package/dist/rest/handlers/layers-handler.js.map +1 -1
- package/dist/rest/handlers/snapshot-handler.js.map +1 -1
- package/dist/rest/handlers/stale-handler.js.map +1 -1
- package/dist/rest/handlers/stats-handler.js.map +1 -1
- package/dist/rest/handlers/tests-handler.js.map +1 -1
- package/dist/rest/handlers/types-handler.js.map +1 -1
- package/package.json +9 -9
- package/dist/manifest.json +0 -1394
- package/dist/widgets/117.js +0 -32
- package/dist/widgets/165.js +0 -1
- package/dist/widgets/326.js +0 -1
- package/dist/widgets/370.js +0 -1
- package/dist/widgets/405.js +0 -1
- package/dist/widgets/46.js +0 -445
- package/dist/widgets/50.js +0 -1
- package/dist/widgets/546.js +0 -1
- package/dist/widgets/648.js +0 -1
- package/dist/widgets/669.js +0 -1
- package/dist/widgets/707.js +0 -1
- package/dist/widgets/775.js +0 -1
- package/dist/widgets/78.js +0 -1
- package/dist/widgets/832.js +0 -96
- package/dist/widgets/875.js +0 -25
- package/dist/widgets/945.js +0 -1
- package/dist/widgets/968.js +0 -9
- package/dist/widgets/__federation_expose_QualityOverview.js +0 -1
- package/dist/widgets/mf-manifest.json +0 -229
- package/dist/widgets/mf-stats.json +0 -253
- package/dist/widgets/remoteEntry.js +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/flags.ts"],"names":[],"mappings":"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","file":"flags.js","sourcesContent":["/**\n * Shared command flags definitions\n *\n * DRY pattern: Define flags once, use in both manifest and command handlers.\n */\n\n/**\n * Flags for quality:stats command\n */\nexport const statsFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n md: {\n type: 'boolean',\n description: 'Output Markdown table',\n default: false,\n },\n health: {\n type: 'boolean',\n description: 'Show health score',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and recalculate',\n default: false,\n },\n} as const;\n\n/** Parsed value type for StatsFlags */\nexport type StatsFlags = {\n json?: boolean;\n md?: boolean;\n health?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:health command\n */\nexport const healthFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n package: {\n type: 'string',\n description: 'Check health for specific package',\n alias: 'p',\n },\n detailed: {\n type: 'boolean',\n description: 'Show detailed breakdown',\n default: false,\n alias: 'd',\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and recompute',\n default: false,\n },\n} as const;\n\n/** Parsed value type for HealthFlags */\nexport type HealthFlags = {\n json?: boolean;\n package?: string;\n detailed?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:fix-deps command\n */\nexport const fixDepsFlags = {\n 'dry-run': {\n type: 'boolean',\n description: 'Preview changes without applying them',\n default: false,\n },\n 'remove-unused': {\n type: 'boolean',\n description: 'Remove unused dependencies',\n default: false,\n },\n 'add-missing': {\n type: 'boolean',\n description: 'Add missing workspace dependencies',\n default: false,\n },\n 'align-versions': {\n type: 'boolean',\n description: 'Align duplicate dependency versions',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Apply all fixes (remove-unused + add-missing + align-versions)',\n default: false,\n },\n stats: {\n type: 'boolean',\n description: 'Show dependency statistics',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for FixDepsFlags */\nexport type FixDepsFlags = {\n 'dry-run'?: boolean;\n 'remove-unused'?: boolean;\n 'add-missing'?: boolean;\n 'align-versions'?: boolean;\n all?: boolean;\n stats?: boolean;\n json?: boolean;\n};\n\n/**\n * Flags for quality:run command\n */\nexport const runFlags = {\n script: {\n type: 'string',\n description: 'Script to run (build, test, type-check, lint)',\n required: true,\n },\n 'continue-on-error': {\n type: 'boolean',\n description: 'Continue even if packages fail',\n default: true,\n },\n parallel: {\n type: 'boolean',\n description: 'Run in parallel (respects dependencies)',\n default: false,\n },\n filter: {\n type: 'string',\n description: 'Filter packages by pattern (@kb-labs/*)',\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n verbose: {\n type: 'boolean',\n description: 'Show full output for each package',\n default: false,\n alias: 'v',\n },\n} as const;\n\n/** Parsed value type for RunFlags */\nexport type RunFlags = {\n script?: string;\n 'continue-on-error'?: boolean;\n parallel?: boolean;\n filter?: string;\n json?: boolean;\n verbose?: boolean;\n};\n\n/**\n * Flags for quality:build-order command\n */\nexport const buildOrderFlags = {\n package: {\n type: 'string',\n description: 'Calculate build order for specific package',\n alias: 'p',\n },\n layers: {\n type: 'boolean',\n description: 'Show build layers (parallel groups)',\n default: false,\n },\n script: {\n type: 'boolean',\n description: 'Output as shell script',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for BuildOrderFlags */\nexport type BuildOrderFlags = {\n package?: string;\n layers?: boolean;\n script?: boolean;\n json?: boolean;\n};\n\n/**\n * Flags for quality:cycles command\n */\nexport const cyclesFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CyclesFlags */\nexport type CyclesFlags = {\n json?: boolean;\n};\n\n/**\n * Flags for quality:visualize command\n */\nexport const visualizeFlags = {\n package: {\n type: 'string',\n description: 'Focus on specific package',\n alias: 'p',\n },\n tree: {\n type: 'boolean',\n description: 'Show dependency tree',\n default: false,\n },\n dot: {\n type: 'boolean',\n description: 'Output DOT format for graphviz',\n default: false,\n },\n stats: {\n type: 'boolean',\n description: 'Show graph statistics',\n default: false,\n },\n reverse: {\n type: 'boolean',\n description: 'Show reverse dependencies (who depends on this)',\n default: false,\n },\n impact: {\n type: 'boolean',\n description: 'Show impact analysis (what will be affected)',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for VisualizeFlags */\nexport type VisualizeFlags = {\n package?: string;\n tree?: boolean;\n dot?: boolean;\n stats?: boolean;\n reverse?: boolean;\n impact?: boolean;\n json?: boolean;\n};\n\n/**\n * Flags for quality:check-builds command\n */\nexport const checkBuildsFlags = {\n package: {\n type: 'string',\n description: 'Check builds for specific package',\n alias: 'p',\n },\n timeout: {\n type: 'number',\n description: 'Timeout per package in milliseconds',\n default: 30000,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and check fresh',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CheckBuildsFlags */\nexport type CheckBuildsFlags = {\n package?: string;\n timeout?: number;\n json?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:check-types command\n */\nexport const checkTypesFlags = {\n package: {\n type: 'string',\n description: 'Analyze types for specific package',\n alias: 'p',\n },\n 'errors-only': {\n type: 'boolean',\n description: 'Show only packages with errors',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and analyze fresh',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CheckTypesFlags */\nexport type CheckTypesFlags = {\n package?: string;\n 'errors-only'?: boolean;\n json?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:check-tests command\n */\nexport const checkTestsFlags = {\n package: {\n type: 'string',\n description: 'Run tests for specific package',\n alias: 'p',\n },\n timeout: {\n type: 'number',\n description: 'Timeout per package in milliseconds',\n default: 60000,\n },\n 'with-coverage': {\n type: 'boolean',\n description: 'Collect coverage statistics',\n default: false,\n },\n 'coverage-only': {\n type: 'boolean',\n description: 'Only show existing coverage (skip test execution)',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and run fresh',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CheckTestsFlags */\nexport type CheckTestsFlags = {\n package?: string;\n timeout?: number;\n 'with-coverage'?: boolean;\n 'coverage-only'?: boolean;\n json?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:check-layers command\n */\nexport const checkLayersFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n package: { type: 'string', description: 'Filter violations by package name', alias: 'p' },\n} as const;\n\nexport type CheckLayersFlags = { json?: boolean; package?: string };\n\n/**\n * Flags for quality:coupling command\n */\nexport const couplingFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n sort: { type: 'string', description: 'Sort by: instability | coupled', default: 'instability' },\n top: { type: 'number', description: 'Show top N packages', default: 10 },\n} as const;\n\nexport type CouplingFlags = { json?: boolean; sort?: string; top?: number };\n\n/**\n * Flags for quality:snapshot command\n */\nexport const snapshotFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n} as const;\n\nexport type SnapshotFlags = { json?: boolean };\n\n/**\n * Flags for quality:history command\n */\nexport const historyFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n limit: { type: 'number', description: 'Number of entries to show', default: 10 },\n} as const;\n\nexport type HistoryFlags = { json?: boolean; limit?: number };\n\n/**\n * Flags for quality:dead-code command\n */\nexport const deadCodeFlags = {\n package: {\n type: 'string',\n description: 'Scan specific package only',\n alias: 'p',\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n verbose: {\n type: 'boolean',\n description: 'Show entry points and alive reasons',\n default: false,\n alias: 'v',\n },\n 'auto-remove': {\n type: 'boolean',\n description: 'Remove dead files (creates backup first)',\n default: false,\n },\n 'dry-run': {\n type: 'boolean',\n description: 'Show what would be removed without actually deleting',\n default: false,\n },\n restore: {\n type: 'string',\n description: 'Restore files from backup ID',\n },\n 'list-backups': {\n type: 'boolean',\n description: 'List available backups',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and rescan',\n default: false,\n },\n} as const;\n\n/** Parsed value type for DeadCodeFlags */\nexport type DeadCodeFlags = {\n package?: string;\n json?: boolean;\n verbose?: boolean;\n 'auto-remove'?: boolean;\n 'dry-run'?: boolean;\n restore?: string;\n 'list-backups'?: boolean;\n refresh?: boolean;\n};\n\nexport const contextFlags = {\n package: {\n type: 'string',\n description: 'Package name to get context for',\n alias: 'p',\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\nexport type ContextFlags = {\n package?: string;\n json?: boolean;\n};\n\nexport const gateFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n strict: {\n type: 'boolean',\n description: 'Fail even on pre-existing violations (not just new ones)',\n default: false,\n },\n} as const;\n\nexport type GateFlags = {\n json?: boolean;\n strict?: boolean;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../home/runner/work/kb-labs/kb-labs/plugins/quality/entry/src/cli/commands/flags.ts"],"names":[],"mappings":";AASO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,EAAA,EAAI;AAAA,IACF,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,uBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,mBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,8BAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAaO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,mCAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,yBAAA;AAAA,IACb,OAAA,EAAS,KAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,4BAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAaO,IAAM,YAAA,GAAe;AAAA,EAC1B,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,uCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,4BAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,qCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,GAAA,EAAK;AAAA,IACH,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,gEAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,4BAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAgBO,IAAM,QAAA,GAAW;AAAA,EACtB,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,+CAAA;AAAA,IACb,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,mBAAA,EAAqB;AAAA,IACnB,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,gCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,yCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,mCAAA;AAAA,IACb,OAAA,EAAS,KAAA;AAAA,IACT,KAAA,EAAO;AAAA;AAEX;AAeO,IAAM,eAAA,GAAkB;AAAA,EAC7B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,4CAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,qCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,wBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAaO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAUO,IAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,2BAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,sBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,GAAA,EAAK;AAAA,IACH,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,gCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,uBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,iDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,8CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAgBO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,mCAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,qCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,8BAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAaO,IAAM,eAAA,GAAkB;AAAA,EAC7B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,oCAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,gCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,gCAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAaO,IAAM,eAAA,GAAkB;AAAA,EAC7B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,gCAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,qCAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,6BAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,mDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,4BAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAeO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,MAAM,EAAE,IAAA,EAAM,WAAW,WAAA,EAAa,oBAAA,EAAsB,SAAS,KAAA,EAAM;AAAA,EAC3E,SAAS,EAAE,IAAA,EAAM,UAAU,WAAA,EAAa,mCAAA,EAAqC,OAAO,GAAA;AACtF;AAOO,IAAM,aAAA,GAAgB;AAAA,EAC3B,MAAM,EAAE,IAAA,EAAM,WAAW,WAAA,EAAa,oBAAA,EAAsB,SAAS,KAAA,EAAM;AAAA,EAC3E,MAAM,EAAE,IAAA,EAAM,UAAU,WAAA,EAAa,gCAAA,EAAkC,SAAS,aAAA,EAAc;AAAA,EAC9F,KAAK,EAAE,IAAA,EAAM,UAAU,WAAA,EAAa,qBAAA,EAAuB,SAAS,EAAA;AACtE;AAOO,IAAM,aAAA,GAAgB;AAAA,EAC3B,MAAM,EAAE,IAAA,EAAM,WAAW,WAAA,EAAa,oBAAA,EAAsB,SAAS,KAAA;AACvE;AAOO,IAAM,YAAA,GAAe;AAAA,EAC1B,MAAM,EAAE,IAAA,EAAM,WAAW,WAAA,EAAa,oBAAA,EAAsB,SAAS,KAAA,EAAM;AAAA,EAC3E,OAAO,EAAE,IAAA,EAAM,UAAU,WAAA,EAAa,2BAAA,EAA6B,SAAS,EAAA;AAC9E;AAOO,IAAM,aAAA,GAAgB;AAAA,EAC3B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,4BAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,qCAAA;AAAA,IACb,OAAA,EAAS,KAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACT;AAAA,EACA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,0CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,sDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,wBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,yBAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAcO,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,iCAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb;AAOO,IAAM,SAAA,GAAY;AAAA,EACvB,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,oBAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,0DAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb","file":"flags.js","sourcesContent":["/**\n * Shared command flags definitions\n *\n * DRY pattern: Define flags once, use in both manifest and command handlers.\n */\n\n/**\n * Flags for quality:stats command\n */\nexport const statsFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n md: {\n type: 'boolean',\n description: 'Output Markdown table',\n default: false,\n },\n health: {\n type: 'boolean',\n description: 'Show health score',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and recalculate',\n default: false,\n },\n} as const;\n\n/** Parsed value type for StatsFlags */\nexport type StatsFlags = {\n json?: boolean;\n md?: boolean;\n health?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:health command\n */\nexport const healthFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n package: {\n type: 'string',\n description: 'Check health for specific package',\n alias: 'p',\n },\n detailed: {\n type: 'boolean',\n description: 'Show detailed breakdown',\n default: false,\n alias: 'd',\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and recompute',\n default: false,\n },\n} as const;\n\n/** Parsed value type for HealthFlags */\nexport type HealthFlags = {\n json?: boolean;\n package?: string;\n detailed?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:fix-deps command\n */\nexport const fixDepsFlags = {\n 'dry-run': {\n type: 'boolean',\n description: 'Preview changes without applying them',\n default: false,\n },\n 'remove-unused': {\n type: 'boolean',\n description: 'Remove unused dependencies',\n default: false,\n },\n 'add-missing': {\n type: 'boolean',\n description: 'Add missing workspace dependencies',\n default: false,\n },\n 'align-versions': {\n type: 'boolean',\n description: 'Align duplicate dependency versions',\n default: false,\n },\n all: {\n type: 'boolean',\n description: 'Apply all fixes (remove-unused + add-missing + align-versions)',\n default: false,\n },\n stats: {\n type: 'boolean',\n description: 'Show dependency statistics',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for FixDepsFlags */\nexport type FixDepsFlags = {\n 'dry-run'?: boolean;\n 'remove-unused'?: boolean;\n 'add-missing'?: boolean;\n 'align-versions'?: boolean;\n all?: boolean;\n stats?: boolean;\n json?: boolean;\n};\n\n/**\n * Flags for quality:run command\n */\nexport const runFlags = {\n script: {\n type: 'string',\n description: 'Script to run (build, test, type-check, lint)',\n required: true,\n },\n 'continue-on-error': {\n type: 'boolean',\n description: 'Continue even if packages fail',\n default: true,\n },\n parallel: {\n type: 'boolean',\n description: 'Run in parallel (respects dependencies)',\n default: false,\n },\n filter: {\n type: 'string',\n description: 'Filter packages by pattern (@kb-labs/*)',\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n verbose: {\n type: 'boolean',\n description: 'Show full output for each package',\n default: false,\n alias: 'v',\n },\n} as const;\n\n/** Parsed value type for RunFlags */\nexport type RunFlags = {\n script?: string;\n 'continue-on-error'?: boolean;\n parallel?: boolean;\n filter?: string;\n json?: boolean;\n verbose?: boolean;\n};\n\n/**\n * Flags for quality:build-order command\n */\nexport const buildOrderFlags = {\n package: {\n type: 'string',\n description: 'Calculate build order for specific package',\n alias: 'p',\n },\n layers: {\n type: 'boolean',\n description: 'Show build layers (parallel groups)',\n default: false,\n },\n script: {\n type: 'boolean',\n description: 'Output as shell script',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for BuildOrderFlags */\nexport type BuildOrderFlags = {\n package?: string;\n layers?: boolean;\n script?: boolean;\n json?: boolean;\n};\n\n/**\n * Flags for quality:cycles command\n */\nexport const cyclesFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CyclesFlags */\nexport type CyclesFlags = {\n json?: boolean;\n};\n\n/**\n * Flags for quality:visualize command\n */\nexport const visualizeFlags = {\n package: {\n type: 'string',\n description: 'Focus on specific package',\n alias: 'p',\n },\n tree: {\n type: 'boolean',\n description: 'Show dependency tree',\n default: false,\n },\n dot: {\n type: 'boolean',\n description: 'Output DOT format for graphviz',\n default: false,\n },\n stats: {\n type: 'boolean',\n description: 'Show graph statistics',\n default: false,\n },\n reverse: {\n type: 'boolean',\n description: 'Show reverse dependencies (who depends on this)',\n default: false,\n },\n impact: {\n type: 'boolean',\n description: 'Show impact analysis (what will be affected)',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\n/** Parsed value type for VisualizeFlags */\nexport type VisualizeFlags = {\n package?: string;\n tree?: boolean;\n dot?: boolean;\n stats?: boolean;\n reverse?: boolean;\n impact?: boolean;\n json?: boolean;\n};\n\n/**\n * Flags for quality:check-builds command\n */\nexport const checkBuildsFlags = {\n package: {\n type: 'string',\n description: 'Check builds for specific package',\n alias: 'p',\n },\n timeout: {\n type: 'number',\n description: 'Timeout per package in milliseconds',\n default: 30000,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and check fresh',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CheckBuildsFlags */\nexport type CheckBuildsFlags = {\n package?: string;\n timeout?: number;\n json?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:check-types command\n */\nexport const checkTypesFlags = {\n package: {\n type: 'string',\n description: 'Analyze types for specific package',\n alias: 'p',\n },\n 'errors-only': {\n type: 'boolean',\n description: 'Show only packages with errors',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and analyze fresh',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CheckTypesFlags */\nexport type CheckTypesFlags = {\n package?: string;\n 'errors-only'?: boolean;\n json?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:check-tests command\n */\nexport const checkTestsFlags = {\n package: {\n type: 'string',\n description: 'Run tests for specific package',\n alias: 'p',\n },\n timeout: {\n type: 'number',\n description: 'Timeout per package in milliseconds',\n default: 60000,\n },\n 'with-coverage': {\n type: 'boolean',\n description: 'Collect coverage statistics',\n default: false,\n },\n 'coverage-only': {\n type: 'boolean',\n description: 'Only show existing coverage (skip test execution)',\n default: false,\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and run fresh',\n default: false,\n },\n} as const;\n\n/** Parsed value type for CheckTestsFlags */\nexport type CheckTestsFlags = {\n package?: string;\n timeout?: number;\n 'with-coverage'?: boolean;\n 'coverage-only'?: boolean;\n json?: boolean;\n refresh?: boolean;\n};\n\n/**\n * Flags for quality:check-layers command\n */\nexport const checkLayersFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n package: { type: 'string', description: 'Filter violations by package name', alias: 'p' },\n} as const;\n\nexport type CheckLayersFlags = { json?: boolean; package?: string };\n\n/**\n * Flags for quality:coupling command\n */\nexport const couplingFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n sort: { type: 'string', description: 'Sort by: instability | coupled', default: 'instability' },\n top: { type: 'number', description: 'Show top N packages', default: 10 },\n} as const;\n\nexport type CouplingFlags = { json?: boolean; sort?: string; top?: number };\n\n/**\n * Flags for quality:snapshot command\n */\nexport const snapshotFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n} as const;\n\nexport type SnapshotFlags = { json?: boolean };\n\n/**\n * Flags for quality:history command\n */\nexport const historyFlags = {\n json: { type: 'boolean', description: 'Output JSON format', default: false },\n limit: { type: 'number', description: 'Number of entries to show', default: 10 },\n} as const;\n\nexport type HistoryFlags = { json?: boolean; limit?: number };\n\n/**\n * Flags for quality:dead-code command\n */\nexport const deadCodeFlags = {\n package: {\n type: 'string',\n description: 'Scan specific package only',\n alias: 'p',\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n verbose: {\n type: 'boolean',\n description: 'Show entry points and alive reasons',\n default: false,\n alias: 'v',\n },\n 'auto-remove': {\n type: 'boolean',\n description: 'Remove dead files (creates backup first)',\n default: false,\n },\n 'dry-run': {\n type: 'boolean',\n description: 'Show what would be removed without actually deleting',\n default: false,\n },\n restore: {\n type: 'string',\n description: 'Restore files from backup ID',\n },\n 'list-backups': {\n type: 'boolean',\n description: 'List available backups',\n default: false,\n },\n refresh: {\n type: 'boolean',\n description: 'Bypass cache and rescan',\n default: false,\n },\n} as const;\n\n/** Parsed value type for DeadCodeFlags */\nexport type DeadCodeFlags = {\n package?: string;\n json?: boolean;\n verbose?: boolean;\n 'auto-remove'?: boolean;\n 'dry-run'?: boolean;\n restore?: string;\n 'list-backups'?: boolean;\n refresh?: boolean;\n};\n\nexport const contextFlags = {\n package: {\n type: 'string',\n description: 'Package name to get context for',\n alias: 'p',\n },\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n} as const;\n\nexport type ContextFlags = {\n package?: string;\n json?: boolean;\n};\n\nexport const gateFlags = {\n json: {\n type: 'boolean',\n description: 'Output JSON format',\n default: false,\n },\n strict: {\n type: 'boolean',\n description: 'Fail even on pre-existing violations (not just new ones)',\n default: false,\n },\n} as const;\n\nexport type GateFlags = {\n json?: boolean;\n strict?: boolean;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../../home/runner/work/kb-labs/kb-labs/plugins/quality/entry/src/cli/commands/gate.ts"],"names":[],"mappings":"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","file":"gate.js","sourcesContent":["import {\n defineCommand,\n useConfig,\n type CLIInput,\n type PluginContextV3,\n type CommandResult,\n} from '@kb-labs/sdk';\nimport { analyzeLayering, QualitySnapshotStore } from '@kb-labs/quality-core';\nimport { defaultQualityConfig, type QualityPluginConfig } from '@kb-labs/quality-contracts';\nimport type { GateFlags } from './flags.js';\n\nexport default defineCommand<unknown, CLIInput<GateFlags>, unknown>({\n id: 'quality:gate',\n description: 'Architecture gate: fail if new layering violations introduced',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<GateFlags>): Promise<CommandResult> {\n const { flags } = input;\n const config = await useConfig<QualityPluginConfig>();\n const cwd = ctx.cwd ?? process.cwd();\n const cfg = config ?? defaultQualityConfig;\n\n const report = await analyzeLayering({ rootDir: cwd, layerMap: cfg.layers });\n const current = report.totalViolations;\n\n // Compare against last snapshot if available\n const store = new QualitySnapshotStore(cwd, cfg.maxSnapshots);\n const { latest } = store.history();\n const baseline = latest?.counters.layeringViolations ?? null;\n\n const newViolations = baseline !== null ? current - baseline : null;\n const failed = flags.strict\n ? current > 0\n : newViolations !== null\n ? newViolations > 0\n : current > 0;\n\n const result = {\n passed: !failed,\n current,\n baseline,\n newViolations,\n violations: report.violations,\n affectedPackages: report.affectedPackages,\n };\n\n if (flags.json) {\n ctx.ui?.json?.(result);\n return failed\n ? { ok: false, error: 'Quality gate failed', result: { failed } }\n : { ok: true, result: { failed } };\n }\n\n if (!failed) {\n const msg =\n baseline !== null\n ? `Gate passed — no new violations (${current} pre-existing)`\n : 'Gate passed — no layering violations';\n ctx.ui?.success?.(msg);\n return { ok: true };\n }\n\n const sections = [];\n\n if (newViolations !== null && newViolations > 0) {\n sections.push({\n header: `New violations introduced: ${newViolations} (was ${baseline}, now ${current})`,\n items: report.violations\n .map(v => `${v.fromPackage} → ${v.toPackage} ${v.importSpecifier}`)\n .slice(0, 20),\n });\n } else {\n sections.push({\n header: `${current} layering violation(s) in ${report.affectedPackages.length} package(s)`,\n items: report.affectedPackages,\n });\n }\n\n ctx.ui?.error?.('Gate failed — architecture violations detected', { sections });\n return { ok: false, error: 'Command failed' };\n },\n },\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../../home/runner/work/kb-labs/kb-labs/plugins/quality/entry/src/cli/commands/health.ts"],"names":["health"],"mappings":"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","file":"health.js","sourcesContent":["import {\n defineCommand,\n useConfig,\n type CLIInput,\n type PluginContextV3,\n type CommandResult,\n} from '@kb-labs/sdk';\nimport {\n analyzeLayering,\n analyzeCoupling,\n runKnip,\n analyzeTypes,\n calculateHealth,\n} from '@kb-labs/quality-core';\nimport { CACHE_KEYS, CACHE_TTLS, defaultQualityConfig, type QualityPluginConfig, type HealthScore, type KnipReport } from '@kb-labs/quality-contracts';\nimport type { HealthFlags } from './flags.js';\n\nexport default defineCommand<unknown, CLIInput<HealthFlags>, unknown>({\n id: 'quality:health',\n description: 'Multidimensional health score: architecture, TypeScript, dead code, dependencies',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<HealthFlags>): Promise<CommandResult> {\n const { flags } = input;\n const config = await useConfig<QualityPluginConfig>();\n const cwd = ctx.cwd ?? process.cwd();\n const cfg = config ?? defaultQualityConfig;\n\n const cached = await ctx.platform.cache.get(CACHE_KEYS.HEALTH);\n if (cached && !flags.refresh) {\n const health = cached as HealthScore;\n outputHealth(health, flags, ctx);\n return health.score < cfg.thresholds.health\n ? { ok: false, error: 'Health score is below threshold', result: health }\n : { ok: true, result: health };\n }\n\n const [layering, types] = await Promise.all([\n analyzeLayering({ rootDir: cwd, layerMap: cfg.layers }),\n analyzeTypes(cwd),\n ]);\n\n const coupling = analyzeCoupling({ rootDir: cwd, layerMap: cfg.layers });\n\n let knip: KnipReport = { unusedFiles: [], unusedExports: [], unusedDependencies: [], unlistedDependencies: [], totalIssues: 0 };\n if (cfg.knip.enabled) {\n knip = await runKnip({ shell: ctx.api.shell, rootDir: cwd });\n }\n\n const health = calculateHealth({\n layering,\n coupling,\n types,\n knip,\n totalPackages: coupling.packages.length,\n avgTestCoverage: null,\n thresholds: cfg.thresholds,\n });\n\n await ctx.platform.cache.set(CACHE_KEYS.HEALTH, health, CACHE_TTLS.FAST);\n\n outputHealth(health, flags, ctx);\n return health.score < cfg.thresholds.health\n ? { ok: false, error: 'Health score is below threshold', result: health }\n : { ok: true, result: health };\n },\n },\n});\n\nfunction outputHealth(health: Awaited<ReturnType<typeof calculateHealth>>, flags: { json?: boolean; detailed?: boolean }, ctx: PluginContextV3) {\n if (flags.json) {\n ctx.ui?.json?.(health);\n return;\n }\n\n const dimItems = Object.entries(health.dimensions).map(([key, dim]) => {\n const details = dim.details.length > 0 ? `: ${dim.details.join(', ')}` : '';\n return `${key} ${dim.score}/100 (${dim.grade})${details}`;\n });\n\n ctx.ui?.success?.(`Health score: ${health.score}/100 (${health.grade})`, {\n sections: [{ header: 'Dimensions', items: dimItems }],\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["
|
|
1
|
+
{"version":3,"sources":["../../../../home/runner/work/kb-labs/kb-labs/plugins/quality/entry/src/cli/commands/history.ts"],"names":[],"mappings":"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","file":"history.js","sourcesContent":["import {\n defineCommand,\n useConfig,\n type CLIInput,\n type PluginContextV3,\n type CommandResult,\n} from '@kb-labs/sdk';\nimport { QualitySnapshotStore } from '@kb-labs/quality-core';\nimport { defaultQualityConfig, type QualityPluginConfig } from '@kb-labs/quality-contracts';\nimport type { HistoryFlags } from './flags.js';\n\nexport default defineCommand<unknown, CLIInput<HistoryFlags>, unknown>({\n id: 'quality:history',\n description: 'Show quality snapshot history and trends',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<HistoryFlags>): Promise<CommandResult> {\n const { flags } = input;\n const config = await useConfig<QualityPluginConfig>();\n const cwd = ctx.cwd ?? process.cwd();\n\n const store = new QualitySnapshotStore(cwd, config?.maxSnapshots ?? defaultQualityConfig.maxSnapshots);\n const { snapshots, delta, latest } = store.history();\n\n if (snapshots.length === 0) {\n ctx.ui?.success?.('No snapshots yet. Run `kb quality snapshot` first.');\n return { ok: true };\n }\n\n const limit = flags.limit ?? 10;\n const recent = snapshots.slice(-limit).reverse();\n\n if (flags.json) {\n ctx.ui?.json?.({ snapshots: recent, delta, latest });\n return { ok: true };\n }\n\n const items = recent.map(s => {\n const date = new Date(s.timestamp).toLocaleString();\n const branch = s.git.branch ? ` [${s.git.branch}]` : '';\n return `${date}${branch} — ${s.score}/100 (${s.grade}) violations: ${s.counters.layeringViolations} any: ${s.counters.anyCount}`;\n });\n\n const sections: Array<{ header: string; items: string[] }> = [\n { header: `Last ${recent.length} snapshots`, items },\n ];\n\n if (delta) {\n const sign = (n: number) => (n > 0 ? `+${n}` : `${n}`);\n sections.push({\n header: 'Delta vs previous snapshot',\n items: [\n `Score: ${sign(delta.score)}`,\n `Layering violations: ${sign(delta.layeringViolations)}`,\n `Any count: ${sign(delta.anyCount)}`,\n `Unused files: ${sign(delta.unusedFiles)}`,\n `Avg instability: ${sign(delta.avgInstability)}`,\n ],\n });\n }\n\n ctx.ui?.success?.(`Quality history (${recent.length} snapshots)`, { sections });\n return { ok: true };\n },\n },\n});\n"]}
|