@opensip-cli/fitness 0.1.10 → 0.1.12
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/README.md +4 -2
- package/dist/__tests__/check-utils.test.js +11 -0
- package/dist/__tests__/check-utils.test.js.map +1 -1
- package/dist/__tests__/fit-execute-opts.test.js +35 -1
- package/dist/__tests__/fit-execute-opts.test.js.map +1 -1
- package/dist/__tests__/public-api.test.js +7 -2
- package/dist/__tests__/public-api.test.js.map +1 -1
- package/dist/__tests__/tool.test.js +18 -9
- package/dist/__tests__/tool.test.js.map +1 -1
- package/dist/check-utils/check-authoring-helpers.d.ts +14 -0
- package/dist/check-utils/check-authoring-helpers.d.ts.map +1 -0
- package/dist/check-utils/check-authoring-helpers.js +18 -0
- package/dist/check-utils/check-authoring-helpers.js.map +1 -0
- package/dist/check-utils/index.d.ts +1 -0
- package/dist/check-utils/index.d.ts.map +1 -1
- package/dist/check-utils/index.js +1 -0
- package/dist/check-utils/index.js.map +1 -1
- package/dist/check-utils/test-helpers.d.ts.map +1 -1
- package/dist/check-utils/test-helpers.js +0 -1
- package/dist/check-utils/test-helpers.js.map +1 -1
- package/dist/cli/__tests__/fit-fail-closed.test.d.ts +8 -0
- package/dist/cli/__tests__/fit-fail-closed.test.d.ts.map +1 -0
- package/dist/cli/__tests__/fit-fail-closed.test.js +200 -0
- package/dist/cli/__tests__/fit-fail-closed.test.js.map +1 -0
- package/dist/cli/__tests__/fit-modes-live.test.js +33 -3
- package/dist/cli/__tests__/fit-modes-live.test.js.map +1 -1
- package/dist/cli/__tests__/fit-runner.test.d.ts +5 -0
- package/dist/cli/__tests__/fit-runner.test.d.ts.map +1 -0
- package/dist/cli/__tests__/fit-runner.test.js +145 -0
- package/dist/cli/__tests__/fit-runner.test.js.map +1 -0
- package/dist/cli/__tests__/report-data.test.js +37 -2
- package/dist/cli/__tests__/report-data.test.js.map +1 -1
- package/dist/cli/fit/__tests__/envelope-view-table.test.d.ts +2 -0
- package/dist/cli/fit/__tests__/envelope-view-table.test.d.ts.map +1 -0
- package/dist/cli/fit/__tests__/envelope-view-table.test.js +64 -0
- package/dist/cli/fit/__tests__/envelope-view-table.test.js.map +1 -0
- package/dist/cli/fit/__tests__/fit-export-command-spec.test.js +5 -2
- package/dist/cli/fit/__tests__/fit-export-command-spec.test.js.map +1 -1
- package/dist/cli/fit/check-loader.d.ts.map +1 -1
- package/dist/cli/fit/check-loader.js +28 -25
- package/dist/cli/fit/check-loader.js.map +1 -1
- package/dist/cli/fit/envelope-view.d.ts +1 -3
- package/dist/cli/fit/envelope-view.d.ts.map +1 -1
- package/dist/cli/fit/envelope-view.js +1 -7
- package/dist/cli/fit/envelope-view.js.map +1 -1
- package/dist/cli/fit/fit-aux-command-specs.d.ts +4 -4
- package/dist/cli/fit/fit-aux-command-specs.d.ts.map +1 -1
- package/dist/cli/fit/fit-aux-command-specs.js +13 -15
- package/dist/cli/fit/fit-aux-command-specs.js.map +1 -1
- package/dist/cli/fit/fit-command-spec.d.ts +3 -3
- package/dist/cli/fit/fit-command-spec.d.ts.map +1 -1
- package/dist/cli/fit/fit-command-spec.js +5 -9
- package/dist/cli/fit/fit-command-spec.js.map +1 -1
- package/dist/cli/fit/load-outcome.d.ts +24 -0
- package/dist/cli/fit/load-outcome.d.ts.map +1 -0
- package/dist/cli/fit/load-outcome.js +203 -0
- package/dist/cli/fit/load-outcome.js.map +1 -0
- package/dist/cli/fit/resolved-fitness-config.d.ts.map +1 -1
- package/dist/cli/fit/resolved-fitness-config.js +2 -6
- package/dist/cli/fit/resolved-fitness-config.js.map +1 -1
- package/dist/cli/fit/result-builders.d.ts.map +1 -1
- package/dist/cli/fit/result-builders.js +3 -4
- package/dist/cli/fit/result-builders.js.map +1 -1
- package/dist/cli/fit-modes.d.ts.map +1 -1
- package/dist/cli/fit-modes.js +51 -19
- package/dist/cli/fit-modes.js.map +1 -1
- package/dist/cli/fit-runner-progress.d.ts +0 -2
- package/dist/cli/fit-runner-progress.d.ts.map +1 -1
- package/dist/cli/fit-runner-progress.js +0 -3
- package/dist/cli/fit-runner-progress.js.map +1 -1
- package/dist/cli/fit-runner.d.ts +1 -34
- package/dist/cli/fit-runner.d.ts.map +1 -1
- package/dist/cli/fit-runner.js +90 -241
- package/dist/cli/fit-runner.js.map +1 -1
- package/dist/cli/fit-worker.d.ts.map +1 -1
- package/dist/cli/fit-worker.js +0 -1
- package/dist/cli/fit-worker.js.map +1 -1
- package/dist/cli/fit.d.ts +1 -0
- package/dist/cli/fit.d.ts.map +1 -1
- package/dist/cli/fit.js +6 -0
- package/dist/cli/fit.js.map +1 -1
- package/dist/cli/report-data.d.ts.map +1 -1
- package/dist/cli/report-data.js +0 -1
- package/dist/cli/report-data.js.map +1 -1
- package/dist/framework/__tests__/define-check.test.js +0 -1
- package/dist/framework/__tests__/define-check.test.js.map +1 -1
- package/dist/framework/__tests__/define-regex-list-check.test.js +15 -0
- package/dist/framework/__tests__/define-regex-list-check.test.js.map +1 -1
- package/dist/framework/__tests__/scope-registry.test.js +2 -0
- package/dist/framework/__tests__/scope-registry.test.js.map +1 -1
- package/dist/framework/abortable-exec.d.ts.map +1 -1
- package/dist/framework/abortable-exec.js +0 -1
- package/dist/framework/abortable-exec.js.map +1 -1
- package/dist/framework/check-config.d.ts +0 -8
- package/dist/framework/check-config.d.ts.map +1 -1
- package/dist/framework/check-config.js +0 -1
- package/dist/framework/check-config.js.map +1 -1
- package/dist/framework/constants.d.ts.map +1 -1
- package/dist/framework/constants.js +0 -1
- package/dist/framework/constants.js.map +1 -1
- package/dist/framework/define-check.d.ts.map +1 -1
- package/dist/framework/define-check.js +0 -3
- package/dist/framework/define-check.js.map +1 -1
- package/dist/framework/define-regex-list-check.d.ts +6 -0
- package/dist/framework/define-regex-list-check.d.ts.map +1 -1
- package/dist/framework/define-regex-list-check.js +4 -0
- package/dist/framework/define-regex-list-check.js.map +1 -1
- package/dist/framework/execution-context.d.ts.map +1 -1
- package/dist/framework/execution-context.js +0 -2
- package/dist/framework/execution-context.js.map +1 -1
- package/dist/framework/file-accessor.d.ts.map +1 -1
- package/dist/framework/file-accessor.js +0 -4
- package/dist/framework/file-accessor.js.map +1 -1
- package/dist/framework/file-cache.d.ts +1 -0
- package/dist/framework/file-cache.d.ts.map +1 -1
- package/dist/framework/file-cache.js +1 -4
- package/dist/framework/file-cache.js.map +1 -1
- package/dist/framework/ignore-processing.d.ts.map +1 -1
- package/dist/framework/ignore-processing.js +0 -2
- package/dist/framework/ignore-processing.js.map +1 -1
- package/dist/framework/import-graph.d.ts.map +1 -1
- package/dist/framework/import-graph.js +0 -1
- package/dist/framework/import-graph.js.map +1 -1
- package/dist/framework/parse-cache.d.ts.map +1 -1
- package/dist/framework/parse-cache.js +0 -1
- package/dist/framework/parse-cache.js.map +1 -1
- package/dist/framework/scope-registry.d.ts.map +1 -1
- package/dist/framework/scope-registry.js +7 -1
- package/dist/framework/scope-registry.js.map +1 -1
- package/dist/framework/severity-mapping.d.ts.map +1 -1
- package/dist/framework/severity-mapping.js +0 -1
- package/dist/framework/severity-mapping.js.map +1 -1
- package/dist/identity.d.ts +11 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +11 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/persistence/session-replay.d.ts.map +1 -1
- package/dist/persistence/session-replay.js +7 -28
- package/dist/persistence/session-replay.js.map +1 -1
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +2 -1
- package/dist/plugins/loader.js.map +1 -1
- package/dist/recipes/__tests__/execution-branches.test.d.ts.map +1 -1
- package/dist/recipes/__tests__/execution-branches.test.js +0 -1
- package/dist/recipes/__tests__/execution-branches.test.js.map +1 -1
- package/dist/recipes/__tests__/service.test.d.ts.map +1 -1
- package/dist/recipes/__tests__/service.test.js +0 -1
- package/dist/recipes/__tests__/service.test.js.map +1 -1
- package/dist/recipes/built-in-recipes.d.ts.map +1 -1
- package/dist/recipes/built-in-recipes.js +0 -1
- package/dist/recipes/built-in-recipes.js.map +1 -1
- package/dist/recipes/check-resolution.d.ts.map +1 -1
- package/dist/recipes/check-resolution.js +0 -1
- package/dist/recipes/check-resolution.js.map +1 -1
- package/dist/recipes/check-result-processor.d.ts.map +1 -1
- package/dist/recipes/check-result-processor.js +0 -1
- package/dist/recipes/check-result-processor.js.map +1 -1
- package/dist/recipes/registry.d.ts.map +1 -1
- package/dist/recipes/registry.js +0 -1
- package/dist/recipes/registry.js.map +1 -1
- package/dist/recipes/service-adhoc.d.ts +24 -0
- package/dist/recipes/service-adhoc.d.ts.map +1 -0
- package/dist/recipes/service-adhoc.js +53 -0
- package/dist/recipes/service-adhoc.js.map +1 -0
- package/dist/recipes/service-check-resolution.d.ts +18 -0
- package/dist/recipes/service-check-resolution.d.ts.map +1 -0
- package/dist/recipes/service-check-resolution.js +65 -0
- package/dist/recipes/service-check-resolution.js.map +1 -0
- package/dist/recipes/service-prepare.d.ts +23 -0
- package/dist/recipes/service-prepare.d.ts.map +1 -0
- package/dist/recipes/service-prepare.js +30 -0
- package/dist/recipes/service-prepare.js.map +1 -0
- package/dist/recipes/service-prewarm.d.ts +12 -0
- package/dist/recipes/service-prewarm.d.ts.map +1 -0
- package/dist/recipes/service-prewarm.js +25 -0
- package/dist/recipes/service-prewarm.js.map +1 -0
- package/dist/recipes/service-session.d.ts +17 -0
- package/dist/recipes/service-session.d.ts.map +1 -0
- package/dist/recipes/service-session.js +78 -0
- package/dist/recipes/service-session.js.map +1 -0
- package/dist/recipes/service.d.ts +2 -19
- package/dist/recipes/service.d.ts.map +1 -1
- package/dist/recipes/service.js +23 -219
- package/dist/recipes/service.js.map +1 -1
- package/dist/scaffold/index.d.ts +3 -0
- package/dist/scaffold/index.d.ts.map +1 -0
- package/dist/scaffold/index.js +3 -0
- package/dist/scaffold/index.js.map +1 -0
- package/dist/scope-augmentation.d.ts +11 -0
- package/dist/scope-augmentation.d.ts.map +1 -1
- package/dist/signalers/loader.d.ts.map +1 -1
- package/dist/signalers/loader.js +0 -3
- package/dist/signalers/loader.js.map +1 -1
- package/dist/targets/loader.d.ts.map +1 -1
- package/dist/targets/loader.js +0 -3
- package/dist/targets/loader.js.map +1 -1
- package/dist/targets/target-registry.d.ts.map +1 -1
- package/dist/targets/target-registry.js +0 -1
- package/dist/targets/target-registry.js.map +1 -1
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +12 -16
- package/dist/tool.js.map +1 -1
- package/dist/types/severity.d.ts.map +1 -1
- package/dist/types/severity.js +0 -2
- package/dist/types/severity.js.map +1 -1
- package/package.json +27 -16
- package/dist/cli/fit-runner-views.d.ts +0 -33
- package/dist/cli/fit-runner-views.d.ts.map +0 -1
- package/dist/cli/fit-runner-views.js +0 -92
- package/dist/cli/fit-runner-views.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope-view.js","sourceRoot":"","sources":["../../../src/cli/fit/envelope-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"envelope-view.js","sourceRoot":"","sources":["../../../src/cli/fit/envelope-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAoBvD,SAAS,SAAS,CAAC,IAAgB;IACjC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACxD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,IAAI,aAAa,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,CAAC,CAAC;;gBAC7B,QAAQ,IAAI,CAAC,CAAC;QACrB,CAAC;QACD,OAAO;YACL,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;YACvB,MAAM;YACN,QAAQ;YACR,SAAS,EAAE,IAAI,CAAC,cAAc;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAwB,EACxB,IAAoC;IAEpC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;KAC7E,CAAC;AACJ,CAAC"}
|
|
@@ -36,10 +36,10 @@ export declare const fitRecipesGroupedCommandSpec: CommandSpec<unknown, ToolCliC
|
|
|
36
36
|
*/
|
|
37
37
|
export declare const FIT_EXPORT_FORMATS: readonly ["baseline"];
|
|
38
38
|
/**
|
|
39
|
-
* `
|
|
40
|
-
* as a
|
|
41
|
-
*
|
|
42
|
-
* declare `name: 'export'
|
|
39
|
+
* `fitness export --format baseline` — the canonical fitness export command.
|
|
40
|
+
* defineTool mounts this draft as a subcommand of the canonical primary, and
|
|
41
|
+
* `fit export` works through the primary alias. It shares the root with
|
|
42
|
+
* `graph export` without colliding because both declare `name: 'export'`.
|
|
43
43
|
*/
|
|
44
44
|
export declare const fitExportCommandSpec: CommandSpec<unknown, ToolCliContext>;
|
|
45
45
|
//# sourceMappingURL=fit-aux-command-specs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-aux-command-specs.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/fit-aux-command-specs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"fit-aux-command-specs.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/fit-aux-command-specs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYrE,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,EAAE,WAAW,CAAC,OAAO,EAAE,cAAc,CAazE,CAAC;AAEH,sDAAsD;AACtD,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,OAAO,EAAE,cAAc,CAW1E,CAAC;AAEL;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,uBAAwB,CAAC;AA8CxD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,OAAO,EAAE,cAAc,CA+BpE,CAAC"}
|
|
@@ -22,21 +22,21 @@
|
|
|
22
22
|
* documented non-Ink exception. The host renders nothing.
|
|
23
23
|
*/
|
|
24
24
|
import { EXIT_CODES } from '@opensip-cli/contracts';
|
|
25
|
-
import { ConfigurationError,
|
|
25
|
+
import { ConfigurationError, defineNestedCommand, logger } from '@opensip-cli/core';
|
|
26
26
|
import { listChecks } from '../fit-list.js';
|
|
27
27
|
import { listRecipes } from '../fit-recipes.js';
|
|
28
28
|
// =============================================================================
|
|
29
29
|
// GROUPED <tool> <verb> CHILDREN (the canonical Tier-2 grammar)
|
|
30
30
|
//
|
|
31
|
-
// `
|
|
32
|
-
//
|
|
33
|
-
// bodies directly (calling the shared `listChecks` /
|
|
34
|
-
// functions) — the legacy flat `fit-list` / `fit-recipes`
|
|
31
|
+
// `fitness list` / `fitness recipes` mount as subcommands of the canonical
|
|
32
|
+
// primary, and `fit list` / `fit recipes` work through the primary alias. They
|
|
33
|
+
// own their handler bodies directly (calling the shared `listChecks` /
|
|
34
|
+
// `listRecipes` engine functions) — the legacy flat `fit-list` / `fit-recipes`
|
|
35
|
+
// aliases were removed.
|
|
35
36
|
// =============================================================================
|
|
36
37
|
/** `fit list` — list available fitness checks. */
|
|
37
|
-
export const fitListGroupedCommandSpec =
|
|
38
|
+
export const fitListGroupedCommandSpec = defineNestedCommand({
|
|
38
39
|
name: 'list',
|
|
39
|
-
parent: 'fit',
|
|
40
40
|
description: 'List available fitness checks',
|
|
41
41
|
commonFlags: ['cwd', 'json'],
|
|
42
42
|
scope: 'project',
|
|
@@ -47,9 +47,8 @@ export const fitListGroupedCommandSpec = defineCommand({
|
|
|
47
47
|
},
|
|
48
48
|
});
|
|
49
49
|
/** `fit recipes` — list available fitness recipes. */
|
|
50
|
-
export const fitRecipesGroupedCommandSpec =
|
|
50
|
+
export const fitRecipesGroupedCommandSpec = defineNestedCommand({
|
|
51
51
|
name: 'recipes',
|
|
52
|
-
parent: 'fit',
|
|
53
52
|
description: 'List available fitness recipes',
|
|
54
53
|
commonFlags: ['cwd', 'json'],
|
|
55
54
|
scope: 'project',
|
|
@@ -110,14 +109,13 @@ async function runFitBaselineExport(opts, cli) {
|
|
|
110
109
|
process.stdout.write(`Exported fit baseline to ${opts.out}\n`);
|
|
111
110
|
}
|
|
112
111
|
/**
|
|
113
|
-
* `
|
|
114
|
-
* as a
|
|
115
|
-
*
|
|
116
|
-
* declare `name: 'export'
|
|
112
|
+
* `fitness export --format baseline` — the canonical fitness export command.
|
|
113
|
+
* defineTool mounts this draft as a subcommand of the canonical primary, and
|
|
114
|
+
* `fit export` works through the primary alias. It shares the root with
|
|
115
|
+
* `graph export` without colliding because both declare `name: 'export'`.
|
|
117
116
|
*/
|
|
118
|
-
export const fitExportCommandSpec =
|
|
117
|
+
export const fitExportCommandSpec = defineNestedCommand({
|
|
119
118
|
name: 'export',
|
|
120
|
-
parent: 'fit',
|
|
121
119
|
description: 'Export fit artifacts: --format baseline (the SARIF-shaped gate baseline)',
|
|
122
120
|
commonFlags: ['cwd', 'json'],
|
|
123
121
|
options: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-aux-command-specs.js","sourceRoot":"","sources":["../../../src/cli/fit/fit-aux-command-specs.ts"],"names":[],"mappings":"AAAA,2WAA2W;AAC3W,yPAAyP;AACzP;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"fit-aux-command-specs.js","sourceRoot":"","sources":["../../../src/cli/fit/fit-aux-command-specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
* arm (which only does `emitEnvelope`/`render`), so the host renders nothing and
|
|
14
14
|
* the handler stays authoritative — byte-identical to the former action body.
|
|
15
15
|
*/
|
|
16
|
-
import type {
|
|
17
|
-
export declare const FIT_LIVE_VIEW_KEY = "fit";
|
|
16
|
+
import type { ToolCliContext } from '@opensip-cli/core';
|
|
18
17
|
/**
|
|
19
18
|
* Build the declarative `fit` command. The `setUpLiveView` callback is supplied
|
|
20
19
|
* by the tool (tool.ts) so the `cli.registerLiveView(renderFitLive)` wiring
|
|
21
20
|
* stays next to the renderer import; this module stays renderer-free.
|
|
22
21
|
*/
|
|
23
|
-
export declare function buildFitCommandSpec(setUpLiveView: (cli: ToolCliContext) => void):
|
|
22
|
+
export declare function buildFitCommandSpec(setUpLiveView: (cli: ToolCliContext) => void): import("@opensip-cli/core").PrimaryCommandSpecDraft<unknown, ToolCliContext>;
|
|
23
|
+
export { FITNESS_LIVE_VIEW_KEY as FIT_LIVE_VIEW_KEY } from '../../identity.js';
|
|
24
24
|
//# sourceMappingURL=fit-command-spec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-command-spec.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/fit-command-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"fit-command-spec.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/fit-command-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;AAoD3E;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,gFA0D/E;AAED,OAAO,EAAE,qBAAqB,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -13,13 +13,9 @@
|
|
|
13
13
|
* arm (which only does `emitEnvelope`/`render`), so the host renders nothing and
|
|
14
14
|
* the handler stays authoritative — byte-identical to the former action body.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { definePrimaryCommand } from '@opensip-cli/core';
|
|
17
|
+
import { FITNESS_LIVE_VIEW_KEY } from '../../identity.js';
|
|
17
18
|
import { runGateMode, runJsonMode, runListMode, runLiveMode, runRecipesMode, runShowMode, } from '../fit-modes.js';
|
|
18
|
-
// Live-view key fitness contributes to the CLI's renderer registry. Owned by
|
|
19
|
-
// this package — the CLI dispatcher does NOT key off this literal; each tool
|
|
20
|
-
// decides its own live-view name. The renderer is registered lazily inside the
|
|
21
|
-
// live branch of the handler via `setUpFitLiveView` (the tool wires that up).
|
|
22
|
-
export const FIT_LIVE_VIEW_KEY = 'fit';
|
|
23
19
|
/**
|
|
24
20
|
* The `fit` command handler — the former `registerFitCommand()` action body,
|
|
25
21
|
* lifted verbatim to a spec handler. Returns `void`: the host (`raw-stream`)
|
|
@@ -63,7 +59,7 @@ async function runFit(rawOpts, cli, setUpLiveView) {
|
|
|
63
59
|
// mount-time `register()` hook, so we set the renderer up on the host context
|
|
64
60
|
// before the `cli.renderLive` lookup inside runLiveMode.
|
|
65
61
|
setUpLiveView(cli);
|
|
66
|
-
return await runLiveMode(opts, cli,
|
|
62
|
+
return await runLiveMode(opts, cli, FITNESS_LIVE_VIEW_KEY, opts.open === true);
|
|
67
63
|
}
|
|
68
64
|
/**
|
|
69
65
|
* Build the declarative `fit` command. The `setUpLiveView` callback is supplied
|
|
@@ -71,8 +67,7 @@ async function runFit(rawOpts, cli, setUpLiveView) {
|
|
|
71
67
|
* stays next to the renderer import; this module stays renderer-free.
|
|
72
68
|
*/
|
|
73
69
|
export function buildFitCommandSpec(setUpLiveView) {
|
|
74
|
-
return
|
|
75
|
-
name: 'fit',
|
|
70
|
+
return definePrimaryCommand({
|
|
76
71
|
description: 'Run fitness checks',
|
|
77
72
|
// ADR-0021 cross-tool flags from the single registry: --cwd, --json,
|
|
78
73
|
// --quiet, --verbose, --debug, --report-to, --api-key, --open. `cwd` is
|
|
@@ -128,4 +123,5 @@ export function buildFitCommandSpec(setUpLiveView) {
|
|
|
128
123
|
handler: (opts, cli) => runFit(opts, cli, setUpLiveView),
|
|
129
124
|
});
|
|
130
125
|
}
|
|
126
|
+
export { FITNESS_LIVE_VIEW_KEY as FIT_LIVE_VIEW_KEY } from '../../identity.js';
|
|
131
127
|
//# sourceMappingURL=fit-command-spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-command-spec.js","sourceRoot":"","sources":["../../../src/cli/fit/fit-command-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"fit-command-spec.js","sourceRoot":"","sources":["../../../src/cli/fit/fit-command-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fitness load failure classification (ADR-0060, Phase 4).
|
|
3
|
+
*
|
|
4
|
+
* Distinguishes fail-closed command errors (empty registry, required plugin/check-pack
|
|
5
|
+
* failures) from strict degraded runs (optional plugin failures while built-in checks
|
|
6
|
+
* still loaded).
|
|
7
|
+
*/
|
|
8
|
+
import { type ErrorResult } from '@opensip-cli/contracts';
|
|
9
|
+
import { type CliDiagnostic } from '@opensip-cli/core';
|
|
10
|
+
/**
|
|
11
|
+
* Classify load-time failures recorded on `scope.fitness.load` and stamp
|
|
12
|
+
* `commandError` / `loadDegraded` / `degradedDiagnostics`. Idempotent per run.
|
|
13
|
+
*/
|
|
14
|
+
export declare function finalizeFitLoadOutcome(projectDir: string): void;
|
|
15
|
+
/** Primary command-error diagnostic after {@link finalizeFitLoadOutcome}, if any. */
|
|
16
|
+
export declare function fitLoadCommandError(): CliDiagnostic | undefined;
|
|
17
|
+
/** Whether the load finished with optional-only failures (strict degraded). */
|
|
18
|
+
export declare function fitLoadIsDegraded(): boolean;
|
|
19
|
+
/** Build the public `ErrorResult` for a fail-closed load outcome. */
|
|
20
|
+
export declare function fitCommandErrorResult(diagnostic: CliDiagnostic): ErrorResult & {
|
|
21
|
+
readonly code: string;
|
|
22
|
+
readonly diagnostic: CliDiagnostic;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=load-outcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-outcome.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/load-outcome.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAkL3B;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA0B/D;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,IAAI,aAAa,GAAG,SAAS,CAE/D;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,aAAa,GAAG,WAAW,GAAG;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;CACpC,CASA"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fitness load failure classification (ADR-0060, Phase 4).
|
|
3
|
+
*
|
|
4
|
+
* Distinguishes fail-closed command errors (empty registry, required plugin/check-pack
|
|
5
|
+
* failures) from strict degraded runs (optional plugin failures while built-in checks
|
|
6
|
+
* still loaded).
|
|
7
|
+
*/
|
|
8
|
+
import { EXIT_CODES } from '@opensip-cli/contracts';
|
|
9
|
+
import { CLI_DIAGNOSTIC_CODES, classifyModuleError, currentScope, discoverPlugins, readProjectPluginsList, withLogRef, } from '@opensip-cli/core';
|
|
10
|
+
import { currentCheckRegistry, currentFitnessLoadState } from '../../framework/scope-registry.js';
|
|
11
|
+
import { FIT_PLUGIN_LAYOUT } from '../../plugins/loader.js';
|
|
12
|
+
/** Prefix before the colon in `loadAllPlugins` error strings (`source: message`). */
|
|
13
|
+
function pluginErrorSource(error) {
|
|
14
|
+
const idx = error.indexOf(':');
|
|
15
|
+
return idx === -1 ? error.trim() : error.slice(0, idx).trim();
|
|
16
|
+
}
|
|
17
|
+
/** Package name mentioned in a fit-pack domain load error string. */
|
|
18
|
+
function checkPackErrorPackage(error) {
|
|
19
|
+
const arrow = /^([^→]+)→/.exec(error.trim());
|
|
20
|
+
if (arrow !== null)
|
|
21
|
+
return arrow[1].trim();
|
|
22
|
+
const colon = /^([^:]+):/.exec(error.trim());
|
|
23
|
+
return colon?.[1]?.trim();
|
|
24
|
+
}
|
|
25
|
+
function requiredCheckPackages(_projectDir) {
|
|
26
|
+
const plugins = currentScope()?.configDocument?.plugins;
|
|
27
|
+
if (plugins === null || plugins === undefined || typeof plugins !== 'object') {
|
|
28
|
+
return new Set();
|
|
29
|
+
}
|
|
30
|
+
const checkPackages = plugins.checkPackages;
|
|
31
|
+
return Array.isArray(checkPackages)
|
|
32
|
+
? new Set(checkPackages.filter((v) => typeof v === 'string'))
|
|
33
|
+
: new Set();
|
|
34
|
+
}
|
|
35
|
+
function isRequiredPluginSource(source, projectDir) {
|
|
36
|
+
const discovered = discoverPlugins(FIT_PLUGIN_LAYOUT, projectDir);
|
|
37
|
+
const match = discovered.find((p) => p.source === source || p.namespace === source);
|
|
38
|
+
if (match?.type === 'file')
|
|
39
|
+
return true;
|
|
40
|
+
const declared = readProjectPluginsList(projectDir, 'fit');
|
|
41
|
+
if (declared?.includes(source) === true)
|
|
42
|
+
return true;
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
function emptyRegistryDiagnostic() {
|
|
46
|
+
return stampDiagnostic({
|
|
47
|
+
severity: 'error',
|
|
48
|
+
code: CLI_DIAGNOSTIC_CODES.OPENSIP_FIT_EMPTY_CHECK_REGISTRY,
|
|
49
|
+
category: 'integrity',
|
|
50
|
+
message: 'No fitness checks were loaded for this project.',
|
|
51
|
+
impact: 'The run cannot produce credible findings because the check registry is empty.',
|
|
52
|
+
action: 'Install at least one package declaring opensipTools.kind: "fit-pack", ' +
|
|
53
|
+
'or declare plugins.checkPackages in opensip-cli.config.yml.',
|
|
54
|
+
provenance: { toolId: 'fit', capabilityDomain: 'fit-pack' },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function checkPackLoadDiagnostic(packageName, detail) {
|
|
58
|
+
return checkPackDiagnostic(packageName, detail, 'required');
|
|
59
|
+
}
|
|
60
|
+
function checkPackDiagnostic(packageName, detail, mode) {
|
|
61
|
+
const provenance = {
|
|
62
|
+
toolId: 'fit',
|
|
63
|
+
packageName,
|
|
64
|
+
capabilityDomain: 'fit-pack',
|
|
65
|
+
};
|
|
66
|
+
const classified = classifiedLoaderDetail(detail, provenance);
|
|
67
|
+
const required = mode === 'required';
|
|
68
|
+
return stampDiagnostic({
|
|
69
|
+
severity: required ? 'error' : 'warning',
|
|
70
|
+
code: CLI_DIAGNOSTIC_CODES.OPENSIP_FIT_CHECK_PACK_LOAD_FAILED,
|
|
71
|
+
category: required ? 'runtime' : 'degraded',
|
|
72
|
+
message: `${required ? 'Required' : 'Optional'} check pack "${packageName}" failed to load.`,
|
|
73
|
+
impact: required
|
|
74
|
+
? 'A required fit-pack could not be loaded, so the run cannot proceed.'
|
|
75
|
+
: 'Some optional check packs were skipped; required checks still ran.',
|
|
76
|
+
...(required
|
|
77
|
+
? {
|
|
78
|
+
action: 'Verify the package is installed, built, and listed correctly in plugins.checkPackages.',
|
|
79
|
+
}
|
|
80
|
+
: {}),
|
|
81
|
+
provenance,
|
|
82
|
+
detail: classified.detail,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function stampDiagnostic(diagnostic) {
|
|
86
|
+
return withLogRef(diagnostic, currentScope()?.runId);
|
|
87
|
+
}
|
|
88
|
+
function classifiedLoaderDetail(detail, provenance) {
|
|
89
|
+
const classified = classifyModuleError(new Error(detail), provenance);
|
|
90
|
+
return { message: classified.message, detail: classified.detail };
|
|
91
|
+
}
|
|
92
|
+
function requiredPluginDiagnostic(source, detail) {
|
|
93
|
+
return pluginDiagnostic(source, detail, 'required');
|
|
94
|
+
}
|
|
95
|
+
function pluginDiagnostic(source, detail, mode) {
|
|
96
|
+
const provenance = {
|
|
97
|
+
toolId: 'fit',
|
|
98
|
+
packageName: source,
|
|
99
|
+
discoverySource: mode === 'required' ? 'required-plugin' : 'optional-plugin',
|
|
100
|
+
};
|
|
101
|
+
const classified = classifiedLoaderDetail(detail, provenance);
|
|
102
|
+
const required = mode === 'required';
|
|
103
|
+
return stampDiagnostic({
|
|
104
|
+
severity: required ? 'error' : 'warning',
|
|
105
|
+
code: CLI_DIAGNOSTIC_CODES.OPENSIP_PLUGIN_LOAD_FAILED,
|
|
106
|
+
category: required ? 'runtime' : 'degraded',
|
|
107
|
+
message: `${required ? 'Required' : 'Optional'} fitness plugin "${source}" failed to load.`,
|
|
108
|
+
impact: required
|
|
109
|
+
? 'A required project-local or declared plugin failed, so the run cannot proceed.'
|
|
110
|
+
: 'Some optional checks were skipped; built-in checks still ran.',
|
|
111
|
+
...(required
|
|
112
|
+
? {
|
|
113
|
+
action: 'Fix the plugin module or remove it from the project opensip-cli/fit tree / plugins.fit list.',
|
|
114
|
+
}
|
|
115
|
+
: {}),
|
|
116
|
+
provenance,
|
|
117
|
+
detail: classified.detail,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function optionalPluginDiagnostic(source, detail) {
|
|
121
|
+
return pluginDiagnostic(source, detail, 'optional');
|
|
122
|
+
}
|
|
123
|
+
function optionalCheckPackDiagnostic(packageName, detail) {
|
|
124
|
+
return checkPackDiagnostic(packageName, detail, 'optional');
|
|
125
|
+
}
|
|
126
|
+
function partitionPluginFailures(errors, projectDir) {
|
|
127
|
+
const required = [];
|
|
128
|
+
const optional = [];
|
|
129
|
+
for (const err of errors) {
|
|
130
|
+
const source = pluginErrorSource(err);
|
|
131
|
+
const detail = err.includes(':') ? err.slice(err.indexOf(':') + 1).trim() : err;
|
|
132
|
+
if (isRequiredPluginSource(source, projectDir)) {
|
|
133
|
+
required.push(requiredPluginDiagnostic(source, detail));
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
optional.push(optionalPluginDiagnostic(source, detail));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return { required, optional };
|
|
140
|
+
}
|
|
141
|
+
function partitionCheckPackFailures(errors, requiredPackages) {
|
|
142
|
+
const required = [];
|
|
143
|
+
const optional = [];
|
|
144
|
+
for (const err of errors) {
|
|
145
|
+
const pkg = checkPackErrorPackage(err);
|
|
146
|
+
if (pkg !== undefined && requiredPackages.has(pkg)) {
|
|
147
|
+
required.push(checkPackLoadDiagnostic(pkg, err));
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
optional.push(optionalCheckPackDiagnostic(pkg ?? 'unknown', err));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return { required, optional };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Classify load-time failures recorded on `scope.fitness.load` and stamp
|
|
157
|
+
* `commandError` / `loadDegraded` / `degradedDiagnostics`. Idempotent per run.
|
|
158
|
+
*/
|
|
159
|
+
export function finalizeFitLoadOutcome(projectDir) {
|
|
160
|
+
const load = currentFitnessLoadState();
|
|
161
|
+
if (load.outcomeFinalized === true)
|
|
162
|
+
return;
|
|
163
|
+
const enabledCount = currentCheckRegistry().listEnabled().length;
|
|
164
|
+
const pluginFailures = partitionPluginFailures(load.pluginLoadErrors, projectDir);
|
|
165
|
+
const packFailures = partitionCheckPackFailures(load.checkPackErrors, requiredCheckPackages(projectDir));
|
|
166
|
+
if (pluginFailures.required.length > 0) {
|
|
167
|
+
load.commandError = pluginFailures.required[0];
|
|
168
|
+
}
|
|
169
|
+
else if (packFailures.required.length > 0) {
|
|
170
|
+
load.commandError = packFailures.required[0];
|
|
171
|
+
}
|
|
172
|
+
else if (enabledCount === 0) {
|
|
173
|
+
load.commandError = emptyRegistryDiagnostic();
|
|
174
|
+
}
|
|
175
|
+
else if (pluginFailures.optional.length > 0 || packFailures.optional.length > 0) {
|
|
176
|
+
load.loadDegraded = true;
|
|
177
|
+
load.degradedDiagnostics = [...pluginFailures.optional, ...packFailures.optional];
|
|
178
|
+
for (const diag of load.degradedDiagnostics) {
|
|
179
|
+
load.loadWarnings.push(diag.message);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
load.outcomeFinalized = true;
|
|
183
|
+
}
|
|
184
|
+
/** Primary command-error diagnostic after {@link finalizeFitLoadOutcome}, if any. */
|
|
185
|
+
export function fitLoadCommandError() {
|
|
186
|
+
return currentFitnessLoadState().commandError;
|
|
187
|
+
}
|
|
188
|
+
/** Whether the load finished with optional-only failures (strict degraded). */
|
|
189
|
+
export function fitLoadIsDegraded() {
|
|
190
|
+
return currentFitnessLoadState().loadDegraded === true;
|
|
191
|
+
}
|
|
192
|
+
/** Build the public `ErrorResult` for a fail-closed load outcome. */
|
|
193
|
+
export function fitCommandErrorResult(diagnostic) {
|
|
194
|
+
return {
|
|
195
|
+
type: 'error',
|
|
196
|
+
message: diagnostic.message,
|
|
197
|
+
...(diagnostic.action === undefined ? {} : { suggestion: diagnostic.action }),
|
|
198
|
+
exitCode: EXIT_CODES.RUNTIME_ERROR,
|
|
199
|
+
code: diagnostic.code,
|
|
200
|
+
diagnostic,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=load-outcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-outcome.js","sourceRoot":"","sources":["../../../src/cli/fit/load-outcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolved-fitness-config.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/resolved-fitness-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"resolved-fitness-config.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/resolved-fitness-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,qBAAqB,GAAG,SAAS,CAGzE"}
|
|
@@ -24,11 +24,7 @@
|
|
|
24
24
|
* Host-reserved gate keys added by config's tool-namespace decoration are
|
|
25
25
|
* included here because they are part of the resolved runtime shape.
|
|
26
26
|
*/
|
|
27
|
-
import { currentScope } from '@opensip-cli/core';
|
|
28
|
-
/** A plain-object guard that treats arrays and null as non-objects. */
|
|
29
|
-
function isPlainObject(value) {
|
|
30
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
31
|
-
}
|
|
27
|
+
import { currentScope, isPlainRecord } from '@opensip-cli/core';
|
|
32
28
|
/**
|
|
33
29
|
* Read the resolved `fitness:` block off the current scope's `toolConfig`.
|
|
34
30
|
*
|
|
@@ -43,6 +39,6 @@ function isPlainObject(value) {
|
|
|
43
39
|
*/
|
|
44
40
|
export function resolvedFitnessConfig() {
|
|
45
41
|
const block = currentScope()?.toolConfig?.fitness;
|
|
46
|
-
return
|
|
42
|
+
return isPlainRecord(block) ? block : undefined;
|
|
47
43
|
}
|
|
48
44
|
//# sourceMappingURL=resolved-fitness-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolved-fitness-config.js","sourceRoot":"","sources":["../../../src/cli/fit/resolved-fitness-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"resolved-fitness-config.js","sourceRoot":"","sources":["../../../src/cli/fit/resolved-fitness-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAchE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,KAAK,GAAG,YAAY,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC;IAClD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-builders.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/result-builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,cAAc,EAEnB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"result-builders.d.ts","sourceRoot":"","sources":["../../../src/cli/fit/result-builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,cAAc,EAEnB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,KAAK,EAAE,6BAA6B,EAAgB,MAAM,gCAAgC,CAAC;AAClG,OAAO,KAAK,EAAE,mBAAmB,EAAqB,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CAUvF;AAaD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,eAAe,EAAE,eAAe,GAC/B,cAAc,CAuChB;AAED,qHAAqH;AACrH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,mBAAmB,CAAC;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,QAAQ,GACT,EAAE,wBAAwB,GAAG,eAAe,CAY5C;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACtD,6BAA6B,CA2B/B;AAOD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC"}
|
|
@@ -15,7 +15,6 @@ import { buildSignalEnvelope, } from '@opensip-cli/contracts';
|
|
|
15
15
|
import { currentScope, logger, resolveVerdictPolicy, } from '@opensip-cli/core';
|
|
16
16
|
import { fitnessFingerprintStrategy } from '../../baseline-strategy.js';
|
|
17
17
|
import { violationToSignal } from '../../signalers/violation-to-signal.js';
|
|
18
|
-
import { getPluginLoadErrors } from './check-loader.js';
|
|
19
18
|
import { buildFitVerboseDetail } from './envelope-view.js';
|
|
20
19
|
import { resolvedFitnessConfig } from './resolved-fitness-config.js';
|
|
21
20
|
/**
|
|
@@ -94,10 +93,10 @@ export function buildFitEnvelope(fitnessResult, recipeName, signalersConfig) {
|
|
|
94
93
|
signals,
|
|
95
94
|
// ADR-0035: the host-owned verdict reads fit's resolved
|
|
96
95
|
// failOnErrors/failOnWarnings (scope.toolConfig.fitness, signalersConfig
|
|
97
|
-
// fallback, then {1,0}).
|
|
98
|
-
//
|
|
96
|
+
// fallback, then {1,0}). Setup failures are command-errors before the envelope
|
|
97
|
+
// (ADR-0060) — runFaulted stays false for user-facing envelopes.
|
|
99
98
|
policy: resolveFitVerdictPolicy(signalersConfig),
|
|
100
|
-
runFaulted:
|
|
99
|
+
runFaulted: false,
|
|
101
100
|
// ADR-0036: fit's message-hash identity (line-shift-tolerant), stamped at
|
|
102
101
|
// construction so EVERY fit envelope — live/json/cloud, not only the gate
|
|
103
102
|
// path — carries gate-ready fingerprints.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-builders.js","sourceRoot":"","sources":["../../../src/cli/fit/result-builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,mBAAmB,GAKpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,MAAM,EACN,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"result-builders.js","sourceRoot":"","sources":["../../../src/cli/fit/result-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fit-modes.d.ts","sourceRoot":"","sources":["../../src/cli/fit-modes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fit-modes.d.ts","sourceRoot":"","sources":["../../src/cli/fit-modes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAGL,KAAK,UAAU,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAGvB,MAAM,mBAAmB,CAAC;AAa3B;;;;GAIG;AACH,KAAK,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAsH3D,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BtF;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAuBvC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAiCvC;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAmGvC"}
|