opkg 0.9.2 → 0.9.4

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 (404) hide show
  1. package/.claude/agents/code-reviewer.md +171 -0
  2. package/.claude/commands/commit-push-pr.md +20 -0
  3. package/.claude/commands/{specs/read.md → read-specs.md} +1 -1
  4. package/.claude/commands/{specs/update.md → update-specs.md} +4 -0
  5. package/.claude/skills/code-review-excellence/SKILL.md +538 -0
  6. package/README.md +2 -2
  7. package/package.json +3 -1
  8. package/packages/cli/dist/add-IJAPFHIX.js +624 -0
  9. package/packages/cli/dist/add-IJAPFHIX.js.map +7 -0
  10. package/packages/cli/dist/add-LLUNFLJI.js +624 -0
  11. package/packages/cli/dist/add-LLUNFLJI.js.map +7 -0
  12. package/packages/cli/dist/add-U44SL3OR.js +624 -0
  13. package/packages/cli/dist/add-U44SL3OR.js.map +7 -0
  14. package/packages/cli/dist/chunk-23VBP5L6.js +371 -0
  15. package/packages/cli/dist/chunk-23VBP5L6.js.map +7 -0
  16. package/packages/cli/dist/chunk-2SVHLF5C.js +1419 -0
  17. package/packages/cli/dist/chunk-2SVHLF5C.js.map +7 -0
  18. package/packages/cli/dist/chunk-37256POU.js +99 -0
  19. package/packages/cli/dist/chunk-37256POU.js.map +7 -0
  20. package/packages/cli/dist/chunk-3PZRVA6O.js +196 -0
  21. package/packages/cli/dist/chunk-3PZRVA6O.js.map +7 -0
  22. package/packages/cli/dist/chunk-427DCURL.js +155 -0
  23. package/packages/cli/dist/chunk-427DCURL.js.map +7 -0
  24. package/packages/cli/dist/chunk-4B5HJLP2.js +48 -0
  25. package/packages/cli/dist/chunk-4B5HJLP2.js.map +7 -0
  26. package/packages/cli/dist/chunk-4OWT3YEG.js +413 -0
  27. package/packages/cli/dist/chunk-4OWT3YEG.js.map +7 -0
  28. package/packages/cli/dist/chunk-4RIBTBXI.js +568 -0
  29. package/packages/cli/dist/chunk-4RIBTBXI.js.map +7 -0
  30. package/packages/cli/dist/chunk-4X2EJHJN.js +63 -0
  31. package/packages/cli/dist/chunk-4X2EJHJN.js.map +7 -0
  32. package/packages/cli/dist/chunk-6CYW66HD.js +1136 -0
  33. package/packages/cli/dist/chunk-6CYW66HD.js.map +7 -0
  34. package/packages/cli/dist/chunk-6DITYAFA.js +172 -0
  35. package/packages/cli/dist/chunk-6DITYAFA.js.map +7 -0
  36. package/packages/cli/dist/chunk-7KEAKEVZ.js +568 -0
  37. package/packages/cli/dist/chunk-7KEAKEVZ.js.map +7 -0
  38. package/packages/cli/dist/chunk-ABFUD25D.js +61 -0
  39. package/packages/cli/dist/chunk-ABFUD25D.js.map +7 -0
  40. package/packages/cli/dist/chunk-AR7GJCG6.js +274 -0
  41. package/packages/cli/dist/chunk-AR7GJCG6.js.map +7 -0
  42. package/packages/cli/dist/chunk-AYTGQCXH.js +86 -0
  43. package/packages/cli/dist/chunk-AYTGQCXH.js.map +7 -0
  44. package/packages/cli/dist/chunk-BROJ6OUT.js +631 -0
  45. package/packages/cli/dist/chunk-BROJ6OUT.js.map +7 -0
  46. package/packages/cli/dist/chunk-BVVSU7QD.js +23 -0
  47. package/packages/cli/dist/chunk-BVVSU7QD.js.map +7 -0
  48. package/packages/cli/dist/chunk-C6FY55UP.js +108 -0
  49. package/packages/cli/dist/chunk-C6FY55UP.js.map +7 -0
  50. package/packages/cli/dist/chunk-CVA64SXK.js +1136 -0
  51. package/packages/cli/dist/chunk-CVA64SXK.js.map +7 -0
  52. package/packages/cli/dist/chunk-D3O7LY2Q.js +1151 -0
  53. package/packages/cli/dist/chunk-D3O7LY2Q.js.map +7 -0
  54. package/packages/cli/dist/chunk-D6LEPODL.js +413 -0
  55. package/packages/cli/dist/chunk-D6LEPODL.js.map +7 -0
  56. package/packages/cli/dist/chunk-DEC24S7E.js +186 -0
  57. package/packages/cli/dist/chunk-DEC24S7E.js.map +7 -0
  58. package/packages/cli/dist/chunk-FMVVJH5M.js +371 -0
  59. package/packages/cli/dist/chunk-FMVVJH5M.js.map +7 -0
  60. package/packages/cli/dist/chunk-GDVFS3YP.js +130 -0
  61. package/packages/cli/dist/chunk-GDVFS3YP.js.map +7 -0
  62. package/packages/cli/dist/chunk-GEP2G5HF.js +31 -0
  63. package/packages/cli/dist/chunk-GEP2G5HF.js.map +7 -0
  64. package/packages/cli/dist/chunk-GSWHZBT2.js +62 -0
  65. package/packages/cli/dist/chunk-GSWHZBT2.js.map +7 -0
  66. package/packages/cli/dist/chunk-HTYHJA3B.js +61 -0
  67. package/packages/cli/dist/chunk-HTYHJA3B.js.map +7 -0
  68. package/packages/cli/dist/chunk-HYKYECAE.js +222 -0
  69. package/packages/cli/dist/chunk-HYKYECAE.js.map +7 -0
  70. package/packages/cli/dist/chunk-I7FEAHB4.js +100 -0
  71. package/packages/cli/dist/chunk-I7FEAHB4.js.map +7 -0
  72. package/packages/cli/dist/chunk-IHVZ5AUJ.js +107 -0
  73. package/packages/cli/dist/chunk-IHVZ5AUJ.js.map +7 -0
  74. package/packages/cli/dist/chunk-KI7FDU3H.js +99 -0
  75. package/packages/cli/dist/chunk-KI7FDU3H.js.map +7 -0
  76. package/packages/cli/dist/chunk-L5GRJQBS.js +32 -0
  77. package/packages/cli/dist/chunk-L5GRJQBS.js.map +7 -0
  78. package/packages/cli/dist/chunk-LHEAUDJL.js +302 -0
  79. package/packages/cli/dist/chunk-LHEAUDJL.js.map +7 -0
  80. package/packages/cli/dist/chunk-MIURCESJ.js +48 -0
  81. package/packages/cli/dist/chunk-MIURCESJ.js.map +7 -0
  82. package/packages/cli/dist/chunk-N43IXOND.js +732 -0
  83. package/packages/cli/dist/chunk-N43IXOND.js.map +7 -0
  84. package/packages/cli/dist/chunk-OUZRMGPV.js +274 -0
  85. package/packages/cli/dist/chunk-OUZRMGPV.js.map +7 -0
  86. package/packages/cli/dist/chunk-PSQXKAL4.js +371 -0
  87. package/packages/cli/dist/chunk-PSQXKAL4.js.map +7 -0
  88. package/packages/cli/dist/chunk-PUDRKDVZ.js +1419 -0
  89. package/packages/cli/dist/chunk-PUDRKDVZ.js.map +7 -0
  90. package/packages/cli/dist/chunk-RAKMX654.js +631 -0
  91. package/packages/cli/dist/chunk-RAKMX654.js.map +7 -0
  92. package/packages/cli/dist/chunk-RSFLK2TP.js +195 -0
  93. package/packages/cli/dist/chunk-RSFLK2TP.js.map +7 -0
  94. package/packages/cli/dist/chunk-S26PR2BS.js +99 -0
  95. package/packages/cli/dist/chunk-S26PR2BS.js.map +7 -0
  96. package/packages/cli/dist/chunk-U7FW7SXX.js +568 -0
  97. package/packages/cli/dist/chunk-U7FW7SXX.js.map +7 -0
  98. package/packages/cli/dist/chunk-VKM6K5TN.js +413 -0
  99. package/packages/cli/dist/chunk-VKM6K5TN.js.map +7 -0
  100. package/packages/cli/dist/chunk-VKNJG4JN.js +253 -0
  101. package/packages/cli/dist/chunk-VKNJG4JN.js.map +7 -0
  102. package/packages/cli/dist/chunk-VQ2KY6CK.js +113 -0
  103. package/packages/cli/dist/chunk-VQ2KY6CK.js.map +7 -0
  104. package/packages/cli/dist/chunk-VQDTXLOX.js +1312 -0
  105. package/packages/cli/dist/chunk-VQDTXLOX.js.map +7 -0
  106. package/packages/cli/dist/chunk-VXNS3X5O.js +60 -0
  107. package/packages/cli/dist/chunk-VXNS3X5O.js.map +7 -0
  108. package/packages/cli/dist/chunk-WF7H2YDU.js +376 -0
  109. package/packages/cli/dist/chunk-WF7H2YDU.js.map +7 -0
  110. package/packages/cli/dist/chunk-WNRXZLWW.js +266 -0
  111. package/packages/cli/dist/chunk-WNRXZLWW.js.map +7 -0
  112. package/packages/cli/dist/chunk-WT4VVCXM.js +1121 -0
  113. package/packages/cli/dist/chunk-WT4VVCXM.js.map +7 -0
  114. package/packages/cli/dist/configure-3AZUMDJZ.js +107 -0
  115. package/packages/cli/dist/configure-3AZUMDJZ.js.map +7 -0
  116. package/packages/cli/dist/configure-D722JQOD.js +107 -0
  117. package/packages/cli/dist/configure-D722JQOD.js.map +7 -0
  118. package/packages/cli/dist/configure-IU5H7XD6.js +107 -0
  119. package/packages/cli/dist/configure-IU5H7XD6.js.map +7 -0
  120. package/packages/cli/dist/file-format-detector-PXCIAKTK.js +22 -0
  121. package/packages/cli/dist/file-format-detector-PXCIAKTK.js.map +7 -0
  122. package/packages/cli/dist/index.js +17 -17
  123. package/packages/cli/dist/install-EZNWMLJR.js +7581 -0
  124. package/packages/cli/dist/install-EZNWMLJR.js.map +7 -0
  125. package/packages/cli/dist/install-F5ANFUBX.js +7577 -0
  126. package/packages/cli/dist/install-F5ANFUBX.js.map +7 -0
  127. package/packages/cli/dist/install-JSXEPPC2.js +7104 -0
  128. package/packages/cli/dist/install-JSXEPPC2.js.map +7 -0
  129. package/packages/cli/dist/install-QHEBX7JH.js +7101 -0
  130. package/packages/cli/dist/install-QHEBX7JH.js.map +7 -0
  131. package/packages/cli/dist/list-DMOUATYI.js +327 -0
  132. package/packages/cli/dist/list-DMOUATYI.js.map +7 -0
  133. package/packages/cli/dist/list-UESSCB7Y.js +327 -0
  134. package/packages/cli/dist/list-UESSCB7Y.js.map +7 -0
  135. package/packages/cli/dist/list-XR7RSJFS.js +327 -0
  136. package/packages/cli/dist/list-XR7RSJFS.js.map +7 -0
  137. package/packages/cli/dist/login-EYZ2SOYZ.js +150 -0
  138. package/packages/cli/dist/login-EYZ2SOYZ.js.map +7 -0
  139. package/packages/cli/dist/login-JWCSTAEU.js +150 -0
  140. package/packages/cli/dist/login-JWCSTAEU.js.map +7 -0
  141. package/packages/cli/dist/login-NRKHXZKM.js +150 -0
  142. package/packages/cli/dist/login-NRKHXZKM.js.map +7 -0
  143. package/packages/cli/dist/logout-HDMYRXIE.js +40 -0
  144. package/packages/cli/dist/logout-HDMYRXIE.js.map +7 -0
  145. package/packages/cli/dist/logout-SYHXCVCQ.js +40 -0
  146. package/packages/cli/dist/logout-SYHXCVCQ.js.map +7 -0
  147. package/packages/cli/dist/logout-X3XUUOH5.js +40 -0
  148. package/packages/cli/dist/logout-X3XUUOH5.js.map +7 -0
  149. package/packages/cli/dist/new-3LTFKDTQ.js +277 -0
  150. package/packages/cli/dist/new-3LTFKDTQ.js.map +7 -0
  151. package/packages/cli/dist/new-F46OSD72.js +277 -0
  152. package/packages/cli/dist/new-F46OSD72.js.map +7 -0
  153. package/packages/cli/dist/new-OPCCLNL2.js +277 -0
  154. package/packages/cli/dist/new-OPCCLNL2.js.map +7 -0
  155. package/packages/cli/dist/package-marker-detector-T5O5YD2E.js +80 -0
  156. package/packages/cli/dist/package-marker-detector-T5O5YD2E.js.map +7 -0
  157. package/packages/cli/dist/package-yml-QWZIJDYU.js +16 -0
  158. package/packages/cli/dist/package-yml-QWZIJDYU.js.map +7 -0
  159. package/packages/cli/dist/plugin-naming-YP2I4NPA.js +29 -0
  160. package/packages/cli/dist/plugin-naming-YP2I4NPA.js.map +7 -0
  161. package/packages/cli/dist/publish-4H43PCSG.js +619 -0
  162. package/packages/cli/dist/publish-4H43PCSG.js.map +7 -0
  163. package/packages/cli/dist/publish-RULKLNUX.js +619 -0
  164. package/packages/cli/dist/publish-RULKLNUX.js.map +7 -0
  165. package/packages/cli/dist/publish-URWY2P3E.js +619 -0
  166. package/packages/cli/dist/publish-URWY2P3E.js.map +7 -0
  167. package/packages/cli/dist/remove-BD52BHR2.js +542 -0
  168. package/packages/cli/dist/remove-BD52BHR2.js.map +7 -0
  169. package/packages/cli/dist/remove-G5NRC7LD.js +542 -0
  170. package/packages/cli/dist/remove-G5NRC7LD.js.map +7 -0
  171. package/packages/cli/dist/remove-TC3FQUYQ.js +542 -0
  172. package/packages/cli/dist/remove-TC3FQUYQ.js.map +7 -0
  173. package/packages/cli/dist/resource-discoverer-4X4RY43E.js +17 -0
  174. package/packages/cli/dist/resource-discoverer-4X4RY43E.js.map +7 -0
  175. package/packages/cli/dist/save-24TESYKI.js +1728 -0
  176. package/packages/cli/dist/save-24TESYKI.js.map +7 -0
  177. package/packages/cli/dist/save-N3QWF2WN.js +1728 -0
  178. package/packages/cli/dist/save-N3QWF2WN.js.map +7 -0
  179. package/packages/cli/dist/save-P2U67DTV.js +1728 -0
  180. package/packages/cli/dist/save-P2U67DTV.js.map +7 -0
  181. package/packages/cli/dist/search-ABROK3UO.js +157 -0
  182. package/packages/cli/dist/search-ABROK3UO.js.map +7 -0
  183. package/packages/cli/dist/search-WVFXFNAV.js +157 -0
  184. package/packages/cli/dist/search-WVFXFNAV.js.map +7 -0
  185. package/packages/cli/dist/search-YQN2Q2SO.js +157 -0
  186. package/packages/cli/dist/search-YQN2Q2SO.js.map +7 -0
  187. package/packages/cli/dist/set-DCWF73F6.js +251 -0
  188. package/packages/cli/dist/set-DCWF73F6.js.map +7 -0
  189. package/packages/cli/dist/set-GJEG2F6Y.js +251 -0
  190. package/packages/cli/dist/set-GJEG2F6Y.js.map +7 -0
  191. package/packages/cli/dist/set-NGM2FIKF.js +251 -0
  192. package/packages/cli/dist/set-NGM2FIKF.js.map +7 -0
  193. package/packages/cli/dist/uninstall-3CJQMTYH.js +539 -0
  194. package/packages/cli/dist/uninstall-3CJQMTYH.js.map +7 -0
  195. package/packages/cli/dist/uninstall-Q3CP4UN5.js +539 -0
  196. package/packages/cli/dist/uninstall-Q3CP4UN5.js.map +7 -0
  197. package/packages/cli/dist/uninstall-QU5OMEEC.js +539 -0
  198. package/packages/cli/dist/uninstall-QU5OMEEC.js.map +7 -0
  199. package/packages/cli/dist/unpublish-GHJQYC4S.js +245 -0
  200. package/packages/cli/dist/unpublish-GHJQYC4S.js.map +7 -0
  201. package/packages/cli/dist/unpublish-L2CYMK4B.js +245 -0
  202. package/packages/cli/dist/unpublish-L2CYMK4B.js.map +7 -0
  203. package/packages/cli/dist/unpublish-VBTNTMS5.js +245 -0
  204. package/packages/cli/dist/unpublish-VBTNTMS5.js.map +7 -0
  205. package/packages/cli/dist/view-MXRBMXOG.js +488 -0
  206. package/packages/cli/dist/view-MXRBMXOG.js.map +7 -0
  207. package/packages/cli/dist/view-NMND7SAW.js +488 -0
  208. package/packages/cli/dist/view-NMND7SAW.js.map +7 -0
  209. package/packages/cli/dist/view-RPQRDSYB.js +488 -0
  210. package/packages/cli/dist/view-RPQRDSYB.js.map +7 -0
  211. package/packages/cli/package.json +2 -0
  212. package/packages/core/dist/constants/index.d.ts +9 -0
  213. package/packages/core/dist/constants/index.d.ts.map +1 -1
  214. package/packages/core/dist/constants/index.js +12 -0
  215. package/packages/core/dist/constants/index.js.map +1 -1
  216. package/packages/core/dist/core/dependency-resolver/index.d.ts +2 -10
  217. package/packages/core/dist/core/dependency-resolver/index.d.ts.map +1 -1
  218. package/packages/core/dist/core/dependency-resolver/index.js +3 -14
  219. package/packages/core/dist/core/dependency-resolver/index.js.map +1 -1
  220. package/packages/core/dist/core/install/base-detector.d.ts +2 -1
  221. package/packages/core/dist/core/install/base-detector.d.ts.map +1 -1
  222. package/packages/core/dist/core/install/base-detector.js +54 -1
  223. package/packages/core/dist/core/install/base-detector.js.map +1 -1
  224. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts +7 -5
  225. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts.map +1 -1
  226. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js +25 -9
  227. package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js.map +1 -1
  228. package/packages/core/dist/core/install/flow-index-installer.d.ts +2 -1
  229. package/packages/core/dist/core/install/flow-index-installer.d.ts.map +1 -1
  230. package/packages/core/dist/core/install/flow-index-installer.js +19 -4
  231. package/packages/core/dist/core/install/flow-index-installer.js.map +1 -1
  232. package/packages/core/dist/core/install/input-classifier-base.js +3 -3
  233. package/packages/core/dist/core/install/input-classifier-base.js.map +1 -1
  234. package/packages/core/dist/core/install/install-reporting.d.ts.map +1 -1
  235. package/packages/core/dist/core/install/install-reporting.js +7 -9
  236. package/packages/core/dist/core/install/install-reporting.js.map +1 -1
  237. package/packages/core/dist/core/install/list-handler.d.ts.map +1 -1
  238. package/packages/core/dist/core/install/list-handler.js +3 -0
  239. package/packages/core/dist/core/install/list-handler.js.map +1 -1
  240. package/packages/core/dist/core/install/marketplace-handler.d.ts.map +1 -1
  241. package/packages/core/dist/core/install/marketplace-handler.js.map +1 -1
  242. package/packages/core/dist/core/install/operations/conflict-handler.d.ts +2 -1
  243. package/packages/core/dist/core/install/operations/conflict-handler.d.ts.map +1 -1
  244. package/packages/core/dist/core/install/operations/conflict-handler.js +2 -2
  245. package/packages/core/dist/core/install/operations/conflict-handler.js.map +1 -1
  246. package/packages/core/dist/core/install/operations/installation-executor.d.ts +3 -0
  247. package/packages/core/dist/core/install/operations/installation-executor.d.ts.map +1 -1
  248. package/packages/core/dist/core/install/operations/installation-executor.js +39 -22
  249. package/packages/core/dist/core/install/operations/installation-executor.js.map +1 -1
  250. package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts +7 -3
  251. package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts.map +1 -1
  252. package/packages/core/dist/core/install/orchestrator/orchestrator.js +193 -93
  253. package/packages/core/dist/core/install/orchestrator/orchestrator.js.map +1 -1
  254. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts +1 -0
  255. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts.map +1 -1
  256. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js +11 -24
  257. package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js.map +1 -1
  258. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts +2 -0
  259. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts.map +1 -1
  260. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js +14 -14
  261. package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js.map +1 -1
  262. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts +7 -0
  263. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts.map +1 -1
  264. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js +28 -0
  265. package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js.map +1 -1
  266. package/packages/core/dist/core/install/orchestrator/types.d.ts +2 -0
  267. package/packages/core/dist/core/install/orchestrator/types.d.ts.map +1 -1
  268. package/packages/core/dist/core/install/path-package-loader.d.ts.map +1 -1
  269. package/packages/core/dist/core/install/path-package-loader.js +20 -1
  270. package/packages/core/dist/core/install/path-package-loader.js.map +1 -1
  271. package/packages/core/dist/core/install/platform-resolution.d.ts +3 -0
  272. package/packages/core/dist/core/install/platform-resolution.d.ts.map +1 -1
  273. package/packages/core/dist/core/install/platform-resolution.js +5 -2
  274. package/packages/core/dist/core/install/platform-resolution.js.map +1 -1
  275. package/packages/core/dist/core/install/preprocessing/context-population.d.ts +18 -0
  276. package/packages/core/dist/core/install/preprocessing/context-population.d.ts.map +1 -0
  277. package/packages/core/dist/core/install/preprocessing/context-population.js +36 -0
  278. package/packages/core/dist/core/install/preprocessing/context-population.js.map +1 -0
  279. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts +23 -0
  280. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts.map +1 -1
  281. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js +44 -0
  282. package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js.map +1 -1
  283. package/packages/core/dist/core/install/sources/git-source.d.ts.map +1 -1
  284. package/packages/core/dist/core/install/sources/git-source.js +67 -4
  285. package/packages/core/dist/core/install/sources/git-source.js.map +1 -1
  286. package/packages/core/dist/core/install/sources/path-source.d.ts.map +1 -1
  287. package/packages/core/dist/core/install/sources/path-source.js +8 -0
  288. package/packages/core/dist/core/install/sources/path-source.js.map +1 -1
  289. package/packages/core/dist/core/install/strategies/flow-based-strategy.d.ts.map +1 -1
  290. package/packages/core/dist/core/install/strategies/flow-based-strategy.js +12 -5
  291. package/packages/core/dist/core/install/strategies/flow-based-strategy.js.map +1 -1
  292. package/packages/core/dist/core/install/strategies/types.d.ts +11 -1
  293. package/packages/core/dist/core/install/strategies/types.d.ts.map +1 -1
  294. package/packages/core/dist/core/install/unified/context-builders.d.ts +5 -0
  295. package/packages/core/dist/core/install/unified/context-builders.d.ts.map +1 -1
  296. package/packages/core/dist/core/install/unified/context-builders.js +12 -0
  297. package/packages/core/dist/core/install/unified/context-builders.js.map +1 -1
  298. package/packages/core/dist/core/install/unified/context-helpers.d.ts +0 -4
  299. package/packages/core/dist/core/install/unified/context-helpers.d.ts.map +1 -1
  300. package/packages/core/dist/core/install/unified/context-helpers.js +0 -24
  301. package/packages/core/dist/core/install/unified/context-helpers.js.map +1 -1
  302. package/packages/core/dist/core/install/unified/index.d.ts +1 -1
  303. package/packages/core/dist/core/install/unified/index.d.ts.map +1 -1
  304. package/packages/core/dist/core/install/unified/index.js +1 -1
  305. package/packages/core/dist/core/install/unified/index.js.map +1 -1
  306. package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts +6 -0
  307. package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts.map +1 -1
  308. package/packages/core/dist/core/install/unified/multi-context-pipeline.js +11 -4
  309. package/packages/core/dist/core/install/unified/multi-context-pipeline.js.map +1 -1
  310. package/packages/core/dist/core/install/unified/phases/conflicts.d.ts.map +1 -1
  311. package/packages/core/dist/core/install/unified/phases/conflicts.js +1 -1
  312. package/packages/core/dist/core/install/unified/phases/conflicts.js.map +1 -1
  313. package/packages/core/dist/core/install/unified/phases/execute.d.ts.map +1 -1
  314. package/packages/core/dist/core/install/unified/phases/execute.js +5 -5
  315. package/packages/core/dist/core/install/unified/phases/execute.js.map +1 -1
  316. package/packages/core/dist/core/install/unified/phases/load-package.js +3 -3
  317. package/packages/core/dist/core/install/unified/phases/load-package.js.map +1 -1
  318. package/packages/core/dist/core/install/unified/phases/report.js +1 -1
  319. package/packages/core/dist/core/install/unified/phases/report.js.map +1 -1
  320. package/packages/core/dist/core/install/unified/pipeline.d.ts.map +1 -1
  321. package/packages/core/dist/core/install/unified/pipeline.js +7 -10
  322. package/packages/core/dist/core/install/unified/pipeline.js.map +1 -1
  323. package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts +24 -0
  324. package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts.map +1 -0
  325. package/packages/core/dist/core/install/wave-resolver/content-root-cache.js +71 -0
  326. package/packages/core/dist/core/install/wave-resolver/content-root-cache.js.map +1 -0
  327. package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts +39 -0
  328. package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts.map +1 -0
  329. package/packages/core/dist/core/install/wave-resolver/context-builder.js +148 -0
  330. package/packages/core/dist/core/install/wave-resolver/context-builder.js.map +1 -0
  331. package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts +49 -0
  332. package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts.map +1 -0
  333. package/packages/core/dist/core/install/wave-resolver/fetcher.js +221 -0
  334. package/packages/core/dist/core/install/wave-resolver/fetcher.js.map +1 -0
  335. package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts +23 -0
  336. package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts.map +1 -0
  337. package/packages/core/dist/core/install/wave-resolver/index-updater.js +87 -0
  338. package/packages/core/dist/core/install/wave-resolver/index-updater.js.map +1 -0
  339. package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts +101 -0
  340. package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts.map +1 -0
  341. package/packages/core/dist/core/install/wave-resolver/index-write-collector.js +194 -0
  342. package/packages/core/dist/core/install/wave-resolver/index-write-collector.js.map +1 -0
  343. package/packages/core/dist/core/install/wave-resolver/index.d.ts +17 -0
  344. package/packages/core/dist/core/install/wave-resolver/index.d.ts.map +1 -0
  345. package/packages/core/dist/core/install/wave-resolver/index.js +16 -0
  346. package/packages/core/dist/core/install/wave-resolver/index.js.map +1 -0
  347. package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts +34 -0
  348. package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts.map +1 -0
  349. package/packages/core/dist/core/install/wave-resolver/manifest-reader.js +112 -0
  350. package/packages/core/dist/core/install/wave-resolver/manifest-reader.js.map +1 -0
  351. package/packages/core/dist/core/install/wave-resolver/types.d.ts +210 -0
  352. package/packages/core/dist/core/install/wave-resolver/types.d.ts.map +1 -0
  353. package/packages/core/dist/core/install/wave-resolver/types.js +6 -0
  354. package/packages/core/dist/core/install/wave-resolver/types.js.map +1 -0
  355. package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts +65 -0
  356. package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts.map +1 -0
  357. package/packages/core/dist/core/install/wave-resolver/version-solver.js +166 -0
  358. package/packages/core/dist/core/install/wave-resolver/version-solver.js.map +1 -0
  359. package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts +16 -0
  360. package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts.map +1 -0
  361. package/packages/core/dist/core/install/wave-resolver/wave-engine.js +337 -0
  362. package/packages/core/dist/core/install/wave-resolver/wave-engine.js.map +1 -0
  363. package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts +50 -0
  364. package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts.map +1 -0
  365. package/packages/core/dist/core/install/wave-resolver/wave-installer.js +246 -0
  366. package/packages/core/dist/core/install/wave-resolver/wave-installer.js.map +1 -0
  367. package/packages/core/dist/core/ports/buffered-output.d.ts +36 -0
  368. package/packages/core/dist/core/ports/buffered-output.d.ts.map +1 -0
  369. package/packages/core/dist/core/ports/buffered-output.js +89 -0
  370. package/packages/core/dist/core/ports/buffered-output.js.map +1 -0
  371. package/packages/core/dist/core/ports/resolve.d.ts +0 -13
  372. package/packages/core/dist/core/ports/resolve.d.ts.map +1 -1
  373. package/packages/core/dist/core/ports/resolve.js +0 -28
  374. package/packages/core/dist/core/ports/resolve.js.map +1 -1
  375. package/packages/core/dist/core/remove/removal-confirmation.d.ts +4 -1
  376. package/packages/core/dist/core/remove/removal-confirmation.d.ts.map +1 -1
  377. package/packages/core/dist/core/remove/removal-confirmation.js +5 -4
  378. package/packages/core/dist/core/remove/removal-confirmation.js.map +1 -1
  379. package/packages/core/dist/core/remove/remove-from-source-pipeline.d.ts.map +1 -1
  380. package/packages/core/dist/core/remove/remove-from-source-pipeline.js +1 -10
  381. package/packages/core/dist/core/remove/remove-from-source-pipeline.js.map +1 -1
  382. package/packages/core/dist/core/uninstall/uninstall-executor.js +1 -1
  383. package/packages/core/dist/core/uninstall/uninstall-executor.js.map +1 -1
  384. package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts +2 -2
  385. package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts.map +1 -1
  386. package/packages/core/dist/core/uninstall/uninstall-reporter.js +4 -4
  387. package/packages/core/dist/core/uninstall/uninstall-reporter.js.map +1 -1
  388. package/packages/core/dist/index.d.ts +1 -1
  389. package/packages/core/dist/index.d.ts.map +1 -1
  390. package/packages/core/dist/types/execution-context.d.ts +40 -10
  391. package/packages/core/dist/types/execution-context.d.ts.map +1 -1
  392. package/packages/core/dist/utils/concurrency-pool.d.ts +34 -0
  393. package/packages/core/dist/utils/concurrency-pool.d.ts.map +1 -0
  394. package/packages/core/dist/utils/concurrency-pool.js +58 -0
  395. package/packages/core/dist/utils/concurrency-pool.js.map +1 -0
  396. package/packages/core/dist/utils/plugin-naming.d.ts +11 -3
  397. package/packages/core/dist/utils/plugin-naming.d.ts.map +1 -1
  398. package/packages/core/dist/utils/plugin-naming.js +27 -7
  399. package/packages/core/dist/utils/plugin-naming.js.map +1 -1
  400. package/plans/wave-resolver.md +254 -0
  401. package/.claude/agents/essentials/code-simplifier.md +0 -52
  402. package/.claude/commands/essentials/cleanup.md +0 -1
  403. package/.claude/commands/essentials/review.md +0 -8
  404. package/.claude/commands/git/commit.md +0 -5
