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,327 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ deriveResourceFullName,
4
+ detectEntityType,
5
+ dim,
6
+ getEntityDisplayName,
7
+ printDepsView,
8
+ printResourcesView,
9
+ runListPipeline
10
+ } from "./chunk-7KEAKEVZ.js";
11
+ import "./chunk-ABFUD25D.js";
12
+ import "./chunk-YXLKLL3V.js";
13
+ import {
14
+ RESOURCE_TYPE_ORDER_PLURAL,
15
+ normalizeType,
16
+ toPluralKey
17
+ } from "./chunk-2PMMVTRN.js";
18
+ import "./chunk-SHKYQQJJ.js";
19
+ import "./chunk-GP5FJYSS.js";
20
+ import {
21
+ getLocalPackageYmlPath
22
+ } from "./chunk-BCYZDID6.js";
23
+ import "./chunk-6YZNE3MU.js";
24
+ import {
25
+ parseWorkspaceScope
26
+ } from "./chunk-5HSDD3SL.js";
27
+ import {
28
+ resolveDeclaredPath
29
+ } from "./chunk-FRYA3JAQ.js";
30
+ import {
31
+ formatPathForDisplay
32
+ } from "./chunk-MIURCESJ.js";
33
+ import {
34
+ createCliExecutionContext,
35
+ getDisplayTargetDir
36
+ } from "./chunk-RAKMX654.js";
37
+ import "./chunk-XEPVYZO3.js";
38
+ import {
39
+ parsePackageYml
40
+ } from "./chunk-QTQYI4L5.js";
41
+ import "./chunk-VN22A7NW.js";
42
+ import "./chunk-UDAWJRKD.js";
43
+ import "./chunk-GKEHDSL4.js";
44
+ import "./chunk-YMKK4XPN.js";
45
+ import "./chunk-J4IFFBLP.js";
46
+ import "./chunk-S47F4OG4.js";
47
+ import {
48
+ ValidationError
49
+ } from "./chunk-ID4SVDQZ.js";
50
+ import {
51
+ logger
52
+ } from "./chunk-5EFWGD33.js";
53
+
54
+ // ../core/src/core/list/scope-data-collector.ts
55
+ async function runScopeList(packageName, execContext, options) {
56
+ let skipLocal = options.remote && !!packageName, packages = [], tree = [], data;
57
+ if (!skipLocal) {
58
+ let result = await runListPipeline(packageName, execContext, {
59
+ includeFiles: options.files || !!packageName,
60
+ all: options.all,
61
+ tracked: options.tracked,
62
+ untracked: options.untracked,
63
+ platforms: options.platforms
64
+ });
65
+ packages = result.data?.packages ?? [], tree = result.data?.tree ?? [], data = result.data;
66
+ }
67
+ let hasUntrackedData = data?.untrackedFiles && data.untrackedFiles.totalFiles > 0;
68
+ if (packageName && packages.length === 0 || !data || packages.length === 0 && !hasUntrackedData && !packageName)
69
+ return null;
70
+ let headerName = "Unnamed", headerVersion, headerPath, headerType;
71
+ if (packageName && data.targetPackage) {
72
+ let targetPkg = data.targetPackage, absolutePath = resolveDeclaredPath(targetPkg.path, execContext.targetDir).absolute;
73
+ headerType = await detectEntityType(absolutePath), headerName = await getEntityDisplayName(absolutePath, targetPkg.name), headerVersion = targetPkg.version, headerPath = formatPathForDisplay(absolutePath);
74
+ } else {
75
+ headerPath = getDisplayTargetDir(execContext), headerType = await detectEntityType(execContext.targetDir);
76
+ let manifestPath = getLocalPackageYmlPath(execContext.targetDir);
77
+ try {
78
+ let manifest = await parsePackageYml(manifestPath);
79
+ headerName = manifest.name || "Unnamed", headerVersion = manifest.version;
80
+ } catch (error) {
81
+ logger.debug(`Failed to read workspace manifest: ${error}`);
82
+ }
83
+ }
84
+ return { headerName, headerVersion, headerPath, headerType, tree, data };
85
+ }
86
+ async function collectScopedData(packageName, options, createContext) {
87
+ let results = [];
88
+ if (options.showProject) {
89
+ let projectContext = await createContext({
90
+ global: !1,
91
+ cwd: options.cwd
92
+ });
93
+ try {
94
+ let projectResult = await runScopeList(packageName, projectContext, options.pipelineOptions);
95
+ projectResult && results.push({ scope: "project", result: projectResult });
96
+ } catch (error) {
97
+ logger.debug(`Failed to list project scope${packageName ? ` for package '${packageName}'` : ""}: ${error}`);
98
+ }
99
+ }
100
+ if (options.showGlobal) {
101
+ let globalContext = await createContext({
102
+ global: !0,
103
+ cwd: options.cwd
104
+ });
105
+ try {
106
+ let globalResult = await runScopeList(packageName, globalContext, options.pipelineOptions);
107
+ globalResult && results.push({ scope: "global", result: globalResult });
108
+ } catch (error) {
109
+ logger.debug(`Failed to list global scope${packageName ? ` for package '${packageName}'` : ""}: ${error}`);
110
+ }
111
+ }
112
+ return results;
113
+ }
114
+ function normalizeCategory(category) {
115
+ return toPluralKey(normalizeType(category));
116
+ }
117
+ function calculateResourceStatus(files) {
118
+ if (files.length === 0) return "untracked";
119
+ let hasTracked = files.some((f) => f.status === "tracked"), hasUntracked = files.some((f) => f.status === "untracked"), hasMissing = files.some((f) => f.status === "missing");
120
+ return hasUntracked && !hasTracked && !hasMissing ? "untracked" : hasTracked && !hasUntracked && !hasMissing ? "tracked" : hasTracked && hasMissing && !hasUntracked ? "partial" : "mixed";
121
+ }
122
+ function mergeTrackedAndUntrackedResources(tree, untrackedFiles, scope) {
123
+ let typeMap = /* @__PURE__ */ new Map();
124
+ function collectFromNode(node) {
125
+ if (node.report.resourceGroups)
126
+ for (let group of node.report.resourceGroups) {
127
+ typeMap.has(group.resourceType) || typeMap.set(group.resourceType, /* @__PURE__ */ new Map());
128
+ let resourcesMap = typeMap.get(group.resourceType);
129
+ for (let resource of group.resources) {
130
+ let pkgName = node.report.name;
131
+ if (resourcesMap.has(resource.name)) {
132
+ let existing = resourcesMap.get(resource.name);
133
+ existing.packages || (existing.packages = /* @__PURE__ */ new Set()), existing.packages.add(pkgName);
134
+ } else {
135
+ let enhancedFiles = resource.files.map((f) => ({
136
+ ...f,
137
+ status: f.exists ? "tracked" : "missing",
138
+ scope
139
+ }));
140
+ resourcesMap.set(resource.name, {
141
+ name: resource.name,
142
+ resourceType: resource.resourceType,
143
+ files: enhancedFiles,
144
+ status: "tracked",
145
+ scopes: /* @__PURE__ */ new Set([scope]),
146
+ packages: /* @__PURE__ */ new Set([pkgName])
147
+ });
148
+ }
149
+ }
150
+ }
151
+ node.children.forEach(collectFromNode);
152
+ }
153
+ if (tree.forEach(collectFromNode), untrackedFiles && untrackedFiles.files.length > 0)
154
+ for (let file of untrackedFiles.files) {
155
+ let singularType = normalizeType(file.category), fullName = deriveResourceFullName(file.workspacePath, singularType), normalizedType = normalizeCategory(file.category);
156
+ typeMap.has(normalizedType) || typeMap.set(normalizedType, /* @__PURE__ */ new Map());
157
+ let resourcesMap = typeMap.get(normalizedType), enhancedFile = {
158
+ source: file.workspacePath,
159
+ target: file.workspacePath,
160
+ exists: !0,
161
+ status: "untracked",
162
+ scope
163
+ };
164
+ resourcesMap.has(fullName) ? resourcesMap.get(fullName).files.push(enhancedFile) : resourcesMap.set(fullName, {
165
+ name: fullName,
166
+ resourceType: normalizedType,
167
+ files: [enhancedFile],
168
+ status: "untracked",
169
+ scopes: /* @__PURE__ */ new Set([scope])
170
+ // no packages for untracked resources
171
+ });
172
+ }
173
+ for (let resourcesMap of typeMap.values())
174
+ for (let resource of resourcesMap.values())
175
+ resource.status = calculateResourceStatus(resource.files);
176
+ let groups = [];
177
+ for (let type of RESOURCE_TYPE_ORDER_PLURAL) {
178
+ let resourcesMap = typeMap.get(type);
179
+ if (resourcesMap && resourcesMap.size > 0) {
180
+ let resources = Array.from(resourcesMap.values()).sort((a, b) => a.name.localeCompare(b.name));
181
+ groups.push({ resourceType: type, resources });
182
+ }
183
+ }
184
+ for (let [type, resourcesMap] of typeMap) {
185
+ if (RESOURCE_TYPE_ORDER_PLURAL.includes(type)) continue;
186
+ let resources = Array.from(resourcesMap.values()).sort((a, b) => a.name.localeCompare(b.name));
187
+ groups.push({ resourceType: type, resources });
188
+ }
189
+ return groups;
190
+ }
191
+ function mergeResourcesAcrossScopes(scopedResources) {
192
+ let typeMap = /* @__PURE__ */ new Map();
193
+ for (let { scope, groups: groups2 } of scopedResources)
194
+ for (let group of groups2) {
195
+ typeMap.has(group.resourceType) || typeMap.set(group.resourceType, /* @__PURE__ */ new Map());
196
+ let resourcesMap = typeMap.get(group.resourceType);
197
+ for (let resource of group.resources)
198
+ if (!resourcesMap.has(resource.name))
199
+ resourcesMap.set(resource.name, {
200
+ ...resource,
201
+ scopes: /* @__PURE__ */ new Set([scope]),
202
+ files: [...resource.files],
203
+ packages: resource.packages ? new Set(resource.packages) : void 0
204
+ });
205
+ else {
206
+ let existing = resourcesMap.get(resource.name);
207
+ if (existing.scopes.add(scope), existing.files.push(...resource.files), existing.status = calculateResourceStatus(existing.files), resource.packages) {
208
+ existing.packages = existing.packages ?? /* @__PURE__ */ new Set();
209
+ for (let pkg of resource.packages)
210
+ existing.packages.add(pkg);
211
+ }
212
+ }
213
+ }
214
+ let groups = [];
215
+ for (let type of RESOURCE_TYPE_ORDER_PLURAL) {
216
+ let resourcesMap = typeMap.get(type);
217
+ if (resourcesMap && resourcesMap.size > 0) {
218
+ let resources = Array.from(resourcesMap.values()).sort((a, b) => a.name.localeCompare(b.name));
219
+ groups.push({ resourceType: type, resources });
220
+ }
221
+ }
222
+ for (let [type, resourcesMap] of typeMap) {
223
+ if (RESOURCE_TYPE_ORDER_PLURAL.includes(type)) continue;
224
+ let resources = Array.from(resourcesMap.values()).sort((a, b) => a.name.localeCompare(b.name));
225
+ groups.push({ resourceType: type, resources });
226
+ }
227
+ return groups;
228
+ }
229
+ async function resolveWorkspaceHeader(execContext) {
230
+ let workspacePath = getDisplayTargetDir(execContext), manifestPath = getLocalPackageYmlPath(execContext.targetDir), name = "Unnamed", version;
231
+ try {
232
+ let manifest = await parsePackageYml(manifestPath);
233
+ name = manifest.name || "Unnamed", version = manifest.version;
234
+ } catch {
235
+ }
236
+ let headerType = await detectEntityType(execContext.targetDir);
237
+ return { name, version, path: workspacePath, type: headerType };
238
+ }
239
+
240
+ // src/commands/list.ts
241
+ async function listCommand(packageName, options, command) {
242
+ let programOpts = command.parent?.opts() || {};
243
+ if (options.tracked && options.untracked)
244
+ throw new ValidationError("Cannot use --tracked and --untracked together.");
245
+ if (packageName && options.untracked)
246
+ throw new ValidationError("Cannot use --untracked with a specific package.");
247
+ if (options.deps && options.untracked)
248
+ throw new ValidationError("Cannot use --deps with --untracked.");
249
+ let showProject, showGlobal;
250
+ if (options.scope)
251
+ try {
252
+ let scope = parseWorkspaceScope(options.scope);
253
+ showProject = scope === "project", showGlobal = scope === "global";
254
+ } catch (error) {
255
+ throw error instanceof ValidationError ? error : new ValidationError(error instanceof Error ? error.message : String(error));
256
+ }
257
+ else
258
+ showProject = !0, showGlobal = !0;
259
+ let results = await collectScopedData(
260
+ packageName,
261
+ {
262
+ showProject,
263
+ showGlobal,
264
+ pipelineOptions: {
265
+ files: options.files,
266
+ all: !0,
267
+ // Always build full tree: deps view needs it for display, resources view needs it to collect from transitive deps
268
+ tracked: options.tracked,
269
+ untracked: options.untracked,
270
+ platforms: options.platforms
271
+ },
272
+ cwd: programOpts.cwd
273
+ },
274
+ (opts) => createCliExecutionContext({ global: opts.global, cwd: opts.cwd })
275
+ );
276
+ if (results.length === 0)
277
+ return packageName ? console.log(dim(`Package '${packageName}' is not installed.`)) : options.deps ? console.log(dim("No packages installed.")) : console.log(dim("No resources found.")), { success: !0 };
278
+ let listHeaderInfo;
279
+ if (packageName) {
280
+ let firstResult = results[0].result, targetPkg = firstResult.data.targetPackage;
281
+ listHeaderInfo = targetPkg ? {
282
+ name: targetPkg.name,
283
+ version: targetPkg.version !== "0.0.0" ? targetPkg.version : void 0,
284
+ path: firstResult.headerPath,
285
+ type: firstResult.headerType
286
+ } : {
287
+ name: packageName,
288
+ version: void 0,
289
+ path: firstResult.headerPath,
290
+ type: firstResult.headerType
291
+ };
292
+ } else if (showProject) {
293
+ let projectContext = await createCliExecutionContext({
294
+ global: !1,
295
+ cwd: programOpts.cwd
296
+ });
297
+ listHeaderInfo = await resolveWorkspaceHeader(projectContext);
298
+ } else
299
+ listHeaderInfo = results.length > 0 ? {
300
+ name: results[0].result.headerName,
301
+ version: results[0].result.headerVersion,
302
+ path: results[0].result.headerPath,
303
+ type: results[0].result.headerType
304
+ } : void 0;
305
+ if (options.deps)
306
+ return printDepsView(results, !!options.files, listHeaderInfo), { success: !0 };
307
+ let scopedResources = [];
308
+ for (let { scope, result } of results) {
309
+ let untrackedData = packageName || options.tracked ? void 0 : result.data.untrackedFiles, merged = mergeTrackedAndUntrackedResources(result.tree, untrackedData, scope);
310
+ merged.length > 0 && scopedResources.push({ scope, groups: merged });
311
+ }
312
+ if (scopedResources.length === 0)
313
+ return packageName ? console.log(dim(`No resources found for package '${packageName}'.`)) : options.untracked ? console.log(dim("No untracked resources found.")) : console.log(dim("No resources found.")), { success: !0 };
314
+ let mergedResources = mergeResourcesAcrossScopes(scopedResources);
315
+ return options.untracked && (mergedResources = mergedResources.map((group) => ({
316
+ ...group,
317
+ resources: group.resources.filter((r) => r.status === "untracked")
318
+ })).filter((group) => group.resources.length > 0), mergedResources.length === 0) ? (console.log(dim("No untracked resources found.")), { success: !0 }) : (printResourcesView(mergedResources, !!options.files, listHeaderInfo), { success: !0 });
319
+ }
320
+ async function setupListCommand(args) {
321
+ let [packageName, options, command] = args;
322
+ await listCommand(packageName, options, command);
323
+ }
324
+ export {
325
+ setupListCommand
326
+ };
327
+ //# sourceMappingURL=list-DMOUATYI.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../core/src/core/list/scope-data-collector.ts", "../src/commands/list.ts"],
4
+ "sourcesContent": ["import type { ExecutionContext } from '../../types/index.js';\nimport { runListPipeline, type ListPackageReport, type ListTreeNode, type ListPipelineResult, type ListFileMapping } from './list-pipeline.js';\nimport { logger } from '../../utils/logger.js';\nimport { parsePackageYml } from '../../utils/package-yml.js';\nimport { getLocalPackageYmlPath } from '../../utils/paths.js';\nimport { getDisplayTargetDir } from '../../core/execution-context.js';\nimport type { UntrackedScanResult } from './untracked-files-scanner.js';\nimport { detectEntityType, getEntityDisplayName } from '../../utils/entity-detector.js';\nimport { formatPathForDisplay } from '../../utils/formatters.js';\nimport { resolveDeclaredPath } from '../../utils/path-resolution.js';\nimport { deriveResourceFullName } from '../resources/resource-namespace.js';\nimport { RESOURCE_TYPE_ORDER_PLURAL, normalizeType, toPluralKey } from '../resources/resource-registry.js';\nimport type { EnhancedFileMapping, EnhancedResourceInfo, EnhancedResourceGroup, ResourceScope } from './list-tree-renderer.js';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype FileStatus = 'tracked' | 'untracked' | 'missing';\ntype ResourceStatus = 'tracked' | 'partial' | 'untracked' | 'mixed';\n\nexport interface ScopeResult {\n headerName: string;\n headerVersion: string | undefined;\n headerPath: string;\n headerType: 'workspace' | 'package' | 'resource';\n tree: ListTreeNode[];\n data: ListPipelineResult;\n}\n\nexport interface HeaderInfo {\n name: string;\n version?: string;\n path: string;\n type: 'workspace' | 'package' | 'resource';\n}\n\ninterface ListPipelineOptions {\n files?: boolean;\n all?: boolean;\n tracked?: boolean;\n untracked?: boolean;\n platforms?: string[];\n remote?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Scope data collection\n// ---------------------------------------------------------------------------\n\n/**\n * Run the list pipeline for a single execution context (one scope).\n * Returns null if no data found for the given package/scope.\n */\nasync function runScopeList(\n packageName: string | undefined,\n execContext: ExecutionContext,\n options: ListPipelineOptions\n): Promise<ScopeResult | null> {\n const skipLocal = options.remote && !!packageName;\n\n let packages: ListPackageReport[] = [];\n let tree: ListTreeNode[] = [];\n let data: ListPipelineResult | undefined;\n\n if (!skipLocal) {\n const result = await runListPipeline(packageName, execContext, {\n includeFiles: options.files || !!packageName,\n all: options.all,\n tracked: options.tracked,\n untracked: options.untracked,\n platforms: options.platforms\n });\n\n packages = result.data?.packages ?? [];\n tree = result.data?.tree ?? [];\n data = result.data!;\n }\n\n const hasUntrackedData = data?.untrackedFiles && data.untrackedFiles.totalFiles > 0;\n // If a specific package was requested but not found, return null to trigger remote fallback\n if (packageName && packages.length === 0) {\n return null;\n }\n // For general listing (no package specified), return null only if there's no data at all\n if (!data || (packages.length === 0 && !hasUntrackedData && !packageName)) {\n return null;\n }\n\n let headerName = 'Unnamed';\n let headerVersion: string | undefined;\n let headerPath: string;\n let headerType: 'workspace' | 'package' | 'resource';\n\n // When a specific package is queried, use the actual entity path and type\n if (packageName && data.targetPackage) {\n const targetPkg = data.targetPackage;\n \n // Resolve the actual filesystem path from the package path\n const resolved = resolveDeclaredPath(targetPkg.path, execContext.targetDir);\n const absolutePath = resolved.absolute;\n \n // Detect entity type based on the actual path\n headerType = await detectEntityType(absolutePath);\n \n // Get display name (from openpackage.yml if available, fallback to package name)\n headerName = await getEntityDisplayName(absolutePath, targetPkg.name);\n \n // Get version if available\n headerVersion = targetPkg.version;\n \n // Format the path for display\n headerPath = formatPathForDisplay(absolutePath);\n } else {\n // General workspace listing - use the workspace/targetDir info\n const displayDir = getDisplayTargetDir(execContext);\n headerPath = displayDir;\n \n // Detect entity type for the target directory\n headerType = await detectEntityType(execContext.targetDir);\n \n // Try to read name and version from manifest\n const manifestPath = getLocalPackageYmlPath(execContext.targetDir);\n try {\n const manifest = await parsePackageYml(manifestPath);\n headerName = manifest.name || 'Unnamed';\n headerVersion = manifest.version;\n } catch (error) {\n logger.debug(`Failed to read workspace manifest: ${error}`);\n }\n }\n\n return { headerName, headerVersion, headerPath, headerType, tree, data };\n}\n\n/**\n * Collect scoped data from project and/or global contexts.\n */\nexport async function collectScopedData(\n packageName: string | undefined,\n options: {\n showProject: boolean;\n showGlobal: boolean;\n pipelineOptions: ListPipelineOptions;\n cwd?: string;\n },\n createContext: (opts: { global: boolean; cwd?: string }) => Promise<ExecutionContext>\n): Promise<Array<{ scope: ResourceScope; result: ScopeResult }>> {\n const results: Array<{ scope: ResourceScope; result: ScopeResult }> = [];\n\n if (options.showProject) {\n const projectContext = await createContext({\n global: false,\n cwd: options.cwd\n });\n try {\n const projectResult = await runScopeList(packageName, projectContext, options.pipelineOptions);\n if (projectResult) {\n results.push({ scope: 'project', result: projectResult });\n }\n } catch (error) {\n logger.debug(`Failed to list project scope${packageName ? ` for package '${packageName}'` : ''}: ${error}`);\n }\n }\n\n if (options.showGlobal) {\n const globalContext = await createContext({\n global: true,\n cwd: options.cwd\n });\n try {\n const globalResult = await runScopeList(packageName, globalContext, options.pipelineOptions);\n if (globalResult) {\n results.push({ scope: 'global', result: globalResult });\n }\n } catch (error) {\n logger.debug(`Failed to list global scope${packageName ? ` for package '${packageName}'` : ''}: ${error}`);\n }\n }\n\n return results;\n}\n\n// ---------------------------------------------------------------------------\n// Resource merging\n// ---------------------------------------------------------------------------\n\nfunction normalizeCategory(category: string): string {\n return toPluralKey(normalizeType(category));\n}\n\nfunction calculateResourceStatus(files: EnhancedFileMapping[]): ResourceStatus {\n if (files.length === 0) return 'untracked';\n\n const hasTracked = files.some(f => f.status === 'tracked');\n const hasUntracked = files.some(f => f.status === 'untracked');\n const hasMissing = files.some(f => f.status === 'missing');\n\n if (hasUntracked && !hasTracked && !hasMissing) return 'untracked';\n if (hasTracked && !hasUntracked && !hasMissing) return 'tracked';\n if (hasTracked && hasMissing && !hasUntracked) return 'partial';\n return 'mixed';\n}\n\n/**\n * Merge tracked resources from tree nodes with untracked file scan results\n * into a unified list of EnhancedResourceGroups.\n */\nexport function mergeTrackedAndUntrackedResources(\n tree: ListTreeNode[],\n untrackedFiles: UntrackedScanResult | undefined,\n scope: ResourceScope\n): EnhancedResourceGroup[] {\n const typeMap = new Map<string, Map<string, EnhancedResourceInfo>>();\n\n function collectFromNode(node: ListTreeNode): void {\n if (node.report.resourceGroups) {\n for (const group of node.report.resourceGroups) {\n if (!typeMap.has(group.resourceType)) {\n typeMap.set(group.resourceType, new Map());\n }\n const resourcesMap = typeMap.get(group.resourceType)!;\n\n for (const resource of group.resources) {\n const pkgName = node.report.name;\n if (!resourcesMap.has(resource.name)) {\n const enhancedFiles: EnhancedFileMapping[] = resource.files.map(f => ({\n ...f,\n status: f.exists ? 'tracked' as FileStatus : 'missing' as FileStatus,\n scope\n }));\n\n resourcesMap.set(resource.name, {\n name: resource.name,\n resourceType: resource.resourceType,\n files: enhancedFiles,\n status: 'tracked',\n scopes: new Set([scope]),\n packages: new Set([pkgName])\n });\n } else {\n const existing = resourcesMap.get(resource.name)!;\n if (!existing.packages) existing.packages = new Set();\n existing.packages.add(pkgName);\n }\n }\n }\n }\n node.children.forEach(collectFromNode);\n }\n\n tree.forEach(collectFromNode);\n\n if (untrackedFiles && untrackedFiles.files.length > 0) {\n for (const file of untrackedFiles.files) {\n const singularType = normalizeType(file.category);\n const fullName = deriveResourceFullName(file.workspacePath, singularType);\n const normalizedType = normalizeCategory(file.category);\n\n if (!typeMap.has(normalizedType)) {\n typeMap.set(normalizedType, new Map());\n }\n const resourcesMap = typeMap.get(normalizedType)!;\n\n const enhancedFile: EnhancedFileMapping = {\n source: file.workspacePath,\n target: file.workspacePath,\n exists: true,\n status: 'untracked',\n scope\n };\n\n if (!resourcesMap.has(fullName)) {\n resourcesMap.set(fullName, {\n name: fullName,\n resourceType: normalizedType,\n files: [enhancedFile],\n status: 'untracked',\n scopes: new Set([scope])\n // no packages for untracked resources\n });\n } else {\n resourcesMap.get(fullName)!.files.push(enhancedFile);\n }\n }\n }\n\n for (const resourcesMap of typeMap.values()) {\n for (const resource of resourcesMap.values()) {\n resource.status = calculateResourceStatus(resource.files);\n }\n }\n\n const groups: EnhancedResourceGroup[] = [];\n\n for (const type of RESOURCE_TYPE_ORDER_PLURAL) {\n const resourcesMap = typeMap.get(type);\n if (resourcesMap && resourcesMap.size > 0) {\n const resources = Array.from(resourcesMap.values())\n .sort((a, b) => a.name.localeCompare(b.name));\n groups.push({ resourceType: type, resources });\n }\n }\n\n for (const [type, resourcesMap] of typeMap) {\n if (RESOURCE_TYPE_ORDER_PLURAL.includes(type)) continue;\n const resources = Array.from(resourcesMap.values())\n .sort((a, b) => a.name.localeCompare(b.name));\n groups.push({ resourceType: type, resources });\n }\n\n return groups;\n}\n\n/**\n * Merge resources from multiple scopes, deduplicating by resource name.\n */\nexport function mergeResourcesAcrossScopes(\n scopedResources: Array<{ scope: ResourceScope; groups: EnhancedResourceGroup[] }>\n): EnhancedResourceGroup[] {\n const typeMap = new Map<string, Map<string, EnhancedResourceInfo>>();\n\n for (const { scope, groups } of scopedResources) {\n for (const group of groups) {\n if (!typeMap.has(group.resourceType)) {\n typeMap.set(group.resourceType, new Map());\n }\n const resourcesMap = typeMap.get(group.resourceType)!;\n\n for (const resource of group.resources) {\n if (!resourcesMap.has(resource.name)) {\n resourcesMap.set(resource.name, {\n ...resource,\n scopes: new Set([scope]),\n files: [...resource.files],\n packages: resource.packages ? new Set(resource.packages) : undefined\n });\n } else {\n const existing = resourcesMap.get(resource.name)!;\n existing.scopes.add(scope);\n existing.files.push(...resource.files);\n existing.status = calculateResourceStatus(existing.files);\n if (resource.packages) {\n existing.packages = existing.packages ?? new Set();\n for (const pkg of resource.packages) {\n existing.packages.add(pkg);\n }\n }\n }\n }\n }\n }\n\n const groups: EnhancedResourceGroup[] = [];\n\n for (const type of RESOURCE_TYPE_ORDER_PLURAL) {\n const resourcesMap = typeMap.get(type);\n if (resourcesMap && resourcesMap.size > 0) {\n const resources = Array.from(resourcesMap.values())\n .sort((a, b) => a.name.localeCompare(b.name));\n groups.push({ resourceType: type, resources });\n }\n }\n\n for (const [type, resourcesMap] of typeMap) {\n if (RESOURCE_TYPE_ORDER_PLURAL.includes(type)) continue;\n const resources = Array.from(resourcesMap.values())\n .sort((a, b) => a.name.localeCompare(b.name));\n groups.push({ resourceType: type, resources });\n }\n\n return groups;\n}\n\n/**\n * Resolve header info for the workspace listing view.\n */\nexport async function resolveWorkspaceHeader(\n execContext: ExecutionContext\n): Promise<HeaderInfo> {\n const workspacePath = getDisplayTargetDir(execContext);\n const manifestPath = getLocalPackageYmlPath(execContext.targetDir);\n let name = 'Unnamed';\n let version: string | undefined;\n try {\n const manifest = await parsePackageYml(manifestPath);\n name = manifest.name || 'Unnamed';\n version = manifest.version;\n } catch {\n /* ignore */\n }\n const headerType = await detectEntityType(execContext.targetDir);\n return { name, version, path: workspacePath, type: headerType };\n}\n", "import { Command } from 'commander';\n\nimport { CommandResult } from '@opkg/core/types/index.js';\nimport { ValidationError } from '@opkg/core/utils/errors.js';\nimport { parseWorkspaceScope } from '@opkg/core/core/scope-resolution.js';\nimport { createCliExecutionContext } from '../cli/context.js';\nimport {\n collectScopedData,\n mergeTrackedAndUntrackedResources,\n mergeResourcesAcrossScopes,\n resolveWorkspaceHeader,\n type HeaderInfo\n} from '@opkg/core/core/list/scope-data-collector.js';\nimport { dim, printDepsView, printResourcesView } from '@opkg/core/core/list/list-printers.js';\nimport type { EnhancedResourceGroup, ResourceScope } from '@opkg/core/core/list/list-tree-renderer.js';\n\ninterface ListOptions {\n scope?: string;\n files?: boolean;\n tracked?: boolean;\n untracked?: boolean;\n platforms?: string[];\n deps?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Main command\n// ---------------------------------------------------------------------------\n\nasync function listCommand(\n packageName: string | undefined,\n options: ListOptions,\n command: Command\n): Promise<CommandResult> {\n const programOpts = command.parent?.opts() || {};\n\n if (options.tracked && options.untracked) {\n throw new ValidationError('Cannot use --tracked and --untracked together.');\n }\n\n if (packageName && options.untracked) {\n throw new ValidationError('Cannot use --untracked with a specific package.');\n }\n\n if (options.deps && options.untracked) {\n throw new ValidationError('Cannot use --deps with --untracked.');\n }\n\n let showProject: boolean;\n let showGlobal: boolean;\n if (options.scope) {\n try {\n const scope = parseWorkspaceScope(options.scope);\n showProject = scope === 'project';\n showGlobal = scope === 'global';\n } catch (error) {\n throw error instanceof ValidationError\n ? error\n : new ValidationError(error instanceof Error ? error.message : String(error));\n }\n } else {\n showProject = true;\n showGlobal = true;\n }\n\n const results = await collectScopedData(\n packageName,\n {\n showProject,\n showGlobal,\n pipelineOptions: {\n files: options.files,\n all: true, // Always build full tree: deps view needs it for display, resources view needs it to collect from transitive deps\n tracked: options.tracked,\n untracked: options.untracked,\n platforms: options.platforms\n },\n cwd: programOpts.cwd\n },\n (opts) => createCliExecutionContext({ global: opts.global, cwd: opts.cwd })\n );\n\n if (results.length === 0) {\n if (packageName) {\n console.log(dim(`Package '${packageName}' is not installed.`));\n } else if (options.deps) {\n console.log(dim('No packages installed.'));\n } else {\n console.log(dim('No resources found.'));\n }\n return { success: true };\n }\n\n // --- Compute header ---\n let listHeaderInfo: HeaderInfo | undefined;\n if (packageName) {\n // For specific package, use the package's own header from the first result\n const firstResult = results[0].result;\n const targetPkg = firstResult.data.targetPackage;\n listHeaderInfo = targetPkg\n ? {\n name: targetPkg.name,\n version: targetPkg.version !== '0.0.0' ? targetPkg.version : undefined,\n path: firstResult.headerPath,\n type: firstResult.headerType\n }\n : {\n name: packageName,\n version: undefined,\n path: firstResult.headerPath,\n type: firstResult.headerType\n };\n } else if (showProject) {\n const projectContext = await createCliExecutionContext({\n global: false,\n cwd: programOpts.cwd\n });\n listHeaderInfo = await resolveWorkspaceHeader(projectContext);\n } else {\n listHeaderInfo = results.length > 0\n ? {\n name: results[0].result.headerName,\n version: results[0].result.headerVersion,\n path: results[0].result.headerPath,\n type: results[0].result.headerType\n }\n : undefined;\n }\n\n // --- Deps view ---\n if (options.deps) {\n printDepsView(results, !!options.files, listHeaderInfo);\n return { success: true };\n }\n\n // --- Resources view (default) ---\n const scopedResources: Array<{ scope: ResourceScope; groups: EnhancedResourceGroup[] }> = [];\n\n for (const { scope, result } of results) {\n // When listing a specific package, don't include untracked files\n const untrackedData = packageName || options.tracked ? undefined : result.data.untrackedFiles;\n const merged = mergeTrackedAndUntrackedResources(result.tree, untrackedData, scope);\n if (merged.length > 0) {\n scopedResources.push({ scope, groups: merged });\n }\n }\n\n if (scopedResources.length === 0) {\n if (packageName) {\n console.log(dim(`No resources found for package '${packageName}'.`));\n } else if (options.untracked) {\n console.log(dim('No untracked resources found.'));\n } else {\n console.log(dim('No resources found.'));\n }\n return { success: true };\n }\n\n let mergedResources = mergeResourcesAcrossScopes(scopedResources);\n\n if (options.untracked) {\n mergedResources = mergedResources\n .map(group => ({\n ...group,\n resources: group.resources.filter(r => r.status === 'untracked')\n }))\n .filter(group => group.resources.length > 0);\n\n if (mergedResources.length === 0) {\n console.log(dim('No untracked resources found.'));\n return { success: true };\n }\n }\n\n printResourcesView(mergedResources, !!options.files, listHeaderInfo);\n\n return { success: true };\n}\n\n// ---------------------------------------------------------------------------\n// Command setup\n// ---------------------------------------------------------------------------\n\nexport async function setupListCommand(args: any[]): Promise<void> {\n const [packageName, options, command] = args as [string | undefined, ListOptions, Command];\n await listCommand(packageName, options, command);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["groups"]
7
+ }