@opensip-cli/fitness 0.1.9 → 0.1.11

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 (187) hide show
  1. package/README.md +4 -2
  2. package/dist/__tests__/check-utils.test.js +11 -0
  3. package/dist/__tests__/check-utils.test.js.map +1 -1
  4. package/dist/__tests__/fit-execute-opts.test.js +35 -1
  5. package/dist/__tests__/fit-execute-opts.test.js.map +1 -1
  6. package/dist/__tests__/public-api.test.js +7 -2
  7. package/dist/__tests__/public-api.test.js.map +1 -1
  8. package/dist/__tests__/tool.test.js +18 -9
  9. package/dist/__tests__/tool.test.js.map +1 -1
  10. package/dist/check-utils/check-authoring-helpers.d.ts +14 -0
  11. package/dist/check-utils/check-authoring-helpers.d.ts.map +1 -0
  12. package/dist/check-utils/check-authoring-helpers.js +18 -0
  13. package/dist/check-utils/check-authoring-helpers.js.map +1 -0
  14. package/dist/check-utils/index.d.ts +1 -0
  15. package/dist/check-utils/index.d.ts.map +1 -1
  16. package/dist/check-utils/index.js +1 -0
  17. package/dist/check-utils/index.js.map +1 -1
  18. package/dist/cli/__tests__/fit-fail-closed.test.d.ts +8 -0
  19. package/dist/cli/__tests__/fit-fail-closed.test.d.ts.map +1 -0
  20. package/dist/cli/__tests__/fit-fail-closed.test.js +200 -0
  21. package/dist/cli/__tests__/fit-fail-closed.test.js.map +1 -0
  22. package/dist/cli/__tests__/fit-modes-live.test.js +33 -3
  23. package/dist/cli/__tests__/fit-modes-live.test.js.map +1 -1
  24. package/dist/cli/__tests__/fit-runner.test.d.ts +5 -0
  25. package/dist/cli/__tests__/fit-runner.test.d.ts.map +1 -0
  26. package/dist/cli/__tests__/fit-runner.test.js +145 -0
  27. package/dist/cli/__tests__/fit-runner.test.js.map +1 -0
  28. package/dist/cli/__tests__/report-data.test.js +37 -2
  29. package/dist/cli/__tests__/report-data.test.js.map +1 -1
  30. package/dist/cli/fit/__tests__/envelope-view-table.test.d.ts +2 -0
  31. package/dist/cli/fit/__tests__/envelope-view-table.test.d.ts.map +1 -0
  32. package/dist/cli/fit/__tests__/envelope-view-table.test.js +64 -0
  33. package/dist/cli/fit/__tests__/envelope-view-table.test.js.map +1 -0
  34. package/dist/cli/fit/__tests__/fit-export-command-spec.test.js +5 -2
  35. package/dist/cli/fit/__tests__/fit-export-command-spec.test.js.map +1 -1
  36. package/dist/cli/fit/check-loader.d.ts.map +1 -1
  37. package/dist/cli/fit/check-loader.js +28 -25
  38. package/dist/cli/fit/check-loader.js.map +1 -1
  39. package/dist/cli/fit/envelope-view.d.ts +1 -3
  40. package/dist/cli/fit/envelope-view.d.ts.map +1 -1
  41. package/dist/cli/fit/envelope-view.js +1 -7
  42. package/dist/cli/fit/envelope-view.js.map +1 -1
  43. package/dist/cli/fit/fit-aux-command-specs.d.ts +4 -4
  44. package/dist/cli/fit/fit-aux-command-specs.d.ts.map +1 -1
  45. package/dist/cli/fit/fit-aux-command-specs.js +13 -15
  46. package/dist/cli/fit/fit-aux-command-specs.js.map +1 -1
  47. package/dist/cli/fit/fit-command-spec.d.ts +3 -3
  48. package/dist/cli/fit/fit-command-spec.d.ts.map +1 -1
  49. package/dist/cli/fit/fit-command-spec.js +5 -9
  50. package/dist/cli/fit/fit-command-spec.js.map +1 -1
  51. package/dist/cli/fit/load-outcome.d.ts +24 -0
  52. package/dist/cli/fit/load-outcome.d.ts.map +1 -0
  53. package/dist/cli/fit/load-outcome.js +211 -0
  54. package/dist/cli/fit/load-outcome.js.map +1 -0
  55. package/dist/cli/fit/result-builders.d.ts.map +1 -1
  56. package/dist/cli/fit/result-builders.js +3 -4
  57. package/dist/cli/fit/result-builders.js.map +1 -1
  58. package/dist/cli/fit-modes.d.ts.map +1 -1
  59. package/dist/cli/fit-modes.js +50 -18
  60. package/dist/cli/fit-modes.js.map +1 -1
  61. package/dist/cli/fit-runner-progress.d.ts +0 -2
  62. package/dist/cli/fit-runner-progress.d.ts.map +1 -1
  63. package/dist/cli/fit-runner-progress.js +0 -3
  64. package/dist/cli/fit-runner-progress.js.map +1 -1
  65. package/dist/cli/fit-runner.d.ts +1 -34
  66. package/dist/cli/fit-runner.d.ts.map +1 -1
  67. package/dist/cli/fit-runner.js +90 -241
  68. package/dist/cli/fit-runner.js.map +1 -1
  69. package/dist/cli/fit-worker.d.ts.map +1 -1
  70. package/dist/cli/fit-worker.js +0 -1
  71. package/dist/cli/fit-worker.js.map +1 -1
  72. package/dist/cli/fit.d.ts +1 -0
  73. package/dist/cli/fit.d.ts.map +1 -1
  74. package/dist/cli/fit.js +6 -0
  75. package/dist/cli/fit.js.map +1 -1
  76. package/dist/cli/report-data.d.ts.map +1 -1
  77. package/dist/cli/report-data.js +0 -1
  78. package/dist/cli/report-data.js.map +1 -1
  79. package/dist/framework/__tests__/define-check.test.js +0 -1
  80. package/dist/framework/__tests__/define-check.test.js.map +1 -1
  81. package/dist/framework/__tests__/define-regex-list-check.test.js +15 -0
  82. package/dist/framework/__tests__/define-regex-list-check.test.js.map +1 -1
  83. package/dist/framework/__tests__/scope-registry.test.js +2 -0
  84. package/dist/framework/__tests__/scope-registry.test.js.map +1 -1
  85. package/dist/framework/abortable-exec.d.ts.map +1 -1
  86. package/dist/framework/abortable-exec.js +0 -1
  87. package/dist/framework/abortable-exec.js.map +1 -1
  88. package/dist/framework/check-config.d.ts +0 -8
  89. package/dist/framework/check-config.d.ts.map +1 -1
  90. package/dist/framework/check-config.js +0 -1
  91. package/dist/framework/check-config.js.map +1 -1
  92. package/dist/framework/constants.d.ts.map +1 -1
  93. package/dist/framework/constants.js +0 -1
  94. package/dist/framework/constants.js.map +1 -1
  95. package/dist/framework/define-check.d.ts.map +1 -1
  96. package/dist/framework/define-check.js +0 -1
  97. package/dist/framework/define-check.js.map +1 -1
  98. package/dist/framework/define-regex-list-check.d.ts +6 -0
  99. package/dist/framework/define-regex-list-check.d.ts.map +1 -1
  100. package/dist/framework/define-regex-list-check.js +4 -0
  101. package/dist/framework/define-regex-list-check.js.map +1 -1
  102. package/dist/framework/file-accessor.d.ts.map +1 -1
  103. package/dist/framework/file-accessor.js +0 -4
  104. package/dist/framework/file-accessor.js.map +1 -1
  105. package/dist/framework/file-cache.d.ts +1 -0
  106. package/dist/framework/file-cache.d.ts.map +1 -1
  107. package/dist/framework/file-cache.js +1 -4
  108. package/dist/framework/file-cache.js.map +1 -1
  109. package/dist/framework/import-graph.d.ts.map +1 -1
  110. package/dist/framework/import-graph.js +0 -1
  111. package/dist/framework/import-graph.js.map +1 -1
  112. package/dist/framework/parse-cache.d.ts.map +1 -1
  113. package/dist/framework/parse-cache.js +0 -1
  114. package/dist/framework/parse-cache.js.map +1 -1
  115. package/dist/framework/scope-registry.d.ts.map +1 -1
  116. package/dist/framework/scope-registry.js +7 -1
  117. package/dist/framework/scope-registry.js.map +1 -1
  118. package/dist/framework/severity-mapping.d.ts.map +1 -1
  119. package/dist/framework/severity-mapping.js +0 -1
  120. package/dist/framework/severity-mapping.js.map +1 -1
  121. package/dist/identity.d.ts +11 -0
  122. package/dist/identity.d.ts.map +1 -0
  123. package/dist/identity.js +11 -0
  124. package/dist/identity.js.map +1 -0
  125. package/dist/index.d.ts +1 -1
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +1 -1
  128. package/dist/index.js.map +1 -1
  129. package/dist/plugins/loader.d.ts.map +1 -1
  130. package/dist/plugins/loader.js +2 -1
  131. package/dist/plugins/loader.js.map +1 -1
  132. package/dist/recipes/__tests__/execution-branches.test.d.ts.map +1 -1
  133. package/dist/recipes/__tests__/execution-branches.test.js +0 -1
  134. package/dist/recipes/__tests__/execution-branches.test.js.map +1 -1
  135. package/dist/recipes/__tests__/service.test.d.ts.map +1 -1
  136. package/dist/recipes/__tests__/service.test.js +0 -1
  137. package/dist/recipes/__tests__/service.test.js.map +1 -1
  138. package/dist/recipes/check-result-processor.d.ts.map +1 -1
  139. package/dist/recipes/check-result-processor.js +0 -1
  140. package/dist/recipes/check-result-processor.js.map +1 -1
  141. package/dist/recipes/service-adhoc.d.ts +24 -0
  142. package/dist/recipes/service-adhoc.d.ts.map +1 -0
  143. package/dist/recipes/service-adhoc.js +53 -0
  144. package/dist/recipes/service-adhoc.js.map +1 -0
  145. package/dist/recipes/service-check-resolution.d.ts +18 -0
  146. package/dist/recipes/service-check-resolution.d.ts.map +1 -0
  147. package/dist/recipes/service-check-resolution.js +65 -0
  148. package/dist/recipes/service-check-resolution.js.map +1 -0
  149. package/dist/recipes/service-prepare.d.ts +23 -0
  150. package/dist/recipes/service-prepare.d.ts.map +1 -0
  151. package/dist/recipes/service-prepare.js +30 -0
  152. package/dist/recipes/service-prepare.js.map +1 -0
  153. package/dist/recipes/service-prewarm.d.ts +12 -0
  154. package/dist/recipes/service-prewarm.d.ts.map +1 -0
  155. package/dist/recipes/service-prewarm.js +25 -0
  156. package/dist/recipes/service-prewarm.js.map +1 -0
  157. package/dist/recipes/service-session.d.ts +17 -0
  158. package/dist/recipes/service-session.d.ts.map +1 -0
  159. package/dist/recipes/service-session.js +78 -0
  160. package/dist/recipes/service-session.js.map +1 -0
  161. package/dist/recipes/service.d.ts +2 -19
  162. package/dist/recipes/service.d.ts.map +1 -1
  163. package/dist/recipes/service.js +23 -219
  164. package/dist/recipes/service.js.map +1 -1
  165. package/dist/scaffold/index.d.ts +3 -0
  166. package/dist/scaffold/index.d.ts.map +1 -0
  167. package/dist/scaffold/index.js +3 -0
  168. package/dist/scaffold/index.js.map +1 -0
  169. package/dist/scope-augmentation.d.ts +11 -0
  170. package/dist/scope-augmentation.d.ts.map +1 -1
  171. package/dist/signalers/loader.d.ts.map +1 -1
  172. package/dist/signalers/loader.js +0 -2
  173. package/dist/signalers/loader.js.map +1 -1
  174. package/dist/targets/loader.d.ts.map +1 -1
  175. package/dist/targets/loader.js +0 -2
  176. package/dist/targets/loader.js.map +1 -1
  177. package/dist/tool.d.ts.map +1 -1
  178. package/dist/tool.js +12 -16
  179. package/dist/tool.js.map +1 -1
  180. package/dist/types/severity.d.ts.map +1 -1
  181. package/dist/types/severity.js +0 -1
  182. package/dist/types/severity.js.map +1 -1
  183. package/package.json +27 -16
  184. package/dist/cli/fit-runner-views.d.ts +0 -33
  185. package/dist/cli/fit-runner-views.d.ts.map +0 -1
  186. package/dist/cli/fit-runner-views.js +0 -92
  187. package/dist/cli/fit-runner-views.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-adhoc.js","sourceRoot":"","sources":["../../src/recipes/service-adhoc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAA0C,MAAM,YAAY,CAAC;AAkB1F,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,IAAI,MAAqB,CAAC;IAC1B,IAAI,eAAqC,CAAC;IAE1C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACnC,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,+CAA+C;QAC5D,MAAM;QACN,SAAS,EAAE;YACT,IAAI,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;YACzD,kBAAkB,EAAE,KAAK;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,oBAAoB;YACrD,cAAc,EAAE,IAAI,CAAC,KAAK;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;YAChC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC;QACD,SAAS,EAAE;YACT,MAAM,EAAE,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,IAAI;oBAAE,OAAO,OAAgB,CAAC;gBACxC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,SAAmB,CAAC,CAAC,CAAE,MAAgB,CAAC;YACjE,CAAC,CAAC,EAAE;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;SAC/B;QACD,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview Check resolution and filtering for fitness recipe execution
