@opensip-cli/fitness 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (576) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +31 -0
  4. package/dist/__tests__/baseline-plane.test.d.ts +12 -0
  5. package/dist/__tests__/baseline-plane.test.d.ts.map +1 -0
  6. package/dist/__tests__/baseline-plane.test.js +63 -0
  7. package/dist/__tests__/baseline-plane.test.js.map +1 -0
  8. package/dist/__tests__/check-utils.test.d.ts +10 -0
  9. package/dist/__tests__/check-utils.test.d.ts.map +1 -0
  10. package/dist/__tests__/check-utils.test.js +193 -0
  11. package/dist/__tests__/check-utils.test.js.map +1 -0
  12. package/dist/__tests__/fingerprint-parity.test.d.ts +14 -0
  13. package/dist/__tests__/fingerprint-parity.test.d.ts.map +1 -0
  14. package/dist/__tests__/fingerprint-parity.test.js +59 -0
  15. package/dist/__tests__/fingerprint-parity.test.js.map +1 -0
  16. package/dist/__tests__/fit-execute-opts.test.d.ts +15 -0
  17. package/dist/__tests__/fit-execute-opts.test.d.ts.map +1 -0
  18. package/dist/__tests__/fit-execute-opts.test.js +124 -0
  19. package/dist/__tests__/fit-execute-opts.test.js.map +1 -0
  20. package/dist/__tests__/public-api.test.d.ts +19 -0
  21. package/dist/__tests__/public-api.test.d.ts.map +1 -0
  22. package/dist/__tests__/public-api.test.js +85 -0
  23. package/dist/__tests__/public-api.test.js.map +1 -0
  24. package/dist/__tests__/tool.test.d.ts +10 -0
  25. package/dist/__tests__/tool.test.d.ts.map +1 -0
  26. package/dist/__tests__/tool.test.js +57 -0
  27. package/dist/__tests__/tool.test.js.map +1 -0
  28. package/dist/baseline-strategy.d.ts +21 -0
  29. package/dist/baseline-strategy.d.ts.map +1 -0
  30. package/dist/baseline-strategy.js +21 -0
  31. package/dist/baseline-strategy.js.map +1 -0
  32. package/dist/check-utils/display.d.ts +52 -0
  33. package/dist/check-utils/display.d.ts.map +1 -0
  34. package/dist/check-utils/display.js +66 -0
  35. package/dist/check-utils/display.js.map +1 -0
  36. package/dist/check-utils/index.d.ts +17 -0
  37. package/dist/check-utils/index.d.ts.map +1 -0
  38. package/dist/check-utils/index.js +13 -0
  39. package/dist/check-utils/index.js.map +1 -0
  40. package/dist/check-utils/path-matching.d.ts +40 -0
  41. package/dist/check-utils/path-matching.d.ts.map +1 -0
  42. package/dist/check-utils/path-matching.js +38 -0
  43. package/dist/check-utils/path-matching.js.map +1 -0
  44. package/dist/check-utils/source-analysis.d.ts +36 -0
  45. package/dist/check-utils/source-analysis.d.ts.map +1 -0
  46. package/dist/check-utils/source-analysis.js +44 -0
  47. package/dist/check-utils/source-analysis.js.map +1 -0
  48. package/dist/check-utils/test-helpers.d.ts +57 -0
  49. package/dist/check-utils/test-helpers.d.ts.map +1 -0
  50. package/dist/check-utils/test-helpers.js +71 -0
  51. package/dist/check-utils/test-helpers.js.map +1 -0
  52. package/dist/cli/__tests__/fit-gate-mode.test.d.ts +14 -0
  53. package/dist/cli/__tests__/fit-gate-mode.test.d.ts.map +1 -0
  54. package/dist/cli/__tests__/fit-gate-mode.test.js +110 -0
  55. package/dist/cli/__tests__/fit-gate-mode.test.js.map +1 -0
  56. package/dist/cli/__tests__/fit-modes-live.test.d.ts +13 -0
  57. package/dist/cli/__tests__/fit-modes-live.test.d.ts.map +1 -0
  58. package/dist/cli/__tests__/fit-modes-live.test.js +182 -0
  59. package/dist/cli/__tests__/fit-modes-live.test.js.map +1 -0
  60. package/dist/cli/__tests__/report-data.test.d.ts +12 -0
  61. package/dist/cli/__tests__/report-data.test.d.ts.map +1 -0
  62. package/dist/cli/__tests__/report-data.test.js +113 -0
  63. package/dist/cli/__tests__/report-data.test.js.map +1 -0
  64. package/dist/cli/fit/__tests__/display-fold.test.d.ts +8 -0
  65. package/dist/cli/fit/__tests__/display-fold.test.d.ts.map +1 -0
  66. package/dist/cli/fit/__tests__/display-fold.test.js +87 -0
  67. package/dist/cli/fit/__tests__/display-fold.test.js.map +1 -0
  68. package/dist/cli/fit/__tests__/gate-resolved-config.test.d.ts +16 -0
  69. package/dist/cli/fit/__tests__/gate-resolved-config.test.d.ts.map +1 -0
  70. package/dist/cli/fit/__tests__/gate-resolved-config.test.js +62 -0
  71. package/dist/cli/fit/__tests__/gate-resolved-config.test.js.map +1 -0
  72. package/dist/cli/fit/check-loader.d.ts +37 -0
  73. package/dist/cli/fit/check-loader.d.ts.map +1 -0
  74. package/dist/cli/fit/check-loader.js +154 -0
  75. package/dist/cli/fit/check-loader.js.map +1 -0
  76. package/dist/cli/fit/config-loader.d.ts +55 -0
  77. package/dist/cli/fit/config-loader.d.ts.map +1 -0
  78. package/dist/cli/fit/config-loader.js +107 -0
  79. package/dist/cli/fit/config-loader.js.map +1 -0
  80. package/dist/cli/fit/display-registry.d.ts +19 -0
  81. package/dist/cli/fit/display-registry.d.ts.map +1 -0
  82. package/dist/cli/fit/display-registry.js +33 -0
  83. package/dist/cli/fit/display-registry.js.map +1 -0
  84. package/dist/cli/fit/envelope-view.d.ts +49 -0
  85. package/dist/cli/fit/envelope-view.d.ts.map +1 -0
  86. package/dist/cli/fit/envelope-view.js +85 -0
  87. package/dist/cli/fit/envelope-view.js.map +1 -0
  88. package/dist/cli/fit/fit-aux-command-specs.d.ts +35 -0
  89. package/dist/cli/fit/fit-aux-command-specs.d.ts.map +1 -0
  90. package/dist/cli/fit/fit-aux-command-specs.js +110 -0
  91. package/dist/cli/fit/fit-aux-command-specs.js.map +1 -0
  92. package/dist/cli/fit/fit-command-spec.d.ts +24 -0
  93. package/dist/cli/fit/fit-command-spec.d.ts.map +1 -0
  94. package/dist/cli/fit/fit-command-spec.js +131 -0
  95. package/dist/cli/fit/fit-command-spec.js.map +1 -0
  96. package/dist/cli/fit/gate-compare-render.d.ts +13 -0
  97. package/dist/cli/fit/gate-compare-render.d.ts.map +1 -0
  98. package/dist/cli/fit/gate-compare-render.js +87 -0
  99. package/dist/cli/fit/gate-compare-render.js.map +1 -0
  100. package/dist/cli/fit/recipe-selector.d.ts +53 -0
  101. package/dist/cli/fit/recipe-selector.d.ts.map +1 -0
  102. package/dist/cli/fit/recipe-selector.js +106 -0
  103. package/dist/cli/fit/recipe-selector.js.map +1 -0
  104. package/dist/cli/fit/recipe-selector.test.d.ts +2 -0
  105. package/dist/cli/fit/recipe-selector.test.d.ts.map +1 -0
  106. package/dist/cli/fit/recipe-selector.test.js +69 -0
  107. package/dist/cli/fit/recipe-selector.test.js.map +1 -0
  108. package/dist/cli/fit/resolved-fitness-config.d.ts +48 -0
  109. package/dist/cli/fit/resolved-fitness-config.d.ts.map +1 -0
  110. package/dist/cli/fit/resolved-fitness-config.js +46 -0
  111. package/dist/cli/fit/resolved-fitness-config.js.map +1 -0
  112. package/dist/cli/fit/result-builders.d.ts +91 -0
  113. package/dist/cli/fit/result-builders.d.ts.map +1 -0
  114. package/dist/cli/fit/result-builders.js +206 -0
  115. package/dist/cli/fit/result-builders.js.map +1 -0
  116. package/dist/cli/fit-list.d.ts +7 -0
  117. package/dist/cli/fit-list.d.ts.map +1 -0
  118. package/dist/cli/fit-list.js +24 -0
  119. package/dist/cli/fit-list.js.map +1 -0
  120. package/dist/cli/fit-modes.d.ts +42 -0
  121. package/dist/cli/fit-modes.d.ts.map +1 -0
  122. package/dist/cli/fit-modes.js +322 -0
  123. package/dist/cli/fit-modes.js.map +1 -0
  124. package/dist/cli/fit-recipes.d.ts +7 -0
  125. package/dist/cli/fit-recipes.d.ts.map +1 -0
  126. package/dist/cli/fit-recipes.js +34 -0
  127. package/dist/cli/fit-recipes.js.map +1 -0
  128. package/dist/cli/fit-runner-views.d.ts +33 -0
  129. package/dist/cli/fit-runner-views.d.ts.map +1 -0
  130. package/dist/cli/fit-runner-views.js +92 -0
  131. package/dist/cli/fit-runner-views.js.map +1 -0
  132. package/dist/cli/fit-runner.d.ts +44 -0
  133. package/dist/cli/fit-runner.d.ts.map +1 -0
  134. package/dist/cli/fit-runner.js +250 -0
  135. package/dist/cli/fit-runner.js.map +1 -0
  136. package/dist/cli/fit-worker.d.ts +26 -0
  137. package/dist/cli/fit-worker.d.ts.map +1 -0
  138. package/dist/cli/fit-worker.js +67 -0
  139. package/dist/cli/fit-worker.js.map +1 -0
  140. package/dist/cli/fit.d.ts +74 -0
  141. package/dist/cli/fit.d.ts.map +1 -0
  142. package/dist/cli/fit.js +149 -0
  143. package/dist/cli/fit.js.map +1 -0
  144. package/dist/cli/report-data.d.ts +44 -0
  145. package/dist/cli/report-data.d.ts.map +1 -0
  146. package/dist/cli/report-data.js +89 -0
  147. package/dist/cli/report-data.js.map +1 -0
  148. package/dist/config/__tests__/fitness-config-schema.test.d.ts +6 -0
  149. package/dist/config/__tests__/fitness-config-schema.test.d.ts.map +1 -0
  150. package/dist/config/__tests__/fitness-config-schema.test.js +37 -0
  151. package/dist/config/__tests__/fitness-config-schema.test.js.map +1 -0
  152. package/dist/config/fitness-config-schema.d.ts +48 -0
  153. package/dist/config/fitness-config-schema.d.ts.map +1 -0
  154. package/dist/config/fitness-config-schema.js +62 -0
  155. package/dist/config/fitness-config-schema.js.map +1 -0
  156. package/dist/framework/__tests__/abortable-exec.test.d.ts +9 -0
  157. package/dist/framework/__tests__/abortable-exec.test.d.ts.map +1 -0
  158. package/dist/framework/__tests__/abortable-exec.test.js +102 -0
  159. package/dist/framework/__tests__/abortable-exec.test.js.map +1 -0
  160. package/dist/framework/__tests__/check-config.test.d.ts +2 -0
  161. package/dist/framework/__tests__/check-config.test.d.ts.map +1 -0
  162. package/dist/framework/__tests__/check-config.test.js +56 -0
  163. package/dist/framework/__tests__/check-config.test.js.map +1 -0
  164. package/dist/framework/__tests__/check-types.test.d.ts +2 -0
  165. package/dist/framework/__tests__/check-types.test.d.ts.map +1 -0
  166. package/dist/framework/__tests__/check-types.test.js +76 -0
  167. package/dist/framework/__tests__/check-types.test.js.map +1 -0
  168. package/dist/framework/__tests__/command-executor.test.d.ts +2 -0
  169. package/dist/framework/__tests__/command-executor.test.d.ts.map +1 -0
  170. package/dist/framework/__tests__/command-executor.test.js +110 -0
  171. package/dist/framework/__tests__/command-executor.test.js.map +1 -0
  172. package/dist/framework/__tests__/content-filter-dispatch.test.d.ts +2 -0
  173. package/dist/framework/__tests__/content-filter-dispatch.test.d.ts.map +1 -0
  174. package/dist/framework/__tests__/content-filter-dispatch.test.js +122 -0
  175. package/dist/framework/__tests__/content-filter-dispatch.test.js.map +1 -0
  176. package/dist/framework/__tests__/define-check.test.d.ts +2 -0
  177. package/dist/framework/__tests__/define-check.test.d.ts.map +1 -0
  178. package/dist/framework/__tests__/define-check.test.js +402 -0
  179. package/dist/framework/__tests__/define-check.test.js.map +1 -0
  180. package/dist/framework/__tests__/define-regex-list-check.test.d.ts +15 -0
  181. package/dist/framework/__tests__/define-regex-list-check.test.d.ts.map +1 -0
  182. package/dist/framework/__tests__/define-regex-list-check.test.js +299 -0
  183. package/dist/framework/__tests__/define-regex-list-check.test.js.map +1 -0
  184. package/dist/framework/__tests__/directive-inventory.test.d.ts +2 -0
  185. package/dist/framework/__tests__/directive-inventory.test.d.ts.map +1 -0
  186. package/dist/framework/__tests__/directive-inventory.test.js +111 -0
  187. package/dist/framework/__tests__/directive-inventory.test.js.map +1 -0
  188. package/dist/framework/__tests__/directive-parsing.test.d.ts +13 -0
  189. package/dist/framework/__tests__/directive-parsing.test.d.ts.map +1 -0
  190. package/dist/framework/__tests__/directive-parsing.test.js +86 -0
  191. package/dist/framework/__tests__/directive-parsing.test.js.map +1 -0
  192. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.d.ts +2 -0
  193. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.d.ts.map +1 -0
  194. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js +56 -0
  195. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js.map +1 -0
  196. package/dist/framework/__tests__/execution-context.test.d.ts +2 -0
  197. package/dist/framework/__tests__/execution-context.test.d.ts.map +1 -0
  198. package/dist/framework/__tests__/execution-context.test.js +140 -0
  199. package/dist/framework/__tests__/execution-context.test.js.map +1 -0
  200. package/dist/framework/__tests__/file-accessor.test.d.ts +2 -0
  201. package/dist/framework/__tests__/file-accessor.test.d.ts.map +1 -0
  202. package/dist/framework/__tests__/file-accessor.test.js +106 -0
  203. package/dist/framework/__tests__/file-accessor.test.js.map +1 -0
  204. package/dist/framework/__tests__/file-cache.test.d.ts +2 -0
  205. package/dist/framework/__tests__/file-cache.test.d.ts.map +1 -0
  206. package/dist/framework/__tests__/file-cache.test.js +122 -0
  207. package/dist/framework/__tests__/file-cache.test.js.map +1 -0
  208. package/dist/framework/__tests__/file-type-filter.test.d.ts +9 -0
  209. package/dist/framework/__tests__/file-type-filter.test.d.ts.map +1 -0
  210. package/dist/framework/__tests__/file-type-filter.test.js +39 -0
  211. package/dist/framework/__tests__/file-type-filter.test.js.map +1 -0
  212. package/dist/framework/__tests__/ignore-processing.test.d.ts +11 -0
  213. package/dist/framework/__tests__/ignore-processing.test.d.ts.map +1 -0
  214. package/dist/framework/__tests__/ignore-processing.test.js +175 -0
  215. package/dist/framework/__tests__/ignore-processing.test.js.map +1 -0
  216. package/dist/framework/__tests__/import-graph.test.d.ts +15 -0
  217. package/dist/framework/__tests__/import-graph.test.d.ts.map +1 -0
  218. package/dist/framework/__tests__/import-graph.test.js +164 -0
  219. package/dist/framework/__tests__/import-graph.test.js.map +1 -0
  220. package/dist/framework/__tests__/memory-profiler.test.d.ts +9 -0
  221. package/dist/framework/__tests__/memory-profiler.test.d.ts.map +1 -0
  222. package/dist/framework/__tests__/memory-profiler.test.js +108 -0
  223. package/dist/framework/__tests__/memory-profiler.test.js.map +1 -0
  224. package/dist/framework/__tests__/parse-cache.test.d.ts +9 -0
  225. package/dist/framework/__tests__/parse-cache.test.d.ts.map +1 -0
  226. package/dist/framework/__tests__/parse-cache.test.js +51 -0
  227. package/dist/framework/__tests__/parse-cache.test.js.map +1 -0
  228. package/dist/framework/__tests__/path-matcher.test.d.ts +2 -0
  229. package/dist/framework/__tests__/path-matcher.test.d.ts.map +1 -0
  230. package/dist/framework/__tests__/path-matcher.test.js +113 -0
  231. package/dist/framework/__tests__/path-matcher.test.js.map +1 -0
  232. package/dist/framework/__tests__/register-helpers.test.d.ts +2 -0
  233. package/dist/framework/__tests__/register-helpers.test.d.ts.map +1 -0
  234. package/dist/framework/__tests__/register-helpers.test.js +51 -0
  235. package/dist/framework/__tests__/register-helpers.test.js.map +1 -0
  236. package/dist/framework/__tests__/registry.test.d.ts +2 -0
  237. package/dist/framework/__tests__/registry.test.d.ts.map +1 -0
  238. package/dist/framework/__tests__/registry.test.js +211 -0
  239. package/dist/framework/__tests__/registry.test.js.map +1 -0
  240. package/dist/framework/__tests__/result-builder.test.d.ts +2 -0
  241. package/dist/framework/__tests__/result-builder.test.d.ts.map +1 -0
  242. package/dist/framework/__tests__/result-builder.test.js +153 -0
  243. package/dist/framework/__tests__/result-builder.test.js.map +1 -0
  244. package/dist/framework/__tests__/scope-registry.test.d.ts +8 -0
  245. package/dist/framework/__tests__/scope-registry.test.d.ts.map +1 -0
  246. package/dist/framework/__tests__/scope-registry.test.js +156 -0
  247. package/dist/framework/__tests__/scope-registry.test.js.map +1 -0
  248. package/dist/framework/__tests__/scope-resolver.golden.test.d.ts +2 -0
  249. package/dist/framework/__tests__/scope-resolver.golden.test.d.ts.map +1 -0
  250. package/dist/framework/__tests__/scope-resolver.golden.test.js +105 -0
  251. package/dist/framework/__tests__/scope-resolver.golden.test.js.map +1 -0
  252. package/dist/framework/__tests__/scope-resolver.test.d.ts +2 -0
  253. package/dist/framework/__tests__/scope-resolver.test.d.ts.map +1 -0
  254. package/dist/framework/__tests__/scope-resolver.test.js +150 -0
  255. package/dist/framework/__tests__/scope-resolver.test.js.map +1 -0
  256. package/dist/framework/__tests__/severity-mapping.test.d.ts +2 -0
  257. package/dist/framework/__tests__/severity-mapping.test.d.ts.map +1 -0
  258. package/dist/framework/__tests__/severity-mapping.test.js +74 -0
  259. package/dist/framework/__tests__/severity-mapping.test.js.map +1 -0
  260. package/dist/framework/__tests__/strip-literals.test.d.ts +2 -0
  261. package/dist/framework/__tests__/strip-literals.test.d.ts.map +1 -0
  262. package/dist/framework/__tests__/strip-literals.test.js +87 -0
  263. package/dist/framework/__tests__/strip-literals.test.js.map +1 -0
  264. package/dist/framework/abortable-exec.d.ts +34 -0
  265. package/dist/framework/abortable-exec.d.ts.map +1 -0
  266. package/dist/framework/abortable-exec.js +143 -0
  267. package/dist/framework/abortable-exec.js.map +1 -0
  268. package/dist/framework/check-config.d.ts +175 -0
  269. package/dist/framework/check-config.d.ts.map +1 -0
  270. package/dist/framework/check-config.js +115 -0
  271. package/dist/framework/check-config.js.map +1 -0
  272. package/dist/framework/check-types.d.ts +82 -0
  273. package/dist/framework/check-types.d.ts.map +1 -0
  274. package/dist/framework/check-types.js +63 -0
  275. package/dist/framework/check-types.js.map +1 -0
  276. package/dist/framework/command-executor.d.ts +25 -0
  277. package/dist/framework/command-executor.d.ts.map +1 -0
  278. package/dist/framework/command-executor.js +63 -0
  279. package/dist/framework/command-executor.js.map +1 -0
  280. package/dist/framework/comment-openers.d.ts +11 -0
  281. package/dist/framework/comment-openers.d.ts.map +1 -0
  282. package/dist/framework/comment-openers.js +11 -0
  283. package/dist/framework/comment-openers.js.map +1 -0
  284. package/dist/framework/constants.d.ts +9 -0
  285. package/dist/framework/constants.d.ts.map +1 -0
  286. package/dist/framework/constants.js +16 -0
  287. package/dist/framework/constants.js.map +1 -0
  288. package/dist/framework/define-check.d.ts +38 -0
  289. package/dist/framework/define-check.d.ts.map +1 -0
  290. package/dist/framework/define-check.js +296 -0
  291. package/dist/framework/define-check.js.map +1 -0
  292. package/dist/framework/define-regex-list-check.d.ts +160 -0
  293. package/dist/framework/define-regex-list-check.d.ts.map +1 -0
  294. package/dist/framework/define-regex-list-check.js +177 -0
  295. package/dist/framework/define-regex-list-check.js.map +1 -0
  296. package/dist/framework/directive-inventory.d.ts +37 -0
  297. package/dist/framework/directive-inventory.d.ts.map +1 -0
  298. package/dist/framework/directive-inventory.js +82 -0
  299. package/dist/framework/directive-inventory.js.map +1 -0
  300. package/dist/framework/directive-parsing.d.ts +23 -0
  301. package/dist/framework/directive-parsing.d.ts.map +1 -0
  302. package/dist/framework/directive-parsing.js +39 -0
  303. package/dist/framework/directive-parsing.js.map +1 -0
  304. package/dist/framework/execution-context.d.ts +98 -0
  305. package/dist/framework/execution-context.d.ts.map +1 -0
  306. package/dist/framework/execution-context.js +145 -0
  307. package/dist/framework/execution-context.js.map +1 -0
  308. package/dist/framework/file-accessor.d.ts +20 -0
  309. package/dist/framework/file-accessor.d.ts.map +1 -0
  310. package/dist/framework/file-accessor.js +122 -0
  311. package/dist/framework/file-accessor.js.map +1 -0
  312. package/dist/framework/file-cache.d.ts +70 -0
  313. package/dist/framework/file-cache.d.ts.map +1 -0
  314. package/dist/framework/file-cache.js +199 -0
  315. package/dist/framework/file-cache.js.map +1 -0
  316. package/dist/framework/file-type-filter.d.ts +11 -0
  317. package/dist/framework/file-type-filter.d.ts.map +1 -0
  318. package/dist/framework/file-type-filter.js +21 -0
  319. package/dist/framework/file-type-filter.js.map +1 -0
  320. package/dist/framework/ignore-processing.d.ts +36 -0
  321. package/dist/framework/ignore-processing.d.ts.map +1 -0
  322. package/dist/framework/ignore-processing.js +172 -0
  323. package/dist/framework/ignore-processing.js.map +1 -0
  324. package/dist/framework/import-graph.d.ts +51 -0
  325. package/dist/framework/import-graph.d.ts.map +1 -0
  326. package/dist/framework/import-graph.js +217 -0
  327. package/dist/framework/import-graph.js.map +1 -0
  328. package/dist/framework/memory-profiler.d.ts +53 -0
  329. package/dist/framework/memory-profiler.d.ts.map +1 -0
  330. package/dist/framework/memory-profiler.js +92 -0
  331. package/dist/framework/memory-profiler.js.map +1 -0
  332. package/dist/framework/parse-cache.d.ts +24 -0
  333. package/dist/framework/parse-cache.d.ts.map +1 -0
  334. package/dist/framework/parse-cache.js +41 -0
  335. package/dist/framework/parse-cache.js.map +1 -0
  336. package/dist/framework/path-matcher.d.ts +86 -0
  337. package/dist/framework/path-matcher.d.ts.map +1 -0
  338. package/dist/framework/path-matcher.js +138 -0
  339. package/dist/framework/path-matcher.js.map +1 -0
  340. package/dist/framework/register-helpers.d.ts +11 -0
  341. package/dist/framework/register-helpers.d.ts.map +1 -0
  342. package/dist/framework/register-helpers.js +19 -0
  343. package/dist/framework/register-helpers.js.map +1 -0
  344. package/dist/framework/registry.d.ts +51 -0
  345. package/dist/framework/registry.d.ts.map +1 -0
  346. package/dist/framework/registry.js +131 -0
  347. package/dist/framework/registry.js.map +1 -0
  348. package/dist/framework/result-builder.d.ts +74 -0
  349. package/dist/framework/result-builder.d.ts.map +1 -0
  350. package/dist/framework/result-builder.js +154 -0
  351. package/dist/framework/result-builder.js.map +1 -0
  352. package/dist/framework/scope-registry.d.ts +38 -0
  353. package/dist/framework/scope-registry.d.ts.map +1 -0
  354. package/dist/framework/scope-registry.js +77 -0
  355. package/dist/framework/scope-registry.js.map +1 -0
  356. package/dist/framework/scope-resolver.d.ts +23 -0
  357. package/dist/framework/scope-resolver.d.ts.map +1 -0
  358. package/dist/framework/scope-resolver.js +102 -0
  359. package/dist/framework/scope-resolver.js.map +1 -0
  360. package/dist/framework/severity-mapping.d.ts +17 -0
  361. package/dist/framework/severity-mapping.d.ts.map +1 -0
  362. package/dist/framework/severity-mapping.js +71 -0
  363. package/dist/framework/severity-mapping.js.map +1 -0
  364. package/dist/framework/strip-literals.d.ts +73 -0
  365. package/dist/framework/strip-literals.d.ts.map +1 -0
  366. package/dist/framework/strip-literals.js +213 -0
  367. package/dist/framework/strip-literals.js.map +1 -0
  368. package/dist/index.d.ts +47 -0
  369. package/dist/index.d.ts.map +1 -0
  370. package/dist/index.js +64 -0
  371. package/dist/index.js.map +1 -0
  372. package/dist/internal.d.ts +17 -0
  373. package/dist/internal.d.ts.map +1 -0
  374. package/dist/internal.js +17 -0
  375. package/dist/internal.js.map +1 -0
  376. package/dist/persistence/session-payload.d.ts +68 -0
  377. package/dist/persistence/session-payload.d.ts.map +1 -0
  378. package/dist/persistence/session-payload.js +78 -0
  379. package/dist/persistence/session-payload.js.map +1 -0
  380. package/dist/persistence/session-payload.test.d.ts +11 -0
  381. package/dist/persistence/session-payload.test.d.ts.map +1 -0
  382. package/dist/persistence/session-payload.test.js +80 -0
  383. package/dist/persistence/session-payload.test.js.map +1 -0
  384. package/dist/persistence/session-replay.d.ts +14 -0
  385. package/dist/persistence/session-replay.d.ts.map +1 -0
  386. package/dist/persistence/session-replay.js +85 -0
  387. package/dist/persistence/session-replay.js.map +1 -0
  388. package/dist/persistence/session-replay.test.d.ts +10 -0
  389. package/dist/persistence/session-replay.test.d.ts.map +1 -0
  390. package/dist/persistence/session-replay.test.js +171 -0
  391. package/dist/persistence/session-replay.test.js.map +1 -0
  392. package/dist/plugins/__tests__/check-package-discovery.test.d.ts +2 -0
  393. package/dist/plugins/__tests__/check-package-discovery.test.d.ts.map +1 -0
  394. package/dist/plugins/__tests__/check-package-discovery.test.js +48 -0
  395. package/dist/plugins/__tests__/check-package-discovery.test.js.map +1 -0
  396. package/dist/plugins/__tests__/lang-domain.test.d.ts +2 -0
  397. package/dist/plugins/__tests__/lang-domain.test.d.ts.map +1 -0
  398. package/dist/plugins/__tests__/lang-domain.test.js +192 -0
  399. package/dist/plugins/__tests__/lang-domain.test.js.map +1 -0
  400. package/dist/plugins/__tests__/loader.test.d.ts +2 -0
  401. package/dist/plugins/__tests__/loader.test.d.ts.map +1 -0
  402. package/dist/plugins/__tests__/loader.test.js +271 -0
  403. package/dist/plugins/__tests__/loader.test.js.map +1 -0
  404. package/dist/plugins/check-package-discovery.d.ts +19 -0
  405. package/dist/plugins/check-package-discovery.d.ts.map +1 -0
  406. package/dist/plugins/check-package-discovery.js +34 -0
  407. package/dist/plugins/check-package-discovery.js.map +1 -0
  408. package/dist/plugins/loader.d.ts +32 -0
  409. package/dist/plugins/loader.d.ts.map +1 -0
  410. package/dist/plugins/loader.js +198 -0
  411. package/dist/plugins/loader.js.map +1 -0
  412. package/dist/plugins/types.d.ts +29 -0
  413. package/dist/plugins/types.d.ts.map +1 -0
  414. package/dist/plugins/types.js +9 -0
  415. package/dist/plugins/types.js.map +1 -0
  416. package/dist/recipes/__tests__/built-in-recipes.test.d.ts +2 -0
  417. package/dist/recipes/__tests__/built-in-recipes.test.d.ts.map +1 -0
  418. package/dist/recipes/__tests__/built-in-recipes.test.js +93 -0
  419. package/dist/recipes/__tests__/built-in-recipes.test.js.map +1 -0
  420. package/dist/recipes/__tests__/check-config.test.d.ts +12 -0
  421. package/dist/recipes/__tests__/check-config.test.d.ts.map +1 -0
  422. package/dist/recipes/__tests__/check-config.test.js +90 -0
  423. package/dist/recipes/__tests__/check-config.test.js.map +1 -0
  424. package/dist/recipes/__tests__/check-resolution.test.d.ts +2 -0
  425. package/dist/recipes/__tests__/check-resolution.test.d.ts.map +1 -0
  426. package/dist/recipes/__tests__/check-resolution.test.js +160 -0
  427. package/dist/recipes/__tests__/check-resolution.test.js.map +1 -0
  428. package/dist/recipes/__tests__/execution-branches.test.d.ts +10 -0
  429. package/dist/recipes/__tests__/execution-branches.test.d.ts.map +1 -0
  430. package/dist/recipes/__tests__/execution-branches.test.js +612 -0
  431. package/dist/recipes/__tests__/execution-branches.test.js.map +1 -0
  432. package/dist/recipes/__tests__/execution-paths.test.d.ts +10 -0
  433. package/dist/recipes/__tests__/execution-paths.test.d.ts.map +1 -0
  434. package/dist/recipes/__tests__/execution-paths.test.js +280 -0
  435. package/dist/recipes/__tests__/execution-paths.test.js.map +1 -0
  436. package/dist/recipes/__tests__/registry.test.d.ts +2 -0
  437. package/dist/recipes/__tests__/registry.test.d.ts.map +1 -0
  438. package/dist/recipes/__tests__/registry.test.js +89 -0
  439. package/dist/recipes/__tests__/registry.test.js.map +1 -0
  440. package/dist/recipes/__tests__/retry.test.d.ts +2 -0
  441. package/dist/recipes/__tests__/retry.test.d.ts.map +1 -0
  442. package/dist/recipes/__tests__/retry.test.js +75 -0
  443. package/dist/recipes/__tests__/retry.test.js.map +1 -0
  444. package/dist/recipes/__tests__/run-one-check.test.d.ts +14 -0
  445. package/dist/recipes/__tests__/run-one-check.test.d.ts.map +1 -0
  446. package/dist/recipes/__tests__/run-one-check.test.js +182 -0
  447. package/dist/recipes/__tests__/run-one-check.test.js.map +1 -0
  448. package/dist/recipes/__tests__/service.test.d.ts +11 -0
  449. package/dist/recipes/__tests__/service.test.d.ts.map +1 -0
  450. package/dist/recipes/__tests__/service.test.js +572 -0
  451. package/dist/recipes/__tests__/service.test.js.map +1 -0
  452. package/dist/recipes/built-in-recipes.d.ts +14 -0
  453. package/dist/recipes/built-in-recipes.d.ts.map +1 -0
  454. package/dist/recipes/built-in-recipes.js +241 -0
  455. package/dist/recipes/built-in-recipes.js.map +1 -0
  456. package/dist/recipes/check-config.d.ts +56 -0
  457. package/dist/recipes/check-config.d.ts.map +1 -0
  458. package/dist/recipes/check-config.js +61 -0
  459. package/dist/recipes/check-config.js.map +1 -0
  460. package/dist/recipes/check-resolution.d.ts +36 -0
  461. package/dist/recipes/check-resolution.d.ts.map +1 -0
  462. package/dist/recipes/check-resolution.js +81 -0
  463. package/dist/recipes/check-resolution.js.map +1 -0
  464. package/dist/recipes/check-result-processor.d.ts +51 -0
  465. package/dist/recipes/check-result-processor.d.ts.map +1 -0
  466. package/dist/recipes/check-result-processor.js +197 -0
  467. package/dist/recipes/check-result-processor.js.map +1 -0
  468. package/dist/recipes/parallel-execution.d.ts +38 -0
  469. package/dist/recipes/parallel-execution.d.ts.map +1 -0
  470. package/dist/recipes/parallel-execution.js +61 -0
  471. package/dist/recipes/parallel-execution.js.map +1 -0
  472. package/dist/recipes/registry.d.ts +47 -0
  473. package/dist/recipes/registry.d.ts.map +1 -0
  474. package/dist/recipes/registry.js +70 -0
  475. package/dist/recipes/registry.js.map +1 -0
  476. package/dist/recipes/retry.d.ts +29 -0
  477. package/dist/recipes/retry.d.ts.map +1 -0
  478. package/dist/recipes/retry.js +23 -0
  479. package/dist/recipes/retry.js.map +1 -0
  480. package/dist/recipes/run-one-check.d.ts +59 -0
  481. package/dist/recipes/run-one-check.d.ts.map +1 -0
  482. package/dist/recipes/run-one-check.js +174 -0
  483. package/dist/recipes/run-one-check.js.map +1 -0
  484. package/dist/recipes/sequential-execution.d.ts +12 -0
  485. package/dist/recipes/sequential-execution.d.ts.map +1 -0
  486. package/dist/recipes/sequential-execution.js +48 -0
  487. package/dist/recipes/sequential-execution.js.map +1 -0
  488. package/dist/recipes/service-types.d.ts +87 -0
  489. package/dist/recipes/service-types.d.ts.map +1 -0
  490. package/dist/recipes/service-types.js +8 -0
  491. package/dist/recipes/service-types.js.map +1 -0
  492. package/dist/recipes/service.d.ts +73 -0
  493. package/dist/recipes/service.d.ts.map +1 -0
  494. package/dist/recipes/service.js +438 -0
  495. package/dist/recipes/service.js.map +1 -0
  496. package/dist/recipes/types.d.ts +155 -0
  497. package/dist/recipes/types.d.ts.map +1 -0
  498. package/dist/recipes/types.js +56 -0
  499. package/dist/recipes/types.js.map +1 -0
  500. package/dist/scaffold/config-block.d.ts +17 -0
  501. package/dist/scaffold/config-block.d.ts.map +1 -0
  502. package/dist/scaffold/config-block.js +30 -0
  503. package/dist/scaffold/config-block.js.map +1 -0
  504. package/dist/scaffold/examples.d.ts +30 -0
  505. package/dist/scaffold/examples.d.ts.map +1 -0
  506. package/dist/scaffold/examples.js +129 -0
  507. package/dist/scaffold/examples.js.map +1 -0
  508. package/dist/scope-augmentation.d.ts +77 -0
  509. package/dist/scope-augmentation.d.ts.map +1 -0
  510. package/dist/scope-augmentation.js +31 -0
  511. package/dist/scope-augmentation.js.map +1 -0
  512. package/dist/signalers/__tests__/loader.test.d.ts +2 -0
  513. package/dist/signalers/__tests__/loader.test.d.ts.map +1 -0
  514. package/dist/signalers/__tests__/loader.test.js +141 -0
  515. package/dist/signalers/__tests__/loader.test.js.map +1 -0
  516. package/dist/signalers/__tests__/violation-to-signal.test.d.ts +2 -0
  517. package/dist/signalers/__tests__/violation-to-signal.test.d.ts.map +1 -0
  518. package/dist/signalers/__tests__/violation-to-signal.test.js +59 -0
  519. package/dist/signalers/__tests__/violation-to-signal.test.js.map +1 -0
  520. package/dist/signalers/index.d.ts +8 -0
  521. package/dist/signalers/index.d.ts.map +1 -0
  522. package/dist/signalers/index.js +9 -0
  523. package/dist/signalers/index.js.map +1 -0
  524. package/dist/signalers/loader.d.ts +30 -0
  525. package/dist/signalers/loader.d.ts.map +1 -0
  526. package/dist/signalers/loader.js +120 -0
  527. package/dist/signalers/loader.js.map +1 -0
  528. package/dist/signalers/schema.d.ts +60 -0
  529. package/dist/signalers/schema.d.ts.map +1 -0
  530. package/dist/signalers/schema.js +74 -0
  531. package/dist/signalers/schema.js.map +1 -0
  532. package/dist/signalers/types.d.ts +13 -0
  533. package/dist/signalers/types.d.ts.map +1 -0
  534. package/dist/signalers/types.js +5 -0
  535. package/dist/signalers/types.js.map +1 -0
  536. package/dist/signalers/violation-to-signal.d.ts +38 -0
  537. package/dist/signalers/violation-to-signal.d.ts.map +1 -0
  538. package/dist/signalers/violation-to-signal.js +43 -0
  539. package/dist/signalers/violation-to-signal.js.map +1 -0
  540. package/dist/targets/__tests__/loader.test.d.ts +2 -0
  541. package/dist/targets/__tests__/loader.test.d.ts.map +1 -0
  542. package/dist/targets/__tests__/loader.test.js +190 -0
  543. package/dist/targets/__tests__/loader.test.js.map +1 -0
  544. package/dist/targets/__tests__/target-registry.test.d.ts +2 -0
  545. package/dist/targets/__tests__/target-registry.test.d.ts.map +1 -0
  546. package/dist/targets/__tests__/target-registry.test.js +182 -0
  547. package/dist/targets/__tests__/target-registry.test.js.map +1 -0
  548. package/dist/targets/index.d.ts +18 -0
  549. package/dist/targets/index.d.ts.map +1 -0
  550. package/dist/targets/index.js +21 -0
  551. package/dist/targets/index.js.map +1 -0
  552. package/dist/targets/loader.d.ts +27 -0
  553. package/dist/targets/loader.d.ts.map +1 -0
  554. package/dist/targets/loader.js +178 -0
  555. package/dist/targets/loader.js.map +1 -0
  556. package/dist/targets/target-registry.d.ts +41 -0
  557. package/dist/targets/target-registry.d.ts.map +1 -0
  558. package/dist/targets/target-registry.js +71 -0
  559. package/dist/targets/target-registry.js.map +1 -0
  560. package/dist/targets/types.d.ts +14 -0
  561. package/dist/targets/types.d.ts.map +1 -0
  562. package/dist/targets/types.js +14 -0
  563. package/dist/targets/types.js.map +1 -0
  564. package/dist/tool.d.ts +61 -0
  565. package/dist/tool.d.ts.map +1 -0
  566. package/dist/tool.js +260 -0
  567. package/dist/tool.js.map +1 -0
  568. package/dist/types/findings.d.ts +113 -0
  569. package/dist/types/findings.d.ts.map +1 -0
  570. package/dist/types/findings.js +89 -0
  571. package/dist/types/findings.js.map +1 -0
  572. package/dist/types/severity.d.ts +15 -0
  573. package/dist/types/severity.d.ts.map +1 -0
  574. package/dist/types/severity.js +33 -0
  575. package/dist/types/severity.js.map +1 -0
  576. package/package.json +137 -0
