@lyse-labs/lyse 0.1.0-alpha.2

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 (510) hide show
  1. package/LICENSE +45 -0
  2. package/PRIVACY.md +181 -0
  3. package/README.md +34 -0
  4. package/SECURITY.md +43 -0
  5. package/dist/bench/evidence-pack/anti-dummy.d.ts +11 -0
  6. package/dist/bench/evidence-pack/anti-dummy.js +20 -0
  7. package/dist/bench/evidence-pack/anti-dummy.js.map +1 -0
  8. package/dist/bench/evidence-pack/builder.d.ts +14 -0
  9. package/dist/bench/evidence-pack/builder.js +77 -0
  10. package/dist/bench/evidence-pack/builder.js.map +1 -0
  11. package/dist/bench/evidence-pack/histograms.d.ts +2 -0
  12. package/dist/bench/evidence-pack/histograms.js +131 -0
  13. package/dist/bench/evidence-pack/histograms.js.map +1 -0
  14. package/dist/bench/evidence-pack/manifest-detector.d.ts +2 -0
  15. package/dist/bench/evidence-pack/manifest-detector.js +65 -0
  16. package/dist/bench/evidence-pack/manifest-detector.js.map +1 -0
  17. package/dist/bench/evidence-pack/package-json-digest.d.ts +2 -0
  18. package/dist/bench/evidence-pack/package-json-digest.js +51 -0
  19. package/dist/bench/evidence-pack/package-json-digest.js.map +1 -0
  20. package/dist/bench/evidence-pack/sampler.d.ts +2 -0
  21. package/dist/bench/evidence-pack/sampler.js +140 -0
  22. package/dist/bench/evidence-pack/sampler.js.map +1 -0
  23. package/dist/bench/evidence-pack/types.d.ts +127 -0
  24. package/dist/bench/evidence-pack/types.js +2 -0
  25. package/dist/bench/evidence-pack/types.js.map +1 -0
  26. package/dist/bench/evidence-pack/verifier-corpus.d.ts +5 -0
  27. package/dist/bench/evidence-pack/verifier-corpus.js +13 -0
  28. package/dist/bench/evidence-pack/verifier-corpus.js.map +1 -0
  29. package/dist/bench/taxonomy-loader.d.ts +20 -0
  30. package/dist/bench/taxonomy-loader.js +28 -0
  31. package/dist/bench/taxonomy-loader.js.map +1 -0
  32. package/dist/bench/taxonomy.v3.json +20 -0
  33. package/dist/cli/__tests__/version-migration.test.d.ts +1 -0
  34. package/dist/cli/__tests__/version-migration.test.js +69 -0
  35. package/dist/cli/__tests__/version-migration.test.js.map +1 -0
  36. package/dist/cli/output/__tests__/eslint-style.test.d.ts +1 -0
  37. package/dist/cli/output/__tests__/eslint-style.test.js +205 -0
  38. package/dist/cli/output/__tests__/eslint-style.test.js.map +1 -0
  39. package/dist/cli/output/__tests__/limit.test.d.ts +1 -0
  40. package/dist/cli/output/__tests__/limit.test.js +65 -0
  41. package/dist/cli/output/__tests__/limit.test.js.map +1 -0
  42. package/dist/cli/output/eslint-style.d.ts +18 -0
  43. package/dist/cli/output/eslint-style.js +42 -0
  44. package/dist/cli/output/eslint-style.js.map +1 -0
  45. package/dist/cli/output/limit.d.ts +5 -0
  46. package/dist/cli/output/limit.js +32 -0
  47. package/dist/cli/output/limit.js.map +1 -0
  48. package/dist/cli/output/score-gauge.d.ts +4 -0
  49. package/dist/cli/output/score-gauge.js +15 -0
  50. package/dist/cli/output/score-gauge.js.map +1 -0
  51. package/dist/cli/version-migration.d.ts +18 -0
  52. package/dist/cli/version-migration.js +49 -0
  53. package/dist/cli/version-migration.js.map +1 -0
  54. package/dist/cli.d.ts +2 -0
  55. package/dist/cli.js +856 -0
  56. package/dist/cli.js.map +1 -0
  57. package/dist/codemods/diff.d.ts +17 -0
  58. package/dist/codemods/diff.js +77 -0
  59. package/dist/codemods/diff.js.map +1 -0
  60. package/dist/codemods/git-helpers.d.ts +10 -0
  61. package/dist/codemods/git-helpers.js +75 -0
  62. package/dist/codemods/git-helpers.js.map +1 -0
  63. package/dist/codemods/index.d.ts +27 -0
  64. package/dist/codemods/index.js +40 -0
  65. package/dist/codemods/index.js.map +1 -0
  66. package/dist/codemods/naming-component-pascalcase.d.ts +13 -0
  67. package/dist/codemods/naming-component-pascalcase.js +106 -0
  68. package/dist/codemods/naming-component-pascalcase.js.map +1 -0
  69. package/dist/codemods/naming-hook-prefix.d.ts +13 -0
  70. package/dist/codemods/naming-hook-prefix.js +86 -0
  71. package/dist/codemods/naming-hook-prefix.js.map +1 -0
  72. package/dist/codemods/safety.d.ts +50 -0
  73. package/dist/codemods/safety.js +109 -0
  74. package/dist/codemods/safety.js.map +1 -0
  75. package/dist/codemods/safety.test.d.ts +1 -0
  76. package/dist/codemods/safety.test.js +154 -0
  77. package/dist/codemods/safety.test.js.map +1 -0
  78. package/dist/codemods/shadow-native.d.ts +2 -0
  79. package/dist/codemods/shadow-native.js +103 -0
  80. package/dist/codemods/shadow-native.js.map +1 -0
  81. package/dist/codemods/tokens-color.d.ts +2 -0
  82. package/dist/codemods/tokens-color.js +69 -0
  83. package/dist/codemods/tokens-color.js.map +1 -0
  84. package/dist/codemods/tokens-spacing.d.ts +2 -0
  85. package/dist/codemods/tokens-spacing.js +66 -0
  86. package/dist/codemods/tokens-spacing.js.map +1 -0
  87. package/dist/commands/__tests__/email-prompt.test.d.ts +1 -0
  88. package/dist/commands/__tests__/email-prompt.test.js +126 -0
  89. package/dist/commands/__tests__/email-prompt.test.js.map +1 -0
  90. package/dist/commands/__tests__/explain-score.test.d.ts +1 -0
  91. package/dist/commands/__tests__/explain-score.test.js +88 -0
  92. package/dist/commands/__tests__/explain-score.test.js.map +1 -0
  93. package/dist/commands/__tests__/feedback.test.d.ts +1 -0
  94. package/dist/commands/__tests__/feedback.test.js +186 -0
  95. package/dist/commands/__tests__/feedback.test.js.map +1 -0
  96. package/dist/commands/audit-flags.d.ts +49 -0
  97. package/dist/commands/audit-flags.js +17 -0
  98. package/dist/commands/audit-flags.js.map +1 -0
  99. package/dist/commands/audit-pipeline.d.ts +31 -0
  100. package/dist/commands/audit-pipeline.js +342 -0
  101. package/dist/commands/audit-pipeline.js.map +1 -0
  102. package/dist/commands/bench-pack.d.ts +5 -0
  103. package/dist/commands/bench-pack.js +61 -0
  104. package/dist/commands/bench-pack.js.map +1 -0
  105. package/dist/commands/ci-setup.d.ts +9 -0
  106. package/dist/commands/ci-setup.js +42 -0
  107. package/dist/commands/ci-setup.js.map +1 -0
  108. package/dist/commands/email-prompt.d.ts +36 -0
  109. package/dist/commands/email-prompt.js +160 -0
  110. package/dist/commands/email-prompt.js.map +1 -0
  111. package/dist/commands/explain-score.d.ts +35 -0
  112. package/dist/commands/explain-score.js +137 -0
  113. package/dist/commands/explain-score.js.map +1 -0
  114. package/dist/commands/explain.d.ts +6 -0
  115. package/dist/commands/explain.js +93 -0
  116. package/dist/commands/explain.js.map +1 -0
  117. package/dist/commands/feedback.d.ts +31 -0
  118. package/dist/commands/feedback.js +155 -0
  119. package/dist/commands/feedback.js.map +1 -0
  120. package/dist/commands/fix.d.ts +48 -0
  121. package/dist/commands/fix.js +191 -0
  122. package/dist/commands/fix.js.map +1 -0
  123. package/dist/commands/init-detect.d.ts +20 -0
  124. package/dist/commands/init-detect.js +124 -0
  125. package/dist/commands/init-detect.js.map +1 -0
  126. package/dist/commands/init-write-agents-md.d.ts +14 -0
  127. package/dist/commands/init-write-agents-md.js +71 -0
  128. package/dist/commands/init-write-agents-md.js.map +1 -0
  129. package/dist/commands/init-write-lyse-md.d.ts +14 -0
  130. package/dist/commands/init-write-lyse-md.js +253 -0
  131. package/dist/commands/init-write-lyse-md.js.map +1 -0
  132. package/dist/commands/init.d.ts +8 -0
  133. package/dist/commands/init.js +147 -0
  134. package/dist/commands/init.js.map +1 -0
  135. package/dist/commands/mcp-entry.d.ts +33 -0
  136. package/dist/commands/mcp-entry.js +47 -0
  137. package/dist/commands/mcp-entry.js.map +1 -0
  138. package/dist/commands/mcp-setup.d.ts +10 -0
  139. package/dist/commands/mcp-setup.js +74 -0
  140. package/dist/commands/mcp-setup.js.map +1 -0
  141. package/dist/commands/share.d.ts +4 -0
  142. package/dist/commands/share.js +60 -0
  143. package/dist/commands/share.js.map +1 -0
  144. package/dist/commands/telemetry.d.ts +4 -0
  145. package/dist/commands/telemetry.js +27 -0
  146. package/dist/commands/telemetry.js.map +1 -0
  147. package/dist/commands/templates/lyse-workflow.yml.template +30 -0
  148. package/dist/config/schema.d.ts +158 -0
  149. package/dist/config/schema.js +136 -0
  150. package/dist/config/schema.js.map +1 -0
  151. package/dist/credentials/keychain.d.ts +20 -0
  152. package/dist/credentials/keychain.js +35 -0
  153. package/dist/credentials/keychain.js.map +1 -0
  154. package/dist/credentials/keychain.test.d.ts +1 -0
  155. package/dist/credentials/keychain.test.js +32 -0
  156. package/dist/credentials/keychain.test.js.map +1 -0
  157. package/dist/credentials/paths.d.ts +1 -0
  158. package/dist/credentials/paths.js +6 -0
  159. package/dist/credentials/paths.js.map +1 -0
  160. package/dist/credentials/store.d.ts +17 -0
  161. package/dist/credentials/store.js +60 -0
  162. package/dist/credentials/store.js.map +1 -0
  163. package/dist/credentials/store.test.d.ts +1 -0
  164. package/dist/credentials/store.test.js +48 -0
  165. package/dist/credentials/store.test.js.map +1 -0
  166. package/dist/detection/from-filesystem.d.ts +2 -0
  167. package/dist/detection/from-filesystem.js +26 -0
  168. package/dist/detection/from-filesystem.js.map +1 -0
  169. package/dist/detection/from-git.d.ts +2 -0
  170. package/dist/detection/from-git.js +53 -0
  171. package/dist/detection/from-git.js.map +1 -0
  172. package/dist/detection/from-package-json.d.ts +2 -0
  173. package/dist/detection/from-package-json.js +194 -0
  174. package/dist/detection/from-package-json.js.map +1 -0
  175. package/dist/detection/pre-flight.d.ts +5 -0
  176. package/dist/detection/pre-flight.js +47 -0
  177. package/dist/detection/pre-flight.js.map +1 -0
  178. package/dist/detection/types.d.ts +27 -0
  179. package/dist/detection/types.js +2 -0
  180. package/dist/detection/types.js.map +1 -0
  181. package/dist/entitlement/check.d.ts +7 -0
  182. package/dist/entitlement/check.js +37 -0
  183. package/dist/entitlement/check.js.map +1 -0
  184. package/dist/entitlement/index.d.ts +1 -0
  185. package/dist/entitlement/index.js +2 -0
  186. package/dist/entitlement/index.js.map +1 -0
  187. package/dist/entitlement/keys.d.ts +10 -0
  188. package/dist/entitlement/keys.js +14 -0
  189. package/dist/entitlement/keys.js.map +1 -0
  190. package/dist/history/ndjson-store.d.ts +70 -0
  191. package/dist/history/ndjson-store.js +102 -0
  192. package/dist/history/ndjson-store.js.map +1 -0
  193. package/dist/identity/index.d.ts +1 -0
  194. package/dist/identity/index.js +2 -0
  195. package/dist/identity/index.js.map +1 -0
  196. package/dist/identity/repo-bucket.d.ts +22 -0
  197. package/dist/identity/repo-bucket.js +78 -0
  198. package/dist/identity/repo-bucket.js.map +1 -0
  199. package/dist/index.d.ts +1 -0
  200. package/dist/index.js +15 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/llm/layer4-stage.d.ts +18 -0
  203. package/dist/llm/layer4-stage.js +12 -0
  204. package/dist/llm/layer4-stage.js.map +1 -0
  205. package/dist/loaders/components.d.ts +26 -0
  206. package/dist/loaders/components.js +285 -0
  207. package/dist/loaders/components.js.map +1 -0
  208. package/dist/loaders/stories.d.ts +2 -0
  209. package/dist/loaders/stories.js +231 -0
  210. package/dist/loaders/stories.js.map +1 -0
  211. package/dist/loaders/token-graph.d.ts +39 -0
  212. package/dist/loaders/token-graph.js +146 -0
  213. package/dist/loaders/token-graph.js.map +1 -0
  214. package/dist/loaders/tokens.d.ts +2 -0
  215. package/dist/loaders/tokens.js +521 -0
  216. package/dist/loaders/tokens.js.map +1 -0
  217. package/dist/mcp/_find-root.d.ts +12 -0
  218. package/dist/mcp/_find-root.js +28 -0
  219. package/dist/mcp/_find-root.js.map +1 -0
  220. package/dist/mcp/server.d.ts +1 -0
  221. package/dist/mcp/server.js +42 -0
  222. package/dist/mcp/server.js.map +1 -0
  223. package/dist/mcp/tools/audit-file.d.ts +25 -0
  224. package/dist/mcp/tools/audit-file.js +147 -0
  225. package/dist/mcp/tools/audit-file.js.map +1 -0
  226. package/dist/mcp/tools/suggest-fix.d.ts +13 -0
  227. package/dist/mcp/tools/suggest-fix.js +100 -0
  228. package/dist/mcp/tools/suggest-fix.js.map +1 -0
  229. package/dist/menu/action-menu.d.ts +6 -0
  230. package/dist/menu/action-menu.js +15 -0
  231. package/dist/menu/action-menu.js.map +1 -0
  232. package/dist/menu/prompts.d.ts +7 -0
  233. package/dist/menu/prompts.js +30 -0
  234. package/dist/menu/prompts.js.map +1 -0
  235. package/dist/menu/repl.d.ts +17 -0
  236. package/dist/menu/repl.js +77 -0
  237. package/dist/menu/repl.js.map +1 -0
  238. package/dist/parsers/css-in-js.d.ts +2 -0
  239. package/dist/parsers/css-in-js.js +69 -0
  240. package/dist/parsers/css-in-js.js.map +1 -0
  241. package/dist/parsers/css.d.ts +2 -0
  242. package/dist/parsers/css.js +32 -0
  243. package/dist/parsers/css.js.map +1 -0
  244. package/dist/parsers/scss-transform.d.ts +25 -0
  245. package/dist/parsers/scss-transform.js +55 -0
  246. package/dist/parsers/scss-transform.js.map +1 -0
  247. package/dist/parsers/tailwind-v4.d.ts +8 -0
  248. package/dist/parsers/tailwind-v4.js +90 -0
  249. package/dist/parsers/tailwind-v4.js.map +1 -0
  250. package/dist/parsers/ts-morph-project.d.ts +16 -0
  251. package/dist/parsers/ts-morph-project.js +77 -0
  252. package/dist/parsers/ts-morph-project.js.map +1 -0
  253. package/dist/parsers/ts.d.ts +2 -0
  254. package/dist/parsers/ts.js +61 -0
  255. package/dist/parsers/ts.js.map +1 -0
  256. package/dist/reliability/__tests__/types.test.d.ts +1 -0
  257. package/dist/reliability/__tests__/types.test.js +14 -0
  258. package/dist/reliability/__tests__/types.test.js.map +1 -0
  259. package/dist/reliability/catalogue/__tests__/promotion.test.d.ts +1 -0
  260. package/dist/reliability/catalogue/__tests__/promotion.test.js +23 -0
  261. package/dist/reliability/catalogue/__tests__/promotion.test.js.map +1 -0
  262. package/dist/reliability/catalogue/__tests__/sub-axes.test.d.ts +1 -0
  263. package/dist/reliability/catalogue/__tests__/sub-axes.test.js +27 -0
  264. package/dist/reliability/catalogue/__tests__/sub-axes.test.js.map +1 -0
  265. package/dist/reliability/catalogue/promotion.d.ts +8 -0
  266. package/dist/reliability/catalogue/promotion.js +25 -0
  267. package/dist/reliability/catalogue/promotion.js.map +1 -0
  268. package/dist/reliability/catalogue/sub-axes.d.ts +3 -0
  269. package/dist/reliability/catalogue/sub-axes.js +18 -0
  270. package/dist/reliability/catalogue/sub-axes.js.map +1 -0
  271. package/dist/reliability/confidence/__tests__/manifest-loader.test.d.ts +1 -0
  272. package/dist/reliability/confidence/__tests__/manifest-loader.test.js +103 -0
  273. package/dist/reliability/confidence/__tests__/manifest-loader.test.js.map +1 -0
  274. package/dist/reliability/confidence/bundled-manifest.d.ts +2 -0
  275. package/dist/reliability/confidence/bundled-manifest.js +8 -0
  276. package/dist/reliability/confidence/bundled-manifest.js.map +1 -0
  277. package/dist/reliability/confidence/index.d.ts +3 -0
  278. package/dist/reliability/confidence/index.js +3 -0
  279. package/dist/reliability/confidence/index.js.map +1 -0
  280. package/dist/reliability/confidence/manifest-loader.d.ts +8 -0
  281. package/dist/reliability/confidence/manifest-loader.js +53 -0
  282. package/dist/reliability/confidence/manifest-loader.js.map +1 -0
  283. package/dist/reliability/feedback/__tests__/interactive.test.d.ts +1 -0
  284. package/dist/reliability/feedback/__tests__/interactive.test.js +85 -0
  285. package/dist/reliability/feedback/__tests__/interactive.test.js.map +1 -0
  286. package/dist/reliability/feedback/__tests__/repo-bucket.test.d.ts +1 -0
  287. package/dist/reliability/feedback/__tests__/repo-bucket.test.js +18 -0
  288. package/dist/reliability/feedback/__tests__/repo-bucket.test.js.map +1 -0
  289. package/dist/reliability/feedback/__tests__/sender.test.d.ts +1 -0
  290. package/dist/reliability/feedback/__tests__/sender.test.js +101 -0
  291. package/dist/reliability/feedback/__tests__/sender.test.js.map +1 -0
  292. package/dist/reliability/feedback/interactive.d.ts +20 -0
  293. package/dist/reliability/feedback/interactive.js +150 -0
  294. package/dist/reliability/feedback/interactive.js.map +1 -0
  295. package/dist/reliability/feedback/repo-bucket.d.ts +2 -0
  296. package/dist/reliability/feedback/repo-bucket.js +9 -0
  297. package/dist/reliability/feedback/repo-bucket.js.map +1 -0
  298. package/dist/reliability/feedback/sender.d.ts +16 -0
  299. package/dist/reliability/feedback/sender.js +28 -0
  300. package/dist/reliability/feedback/sender.js.map +1 -0
  301. package/dist/reliability/index.d.ts +1 -0
  302. package/dist/reliability/index.js +2 -0
  303. package/dist/reliability/index.js.map +1 -0
  304. package/dist/reliability/llm-eval/__tests__/budget.test.d.ts +1 -0
  305. package/dist/reliability/llm-eval/__tests__/budget.test.js +39 -0
  306. package/dist/reliability/llm-eval/__tests__/budget.test.js.map +1 -0
  307. package/dist/reliability/llm-eval/budget.d.ts +14 -0
  308. package/dist/reliability/llm-eval/budget.js +43 -0
  309. package/dist/reliability/llm-eval/budget.js.map +1 -0
  310. package/dist/reliability/score/__tests__/formula-v1.test.d.ts +1 -0
  311. package/dist/reliability/score/__tests__/formula-v1.test.js +29 -0
  312. package/dist/reliability/score/__tests__/formula-v1.test.js.map +1 -0
  313. package/dist/reliability/score/formula-v1.d.ts +13 -0
  314. package/dist/reliability/score/formula-v1.js +19 -0
  315. package/dist/reliability/score/formula-v1.js.map +1 -0
  316. package/dist/reliability/score/version-pin.d.ts +1 -0
  317. package/dist/reliability/score/version-pin.js +2 -0
  318. package/dist/reliability/score/version-pin.js.map +1 -0
  319. package/dist/reliability/score/weight.d.ts +1 -0
  320. package/dist/reliability/score/weight.js +5 -0
  321. package/dist/reliability/score/weight.js.map +1 -0
  322. package/dist/reliability/types.d.ts +39 -0
  323. package/dist/reliability/types.js +2 -0
  324. package/dist/reliability/types.js.map +1 -0
  325. package/dist/reporters/coverage-footer.d.ts +2 -0
  326. package/dist/reporters/coverage-footer.js +7 -0
  327. package/dist/reporters/coverage-footer.js.map +1 -0
  328. package/dist/reporters/json.d.ts +5 -0
  329. package/dist/reporters/json.js +51 -0
  330. package/dist/reporters/json.js.map +1 -0
  331. package/dist/reporters/markdown.d.ts +7 -0
  332. package/dist/reporters/markdown.js +35 -0
  333. package/dist/reporters/markdown.js.map +1 -0
  334. package/dist/reporters/sarif.d.ts +5 -0
  335. package/dist/reporters/sarif.js +109 -0
  336. package/dist/reporters/sarif.js.map +1 -0
  337. package/dist/reporters/terminal-format.d.ts +34 -0
  338. package/dist/reporters/terminal-format.js +97 -0
  339. package/dist/reporters/terminal-format.js.map +1 -0
  340. package/dist/reporters/terminal.d.ts +4 -0
  341. package/dist/reporters/terminal.js +201 -0
  342. package/dist/reporters/terminal.js.map +1 -0
  343. package/dist/rule-runner.d.ts +8 -0
  344. package/dist/rule-runner.js +22 -0
  345. package/dist/rule-runner.js.map +1 -0
  346. package/dist/rules/_codemod-adapter.d.ts +16 -0
  347. package/dist/rules/_codemod-adapter.js +49 -0
  348. package/dist/rules/_codemod-adapter.js.map +1 -0
  349. package/dist/rules/_exclude.d.ts +11 -0
  350. package/dist/rules/_exclude.js +17 -0
  351. package/dist/rules/_exclude.js.map +1 -0
  352. package/dist/rules/_function-body-analysis.d.ts +82 -0
  353. package/dist/rules/_function-body-analysis.js +379 -0
  354. package/dist/rules/_function-body-analysis.js.map +1 -0
  355. package/dist/rules/_rule-module.d.ts +31 -0
  356. package/dist/rules/_rule-module.js +32 -0
  357. package/dist/rules/_rule-module.js.map +1 -0
  358. package/dist/rules/_skip-context.d.ts +36 -0
  359. package/dist/rules/_skip-context.js +128 -0
  360. package/dist/rules/_skip-context.js.map +1 -0
  361. package/dist/rules/a11y-essentials.d.ts +1 -0
  362. package/dist/rules/a11y-essentials.js +140 -0
  363. package/dist/rules/a11y-essentials.js.map +1 -0
  364. package/dist/rules/ai-surface-agents-md-quality.d.ts +22 -0
  365. package/dist/rules/ai-surface-agents-md-quality.js +233 -0
  366. package/dist/rules/ai-surface-agents-md-quality.js.map +1 -0
  367. package/dist/rules/ai-surface-component-manifest-json.d.ts +19 -0
  368. package/dist/rules/ai-surface-component-manifest-json.js +232 -0
  369. package/dist/rules/ai-surface-component-manifest-json.js.map +1 -0
  370. package/dist/rules/ai-surface-ds-index-exported.d.ts +19 -0
  371. package/dist/rules/ai-surface-ds-index-exported.js +239 -0
  372. package/dist/rules/ai-surface-ds-index-exported.js.map +1 -0
  373. package/dist/rules/components-shadow-native.d.ts +2 -0
  374. package/dist/rules/components-shadow-native.js +118 -0
  375. package/dist/rules/components-shadow-native.js.map +1 -0
  376. package/dist/rules/manifest.d.ts +5 -0
  377. package/dist/rules/manifest.js +20 -0
  378. package/dist/rules/manifest.js.map +1 -0
  379. package/dist/rules/naming-component-pascalcase.d.ts +7 -0
  380. package/dist/rules/naming-component-pascalcase.js +197 -0
  381. package/dist/rules/naming-component-pascalcase.js.map +1 -0
  382. package/dist/rules/naming-hook-prefix.d.ts +6 -0
  383. package/dist/rules/naming-hook-prefix.js +185 -0
  384. package/dist/rules/naming-hook-prefix.js.map +1 -0
  385. package/dist/rules/pack-loader.d.ts +30 -0
  386. package/dist/rules/pack-loader.js +60 -0
  387. package/dist/rules/pack-loader.js.map +1 -0
  388. package/dist/rules/pack-validator.d.ts +8 -0
  389. package/dist/rules/pack-validator.js +97 -0
  390. package/dist/rules/pack-validator.js.map +1 -0
  391. package/dist/rules/registry.d.ts +3 -0
  392. package/dist/rules/registry.js +28 -0
  393. package/dist/rules/registry.js.map +1 -0
  394. package/dist/rules/storybook-coverage.d.ts +1 -0
  395. package/dist/rules/storybook-coverage.js +49 -0
  396. package/dist/rules/storybook-coverage.js.map +1 -0
  397. package/dist/rules/templates/_regex-utils.d.ts +5 -0
  398. package/dist/rules/templates/_regex-utils.js +8 -0
  399. package/dist/rules/templates/_regex-utils.js.map +1 -0
  400. package/dist/rules/templates/a11y-jsx-template.d.ts +15 -0
  401. package/dist/rules/templates/a11y-jsx-template.js +69 -0
  402. package/dist/rules/templates/a11y-jsx-template.js.map +1 -0
  403. package/dist/rules/templates/css-property-token-compliance.d.ts +18 -0
  404. package/dist/rules/templates/css-property-token-compliance.js +56 -0
  405. package/dist/rules/templates/css-property-token-compliance.js.map +1 -0
  406. package/dist/rules/templates/import-source-restriction.d.ts +18 -0
  407. package/dist/rules/templates/import-source-restriction.js +60 -0
  408. package/dist/rules/templates/import-source-restriction.js.map +1 -0
  409. package/dist/rules/templates/js-call-token-compliance.d.ts +18 -0
  410. package/dist/rules/templates/js-call-token-compliance.js +61 -0
  411. package/dist/rules/templates/js-call-token-compliance.js.map +1 -0
  412. package/dist/rules/templates/js-prop-token-compliance.d.ts +21 -0
  413. package/dist/rules/templates/js-prop-token-compliance.js +56 -0
  414. package/dist/rules/templates/js-prop-token-compliance.js.map +1 -0
  415. package/dist/rules/templates/naming-convention.d.ts +18 -0
  416. package/dist/rules/templates/naming-convention.js +76 -0
  417. package/dist/rules/templates/naming-convention.js.map +1 -0
  418. package/dist/rules/templates/registry.d.ts +5 -0
  419. package/dist/rules/templates/registry.js +30 -0
  420. package/dist/rules/templates/registry.js.map +1 -0
  421. package/dist/rules/templates/storybook-coverage-template.d.ts +15 -0
  422. package/dist/rules/templates/storybook-coverage-template.js +58 -0
  423. package/dist/rules/templates/storybook-coverage-template.js.map +1 -0
  424. package/dist/rules/templates/tailwind-utility-class-compliance.d.ts +15 -0
  425. package/dist/rules/templates/tailwind-utility-class-compliance.js +70 -0
  426. package/dist/rules/templates/tailwind-utility-class-compliance.js.map +1 -0
  427. package/dist/rules/templates/types.d.ts +16 -0
  428. package/dist/rules/templates/types.js +2 -0
  429. package/dist/rules/templates/types.js.map +1 -0
  430. package/dist/rules/tokens-description-coverage.d.ts +15 -0
  431. package/dist/rules/tokens-description-coverage.js +193 -0
  432. package/dist/rules/tokens-description-coverage.js.map +1 -0
  433. package/dist/rules/tokens-dtcg-conformance.d.ts +47 -0
  434. package/dist/rules/tokens-dtcg-conformance.js +363 -0
  435. package/dist/rules/tokens-dtcg-conformance.js.map +1 -0
  436. package/dist/rules/tokens-no-hardcoded-color.d.ts +18 -0
  437. package/dist/rules/tokens-no-hardcoded-color.js +436 -0
  438. package/dist/rules/tokens-no-hardcoded-color.js.map +1 -0
  439. package/dist/rules/tokens-no-hardcoded-spacing.d.ts +8 -0
  440. package/dist/rules/tokens-no-hardcoded-spacing.js +193 -0
  441. package/dist/rules/tokens-no-hardcoded-spacing.js.map +1 -0
  442. package/dist/scorer.d.ts +38 -0
  443. package/dist/scorer.js +126 -0
  444. package/dist/scorer.js.map +1 -0
  445. package/dist/share/clipboard.d.ts +26 -0
  446. package/dist/share/clipboard.js +76 -0
  447. package/dist/share/clipboard.js.map +1 -0
  448. package/dist/suppression/__tests__/inline.test.d.ts +1 -0
  449. package/dist/suppression/__tests__/inline.test.js +25 -0
  450. package/dist/suppression/__tests__/inline.test.js.map +1 -0
  451. package/dist/suppression/__tests__/lyseignore.test.d.ts +1 -0
  452. package/dist/suppression/__tests__/lyseignore.test.js +32 -0
  453. package/dist/suppression/__tests__/lyseignore.test.js.map +1 -0
  454. package/dist/suppression/defaults.d.ts +1 -0
  455. package/dist/suppression/defaults.js +14 -0
  456. package/dist/suppression/defaults.js.map +1 -0
  457. package/dist/suppression/inline.d.ts +7 -0
  458. package/dist/suppression/inline.js +32 -0
  459. package/dist/suppression/inline.js.map +1 -0
  460. package/dist/suppression/lyseignore.d.ts +2 -0
  461. package/dist/suppression/lyseignore.js +22 -0
  462. package/dist/suppression/lyseignore.js.map +1 -0
  463. package/dist/telemetry/consent.d.ts +48 -0
  464. package/dist/telemetry/consent.js +139 -0
  465. package/dist/telemetry/consent.js.map +1 -0
  466. package/dist/telemetry/index.d.ts +2 -0
  467. package/dist/telemetry/index.js +3 -0
  468. package/dist/telemetry/index.js.map +1 -0
  469. package/dist/telemetry/local-log.d.ts +64 -0
  470. package/dist/telemetry/local-log.js +123 -0
  471. package/dist/telemetry/local-log.js.map +1 -0
  472. package/dist/tokens/dtcg-model.d.ts +53 -0
  473. package/dist/tokens/dtcg-model.js +18 -0
  474. package/dist/tokens/dtcg-model.js.map +1 -0
  475. package/dist/tokens/normalizer.d.ts +17 -0
  476. package/dist/tokens/normalizer.js +360 -0
  477. package/dist/tokens/normalizer.js.map +1 -0
  478. package/dist/types.d.ts +300 -0
  479. package/dist/types.js +4 -0
  480. package/dist/types.js.map +1 -0
  481. package/dist/util/git.d.ts +6 -0
  482. package/dist/util/git.js +40 -0
  483. package/dist/util/git.js.map +1 -0
  484. package/dist/util/git.test.d.ts +5 -0
  485. package/dist/util/git.test.js +42 -0
  486. package/dist/util/git.test.js.map +1 -0
  487. package/dist/util/gitignore.d.ts +9 -0
  488. package/dist/util/gitignore.js +39 -0
  489. package/dist/util/gitignore.js.map +1 -0
  490. package/dist/util/hash-deps.d.ts +6 -0
  491. package/dist/util/hash-deps.js +24 -0
  492. package/dist/util/hash-deps.js.map +1 -0
  493. package/dist/util/spinner.d.ts +41 -0
  494. package/dist/util/spinner.js +126 -0
  495. package/dist/util/spinner.js.map +1 -0
  496. package/dist/util/with-spinner.d.ts +11 -0
  497. package/dist/util/with-spinner.js +19 -0
  498. package/dist/util/with-spinner.js.map +1 -0
  499. package/dist/walker.d.ts +14 -0
  500. package/dist/walker.js +91 -0
  501. package/dist/walker.js.map +1 -0
  502. package/package.json +83 -0
  503. package/rules-manifest.json +289 -0
  504. package/schemas/v1/lyse-config.json +82 -0
  505. package/schemas/v1/lyse-event.json +68 -0
  506. package/schemas/v1/lyse-license.json +19 -0
  507. package/schemas/v1/lyse-llm-payload.json +53 -0
  508. package/schemas/v1/lyse-llm-response.json +45 -0
  509. package/schemas/v1/lyse-result.json +98 -0
  510. package/schemas/v1/lyse-rules.json +42 -0