3
+ *
4
+ * Resolves check slugs from recipe selectors and applies disabled-check filtering.
5
+ */
6
+ import type { FitnessRecipe } from './types.js';
7
+ import type { Check, CheckRegistry } from '../framework/registry.js';
8
+ /** Options for {@link resolveAndFilterChecks}. */
9
+ export interface CheckResolutionOptions {
10
+ /** Check slugs disabled via opensip.config.yml. */
11
+ disabledChecks?: readonly string[];
12
+ }
13
+ /**
14
+ * Resolve checks from a recipe selector and filter out disabled checks.
15
+ * Force-included slugs from `recipe.includeDisabled` bypass the disabled filter.
16
+ */
17
+ export declare function resolveAndFilterChecks(recipe: FitnessRecipe, checkRegistry: CheckRegistry, options: CheckResolutionOptions): Check[];
18
+ //# sourceMappingURL=service-check-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-check-resolution.d.ts","sourceRoot":"","sources":["../../src/recipes/service-check-resolution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIrE,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,sBAAsB,GAC9B,KAAK,EAAE,CAyDT"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @fileoverview Check resolution and filtering for fitness recipe execution
3
+ *
4
+ * Resolves check slugs from recipe selectors and applies disabled-check filtering.
5
+ */
6
+ import { logger, ConfigurationError } from '@opensip-cli/core';
7
+ import { resolveChecks, validateCheckReferences } from './check-resolution.js';
8
+ const MODULE_FITNESS_RECIPES = 'fitness:recipes';
9
+ /**
10
+ * Resolve checks from a recipe selector and filter out disabled checks.
11
+ * Force-included slugs from `recipe.includeDisabled` bypass the disabled filter.
12
+ */
13
+ export function resolveAndFilterChecks(recipe, checkRegistry, options) {
14
+ const checkSlugs = resolveChecks(recipe.checks, checkRegistry);
15
+ let missingExplicitChecks = [];
16
+ // Validate explicit references
17
+ if (recipe.checks.type === 'explicit') {
18
+ const allSlugs = checkRegistry.listSlugs();
19
+ const { missing } = validateCheckReferences(recipe.checks.checkIds, [...allSlugs]);
20
+ missingExplicitChecks = missing;
21
+ if (missing.length > 0) {
22
+ logger.warn(`Recipe references ${missing.length} unknown check(s)`, {
23
+ evt: 'fitness.recipe.checks.missing',
24
+ module: MODULE_FITNESS_RECIPES,
25
+ missing,
26
+ recipeName: recipe.name,
27
+ });
28
+ }
29
+ }
30
+ const configDisabled = new Set(options.disabledChecks);
31
+ const includeDisabledSet = new Set(recipe.includeDisabled);
32
+ const checks = [];
33
+ // Warn about unknown slugs in disabledChecks config
34
+ if (configDisabled.size > 0) {
35
+ const allSlugs = new Set(checkRegistry.listSlugs());
36
+ const unknownDisabled = [...configDisabled].filter((s) => !allSlugs.has(s));
37
+ if (unknownDisabled.length > 0) {
38
+ logger.warn(`disabledChecks references ${unknownDisabled.length} unknown slug(s)`, {
39
+ evt: 'fitness.recipe.disabled.unknown',
40
+ module: MODULE_FITNESS_RECIPES,
41
+ unknownDisabled,
42
+ });
43
+ }
44
+ }
45
+ for (const slug of checkSlugs) {
46
+ const check = checkRegistry.getBySlug(slug);
47
+ if (!check)
48
+ continue;
49
+ const bareSlug = slug.includes(':') ? slug.split(':').pop() : slug;
50
+ const isDisabled = (check.config.disabled ?? false) || configDisabled.has(slug) || configDisabled.has(bareSlug);
51
+ const isForceIncluded = includeDisabledSet.has(slug) || includeDisabledSet.has(bareSlug);
52
+ if (!isDisabled || isForceIncluded) {
53
+ checks.push(check);
54
+ }
55
+ }
56
+ if (recipe.name === 'cli-adhoc' && recipe.checks.type === 'explicit' && checks.length === 0) {
57
+ const requested = missingExplicitChecks[0] ?? recipe.checks.checkIds[0] ?? '(unknown)';
58
+ throw new ConfigurationError(`Unknown check '${requested}'.`, {
59
+ code: 'CONFIG.UNKNOWN_CHECK',
60
+ metadata: { check: requested },
61
+ });
62
+ }
63
+ return checks;
64
+ }
65
+ //# sourceMappingURL=service-check-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-check-resolution.js","sourceRoot":"","sources":["../../src/recipes/service-check-resolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Pre-execution preparation for fitness recipe runs
3
+ *
4
+ * Syncs the check catalog and prewarms the file cache before check execution.
5
+ */
6
+ import type { FitnessRecipeServiceCallbacks } from './service-types.js';
7
+ import type { FileCache } from '../framework/file-cache.js';
8
+ import type { Check, CheckRegistry } from '../framework/registry.js';
9
+ /** Options for {@link prepareRecipeExecution}. */
10
+ export interface PrepareExecutionOptions {
11
+ checks: Check[];
12
+ cwd: string;
13
+ fileCache: FileCache;
14
+ checkRegistry: CheckRegistry;
15
+ callbacks: FitnessRecipeServiceCallbacks;
16
+ prewarmCache?: boolean;
17
+ prewarmPatterns?: string[];
18
+ }
19
+ /**
20
+ * Prepare for check execution: catalog sync, file-cache prewarm, parse-cache init.
21
+ */
22
+ export declare function prepareRecipeExecution(opts: PrepareExecutionOptions): Promise<void>;
23
+ //# sourceMappingURL=service-prepare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-prepare.d.ts","sourceRoot":"","sources":["../../src/recipes/service-prepare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAErE,kDAAkD;AAClD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,6BAA6B,CAAC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @fileoverview Pre-execution preparation for fitness recipe runs
3
+ *
4
+ * Syncs the check catalog and prewarms the file cache before check execution.
5
+ */
6
+ import { initParseCache } from '@opensip-cli/core';
7
+ import { computePrewarmPatterns } from './service-prewarm.js';
8
+ /**
9
+ * Prepare for check execution: catalog sync, file-cache prewarm, parse-cache init.
10
+ */
11
+ export async function prepareRecipeExecution(opts) {
12
+ // Sync check catalog for dashboard visibility
13
+ if (opts.callbacks.onCatalogSync) {
14
+ const entries = opts.checkRegistry.list().map((c) => ({
15
+ id: c.config.id,
16
+ slug: c.config.slug,
17
+ tags: c.config.tags,
18
+ description: c.config.description,
19
+ }));
20
+ void opts.callbacks.onCatalogSync(entries);
21
+ }
22
+ // Prewarm file cache with only the extensions needed by resolved checks
23
+ if (opts.prewarmCache !== false) {
24
+ const patterns = opts.prewarmPatterns ?? computePrewarmPatterns(opts.checks);
25
+ await opts.fileCache.prewarm(opts.cwd, patterns);
26
+ }
27
+ // Initialize shared AST parse cache for cross-check deduplication
28
+ void initParseCache();
29
+ }
30
+ //# sourceMappingURL=service-prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-prepare.js","sourceRoot":"","sources":["../../src/recipes/service-prepare.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAiB9D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAA6B;IACxE,8CAA8C;IAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;YACf,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;YACnB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW;SAClC,CAAC,CAAC,CAAC;QACJ,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,wEAAwE;IACxE,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,kEAAkE;IAClE,KAAK,cAAc,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @fileoverview Prewarm pattern computation for fitness recipe execution
3
+ *
4
+ * Derives glob patterns from resolved checks' fileTypes for file-cache prewarming.
5
+ */
6
+ import type { Check } from '../framework/registry.js';
7
+ /**
8
+ * Compute prewarm glob patterns from the resolved checks' fileTypes.
9
+ * If any check is universal (no fileTypes), falls back to DEFAULT_PREWARM_PATTERNS.
10
+ */
11
+ export declare function computePrewarmPatterns(checks: readonly Check[]): readonly string[];
12
+ //# sourceMappingURL=service-prewarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-prewarm.d.ts","sourceRoot":"","sources":["../../src/recipes/service-prewarm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,MAAM,EAAE,CAalF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @fileoverview Prewarm pattern computation for fitness recipe execution
3
+ *
4
+ * Derives glob patterns from resolved checks' fileTypes for file-cache prewarming.
5
+ */
6
+ import { DEFAULT_PREWARM_PATTERNS } from '../framework/file-cache.js';
7
+ /**
8
+ * Compute prewarm glob patterns from the resolved checks' fileTypes.
9
+ * If any check is universal (no fileTypes), falls back to DEFAULT_PREWARM_PATTERNS.
10
+ */
11
+ export function computePrewarmPatterns(checks) {
12
+ const extensions = new Set();
13
+ for (const check of checks) {
14
+ const ft = check.config.fileTypes;
15
+ if (!ft || ft.length === 0) {
16
+ // Universal check — need all file types
17
+ return DEFAULT_PREWARM_PATTERNS;
18
+ }
19
+ for (const ext of ft) {
20
+ extensions.add(ext);
21
+ }
22
+ }
23
+ return [...extensions].sort().map((ext) => `**/*.${ext}`);
24
+ }
25
+ //# sourceMappingURL=service-prewarm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-prewarm.js","sourceRoot":"","sources":["../../src/recipes/service-prewarm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAItE;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,wCAAwC;YACxC,OAAO,wBAAwB,CAAC;QAClC,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,EAAE,EAAE,CAAC;YACrB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview Session lifecycle helpers for fitness recipe execution
3
+ *
4
+ * Creates session state, collects applied directives, and builds recipe results.
5
+ */
6
+ import type { FitnessRecipeSession } from './service-types.js';
7
+ import type { FitnessRecipe, FitnessRecipeResult } from './types.js';
8
+ import type { DirectiveEntry } from '../framework/directive-inventory.js';
9
+ /** Default success threshold percentage when none is configured. */
10
+ export declare const DEFAULT_SUCCESS_THRESHOLD_PERCENT = 85;
11
+ /** Create initial mutable session state for a recipe run. */
12
+ export declare function createRecipeSession(sessionId: string, recipe: FitnessRecipe): FitnessRecipeSession;
13
+ /** Flatten applied directives from all check results in the session. */
14
+ export declare function collectAppliedDirectives(session: FitnessRecipeSession | null): DirectiveEntry[];
15
+ /** Build the final {@link FitnessRecipeResult} from completed session state. */
16
+ export declare function buildRecipeResult(session: FitnessRecipeSession): FitnessRecipeResult;
17
+ //# sourceMappingURL=service-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-session.d.ts","sourceRoot":"","sources":["../../src/recipes/service-session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAoB,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,oEAAoE;AACpE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD,6DAA6D;AAC7D,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,GACpB,oBAAoB,CAiBtB;AAED,wEAAwE;AACxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,GAAG,cAAc,EAAE,CAW/F;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAuCpF"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * @fileoverview Session lifecycle helpers for fitness recipe execution
3
+ *
4
+ * Creates session state, collects applied directives, and builds recipe results.
5
+ */
6
+ import { passRate } from '@opensip-cli/contracts';
7
+ /** Default success threshold percentage when none is configured. */
8
+ export const DEFAULT_SUCCESS_THRESHOLD_PERCENT = 85;
9
+ /** Create initial mutable session state for a recipe run. */
10
+ export function createRecipeSession(sessionId, recipe) {
11
+ return {
12
+ sessionId,
13
+ recipe,
14
+ startedAt: new Date(),
15
+ status: 'running',
16
+ totalChecks: 0,
17
+ completedChecks: 0,
18
+ passedChecks: 0,
19
+ failedChecks: 0,
20
+ totalErrors: 0,
21
+ totalWarnings: 0,
22
+ totalIgnored: 0,
23
+ ignoresByTag: new Map(),
24
+ checkResults: [],
25
+ directives: [],
26
+ };
27
+ }
28
+ /** Flatten applied directives from all check results in the session. */
29
+ export function collectAppliedDirectives(session) {
30
+ const result = [];
31
+ if (!session)
32
+ return result;
33
+ for (const cr of session.checkResults) {
34
+ if (cr.appliedDirectives) {
35
+ for (const directive of cr.appliedDirectives) {
36
+ result.push(directive);
37
+ }
38
+ }
39
+ }
40
+ return result;
41
+ }
42
+ /** Build the final {@link FitnessRecipeResult} from completed session state. */
43
+ export function buildRecipeResult(session) {
44
+ const completedAt = new Date();
45
+ const summary = {
46
+ totalChecks: session.totalChecks,
47
+ passedChecks: session.passedChecks,
48
+ failedChecks: session.failedChecks,
49
+ skippedChecks: session.totalChecks - session.completedChecks,
50
+ erroredChecks: session.checkResults.filter((r) => r.error !== undefined).length,
51
+ totalViolations: session.checkResults.reduce((sum, r) => sum + r.violationCount, 0),
52
+ totalErrors: session.totalErrors,
53
+ totalWarnings: session.totalWarnings,
54
+ totalIgnored: session.totalIgnored,
55
+ };
56
+ const score = passRate({
57
+ total: session.totalChecks,
58
+ passed: session.passedChecks,
59
+ });
60
+ const result = {
61
+ recipeId: session.recipe.id,
62
+ recipeName: session.recipe.name,
63
+ sessionId: session.sessionId,
64
+ success: score >= (session.recipe.execution.successThreshold ?? DEFAULT_SUCCESS_THRESHOLD_PERCENT) &&
65
+ session.status === 'completed',
66
+ startedAt: session.startedAt,
67
+ completedAt,
68
+ durationMs: completedAt.getTime() - session.startedAt.getTime(),
69
+ checkResults: session.checkResults,
70
+ summary,
71
+ };
72
+ return {
73
+ ...result,
74
+ ...(session.ignoreCounts ? { ignoreCounts: session.ignoreCounts } : {}),
75
+ ...(session.directives.length > 0 ? { directives: session.directives } : {}),
76
+ };
77
+ }
78
+ //# sourceMappingURL=service-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-session.js","sourceRoot":"","sources":["../../src/recipes/service-session.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * FitnessRecipeService resolves checks, manages session lifecycle,
5
5
  * coordinates parallel/sequential execution, and builds results.
