@kb-labs/qa-entry 2.93.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.
Files changed (112) hide show
  1. package/dist/cli/commands/baseline-diff.d.ts +14 -0
  2. package/dist/cli/commands/baseline-diff.js +40 -0
  3. package/dist/cli/commands/baseline-diff.js.map +1 -0
  4. package/dist/cli/commands/baseline-status.d.ts +10 -5
  5. package/dist/cli/commands/baseline-status.js +14 -17
  6. package/dist/cli/commands/baseline-status.js.map +1 -1
  7. package/dist/cli/commands/baseline-update.d.ts +10 -5
  8. package/dist/cli/commands/baseline-update.js +26 -18
  9. package/dist/cli/commands/baseline-update.js.map +1 -1
  10. package/dist/cli/commands/flags.d.ts +117 -132
  11. package/dist/cli/commands/flags.js +65 -79
  12. package/dist/cli/commands/flags.js.map +1 -1
  13. package/dist/cli/commands/qa-check.d.ts +13 -34
  14. package/dist/cli/commands/qa-check.js +26 -106
  15. package/dist/cli/commands/qa-check.js.map +1 -1
  16. package/dist/cli/commands/qa-gate.d.ts +19 -0
  17. package/dist/cli/commands/qa-gate.js +36 -0
  18. package/dist/cli/commands/qa-gate.js.map +1 -0
  19. package/dist/cli/commands/qa-history.d.ts +15 -5
  20. package/dist/cli/commands/qa-history.js +13 -24
  21. package/dist/cli/commands/qa-history.js.map +1 -1
  22. package/dist/cli/commands/qa-regressions.d.ts +10 -5
  23. package/dist/cli/commands/qa-regressions.js +15 -18
  24. package/dist/cli/commands/qa-regressions.js.map +1 -1
  25. package/dist/cli/commands/qa-run.d.ts +18 -11
  26. package/dist/cli/commands/qa-run.js +28 -141
  27. package/dist/cli/commands/qa-run.js.map +1 -1
  28. package/dist/cli/commands/qa-stats.d.ts +19 -0
  29. package/dist/cli/commands/qa-stats.js +43 -0
  30. package/dist/cli/commands/qa-stats.js.map +1 -0
  31. package/dist/cli/commands/qa-trends.d.ts +15 -5
  32. package/dist/cli/commands/qa-trends.js +15 -18
  33. package/dist/cli/commands/qa-trends.js.map +1 -1
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.js +143 -291
  36. package/dist/index.js.map +1 -1
  37. package/dist/manifest.d.ts +74 -106
  38. package/dist/manifest.js +143 -291
  39. package/dist/manifest.js.map +1 -1
  40. package/dist/rest/handlers/baseline-diff-handler.d.ts +7 -27
  41. package/dist/rest/handlers/baseline-diff-handler.js +15 -41
  42. package/dist/rest/handlers/baseline-diff-handler.js.map +1 -1
  43. package/dist/rest/handlers/baseline-handler.d.ts +3 -13
  44. package/dist/rest/handlers/baseline-handler.js +10 -5
  45. package/dist/rest/handlers/baseline-handler.js.map +1 -1
  46. package/dist/rest/handlers/baseline-update-handler.d.ts +4 -14
  47. package/dist/rest/handlers/baseline-update-handler.js +15 -13
  48. package/dist/rest/handlers/baseline-update-handler.js.map +1 -1
  49. package/dist/rest/handlers/check-handler.d.ts +15 -0
  50. package/dist/rest/handlers/check-handler.js +28 -0
  51. package/dist/rest/handlers/check-handler.js.map +1 -0
  52. package/dist/rest/handlers/gate-handler.d.ts +13 -0
  53. package/dist/rest/handlers/gate-handler.js +28 -0
  54. package/dist/rest/handlers/gate-handler.js.map +1 -0
  55. package/dist/rest/handlers/history-handler.d.ts +3 -16
  56. package/dist/rest/handlers/history-handler.js +10 -11
  57. package/dist/rest/handlers/history-handler.js.map +1 -1
  58. package/dist/rest/handlers/package-timeline-handler.d.ts +5 -20
  59. package/dist/rest/handlers/package-timeline-handler.js +11 -7
  60. package/dist/rest/handlers/package-timeline-handler.js.map +1 -1
  61. package/dist/rest/handlers/regressions-handler.d.ts +2 -11
  62. package/dist/rest/handlers/regressions-handler.js +11 -5
  63. package/dist/rest/handlers/regressions-handler.js.map +1 -1
  64. package/dist/rest/handlers/run-handler.d.ts +10 -27
  65. package/dist/rest/handlers/run-handler.js +18 -63
  66. package/dist/rest/handlers/run-handler.js.map +1 -1
  67. package/dist/rest/handlers/{error-groups-handler.d.ts → stats-handler.d.ts} +5 -9
  68. package/dist/rest/handlers/stats-handler.js +21 -0
  69. package/dist/rest/handlers/stats-handler.js.map +1 -0
  70. package/dist/rest/handlers/summary-handler.d.ts +7 -20
  71. package/dist/rest/handlers/summary-handler.js +16 -26
  72. package/dist/rest/handlers/summary-handler.js.map +1 -1
  73. package/dist/rest/handlers/tasks-handler.d.ts +9 -0
  74. package/dist/rest/handlers/tasks-handler.js +38 -0
  75. package/dist/rest/handlers/tasks-handler.js.map +1 -0
  76. package/dist/rest/handlers/trends-handler.d.ts +4 -43
  77. package/dist/rest/handlers/trends-handler.js +11 -18
  78. package/dist/rest/handlers/trends-handler.js.map +1 -1
  79. package/dist/widgets/117.js +24 -1
  80. package/dist/widgets/{919.js → 215.js} +1 -1
  81. package/dist/widgets/370.js +1 -1
  82. package/dist/widgets/{805.js → 46.js} +92 -92
  83. package/dist/widgets/50.js +1 -1
  84. package/dist/widgets/62.js +96 -0
  85. package/dist/widgets/648.js +1 -0
  86. package/dist/widgets/669.js +1 -1
  87. package/dist/widgets/775.js +1 -1
  88. package/dist/widgets/78.js +1 -0
  89. package/dist/widgets/823.js +1 -0
  90. package/dist/widgets/968.js +2 -2
  91. package/dist/widgets/__federation_expose_QADashboard.js +1 -1
  92. package/dist/widgets/mf-manifest.json +32 -31
  93. package/dist/widgets/mf-stats.json +32 -31
  94. package/dist/widgets/remoteEntry.js +2 -2
  95. package/package.json +12 -9
  96. package/dist/cli/commands/qa-save.d.ts +0 -10
  97. package/dist/cli/commands/qa-save.js +0 -69
  98. package/dist/cli/commands/qa-save.js.map +0 -1
  99. package/dist/rest/handlers/details-handler.d.ts +0 -61
  100. package/dist/rest/handlers/details-handler.js +0 -70
  101. package/dist/rest/handlers/details-handler.js.map +0 -1
  102. package/dist/rest/handlers/error-groups-handler.js +0 -17
  103. package/dist/rest/handlers/error-groups-handler.js.map +0 -1
  104. package/dist/rest/handlers/latest-handler.d.ts +0 -22
  105. package/dist/rest/handlers/latest-handler.js +0 -17
  106. package/dist/rest/handlers/latest-handler.js.map +0 -1
  107. package/dist/rest/handlers/run-check-handler.d.ts +0 -20
  108. package/dist/rest/handlers/run-check-handler.js +0 -58
  109. package/dist/rest/handlers/run-check-handler.js.map +0 -1
  110. package/dist/widgets/418.js +0 -38
  111. package/dist/widgets/451.js +0 -1
  112. package/dist/widgets/694.js +0 -1
