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.
- package/.claude/agents/code-reviewer.md +171 -0
- package/.claude/commands/commit-push-pr.md +20 -0
- package/.claude/commands/{specs/read.md → read-specs.md} +1 -1
- package/.claude/commands/{specs/update.md → update-specs.md} +4 -0
- package/.claude/skills/code-review-excellence/SKILL.md +538 -0
- package/README.md +2 -2
- package/package.json +3 -1
- package/packages/cli/dist/add-IJAPFHIX.js +624 -0
- package/packages/cli/dist/add-IJAPFHIX.js.map +7 -0
- package/packages/cli/dist/add-LLUNFLJI.js +624 -0
- package/packages/cli/dist/add-LLUNFLJI.js.map +7 -0
- package/packages/cli/dist/add-U44SL3OR.js +624 -0
- package/packages/cli/dist/add-U44SL3OR.js.map +7 -0
- package/packages/cli/dist/chunk-23VBP5L6.js +371 -0
- package/packages/cli/dist/chunk-23VBP5L6.js.map +7 -0
- package/packages/cli/dist/chunk-2SVHLF5C.js +1419 -0
- package/packages/cli/dist/chunk-2SVHLF5C.js.map +7 -0
- package/packages/cli/dist/chunk-37256POU.js +99 -0
- package/packages/cli/dist/chunk-37256POU.js.map +7 -0
- package/packages/cli/dist/chunk-3PZRVA6O.js +196 -0
- package/packages/cli/dist/chunk-3PZRVA6O.js.map +7 -0
- package/packages/cli/dist/chunk-427DCURL.js +155 -0
- package/packages/cli/dist/chunk-427DCURL.js.map +7 -0
- package/packages/cli/dist/chunk-4B5HJLP2.js +48 -0
- package/packages/cli/dist/chunk-4B5HJLP2.js.map +7 -0
- package/packages/cli/dist/chunk-4OWT3YEG.js +413 -0
- package/packages/cli/dist/chunk-4OWT3YEG.js.map +7 -0
- package/packages/cli/dist/chunk-4RIBTBXI.js +568 -0
- package/packages/cli/dist/chunk-4RIBTBXI.js.map +7 -0
- package/packages/cli/dist/chunk-4X2EJHJN.js +63 -0
- package/packages/cli/dist/chunk-4X2EJHJN.js.map +7 -0
- package/packages/cli/dist/chunk-6CYW66HD.js +1136 -0
- package/packages/cli/dist/chunk-6CYW66HD.js.map +7 -0
- package/packages/cli/dist/chunk-6DITYAFA.js +172 -0
- package/packages/cli/dist/chunk-6DITYAFA.js.map +7 -0
- package/packages/cli/dist/chunk-7KEAKEVZ.js +568 -0
- package/packages/cli/dist/chunk-7KEAKEVZ.js.map +7 -0
- package/packages/cli/dist/chunk-ABFUD25D.js +61 -0
- package/packages/cli/dist/chunk-ABFUD25D.js.map +7 -0
- package/packages/cli/dist/chunk-AR7GJCG6.js +274 -0
- package/packages/cli/dist/chunk-AR7GJCG6.js.map +7 -0
- package/packages/cli/dist/chunk-AYTGQCXH.js +86 -0
- package/packages/cli/dist/chunk-AYTGQCXH.js.map +7 -0
- package/packages/cli/dist/chunk-BROJ6OUT.js +631 -0
- package/packages/cli/dist/chunk-BROJ6OUT.js.map +7 -0
- package/packages/cli/dist/chunk-BVVSU7QD.js +23 -0
- package/packages/cli/dist/chunk-BVVSU7QD.js.map +7 -0
- package/packages/cli/dist/chunk-C6FY55UP.js +108 -0
- package/packages/cli/dist/chunk-C6FY55UP.js.map +7 -0
- package/packages/cli/dist/chunk-CVA64SXK.js +1136 -0
- package/packages/cli/dist/chunk-CVA64SXK.js.map +7 -0
- package/packages/cli/dist/chunk-D3O7LY2Q.js +1151 -0
- package/packages/cli/dist/chunk-D3O7LY2Q.js.map +7 -0
- package/packages/cli/dist/chunk-D6LEPODL.js +413 -0
- package/packages/cli/dist/chunk-D6LEPODL.js.map +7 -0
- package/packages/cli/dist/chunk-DEC24S7E.js +186 -0
- package/packages/cli/dist/chunk-DEC24S7E.js.map +7 -0
- package/packages/cli/dist/chunk-FMVVJH5M.js +371 -0
- package/packages/cli/dist/chunk-FMVVJH5M.js.map +7 -0
- package/packages/cli/dist/chunk-GDVFS3YP.js +130 -0
- package/packages/cli/dist/chunk-GDVFS3YP.js.map +7 -0
- package/packages/cli/dist/chunk-GEP2G5HF.js +31 -0
- package/packages/cli/dist/chunk-GEP2G5HF.js.map +7 -0
- package/packages/cli/dist/chunk-GSWHZBT2.js +62 -0
- package/packages/cli/dist/chunk-GSWHZBT2.js.map +7 -0
- package/packages/cli/dist/chunk-HTYHJA3B.js +61 -0
- package/packages/cli/dist/chunk-HTYHJA3B.js.map +7 -0
- package/packages/cli/dist/chunk-HYKYECAE.js +222 -0
- package/packages/cli/dist/chunk-HYKYECAE.js.map +7 -0
- package/packages/cli/dist/chunk-I7FEAHB4.js +100 -0
- package/packages/cli/dist/chunk-I7FEAHB4.js.map +7 -0
- package/packages/cli/dist/chunk-IHVZ5AUJ.js +107 -0
- package/packages/cli/dist/chunk-IHVZ5AUJ.js.map +7 -0
- package/packages/cli/dist/chunk-KI7FDU3H.js +99 -0
- package/packages/cli/dist/chunk-KI7FDU3H.js.map +7 -0
- package/packages/cli/dist/chunk-L5GRJQBS.js +32 -0
- package/packages/cli/dist/chunk-L5GRJQBS.js.map +7 -0
- package/packages/cli/dist/chunk-LHEAUDJL.js +302 -0
- package/packages/cli/dist/chunk-LHEAUDJL.js.map +7 -0
- package/packages/cli/dist/chunk-MIURCESJ.js +48 -0
- package/packages/cli/dist/chunk-MIURCESJ.js.map +7 -0
- package/packages/cli/dist/chunk-N43IXOND.js +732 -0
- package/packages/cli/dist/chunk-N43IXOND.js.map +7 -0
- package/packages/cli/dist/chunk-OUZRMGPV.js +274 -0
- package/packages/cli/dist/chunk-OUZRMGPV.js.map +7 -0
- package/packages/cli/dist/chunk-PSQXKAL4.js +371 -0
- package/packages/cli/dist/chunk-PSQXKAL4.js.map +7 -0
- package/packages/cli/dist/chunk-PUDRKDVZ.js +1419 -0
- package/packages/cli/dist/chunk-PUDRKDVZ.js.map +7 -0
- package/packages/cli/dist/chunk-RAKMX654.js +631 -0
- package/packages/cli/dist/chunk-RAKMX654.js.map +7 -0
- package/packages/cli/dist/chunk-RSFLK2TP.js +195 -0
- package/packages/cli/dist/chunk-RSFLK2TP.js.map +7 -0
- package/packages/cli/dist/chunk-S26PR2BS.js +99 -0
- package/packages/cli/dist/chunk-S26PR2BS.js.map +7 -0
- package/packages/cli/dist/chunk-U7FW7SXX.js +568 -0
- package/packages/cli/dist/chunk-U7FW7SXX.js.map +7 -0
- package/packages/cli/dist/chunk-VKM6K5TN.js +413 -0
- package/packages/cli/dist/chunk-VKM6K5TN.js.map +7 -0
- package/packages/cli/dist/chunk-VKNJG4JN.js +253 -0
- package/packages/cli/dist/chunk-VKNJG4JN.js.map +7 -0
- package/packages/cli/dist/chunk-VQ2KY6CK.js +113 -0
- package/packages/cli/dist/chunk-VQ2KY6CK.js.map +7 -0
- package/packages/cli/dist/chunk-VQDTXLOX.js +1312 -0
- package/packages/cli/dist/chunk-VQDTXLOX.js.map +7 -0
- package/packages/cli/dist/chunk-VXNS3X5O.js +60 -0
- package/packages/cli/dist/chunk-VXNS3X5O.js.map +7 -0
- package/packages/cli/dist/chunk-WF7H2YDU.js +376 -0
- package/packages/cli/dist/chunk-WF7H2YDU.js.map +7 -0
- package/packages/cli/dist/chunk-WNRXZLWW.js +266 -0
- package/packages/cli/dist/chunk-WNRXZLWW.js.map +7 -0
- package/packages/cli/dist/chunk-WT4VVCXM.js +1121 -0
- package/packages/cli/dist/chunk-WT4VVCXM.js.map +7 -0
- package/packages/cli/dist/configure-3AZUMDJZ.js +107 -0
- package/packages/cli/dist/configure-3AZUMDJZ.js.map +7 -0
- package/packages/cli/dist/configure-D722JQOD.js +107 -0
- package/packages/cli/dist/configure-D722JQOD.js.map +7 -0
- package/packages/cli/dist/configure-IU5H7XD6.js +107 -0
- package/packages/cli/dist/configure-IU5H7XD6.js.map +7 -0
- package/packages/cli/dist/file-format-detector-PXCIAKTK.js +22 -0
- package/packages/cli/dist/file-format-detector-PXCIAKTK.js.map +7 -0
- package/packages/cli/dist/index.js +17 -17
- package/packages/cli/dist/install-EZNWMLJR.js +7581 -0
- package/packages/cli/dist/install-EZNWMLJR.js.map +7 -0
- package/packages/cli/dist/install-F5ANFUBX.js +7577 -0
- package/packages/cli/dist/install-F5ANFUBX.js.map +7 -0
- package/packages/cli/dist/install-JSXEPPC2.js +7104 -0
- package/packages/cli/dist/install-JSXEPPC2.js.map +7 -0
- package/packages/cli/dist/install-QHEBX7JH.js +7101 -0
- package/packages/cli/dist/install-QHEBX7JH.js.map +7 -0
- package/packages/cli/dist/list-DMOUATYI.js +327 -0
- package/packages/cli/dist/list-DMOUATYI.js.map +7 -0
- package/packages/cli/dist/list-UESSCB7Y.js +327 -0
- package/packages/cli/dist/list-UESSCB7Y.js.map +7 -0
- package/packages/cli/dist/list-XR7RSJFS.js +327 -0
- package/packages/cli/dist/list-XR7RSJFS.js.map +7 -0
- package/packages/cli/dist/login-EYZ2SOYZ.js +150 -0
- package/packages/cli/dist/login-EYZ2SOYZ.js.map +7 -0
- package/packages/cli/dist/login-JWCSTAEU.js +150 -0
- package/packages/cli/dist/login-JWCSTAEU.js.map +7 -0
- package/packages/cli/dist/login-NRKHXZKM.js +150 -0
- package/packages/cli/dist/login-NRKHXZKM.js.map +7 -0
- package/packages/cli/dist/logout-HDMYRXIE.js +40 -0
- package/packages/cli/dist/logout-HDMYRXIE.js.map +7 -0
- package/packages/cli/dist/logout-SYHXCVCQ.js +40 -0
- package/packages/cli/dist/logout-SYHXCVCQ.js.map +7 -0
- package/packages/cli/dist/logout-X3XUUOH5.js +40 -0
- package/packages/cli/dist/logout-X3XUUOH5.js.map +7 -0
- package/packages/cli/dist/new-3LTFKDTQ.js +277 -0
- package/packages/cli/dist/new-3LTFKDTQ.js.map +7 -0
- package/packages/cli/dist/new-F46OSD72.js +277 -0
- package/packages/cli/dist/new-F46OSD72.js.map +7 -0
- package/packages/cli/dist/new-OPCCLNL2.js +277 -0
- package/packages/cli/dist/new-OPCCLNL2.js.map +7 -0
- package/packages/cli/dist/package-marker-detector-T5O5YD2E.js +80 -0
- package/packages/cli/dist/package-marker-detector-T5O5YD2E.js.map +7 -0
- package/packages/cli/dist/package-yml-QWZIJDYU.js +16 -0
- package/packages/cli/dist/package-yml-QWZIJDYU.js.map +7 -0
- package/packages/cli/dist/plugin-naming-YP2I4NPA.js +29 -0
- package/packages/cli/dist/plugin-naming-YP2I4NPA.js.map +7 -0
- package/packages/cli/dist/publish-4H43PCSG.js +619 -0
- package/packages/cli/dist/publish-4H43PCSG.js.map +7 -0
- package/packages/cli/dist/publish-RULKLNUX.js +619 -0
- package/packages/cli/dist/publish-RULKLNUX.js.map +7 -0
- package/packages/cli/dist/publish-URWY2P3E.js +619 -0
- package/packages/cli/dist/publish-URWY2P3E.js.map +7 -0
- package/packages/cli/dist/remove-BD52BHR2.js +542 -0
- package/packages/cli/dist/remove-BD52BHR2.js.map +7 -0
- package/packages/cli/dist/remove-G5NRC7LD.js +542 -0
- package/packages/cli/dist/remove-G5NRC7LD.js.map +7 -0
- package/packages/cli/dist/remove-TC3FQUYQ.js +542 -0
- package/packages/cli/dist/remove-TC3FQUYQ.js.map +7 -0
- package/packages/cli/dist/resource-discoverer-4X4RY43E.js +17 -0
- package/packages/cli/dist/resource-discoverer-4X4RY43E.js.map +7 -0
- package/packages/cli/dist/save-24TESYKI.js +1728 -0
- package/packages/cli/dist/save-24TESYKI.js.map +7 -0
- package/packages/cli/dist/save-N3QWF2WN.js +1728 -0
- package/packages/cli/dist/save-N3QWF2WN.js.map +7 -0
- package/packages/cli/dist/save-P2U67DTV.js +1728 -0
- package/packages/cli/dist/save-P2U67DTV.js.map +7 -0
- package/packages/cli/dist/search-ABROK3UO.js +157 -0
- package/packages/cli/dist/search-ABROK3UO.js.map +7 -0
- package/packages/cli/dist/search-WVFXFNAV.js +157 -0
- package/packages/cli/dist/search-WVFXFNAV.js.map +7 -0
- package/packages/cli/dist/search-YQN2Q2SO.js +157 -0
- package/packages/cli/dist/search-YQN2Q2SO.js.map +7 -0
- package/packages/cli/dist/set-DCWF73F6.js +251 -0
- package/packages/cli/dist/set-DCWF73F6.js.map +7 -0
- package/packages/cli/dist/set-GJEG2F6Y.js +251 -0
- package/packages/cli/dist/set-GJEG2F6Y.js.map +7 -0
- package/packages/cli/dist/set-NGM2FIKF.js +251 -0
- package/packages/cli/dist/set-NGM2FIKF.js.map +7 -0
- package/packages/cli/dist/uninstall-3CJQMTYH.js +539 -0
- package/packages/cli/dist/uninstall-3CJQMTYH.js.map +7 -0
- package/packages/cli/dist/uninstall-Q3CP4UN5.js +539 -0
- package/packages/cli/dist/uninstall-Q3CP4UN5.js.map +7 -0
- package/packages/cli/dist/uninstall-QU5OMEEC.js +539 -0
- package/packages/cli/dist/uninstall-QU5OMEEC.js.map +7 -0
- package/packages/cli/dist/unpublish-GHJQYC4S.js +245 -0
- package/packages/cli/dist/unpublish-GHJQYC4S.js.map +7 -0
- package/packages/cli/dist/unpublish-L2CYMK4B.js +245 -0
- package/packages/cli/dist/unpublish-L2CYMK4B.js.map +7 -0
- package/packages/cli/dist/unpublish-VBTNTMS5.js +245 -0
- package/packages/cli/dist/unpublish-VBTNTMS5.js.map +7 -0
- package/packages/cli/dist/view-MXRBMXOG.js +488 -0
- package/packages/cli/dist/view-MXRBMXOG.js.map +7 -0
- package/packages/cli/dist/view-NMND7SAW.js +488 -0
- package/packages/cli/dist/view-NMND7SAW.js.map +7 -0
- package/packages/cli/dist/view-RPQRDSYB.js +488 -0
- package/packages/cli/dist/view-RPQRDSYB.js.map +7 -0
- package/packages/cli/package.json +2 -0
- package/packages/core/dist/constants/index.d.ts +9 -0
- package/packages/core/dist/constants/index.d.ts.map +1 -1
- package/packages/core/dist/constants/index.js +12 -0
- package/packages/core/dist/constants/index.js.map +1 -1
- package/packages/core/dist/core/dependency-resolver/index.d.ts +2 -10
- package/packages/core/dist/core/dependency-resolver/index.d.ts.map +1 -1
- package/packages/core/dist/core/dependency-resolver/index.js +3 -14
- package/packages/core/dist/core/dependency-resolver/index.js.map +1 -1
- package/packages/core/dist/core/install/base-detector.d.ts +2 -1
- package/packages/core/dist/core/install/base-detector.d.ts.map +1 -1
- package/packages/core/dist/core/install/base-detector.js +54 -1
- package/packages/core/dist/core/install/base-detector.js.map +1 -1
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts +7 -5
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.d.ts.map +1 -1
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js +25 -9
- package/packages/core/dist/core/install/conflicts/file-conflict-resolver.js.map +1 -1
- package/packages/core/dist/core/install/flow-index-installer.d.ts +2 -1
- package/packages/core/dist/core/install/flow-index-installer.d.ts.map +1 -1
- package/packages/core/dist/core/install/flow-index-installer.js +19 -4
- package/packages/core/dist/core/install/flow-index-installer.js.map +1 -1
- package/packages/core/dist/core/install/input-classifier-base.js +3 -3
- package/packages/core/dist/core/install/input-classifier-base.js.map +1 -1
- package/packages/core/dist/core/install/install-reporting.d.ts.map +1 -1
- package/packages/core/dist/core/install/install-reporting.js +7 -9
- package/packages/core/dist/core/install/install-reporting.js.map +1 -1
- package/packages/core/dist/core/install/list-handler.d.ts.map +1 -1
- package/packages/core/dist/core/install/list-handler.js +3 -0
- package/packages/core/dist/core/install/list-handler.js.map +1 -1
- package/packages/core/dist/core/install/marketplace-handler.d.ts.map +1 -1
- package/packages/core/dist/core/install/marketplace-handler.js.map +1 -1
- package/packages/core/dist/core/install/operations/conflict-handler.d.ts +2 -1
- package/packages/core/dist/core/install/operations/conflict-handler.d.ts.map +1 -1
- package/packages/core/dist/core/install/operations/conflict-handler.js +2 -2
- package/packages/core/dist/core/install/operations/conflict-handler.js.map +1 -1
- package/packages/core/dist/core/install/operations/installation-executor.d.ts +3 -0
- package/packages/core/dist/core/install/operations/installation-executor.d.ts.map +1 -1
- package/packages/core/dist/core/install/operations/installation-executor.js +39 -22
- package/packages/core/dist/core/install/operations/installation-executor.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts +7 -3
- package/packages/core/dist/core/install/orchestrator/orchestrator.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/orchestrator.js +193 -93
- package/packages/core/dist/core/install/orchestrator/orchestrator.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts +1 -0
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js +11 -24
- package/packages/core/dist/core/install/orchestrator/strategies/git-strategy.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts +2 -0
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js +14 -14
- package/packages/core/dist/core/install/orchestrator/strategies/path-strategy.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts +7 -0
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js +28 -0
- package/packages/core/dist/core/install/orchestrator/strategies/registry-strategy.js.map +1 -1
- package/packages/core/dist/core/install/orchestrator/types.d.ts +2 -0
- package/packages/core/dist/core/install/orchestrator/types.d.ts.map +1 -1
- package/packages/core/dist/core/install/path-package-loader.d.ts.map +1 -1
- package/packages/core/dist/core/install/path-package-loader.js +20 -1
- package/packages/core/dist/core/install/path-package-loader.js.map +1 -1
- package/packages/core/dist/core/install/platform-resolution.d.ts +3 -0
- package/packages/core/dist/core/install/platform-resolution.d.ts.map +1 -1
- package/packages/core/dist/core/install/platform-resolution.js +5 -2
- package/packages/core/dist/core/install/platform-resolution.js.map +1 -1
- package/packages/core/dist/core/install/preprocessing/context-population.d.ts +18 -0
- package/packages/core/dist/core/install/preprocessing/context-population.d.ts.map +1 -0
- package/packages/core/dist/core/install/preprocessing/context-population.js +36 -0
- package/packages/core/dist/core/install/preprocessing/context-population.js.map +1 -0
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts +23 -0
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.d.ts.map +1 -1
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js +44 -0
- package/packages/core/dist/core/install/preprocessing/convenience-preprocessor.js.map +1 -1
- package/packages/core/dist/core/install/sources/git-source.d.ts.map +1 -1
- package/packages/core/dist/core/install/sources/git-source.js +67 -4
- package/packages/core/dist/core/install/sources/git-source.js.map +1 -1
- package/packages/core/dist/core/install/sources/path-source.d.ts.map +1 -1
- package/packages/core/dist/core/install/sources/path-source.js +8 -0
- package/packages/core/dist/core/install/sources/path-source.js.map +1 -1
- package/packages/core/dist/core/install/strategies/flow-based-strategy.d.ts.map +1 -1
- package/packages/core/dist/core/install/strategies/flow-based-strategy.js +12 -5
- package/packages/core/dist/core/install/strategies/flow-based-strategy.js.map +1 -1
- package/packages/core/dist/core/install/strategies/types.d.ts +11 -1
- package/packages/core/dist/core/install/strategies/types.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/context-builders.d.ts +5 -0
- package/packages/core/dist/core/install/unified/context-builders.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/context-builders.js +12 -0
- package/packages/core/dist/core/install/unified/context-builders.js.map +1 -1
- package/packages/core/dist/core/install/unified/context-helpers.d.ts +0 -4
- package/packages/core/dist/core/install/unified/context-helpers.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/context-helpers.js +0 -24
- package/packages/core/dist/core/install/unified/context-helpers.js.map +1 -1
- package/packages/core/dist/core/install/unified/index.d.ts +1 -1
- package/packages/core/dist/core/install/unified/index.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/index.js +1 -1
- package/packages/core/dist/core/install/unified/index.js.map +1 -1
- package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts +6 -0
- package/packages/core/dist/core/install/unified/multi-context-pipeline.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/multi-context-pipeline.js +11 -4
- package/packages/core/dist/core/install/unified/multi-context-pipeline.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/conflicts.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/phases/conflicts.js +1 -1
- package/packages/core/dist/core/install/unified/phases/conflicts.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/execute.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/phases/execute.js +5 -5
- package/packages/core/dist/core/install/unified/phases/execute.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/load-package.js +3 -3
- package/packages/core/dist/core/install/unified/phases/load-package.js.map +1 -1
- package/packages/core/dist/core/install/unified/phases/report.js +1 -1
- package/packages/core/dist/core/install/unified/phases/report.js.map +1 -1
- package/packages/core/dist/core/install/unified/pipeline.d.ts.map +1 -1
- package/packages/core/dist/core/install/unified/pipeline.js +7 -10
- package/packages/core/dist/core/install/unified/pipeline.js.map +1 -1
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts +24 -0
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.js +71 -0
- package/packages/core/dist/core/install/wave-resolver/content-root-cache.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts +39 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.js +148 -0
- package/packages/core/dist/core/install/wave-resolver/context-builder.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts +49 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.js +221 -0
- package/packages/core/dist/core/install/wave-resolver/fetcher.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts +23 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.js +87 -0
- package/packages/core/dist/core/install/wave-resolver/index-updater.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts +101 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.js +194 -0
- package/packages/core/dist/core/install/wave-resolver/index-write-collector.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index.d.ts +17 -0
- package/packages/core/dist/core/install/wave-resolver/index.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/index.js +16 -0
- package/packages/core/dist/core/install/wave-resolver/index.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts +34 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.js +112 -0
- package/packages/core/dist/core/install/wave-resolver/manifest-reader.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/types.d.ts +210 -0
- package/packages/core/dist/core/install/wave-resolver/types.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/types.js +6 -0
- package/packages/core/dist/core/install/wave-resolver/types.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts +65 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.js +166 -0
- package/packages/core/dist/core/install/wave-resolver/version-solver.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts +16 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.js +337 -0
- package/packages/core/dist/core/install/wave-resolver/wave-engine.js.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts +50 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.d.ts.map +1 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.js +246 -0
- package/packages/core/dist/core/install/wave-resolver/wave-installer.js.map +1 -0
- package/packages/core/dist/core/ports/buffered-output.d.ts +36 -0
- package/packages/core/dist/core/ports/buffered-output.d.ts.map +1 -0
- package/packages/core/dist/core/ports/buffered-output.js +89 -0
- package/packages/core/dist/core/ports/buffered-output.js.map +1 -0
- package/packages/core/dist/core/ports/resolve.d.ts +0 -13
- package/packages/core/dist/core/ports/resolve.d.ts.map +1 -1
- package/packages/core/dist/core/ports/resolve.js +0 -28
- package/packages/core/dist/core/ports/resolve.js.map +1 -1
- package/packages/core/dist/core/remove/removal-confirmation.d.ts +4 -1
- package/packages/core/dist/core/remove/removal-confirmation.d.ts.map +1 -1
- package/packages/core/dist/core/remove/removal-confirmation.js +5 -4
- package/packages/core/dist/core/remove/removal-confirmation.js.map +1 -1
- package/packages/core/dist/core/remove/remove-from-source-pipeline.d.ts.map +1 -1
- package/packages/core/dist/core/remove/remove-from-source-pipeline.js +1 -10
- package/packages/core/dist/core/remove/remove-from-source-pipeline.js.map +1 -1
- package/packages/core/dist/core/uninstall/uninstall-executor.js +1 -1
- package/packages/core/dist/core/uninstall/uninstall-executor.js.map +1 -1
- package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts +2 -2
- package/packages/core/dist/core/uninstall/uninstall-reporter.d.ts.map +1 -1
- package/packages/core/dist/core/uninstall/uninstall-reporter.js +4 -4
- package/packages/core/dist/core/uninstall/uninstall-reporter.js.map +1 -1
- package/packages/core/dist/index.d.ts +1 -1
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/types/execution-context.d.ts +40 -10
- package/packages/core/dist/types/execution-context.d.ts.map +1 -1
- package/packages/core/dist/utils/concurrency-pool.d.ts +34 -0
- package/packages/core/dist/utils/concurrency-pool.d.ts.map +1 -0
- package/packages/core/dist/utils/concurrency-pool.js +58 -0
- package/packages/core/dist/utils/concurrency-pool.js.map +1 -0
- package/packages/core/dist/utils/plugin-naming.d.ts +11 -3
- package/packages/core/dist/utils/plugin-naming.d.ts.map +1 -1
- package/packages/core/dist/utils/plugin-naming.js +27 -7
- package/packages/core/dist/utils/plugin-naming.js.map +1 -1
- package/plans/wave-resolver.md +254 -0
- package/.claude/agents/essentials/code-simplifier.md +0 -52
- package/.claude/commands/essentials/cleanup.md +0 -1
- package/.claude/commands/essentials/review.md +0 -8
- package/.claude/commands/git/commit.md +0 -5
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wave-based BFS dependency resolver.
|
|
3
|
+
*
|
|
4
|
+
* Processes dependencies in breadth-first waves -- each wave batches all
|
|
5
|
+
* unresolved packages at the current frontier, fetches their metadata in
|
|
6
|
+
* parallel, discovers new dependencies, and repeats until the queue is empty.
|
|
7
|
+
*
|
|
8
|
+
* Public API:
|
|
9
|
+
* resolveWave() - Run the BFS resolution loop
|
|
10
|
+
* buildInstallContexts() - Convert the graph into pipeline-ready contexts
|
|
11
|
+
* updateWorkspaceIndex() - Post-install index update
|
|
12
|
+
*/
|
|
13
|
+
export { resolveWave } from './wave-engine.js';
|
|
14
|
+
export { buildInstallContexts, type BuildContextOptions } from './context-builder.js';
|
|
15
|
+
export { updateWorkspaceIndex } from './index-updater.js';
|
|
16
|
+
export type { WaveNode, WaveGraph, WaveResult, WaveVersionSolution, WaveVersionConflict, WaveResolverOptions, FetchResult, PackageFetcher, FetcherOptions } from './types.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/install/wave-resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wave-based BFS dependency resolver.
|
|
3
|
+
*
|
|
4
|
+
* Processes dependencies in breadth-first waves -- each wave batches all
|
|
5
|
+
* unresolved packages at the current frontier, fetches their metadata in
|
|
6
|
+
* parallel, discovers new dependencies, and repeats until the queue is empty.
|
|
7
|
+
*
|
|
8
|
+
* Public API:
|
|
9
|
+
* resolveWave() - Run the BFS resolution loop
|
|
10
|
+
* buildInstallContexts() - Convert the graph into pipeline-ready contexts
|
|
11
|
+
* updateWorkspaceIndex() - Post-install index update
|
|
12
|
+
*/
|
|
13
|
+
export { resolveWave } from './wave-engine.js';
|
|
14
|
+
export { buildInstallContexts } from './context-builder.js';
|
|
15
|
+
export { updateWorkspaceIndex } from './index-updater.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/install/wave-resolver/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAA4B,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest reading for the wave resolver.
|
|
3
|
+
* Reads openpackage.yml from path and extracts dependency declarations.
|
|
4
|
+
*/
|
|
5
|
+
import type { DependencyDeclaration, ParsedManifest, ResolvedSource } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the path to the manifest file at a content root, if it exists.
|
|
8
|
+
* Tries openpackage.yml at root, then .openpackage/openpackage.yml (workspace style).
|
|
9
|
+
* Returns null if neither exists.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getManifestPathAtContentRoot(contentRoot: string): Promise<string | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Read manifest from a content root directory.
|
|
14
|
+
* Tries openpackage.yml at root, then .openpackage/openpackage.yml (workspace style).
|
|
15
|
+
*/
|
|
16
|
+
export declare function readManifestAtPath(contentRoot: string): Promise<ParsedManifest | null>;
|
|
17
|
+
/**
|
|
18
|
+
* Read manifest from a resolved source.
|
|
19
|
+
* For path: reads from absolutePath. For git/registry: requires contentRoot (populated after load).
|
|
20
|
+
*/
|
|
21
|
+
export declare function readManifestFromSource(source: ResolvedSource): Promise<ParsedManifest | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Extract dependency declarations from a parsed manifest.
|
|
24
|
+
* declaredIn: path to the manifest file that contains these dependencies.
|
|
25
|
+
* depth: depth in the dependency tree (used when recursing).
|
|
26
|
+
* includeDev: if true, include dev-dependencies (only at root level).
|
|
27
|
+
*/
|
|
28
|
+
export declare function extractDependencies(manifest: ParsedManifest, declaredIn: string, depth: number, includeDev: boolean): DependencyDeclaration[];
|
|
29
|
+
/**
|
|
30
|
+
* Get the directory containing the manifest file.
|
|
31
|
+
* Used as base for resolving relative path dependencies.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getDeclaredInDir(manifestPath: string): string;
|
|
34
|
+
//# sourceMappingURL=manifest-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-reader.d.ts","sourceRoot":"","sources":["../../../../src/core/install/wave-resolver/manifest-reader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExF;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAM9F;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAkB5F;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAMhC;AA6BD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,OAAO,GAClB,qBAAqB,EAAE,CAqBzB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest reading for the wave resolver.
|
|
3
|
+
* Reads openpackage.yml from path and extracts dependency declarations.
|
|
4
|
+
*/
|
|
5
|
+
import { join, dirname } from 'path';
|
|
6
|
+
import { loadPackageConfig } from '../../package-context.js';
|
|
7
|
+
import { exists } from '../../../utils/fs.js';
|
|
8
|
+
import { parsePackageYml } from '../../../utils/package-yml.js';
|
|
9
|
+
import { DIR_PATTERNS, FILE_PATTERNS } from '../../../constants/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Resolve the path to the manifest file at a content root, if it exists.
|
|
12
|
+
* Tries openpackage.yml at root, then .openpackage/openpackage.yml (workspace style).
|
|
13
|
+
* Returns null if neither exists.
|
|
14
|
+
*/
|
|
15
|
+
export async function getManifestPathAtContentRoot(contentRoot) {
|
|
16
|
+
const atRoot = join(contentRoot, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
17
|
+
if (await exists(atRoot))
|
|
18
|
+
return atRoot;
|
|
19
|
+
const inOpenPackage = join(contentRoot, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
20
|
+
if (await exists(inOpenPackage))
|
|
21
|
+
return inOpenPackage;
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read manifest from a content root directory.
|
|
26
|
+
* Tries openpackage.yml at root, then .openpackage/openpackage.yml (workspace style).
|
|
27
|
+
*/
|
|
28
|
+
export async function readManifestAtPath(contentRoot) {
|
|
29
|
+
const atRoot = join(contentRoot, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
30
|
+
if (await exists(atRoot)) {
|
|
31
|
+
try {
|
|
32
|
+
return await parsePackageYml(atRoot);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const inOpenPackage = join(contentRoot, DIR_PATTERNS.OPENPACKAGE, FILE_PATTERNS.OPENPACKAGE_YML);
|
|
39
|
+
if (await exists(inOpenPackage)) {
|
|
40
|
+
try {
|
|
41
|
+
return await parsePackageYml(inOpenPackage);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return loadPackageConfig(contentRoot);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read manifest from a resolved source.
|
|
51
|
+
* For path: reads from absolutePath. For git/registry: requires contentRoot (populated after load).
|
|
52
|
+
*/
|
|
53
|
+
export async function readManifestFromSource(source) {
|
|
54
|
+
const contentRoot = source.contentRoot ?? source.absolutePath;
|
|
55
|
+
if (!contentRoot) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return readManifestAtPath(contentRoot);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Convert PackageDependency from manifest to DependencyDeclaration.
|
|
62
|
+
*/
|
|
63
|
+
function toDependencyDeclaration(dep, declaredIn, depth, isDev) {
|
|
64
|
+
const urlRaw = dep.url ?? dep.git;
|
|
65
|
+
const [url, embeddedRef] = typeof urlRaw === 'string' && urlRaw.includes('#') ? urlRaw.split('#', 2) : [urlRaw, undefined];
|
|
66
|
+
const ref = embeddedRef ?? dep.ref;
|
|
67
|
+
return {
|
|
68
|
+
name: dep.name,
|
|
69
|
+
version: dep.version,
|
|
70
|
+
path: dep.path,
|
|
71
|
+
url: typeof url === 'string' ? url : undefined,
|
|
72
|
+
ref,
|
|
73
|
+
base: dep.base,
|
|
74
|
+
isDev,
|
|
75
|
+
declaredIn,
|
|
76
|
+
depth
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Extract dependency declarations from a parsed manifest.
|
|
81
|
+
* declaredIn: path to the manifest file that contains these dependencies.
|
|
82
|
+
* depth: depth in the dependency tree (used when recursing).
|
|
83
|
+
* includeDev: if true, include dev-dependencies (only at root level).
|
|
84
|
+
*/
|
|
85
|
+
export function extractDependencies(manifest, declaredIn, depth, includeDev) {
|
|
86
|
+
const out = [];
|
|
87
|
+
const deps = manifest.dependencies ?? manifest.packages ?? [];
|
|
88
|
+
for (const dep of deps) {
|
|
89
|
+
if (!dep?.name)
|
|
90
|
+
continue;
|
|
91
|
+
out.push(toDependencyDeclaration(dep, declaredIn, depth, false));
|
|
92
|
+
}
|
|
93
|
+
if (includeDev && depth === 0) {
|
|
94
|
+
const devDeps = manifest['dev-dependencies'] ??
|
|
95
|
+
manifest['dev-packages'] ??
|
|
96
|
+
[];
|
|
97
|
+
for (const dep of devDeps) {
|
|
98
|
+
if (!dep?.name)
|
|
99
|
+
continue;
|
|
100
|
+
out.push(toDependencyDeclaration(dep, declaredIn, depth, true));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return out;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get the directory containing the manifest file.
|
|
107
|
+
* Used as base for resolving relative path dependencies.
|
|
108
|
+
*/
|
|
109
|
+
export function getDeclaredInDir(manifestPath) {
|
|
110
|
+
return dirname(manifestPath);
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=manifest-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-reader.js","sourceRoot":"","sources":["../../../../src/core/install/wave-resolver/manifest-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the wave-based BFS dependency resolver.
|
|
3
|
+
* Used by wave-engine, fetcher, version-solver, context-builder, and index-updater.
|
|
4
|
+
*/
|
|
5
|
+
import type { PackageYml } from '../../../types/index.js';
|
|
6
|
+
import type { InstallResolutionMode } from '../types.js';
|
|
7
|
+
/** Parsed manifest (openpackage.yml) - alias for PackageYml */
|
|
8
|
+
export type ParsedManifest = PackageYml;
|
|
9
|
+
export interface DependencyDeclaration {
|
|
10
|
+
name: string;
|
|
11
|
+
version?: string;
|
|
12
|
+
path?: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
ref?: string;
|
|
15
|
+
base?: string;
|
|
16
|
+
isDev: boolean;
|
|
17
|
+
declaredIn: string;
|
|
18
|
+
depth: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ResolvedSource {
|
|
21
|
+
type: 'registry' | 'path' | 'git';
|
|
22
|
+
packageName?: string;
|
|
23
|
+
resolvedVersion?: string;
|
|
24
|
+
registryPath?: string;
|
|
25
|
+
absolutePath?: string;
|
|
26
|
+
gitUrl?: string;
|
|
27
|
+
gitRef?: string;
|
|
28
|
+
resourcePath?: string;
|
|
29
|
+
contentRoot?: string;
|
|
30
|
+
manifestPath?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface BaseDetectionResult {
|
|
33
|
+
base?: string;
|
|
34
|
+
relative?: string;
|
|
35
|
+
source?: 'openpackage' | 'plugin' | 'marketplace' | 'pattern' | 'user-selection' | 'manifest';
|
|
36
|
+
pattern?: string;
|
|
37
|
+
matchType?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface LoadedPackageData {
|
|
40
|
+
name: string;
|
|
41
|
+
version: string;
|
|
42
|
+
contentRoot: string;
|
|
43
|
+
repoRoot?: string;
|
|
44
|
+
metadata: PackageYml;
|
|
45
|
+
manifest: ParsedManifest;
|
|
46
|
+
baseDetection?: BaseDetectionResult;
|
|
47
|
+
formatDetection?: {
|
|
48
|
+
format?: unknown;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* A resolved dependency node in the wave graph.
|
|
53
|
+
*/
|
|
54
|
+
export interface WaveNode {
|
|
55
|
+
/** Canonical key (e.g. 'registry:react', 'git:url#ref:path', 'path:/abs/path') */
|
|
56
|
+
id: string;
|
|
57
|
+
/** Human-readable display name */
|
|
58
|
+
displayName: string;
|
|
59
|
+
/** Source type for this dependency */
|
|
60
|
+
sourceType: 'registry' | 'path' | 'git';
|
|
61
|
+
/** Full resolved source information */
|
|
62
|
+
source: ResolvedSource;
|
|
63
|
+
/** All declarations that led to this node (may have multiple parents) */
|
|
64
|
+
declarations: DependencyDeclaration[];
|
|
65
|
+
/** Resolved version (picked by the version solver for registry deps) */
|
|
66
|
+
resolvedVersion?: string;
|
|
67
|
+
/** Filesystem path to package content */
|
|
68
|
+
contentRoot?: string;
|
|
69
|
+
/** For git sources, the repository root path */
|
|
70
|
+
repoRoot?: string;
|
|
71
|
+
/** Parsed package manifest */
|
|
72
|
+
metadata?: PackageYml;
|
|
73
|
+
/** Child node IDs (dependencies of this package) */
|
|
74
|
+
children: string[];
|
|
75
|
+
/** Parent node IDs (packages that depend on this) */
|
|
76
|
+
parents: string[];
|
|
77
|
+
/** Which wave resolved this node */
|
|
78
|
+
wave: number;
|
|
79
|
+
/** Whether this is a marketplace (excluded from recursive resolution) */
|
|
80
|
+
isMarketplace?: boolean;
|
|
81
|
+
/** Loaded package data (populated for path/git; left undefined for registry nodes) */
|
|
82
|
+
loaded?: LoadedPackageData;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The complete resolved dependency graph produced by the wave engine.
|
|
86
|
+
*/
|
|
87
|
+
export interface WaveGraph {
|
|
88
|
+
/** All resolved nodes keyed by canonical ID */
|
|
89
|
+
nodes: Map<string, WaveNode>;
|
|
90
|
+
/** Root node IDs (entry points) */
|
|
91
|
+
roots: string[];
|
|
92
|
+
/** Topologically sorted install order (leaves first) */
|
|
93
|
+
installOrder: string[];
|
|
94
|
+
/** Detected dependency cycles (arrays of node IDs) */
|
|
95
|
+
cycles: string[][];
|
|
96
|
+
/** Total number of waves executed */
|
|
97
|
+
waveCount: number;
|
|
98
|
+
/** Warnings accumulated during resolution */
|
|
99
|
+
warnings: string[];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Return type of resolveWave().
|
|
103
|
+
*/
|
|
104
|
+
export interface WaveResult {
|
|
105
|
+
/** The resolved dependency graph */
|
|
106
|
+
graph: WaveGraph;
|
|
107
|
+
/** Version solution from constraint resolution */
|
|
108
|
+
versionSolution: WaveVersionSolution;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Output from the version solver.
|
|
112
|
+
*/
|
|
113
|
+
export interface WaveVersionSolution {
|
|
114
|
+
/** Package name to resolved version */
|
|
115
|
+
resolved: Map<string, string>;
|
|
116
|
+
/** Conflicts that could not be resolved */
|
|
117
|
+
conflicts: WaveVersionConflict[];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* A version conflict encountered during solving.
|
|
121
|
+
*/
|
|
122
|
+
export interface WaveVersionConflict {
|
|
123
|
+
/** Package name with conflicting constraints */
|
|
124
|
+
packageName: string;
|
|
125
|
+
/** All semver ranges requested */
|
|
126
|
+
ranges: string[];
|
|
127
|
+
/** Which manifests requested each range */
|
|
128
|
+
requestedBy: string[];
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Result returned by a PackageFetcher.
|
|
132
|
+
*/
|
|
133
|
+
export interface FetchResult {
|
|
134
|
+
/** Canonical dependency key */
|
|
135
|
+
id: string;
|
|
136
|
+
/** Human-readable name */
|
|
137
|
+
displayName: string;
|
|
138
|
+
/** Package name */
|
|
139
|
+
name: string;
|
|
140
|
+
/** Resolved version (for registry deps) */
|
|
141
|
+
version?: string;
|
|
142
|
+
/** Filesystem content root */
|
|
143
|
+
contentRoot?: string;
|
|
144
|
+
/** Repository root (for git sources) */
|
|
145
|
+
repoRoot?: string;
|
|
146
|
+
/** Source type */
|
|
147
|
+
sourceType: 'registry' | 'path' | 'git';
|
|
148
|
+
/** Full resolved source */
|
|
149
|
+
source: ResolvedSource;
|
|
150
|
+
/** Parsed package manifest */
|
|
151
|
+
metadata?: PackageYml;
|
|
152
|
+
/** Dependency declarations found in this package's manifest */
|
|
153
|
+
childDependencies: DependencyDeclaration[];
|
|
154
|
+
/** Whether this is a marketplace package */
|
|
155
|
+
isMarketplace?: boolean;
|
|
156
|
+
/** Pre-loaded package data (for path/git fetchers) */
|
|
157
|
+
loaded?: LoadedPackageData;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Options passed to individual fetchers.
|
|
161
|
+
*/
|
|
162
|
+
export interface FetcherOptions {
|
|
163
|
+
/** Workspace root directory */
|
|
164
|
+
workspaceRoot: string;
|
|
165
|
+
/** How to resolve versions (local-only, remote-primary, default) */
|
|
166
|
+
resolutionMode: InstallResolutionMode;
|
|
167
|
+
/** Skip git cache */
|
|
168
|
+
skipCache?: boolean;
|
|
169
|
+
/** Authentication profile */
|
|
170
|
+
profile?: string;
|
|
171
|
+
/** API key for remote registry */
|
|
172
|
+
apiKey?: string;
|
|
173
|
+
/** Current depth in the dependency tree (for dev-dependency inclusion) */
|
|
174
|
+
depth: number;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Interface for source-type-specific package fetchers.
|
|
178
|
+
*/
|
|
179
|
+
export interface PackageFetcher {
|
|
180
|
+
/** Fetch metadata and child dependencies for a single declaration. */
|
|
181
|
+
fetch(declaration: DependencyDeclaration, declaredInDir: string, options: FetcherOptions): Promise<FetchResult>;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Top-level options for resolveWave().
|
|
185
|
+
*/
|
|
186
|
+
export interface WaveResolverOptions {
|
|
187
|
+
/** Workspace root directory */
|
|
188
|
+
workspaceRoot: string;
|
|
189
|
+
/** Root manifest path. If not set, uses workspace .openpackage/openpackage.yml */
|
|
190
|
+
rootManifestPath?: string;
|
|
191
|
+
/** Include dev-dependencies at root level (default: true) */
|
|
192
|
+
includeDev?: boolean;
|
|
193
|
+
/** Include root manifest package itself as a node in the graph */
|
|
194
|
+
includeRoot?: boolean;
|
|
195
|
+
/** Force install even when conflicts exist */
|
|
196
|
+
force?: boolean;
|
|
197
|
+
/** Skip git cache (for --remote flag) */
|
|
198
|
+
skipCache?: boolean;
|
|
199
|
+
/** Version resolution mode */
|
|
200
|
+
resolutionMode?: InstallResolutionMode;
|
|
201
|
+
/** Safety valve: maximum number of resolved nodes (default: 10_000) */
|
|
202
|
+
maxNodes?: number;
|
|
203
|
+
/** Callback for interactive conflict resolution */
|
|
204
|
+
onConflict?: (conflict: WaveVersionConflict, availableVersions: string[]) => Promise<string | null>;
|
|
205
|
+
/** Authentication profile */
|
|
206
|
+
profile?: string;
|
|
207
|
+
/** API key for remote registry */
|
|
208
|
+
apiKey?: string;
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/install/wave-resolver/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/install/wave-resolver/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version constraint solver for the wave resolver.
|
|
3
|
+
* Accumulates semver constraints per package name across waves
|
|
4
|
+
* and finds the highest satisfying version.
|
|
5
|
+
*/
|
|
6
|
+
import type { WaveVersionSolution, WaveVersionConflict } from './types.js';
|
|
7
|
+
export declare class WaveVersionSolver {
|
|
8
|
+
private constraints;
|
|
9
|
+
private availableVersions;
|
|
10
|
+
/**
|
|
11
|
+
* Add a version constraint for a package.
|
|
12
|
+
* Wildcard-like ranges (undefined, null, empty, '*', 'latest') are ignored
|
|
13
|
+
* since they impose no actual constraint.
|
|
14
|
+
*
|
|
15
|
+
* @param packageName - The package to constrain
|
|
16
|
+
* @param range - Semver range string, or a wildcard/empty value to skip
|
|
17
|
+
* @param requestedBy - Identifier of the dependent that requested this constraint
|
|
18
|
+
*/
|
|
19
|
+
addConstraint(packageName: string, range: string | undefined, requestedBy: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Register a known available version for a package.
|
|
22
|
+
* Only valid semver strings are accepted.
|
|
23
|
+
*
|
|
24
|
+
* @param packageName - The package name
|
|
25
|
+
* @param version - A semver version string gathered during fetching
|
|
26
|
+
*/
|
|
27
|
+
addAvailableVersion(packageName: string, version: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Solve all accumulated constraints and return resolved versions plus any conflicts.
|
|
30
|
+
*
|
|
31
|
+
* For each constrained package the solver finds the highest available version
|
|
32
|
+
* that satisfies every registered range. When no version satisfies all ranges
|
|
33
|
+
* the behaviour depends on the provided options:
|
|
34
|
+
* - `force`: pick the highest available version anyway and record a conflict.
|
|
35
|
+
* - `onConflict`: delegate to the caller (e.g. interactive prompt).
|
|
36
|
+
* - Otherwise: record the conflict with no resolved version.
|
|
37
|
+
*
|
|
38
|
+
* Packages with available versions but no constraints are included in the
|
|
39
|
+
* result with their highest available version.
|
|
40
|
+
*
|
|
41
|
+
* @param options - Optional force flag and conflict callback
|
|
42
|
+
* @returns Resolved version map and list of conflicts
|
|
43
|
+
*/
|
|
44
|
+
solve(options?: {
|
|
45
|
+
force?: boolean;
|
|
46
|
+
onConflict?: (conflict: WaveVersionConflict, versions: string[]) => Promise<string | null>;
|
|
47
|
+
}): Promise<WaveVersionSolution>;
|
|
48
|
+
/**
|
|
49
|
+
* Retrieve the accumulated constraints for a specific package.
|
|
50
|
+
* Useful for debugging and logging.
|
|
51
|
+
*
|
|
52
|
+
* @param packageName - The package to look up
|
|
53
|
+
* @returns The constraint entry, or undefined if no constraints exist
|
|
54
|
+
*/
|
|
55
|
+
getConstraintsForPackage(packageName: string): {
|
|
56
|
+
ranges: string[];
|
|
57
|
+
requestedBy: string[];
|
|
58
|
+
} | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Reset all accumulated constraints and available versions.
|
|
61
|
+
*/
|
|
62
|
+
clear(): void;
|
|
63
|
+
}
|
|
64
|
+
export default WaveVersionSolver;
|
|
65
|
+
//# sourceMappingURL=version-solver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-solver.d.ts","sourceRoot":"","sources":["../../../../src/core/install/wave-resolver/version-solver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA2B3E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,iBAAiB,CAAuC;IAEhE;;;;;;;;OAQG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAexF;;;;;;OAMG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAc/D;;;;;;;;;;;;;;;OAeG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAC5F,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0EhC;;;;;;OAMG;IACH,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS;IAItG;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version constraint solver for the wave resolver.
|
|
3
|
+
* Accumulates semver constraints per package name across waves
|
|
4
|
+
* and finds the highest satisfying version.
|
|
5
|
+
*/
|
|
6
|
+
import semver from 'semver';
|
|
7
|
+
function findHighestSatisfying(versions, ranges) {
|
|
8
|
+
if (versions.length === 0)
|
|
9
|
+
return null;
|
|
10
|
+
const satisfying = versions.filter(v => ranges.every(range => {
|
|
11
|
+
try {
|
|
12
|
+
return semver.satisfies(v, range, { includePrerelease: true });
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}));
|
|
18
|
+
if (satisfying.length === 0)
|
|
19
|
+
return null;
|
|
20
|
+
return semver.maxSatisfying(satisfying, '*', { includePrerelease: true });
|
|
21
|
+
}
|
|
22
|
+
export class WaveVersionSolver {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.constraints = new Map();
|
|
25
|
+
this.availableVersions = new Map();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add a version constraint for a package.
|
|
29
|
+
* Wildcard-like ranges (undefined, null, empty, '*', 'latest') are ignored
|
|
30
|
+
* since they impose no actual constraint.
|
|
31
|
+
*
|
|
32
|
+
* @param packageName - The package to constrain
|
|
33
|
+
* @param range - Semver range string, or a wildcard/empty value to skip
|
|
34
|
+
* @param requestedBy - Identifier of the dependent that requested this constraint
|
|
35
|
+
*/
|
|
36
|
+
addConstraint(packageName, range, requestedBy) {
|
|
37
|
+
if (!range || range.trim() === '' || range.trim() === '*' || range.trim().toLowerCase() === 'latest') {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
let entry = this.constraints.get(packageName);
|
|
41
|
+
if (!entry) {
|
|
42
|
+
entry = { ranges: [], requestedBy: [] };
|
|
43
|
+
this.constraints.set(packageName, entry);
|
|
44
|
+
}
|
|
45
|
+
entry.ranges.push(range.trim());
|
|
46
|
+
entry.requestedBy.push(requestedBy);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Register a known available version for a package.
|
|
50
|
+
* Only valid semver strings are accepted.
|
|
51
|
+
*
|
|
52
|
+
* @param packageName - The package name
|
|
53
|
+
* @param version - A semver version string gathered during fetching
|
|
54
|
+
*/
|
|
55
|
+
addAvailableVersion(packageName, version) {
|
|
56
|
+
if (!semver.valid(version)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
let versions = this.availableVersions.get(packageName);
|
|
60
|
+
if (!versions) {
|
|
61
|
+
versions = new Set();
|
|
62
|
+
this.availableVersions.set(packageName, versions);
|
|
63
|
+
}
|
|
64
|
+
versions.add(version);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Solve all accumulated constraints and return resolved versions plus any conflicts.
|
|
68
|
+
*
|
|
69
|
+
* For each constrained package the solver finds the highest available version
|
|
70
|
+
* that satisfies every registered range. When no version satisfies all ranges
|
|
71
|
+
* the behaviour depends on the provided options:
|
|
72
|
+
* - `force`: pick the highest available version anyway and record a conflict.
|
|
73
|
+
* - `onConflict`: delegate to the caller (e.g. interactive prompt).
|
|
74
|
+
* - Otherwise: record the conflict with no resolved version.
|
|
75
|
+
*
|
|
76
|
+
* Packages with available versions but no constraints are included in the
|
|
77
|
+
* result with their highest available version.
|
|
78
|
+
*
|
|
79
|
+
* @param options - Optional force flag and conflict callback
|
|
80
|
+
* @returns Resolved version map and list of conflicts
|
|
81
|
+
*/
|
|
82
|
+
async solve(options) {
|
|
83
|
+
const { force = false, onConflict } = options ?? {};
|
|
84
|
+
const resolved = new Map();
|
|
85
|
+
const conflicts = [];
|
|
86
|
+
// Track which packages we handle via constraints so we can add
|
|
87
|
+
// unconstrained-but-available packages afterwards.
|
|
88
|
+
const handled = new Set();
|
|
89
|
+
for (const [packageName, entry] of this.constraints) {
|
|
90
|
+
handled.add(packageName);
|
|
91
|
+
const versionSet = this.availableVersions.get(packageName);
|
|
92
|
+
const versions = versionSet ? Array.from(versionSet) : [];
|
|
93
|
+
if (entry.ranges.length === 0) {
|
|
94
|
+
// All constraints were wildcards - pick highest available
|
|
95
|
+
const highest = versions.length > 0
|
|
96
|
+
? semver.maxSatisfying(versions, '*', { includePrerelease: true })
|
|
97
|
+
: null;
|
|
98
|
+
if (highest) {
|
|
99
|
+
resolved.set(packageName, highest);
|
|
100
|
+
}
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const satisfying = findHighestSatisfying(versions, entry.ranges);
|
|
104
|
+
if (satisfying) {
|
|
105
|
+
resolved.set(packageName, satisfying);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// No version satisfies all constraints
|
|
109
|
+
const conflict = {
|
|
110
|
+
packageName,
|
|
111
|
+
ranges: entry.ranges,
|
|
112
|
+
requestedBy: entry.requestedBy,
|
|
113
|
+
};
|
|
114
|
+
if (force && versions.length > 0) {
|
|
115
|
+
const highest = semver.maxSatisfying(versions, '*', { includePrerelease: true });
|
|
116
|
+
if (highest) {
|
|
117
|
+
resolved.set(packageName, highest);
|
|
118
|
+
}
|
|
119
|
+
conflicts.push(conflict);
|
|
120
|
+
}
|
|
121
|
+
else if (onConflict && versions.length > 0) {
|
|
122
|
+
const chosen = await onConflict(conflict, versions);
|
|
123
|
+
if (chosen) {
|
|
124
|
+
resolved.set(packageName, chosen);
|
|
125
|
+
}
|
|
126
|
+
conflicts.push(conflict);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
conflicts.push(conflict);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Include packages that have available versions but no constraints
|
|
133
|
+
// (version discovered by the fetcher without any dependent declaring a range).
|
|
134
|
+
for (const [packageName, versionSet] of this.availableVersions) {
|
|
135
|
+
if (handled.has(packageName))
|
|
136
|
+
continue;
|
|
137
|
+
const versions = Array.from(versionSet);
|
|
138
|
+
const highest = versions.length > 0
|
|
139
|
+
? semver.maxSatisfying(versions, '*', { includePrerelease: true })
|
|
140
|
+
: null;
|
|
141
|
+
if (highest) {
|
|
142
|
+
resolved.set(packageName, highest);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return { resolved, conflicts };
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Retrieve the accumulated constraints for a specific package.
|
|
149
|
+
* Useful for debugging and logging.
|
|
150
|
+
*
|
|
151
|
+
* @param packageName - The package to look up
|
|
152
|
+
* @returns The constraint entry, or undefined if no constraints exist
|
|
153
|
+
*/
|
|
154
|
+
getConstraintsForPackage(packageName) {
|
|
155
|
+
return this.constraints.get(packageName);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Reset all accumulated constraints and available versions.
|
|
159
|
+
*/
|
|
160
|
+
clear() {
|
|
161
|
+
this.constraints.clear();
|
|
162
|
+
this.availableVersions.clear();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export default WaveVersionSolver;
|
|
166
|
+
//# sourceMappingURL=version-solver.js.map
|