6
6
  */
7
+ import { type AdHocRecipeArgs } from './service-adhoc.js';
7
8
  import { type FitnessRecipe, type FitnessRecipeResult } from './types.js';
8
9
  import type { FitnessRecipeServiceCallbacks, FitnessRecipeServiceConfig, FitnessRecipeSession } from './service-types.js';
9
10
  /**
@@ -40,28 +41,10 @@ export declare class FitnessRecipeService {
40
41
  start(recipeOrName: FitnessRecipe | string): Promise<FitnessRecipeResult>;
41
42
  private executeRecipe;
42
43
  private executeRecipeInScope;
43
- private collectAppliedDirectives;
44
- private createSession;
45
- private resolveAndFilterChecks;
46
- private prepareExecution;
47
- private buildResult;
48
44
  /**
49
45
  * Convert CLI arguments to an ad-hoc FitnessRecipe.
50
46
  */
51
- static createAdHocRecipe(args: {
52
- check?: string;
53
- tagFilters?: string[];
54
- file?: string;
55
- parallel?: boolean;
56
- json?: boolean;
57
- unified?: boolean;
58
- verbose?: boolean;
59
- retry?: boolean;
60
- maxRetries?: number;
61
- maxParallel?: number;
62
- timeout?: number;
63
- successThreshold?: number;
64
- }): FitnessRecipe;
47
+ static createAdHocRecipe(args: AdHocRecipeArgs): FitnessRecipe;
65
48
  /** Get the currently active session, or null if no recipe is running. */
