@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 @@
1
+ {"version":3,"file":"no-prompts.js","sourceRoot":"","sources":["../../../../src/editors/strategies/shared/no-prompts.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC3B,WAAW;QACR,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,aAAa;QACV,OAAO,EAAE,CAAC;IACb,CAAC;IAED,gBAAgB;QACb,OAAO,EAAE,CAAC;IACb,CAAC;IAED,oBAAoB;QACjB,OAAO,IAAI,CAAC;IACf,CAAC;IAED,YAAY,CAAC,OAAqB;QAC/B,OAAO,EAAE,CAAC;IACb,CAAC;IAED,KAAK,CAAC,kBAAkB,CACrB,MAAgB,EAChB,SAAgD;QAEhD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;CACH"}
@@ -0,0 +1,17 @@
1
+ import type { ParsedSkill } from '@a1st/aix-schema';
2
+ import type { SkillsStrategy } from '../types.js';
3
+ import type { EditorRule, FileChange } from '../../types.js';
4
+ /**
5
+ * Pointer skills strategy for editors without native Agent Skills support (Windsurf, Cursor, Zed).
6
+ * Copies skills to `.aix/skills/` and generates pointer rules that tell the AI where to find the
7
+ * skill.
8
+ */
9
+ export declare class PointerSkillsStrategy implements SkillsStrategy {
10
+ getSkillsDir(): string;
11
+ isNative(): boolean;
12
+ installSkills(skills: Map<string, ParsedSkill>, projectRoot: string, options?: {
13
+ dryRun?: boolean;
14
+ }): Promise<FileChange[]>;
15
+ generateSkillRules(skills: Map<string, ParsedSkill>): EditorRule[];
16
+ }
17
+ //# sourceMappingURL=pointer-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointer-skills.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/shared/pointer-skills.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IACzD,YAAY,IAAI,MAAM;IAItB,QAAQ,IAAI,OAAO;IAIb,aAAa,CAChB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAChC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,OAAO,CAAC,UAAU,EAAE,CAAC;IA4BxB,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,UAAU,EAAE;CA4DpE"}
@@ -0,0 +1,72 @@
1
+ import pMap from 'p-map';
2
+ import { mkdir, cp } from 'node:fs/promises';
3
+ import { existsSync } from 'node:fs';
4
+ import { join, dirname } from 'pathe';
5
+ /**
6
+ * Pointer skills strategy for editors without native Agent Skills support (Windsurf, Cursor, Zed).
7
+ * Copies skills to `.aix/skills/` and generates pointer rules that tell the AI where to find the
8
+ * skill.
9
+ */
10
+ export class PointerSkillsStrategy {
11
+ getSkillsDir() {
12
+ return '.aix/skills';
13
+ }
14
+ isNative() {
15
+ return false;
16
+ }
17
+ async installSkills(skills, projectRoot, options = {}) {
18
+ const entries = Array.from(skills.entries());
19
+ const changes = await pMap(entries, async ([name, skill]) => {
20
+ const aixSkillDir = join(projectRoot, '.aix', 'skills', name), exists = existsSync(aixSkillDir);
21
+ if (!options.dryRun) {
22
+ await mkdir(dirname(aixSkillDir), { recursive: true });
23
+ await cp(skill.basePath, aixSkillDir, { recursive: true, force: true });
24
+ }
25
+ return {
26
+ path: aixSkillDir,
27
+ action: exists ? 'update' : 'create',
28
+ content: `[skill directory: ${skill.basePath}]`,
29
+ isDirectory: true,
30
+ category: 'skill',
31
+ };
32
+ }, { concurrency: 5 });
33
+ return changes;
34
+ }
35
+ generateSkillRules(skills) {
36
+ const rules = [];
37
+ for (const [name, skill] of skills) {
38
+ const { frontmatter } = skill, skillName = frontmatter.name, description = frontmatter.description || 'No description provided';
39
+ // Build contextual sections from frontmatter
40
+ // Note: Don't add a header here - the editor's rules strategy will add one based on rule.name
41
+ const sections = [description];
42
+ // Add compatibility info if present
43
+ if (frontmatter.compatibility) {
44
+ sections.push('', `**Compatibility**: ${frontmatter.compatibility}`);
45
+ }
46
+ // Add license info if present
47
+ if (frontmatter.license) {
48
+ sections.push('', `**License**: ${frontmatter.license}`);
49
+ }
50
+ // Add allowed tools if specified
51
+ if (frontmatter['allowed-tools']) {
52
+ sections.push('', `**Allowed Tools**: ${frontmatter['allowed-tools']}`);
53
+ }
54
+ // Add any custom metadata
55
+ if (frontmatter.metadata && Object.keys(frontmatter.metadata).length > 0) {
56
+ sections.push('', '## Metadata');
57
+ for (const [key, value] of Object.entries(frontmatter.metadata)) {
58
+ sections.push(`- **${key}**: ${value}`);
59
+ }
60
+ }
61
+ // Add location and quick reference
62
+ sections.push('', '## Location', '', `This skill is installed at \`.aix/skills/${skillName}/\`. Read the \`SKILL.md\` file there for full instructions.`, '', '## Quick Reference', '', `- **Instructions**: \`.aix/skills/${skillName}/SKILL.md\``, `- **Scripts**: \`.aix/skills/${skillName}/scripts/\` (if available)`, `- **References**: \`.aix/skills/${skillName}/references/\` (if available)`, '', 'When you need to use this skill, read the SKILL.md file for detailed instructions.');
63
+ rules.push({
64
+ name: `skill-${name}`,
65
+ content: sections.join('\n'),
66
+ activation: { type: 'always' },
67
+ });
68
+ }
69
+ return rules;
70
+ }
71
+ }
72
+ //# sourceMappingURL=pointer-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointer-skills.js","sourceRoot":"","sources":["../../../../src/editors/strategies/shared/pointer-skills.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKtC;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAC/B,YAAY;QACT,OAAO,aAAa,CAAC;IACxB,CAAC;IAED,QAAQ;QACL,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CAChB,MAAgC,EAChC,WAAmB,EACnB,UAAgC,EAAE;QAElC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,MAAM,IAAI,CACvB,OAAO,EACP,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACrB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,EACvD,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,OAAO;gBACJ,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;gBACpC,OAAO,EAAE,qBAAqB,KAAK,CAAC,QAAQ,GAAG;gBAC/C,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE,OAAO;aACL,CAAC;QACnB,CAAC,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,CACpB,CAAC;QAEF,OAAO,OAAO,CAAC;IAClB,CAAC;IAED,kBAAkB,CAAC,MAAgC;QAChD,MAAM,KAAK,GAAiB,EAAE,CAAC;QAE/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YAClC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,EACvB,SAAS,GAAG,WAAW,CAAC,IAAI,EAC5B,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,yBAAyB,CAAC;YAEzE,6CAA6C;YAC7C,8FAA8F;YAC9F,MAAM,QAAQ,GAAa,CAAC,WAAW,CAAC,CAAC;YAEzC,oCAAoC;YACpC,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,8BAA8B;YAC9B,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,iCAAiC;YACjC,IAAI,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,0BAA0B;YAC1B,IAAI,WAAW,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;gBACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/D,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,QAAQ,CAAC,IAAI,CACV,EAAE,EACF,aAAa,EACb,EAAE,EACF,4CAA4C,SAAS,8DAA8D,EACnH,EAAE,EACF,oBAAoB,EACpB,EAAE,EACF,qCAAqC,SAAS,aAAa,EAC3D,gCAAgC,SAAS,4BAA4B,EACrE,mCAAmC,SAAS,+BAA+B,EAC3E,EAAE,EACF,oFAAoF,CACtF,CAAC;YAEF,KAAK,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,SAAS,IAAI,EAAE;gBACrB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC,CAAC,CAAC;QACN,CAAC;QAED,OAAO,KAAK,CAAC;IAChB,CAAC;CACH"}
@@ -0,0 +1,16 @@
1
+ import type { McpServerConfig } from '@a1st/aix-schema';
2
+ import type { McpStrategy } from '../types.js';
3
+ /**
4
+ * Standard MCP strategy used by Cursor and Claude Code. Uses `mcp.json` with a `mcpServers` object.
5
+ */
6
+ export declare class StandardMcpStrategy implements McpStrategy {
7
+ isSupported(): boolean;
8
+ getConfigPath(): string;
9
+ getGlobalMcpConfigPath(): string | null;
10
+ formatConfig(mcp: Record<string, McpServerConfig>): string;
11
+ parseGlobalMcpConfig(content: string): {
12
+ mcp: Record<string, McpServerConfig>;
13
+ warnings: string[];
14
+ };
15
+ }
16
+ //# sourceMappingURL=standard-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-mcp.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/shared/standard-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACpD,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,sBAAsB,IAAI,MAAM,GAAG,IAAI;IAIvC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM;IA0B1D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG;QACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACrB;CAsCH"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Standard MCP strategy used by Cursor and Claude Code. Uses `mcp.json` with a `mcpServers` object.
3
+ */
4
+ export class StandardMcpStrategy {
5
+ isSupported() {
6
+ return true;
7
+ }
8
+ getConfigPath() {
9
+ return 'mcp.json';
10
+ }
11
+ getGlobalMcpConfigPath() {
12
+ return '.cursor/mcp.json';
13
+ }
14
+ formatConfig(mcp) {
15
+ const mcpServers = {};
16
+ for (const [name, serverConfig] of Object.entries(mcp)) {
17
+ if (serverConfig.enabled === false) {
18
+ continue;
19
+ }
20
+ if ('command' in serverConfig) {
21
+ const server = { command: serverConfig.command };
22
+ if (serverConfig.args && serverConfig.args.length > 0) {
23
+ server.args = serverConfig.args;
24
+ }
25
+ if (serverConfig.env && Object.keys(serverConfig.env).length > 0) {
26
+ server.env = serverConfig.env;
27
+ }
28
+ mcpServers[name] = server;
29
+ }
30
+ else if ('url' in serverConfig) {
31
+ mcpServers[name] = { url: serverConfig.url };
32
+ }
33
+ }
34
+ return JSON.stringify({ mcpServers }, null, 2) + '\n';
35
+ }
36
+ parseGlobalMcpConfig(content) {
37
+ const mcp = {}, warnings = [];
38
+ try {
39
+ const config = JSON.parse(content), servers = config.mcpServers ?? {};
40
+ for (const [name, server] of Object.entries(servers)) {
41
+ const s = server;
42
+ if (s.command) {
43
+ const serverConfig = {
44
+ command: String(s.command),
45
+ };
46
+ if (Array.isArray(s.args) && s.args.length > 0) {
47
+ serverConfig.args = s.args.map(String);
48
+ }
49
+ if (typeof s.env === 'object' && s.env !== null && Object.keys(s.env).length > 0) {
50
+ serverConfig.env = Object.fromEntries(Object.entries(s.env).map(([k, v]) => [k, String(v)]));
51
+ }
52
+ mcp[name] = serverConfig;
53
+ }
54
+ else if (s.url) {
55
+ mcp[name] = { url: String(s.url) };
56
+ }
57
+ else {
58
+ warnings.push(`Skipping MCP server "${name}": unknown format`);
59
+ }
60
+ }
61
+ }
62
+ catch (err) {
63
+ warnings.push(`Failed to parse MCP config: ${err.message}`);
64
+ }
65
+ return { mcp, warnings };
66
+ }
67
+ }
68
+ //# sourceMappingURL=standard-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-mcp.js","sourceRoot":"","sources":["../../../../src/editors/strategies/shared/standard-mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import type { McpServerConfig, ParsedSkill, HooksConfig } from '@a1st/aix-schema';
2
+ import type { EditorPrompt, EditorRule, FileChange } from '../types.js';
3
+ /**
4
+ * Strategy for formatting and writing rules to an editor. Each editor has different rule file
5
+ * formats and activation mode syntax.
6
+ */
7
+ export interface RulesStrategy {
8
+ /** Format a single rule for this editor, including any frontmatter */
9
+ formatRule(rule: EditorRule): string;
10
+ /** Get the rules directory path relative to the editor config dir (e.g., 'rules') */
11
+ getRulesDir(): string;
12
+ /** Get the file extension for rule files (e.g., '.md', '.mdc') */
13
+ getFileExtension(): string;
14
+ /** Get the global rules path relative to home directory, or null if not supported */
15
+ getGlobalRulesPath(): string | null;
16
+ /** Parse rules from file content. Returns array of rule strings. */
17
+ parseGlobalRules(content: string): {
18
+ rules: string[];
19
+ warnings: string[];
20
+ };
21
+ }
22
+ /**
23
+ * Strategy for formatting and writing MCP configuration to an editor. Each editor has different
24
+ * MCP config file locations and JSON structures.
25
+ */
26
+ export interface McpStrategy {
27
+ /** Whether this editor supports MCP */
28
+ isSupported(): boolean;
29
+ /**
30
+ * Whether this editor only supports global MCP config (no project-level config).
31
+ * If true, the install flow will handle global config management with user confirmation.
32
+ */
33
+ isGlobalOnly?(): boolean;
34
+ /** Format MCP config for this editor */
35
+ formatConfig(mcp: Record<string, McpServerConfig>): string;
36
+ /** Get the MCP config file path relative to the editor config dir (e.g., 'mcp.json') */
37
+ getConfigPath(): string;
38
+ /** Get the global MCP config path relative to home directory, or null if not supported */
39
+ getGlobalMcpConfigPath(): string | null;
40
+ /** Parse MCP config from file content */
41
+ parseGlobalMcpConfig(content: string): {
42
+ mcp: Record<string, McpServerConfig>;
43
+ warnings: string[];
44
+ };
45
+ }
46
+ /**
47
+ * Strategy for installing skills to an editor. Editors with native Agent Skills support use
48
+ * symlinks, while others use pointer rules.
49
+ */
50
+ export interface SkillsStrategy {
51
+ /**
52
+ * Install skills to the project. All strategies copy skills to `.aix/skills/{name}/` as the
53
+ * source of truth. Native strategies also create symlinks; pointer strategies generate rules.
54
+ *
55
+ * @returns File changes for skill directories and any symlinks created
56
+ */
57
+ installSkills(skills: Map<string, ParsedSkill>, projectRoot: string, options: {
58
+ dryRun?: boolean;
59
+ }): Promise<FileChange[]>;
60
+ /**
61
+ * Generate pointer rules for installed skills. Native strategies return empty array since the
62
+ * editor reads skills directly.
63
+ */
64
+ generateSkillRules(skills: Map<string, ParsedSkill>): EditorRule[];
65
+ /** Get the central skills directory path relative to project root */
66
+ getSkillsDir(): string;
67
+ /** Whether this strategy uses native Agent Skills support (symlinks) or pointer rules */
68
+ isNative(): boolean;
69
+ }
70
+ /**
71
+ * Configuration for creating a skills strategy
72
+ */
73
+ export interface NativeSkillsConfig {
74
+ /** The editor's native skills directory (e.g., '.claude/skills' or '.github/skills') */
75
+ editorSkillsDir: string;
76
+ }
77
+ /**
78
+ * Strategy for formatting and writing prompts/commands to an editor. Each editor has different
79
+ * prompt file formats, locations, and frontmatter fields.
80
+ */
81
+ export interface PromptsStrategy {
82
+ /** Whether this editor supports prompts/commands */
83
+ isSupported(): boolean;
84
+ /**
85
+ * Whether this editor only supports global prompts (no project-level config).
86
+ * If true, the install flow will handle global config management with user confirmation.
87
+ */
88
+ isGlobalOnly?(): boolean;
89
+ /** Format a single prompt for this editor, including any frontmatter */
90
+ formatPrompt(prompt: EditorPrompt): string;
91
+ /** Get the prompts directory path relative to the editor config dir (e.g., 'commands') */
92
+ getPromptsDir(): string;
93
+ /** Get the file extension for prompt files (e.g., '.md', '.prompt.md') */
94
+ getFileExtension(): string;
95
+ /** Get the global prompts directory path relative to home directory, or null if not supported */
96
+ getGlobalPromptsPath(): string | null;
97
+ /**
98
+ * Parse prompts from directory. Receives file list and reader function.
99
+ * Returns map of prompt name to content.
100
+ */
101
+ parseGlobalPrompts(files: string[], readFile: (filename: string) => Promise<string>): Promise<{
102
+ prompts: Record<string, string>;
103
+ warnings: string[];
104
+ }>;
105
+ }
106
+ /**
107
+ * Strategy for formatting and writing hooks to an editor. Each editor has different hook event
108
+ * names, config file locations, and JSON structures.
109
+ */
110
+ export interface HooksStrategy {
111
+ /** Whether this editor supports hooks */
112
+ isSupported(): boolean;
113
+ /**
114
+ * Format hooks config for this editor, translating generic event names to editor-specific names.
115
+ * Returns the formatted JSON string ready to be written to the config file.
116
+ */
117
+ formatConfig(hooks: HooksConfig): string;
118
+ /** Get the hooks config file path relative to the editor config dir (e.g., 'settings.json') */
119
+ getConfigPath(): string;
120
+ /**
121
+ * Get the list of hook events that this editor does NOT support.
122
+ * Used to warn users when they configure hooks that won't work for a particular editor.
123
+ */
124
+ getUnsupportedEvents(hooks: HooksConfig): string[];
125
+ }
126
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/editors/strategies/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/editors/strategies/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export { VSCodeRulesStrategy } from './rules.js';
2
+ export { VSCodeMcpStrategy } from './mcp.js';
3
+ export { VSCodePromptsStrategy } from './prompts.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/vscode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { VSCodeRulesStrategy } from './rules.js';
2
+ export { VSCodeMcpStrategy } from './mcp.js';
3
+ export { VSCodePromptsStrategy } from './prompts.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/editors/strategies/vscode/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { McpServerConfig } from '@a1st/aix-schema';
2
+ import type { McpStrategy } from '../types.js';
3
+ /**
4
+ * VS Code MCP strategy. VS Code uses `mcp.json` with a `servers` object (not `mcpServers`).
5
+ * Project-level config goes to `.vscode/mcp.json`.
6
+ */
7
+ export declare class VSCodeMcpStrategy implements McpStrategy {
8
+ isSupported(): boolean;
9
+ getConfigPath(): string;
10
+ getGlobalMcpConfigPath(): string | null;
11
+ formatConfig(mcp: Record<string, McpServerConfig>): string;
12
+ parseGlobalMcpConfig(content: string): {
13
+ mcp: Record<string, McpServerConfig>;
14
+ warnings: string[];
15
+ };
16
+ }
17
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/vscode/mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IAClD,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,sBAAsB,IAAI,MAAM,GAAG,IAAI;IAUvC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM;IA2B1D,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG;QACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACrB;CA2CH"}
@@ -0,0 +1,85 @@
1
+ import { platform } from 'node:os';
2
+ import { getTransport } from '../../../mcp/normalize.js';
3
+ /**
4
+ * VS Code MCP strategy. VS Code uses `mcp.json` with a `servers` object (not `mcpServers`).
5
+ * Project-level config goes to `.vscode/mcp.json`.
6
+ */
7
+ export class VSCodeMcpStrategy {
8
+ isSupported() {
9
+ return true;
10
+ }
11
+ getConfigPath() {
12
+ return 'mcp.json';
13
+ }
14
+ getGlobalMcpConfigPath() {
15
+ const paths = {
16
+ darwin: 'Library/Application Support/Code/User/mcp.json',
17
+ linux: '.config/Code/User/mcp.json',
18
+ win32: 'AppData/Roaming/Code/User/mcp.json',
19
+ };
20
+ return paths[platform()] ?? null;
21
+ }
22
+ formatConfig(mcp) {
23
+ const servers = {};
24
+ for (const [name, serverConfig] of Object.entries(mcp)) {
25
+ if (serverConfig.enabled === false) {
26
+ continue;
27
+ }
28
+ const transport = getTransport(serverConfig);
29
+ if (transport.type === 'stdio') {
30
+ servers[name] = {
31
+ command: transport.command,
32
+ args: transport.args ?? [],
33
+ env: transport.env ?? {},
34
+ };
35
+ }
36
+ else if (transport.type === 'http') {
37
+ servers[name] = {
38
+ type: 'http',
39
+ url: transport.url,
40
+ };
41
+ }
42
+ }
43
+ return JSON.stringify({ servers }, null, 2) + '\n';
44
+ }
45
+ parseGlobalMcpConfig(content) {
46
+ const mcp = {}, warnings = [];
47
+ try {
48
+ const config = JSON.parse(content), servers = config.servers ?? {};
49
+ for (const [name, server] of Object.entries(servers)) {
50
+ const s = server;
51
+ if (s.command) {
52
+ mcp[name] = {
53
+ command: String(s.command),
54
+ args: Array.isArray(s.args) ? s.args.map(String) : [],
55
+ env: typeof s.env === 'object' && s.env !== null
56
+ ? Object.fromEntries(Object.entries(s.env).map(([k, v]) => [k, String(v)]))
57
+ : undefined,
58
+ enabled: true,
59
+ autoStart: true,
60
+ restartOnFailure: true,
61
+ maxRestarts: 3,
62
+ };
63
+ }
64
+ else if (s.type === 'http' && s.url) {
65
+ mcp[name] = {
66
+ url: String(s.url),
67
+ validateOrigin: false,
68
+ enabled: true,
69
+ autoStart: true,
70
+ restartOnFailure: true,
71
+ maxRestarts: 3,
72
+ };
73
+ }
74
+ else {
75
+ warnings.push(`Skipping VS Code MCP server "${name}": unknown format`);
76
+ }
77
+ }
78
+ }
79
+ catch (err) {
80
+ warnings.push(`Failed to parse VS Code MCP config: ${err.message}`);
81
+ }
82
+ return { mcp, warnings };
83
+ }
84
+ }
85
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/editors/strategies/vscode/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { EditorPrompt } from '../../types.js';
2
+ import type { PromptsStrategy } from '../types.js';
3
+ /**
4
+ * VS Code prompts strategy. Uses markdown files with YAML frontmatter in `.github/prompts/`.
5
+ * Files use `.prompt.md` extension. Supports `description` and `argument-hint` frontmatter fields.
6
+ */
7
+ export declare class VSCodePromptsStrategy implements PromptsStrategy {
8
+ isSupported(): boolean;
9
+ getPromptsDir(): string;
10
+ getFileExtension(): string;
11
+ getGlobalPromptsPath(): string | null;
12
+ formatPrompt(prompt: EditorPrompt): string;
13
+ parseGlobalPrompts(files: string[], readFile: (filename: string) => Promise<string>): Promise<{
14
+ prompts: Record<string, string>;
15
+ warnings: string[];
16
+ }>;
17
+ }
18
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/vscode/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC1D,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAKvB,gBAAgB,IAAI,MAAM;IAI1B,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAUrC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAyBpC,kBAAkB,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC/C,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAgDrE"}
@@ -0,0 +1,81 @@
1
+ import pMap from 'p-map';
2
+ import { platform } from 'node:os';
3
+ /**
4
+ * VS Code prompts strategy. Uses markdown files with YAML frontmatter in `.github/prompts/`.
5
+ * Files use `.prompt.md` extension. Supports `description` and `argument-hint` frontmatter fields.
6
+ */
7
+ export class VSCodePromptsStrategy {
8
+ isSupported() {
9
+ return true;
10
+ }
11
+ getPromptsDir() {
12
+ // VS Code prompt files go in .github/prompts/, not in .vscode/
13
+ return '../.github/prompts';
14
+ }
15
+ getFileExtension() {
16
+ return '.prompt.md';
17
+ }
18
+ getGlobalPromptsPath() {
19
+ const paths = {
20
+ darwin: 'Library/Application Support/Code/User/prompts',
21
+ linux: '.config/Code/User/prompts',
22
+ win32: 'AppData/Roaming/Code/User/prompts',
23
+ };
24
+ return paths[platform()] ?? null;
25
+ }
26
+ formatPrompt(prompt) {
27
+ const frontmatter = {};
28
+ if (prompt.description) {
29
+ frontmatter.description = prompt.description;
30
+ }
31
+ if (prompt.argumentHint) {
32
+ frontmatter['argument-hint'] = prompt.argumentHint;
33
+ }
34
+ const lines = [];
35
+ if (Object.keys(frontmatter).length > 0) {
36
+ lines.push('---');
37
+ for (const [key, value] of Object.entries(frontmatter)) {
38
+ lines.push(`${key}: ${value}`);
39
+ }
40
+ lines.push('---', '');
41
+ }
42
+ lines.push(prompt.content);
43
+ return lines.join('\n');
44
+ }
45
+ async parseGlobalPrompts(files, readFile) {
46
+ const mdFiles = files.filter((f) => f.endsWith('.md') && !f.endsWith('.instructions.md'));
47
+ const results = await pMap(mdFiles, async (file) => {
48
+ try {
49
+ const content = await readFile(file);
50
+ if (content.trim()) {
51
+ return {
52
+ type: 'prompt',
53
+ name: file.replace(/\.md$/, ''),
54
+ content: content.trim(),
55
+ };
56
+ }
57
+ return null;
58
+ }
59
+ catch (err) {
60
+ return {
61
+ type: 'warning',
62
+ message: `Failed to read prompt ${file}: ${err.message}`,
63
+ };
64
+ }
65
+ }, { concurrency: 5 });
66
+ const prompts = {}, warnings = [];
67
+ for (const result of results) {
68
+ if (!result) {
69
+ continue;
70
+ }
71
+ if (result.type === 'warning') {
72
+ warnings.push(result.message);
73
+ }
74
+ else {
75
+ prompts[result.name] = result.content;
76
+ }
77
+ }
78
+ return { prompts, warnings };
79
+ }
80
+ }
81
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/editors/strategies/vscode/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { RulesStrategy } from '../types.js';
2
+ import type { EditorRule } from '../../types.js';
3
+ /**
4
+ * VS Code (GitHub Copilot) rules strategy. Uses `.instructions.md` files with YAML frontmatter
5
+ * containing an `applyTo` field for glob patterns. Rules go to `.github/instructions/` directory.
6
+ */
7
+ export declare class VSCodeRulesStrategy implements RulesStrategy {
8
+ getRulesDir(): string;
9
+ getFileExtension(): string;
10
+ getGlobalRulesPath(): string | null;
11
+ parseGlobalRules(_content: string): {
12
+ rules: string[];
13
+ warnings: string[];
14
+ };
15
+ formatRule(rule: EditorRule): string;
16
+ }
17
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/vscode/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACtD,WAAW,IAAI,MAAM;IAKrB,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAKnC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAI3E,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CAqBtC"}