@@ -1,61 +0,0 @@
1
- import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
2
- import { RestInput } from '@kb-labs/sdk';
3
-
4
- declare const _default: _kb_labs_shared_command_kit.Handler<unknown, RestInput<{}, unknown, unknown>, {
5
- git: {
6
- commit: string;
7
- branch: string;
8
- message: string;
9
- } | null;
10
- checks: Record<string, {
11
- passed: {
12
- status: "passed" | "failed" | "skipped";
13
- name: string;
14
- repo: string;
15
- error?: string | undefined;
16
- submodule?: {
17
- commit: string;
18
- branch: string;
19
- dirty: boolean;
20
- message: string;
21
- name: string;
22
- } | undefined;
23
- }[];
24
- failed: {
25
- status: "passed" | "failed" | "skipped";
26
- name: string;
27
- repo: string;
28
- error?: string | undefined;
29
- submodule?: {
30
- commit: string;
31
- branch: string;
32
- dirty: boolean;
33
- message: string;
34
- name: string;
35
- } | undefined;
36
- }[];
37
- skipped: {
38
- status: "passed" | "failed" | "skipped";
39
- name: string;
40
- repo: string;
41
- error?: string | undefined;
42
- submodule?: {
43
- commit: string;
44
- branch: string;
45
- dirty: boolean;
46
- message: string;
47
- name: string;
48
- } | undefined;
49
- }[];
50
- }>;
51
- timestamp: string | null;
52
- submodules?: Record<string, {
53
- commit: string;
54
- branch: string;
55
- dirty: boolean;
56
- message: string;
57
- name: string;
58
- }> | undefined;
59
- }>;
60
-
61
- export { _default as default };
@@ -1,70 +0,0 @@
1
- import { defineHandler } from '@kb-labs/sdk';
2
- import { loadLastRun } from '@kb-labs/qa-core';
3
-
4
- // src/rest/handlers/details-handler.ts
5
- var details_handler_default = defineHandler({
6
- async execute(ctx, _input) {
7
- const lastRun = loadLastRun(ctx.cwd);
8
- if (!lastRun) {
9
- return {
10
- timestamp: null,
11
- git: null,
12
- checks: {}
13
- };
14
- }
15
- const { results, packages, submodules, timestamp } = lastRun;
16
- const pkgMap = new Map(packages.map((p) => [p.name, p]));
17
- let git = null;
18
- try {
19
- const { execSync } = await import('child_process');
20
- const commit = execSync("git rev-parse --short HEAD", { cwd: ctx.cwd, encoding: "utf-8" }).trim();
21
- const branch = execSync("git rev-parse --abbrev-ref HEAD", { cwd: ctx.cwd, encoding: "utf-8" }).trim();
22
- const message = execSync("git log -1 --format=%s", { cwd: ctx.cwd, encoding: "utf-8" }).trim();
23
- git = { commit, branch, message };
24
- } catch {
25
- }
26
- const checks = {};
27
- for (const ct of Object.keys(results)) {
28
- const checkResult = results[ct];
29
- const passed = checkResult.passed.map((name) => {
30
- const pkg = pkgMap.get(name);
31
- return {
32
- name,
33
- repo: pkg?.repo ?? "unknown",
34
- status: "passed",
35
- submodule: pkg?.submodule
36
- };
37
- });
38
- const failed = checkResult.failed.map((name) => {
39
- const pkg = pkgMap.get(name);
40
- return {
41
- name,
42
- repo: pkg?.repo ?? "unknown",
43
- status: "failed",
44
- error: checkResult.errors[name],
45
- submodule: pkg?.submodule
46
- };
47
- });
48
- const skipped = checkResult.skipped.map((name) => {
49
- const pkg = pkgMap.get(name);
50
- return {
51
- name,
52
- repo: pkg?.repo ?? "unknown",
53
- status: "skipped",
54
- submodule: pkg?.submodule
55
- };
56
- });
57
- checks[ct] = { passed, failed, skipped };
58
- }
59
- return {
60
- timestamp,
61
- git,
62
- submodules,
63
- checks
64
- };
65
- }
66
- });
67
-
68
- export { details_handler_default as default };
69
- //# sourceMappingURL=details-handler.js.map
70
- //# sourceMappingURL=details-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/rest/handlers/details-handler.ts"],"names":[],"mappings":"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","file":"details-handler.js","sourcesContent":["/**\n * GET /details handler\n *\n * Returns per-package details with error text from the last QA run.\n * Data comes from last-run.json (saved by qa-orchestrator after each run).\n */\n\nimport { defineHandler, type PluginContextV3, type RestInput } from '@kb-labs/sdk';\nimport { loadLastRun } from '@kb-labs/qa-core';\nimport type { QADetailsRequest, QADetailsResponse } from '@kb-labs/qa-contracts';\n\nexport default defineHandler({\n async execute(\n ctx: PluginContextV3,\n _input: RestInput<QADetailsRequest, unknown>,\n ): Promise<QADetailsResponse> {\n const lastRun = loadLastRun(ctx.cwd);\n\n if (!lastRun) {\n // No last run data — return empty structure\n return {\n timestamp: null,\n git: null,\n checks: {} as QADetailsResponse['checks'],\n };\n }\n\n const { results, packages, submodules, timestamp } = lastRun;\n\n // Build a lookup: package name → package metadata\n const pkgMap = new Map(packages.map((p) => [p.name, p]));\n\n // Get git info from the latest history entry (last-run doesn't store git directly)\n // We'll use execSync to get current git info as a fallback\n let git: QADetailsResponse['git'] = null;\n try {\n const { execSync } = await import('node:child_process');\n const commit = execSync('git rev-parse --short HEAD', { cwd: ctx.cwd, encoding: 'utf-8' }).trim();\n const branch = execSync('git rev-parse --abbrev-ref HEAD', { cwd: ctx.cwd, encoding: 'utf-8' }).trim();\n const message = execSync('git log -1 --format=%s', { cwd: ctx.cwd, encoding: 'utf-8' }).trim();\n git = { commit, branch, message };\n } catch {\n // git not available\n }\n\n const checks: QADetailsResponse['checks'] = {} as QADetailsResponse['checks'];\n\n for (const ct of Object.keys(results)) {\n const checkResult = results[ct]!;\n const passed = checkResult.passed.map((name) => {\n const pkg = pkgMap.get(name);\n return {\n name,\n repo: pkg?.repo ?? 'unknown',\n status: 'passed' as const,\n submodule: pkg?.submodule,\n };\n });\n const failed = checkResult.failed.map((name) => {\n const pkg = pkgMap.get(name);\n return {\n name,\n repo: pkg?.repo ?? 'unknown',\n status: 'failed' as const,\n error: checkResult.errors[name],\n submodule: pkg?.submodule,\n };\n });\n const skipped = checkResult.skipped.map((name) => {\n const pkg = pkgMap.get(name);\n return {\n name,\n repo: pkg?.repo ?? 'unknown',\n status: 'skipped' as const,\n submodule: pkg?.submodule,\n };\n });\n\n checks[ct] = { passed, failed, skipped };\n }\n\n return {\n timestamp,\n git,\n submodules,\n checks,\n };\n },\n});\n"]}
@@ -1,17 +0,0 @@
1
- import { defineHandler } from '@kb-labs/sdk';
2
- import { loadLastRun, groupErrors } from '@kb-labs/qa-core';
3
-
4
- // src/rest/handlers/error-groups-handler.ts
5
- var error_groups_handler_default = defineHandler({
6
- async execute(ctx, _input) {
7
- const lastRun = loadLastRun(ctx.cwd);
8
- if (!lastRun) {
9
- return { groups: [], ungrouped: 0 };
10
- }
11
- return groupErrors(lastRun.results);
12
- }
13
- });
14
-
15
- export { error_groups_handler_default as default };
16
- //# sourceMappingURL=error-groups-handler.js.map
17
- //# sourceMappingURL=error-groups-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/rest/handlers/error-groups-handler.ts"],"names":[],"mappings":";;;;AAWA,IAAO,+BAAQ,aAAA,CAAc;AAAA,EAC3B,MAAM,OAAA,CACJ,GAAA,EACA,MAAA,EACgC;AAChC,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,CAAI,GAAG,CAAA;AAEnC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,EAAE,MAAA,EAAQ,EAAC,EAAG,WAAW,CAAA,EAAE;AAAA,IACpC;AAEA,IAAA,OAAO,WAAA,CAAY,QAAQ,OAAO,CAAA;AAAA,EACpC;AACF,CAAC","file":"error-groups-handler.js","sourcesContent":["/**\n * GET /errors/groups handler\n *\n * Groups errors from the last QA run by pattern (ESLint rule, TS code, etc.).\n * Helps identify the most impactful errors to fix first.\n */\n\nimport { defineHandler, type PluginContextV3, type RestInput } from '@kb-labs/sdk';\nimport { loadLastRun, groupErrors } from '@kb-labs/qa-core';\nimport type { QAErrorGroupsRequest, QAErrorGroupsResponse } from '@kb-labs/qa-contracts';\n\nexport default defineHandler({\n async execute(\n ctx: PluginContextV3,\n _input: RestInput<QAErrorGroupsRequest, unknown>,\n ): Promise<QAErrorGroupsResponse> {\n const lastRun = loadLastRun(ctx.cwd);\n\n if (!lastRun) {\n return { groups: [], ungrouped: 0 };\n }\n\n return groupErrors(lastRun.results);\n },\n});\n"]}
@@ -1,22 +0,0 @@
1
- import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
2
- import { RestInput } from '@kb-labs/sdk';
3
-
4
- declare const _default: _kb_labs_shared_command_kit.Handler<unknown, RestInput<{}, unknown, unknown>, {
5
- entry: {
6
- status: "passed" | "failed";
7
- git: {
8
- commit: string;
9
- branch: string;
10
- message: string;
11
- };
12
- timestamp: string;
13
- summary: Record<string, {
14
- passed: number;
15
- failed: number;
16
- skipped: number;
17
- }>;
18
- failedPackages: Record<string, string[]>;
19
- } | null;
20
- }>;
21
-
22
- export { _default as default };
@@ -1,17 +0,0 @@
1
- import { defineHandler } from '@kb-labs/sdk';
2
- import { loadHistory } from '@kb-labs/qa-core';
3
-
4
- // src/rest/handlers/latest-handler.ts
5
- var latest_handler_default = defineHandler({
6
- async execute(ctx, _input) {
7
- const history = loadHistory(ctx.cwd);
8
- if (history.length === 0) {
9
- return { entry: null };
10
- }
11
- return { entry: history[history.length - 1] };
12
- }
13
- });
14
-
15
- export { latest_handler_default as default };
16
- //# sourceMappingURL=latest-handler.js.map
17
- //# sourceMappingURL=latest-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/rest/handlers/latest-handler.ts"],"names":[],"mappings":";;;;AAUA,IAAO,yBAAQ,aAAA,CAAc;AAAA,EAC3B,MAAM,OAAA,CACJ,GAAA,EACA,MAAA,EAC2B;AAC3B,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,GAAA,CAAI,GAAG,CAAA;AAEnC,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,MAAA,OAAO,EAAE,OAAO,IAAA,EAAK;AAAA,IACvB;AAEA,IAAA,OAAO,EAAE,KAAA,EAAO,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA,EAAG;AAAA,EAC/C;AACF,CAAC","file":"latest-handler.js","sourcesContent":["/**\n * GET /latest handler\n *\n * Returns the most recent QA run from history.\n */\n\nimport { defineHandler, type PluginContextV3, type RestInput } from '@kb-labs/sdk';\nimport { loadHistory } from '@kb-labs/qa-core';\nimport type { QALatestRequest, QALatestResponse } from '@kb-labs/qa-contracts';\n\nexport default defineHandler({\n async execute(\n ctx: PluginContextV3,\n _input: RestInput<QALatestRequest, unknown>,\n ): Promise<QALatestResponse> {\n const history = loadHistory(ctx.cwd);\n\n if (history.length === 0) {\n return { entry: null };\n }\n\n return { entry: history[history.length - 1]! };\n },\n});\n"]}
@@ -1,20 +0,0 @@
1
- import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
2
- import { RestInput } from '@kb-labs/sdk';
3
-
4
- declare const _default: _kb_labs_shared_command_kit.Handler<unknown, RestInput<unknown, {
5
- checkType: string;
6
- repo?: string | undefined;
7
- package?: string | undefined;
8
- }, unknown>, {
9
- status: "passed" | "failed";
10
- checkType: string;
11
- durationMs: number;
12
- result: {
13
- passed: string[];
14
- failed: string[];
15
- skipped: string[];
16
- errors: Record<string, string>;
17
- };
18
- }>;
19
-
20
- export { _default as default };
@@ -1,58 +0,0 @@
1
- import { defineHandler } from '@kb-labs/sdk';
2
- import { getWorkspacePackages, runTestCheck, runTypeCheck, runLintCheck } from '@kb-labs/qa-core';
3
-
4
- // src/rest/handlers/run-check-handler.ts
5
- var run_check_handler_default = defineHandler({
6
- async execute(ctx, input) {
7
- const rootDir = ctx.cwd;
8
- const startTime = Date.now();
9
- const body = input.body;
10
- const { checkType, repo, package: packageFilter } = body;
11
- let packages = getWorkspacePackages(rootDir);
12
- if (repo) {
13
- packages = packages.filter((p) => p.repo === repo);
14
- }
15
- if (packageFilter) {
16
- packages = packages.filter((p) => p.name === packageFilter || p.name.includes(packageFilter));
17
- }
18
- let result;
19
- switch (checkType) {
20
- case "lint":
21
- result = runLintCheck({ rootDir, packages });
22
- break;
23
- case "typeCheck":
24
- result = runTypeCheck({ rootDir, packages });
25
- break;
26
- case "test":
27
- result = runTestCheck({ rootDir, packages });
28
- break;
29
- default:
30
- result = { passed: [], failed: [], skipped: [], errors: {} };
31
- }
32
- const hasFailed = result.failed.length > 0;
33
- const durationMs = Date.now() - startTime;
34
- const analytics = ctx.platform.analytics;
35
- if (analytics) {
36
- await analytics.track("qa.check.completed", {
37
- checkType,
38
- status: hasFailed ? "failed" : "passed",
39
- passed: result.passed.length,
40
- failed: result.failed.length,
41
- skipped: result.skipped.length,
42
- durationMs,
43
- repo: repo || void 0,
44
- package: packageFilter || void 0
45
- });
46
- }
47
- return {
48
- checkType,
49
- status: hasFailed ? "failed" : "passed",
50
- result,
51
- durationMs
52
- };
53
- }
54
- });
55
-
56
- export { run_check_handler_default as default };
57
- //# sourceMappingURL=run-check-handler.js.map
58
- //# sourceMappingURL=run-check-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/rest/handlers/run-check-handler.ts"],"names":[],"mappings":";;;;AAYA,IAAO,4BAAQ,aAAA,CAAc;AAAA,EAC3B,MAAM,OAAA,CACJ,GAAA,EACA,KAAA,EAC6B;AAC7B,IAAA,MAAM,UAAU,GAAA,CAAI,GAAA;AACpB,IAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AAEnB,IAAA,MAAM,EAAE,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,eAAc,GAAI,IAAA;AAGpD,IAAA,IAAI,QAAA,GAAW,qBAAqB,OAAO,CAAA;AAG3C,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,QAAA,GAAW,SAAS,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AAAA,IACnD;AAGA,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,GAAW,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,aAAA,IAAiB,CAAA,CAAE,IAAA,CAAK,QAAA,CAAS,aAAa,CAAC,CAAA;AAAA,IAC9F;AAGA,IAAA,IAAI,MAAA;AACJ,IAAA,QAAQ,SAAA;AAAW,MACjB,KAAK,MAAA;AACH,QAAA,MAAA,GAAS,YAAA,CAAa,EAAE,OAAA,EAAS,QAAA,EAAU,CAAA;AAC3C,QAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,MAAA,GAAS,YAAA,CAAa,EAAE,OAAA,EAAS,QAAA,EAAU,CAAA;AAC3C,QAAA;AAAA,MACF,KAAK,MAAA;AACH,QAAA,MAAA,GAAS,YAAA,CAAa,EAAE,OAAA,EAAS,QAAA,EAAU,CAAA;AAC3C,QAAA;AAAA,MACF;AACE,QAAA,MAAA,GAAS,EAAE,MAAA,EAAQ,EAAC,EAAG,MAAA,EAAQ,EAAC,EAAG,OAAA,EAAS,EAAC,EAAG,MAAA,EAAQ,EAAC,EAAE;AAAA;AAG/D,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAA;AACzC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA;AAGhC,IAAA,MAAM,SAAA,GAAY,IAAI,QAAA,CAAS,SAAA;AAC/B,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,MAAM,SAAA,CAAU,MAAM,oBAAA,EAAsB;AAAA,QAC1C,SAAA;AAAA,QACA,MAAA,EAAQ,YAAY,QAAA,GAAW,QAAA;AAAA,QAC/B,MAAA,EAAQ,OAAO,MAAA,CAAO,MAAA;AAAA,QACtB,MAAA,EAAQ,OAAO,MAAA,CAAO,MAAA;AAAA,QACtB,OAAA,EAAS,OAAO,OAAA,CAAQ,MAAA;AAAA,QACxB,UAAA;AAAA,QACA,MAAM,IAAA,IAAQ,MAAA;AAAA,QACd,SAAS,aAAA,IAAiB;AAAA,OAC3B,CAAA;AAAA,IACH;AAEA,IAAA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,MAAA,EAAQ,YAAY,QAAA,GAAW,QAAA;AAAA,MAC/B,MAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAC","file":"run-check-handler.js","sourcesContent":["/**\n * POST /run/check handler\n *\n * Runs a single check type (lint, typeCheck, or test) with optional filtering\n * by repo or package name. Useful for quick re-checks from the UI.\n */\n\nimport { defineHandler, type PluginContextV3, type RestInput } from '@kb-labs/sdk';\nimport { getWorkspacePackages, runLintCheck, runTypeCheck, runTestCheck } from '@kb-labs/qa-core';\nimport type { QARunCheckRequest, QARunCheckResponse } from '@kb-labs/qa-contracts';\nimport type { CheckResult } from '@kb-labs/qa-contracts';\n\nexport default defineHandler({\n async execute(\n ctx: PluginContextV3,\n input: RestInput<unknown, QARunCheckRequest>,\n ): Promise<QARunCheckResponse> {\n const rootDir = ctx.cwd;\n const startTime = Date.now();\n const body = input.body!;\n\n const { checkType, repo, package: packageFilter } = body;\n\n // Discover workspace packages\n let packages = getWorkspacePackages(rootDir);\n\n // Filter by repo if specified\n if (repo) {\n packages = packages.filter((p) => p.repo === repo);\n }\n\n // Filter by package name if specified\n if (packageFilter) {\n packages = packages.filter((p) => p.name === packageFilter || p.name.includes(packageFilter));\n }\n\n // Run the specified check\n let result: CheckResult;\n switch (checkType) {\n case 'lint':\n result = runLintCheck({ rootDir, packages });\n break;\n case 'typeCheck':\n result = runTypeCheck({ rootDir, packages });\n break;\n case 'test':\n result = runTestCheck({ rootDir, packages });\n break;\n default:\n result = { passed: [], failed: [], skipped: [], errors: {} };\n }\n\n const hasFailed = result.failed.length > 0;\n const durationMs = Date.now() - startTime;\n\n // Track analytics event\n const analytics = ctx.platform.analytics;\n if (analytics) {\n await analytics.track('qa.check.completed', {\n checkType,\n status: hasFailed ? 'failed' : 'passed',\n passed: result.passed.length,\n failed: result.failed.length,\n skipped: result.skipped.length,\n durationMs,\n repo: repo || undefined,\n package: packageFilter || undefined,\n });\n }\n\n return {\n checkType,\n status: hasFailed ? 'failed' : 'passed',\n result,\n durationMs,\n };\n },\n});\n"]}