66
49
  getActiveSession(): FitnessRecipeSession | null;
67
50
  /** Abort the currently running recipe execution. No-op if no session is active. */
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/recipes/service.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AA6BH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAEzB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AA2B5B;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD;;;;;;OAMG;IACH,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,MAAM,CAAC,EAAE,0BAA0B;IAgB/C,OAAO,KAAK,OAAO,GAOlB;IAED;;;;;;;;;;;OAWG;IAEG,KAAK,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAqBjE,aAAa;YAqBb,oBAAoB;IAqIlC,OAAO,CAAC,wBAAwB;IAchC,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,sBAAsB;YA6DhB,gBAAgB;IAsB9B,OAAO,CAAC,WAAW;IA0CnB;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,aAAa;IA4CjB,yEAAyE;IACzE,gBAAgB,IAAI,oBAAoB,GAAG,IAAI;IAI/C,mFAAmF;IACnF,KAAK,IAAI,IAAI;IAIb,2DAA2D;IAC3D,WAAW,IAAI,SAAS,aAAa,EAAE;IAIvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAItD,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC,SAAS,KAAK,SAAS,IAAI,6BAA6B,CAEvD;CACF"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/recipes/service.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAyBH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQ7E,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,KAAK,EACV,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAI5B;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD;;;;;;OAMG;IACH,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,MAAM,CAAC,EAAE,0BAA0B;IAgB/C,OAAO,KAAK,OAAO,GAOlB;IAED;;;;;;;;;;;OAWG;IACG,KAAK,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAoBjE,aAAa;YAqBb,oBAAoB;IA+IlC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa;IAI9D,yEAAyE;IACzE,gBAAgB,IAAI,oBAAoB,GAAG,IAAI;IAI/C,mFAAmF;IACnF,KAAK,IAAI,IAAI;IAIb,2DAA2D;IAC3D,WAAW,IAAI,SAAS,aAAa,EAAE;IAIvC;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAItD,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAIrC,SAAS,KAAK,SAAS,IAAI,6BAA6B,CAEvD;CACF"}