@skaile/workspaces 4.36.0 → 4.38.0
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/CHANGELOG.md +44 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-SJELMLNK.js → asset-feeds-UYIFZKKG.js} +16 -16
- package/dist/asset-feeds-UYIFZKKG.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +9 -8
- package/dist/asset-manager/index.js +15 -14
- package/dist/asset-manager/installer.js +11 -10
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/asset-manager/src/index.d.ts +77 -18
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +11 -1
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +14 -13
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +11 -10
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +12 -11
- package/dist/bridge/drivers/continue.js.map +1 -1
- package/dist/bridge/drivers/echo.js +3 -3
- package/dist/bridge/drivers/gemini.js +6 -6
- package/dist/bridge/drivers/goose.js +12 -11
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +4 -4
- package/dist/bridge/drivers/opencode.js +12 -11
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +6 -6
- package/dist/bridge/index.js +15 -14
- package/dist/{chunk-3CLUU45N.js → chunk-27DN4DZD.js} +8 -8
- package/dist/{chunk-3CLUU45N.js.map → chunk-27DN4DZD.js.map} +1 -1
- package/dist/{chunk-VOEBLPXO.js → chunk-2EL2PBRC.js} +3 -3
- package/dist/{chunk-VOEBLPXO.js.map → chunk-2EL2PBRC.js.map} +1 -1
- package/dist/{chunk-VRFKCF3R.js → chunk-36ML6SFP.js} +4 -4
- package/dist/{chunk-VRFKCF3R.js.map → chunk-36ML6SFP.js.map} +1 -1
- package/dist/{chunk-O63QZ6XX.js → chunk-4WKZEMBD.js} +4 -4
- package/dist/{chunk-O63QZ6XX.js.map → chunk-4WKZEMBD.js.map} +1 -1
- package/dist/{chunk-2D3C4AJP.js → chunk-5CYEWBPB.js} +11 -4
- package/dist/chunk-5CYEWBPB.js.map +1 -0
- package/dist/{chunk-SQ7IN7KR.js → chunk-5K2VT6E2.js} +3 -3
- package/dist/{chunk-SQ7IN7KR.js.map → chunk-5K2VT6E2.js.map} +1 -1
- package/dist/{chunk-NTASYPDN.js → chunk-5NYBY6ZE.js} +3 -3
- package/dist/{chunk-NTASYPDN.js.map → chunk-5NYBY6ZE.js.map} +1 -1
- package/dist/{chunk-FQE2NBUH.js → chunk-6EMF4UZI.js} +8 -8
- package/dist/{chunk-FQE2NBUH.js.map → chunk-6EMF4UZI.js.map} +1 -1
- package/dist/{chunk-MQU632EK.js → chunk-6KPQDP7P.js} +2 -2
- package/dist/{chunk-MQU632EK.js.map → chunk-6KPQDP7P.js.map} +1 -1
- package/dist/{chunk-LVRKJW53.js → chunk-6VRZ6M2L.js} +10 -3
- package/dist/chunk-6VRZ6M2L.js.map +1 -0
- package/dist/{chunk-5L55HNNA.js → chunk-7FZSABQV.js} +5 -5
- package/dist/{chunk-5L55HNNA.js.map → chunk-7FZSABQV.js.map} +1 -1
- package/dist/{chunk-FLGLODDF.js → chunk-7RC37XFW.js} +3 -3
- package/dist/{chunk-FLGLODDF.js.map → chunk-7RC37XFW.js.map} +1 -1
- package/dist/{chunk-3VUHHDZW.js → chunk-7UL2SQQH.js} +4 -4
- package/dist/{chunk-3VUHHDZW.js.map → chunk-7UL2SQQH.js.map} +1 -1
- package/dist/{chunk-GEEW6SY2.js → chunk-A5EDMBFG.js} +2 -2
- package/dist/{chunk-GEEW6SY2.js.map → chunk-A5EDMBFG.js.map} +1 -1
- package/dist/{chunk-QABZZROM.js → chunk-ARUJBGAH.js} +3 -3
- package/dist/{chunk-QABZZROM.js.map → chunk-ARUJBGAH.js.map} +1 -1
- package/dist/{chunk-TILISP6X.js → chunk-BQ3HXZNT.js} +2 -2
- package/dist/{chunk-TILISP6X.js.map → chunk-BQ3HXZNT.js.map} +1 -1
- package/dist/{chunk-NVNKPWL4.js → chunk-CACCIOQL.js} +12 -12
- package/dist/{chunk-NVNKPWL4.js.map → chunk-CACCIOQL.js.map} +1 -1
- package/dist/{chunk-5JAO4MXA.js → chunk-DOVURNRK.js} +3 -3
- package/dist/{chunk-5JAO4MXA.js.map → chunk-DOVURNRK.js.map} +1 -1
- package/dist/{chunk-P4VHQA4N.js → chunk-DSB6X25D.js} +3 -3
- package/dist/{chunk-P4VHQA4N.js.map → chunk-DSB6X25D.js.map} +1 -1
- package/dist/{chunk-ZWTCXL3H.js → chunk-DV47JNI4.js} +3 -3
- package/dist/{chunk-ZWTCXL3H.js.map → chunk-DV47JNI4.js.map} +1 -1
- package/dist/{chunk-Q7SIVPM2.js → chunk-EETXMMZS.js} +3 -3
- package/dist/{chunk-Q7SIVPM2.js.map → chunk-EETXMMZS.js.map} +1 -1
- package/dist/{chunk-OEBAXTQ4.js → chunk-EOKAFBJ7.js} +3 -3
- package/dist/{chunk-OEBAXTQ4.js.map → chunk-EOKAFBJ7.js.map} +1 -1
- package/dist/{chunk-6BEGKO2Q.js → chunk-HUNZYTOS.js} +4 -3
- package/dist/chunk-HUNZYTOS.js.map +1 -0
- package/dist/{chunk-YOIENZHA.js → chunk-HXG6IZSF.js} +6 -6
- package/dist/{chunk-YOIENZHA.js.map → chunk-HXG6IZSF.js.map} +1 -1
- package/dist/{chunk-L22WTIIC.js → chunk-ILAZDNIA.js} +3 -3
- package/dist/{chunk-L22WTIIC.js.map → chunk-ILAZDNIA.js.map} +1 -1
- package/dist/{chunk-FWZTKSYI.js → chunk-J5UF3OOS.js} +10 -10
- package/dist/{chunk-FWZTKSYI.js.map → chunk-J5UF3OOS.js.map} +1 -1
- package/dist/{chunk-QKXDRBLL.js → chunk-JEPSP6XK.js} +11 -80
- package/dist/chunk-JEPSP6XK.js.map +1 -0
- package/dist/{chunk-KIFJWSNC.js → chunk-KAJH3XPW.js} +7 -3
- package/dist/chunk-KAJH3XPW.js.map +1 -0
- package/dist/chunk-LOHQTTUV.js +29 -0
- package/dist/chunk-LOHQTTUV.js.map +1 -0
- package/dist/{chunk-MDBAEEY5.js → chunk-MQ42OYKH.js} +159 -7
- package/dist/chunk-MQ42OYKH.js.map +1 -0
- package/dist/{chunk-5JJ5KQUM.js → chunk-MS2JK4V7.js} +6 -6
- package/dist/{chunk-5JJ5KQUM.js.map → chunk-MS2JK4V7.js.map} +1 -1
- package/dist/{chunk-JRSLMZOT.js → chunk-OKGUDNDT.js} +37 -7
- package/dist/chunk-OKGUDNDT.js.map +1 -0
- package/dist/{chunk-DFZDL62S.js → chunk-OLMNDIAU.js} +14 -9
- package/dist/chunk-OLMNDIAU.js.map +1 -0
- package/dist/{chunk-3SUWLY3H.js → chunk-OQRB7JUS.js} +3 -3
- package/dist/{chunk-3SUWLY3H.js.map → chunk-OQRB7JUS.js.map} +1 -1
- package/dist/{chunk-TTITGVXV.js → chunk-PRCUGFXV.js} +3 -3
- package/dist/{chunk-TTITGVXV.js.map → chunk-PRCUGFXV.js.map} +1 -1
- package/dist/{chunk-MRS5YHPI.js → chunk-QBQITQAM.js} +3 -3
- package/dist/{chunk-MRS5YHPI.js.map → chunk-QBQITQAM.js.map} +1 -1
- package/dist/{chunk-PKGI5QG7.js → chunk-QWWDDU5Z.js} +274 -67
- package/dist/chunk-QWWDDU5Z.js.map +1 -0
- package/dist/{chunk-NKYNDLCB.js → chunk-R2U346ER.js} +3 -3
- package/dist/{chunk-NKYNDLCB.js.map → chunk-R2U346ER.js.map} +1 -1
- package/dist/{chunk-KVDXSEQH.js → chunk-R5ARWJGE.js} +104 -63
- package/dist/chunk-R5ARWJGE.js.map +1 -0
- package/dist/chunk-TLKM4M47.js +78 -0
- package/dist/chunk-TLKM4M47.js.map +1 -0
- package/dist/{chunk-NFECHLV6.js → chunk-TNWXGHLD.js} +3 -3
- package/dist/{chunk-NFECHLV6.js.map → chunk-TNWXGHLD.js.map} +1 -1
- package/dist/{chunk-H3KXUUYQ.js → chunk-VDBP6Y5M.js} +4 -4
- package/dist/{chunk-H3KXUUYQ.js.map → chunk-VDBP6Y5M.js.map} +1 -1
- package/dist/{chunk-XN7DAZB7.js → chunk-VJNTB4DN.js} +5 -5
- package/dist/chunk-VJNTB4DN.js.map +1 -0
- package/dist/{chunk-BSIHJZKN.js → chunk-XU7JET5Z.js} +107 -26
- package/dist/chunk-XU7JET5Z.js.map +1 -0
- package/dist/{chunk-LIS5KT2X.js → chunk-YCJ3PJNB.js} +5 -5
- package/dist/{chunk-LIS5KT2X.js.map → chunk-YCJ3PJNB.js.map} +1 -1
- package/dist/{chunk-VCLN2IUM.js → chunk-YCMZHL4T.js} +31 -27
- package/dist/chunk-YCMZHL4T.js.map +1 -0
- package/dist/{chunk-JS7DCCDA.js → chunk-YNUBJY3L.js} +4 -4
- package/dist/chunk-YNUBJY3L.js.map +1 -0
- package/dist/{chunk-S63H4HDH.js → chunk-YQEF36D5.js} +4 -4
- package/dist/{chunk-S63H4HDH.js.map → chunk-YQEF36D5.js.map} +1 -1
- package/dist/{chunk-FJYOQMXT.js → chunk-YV3YI3TA.js} +32 -16
- package/dist/chunk-YV3YI3TA.js.map +1 -0
- package/dist/cli/index.js +755 -533
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/cache.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +28 -3
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/complete-resolvers.d.ts +1 -7
- package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
- package/dist/cli/src/commands/complete.d.ts.map +1 -1
- package/dist/cli/src/commands/diff.d.ts +3 -1
- package/dist/cli/src/commands/diff.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +8 -0
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts +7 -2
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts +12 -2
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +2 -2
- package/dist/cli/src/commands/publish-core.d.ts +21 -0
- package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
- package/dist/cli/src/commands/skailify-lib.d.ts +18 -1
- package/dist/cli/src/commands/skailify-lib.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/store.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/paths.d.ts +1 -1
- package/dist/cli/src/paths.d.ts.map +1 -1
- package/dist/cli/src/store-auth.d.ts.map +1 -1
- package/dist/connectors/config.js +6 -5
- package/dist/connectors/index.js +19 -18
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +8 -7
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +6 -5
- package/dist/core/src/asset-roots.d.ts +2 -12
- package/dist/core/src/asset-roots.d.ts.map +1 -1
- package/dist/core/src/cache-paths.d.ts +7 -3
- package/dist/core/src/cache-paths.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +3 -3
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +27 -4
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +26 -6
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/settings.d.ts +2 -1
- package/dist/core/src/settings.d.ts.map +1 -1
- package/dist/core/src/store.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/store.js +2 -1
- package/dist/core/workspace-config.js +5 -4
- package/dist/deploy/index.js +8 -7
- package/dist/deploy/index.js.map +1 -1
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/domains.d.ts +6 -1
- package/dist/discovery/src/domains.d.ts.map +1 -1
- package/dist/discovery/src/index.d.ts +1 -1
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/{ensure-sources-SYZO2HNP.js → ensure-sources-VX63EKY7.js} +18 -17
- package/dist/ensure-sources-VX63EKY7.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +19 -18
- package/dist/factory-assets/connectors/deploy.js +19 -18
- package/dist/factory-assets/connectors/devserver.js +19 -18
- package/dist/factory-assets/connectors/flow/adapter.js +19 -18
- package/dist/factory-assets/connectors/flow/engine.js +9 -8
- package/dist/factory-assets/connectors/flow/run-flow.js +21 -20
- package/dist/factory-assets/connectors/flow.js +19 -18
- package/dist/factory-assets/connectors/git.js +19 -18
- package/dist/factory-assets/connectors/gmail.js +19 -18
- package/dist/factory-assets/connectors/googledrive.js +19 -18
- package/dist/factory-assets/connectors/local.js +19 -18
- package/dist/factory-assets/connectors/mattermost.js +19 -18
- package/dist/factory-assets/connectors/memory.js +19 -18
- package/dist/factory-assets/connectors/minio.js +19 -18
- package/dist/factory-assets/connectors/postgres.js +19 -18
- package/dist/factory-assets/connectors/s3.js +19 -18
- package/dist/factory-assets/connectors/sharepoint.js +19 -18
- package/dist/factory-assets/connectors/sqlite.js +19 -18
- package/dist/factory-assets/connectors/static-server.js +19 -18
- package/dist/factory-assets/connectors/tunnel.js +19 -18
- package/dist/factory-assets/connectors/webdav.js +19 -18
- package/dist/factory-assets/connectors/xstate-store.js +19 -18
- package/dist/factory-assets/connectors/xstate.js +19 -18
- package/dist/flows-PX53XFV7.js +25 -0
- package/dist/{flows-6MDMBQUZ.js.map → flows-PX53XFV7.js.map} +1 -1
- package/dist/{helpers-IMUCDNME.js → helpers-DF55G2YC.js} +18 -17
- package/dist/{helpers-IMUCDNME.js.map → helpers-DF55G2YC.js.map} +1 -1
- package/dist/library/index.js +12 -11
- package/dist/library/install.js +2 -2
- package/dist/library/src/config.d.ts +11 -9
- package/dist/library/src/config.d.ts.map +1 -1
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library-manager.d.ts +7 -0
- package/dist/library/src/local/library-manager.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +5 -4
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/schema.d.ts +2 -0
- package/dist/library/src/local/schema.d.ts.map +1 -1
- package/dist/library/src/local/sidecar-paths.d.ts.map +1 -1
- package/dist/library/src/local/store-paths.d.ts.map +1 -1
- package/dist/library/src/remote/cache.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts +34 -0
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-XAIAHKRL.js → library-publish-2PNWJJOY.js} +95 -41
- package/dist/library-publish-2PNWJJOY.js.map +1 -0
- package/dist/open-library-SUVOMIWZ.js +38 -0
- package/dist/{open-library-6N3XZ2XL.js.map → open-library-SUVOMIWZ.js.map} +1 -1
- package/dist/paths-W4LDORQQ.js +21 -0
- package/dist/{paths-4MTICP3T.js.map → paths-W4LDORQQ.js.map} +1 -1
- package/dist/{plugin-store-GQ4WQZJ2.js → plugin-store-D45CREMJ.js} +10 -9
- package/dist/plugin-store-D45CREMJ.js.map +1 -0
- package/dist/project-RTLVOXUU.js +34 -0
- package/dist/{project-HESTMGPU.js.map → project-RTLVOXUU.js.map} +1 -1
- package/dist/resolver/index.js +9 -8
- package/dist/runner/index.js +28 -27
- package/dist/runner/src/composition/bootstrap.d.ts +1 -1
- package/dist/runner/src/composition/bootstrap.d.ts.map +1 -1
- package/dist/runner/src/prompt-turn-queue.d.ts +27 -4
- package/dist/runner/src/prompt-turn-queue.d.ts.map +1 -1
- package/dist/runner/src/runtime-session-emit.d.ts +2 -1
- package/dist/runner/src/runtime-session-emit.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +15 -14
- package/dist/sdk/bridge.js +15 -14
- package/dist/sdk/core.js +8 -7
- package/dist/sdk/flow.js +9 -8
- package/dist/sdk/index.js +28 -27
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +9 -8
- package/dist/sdk/runner.js +28 -27
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/store.js +1 -1
- package/dist/sdk/types.js +1 -1
- package/dist/secrets/index.js +18 -1
- package/dist/secrets/src/providers/local.d.ts.map +1 -1
- package/dist/session/index.js +2 -2
- package/dist/session/src/dispatcher.d.ts.map +1 -1
- package/dist/{setup-PQG5DH5Z.js → setup-ZA7VZL72.js} +25 -24
- package/dist/setup-ZA7VZL72.js.map +1 -0
- package/dist/skills-R3RPIPWP.js +25 -0
- package/dist/{skills-JHUY4DFE.js.map → skills-R3RPIPWP.js.map} +1 -1
- package/dist/{source-PNYNVVPM.js → source-Y5YQ7M53.js} +21 -20
- package/dist/{source-PNYNVVPM.js.map → source-Y5YQ7M53.js.map} +1 -1
- package/dist/{source-manifest-publish-6O6H4T2P.js → source-manifest-publish-RZIJNRIW.js} +24 -25
- package/dist/source-manifest-publish-RZIJNRIW.js.map +1 -0
- package/dist/store/index.js +1 -1
- package/dist/store/src/store.d.ts +9 -0
- package/dist/store/src/store.d.ts.map +1 -1
- package/dist/store/src/types.d.ts +17 -0
- package/dist/store/src/types.d.ts.map +1 -1
- package/dist/tui/index.js +28 -27
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/events.d.ts +28 -3
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +1 -1
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/skill.d.ts +10 -0
- package/dist/types/src/manifests/skill.d.ts.map +1 -1
- package/dist/types/src/protocol.d.ts +2 -0
- package/dist/types/src/protocol.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +12 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +15 -14
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/asset-feeds-SJELMLNK.js.map +0 -1
- package/dist/chunk-2D3C4AJP.js.map +0 -1
- package/dist/chunk-422WJ2QC.js +0 -158
- package/dist/chunk-422WJ2QC.js.map +0 -1
- package/dist/chunk-6BEGKO2Q.js.map +0 -1
- package/dist/chunk-BSIHJZKN.js.map +0 -1
- package/dist/chunk-DFZDL62S.js.map +0 -1
- package/dist/chunk-FJYOQMXT.js.map +0 -1
- package/dist/chunk-JRSLMZOT.js.map +0 -1
- package/dist/chunk-JS7DCCDA.js.map +0 -1
- package/dist/chunk-KIFJWSNC.js.map +0 -1
- package/dist/chunk-KVDXSEQH.js.map +0 -1
- package/dist/chunk-LVRKJW53.js.map +0 -1
- package/dist/chunk-MDBAEEY5.js.map +0 -1
- package/dist/chunk-PKGI5QG7.js.map +0 -1
- package/dist/chunk-QKXDRBLL.js.map +0 -1
- package/dist/chunk-VCLN2IUM.js.map +0 -1
- package/dist/chunk-XN7DAZB7.js.map +0 -1
- package/dist/ensure-sources-SYZO2HNP.js.map +0 -1
- package/dist/flows-6MDMBQUZ.js +0 -24
- package/dist/library-publish-XAIAHKRL.js.map +0 -1
- package/dist/open-library-6N3XZ2XL.js +0 -37
- package/dist/paths-4MTICP3T.js +0 -20
- package/dist/plugin-store-GQ4WQZJ2.js.map +0 -1
- package/dist/project-HESTMGPU.js +0 -33
- package/dist/setup-PQG5DH5Z.js.map +0 -1
- package/dist/skills-JHUY4DFE.js +0 -24
- package/dist/source-manifest-publish-6O6H4T2P.js.map +0 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { getStoreManifestsDir } from './chunk-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { getStoreManifestsDir } from './chunk-XU7JET5Z.js';
|
|
2
|
+
import { readManifestSourceConfig, discoverAssetsInTree } from './chunk-OLMNDIAU.js';
|
|
3
|
+
import { deployAll, removeAsset, createScaffold } from './chunk-YCMZHL4T.js';
|
|
4
|
+
import { resolveLibraryDir, buildLibraryLockEntries, writeLock, buildLockFile, readLock, verifyLock, extractForPatch, generatePatch, savePatch, applyPatch } from './chunk-YV3YI3TA.js';
|
|
5
|
+
import { resolveRuntimeAssets, factoryAssetRoots } from './chunk-36ML6SFP.js';
|
|
6
|
+
import { deployedBase, isDeployed, deployedDir } from './chunk-KAJH3XPW.js';
|
|
7
|
+
import { loadMcpServerDeclarations, resolveGlobalHarnesses, resolveGlobalSkWorkspaceConfig, resolveSkWorkspaceConfig, getGlobalCacheDir, sourceCacheKey, getRepoCommit, coerceVersion, matchPin, resolveAll, buildProvenanceIndex, ensureRepo, sourceShortName, scanRepo, SKAILE_YAML_DEFAULT, checkRepoStatus, resolveAsset, readLinks, storeManifestSlug } from './chunk-JEPSP6XK.js';
|
|
8
|
+
import { globalSkaileDir, globalCacheRoot, migrateLegacyDir } from './chunk-TLKM4M47.js';
|
|
9
|
+
import { scanDirectory, parseRequires } from './chunk-5K2VT6E2.js';
|
|
10
|
+
import { parseAssetRef, slugifyAssetName, assetRefToStr } from './chunk-A5EDMBFG.js';
|
|
9
11
|
import { appendHistory, getRecentHistory, clearHistory } from './chunk-KTBKW2FI.js';
|
|
10
12
|
import { commitChanges } from './chunk-UQ6LFBPZ.js';
|
|
11
13
|
import { spawnSync } from 'child_process';
|
|
@@ -239,18 +241,50 @@ function commonDirPrefix(paths) {
|
|
|
239
241
|
}
|
|
240
242
|
function indexLockByKindName(lock) {
|
|
241
243
|
const lockByKindName = /* @__PURE__ */ new Map();
|
|
242
|
-
for (const [key] of Object.entries(lock?.assets ?? {})) {
|
|
244
|
+
for (const [key, entry] of Object.entries(lock?.assets ?? {})) {
|
|
243
245
|
const parsed = parseCanonicalLockKey(key);
|
|
244
246
|
if (parsed.kind && parsed.name && parsed.publisher && parsed.version) {
|
|
245
247
|
lockByKindName.set(`${parsed.kind}:${parsed.name}`, {
|
|
246
248
|
publisher: parsed.publisher,
|
|
247
249
|
version: parsed.version,
|
|
248
|
-
url:
|
|
250
|
+
url: entry.source?.url ?? "",
|
|
251
|
+
library: entry.library !== void 0
|
|
249
252
|
});
|
|
250
253
|
}
|
|
251
254
|
}
|
|
252
255
|
return lockByKindName;
|
|
253
256
|
}
|
|
257
|
+
function libraryDiskHashes(libPath, cache) {
|
|
258
|
+
let hashes = cache.get(libPath);
|
|
259
|
+
if (!hashes) {
|
|
260
|
+
const sourceConfig = readManifestSourceConfig(libPath) ?? {
|
|
261
|
+
version: 1,
|
|
262
|
+
publisher_default: "@library",
|
|
263
|
+
default_ref: "main",
|
|
264
|
+
publisher_overrides: [],
|
|
265
|
+
dev_paths: []
|
|
266
|
+
};
|
|
267
|
+
hashes = new Map(
|
|
268
|
+
discoverAssetsInTree(libPath, { sourceConfig }).assets.map((a) => [
|
|
269
|
+
`${a.kind}:${a.name}`,
|
|
270
|
+
a.sha256
|
|
271
|
+
])
|
|
272
|
+
);
|
|
273
|
+
cache.set(libPath, hashes);
|
|
274
|
+
}
|
|
275
|
+
return hashes;
|
|
276
|
+
}
|
|
277
|
+
function newestLibraryDef(snap, libraryName, id) {
|
|
278
|
+
const lib = snap?.libraries.find((l) => l.name === libraryName);
|
|
279
|
+
if (!snap || !lib) return void 0;
|
|
280
|
+
let best;
|
|
281
|
+
for (const d of snap.defs) {
|
|
282
|
+
if (d.libraryId !== lib.id || d.kind !== id.kind || d.name !== id.name) continue;
|
|
283
|
+
if (d.publisher.replace(/^@/, "") !== id.publisher) continue;
|
|
284
|
+
if (!best || gt(coerceVersion(d.version), coerceVersion(best.version))) best = d;
|
|
285
|
+
}
|
|
286
|
+
return best;
|
|
287
|
+
}
|
|
254
288
|
function computeSyncStatus(repoStatus) {
|
|
255
289
|
if (!repoStatus) return "unknown";
|
|
256
290
|
if (repoStatus.kind === "local") return "local";
|
|
@@ -596,38 +630,46 @@ var AssetManager = class {
|
|
|
596
630
|
* the consume side of `library create` — a freshly authored asset is
|
|
597
631
|
* deployable with `skaile add <kind>:@<publisher>/<name>` without publishing.
|
|
598
632
|
*
|
|
599
|
-
*
|
|
600
|
-
*
|
|
601
|
-
*
|
|
602
|
-
* re-discovered on every `add`/`install`, so reconcile never treats them as
|
|
603
|
-
* stale.
|
|
633
|
+
* Local read (no network) and mirrors how `findSkills` discovers library
|
|
634
|
+
* content. The returned `libraryOf` map names the library each entry came from
|
|
635
|
+
* so callers can lock it as library-origin (see {@link libraryLockEntries}).
|
|
604
636
|
*
|
|
605
|
-
* @returns the matched deploy entries
|
|
637
|
+
* @returns the matched deploy entries, the set of `missing` refs covered, and
|
|
638
|
+
* each entry's originating library name.
|
|
606
639
|
*/
|
|
607
640
|
async resolveLibraryEntries(missing) {
|
|
608
641
|
const resolved = /* @__PURE__ */ new Set();
|
|
609
|
-
|
|
610
|
-
|
|
642
|
+
const libraryOf = /* @__PURE__ */ new Map();
|
|
643
|
+
if (missing.length === 0) return { entries: [], resolved, libraryOf };
|
|
644
|
+
const roots = [];
|
|
645
|
+
for (const l of (await this.loadLibraryIndex())?.libraries ?? []) {
|
|
646
|
+
if (existsSync(l.path)) roots.push({ name: l.name, dir: l.path });
|
|
647
|
+
}
|
|
648
|
+
const registered = new Set(roots.map((r) => r.name));
|
|
611
649
|
try {
|
|
612
|
-
librariesRoot = resolveLibraryDir();
|
|
650
|
+
const librariesRoot = resolveLibraryDir();
|
|
651
|
+
if (existsSync(librariesRoot)) {
|
|
652
|
+
for (const dirent of readdirSync(librariesRoot, { withFileTypes: true })) {
|
|
653
|
+
if (dirent.isDirectory() && !registered.has(dirent.name)) {
|
|
654
|
+
roots.push({ name: dirent.name, dir: join(librariesRoot, dirent.name) });
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
613
658
|
} catch {
|
|
614
|
-
return { entries: [], resolved };
|
|
615
659
|
}
|
|
616
|
-
if (
|
|
660
|
+
if (roots.length === 0) return { entries: [], resolved, libraryOf };
|
|
617
661
|
const byKey = /* @__PURE__ */ new Map();
|
|
618
|
-
for (const
|
|
619
|
-
|
|
620
|
-
const
|
|
621
|
-
const publisher = readDeclaredPublisher(libPath) ?? slugifyAssetName(dirent.name);
|
|
622
|
-
for (const entry of await scanDirectory(libPath, publisher)) {
|
|
662
|
+
for (const { name, dir } of roots) {
|
|
663
|
+
const publisher = readDeclaredPublisher(dir) ?? slugifyAssetName(name);
|
|
664
|
+
for (const entry of await scanDirectory(dir, publisher)) {
|
|
623
665
|
const key = `${entry.kind}:@${entry.publisher}/${entry.name}`;
|
|
624
666
|
const prev = byKey.get(key);
|
|
625
|
-
if (!prev || gt(coerceVersion(entry.version ?? ""), coerceVersion(prev.version ?? ""))) {
|
|
626
|
-
byKey.set(key, entry);
|
|
667
|
+
if (!prev || gt(coerceVersion(entry.version ?? ""), coerceVersion(prev.entry.version ?? ""))) {
|
|
668
|
+
byKey.set(key, { entry, library: name });
|
|
627
669
|
}
|
|
628
670
|
}
|
|
629
671
|
}
|
|
630
|
-
if (byKey.size === 0) return { entries: [], resolved };
|
|
672
|
+
if (byKey.size === 0) return { entries: [], resolved, libraryOf };
|
|
631
673
|
const entries = [];
|
|
632
674
|
for (const ref of missing) {
|
|
633
675
|
let parsed;
|
|
@@ -637,13 +679,126 @@ var AssetManager = class {
|
|
|
637
679
|
continue;
|
|
638
680
|
}
|
|
639
681
|
if (!parsed.publisher) continue;
|
|
640
|
-
const
|
|
641
|
-
if (!
|
|
642
|
-
if (parsed.pin && !matchPin(parsed.pin, entry.version ?? "")) continue;
|
|
643
|
-
entries.push(entry);
|
|
682
|
+
const hit = byKey.get(`${parsed.kind}:@${parsed.publisher}/${parsed.name}`);
|
|
683
|
+
if (!hit) continue;
|
|
684
|
+
if (parsed.pin && !matchPin(parsed.pin, hit.entry.version ?? "")) continue;
|
|
685
|
+
entries.push(hit.entry);
|
|
686
|
+
libraryOf.set(hit.entry, hit.library);
|
|
644
687
|
resolved.add(ref);
|
|
645
688
|
}
|
|
646
|
-
return { entries, resolved };
|
|
689
|
+
return { entries, resolved, libraryOf };
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Open the local index and snapshot its libraries + asset definitions.
|
|
693
|
+
* Best-effort: no index file (never indexed), or any open/guard failure,
|
|
694
|
+
* yields `null` — a lock/outdated read must never create `index.db` or throw.
|
|
695
|
+
*/
|
|
696
|
+
async loadLibraryIndex() {
|
|
697
|
+
try {
|
|
698
|
+
const { LocalIndex, resolveIndexPath } = await import('./library/index.js');
|
|
699
|
+
const indexPath = this.indexPathOverride ?? resolveIndexPath();
|
|
700
|
+
if (!existsSync(indexPath)) return null;
|
|
701
|
+
const index = new LocalIndex({ indexPath });
|
|
702
|
+
try {
|
|
703
|
+
return { libraries: await index.listSources(), defs: await index.listAssetDefs() };
|
|
704
|
+
} finally {
|
|
705
|
+
index.close();
|
|
706
|
+
}
|
|
707
|
+
} catch {
|
|
708
|
+
return null;
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
/**
|
|
712
|
+
* Library-origin lock entries for the assets {@link resolveLibraryEntries}
|
|
713
|
+
* matched. The locked version comes from the library index when it knows the
|
|
714
|
+
* asset (its manifest-declared version is authoritative), else from the
|
|
715
|
+
* on-disk asset. The hash is computed from the files on disk, so it matches
|
|
716
|
+
* what `install --locked` re-hashes.
|
|
717
|
+
*/
|
|
718
|
+
async libraryLockEntries(lib) {
|
|
719
|
+
if (lib.entries.length === 0) return {};
|
|
720
|
+
const snap = await this.loadLibraryIndex();
|
|
721
|
+
const diskHashes = /* @__PURE__ */ new Map();
|
|
722
|
+
return buildLibraryLockEntries(
|
|
723
|
+
lib.entries.map((e) => {
|
|
724
|
+
const name = lib.libraryOf.get(e) ?? "";
|
|
725
|
+
const publisher = e.publisher ?? "";
|
|
726
|
+
const def = newestLibraryDef(snap, name, { kind: e.kind, publisher, name: e.name });
|
|
727
|
+
const libPath = this.libraryPath(name, snap);
|
|
728
|
+
const sha256 = (libPath ? libraryDiskHashes(libPath, diskHashes).get(`${e.kind}:${e.name}`) : void 0) ?? def?.sha256;
|
|
729
|
+
return {
|
|
730
|
+
kind: e.kind,
|
|
731
|
+
publisher,
|
|
732
|
+
name: e.name,
|
|
733
|
+
library: { name, version: def?.version || e.version || "0.0.0", sha256 }
|
|
734
|
+
};
|
|
735
|
+
})
|
|
736
|
+
);
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Re-resolve every library-origin lock entry from its named library, for
|
|
740
|
+
* `install --locked`. An entry is restored only when its library is still
|
|
741
|
+
* registered/on disk, still holds the asset, and still offers the locked
|
|
742
|
+
* version; anything else is reported in `missing` with the reason.
|
|
743
|
+
*/
|
|
744
|
+
async restoreLibraryLockEntries(lock) {
|
|
745
|
+
const entries = [];
|
|
746
|
+
const missing = [];
|
|
747
|
+
const locked = Object.entries(lock.assets).filter(([, e]) => e.library !== void 0);
|
|
748
|
+
if (locked.length === 0) return { entries, missing };
|
|
749
|
+
const snap = await this.loadLibraryIndex();
|
|
750
|
+
const diskHashes = /* @__PURE__ */ new Map();
|
|
751
|
+
for (const [ref, e] of locked) {
|
|
752
|
+
const origin = e.library;
|
|
753
|
+
const { publisher, kind, name } = parseCanonicalLockKey(ref);
|
|
754
|
+
if (!publisher || !kind || !name) {
|
|
755
|
+
missing.push(`${ref} (unparseable lock key)`);
|
|
756
|
+
continue;
|
|
757
|
+
}
|
|
758
|
+
const libPath = this.libraryPath(origin.name, snap);
|
|
759
|
+
if (!libPath) {
|
|
760
|
+
missing.push(`${ref} (library "${origin.name}" not found)`);
|
|
761
|
+
continue;
|
|
762
|
+
}
|
|
763
|
+
const found = (await scanDirectory(libPath, publisher)).find(
|
|
764
|
+
(x) => x.kind === kind && x.name === name
|
|
765
|
+
);
|
|
766
|
+
if (!found) {
|
|
767
|
+
missing.push(`${ref} (not found in library "${origin.name}")`);
|
|
768
|
+
continue;
|
|
769
|
+
}
|
|
770
|
+
const def = newestLibraryDef(snap, origin.name, { kind, publisher, name });
|
|
771
|
+
const current = def?.version || found.version || "0.0.0";
|
|
772
|
+
if (current !== origin.version) {
|
|
773
|
+
missing.push(
|
|
774
|
+
`${ref} (library "${origin.name}" is at ${current}, locked ${origin.version})`
|
|
775
|
+
);
|
|
776
|
+
continue;
|
|
777
|
+
}
|
|
778
|
+
if (origin.sha256) {
|
|
779
|
+
const onDisk = libraryDiskHashes(libPath, diskHashes).get(`${kind}:${name}`);
|
|
780
|
+
if (onDisk !== void 0 && onDisk !== origin.sha256) {
|
|
781
|
+
missing.push(`${ref} (library "${origin.name}" content changed since lock)`);
|
|
782
|
+
continue;
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
entries.push(found);
|
|
786
|
+
}
|
|
787
|
+
return { entries, missing };
|
|
788
|
+
}
|
|
789
|
+
/**
|
|
790
|
+
* On-disk root of the library named `name`: the registered path from the index
|
|
791
|
+
* when it exists, else `<libraries dir>/<name>`; `null` when neither is a directory.
|
|
792
|
+
*/
|
|
793
|
+
libraryPath(name, snap) {
|
|
794
|
+
const registered = snap?.libraries.find((l) => l.name === name)?.path;
|
|
795
|
+
if (registered && existsSync(registered)) return registered;
|
|
796
|
+
try {
|
|
797
|
+
const guess = join(resolveLibraryDir(), name);
|
|
798
|
+
return existsSync(guess) ? guess : null;
|
|
799
|
+
} catch {
|
|
800
|
+
return null;
|
|
801
|
+
}
|
|
647
802
|
}
|
|
648
803
|
// ── Store fetch-then-deploy ────────────────────────────────────────────
|
|
649
804
|
/** A candidate's stable identity key (`<publisher>/<kind>:<name>@<version>`). */
|
|
@@ -855,7 +1010,8 @@ var AssetManager = class {
|
|
|
855
1010
|
stores
|
|
856
1011
|
});
|
|
857
1012
|
const lib = await this.resolveLibraryEntries(missing);
|
|
858
|
-
const
|
|
1013
|
+
const libraryLock = await this.libraryLockEntries(lib);
|
|
1014
|
+
const removed = this.reconcileRemovedAssets(resolved, new Set(Object.keys(libraryLock)));
|
|
859
1015
|
const entries = [...await this.buildCatalogEntries(resolved, repositories), ...lib.entries];
|
|
860
1016
|
const deployed = [
|
|
861
1017
|
...new Set(
|
|
@@ -865,9 +1021,9 @@ var AssetManager = class {
|
|
|
865
1021
|
)
|
|
866
1022
|
];
|
|
867
1023
|
await this.renderDriverMcpConfig();
|
|
868
|
-
const lockWritten = resolved.length > 0 || existsSync(this.lockPath);
|
|
1024
|
+
const lockWritten = resolved.length > 0 || lib.entries.length > 0 || existsSync(this.lockPath);
|
|
869
1025
|
if (lockWritten) {
|
|
870
|
-
writeLock(this.lockPath, buildLockFile(resolved, overridesApplied));
|
|
1026
|
+
writeLock(this.lockPath, buildLockFile(resolved, overridesApplied, libraryLock));
|
|
871
1027
|
}
|
|
872
1028
|
this.recordInstallHistory(deployed, removed);
|
|
873
1029
|
const { npmInstalled, npmFailed } = await this.installRuntimeAssetDeps();
|
|
@@ -918,13 +1074,16 @@ var AssetManager = class {
|
|
|
918
1074
|
}
|
|
919
1075
|
/**
|
|
920
1076
|
* Remove stale assets — those recorded in the old lock but absent from the
|
|
921
|
-
* newly resolved set
|
|
1077
|
+
* newly resolved set (`resolved` source candidates plus `keep`, the canonical
|
|
1078
|
+
* refs of library-origin assets locked in this run). Returns the list of
|
|
1079
|
+
* removed refs.
|
|
922
1080
|
*/
|
|
923
|
-
reconcileRemovedAssets(resolved) {
|
|
1081
|
+
reconcileRemovedAssets(resolved, keep = /* @__PURE__ */ new Set()) {
|
|
924
1082
|
const oldLock = this.tryReadLock();
|
|
925
|
-
const resolvedRefs = new Set(
|
|
926
|
-
resolved.map((c) => `${c.kind}:@${c.publisher}/${c.name}#${c.version}`)
|
|
927
|
-
|
|
1083
|
+
const resolvedRefs = /* @__PURE__ */ new Set([
|
|
1084
|
+
...resolved.map((c) => `${c.kind}:@${c.publisher}/${c.name}#${c.version}`),
|
|
1085
|
+
...keep
|
|
1086
|
+
]);
|
|
928
1087
|
const removed = [];
|
|
929
1088
|
if (oldLock) {
|
|
930
1089
|
for (const ref of Object.keys(oldLock.assets)) {
|
|
@@ -1067,6 +1226,7 @@ var AssetManager = class {
|
|
|
1067
1226
|
}
|
|
1068
1227
|
const resolved = [];
|
|
1069
1228
|
for (const [ref, entry] of Object.entries(lock.assets)) {
|
|
1229
|
+
if (!entry.source) continue;
|
|
1070
1230
|
const { publisher, kind, name } = parseCanonicalLockKey(ref);
|
|
1071
1231
|
if (!publisher || !kind || !name) continue;
|
|
1072
1232
|
const slug = sourceCacheKey(entry.source.url);
|
|
@@ -1085,15 +1245,21 @@ var AssetManager = class {
|
|
|
1085
1245
|
});
|
|
1086
1246
|
if (!repositories[slug]) repositories[slug] = { url: entry.source.url, path: cloneDir };
|
|
1087
1247
|
}
|
|
1248
|
+
const library = await this.restoreLibraryLockEntries(lock);
|
|
1088
1249
|
const deployed = [
|
|
1089
1250
|
...new Set(
|
|
1090
1251
|
this.targetHarnesses().flatMap(
|
|
1091
|
-
(t) => deployAll(
|
|
1252
|
+
(t) => deployAll(
|
|
1253
|
+
[...resolved, ...library.entries],
|
|
1254
|
+
repositories,
|
|
1255
|
+
patches,
|
|
1256
|
+
this.deployOptsFor(t)
|
|
1257
|
+
)
|
|
1092
1258
|
)
|
|
1093
1259
|
)
|
|
1094
1260
|
];
|
|
1095
1261
|
await this.renderDriverMcpConfig();
|
|
1096
|
-
return { deployed, removed: [], missing:
|
|
1262
|
+
return { deployed, removed: [], missing: library.missing, lockWritten: false };
|
|
1097
1263
|
}
|
|
1098
1264
|
/**
|
|
1099
1265
|
* Add a single asset (and its transitive dependencies) to the workspace.
|
|
@@ -1137,15 +1303,26 @@ var AssetManager = class {
|
|
|
1137
1303
|
];
|
|
1138
1304
|
this.addDependencyToConfig(ref);
|
|
1139
1305
|
await this.renderDriverMcpConfig();
|
|
1140
|
-
if (resolved.length > 0) {
|
|
1141
|
-
const fresh = buildLockFile(resolved, overridesApplied);
|
|
1306
|
+
if (resolved.length > 0 || lib.entries.length > 0) {
|
|
1307
|
+
const fresh = buildLockFile(resolved, overridesApplied, await this.libraryLockEntries(lib));
|
|
1142
1308
|
const prev = this.tryReadLock();
|
|
1143
1309
|
if (prev) {
|
|
1144
1310
|
const sources2 = new Map(prev.sources.map((s) => [s.url, s]));
|
|
1145
1311
|
for (const s of fresh.sources) sources2.set(s.url, s);
|
|
1312
|
+
const assets = { ...prev.assets };
|
|
1313
|
+
for (const key of Object.keys(fresh.assets)) {
|
|
1314
|
+
if (!fresh.assets[key]?.library) continue;
|
|
1315
|
+
const freshId = parseCanonicalLockKey(key);
|
|
1316
|
+
for (const old of Object.keys(assets)) {
|
|
1317
|
+
const id = parseCanonicalLockKey(old);
|
|
1318
|
+
if (id.kind === freshId.kind && id.publisher === freshId.publisher && id.name === freshId.name) {
|
|
1319
|
+
delete assets[old];
|
|
1320
|
+
}
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1146
1323
|
writeLock(this.lockPath, {
|
|
1147
1324
|
...fresh,
|
|
1148
|
-
assets: { ...
|
|
1325
|
+
assets: { ...assets, ...fresh.assets },
|
|
1149
1326
|
sources: [...sources2.values()].sort((a, b) => a.url.localeCompare(b.url)),
|
|
1150
1327
|
// buildLockFile never emits a plugins slice — preserve the reconciler's.
|
|
1151
1328
|
plugins: prev.plugins
|
|
@@ -1509,7 +1686,8 @@ var AssetManager = class {
|
|
|
1509
1686
|
);
|
|
1510
1687
|
if (match) return match;
|
|
1511
1688
|
}
|
|
1512
|
-
|
|
1689
|
+
const lib = await this.resolveLibraryEntries([ref]);
|
|
1690
|
+
return lib.entries[0] ?? null;
|
|
1513
1691
|
}
|
|
1514
1692
|
/**
|
|
1515
1693
|
* List all assets currently deployed in the workspace (or global cache).
|
|
@@ -1705,8 +1883,8 @@ var AssetManager = class {
|
|
|
1705
1883
|
const lockEntry = lockByKindName.get(`${d.kind}:${d.name}`);
|
|
1706
1884
|
const publisher = lockEntry?.publisher ?? "";
|
|
1707
1885
|
const version = lockEntry?.version ?? "";
|
|
1708
|
-
const slug = lockEntry ? sourceCacheKey(lockEntry.url) : "";
|
|
1709
|
-
const syncStatus = slug ? computeSyncStatus(repoStatuses.get(slug)) : "unknown";
|
|
1886
|
+
const slug = lockEntry && !lockEntry.library ? sourceCacheKey(lockEntry.url) : "";
|
|
1887
|
+
const syncStatus = lockEntry?.library ? "local" : slug ? computeSyncStatus(repoStatuses.get(slug)) : "unknown";
|
|
1710
1888
|
const domain = publisher || "unknown";
|
|
1711
1889
|
entries.push({ kind: d.kind, name: d.name, domain, publisher, version, syncStatus });
|
|
1712
1890
|
}
|
|
@@ -1762,14 +1940,18 @@ var AssetManager = class {
|
|
|
1762
1940
|
return [key, "direct (skaile.yaml)"];
|
|
1763
1941
|
}
|
|
1764
1942
|
/**
|
|
1765
|
-
* List installed assets
|
|
1943
|
+
* List installed assets that have a newer upstream available.
|
|
1766
1944
|
*
|
|
1767
|
-
*
|
|
1945
|
+
* Two kinds of staleness are reported:
|
|
1946
|
+
* - **Source assets** — only remote repositories (not local paths) are checked;
|
|
1947
|
+
* `behind` is the number of commits the local clone is missing.
|
|
1948
|
+
* - **Library assets** — a library-origin lock entry whose library index now
|
|
1949
|
+
* offers a newer version than the locked one; `behind` is 0, `latestVersion`
|
|
1950
|
+
* and `library` are set. A library not indexed (or removed) is not reported.
|
|
1768
1951
|
*
|
|
1769
|
-
* @returns Array of {@link OutdatedEntry} objects
|
|
1770
|
-
* that has commits not yet pulled locally.
|
|
1952
|
+
* @returns Array of {@link OutdatedEntry} objects.
|
|
1771
1953
|
*/
|
|
1772
|
-
outdated() {
|
|
1954
|
+
async outdated() {
|
|
1773
1955
|
const { repositories } = this.loadConfig();
|
|
1774
1956
|
const lock = this.tryReadLock();
|
|
1775
1957
|
if (!lock) return [];
|
|
@@ -1781,7 +1963,7 @@ var AssetManager = class {
|
|
|
1781
1963
|
const status = checkRepoStatus(decl, slug, this.reposDir);
|
|
1782
1964
|
if (status.behind <= 0) continue;
|
|
1783
1965
|
for (const [ref, entry] of Object.entries(lock.assets)) {
|
|
1784
|
-
if (entry.source
|
|
1966
|
+
if (entry.source?.url !== src.url) continue;
|
|
1785
1967
|
const { publisher, kind, name, version } = parseCanonicalLockKey(ref);
|
|
1786
1968
|
if (!kind || !name) continue;
|
|
1787
1969
|
result.push({
|
|
@@ -1793,6 +1975,26 @@ var AssetManager = class {
|
|
|
1793
1975
|
});
|
|
1794
1976
|
}
|
|
1795
1977
|
}
|
|
1978
|
+
const libraryAssets = Object.entries(lock.assets).filter(([, e]) => e.library);
|
|
1979
|
+
if (libraryAssets.length > 0) {
|
|
1980
|
+
const snap = await this.loadLibraryIndex();
|
|
1981
|
+
for (const [ref, entry] of libraryAssets) {
|
|
1982
|
+
const origin = entry.library;
|
|
1983
|
+
const { publisher, kind, name } = parseCanonicalLockKey(ref);
|
|
1984
|
+
if (!publisher || !kind || !name) continue;
|
|
1985
|
+
const def = newestLibraryDef(snap, origin.name, { kind, publisher, name });
|
|
1986
|
+
if (!def || !gt(coerceVersion(def.version), coerceVersion(origin.version))) continue;
|
|
1987
|
+
result.push({
|
|
1988
|
+
kind,
|
|
1989
|
+
name,
|
|
1990
|
+
publisher,
|
|
1991
|
+
currentVersion: origin.version,
|
|
1992
|
+
behind: 0,
|
|
1993
|
+
latestVersion: def.version,
|
|
1994
|
+
library: origin.name
|
|
1995
|
+
});
|
|
1996
|
+
}
|
|
1997
|
+
}
|
|
1796
1998
|
return result;
|
|
1797
1999
|
}
|
|
1798
2000
|
/**
|
|
@@ -1802,20 +2004,23 @@ var AssetManager = class {
|
|
|
1802
2004
|
* was applied correctly.
|
|
1803
2005
|
*
|
|
1804
2006
|
* @param ref - Asset ref in `kind:name` form.
|
|
1805
|
-
* @returns
|
|
1806
|
-
*
|
|
2007
|
+
* @returns A {@link DiffResult}: `not-found` (unknown ref), `not-deployed`,
|
|
2008
|
+
* `identical`, or `differs` with the unified diff.
|
|
2009
|
+
* @throws When `diff(1)` itself fails (exit status other than 0/1).
|
|
1807
2010
|
*/
|
|
1808
2011
|
async diff(ref) {
|
|
1809
2012
|
const parsed = parseAssetRef(ref);
|
|
1810
2013
|
const entry = await this.info(ref);
|
|
1811
|
-
if (!entry) return
|
|
2014
|
+
if (!entry || !existsSync(entry.source)) return { status: "not-found" };
|
|
1812
2015
|
const deployedPath = join(
|
|
1813
2016
|
deployedBase(parsed.kind, this.driverTarget, this.global, this.projectDir),
|
|
1814
2017
|
parsed.name
|
|
1815
2018
|
);
|
|
1816
|
-
if (!existsSync(deployedPath)
|
|
2019
|
+
if (!existsSync(deployedPath)) return { status: "not-deployed" };
|
|
1817
2020
|
const r = spawnSync("diff", ["-ruN", entry.source, deployedPath], { encoding: "utf8" });
|
|
1818
|
-
|
|
2021
|
+
if (r.status === 1) return { status: "differs", diff: r.stdout };
|
|
2022
|
+
if (r.status === 0) return { status: "identical" };
|
|
2023
|
+
throw new Error(`diff failed for ${ref}: ${r.stderr || r.error?.message || "unknown error"}`);
|
|
1819
2024
|
}
|
|
1820
2025
|
// ── Lock ───────────────────────────────────────────────────────────────
|
|
1821
2026
|
/**
|
|
@@ -1832,12 +2037,13 @@ var AssetManager = class {
|
|
|
1832
2037
|
const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
|
|
1833
2038
|
projectDir: this.projectDir
|
|
1834
2039
|
});
|
|
1835
|
-
const { resolved, overridesApplied } = await this.resolveWithStores(dependencies, {
|
|
2040
|
+
const { resolved, missing, overridesApplied } = await this.resolveWithStores(dependencies, {
|
|
1836
2041
|
provenanceIndex,
|
|
1837
2042
|
overrides,
|
|
1838
2043
|
stores
|
|
1839
2044
|
});
|
|
1840
|
-
const
|
|
2045
|
+
const libraryLock = await this.libraryLockEntries(await this.resolveLibraryEntries(missing));
|
|
2046
|
+
const lockData = buildLockFile(resolved, overridesApplied, libraryLock);
|
|
1841
2047
|
writeLock(this.lockPath, lockData);
|
|
1842
2048
|
return lockData;
|
|
1843
2049
|
}
|
|
@@ -1973,11 +2179,12 @@ var AssetManager = class {
|
|
|
1973
2179
|
* @param name - Asset name (also used as the directory name).
|
|
1974
2180
|
* @param kind - Asset kind: `skill` | `agent` | `bundle` | `flow` | `prompt` | `contract`.
|
|
1975
2181
|
* @param destDir - Parent directory to create the asset in.
|
|
2182
|
+
* @param opts - Optional scaffold content (`description`).
|
|
1976
2183
|
* @returns `{ ok: true, path }` on success, `{ ok: false, path: errorMessage }` if the
|
|
1977
2184
|
* directory already exists.
|
|
1978
2185
|
*/
|
|
1979
|
-
create(name, kind, destDir) {
|
|
1980
|
-
return createScaffold(name, kind, destDir);
|
|
2186
|
+
create(name, kind, destDir, opts) {
|
|
2187
|
+
return createScaffold(name, kind, destDir, opts);
|
|
1981
2188
|
}
|
|
1982
2189
|
// ── Contrib (REMOVED 2026-05-12) ───────────────────────────────────────
|
|
1983
2190
|
//
|
|
@@ -2153,5 +2360,5 @@ var AssetManager = class {
|
|
|
2153
2360
|
};
|
|
2154
2361
|
|
|
2155
2362
|
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, NON_DEPLOYABLE_KINDS, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName };
|
|
2156
|
-
//# sourceMappingURL=chunk-
|
|
2157
|
-
//# sourceMappingURL=chunk-
|
|
2363
|
+
//# sourceMappingURL=chunk-QWWDDU5Z.js.map
|
|
2364
|
+
//# sourceMappingURL=chunk-QWWDDU5Z.js.map
|