@sudosandwich/limps-headless 0.1.3

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 (335) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +339 -0
  3. package/bin/limps-headless +2 -0
  4. package/dist/analysis/index.d.ts +6 -0
  5. package/dist/analysis/index.d.ts.map +1 -0
  6. package/dist/analysis/index.js +6 -0
  7. package/dist/analysis/index.js.map +1 -0
  8. package/dist/analysis/ir/build-ir.d.ts +10 -0
  9. package/dist/analysis/ir/build-ir.d.ts.map +1 -0
  10. package/dist/analysis/ir/build-ir.js +102 -0
  11. package/dist/analysis/ir/build-ir.js.map +1 -0
  12. package/dist/analysis/ir/types.d.ts +44 -0
  13. package/dist/analysis/ir/types.d.ts.map +1 -0
  14. package/dist/analysis/ir/types.js +2 -0
  15. package/dist/analysis/ir/types.js.map +1 -0
  16. package/dist/analysis/module-graph.d.ts +20 -0
  17. package/dist/analysis/module-graph.d.ts.map +1 -0
  18. package/dist/analysis/module-graph.js +104 -0
  19. package/dist/analysis/module-graph.js.map +1 -0
  20. package/dist/analysis/passes/behavior-evidence.d.ts +9 -0
  21. package/dist/analysis/passes/behavior-evidence.d.ts.map +1 -0
  22. package/dist/analysis/passes/behavior-evidence.js +80 -0
  23. package/dist/analysis/passes/behavior-evidence.js.map +1 -0
  24. package/dist/analysis/passes/import-evidence.d.ts +3 -0
  25. package/dist/analysis/passes/import-evidence.d.ts.map +1 -0
  26. package/dist/analysis/passes/import-evidence.js +58 -0
  27. package/dist/analysis/passes/import-evidence.js.map +1 -0
  28. package/dist/analysis/passes/index.d.ts +15 -0
  29. package/dist/analysis/passes/index.d.ts.map +1 -0
  30. package/dist/analysis/passes/index.js +21 -0
  31. package/dist/analysis/passes/index.js.map +1 -0
  32. package/dist/analysis/passes/jsx-evidence.d.ts +8 -0
  33. package/dist/analysis/passes/jsx-evidence.d.ts.map +1 -0
  34. package/dist/analysis/passes/jsx-evidence.js +149 -0
  35. package/dist/analysis/passes/jsx-evidence.js.map +1 -0
  36. package/dist/analysis/ts-program.d.ts +12 -0
  37. package/dist/analysis/ts-program.d.ts.map +1 -0
  38. package/dist/analysis/ts-program.js +59 -0
  39. package/dist/analysis/ts-program.js.map +1 -0
  40. package/dist/analyzer/disambiguator.d.ts +20 -0
  41. package/dist/analyzer/disambiguator.d.ts.map +1 -0
  42. package/dist/analyzer/disambiguator.js +83 -0
  43. package/dist/analyzer/disambiguator.js.map +1 -0
  44. package/dist/analyzer/index.d.ts +26 -0
  45. package/dist/analyzer/index.d.ts.map +1 -0
  46. package/dist/analyzer/index.js +68 -0
  47. package/dist/analyzer/index.js.map +1 -0
  48. package/dist/analyzer/parser.d.ts +23 -0
  49. package/dist/analyzer/parser.d.ts.map +1 -0
  50. package/dist/analyzer/parser.js +58 -0
  51. package/dist/analyzer/parser.js.map +1 -0
  52. package/dist/analyzer/patterns.d.ts +42 -0
  53. package/dist/analyzer/patterns.d.ts.map +1 -0
  54. package/dist/analyzer/patterns.js +206 -0
  55. package/dist/analyzer/patterns.js.map +1 -0
  56. package/dist/analyzer/props.d.ts +16 -0
  57. package/dist/analyzer/props.d.ts.map +1 -0
  58. package/dist/analyzer/props.js +235 -0
  59. package/dist/analyzer/props.js.map +1 -0
  60. package/dist/analyzer/rules/checkbox-switch-toggle.d.ts +10 -0
  61. package/dist/analyzer/rules/checkbox-switch-toggle.d.ts.map +1 -0
  62. package/dist/analyzer/rules/checkbox-switch-toggle.js +26 -0
  63. package/dist/analyzer/rules/checkbox-switch-toggle.js.map +1 -0
  64. package/dist/analyzer/rules/dialog-popover.d.ts +10 -0
  65. package/dist/analyzer/rules/dialog-popover.d.ts.map +1 -0
  66. package/dist/analyzer/rules/dialog-popover.js +25 -0
  67. package/dist/analyzer/rules/dialog-popover.js.map +1 -0
  68. package/dist/analyzer/rules/index.d.ts +24 -0
  69. package/dist/analyzer/rules/index.d.ts.map +1 -0
  70. package/dist/analyzer/rules/index.js +51 -0
  71. package/dist/analyzer/rules/index.js.map +1 -0
  72. package/dist/analyzer/rules/tooltip-hovercard.d.ts +10 -0
  73. package/dist/analyzer/rules/tooltip-hovercard.d.ts.map +1 -0
  74. package/dist/analyzer/rules/tooltip-hovercard.js +21 -0
  75. package/dist/analyzer/rules/tooltip-hovercard.js.map +1 -0
  76. package/dist/analyzer/scorer.d.ts +12 -0
  77. package/dist/analyzer/scorer.d.ts.map +1 -0
  78. package/dist/analyzer/scorer.js +171 -0
  79. package/dist/analyzer/scorer.js.map +1 -0
  80. package/dist/analyzer/weights.d.ts +28 -0
  81. package/dist/analyzer/weights.d.ts.map +1 -0
  82. package/dist/analyzer/weights.js +40 -0
  83. package/dist/analyzer/weights.js.map +1 -0
  84. package/dist/audit/analyses/migration.d.ts +42 -0
  85. package/dist/audit/analyses/migration.d.ts.map +1 -0
  86. package/dist/audit/analyses/migration.js +91 -0
  87. package/dist/audit/analyses/migration.js.map +1 -0
  88. package/dist/audit/discover-components.d.ts +7 -0
  89. package/dist/audit/discover-components.d.ts.map +1 -0
  90. package/dist/audit/discover-components.js +486 -0
  91. package/dist/audit/discover-components.js.map +1 -0
  92. package/dist/audit/generate-report.d.ts +28 -0
  93. package/dist/audit/generate-report.d.ts.map +1 -0
  94. package/dist/audit/generate-report.js +333 -0
  95. package/dist/audit/generate-report.js.map +1 -0
  96. package/dist/audit/index.d.ts +8 -0
  97. package/dist/audit/index.d.ts.map +1 -0
  98. package/dist/audit/index.js +8 -0
  99. package/dist/audit/index.js.map +1 -0
  100. package/dist/audit/run-audit.d.ts +33 -0
  101. package/dist/audit/run-audit.d.ts.map +1 -0
  102. package/dist/audit/run-audit.js +287 -0
  103. package/dist/audit/run-audit.js.map +1 -0
  104. package/dist/audit/types.d.ts +135 -0
  105. package/dist/audit/types.d.ts.map +1 -0
  106. package/dist/audit/types.js +5 -0
  107. package/dist/audit/types.js.map +1 -0
  108. package/dist/cache/index.d.ts +110 -0
  109. package/dist/cache/index.d.ts.map +1 -0
  110. package/dist/cache/index.js +176 -0
  111. package/dist/cache/index.js.map +1 -0
  112. package/dist/cache/storage.d.ts +73 -0
  113. package/dist/cache/storage.d.ts.map +1 -0
  114. package/dist/cache/storage.js +176 -0
  115. package/dist/cache/storage.js.map +1 -0
  116. package/dist/cache/ttl.d.ts +62 -0
  117. package/dist/cache/ttl.d.ts.map +1 -0
  118. package/dist/cache/ttl.js +96 -0
  119. package/dist/cache/ttl.js.map +1 -0
  120. package/dist/cli/commands/analyze.d.ts +6 -0
  121. package/dist/cli/commands/analyze.d.ts.map +1 -0
  122. package/dist/cli/commands/analyze.js +43 -0
  123. package/dist/cli/commands/analyze.js.map +1 -0
  124. package/dist/cli/commands/audit.d.ts +6 -0
  125. package/dist/cli/commands/audit.d.ts.map +1 -0
  126. package/dist/cli/commands/audit.js +73 -0
  127. package/dist/cli/commands/audit.js.map +1 -0
  128. package/dist/cli/commands/check-updates.d.ts +6 -0
  129. package/dist/cli/commands/check-updates.d.ts.map +1 -0
  130. package/dist/cli/commands/check-updates.js +34 -0
  131. package/dist/cli/commands/check-updates.js.map +1 -0
  132. package/dist/cli/commands/diff.d.ts +7 -0
  133. package/dist/cli/commands/diff.d.ts.map +1 -0
  134. package/dist/cli/commands/diff.js +48 -0
  135. package/dist/cli/commands/diff.js.map +1 -0
  136. package/dist/cli/commands/extract.d.ts +6 -0
  137. package/dist/cli/commands/extract.d.ts.map +1 -0
  138. package/dist/cli/commands/extract.js +42 -0
  139. package/dist/cli/commands/extract.js.map +1 -0
  140. package/dist/cli/commands/list.d.ts +6 -0
  141. package/dist/cli/commands/list.d.ts.map +1 -0
  142. package/dist/cli/commands/list.js +33 -0
  143. package/dist/cli/commands/list.js.map +1 -0
  144. package/dist/cli/flags.d.ts +9 -0
  145. package/dist/cli/flags.d.ts.map +1 -0
  146. package/dist/cli/flags.js +22 -0
  147. package/dist/cli/flags.js.map +1 -0
  148. package/dist/cli/index.d.ts +5 -0
  149. package/dist/cli/index.d.ts.map +1 -0
  150. package/dist/cli/index.js +40 -0
  151. package/dist/cli/index.js.map +1 -0
  152. package/dist/config.d.ts +19 -0
  153. package/dist/config.d.ts.map +1 -0
  154. package/dist/config.js +23 -0
  155. package/dist/config.js.map +1 -0
  156. package/dist/differ/hints.d.ts +21 -0
  157. package/dist/differ/hints.d.ts.map +1 -0
  158. package/dist/differ/hints.js +105 -0
  159. package/dist/differ/hints.js.map +1 -0
  160. package/dist/differ/index.d.ts +25 -0
  161. package/dist/differ/index.d.ts.map +1 -0
  162. package/dist/differ/index.js +115 -0
  163. package/dist/differ/index.js.map +1 -0
  164. package/dist/differ/props.d.ts +36 -0
  165. package/dist/differ/props.d.ts.map +1 -0
  166. package/dist/differ/props.js +210 -0
  167. package/dist/differ/props.js.map +1 -0
  168. package/dist/differ/severity.d.ts +31 -0
  169. package/dist/differ/severity.d.ts.map +1 -0
  170. package/dist/differ/severity.js +65 -0
  171. package/dist/differ/severity.js.map +1 -0
  172. package/dist/differ/types.d.ts +109 -0
  173. package/dist/differ/types.d.ts.map +1 -0
  174. package/dist/differ/types.js +5 -0
  175. package/dist/differ/types.js.map +1 -0
  176. package/dist/extractor/classifier.d.ts +30 -0
  177. package/dist/extractor/classifier.d.ts.map +1 -0
  178. package/dist/extractor/classifier.js +150 -0
  179. package/dist/extractor/classifier.js.map +1 -0
  180. package/dist/extractor/forward-ref.d.ts +28 -0
  181. package/dist/extractor/forward-ref.d.ts.map +1 -0
  182. package/dist/extractor/forward-ref.js +134 -0
  183. package/dist/extractor/forward-ref.js.map +1 -0
  184. package/dist/extractor/index.d.ts +25 -0
  185. package/dist/extractor/index.d.ts.map +1 -0
  186. package/dist/extractor/index.js +43 -0
  187. package/dist/extractor/index.js.map +1 -0
  188. package/dist/extractor/interface.d.ts +40 -0
  189. package/dist/extractor/interface.d.ts.map +1 -0
  190. package/dist/extractor/interface.js +233 -0
  191. package/dist/extractor/interface.js.map +1 -0
  192. package/dist/extractor/jsdoc.d.ts +24 -0
  193. package/dist/extractor/jsdoc.d.ts.map +1 -0
  194. package/dist/extractor/jsdoc.js +74 -0
  195. package/dist/extractor/jsdoc.js.map +1 -0
  196. package/dist/extractor/project.d.ts +17 -0
  197. package/dist/extractor/project.d.ts.map +1 -0
  198. package/dist/extractor/project.js +33 -0
  199. package/dist/extractor/project.js.map +1 -0
  200. package/dist/extractor/props.d.ts +24 -0
  201. package/dist/extractor/props.d.ts.map +1 -0
  202. package/dist/extractor/props.js +78 -0
  203. package/dist/extractor/props.js.map +1 -0
  204. package/dist/extractor/type-resolver.d.ts +32 -0
  205. package/dist/extractor/type-resolver.d.ts.map +1 -0
  206. package/dist/extractor/type-resolver.js +129 -0
  207. package/dist/extractor/type-resolver.js.map +1 -0
  208. package/dist/fetcher/index.d.ts +7 -0
  209. package/dist/fetcher/index.d.ts.map +1 -0
  210. package/dist/fetcher/index.js +7 -0
  211. package/dist/fetcher/index.js.map +1 -0
  212. package/dist/fetcher/npm-registry.d.ts +45 -0
  213. package/dist/fetcher/npm-registry.d.ts.map +1 -0
  214. package/dist/fetcher/npm-registry.js +217 -0
  215. package/dist/fetcher/npm-registry.js.map +1 -0
  216. package/dist/fetcher/unified-package.d.ts +27 -0
  217. package/dist/fetcher/unified-package.d.ts.map +1 -0
  218. package/dist/fetcher/unified-package.js +99 -0
  219. package/dist/fetcher/unified-package.js.map +1 -0
  220. package/dist/fetcher/unpkg.d.ts +20 -0
  221. package/dist/fetcher/unpkg.d.ts.map +1 -0
  222. package/dist/fetcher/unpkg.js +58 -0
  223. package/dist/fetcher/unpkg.js.map +1 -0
  224. package/dist/index.d.ts +18 -0
  225. package/dist/index.d.ts.map +1 -0
  226. package/dist/index.js +41 -0
  227. package/dist/index.js.map +1 -0
  228. package/dist/providers/base.d.ts +10 -0
  229. package/dist/providers/base.d.ts.map +1 -0
  230. package/dist/providers/base.js +80 -0
  231. package/dist/providers/base.js.map +1 -0
  232. package/dist/providers/index.d.ts +10 -0
  233. package/dist/providers/index.d.ts.map +1 -0
  234. package/dist/providers/index.js +10 -0
  235. package/dist/providers/index.js.map +1 -0
  236. package/dist/providers/interface.d.ts +56 -0
  237. package/dist/providers/interface.d.ts.map +1 -0
  238. package/dist/providers/interface.js +5 -0
  239. package/dist/providers/interface.js.map +1 -0
  240. package/dist/providers/radix-backend.d.ts +11 -0
  241. package/dist/providers/radix-backend.d.ts.map +1 -0
  242. package/dist/providers/radix-backend.js +107 -0
  243. package/dist/providers/radix-backend.js.map +1 -0
  244. package/dist/providers/radix.d.ts +6 -0
  245. package/dist/providers/radix.d.ts.map +1 -0
  246. package/dist/providers/radix.js +21 -0
  247. package/dist/providers/radix.js.map +1 -0
  248. package/dist/providers/registry.d.ts +17 -0
  249. package/dist/providers/registry.d.ts.map +1 -0
  250. package/dist/providers/registry.js +55 -0
  251. package/dist/providers/registry.js.map +1 -0
  252. package/dist/rules/engine.d.ts +4 -0
  253. package/dist/rules/engine.d.ts.map +1 -0
  254. package/dist/rules/engine.js +37 -0
  255. package/dist/rules/engine.js.map +1 -0
  256. package/dist/rules/index.d.ts +6 -0
  257. package/dist/rules/index.d.ts.map +1 -0
  258. package/dist/rules/index.js +6 -0
  259. package/dist/rules/index.js.map +1 -0
  260. package/dist/rules/predicates.d.ts +10 -0
  261. package/dist/rules/predicates.d.ts.map +1 -0
  262. package/dist/rules/predicates.js +93 -0
  263. package/dist/rules/predicates.js.map +1 -0
  264. package/dist/rules/rulesets/base-ui.d.ts +3 -0
  265. package/dist/rules/rulesets/base-ui.d.ts.map +1 -0
  266. package/dist/rules/rulesets/base-ui.js +65 -0
  267. package/dist/rules/rulesets/base-ui.js.map +1 -0
  268. package/dist/rules/rulesets/radix-legacy.d.ts +3 -0
  269. package/dist/rules/rulesets/radix-legacy.d.ts.map +1 -0
  270. package/dist/rules/rulesets/radix-legacy.js +38 -0
  271. package/dist/rules/rulesets/radix-legacy.js.map +1 -0
  272. package/dist/rules/types.d.ts +57 -0
  273. package/dist/rules/types.d.ts.map +1 -0
  274. package/dist/rules/types.js +2 -0
  275. package/dist/rules/types.js.map +1 -0
  276. package/dist/signatures/disambiguation.d.ts +30 -0
  277. package/dist/signatures/disambiguation.d.ts.map +1 -0
  278. package/dist/signatures/disambiguation.js +99 -0
  279. package/dist/signatures/disambiguation.js.map +1 -0
  280. package/dist/signatures/distinguishing.d.ts +29 -0
  281. package/dist/signatures/distinguishing.d.ts.map +1 -0
  282. package/dist/signatures/distinguishing.js +108 -0
  283. package/dist/signatures/distinguishing.js.map +1 -0
  284. package/dist/signatures/generator.d.ts +20 -0
  285. package/dist/signatures/generator.d.ts.map +1 -0
  286. package/dist/signatures/generator.js +147 -0
  287. package/dist/signatures/generator.js.map +1 -0
  288. package/dist/signatures/index.d.ts +10 -0
  289. package/dist/signatures/index.d.ts.map +1 -0
  290. package/dist/signatures/index.js +10 -0
  291. package/dist/signatures/index.js.map +1 -0
  292. package/dist/signatures/inference.d.ts +37 -0
  293. package/dist/signatures/inference.d.ts.map +1 -0
  294. package/dist/signatures/inference.js +132 -0
  295. package/dist/signatures/inference.js.map +1 -0
  296. package/dist/tools/analyze-component.d.ts +41 -0
  297. package/dist/tools/analyze-component.d.ts.map +1 -0
  298. package/dist/tools/analyze-component.js +274 -0
  299. package/dist/tools/analyze-component.js.map +1 -0
  300. package/dist/tools/check-updates.d.ts +33 -0
  301. package/dist/tools/check-updates.d.ts.map +1 -0
  302. package/dist/tools/check-updates.js +81 -0
  303. package/dist/tools/check-updates.js.map +1 -0
  304. package/dist/tools/diff-versions.d.ts +39 -0
  305. package/dist/tools/diff-versions.d.ts.map +1 -0
  306. package/dist/tools/diff-versions.js +78 -0
  307. package/dist/tools/diff-versions.js.map +1 -0
  308. package/dist/tools/extract-primitive.d.ts +50 -0
  309. package/dist/tools/extract-primitive.d.ts.map +1 -0
  310. package/dist/tools/extract-primitive.js +145 -0
  311. package/dist/tools/extract-primitive.js.map +1 -0
  312. package/dist/tools/generate-report.d.ts +29 -0
  313. package/dist/tools/generate-report.d.ts.map +1 -0
  314. package/dist/tools/generate-report.js +36 -0
  315. package/dist/tools/generate-report.js.map +1 -0
  316. package/dist/tools/index.d.ts +11 -0
  317. package/dist/tools/index.d.ts.map +1 -0
  318. package/dist/tools/index.js +11 -0
  319. package/dist/tools/index.js.map +1 -0
  320. package/dist/tools/list-primitives.d.ts +41 -0
  321. package/dist/tools/list-primitives.d.ts.map +1 -0
  322. package/dist/tools/list-primitives.js +74 -0
  323. package/dist/tools/list-primitives.js.map +1 -0
  324. package/dist/tools/run-audit.d.ts +43 -0
  325. package/dist/tools/run-audit.d.ts.map +1 -0
  326. package/dist/tools/run-audit.js +60 -0
  327. package/dist/tools/run-audit.js.map +1 -0
  328. package/dist/types/index.d.ts +143 -0
  329. package/dist/types/index.d.ts.map +1 -0
  330. package/dist/types/index.js +5 -0
  331. package/dist/types/index.js.map +1 -0
  332. package/docs/architecture.md +88 -0
  333. package/docs/providers.md +47 -0
  334. package/docs/tools.md +143 -0
  335. package/package.json +59 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Paul Breuler
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,339 @@
1
+ # @sudosandwich/limps-headless
2
+
3
+ limps extension for headless UI contract extraction, semantic analysis, and drift detection.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @sudosandwich/limps-headless
9
+ ```
10
+
11
+ **Peer Dependencies**: Requires `@sudosandwich/limps@^2.0.0`.
12
+
13
+ ## Quick Start
14
+
15
+ 1. Add the extension to your limps config (see below).
16
+ 2. Restart your limps MCP server.
17
+ 3. Use the MCP tools from your client (Cursor, Claude Desktop, etc.).
18
+
19
+ Example `limps.config.json`:
20
+
21
+ ```json
22
+ {
23
+ "extensions": ["@sudosandwich/limps-headless"]
24
+ }
25
+ ```
26
+
27
+ ## CLI
28
+
29
+ You can use the standalone CLI for local workflows. **Run from your project directory** so that `analyze` can resolve file paths (paths are relative to the current working directory):
30
+
31
+ ```bash
32
+ cd /path/to/your/react-app
33
+ limps-headless list --version latest
34
+ limps-headless extract dialog
35
+ limps-headless analyze src/components/ui/button.tsx
36
+ limps-headless audit --files src/components/ui/button.tsx src/components/ui/select.tsx # full audit; output in .limps-headless/reports
37
+ limps-headless diff <from-version> --to <to-version> # e.g. diff 1.0.0 --to latest
38
+ limps-headless check-updates --refresh
39
+ ```
40
+
41
+ **Audit output:** `limps-headless audit` writes to `.limps-headless/reports/` (override with `-o`): `audit-report.md`, `audit-report.json`, `analysis.json`, `diff.json`, `updates.json`.
42
+
43
+ Pass `--json` to any command for raw JSON output.
44
+
45
+ ## MCP Tools
46
+
47
+ Tool reference: see `docs/tools.md` for detailed schemas and examples.
48
+
49
+ ### `headless_list_primitives`
50
+
51
+ List all available Radix UI primitives with package names and descriptions.
52
+
53
+ **Input**
54
+
55
+ ```json
56
+ {
57
+ "version": "latest",
58
+ "provider": "radix"
59
+ }
60
+ ```
61
+
62
+ **Output**
63
+
64
+ ```json
65
+ {
66
+ "version": "1.1.2",
67
+ "primitives": [
68
+ {
69
+ "name": "dialog",
70
+ "package": "@radix-ui/react-dialog",
71
+ "description": "A modal dialog overlay"
72
+ },
73
+ {
74
+ "name": "popover",
75
+ "package": "@radix-ui/react-popover",
76
+ "description": "A popup that appears from a trigger"
77
+ }
78
+ ]
79
+ }
80
+ ```
81
+
82
+ ### `headless_extract_primitive`
83
+
84
+ Extract the behavioral contract for a single Radix primitive, including sub-components, prop metadata, and semantic classification.
85
+
86
+ **Input**
87
+
88
+ ```json
89
+ {
90
+ "primitive": "dialog",
91
+ "version": "latest",
92
+ "provider": "radix"
93
+ }
94
+ ```
95
+
96
+ **Output**
97
+
98
+ ```json
99
+ {
100
+ "primitive": "Dialog",
101
+ "package": "@radix-ui/react-dialog",
102
+ "version": "1.1.2",
103
+ "behavior": {
104
+ "statePattern": "binary",
105
+ "compositionPattern": "compound",
106
+ "renderingPattern": "portal-conditional"
107
+ },
108
+ "subComponents": [
109
+ {
110
+ "name": "Root",
111
+ "props": [
112
+ {
113
+ "name": "open",
114
+ "type": "boolean",
115
+ "required": false,
116
+ "category": "state"
117
+ },
118
+ {
119
+ "name": "onOpenChange",
120
+ "type": "(open: boolean) => void",
121
+ "required": false,
122
+ "category": "event"
123
+ }
124
+ ]
125
+ },
126
+ {
127
+ "name": "Trigger",
128
+ "props": [
129
+ {
130
+ "name": "asChild",
131
+ "type": "boolean",
132
+ "required": false,
133
+ "category": "composition"
134
+ }
135
+ ]
136
+ }
137
+ ],
138
+ "similarTo": ["AlertDialog", "Popover"],
139
+ "disambiguationRule": "Dialog has modal=true by default; AlertDialog requires action confirmation"
140
+ }
141
+ ```
142
+
143
+ ### `headless_analyze_component`
144
+
145
+ Analyze a local component file for legacy Radix matches to inform Base UI migration.
146
+
147
+ **Input**
148
+
149
+ ```json
150
+ {
151
+ "filePath": "src/components/MyDialog.tsx",
152
+ "radixVersion": "latest",
153
+ "threshold": 40,
154
+ "provider": "radix"
155
+ }
156
+ ```
157
+
158
+ ### `headless_diff_versions`
159
+
160
+ **Purpose:** Answer “what will break or need attention if I upgrade Radix?” by comparing **two Radix versions** (not your code vs Radix). It diffs the public API contracts (props, subcomponents) of primitives between a from-version (e.g. your current) and a to-version (e.g. `latest`). Lists breaking changes, warnings, and info. Input: `fromVersion`, `toVersion`.
161
+
162
+ **Input**
163
+
164
+ ```json
165
+ {
166
+ "fromVersion": "1.0.0",
167
+ "toVersion": "latest",
168
+ "breakingOnly": false,
169
+ "provider": "radix"
170
+ }
171
+ ```
172
+
173
+ ### `headless_check_updates`
174
+
175
+ Check for a newer Radix version and show changes since the last check.
176
+
177
+ **Input**
178
+
179
+ ```json
180
+ {
181
+ "refreshCache": false,
182
+ "provider": "radix"
183
+ }
184
+ ```
185
+
186
+ ## API Reference
187
+
188
+ This package re-exports its core types, signatures, cache helpers, and tool definitions from `src/index.ts`.
189
+
190
+ ### Types
191
+
192
+ - `ExtractedPrimitive` — Raw extraction from Radix `.d.ts` files.
193
+ - `BehaviorSignature` — Semantic behavioral contract used for comparisons.
194
+ - `PropDefinition` — Prop metadata with semantic classification flags.
195
+ - `SubComponentDefinition` — Sub-component structure and prop list.
196
+ - `RawProp` — Raw prop before classification.
197
+ - `PrimitiveInfo` — Info used by primitive listings.
198
+ - `PackageInfo` — npm registry package metadata.
199
+ - `StatePattern` / `CompositionPattern` / `RenderingPattern` — Behavioral pattern enums.
200
+
201
+ ### Modules
202
+
203
+ - `cache` — File-based cache helpers for extracted data and signatures.
204
+ - `signatures` — Behavior signature generation utilities.
205
+ - `providers` — Provider registry for component libraries.
206
+ - `tools` — MCP tool definitions (`headless_list_primitives`, `headless_extract_primitive`, `headless_analyze_component`, `headless_diff_versions`, `headless_check_updates`).
207
+
208
+ ## Configuration
209
+
210
+ limps supports extension-specific config via a top-level key in `limps.config.json`.
211
+
212
+ ```json
213
+ {
214
+ "extensions": ["@sudosandwich/limps-headless"],
215
+ "limps-headless": {
216
+ "cacheDir": "~/Library/Application Support/limps-headless"
217
+ }
218
+ }
219
+ ```
220
+
221
+ **Options**
222
+
223
+ - `cacheDir` (optional): Base directory for the Radix cache. Defaults to `~/.limps-headless/cache`.
224
+
225
+ ## Examples
226
+
227
+ ### List primitives for a specific version
228
+
229
+ **Input**
230
+
231
+ ```json
232
+ {
233
+ "version": "1.1.2"
234
+ }
235
+ ```
236
+
237
+ **Output**
238
+
239
+ ```json
240
+ {
241
+ "version": "1.1.2",
242
+ "primitives": [
243
+ {
244
+ "name": "dialog",
245
+ "package": "@radix-ui/react-dialog",
246
+ "description": "A modal dialog overlay"
247
+ },
248
+ {
249
+ "name": "popover",
250
+ "package": "@radix-ui/react-popover",
251
+ "description": "A popup that appears from a trigger"
252
+ }
253
+ ]
254
+ }
255
+ ```
256
+
257
+ ### Extract a primitive contract
258
+
259
+ **Input**
260
+
261
+ ```json
262
+ {
263
+ "primitive": "dialog",
264
+ "provider": "radix"
265
+ }
266
+ ```
267
+
268
+ **Output**
269
+
270
+ ```json
271
+ {
272
+ "primitive": "Dialog",
273
+ "package": "@radix-ui/react-dialog",
274
+ "version": "1.1.2",
275
+ "behavior": {
276
+ "statePattern": "binary",
277
+ "compositionPattern": "compound",
278
+ "renderingPattern": "portal-conditional"
279
+ },
280
+ "subComponents": [
281
+ {
282
+ "name": "Root",
283
+ "props": [
284
+ {
285
+ "name": "open",
286
+ "type": "boolean",
287
+ "required": false,
288
+ "category": "state"
289
+ },
290
+ {
291
+ "name": "onOpenChange",
292
+ "type": "(open: boolean) => void",
293
+ "required": false,
294
+ "category": "event"
295
+ }
296
+ ]
297
+ },
298
+ {
299
+ "name": "Trigger",
300
+ "props": [
301
+ {
302
+ "name": "asChild",
303
+ "type": "boolean",
304
+ "required": false,
305
+ "category": "composition"
306
+ }
307
+ ]
308
+ }
309
+ ],
310
+ "similarTo": ["AlertDialog", "Popover"],
311
+ "disambiguationRule": "Dialog has modal=true by default; AlertDialog requires action confirmation"
312
+ }
313
+ ```
314
+
315
+ ## Troubleshooting
316
+
317
+ **"Type definitions not found"**
318
+ We fetch types from unpkg at `dist/index.d.ts` (individual packages) or `dist/<primitive>.d.ts` (unified). The error now includes the URL(s) tried, HTTP status, and a link to unpkg so you can confirm the package layout. Common causes:
319
+
320
+ - **Older Radix versions** (e.g. 1.1.x): Some packages may not publish types at those paths; the unified `radix-ui` package is only used for 1.4.3+.
321
+ - **Cached version mismatch**: Diff/audit may resolve to a cached version (e.g. 1.1.15) that doesn’t have types at the expected path. Run `limps-headless check-updates --refresh` to refresh cache and prefer newer versions.
322
+
323
+ Errors are descriptive: they list the paths and status codes tried, and a browse link to the package on unpkg.
324
+
325
+ ## Notes
326
+
327
+ - If the unified `radix-ui` package is available for a version, the tools may return `radix-ui` as the package name instead of individual `@radix-ui/react-*` packages.
328
+ - Cache entries are stored by version and primitive name to speed up repeated tool calls.
329
+ - Provider support is pluggable, but non-Radix providers may not support every tool yet.
330
+
331
+ ## Links
332
+
333
+ - [Tool Reference](./docs/tools.md)
334
+ - [Architecture](./docs/architecture.md)
335
+ - [Providers](./docs/providers.md)
336
+
337
+ ## License
338
+
339
+ MIT
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '../dist/cli/index.js';
@@ -0,0 +1,6 @@
1
+ export * from './ir/types.js';
2
+ export * from './ir/build-ir.js';
3
+ export * from './module-graph.js';
4
+ export * from './ts-program.js';
5
+ export * from './passes/index.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './ir/types.js';
2
+ export * from './ir/build-ir.js';
3
+ export * from './module-graph.js';
4
+ export * from './ts-program.js';
5
+ export * from './passes/index.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ComponentIR } from './types.js';
2
+ import type { ModuleGraph } from '../module-graph.js';
3
+ export interface BuildIrInput {
4
+ filePath: string;
5
+ sourceText?: string;
6
+ exportName?: string;
7
+ moduleGraph?: ModuleGraph;
8
+ }
9
+ export declare function buildComponentIr(input: BuildIrInput): ComponentIR;
10
+ //# sourceMappingURL=build-ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-ir.d.ts","sourceRoot":"","sources":["../../../src/analysis/ir/build-ir.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AA4ED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAiDjE"}
@@ -0,0 +1,102 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import * as ts from 'typescript';
4
+ function collectImportSpec(node) {
5
+ const clause = node.importClause;
6
+ const named = [];
7
+ let defaultName;
8
+ let namespace;
9
+ if (clause) {
10
+ if (clause.name) {
11
+ defaultName = clause.name.text;
12
+ }
13
+ if (clause.namedBindings) {
14
+ if (ts.isNamespaceImport(clause.namedBindings)) {
15
+ namespace = clause.namedBindings.name.text;
16
+ }
17
+ else if (ts.isNamedImports(clause.namedBindings)) {
18
+ for (const element of clause.namedBindings.elements) {
19
+ named.push(element.name.text);
20
+ }
21
+ }
22
+ }
23
+ }
24
+ return {
25
+ source: node.moduleSpecifier.getText().slice(1, -1),
26
+ named,
27
+ defaultName,
28
+ namespace,
29
+ };
30
+ }
31
+ function deriveExportName(sourceFile, filePath) {
32
+ for (const statement of sourceFile.statements) {
33
+ if (ts.isFunctionDeclaration(statement) && statement.modifiers) {
34
+ const isExported = statement.modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword);
35
+ if (isExported && statement.name) {
36
+ return statement.name.text;
37
+ }
38
+ }
39
+ if (ts.isClassDeclaration(statement) && statement.modifiers) {
40
+ const isExported = statement.modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword);
41
+ if (isExported && statement.name) {
42
+ return statement.name.text;
43
+ }
44
+ }
45
+ if (ts.isVariableStatement(statement) && statement.modifiers) {
46
+ const isExported = statement.modifiers.some((modifier) => modifier.kind === ts.SyntaxKind.ExportKeyword);
47
+ if (isExported) {
48
+ const decl = statement.declarationList.declarations[0];
49
+ if (decl && ts.isIdentifier(decl.name)) {
50
+ return decl.name.text;
51
+ }
52
+ }
53
+ }
54
+ if (ts.isExportAssignment(statement)) {
55
+ if (ts.isIdentifier(statement.expression)) {
56
+ return statement.expression.text;
57
+ }
58
+ }
59
+ }
60
+ return path.basename(filePath, path.extname(filePath));
61
+ }
62
+ export function buildComponentIr(input) {
63
+ const sourceText = input.sourceText ?? fs.readFileSync(input.filePath, 'utf-8');
64
+ const sourceFile = ts.createSourceFile(input.filePath, sourceText, ts.ScriptTarget.Latest, true);
65
+ const imports = [];
66
+ for (const statement of sourceFile.statements) {
67
+ if (ts.isImportDeclaration(statement)) {
68
+ imports.push(collectImportSpec(statement));
69
+ }
70
+ }
71
+ const exportName = input.exportName ?? deriveExportName(sourceFile, input.filePath);
72
+ const localName = exportName;
73
+ const id = `${input.filePath}#${exportName}`;
74
+ let dependencies = [];
75
+ let reexports = [];
76
+ if (input.moduleGraph) {
77
+ const node = input.moduleGraph.addFile(input.filePath, sourceText);
78
+ dependencies = node.resolvedImports.slice();
79
+ reexports = node.resolvedReexports.slice();
80
+ }
81
+ return {
82
+ id,
83
+ filePath: input.filePath,
84
+ exportName,
85
+ localName,
86
+ imports,
87
+ jsx: {
88
+ elements: [],
89
+ attributes: [],
90
+ roles: [],
91
+ dataAttrs: [],
92
+ },
93
+ behaviors: {
94
+ behaviors: [],
95
+ handlers: [],
96
+ },
97
+ evidence: [],
98
+ dependencies,
99
+ reexports,
100
+ };
101
+ }
102
+ //# sourceMappingURL=build-ir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-ir.js","sourceRoot":"","sources":["../../../src/analysis/ir/build-ir.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export type EvidenceSource = 'import' | 'jsx' | 'props' | 'types' | 'role' | 'data-attr' | 'behavior' | 'module-graph' | 'config';
2
+ export type EvidenceStrength = 'strong' | 'possible' | 'weak';
3
+ export interface EvidenceLocation {
4
+ file: string;
5
+ line: number;
6
+ column: number;
7
+ }
8
+ export interface Evidence {
9
+ id: string;
10
+ source: EvidenceSource;
11
+ strength: EvidenceStrength;
12
+ weight: number;
13
+ location?: EvidenceLocation;
14
+ notes?: string;
15
+ }
16
+ export interface ImportSpec {
17
+ source: string;
18
+ named: string[];
19
+ defaultName?: string;
20
+ namespace?: string;
21
+ }
22
+ export interface JsxEvidence {
23
+ elements: string[];
24
+ attributes: string[];
25
+ roles: string[];
26
+ dataAttrs: string[];
27
+ }
28
+ export interface BehaviorEvidence {
29
+ behaviors: string[];
30
+ handlers: string[];
31
+ }
32
+ export interface ComponentIR {
33
+ id: string;
34
+ filePath: string;
35
+ exportName: string;
36
+ localName: string;
37
+ imports: ImportSpec[];
38
+ jsx: JsxEvidence;
39
+ behaviors: BehaviorEvidence;
40
+ evidence: Evidence[];
41
+ dependencies: string[];
42
+ reexports: string[];
43
+ }
44
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analysis/ir/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,KAAK,GACL,OAAO,GACP,OAAO,GACP,MAAM,GACN,WAAW,GACX,UAAU,GACV,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/analysis/ir/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ export interface ModuleGraphInput {
2
+ tsconfigPath?: string;
3
+ cwd?: string;
4
+ rootDir?: string;
5
+ }
6
+ export interface ModuleGraphNode {
7
+ filePath: string;
8
+ imports: string[];
9
+ resolvedImports: string[];
10
+ reexports: string[];
11
+ resolvedReexports: string[];
12
+ }
13
+ export interface ModuleGraph {
14
+ addFile(filePath: string, sourceText?: string): ModuleGraphNode;
15
+ getNode(filePath: string): ModuleGraphNode | undefined;
16
+ resolveImport(specifier: string, fromFile: string): string | null;
17
+ getAll(): ModuleGraphNode[];
18
+ }
19
+ export declare function createModuleGraph(input?: ModuleGraphInput): ModuleGraph;
20
+ //# sourceMappingURL=module-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-graph.d.ts","sourceRoot":"","sources":["../../src/analysis/module-graph.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IAChE,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACvD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClE,MAAM,IAAI,eAAe,EAAE,CAAC;CAC7B;AAsCD,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,gBAAqB,GAAG,WAAW,CAiG3E"}