@a1st/aix-core 0.0.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 (397) hide show
  1. package/dist/backup.d.ts +12 -0
  2. package/dist/backup.d.ts.map +1 -0
  3. package/dist/backup.js +70 -0
  4. package/dist/backup.js.map +1 -0
  5. package/dist/cache/cleanup.d.ts +14 -0
  6. package/dist/cache/cleanup.d.ts.map +1 -0
  7. package/dist/cache/cleanup.js +61 -0
  8. package/dist/cache/cleanup.js.map +1 -0
  9. package/dist/cache/clear.d.ts +10 -0
  10. package/dist/cache/clear.d.ts.map +1 -0
  11. package/dist/cache/clear.js +30 -0
  12. package/dist/cache/clear.js.map +1 -0
  13. package/dist/cache/index.d.ts +5 -0
  14. package/dist/cache/index.d.ts.map +1 -0
  15. package/dist/cache/index.js +5 -0
  16. package/dist/cache/index.js.map +1 -0
  17. package/dist/cache/paths.d.ts +57 -0
  18. package/dist/cache/paths.d.ts.map +1 -0
  19. package/dist/cache/paths.js +86 -0
  20. package/dist/cache/paths.js.map +1 -0
  21. package/dist/cache/status.d.ts +21 -0
  22. package/dist/cache/status.d.ts.map +1 -0
  23. package/dist/cache/status.js +67 -0
  24. package/dist/cache/status.js.map +1 -0
  25. package/dist/discovery.d.ts +14 -0
  26. package/dist/discovery.d.ts.map +1 -0
  27. package/dist/discovery.js +96 -0
  28. package/dist/discovery.js.map +1 -0
  29. package/dist/editors/adapters/base.d.ts +101 -0
  30. package/dist/editors/adapters/base.d.ts.map +1 -0
  31. package/dist/editors/adapters/base.js +399 -0
  32. package/dist/editors/adapters/base.js.map +1 -0
  33. package/dist/editors/adapters/claude-code.d.ts +27 -0
  34. package/dist/editors/adapters/claude-code.d.ts.map +1 -0
  35. package/dist/editors/adapters/claude-code.js +46 -0
  36. package/dist/editors/adapters/claude-code.js.map +1 -0
  37. package/dist/editors/adapters/codex.d.ts +30 -0
  38. package/dist/editors/adapters/codex.d.ts.map +1 -0
  39. package/dist/editors/adapters/codex.js +56 -0
  40. package/dist/editors/adapters/codex.js.map +1 -0
  41. package/dist/editors/adapters/cursor.d.ts +23 -0
  42. package/dist/editors/adapters/cursor.d.ts.map +1 -0
  43. package/dist/editors/adapters/cursor.js +39 -0
  44. package/dist/editors/adapters/cursor.js.map +1 -0
  45. package/dist/editors/adapters/index.d.ts +8 -0
  46. package/dist/editors/adapters/index.d.ts.map +1 -0
  47. package/dist/editors/adapters/index.js +8 -0
  48. package/dist/editors/adapters/index.js.map +1 -0
  49. package/dist/editors/adapters/vscode.d.ts +23 -0
  50. package/dist/editors/adapters/vscode.d.ts.map +1 -0
  51. package/dist/editors/adapters/vscode.js +36 -0
  52. package/dist/editors/adapters/vscode.js.map +1 -0
  53. package/dist/editors/adapters/windsurf.d.ts +23 -0
  54. package/dist/editors/adapters/windsurf.d.ts.map +1 -0
  55. package/dist/editors/adapters/windsurf.js +38 -0
  56. package/dist/editors/adapters/windsurf.js.map +1 -0
  57. package/dist/editors/adapters/zed.d.ts +29 -0
  58. package/dist/editors/adapters/zed.d.ts.map +1 -0
  59. package/dist/editors/adapters/zed.js +61 -0
  60. package/dist/editors/adapters/zed.js.map +1 -0
  61. package/dist/editors/import.d.ts +31 -0
  62. package/dist/editors/import.d.ts.map +1 -0
  63. package/dist/editors/import.js +271 -0
  64. package/dist/editors/import.js.map +1 -0
  65. package/dist/editors/index.d.ts +6 -0
  66. package/dist/editors/index.d.ts.map +1 -0
  67. package/dist/editors/index.js +4 -0
  68. package/dist/editors/index.js.map +1 -0
  69. package/dist/editors/install.d.ts +33 -0
  70. package/dist/editors/install.d.ts.map +1 -0
  71. package/dist/editors/install.js +186 -0
  72. package/dist/editors/install.js.map +1 -0
  73. package/dist/editors/strategies/claude-code/hooks.d.ts +13 -0
  74. package/dist/editors/strategies/claude-code/hooks.d.ts.map +1 -0
  75. package/dist/editors/strategies/claude-code/hooks.js +61 -0
  76. package/dist/editors/strategies/claude-code/hooks.js.map +1 -0
  77. package/dist/editors/strategies/claude-code/index.d.ts +5 -0
  78. package/dist/editors/strategies/claude-code/index.d.ts.map +1 -0
  79. package/dist/editors/strategies/claude-code/index.js +5 -0
  80. package/dist/editors/strategies/claude-code/index.js.map +1 -0
  81. package/dist/editors/strategies/claude-code/mcp.d.ts +10 -0
  82. package/dist/editors/strategies/claude-code/mcp.d.ts.map +1 -0
  83. package/dist/editors/strategies/claude-code/mcp.js +17 -0
  84. package/dist/editors/strategies/claude-code/mcp.js.map +1 -0
  85. package/dist/editors/strategies/claude-code/prompts.d.ts +18 -0
  86. package/dist/editors/strategies/claude-code/prompts.d.ts.map +1 -0
  87. package/dist/editors/strategies/claude-code/prompts.js +42 -0
  88. package/dist/editors/strategies/claude-code/prompts.js.map +1 -0
  89. package/dist/editors/strategies/claude-code/rules.d.ts +17 -0
  90. package/dist/editors/strategies/claude-code/rules.d.ts.map +1 -0
  91. package/dist/editors/strategies/claude-code/rules.js +61 -0
  92. package/dist/editors/strategies/claude-code/rules.js.map +1 -0
  93. package/dist/editors/strategies/codex/index.d.ts +4 -0
  94. package/dist/editors/strategies/codex/index.d.ts.map +1 -0
  95. package/dist/editors/strategies/codex/index.js +4 -0
  96. package/dist/editors/strategies/codex/index.js.map +1 -0
  97. package/dist/editors/strategies/codex/mcp.d.ts +18 -0
  98. package/dist/editors/strategies/codex/mcp.d.ts.map +1 -0
  99. package/dist/editors/strategies/codex/mcp.js +93 -0
  100. package/dist/editors/strategies/codex/mcp.js.map +1 -0
  101. package/dist/editors/strategies/codex/prompts.d.ts +37 -0
  102. package/dist/editors/strategies/codex/prompts.d.ts.map +1 -0
  103. package/dist/editors/strategies/codex/prompts.js +82 -0
  104. package/dist/editors/strategies/codex/prompts.js.map +1 -0
  105. package/dist/editors/strategies/codex/rules.d.ts +17 -0
  106. package/dist/editors/strategies/codex/rules.d.ts.map +1 -0
  107. package/dist/editors/strategies/codex/rules.js +35 -0
  108. package/dist/editors/strategies/codex/rules.js.map +1 -0
  109. package/dist/editors/strategies/cursor/hooks.d.ts +13 -0
  110. package/dist/editors/strategies/cursor/hooks.d.ts.map +1 -0
  111. package/dist/editors/strategies/cursor/hooks.js +54 -0
  112. package/dist/editors/strategies/cursor/hooks.js.map +1 -0
  113. package/dist/editors/strategies/cursor/index.d.ts +4 -0
  114. package/dist/editors/strategies/cursor/index.d.ts.map +1 -0
  115. package/dist/editors/strategies/cursor/index.js +4 -0
  116. package/dist/editors/strategies/cursor/index.js.map +1 -0
  117. package/dist/editors/strategies/cursor/prompts.d.ts +18 -0
  118. package/dist/editors/strategies/cursor/prompts.d.ts.map +1 -0
  119. package/dist/editors/strategies/cursor/prompts.js +67 -0
  120. package/dist/editors/strategies/cursor/prompts.js.map +1 -0
  121. package/dist/editors/strategies/cursor/rules.d.ts +17 -0
  122. package/dist/editors/strategies/cursor/rules.d.ts.map +1 -0
  123. package/dist/editors/strategies/cursor/rules.js +41 -0
  124. package/dist/editors/strategies/cursor/rules.js.map +1 -0
  125. package/dist/editors/strategies/index.d.ts +9 -0
  126. package/dist/editors/strategies/index.d.ts.map +1 -0
  127. package/dist/editors/strategies/index.js +10 -0
  128. package/dist/editors/strategies/index.js.map +1 -0
  129. package/dist/editors/strategies/shared/global-mcp.d.ts +74 -0
  130. package/dist/editors/strategies/shared/global-mcp.d.ts.map +1 -0
  131. package/dist/editors/strategies/shared/global-mcp.js +85 -0
  132. package/dist/editors/strategies/shared/global-mcp.js.map +1 -0
  133. package/dist/editors/strategies/shared/index.d.ts +8 -0
  134. package/dist/editors/strategies/shared/index.d.ts.map +1 -0
  135. package/dist/editors/strategies/shared/index.js +8 -0
  136. package/dist/editors/strategies/shared/index.js.map +1 -0
  137. package/dist/editors/strategies/shared/native-skills.d.ts +19 -0
  138. package/dist/editors/strategies/shared/native-skills.d.ts.map +1 -0
  139. package/dist/editors/strategies/shared/native-skills.js +72 -0
  140. package/dist/editors/strategies/shared/native-skills.js.map +1 -0
  141. package/dist/editors/strategies/shared/no-hooks.d.ts +13 -0
  142. package/dist/editors/strategies/shared/no-hooks.d.ts.map +1 -0
  143. package/dist/editors/strategies/shared/no-hooks.js +19 -0
  144. package/dist/editors/strategies/shared/no-hooks.js.map +1 -0
  145. package/dist/editors/strategies/shared/no-mcp.d.ts +16 -0
  146. package/dist/editors/strategies/shared/no-mcp.d.ts.map +1 -0
  147. package/dist/editors/strategies/shared/no-mcp.js +21 -0
  148. package/dist/editors/strategies/shared/no-mcp.js.map +1 -0
  149. package/dist/editors/strategies/shared/no-prompts.d.ts +17 -0
  150. package/dist/editors/strategies/shared/no-prompts.d.ts.map +1 -0
  151. package/dist/editors/strategies/shared/no-prompts.js +24 -0
  152. package/dist/editors/strategies/shared/no-prompts.js.map +1 -0
  153. package/dist/editors/strategies/shared/pointer-skills.d.ts +17 -0
  154. package/dist/editors/strategies/shared/pointer-skills.d.ts.map +1 -0
  155. package/dist/editors/strategies/shared/pointer-skills.js +72 -0
  156. package/dist/editors/strategies/shared/pointer-skills.js.map +1 -0
  157. package/dist/editors/strategies/shared/standard-mcp.d.ts +16 -0
  158. package/dist/editors/strategies/shared/standard-mcp.d.ts.map +1 -0
  159. package/dist/editors/strategies/shared/standard-mcp.js +68 -0
  160. package/dist/editors/strategies/shared/standard-mcp.js.map +1 -0
  161. package/dist/editors/strategies/types.d.ts +126 -0
  162. package/dist/editors/strategies/types.d.ts.map +1 -0
  163. package/dist/editors/strategies/types.js +2 -0
  164. package/dist/editors/strategies/types.js.map +1 -0
  165. package/dist/editors/strategies/vscode/index.d.ts +4 -0
  166. package/dist/editors/strategies/vscode/index.d.ts.map +1 -0
  167. package/dist/editors/strategies/vscode/index.js +4 -0
  168. package/dist/editors/strategies/vscode/index.js.map +1 -0
  169. package/dist/editors/strategies/vscode/mcp.d.ts +17 -0
  170. package/dist/editors/strategies/vscode/mcp.d.ts.map +1 -0
  171. package/dist/editors/strategies/vscode/mcp.js +85 -0
  172. package/dist/editors/strategies/vscode/mcp.js.map +1 -0
  173. package/dist/editors/strategies/vscode/prompts.d.ts +18 -0
  174. package/dist/editors/strategies/vscode/prompts.d.ts.map +1 -0
  175. package/dist/editors/strategies/vscode/prompts.js +81 -0
  176. package/dist/editors/strategies/vscode/prompts.js.map +1 -0
  177. package/dist/editors/strategies/vscode/rules.d.ts +17 -0
  178. package/dist/editors/strategies/vscode/rules.d.ts.map +1 -0
  179. package/dist/editors/strategies/vscode/rules.js +38 -0
  180. package/dist/editors/strategies/vscode/rules.js.map +1 -0
  181. package/dist/editors/strategies/windsurf/hooks.d.ts +13 -0
  182. package/dist/editors/strategies/windsurf/hooks.d.ts.map +1 -0
  183. package/dist/editors/strategies/windsurf/hooks.js +61 -0
  184. package/dist/editors/strategies/windsurf/hooks.js.map +1 -0
  185. package/dist/editors/strategies/windsurf/index.d.ts +6 -0
  186. package/dist/editors/strategies/windsurf/index.d.ts.map +1 -0
  187. package/dist/editors/strategies/windsurf/index.js +6 -0
  188. package/dist/editors/strategies/windsurf/index.js.map +1 -0
  189. package/dist/editors/strategies/windsurf/mcp.d.ts +8 -0
  190. package/dist/editors/strategies/windsurf/mcp.d.ts.map +1 -0
  191. package/dist/editors/strategies/windsurf/mcp.js +99 -0
  192. package/dist/editors/strategies/windsurf/mcp.js.map +1 -0
  193. package/dist/editors/strategies/windsurf/prompts.d.ts +18 -0
  194. package/dist/editors/strategies/windsurf/prompts.d.ts.map +1 -0
  195. package/dist/editors/strategies/windsurf/prompts.js +68 -0
  196. package/dist/editors/strategies/windsurf/prompts.js.map +1 -0
  197. package/dist/editors/strategies/windsurf/rules.d.ts +17 -0
  198. package/dist/editors/strategies/windsurf/rules.d.ts.map +1 -0
  199. package/dist/editors/strategies/windsurf/rules.js +55 -0
  200. package/dist/editors/strategies/windsurf/rules.js.map +1 -0
  201. package/dist/editors/strategies/windsurf/skills.d.ts +9 -0
  202. package/dist/editors/strategies/windsurf/skills.d.ts.map +1 -0
  203. package/dist/editors/strategies/windsurf/skills.js +11 -0
  204. package/dist/editors/strategies/windsurf/skills.js.map +1 -0
  205. package/dist/editors/strategies/zed/index.d.ts +4 -0
  206. package/dist/editors/strategies/zed/index.d.ts.map +1 -0
  207. package/dist/editors/strategies/zed/index.js +4 -0
  208. package/dist/editors/strategies/zed/index.js.map +1 -0
  209. package/dist/editors/strategies/zed/mcp.d.ts +17 -0
  210. package/dist/editors/strategies/zed/mcp.d.ts.map +1 -0
  211. package/dist/editors/strategies/zed/mcp.js +68 -0
  212. package/dist/editors/strategies/zed/mcp.js.map +1 -0
  213. package/dist/editors/strategies/zed/prompts.d.ts +18 -0
  214. package/dist/editors/strategies/zed/prompts.d.ts.map +1 -0
  215. package/dist/editors/strategies/zed/prompts.js +25 -0
  216. package/dist/editors/strategies/zed/prompts.js.map +1 -0
  217. package/dist/editors/strategies/zed/rules.d.ts +17 -0
  218. package/dist/editors/strategies/zed/rules.d.ts.map +1 -0
  219. package/dist/editors/strategies/zed/rules.js +33 -0
  220. package/dist/editors/strategies/zed/rules.js.map +1 -0
  221. package/dist/editors/types.d.ts +164 -0
  222. package/dist/editors/types.d.ts.map +1 -0
  223. package/dist/editors/types.js +2 -0
  224. package/dist/editors/types.js.map +1 -0
  225. package/dist/env/ci.d.ts +6 -0
  226. package/dist/env/ci.d.ts.map +1 -0
  227. package/dist/env/ci.js +22 -0
  228. package/dist/env/ci.js.map +1 -0
  229. package/dist/env/index.d.ts +2 -0
  230. package/dist/env/index.d.ts.map +1 -0
  231. package/dist/env/index.js +2 -0
  232. package/dist/env/index.js.map +1 -0
  233. package/dist/errors.d.ts +44 -0
  234. package/dist/errors.d.ts.map +1 -0
  235. package/dist/errors.js +68 -0
  236. package/dist/errors.js.map +1 -0
  237. package/dist/format-error.d.ts +18 -0
  238. package/dist/format-error.d.ts.map +1 -0
  239. package/dist/format-error.js +113 -0
  240. package/dist/format-error.js.map +1 -0
  241. package/dist/fs/safe-rm.d.ts +20 -0
  242. package/dist/fs/safe-rm.d.ts.map +1 -0
  243. package/dist/fs/safe-rm.js +129 -0
  244. package/dist/fs/safe-rm.js.map +1 -0
  245. package/dist/git-loader.d.ts +21 -0
  246. package/dist/git-loader.d.ts.map +1 -0
  247. package/dist/git-loader.js +61 -0
  248. package/dist/git-loader.js.map +1 -0
  249. package/dist/global/comparison.d.ts +16 -0
  250. package/dist/global/comparison.d.ts.map +1 -0
  251. package/dist/global/comparison.js +52 -0
  252. package/dist/global/comparison.js.map +1 -0
  253. package/dist/global/index.d.ts +5 -0
  254. package/dist/global/index.d.ts.map +1 -0
  255. package/dist/global/index.js +4 -0
  256. package/dist/global/index.js.map +1 -0
  257. package/dist/global/processor.d.ts +26 -0
  258. package/dist/global/processor.d.ts.map +1 -0
  259. package/dist/global/processor.js +318 -0
  260. package/dist/global/processor.js.map +1 -0
  261. package/dist/global/tracking.d.ts +109 -0
  262. package/dist/global/tracking.d.ts.map +1 -0
  263. package/dist/global/tracking.js +193 -0
  264. package/dist/global/tracking.js.map +1 -0
  265. package/dist/global/types.d.ts +54 -0
  266. package/dist/global/types.d.ts.map +1 -0
  267. package/dist/global/types.js +2 -0
  268. package/dist/global/types.js.map +1 -0
  269. package/dist/import-writer.d.ts +37 -0
  270. package/dist/import-writer.d.ts.map +1 -0
  271. package/dist/import-writer.js +129 -0
  272. package/dist/import-writer.js.map +1 -0
  273. package/dist/index.d.ts +23 -0
  274. package/dist/index.d.ts.map +1 -0
  275. package/dist/index.js +23 -0
  276. package/dist/index.js.map +1 -0
  277. package/dist/inheritance.d.ts +9 -0
  278. package/dist/inheritance.d.ts.map +1 -0
  279. package/dist/inheritance.js +133 -0
  280. package/dist/inheritance.js.map +1 -0
  281. package/dist/json.d.ts +75 -0
  282. package/dist/json.d.ts.map +1 -0
  283. package/dist/json.js +123 -0
  284. package/dist/json.js.map +1 -0
  285. package/dist/loader.d.ts +35 -0
  286. package/dist/loader.d.ts.map +1 -0
  287. package/dist/loader.js +147 -0
  288. package/dist/loader.js.map +1 -0
  289. package/dist/mcp/env.d.ts +28 -0
  290. package/dist/mcp/env.d.ts.map +1 -0
  291. package/dist/mcp/env.js +47 -0
  292. package/dist/mcp/env.js.map +1 -0
  293. package/dist/mcp/index.d.ts +4 -0
  294. package/dist/mcp/index.d.ts.map +1 -0
  295. package/dist/mcp/index.js +4 -0
  296. package/dist/mcp/index.js.map +1 -0
  297. package/dist/mcp/normalize.d.ts +33 -0
  298. package/dist/mcp/normalize.d.ts.map +1 -0
  299. package/dist/mcp/normalize.js +29 -0
  300. package/dist/mcp/normalize.js.map +1 -0
  301. package/dist/mcp/templates.d.ts +18 -0
  302. package/dist/mcp/templates.d.ts.map +1 -0
  303. package/dist/mcp/templates.js +66 -0
  304. package/dist/mcp/templates.js.map +1 -0
  305. package/dist/merge.d.ts +29 -0
  306. package/dist/merge.d.ts.map +1 -0
  307. package/dist/merge.js +154 -0
  308. package/dist/merge.js.map +1 -0
  309. package/dist/npm/index.d.ts +2 -0
  310. package/dist/npm/index.d.ts.map +1 -0
  311. package/dist/npm/index.js +2 -0
  312. package/dist/npm/index.js.map +1 -0
  313. package/dist/npm/resolve.d.ts +16 -0
  314. package/dist/npm/resolve.d.ts.map +1 -0
  315. package/dist/npm/resolve.js +42 -0
  316. package/dist/npm/resolve.js.map +1 -0
  317. package/dist/prompts/index.d.ts +2 -0
  318. package/dist/prompts/index.d.ts.map +1 -0
  319. package/dist/prompts/index.js +2 -0
  320. package/dist/prompts/index.js.map +1 -0
  321. package/dist/prompts/loader.d.ts +23 -0
  322. package/dist/prompts/loader.d.ts.map +1 -0
  323. package/dist/prompts/loader.js +115 -0
  324. package/dist/prompts/loader.js.map +1 -0
  325. package/dist/remote-loader.d.ts +29 -0
  326. package/dist/remote-loader.d.ts.map +1 -0
  327. package/dist/remote-loader.js +208 -0
  328. package/dist/remote-loader.js.map +1 -0
  329. package/dist/rules/index.d.ts +6 -0
  330. package/dist/rules/index.d.ts.map +1 -0
  331. package/dist/rules/index.js +6 -0
  332. package/dist/rules/index.js.map +1 -0
  333. package/dist/rules/interpolate.d.ts +27 -0
  334. package/dist/rules/interpolate.d.ts.map +1 -0
  335. package/dist/rules/interpolate.js +48 -0
  336. package/dist/rules/interpolate.js.map +1 -0
  337. package/dist/rules/loader.d.ts +27 -0
  338. package/dist/rules/loader.d.ts.map +1 -0
  339. package/dist/rules/loader.js +94 -0
  340. package/dist/rules/loader.js.map +1 -0
  341. package/dist/rules/merger.d.ts +37 -0
  342. package/dist/rules/merger.d.ts.map +1 -0
  343. package/dist/rules/merger.js +93 -0
  344. package/dist/rules/merger.js.map +1 -0
  345. package/dist/rules/skill-rules.d.ts +13 -0
  346. package/dist/rules/skill-rules.d.ts.map +1 -0
  347. package/dist/rules/skill-rules.js +70 -0
  348. package/dist/rules/skill-rules.js.map +1 -0
  349. package/dist/rules/utils.d.ts +36 -0
  350. package/dist/rules/utils.d.ts.map +1 -0
  351. package/dist/rules/utils.js +82 -0
  352. package/dist/rules/utils.js.map +1 -0
  353. package/dist/skills/cache.d.ts +10 -0
  354. package/dist/skills/cache.d.ts.map +1 -0
  355. package/dist/skills/cache.js +20 -0
  356. package/dist/skills/cache.js.map +1 -0
  357. package/dist/skills/index.d.ts +9 -0
  358. package/dist/skills/index.d.ts.map +1 -0
  359. package/dist/skills/index.js +9 -0
  360. package/dist/skills/index.js.map +1 -0
  361. package/dist/skills/parser.d.ts +6 -0
  362. package/dist/skills/parser.d.ts.map +1 -0
  363. package/dist/skills/parser.js +28 -0
  364. package/dist/skills/parser.js.map +1 -0
  365. package/dist/skills/reference-parser.d.ts +23 -0
  366. package/dist/skills/reference-parser.d.ts.map +1 -0
  367. package/dist/skills/reference-parser.js +162 -0
  368. package/dist/skills/reference-parser.js.map +1 -0
  369. package/dist/skills/resolve.d.ts +21 -0
  370. package/dist/skills/resolve.d.ts.map +1 -0
  371. package/dist/skills/resolve.js +43 -0
  372. package/dist/skills/resolve.js.map +1 -0
  373. package/dist/skills/resolvers/git.d.ts +8 -0
  374. package/dist/skills/resolvers/git.d.ts.map +1 -0
  375. package/dist/skills/resolvers/git.js +43 -0
  376. package/dist/skills/resolvers/git.js.map +1 -0
  377. package/dist/skills/resolvers/local.d.ts +7 -0
  378. package/dist/skills/resolvers/local.d.ts.map +1 -0
  379. package/dist/skills/resolvers/local.js +16 -0
  380. package/dist/skills/resolvers/local.js.map +1 -0
  381. package/dist/skills/resolvers/npm.d.ts +12 -0
  382. package/dist/skills/resolvers/npm.d.ts.map +1 -0
  383. package/dist/skills/resolvers/npm.js +28 -0
  384. package/dist/skills/resolvers/npm.js.map +1 -0
  385. package/dist/skills/validate.d.ts +11 -0
  386. package/dist/skills/validate.d.ts.map +1 -0
  387. package/dist/skills/validate.js +43 -0
  388. package/dist/skills/validate.js.map +1 -0
  389. package/dist/updater.d.ts +23 -0
  390. package/dist/updater.d.ts.map +1 -0
  391. package/dist/updater.js +100 -0
  392. package/dist/updater.js.map +1 -0
  393. package/dist/url-parsing.d.ts +121 -0
  394. package/dist/url-parsing.d.ts.map +1 -0
  395. package/dist/url-parsing.js +199 -0
  396. package/dist/url-parsing.js.map +1 -0
  397. package/package.json +41 -0
