@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
package/dist/json.js ADDED
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Deep merge two JSON objects. By default:
3
+ * - Objects are recursively merged
4
+ * - Arrays and primitives are replaced (new value wins)
5
+ *
6
+ * Use the `resolver` option to customize merge behavior per-key.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * // Default behavior
11
+ * deepMergeJson({ a: { x: 1 } }, { a: { y: 2 } })
12
+ * // => { a: { x: 1, y: 2 } }
13
+ *
14
+ * // With custom resolver - replace entire object at specific path
15
+ * deepMergeJson(base, override, {
16
+ * resolver: ({ path }) => path[0] === 'servers' ? 'replace' : undefined
17
+ * })
18
+ * ```
19
+ */
20
+ export function deepMergeJson(base, override, options = {}) {
21
+ return mergeRecursive(base, override, [], options.resolver);
22
+ }
23
+ function mergeRecursive(base, override, path, resolver) {
24
+ const result = { ...base };
25
+ for (const [key, newValue] of Object.entries(override)) {
26
+ const oldValue = result[key], context = { key, path, oldValue, newValue }, strategy = resolver?.(context) ?? getDefaultStrategy(oldValue, newValue);
27
+ switch (strategy) {
28
+ case 'keep':
29
+ // Keep old value, do nothing
30
+ break;
31
+ case 'replace':
32
+ // Replace entirely with new value
33
+ result[key] = newValue;
34
+ break;
35
+ case 'merge':
36
+ default:
37
+ // Default merge behavior
38
+ if (isPlainObject(newValue)) {
39
+ if (isPlainObject(oldValue)) {
40
+ result[key] = mergeRecursive(oldValue, newValue, [...path, key], resolver);
41
+ }
42
+ else {
43
+ result[key] = newValue;
44
+ }
45
+ }
46
+ else {
47
+ result[key] = newValue;
48
+ }
49
+ break;
50
+ }
51
+ }
52
+ return result;
53
+ }
54
+ /**
55
+ * Determine the default merge strategy based on value types.
56
+ */
57
+ function getDefaultStrategy(oldValue, newValue) {
58
+ // If both are objects, merge them
59
+ if (isPlainObject(oldValue) && isPlainObject(newValue)) {
60
+ return 'merge';
61
+ }
62
+ // Otherwise replace (arrays, primitives, type mismatches)
63
+ return 'replace';
64
+ }
65
+ /**
66
+ * Check if a value is a plain object (not null, not array).
67
+ */
68
+ function isPlainObject(value) {
69
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
70
+ }
71
+ /**
72
+ * Create a merge resolver that replaces values at specific paths. Paths are matched by joining with
73
+ * dots, e.g., `['mcpServers', '*']` matches any key under `mcpServers`.
74
+ *
75
+ * @example
76
+ * ```ts
77
+ * // Replace entire MCP server objects instead of merging them
78
+ * const resolver = createPathResolver({
79
+ * 'mcpServers.*': 'replace',
80
+ * 'context_servers.*': 'replace',
81
+ * });
82
+ * ```
83
+ */
84
+ export function createPathResolver(rules) {
85
+ return ({ key, path }) => {
86
+ const fullPath = [...path, key].join('.');
87
+ // Check for exact match first
88
+ if (rules[fullPath]) {
89
+ return rules[fullPath];
90
+ }
91
+ // Check for wildcard matches (e.g., 'mcpServers.*')
92
+ for (const [pattern, strategy] of Object.entries(rules)) {
93
+ if (matchesPattern(fullPath, pattern)) {
94
+ return strategy;
95
+ }
96
+ }
97
+ return undefined;
98
+ };
99
+ }
100
+ /**
101
+ * Match a path against a pattern with wildcard support.
102
+ * - `*` matches any single segment
103
+ * - `**` matches any number of segments (not implemented yet)
104
+ */
105
+ function matchesPattern(path, pattern) {
106
+ const pathParts = path.split('.'), patternParts = pattern.split('.');
107
+ if (pathParts.length !== patternParts.length) {
108
+ return false;
109
+ }
110
+ return patternParts.every((part, i) => part === '*' || part === pathParts[i]);
111
+ }
112
+ /**
113
+ * Pre-built merge resolver for MCP config files. Replaces entire server objects instead of merging
114
+ * them, since a server definition from aix should completely override any existing definition with
115
+ * the same name.
116
+ *
117
+ * Works with both standard MCP format (`mcpServers.*`) and Zed format (`context_servers.*`).
118
+ */
119
+ export const mcpConfigMergeResolver = createPathResolver({
120
+ 'mcpServers.*': 'replace',
121
+ 'context_servers.*': 'replace',
122
+ });
123
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type AiJsonConfig } from '@a1st/aix-schema';
2
+ export interface LoadedConfig {
3
+ path: string;
4
+ config: AiJsonConfig;
5
+ source: 'file' | 'package.json' | 'remote';
6
+ /** Warning messages generated during config loading */
7
+ warnings?: string[];
8
+ /** Path to ai.local.json if it was merged */
9
+ localPath?: string;
10
+ /** Whether local overrides were applied */
11
+ hasLocalOverrides?: boolean;
12
+ }
13
+ export interface LoadConfigOptions {
14
+ /** Explicit path to local config file (existing behavior) */
15
+ explicitPath?: string;
16
+ /** Remote URL, git shorthand, or local path to load config from */
17
+ remoteSource?: string;
18
+ /** Starting directory for discovery and relative path resolution */
19
+ startDir?: string;
20
+ }
21
+ /**
22
+ * Load config from various sources: remote URL, git shorthand, local path, or discovery.
23
+ * @param options - Load options (new API)
24
+ * @param explicitPath - Deprecated: use options.explicitPath instead
25
+ * @param startDir - Deprecated: use options.startDir instead
26
+ */
27
+ export declare function loadConfig(options?: LoadConfigOptions | string, startDir?: string): Promise<LoadedConfig | undefined>;
28
+ /**
29
+ * Load config or throw if not found.
30
+ * @param options - Load options (new API)
31
+ * @param explicitPath - Deprecated: use options.explicitPath instead
32
+ * @param startDir - Deprecated: use options.startDir instead
33
+ */
34
+ export declare function requireConfig(options?: LoadConfigOptions | string, startDir?: string): Promise<LoadedConfig>;
35
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASpF,MAAM,WAAW,YAAY;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;IAC3C,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAC/B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC7B,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,EACpC,QAAQ,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA4BnC;AAkID;;;;;GAKG;AACH,wBAAsB,aAAa,CAChC,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM,EACpC,QAAQ,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CAWvB"}
package/dist/loader.js ADDED
@@ -0,0 +1,147 @@
1
+ import { dirname } from 'pathe';
2
+ import { parseConfig, parseLocalConfig } from '@a1st/aix-schema';
3
+ import { discoverConfig, parseConfigContent } from './discovery.js';
4
+ import { resolveExtends } from './inheritance.js';
5
+ import { ConfigNotFoundError, ConfigParseError } from './errors.js';
6
+ import { extractValidationIssues, toConfigValidationError } from './format-error.js';
7
+ import { loadFromSource } from './remote-loader.js';
8
+ import { mergeConfigs } from './merge.js';
9
+ /**
10
+ * Load config from various sources: remote URL, git shorthand, local path, or discovery.
11
+ * @param options - Load options (new API)
12
+ * @param explicitPath - Deprecated: use options.explicitPath instead
13
+ * @param startDir - Deprecated: use options.startDir instead
14
+ */
15
+ export async function loadConfig(options, startDir) {
16
+ // Handle legacy API: loadConfig(explicitPath?, startDir?)
17
+ let opts;
18
+ if (typeof options === 'string' || options === undefined) {
19
+ opts = {
20
+ explicitPath: options,
21
+ startDir: startDir ?? process.cwd(),
22
+ };
23
+ }
24
+ else {
25
+ opts = { startDir: process.cwd(), ...options };
26
+ }
27
+ const { explicitPath, remoteSource, startDir: cwd = process.cwd() } = opts;
28
+ // If remoteSource is provided, load from URL/git/path
29
+ if (remoteSource) {
30
+ return loadFromRemoteSource(remoteSource, cwd);
31
+ }
32
+ // Existing discovery behavior
33
+ const discovered = await discoverConfig(cwd, explicitPath);
34
+ if (!discovered) {
35
+ return undefined;
36
+ }
37
+ return loadFromDiscovered(discovered);
38
+ }
39
+ /**
40
+ * Load config from a remote source (URL, git shorthand, or local path).
41
+ */
42
+ async function loadFromRemoteSource(source, cwd) {
43
+ const remote = await loadFromSource(source, cwd), resolved = await resolveExtends(remote.content, {
44
+ baseDir: remote.baseUrl,
45
+ isRemote: remote.isRemote,
46
+ });
47
+ let validated;
48
+ try {
49
+ validated = parseConfig(resolved);
50
+ }
51
+ catch (error) {
52
+ const validationError = toConfigValidationError(error);
53
+ if (validationError) {
54
+ throw validationError;
55
+ }
56
+ throw new ConfigParseError(error instanceof Error ? error.message : String(error), source);
57
+ }
58
+ // Map source type to LoadedConfig source
59
+ const sourceType = remote.source === 'local' ? 'file' : 'remote';
60
+ return {
61
+ path: source,
62
+ config: validated,
63
+ source: sourceType,
64
+ };
65
+ }
66
+ /**
67
+ * Merge local config overrides into a base config.
68
+ * @returns The merged config and whether local overrides were applied
69
+ */
70
+ function mergeLocalOverrides(baseConfig, localContent, localPath) {
71
+ const localParsed = parseConfigContent(localContent);
72
+ try {
73
+ const localValidated = parseLocalConfig(localParsed);
74
+ return {
75
+ config: mergeConfigs(baseConfig, localValidated),
76
+ hasLocalOverrides: true,
77
+ };
78
+ }
79
+ catch (error) {
80
+ if (error instanceof Error && 'issues' in error) {
81
+ const zodError = error, issues = extractValidationIssues(zodError, localParsed);
82
+ throw new ConfigParseError('Validation failed', localPath, issues);
83
+ }
84
+ if (error instanceof Error) {
85
+ throw new ConfigParseError(error.message, localPath);
86
+ }
87
+ throw error;
88
+ }
89
+ }
90
+ /**
91
+ * Load config from a discovered local config.
92
+ */
93
+ async function loadFromDiscovered(discovered) {
94
+ try {
95
+ const parsed = parseConfigContent(discovered.content), baseDir = dirname(discovered.path), resolved = await resolveExtends(parsed, { baseDir });
96
+ let validated = parseConfig(resolved);
97
+ const warnings = [];
98
+ if (discovered.packageJsonAlsoHasAi) {
99
+ warnings.push('Both ai.json and package.json "ai" field exist. Using ai.json (package.json "ai" field is ignored).');
100
+ }
101
+ // Merge local overrides if present
102
+ let localPath;
103
+ let hasLocalOverrides = false;
104
+ if (discovered.localContent) {
105
+ const localFilePath = discovered.localPath ?? 'ai.local.json', merged = mergeLocalOverrides(validated, discovered.localContent, localFilePath);
106
+ validated = merged.config;
107
+ localPath = discovered.localPath;
108
+ hasLocalOverrides = merged.hasLocalOverrides;
109
+ }
110
+ return {
111
+ path: discovered.path,
112
+ config: validated,
113
+ source: discovered.source,
114
+ ...(warnings.length > 0 && { warnings }),
115
+ ...(localPath && { localPath }),
116
+ ...(hasLocalOverrides && { hasLocalOverrides }),
117
+ };
118
+ }
119
+ catch (error) {
120
+ const validationError = toConfigValidationError(error);
121
+ if (validationError) {
122
+ throw validationError;
123
+ }
124
+ if (error instanceof ConfigParseError) {
125
+ throw error;
126
+ }
127
+ if (error instanceof Error) {
128
+ throw new ConfigParseError(error.message, discovered.path);
129
+ }
130
+ throw error;
131
+ }
132
+ }
133
+ /**
134
+ * Load config or throw if not found.
135
+ * @param options - Load options (new API)
136
+ * @param explicitPath - Deprecated: use options.explicitPath instead
137
+ * @param startDir - Deprecated: use options.startDir instead
138
+ */
139
+ export async function requireConfig(options, startDir) {
140
+ const result = await loadConfig(options, startDir);
141
+ if (!result) {
142
+ const searchPath = typeof options === 'string' ? options : (options?.explicitPath ?? options?.remoteSource);
143
+ throw new ConfigNotFoundError(searchPath);
144
+ }
145
+ return result;
146
+ }
147
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface EnvResolutionOptions {
2
+ env?: Record<string, string | undefined>;
3
+ throwOnMissing?: boolean;
4
+ }
5
+ /**
6
+ * Resolve ${VAR} syntax in a string value
7
+ */
8
+ export declare function resolveEnvVars(value: string, options?: EnvResolutionOptions): string;
9
+ /**
10
+ * Resolve ${VAR} syntax in all values of an object
11
+ */
12
+ export declare function resolveEnvObject(obj: Record<string, string>, options?: EnvResolutionOptions): Record<string, string>;
13
+ /**
14
+ * Check if a string contains unresolved ${VAR} references
15
+ */
16
+ export declare function hasUnresolvedEnvVars(value: string): boolean;
17
+ /**
18
+ * Extract all ${VAR} variable names from a string
19
+ */
20
+ export declare function extractEnvVarNames(value: string): string[];
21
+ /**
22
+ * Validate that all referenced env vars are defined
23
+ */
24
+ export declare function validateEnvVars(value: string, env?: Record<string, string | undefined>): {
25
+ valid: boolean;
26
+ missing: string[];
27
+ };
28
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/mcp/env.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAexF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,GAAE,oBAAyB,GAClC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIxB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAI1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC5B,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACrD;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAQvC"}
@@ -0,0 +1,47 @@
1
+ const ENV_VAR_PATTERN = /\$\{([^}]+)\}/g;
2
+ /**
3
+ * Resolve ${VAR} syntax in a string value
4
+ */
5
+ export function resolveEnvVars(value, options = {}) {
6
+ const env = options.env ?? process.env, throwOnMissing = options.throwOnMissing ?? false;
7
+ return value.replace(ENV_VAR_PATTERN, (match, varName) => {
8
+ const resolved = env[varName];
9
+ if (resolved === undefined) {
10
+ if (throwOnMissing) {
11
+ throw new Error(`Environment variable not found: ${varName}`);
12
+ }
13
+ return match;
14
+ }
15
+ return resolved;
16
+ });
17
+ }
18
+ /**
19
+ * Resolve ${VAR} syntax in all values of an object
20
+ */
21
+ export function resolveEnvObject(obj, options = {}) {
22
+ return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, resolveEnvVars(value, options)]));
23
+ }
24
+ /**
25
+ * Check if a string contains unresolved ${VAR} references
26
+ */
27
+ export function hasUnresolvedEnvVars(value) {
28
+ return ENV_VAR_PATTERN.test(value);
29
+ }
30
+ /**
31
+ * Extract all ${VAR} variable names from a string
32
+ */
33
+ export function extractEnvVarNames(value) {
34
+ const matches = value.matchAll(new RegExp(ENV_VAR_PATTERN.source, 'g'));
35
+ return [...matches].map((m) => m[1]).filter((name) => name !== undefined);
36
+ }
37
+ /**
38
+ * Validate that all referenced env vars are defined
39
+ */
40
+ export function validateEnvVars(value, env = process.env) {
41
+ const names = extractEnvVarNames(value), missing = names.filter((name) => env[name] === undefined);
42
+ return {
43
+ valid: missing.length === 0,
44
+ missing,
45
+ };
46
+ }
47
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/mcp/env.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAOzC;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,UAAgC,EAAE;IAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAChC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;IAEvD,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,cAAc,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,CAAC;IACnB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC7B,GAA2B,EAC3B,UAAgC,EAAE;IAElC,OAAO,MAAM,CAAC,WAAW,CACtB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAClF,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAC/C,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAExE,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;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC5B,KAAa,EACb,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,EACjC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAEhE,OAAO;QACJ,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC3B,OAAO;KACT,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { resolveEnvVars, resolveEnvObject, hasUnresolvedEnvVars, extractEnvVarNames, validateEnvVars, type EnvResolutionOptions, } from './env.js';
2
+ export { serverTemplates, getServerTemplate, listServerTemplates, createFromTemplate, } from './templates.js';
3
+ export { getTransport, type McpTransport, type StdioTransport, type HttpTransport } from './normalize.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACJ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,KAAK,oBAAoB,GAC3B,MAAM,UAAU,CAAC;AAElB,OAAO,EACJ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { resolveEnvVars, resolveEnvObject, hasUnresolvedEnvVars, extractEnvVarNames, validateEnvVars, } from './env.js';
2
+ export { serverTemplates, getServerTemplate, listServerTemplates, createFromTemplate, } from './templates.js';
3
+ export { getTransport } from './normalize.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACJ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,GAEjB,MAAM,UAAU,CAAC;AAElB,OAAO,EACJ,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAA8D,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { McpServerConfig } from '@a1st/aix-schema';
2
+ /**
3
+ * Stdio transport representation (for internal use).
4
+ */
5
+ export interface StdioTransport {
6
+ type: 'stdio';
7
+ command: string;
8
+ args?: string[];
9
+ env?: Record<string, string>;
10
+ cwd?: string;
11
+ shell?: boolean;
12
+ }
13
+ /**
14
+ * HTTP transport representation (for internal use).
15
+ */
16
+ export interface HttpTransport {
17
+ type: 'http';
18
+ url: string;
19
+ headers?: Record<string, string>;
20
+ timeout?: number;
21
+ validateOrigin?: boolean;
22
+ }
23
+ /**
24
+ * Transport union type (for internal use).
25
+ */
26
+ export type McpTransport = StdioTransport | HttpTransport;
27
+ /**
28
+ * Extract transport info from an MCP server config.
29
+ * - Stdio: { command: "...", args: [...] }
30
+ * - HTTP: { url: "https://..." }
31
+ */
32
+ export declare function getTransport(config: McpServerConfig): McpTransport;
33
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/mcp/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC;AAuB1D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAyBlE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Extract transport info from an MCP server config.
3
+ * - Stdio: { command: "...", args: [...] }
4
+ * - HTTP: { url: "https://..." }
5
+ */
6
+ export function getTransport(config) {
7
+ // Use 'in' check for type narrowing
8
+ if ('command' in config) {
9
+ const stdio = config;
10
+ return {
11
+ type: 'stdio',
12
+ command: stdio.command,
13
+ args: stdio.args,
14
+ env: stdio.env,
15
+ cwd: stdio.cwd,
16
+ shell: stdio.shell,
17
+ };
18
+ }
19
+ // Must be HTTP
20
+ const http = config;
21
+ return {
22
+ type: 'http',
23
+ url: http.url,
24
+ headers: http.headers,
25
+ timeout: http.timeout,
26
+ validateOrigin: http.validateOrigin,
27
+ };
28
+ }
29
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/mcp/normalize.ts"],"names":[],"mappings":"AAmDA;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAuB;IACjD,oCAAoC;IACpC,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAqC,CAAC;QAEpD,OAAO;YACJ,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,KAAK;SACpB,CAAC;IACL,CAAC;IAED,eAAe;IACf,MAAM,IAAI,GAAG,MAAoC,CAAC;IAElD,OAAO;QACJ,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,cAAc,EAAE,IAAI,CAAC,cAAc;KACrC,CAAC;AACL,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { McpServerConfig } from '@a1st/aix-schema';
2
+ /**
3
+ * Pre-configured templates for common MCP servers.
4
+ */
5
+ export declare const serverTemplates: Record<string, Partial<McpServerConfig>>;
6
+ /**
7
+ * Get a server template by name
8
+ */
9
+ export declare function getServerTemplate(name: string): Partial<McpServerConfig> | undefined;
10
+ /**
11
+ * List all available template names
12
+ */
13
+ export declare function listServerTemplates(): string[];
14
+ /**
15
+ * Create a server config from a template with overrides
16
+ */
17
+ export declare function createFromTemplate(templateName: string, overrides?: Partial<McpServerConfig>): McpServerConfig;
18
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/mcp/templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAiCpE,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAEpF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAC/B,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACxC,eAAe,CAejB"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Pre-configured templates for common MCP servers.
3
+ */
4
+ export const serverTemplates = {
5
+ github: {
6
+ command: 'npx',
7
+ args: ['@modelcontextprotocol/server-github'],
8
+ env: { GITHUB_TOKEN: '${GITHUB_TOKEN}' },
9
+ },
10
+ filesystem: {
11
+ command: 'npx',
12
+ args: ['@modelcontextprotocol/server-filesystem'],
13
+ },
14
+ postgres: {
15
+ command: 'npx',
16
+ args: ['@modelcontextprotocol/server-postgres'],
17
+ env: { DATABASE_URL: '${DATABASE_URL}' },
18
+ },
19
+ sqlite: {
20
+ command: 'npx',
21
+ args: ['@modelcontextprotocol/server-sqlite'],
22
+ env: { SQLITE_PATH: '${SQLITE_PATH}' },
23
+ },
24
+ memory: {
25
+ command: 'npx',
26
+ args: ['@modelcontextprotocol/server-memory'],
27
+ },
28
+ brave: {
29
+ command: 'npx',
30
+ args: ['@modelcontextprotocol/server-brave-search'],
31
+ env: { BRAVE_API_KEY: '${BRAVE_API_KEY}' },
32
+ },
33
+ puppeteer: {
34
+ command: 'npx',
35
+ args: ['@modelcontextprotocol/server-puppeteer'],
36
+ },
37
+ };
38
+ /**
39
+ * Get a server template by name
40
+ */
41
+ export function getServerTemplate(name) {
42
+ return serverTemplates[name];
43
+ }
44
+ /**
45
+ * List all available template names
46
+ */
47
+ export function listServerTemplates() {
48
+ return Object.keys(serverTemplates);
49
+ }
50
+ /**
51
+ * Create a server config from a template with overrides
52
+ */
53
+ export function createFromTemplate(templateName, overrides = {}) {
54
+ const template = serverTemplates[templateName];
55
+ if (!template) {
56
+ throw new Error(`Unknown server template: ${templateName}`);
57
+ }
58
+ if (!('command' in template)) {
59
+ throw new Error(`Template "${templateName}" is missing required 'command' field`);
60
+ }
61
+ return {
62
+ ...template,
63
+ ...overrides,
64
+ };
65
+ }
66
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/mcp/templates.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA6C;IACtE,MAAM,EAAE;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,qCAAqC,CAAC;QAC7C,GAAG,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE;KAC1C;IACD,UAAU,EAAE;QACT,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,yCAAyC,CAAC;KACnD;IACD,QAAQ,EAAE;QACP,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,uCAAuC,CAAC;QAC/C,GAAG,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE;KAC1C;IACD,MAAM,EAAE;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,qCAAqC,CAAC;QAC7C,GAAG,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE;KACxC;IACD,MAAM,EAAE;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,qCAAqC,CAAC;KAC/C;IACD,KAAK,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,2CAA2C,CAAC;QACnD,GAAG,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE;KAC5C;IACD,SAAS,EAAE;QACR,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,wCAAwC,CAAC;KAClD;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAC/B,YAAoB,EACpB,YAAsC,EAAE;IAExC,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,uCAAuC,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACJ,GAAG,QAAQ;QACX,GAAG,SAAS;KACK,CAAC;AACxB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { AiJsonConfig } from '@a1st/aix-schema';
2
+ /**
3
+ * Valid scopes for filtering config sections.
4
+ */
5
+ export type ConfigScope = 'rules' | 'mcp' | 'skills' | 'editors' | 'prompts';
6
+ /**
7
+ * Filter a config to only include the specified scopes.
8
+ * @param config - Full config
9
+ * @param scopes - Scopes to include (if empty, returns empty partial)
10
+ * @returns Partial config with only specified sections
11
+ */
12
+ export declare function filterConfigByScopes(config: AiJsonConfig, scopes: ConfigScope[]): Partial<AiJsonConfig>;
13
+ /**
14
+ * Merge two AiJsonConfig objects. Remote config wins on conflicts.
15
+ *
16
+ * Merge strategy:
17
+ * - `skills`: Object merge by key, replace entire value on key conflict
18
+ * - `rules`: Object merge by key, replace entire value on key conflict
19
+ * - `prompts`: Object merge by key, replace entire value on key conflict
20
+ * - `mcp`: Object merge by key, replace entire value on key conflict
21
+ * - `editors`: Object merge by key, deep merge on key conflict
22
+ * - `$schema`, `extends`: Remote wins
23
+ *
24
+ * @param local - Existing local config
25
+ * @param remote - Remote config to merge in (may be partial if scope-filtered)
26
+ * @returns Merged config
27
+ */
28
+ export declare function mergeConfigs(local: AiJsonConfig, remote: Partial<AiJsonConfig>): AiJsonConfig;
29
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,kBAAkB,CAAC;AAGjF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW,EAAE,GACrB,OAAO,CAAC,YAAY,CAAC,CAsCvB;AAiDD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAyD7F"}