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,619 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getCurrentUsername
4
+ } from "./chunk-EGAP6GNA.js";
5
+ import {
6
+ resolveScopedNameForPushWithUserScope
7
+ } from "./chunk-37256POU.js";
8
+ import {
9
+ createHttpClient
10
+ } from "./chunk-ATYT3SA6.js";
11
+ import {
12
+ authManager
13
+ } from "./chunk-UR6VJWA3.js";
14
+ import "./chunk-S6OARUVQ.js";
15
+ import {
16
+ classifyPackageInput
17
+ } from "./chunk-4TCVCEPB.js";
18
+ import {
19
+ resolvePackageByName
20
+ } from "./chunk-E2DVTD75.js";
21
+ import {
22
+ createFormDataForUpload,
23
+ createTarballFromPackage,
24
+ formatVersionLabel
25
+ } from "./chunk-TFQ4JBVO.js";
26
+ import "./chunk-V5OW4YEB.js";
27
+ import "./chunk-PXL2RUMX.js";
28
+ import {
29
+ formatFileSize,
30
+ formatPathForDisplay
31
+ } from "./chunk-MIURCESJ.js";
32
+ import {
33
+ createCliExecutionContext,
34
+ resolveOutput,
35
+ resolvePrompt
36
+ } from "./chunk-RAKMX654.js";
37
+ import {
38
+ ensureRegistryDirectories,
39
+ getPackageVersionPath
40
+ } from "./chunk-XEPVYZO3.js";
41
+ import {
42
+ parsePackageYml,
43
+ serializePackageYml
44
+ } from "./chunk-QTQYI4L5.js";
45
+ import {
46
+ isScopedName
47
+ } from "./chunk-VN22A7NW.js";
48
+ import {
49
+ normalizePathForProcessing
50
+ } from "./chunk-YMKK4XPN.js";
51
+ import {
52
+ DIR_PATTERNS,
53
+ FILE_PATTERNS,
54
+ OPENPACKAGE_DIRS,
55
+ PACKAGE_PATHS
56
+ } from "./chunk-J4IFFBLP.js";
57
+ import {
58
+ countFilesInDirectory,
59
+ ensureDir,
60
+ exists,
61
+ readTextFile,
62
+ remove,
63
+ walkFiles,
64
+ writeTextFile
65
+ } from "./chunk-S47F4OG4.js";
66
+ import {
67
+ ValidationError
68
+ } from "./chunk-ID4SVDQZ.js";
69
+ import {
70
+ logger
71
+ } from "./chunk-5EFWGD33.js";
72
+
73
+ // ../core/src/core/publish/publish-pipeline.ts
74
+ import path2 from "path";
75
+ import * as semver2 from "semver";
76
+
77
+ // ../core/src/utils/package-copy.ts
78
+ import { join, relative, dirname } from "path";
79
+
80
+ // ../core/src/utils/package-filters.ts
81
+ var EXCLUDED_DIR_PREFIXES = [
82
+ OPENPACKAGE_DIRS.PACKAGES,
83
+ // Nested packages are independent units; never copy inline
84
+ // Note: .openpackage/ is excluded separately in the function below (entire directory is workspace-local metadata)
85
+ `${DIR_PATTERNS.OPENPACKAGE}/${OPENPACKAGE_DIRS.PACKAGES}`
86
+ // Legacy: kept for completeness, but covered by .openpackage/ exclusion in function
87
+ ], EXCLUDED_FILES = /* @__PURE__ */ new Set([FILE_PATTERNS.OPENPACKAGE_INDEX_YML]);
88
+ function isExcludedFromPackage(relativePath) {
89
+ let normalized = normalizePathForProcessing(relativePath);
90
+ if (!normalized || normalized === DIR_PATTERNS.OPENPACKAGE || normalized.startsWith(`${DIR_PATTERNS.OPENPACKAGE}/`))
91
+ return !0;
92
+ let baseName = normalized.split("/").pop();
93
+ return baseName && EXCLUDED_FILES.has(baseName) ? !0 : EXCLUDED_DIR_PREFIXES.some((prefix) => {
94
+ let normalizedPrefix = normalizePathForProcessing(prefix);
95
+ return normalized === normalizedPrefix || normalized.startsWith(`${normalizedPrefix}/`);
96
+ });
97
+ }
98
+
99
+ // ../core/src/utils/package-copy.ts
100
+ async function readPackageFilesForRegistry(packageDir) {
101
+ if (!await exists(packageDir))
102
+ return [];
103
+ let files = [];
104
+ for await (let fullPath of walkFiles(packageDir)) {
105
+ let relativePath = normalizePathForProcessing(relative(packageDir, fullPath));
106
+ if (isExcludedFromPackage(relativePath)) {
107
+ logger.debug(`Skipping static-excluded path: ${relativePath}`);
108
+ continue;
109
+ }
110
+ let content = await readTextFile(fullPath);
111
+ files.push({ path: relativePath, content, encoding: "utf8" });
112
+ }
113
+ return files;
114
+ }
115
+ async function writePackageFilesToDirectory(targetDir, files, options = {}) {
116
+ await ensureDir(targetDir);
117
+ let pathsToKeep = new Set(files.map((f) => normalizePathForProcessing(f.path)));
118
+ options.preserveIndexFile && pathsToKeep.add(FILE_PATTERNS.OPENPACKAGE_INDEX_YML), await removeStaleFiles(targetDir, pathsToKeep), await Promise.all(files.map((file) => writeFile(targetDir, file)));
119
+ }
120
+ async function removeStaleFiles(targetDir, pathsToKeep) {
121
+ if (await exists(targetDir))
122
+ for await (let fullPath of walkFiles(targetDir)) {
123
+ let relPath = normalizePathForProcessing(relative(targetDir, fullPath));
124
+ if (!pathsToKeep.has(relPath) && !isExcludedFromPackage(relPath))
125
+ try {
126
+ await remove(fullPath), logger.debug(`Removed stale file: ${relPath}`);
127
+ } catch (error) {
128
+ logger.warn(`Failed to remove stale file ${relPath}: ${error}`);
129
+ }
130
+ }
131
+ }
132
+ async function writeFile(targetDir, file) {
133
+ let targetPath = join(targetDir, file.path);
134
+ await ensureDir(dirname(targetPath)), await writeTextFile(targetPath, file.content, file.encoding ?? "utf8");
135
+ }
136
+
137
+ // ../core/src/core/publish/publish-errors.ts
138
+ var PublishError = class extends Error {
139
+ constructor(message, code) {
140
+ super(message);
141
+ this.code = code;
142
+ this.name = "PublishError";
143
+ }
144
+ };
145
+ function handlePublishError(error, packageName, version, output) {
146
+ let out = output ?? resolveOutput();
147
+ if (logger.debug("Publish operation failed", { error, packageName, version }), error instanceof PublishError)
148
+ return out.error(error.message), {
149
+ success: !1,
150
+ error: error.message
151
+ };
152
+ if (error instanceof Error) {
153
+ let message = error.message;
154
+ return message.includes("ENOENT") || message.includes("not found") ? (out.error("Package file not found"), {
155
+ success: !1,
156
+ error: "Package file not found"
157
+ }) : message.includes("authentication") || message.includes("unauthorized") ? (out.error('Authentication failed. Run "opkg login" to configure credentials.'), {
158
+ success: !1,
159
+ error: "Authentication failed"
160
+ }) : message.includes("network") || message.includes("ECONNREFUSED") ? (out.error("Network error: Unable to connect to registry"), {
161
+ success: !1,
162
+ error: "Network error"
163
+ }) : (out.error(message), {
164
+ success: !1,
165
+ error: message
166
+ });
167
+ }
168
+ let errorMessage = String(error);
169
+ return out.error(`Unexpected error: ${errorMessage}`), {
170
+ success: !1,
171
+ error: errorMessage
172
+ };
173
+ }
174
+
175
+ // ../core/src/core/publish/publish-output.ts
176
+ function logPublishSummary(packageName, profile, registryUrl, output) {
177
+ let out = output ?? resolveOutput();
178
+ out.step(`Publishing package '${packageName}'...`), out.message(`Profile: ${profile}`), out.message(`Registry: ${registryUrl}`);
179
+ }
180
+ function displayPublishSuccess(info, cwd, output) {
181
+ let out = output ?? resolveOutput(), { packageName, version, description, sourcePath, destinationPath, fileCount, isCustomOutput } = info;
182
+ out.success(`Published ${packageName}@${formatVersionLabel(version)}`), description && out.success(`Description: ${description}`);
183
+ let displaySource = formatPathForDisplay(sourcePath, cwd);
184
+ out.success(`Source: ${displaySource}`);
185
+ let displayDestination = formatPathForDisplay(destinationPath, cwd), destinationType = isCustomOutput ? "Custom output" : "Registry";
186
+ out.success(`${destinationType}: ${displayDestination}`), out.success(`Files: ${fileCount}`);
187
+ }
188
+ function createPublishResultInfo(packageName, version, sourcePath, destinationPath, fileCount, manifest, isCustomOutput, destinationExists, existingFileCount) {
189
+ return {
190
+ packageName,
191
+ version,
192
+ description: manifest.description,
193
+ sourcePath,
194
+ destinationPath,
195
+ fileCount,
196
+ isCustomOutput,
197
+ destinationExists,
198
+ existingFileCount
199
+ };
200
+ }
201
+
202
+ // ../core/src/core/publish/publish-upload.ts
203
+ function preparePackageForUpload(pkg, uploadName) {
204
+ if (pkg.metadata.name === uploadName)
205
+ return pkg;
206
+ let manifestPath = normalizePathForProcessing(PACKAGE_PATHS.MANIFEST_RELATIVE), updatedMetadata = { ...pkg.metadata, name: uploadName }, manifestUpdated = !1, updatedFiles = pkg.files.map((file) => {
207
+ if (normalizePathForProcessing(file.path) === manifestPath) {
208
+ manifestUpdated = !0;
209
+ let content = serializePackageYml(updatedMetadata);
210
+ return { ...file, content };
211
+ }
212
+ return file;
213
+ });
214
+ if (!manifestUpdated)
215
+ throw new Error("openpackage.yml not found in package files");
216
+ return {
217
+ metadata: updatedMetadata,
218
+ files: updatedFiles
219
+ };
220
+ }
221
+ async function createPublishTarball(pkg, output) {
222
+ let out = output ?? resolveOutput(), tarballInfo = await createTarballFromPackage(pkg);
223
+ return out.success(`Created tarball (${pkg.files.length} files, ${formatFileSize(tarballInfo.size)})`), tarballInfo;
224
+ }
225
+ async function uploadPackage(httpClient, packageName, uploadVersion, tarballInfo, output, stopMessage) {
226
+ let out = output ?? resolveOutput(), formData = createFormDataForUpload(packageName, uploadVersion, tarballInfo), uploadSpinner = out.spinner();
227
+ return withSpinner(
228
+ uploadSpinner,
229
+ "Uploading to registry...",
230
+ () => httpClient.uploadFormData("/packages/push", formData),
231
+ stopMessage
232
+ );
233
+ }
234
+ async function withSpinner(spinner, message, fn, stopMessage) {
235
+ spinner.start(message);
236
+ try {
237
+ return await fn();
238
+ } finally {
239
+ spinner.stop(stopMessage);
240
+ }
241
+ }
242
+
243
+ // ../core/src/core/publish/local-publish-pipeline.ts
244
+ import path from "path";
245
+
246
+ // ../core/src/utils/validation/version.ts
247
+ import * as semver from "semver";
248
+ function validateVersion(version, options = {}) {
249
+ return version ? semver.valid(version) ? options.rejectPrerelease && semver.prerelease(version) ? {
250
+ code: "PRERELEASE_DISALLOWED",
251
+ message: `Prerelease versions are not allowed${options.context ? ` for ${options.context}` : ""}: ${version}`
252
+ } : null : {
253
+ code: "INVALID_VERSION",
254
+ message: `Invalid version: ${version}. Must be valid semver (e.g., 1.0.0)`
255
+ } : {
256
+ code: "MISSING_VERSION",
257
+ message: `Version field is required${options.context ? ` for ${options.context}` : ""}`
258
+ };
259
+ }
260
+ function assertValidVersion(version, options) {
261
+ let error = validateVersion(version, options);
262
+ if (error)
263
+ throw new Error(error.message);
264
+ }
265
+ function isUnversionedPackage(version) {
266
+ return version === "0.0.0";
267
+ }
268
+
269
+ // ../core/src/utils/validation/package-files.ts
270
+ async function validateAndReadPackageFiles(packageRoot, options = {}) {
271
+ let files = await readPackageFilesForRegistry(packageRoot), throwOnEmpty = options.throwOnEmpty !== !1;
272
+ if (files.length === 0 && throwOnEmpty) {
273
+ let context = options.context || "package";
274
+ throw new Error(`No files found to include in ${context}`);
275
+ }
276
+ return files;
277
+ }
278
+
279
+ // ../core/src/core/registry-writer.ts
280
+ async function writePackageToRegistry(packageName, version, files, options = {}, output, prompt) {
281
+ let { force = !1, dryRun = !1, context = "operation" } = options, out = output ?? resolveOutput(), prm = prompt ?? resolvePrompt(), destination = getPackageVersionPath(packageName, version), destinationExists = await exists(destination), existingFileCount = destinationExists ? await countFilesInDirectory(destination) : 0, shouldOverwrite = !0;
282
+ if (destinationExists)
283
+ if (isUnversionedPackage(version))
284
+ logger.debug(
285
+ `Updating unversioned package ${packageName}@${version}`,
286
+ { destination, existingFileCount }
287
+ ), out.success(`Updated ${packageName}@${version}`);
288
+ else if (force)
289
+ logger.info(
290
+ `Force mode: Overwriting ${packageName}@${version}`,
291
+ { destination, existingFileCount }
292
+ ), out.warn(
293
+ `Force mode: Overwriting ${packageName}@${version} (${existingFileCount} existing file${existingFileCount !== 1 ? "s" : ""})`
294
+ );
295
+ else
296
+ try {
297
+ let displayPath = formatPathForDisplay(destination, process.cwd());
298
+ if (out.info(""), out.warn(`Package '${packageName}@${version}' already exists in registry`), out.info(` Location: ${displayPath}`), out.info(` Existing files: ${existingFileCount}`), out.info(""), shouldOverwrite = await prm.confirm(
299
+ `Overwrite '${packageName}@${version}'? This action cannot be undone.`,
300
+ !1
301
+ ), !shouldOverwrite)
302
+ throw new Error(`${context} cancelled by user`);
303
+ } catch (promptError) {
304
+ if (promptError.name === "NonInteractivePromptError") {
305
+ let displayPath = formatPathForDisplay(destination, process.cwd());
306
+ throw new Error(
307
+ `Package ${packageName}@${version} already exists in registry (${displayPath}).
308
+ Use --force to overwrite, or update the version in openpackage.yml.`
309
+ );
310
+ }
311
+ throw promptError;
312
+ }
313
+ return dryRun ? {
314
+ destination,
315
+ fileCount: files.length,
316
+ overwritten: destinationExists
317
+ } : (await ensureRegistryDirectories(), destinationExists && await remove(destination), await writePackageFilesToDirectory(destination, files), logger.info(`Wrote ${packageName}@${version} to registry`, {
318
+ destination,
319
+ fileCount: files.length,
320
+ context
321
+ }), {
322
+ destination,
323
+ fileCount: files.length,
324
+ overwritten: destinationExists
325
+ });
326
+ }
327
+
328
+ // ../core/src/core/publish/local-publish-pipeline.ts
329
+ async function resolveSource(cwd, packageInput, output) {
330
+ if (!packageInput) {
331
+ let manifestPath2 = path.join(cwd, FILE_PATTERNS.OPENPACKAGE_YML);
332
+ if (!await exists(manifestPath2))
333
+ throw new Error("No openpackage.yml found in current directory; specify a package name or run inside a package root.");
334
+ let manifest2 = await parsePackageYml(manifestPath2);
335
+ return {
336
+ name: manifest2.name,
337
+ version: manifest2.version ?? "",
338
+ packageRoot: cwd,
339
+ manifest: manifest2
340
+ };
341
+ }
342
+ let classification = await classifyPackageInput(packageInput, cwd), packageRoot;
343
+ if (classification.type === "directory")
344
+ packageRoot = classification.resolvedPath, logger.info("Resolved package input as directory path", { path: packageRoot });
345
+ else {
346
+ if (classification.type === "tarball")
347
+ throw new ValidationError(
348
+ `Local publish does not support tarball inputs.
349
+ To publish from a tarball, first extract it to a directory.`
350
+ );
351
+ if (classification.type === "git")
352
+ throw new ValidationError(
353
+ `Local publish does not support git inputs.
354
+ To publish from a git repository, first clone it to a directory.`
355
+ );
356
+ {
357
+ let resolution = await resolvePackageByName({
358
+ cwd,
359
+ packageName: packageInput,
360
+ checkCwd: !0,
361
+ // Check if CWD is the package (highest priority)
362
+ searchWorkspace: !0,
363
+ // Search workspace packages
364
+ searchGlobal: !0,
365
+ // Search global packages
366
+ searchRegistry: !1
367
+ // Skip registry (already packed/immutable)
368
+ });
369
+ if (!resolution.found || !resolution.path)
370
+ throw new Error(
371
+ `Package '${packageInput}' not found.
372
+ Searched: current directory, workspace packages (.openpackage/packages/), and global packages (~/.openpackage/packages/).
373
+ Make sure the package exists in one of these locations.`
374
+ );
375
+ if (packageRoot = resolution.path, resolution.resolutionInfo) {
376
+ let { selected, reason } = resolution.resolutionInfo;
377
+ logger.info("Resolved package for publishing", {
378
+ packageInput,
379
+ selectedSource: selected.type,
380
+ version: selected.version,
381
+ path: selected.path,
382
+ reason
383
+ });
384
+ let sourceLabel = selected.type === "cwd" ? "current directory" : selected.type === "workspace" ? "workspace packages" : selected.type === "global" ? "global packages" : selected.type;
385
+ (output ?? resolveOutput()).success(`Found ${packageInput} in ${sourceLabel}`);
386
+ }
387
+ }
388
+ }
389
+ let manifestPath = path.join(packageRoot, FILE_PATTERNS.OPENPACKAGE_YML);
390
+ if (!await exists(manifestPath))
391
+ throw new Error(`openpackage.yml not found at ${manifestPath}`);
392
+ let manifest = await parsePackageYml(manifestPath);
393
+ return {
394
+ name: manifest.name,
395
+ version: manifest.version ?? "",
396
+ packageRoot,
397
+ manifest
398
+ };
399
+ }
400
+ async function runLocalPublishPipeline(packageInput, options, output, prompt) {
401
+ let out = output ?? resolveOutput(), cwd = process.cwd();
402
+ try {
403
+ let source = await resolveSource(cwd, packageInput, output), packageName = source.name, version = source.version, publishVersion = version;
404
+ !version || version.trim() === "" ? (publishVersion = "0.0.0", out.info("No version specified, using 0.0.0 for local publish"), logger.info("Auto-assigned version 0.0.0 for unversioned package", { packageName })) : assertValidVersion(version, {
405
+ rejectPrerelease: !0,
406
+ context: "local publish"
407
+ }), logger.info(`Publishing package '${packageName}' to local registry`, {
408
+ source: source.packageRoot,
409
+ version: publishVersion
410
+ });
411
+ let files = await validateAndReadPackageFiles(source.packageRoot, {
412
+ context: "publish"
413
+ }), result = await writePackageToRegistry(
414
+ packageName,
415
+ publishVersion,
416
+ files,
417
+ {
418
+ force: options.force,
419
+ context: "publish"
420
+ },
421
+ output,
422
+ prompt
423
+ ), resultInfo = createPublishResultInfo(
424
+ packageName,
425
+ publishVersion,
426
+ source.packageRoot,
427
+ result.destination,
428
+ result.fileCount,
429
+ source.manifest,
430
+ !1,
431
+ // isCustomOutput
432
+ result.overwritten,
433
+ result.overwritten ? result.fileCount : 0
434
+ );
435
+ return displayPublishSuccess(resultInfo, cwd), {
436
+ success: !0,
437
+ data: {
438
+ packageName,
439
+ version: publishVersion,
440
+ sourcePath: source.packageRoot,
441
+ destination: result.destination,
442
+ fileCount: result.fileCount,
443
+ overwritten: result.overwritten
444
+ }
445
+ };
446
+ } catch (error) {
447
+ let message = error instanceof Error ? error.message : String(error);
448
+ return logger.debug("Local publish failed", { error: message, cwd }), {
449
+ success: !1,
450
+ error: message
451
+ };
452
+ }
453
+ }
454
+
455
+ // ../core/src/core/publish/publish-pipeline.ts
456
+ async function runPublishPipeline(packageInput, options, ctx) {
457
+ let output = resolveOutput(ctx), prompt = resolvePrompt(ctx);
458
+ return options.local ? await runLocalPublishPipeline(packageInput, options, output, prompt) : await runRemotePublishPipeline(packageInput, options, output, prompt);
459
+ }
460
+ async function resolveSource2(cwd, packageInput, output) {
461
+ if (!packageInput) {
462
+ let manifestPath2 = path2.join(cwd, FILE_PATTERNS.OPENPACKAGE_YML);
463
+ if (!await exists(manifestPath2))
464
+ throw new Error("No openpackage.yml found in current directory; specify a package name or run inside a package root.");
465
+ let manifest2 = await parsePackageYml(manifestPath2);
466
+ return {
467
+ name: manifest2.name,
468
+ version: manifest2.version ?? "",
469
+ packageRoot: cwd,
470
+ manifest: manifest2
471
+ };
472
+ }
473
+ let classification = await classifyPackageInput(packageInput, cwd), packageRoot;
474
+ if (classification.type === "directory")
475
+ packageRoot = classification.resolvedPath, logger.info("Resolved package input as directory path", { path: packageRoot });
476
+ else {
477
+ if (classification.type === "tarball")
478
+ throw new ValidationError(
479
+ `Remote publish does not support tarball inputs.
480
+ To publish from a tarball, first extract it to a directory, or use local publish mode.`
481
+ );
482
+ if (classification.type === "git")
483
+ throw new ValidationError(
484
+ `Remote publish does not support git inputs.
485
+ To publish from a git repository, first clone it to a directory.`
486
+ );
487
+ {
488
+ let resolution = await resolvePackageByName({
489
+ cwd,
490
+ packageName: packageInput,
491
+ checkCwd: !0,
492
+ // Check if CWD is the package (highest priority)
493
+ searchWorkspace: !0,
494
+ // Search workspace packages
495
+ searchGlobal: !0,
496
+ // Search global packages
497
+ searchRegistry: !1
498
+ // Skip registry (already published/immutable)
499
+ });
500
+ if (!resolution.found || !resolution.path)
501
+ throw new Error(
502
+ `Package '${packageInput}' not found.
503
+ Searched: current directory, workspace packages (.openpackage/packages/), and global packages (~/.openpackage/packages/).
504
+ Make sure the package exists in one of these locations.`
505
+ );
506
+ if (packageRoot = resolution.path, resolution.resolutionInfo) {
507
+ let { selected, reason } = resolution.resolutionInfo;
508
+ logger.info("Resolved package for publishing", {
509
+ packageInput,
510
+ selectedSource: selected.type,
511
+ version: selected.version,
512
+ path: selected.path,
513
+ reason
514
+ });
515
+ let sourceLabel = selected.type === "cwd" ? "current directory" : selected.type === "workspace" ? "workspace packages" : selected.type === "global" ? "global packages" : selected.type;
516
+ output && output.success(`Found ${packageInput} in ${sourceLabel}`);
517
+ }
518
+ }
519
+ }
520
+ let manifestPath = path2.join(packageRoot, FILE_PATTERNS.OPENPACKAGE_YML);
521
+ if (!await exists(manifestPath))
522
+ throw new Error(`openpackage.yml not found at ${manifestPath}`);
523
+ let manifest = await parsePackageYml(manifestPath);
524
+ return {
525
+ name: manifest.name,
526
+ version: manifest.version ?? "",
527
+ packageRoot,
528
+ manifest
529
+ };
530
+ }
531
+ async function resolveUploadName(packageName, authOptions, prompt) {
532
+ if (isScopedName(packageName))
533
+ return packageName;
534
+ let username = await getCurrentUsername(authOptions);
535
+ return await resolveScopedNameForPushWithUserScope(packageName, username, authOptions.profile, prompt);
536
+ }
537
+ function validateVersionIfPresent(version) {
538
+ if (version) {
539
+ if (!semver2.valid(version))
540
+ throw new PublishError(
541
+ `Invalid version: ${version}. Provide a valid semver version.`,
542
+ "INVALID_VERSION"
543
+ );
544
+ if (semver2.prerelease(version))
545
+ throw new PublishError(
546
+ `Prerelease versions cannot be published: ${version}`,
547
+ "PRERELEASE_DISALLOWED"
548
+ );
549
+ }
550
+ }
551
+ async function runRemotePublishPipeline(packageInput, options, output, prompt) {
552
+ let out = output ?? resolveOutput(), cwd = process.cwd(), uploadPackageName, version;
553
+ try {
554
+ let source = await resolveSource2(cwd, packageInput, output);
555
+ if (!source.name)
556
+ throw new PublishError(
557
+ "openpackage.yml must contain a name field",
558
+ "MISSING_NAME"
559
+ );
560
+ validateVersionIfPresent(source.version), version = source.version || void 0, logger.info(`Publishing package '${source.name}' from ${source.packageRoot}`, {
561
+ packageRoot: source.packageRoot,
562
+ version
563
+ }), await authManager.validateAuth(options), uploadPackageName = await resolveUploadName(source.name, options, prompt);
564
+ let files = await readPackageFilesForRegistry(source.packageRoot);
565
+ if (files.length === 0)
566
+ throw new PublishError("No package files found to publish", "NO_FILES");
567
+ let pkg = {
568
+ metadata: source.manifest,
569
+ files
570
+ }, uploadPkg = preparePackageForUpload(pkg, uploadPackageName), httpClient = await createHttpClient(options), registryUrl = authManager.getRegistryUrl(), profile = authManager.getCurrentProfile(options);
571
+ logPublishSummary(uploadPackageName, profile, registryUrl, out);
572
+ let tarballInfo = await createPublishTarball(uploadPkg, out), versionSuffix = version ? `@${version}` : "", publishedMessage = `Published ${source.name}${versionSuffix} to remote registry`, response = await uploadPackage(httpClient, uploadPackageName, version, tarballInfo, out, publishedMessage);
573
+ return printPublishSuccessEnhanced(
574
+ response,
575
+ tarballInfo,
576
+ registryUrl,
577
+ profile,
578
+ source,
579
+ files.length,
580
+ cwd,
581
+ out
582
+ ), {
583
+ success: !0,
584
+ data: {
585
+ packageName: response.package.name,
586
+ version: response.version.version ?? version ?? "",
587
+ size: tarballInfo.size,
588
+ checksum: tarballInfo.checksum,
589
+ registry: registryUrl,
590
+ profile,
591
+ message: response.message
592
+ }
593
+ };
594
+ } catch (error) {
595
+ return handlePublishError(error, uploadPackageName, version);
596
+ }
597
+ }
598
+ function printPublishSuccessEnhanced(response, tarballInfo, registryUrl, profile, source, fileCount, cwd, out) {
599
+ source.manifest.description && out.message(`Description: ${source.manifest.description}`);
600
+ let displaySource = formatPathForDisplay(source.packageRoot, cwd);
601
+ out.message(`Source: ${displaySource}`), out.message(`Registry: ${registryUrl}`), out.message(`Profile: ${profile}`), out.message(`Files: ${fileCount}`);
602
+ let formatFileSize2 = (bytes) => {
603
+ let kb = bytes / 1024;
604
+ return kb < 1024 ? `${kb.toFixed(1)} KB` : `${(kb / 1024).toFixed(1)} MB`;
605
+ };
606
+ out.message(`Size: ${formatFileSize2(tarballInfo.size)}`), out.message(`Checksum: ${tarballInfo.checksum.substring(0, 12)}...`), response.message && out.message(`
607
+ ${response.message}`);
608
+ }
609
+
610
+ // src/commands/publish.ts
611
+ async function setupPublishCommand(args) {
612
+ let [packageInput, options] = args, ctx = await createCliExecutionContext(), result = await runPublishPipeline(packageInput, options, ctx);
613
+ if (!result.success)
614
+ throw new Error(result.error || "Publish operation failed");
615
+ }
616
+ export {
617
+ setupPublishCommand
618
+ };
619
+ //# sourceMappingURL=publish-RULKLNUX.js.map