@kb-labs/qa-entry 2.94.0 → 2.98.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/baseline-diff.d.ts +14 -0
- package/dist/cli/commands/baseline-diff.js +40 -0
- package/dist/cli/commands/baseline-diff.js.map +1 -0
- package/dist/cli/commands/baseline-status.d.ts +10 -5
- package/dist/cli/commands/baseline-status.js +14 -17
- package/dist/cli/commands/baseline-status.js.map +1 -1
- package/dist/cli/commands/baseline-update.d.ts +10 -5
- package/dist/cli/commands/baseline-update.js +26 -18
- package/dist/cli/commands/baseline-update.js.map +1 -1
- package/dist/cli/commands/flags.d.ts +117 -132
- package/dist/cli/commands/flags.js +65 -79
- package/dist/cli/commands/flags.js.map +1 -1
- package/dist/cli/commands/qa-check.d.ts +13 -34
- package/dist/cli/commands/qa-check.js +26 -106
- package/dist/cli/commands/qa-check.js.map +1 -1
- package/dist/cli/commands/qa-gate.d.ts +19 -0
- package/dist/cli/commands/qa-gate.js +36 -0
- package/dist/cli/commands/qa-gate.js.map +1 -0
- package/dist/cli/commands/qa-history.d.ts +15 -5
- package/dist/cli/commands/qa-history.js +13 -24
- package/dist/cli/commands/qa-history.js.map +1 -1
- package/dist/cli/commands/qa-regressions.d.ts +10 -5
- package/dist/cli/commands/qa-regressions.js +15 -18
- package/dist/cli/commands/qa-regressions.js.map +1 -1
- package/dist/cli/commands/qa-run.d.ts +18 -11
- package/dist/cli/commands/qa-run.js +28 -141
- package/dist/cli/commands/qa-run.js.map +1 -1
- package/dist/cli/commands/qa-stats.d.ts +19 -0
- package/dist/cli/commands/qa-stats.js +43 -0
- package/dist/cli/commands/qa-stats.js.map +1 -0
- package/dist/cli/commands/qa-trends.d.ts +15 -5
- package/dist/cli/commands/qa-trends.js +15 -18
- package/dist/cli/commands/qa-trends.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +143 -291
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +74 -106
- package/dist/manifest.js +143 -291
- package/dist/manifest.js.map +1 -1
- package/dist/rest/handlers/baseline-diff-handler.d.ts +7 -27
- package/dist/rest/handlers/baseline-diff-handler.js +15 -41
- package/dist/rest/handlers/baseline-diff-handler.js.map +1 -1
- package/dist/rest/handlers/baseline-handler.d.ts +3 -13
- package/dist/rest/handlers/baseline-handler.js +10 -5
- package/dist/rest/handlers/baseline-handler.js.map +1 -1
- package/dist/rest/handlers/baseline-update-handler.d.ts +4 -14
- package/dist/rest/handlers/baseline-update-handler.js +15 -13
- package/dist/rest/handlers/baseline-update-handler.js.map +1 -1
- package/dist/rest/handlers/check-handler.d.ts +15 -0
- package/dist/rest/handlers/check-handler.js +28 -0
- package/dist/rest/handlers/check-handler.js.map +1 -0
- package/dist/rest/handlers/gate-handler.d.ts +13 -0
- package/dist/rest/handlers/gate-handler.js +28 -0
- package/dist/rest/handlers/gate-handler.js.map +1 -0
- package/dist/rest/handlers/history-handler.d.ts +3 -16
- package/dist/rest/handlers/history-handler.js +10 -11
- package/dist/rest/handlers/history-handler.js.map +1 -1
- package/dist/rest/handlers/package-timeline-handler.d.ts +5 -20
- package/dist/rest/handlers/package-timeline-handler.js +11 -7
- package/dist/rest/handlers/package-timeline-handler.js.map +1 -1
- package/dist/rest/handlers/regressions-handler.d.ts +2 -11
- package/dist/rest/handlers/regressions-handler.js +11 -5
- package/dist/rest/handlers/regressions-handler.js.map +1 -1
- package/dist/rest/handlers/run-handler.d.ts +10 -27
- package/dist/rest/handlers/run-handler.js +18 -63
- package/dist/rest/handlers/run-handler.js.map +1 -1
- package/dist/rest/handlers/{error-groups-handler.d.ts → stats-handler.d.ts} +5 -9
- package/dist/rest/handlers/stats-handler.js +21 -0
- package/dist/rest/handlers/stats-handler.js.map +1 -0
- package/dist/rest/handlers/summary-handler.d.ts +7 -20
- package/dist/rest/handlers/summary-handler.js +16 -26
- package/dist/rest/handlers/summary-handler.js.map +1 -1
- package/dist/rest/handlers/tasks-handler.d.ts +9 -0
- package/dist/rest/handlers/tasks-handler.js +38 -0
- package/dist/rest/handlers/tasks-handler.js.map +1 -0
- package/dist/rest/handlers/trends-handler.d.ts +4 -43
- package/dist/rest/handlers/trends-handler.js +11 -18
- package/dist/rest/handlers/trends-handler.js.map +1 -1
- package/dist/widgets/117.js +24 -1
- package/dist/widgets/165.js +1 -1
- package/dist/widgets/370.js +1 -1
- package/dist/widgets/405.js +1 -1
- package/dist/widgets/{805.js → 46.js} +92 -92
- package/dist/widgets/50.js +1 -1
- package/dist/widgets/546.js +1 -1
- package/dist/widgets/62.js +96 -0
- package/dist/widgets/648.js +1 -0
- package/dist/widgets/669.js +1 -1
- package/dist/widgets/733.js +34 -0
- package/dist/widgets/775.js +1 -1
- package/dist/widgets/78.js +1 -0
- package/dist/widgets/823.js +1 -0
- package/dist/widgets/968.js +2 -2
- package/dist/widgets/__federation_expose_QADashboard.js +1 -1
- package/dist/widgets/mf-manifest.json +32 -31
- package/dist/widgets/mf-stats.json +32 -31
- package/dist/widgets/remoteEntry.js +3 -3
- package/package.json +12 -9
- package/dist/cli/commands/qa-save.d.ts +0 -10
- package/dist/cli/commands/qa-save.js +0 -69
- package/dist/cli/commands/qa-save.js.map +0 -1
- package/dist/rest/handlers/details-handler.d.ts +0 -61
- package/dist/rest/handlers/details-handler.js +0 -70
- package/dist/rest/handlers/details-handler.js.map +0 -1
- package/dist/rest/handlers/error-groups-handler.js +0 -17
- package/dist/rest/handlers/error-groups-handler.js.map +0 -1
- package/dist/rest/handlers/latest-handler.d.ts +0 -22
- package/dist/rest/handlers/latest-handler.js +0 -17
- package/dist/rest/handlers/latest-handler.js.map +0 -1
- package/dist/rest/handlers/run-check-handler.d.ts +0 -20
- package/dist/rest/handlers/run-check-handler.js +0 -58
- package/dist/rest/handlers/run-check-handler.js.map +0 -1
- package/dist/widgets/418.js +0 -38
- package/dist/widgets/451.js +0 -1
- package/dist/widgets/694.js +0 -1
- package/dist/widgets/919.js +0 -34
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
|
|
2
|
+
import { CLIInput } from '@kb-labs/sdk';
|
|
3
|
+
|
|
4
|
+
declare const _default: _kb_labs_shared_command_kit.CommandHandlerV3<unknown, CLIInput<_kb_labs_shared_command_kit.InferFlags<{
|
|
5
|
+
json: {
|
|
6
|
+
type: "boolean";
|
|
7
|
+
description: string;
|
|
8
|
+
default: false;
|
|
9
|
+
};
|
|
10
|
+
}>>, {
|
|
11
|
+
exitCode: number;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
export { _default as default };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { defineCommand, useConfig } from '@kb-labs/sdk';
|
|
2
|
+
import { SnapshotStore, compareWithBaseline, buildBaselineDiffReport } from '@kb-labs/qa-core';
|
|
3
|
+
|
|
4
|
+
// src/cli/commands/baseline-diff.ts
|
|
5
|
+
var baseline_diff_default = defineCommand({
|
|
6
|
+
id: "qa:baseline:diff",
|
|
7
|
+
description: "Diff current state against baseline",
|
|
8
|
+
handler: {
|
|
9
|
+
async execute(ctx, input) {
|
|
10
|
+
const { flags } = input;
|
|
11
|
+
const config = await useConfig();
|
|
12
|
+
const cwd = ctx.cwd ?? process.cwd();
|
|
13
|
+
const store = new SnapshotStore(cwd, config?.historyMaxEntries);
|
|
14
|
+
const baseline = store.loadBaseline();
|
|
15
|
+
if (!baseline) {
|
|
16
|
+
ctx.ui?.error?.("No baseline found. Run `qa baseline update` first.");
|
|
17
|
+
return { exitCode: 1 };
|
|
18
|
+
}
|
|
19
|
+
const latestCheck = store.latestCheck();
|
|
20
|
+
const latestStats = store.latestStats();
|
|
21
|
+
if (!latestCheck || !latestStats) {
|
|
22
|
+
ctx.ui?.error?.("No check/stats snapshots found. Run `qa check` and `qa stats` first.");
|
|
23
|
+
return { exitCode: 1 };
|
|
24
|
+
}
|
|
25
|
+
const diff = compareWithBaseline(latestCheck.raw, latestStats.raw, baseline);
|
|
26
|
+
if (flags.json) {
|
|
27
|
+
ctx.ui?.json?.(diff);
|
|
28
|
+
} else {
|
|
29
|
+
for (const section of buildBaselineDiffReport(diff)) {
|
|
30
|
+
ctx.ui?.success?.(`${section.header}`, { sections: [{ items: section.lines }] });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { exitCode: diff.newIssueCount > 0 ? 1 : 0 };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
export { baseline_diff_default as default };
|
|
39
|
+
//# sourceMappingURL=baseline-diff.js.map
|
|
40
|
+
//# sourceMappingURL=baseline-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/baseline-diff.ts"],"names":[],"mappings":";;;;AAcA,IAAO,wBAAQ,aAAA,CAA0E;AAAA,EACvF,EAAA,EAAI,kBAAA;AAAA,EACJ,WAAA,EAAa,qCAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAmE;AACrG,MAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAClB,MAAA,MAAM,MAAA,GAAS,MAAM,SAAA,EAA0B;AAC/C,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AAEnC,MAAA,MAAM,KAAA,GAAQ,IAAI,aAAA,CAAc,GAAA,EAAK,QAAQ,iBAAiB,CAAA;AAC9D,MAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AAEpC,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,GAAA,CAAI,EAAA,EAAI,QAAQ,oDAAoD,CAAA;AACpE,QAAA,OAAO,EAAE,UAAU,CAAA,EAAE;AAAA,MACvB;AAEA,MAAA,MAAM,WAAA,GAAc,MAAM,WAAA,EAAY;AACtC,MAAA,MAAM,WAAA,GAAc,MAAM,WAAA,EAAY;AAEtC,MAAA,IAAI,CAAC,WAAA,IAAe,CAAC,WAAA,EAAa;AAChC,QAAA,GAAA,CAAI,EAAA,EAAI,QAAQ,sEAAsE,CAAA;AACtF,QAAA,OAAO,EAAE,UAAU,CAAA,EAAE;AAAA,MACvB;AAEA,MAAA,MAAM,OAAO,mBAAA,CAAoB,WAAA,CAAY,GAAA,EAAK,WAAA,CAAY,KAAK,QAAQ,CAAA;AAE3E,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,GAAA,CAAI,EAAA,EAAI,OAAO,IAAI,CAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,KAAA,MAAW,OAAA,IAAW,uBAAA,CAAwB,IAAI,CAAA,EAAG;AACnD,UAAA,GAAA,CAAI,EAAA,EAAI,OAAA,GAAU,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAA,CAAA,EAAI,EAAE,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAAA,QACjF;AAAA,MACF;AAEA,MAAA,OAAO,EAAE,QAAA,EAAU,IAAA,CAAK,aAAA,GAAgB,CAAA,GAAI,IAAI,CAAA,EAAE;AAAA,IACpD;AAAA;AAEJ,CAAC","file":"baseline-diff.js","sourcesContent":["import {\n defineCommand,\n useConfig,\n type CLIInput,\n type PluginContextV3,\n} from '@kb-labs/sdk';\nimport {\n SnapshotStore,\n compareWithBaseline,\n buildBaselineDiffReport,\n} from '@kb-labs/qa-core';\nimport { type QAPluginConfig } from '@kb-labs/qa-contracts';\nimport type { BaselineDiffFlags } from './flags.js';\n\nexport default defineCommand<unknown, CLIInput<BaselineDiffFlags>, { exitCode: number }>({\n id: 'qa:baseline:diff',\n description: 'Diff current state against baseline',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<BaselineDiffFlags>): Promise<{ exitCode: number }> {\n const { flags } = input;\n const config = await useConfig<QAPluginConfig>();\n const cwd = ctx.cwd ?? process.cwd();\n\n const store = new SnapshotStore(cwd, config?.historyMaxEntries);\n const baseline = store.loadBaseline();\n\n if (!baseline) {\n ctx.ui?.error?.('No baseline found. Run `qa baseline update` first.');\n return { exitCode: 1 };\n }\n\n const latestCheck = store.latestCheck();\n const latestStats = store.latestStats();\n\n if (!latestCheck || !latestStats) {\n ctx.ui?.error?.('No check/stats snapshots found. Run `qa check` and `qa stats` first.');\n return { exitCode: 1 };\n }\n\n const diff = compareWithBaseline(latestCheck.raw, latestStats.raw, baseline);\n\n if (flags.json) {\n ctx.ui?.json?.(diff);\n } else {\n for (const section of buildBaselineDiffReport(diff)) {\n ctx.ui?.success?.(`${section.header}`, { sections: [{ items: section.lines }] });\n }\n }\n\n return { exitCode: diff.newIssueCount > 0 ? 1 : 0 };\n },\n },\n});\n"]}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
|
|
2
|
-
import {
|
|
2
|
+
import { CLIInput } from '@kb-labs/sdk';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
declare const _default: _kb_labs_shared_command_kit.CommandHandlerV3<unknown, CLIInput<_kb_labs_shared_command_kit.InferFlags<{
|
|
5
|
+
json: {
|
|
6
|
+
type: "boolean";
|
|
7
|
+
description: string;
|
|
8
|
+
default: false;
|
|
9
|
+
};
|
|
10
|
+
}>>, {
|
|
11
|
+
exitCode: number;
|
|
12
|
+
}>;
|
|
8
13
|
|
|
9
14
|
export { _default as default };
|
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
import { defineCommand } from '@kb-labs/sdk';
|
|
2
|
-
import {
|
|
1
|
+
import { defineCommand, useConfig } from '@kb-labs/sdk';
|
|
2
|
+
import { SnapshotStore, buildBaselineReport } from '@kb-labs/qa-core';
|
|
3
3
|
|
|
4
4
|
// src/cli/commands/baseline-status.ts
|
|
5
5
|
var baseline_status_default = defineCommand({
|
|
6
|
-
id: "baseline:status",
|
|
7
|
-
description: "Show current baseline
|
|
6
|
+
id: "qa:baseline:status",
|
|
7
|
+
description: "Show current baseline",
|
|
8
8
|
handler: {
|
|
9
9
|
async execute(ctx, input) {
|
|
10
|
-
const {
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
10
|
+
const { flags } = input;
|
|
11
|
+
const config = await useConfig();
|
|
12
|
+
const cwd = ctx.cwd ?? process.cwd();
|
|
13
|
+
const store = new SnapshotStore(cwd, config?.historyMaxEntries);
|
|
14
|
+
const baseline = store.loadBaseline();
|
|
14
15
|
if (flags.json) {
|
|
15
|
-
ui?.json?.(baseline
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
ui?.success?.(section.header, {
|
|
21
|
-
title: section.header,
|
|
22
|
-
sections: [{ header: "", items: section.lines }]
|
|
23
|
-
});
|
|
16
|
+
ctx.ui?.json?.(baseline);
|
|
17
|
+
} else {
|
|
18
|
+
for (const section of buildBaselineReport(baseline)) {
|
|
19
|
+
ctx.ui?.success?.(`${section.header}`, { sections: [{ items: section.lines }] });
|
|
20
|
+
}
|
|
24
21
|
}
|
|
25
22
|
return { exitCode: 0 };
|
|
26
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/baseline-status.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/baseline-status.ts"],"names":[],"mappings":";;;;AAaA,IAAO,0BAAQ,aAAA,CAA4E;AAAA,EACzF,EAAA,EAAI,oBAAA;AAAA,EACJ,WAAA,EAAa,uBAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAqE;AACvG,MAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAClB,MAAA,MAAM,MAAA,GAAS,MAAM,SAAA,EAA0B;AAC/C,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AAEnC,MAAA,MAAM,KAAA,GAAQ,IAAI,aAAA,CAAc,GAAA,EAAK,QAAQ,iBAAiB,CAAA;AAC9D,MAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AAEpC,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,GAAA,CAAI,EAAA,EAAI,OAAO,QAAQ,CAAA;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,KAAA,MAAW,OAAA,IAAW,mBAAA,CAAoB,QAAQ,CAAA,EAAG;AACnD,UAAA,GAAA,CAAI,EAAA,EAAI,OAAA,GAAU,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAA,CAAA,EAAI,EAAE,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAAA,QACjF;AAAA,MACF;AAEA,MAAA,OAAO,EAAE,UAAU,CAAA,EAAE;AAAA,IACvB;AAAA;AAEJ,CAAC","file":"baseline-status.js","sourcesContent":["import {\n defineCommand,\n useConfig,\n type CLIInput,\n type PluginContextV3,\n} from '@kb-labs/sdk';\nimport {\n SnapshotStore,\n buildBaselineReport,\n} from '@kb-labs/qa-core';\nimport { type QAPluginConfig } from '@kb-labs/qa-contracts';\nimport type { BaselineStatusFlags } from './flags.js';\n\nexport default defineCommand<unknown, CLIInput<BaselineStatusFlags>, { exitCode: number }>({\n id: 'qa:baseline:status',\n description: 'Show current baseline',\n\n handler: {\n async execute(ctx: PluginContextV3, input: CLIInput<BaselineStatusFlags>): Promise<{ exitCode: number }> {\n const { flags } = input;\n const config = await useConfig<QAPluginConfig>();\n const cwd = ctx.cwd ?? process.cwd();\n\n const store = new SnapshotStore(cwd, config?.historyMaxEntries);\n const baseline = store.loadBaseline();\n\n if (flags.json) {\n ctx.ui?.json?.(baseline);\n } else {\n for (const section of buildBaselineReport(baseline)) {\n ctx.ui?.success?.(`${section.header}`, { sections: [{ items: section.lines }] });\n }\n }\n\n return { exitCode: 0 };\n },\n },\n});\n"]}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
|
|
2
|
-
import {
|
|
2
|
+
import { CLIInput } from '@kb-labs/sdk';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
declare const _default: _kb_labs_shared_command_kit.CommandHandlerV3<unknown, CLIInput<_kb_labs_shared_command_kit.InferFlags<{
|
|
5
|
+
json: {
|
|
6
|
+
type: "boolean";
|
|
7
|
+
description: string;
|
|
8
|
+
default: false;
|
|
9
|
+
};
|
|
10
|
+
}>>, {
|
|
11
|
+
exitCode: number;
|
|
12
|
+
}>;
|
|
8
13
|
|
|
9
14
|
export { _default as default };
|
|
@@ -1,28 +1,36 @@
|
|
|
1
|
-
import { defineCommand } from '@kb-labs/sdk';
|
|
2
|
-
import {
|
|
1
|
+
import { defineCommand, useConfig } from '@kb-labs/sdk';
|
|
2
|
+
import { resolveDevkitBin, DevkitAdapter, SnapshotStore, captureGit, buildBaselineReport } from '@kb-labs/qa-core';
|
|
3
3
|
|
|
4
4
|
// src/cli/commands/baseline-update.ts
|
|
5
5
|
var baseline_update_default = defineCommand({
|
|
6
|
-
id: "baseline:update",
|
|
7
|
-
description: "Run
|
|
6
|
+
id: "qa:baseline:update",
|
|
7
|
+
description: "Run check + stats and save as new baseline",
|
|
8
8
|
handler: {
|
|
9
|
+
async intent(_ctx, _input) {
|
|
10
|
+
return {
|
|
11
|
+
summary: "Run QA check + stats and save as new baseline",
|
|
12
|
+
operations: [
|
|
13
|
+
{ type: "create", resource: "file", details: { path: ".kb/qa/baseline.json" } }
|
|
14
|
+
]
|
|
15
|
+
};
|
|
16
|
+
},
|
|
9
17
|
async execute(ctx, input) {
|
|
10
|
-
const {
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
18
|
+
const { flags } = input;
|
|
19
|
+
const config = await useConfig();
|
|
20
|
+
const cwd = ctx.cwd ?? process.cwd();
|
|
21
|
+
const binaryPath = resolveDevkitBin(cwd, config?.devkitPath);
|
|
22
|
+
const adapter = new DevkitAdapter({ binaryPath, cwd, shell: ctx.api.shell });
|
|
23
|
+
const store = new SnapshotStore(cwd, config?.historyMaxEntries);
|
|
24
|
+
const git = await captureGit(ctx.api.shell, cwd);
|
|
25
|
+
const [check, stats] = await Promise.all([adapter.check(), adapter.stats()]);
|
|
26
|
+
const baseline = store.saveBaseline(check, stats, git);
|
|
14
27
|
if (flags.json) {
|
|
15
|
-
ui?.json?.(
|
|
16
|
-
|
|
28
|
+
ctx.ui?.json?.(baseline);
|
|
29
|
+
} else {
|
|
30
|
+
for (const section of buildBaselineReport(baseline)) {
|
|
31
|
+
ctx.ui?.success?.(`${section.header}`, { sections: [{ items: section.lines }] });
|
|
32
|
+
}
|
|
17
33
|
}
|
|
18
|
-
const sections = buildBaselineReport(snapshot);
|
|
19
|
-
for (const section of sections) {
|
|
20
|
-
ui?.success?.(section.header, {
|
|
21
|
-
title: section.header,
|
|
22
|
-
sections: [{ header: "", items: section.lines }]
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
ui?.success?.("Baseline captured successfully", {});
|
|
26
34
|
return { exitCode: 0 };
|
|
27
35
|
}
|
|
28
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/baseline-update.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/baseline-update.ts"],"names":[],"mappings":";;;;AAgBA,IAAO,0BAAQ,aAAA,CAA4E;AAAA,EACzF,EAAA,EAAI,oBAAA;AAAA,EACJ,WAAA,EAAa,4CAAA;AAAA,EAEb,OAAA,EAAS;AAAA,IACP,MAAM,MAAA,CAAO,IAAA,EAAuB,MAAA,EAAuC;AACzE,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,+CAAA;AAAA,QACT,UAAA,EAAY;AAAA,UACV,EAAE,MAAM,QAAA,EAAmB,QAAA,EAAU,QAAQ,OAAA,EAAS,EAAE,IAAA,EAAM,sBAAA,EAAuB;AAAE;AACzF,OACF;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,OAAA,CAAQ,GAAA,EAAsB,KAAA,EAAqE;AACvG,MAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAClB,MAAA,MAAM,MAAA,GAAS,MAAM,SAAA,EAA0B;AAC/C,MAAA,MAAM,GAAA,GAAM,GAAA,CAAI,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AAEnC,MAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,GAAA,EAAK,MAAA,EAAQ,UAAU,CAAA;AAC3D,MAAA,MAAM,OAAA,GAAU,IAAI,aAAA,CAAc,EAAE,UAAA,EAAY,KAAK,KAAA,EAAO,GAAA,CAAI,GAAA,CAAI,KAAA,EAAO,CAAA;AAC3E,MAAA,MAAM,KAAA,GAAQ,IAAI,aAAA,CAAc,GAAA,EAAK,QAAQ,iBAAiB,CAAA;AAE9D,MAAA,MAAM,MAAM,MAAM,UAAA,CAAW,GAAA,CAAI,GAAA,CAAI,OAAO,GAAG,CAAA;AAE/C,MAAA,MAAM,CAAC,KAAA,EAAO,KAAK,CAAA,GAAI,MAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,OAAA,CAAQ,KAAA,EAAM,EAAG,OAAA,CAAQ,KAAA,EAAO,CAAC,CAAA;AAC3E,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,YAAA,CAAa,KAAA,EAAO,OAAO,GAAG,CAAA;AAErD,MAAA,IAAI,MAAM,IAAA,EAAM;AACd,QAAA,GAAA,CAAI,EAAA,EAAI,OAAO,QAAQ,CAAA;AAAA,MACzB,CAAA,MAAO;AACL,QAAA,KAAA,MAAW,OAAA,IAAW,mBAAA,CAAoB,QAAQ,CAAA,EAAG;AACnD,UAAA,GAAA,CAAI,EAAA,EAAI,OAAA,GAAU,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAA,CAAA,EAAI,EAAE,QAAA,EAAU,CAAC,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAAA,QACjF;AAAA,MACF;AAEA,MAAA,OAAO,EAAE,UAAU,CAAA,EAAE;AAAA,IACvB;AAAA;AAEJ,CAAC","file":"baseline-update.js","sourcesContent":["import {\n defineCommand,\n useConfig,\n type CLIInput,\n type PluginContextV3,\n} from '@kb-labs/sdk';\nimport {\n DevkitAdapter,\n SnapshotStore,\n resolveDevkitBin,\n captureGit,\n buildBaselineReport,\n} from '@kb-labs/qa-core';\nimport { type QAPluginConfig } from '@kb-labs/qa-contracts';\nimport type { BaselineUpdateFlags } from './flags.js';\n\nexport default defineCommand<unknown, CLIInput<BaselineUpdateFlags>, { exitCode: number }>({\n id: 'qa:baseline:update',\n description: 'Run check + stats and save as new baseline',\n\n handler: {\n async intent(_ctx: PluginContextV3, _input: CLIInput<BaselineUpdateFlags>) {\n return {\n summary: 'Run QA check + stats and save as new baseline',\n operations: [\n { type: 'create' as const, resource: 'file', details: { path: '.kb/qa/baseline.json' } },\n ],\n };\n },\n\n async execute(ctx: PluginContextV3, input: CLIInput<BaselineUpdateFlags>): Promise<{ exitCode: number }> {\n const { flags } = input;\n const config = await useConfig<QAPluginConfig>();\n const cwd = ctx.cwd ?? process.cwd();\n\n const binaryPath = resolveDevkitBin(cwd, config?.devkitPath);\n const adapter = new DevkitAdapter({ binaryPath, cwd, shell: ctx.api.shell });\n const store = new SnapshotStore(cwd, config?.historyMaxEntries);\n\n const git = await captureGit(ctx.api.shell, cwd);\n\n const [check, stats] = await Promise.all([adapter.check(), adapter.stats()]);\n const baseline = store.saveBaseline(check, stats, git);\n\n if (flags.json) {\n ctx.ui?.json?.(baseline);\n } else {\n for (const section of buildBaselineReport(baseline)) {\n ctx.ui?.success?.(`${section.header}`, { sections: [{ items: section.lines }] });\n }\n }\n\n return { exitCode: 0 };\n },\n },\n});\n"]}
|
|
@@ -1,133 +1,118 @@
|
|
|
1
|
-
|
|
2
|
-
* QA Plugin CLI flag definitions.
|
|
3
|
-
* DRY: Define once, use in manifest and command handlers.
|
|
4
|
-
*/
|
|
5
|
-
declare const qaRunFlags: {
|
|
6
|
-
readonly json: {
|
|
7
|
-
readonly type: "boolean";
|
|
8
|
-
readonly description: "Output JSON format";
|
|
9
|
-
readonly default: false;
|
|
10
|
-
};
|
|
11
|
-
readonly 'skip-check': {
|
|
12
|
-
readonly type: "array";
|
|
13
|
-
readonly description: "Skip specific check IDs (e.g. --skip-check build --skip-check lint)";
|
|
14
|
-
};
|
|
15
|
-
readonly 'no-cache': {
|
|
16
|
-
readonly type: "boolean";
|
|
17
|
-
readonly description: "Disable caching (force full run)";
|
|
18
|
-
readonly default: false;
|
|
19
|
-
};
|
|
20
|
-
readonly all: {
|
|
21
|
-
readonly type: "boolean";
|
|
22
|
-
readonly description: "Run all packages, ignoring affected analysis";
|
|
23
|
-
readonly default: false;
|
|
24
|
-
};
|
|
25
|
-
readonly package: {
|
|
26
|
-
readonly type: "string";
|
|
27
|
-
readonly description: "Filter by package name";
|
|
28
|
-
readonly alias: "p";
|
|
29
|
-
};
|
|
30
|
-
readonly repo: {
|
|
31
|
-
readonly type: "string";
|
|
32
|
-
readonly description: "Filter by repo name";
|
|
33
|
-
readonly alias: "r";
|
|
34
|
-
};
|
|
35
|
-
readonly scope: {
|
|
36
|
-
readonly type: "string";
|
|
37
|
-
readonly description: "Filter by npm scope";
|
|
38
|
-
readonly alias: "s";
|
|
39
|
-
};
|
|
40
|
-
readonly summary: {
|
|
41
|
-
readonly type: "boolean";
|
|
42
|
-
readonly description: "Show summary-only report (legacy flat format)";
|
|
43
|
-
readonly default: false;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
type QARunFlags = typeof qaRunFlags;
|
|
47
|
-
declare const qaSaveFlags: {
|
|
48
|
-
readonly json: {
|
|
49
|
-
readonly type: "boolean";
|
|
50
|
-
readonly description: "Output JSON format";
|
|
51
|
-
readonly default: false;
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
type QASaveFlags = typeof qaSaveFlags;
|
|
55
|
-
declare const qaHistoryFlags: {
|
|
56
|
-
readonly json: {
|
|
57
|
-
readonly type: "boolean";
|
|
58
|
-
readonly description: "Output JSON format";
|
|
59
|
-
readonly default: false;
|
|
60
|
-
};
|
|
61
|
-
readonly limit: {
|
|
62
|
-
readonly type: "number";
|
|
63
|
-
readonly description: "Number of entries to show";
|
|
64
|
-
readonly default: 20;
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
type QAHistoryFlags = typeof qaHistoryFlags;
|
|
68
|
-
declare const qaTrendsFlags: {
|
|
69
|
-
readonly json: {
|
|
70
|
-
readonly type: "boolean";
|
|
71
|
-
readonly description: "Output JSON format";
|
|
72
|
-
readonly default: false;
|
|
73
|
-
};
|
|
74
|
-
readonly window: {
|
|
75
|
-
readonly type: "number";
|
|
76
|
-
readonly description: "Number of entries for trend window";
|
|
77
|
-
readonly default: 10;
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
|
-
type QATrendsFlags = typeof qaTrendsFlags;
|
|
81
|
-
declare const qaRegressionsFlags: {
|
|
82
|
-
readonly json: {
|
|
83
|
-
readonly type: "boolean";
|
|
84
|
-
readonly description: "Output JSON format";
|
|
85
|
-
readonly default: false;
|
|
86
|
-
};
|
|
87
|
-
};
|
|
88
|
-
type QARegressionsFlags = typeof qaRegressionsFlags;
|
|
89
|
-
declare const baselineUpdateFlags: {
|
|
90
|
-
readonly json: {
|
|
91
|
-
readonly type: "boolean";
|
|
92
|
-
readonly description: "Output JSON format";
|
|
93
|
-
readonly default: false;
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
|
-
type BaselineUpdateFlags = typeof baselineUpdateFlags;
|
|
97
|
-
declare const baselineStatusFlags: {
|
|
98
|
-
readonly json: {
|
|
99
|
-
readonly type: "boolean";
|
|
100
|
-
readonly description: "Output JSON format";
|
|
101
|
-
readonly default: false;
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
type BaselineStatusFlags = typeof baselineStatusFlags;
|
|
105
|
-
declare const qaCheckFlags: {
|
|
106
|
-
readonly id: {
|
|
107
|
-
readonly type: "string";
|
|
108
|
-
readonly description: "Check ID to run (must match a check in qa.checks config)";
|
|
109
|
-
readonly demandOption: true;
|
|
110
|
-
};
|
|
111
|
-
readonly base: {
|
|
112
|
-
readonly type: "string";
|
|
113
|
-
readonly description: "Base branch/commit for diff strategies (diffOnly, newFiles). Default: main";
|
|
114
|
-
readonly default: "main";
|
|
115
|
-
};
|
|
116
|
-
readonly context: {
|
|
117
|
-
readonly type: "string";
|
|
118
|
-
readonly description: "JSON context to attach to history entry (e.g. {\"taskId\":\"123\"})";
|
|
119
|
-
};
|
|
120
|
-
readonly json: {
|
|
121
|
-
readonly type: "boolean";
|
|
122
|
-
readonly description: "Output JSON format";
|
|
123
|
-
readonly default: false;
|
|
124
|
-
};
|
|
125
|
-
readonly save: {
|
|
126
|
-
readonly type: "boolean";
|
|
127
|
-
readonly description: "Save result to history after running (default: true)";
|
|
128
|
-
readonly default: true;
|
|
129
|
-
};
|
|
130
|
-
};
|
|
131
|
-
type QACheckFlags = typeof qaCheckFlags;
|
|
1
|
+
import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
|
|
132
2
|
|
|
133
|
-
|
|
3
|
+
declare const qaRunFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
4
|
+
tasks: {
|
|
5
|
+
type: "string";
|
|
6
|
+
description: string;
|
|
7
|
+
};
|
|
8
|
+
save: {
|
|
9
|
+
type: "boolean";
|
|
10
|
+
description: string;
|
|
11
|
+
default: true;
|
|
12
|
+
};
|
|
13
|
+
json: {
|
|
14
|
+
type: "boolean";
|
|
15
|
+
description: string;
|
|
16
|
+
default: false;
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
type QaRunFlags = typeof qaRunFlags.infer;
|
|
20
|
+
declare const qaCheckFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
21
|
+
save: {
|
|
22
|
+
type: "boolean";
|
|
23
|
+
description: string;
|
|
24
|
+
default: true;
|
|
25
|
+
};
|
|
26
|
+
json: {
|
|
27
|
+
type: "boolean";
|
|
28
|
+
description: string;
|
|
29
|
+
default: false;
|
|
30
|
+
};
|
|
31
|
+
}>;
|
|
32
|
+
type QaCheckFlags = typeof qaCheckFlags.infer;
|
|
33
|
+
declare const qaStatsFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
34
|
+
save: {
|
|
35
|
+
type: "boolean";
|
|
36
|
+
description: string;
|
|
37
|
+
default: true;
|
|
38
|
+
};
|
|
39
|
+
json: {
|
|
40
|
+
type: "boolean";
|
|
41
|
+
description: string;
|
|
42
|
+
default: false;
|
|
43
|
+
};
|
|
44
|
+
}>;
|
|
45
|
+
type QaStatsFlags = typeof qaStatsFlags.infer;
|
|
46
|
+
declare const qaGateFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
47
|
+
save: {
|
|
48
|
+
type: "boolean";
|
|
49
|
+
description: string;
|
|
50
|
+
default: false;
|
|
51
|
+
};
|
|
52
|
+
json: {
|
|
53
|
+
type: "boolean";
|
|
54
|
+
description: string;
|
|
55
|
+
default: false;
|
|
56
|
+
};
|
|
57
|
+
}>;
|
|
58
|
+
type QaGateFlags = typeof qaGateFlags.infer;
|
|
59
|
+
declare const qaHistoryFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
60
|
+
limit: {
|
|
61
|
+
type: "number";
|
|
62
|
+
description: string;
|
|
63
|
+
default: number;
|
|
64
|
+
};
|
|
65
|
+
json: {
|
|
66
|
+
type: "boolean";
|
|
67
|
+
description: string;
|
|
68
|
+
default: false;
|
|
69
|
+
};
|
|
70
|
+
}>;
|
|
71
|
+
type QaHistoryFlags = typeof qaHistoryFlags.infer;
|
|
72
|
+
declare const qaTrendsFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
73
|
+
window: {
|
|
74
|
+
type: "number";
|
|
75
|
+
description: string;
|
|
76
|
+
default: number;
|
|
77
|
+
};
|
|
78
|
+
json: {
|
|
79
|
+
type: "boolean";
|
|
80
|
+
description: string;
|
|
81
|
+
default: false;
|
|
82
|
+
};
|
|
83
|
+
}>;
|
|
84
|
+
type QaTrendsFlags = typeof qaTrendsFlags.infer;
|
|
85
|
+
declare const qaRegressionsFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
86
|
+
json: {
|
|
87
|
+
type: "boolean";
|
|
88
|
+
description: string;
|
|
89
|
+
default: false;
|
|
90
|
+
};
|
|
91
|
+
}>;
|
|
92
|
+
type QaRegressionsFlags = typeof qaRegressionsFlags.infer;
|
|
93
|
+
declare const baselineUpdateFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
94
|
+
json: {
|
|
95
|
+
type: "boolean";
|
|
96
|
+
description: string;
|
|
97
|
+
default: false;
|
|
98
|
+
};
|
|
99
|
+
}>;
|
|
100
|
+
type BaselineUpdateFlags = typeof baselineUpdateFlags.infer;
|
|
101
|
+
declare const baselineStatusFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
102
|
+
json: {
|
|
103
|
+
type: "boolean";
|
|
104
|
+
description: string;
|
|
105
|
+
default: false;
|
|
106
|
+
};
|
|
107
|
+
}>;
|
|
108
|
+
type BaselineStatusFlags = typeof baselineStatusFlags.infer;
|
|
109
|
+
declare const baselineDiffFlags: _kb_labs_shared_command_kit.FlagSchemaWithInfer<{
|
|
110
|
+
json: {
|
|
111
|
+
type: "boolean";
|
|
112
|
+
description: string;
|
|
113
|
+
default: false;
|
|
114
|
+
};
|
|
115
|
+
}>;
|
|
116
|
+
type BaselineDiffFlags = typeof baselineDiffFlags.infer;
|
|
117
|
+
|
|
118
|
+
export { type BaselineDiffFlags, type BaselineStatusFlags, type BaselineUpdateFlags, type QaCheckFlags, type QaGateFlags, type QaHistoryFlags, type QaRegressionsFlags, type QaRunFlags, type QaStatsFlags, type QaTrendsFlags, baselineDiffFlags, baselineStatusFlags, baselineUpdateFlags, qaCheckFlags, qaGateFlags, qaHistoryFlags, qaRegressionsFlags, qaRunFlags, qaStatsFlags, qaTrendsFlags };
|