@@ -0,0 +1,174 @@
1
+ /**
2
+ * @fileoverview Per-check execution lifecycle
3
+ *
4
+ * `runOneCheck` is the single entry point for "run this Check, with its
5
+ * timeout, retry, and abort behavior, and tell me how it ended." Both
6
+ * the parallel and sequential schedulers delegate to it; they keep only
7
+ * the scheduling shape (sliding window vs `for-of` loop).
8
+ *
9
+ * Reconciled abort semantics:
10
+ *
11
+ * The earlier parallel/sequential implementations diverged on how they
12
+ * detected a timeout — parallel inspected `signal.aborted` after the
13
+ * retry resolved; sequential maintained a separate `timedOut` flag
14
+ * mutated by the setTimeout callback. Either signal source is sufficient
15
+ * because the per-check `AbortController` is only aborted by the
16
+ * setTimeout we install here. We keep `signal.aborted` as the canonical
17
+ * shape (it is the controller's own state and survives the retry chain
18
+ * without a closure-scoped flag), and treat any post-retry `aborted`
19
+ * signal as a timeout.
20
+ */
21
+ import { TimeoutError, logger, runWithTimeout, withSpanAsync } from '@opensip-cli/core';
22
+ import { CheckAbortedError } from '../framework/execution-context.js';
23
+ import { memoryProfiler } from '../framework/memory-profiler.js';
24
+ import { processSuccessResult, processErrorResult, } from './check-result-processor.js';
25
+ /** Logger module tag used by every event emitted from per-check execution. */
26
+ const MODULE_TAG = 'fitness:execution';
27
+ // =============================================================================
28
+ // PUBLIC API
29
+ // =============================================================================
30
+ /**
31
+ * Execute one check end-to-end: build the abort controller, install the
32
+ * timeout, run with retry, then dispatch the result to
33
+ * `processSuccessResult` / `processErrorResult` based on the outcome.
34
+ *
35
+ * Schedulers should call this once per check. The returned
36
+ * `shouldStop` field tells the scheduler whether to break out of its
37
+ * loop (e.g. `recipe.execution.stopOnFirstFailure`).
38
+ */
39
+ export async function runOneCheck(check, opts, ctx) {
40
+ const checkId = check.config.id;
41
+ const checkSlug = check.config.slug;
42
+ const checkTimeout = check.config.timeout ?? opts.recipeTimeoutMs;
43
+ const memoryBeforeMB = memoryProfiler.recordCheckStart();
44
+ ctx.callbacks.onCheckStart?.(checkSlug, opts.checkIndex, opts.totalChecks);
45
+ logger.info({
46
+ evt: 'fitness.check.start',
47
+ module: MODULE_TAG,
48
+ checkSlug,
49
+ index: opts.checkIndex,
50
+ total: opts.totalChecks,
51
+ timeoutMs: checkTimeout,
52
+ });
53
+ const targetFiles = opts.checkTargetFiles?.get(checkSlug);
54
+ // Run on the shared execution substrate (release 2.13.0, §5.8): per-check
55
+ // timeout/abort + retry. The single-source abort invariant is preserved by
56
+ // `runWithTimeout` — the controller is aborted ONLY by the timeout — so a
57
+ // `timeout` outcome IS a real timeout, exactly as the former inline
58
+ // AbortController+setTimeout body computed it. `CheckAbortedError` is never
59
+ // retried (the timeout abort surfaces as a `timeout` outcome, not a retry).
60
+ const outcome = await withSpanAsync('opensip-cli-fitness', 'fitness.check.execute', async () => {
61
+ return await runWithTimeout({
62
+ run: (signal) => check.run(opts.cwd, {
63
+ signal,
64
+ ...(targetFiles ? { targetFiles } : {}),
65
+ ...(opts.globalExcludes ? { globalExcludes: opts.globalExcludes } : {}),
66
+ ...(opts.fileCache ? { fileCache: opts.fileCache } : {}),
67
+ }),
68
+ timeoutMs: checkTimeout,
69
+ retry: {
70
+ enabled: opts.retryEnabled,
71
+ maxRetries: opts.maxRetries,
72
+ shouldNotRetry: (error) => error instanceof CheckAbortedError,
73
+ },
74
+ });
75
+ }, {
76
+ 'fitness.check.slug': checkSlug,
77
+ 'fitness.check.id': checkId,
78
+ 'fitness.check.timeout_ms': checkTimeout,
79
+ });
80
+ const { durationMs } = outcome;
81
+ // The result PROCESSING (which fires user callbacks like onCheckComplete) is
82
+ // wrapped so a throw from a callback is recovered into a non-timeout error
83
+ // result — the same recovery the former inline try/catch provided (pinned by
84
+ // run-one-check.test.ts). The unit RUN itself is already classified by
85
+ // `runWithTimeout` above and never throws here.
86
+ try {
87
+ if (outcome.status === 'timeout') {
88
+ logger.info({
89
+ evt: 'fitness.check.timeout',
90
+ module: MODULE_TAG,
91
+ checkSlug,
92
+ durationMs,
93
+ timeoutMs: checkTimeout,
94
+ });
95
+ const processOutput = processErrorResult(ctx, {
96
+ checkId,
97
+ checkSlug,
98
+ checkIndex: opts.checkIndex,
99
+ totalChecks: opts.totalChecks,
100
+ error: new TimeoutError(`Check ${checkId} timed out after ${checkTimeout}ms`, checkTimeout),
101
+ durationMs,
102
+ memoryBeforeMB,
103
+ timedOut: true,
104
+ timeoutMs: checkTimeout,
105
+ });
106
+ return { shouldStop: processOutput.shouldStop, processOutput };
107
+ }
108
+ if (outcome.status === 'error') {
109
+ logger.info({
110
+ evt: 'fitness.check.error',
111
+ module: MODULE_TAG,
112
+ checkSlug,
113
+ durationMs,
114
+ timedOut: false,
115
+ error: outcome.error instanceof Error ? outcome.error.message : String(outcome.error),
116
+ });
117
+ const processOutput = processErrorResult(ctx, {
118
+ checkId,
119
+ checkSlug,
120
+ checkIndex: opts.checkIndex,
121
+ totalChecks: opts.totalChecks,
122
+ error: outcome.error,
123
+ durationMs,
124
+ memoryBeforeMB,
125
+ timedOut: false,
126
+ });
127
+ return { shouldStop: processOutput.shouldStop, processOutput };
128
+ }
129
+ logger.info({
130
+ evt: 'fitness.check.done',
131
+ module: MODULE_TAG,
132
+ checkSlug,
133
+ durationMs,
134
+ signals: outcome.result.signals.length,
135
+ });
136
+ const processOutput = processSuccessResult(ctx, {
137
+ checkId,
138
+ checkSlug,
139
+ tags: check.config.tags ?? [],
140
+ checkIndex: opts.checkIndex,
141
+ totalChecks: opts.totalChecks,
142
+ result: outcome.result,
143
+ durationMs,
144
+ memoryBeforeMB,
145
+ });
146
+ return { shouldStop: processOutput.shouldStop, processOutput };
147
+ }
148
+ catch (error) {
149
+ // A user callback inside the result processing threw. Recover it into an
150
+ // error result — non-timeout unless the unit itself timed out.
151
+ const isTimeout = outcome.status === 'timeout';
152
+ logger.info({
153
+ evt: 'fitness.check.error',
154
+ module: MODULE_TAG,
155
+ checkSlug,
156
+ durationMs,
157
+ timedOut: isTimeout,
158
+ error: error instanceof Error ? error.message : String(error),
159
+ });
160
+ const processOutput = processErrorResult(ctx, {
161
+ checkId,
162
+ checkSlug,
163
+ checkIndex: opts.checkIndex,
164
+ totalChecks: opts.totalChecks,
165
+ error,
166
+ durationMs,
167
+ memoryBeforeMB,
168
+ timedOut: isTimeout,
169
+ ...(isTimeout ? { timeoutMs: checkTimeout } : {}),
170
+ });
171
+ return { shouldStop: processOutput.shouldStop, processOutput };
172
+ }
173
+ }
174
+ //# sourceMappingURL=run-one-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-one-check.js","sourceRoot":"","sources":["../../src/recipes/run-one-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @fileoverview Sequential execution scheduler for fitness recipe checks
3
+ *
4
+ * Runs fitness checks one at a time. Release 2.13.0 (§5.8): the loop + the
5
+ * between-iteration abort check now live in the shared execution substrate
6
+ * (`scheduleUnits`); this file keeps only the fitness setup + the per-check
7
+ * `runOneCheck` body.
8
+ */
9
+ import type { ExecutionOptions, ExecutionServiceContext } from './parallel-execution.js';
10
+ /** Execute fitness checks sequentially with per-check timeouts and retry support */
11
+ export declare function executeSequential(ctx: ExecutionServiceContext, opts: ExecutionOptions): Promise<void>;
12
+ //# sourceMappingURL=sequential-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequential-execution.d.ts","sourceRoot":"","sources":["../../src/recipes/sequential-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAOzF,oFAAoF;AACpF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,uBAAuB,EAC5B,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAsCf"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @fileoverview Sequential execution scheduler for fitness recipe checks
3
+ *
4
+ * Runs fitness checks one at a time. Release 2.13.0 (§5.8): the loop + the
5
+ * between-iteration abort check now live in the shared execution substrate
6
+ * (`scheduleUnits`); this file keeps only the fitness setup + the per-check
7
+ * `runOneCheck` body.
8
+ */
9
+ import { scheduleUnits } from '@opensip-cli/core';
10
+ import { runOneCheck } from './run-one-check.js';
11
+ // =============================================================================
12
+ // SEQUENTIAL EXECUTION
13
+ // =============================================================================
14
+ /** Execute fitness checks sequentially with per-check timeouts and retry support */
15
+ export async function executeSequential(ctx, opts) {
16
+ const { checks, cwd, recipe, checkTargetFiles, globalExcludes } = opts;
17
+ const { session, callbacks, abortController } = ctx;
18
+ const recipeTimeout = recipe.execution.timeout ?? 30_000;
19
+ const totalChecks = checks.length;
20
+ const processorCtx = {
21
+ session,
22
+ callbacks,
23
+ recipe,
24
+ includeViolations: ctx.includeViolations ?? false,
25
+ };
26
+ await scheduleUnits({
27
+ units: checks,
28
+ mode: 'sequential',
29
+ // Interim live-view smoothing (ADR-0028) — see parallel-execution.ts.
30
+ yieldBetweenUnits: true,
31
+ shouldAbort: () => abortController?.signal.aborted === true,
32
+ runUnit: async (check, index) => {
33
+ const outcome = await runOneCheck(check, {
34
+ cwd,
35
+ checkIndex: index + 1,
36
+ totalChecks,
37
+ recipeTimeoutMs: recipeTimeout,
38
+ retryEnabled: recipe.execution.retryOnFailure ?? false,
39
+ maxRetries: recipe.execution.maxRetries ?? 2,
40
+ ...(checkTargetFiles ? { checkTargetFiles } : {}),
41
+ ...(globalExcludes ? { globalExcludes } : {}),
42
+ ...(opts.fileCache ? { fileCache: opts.fileCache } : {}),
43
+ }, processorCtx);
44
+ return { shouldStop: outcome.shouldStop };
45
+ },
46
+ });
47
+ }
48
+ //# sourceMappingURL=sequential-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequential-execution.js","sourceRoot":"","sources":["../../src/recipes/sequential-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMjD,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAA4B,EAC5B,IAAsB;IAEtB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IACvE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;IACpD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAElC,MAAM,YAAY,GAAqB;QACrC,OAAO;QACP,SAAS;QACT,MAAM;QACN,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,IAAI,KAAK;KAClD,CAAC;IAEF,MAAM,aAAa,CAAQ;QACzB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,YAAY;QAClB,sEAAsE;QACtE,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;QAC3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAC/B,KAAK,EACL;gBACE,GAAG;gBACH,UAAU,EAAE,KAAK,GAAG,CAAC;gBACrB,WAAW;gBACX,eAAe,EAAE,aAAa;gBAC9B,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,IAAI,KAAK;gBACtD,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC;gBAC5C,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzD,EACD,YAAY,CACb,CAAC;YACF,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @fileoverview Service-layer type definitions for fitness recipe execution
3
+ *
4
+ * Defines the configuration, session state, and callback types
5
+ * used by FitnessRecipeService and its execution engines.
6
+ */
7
+ import type { FitnessRecipeRegistry } from './registry.js';
8
+ import type { FitnessRecipe, FitnessRecipeResult, RecipeCheckResult, IgnoresByType } from './types.js';
9
+ import type { DirectiveEntry } from '../framework/directive-inventory.js';
10
+ import type { FileCache } from '../framework/file-cache.js';
11
+ import type { CheckMemoryProfile } from '../framework/memory-profiler.js';
12
+ import type { CheckRegistry } from '../framework/registry.js';
13
+ /** Summary of a single check execution for callback reporting */
14
+ export interface CheckSummary {
15
+ readonly checkId: string;
16
+ readonly checkSlug: string;
17
+ readonly passed: boolean;
18
+ readonly errors: number;
19
+ readonly warnings: number;
20
+ readonly durationMs: number;
21
+ readonly filesScanned: number;
22
+ readonly ignoredCount: number;
23
+ readonly memoryProfile: CheckMemoryProfile;
24
+ readonly timedOut?: boolean;
25
+ readonly errorMessage?: string;
26
+ }
27
+ /** Callbacks invoked during recipe execution for progress and errors */
28
+ export interface FitnessRecipeServiceCallbacks {
29
+ onCheckStart?: (checkSlug: string, index: number, total: number) => void;
30
+ onCheckComplete?: (checkSlug: string, summary: CheckSummary, index: number, total: number) => void;
31
+ onError?: (checkSlug: string, error: Error) => void;
32
+ onMemoryWarning?: (checkId: string, profile: CheckMemoryProfile) => void;
33
+ onComplete?: (result: FitnessRecipeResult) => void;
34
+ /** Called before execution with all registered checks for catalog sync. */
35
+ onCatalogSync?: (entries: {
36
+ id: string;
37
+ slug: string;
38
+ tags: readonly string[];
39
+ description: string;
40
+ }[]) => void;
41
+ }
42
+ /** Configuration for the fitness recipe service */
43
+ export interface FitnessRecipeServiceConfig {
44
+ cwd?: string;
45
+ prewarmCache?: boolean;
46
+ prewarmPatterns?: string[];
47
+ callbacks?: FitnessRecipeServiceCallbacks;
48
+ /** Per-check pre-resolved file paths from target overrides. Map of check slug → absolute file paths. */
49
+ checkTargetFiles?: ReadonlyMap<string, readonly string[]>;
50
+ /** Optional check registry (defaults to the current scope's check registry). */
51
+ checkRegistry?: CheckRegistry;
52
+ /** Optional recipe registry (defaults to the current scope's recipe registry). */
53
+ recipeRegistry?: FitnessRecipeRegistry;
54
+ /** Check slugs disabled via opensip.config.yml — these checks are skipped unless force-included by a recipe. */
55
+ disabledChecks?: readonly string[];
56
+ /** When true, carry violation details on RecipeCheckResult. */
57
+ includeViolations?: boolean;
58
+ /**
59
+ * Run-wide file exclusion patterns from `opensip-cli.config.yml`'s
60
+ * top-level `globalExcludes`. Threaded into each check's RunOptions
61
+ * so the matchFiles() fallback honors them — without this, scope-empty
62
+ * checks scan every prewarmed file. Should be the same array passed
63
+ * to `loadTargetsConfig`.
64
+ */
65
+ globalExcludes?: readonly string[];
66
+ /** Optional file cache instance (defaults to a fresh per-service one for SaaS isolation). */
67
+ fileCache?: FileCache;
68
+ }
69
+ /** Mutable session state tracking progress during a recipe execution */
70
+ export interface FitnessRecipeSession {
71
+ readonly sessionId: string;
72
+ readonly recipe: FitnessRecipe;
73
+ readonly startedAt: Date;
74
+ status: 'running' | 'completed' | 'failed';
75
+ totalChecks: number;
76
+ completedChecks: number;
77
+ passedChecks: number;
78
+ failedChecks: number;
79
+ totalErrors: number;
80
+ totalWarnings: number;
81
+ totalIgnored: number;
82
+ ignoresByTag: Map<string, number>;
83
+ checkResults: RecipeCheckResult[];
84
+ ignoreCounts?: IgnoresByType | undefined;
85
+ directives: DirectiveEntry[];
86
+ }
87
+ //# sourceMappingURL=service-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-types.d.ts","sourceRoot":"","sources":["../../src/recipes/service-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @fileoverview Service-layer type definitions for fitness recipe execution
3
+ *
4
+ * Defines the configuration, session state, and callback types
5
+ * used by FitnessRecipeService and its execution engines.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=service-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-types.js","sourceRoot":"","sources":["../../src/recipes/service-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @fileoverview Central orchestrator for fitness recipe execution
3
+ *
4
+ * FitnessRecipeService resolves checks, manages session lifecycle,
5
+ * coordinates parallel/sequential execution, and builds results.
6
+ */
7
+ import { type FitnessRecipe, type FitnessRecipeResult } from './types.js';
8
+ import type { FitnessRecipeServiceCallbacks, FitnessRecipeServiceConfig, FitnessRecipeSession } from './service-types.js';
9
+ /**
10
+ * Central orchestrator for fitness check execution.
11
+ */
12
+ export declare class FitnessRecipeService {
13
+ private readonly config;
14
+ private readonly checkRegistry;
15
+ private readonly recipeRegistry;
16
+ private readonly fileCache;
17
+ private activeSession;
18
+ private abortController?;
19
+ constructor(config?: FitnessRecipeServiceConfig);
20
+ private get session();
21
+ /**
22
+ * Execute a fitness recipe by name or recipe object.
23
+ *
24
+ * Resolves checks, prewarms the file cache, runs checks in parallel or sequential mode,
25
+ * then builds and returns a {@link FitnessRecipeResult}. Only one session can be active
26
+ * at a time — call {@link abort} to cancel a running session.
27
+ *
28
+ * @param recipeOrName - A recipe name (looked up in the recipe registry) or a FitnessRecipe object.
29
+ * @returns The result of the recipe execution including per-check results and summary.
30
+ * @throws {SystemError} If a session is already in progress.
31
+ * @throws {NotFoundError} If the recipe name is not found in the registry.
32
+ */
33
+ start(recipeOrName: FitnessRecipe | string): Promise<FitnessRecipeResult>;
34
+ private executeRecipe;
35
+ private executeRecipeInScope;
36
+ private collectAppliedDirectives;
37
+ private createSession;
38
+ private resolveAndFilterChecks;
39
+ private prepareExecution;
40
+ private buildResult;
41
+ /**
42
+ * Convert CLI arguments to an ad-hoc FitnessRecipe.
43
+ */
44
+ static createAdHocRecipe(args: {
45
+ check?: string;
46
+ tagFilters?: string[];
47
+ file?: string;
48
+ parallel?: boolean;
49
+ json?: boolean;
50
+ unified?: boolean;
51
+ verbose?: boolean;
52
+ retry?: boolean;
53
+ maxRetries?: number;
54
+ maxParallel?: number;
55
+ timeout?: number;
56
+ successThreshold?: number;
57
+ }): FitnessRecipe;
58
+ /** Get the currently active session, or null if no recipe is running. */
59
+ getActiveSession(): FitnessRecipeSession | null;
60
+ /** Abort the currently running recipe execution. No-op if no session is active. */
61
+ abort(): void;
62
+ /** List all available recipes from the recipe registry. */
63
+ listRecipes(): readonly FitnessRecipe[];
64
+ /**
65
+ * Look up a recipe by name or ID.
66
+ * @param nameOrId - The recipe name or full recipe ID (e.g. "default" or "RCP_default").
67
+ * @returns The recipe if found, undefined otherwise.
68
+ */
69
+ getRecipe(nameOrId: string): FitnessRecipe | undefined;
70
+ protected generateSessionId(): string;
71
+ protected get callbacks(): FitnessRecipeServiceCallbacks;
72
+ }
73
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +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,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,MAAM,CAAC,EAAE,0BAA0B;IAc/C,OAAO,KAAK,OAAO,GAOlB;IAED;;;;;;;;;;;OAWG;IAEG,KAAK,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAqBjE,aAAa;YAqBb,oBAAoB;IAkHlC,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"}