@@ -0,0 +1,102 @@
1
+ import { mkdir, appendFile, readFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { VERSION } from "../index.js";
4
+ import { getCachedConsent } from "../telemetry/consent.js";
5
+ const HISTORY_FILE = ".lyse/history.ndjson";
6
+ const SCHEMA_VERSION = 1;
7
+ async function ensureDir(cwd) {
8
+ await mkdir(join(cwd, ".lyse"), { recursive: true });
9
+ }
10
+ async function appendLine(cwd, event) {
11
+ await ensureDir(cwd);
12
+ await appendFile(join(cwd, HISTORY_FILE), JSON.stringify(event) + "\n");
13
+ }
14
+ export async function appendAuditEvent(cwd, input, commitSha) {
15
+ await appendLine(cwd, {
16
+ schema_version: SCHEMA_VERSION,
17
+ event_type: "audit",
18
+ timestamp: new Date().toISOString(),
19
+ ...input,
20
+ commit_sha: commitSha,
21
+ lyse_version: process.env.LYSE_VERSION ?? VERSION,
22
+ });
23
+ }
24
+ export async function appendFixEvent(cwd, ruleId, confidence, count, commitSha) {
25
+ await appendLine(cwd, {
26
+ schema_version: SCHEMA_VERSION,
27
+ event_type: "auto_fix_applied",
28
+ timestamp: new Date().toISOString(),
29
+ rule_id: ruleId,
30
+ confidence,
31
+ count,
32
+ commit_sha: commitSha,
33
+ });
34
+ }
35
+ /** Opt-in guard: only emit when consent has been accepted. */
36
+ function telemetryEnabled() {
37
+ return getCachedConsent();
38
+ }
39
+ /**
40
+ * Append a CommandInvokedEvent to history.
41
+ * Only emitted when consent has been accepted.
42
+ */
43
+ export async function appendCommandInvokedEvent(cwd, command, outcome, durationMs) {
44
+ if (!telemetryEnabled())
45
+ return;
46
+ await appendLine(cwd, {
47
+ schema_version: SCHEMA_VERSION,
48
+ event_type: "command_invoked",
49
+ timestamp: new Date().toISOString(),
50
+ command,
51
+ outcome,
52
+ duration_ms: durationMs,
53
+ });
54
+ }
55
+ /**
56
+ * Append a McpSetupCompletedEvent to history.
57
+ * Only emitted when consent has been accepted.
58
+ */
59
+ export async function appendMcpSetupCompletedEvent(cwd, ide) {
60
+ if (!telemetryEnabled())
61
+ return;
62
+ await appendLine(cwd, {
63
+ schema_version: SCHEMA_VERSION,
64
+ event_type: "mcp_setup_completed",
65
+ timestamp: new Date().toISOString(),
66
+ ide,
67
+ });
68
+ }
69
+ /**
70
+ * Append an InitStepCompletedEvent to history.
71
+ * Only emitted when consent has been accepted.
72
+ */
73
+ export async function appendInitStepCompletedEvent(cwd, step) {
74
+ if (!telemetryEnabled())
75
+ return;
76
+ await appendLine(cwd, {
77
+ schema_version: SCHEMA_VERSION,
78
+ event_type: "init_step_completed",
79
+ timestamp: new Date().toISOString(),
80
+ step,
81
+ });
82
+ }
83
+ export async function readRecent(cwd, n = 10) {
84
+ try {
85
+ const raw = await readFile(join(cwd, HISTORY_FILE), "utf8");
86
+ return raw.trim().split("\n").filter(Boolean).slice(-n).map(l => JSON.parse(l));
87
+ }
88
+ catch {
89
+ return [];
90
+ }
91
+ }
92
+ export async function isFirstAutoFix(cwd) {
93
+ const events = await readRecent(cwd, 10000);
94
+ return !events.some(e => e.event_type === "auto_fix_applied");
95
+ }
96
+ export function computeDelta(current, previous) {
97
+ return {
98
+ score: current.score - previous.score,
99
+ days: Math.floor((Date.now() - new Date(previous.timestamp).getTime()) / (1000 * 60 * 60 * 24)),
100
+ };
101
+ }
102
+ //# sourceMappingURL=ndjson-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson-store.js","sourceRoot":"","sources":["../../src/history/ndjson-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { computeRepoBucket, normalizeRemoteUrl, BUCKET_SALT, type RepoBucketOptions } from "./repo-bucket.js";
@@ -0,0 +1,2 @@
1
+ export { computeRepoBucket, normalizeRemoteUrl, BUCKET_SALT } from "./repo-bucket.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAA0B,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Embedded salt — bumped per minor version of lyse.
3
+ * Rotation cadence is documented in spec v4 §14.3.
4
+ */
5
+ export declare const BUCKET_SALT = "lyse-v0-2026Q2";
6
+ /**
7
+ * Normalize a git remote URL by stripping the scheme, user/auth, and .git suffix,
8
+ * leaving host+path lowercased.
9
+ * Examples:
10
+ * git@github.com:acme/repo.git → github.com/acme/repo
11
+ * https://user:token@github.com/acme/repo → github.com/acme/repo
12
+ * ssh://git@github.com:22/acme/repo.git → github.com/acme/repo
13
+ */
14
+ export declare function normalizeRemoteUrl(url: string): string;
15
+ export interface RepoBucketOptions {
16
+ salt?: string;
17
+ }
18
+ /**
19
+ * Compute the anonymous repo_bucket fingerprint for the repo at `repoRoot`.
20
+ * Returns null if the repo has no .git, no first commit, or no remote.
21
+ */
22
+ export declare function computeRepoBucket(repoRoot: string, options?: RepoBucketOptions): string | null;
@@ -0,0 +1,78 @@
1
+ import { createHash } from "node:crypto";
2
+ import { execSync } from "node:child_process";
3
+ import { join } from "node:path";
4
+ import { existsSync } from "node:fs";
5
+ /**
6
+ * Embedded salt — bumped per minor version of lyse.
7
+ * Rotation cadence is documented in spec v4 §14.3.
8
+ */
9
+ export const BUCKET_SALT = "lyse-v0-2026Q2";
10
+ function safeExecGit(cmd, cwd) {
11
+ try {
12
+ return execSync(`git ${cmd}`, {
13
+ cwd,
14
+ encoding: "utf8",
15
+ stdio: ["ignore", "pipe", "ignore"],
16
+ timeout: 5000,
17
+ }).trim();
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * Normalize a git remote URL by stripping the scheme, user/auth, and .git suffix,
25
+ * leaving host+path lowercased.
26
+ * Examples:
27
+ * git@github.com:acme/repo.git → github.com/acme/repo
28
+ * https://user:token@github.com/acme/repo → github.com/acme/repo
29
+ * ssh://git@github.com:22/acme/repo.git → github.com/acme/repo
30
+ */
31
+ export function normalizeRemoteUrl(url) {
32
+ let s = url.trim();
33
+ // Strip scheme://
34
+ s = s.replace(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//, "");
35
+ // Strip user:token@
36
+ s = s.replace(/^[^@/]+@/, "");
37
+ // Drop port :NNNN (after host)
38
+ s = s.replace(/:\d+\//, "/");
39
+ // Replace : with / (handles git@host:owner/repo)
40
+ s = s.replace(/:/g, "/");
41
+ // Strip trailing /
42
+ s = s.replace(/\/$/, "");
43
+ // Strip .git suffix
44
+ s = s.replace(/\.git$/, "");
45
+ return s.toLowerCase();
46
+ }
47
+ function readGitInfo(repoRoot) {
48
+ const gitDir = join(repoRoot, ".git");
49
+ if (!existsSync(gitDir))
50
+ return null;
51
+ const firstCommitSha = safeExecGit("rev-list --max-parents=0 HEAD", repoRoot);
52
+ const remoteUrlRaw = safeExecGit("config --get remote.origin.url", repoRoot);
53
+ if (!firstCommitSha || !remoteUrlRaw)
54
+ return null;
55
+ return {
56
+ firstCommitSha,
57
+ normalizedRemoteUrl: normalizeRemoteUrl(remoteUrlRaw),
58
+ };
59
+ }
60
+ /**
61
+ * Compute the anonymous repo_bucket fingerprint for the repo at `repoRoot`.
62
+ * Returns null if the repo has no .git, no first commit, or no remote.
63
+ */
64
+ export function computeRepoBucket(repoRoot, options = {}) {
65
+ const info = readGitInfo(repoRoot);
66
+ if (!info)
67
+ return null;
68
+ const salt = options.salt ?? BUCKET_SALT;
69
+ const hash = createHash("sha256")
70
+ .update(info.firstCommitSha)
71
+ .update("|")
72
+ .update(info.normalizedRemoteUrl)
73
+ .update("|")
74
+ .update(salt)
75
+ .digest("hex");
76
+ return hash.slice(0, 16);
77
+ }
78
+ //# sourceMappingURL=repo-bucket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-bucket.js","sourceRoot":"","sources":["../../src/identity/repo-bucket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAO5C,SAAS,WAAW,CAAC,GAAW,EAAE,GAAW;IAC3C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,OAAO,GAAG,EAAE,EAAE;YAC5B,GAAG;YACH,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACnB,kBAAkB;IAClB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IACnD,oBAAoB;IACpB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9B,+BAA+B;IAC/B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,iDAAiD;IACjD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACzB,mBAAmB;IACnB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACzB,oBAAoB;IACpB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,cAAc,GAAG,WAAW,CAAC,+BAA+B,EAAE,QAAQ,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,WAAW,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO;QACL,cAAc;QACd,mBAAmB,EAAE,kBAAkB,CAAC,YAAY,CAAC;KACtD,CAAC;AACJ,CAAC;AAMD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,UAA6B,EAAE;IACjF,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;SAC3B,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const VERSION: string;
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ function readVersion() {
5
+ try {
6
+ const here = dirname(fileURLToPath(import.meta.url));
7
+ const pkg = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
8
+ return pkg.version;
9
+ }
10
+ catch {
11
+ return "0.0.0-dev";
12
+ }
13
+ }
14
+ export const VERSION = readVersion();
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;QACtG,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { Finding, Layer4Meta, LyseConfig } from "../types.js";
2
+ import type { AuditFlags } from "../commands/audit-flags.js";
3
+ export interface Layer4StageInput {
4
+ repoRoot: string;
5
+ config: LyseConfig;
6
+ flags: AuditFlags | undefined;
7
+ staticFindings: Finding[];
8
+ }
9
+ export interface Layer4StageResult {
10
+ augmentedFindings: Finding[];
11
+ meta: Layer4Meta;
12
+ }
13
+ /**
14
+ * v0.1 stub — LLM Layer 4 was descoped in the Phase 1 reset (#106); the default
15
+ * audit path is static-only. The prior implementation is in git history if a
16
+ * future release revisits LLM augmentation.
17
+ */
18
+ export declare function runLayer4Stage(_input: Layer4StageInput): Promise<Layer4StageResult>;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * v0.1 stub — LLM Layer 4 was descoped in the Phase 1 reset (#106); the default
3
+ * audit path is static-only. The prior implementation is in git history if a
4
+ * future release revisits LLM augmentation.
5
+ */
6
+ export async function runLayer4Stage(_input) {
7
+ return {
8
+ augmentedFindings: [],
9
+ meta: { staticOnly: true },
10
+ };
11
+ }
12
+ //# sourceMappingURL=layer4-stage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer4-stage.js","sourceRoot":"","sources":["../../src/llm/layer4-stage.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAwB;IAC3D,OAAO;QACL,iBAAiB,EAAE,EAAE;QACrB,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;KAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { ParsedTsFile, ComponentInventoryEntry, ComponentPropEntry } from "../types.js";
2
+ /**
3
+ * Extract props from a component's source file.
4
+ * Returns an array of ComponentPropEntry, or undefined if extraction fails.
5
+ *
6
+ * Extraction strategy:
7
+ * 1. Walk function declarations and arrow function exports named as PascalCase components.
8
+ * 2. Find the first parameter's type annotation.
9
+ * 3. If it's a TSTypeLiteral (inline props), extract directly.
10
+ * 4. If it's a reference (e.g. ButtonProps), look for a matching interface or type alias in the file.
11
+ * - If found, extract from it.
12
+ * - If not found (cross-file), return [{ name: "<ref>", typeText: "<ref>" }] as a placeholder.
13
+ *
14
+ * Limitation (documented): cross-file prop type resolution is deferred to v0.2.
15
+ */
16
+ export declare function extractComponentProps(componentName: string, source: string): ComponentPropEntry[] | undefined;
17
+ /**
18
+ * Build the component inventory by scanning ParsedTsFile imports for components
19
+ * from the given DS module. Optionally accepts a map of source files from the DS
20
+ * package itself to extract prop/variant information.
21
+ *
22
+ * @param module - the DS module specifier, e.g. "@acme/ui"
23
+ * @param files - parsed application files (used to count usages)
24
+ * @param componentSources - optional map of component name → source text for prop extraction
25
+ */
26
+ export declare function buildComponentInventory(module: string, files: ParsedTsFile[], componentSources?: Map<string, string>): ComponentInventoryEntry[];
@@ -0,0 +1,285 @@
1
+ import { parse } from "@babel/parser";
2
+ import _traverse from "@babel/traverse";
3
+ // Babel CJS-vs-ESM interop: the callable lives at .default in some environments.
4
+ const traverse = (_traverse.default ??
5
+ _traverse);
6
+ /**
7
+ * Extract the string value from a TSLiteralType node (string literals only).
8
+ * Returns undefined for non-string literals.
9
+ */
10
+ function stringLiteralValue(node) {
11
+ if (node.type !== "TSLiteralType")
12
+ return undefined;
13
+ const lit = node.literal;
14
+ if (lit.type === "StringLiteral")
15
+ return lit.value;
16
+ return undefined;
17
+ }
18
+ /**
19
+ * Check whether a TSType is a string-literal union (all members are string literals).
20
+ * Returns the variant strings if true, undefined otherwise.
21
+ */
22
+ function extractStringLiteralUnion(typeAnnotation) {
23
+ if (typeAnnotation.type !== "TSUnionType")
24
+ return undefined;
25
+ const union = typeAnnotation;
26
+ const variants = [];
27
+ for (const member of union.types) {
28
+ const val = stringLiteralValue(member);
29
+ if (val === undefined)
30
+ return undefined; // mixed union — not a pure string-literal union
31
+ }
32
+ // Second pass to build the list (only reached if all members are string literals)
33
+ for (const member of union.types) {
34
+ variants.push(stringLiteralValue(member));
35
+ }
36
+ return variants.length > 0 ? variants : undefined;
37
+ }
38
+ /**
39
+ * Extract the raw type text from source using AST node start/end positions.
40
+ */
41
+ function sliceTypeText(source, node) {
42
+ if (node.start != null && node.end != null) {
43
+ return source.slice(node.start, node.end).trim();
44
+ }
45
+ return "";
46
+ }
47
+ /**
48
+ * Extract props from a TypeScript object type annotation (TSTypeLiteral).
49
+ * Also handles destructured parameter defaults.
50
+ *
51
+ * @param source - full source text of the file (for slicing type annotations)
52
+ * @param typeMembers - the members of a TSTypeLiteral or TSPropertySignature list
53
+ * @param defaultValues - map of propName → defaultValue from destructuring (may be empty)
54
+ */
55
+ function extractPropsFromTypeMembers(source, typeMembers, defaultValues) {
56
+ const props = [];
57
+ for (const member of typeMembers) {
58
+ if (member.type !== "TSPropertySignature")
59
+ continue;
60
+ const propSig = member;
61
+ if (propSig.key.type !== "Identifier")
62
+ continue;
63
+ const propName = propSig.key.name;
64
+ let typeText;
65
+ let isVariantUnion;
66
+ let variants;
67
+ const ann = propSig.typeAnnotation?.typeAnnotation;
68
+ if (ann) {
69
+ typeText = sliceTypeText(source, ann);
70
+ const extracted = extractStringLiteralUnion(ann);
71
+ if (extracted) {
72
+ isVariantUnion = true;
73
+ variants = extracted;
74
+ }
75
+ }
76
+ const defaultValue = defaultValues.get(propName);
77
+ const entry = {
78
+ name: propName,
79
+ ...(typeText !== undefined && { typeText }),
80
+ ...(propSig.optional === true && { isOptional: true }),
81
+ ...(defaultValue !== undefined && { defaultValue }),
82
+ ...(isVariantUnion !== undefined && { isVariantUnion }),
83
+ ...(variants !== undefined && { variants }),
84
+ };
85
+ props.push(entry);
86
+ }
87
+ return props;
88
+ }
89
+ /**
90
+ * Extract default values from a destructured function parameter.
91
+ * e.g. `function Button({ variant = "primary", size = "md" }: ButtonProps)`
92
+ * Returns a map of propName → defaultValue (as source text).
93
+ */
94
+ function extractDestructuringDefaults(param) {
95
+ const defaults = new Map();
96
+ if (param.type !== "ObjectPattern")
97
+ return defaults;
98
+ for (const prop of param.properties) {
99
+ if (prop.type !== "ObjectProperty")
100
+ continue;
101
+ const objProp = prop;
102
+ if (objProp.key.type !== "Identifier")
103
+ continue;
104
+ if (!objProp.value || objProp.value.type !== "AssignmentPattern")
105
+ continue;
106
+ const assign = objProp.value;
107
+ const key = objProp.key.name;
108
+ // Extract the right-hand side as text
109
+ if (assign.right.type === "StringLiteral") {
110
+ defaults.set(key, assign.right.value);
111
+ }
112
+ else if (assign.right.type === "NumericLiteral") {
113
+ defaults.set(key, String(assign.right.value));
114
+ }
115
+ else if (assign.right.type === "BooleanLiteral") {
116
+ defaults.set(key, String(assign.right.value));
117
+ }
118
+ // Complex default expressions are not extracted
119
+ }
120
+ return defaults;
121
+ }
122
+ /**
123
+ * Extract props from a component's source file.
124
+ * Returns an array of ComponentPropEntry, or undefined if extraction fails.
125
+ *
126
+ * Extraction strategy:
127
+ * 1. Walk function declarations and arrow function exports named as PascalCase components.
128
+ * 2. Find the first parameter's type annotation.
129
+ * 3. If it's a TSTypeLiteral (inline props), extract directly.
130
+ * 4. If it's a reference (e.g. ButtonProps), look for a matching interface or type alias in the file.
131
+ * - If found, extract from it.
132
+ * - If not found (cross-file), return [{ name: "<ref>", typeText: "<ref>" }] as a placeholder.
133
+ *
134
+ * Limitation (documented): cross-file prop type resolution is deferred to v0.2.
135
+ */
136
+ export function extractComponentProps(componentName, source) {
137
+ let ast;
138
+ try {
139
+ ast = parse(source, {
140
+ sourceType: "module",
141
+ plugins: ["typescript", "jsx"],
142
+ errorRecovery: true,
143
+ });
144
+ }
145
+ catch {
146
+ return undefined;
147
+ }
148
+ // Collect all top-level interface/type alias declarations for lookup
149
+ const typeDeclarations = new Map();
150
+ try {
151
+ traverse(ast, {
152
+ TSInterfaceDeclaration(path) {
153
+ const members = path.node.body.body;
154
+ typeDeclarations.set(path.node.id.name, members);
155
+ },
156
+ TSTypeAliasDeclaration(path) {
157
+ const ann = path.node.typeAnnotation;
158
+ if (ann.type === "TSTypeLiteral") {
159
+ typeDeclarations.set(path.node.id.name, ann.members);
160
+ }
161
+ },
162
+ });
163
+ }
164
+ catch {
165
+ return undefined;
166
+ }
167
+ // Now walk for the component function and extract props
168
+ let foundProps;
169
+ const extractFromFunctionParam = (params) => {
170
+ if (params.length === 0)
171
+ return [];
172
+ const firstParam = params[0];
173
+ // Gather destructuring defaults
174
+ let defaultValues = new Map();
175
+ if (firstParam.type === "ObjectPattern") {
176
+ defaultValues = extractDestructuringDefaults(firstParam);
177
+ }
178
+ // Resolve the type annotation
179
+ let typeAnnotation;
180
+ if (firstParam.type === "Identifier" &&
181
+ firstParam.typeAnnotation?.type === "TSTypeAnnotation") {
182
+ typeAnnotation = firstParam.typeAnnotation.typeAnnotation;
183
+ }
184
+ else if (firstParam.type === "ObjectPattern" &&
185
+ firstParam.typeAnnotation?.type === "TSTypeAnnotation") {
186
+ typeAnnotation = firstParam.typeAnnotation.typeAnnotation;
187
+ }
188
+ else if (firstParam.type === "ObjectPattern") {
189
+ // Destructured object without type annotation — no type info available
190
+ return defaultValues.size > 0
191
+ ? [...defaultValues.entries()].map(([name, defaultValue]) => ({ name, defaultValue }))
192
+ : [];
193
+ }
194
+ if (!typeAnnotation)
195
+ return [];
196
+ if (typeAnnotation.type === "TSTypeLiteral") {
197
+ // Inline props object
198
+ return extractPropsFromTypeMembers(source, typeAnnotation.members, defaultValues);
199
+ }
200
+ if (typeAnnotation.type === "TSTypeReference") {
201
+ const ref = typeAnnotation;
202
+ if (ref.typeName.type === "Identifier") {
203
+ const refName = ref.typeName.name;
204
+ // Look up in same-file declarations
205
+ const members = typeDeclarations.get(refName);
206
+ if (members) {
207
+ return extractPropsFromTypeMembers(source, members, defaultValues);
208
+ }
209
+ // Cross-file reference: return a placeholder entry.
210
+ // Full cross-file resolution deferred to v0.2.
211
+ return [{ name: refName, typeText: refName }];
212
+ }
213
+ }
214
+ // "any", intersections, conditionals, etc. — skip variant extraction
215
+ const typeText = sliceTypeText(source, typeAnnotation);
216
+ return typeText ? [{ name: "props", typeText }] : [];
217
+ };
218
+ try {
219
+ traverse(ast, {
220
+ FunctionDeclaration(path) {
221
+ if (foundProps !== undefined)
222
+ return;
223
+ const id = path.node.id;
224
+ if (!id || id.name !== componentName)
225
+ return;
226
+ // Skip generics with complex constraints — just extract from params
227
+ foundProps = extractFromFunctionParam(path.node.params) ?? undefined;
228
+ path.stop();
229
+ },
230
+ VariableDeclarator(path) {
231
+ if (foundProps !== undefined)
232
+ return;
233
+ const id = path.node.id;
234
+ if (id.type !== "Identifier" || id.name !== componentName)
235
+ return;
236
+ const init = path.node.init;
237
+ if (!init)
238
+ return;
239
+ // Arrow function: const Button = (...) => ...
240
+ if (init.type === "ArrowFunctionExpression") {
241
+ foundProps = extractFromFunctionParam(init.params) ?? undefined;
242
+ path.stop();
243
+ }
244
+ },
245
+ });
246
+ }
247
+ catch {
248
+ return undefined;
249
+ }
250
+ return foundProps;
251
+ }
252
+ /**
253
+ * Build the component inventory by scanning ParsedTsFile imports for components
254
+ * from the given DS module. Optionally accepts a map of source files from the DS
255
+ * package itself to extract prop/variant information.
256
+ *
257
+ * @param module - the DS module specifier, e.g. "@acme/ui"
258
+ * @param files - parsed application files (used to count usages)
259
+ * @param componentSources - optional map of component name → source text for prop extraction
260
+ */
261
+ export function buildComponentInventory(module, files, componentSources) {
262
+ const counts = new Map();
263
+ for (const f of files) {
264
+ for (const imp of f.imports) {
265
+ if (imp.module !== module)
266
+ continue;
267
+ for (const n of imp.named)
268
+ counts.set(n, (counts.get(n) ?? 0) + 1);
269
+ }
270
+ }
271
+ return [...counts.entries()].map(([name, usageCount]) => {
272
+ const entry = { name, module, usageCount };
273
+ if (componentSources) {
274
+ const src = componentSources.get(name);
275
+ if (src !== undefined) {
276
+ const props = extractComponentProps(name, src);
277
+ if (props !== undefined) {
278
+ entry.props = props;
279
+ }
280
+ }
281
+ }
282
+ return entry;
283
+ });
284
+ }
285
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/loaders/components.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { StoryIndex } from "../types.js";
2
+ export declare function loadStories(root: string): Promise<StoryIndex | null>;