@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":"remote-loader.js","sourceRoot":"","sources":["../src/remote-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { loadRule, loadRules, type LoadedRule } from './loader.js';
2
+ export { mergeRules, getActiveRules, type MergedRule, type MergedRules, type MergeOptions, type RuleScope, } from './merger.js';
3
+ export { interpolateRule, interpolateRules, hasUnresolvedVariables, extractVariableNames, type InterpolationContext, } from './interpolate.js';
4
+ export { loadSkillRules, loadAllSkillRules } from './skill-rules.js';
5
+ export { formatRulesForEditor, validateRuleContent, deduplicateRules, getRulesSummary, filterByScope, getMentionableRules, } from './utils.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACJ,UAAU,EACV,cAAc,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACJ,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,oBAAoB,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACJ,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,GACrB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { loadRule, loadRules } from './loader.js';
2
+ export { mergeRules, getActiveRules, } from './merger.js';
3
+ export { interpolateRule, interpolateRules, hasUnresolvedVariables, extractVariableNames, } from './interpolate.js';
4
+ export { loadSkillRules, loadAllSkillRules } from './skill-rules.js';
5
+ export { formatRulesForEditor, validateRuleContent, deduplicateRules, getRulesSummary, filterByScope, getMentionableRules, } from './utils.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACnE,OAAO,EACJ,UAAU,EACV,cAAc,GAKhB,MAAM,aAAa,CAAC;AACrB,OAAO,EACJ,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACJ,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,GACrB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,27 @@
1
+ export interface InterpolationContext {
2
+ project: {
3
+ name: string;
4
+ version?: string;
5
+ description?: string;
6
+ };
7
+ editor: string;
8
+ env: Record<string, string | undefined>;
9
+ custom: Record<string, unknown>;
10
+ }
11
+ /**
12
+ * Interpolate variables in rule content using {{variable.path}} syntax
13
+ */
14
+ export declare function interpolateRule(content: string, context: InterpolationContext): string;
15
+ /**
16
+ * Interpolate variables in multiple rules
17
+ */
18
+ export declare function interpolateRules(rules: string[], context: InterpolationContext): string[];
19
+ /**
20
+ * Check if content has unresolved variables
21
+ */
22
+ export declare function hasUnresolvedVariables(content: string): boolean;
23
+ /**
24
+ * Extract all variable names from content
25
+ */
26
+ export declare function extractVariableNames(content: string): string[];
27
+ //# sourceMappingURL=interpolate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/rules/interpolate.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IAClC,OAAO,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAmBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAUtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAEzF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAI9D"}
@@ -0,0 +1,48 @@
1
+ const VARIABLE_PATTERN = /\{\{([^}]+)\}\}/g;
2
+ /**
3
+ * Get a value from an object by dot-separated path
4
+ */
5
+ function getValueByPath(obj, path) {
6
+ const parts = path.split('.');
7
+ let current = obj;
8
+ for (const part of parts) {
9
+ if (current === null || current === undefined) {
10
+ return undefined;
11
+ }
12
+ current = current[part];
13
+ }
14
+ return current;
15
+ }
16
+ /**
17
+ * Interpolate variables in rule content using {{variable.path}} syntax
18
+ */
19
+ export function interpolateRule(content, context) {
20
+ return content.replace(VARIABLE_PATTERN, (match, path) => {
21
+ const value = getValueByPath(context, path.trim());
22
+ if (value === undefined) {
23
+ console.warn(`Unknown variable in rule: ${path}`);
24
+ return match;
25
+ }
26
+ return String(value);
27
+ });
28
+ }
29
+ /**
30
+ * Interpolate variables in multiple rules
31
+ */
32
+ export function interpolateRules(rules, context) {
33
+ return rules.map((rule) => interpolateRule(rule, context));
34
+ }
35
+ /**
36
+ * Check if content has unresolved variables
37
+ */
38
+ export function hasUnresolvedVariables(content) {
39
+ return VARIABLE_PATTERN.test(content);
40
+ }
41
+ /**
42
+ * Extract all variable names from content
43
+ */
44
+ export function extractVariableNames(content) {
45
+ const matches = content.matchAll(new RegExp(VARIABLE_PATTERN.source, 'g'));
46
+ return [...matches].map((m) => m[1]).filter((name) => name !== undefined);
47
+ }
48
+ //# sourceMappingURL=interpolate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../../src/rules/interpolate.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAa5C;;GAEG;AACH,SAAS,cAAc,CAAC,GAAY,EAAE,IAAY;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,OAA6B;IAC3E,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,OAA6B;IAC5E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACnD,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC7F,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { RuleValue, ActivationMode, RulesConfig } from '@a1st/aix-schema';
2
+ export interface LoadedRule {
3
+ name: string;
4
+ content: string;
5
+ source: 'inline' | 'file' | 'git' | 'npm';
6
+ sourcePath?: string;
7
+ metadata: {
8
+ description?: string;
9
+ activation: ActivationMode;
10
+ globs?: string[];
11
+ };
12
+ }
13
+ /**
14
+ * Load a single rule from any source.
15
+ * @param name - The rule name (key from the rules object)
16
+ * @param value - The rule value (string shorthand or object)
17
+ * @param basePath - Base path for resolving relative paths
18
+ */
19
+ export declare function loadRule(name: string, value: RuleValue, basePath: string): Promise<LoadedRule>;
20
+ /**
21
+ * Load all rules from a rules config object.
22
+ * @param rules - Rules config object (keyed by name)
23
+ * @param basePath - Base path for resolving relative paths
24
+ * @returns Record of loaded rules keyed by name
25
+ */
26
+ export declare function loadRules(rules: RulesConfig, basePath: string): Promise<Record<string, LoadedRule>>;
27
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/rules/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM3F,MAAM,WAAW,UAAU;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,cAAc,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACJ;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuEpG;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC5B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAarC"}
@@ -0,0 +1,94 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { resolve, dirname } from 'pathe';
3
+ import { tmpdir } from 'node:os';
4
+ import { normalizeSourceRef } from '@a1st/aix-schema';
5
+ import { getRulesCacheDir } from '../cache/paths.js';
6
+ import { loadFromGit } from '../git-loader.js';
7
+ import { resolveNpmPath } from '../npm/resolve.js';
8
+ /**
9
+ * Load a single rule from any source.
10
+ * @param name - The rule name (key from the rules object)
11
+ * @param value - The rule value (string shorthand or object)
12
+ * @param basePath - Base path for resolving relative paths
13
+ */
14
+ export async function loadRule(name, value, basePath) {
15
+ // Normalize string shorthand transparently
16
+ const ruleObj = typeof value === 'string' ? normalizeSourceRef(value) : value;
17
+ const metadata = {
18
+ description: ruleObj.description,
19
+ activation: (ruleObj.activation ?? 'always'),
20
+ globs: ruleObj.globs,
21
+ };
22
+ // Inline content
23
+ if (ruleObj.content) {
24
+ return {
25
+ name,
26
+ content: ruleObj.content,
27
+ source: 'inline',
28
+ metadata,
29
+ };
30
+ }
31
+ // Local file
32
+ if (ruleObj.path) {
33
+ const fullPath = resolve(dirname(basePath), ruleObj.path);
34
+ const content = await readFile(fullPath, 'utf-8');
35
+ return {
36
+ name,
37
+ content: content.trim(),
38
+ source: 'file',
39
+ sourcePath: fullPath,
40
+ metadata,
41
+ };
42
+ }
43
+ // Git repository
44
+ if (ruleObj.git) {
45
+ const baseDir = dirname(basePath) || tmpdir();
46
+ const result = await loadFromGit({
47
+ git: ruleObj.git,
48
+ cacheDir: getRulesCacheDir(baseDir),
49
+ defaultFilePath: 'RULES.md',
50
+ });
51
+ return {
52
+ name,
53
+ content: result.content,
54
+ source: 'git',
55
+ sourcePath: result.sourcePath,
56
+ metadata,
57
+ };
58
+ }
59
+ // NPM package
60
+ if (ruleObj.npm) {
61
+ const filePath = await resolveNpmPath({
62
+ packageName: ruleObj.npm.npm,
63
+ subpath: ruleObj.npm.path,
64
+ version: ruleObj.npm.version,
65
+ projectRoot: dirname(basePath),
66
+ });
67
+ const content = await readFile(filePath, 'utf-8');
68
+ return {
69
+ name,
70
+ content: content.trim(),
71
+ source: 'npm',
72
+ sourcePath: filePath,
73
+ metadata,
74
+ };
75
+ }
76
+ throw new Error(`Invalid rule "${name}": no content source found`);
77
+ }
78
+ /**
79
+ * Load all rules from a rules config object.
80
+ * @param rules - Rules config object (keyed by name)
81
+ * @param basePath - Base path for resolving relative paths
82
+ * @returns Record of loaded rules keyed by name
83
+ */
84
+ export async function loadRules(rules, basePath) {
85
+ // Filter out false values (disabled rules)
86
+ const entries = Object.entries(rules).filter(([, value]) => value !== false);
87
+ const loadedEntries = await Promise.all(entries.map(async ([name, value]) => {
88
+ // Type assertion safe because we filtered out false above
89
+ const loaded = await loadRule(name, value, basePath);
90
+ return [name, loaded];
91
+ }));
92
+ return Object.fromEntries(loadedEntries);
93
+ }
94
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/rules/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { LoadedRule } from './loader.js';
2
+ import type { RulesConfig } from '@a1st/aix-schema';
3
+ export type RuleScope = 'skill' | 'project' | 'editor';
4
+ export interface MergedRule extends LoadedRule {
5
+ scope: RuleScope;
6
+ }
7
+ export interface MergedRules {
8
+ /** All rules (for debugging/inspection) */
9
+ all: MergedRule[];
10
+ /** Rules to always include */
11
+ always: MergedRule[];
12
+ /** Rules for AI to decide (with descriptions) */
13
+ auto: MergedRule[];
14
+ /** Rules matching current file globs */
15
+ glob: MergedRule[];
16
+ /** Manual rules (available for @mention) */
17
+ manual: MergedRule[];
18
+ }
19
+ export interface MergeOptions {
20
+ /** Current file path (for glob matching) */
21
+ targetPath?: string;
22
+ /** Editor-specific rules from editors.[editor].rules */
23
+ editorRules?: RulesConfig;
24
+ /** Whether to include skill rules (default: true) */
25
+ includeSkillRules?: boolean;
26
+ /** Path to ai.json */
27
+ basePath: string;
28
+ }
29
+ /**
30
+ * Merge rules from multiple sources in correct order
31
+ */
32
+ export declare function mergeRules(config: RulesConfig, skillRules: LoadedRule[], options: MergeOptions): Promise<MergedRules>;
33
+ /**
34
+ * Get active rules for a specific file (always + matching globs + auto)
35
+ */
36
+ export declare function getActiveRules(merged: MergedRules): MergedRule[];
37
+ //# sourceMappingURL=merger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../src/rules/merger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC3C,KAAK,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACzB,2CAA2C;IAC3C,GAAG,EAAE,UAAU,EAAE,CAAC;IAClB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,iDAAiD;IACjD,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,wCAAwC;IACxC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,4CAA4C;IAC5C,MAAM,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC1B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;CACnB;AAsDD;;GAEG;AACH,wBAAsB,UAAU,CAC7B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,UAAU,EAAE,EACxB,OAAO,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAyCtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,EAAE,CAEhE"}
@@ -0,0 +1,93 @@
1
+ import { loadRules } from './loader.js';
2
+ /**
3
+ * Simple glob-like pattern matching
4
+ */
5
+ function matchPattern(value, pattern) {
6
+ // Normalize path separators
7
+ const normalizedValue = value.replace(/\\/g, '/'), normalizedPattern = pattern.replace(/\\/g, '/');
8
+ // Convert glob to regex step by step
9
+ let regexPattern = '';
10
+ let i = 0;
11
+ while (i < normalizedPattern.length) {
12
+ const char = normalizedPattern[i];
13
+ if (char === '*') {
14
+ if (normalizedPattern[i + 1] === '*') {
15
+ // ** - match anything including /
16
+ if (normalizedPattern[i + 2] === '/') {
17
+ regexPattern += '(?:.*/)?'; // **/ matches zero or more directories
18
+ i += 3;
19
+ }
20
+ else {
21
+ regexPattern += '.*'; // ** matches anything
22
+ i += 2;
23
+ }
24
+ }
25
+ else {
26
+ // * - match anything except /
27
+ regexPattern += '[^/]*';
28
+ i++;
29
+ }
30
+ }
31
+ else if (char === '?') {
32
+ regexPattern += '.';
33
+ i++;
34
+ }
35
+ else if ('.+^${}()|[]\\'.includes(char)) {
36
+ regexPattern += '\\' + char;
37
+ i++;
38
+ }
39
+ else {
40
+ regexPattern += char;
41
+ i++;
42
+ }
43
+ }
44
+ return new RegExp(`^${regexPattern}$`).test(normalizedValue);
45
+ }
46
+ /**
47
+ * Check if a file matches any of the glob patterns
48
+ */
49
+ function matchesGlobs(filePath, globs) {
50
+ return globs.some((glob) => matchPattern(filePath, glob));
51
+ }
52
+ /**
53
+ * Merge rules from multiple sources in correct order
54
+ */
55
+ export async function mergeRules(config, skillRules, options) {
56
+ const allRules = [];
57
+ // 1. Add skill rules first (lowest priority)
58
+ if (options.includeSkillRules !== false) {
59
+ allRules.push(...skillRules.map((r) => Object.assign(r, { scope: 'skill' })));
60
+ }
61
+ // 2. Add project rules (the main use case)
62
+ if (config && Object.keys(config).length > 0) {
63
+ const projectRulesRecord = await loadRules(config, options.basePath);
64
+ const projectRules = Object.values(projectRulesRecord);
65
+ allRules.push(...projectRules.map((r) => Object.assign(r, { scope: 'project' })));
66
+ }
67
+ // 3. Add editor-specific rules (from editors.[editor].rules)
68
+ if (options.editorRules && Object.keys(options.editorRules).length > 0) {
69
+ const editorRulesRecord = await loadRules(options.editorRules, options.basePath);
70
+ const editorRules = Object.values(editorRulesRecord);
71
+ allRules.push(...editorRules.map((r) => Object.assign(r, { scope: 'editor' })));
72
+ }
73
+ // Categorize by activation mode
74
+ const always = allRules.filter((r) => r.metadata.activation === 'always'), auto = allRules.filter((r) => r.metadata.activation === 'auto'), manual = allRules.filter((r) => r.metadata.activation === 'manual');
75
+ // For glob rules, filter by current file if provided
76
+ const glob = allRules.filter((r) => {
77
+ if (r.metadata.activation !== 'glob') {
78
+ return false;
79
+ }
80
+ if (!options.targetPath || !r.metadata.globs) {
81
+ return false;
82
+ }
83
+ return matchesGlobs(options.targetPath, r.metadata.globs);
84
+ });
85
+ return { all: allRules, always, auto, glob, manual };
86
+ }
87
+ /**
88
+ * Get active rules for a specific file (always + matching globs + auto)
89
+ */
90
+ export function getActiveRules(merged) {
91
+ return [...merged.always, ...merged.glob, ...merged.auto];
92
+ }
93
+ //# sourceMappingURL=merger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/rules/merger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ParsedSkill } from '@a1st/aix-schema';
2
+ import type { LoadedRule } from './loader.js';
3
+ /**
4
+ * Generate a rule that points the AI to an installed skill. Skills are installed to
5
+ * `.aix/skills/{name}/` preserving their full directory structure (SKILL.md, scripts/,
6
+ * references/, etc.). This rule tells the AI where to find the skill and what it does.
7
+ */
8
+ export declare function loadSkillRules(skill: ParsedSkill, _editor?: string): Promise<LoadedRule[]>;
9
+ /**
10
+ * Load rules from all skills
11
+ */
12
+ export declare function loadAllSkillRules(skills: ParsedSkill[], editor?: string): Promise<LoadedRule[]>;
13
+ //# sourceMappingURL=skill-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-rules.d.ts","sourceRoot":"","sources":["../../src/rules/skill-rules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA0DhG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAMrG"}
@@ -0,0 +1,70 @@
1
+ import pMap from 'p-map';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { join } from 'pathe';
4
+ /**
5
+ * Generate a rule that points the AI to an installed skill. Skills are installed to
6
+ * `.aix/skills/{name}/` preserving their full directory structure (SKILL.md, scripts/,
7
+ * references/, etc.). This rule tells the AI where to find the skill and what it does.
8
+ */
9
+ export async function loadSkillRules(skill, _editor) {
10
+ const rules = [], skillName = skill.frontmatter.name, description = skill.frontmatter.description || 'No description provided';
11
+ // Generate a pointer rule that tells the AI about this skill
12
+ // The actual skill content lives in .aix/skills/{name}/ and preserves the full structure
13
+ // Note: The rule name is added as a heading by the editor adapter, so we start with description
14
+ const pointerContent = `${description}
15
+
16
+ ## Location
17
+
18
+ This skill is installed at \`.aix/skills/${skillName}/\`. Read the \`SKILL.md\` file there for full instructions.
19
+
20
+ ## Quick Reference
21
+
22
+ - **Instructions**: \`.aix/skills/${skillName}/SKILL.md\`
23
+ - **Scripts**: \`.aix/skills/${skillName}/scripts/\` (if available)
24
+ - **References**: \`.aix/skills/${skillName}/references/\` (if available)
25
+
26
+ When you need to use this skill, read the SKILL.md file for detailed instructions.`;
27
+ rules.push({
28
+ name: `skill-${skillName}`,
29
+ content: pointerContent,
30
+ source: 'file',
31
+ sourcePath: `${skillName}:pointer`,
32
+ metadata: {
33
+ description,
34
+ activation: 'always',
35
+ },
36
+ });
37
+ // Also load any editor-specific rules from the skill's rules/ directory
38
+ // Try each path in order, use the first one that exists
39
+ const editorRulePaths = ['rules/global.md', 'RULES.md'];
40
+ for (const rulePath of editorRulePaths) {
41
+ try {
42
+ // eslint-disable-next-line no-await-in-loop -- Sequential: first-match lookup
43
+ const content = await readFile(join(skill.basePath, rulePath), 'utf-8');
44
+ rules.push({
45
+ name: `${skillName}-rules`,
46
+ content: content.trim(),
47
+ source: 'file',
48
+ sourcePath: `${skillName}:${rulePath}`,
49
+ metadata: {
50
+ activation: 'always',
51
+ },
52
+ });
53
+ break;
54
+ }
55
+ catch {
56
+ // File doesn't exist, continue
57
+ }
58
+ }
59
+ return rules;
60
+ }
61
+ /**
62
+ * Load rules from all skills
63
+ */
64
+ export async function loadAllSkillRules(skills, editor) {
65
+ const nestedRules = await pMap(skills, (skill) => loadSkillRules(skill, editor), {
66
+ concurrency: 5,
67
+ });
68
+ return nestedRules.flat();
69
+ }
70
+ //# sourceMappingURL=skill-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-rules.js","sourceRoot":"","sources":["../../src/rules/skill-rules.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAI7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAkB,EAAE,OAAgB;IACtE,MAAM,KAAK,GAAiB,EAAE,EACxB,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAClC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,yBAAyB,CAAC;IAE/E,6DAA6D;IAC7D,yFAAyF;IACzF,gGAAgG;IAChG,MAAM,cAAc,GAAG,GAAG,WAAW;;;;2CAIG,SAAS;;;;oCAIhB,SAAS;+BACd,SAAS;kCACN,SAAS;;mFAEwC,CAAC;IAEjF,KAAK,CAAC,IAAI,CAAC;QACR,IAAI,EAAE,SAAS,SAAS,EAAE;QAC1B,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,GAAG,SAAS,UAAU;QAClC,QAAQ,EAAE;YACP,WAAW;YACX,UAAU,EAAE,QAAQ;SACtB;KACH,CAAC,CAAC;IAEH,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,eAAe,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAExD,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC;YACF,8EAA8E;YAC9E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAExE,KAAK,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,GAAG,SAAS,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;gBACvB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,GAAG,SAAS,IAAI,QAAQ,EAAE;gBACtC,QAAQ,EAAE;oBACP,UAAU,EAAE,QAAQ;iBACtB;aACH,CAAC,CAAC;YACH,MAAM;QACT,CAAC;QAAC,MAAM,CAAC;YACN,+BAA+B;QAClC,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAqB,EAAE,MAAe;IAC3E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;QAC9E,WAAW,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { MergedRules, MergedRule } from './merger.js';
2
+ /**
3
+ * Format rules for output in various formats
4
+ */
5
+ export declare function formatRulesForEditor(rules: MergedRule[], format: 'markdown' | 'text' | 'json'): string;
6
+ /**
7
+ * Validate rule content for common issues
8
+ */
9
+ export declare function validateRuleContent(content: string): {
10
+ valid: boolean;
11
+ warnings: string[];
12
+ };
13
+ /**
14
+ * Deduplicate rules by normalized content
15
+ */
16
+ export declare function deduplicateRules(rules: MergedRule[]): MergedRule[];
17
+ /**
18
+ * Get a summary of merged rules for debugging
19
+ */
20
+ export declare function getRulesSummary(merged: MergedRules): {
21
+ total: number;
22
+ byScope: Record<string, number>;
23
+ byActivation: Record<string, number>;
24
+ };
25
+ /**
26
+ * Filter rules by scope
27
+ */
28
+ export declare function filterByScope(rules: MergedRule[], scope: MergedRule['scope']): MergedRule[];
29
+ /**
30
+ * Get manual rules that can be @mentioned
31
+ */
32
+ export declare function getMentionableRules(merged: MergedRules): {
33
+ name: string;
34
+ description?: string;
35
+ }[];
36
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAgBtG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACrB,CAmBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAYlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAcA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,EAAE,CAE3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAOjG"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Format rules for output in various formats
3
+ */
4
+ export function formatRulesForEditor(rules, format) {
5
+ const contents = rules.map((r) => r.content);
6
+ switch (format) {
7
+ case 'markdown':
8
+ return contents.map((rule, i) => `${i + 1}. ${rule}`).join('\n\n');
9
+ case 'text':
10
+ return contents.join('\n\n---\n\n');
11
+ case 'json':
12
+ return JSON.stringify(contents, null, 2);
13
+ default:
14
+ return contents.join('\n\n');
15
+ }
16
+ }
17
+ /**
18
+ * Validate rule content for common issues
19
+ */
20
+ export function validateRuleContent(content) {
21
+ const warnings = [];
22
+ if (content.length > 10000) {
23
+ warnings.push('Rule content exceeds 10,000 characters');
24
+ }
25
+ if (content.includes('{{') && !content.includes('}}')) {
26
+ warnings.push('Unclosed variable interpolation');
27
+ }
28
+ if (content.trim().length === 0) {
29
+ warnings.push('Rule content is empty');
30
+ }
31
+ return {
32
+ valid: warnings.length === 0,
33
+ warnings,
34
+ };
35
+ }
36
+ /**
37
+ * Deduplicate rules by normalized content
38
+ */
39
+ export function deduplicateRules(rules) {
40
+ const seen = new Set();
41
+ return rules.filter((rule) => {
42
+ const normalized = rule.content.trim().toLowerCase();
43
+ if (seen.has(normalized)) {
44
+ return false;
45
+ }
46
+ seen.add(normalized);
47
+ return true;
48
+ });
49
+ }
50
+ /**
51
+ * Get a summary of merged rules for debugging
52
+ */
53
+ export function getRulesSummary(merged) {
54
+ const byScope = {}, byActivation = {};
55
+ for (const rule of merged.all) {
56
+ byScope[rule.scope] = (byScope[rule.scope] ?? 0) + 1;
57
+ byActivation[rule.metadata.activation] = (byActivation[rule.metadata.activation] ?? 0) + 1;
58
+ }
59
+ return {
60
+ total: merged.all.length,
61
+ byScope,
62
+ byActivation,
63
+ };
64
+ }
65
+ /**
66
+ * Filter rules by scope
67
+ */
68
+ export function filterByScope(rules, scope) {
69
+ return rules.filter((r) => r.scope === scope);
70
+ }
71
+ /**
72
+ * Get manual rules that can be @mentioned
73
+ */
74
+ export function getMentionableRules(merged) {
75
+ return merged.manual
76
+ .filter((r) => r.name)
77
+ .map((r) => ({
78
+ name: r.name,
79
+ description: r.metadata.description,
80
+ }));
81
+ }
82
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Ensure the npm cache directory exists.
3
+ */
4
+ export declare function ensureNpmCacheDir(projectRoot: string): Promise<string>;
5
+ /**
6
+ * Clear the npm skills cache.
7
+ * Note: Git skills cache is managed by giget and not cleared here.
8
+ */
9
+ export declare function clearNpmCache(projectRoot: string): Promise<void>;
10
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/skills/cache.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE"}