@@ -0,0 +1,271 @@
1
+ import { readFile, readdir } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'pathe';
4
+ import { WindsurfRulesStrategy } from './strategies/windsurf/rules.js';
5
+ import { WindsurfPromptsStrategy } from './strategies/windsurf/prompts.js';
6
+ import { WindsurfMcpStrategy } from './strategies/windsurf/mcp.js';
7
+ import { StandardMcpStrategy } from './strategies/shared/standard-mcp.js';
8
+ import { CursorRulesStrategy } from './strategies/cursor/rules.js';
9
+ import { CursorPromptsStrategy } from './strategies/cursor/prompts.js';
10
+ import { ClaudeCodeMcpStrategy } from './strategies/claude-code/mcp.js';
11
+ import { ClaudeCodeRulesStrategy } from './strategies/claude-code/rules.js';
12
+ import { ClaudeCodePromptsStrategy } from './strategies/claude-code/prompts.js';
13
+ import { VSCodeMcpStrategy } from './strategies/vscode/mcp.js';
14
+ import { VSCodeRulesStrategy } from './strategies/vscode/rules.js';
15
+ import { VSCodePromptsStrategy } from './strategies/vscode/prompts.js';
16
+ import { ZedMcpStrategy } from './strategies/zed/mcp.js';
17
+ import { ZedRulesStrategy } from './strategies/zed/rules.js';
18
+ import { ZedPromptsStrategy } from './strategies/zed/prompts.js';
19
+ import { CodexRulesStrategy } from './strategies/codex/rules.js';
20
+ import { CodexPromptsStrategy } from './strategies/codex/prompts.js';
21
+ import { CodexMcpStrategy } from './strategies/codex/mcp.js';
22
+ /**
23
+ * Get the import strategies for an editor.
24
+ */
25
+ function getImportStrategies(editor) {
26
+ switch (editor) {
27
+ case 'windsurf':
28
+ return {
29
+ mcp: new WindsurfMcpStrategy(),
30
+ rules: new WindsurfRulesStrategy(),
31
+ prompts: new WindsurfPromptsStrategy(),
32
+ };
33
+ case 'cursor':
34
+ return {
35
+ mcp: new StandardMcpStrategy(),
36
+ rules: new CursorRulesStrategy(),
37
+ prompts: new CursorPromptsStrategy(),
38
+ };
39
+ case 'claude-code':
40
+ return {
41
+ mcp: new ClaudeCodeMcpStrategy(),
42
+ rules: new ClaudeCodeRulesStrategy(),
43
+ prompts: new ClaudeCodePromptsStrategy(),
44
+ };
45
+ case 'vscode':
46
+ return {
47
+ mcp: new VSCodeMcpStrategy(),
48
+ rules: new VSCodeRulesStrategy(),
49
+ prompts: new VSCodePromptsStrategy(),
50
+ };
51
+ case 'zed':
52
+ return {
53
+ mcp: new ZedMcpStrategy(),
54
+ rules: new ZedRulesStrategy(),
55
+ prompts: new ZedPromptsStrategy(),
56
+ };
57
+ case 'codex':
58
+ return {
59
+ mcp: new CodexMcpStrategy(),
60
+ rules: new CodexRulesStrategy(),
61
+ prompts: new CodexPromptsStrategy(),
62
+ };
63
+ }
64
+ }
65
+ /**
66
+ * Import configuration from an editor and convert to ai.json format.
67
+ * Merges global config with project-local editor config: Object.assign({}, global, local)
68
+ *
69
+ * @param editor - The editor to import from
70
+ * @param options - Import options including projectRoot for local config lookup
71
+ */
72
+ export async function importFromEditor(editor, options = {}) {
73
+ const result = {
74
+ mcp: {},
75
+ rules: [],
76
+ skills: {},
77
+ prompts: {},
78
+ warnings: [],
79
+ sources: { global: false, local: false },
80
+ }, strategies = getImportStrategies(editor), projectRoot = options.projectRoot ?? process.cwd();
81
+ // 1. Import from GLOBAL config first (base layer)
82
+ const globalMcp = await importMcpConfig(strategies.mcp, editor, 'global');
83
+ if (Object.keys(globalMcp.mcp).length > 0) {
84
+ result.sources.global = true;
85
+ }
86
+ Object.assign(result.mcp, globalMcp.mcp);
87
+ result.warnings.push(...globalMcp.warnings);
88
+ const globalRules = await importRules(strategies.rules, 'global');
89
+ if (globalRules.rules.length > 0) {
90
+ result.sources.global = true;
91
+ }
92
+ result.rules.push(...globalRules.rules);
93
+ result.warnings.push(...globalRules.warnings);
94
+ const globalPrompts = await importPrompts(strategies.prompts, 'global');
95
+ if (Object.keys(globalPrompts.prompts).length > 0) {
96
+ result.sources.global = true;
97
+ }
98
+ Object.assign(result.prompts, globalPrompts.prompts);
99
+ result.warnings.push(...globalPrompts.warnings);
100
+ // 2. Import from LOCAL editor config (overlay - overrides global)
101
+ const localMcp = await importLocalMcpConfig(strategies.mcp, editor, projectRoot);
102
+ if (Object.keys(localMcp.mcp).length > 0) {
103
+ result.sources.local = true;
104
+ }
105
+ Object.assign(result.mcp, localMcp.mcp);
106
+ result.warnings.push(...localMcp.warnings);
107
+ const localRules = await importLocalRules(strategies.rules, editor, projectRoot);
108
+ if (localRules.rules.length > 0) {
109
+ result.sources.local = true;
110
+ }
111
+ result.rules.push(...localRules.rules);
112
+ result.warnings.push(...localRules.warnings);
113
+ const localPrompts = await importLocalPrompts(strategies.prompts, editor, projectRoot);
114
+ if (Object.keys(localPrompts.prompts).length > 0) {
115
+ result.sources.local = true;
116
+ }
117
+ Object.assign(result.prompts, localPrompts.prompts);
118
+ result.warnings.push(...localPrompts.warnings);
119
+ return result;
120
+ }
121
+ /** Editor config directory names */
122
+ const EDITOR_CONFIG_DIRS = {
123
+ windsurf: '.windsurf',
124
+ cursor: '.cursor',
125
+ 'claude-code': '.claude',
126
+ vscode: '.vscode',
127
+ zed: '.zed',
128
+ codex: '.codex',
129
+ };
130
+ /**
131
+ * Import MCP configuration from an editor's global config.
132
+ */
133
+ async function importMcpConfig(strategy, _editor, _source) {
134
+ const warnings = [], configPath = strategy.getGlobalMcpConfigPath();
135
+ if (!configPath) {
136
+ // Not a warning - some editors don't have global MCP config
137
+ return { mcp: {}, warnings };
138
+ }
139
+ const fullPath = join(homedir(), configPath);
140
+ try {
141
+ const content = await readFile(fullPath, 'utf-8'), result = strategy.parseGlobalMcpConfig(content);
142
+ return result;
143
+ }
144
+ catch (err) {
145
+ if (err.code !== 'ENOENT') {
146
+ warnings.push(`Failed to read global MCP config at ${fullPath}: ${err.message}`);
147
+ }
148
+ }
149
+ return { mcp: {}, warnings };
150
+ }
151
+ /**
152
+ * Import MCP configuration from project-local editor config.
153
+ */
154
+ async function importLocalMcpConfig(strategy, editor, projectRoot) {
155
+ const warnings = [], configDir = EDITOR_CONFIG_DIRS[editor], mcpConfigPath = strategy.getConfigPath(), fullPath = join(projectRoot, configDir, mcpConfigPath);
156
+ // Skip if MCP is not supported for project-local config (e.g., global-only editors)
157
+ if (!strategy.isSupported() || strategy.isGlobalOnly?.()) {
158
+ return { mcp: {}, warnings };
159
+ }
160
+ try {
161
+ const content = await readFile(fullPath, 'utf-8'), result = strategy.parseGlobalMcpConfig(content);
162
+ return result;
163
+ }
164
+ catch (err) {
165
+ if (err.code !== 'ENOENT' &&
166
+ err.code !== 'EISDIR') {
167
+ warnings.push(`Failed to read local MCP config at ${fullPath}: ${err.message}`);
168
+ }
169
+ }
170
+ return { mcp: {}, warnings };
171
+ }
172
+ /**
173
+ * Import rules from an editor's global config.
174
+ */
175
+ async function importRules(strategy, _source) {
176
+ const warnings = [], rulesPath = strategy.getGlobalRulesPath();
177
+ if (!rulesPath) {
178
+ return { rules: [], warnings };
179
+ }
180
+ const fullPath = join(homedir(), rulesPath);
181
+ try {
182
+ const content = await readFile(fullPath, 'utf-8');
183
+ return strategy.parseGlobalRules(content);
184
+ }
185
+ catch (err) {
186
+ if (err.code !== 'ENOENT') {
187
+ warnings.push(`Failed to read global rules from ${fullPath}: ${err.message}`);
188
+ }
189
+ }
190
+ return { rules: [], warnings };
191
+ }
192
+ /**
193
+ * Import rules from project-local editor config.
194
+ */
195
+ async function importLocalRules(strategy, editor, projectRoot) {
196
+ const warnings = [], configDir = EDITOR_CONFIG_DIRS[editor], rulesDir = strategy.getRulesDir(), fullPath = join(projectRoot, configDir, rulesDir);
197
+ try {
198
+ const files = await readdir(fullPath), ext = strategy.getFileExtension(), ruleFiles = files.filter((f) => f.endsWith(ext)), rules = [];
199
+ for (const file of ruleFiles) {
200
+ try {
201
+ // eslint-disable-next-line no-await-in-loop -- Sequential for simplicity
202
+ const content = await readFile(join(fullPath, file), 'utf-8');
203
+ rules.push(content);
204
+ }
205
+ catch {
206
+ // Skip files that can't be read
207
+ }
208
+ }
209
+ return { rules, warnings };
210
+ }
211
+ catch (err) {
212
+ if (err.code !== 'ENOENT') {
213
+ warnings.push(`Failed to read local rules from ${fullPath}: ${err.message}`);
214
+ }
215
+ }
216
+ return { rules: [], warnings };
217
+ }
218
+ /**
219
+ * Import prompts/workflows from an editor's global config.
220
+ */
221
+ async function importPrompts(strategy, _source) {
222
+ const warnings = [], promptsPath = strategy.getGlobalPromptsPath();
223
+ if (!promptsPath) {
224
+ return { prompts: {}, warnings };
225
+ }
226
+ const fullPath = join(homedir(), promptsPath);
227
+ try {
228
+ const files = await readdir(fullPath), fileReader = async (filename) => {
229
+ return readFile(join(fullPath, filename), 'utf-8');
230
+ };
231
+ return strategy.parseGlobalPrompts(files, fileReader);
232
+ }
233
+ catch (err) {
234
+ if (err.code !== 'ENOENT') {
235
+ warnings.push(`Failed to read global prompts from ${fullPath}: ${err.message}`);
236
+ }
237
+ }
238
+ return { prompts: {}, warnings };
239
+ }
240
+ /**
241
+ * Import prompts/workflows from project-local editor config.
242
+ */
243
+ async function importLocalPrompts(strategy, editor, projectRoot) {
244
+ const warnings = [], configDir = EDITOR_CONFIG_DIRS[editor], promptsDir = strategy.getPromptsDir(), fullPath = join(projectRoot, configDir, promptsDir);
245
+ if (!strategy.isSupported()) {
246
+ return { prompts: {}, warnings };
247
+ }
248
+ try {
249
+ const files = await readdir(fullPath), fileReader = async (filename) => {
250
+ return readFile(join(fullPath, filename), 'utf-8');
251
+ };
252
+ return strategy.parseGlobalPrompts(files, fileReader);
253
+ }
254
+ catch (err) {
255
+ if (err.code !== 'ENOENT') {
256
+ warnings.push(`Failed to read local prompts from ${fullPath}: ${err.message}`);
257
+ }
258
+ }
259
+ return { prompts: {}, warnings };
260
+ }
261
+ /**
262
+ * Get the global config path for an editor.
263
+ */
264
+ export function getGlobalConfigPath(editor) {
265
+ const strategies = getImportStrategies(editor), configPath = strategies.mcp.getGlobalMcpConfigPath();
266
+ if (!configPath) {
267
+ return null;
268
+ }
269
+ return join(homedir(), configPath);
270
+ }
271
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/editors/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAI7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA0B7D;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAkB;IAC5C,QAAQ,MAAM,EAAE,CAAC;QACjB,KAAK,UAAU;YACZ,OAAO;gBACJ,GAAG,EAAE,IAAI,mBAAmB,EAAE;gBAC9B,KAAK,EAAE,IAAI,qBAAqB,EAAE;gBAClC,OAAO,EAAE,IAAI,uBAAuB,EAAE;aACxC,CAAC;QACL,KAAK,QAAQ;YACV,OAAO;gBACJ,GAAG,EAAE,IAAI,mBAAmB,EAAE;gBAC9B,KAAK,EAAE,IAAI,mBAAmB,EAAE;gBAChC,OAAO,EAAE,IAAI,qBAAqB,EAAE;aACtC,CAAC;QACL,KAAK,aAAa;YACf,OAAO;gBACJ,GAAG,EAAE,IAAI,qBAAqB,EAAE;gBAChC,KAAK,EAAE,IAAI,uBAAuB,EAAE;gBACpC,OAAO,EAAE,IAAI,yBAAyB,EAAE;aAC1C,CAAC;QACL,KAAK,QAAQ;YACV,OAAO;gBACJ,GAAG,EAAE,IAAI,iBAAiB,EAAE;gBAC5B,KAAK,EAAE,IAAI,mBAAmB,EAAE;gBAChC,OAAO,EAAE,IAAI,qBAAqB,EAAE;aACtC,CAAC;QACL,KAAK,KAAK;YACP,OAAO;gBACJ,GAAG,EAAE,IAAI,cAAc,EAAE;gBACzB,KAAK,EAAE,IAAI,gBAAgB,EAAE;gBAC7B,OAAO,EAAE,IAAI,kBAAkB,EAAE;aACnC,CAAC;QACL,KAAK,OAAO;YACT,OAAO;gBACJ,GAAG,EAAE,IAAI,gBAAgB,EAAE;gBAC3B,KAAK,EAAE,IAAI,kBAAkB,EAAE;gBAC/B,OAAO,EAAE,IAAI,oBAAoB,EAAE;aACrC,CAAC;IACL,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACnC,MAAkB,EAClB,UAAyB,EAAE;IAE3B,MAAM,MAAM,GAAiB;QACpB,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;KAC1C,EACD,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,EACxC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzD,kDAAkD;IAClD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1E,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAElE,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAExE,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAChC,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEhD,kEAAkE;IAClE,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAEjF,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAEjF,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAEvF,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC;AACjB,CAAC;AAED,oCAAoC;AACpC,MAAM,kBAAkB,GAA+B;IACpD,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,SAAS;IACjB,aAAa,EAAE,SAAS;IACxB,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,QAAQ;CACjB,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,eAAe,CAC3B,QAAqB,EACrB,OAAmB,EACnB,OAAiB;IAEjB,MAAM,QAAQ,GAAa,EAAE,EACvB,UAAU,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IAErD,IAAI,CAAC,UAAU,EAAE,CAAC;QACf,4DAA4D;QAC5D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IAE7C,IAAI,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC3C,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,uCAAuC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAChC,QAAqB,EACrB,MAAkB,EAClB,WAAmB;IAEnB,MAAM,QAAQ,GAAa,EAAE,EACvB,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,EACtC,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,EACxC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAE7D,oFAAoF;IACpF,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;QACxD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC3C,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAC/C,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,sCAAsC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CACvB,QAAuB,EACvB,OAAiB;IAEjB,MAAM,QAAQ,GAAa,EAAE,EACvB,SAAS,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAE5C,IAAI,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAElD,OAAO,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,oCAAoC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC5B,QAAuB,EACvB,MAAkB,EAClB,WAAmB;IAEnB,MAAM,QAAQ,GAAa,EAAE,EACvB,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,EACtC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,EACjC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAExD,IAAI,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAC/B,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EACjC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAChD,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACF,yEAAyE;gBACzE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE9D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACN,gCAAgC;YACnC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,mCAAmC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CACzB,QAAyB,EACzB,OAAiB;IAEjB,MAAM,QAAQ,GAAa,EAAE,EACvB,WAAW,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;IAEpD,IAAI,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;IAE9C,IAAI,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAC/B,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAmB,EAAE;YACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC;QAER,OAAO,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,sCAAsC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC9B,QAAyB,EACzB,MAAkB,EAClB,WAAmB;IAEnB,MAAM,QAAQ,GAAa,EAAE,EACvB,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,EACtC,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,EACrC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAE1D,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,EAC/B,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAmB,EAAE;YACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC;QAER,OAAO,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACZ,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,qCAAqC,QAAQ,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACnD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,EACxC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;IAE3D,IAAI,CAAC,UAAU,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type { EditorName, EditorAdapter, EditorConfig, EditorRule, ApplyOptions, ApplyResult, FileChange, FileChangeCategory, UnsupportedFeatures, } from './types.js';
2
+ export { BaseEditorAdapter, WindsurfAdapter, CursorAdapter, ClaudeCodeAdapter, VSCodeAdapter, ZedAdapter, CodexAdapter, } from './adapters/index.js';
3
+ export { getAdapter, getAvailableEditors, detectEditors, installToEditor, installToEditors, install, } from './install.js';
4
+ export { importFromEditor, getGlobalConfigPath } from './import.js';
5
+ export type { ImportResult } from './import.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,mBAAmB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACJ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,YAAY,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACJ,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,OAAO,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { BaseEditorAdapter, WindsurfAdapter, CursorAdapter, ClaudeCodeAdapter, VSCodeAdapter, ZedAdapter, CodexAdapter, } from './adapters/index.js';
2
+ export { getAdapter, getAvailableEditors, detectEditors, installToEditor, installToEditors, install, } from './install.js';
3
+ export { importFromEditor, getGlobalConfigPath } from './import.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editors/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACJ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,YAAY,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACJ,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,OAAO,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { AiJsonConfig } from '@a1st/aix-schema';
2
+ import type { EditorAdapter, EditorName, ApplyOptions, ApplyResult } from './types.js';
3
+ /**
4
+ * Get an adapter instance for a specific editor.
5
+ */
6
+ export declare function getAdapter(editor: EditorName): EditorAdapter;
7
+ /**
8
+ * Get all available editor names.
9
+ */
10
+ export declare function getAvailableEditors(): EditorName[];
11
+ /**
12
+ * Detect which editors are available. By default, checks for editors installed globally on the
13
+ * system. If `projectOnly` is true, only returns editors that have existing config directories in
14
+ * the project.
15
+ */
16
+ export declare function detectEditors(projectRoot: string, options?: {
17
+ projectOnly?: boolean;
18
+ }): Promise<EditorName[]>;
19
+ /**
20
+ * Install configuration to a single editor.
21
+ */
22
+ export declare function installToEditor(editor: EditorName, config: AiJsonConfig, projectRoot: string, options?: ApplyOptions): Promise<ApplyResult>;
23
+ /**
24
+ * Install configuration to multiple editors.
25
+ */
26
+ export declare function installToEditors(editors: EditorName[], config: AiJsonConfig, projectRoot: string, options?: ApplyOptions): Promise<ApplyResult[]>;
27
+ /**
28
+ * Install configuration to all detected editors, or specified editors if provided.
29
+ */
30
+ export declare function install(config: AiJsonConfig, projectRoot: string, options?: ApplyOptions & {
31
+ editors?: EditorName[];
32
+ }): Promise<ApplyResult[]>;
33
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/editors/install.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AA2D1G;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,CAO5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,UAAU,EAAE,CAElD;AAoCD;;;;GAIG;AACH,wBAAsB,aAAa,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,OAAO,CAAC,UAAU,EAAE,CAAC,CAWvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAClC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,WAAW,CAAC,CAmBtB;AA8DD;;GAEG;AACH,wBAAsB,gBAAgB,CACnC,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CAIxB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC1B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;CAAE,GACnD,OAAO,CAAC,WAAW,EAAE,CAAC,CAOxB"}
@@ -0,0 +1,186 @@
1
+ import pMap from 'p-map';
2
+ import { access, constants } from 'node:fs/promises';
3
+ import { homedir, platform } from 'node:os';
4
+ import { join } from 'pathe';
5
+ import { WindsurfAdapter, CursorAdapter, ClaudeCodeAdapter, VSCodeAdapter, ZedAdapter, CodexAdapter, } from './adapters/index.js';
6
+ import { analyzeGlobalChanges, applyGlobalChanges } from '../global/processor.js';
7
+ /**
8
+ * Registry of all available editor adapters.
9
+ */
10
+ const adapters = {
11
+ windsurf: WindsurfAdapter,
12
+ cursor: CursorAdapter,
13
+ 'claude-code': ClaudeCodeAdapter,
14
+ vscode: VSCodeAdapter,
15
+ zed: ZedAdapter,
16
+ codex: CodexAdapter,
17
+ };
18
+ /**
19
+ * Known global config/data paths for each editor by platform.
20
+ */
21
+ const EDITOR_GLOBAL_PATHS = {
22
+ windsurf: {
23
+ darwin: ['Library/Application Support/Windsurf'],
24
+ linux: ['.config/Windsurf'],
25
+ win32: ['AppData/Roaming/Windsurf'],
26
+ },
27
+ cursor: {
28
+ darwin: ['Library/Application Support/Cursor'],
29
+ linux: ['.config/Cursor'],
30
+ win32: ['AppData/Roaming/Cursor'],
31
+ },
32
+ 'claude-code': {
33
+ darwin: ['Library/Application Support/Claude'],
34
+ linux: ['.config/Claude'],
35
+ win32: ['AppData/Roaming/Claude'],
36
+ },
37
+ vscode: {
38
+ darwin: ['Library/Application Support/Code'],
39
+ linux: ['.config/Code'],
40
+ win32: ['AppData/Roaming/Code'],
41
+ },
42
+ zed: {
43
+ darwin: ['Library/Application Support/Zed'],
44
+ linux: ['.config/zed'],
45
+ win32: ['AppData/Roaming/Zed'],
46
+ },
47
+ codex: {
48
+ darwin: ['.codex'],
49
+ linux: ['.codex'],
50
+ win32: ['.codex'],
51
+ },
52
+ };
53
+ /**
54
+ * Get an adapter instance for a specific editor.
55
+ */
56
+ export function getAdapter(editor) {
57
+ const AdapterClass = adapters[editor];
58
+ if (!AdapterClass) {
59
+ throw new Error(`Unknown editor: ${editor}`);
60
+ }
61
+ return new AdapterClass();
62
+ }
63
+ /**
64
+ * Get all available editor names.
65
+ */
66
+ export function getAvailableEditors() {
67
+ return Object.keys(adapters);
68
+ }
69
+ /**
70
+ * Check if an editor is installed globally on the system by looking for its config/data directory.
71
+ */
72
+ async function isEditorInstalledGlobally(editor) {
73
+ const paths = EDITOR_GLOBAL_PATHS[editor]?.[platform()];
74
+ if (!paths) {
75
+ return false;
76
+ }
77
+ const home = homedir();
78
+ // Check paths sequentially - return on first match (first-match lookup)
79
+ for (const p of paths) {
80
+ try {
81
+ // eslint-disable-next-line no-await-in-loop -- Sequential: first-match lookup
82
+ await access(join(home, p), constants.F_OK);
83
+ return true;
84
+ }
85
+ catch {
86
+ // Continue checking other paths
87
+ }
88
+ }
89
+ return false;
90
+ }
91
+ /**
92
+ * Check if an editor has a config directory in the project (e.g., `.windsurf/`, `.cursor/`).
93
+ */
94
+ async function isEditorConfiguredInProject(editor, projectRoot) {
95
+ const adapter = getAdapter(editor);
96
+ return adapter.detect(projectRoot);
97
+ }
98
+ /**
99
+ * Detect which editors are available. By default, checks for editors installed globally on the
100
+ * system. If `projectOnly` is true, only returns editors that have existing config directories in
101
+ * the project.
102
+ */
103
+ export async function detectEditors(projectRoot, options = {}) {
104
+ const editors = getAvailableEditors(), checkFn = options.projectOnly
105
+ ? (editor) => isEditorConfiguredInProject(editor, projectRoot)
106
+ : isEditorInstalledGlobally;
107
+ const results = await pMap(editors, async (editor) => ({ editor, detected: await checkFn(editor) }), {
108
+ concurrency: 3,
109
+ });
110
+ return results.filter((r) => r.detected).map((r) => r.editor);
111
+ }
112
+ /**
113
+ * Install configuration to a single editor.
114
+ */
115
+ export async function installToEditor(editor, config, projectRoot, options) {
116
+ const adapter = getAdapter(editor), unsupportedFeatures = adapter.getUnsupportedFeatures(config), editorConfig = await adapter.generateConfig(config, projectRoot, options), result = await adapter.apply(editorConfig, projectRoot, options);
117
+ // Attach unsupported features to result if any exist
118
+ if (Object.keys(unsupportedFeatures).length > 0) {
119
+ result.unsupportedFeatures = unsupportedFeatures;
120
+ }
121
+ // Handle global-only features (MCP for Windsurf/Codex, Prompts for Codex)
122
+ const globalChanges = await processGlobalFeatures(adapter, editorConfig, projectRoot, options);
123
+ if (globalChanges) {
124
+ result.globalChanges = globalChanges;
125
+ }
126
+ return result;
127
+ }
128
+ /**
129
+ * Process global-only features for an editor.
130
+ * Analyzes what global changes are needed and applies them (with user confirmation in CLI).
131
+ */
132
+ async function processGlobalFeatures(adapter, editorConfig, projectRoot, options) {
133
+ // Access the adapter's strategies (they're protected, so we need to cast)
134
+ const adapterAny = adapter;
135
+ const mcpStrategy = adapterAny.mcpStrategy, promptsStrategy = adapterAny.promptsStrategy;
136
+ // Check if this editor has any global-only features
137
+ const hasMcpGlobalOnly = mcpStrategy?.isGlobalOnly?.() && Object.keys(editorConfig.mcp).length > 0, hasPromptsGlobalOnly = promptsStrategy?.isGlobalOnly?.() && editorConfig.prompts.length > 0;
138
+ if (!hasMcpGlobalOnly && !hasPromptsGlobalOnly) {
139
+ return undefined;
140
+ }
141
+ // Analyze what global changes are needed
142
+ const changes = await analyzeGlobalChanges(adapter.name, editorConfig, mcpStrategy, promptsStrategy);
143
+ if (changes.length === 0) {
144
+ return undefined;
145
+ }
146
+ // Apply the changes (respecting skipGlobal and autoConfirmGlobal options)
147
+ const globalResult = await applyGlobalChanges(changes, {
148
+ skipGlobal: options?.skipGlobal,
149
+ autoConfirm: options?.autoConfirmGlobal,
150
+ projectPath: projectRoot,
151
+ dryRun: options?.dryRun,
152
+ });
153
+ // Convert to GlobalChangesInfo format
154
+ const info = {
155
+ applied: globalResult.applied.map((c) => ({
156
+ type: c.type,
157
+ name: c.name,
158
+ globalPath: c.globalPath,
159
+ })),
160
+ skipped: globalResult.skipped.map((c) => ({
161
+ type: c.type,
162
+ name: c.name,
163
+ reason: c.skipReason ?? 'Unknown reason',
164
+ })),
165
+ warnings: globalResult.warnings,
166
+ };
167
+ return info;
168
+ }
169
+ /**
170
+ * Install configuration to multiple editors.
171
+ */
172
+ export async function installToEditors(editors, config, projectRoot, options) {
173
+ return pMap(editors, (editor) => installToEditor(editor, config, projectRoot, options), {
174
+ concurrency: 2,
175
+ });
176
+ }
177
+ /**
178
+ * Install configuration to all detected editors, or specified editors if provided.
179
+ */
180
+ export async function install(config, projectRoot, options) {
181
+ const editors = options?.editors ?? (await detectEditors(projectRoot));
182
+ // If no editors detected and none specified, install to all
183
+ const targetEditors = editors.length > 0 ? editors : getAvailableEditors();
184
+ return installToEditors(targetEditors, config, projectRoot, options);
185
+ }
186
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/editors/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { HooksConfig } from '@a1st/aix-schema';
2
+ import type { HooksStrategy } from '../types.js';
3
+ /**
4
+ * Claude Code hooks strategy. Writes hooks to `settings.json` in the `.claude` directory.
5
+ * Translates generic ai.json event names to Claude Code's PascalCase format.
6
+ */
7
+ export declare class ClaudeCodeHooksStrategy implements HooksStrategy {
8
+ isSupported(): boolean;
9
+ getConfigPath(): string;
10
+ getUnsupportedEvents(hooks: HooksConfig): string[];
11
+ formatConfig(hooks: HooksConfig): string;
12
+ }
13
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA+BjD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC1D,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE;IAIlD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;CAsB1C"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Map from generic ai.json hook events to Claude Code's PascalCase event names.
3
+ */
4
+ const EVENT_MAP = {
5
+ pre_tool_use: 'PreToolUse',
6
+ post_tool_use: 'PostToolUse',
7
+ pre_command: 'PreToolUse', // Claude Code uses PreToolUse with Bash matcher
8
+ post_command: 'PostToolUse',
9
+ session_start: 'SessionStart',
10
+ session_end: 'SessionEnd',
11
+ agent_stop: 'Stop',
12
+ pre_prompt: 'UserPromptSubmit',
13
+ };
14
+ /**
15
+ * Events that Claude Code supports but we don't have generic mappings for yet.
16
+ * These are Claude Code-specific and users can still use them via the native format.
17
+ */
18
+ const SUPPORTED_EVENTS = new Set([
19
+ 'pre_tool_use',
20
+ 'post_tool_use',
21
+ 'pre_command',
22
+ 'post_command',
23
+ 'session_start',
24
+ 'session_end',
25
+ 'agent_stop',
26
+ 'pre_prompt',
27
+ ]);
28
+ /**
29
+ * Claude Code hooks strategy. Writes hooks to `settings.json` in the `.claude` directory.
30
+ * Translates generic ai.json event names to Claude Code's PascalCase format.
31
+ */
32
+ export class ClaudeCodeHooksStrategy {
33
+ isSupported() {
34
+ return true;
35
+ }
36
+ getConfigPath() {
37
+ return 'settings.json';
38
+ }
39
+ getUnsupportedEvents(hooks) {
40
+ return Object.keys(hooks).filter((event) => !SUPPORTED_EVENTS.has(event));
41
+ }
42
+ formatConfig(hooks) {
43
+ const claudeHooks = {};
44
+ for (const [event, matchers] of Object.entries(hooks)) {
45
+ const claudeEvent = EVENT_MAP[event];
46
+ if (!claudeEvent) {
47
+ continue;
48
+ }
49
+ claudeHooks[claudeEvent] = matchers.map((matcher) => ({
50
+ matcher: matcher.matcher ?? '',
51
+ hooks: matcher.hooks.map((hook) => ({
52
+ type: 'command',
53
+ command: hook.command,
54
+ ...(hook.timeout && { timeout: hook.timeout }),
55
+ })),
56
+ }));
57
+ }
58
+ return JSON.stringify({ hooks: claudeHooks }, null, 2) + '\n';
59
+ }
60
+ }
61
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/hooks.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,SAAS,GAA2B;IACvC,YAAY,EAAE,YAAY;IAC1B,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,YAAY,EAAE,gDAAgD;IAC3E,YAAY,EAAE,aAAa;IAC3B,aAAa,EAAE,cAAc;IAC7B,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,kBAAkB;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC9B,cAAc;IACd,eAAe;IACf,aAAa;IACb,cAAc;IACd,eAAe;IACf,aAAa;IACb,YAAY;IACZ,YAAY;CACd,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IACjC,WAAW;QACR,OAAO,IAAI,CAAC;IACf,CAAC;IAED,aAAa;QACV,OAAO,eAAe,CAAC;IAC1B,CAAC;IAED,oBAAoB,CAAC,KAAkB;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,YAAY,CAAC,KAAkB;QAC5B,MAAM,WAAW,GAA8B,EAAE,CAAC;QAElD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YAErC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAChB,SAAS;YACZ,CAAC;YAED,WAAW,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAoB,EAAE,EAAE,CAAC,CAAC;gBAChE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;gBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACjC,IAAI,EAAE,SAAkB;oBACxB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;iBAChD,CAAC,CAAC;aACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACjE,CAAC;CACH"}
@@ -0,0 +1,5 @@
1
+ export { ClaudeCodeRulesStrategy } from './rules.js';
2
+ export { ClaudeCodeMcpStrategy } from './mcp.js';
3
+ export { ClaudeCodePromptsStrategy } from './prompts.js';
4
+ export { ClaudeCodeHooksStrategy } from './hooks.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { ClaudeCodeRulesStrategy } from './rules.js';
2
+ export { ClaudeCodeMcpStrategy } from './mcp.js';
3
+ export { ClaudeCodePromptsStrategy } from './prompts.js';
4
+ export { ClaudeCodeHooksStrategy } from './hooks.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}