@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,74 @@
1
+ /**
2
+ * fit command — run fitness checks.
3
+ *
4
+ * Thin orchestrator. `executeFit` sequences the five extracted phases:
5
+ * 1. {@link ensureChecksLoaded} — plugin + check-pack discovery
6
+ * 2. {@link loadFitConfig} — opensip-cli.config.yml parse
7
+ * 3. {@link selectRecipe} — recipe-name lookup vs. ad-hoc
8
+ * 4. {@link validateLanguagesAgainstAdapters} — warn on unknown languages
9
+ * 5. {@link runRecipeOrAdHoc} — drive FitnessRecipeService
10
+ *
11
+ * Each phase lives in a sibling module under `./fit/`:
12
+ * - `fit/check-loader.ts` — discovery + lifecycle singletons
13
+ * - `fit/display-registry.ts` — merged check display map
14
+ * - `fit/config-loader.ts` — config parse + language validation
15
+ * - `fit/recipe-selector.ts` — recipe-pick + run
16
+ * - `fit/result-builders.ts` — SignalEnvelope / FitDoneResult / session persist
17
+ *
18
+ * This file re-exports the public surface (`executeFit`,
19
+ * `ensureChecksLoaded`, and the display accessors) so existing consumers
20
+ * (`opensip-cli`, `report-data.ts`, the fitness `index.ts` barrel) keep
21
+ * resolving the same names.
22
+ */
23
+ import type { FitOptions, SignalEnvelope, FitDoneResult, ErrorResult } from '@opensip-cli/contracts';
24
+ export { ensureChecksLoaded, getEnabledCheckCount, getLoadWarnings, getPluginLoadErrors, } from './fit/check-loader.js';
25
+ export { getDisplayName, getIcon } from './fit/display-registry.js';
26
+ /**
27
+ * Optional dependencies threaded through `executeFit`. Both fields are
28
+ * optional so test harnesses and the JSON/gate paths can call
29
+ * `executeFit(args)` exactly as before.
30
+ *
31
+ * - `onProgress` — wired to `FitnessRecipeService` callbacks; FitView
32
+ * drives the live progress bar from this callback.
33
+ *
34
+ * Persistence is NOT done here (ADR-0028): the engine is worker-safe — it returns
35
+ * the envelope + result and the host persists. The datastore handle cannot cross
36
+ * the worker boundary. The fit modes (json / non-TTY live / gate) RETURN a
37
+ * `ToolSessionContribution` and the host run plane writes the generic session row
38
+ * after the handler resolves (host-owned-run-timing Phase 3); the TTY live runner
39
+ * returns its contribution to the host via `renderLive`.
40
+ */
41
+ export interface ExecuteFitOptions {
42
+ onProgress?: (completed: number, total: number) => void;
43
+ }
44
+ /**
45
+ * Run a fitness session end-to-end. Sequences the phase helpers in this
46
+ * package in a fixed order:
47
+ *
48
+ * 1. `ensureChecksLoaded` — loads check packs and fit-domain plugins
49
+ * (must run first; populates the scope's check + recipe registries
50
+ * for downstream phases).
51
+ * 2. `loadFitConfig` — resolves `signalersConfig` + `targetsConfig`
52
+ * from `opensip-cli.config.yml`. Sequenced before `selectRecipe`
53
+ * so a missing/invalid config surfaces before recipe-name
54
+ * validation — the config tells the user what recipes exist, so
55
+ * the config error is the more useful message of the two.
56
+ * 3. `selectRecipe` — looks up the requested recipe in the scope's
57
+ * recipe registry (populated by step 1). Has a hard
58
+ * precondition on `ensureChecksLoaded`; see its JSDoc.
59
+ * 4. `validateLanguagesAgainstAdapters` — warns on unknown languages.
60
+ * 5. Build scope-based file map → run recipe → build outputs.
61
+ *
62
+ * The phase helpers read from per-run scope state set by step 1
63
+ * (`scope.fitness.load`; see the accessors block in
64
+ * `./fit/check-loader.ts`). The ordering here is the contract that lets
65
+ * those reads be safe.
66
+ */
67
+ export declare function executeFit(args: FitOptions, opts?: ExecuteFitOptions): Promise<{
68
+ result: FitDoneResult;
69
+ envelope: SignalEnvelope;
70
+ } | {
71
+ result: ErrorResult;
72
+ envelope?: undefined;
73
+ }>;
74
+ //# sourceMappingURL=fit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fit.d.ts","sourceRoot":"","sources":["../../src/cli/fit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAcH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAShC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAMpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,UAAU,EAChB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CACN;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAChD,CA8FA"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * fit command — run fitness checks.
3
+ *
4
+ * Thin orchestrator. `executeFit` sequences the five extracted phases:
5
+ * 1. {@link ensureChecksLoaded} — plugin + check-pack discovery
6
+ * 2. {@link loadFitConfig} — opensip-cli.config.yml parse
7
+ * 3. {@link selectRecipe} — recipe-name lookup vs. ad-hoc
8
+ * 4. {@link validateLanguagesAgainstAdapters} — warn on unknown languages
9
+ * 5. {@link runRecipeOrAdHoc} — drive FitnessRecipeService
10
+ *
11
+ * Each phase lives in a sibling module under `./fit/`:
12
+ * - `fit/check-loader.ts` — discovery + lifecycle singletons
13
+ * - `fit/display-registry.ts` — merged check display map
14
+ * - `fit/config-loader.ts` — config parse + language validation
15
+ * - `fit/recipe-selector.ts` — recipe-pick + run
16
+ * - `fit/result-builders.ts` — SignalEnvelope / FitDoneResult / session persist
17
+ *
18
+ * This file re-exports the public surface (`executeFit`,
19
+ * `ensureChecksLoaded`, and the display accessors) so existing consumers
20
+ * (`opensip-cli`, `report-data.ts`, the fitness `index.ts` barrel) keep
21
+ * resolving the same names.
22
+ */
23
+ import { logger } from '@opensip-cli/core';
24
+ import { currentCheckRegistry } from '../framework/scope-registry.js';
25
+ import { buildScopeBasedFileMap } from '../framework/scope-resolver.js';
26
+ import { FitnessRecipeService } from '../recipes/service.js';
27
+ import { ensureChecksLoaded, getLoadWarnings } from './fit/check-loader.js';
28
+ import { loadFitConfig, validateLanguagesAgainstAdapters } from './fit/config-loader.js';
29
+ import { runRecipeOrAdHoc, selectRecipe } from './fit/recipe-selector.js';
30
+ import { resolvedFitnessConfig } from './fit/resolved-fitness-config.js';
31
+ import { buildFitEnvelope, buildFitCallbacks, buildFitDoneResult } from './fit/result-builders.js';
32
+ // ---------------------------------------------------------------------------
33
+ // Re-exports — preserve the public surface that external consumers
34
+ // (`opensip-cli`, `report-data.ts`, fitness's barrel) import from
35
+ // this file. Splitting the implementation under `./fit/` is an internal
36
+ // refactor; the import sites stay on `./fit.js`.
37
+ // ---------------------------------------------------------------------------
38
+ export { ensureChecksLoaded, getEnabledCheckCount, getLoadWarnings, getPluginLoadErrors, } from './fit/check-loader.js';
39
+ export { getDisplayName, getIcon } from './fit/display-registry.js';
40
+ /**
41
+ * Run a fitness session end-to-end. Sequences the phase helpers in this
42
+ * package in a fixed order:
43
+ *
44
+ * 1. `ensureChecksLoaded` — loads check packs and fit-domain plugins
45
+ * (must run first; populates the scope's check + recipe registries
46
+ * for downstream phases).
47
+ * 2. `loadFitConfig` — resolves `signalersConfig` + `targetsConfig`
48
+ * from `opensip-cli.config.yml`. Sequenced before `selectRecipe`
49
+ * so a missing/invalid config surfaces before recipe-name
50
+ * validation — the config tells the user what recipes exist, so
51
+ * the config error is the more useful message of the two.
52
+ * 3. `selectRecipe` — looks up the requested recipe in the scope's
53
+ * recipe registry (populated by step 1). Has a hard
54
+ * precondition on `ensureChecksLoaded`; see its JSDoc.
55
+ * 4. `validateLanguagesAgainstAdapters` — warns on unknown languages.
56
+ * 5. Build scope-based file map → run recipe → build outputs.
57
+ *
58
+ * The phase helpers read from per-run scope state set by step 1
59
+ * (`scope.fitness.load`; see the accessors block in
60
+ * `./fit/check-loader.ts`). The ordering here is the contract that lets
61
+ * those reads be safe.
62
+ */
63
+ export async function executeFit(args, opts = {}) {
64
+ logger.info({ evt: 'cli.checks.loading', module: 'cli:fit' });
65
+ await ensureChecksLoaded(args.cwd);
66
+ const checkRegistry = currentCheckRegistry();
67
+ logger.info({
68
+ evt: 'cli.checks.loaded',
69
+ module: 'cli:fit',
70
+ checkCount: checkRegistry.listEnabled().length,
71
+ });
72
+ const configResult = loadFitConfig(args);
73
+ if ('error' in configResult)
74
+ return { result: configResult.error };
75
+ const { signalersConfig, targetsConfig, targetRegistry } = configResult;
76
+ // ADR-0023, Phase 4: the fitness knobs (recipe + disabledChecks) come from the
77
+ // host-RESOLVED config block (`scope.toolConfig.fitness`), which already folds
78
+ // in flag > env > file > defaults. `signalersConfig` is the fallback when no
79
+ // scope/toolConfig is present (config-less project / unit test).
80
+ const fitnessResolved = resolvedFitnessConfig();
81
+ // Tool-scoped recipe resolution (ADR-0022): explicit --recipe > fitness.recipe
82
+ // > built-in default. The fitness.recipe default comes from the resolved scope
83
+ // block when available.
84
+ const recipePick = selectRecipe(args, {
85
+ toolRecipe: fitnessResolved?.recipe ?? signalersConfig.fitness.recipe,
86
+ });
87
+ if ('error' in recipePick)
88
+ return { result: recipePick.error };
89
+ const { recipeName } = recipePick;
90
+ const validationWarnings = await validateLanguagesAgainstAdapters(targetRegistry);
91
+ const allChecks = checkRegistry.listSlugs().map((key) => {
92
+ const check = checkRegistry.getBySlug(key);
93
+ return { slug: check?.config.slug ?? key, scope: check?.config.checkScope };
94
+ });
95
+ const scopeMap = buildScopeBasedFileMap(allChecks, targetRegistry, targetsConfig, args.cwd);
96
+ const checkTargetFiles = scopeMap.size > 0 ? scopeMap : undefined;
97
+ // CLI --exclude (and any config-level per-run exclude) are additive runtime filters for this invocation.
98
+ // They are merged into disabledChecks so the recipe service skips them exactly as permanently-disabled checks.
99
+ // This makes the documented --exclude flag actually affect execution and the gate.
100
+ const runtimeExcludes = [
101
+ ...(fitnessResolved?.disabledChecks ?? []),
102
+ ...(signalersConfig.fitness.disabledChecks ?? []),
103
+ ...(args.exclude ?? []),
104
+ ];
105
+ const service = new FitnessRecipeService({
106
+ cwd: args.cwd,
107
+ checkTargetFiles,
108
+ callbacks: buildFitCallbacks(opts.onProgress),
109
+ disabledChecks: runtimeExcludes,
110
+ includeViolations: true,
111
+ globalExcludes: targetsConfig.globalExcludes,
112
+ });
113
+ const fitResultOrError = await runRecipeOrAdHoc(service, args, recipeName);
114
+ if ('error' in fitResultOrError)
115
+ return { result: fitResultOrError.error };
116
+ const fitnessResult = fitResultOrError;
117
+ // ADR-0011: the run's signal envelope is the canonical post-run transform —
118
+ // the universal output currency the composition root renders, emits
119
+ // (`--json`), and delivers (cloud + `--report-to`). Cloud egress no longer
120
+ // happens here: the root's `deliverSignals` owns it (engines dropped their
121
+ // `@opensip-cli/output` dependency in Phase 6).
122
+ const envelope = buildFitEnvelope(fitnessResult, recipeName, signalersConfig);
123
+ // Collect warnings from check loading (ensureChecksLoaded → loadWarnings)
124
+ // and from config validation (validateLanguagesAgainstAdapters). Both flow
125
+ // through the result rather than direct stderr writes so the live renderer
126
+ // can surface them without breaking Ink's frame tracking.
127
+ const warnings = [...getLoadWarnings(), ...validationWarnings];
128
+ const result = buildFitDoneResult({
129
+ args,
130
+ fitnessResult,
131
+ envelope,
132
+ signalersConfig,
133
+ recipeName,
134
+ warnings,
135
+ });
136
+ logger.info({
137
+ evt: 'cli.fit.complete',
138
+ module: 'cli:fit',
139
+ score: envelope.verdict.score,
140
+ passed: fitnessResult.success,
141
+ totalChecks: fitnessResult.summary.totalChecks,
142
+ durationMs: fitnessResult.durationMs,
143
+ });
144
+ return {
145
+ result,
146
+ envelope,
147
+ };
148
+ }
149
+ //# sourceMappingURL=fit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fit.js","sourceRoot":"","sources":["../../src/cli/fit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * report-data contribution — fitness's inputs to the cross-tool HTML
3
+ * report.
4
+ *
5
+ * Audit 2026-05-29 (L2): the CLI is now the report composition root.
6
+ * Fitness no longer loads sessions, the graph catalog, writes the file,
7
+ * or opens the browser. It just returns ITS OWN dashboard inputs (the
8
+ * check + recipe catalogs and the editor protocol) keyed by the field
9
+ * names `generateDashboardHtml` consumes. The CLI walks every tool's
10
+ * `collectReportData` and merges the contributions into one
11
+ * `DashboardInput`. This decouples fitness from graph entirely.
12
+ */
13
+ import type { ToolScope } from '@opensip-cli/core';
14
+ /** Check catalog entry for dashboard display. */
15
+ export interface CheckCatalogEntry {
16
+ readonly slug: string;
17
+ readonly name: string;
18
+ readonly icon: string;
19
+ readonly description: string;
20
+ readonly longDescription?: string;
21
+ readonly tags: readonly string[];
22
+ readonly confidence: 'high' | 'medium' | 'low';
23
+ readonly source: 'built-in' | 'community';
24
+ }
25
+ /** Recipe catalog entry for dashboard display. */
26
+ export interface RecipeCatalogEntry {
27
+ readonly name: string;
28
+ readonly displayName: string;
29
+ readonly description: string;
30
+ readonly tags: readonly string[];
31
+ readonly selectorType: string;
32
+ readonly mode: string;
33
+ readonly timeout: number;
34
+ }
35
+ /**
36
+ * Fitness's report-data contribution (audit 2026-05-29, L2). Returns
37
+ * the check catalog, recipe catalog, and editor protocol under the keys
38
+ * `generateDashboardHtml` consumes. Best-effort: a missing signalers
39
+ * config degrades the editor protocol to null; catalog building always
40
+ * succeeds once checks are loaded. The CLI merges this onto the shared
41
+ * `DashboardInput` alongside other tools' contributions.
42
+ */
43
+ export declare function collectFitnessReportData(scope: ToolScope): Promise<Record<string, unknown>>;
44
+ //# sourceMappingURL=report-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-data.d.ts","sourceRoot":"","sources":["../../src/cli/report-data.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAanD,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAAC;CAC3C;AAED,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAwCD;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkCjG"}
@@ -0,0 +1,89 @@
1
+ // @fitness-ignore-file error-handling-quality -- report-data collection is a best-effort UX action: signalers-config load failures degrade gracefully to ungoverned mode (surfaced separately by the fitness run). The CLI composition root owns file-writing and browser launch; this module only contributes fitness's catalog inputs.
2
+ /**
3
+ * report-data contribution — fitness's inputs to the cross-tool HTML
4
+ * report.
5
+ *
6
+ * Audit 2026-05-29 (L2): the CLI is now the report composition root.
7
+ * Fitness no longer loads sessions, the graph catalog, writes the file,
8
+ * or opens the browser. It just returns ITS OWN dashboard inputs (the
9
+ * check + recipe catalogs and the editor protocol) keyed by the field
10
+ * names `generateDashboardHtml` consumes. The CLI walks every tool's
11
+ * `collectReportData` and merges the contributions into one
12
+ * `DashboardInput`. This decouples fitness from graph entirely.
13
+ */
14
+ import { currentCheckRegistry, currentRecipeRegistry } from '../framework/scope-registry.js';
15
+ import { loadSignalersConfig } from '../signalers/index.js';
16
+ import { ensureChecksLoaded, getDisplayName, getIcon } from './fit.js';
17
+ // ---------------------------------------------------------------------------
18
+ // collectFitnessReportData
19
+ // ---------------------------------------------------------------------------
20
+ /**
21
+ * "built-in" vs "community" classification for the dashboard catalog.
22
+ * Anything registered under the @opensip-cli/ scope is first-party;
23
+ * anything else (loose plugin file, third-party npm package) is
24
+ * community. We no longer match a single magic package name — the
25
+ * scope rule keeps working when checks-builtin is split into multiple
26
+ * first-party packages (checks-typescript, checks-universal, etc).
27
+ */
28
+ const FIRST_PARTY_SCOPE = '@opensip-cli/';
29
+ function classifyCheckSource(namespace) {
30
+ return namespace?.startsWith(FIRST_PARTY_SCOPE) ? 'built-in' : 'community';
31
+ }
32
+ /**
33
+ * Read the project's `dashboard.editor` value (if any) via the shared
34
+ * signalers loader. The Code Paths panel embeds it as a JS constant so
35
+ * the Function Card can produce vscode://, cursor://, etc. deep links.
36
+ *
37
+ * Returns `null` when no config file exists or the value is unset —
38
+ * the dashboard renders without a deep-link editor protocol in that
39
+ * case (graceful degradation; the panel falls back to plain paths).
40
+ */
41
+ function loadEditorProtocol(projectDir) {
42
+ try {
43
+ const config = loadSignalersConfig(projectDir ?? process.cwd());
44
+ return config.dashboard?.editor ?? null;
45
+ }
46
+ catch {
47
+ // No config / parse error — dashboard runs ungoverned. The fitness
48
+ // run itself surfaces a config-load failure separately.
49
+ return null;
50
+ }
51
+ }
52
+ /**
53
+ * Fitness's report-data contribution (audit 2026-05-29, L2). Returns
54
+ * the check catalog, recipe catalog, and editor protocol under the keys
55
+ * `generateDashboardHtml` consumes. Best-effort: a missing signalers
56
+ * config degrades the editor protocol to null; catalog building always
57
+ * succeeds once checks are loaded. The CLI merges this onto the shared
58
+ * `DashboardInput` alongside other tools' contributions.
59
+ */
60
+ export async function collectFitnessReportData(scope) {
61
+ const projectDir = scope.projectContext?.projectRoot;
62
+ await ensureChecksLoaded(projectDir);
63
+ const checkRegistry = currentCheckRegistry();
64
+ const checkCatalog = checkRegistry.list().map((check) => {
65
+ const namespace = checkRegistry.getNamespace(check.config.slug);
66
+ return {
67
+ slug: check.config.slug,
68
+ name: getDisplayName(check.config.slug),
69
+ icon: getIcon(check.config.slug),
70
+ description: check.config.description,
71
+ longDescription: check.config.longDescription,
72
+ tags: [...(check.config.tags ?? [])],
73
+ confidence: check.config.confidence ?? 'medium',
74
+ source: classifyCheckSource(namespace),
75
+ };
76
+ });
77
+ const recipeCatalog = [...currentRecipeRegistry().getAllRecipes()].map((r) => ({
78
+ name: r.name,
79
+ displayName: r.displayName,
80
+ description: r.description,
81
+ tags: [...(r.tags ?? [])],
82
+ selectorType: r.checks.type,
83
+ mode: r.execution.mode,
84
+ timeout: r.execution.timeout ?? 30_000,
85
+ }));
86
+ const editorProtocol = loadEditorProtocol(projectDir);
87
+ return { checkCatalog, recipeCatalog, editorProtocol };
88
+ }
89
+ //# sourceMappingURL=report-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-data.js","sourceRoot":"","sources":["../../src/cli/report-data.ts"],"names":[],"mappings":"AAAA,yUAAyU;AACzU;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAsCvE,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C,SAAS,mBAAmB,CAAC,SAA6B;IACxD,OAAO,SAAS,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,UAAmB;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;QACnE,wDAAwD;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAAgB;IAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC;IACrD,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAErC,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAwB,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3E,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChE,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YACvB,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACvC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAChC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;YACrC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;YAC7C,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACpC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,QAAQ;YAC/C,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAyB,CAAC,GAAG,qBAAqB,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAC1F,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;QAC3B,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI;QACtB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,IAAI,MAAM;KACvC,CAAC,CACH,CAAC;IAEF,MAAM,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEtD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Unit tests for the fitness namespace config schema.
3
+ * The schema validates the `fitness:` block; the composer adds `.strict()`.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=fitness-config-schema.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fitness-config-schema.test.d.ts","sourceRoot":"","sources":["../../../src/config/__tests__/fitness-config-schema.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Unit tests for the fitness namespace config schema.
3
+ * The schema validates the `fitness:` block; the composer adds `.strict()`.
4
+ */
5
+ import { describe, expect, it } from 'vitest';
6
+ import { FITNESS_CONFIG_DEFAULTS, FitnessNamespaceSchema, fitnessConfigDeclaration, } from '../fitness-config-schema.js';
7
+ describe('FitnessNamespaceSchema', () => {
8
+ it('accepts a well-formed fitness block', () => {
9
+ const parsed = FitnessNamespaceSchema.parse({
10
+ failOnErrors: 1,
11
+ failOnWarnings: 0,
12
+ disabledChecks: ['some-check'],
13
+ recipe: 'backend',
14
+ });
15
+ expect(parsed.failOnErrors).toBe(1);
16
+ expect(parsed.disabledChecks).toEqual(['some-check']);
17
+ expect(parsed.recipe).toBe('backend');
18
+ });
19
+ it('accepts an empty block (all knobs optional)', () => {
20
+ expect(FitnessNamespaceSchema.parse({})).toEqual({});
21
+ });
22
+ it('rejects a negative failOnErrors', () => {
23
+ expect(FitnessNamespaceSchema.safeParse({ failOnErrors: -1 }).success).toBe(false);
24
+ });
25
+ it('rejects a non-string disabledChecks entry', () => {
26
+ expect(FitnessNamespaceSchema.safeParse({ disabledChecks: [3] }).success).toBe(false);
27
+ });
28
+ it('rejects an unknown key once strict (composer behaviour)', () => {
29
+ const strict = FitnessNamespaceSchema.strict();
30
+ expect(strict.safeParse({ faliOnErrors: 1 }).success).toBe(false);
31
+ });
32
+ it('declares namespace fitness with shared defaults', () => {
33
+ expect(fitnessConfigDeclaration.namespace).toBe('fitness');
34
+ expect(fitnessConfigDeclaration.defaults).toEqual(FITNESS_CONFIG_DEFAULTS);
35
+ });
36
+ });
37
+ //# sourceMappingURL=fitness-config-schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fitness-config-schema.test.js","sourceRoot":"","sources":["../../../src/config/__tests__/fitness-config-schema.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAErC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC;YAC1C,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC,YAAY,CAAC;YAC9B,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * fitness-config-schema — the fitness tool's namespaced Zod config schema.
3
+ *
4
+ * Describes the `fitness:` top-level block of `opensip-cli.config.yml` —
5
+ * the knobs fitness owns: gate thresholds (`failOnErrors`/`failOnWarnings`),
6
+ * the `disabledChecks` list, the tool-scoped `recipe` default, and the
7
+ * scheduling/targeting knobs (`defaultTarget`/`maxParallel`/`timeout`).
8
+ *
9
+ * This is the single field definition for the `fitness:` namespace. The host's
10
+ * composed config resolver uses it directly, and the older whole-document
11
+ * `SignalersConfigSchema` reuses it with parser defaults while it still owns
12
+ * shared targeting sections (`targets`/`globalExcludes`/`checkOverrides`).
13
+ *
14
+ * Defaults live on the {@link ToolConfigDeclaration} (`failOnErrors: 1`,
15
+ * `failOnWarnings: 0`, `disabledChecks: []`) — the lowest-precedence source
16
+ * the resolver merges — rather than as Zod `.default(...)` so the composed
17
+ * namespace schema validates a user document without injecting values.
18
+ */
19
+ import { z } from 'zod';
20
+ import type { ToolConfigDeclaration } from '@opensip-cli/config';
21
+ /** Defaults for fitness-owned config keys. */
22
+ export declare const FITNESS_CONFIG_DEFAULTS: {
23
+ readonly failOnErrors: 1;
24
+ readonly failOnWarnings: 0;
25
+ readonly disabledChecks: readonly [];
26
+ };
27
+ /**
28
+ * Zod object for the `fitness:` namespace. Every field optional so a config
29
+ * that omits the block (or any individual knob) is valid; the declaration's
30
+ * `defaults` supply the effective values.
31
+ */
32
+ export declare const FitnessNamespaceSchema: z.ZodObject<{
33
+ defaultTarget: z.ZodOptional<z.ZodString>;
34
+ maxParallel: z.ZodOptional<z.ZodNumber>;
35
+ timeout: z.ZodOptional<z.ZodNumber>;
36
+ failOnErrors: z.ZodOptional<z.ZodNumber>;
37
+ failOnWarnings: z.ZodOptional<z.ZodNumber>;
38
+ disabledChecks: z.ZodOptional<z.ZodArray<z.ZodString>>;
39
+ recipe: z.ZodOptional<z.ZodString>;
40
+ }, z.core.$strip>;
41
+ /**
42
+ * The fitness tool's contribution to the composed configuration document.
43
+ * `namespace: 'fitness'`; the composer makes it strict (typo-rejecting) and
44
+ * optional. Defaults mirror the historical `SignalersConfigSchema` fitness
45
+ * defaults so the resolved config matches the established behaviour.
46
+ */
47
+ export declare const fitnessConfigDeclaration: ToolConfigDeclaration;
48
+ //# sourceMappingURL=fitness-config-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fitness-config-schema.d.ts","sourceRoot":"","sources":["../../src/config/fitness-config-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB;;;;CAI1B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;iBAejC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,qBAQtC,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * fitness-config-schema — the fitness tool's namespaced Zod config schema.
3
+ *
4
+ * Describes the `fitness:` top-level block of `opensip-cli.config.yml` —
5
+ * the knobs fitness owns: gate thresholds (`failOnErrors`/`failOnWarnings`),
6
+ * the `disabledChecks` list, the tool-scoped `recipe` default, and the
7
+ * scheduling/targeting knobs (`defaultTarget`/`maxParallel`/`timeout`).
8
+ *
9
+ * This is the single field definition for the `fitness:` namespace. The host's
10
+ * composed config resolver uses it directly, and the older whole-document
11
+ * `SignalersConfigSchema` reuses it with parser defaults while it still owns
12
+ * shared targeting sections (`targets`/`globalExcludes`/`checkOverrides`).
13
+ *
14
+ * Defaults live on the {@link ToolConfigDeclaration} (`failOnErrors: 1`,
15
+ * `failOnWarnings: 0`, `disabledChecks: []`) — the lowest-precedence source
16
+ * the resolver merges — rather than as Zod `.default(...)` so the composed
17
+ * namespace schema validates a user document without injecting values.
18
+ */
19
+ import { z } from 'zod';
20
+ /** Defaults for fitness-owned config keys. */
21
+ export const FITNESS_CONFIG_DEFAULTS = {
22
+ failOnErrors: 1,
23
+ failOnWarnings: 0,
24
+ disabledChecks: [],
25
+ };
26
+ /**
27
+ * Zod object for the `fitness:` namespace. Every field optional so a config
28
+ * that omits the block (or any individual knob) is valid; the declaration's
29
+ * `defaults` supply the effective values.
30
+ */
31
+ export const FitnessNamespaceSchema = z.object({
32
+ /** Named target a bare `fit` run scopes to when no `--target` is given. */
33
+ defaultTarget: z.string().min(1).max(255).optional(),
34
+ /** Max checks evaluated in parallel. */
35
+ maxParallel: z.number().int().min(1).optional(),
36
+ /** Per-check timeout in milliseconds. */
37
+ timeout: z.number().int().min(1000).optional(),
38
+ /** Gate: fail when total errors >= this (0 = never fail on errors). */
39
+ failOnErrors: z.number().int().min(0).optional(),
40
+ /** Gate: fail when total warnings >= this (0 = never fail on warnings). */
41
+ failOnWarnings: z.number().int().min(0).optional(),
42
+ /** Slugs disabled project-wide. */
43
+ disabledChecks: z.array(z.string().min(1).max(255)).optional(),
44
+ /** Tool-scoped default recipe for `fit` runs (ADR-0022). */
45
+ recipe: z.string().min(1).max(128).optional(),
46
+ });
47
+ /**
48
+ * The fitness tool's contribution to the composed configuration document.
49
+ * `namespace: 'fitness'`; the composer makes it strict (typo-rejecting) and
50
+ * optional. Defaults mirror the historical `SignalersConfigSchema` fitness
51
+ * defaults so the resolved config matches the established behaviour.
52
+ */
53
+ export const fitnessConfigDeclaration = {
54
+ namespace: 'fitness',
55
+ schema: FitnessNamespaceSchema,
56
+ defaults: FITNESS_CONFIG_DEFAULTS,
57
+ env: [
58
+ { envVar: 'OPENSIP_FIT_FAIL_ON_ERRORS', key: 'failOnErrors', type: 'number' },
59
+ { envVar: 'OPENSIP_FIT_FAIL_ON_WARNINGS', key: 'failOnWarnings', type: 'number' },
60
+ ],
61
+ };
62
+ //# sourceMappingURL=fitness-config-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fitness-config-schema.js","sourceRoot":"","sources":["../../src/config/fitness-config-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,8CAA8C;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,EAAE;CACV,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,2EAA2E;IAC3E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACpD,wCAAwC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,yCAAyC;IACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAC9C,uEAAuE;IACvE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,2EAA2E;IAC3E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClD,mCAAmC;IACnC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9D,4DAA4D;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA0B;IAC7D,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,sBAAsB;IAC9B,QAAQ,EAAE,uBAAuB;IACjC,GAAG,EAAE;QACH,EAAE,MAAM,EAAE,4BAA4B,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7E,EAAE,MAAM,EAAE,8BAA8B,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;KAClF;CACF,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @fileoverview Tests for execAbortable.
3
+ *
4
+ * Covers the array and shell modes, abort signal handling (pre-spawn
5
+ * and during execution), timeout, and error paths (empty array,
6
+ * spawn failure).
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=abortable-exec.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abortable-exec.test.d.ts","sourceRoot":"","sources":["../../../src/framework/__tests__/abortable-exec.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}