@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,47 @@
1
+ /**
2
+ * @opensip-cli/fitness — public barrel.
3
+ *
4
+ * This barrel is the **marketplace contract surface** for the fitness tool:
5
+ * the check / recipe / plugin authoring API plus the `fitnessTool` plugin
6
+ * descriptor. It is deliberately curated to match
7
+ * `docs/public/10-concepts/04-contract-surfaces.md` — a check pack depends
8
+ * only on what is exported here.
9
+ *
10
+ * Engine internals — registries, the recipe service, `ExecutionContext`,
11
+ * targets/signalers config, the plugin loader, check-package discovery, the
12
+ * `fit`/`dashboard`/`list-*` CLI handlers, the architecture-gate primitives,
13
+ * and the persistence repos (`FitBaselineRepo`) — are NOT public. The CLI
14
+ * drives fitness through the Tool contract (`fitnessTool`), never by importing
15
+ * those symbols; fitness's own `tool.ts` wires them via relative imports. The
16
+ * handful that cross-package test suites need are exposed via
17
+ * `@opensip-cli/fitness/internal` (see `./internal.ts`), which production
18
+ * code is forbidden from importing (dependency-cruiser `no-cross-package-internal`,
19
+ * ADR-0009 / ADR-0013).
20
+ *
21
+ * The exact value-export set is locked by `__tests__/public-api.test.ts`:
22
+ * adding or removing a runtime export here fails that test on purpose. Adding
23
+ * a symbol to this barrel is a minor change; removing one is a major change.
24
+ */
25
+ export { defineCheck } from './framework/define-check.js';
26
+ export { defineRegexListCheck } from './framework/define-regex-list-check.js';
27
+ export { FITNESS_CONTRACT_VERSION } from './tool.js';
28
+ export type { RegexListCheckPattern, RegexListCheckOptions, DefineRegexListCheckConfig, } from './framework/define-regex-list-check.js';
29
+ export { defineRecipe } from './recipes/types.js';
30
+ export type { FitnessRecipeDefinition } from './recipes/types.js';
31
+ export { readPackageVersion } from '@opensip-cli/core';
32
+ export type { CheckViolation, CheckScope, FileAccessor, CheckConcern, CheckLanguage, } from './framework/check-config.js';
33
+ export type { Check } from './framework/check-types.js';
34
+ export { isCheck, collectCheckObjects } from './framework/check-types.js';
35
+ export type { Finding, Severity, FindingSeverity, ToolOutput, CheckResult, CheckInfo, CheckResultMetadata, ItemType, } from './types/findings.js';
36
+ export { getLineNumber, extractSnippet, isAPIFile } from './framework/result-builder.js';
37
+ export { execAbortable } from './framework/abortable-exec.js';
38
+ export { fileCache } from './framework/file-cache.js';
39
+ export { buildImportGraph, findStronglyConnectedComponents } from './framework/import-graph.js';
40
+ export type { ImportGraph } from './framework/import-graph.js';
41
+ export { isInsideStringLiteral, stripStringLiterals, stripStringsAndComments, stripStringsAndCommentsPreservingPositions, } from './framework/strip-literals.js';
42
+ export { getCheckConfig, setCurrentRecipeCheckConfig, clearCurrentRecipeCheckConfig, } from './recipes/check-config.js';
43
+ export { isCommentLine, isTestFile, applyCheckDisplay, getCheckDisplayName, getCheckIcon, makeDisplayHelpers, createPathMatcher, } from './check-utils/index.js';
44
+ export type { IsCommentLineOptions, IsTestFileOptions, DisplayHelpers, PathPattern, } from './check-utils/index.js';
45
+ export type { CheckDisplayEntry, FitPluginExports } from './plugins/types.js';
46
+ export { fitnessTool, fitnessTool as tool } from './tool.js';
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAI9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,wCAAwC,CAAC;AAQhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAKlE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,YAAY,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,YAAY,EACV,OAAO,EACP,QAAQ,EACR,eAAe,EACf,UAAU,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAChG,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAK/D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,0CAA0C,GAC3C,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAKhC,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAM9E,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @opensip-cli/fitness — public barrel.
3
+ *
4
+ * This barrel is the **marketplace contract surface** for the fitness tool:
5
+ * the check / recipe / plugin authoring API plus the `fitnessTool` plugin
6
+ * descriptor. It is deliberately curated to match
7
+ * `docs/public/10-concepts/04-contract-surfaces.md` — a check pack depends
8
+ * only on what is exported here.
9
+ *
10
+ * Engine internals — registries, the recipe service, `ExecutionContext`,
11
+ * targets/signalers config, the plugin loader, check-package discovery, the
12
+ * `fit`/`dashboard`/`list-*` CLI handlers, the architecture-gate primitives,
13
+ * and the persistence repos (`FitBaselineRepo`) — are NOT public. The CLI
14
+ * drives fitness through the Tool contract (`fitnessTool`), never by importing
15
+ * those symbols; fitness's own `tool.ts` wires them via relative imports. The
16
+ * handful that cross-package test suites need are exposed via
17
+ * `@opensip-cli/fitness/internal` (see `./internal.ts`), which production
18
+ * code is forbidden from importing (dependency-cruiser `no-cross-package-internal`,
19
+ * ADR-0009 / ADR-0013).
20
+ *
21
+ * The exact value-export set is locked by `__tests__/public-api.test.ts`:
22
+ * adding or removing a runtime export here fails that test on purpose. Adding
23
+ * a symbol to this barrel is a minor change; removing one is a major change.
24
+ */
25
+ // ── Check authoring API ────────────────────────────────────────────
26
+ export { defineCheck } from './framework/define-check.js';
27
+ export { defineRegexListCheck } from './framework/define-regex-list-check.js';
28
+ // Per-tool contract version (ADR-0047). Re-exported from the tool module
29
+ // (the single source of truth) so check packs and authors can import it.
30
+ export { FITNESS_CONTRACT_VERSION } from './tool.js';
31
+ // ── Recipe authoring API ───────────────────────────────────────────
32
+ // `defineRecipe` is the stable authoring entry point; `FitnessRecipeDefinition`
33
+ // is the object an author writes. The produced `FitnessRecipe`, the recipe
34
+ // service, registries, and `RecipeCheckResult` are engine internals (the doc
35
+ // names `FitnessRecipe` / `RecipeCheckResult` as non-contract) and stay
36
+ // unexported — `defineRecipe`'s inferred return type carries them where needed.
37
+ export { defineRecipe } from './recipes/types.js';
38
+ // ── Re-exported kernel convenience ─────────────────────────────────
39
+ // Lets a pack barrel set `metadata.version` from its own package.json without
40
+ // duplicating the literal or adding a direct @opensip-cli/core dep.
41
+ export { readPackageVersion } from '@opensip-cli/core';
42
+ export { isCheck, collectCheckObjects } from './framework/check-types.js';
43
+ // ── Authoring helpers — snippet/line extraction, file access ────────
44
+ export { getLineNumber, extractSnippet, isAPIFile } from './framework/result-builder.js';
45
+ export { execAbortable } from './framework/abortable-exec.js';
46
+ // File cache (checks read content through it; pack tests may seed/clear it).
47
+ export { fileCache } from './framework/file-cache.js';
48
+ export { buildImportGraph, findStronglyConnectedComponents } from './framework/import-graph.js';
49
+ // Regex-based string/comment strippers — language-agnostic, good enough for
50
+ // universal/text checks. (The TS-AST-aware, position-preserving `filterContent`
51
+ // lives in @opensip-cli/lang-typescript; TS checks import it from there.)
52
+ export { isInsideStringLiteral, stripStringLiterals, stripStringsAndComments, stripStringsAndCommentsPreservingPositions, } from './framework/strip-literals.js';
53
+ // ── Recipe-aware check config accessors ────────────────────────────
54
+ // A check reads its recipe-provided config via `getCheckConfig`; the set/clear
55
+ // pair is used by pack test suites to drive a check under a given config.
56
+ export { getCheckConfig, setCurrentRecipeCheckConfig, clearCurrentRecipeCheckConfig, } from './recipes/check-config.js';
57
+ // ── Check-author display / util helpers (extracted from per-pack copies) ──
58
+ export { isCommentLine, isTestFile, applyCheckDisplay, getCheckDisplayName, getCheckIcon, makeDisplayHelpers, createPathMatcher, } from './check-utils/index.js';
59
+ // ── Tool plugin export ─────────────────────────────────────────────
60
+ // Re-exported as `tool` so the third-party plugin-discovery walker (which keys
61
+ // on `mod.tool`) treats first-party and third-party Tool packages uniformly;
62
+ // dedup at register-tools.ts handles the duplicate-id case.
63
+ export { fitnessTool, fitnessTool as tool } from './tool.js';
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,sEAAsE;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,yEAAyE;AACzE,yEAAyE;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAOrD,sEAAsE;AACtE,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,wEAAwE;AACxE,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,sEAAsE;AACtE,8EAA8E;AAC9E,oEAAoE;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAWvD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAc1E,uEAAuE;AACvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,6EAA6E;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAGhG,4EAA4E;AAC5E,gFAAgF;AAChF,0EAA0E;AAC1E,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,0CAA0C,GAC3C,MAAM,+BAA+B,CAAC;AAEvC,sEAAsE;AACtE,+EAA+E;AAC/E,0EAA0E;AAC1E,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AAEnC,6EAA6E;AAC7E,OAAO,EACL,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAahC,sEAAsE;AACtE,+EAA+E;AAC/E,6EAA6E;AAC7E,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview `@opensip-cli/fitness/internal` — engine internals exposed
3
+ * ONLY for cross-package test suites.
4
+ *
5
+ * This is NOT public API. Production code in other packages must not import
6
+ * from `@opensip-cli/fitness/internal` (enforced by dependency-cruiser per
7
+ * ADR-0009), and the subpath is excluded from the published exports map.
8
+ * `executeFit` lives here because the CLI drives fitness through the Tool
9
+ * contract (`fitnessTool`), not by calling `executeFit` directly; the only
10
+ * external consumer is the SaaS-mode concurrency smoke test.
11
+ *
12
+ * The per-check fixture-coverage harness that used to live here moved to the
13
+ * unpublished `@opensip-cli/test-support` package (ADR-0040) — test
14
+ * scaffolding no longer ships inside production package source.
15
+ */
16
+ export { executeFit } from './cli/fit.js';
17
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @fileoverview `@opensip-cli/fitness/internal` — engine internals exposed
3
+ * ONLY for cross-package test suites.
4
+ *
5
+ * This is NOT public API. Production code in other packages must not import
6
+ * from `@opensip-cli/fitness/internal` (enforced by dependency-cruiser per
7
+ * ADR-0009), and the subpath is excluded from the published exports map.
8
+ * `executeFit` lives here because the CLI drives fitness through the Tool
9
+ * contract (`fitnessTool`), not by calling `executeFit` directly; the only
10
+ * external consumer is the SaaS-mode concurrency smoke test.
11
+ *
12
+ * The per-check fixture-coverage harness that used to live here moved to the
13
+ * unpublished `@opensip-cli/test-support` package (ADR-0040) — test
14
+ * scaffolding no longer ships inside production package source.
15
+ */
16
+ export { executeFit } from './cli/fit.js';
17
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Fitness-owned session payload (audit 2026-05-29, session split;
3
+ * rebuilt from the run's {@link SignalEnvelope} in ADR-0011 Phase 6 — no
4
+ * `CliOutput`).
5
+ *
6
+ * `contracts` stores per-session detail as an opaque JSON blob in
7
+ * `session_tool_payload.payload` and holds zero check/finding/summary
8
+ * vocabulary. Fitness owns the shape of its own payload here and ships the
9
+ * dashboard renderer that reads it back. The dashboard's shared session-detail
10
+ * renderer reads `{ summary, checks[] }` where each check has `checkSlug`,
11
+ * `passed`, `violationCount`, `durationMs`, and `findings[].severity ∈
12
+ * error|warning` (2-LEVEL) — so this payload derives FROM the envelope's
13
+ * 4-level signals, collapsing `critical|high → error`, else `warning`. The
14
+ * 4-level severity stays in `--json`; the 2-level lives only here (two
15
+ * consumers, two shapes).
16
+ */
17
+ import type { SignalEnvelope } from '@opensip-cli/contracts';
18
+ /** Two-level severity the dashboard buckets on (`critical|high → error`). */
19
+ export type FitnessFindingSeverity = 'error' | 'warning';
20
+ /** Per-check finding inside a {@link FitnessSessionPayload}. */
21
+ interface FitnessSessionFinding {
22
+ readonly ruleId: string;
23
+ readonly message: string;
24
+ readonly severity: FitnessFindingSeverity;
25
+ readonly filePath?: string;
26
+ readonly line?: number;
27
+ readonly column?: number;
28
+ readonly suggestion?: string;
29
+ }
30
+ /** Per-check result inside a {@link FitnessSessionPayload}. */
31
+ interface FitnessSessionCheck {
32
+ readonly checkSlug: string;
33
+ readonly passed: boolean;
34
+ readonly violationCount?: number;
35
+ readonly findings: readonly FitnessSessionFinding[];
36
+ readonly durationMs: number;
37
+ }
38
+ /** Opaque-to-contracts detail blob written for every `fit` session. */
39
+ export interface FitnessSessionPayload {
40
+ /** Inner version per the payload schema evolution convention (v1 shape). */
41
+ readonly __version: 1;
42
+ readonly summary: {
43
+ readonly total: number;
44
+ readonly passed: number;
45
+ readonly failed: number;
46
+ readonly errors: number;
47
+ readonly warnings: number;
48
+ };
49
+ readonly checks: readonly FitnessSessionCheck[];
50
+ }
51
+ /**
52
+ * Build the fitness session payload directly from the run's
53
+ * {@link SignalEnvelope}.
54
+ *
55
+ * One `checks[]` entry per `units[]` row (every check that ran — a clean check
56
+ * still appears, matching the dashboard's per-check catalog stats), with its
57
+ * findings recovered by grouping `signals` on `signal.source === unit.slug`.
58
+ * The 4-level signal severity is collapsed to the dashboard's `error|warning`.
59
+ * `summary` is taken from the envelope's verdict, which already counts
60
+ * `critical|high → errors`, else `warnings`.
61
+ *
62
+ * The returned payload includes `__version: 1` (the current v1 shape per the
63
+ * tool-owned payload evolution convention). Additive changes stay on v1;
64
+ * breaking changes will bump the number (with deprecation per the rules).
65
+ */
66
+ export declare function buildFitnessSessionPayload(envelope: SignalEnvelope): FitnessSessionPayload;
67
+ export {};
68
+ //# sourceMappingURL=session-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-payload.d.ts","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,wBAAwB,CAAC;AAGzE,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,gEAAgE;AAChE,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,+DAA+D;AAC/D,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,uEAAuE;AACvE,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACjD;AAoBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,cAAc,GAAG,qBAAqB,CA4B1F"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Fitness-owned session payload (audit 2026-05-29, session split;
3
+ * rebuilt from the run's {@link SignalEnvelope} in ADR-0011 Phase 6 — no
4
+ * `CliOutput`).
5
+ *
6
+ * `contracts` stores per-session detail as an opaque JSON blob in
7
+ * `session_tool_payload.payload` and holds zero check/finding/summary
8
+ * vocabulary. Fitness owns the shape of its own payload here and ships the
9
+ * dashboard renderer that reads it back. The dashboard's shared session-detail
10
+ * renderer reads `{ summary, checks[] }` where each check has `checkSlug`,
11
+ * `passed`, `violationCount`, `durationMs`, and `findings[].severity ∈
12
+ * error|warning` (2-LEVEL) — so this payload derives FROM the envelope's
13
+ * 4-level signals, collapsing `critical|high → error`, else `warning`. The
14
+ * 4-level severity stays in `--json`; the 2-level lives only here (two
15
+ * consumers, two shapes).
16
+ */
17
+ import { isErrorSignal } from '@opensip-cli/core';
18
+ /** Map a signal to the dashboard's 2-level bucket (`critical|high → error`). */
19
+ function toDashboardSeverity(signal) {
20
+ return isErrorSignal(signal) ? 'error' : 'warning';
21
+ }
22
+ /** Map a check's signals into the dashboard-shaped finding rows. */
23
+ function findingsFor(signals) {
24
+ return signals.map((s) => ({
25
+ ruleId: s.ruleId,
26
+ message: s.message,
27
+ severity: toDashboardSeverity(s),
28
+ filePath: s.filePath,
29
+ line: s.line,
30
+ column: s.column,
31
+ suggestion: s.suggestion,
32
+ }));
33
+ }
34
+ /**
35
+ * Build the fitness session payload directly from the run's
36
+ * {@link SignalEnvelope}.
37
+ *
38
+ * One `checks[]` entry per `units[]` row (every check that ran — a clean check
39
+ * still appears, matching the dashboard's per-check catalog stats), with its
40
+ * findings recovered by grouping `signals` on `signal.source === unit.slug`.
41
+ * The 4-level signal severity is collapsed to the dashboard's `error|warning`.
42
+ * `summary` is taken from the envelope's verdict, which already counts
43
+ * `critical|high → errors`, else `warnings`.
44
+ *
45
+ * The returned payload includes `__version: 1` (the current v1 shape per the
46
+ * tool-owned payload evolution convention). Additive changes stay on v1;
47
+ * breaking changes will bump the number (with deprecation per the rules).
48
+ */
49
+ export function buildFitnessSessionPayload(envelope) {
50
+ const bySource = new Map();
51
+ for (const s of envelope.signals) {
52
+ const bucket = bySource.get(s.source);
53
+ if (bucket)
54
+ bucket.push(s);
55
+ else
56
+ bySource.set(s.source, [s]);
57
+ }
58
+ const checks = envelope.units.map((unit) => ({
59
+ checkSlug: unit.slug,
60
+ passed: unit.passed,
61
+ violationCount: unit.violationCount,
62
+ findings: findingsFor(bySource.get(unit.slug) ?? []),
63
+ durationMs: unit.durationMs,
64
+ }));
65
+ const { summary } = envelope.verdict;
66
+ return {
67
+ __version: 1,
68
+ summary: {
69
+ total: summary.total,
70
+ passed: summary.passed,
71
+ failed: summary.failed,
72
+ errors: summary.errors,
73
+ warnings: summary.warnings,
74
+ },
75
+ checks,
76
+ };
77
+ }
78
+ //# sourceMappingURL=session-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-payload.js","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA0ClD,gFAAgF;AAChF,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,oEAAoE;AACpE,SAAS,WAAW,CAAC,OAA0B;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAwB;IACjE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAA0B,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAgB,EAAE,EAAE,CAAC,CAAC;QAC9E,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpD,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;IACrC,OAAO;QACL,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B;QACD,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Unit tests for {@link buildFitnessSessionPayload} (coverage gap).
3
+ *
4
+ * Drives the payload builder off a real {@link SignalEnvelope}: signals are
5
+ * grouped by `source` onto their unit, the 4-level severity is collapsed to the
6
+ * dashboard's `error|warning` (critical|high → error, else warning), a unit
7
+ * with no matching signals gets an empty `findings[]`, and the `summary` is
8
+ * carried through from the envelope verdict.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=session-payload.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-payload.test.d.ts","sourceRoot":"","sources":["../../src/persistence/session-payload.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Unit tests for {@link buildFitnessSessionPayload} (coverage gap).
3
+ *
4
+ * Drives the payload builder off a real {@link SignalEnvelope}: signals are
5
+ * grouped by `source` onto their unit, the 4-level severity is collapsed to the
6
+ * dashboard's `error|warning` (critical|high → error, else warning), a unit
7
+ * with no matching signals gets an empty `findings[]`, and the `summary` is
8
+ * carried through from the envelope verdict.
9
+ */
10
+ import { buildSignalEnvelope } from '@opensip-cli/contracts';
11
+ import { createSignal, HOST_VERDICT_POLICY_FALLBACK } from '@opensip-cli/core';
12
+ import { describe, expect, it } from 'vitest';
13
+ import { buildFitnessSessionPayload } from './session-payload.js';
14
+ function sig(source, severity, ruleId = `fit:${source}`) {
15
+ return createSignal({
16
+ source,
17
+ severity,
18
+ ruleId,
19
+ message: `${severity} from ${source}`,
20
+ code: { file: 'src/x.ts', line: 3, column: 5 },
21
+ suggestion: 'fix it',
22
+ });
23
+ }
24
+ function envelope(units, signals) {
25
+ return buildSignalEnvelope({
26
+ tool: 'fit',
27
+ runId: 'RUN_test',
28
+ createdAt: '2026-06-05T00:00:00.000Z',
29
+ units: units.map((u) => ({
30
+ slug: u.slug,
31
+ passed: u.passed,
32
+ violationCount: u.violationCount,
33
+ durationMs: u.durationMs ?? 10,
34
+ })),
35
+ signals,
36
+ policy: HOST_VERDICT_POLICY_FALLBACK,
37
+ runFaulted: false,
38
+ });
39
+ }
40
+ describe('buildFitnessSessionPayload', () => {
41
+ it('groups multiple signals from the same source onto one check (push branch)', () => {
42
+ const env = envelope([{ slug: 'a', passed: false, violationCount: 2 }], [sig('a', 'critical'), sig('a', 'low')]);
43
+ const payload = buildFitnessSessionPayload(env);
44
+ expect(payload.checks).toHaveLength(1);
45
+ expect(payload.checks[0]?.findings).toHaveLength(2);
46
+ expect(payload.checks[0]?.checkSlug).toBe('a');
47
+ expect(payload.checks[0]?.violationCount).toBe(2);
48
+ });
49
+ it('collapses 4-level severity to 2-level (critical|high → error, else warning)', () => {
50
+ const env = envelope([
51
+ { slug: 'a', passed: false },
52
+ { slug: 'b', passed: false },
53
+ ], [sig('a', 'high'), sig('b', 'medium')]);
54
+ const payload = buildFitnessSessionPayload(env);
55
+ const a = payload.checks.find((c) => c.checkSlug === 'a');
56
+ const b = payload.checks.find((c) => c.checkSlug === 'b');
57
+ expect(a?.findings[0]?.severity).toBe('error');
58
+ expect(b?.findings[0]?.severity).toBe('warning');
59
+ });
60
+ it('a unit with no matching signals gets an empty findings list (?? [] branch)', () => {
61
+ const env = envelope([{ slug: 'clean', passed: true }], []);
62
+ const payload = buildFitnessSessionPayload(env);
63
+ expect(payload.checks[0]?.findings).toEqual([]);
64
+ expect(payload.checks[0]?.passed).toBe(true);
65
+ });
66
+ it('carries the envelope verdict summary through and preserves finding location fields', () => {
67
+ const env = envelope([
68
+ { slug: 'a', passed: false },
69
+ { slug: 'ok', passed: true },
70
+ ], [sig('a', 'critical')]);
71
+ const payload = buildFitnessSessionPayload(env);
72
+ expect(payload.summary).toEqual({ total: 2, passed: 1, failed: 1, errors: 1, warnings: 0 });
73
+ const finding = payload.checks.find((c) => c.checkSlug === 'a')?.findings[0];
74
+ expect(finding?.filePath).toBe('src/x.ts');
75
+ expect(finding?.line).toBe(3);
76
+ expect(finding?.column).toBe(5);
77
+ expect(finding?.suggestion).toBe('fix it');
78
+ });
79
+ });
80
+ //# sourceMappingURL=session-payload.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-payload.test.js","sourceRoot":"","sources":["../../src/persistence/session-payload.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { FitDoneResult, StoredSession, ToolSessionReplay } from '@opensip-cli/contracts';
2
+ /**
3
+ * Project a stored fit session back into a {@link SignalEnvelope}/{@link FitDoneResult}.
4
+ *
5
+ * The structural decode of the opaque payload is shared across tools
6
+ * (`decodeSessionPayload`); this function owns only fit's projection — the
7
+ * envelope vocabulary (`tool: 'fit'`, recipe label) and the per-finding signal
8
+ * shape (`category: 'quality'`, severity mapping, id prefix).
9
+ *
10
+ * @throws {Error | TypeError} when the stored payload is not the expected shape
11
+ * (propagated from `decodeSessionPayload`).
12
+ */
13
+ export declare function fitReplayFromSession(stored: StoredSession): ToolSessionReplay<FitDoneResult>;
14
+ //# sourceMappingURL=session-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-replay.d.ts","sourceRoot":"","sources":["../../src/persistence/session-replay.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAwD5F"}
@@ -0,0 +1,85 @@
1
+ import { currentScope, extractPayloadVersion } from '@opensip-cli/core';
2
+ import { decodeSessionPayload } from '@opensip-cli/session-store';
3
+ /**
4
+ * Project a stored fit session back into a {@link SignalEnvelope}/{@link FitDoneResult}.
5
+ *
6
+ * The structural decode of the opaque payload is shared across tools
7
+ * (`decodeSessionPayload`); this function owns only fit's projection — the
8
+ * envelope vocabulary (`tool: 'fit'`, recipe label) and the per-finding signal
9
+ * shape (`category: 'quality'`, severity mapping, id prefix).
10
+ *
11
+ * @throws {Error | TypeError} when the stored payload is not the expected shape
12
+ * (propagated from `decodeSessionPayload`).
13
+ */
14
+ export function fitReplayFromSession(stored) {
15
+ const decoded = decodeSessionPayload(stored.payload, { tool: 'fit' });
16
+ // Version-aware handling per payload evolution plan.
17
+ // Prefer the version surfaced by the structural decoder (from Phase 0); fall back via the pure helper.
18
+ const version = decoded.payloadVersion ?? extractPayloadVersion(stored.payload) ?? 1;
19
+ if (version > 1) {
20
+ // Future version: warn via diagnostics (observable in --json outcomes) + logger.
21
+ // Still attempt best-effort projection using whatever the structural decoder produced.
22
+ const scope = currentScope();
23
+ scope?.diagnostics?.event('load', 'warn', `fit session payload future version (v=${version}); using projection`, { sessionId: stored.id, version });
24
+ // (logger is available via scope or module; diagnostics is the cross-cutting seam)
25
+ }
26
+ const units = decoded.checks.map((check) => ({
27
+ slug: check.checkSlug,
28
+ passed: check.passed,
29
+ ...(check.violationCount === undefined ? {} : { violationCount: check.violationCount }),
30
+ durationMs: check.durationMs,
31
+ }));
32
+ const signals = decoded.checks.flatMap((check, checkIndex) => check.findings.map((finding, findingIndex) => replaySignal(stored, check.checkSlug, finding, checkIndex, findingIndex)));
33
+ const envelope = {
34
+ schemaVersion: 2,
35
+ tool: 'fit',
36
+ runId: stored.id,
37
+ createdAt: stored.startedAt,
38
+ ...(stored.recipe === undefined ? {} : { recipe: stored.recipe }),
39
+ verdict: {
40
+ score: stored.score,
41
+ passed: stored.passed,
42
+ summary: decoded.summary,
43
+ },
44
+ units,
45
+ signals,
46
+ };
47
+ return {
48
+ fidelity: 'projection',
49
+ envelope,
50
+ result: {
51
+ type: 'fit-done',
52
+ label: stored.recipe ? `recipe ${stored.recipe}` : `session ${stored.id}`,
53
+ cwd: stored.cwd,
54
+ envelope,
55
+ configFound: true,
56
+ },
57
+ };
58
+ }
59
+ function replaySignal(stored, source, finding, checkIndex, findingIndex) {
60
+ return {
61
+ id: `${stored.id}:fit:${checkIndex}:${findingIndex}`,
62
+ source,
63
+ provider: 'opensip-cli',
64
+ severity: finding.severity === 'error' ? 'high' : 'medium',
65
+ category: 'quality',
66
+ ruleId: finding.ruleId,
67
+ message: finding.message,
68
+ filePath: finding.filePath ?? '',
69
+ ...(finding.suggestion === undefined ? {} : { suggestion: finding.suggestion }),
70
+ ...(finding.line === undefined ? {} : { line: finding.line }),
71
+ ...(finding.column === undefined ? {} : { column: finding.column }),
72
+ ...(finding.filePath === undefined
73
+ ? {}
74
+ : {
75
+ code: {
76
+ file: finding.filePath,
77
+ ...(finding.line === undefined ? {} : { line: finding.line }),
78
+ ...(finding.column === undefined ? {} : { column: finding.column }),
79
+ },
80
+ }),
81
+ metadata: {},
82
+ createdAt: stored.startedAt,
83
+ };
84
+ }
85
+ //# sourceMappingURL=session-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/persistence/session-replay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Unit tests for {@link fitReplayFromSession} (coverage gap).
3
+ *
4
+ * `session-payload.ts` (encode) and `session-replay.ts` (decode) are inverses,
5
+ * so the happy path is driven as a round-trip: a real {@link SignalEnvelope} →
6
+ * `buildFitnessSessionPayload` → stored payload → `fitReplayFromSession`. The
7
+ * remaining tests drive each validation branch directly with malformed payloads.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=session-replay.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-replay.test.d.ts","sourceRoot":"","sources":["../../src/persistence/session-replay.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}