@@ -0,0 +1,631 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ UserCancellationError
4
+ } from "./chunk-ID4SVDQZ.js";
5
+ import {
6
+ logger
7
+ } from "./chunk-5EFWGD33.js";
8
+
9
+ // ../core/src/core/ports/console-output.ts
10
+ var consoleOutput = {
11
+ info(message) {
12
+ console.log(message);
13
+ },
14
+ step(message) {
15
+ console.log(message);
16
+ },
17
+ connector() {
18
+ },
19
+ message(message) {
20
+ console.log(message);
21
+ },
22
+ success(message) {
23
+ console.log(`\u2713 ${message}`);
24
+ },
25
+ error(message) {
26
+ console.log(`\u2717 ${message}`);
27
+ },
28
+ warn(message) {
29
+ console.log(`\u26A0 ${message}`);
30
+ },
31
+ note(content, title) {
32
+ let indented = content.split(`
33
+ `).map((line) => ` ${line}`).join(`
34
+ `);
35
+ console.log(title ? `
36
+ ${title}
37
+ ${indented}` : `
38
+ ${indented}`);
39
+ },
40
+ async confirm(_message, options) {
41
+ return options?.initial ?? !1;
42
+ },
43
+ spinner() {
44
+ let msg = "";
45
+ return {
46
+ start(message) {
47
+ msg = message, console.log(`\u2026 ${message}`);
48
+ },
49
+ stop(finalMessage) {
50
+ console.log(finalMessage ? `\u2713 ${finalMessage}` : `\u2713 ${msg}`);
51
+ },
52
+ message(text2) {
53
+ msg = text2;
54
+ }
55
+ };
56
+ }
57
+ };
58
+
59
+ // ../core/src/core/ports/console-prompt.ts
60
+ var NonInteractivePromptError = class extends Error {
61
+ constructor(promptType) {
62
+ super(
63
+ `Cannot prompt for ${promptType} in non-interactive mode. Use specific flags or options to provide the required input.`
64
+ ), this.name = "NonInteractivePromptError";
65
+ }
66
+ }, nonInteractivePrompt = {
67
+ async confirm(_message, _initial) {
68
+ throw new NonInteractivePromptError("confirmation");
69
+ },
70
+ async select(_message, _choices, _hint) {
71
+ throw new NonInteractivePromptError("selection");
72
+ },
73
+ async multiselect(_message, _choices) {
74
+ throw new NonInteractivePromptError("multi-selection");
75
+ },
76
+ async groupMultiselect(_message, _groups) {
77
+ throw new NonInteractivePromptError("group selection");
78
+ },
79
+ async text(_message, _options) {
80
+ throw new NonInteractivePromptError("text input");
81
+ }
82
+ };
83
+
84
+ // ../core/src/core/ports/resolve.ts
85
+ function resolveOutput(ctx) {
86
+ return ctx?.output ?? consoleOutput;
87
+ }
88
+ function resolvePrompt(ctx) {
89
+ return ctx?.prompt ?? nonInteractivePrompt;
90
+ }
91
+
92
+ // ../core/src/core/execution-context.ts
93
+ import { resolve as resolve2 } from "path";
94
+ import { stat, access, constants as fsConstants } from "fs/promises";
95
+
96
+ // ../core/src/utils/home-directory.ts
97
+ import { homedir } from "os";
98
+ import { resolve, normalize } from "path";
99
+ function getHomeDirectory() {
100
+ return homedir();
101
+ }
102
+ function isHomeDirectory(path) {
103
+ let normalizedPath = normalize(resolve(path)), normalizedHome = normalize(getHomeDirectory());
104
+ return normalizedPath === normalizedHome;
105
+ }
106
+ function normalizePathWithTilde(path) {
107
+ let normalizedPath = normalize(resolve(path)), homeDir = getHomeDirectory(), normalizedHome = normalize(homeDir);
108
+ return normalizedPath === normalizedHome ? "~/" : normalizedPath.startsWith(normalizedHome + "/") ? "~/" + normalizedPath.slice(normalizedHome.length + 1) : normalizedPath;
109
+ }
110
+
111
+ // ../core/src/core/execution-context.ts
112
+ async function createExecutionContext(options = {}) {
113
+ let sourceCwd = process.cwd(), targetDir, isGlobal;
114
+ options.global ? (targetDir = getHomeDirectory(), isGlobal = !0, options.cwd && logger.info("--global option present, ignoring --cwd", {
115
+ cwd: options.cwd,
116
+ targetDir
117
+ })) : options.cwd ? (targetDir = resolve2(sourceCwd, options.cwd), isGlobal = isHomeDirectory(targetDir)) : (targetDir = sourceCwd, isGlobal = isHomeDirectory(targetDir));
118
+ let context = {
119
+ sourceCwd,
120
+ targetDir,
121
+ isGlobal,
122
+ interactive: options.interactive
123
+ };
124
+ return await validateExecutionContext(context), logger.debug("Created execution context", {
125
+ sourceCwd: context.sourceCwd,
126
+ targetDir: context.targetDir,
127
+ isGlobal: context.isGlobal
128
+ }), context;
129
+ }
130
+ async function validateExecutionContext(context) {
131
+ try {
132
+ if (!(await stat(context.targetDir)).isDirectory())
133
+ throw new Error(`Target path is not a directory: ${context.targetDir}`);
134
+ await access(context.targetDir, fsConstants.W_OK);
135
+ } catch (error) {
136
+ throw error.code === "ENOENT" ? new Error(
137
+ `Target directory does not exist: ${context.targetDir}
138
+
139
+ Hint: Create the directory or specify a different target with --cwd`
140
+ ) : error.code === "EACCES" ? new Error(
141
+ `Target directory is not writable: ${context.targetDir}
142
+
143
+ Hint: Check directory permissions`
144
+ ) : new Error(
145
+ `Invalid target directory: ${context.targetDir}
146
+ Error: ${error instanceof Error ? error.message : String(error)}`
147
+ );
148
+ }
149
+ try {
150
+ if (!(await stat(context.sourceCwd)).isDirectory())
151
+ throw new Error(`Source working directory is not a directory: ${context.sourceCwd}`);
152
+ await access(context.sourceCwd, fsConstants.R_OK);
153
+ } catch (error) {
154
+ throw new Error(
155
+ `Invalid source working directory: ${context.sourceCwd}
156
+ Error: ${error instanceof Error ? error.message : String(error)}`
157
+ );
158
+ }
159
+ }
160
+ function getDisplayTargetDir(context) {
161
+ return normalizePathWithTilde(context.targetDir);
162
+ }
163
+
164
+ // src/cli/clack-output-adapter.ts
165
+ import { log, spinner as clackSpinner, confirm as clackConfirm, note as clackNote, isCancel, cancel } from "@clack/prompts";
166
+
167
+ // src/utils/spinner.ts
168
+ var Spinner = class {
169
+ constructor(message = "Loading...") {
170
+ this.intervalId = null;
171
+ this.currentFrame = 0;
172
+ this.isRunning = !1;
173
+ this.message = message, this.frames = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
174
+ }
175
+ /**
176
+ * Start the spinner animation
177
+ */
178
+ start() {
179
+ this.isRunning || (this.isRunning = !0, this.currentFrame = 0, process.stdout.write("\x1B[?25l"), this.intervalId = setInterval(() => {
180
+ let frame = this.frames[this.currentFrame % this.frames.length];
181
+ process.stdout.write(`\r${frame} ${this.message}`), this.currentFrame++;
182
+ }, 80));
183
+ }
184
+ /**
185
+ * Update the spinner message
186
+ */
187
+ update(message) {
188
+ this.message = message;
189
+ }
190
+ /**
191
+ * Stop the spinner
192
+ */
193
+ stop() {
194
+ this.isRunning && (this.isRunning = !1, this.intervalId && (clearInterval(this.intervalId), this.intervalId = null), process.stdout.write("\r" + " ".repeat(process.stdout.columns || 80) + "\r"), process.stdout.write("\x1B[?25h"));
195
+ }
196
+ };
197
+
198
+ // src/cli/clack-output-adapter.ts
199
+ function createClackOutput() {
200
+ return {
201
+ info(message) {
202
+ log.info(message);
203
+ },
204
+ step(message) {
205
+ log.step(message);
206
+ },
207
+ connector() {
208
+ log.message(" ", { spacing: 0 });
209
+ },
210
+ message(message) {
211
+ log.message(message, { spacing: 0 });
212
+ },
213
+ success(message) {
214
+ log.success(message);
215
+ },
216
+ error(message) {
217
+ log.error(message);
218
+ },
219
+ warn(message) {
220
+ log.warn(message);
221
+ },
222
+ note(content, title) {
223
+ clackNote(content, title ?? "");
224
+ },
225
+ async confirm(message, options) {
226
+ let result = await clackConfirm({
227
+ message,
228
+ initialValue: options?.initial ?? !1
229
+ });
230
+ if (isCancel(result)) {
231
+ cancel("Operation cancelled.");
232
+ let { UserCancellationError: UserCancellationError2 } = await import("./errors-X5KO3GTP.js");
233
+ throw new UserCancellationError2("Operation cancelled by user");
234
+ }
235
+ return result;
236
+ },
237
+ spinner() {
238
+ let s = clackSpinner(), isStarted = !1;
239
+ return {
240
+ start(message) {
241
+ isStarted || (s.start(message), isStarted = !0);
242
+ },
243
+ stop(finalMessage) {
244
+ isStarted && (finalMessage ? s.stop(finalMessage) : s.stop(), isStarted = !1);
245
+ },
246
+ message(text2) {
247
+ isStarted && s.message(text2);
248
+ }
249
+ };
250
+ }
251
+ };
252
+ }
253
+ function createPlainOutput() {
254
+ return {
255
+ info(message) {
256
+ console.log(message);
257
+ },
258
+ step(message) {
259
+ console.log(message);
260
+ },
261
+ connector() {
262
+ },
263
+ message(message) {
264
+ console.log(message);
265
+ },
266
+ success(message) {
267
+ console.log(`\u2713 ${message}`);
268
+ },
269
+ error(message) {
270
+ console.log(`\u274C ${message}`);
271
+ },
272
+ warn(message) {
273
+ console.log(`\u26A0\uFE0F ${message}`);
274
+ },
275
+ note(content, title) {
276
+ let indented = content.split(`
277
+ `).map((line) => ` ${line}`).join(`
278
+ `);
279
+ console.log(title ? `
280
+ ${title}
281
+ ${indented}` : `
282
+ ${indented}`);
283
+ },
284
+ async confirm(_message, options) {
285
+ return console.log(`${_message} ${options?.initial ? "(Y)" : "(N)"}`), options?.initial ?? !1;
286
+ },
287
+ spinner() {
288
+ let s = null;
289
+ return {
290
+ start(message) {
291
+ s = new Spinner(message), s.start();
292
+ },
293
+ stop(finalMessage) {
294
+ s && (s.stop(), finalMessage && console.log(finalMessage), s = null);
295
+ },
296
+ message(text2) {
297
+ s && s.update(text2);
298
+ }
299
+ };
300
+ }
301
+ };
302
+ }
303
+
304
+ // src/cli/clack-prompt-adapter.ts
305
+ import * as clack from "@clack/prompts";
306
+ function handleCancel(result) {
307
+ if (clack.isCancel(result))
308
+ throw clack.cancel("Operation cancelled."), new UserCancellationError("Operation cancelled by user");
309
+ }
310
+ function createClackPrompt() {
311
+ return {
312
+ async confirm(message, initial) {
313
+ let result = await clack.confirm({
314
+ message,
315
+ initialValue: initial ?? !1
316
+ });
317
+ return handleCancel(result), result;
318
+ },
319
+ async select(message, choices, hint) {
320
+ let result = await clack.select({
321
+ message,
322
+ options: choices.map((c) => ({
323
+ label: c.title,
324
+ value: c.value,
325
+ ...c.description ? { hint: c.description } : {}
326
+ }))
327
+ });
328
+ return handleCancel(result), result;
329
+ },
330
+ async multiselect(message, choices, options) {
331
+ let result = await clack.multiselect({
332
+ message,
333
+ options: choices.map((c) => ({
334
+ label: c.title,
335
+ value: c.value,
336
+ ...c.description ? { hint: c.description } : {}
337
+ })),
338
+ required: options?.min ? options.min > 0 : !1
339
+ });
340
+ return handleCancel(result), result;
341
+ },
342
+ async groupMultiselect(message, groups) {
343
+ let result = await clack.groupMultiselect({
344
+ message,
345
+ options: groups
346
+ });
347
+ return handleCancel(result), result;
348
+ },
349
+ async text(message, options) {
350
+ let userValidate = options?.validate, isAsync = !1, syncValidate = userValidate ? (value) => {
351
+ let r = userValidate(value ?? "");
352
+ if (r && typeof r.then == "function") {
353
+ isAsync = !0;
354
+ return;
355
+ }
356
+ if (!(r === !0 || r === void 0))
357
+ return r;
358
+ } : void 0;
359
+ for (; ; ) {
360
+ let result = await clack.text({
361
+ message,
362
+ placeholder: options?.placeholder,
363
+ defaultValue: options?.initial,
364
+ validate: syncValidate
365
+ });
366
+ if (handleCancel(result), isAsync && userValidate) {
367
+ let asyncResult = await userValidate(result ?? "");
368
+ if (asyncResult !== !0 && asyncResult !== void 0) {
369
+ clack.log.error(asyncResult), isAsync = !1;
370
+ continue;
371
+ }
372
+ }
373
+ return result;
374
+ }
375
+ }
376
+ };
377
+ }
378
+
379
+ // src/cli/plain-prompt-adapter.ts
380
+ import prompts from "prompts";
381
+ function onCancel() {
382
+ throw new UserCancellationError("Prompt cancelled");
383
+ }
384
+ function createPlainPrompt() {
385
+ return {
386
+ // ── confirm ──────────────────────────────────────────────────────
387
+ async confirm(message, initial) {
388
+ let { value } = await prompts(
389
+ {
390
+ type: "confirm",
391
+ name: "value",
392
+ message,
393
+ initial: initial ?? !1
394
+ },
395
+ { onCancel }
396
+ );
397
+ return value;
398
+ },
399
+ // ── select ───────────────────────────────────────────────────────
400
+ async select(message, choices, hint) {
401
+ let { value } = await prompts(
402
+ {
403
+ type: "select",
404
+ name: "value",
405
+ message,
406
+ choices: choices.map((c) => ({
407
+ title: c.title,
408
+ value: c.value,
409
+ description: c.description
410
+ })),
411
+ hint
412
+ },
413
+ { onCancel }
414
+ );
415
+ return value;
416
+ },
417
+ // ── multiselect ──────────────────────────────────────────────────
418
+ async multiselect(message, choices, options) {
419
+ let { value } = await prompts(
420
+ {
421
+ type: "multiselect",
422
+ name: "value",
423
+ message,
424
+ choices: choices.map((c) => ({
425
+ title: c.title,
426
+ value: c.value,
427
+ description: c.description
428
+ })),
429
+ hint: options?.hint ?? "- Space: select/deselect, Enter: confirm",
430
+ min: options?.min
431
+ },
432
+ { onCancel }
433
+ );
434
+ return value;
435
+ },
436
+ // ── groupMultiselect ─────────────────────────────────────────────
437
+ async groupMultiselect(message, groups) {
438
+ let flatChoices = [];
439
+ for (let [groupLabel, items] of Object.entries(groups))
440
+ for (let item of items)
441
+ flatChoices.push({
442
+ title: `${groupLabel} / ${item.label}`,
443
+ value: item.value
444
+ });
445
+ let { value } = await prompts(
446
+ {
447
+ type: "multiselect",
448
+ name: "value",
449
+ message,
450
+ choices: flatChoices.map((c) => ({
451
+ title: c.title,
452
+ value: c.value
453
+ })),
454
+ hint: "- Space: select/deselect, Enter: confirm"
455
+ },
456
+ { onCancel }
457
+ );
458
+ return value;
459
+ },
460
+ // ── text ─────────────────────────────────────────────────────────
461
+ async text(message, options) {
462
+ let userValidate = options?.validate, isAsync = !1, syncValidate = userValidate ? (value) => {
463
+ let r = userValidate(value);
464
+ return r && typeof r.then == "function" ? (isAsync = !0, !0) : r === !0 || r === void 0 ? !0 : r;
465
+ } : void 0;
466
+ for (; ; ) {
467
+ let { value } = await prompts(
468
+ {
469
+ type: "text",
470
+ name: "value",
471
+ message,
472
+ initial: options?.initial,
473
+ validate: syncValidate
474
+ },
475
+ { onCancel }
476
+ ), result = value ?? "";
477
+ if (isAsync && userValidate) {
478
+ let asyncResult = await userValidate(result);
479
+ if (asyncResult !== !0 && asyncResult !== void 0) {
480
+ console.error(` Error: ${asyncResult}`), isAsync = !1;
481
+ continue;
482
+ }
483
+ }
484
+ return result;
485
+ }
486
+ }
487
+ };
488
+ }
489
+
490
+ // src/cli/clack-progress-adapter.ts
491
+ import { log as log3 } from "@clack/prompts";
492
+ function createClackProgress() {
493
+ return {
494
+ emit(event) {
495
+ switch (event.type) {
496
+ case "install:start":
497
+ log3.step(`Installing ${event.packages.length} package(s)`);
498
+ break;
499
+ case "install:resolve":
500
+ event.status === "failed" && log3.warn(`Failed to resolve ${event.package}${event.detail ? `: ${event.detail}` : ""}`);
501
+ break;
502
+ case "install:download":
503
+ event.status === "failed" && log3.warn(`Failed to download ${event.package}${event.detail ? `: ${event.detail}` : ""}`);
504
+ break;
505
+ case "install:extract":
506
+ event.status === "failed" && log3.warn(`Failed to extract ${event.package}${event.detail ? `: ${event.detail}` : ""}`);
507
+ break;
508
+ case "install:complete": {
509
+ let { installed, failed, skipped } = event.summary;
510
+ failed > 0 ? log3.warn(`Install complete: ${installed} installed, ${failed} failed, ${skipped} skipped`) : log3.info(`Install complete: ${installed} installed${skipped > 0 ? `, ${skipped} skipped` : ""}`);
511
+ break;
512
+ }
513
+ case "publish:start":
514
+ log3.step(`Publishing ${event.package}@${event.version}`);
515
+ break;
516
+ case "publish:upload":
517
+ event.status === "failed" && log3.warn(`Upload failed for ${event.package}${event.detail ? `: ${event.detail}` : ""}`);
518
+ break;
519
+ case "publish:complete":
520
+ event.success ? log3.info(`Published ${event.package}`) : log3.warn(`Failed to publish ${event.package}`);
521
+ break;
522
+ case "uninstall:start":
523
+ log3.step(`Uninstalling ${event.packages.length} package(s)`);
524
+ break;
525
+ case "uninstall:remove":
526
+ event.status === "failed" && log3.warn(`Failed to remove ${event.package}${event.detail ? `: ${event.detail}` : ""}`);
527
+ break;
528
+ case "uninstall:complete": {
529
+ let { removed, failed } = event.summary;
530
+ failed > 0 ? log3.warn(`Uninstall complete: ${removed} removed, ${failed} failed`) : log3.info(`Uninstall complete: ${removed} removed`);
531
+ break;
532
+ }
533
+ case "search:start":
534
+ break;
535
+ case "search:scanning":
536
+ break;
537
+ case "search:complete":
538
+ log3.info(`Found ${event.resultCount} result(s)`);
539
+ break;
540
+ case "pipeline:start":
541
+ log3.step(`${event.pipeline}${event.detail ? `: ${event.detail}` : ""}`);
542
+ break;
543
+ case "pipeline:step":
544
+ log3.info(`${event.step}${event.detail ? `: ${event.detail}` : ""}`);
545
+ break;
546
+ case "pipeline:complete":
547
+ event.success || log3.warn(`${event.pipeline} failed${event.detail ? `: ${event.detail}` : ""}`);
548
+ break;
549
+ }
550
+ },
551
+ log(level, message) {
552
+ switch (level) {
553
+ case "debug":
554
+ break;
555
+ case "info":
556
+ log3.info(message);
557
+ break;
558
+ case "warn":
559
+ log3.warn(message);
560
+ break;
561
+ case "error":
562
+ log3.error(message);
563
+ break;
564
+ }
565
+ }
566
+ };
567
+ }
568
+ function createPlainProgress() {
569
+ return {
570
+ emit(event) {
571
+ switch (event.type) {
572
+ case "install:complete":
573
+ console.log(`Installed: ${event.summary.installed}, failed: ${event.summary.failed}, skipped: ${event.summary.skipped}`);
574
+ break;
575
+ case "publish:complete":
576
+ console.log(`Publish ${event.package}: ${event.success ? "success" : "failed"}`);
577
+ break;
578
+ case "uninstall:complete":
579
+ console.log(`Removed: ${event.summary.removed}, failed: ${event.summary.failed}`);
580
+ break;
581
+ case "search:complete":
582
+ console.log(`Found ${event.resultCount} result(s)`);
583
+ break;
584
+ case "pipeline:complete":
585
+ event.success || console.log(`${event.pipeline} failed${event.detail ? `: ${event.detail}` : ""}`);
586
+ break;
587
+ default:
588
+ break;
589
+ }
590
+ },
591
+ log(level, message) {
592
+ switch (level) {
593
+ case "debug":
594
+ case "info":
595
+ break;
596
+ case "warn":
597
+ console.warn(message);
598
+ break;
599
+ case "error":
600
+ console.error(message);
601
+ break;
602
+ }
603
+ }
604
+ };
605
+ }
606
+
607
+ // src/cli/context.ts
608
+ var cachedClackOutput, cachedPlainOutput, cachedClackPrompt, cachedPlainPrompt, cachedClackProgress, cachedPlainProgress;
609
+ function detectInteractive() {
610
+ return process.stdin.isTTY === !0 && process.env.CI !== "true";
611
+ }
612
+ function applyOutputMode(ctx, mode, isTTY) {
613
+ ctx.outputMode = mode, mode === "rich" ? (ctx.output = cachedClackOutput ?? (cachedClackOutput = createClackOutput()), ctx.prompt = isTTY ? cachedClackPrompt ?? (cachedClackPrompt = createClackPrompt()) : nonInteractivePrompt, ctx.progress = cachedClackProgress ?? (cachedClackProgress = createClackProgress())) : (ctx.output = cachedPlainOutput ?? (cachedPlainOutput = createPlainOutput()), ctx.prompt = isTTY ? cachedPlainPrompt ?? (cachedPlainPrompt = createPlainPrompt()) : nonInteractivePrompt, ctx.progress = cachedPlainProgress ?? (cachedPlainProgress = createPlainProgress()));
614
+ }
615
+ async function createCliExecutionContext(options = {}) {
616
+ let ctx = await createExecutionContext(options), isTTY = detectInteractive(), initialMode = options.outputMode ?? "plain";
617
+ return applyOutputMode(ctx, initialMode, isTTY), ctx.commitOutputMode = (mode) => {
618
+ ctx.outputMode !== mode && applyOutputMode(ctx, mode, isTTY);
619
+ }, ctx;
620
+ }
621
+
622
+ export {
623
+ normalizePathWithTilde,
624
+ consoleOutput,
625
+ resolveOutput,
626
+ resolvePrompt,
627
+ createExecutionContext,
628
+ getDisplayTargetDir,
629
+ createCliExecutionContext
630
+ };
631
+ //# sourceMappingURL=chunk-BROJ6OUT.js.map