@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,100 @@
1
+ import { writeFile, rename, unlink, readFile, mkdir } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { resolve, dirname, join } from 'pathe';
4
+ import detectIndent from 'detect-indent';
5
+ import { parseConfig, parseLocalConfig } from '@a1st/aix-schema';
6
+ import { loadConfig } from './loader.js';
7
+ import { parseConfigContent } from './discovery.js';
8
+ import { createBackup } from './backup.js';
9
+ import { ConfigNotFoundError, EmbeddedConfigUpdateError } from './errors.js';
10
+ const DEFAULT_INDENT = 2;
11
+ export async function updateConfig(configPath, updater, options = {}) {
12
+ const { backup = true } = options, absolutePath = resolve(configPath);
13
+ if (!existsSync(absolutePath)) {
14
+ throw new ConfigNotFoundError(absolutePath);
15
+ }
16
+ const loaded = await loadConfig(absolutePath);
17
+ if (!loaded) {
18
+ throw new ConfigNotFoundError(absolutePath);
19
+ }
20
+ // Prevent overwriting package.json when config is embedded in it
21
+ if (loaded.source === 'package.json') {
22
+ throw new EmbeddedConfigUpdateError(absolutePath);
23
+ }
24
+ // Create backup before modifying (per QA spec)
25
+ if (backup) {
26
+ await createBackup(absolutePath);
27
+ }
28
+ // Detect existing indentation from the file
29
+ const existingContent = await readFile(absolutePath, 'utf-8'), indent = detectIndent(existingContent).indent || DEFAULT_INDENT, updated = await updater(loaded.config), validated = parseConfig(updated),
30
+ // Use unique temp file name to avoid collisions (pid + timestamp)
31
+ tempPath = `${absolutePath}.${process.pid}.${Date.now()}.tmp`;
32
+ try {
33
+ await writeFile(tempPath, JSON.stringify(validated, null, indent) + '\n', 'utf-8');
34
+ await rename(tempPath, absolutePath);
35
+ }
36
+ catch (error) {
37
+ if (existsSync(tempPath)) {
38
+ await unlink(tempPath);
39
+ }
40
+ throw error;
41
+ }
42
+ }
43
+ /**
44
+ * Update the local config file (ai.local.json).
45
+ * Creates the file if it doesn't exist.
46
+ * @param localPath - Path to ai.local.json (or directory containing it)
47
+ * @param updater - Function to update the config
48
+ * @param options - Update options
49
+ */
50
+ export async function updateLocalConfig(localPath, updater, options = {}) {
51
+ const { backup = true } = options;
52
+ // If localPath is a directory, append ai.local.json
53
+ let absolutePath = resolve(localPath);
54
+ if (!absolutePath.endsWith('.json')) {
55
+ absolutePath = join(absolutePath, 'ai.local.json');
56
+ }
57
+ // Load existing local config or start with empty object
58
+ let existingConfig = {}, indent = DEFAULT_INDENT;
59
+ if (existsSync(absolutePath)) {
60
+ if (backup) {
61
+ await createBackup(absolutePath);
62
+ }
63
+ const content = await readFile(absolutePath, 'utf-8');
64
+ existingConfig = parseConfigContent(content);
65
+ indent = detectIndent(content).indent || DEFAULT_INDENT;
66
+ }
67
+ else {
68
+ // Ensure parent directory exists
69
+ await mkdir(dirname(absolutePath), { recursive: true });
70
+ }
71
+ const updated = await updater(existingConfig),
72
+ // Validate as local config (no extends allowed)
73
+ validated = parseLocalConfig(updated), tempPath = `${absolutePath}.${process.pid}.${Date.now()}.tmp`;
74
+ try {
75
+ await writeFile(tempPath, JSON.stringify(validated, null, indent) + '\n', 'utf-8');
76
+ await rename(tempPath, absolutePath);
77
+ }
78
+ catch (error) {
79
+ if (existsSync(tempPath)) {
80
+ await unlink(tempPath);
81
+ }
82
+ throw error;
83
+ }
84
+ }
85
+ /**
86
+ * Get the path to ai.local.json given a base config path.
87
+ * @param configPath - Path to ai.json or directory
88
+ * @returns Path to ai.local.json
89
+ */
90
+ export function getLocalConfigPath(configPath) {
91
+ const absolutePath = resolve(configPath);
92
+ if (absolutePath.endsWith('ai.json')) {
93
+ return absolutePath.replace(/ai\.json$/, 'ai.local.json');
94
+ }
95
+ if (absolutePath.endsWith('.json')) {
96
+ return absolutePath.replace(/\.json$/, '.local.json');
97
+ }
98
+ return join(absolutePath, 'ai.local.json');
99
+ }
100
+ //# sourceMappingURL=updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAqB,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,cAAc,GAAG,CAAC,CAAC;AAYzB,MAAM,CAAC,KAAK,UAAU,YAAY,CAC/B,UAAkB,EAClB,OAAsB,EACtB,UAAyB,EAAE;IAE3B,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,EAC3B,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;IAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,EAAE,CAAC;QACV,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,4CAA4C;IAC5C,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,EACvD,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,cAAc,EAC/D,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EACtC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;IAChC,kEAAkE;IAClE,QAAQ,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAEpE,IAAI,CAAC;QACF,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QACnF,MAAM,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACd,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,KAAK,CAAC;IACf,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACpC,SAAiB,EACjB,OAA2B,EAC3B,UAAyB,EAAE;IAE3B,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAElC,oDAAoD;IACpD,IAAI,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACtD,CAAC;IAED,wDAAwD;IACxD,IAAI,cAAc,GAA0B,EAAE,EAC1C,MAAM,GAAoB,cAAc,CAAC;IAE7C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,IAAI,MAAM,EAAE,CAAC;YACV,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEtD,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAA0B,CAAC;QACtE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,cAAc,CAAC;IAC3D,CAAC;SAAM,CAAC;QACL,iCAAiC;QACjC,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;IACvC,gDAAgD;IAChD,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,EACrC,QAAQ,GAAG,GAAG,YAAY,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAEpE,IAAI,CAAC;QACF,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QACnF,MAAM,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACd,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,KAAK,CAAC;IACf,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IAClD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Shared URL parsing utilities for Git host URLs and source references.
3
+ * Used by CLI commands and core reference parsers.
4
+ */
5
+ export interface GitHubRepoUrl {
6
+ owner: string;
7
+ repo: string;
8
+ }
9
+ export interface GitHubBlobUrl extends GitHubRepoUrl {
10
+ ref: string;
11
+ path: string;
12
+ }
13
+ export interface GitHubTreeUrl extends GitHubRepoUrl {
14
+ ref: string;
15
+ subdir: string;
16
+ }
17
+ export interface GitLabTreeUrl {
18
+ group: string;
19
+ project: string;
20
+ ref: string;
21
+ subdir: string;
22
+ }
23
+ export interface GitLabBlobUrl {
24
+ group: string;
25
+ project: string;
26
+ ref: string;
27
+ path: string;
28
+ }
29
+ export interface BitbucketBlobUrl {
30
+ workspace: string;
31
+ repo: string;
32
+ ref: string;
33
+ path: string;
34
+ }
35
+ export interface GitShorthand {
36
+ provider: 'github' | 'gitlab' | 'bitbucket';
37
+ user: string;
38
+ repo: string;
39
+ subpath?: string;
40
+ ref?: string;
41
+ }
42
+ /**
43
+ * Parse a GitHub web URL for a repo root (no blob/tree path):
44
+ * `https://github.com/org/repo` or `https://github.com/org/repo/`
45
+ */
46
+ export declare function parseGitHubRepoUrl(url: string): GitHubRepoUrl | undefined;
47
+ /**
48
+ * Parse a GitHub web URL with `/blob/ref/path`:
49
+ * `https://github.com/org/repo/blob/main/path/to/file.md`
50
+ */
51
+ export declare function parseGitHubBlobUrl(url: string): GitHubBlobUrl | undefined;
52
+ /**
53
+ * Parse a GitHub web URL with `/tree/ref/path`:
54
+ * `https://github.com/org/repo/tree/main/path/to/dir`
55
+ */
56
+ export declare function parseGitHubTreeUrl(url: string): GitHubTreeUrl | undefined;
57
+ /**
58
+ * Parse a GitLab web URL with `/-/tree/ref/path`:
59
+ * `https://gitlab.com/group/project/-/tree/branch/path`
60
+ */
61
+ export declare function parseGitLabTreeUrl(url: string): GitLabTreeUrl | undefined;
62
+ /**
63
+ * Parse a GitLab web URL with `/-/blob/ref/path`:
64
+ * `https://gitlab.com/group/project/-/blob/branch/path/to/file.json`
65
+ */
66
+ export declare function parseGitLabBlobUrl(url: string): GitLabBlobUrl | undefined;
67
+ /**
68
+ * Parse a Bitbucket web URL with `/src/ref/path`:
69
+ * `https://bitbucket.org/workspace/repo/src/branch/path/to/file.json`
70
+ */
71
+ export declare function parseBitbucketBlobUrl(url: string): BitbucketBlobUrl | undefined;
72
+ /**
73
+ * Parse git shorthand format: `github:user/repo/path#ref`, `gitlab:user/repo/path#ref`, or `bitbucket:user/repo/path#ref`
74
+ */
75
+ export declare function parseGitShorthand(input: string): GitShorthand | undefined;
76
+ /**
77
+ * Check if a source string represents a local file path.
78
+ */
79
+ export declare function isLocalPath(source: string): boolean;
80
+ /**
81
+ * Check if a source string is a generic git URL (https, git@, git://).
82
+ */
83
+ export declare function isGenericGitUrl(source: string): boolean;
84
+ /**
85
+ * Infer a name from a path by taking the last segment and optionally stripping extensions.
86
+ * @param path - The path to extract a name from
87
+ * @param extensions - Extensions to strip (e.g., ['.md', '.txt']). If not provided, no stripping.
88
+ */
89
+ export declare function inferNameFromPath(path: string, extensions?: string[]): string | undefined;
90
+ /**
91
+ * Build a GitHub URL from owner and repo.
92
+ */
93
+ export declare function buildGitHubUrl(owner: string, repo: string): string;
94
+ /**
95
+ * Build a GitLab URL from group and project.
96
+ */
97
+ export declare function buildGitLabUrl(group: string, project: string): string;
98
+ /**
99
+ * Build a provider URL from shorthand components.
100
+ */
101
+ export declare function buildProviderUrl(provider: 'github' | 'gitlab' | 'bitbucket', user: string, repo: string): string;
102
+ /**
103
+ * Convert a GitHub blob URL to a raw content URL.
104
+ * `https://github.com/org/repo/blob/main/path` → `https://raw.githubusercontent.com/org/repo/main/path`
105
+ */
106
+ export declare function githubBlobToRaw(url: string): string | undefined;
107
+ /**
108
+ * Convert a GitLab blob URL to a raw content URL.
109
+ * `https://gitlab.com/group/project/-/blob/main/path` → `https://gitlab.com/group/project/-/raw/main/path`
110
+ */
111
+ export declare function gitlabBlobToRaw(url: string): string | undefined;
112
+ /**
113
+ * Convert a Bitbucket blob URL to a raw content URL.
114
+ * `https://bitbucket.org/workspace/repo/src/branch/path` → `https://bitbucket.org/workspace/repo/raw/branch/path`
115
+ */
116
+ export declare function bitbucketBlobToRaw(url: string): string | undefined;
117
+ /**
118
+ * Convert any supported git host blob URL to a raw URL. Returns the original URL if not a recognized blob URL.
119
+ */
120
+ export declare function convertBlobToRawUrl(url: string): string;
121
+ //# sourceMappingURL=url-parsing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-parsing.d.ts","sourceRoot":"","sources":["../src/url-parsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Shared URL parsing utilities for Git host URLs and source references.
3
+ * Used by CLI commands and core reference parsers.
4
+ */
5
+ /**
6
+ * Parse a GitHub web URL for a repo root (no blob/tree path):
7
+ * `https://github.com/org/repo` or `https://github.com/org/repo/`
8
+ */
9
+ export function parseGitHubRepoUrl(url) {
10
+ const match = url.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)\/?$/);
11
+ if (!match) {
12
+ return undefined;
13
+ }
14
+ const [, owner, repo] = match;
15
+ return { owner: owner, repo: repo.replace(/\.git$/, '') };
16
+ }
17
+ /**
18
+ * Parse a GitHub web URL with `/blob/ref/path`:
19
+ * `https://github.com/org/repo/blob/main/path/to/file.md`
20
+ */
21
+ export function parseGitHubBlobUrl(url) {
22
+ const match = url.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)\/blob\/([^/]+)\/(.+)$/);
23
+ if (!match) {
24
+ return undefined;
25
+ }
26
+ const [, owner, repo, ref, path] = match;
27
+ return { owner: owner, repo: repo, ref: ref, path: path };
28
+ }
29
+ /**
30
+ * Parse a GitHub web URL with `/tree/ref/path`:
31
+ * `https://github.com/org/repo/tree/main/path/to/dir`
32
+ */
33
+ export function parseGitHubTreeUrl(url) {
34
+ const match = url.match(/^https:\/\/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)\/(.+)$/);
35
+ if (!match) {
36
+ return undefined;
37
+ }
38
+ const [, owner, repo, ref, subdir] = match;
39
+ return { owner: owner, repo: repo, ref: ref, subdir: subdir };
40
+ }
41
+ /**
42
+ * Parse a GitLab web URL with `/-/tree/ref/path`:
43
+ * `https://gitlab.com/group/project/-/tree/branch/path`
44
+ */
45
+ export function parseGitLabTreeUrl(url) {
46
+ const match = url.match(/^https:\/\/gitlab\.com\/([^/]+)\/([^/]+)\/-\/tree\/([^/]+)\/(.+)$/);
47
+ if (!match) {
48
+ return undefined;
49
+ }
50
+ const [, group, project, ref, subdir] = match;
51
+ return { group: group, project: project, ref: ref, subdir: subdir };
52
+ }
53
+ /**
54
+ * Parse a GitLab web URL with `/-/blob/ref/path`:
55
+ * `https://gitlab.com/group/project/-/blob/branch/path/to/file.json`
56
+ */
57
+ export function parseGitLabBlobUrl(url) {
58
+ const match = url.match(/^https:\/\/gitlab\.com\/([^/]+)\/([^/]+)\/-\/blob\/([^/]+)\/(.+)$/);
59
+ if (!match) {
60
+ return undefined;
61
+ }
62
+ const [, group, project, ref, path] = match;
63
+ return { group: group, project: project, ref: ref, path: path };
64
+ }
65
+ /**
66
+ * Parse a Bitbucket web URL with `/src/ref/path`:
67
+ * `https://bitbucket.org/workspace/repo/src/branch/path/to/file.json`
68
+ */
69
+ export function parseBitbucketBlobUrl(url) {
70
+ const match = url.match(/^https:\/\/bitbucket\.org\/([^/]+)\/([^/]+)\/src\/([^/]+)\/(.+)$/);
71
+ if (!match) {
72
+ return undefined;
73
+ }
74
+ const [, workspace, repo, ref, path] = match;
75
+ return { workspace: workspace, repo: repo, ref: ref, path: path };
76
+ }
77
+ /**
78
+ * Parse git shorthand format: `github:user/repo/path#ref`, `gitlab:user/repo/path#ref`, or `bitbucket:user/repo/path#ref`
79
+ */
80
+ export function parseGitShorthand(input) {
81
+ const match = input.match(/^(github|gitlab|bitbucket):([^#]+)(?:#(.+))?$/);
82
+ if (!match) {
83
+ return undefined;
84
+ }
85
+ const [, provider, repoPath, ref] = match, parts = repoPath.split('/');
86
+ if (parts.length < 2) {
87
+ return undefined;
88
+ }
89
+ const user = parts[0], repo = parts[1], subpath = parts.length > 2 ? parts.slice(2).join('/') : undefined;
90
+ return {
91
+ provider: provider,
92
+ user,
93
+ repo,
94
+ subpath,
95
+ ref,
96
+ };
97
+ }
98
+ /**
99
+ * Check if a source string represents a local file path.
100
+ */
101
+ export function isLocalPath(source) {
102
+ return source.startsWith('./') || source.startsWith('../') || source.startsWith('/');
103
+ }
104
+ /**
105
+ * Check if a source string is a generic git URL (https, git@, git://).
106
+ */
107
+ export function isGenericGitUrl(source) {
108
+ return source.startsWith('https://') || source.startsWith('git@') || source.startsWith('git://');
109
+ }
110
+ /**
111
+ * Infer a name from a path by taking the last segment and optionally stripping extensions.
112
+ * @param path - The path to extract a name from
113
+ * @param extensions - Extensions to strip (e.g., ['.md', '.txt']). If not provided, no stripping.
114
+ */
115
+ export function inferNameFromPath(path, extensions) {
116
+ const segments = path.split('/').filter(Boolean), lastSegment = segments.pop();
117
+ if (!lastSegment) {
118
+ return undefined;
119
+ }
120
+ if (!extensions || extensions.length === 0) {
121
+ return lastSegment;
122
+ }
123
+ // Build regex pattern for extensions (escape dots, join with |)
124
+ const pattern = extensions.map((ext) => ext.replace(/\./g, '\\.')).join('|'), regex = new RegExp(`(${pattern})$`, 'i');
125
+ return lastSegment.replace(regex, '');
126
+ }
127
+ /**
128
+ * Build a GitHub URL from owner and repo.
129
+ */
130
+ export function buildGitHubUrl(owner, repo) {
131
+ return `https://github.com/${owner}/${repo}`;
132
+ }
133
+ /**
134
+ * Build a GitLab URL from group and project.
135
+ */
136
+ export function buildGitLabUrl(group, project) {
137
+ return `https://gitlab.com/${group}/${project}`;
138
+ }
139
+ /**
140
+ * Build a provider URL from shorthand components.
141
+ */
142
+ export function buildProviderUrl(provider, user, repo) {
143
+ if (provider === 'bitbucket') {
144
+ return `https://bitbucket.org/${user}/${repo}`;
145
+ }
146
+ return `https://${provider}.com/${user}/${repo}`;
147
+ }
148
+ /**
149
+ * Convert a GitHub blob URL to a raw content URL.
150
+ * `https://github.com/org/repo/blob/main/path` → `https://raw.githubusercontent.com/org/repo/main/path`
151
+ */
152
+ export function githubBlobToRaw(url) {
153
+ const parsed = parseGitHubBlobUrl(url);
154
+ if (!parsed) {
155
+ return undefined;
156
+ }
157
+ return `https://raw.githubusercontent.com/${parsed.owner}/${parsed.repo}/${parsed.ref}/${parsed.path}`;
158
+ }
159
+ /**
160
+ * Convert a GitLab blob URL to a raw content URL.
161
+ * `https://gitlab.com/group/project/-/blob/main/path` → `https://gitlab.com/group/project/-/raw/main/path`
162
+ */
163
+ export function gitlabBlobToRaw(url) {
164
+ const parsed = parseGitLabBlobUrl(url);
165
+ if (!parsed) {
166
+ return undefined;
167
+ }
168
+ return `https://gitlab.com/${parsed.group}/${parsed.project}/-/raw/${parsed.ref}/${parsed.path}`;
169
+ }
170
+ /**
171
+ * Convert a Bitbucket blob URL to a raw content URL.
172
+ * `https://bitbucket.org/workspace/repo/src/branch/path` → `https://bitbucket.org/workspace/repo/raw/branch/path`
173
+ */
174
+ export function bitbucketBlobToRaw(url) {
175
+ const parsed = parseBitbucketBlobUrl(url);
176
+ if (!parsed) {
177
+ return undefined;
178
+ }
179
+ return `https://bitbucket.org/${parsed.workspace}/${parsed.repo}/raw/${parsed.ref}/${parsed.path}`;
180
+ }
181
+ /**
182
+ * Convert any supported git host blob URL to a raw URL. Returns the original URL if not a recognized blob URL.
183
+ */
184
+ export function convertBlobToRawUrl(url) {
185
+ const githubRaw = githubBlobToRaw(url);
186
+ if (githubRaw) {
187
+ return githubRaw;
188
+ }
189
+ const gitlabRaw = gitlabBlobToRaw(url);
190
+ if (gitlabRaw) {
191
+ return gitlabRaw;
192
+ }
193
+ const bitbucketRaw = bitbucketBlobToRaw(url);
194
+ if (bitbucketRaw) {
195
+ return bitbucketRaw;
196
+ }
197
+ return url;
198
+ }
199
+ //# sourceMappingURL=url-parsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-parsing.js","sourceRoot":"","sources":["../src/url-parsing.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@a1st/aix-core",
3
+ "version": "0.0.3",
4
+ "description": "Core utilities for aix configuration loading and management",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/a1st-dev/aix.git",
20
+ "directory": "packages/core"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public",
24
+ "registry": "https://registry.npmjs.org/"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc -p tsconfig.build.json",
28
+ "test": "vitest run",
29
+ "test:watch": "vitest"
30
+ },
31
+ "dependencies": {
32
+ "@a1st/aix-schema": "*",
33
+ "c12": "2.0.1",
34
+ "defu": "6.1.4",
35
+ "giget": "1.2.3",
36
+ "nypm": "0.3.12",
37
+ "p-map": "7.0.4",
38
+ "pathe": "1.1.2",
39
+ "yaml": "2.8.2"
40
+ }
41
+ }