@skaile/workspaces 5.12.0 → 5.14.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 +114 -0
- package/README.md +2 -2
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-AM6PSSGM.js → asset-feeds-PAOX3FUT.js} +20 -20
- package/dist/{asset-feeds-AM6PSSGM.js.map → asset-feeds-PAOX3FUT.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +9 -9
- package/dist/asset-manager/index.js +15 -15
- package/dist/asset-manager/installer.js +11 -11
- package/dist/asset-manager/renderers.js +10 -10
- package/dist/asset-manager/src/index.d.ts +53 -10
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +0 -10
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +155 -18
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +73 -27
- 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 +4 -3
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +7 -6
- package/dist/bridge/drivers/goose.js +12 -11
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +105 -29
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +12 -11
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +7 -6
- package/dist/bridge/drivers/qwen.js.map +1 -1
- package/dist/bridge/index.js +16 -15
- package/dist/bridge/src/codex/config-toml.d.ts +8 -0
- package/dist/bridge/src/codex/config-toml.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +2 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-self-turns.d.ts +72 -0
- package/dist/bridge/src/drivers/claude-self-turns.d.ts.map +1 -0
- package/dist/bridge/src/drivers/codex.d.ts +6 -0
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts +32 -0
- package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +20 -6
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/normalizer.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +12 -0
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-QCEKGYHF.js → chunk-2BIESC6S.js} +3 -3
- package/dist/{chunk-QCEKGYHF.js.map → chunk-2BIESC6S.js.map} +1 -1
- package/dist/{chunk-P23WJCH2.js → chunk-3NNL334S.js} +23 -18
- package/dist/chunk-3NNL334S.js.map +1 -0
- package/dist/{chunk-6VLHITAM.js → chunk-57SF6W6E.js} +4 -3
- package/dist/chunk-57SF6W6E.js.map +1 -0
- package/dist/{chunk-GWD3QNVS.js → chunk-5IMGZAKH.js} +5 -5
- package/dist/{chunk-GWD3QNVS.js.map → chunk-5IMGZAKH.js.map} +1 -1
- package/dist/{chunk-NDF24LYP.js → chunk-5NVDOEWX.js} +15 -7
- package/dist/chunk-5NVDOEWX.js.map +1 -0
- package/dist/{chunk-3HUV2LJF.js → chunk-6JKIOPT3.js} +4 -4
- package/dist/{chunk-3HUV2LJF.js.map → chunk-6JKIOPT3.js.map} +1 -1
- package/dist/{chunk-MF54ZHWT.js → chunk-6VIVUBNN.js} +4 -271
- package/dist/chunk-6VIVUBNN.js.map +1 -0
- package/dist/{chunk-2X3JBVGD.js → chunk-7LGNJJ76.js} +18 -9
- package/dist/chunk-7LGNJJ76.js.map +1 -0
- package/dist/chunk-BASMWKPM.js +649 -0
- package/dist/chunk-BASMWKPM.js.map +1 -0
- package/dist/{chunk-PNOGX36L.js → chunk-CAPKENNF.js} +92 -26
- package/dist/chunk-CAPKENNF.js.map +1 -0
- package/dist/{chunk-7QWQTA5S.js → chunk-CNZI37HV.js} +4 -4
- package/dist/{chunk-7QWQTA5S.js.map → chunk-CNZI37HV.js.map} +1 -1
- package/dist/{chunk-PMECEZK3.js → chunk-D54T2F54.js} +5 -4
- package/dist/chunk-D54T2F54.js.map +1 -0
- package/dist/{chunk-F4NJDSR7.js → chunk-D5WTOVLG.js} +7 -4
- package/dist/chunk-D5WTOVLG.js.map +1 -0
- package/dist/{chunk-XZY6SBGU.js → chunk-DHUJRIQQ.js} +3 -3
- package/dist/{chunk-XZY6SBGU.js.map → chunk-DHUJRIQQ.js.map} +1 -1
- package/dist/chunk-DWRYUWOK.js +273 -0
- package/dist/chunk-DWRYUWOK.js.map +1 -0
- package/dist/{chunk-NJV5SLEK.js → chunk-FD2IPIE2.js} +46 -46
- package/dist/chunk-FD2IPIE2.js.map +1 -0
- package/dist/{chunk-POQ6PGNE.js → chunk-GJGEDWRT.js} +22 -6
- package/dist/chunk-GJGEDWRT.js.map +1 -0
- package/dist/{chunk-CPSIPIX7.js → chunk-IG5LZ3WU.js} +8 -6
- package/dist/chunk-IG5LZ3WU.js.map +1 -0
- package/dist/{chunk-3LVB3HGH.js → chunk-IPN7N2AZ.js} +3 -3
- package/dist/{chunk-3LVB3HGH.js.map → chunk-IPN7N2AZ.js.map} +1 -1
- package/dist/{chunk-NGJIVDDD.js → chunk-IQVZIVSA.js} +3 -3
- package/dist/{chunk-NGJIVDDD.js.map → chunk-IQVZIVSA.js.map} +1 -1
- package/dist/{chunk-CTP3XBMF.js → chunk-IY5E7Y5W.js} +57 -7
- package/dist/chunk-IY5E7Y5W.js.map +1 -0
- package/dist/{chunk-PNTXHTBC.js → chunk-J4OYIYFQ.js} +2 -2
- package/dist/{chunk-PNTXHTBC.js.map → chunk-J4OYIYFQ.js.map} +1 -1
- package/dist/{chunk-XTVSNWLL.js → chunk-M3P4BYRK.js} +34 -11
- package/dist/chunk-M3P4BYRK.js.map +1 -0
- package/dist/{chunk-X6LKA3TJ.js → chunk-MCLT3BJG.js} +6 -6
- package/dist/{chunk-X6LKA3TJ.js.map → chunk-MCLT3BJG.js.map} +1 -1
- package/dist/{chunk-7CR2OZPA.js → chunk-NVO6WECE.js} +9 -8
- package/dist/chunk-NVO6WECE.js.map +1 -0
- package/dist/chunk-O3Q3MOAV.js +64 -0
- package/dist/chunk-O3Q3MOAV.js.map +1 -0
- package/dist/{chunk-C3BMXXTN.js → chunk-ODQGLELI.js} +68 -24
- package/dist/chunk-ODQGLELI.js.map +1 -0
- package/dist/chunk-OKQXY6FS.js +1336 -0
- package/dist/chunk-OKQXY6FS.js.map +1 -0
- package/dist/{chunk-T5TSLSRO.js → chunk-OX2W5YF3.js} +8 -8
- package/dist/{chunk-T5TSLSRO.js.map → chunk-OX2W5YF3.js.map} +1 -1
- package/dist/{chunk-N5M2EISA.js → chunk-PAUM35HD.js} +250 -71
- package/dist/chunk-PAUM35HD.js.map +1 -0
- package/dist/{chunk-YQU2BPQD.js → chunk-PGVSOHWE.js} +2 -2
- package/dist/{chunk-YQU2BPQD.js.map → chunk-PGVSOHWE.js.map} +1 -1
- package/dist/{chunk-WI4T3KIS.js → chunk-PUG7IWFF.js} +130 -23
- package/dist/chunk-PUG7IWFF.js.map +1 -0
- package/dist/{chunk-2H73V6XR.js → chunk-PW3TYWOI.js} +3 -3
- package/dist/{chunk-2H73V6XR.js.map → chunk-PW3TYWOI.js.map} +1 -1
- package/dist/{chunk-UTKENBB6.js → chunk-PXDWTJ3P.js} +4 -4
- package/dist/{chunk-UTKENBB6.js.map → chunk-PXDWTJ3P.js.map} +1 -1
- package/dist/{chunk-TVAR4JHA.js → chunk-QAYL3PYY.js} +320 -51
- package/dist/chunk-QAYL3PYY.js.map +1 -0
- package/dist/{chunk-7XWUJC3A.js → chunk-QELQDY5K.js} +3 -3
- package/dist/{chunk-7XWUJC3A.js.map → chunk-QELQDY5K.js.map} +1 -1
- package/dist/{chunk-VRLKHL74.js → chunk-S6FZUR5H.js} +7 -6
- package/dist/chunk-S6FZUR5H.js.map +1 -0
- package/dist/{chunk-SHQMPGOL.js → chunk-TYUJPQNX.js} +10 -5
- package/dist/chunk-TYUJPQNX.js.map +1 -0
- package/dist/chunk-U27JRO5L.js +13 -0
- package/dist/chunk-U27JRO5L.js.map +1 -0
- package/dist/{chunk-ICIYSJBQ.js → chunk-UK3LRPJ5.js} +15 -7
- package/dist/chunk-UK3LRPJ5.js.map +1 -0
- package/dist/{chunk-KVSDRB35.js → chunk-UQ4SQOR6.js} +5 -5
- package/dist/{chunk-KVSDRB35.js.map → chunk-UQ4SQOR6.js.map} +1 -1
- package/dist/{chunk-G3X4MLDB.js → chunk-USHB5KEY.js} +3 -3
- package/dist/{chunk-G3X4MLDB.js.map → chunk-USHB5KEY.js.map} +1 -1
- package/dist/{chunk-HYMERG57.js → chunk-V7AWO5FL.js} +3 -3
- package/dist/{chunk-HYMERG57.js.map → chunk-V7AWO5FL.js.map} +1 -1
- package/dist/chunk-VTG5Z3KD.js +345 -0
- package/dist/chunk-VTG5Z3KD.js.map +1 -0
- package/dist/{chunk-27L6BBAT.js → chunk-VTXXBYB3.js} +10 -10
- package/dist/{chunk-27L6BBAT.js.map → chunk-VTXXBYB3.js.map} +1 -1
- package/dist/{chunk-XMAJJPA4.js → chunk-WTEYDNTR.js} +3 -3
- package/dist/{chunk-XMAJJPA4.js.map → chunk-WTEYDNTR.js.map} +1 -1
- package/dist/{chunk-NJXR5OAM.js → chunk-YFIHFJEB.js} +4 -4
- package/dist/{chunk-NJXR5OAM.js.map → chunk-YFIHFJEB.js.map} +1 -1
- package/dist/{chunk-VMKMFS2Q.js → chunk-YIDZJHY6.js} +3 -3
- package/dist/{chunk-VMKMFS2Q.js.map → chunk-YIDZJHY6.js.map} +1 -1
- package/dist/{chunk-2JFIFDDO.js → chunk-YTZFSKWL.js} +3 -3
- package/dist/{chunk-2JFIFDDO.js.map → chunk-YTZFSKWL.js.map} +1 -1
- package/dist/{chunk-SMT3LNAG.js → chunk-ZBD6EITA.js} +4 -4
- package/dist/{chunk-SMT3LNAG.js.map → chunk-ZBD6EITA.js.map} +1 -1
- package/dist/{chunk-JQ3DXNQV.js → chunk-ZDTZGEJG.js} +6 -6
- package/dist/{chunk-JQ3DXNQV.js.map → chunk-ZDTZGEJG.js.map} +1 -1
- package/dist/{chunk-X4BAYGMT.js → chunk-ZIW34FGO.js} +3 -3
- package/dist/{chunk-X4BAYGMT.js.map → chunk-ZIW34FGO.js.map} +1 -1
- package/dist/{chunk-DCHQ6BAZ.js → chunk-ZU24LWBI.js} +3 -3
- package/dist/{chunk-DCHQ6BAZ.js.map → chunk-ZU24LWBI.js.map} +1 -1
- package/dist/cli/index.js +493 -232
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +2 -0
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/diff.d.ts +1 -1
- package/dist/cli/src/commands/diff.d.ts.map +1 -1
- package/dist/cli/src/commands/integration.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 +10 -0
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/types.d.ts +2 -0
- package/dist/cli/src/commands/plugin/types.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/preset-apply.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +8 -0
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts +9 -0
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +2 -1
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts +7 -0
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest.d.ts +1 -0
- package/dist/cli/src/commands/source-manifest.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +9 -1
- package/dist/cli/src/commands/source.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-instances.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts +3 -2
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/driver-error.d.ts +7 -0
- package/dist/cli/src/driver-error.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +6 -0
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +1 -1
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/reconcile.d.ts +24 -4
- package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +15 -4
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/cli/src/store-addable.d.ts +7 -8
- package/dist/cli/src/store-addable.d.ts.map +1 -1
- package/dist/connectors/config.js +6 -6
- package/dist/connectors/index.js +20 -19
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/{connectors-UNKUKEPG.js → connectors-2TEGRRYC.js} +23 -22
- package/dist/{connectors-UNKUKEPG.js.map → connectors-2TEGRRYC.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/driver-targets.js +1 -1
- package/dist/core/index.js +8 -8
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +4 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +6 -6
- package/dist/core/src/agent-instances.d.ts +5 -0
- package/dist/core/src/agent-instances.d.ts.map +1 -1
- package/dist/core/src/driver-targets.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +2 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +9 -3
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +8 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +38 -1
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +8 -3
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/store.d.ts +4 -0
- package/dist/core/src/store.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +2 -0
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +40 -2
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/store.js +2 -2
- package/dist/core/workspace-config.js +5 -5
- package/dist/deploy/index.js +8 -8
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/parse-manifest.d.ts.map +1 -1
- package/dist/discovery/src/source-config.d.ts +5 -3
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/{ensure-sources-POMEQSTM.js → ensure-sources-EG7YKKZL.js} +18 -18
- package/dist/{ensure-sources-POMEQSTM.js.map → ensure-sources-EG7YKKZL.js.map} +1 -1
- package/dist/factory-assets/README.md +1 -1
- package/dist/factory-assets/connectors/box.js +20 -19
- package/dist/factory-assets/connectors/deploy.js +20 -19
- package/dist/factory-assets/connectors/devserver.js +20 -19
- package/dist/factory-assets/connectors/flow/adapter.js +20 -19
- package/dist/factory-assets/connectors/flow/engine.js +9 -9
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +22 -21
- package/dist/factory-assets/connectors/flow.js +20 -19
- package/dist/factory-assets/connectors/git.js +20 -19
- package/dist/factory-assets/connectors/gmail.js +20 -19
- package/dist/factory-assets/connectors/googledrive.js +20 -19
- package/dist/factory-assets/connectors/local.js +20 -19
- package/dist/factory-assets/connectors/mattermost.js +20 -19
- package/dist/factory-assets/connectors/memory.js +20 -19
- package/dist/factory-assets/connectors/minio.js +20 -19
- package/dist/factory-assets/connectors/postgres.js +20 -19
- package/dist/factory-assets/connectors/s3.js +20 -19
- package/dist/factory-assets/connectors/sharepoint.js +20 -19
- package/dist/factory-assets/connectors/sqlite.js +20 -19
- package/dist/factory-assets/connectors/static-server.js +20 -19
- package/dist/factory-assets/connectors/tunnel.js +20 -19
- package/dist/factory-assets/connectors/webdav.js +20 -19
- package/dist/factory-assets/connectors/xstate-store.js +20 -19
- package/dist/factory-assets/connectors/xstate.js +20 -19
- package/dist/{flows-DVKMZKM4.js → flows-5TW3XFMH.js} +13 -13
- package/dist/{flows-DVKMZKM4.js.map → flows-5TW3XFMH.js.map} +1 -1
- package/dist/{helpers-Y4OT7VIS.js → helpers-BQGXEKRP.js} +18 -18
- package/dist/{helpers-Y4OT7VIS.js.map → helpers-BQGXEKRP.js.map} +1 -1
- package/dist/library/index.js +12 -12
- package/dist/library/install.js +5 -3
- package/dist/library/src/local/local-catalog-source.d.ts +6 -0
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts +1 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/user-library.d.ts +2 -0
- package/dist/library/src/user-library.d.ts.map +1 -1
- package/dist/{library-publish-DI4Q5UOG.js → library-publish-EUP524PE.js} +28 -25
- package/dist/library-publish-EUP524PE.js.map +1 -0
- package/dist/model-endpoint/index.d.ts +2 -0
- package/dist/model-endpoint/index.js +9 -0
- package/dist/model-endpoint/index.js.map +1 -0
- package/dist/model-endpoint/src/index.d.ts +4 -0
- package/dist/model-endpoint/src/index.d.ts.map +1 -0
- package/dist/model-endpoint/src/openai-chat.d.ts +105 -0
- package/dist/model-endpoint/src/openai-chat.d.ts.map +1 -0
- package/dist/model-endpoint/src/openai-responses.d.ts +106 -0
- package/dist/model-endpoint/src/openai-responses.d.ts.map +1 -0
- package/dist/model-endpoint/src/openai-shared.d.ts +77 -0
- package/dist/model-endpoint/src/openai-shared.d.ts.map +1 -0
- package/dist/model-endpoint/src/resolve.d.ts +36 -0
- package/dist/model-endpoint/src/resolve.d.ts.map +1 -0
- package/dist/model-endpoint/src/server.d.ts +16 -0
- package/dist/model-endpoint/src/server.d.ts.map +1 -0
- package/dist/model-endpoint/src/types.d.ts +78 -0
- package/dist/model-endpoint/src/types.d.ts.map +1 -0
- package/dist/open-library-QNMIMZYS.js +40 -0
- package/dist/{open-library-N6ESO6IK.js.map → open-library-QNMIMZYS.js.map} +1 -1
- package/dist/open-registry-BOUCBDLF.js +32 -0
- package/dist/{open-registry-CBZ5MWTT.js.map → open-registry-BOUCBDLF.js.map} +1 -1
- package/dist/paths-B6SX6J6T.js +22 -0
- package/dist/{paths-U6W6MQNQ.js.map → paths-B6SX6J6T.js.map} +1 -1
- package/dist/{plugin-store-XMZSPVBF.js → plugin-store-MLFP3WJ7.js} +62 -20
- package/dist/plugin-store-MLFP3WJ7.js.map +1 -0
- package/dist/plugins/src/catalog-source.d.ts +6 -0
- package/dist/plugins/src/catalog-source.d.ts.map +1 -1
- package/dist/project-GXCIEJGM.js +82 -0
- package/dist/{project-UP52HEHC.js.map → project-GXCIEJGM.js.map} +1 -1
- package/dist/resolver/index.js +9 -9
- package/dist/runner/index.js +35 -32
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/composition/index.d.ts +1 -1
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/prompt-sections.d.ts +18 -6
- package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -1
- package/dist/runner/src/model-endpoint-discovery.d.ts +64 -0
- package/dist/runner/src/model-endpoint-discovery.d.ts.map +1 -0
- package/dist/runner/src/serve.d.ts +6 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +8 -0
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/runner/src/session.d.ts +2 -0
- package/dist/runner/src/session.d.ts.map +1 -1
- package/dist/runner/src/ws-auth-warning.d.ts +17 -0
- package/dist/runner/src/ws-auth-warning.d.ts.map +1 -0
- package/dist/sdk/asset-manager.js +15 -15
- package/dist/sdk/bridge.js +16 -15
- package/dist/sdk/core.js +8 -8
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +35 -32
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +9 -9
- package/dist/sdk/runner.js +35 -32
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/types.js +1 -1
- package/dist/serve-preflight-GNBW3O4U.js +64 -0
- package/dist/serve-preflight-GNBW3O4U.js.map +1 -0
- package/dist/session/index.js +2 -2
- package/dist/{setup-5IRUH5OS.js → setup-HJEYEXLS.js} +26 -25
- package/dist/setup-HJEYEXLS.js.map +1 -0
- package/dist/skills-4WMYGJDL.js +26 -0
- package/dist/{skills-HA36RFNM.js.map → skills-4WMYGJDL.js.map} +1 -1
- package/dist/source-5VL6PHER.js +42 -0
- package/dist/{source-DX5SGWEI.js.map → source-5VL6PHER.js.map} +1 -1
- package/dist/{source-manifest-publish-NMRLXWVW.js → source-manifest-publish-Q66H7EJI.js} +25 -24
- package/dist/source-manifest-publish-Q66H7EJI.js.map +1 -0
- package/dist/tui/index.js +52 -39
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/delivery.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +55 -1
- 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/lifecycle.d.ts +2 -1
- package/dist/types/src/lifecycle.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +6 -1
- package/dist/types/src/manifests/preset.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +11 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +27 -26
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +12 -1
- package/dist/chunk-2X3JBVGD.js.map +0 -1
- package/dist/chunk-6VLHITAM.js.map +0 -1
- package/dist/chunk-7CR2OZPA.js.map +0 -1
- package/dist/chunk-C3BMXXTN.js.map +0 -1
- package/dist/chunk-CPSIPIX7.js.map +0 -1
- package/dist/chunk-CTP3XBMF.js.map +0 -1
- package/dist/chunk-F4NJDSR7.js.map +0 -1
- package/dist/chunk-ICIYSJBQ.js.map +0 -1
- package/dist/chunk-ID745F3R.js +0 -625
- package/dist/chunk-ID745F3R.js.map +0 -1
- package/dist/chunk-K4VOEYOR.js +0 -21
- package/dist/chunk-K4VOEYOR.js.map +0 -1
- package/dist/chunk-MF54ZHWT.js.map +0 -1
- package/dist/chunk-N5M2EISA.js.map +0 -1
- package/dist/chunk-NDF24LYP.js.map +0 -1
- package/dist/chunk-NJV5SLEK.js.map +0 -1
- package/dist/chunk-NR7H7ZJP.js +0 -400
- package/dist/chunk-NR7H7ZJP.js.map +0 -1
- package/dist/chunk-P23WJCH2.js.map +0 -1
- package/dist/chunk-PMECEZK3.js.map +0 -1
- package/dist/chunk-PNOGX36L.js.map +0 -1
- package/dist/chunk-POQ6PGNE.js.map +0 -1
- package/dist/chunk-SHQMPGOL.js.map +0 -1
- package/dist/chunk-TVAR4JHA.js.map +0 -1
- package/dist/chunk-VRLKHL74.js.map +0 -1
- package/dist/chunk-WI4T3KIS.js.map +0 -1
- package/dist/chunk-XTVSNWLL.js.map +0 -1
- package/dist/library-publish-DI4Q5UOG.js.map +0 -1
- package/dist/open-library-N6ESO6IK.js +0 -40
- package/dist/open-registry-CBZ5MWTT.js +0 -32
- package/dist/paths-U6W6MQNQ.js +0 -22
- package/dist/plugin-store-XMZSPVBF.js.map +0 -1
- package/dist/project-UP52HEHC.js +0 -79
- package/dist/serve-preflight-6P2JJEJ3.js +0 -47
- package/dist/serve-preflight-6P2JJEJ3.js.map +0 -1
- package/dist/setup-5IRUH5OS.js.map +0 -1
- package/dist/skills-HA36RFNM.js +0 -26
- package/dist/source-DX5SGWEI.js +0 -41
- package/dist/source-manifest-publish-NMRLXWVW.js.map +0 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { unregisteredLibraryNames, renamedLibraryName, resolveConfig, RemoteCatalogSource, OfflineError, describeCatalogError, CatalogHttpError, scanUnlistedAssets, getStoreManifestsDir, missingLibraryDirMessage } from './chunk-
|
|
2
|
-
import { readManifestSourceConfig, discoverAssetsInTree, isManifestMode } from './chunk-
|
|
3
|
-
import { installTargetOf, canonicalEntryRef, deployAll, removeAsset, diffDeployedAgent,
|
|
1
|
+
import { unregisteredLibraryNames, renamedLibraryName, resolveConfig, RemoteCatalogSource, OfflineError, describeCatalogError, CatalogHttpError, scanUnlistedAssets, getStoreManifestsDir, missingLibraryDirMessage } from './chunk-ODQGLELI.js';
|
|
2
|
+
import { readManifestSourceConfig, discoverAssetsInTree, isManifestMode } from './chunk-NVO6WECE.js';
|
|
3
|
+
import { installTargetOf, canonicalEntryRef, deployedAssetDrift, deployAll, removeAsset, diffDeployedAgent, createScaffold, installAgent } from './chunk-FD2IPIE2.js';
|
|
4
4
|
import { appendHistory, getRecentHistory, clearHistory } from './chunk-KTBKW2FI.js';
|
|
5
5
|
import { commitChanges } from './chunk-UQ6LFBPZ.js';
|
|
6
|
-
import { driverTargetSupportsAgents, CODEX_IDENTITY_DIR } from './chunk-
|
|
7
|
-
import { resolveConfiguredDriverTarget, GLOBAL_INSTALL_DIR_NAME, resolveLibraryDir, buildLibraryLockEntries, computeHash, buildLockFile, writeLock, readLock, verifyLock, mergeLockFile, extractForPatch, generatePatch, savePatch, applyPatch, LOCK_SCHEMA_VERSION } from './chunk-
|
|
8
|
-
import { resolveRuntimeAssets, factoryAssetRoots } from './chunk-
|
|
9
|
-
import { deployedBase, deployedDir, isDeployed, deployedPaths } from './chunk-
|
|
10
|
-
import { resolveSkWorkspaceConfig, effectiveAgentInstances, loadMcpServerDeclarations, resolveGlobalHarnesses, resolveGlobalSkWorkspaceConfig, getGlobalCacheDir, sourceCacheKey, getRepoCommit, matchPin, buildProvenanceIndex, coerceVersion, sourceShortName, readLinks, isCommitOnRemote, resolveAll, agentSourceCacheDir, ensureRepo, scanRepo, SKAILE_YAML_DEFAULT, checkRepoStatus, resolveAsset, MAX_PRESET_DEPTH, PresetDepthError, DEFAULT_AGENT_INSTANCE_ID, resolveAgentDefinitionDir, storeManifestSlug } from './chunk-
|
|
6
|
+
import { driverTargetSupportsAgents, CODEX_IDENTITY_DIR } from './chunk-CNZI37HV.js';
|
|
7
|
+
import { resolveConfiguredDriverTarget, GLOBAL_INSTALL_DIR_NAME, resolveLibraryDir, buildLibraryLockEntries, computeHash, buildLockFile, writeLock, readLock, verifyLock, mergeLockFile, extractForPatch, generatePatch, savePatch, applyPatch, LOCK_SCHEMA_VERSION } from './chunk-OX2W5YF3.js';
|
|
8
|
+
import { resolveRuntimeAssets, factoryAssetRoots } from './chunk-TYUJPQNX.js';
|
|
9
|
+
import { deployedBase, deployedDir, isDeployed, deployedPaths } from './chunk-D54T2F54.js';
|
|
10
|
+
import { resolveSkWorkspaceConfig, effectiveAgentInstances, loadMcpServerDeclarations, resolveGlobalHarnesses, resolveGlobalSkWorkspaceConfig, getGlobalCacheDir, sourceCacheKey, getRepoCommit, matchPin, buildProvenanceIndex, coerceVersion, sourceShortName, readLinks, isCommitOnRemote, resolveAll, agentSourceCacheDir, ensureRepo, scanRepo, SKAILE_YAML_DEFAULT, checkRepoStatus, resolveAsset, MAX_PRESET_DEPTH, PresetDepthError, DEFAULT_AGENT_INSTANCE_ID, resolveAgentDefinitionDir, storeManifestSlug } from './chunk-CAPKENNF.js';
|
|
11
11
|
import { globalSkaileDir, globalCacheRoot, migrateLegacyDir } from './chunk-L5VSIPQD.js';
|
|
12
|
-
import { DRIVER_TARGETS } from './chunk-
|
|
13
|
-
import { loadSkPublishManifest } from './chunk-
|
|
14
|
-
import { scanDirectory, parseRequires, dedupeRequirements } from './chunk-
|
|
15
|
-
import { parseAssetRef, parseAssetRefLoose, assetRefToStr, slugifyAssetName, depToStr, parseDep } from './chunk-
|
|
12
|
+
import { DRIVER_TARGETS } from './chunk-IG5LZ3WU.js';
|
|
13
|
+
import { loadSkPublishManifest } from './chunk-IY5E7Y5W.js';
|
|
14
|
+
import { scanDirectory, parseFrontmatter, parseRequires, dedupeRequirements } from './chunk-M3P4BYRK.js';
|
|
15
|
+
import { parseAssetRef, parseAssetRefLoose, assetRefToStr, slugifyAssetName, depToStr, parseDep } from './chunk-J4OYIYFQ.js';
|
|
16
16
|
import { spawnSync } from 'child_process';
|
|
17
|
-
import { existsSync, rmSync, readdirSync, lstatSync, unlinkSync, mkdirSync, writeFileSync
|
|
17
|
+
import { existsSync, rmSync, readdirSync, lstatSync, readFileSync, unlinkSync, mkdirSync, writeFileSync } from 'fs';
|
|
18
18
|
import path, { resolve, dirname, sep, join, relative, posix } from 'path';
|
|
19
19
|
import { gt } from 'semver';
|
|
20
20
|
import { stringify, parse } from 'yaml';
|
|
@@ -693,7 +693,11 @@ function withKeptLockEntries(lock, kept) {
|
|
|
693
693
|
}
|
|
694
694
|
function relockedRefs(prev, next) {
|
|
695
695
|
if (!prev) return [];
|
|
696
|
-
const fingerprint = (e) => [
|
|
696
|
+
const fingerprint = (e, key) => [
|
|
697
|
+
e.library?.version ?? "",
|
|
698
|
+
e.library?.sha256 ?? e.sha256,
|
|
699
|
+
key.includes("#0.0.0-sha.") ? "" : e.source?.commit ?? ""
|
|
700
|
+
].join("\0");
|
|
697
701
|
const out = [];
|
|
698
702
|
for (const [key, entry] of Object.entries(next.assets)) {
|
|
699
703
|
if (entry.library?.installed) continue;
|
|
@@ -703,7 +707,8 @@ function relockedRefs(prev, next) {
|
|
|
703
707
|
return o.kind === id.kind && o.name === id.name && o.publisher === id.publisher;
|
|
704
708
|
});
|
|
705
709
|
if (!before) continue;
|
|
706
|
-
if (before[0] !== key || fingerprint(before[1]) !== fingerprint(entry
|
|
710
|
+
if (before[0] !== key || fingerprint(before[1], before[0]) !== fingerprint(entry, key))
|
|
711
|
+
out.push(key);
|
|
707
712
|
}
|
|
708
713
|
return out;
|
|
709
714
|
}
|
|
@@ -1001,7 +1006,11 @@ var AssetManager = class {
|
|
|
1001
1006
|
for (const s of sources) {
|
|
1002
1007
|
const slug = sourceCacheKey(s.url);
|
|
1003
1008
|
if (repositories[slug]) continue;
|
|
1004
|
-
repositories[slug] = {
|
|
1009
|
+
repositories[slug] = {
|
|
1010
|
+
path: join(sourcesDir, slug),
|
|
1011
|
+
url: s.url,
|
|
1012
|
+
...s.publisher ? { publisher: s.publisher } : {}
|
|
1013
|
+
};
|
|
1005
1014
|
}
|
|
1006
1015
|
const factory = resolveFactorySource();
|
|
1007
1016
|
const factoryUrl = normalizeRepoUrl(FACTORY_SOURCE_URL);
|
|
@@ -1029,6 +1038,7 @@ var AssetManager = class {
|
|
|
1029
1038
|
sourceUrl: decl.url ?? localPath,
|
|
1030
1039
|
commit,
|
|
1031
1040
|
tag: decl.branch,
|
|
1041
|
+
...decl.publisher ? { publisher: decl.publisher } : {},
|
|
1032
1042
|
// A curated store manifest (`source manifest init` → the flat
|
|
1033
1043
|
// `~/.skaile/store/manifests/<slug>.yaml`) is the authoritative inventory
|
|
1034
1044
|
// for a foreign source. Point the walker at it so `add`/resolve honor the
|
|
@@ -1630,6 +1640,83 @@ var AssetManager = class {
|
|
|
1630
1640
|
);
|
|
1631
1641
|
}
|
|
1632
1642
|
}
|
|
1643
|
+
/**
|
|
1644
|
+
* Refuse to deploy over a folder (or agent file) the project did not put there: it is on disk,
|
|
1645
|
+
* but no lock entry of the same kind and name owns it, so it is the user's own work and the
|
|
1646
|
+
* deploy would replace it and `remove` would delete it. Throws one line naming the folder.
|
|
1647
|
+
*
|
|
1648
|
+
* A folder the deploy would rewrite with the same content is adopted silently (the way back
|
|
1649
|
+
* from `asset import`: the project's own copy is what the library now holds): every file in
|
|
1650
|
+
* it is shipped by the asset with the same bytes, or the same body and an asset frontmatter
|
|
1651
|
+
* that only adds to the folder's (import normalizes it). Nothing is lost then.
|
|
1652
|
+
*
|
|
1653
|
+
* @param incoming - Assets about to be deployed, with the entry whose bytes would be written
|
|
1654
|
+
* when there is one.
|
|
1655
|
+
* @param owned - Assets the lock holds; one of the same kind and name, from any publisher,
|
|
1656
|
+
* owns the folder (a publisher clash is {@link assertNoFolderCollision}'s refusal).
|
|
1657
|
+
*/
|
|
1658
|
+
assertNoUnownedFolder(incoming, owned) {
|
|
1659
|
+
for (const { id: a, entry } of incoming) {
|
|
1660
|
+
if (!a.kind || !a.name) continue;
|
|
1661
|
+
const component = installTargetOf(this.registry, a.kind);
|
|
1662
|
+
if (!component) continue;
|
|
1663
|
+
const isOwned = owned.some(
|
|
1664
|
+
(o) => !!o.kind && o.name === a.name && installTargetOf(this.registry, o.kind) === component
|
|
1665
|
+
);
|
|
1666
|
+
if (isOwned) continue;
|
|
1667
|
+
for (const target of this.targetHarnesses()) {
|
|
1668
|
+
const held = deployedPaths(component, a.name, target, this.global, this.projectDir).find(
|
|
1669
|
+
(p) => existsSync(p)
|
|
1670
|
+
);
|
|
1671
|
+
if (!held) continue;
|
|
1672
|
+
if (entry && this.deployWouldOnlyRewriteSame(entry, target)) continue;
|
|
1673
|
+
const shown = this.global ? held : relative(this.projectDir, held);
|
|
1674
|
+
throw new Error(
|
|
1675
|
+
`${assetRefToStr({ kind: a.kind, name: a.name, publisher: a.publisher })} would overwrite ${shown}, which no lock entry owns (your own files?) \u2014 move it away, or pass --force to replace it`
|
|
1676
|
+
);
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
1680
|
+
/**
|
|
1681
|
+
* Whether deploying `entry` over the folder already in `target` loses nothing: the folder
|
|
1682
|
+
* holds no file the asset does not ship, and each of its files equals the asset's, or is a
|
|
1683
|
+
* markdown file with the same body whose frontmatter the asset's only extends.
|
|
1684
|
+
*/
|
|
1685
|
+
deployWouldOnlyRewriteSame(entry, target) {
|
|
1686
|
+
const drift = deployedAssetDrift(entry, {
|
|
1687
|
+
registry: this.registry,
|
|
1688
|
+
driverTarget: target,
|
|
1689
|
+
global: this.global,
|
|
1690
|
+
cwd: this.projectDir
|
|
1691
|
+
});
|
|
1692
|
+
if (!drift || drift.extra.length > 0) return false;
|
|
1693
|
+
if (drift.modified.length === 0) return true;
|
|
1694
|
+
const component = installTargetOf(this.registry, entry.kind);
|
|
1695
|
+
if (!component) return false;
|
|
1696
|
+
const dest = deployedDir(component, entry.name, target, this.global, this.projectDir);
|
|
1697
|
+
let assetRoot;
|
|
1698
|
+
try {
|
|
1699
|
+
assetRoot = lstatSync(entry.source).isDirectory() ? entry.source : dirname(entry.source);
|
|
1700
|
+
} catch {
|
|
1701
|
+
return false;
|
|
1702
|
+
}
|
|
1703
|
+
return drift.modified.every((rel) => {
|
|
1704
|
+
if (!/\.md$/i.test(rel)) return false;
|
|
1705
|
+
try {
|
|
1706
|
+
const mine = parseFrontmatter(readFileSync(join(dest, rel), "utf8"));
|
|
1707
|
+
const theirs = parseFrontmatter(readFileSync(join(assetRoot, rel), "utf8"));
|
|
1708
|
+
if (mine.body !== theirs.body) return false;
|
|
1709
|
+
const covered = (have, want) => Object.entries(have).every(([k, v]) => {
|
|
1710
|
+
const w = want[k];
|
|
1711
|
+
if (JSON.stringify(v) === JSON.stringify(w)) return true;
|
|
1712
|
+
return k === "metadata" && !!v && typeof v === "object" && !!w && typeof w === "object" && covered(v, w);
|
|
1713
|
+
});
|
|
1714
|
+
return covered(mine.data, theirs.data);
|
|
1715
|
+
} catch {
|
|
1716
|
+
return false;
|
|
1717
|
+
}
|
|
1718
|
+
});
|
|
1719
|
+
}
|
|
1633
1720
|
/**
|
|
1634
1721
|
* Open the local index and snapshot its libraries + asset definitions.
|
|
1635
1722
|
* Best-effort: no index file (never indexed), or any open/guard failure,
|
|
@@ -2124,8 +2211,38 @@ var AssetManager = class {
|
|
|
2124
2211
|
const id = refIdentity(m);
|
|
2125
2212
|
return !lib.resolved.has(m) && !(id !== null && covered.has(id));
|
|
2126
2213
|
});
|
|
2214
|
+
this.keepUnchangedSourceVersions(resolved, [...deps, ...opts.declaredRefs ?? []]);
|
|
2127
2215
|
return { resolved, missing: stillMissing, overridesApplied, lib, presets, requiredBy };
|
|
2128
2216
|
}
|
|
2217
|
+
/**
|
|
2218
|
+
* A source asset without a declared version is keyed `0.0.0-sha.<repo commit>`, so every
|
|
2219
|
+
* commit of its repo would re-key (and re-lock, and report as updated) every asset of
|
|
2220
|
+
* that repo, changed or not. Keep the locked key and version of an asset whose files hash
|
|
2221
|
+
* to what the lock holds: `update` then re-locks only what changed, as `outdated` lists.
|
|
2222
|
+
* The commit stays the clone's, so the lock's `sources:` row still names the bytes' commit.
|
|
2223
|
+
* A ref the user pinned (`#<version>`) keeps the version it names.
|
|
2224
|
+
*/
|
|
2225
|
+
keepUnchangedSourceVersions(resolved, requested) {
|
|
2226
|
+
const prev = this.tryReadLock();
|
|
2227
|
+
if (!prev) return;
|
|
2228
|
+
const pinned = /* @__PURE__ */ new Set();
|
|
2229
|
+
for (const ref of requested) {
|
|
2230
|
+
const id = refIdentity(ref);
|
|
2231
|
+
if (id !== null && ref.includes("#")) pinned.add(id);
|
|
2232
|
+
}
|
|
2233
|
+
for (const c of resolved) {
|
|
2234
|
+
if (!c.version.startsWith("0.0.0-sha.")) continue;
|
|
2235
|
+
const id = `${c.publisher}/${c.kind}:${c.name}`;
|
|
2236
|
+
if (pinned.has(id)) continue;
|
|
2237
|
+
for (const [key, entry] of Object.entries(prev.assets)) {
|
|
2238
|
+
const o = parseCanonicalLockKey(key);
|
|
2239
|
+
if (o.kind !== c.kind || o.name !== c.name || o.publisher !== c.publisher) continue;
|
|
2240
|
+
if (!o.version?.startsWith("0.0.0-sha.")) continue;
|
|
2241
|
+
if (entry.source?.url === c.sourceUrl && entry.sha256 === c.sha256) c.version = o.version;
|
|
2242
|
+
break;
|
|
2243
|
+
}
|
|
2244
|
+
}
|
|
2245
|
+
}
|
|
2129
2246
|
/** The catalog fetcher to use: an injected one, else built from `stores`. */
|
|
2130
2247
|
storeFetcherFor(stores) {
|
|
2131
2248
|
return this.injectedStoreFetcher ?? this.buildStoreFetcher(stores);
|
|
@@ -2328,7 +2445,11 @@ var AssetManager = class {
|
|
|
2328
2445
|
};
|
|
2329
2446
|
}
|
|
2330
2447
|
}
|
|
2331
|
-
const cloneError = this.ensureSourceClones(
|
|
2448
|
+
const cloneError = this.ensureSourceClones(
|
|
2449
|
+
repositories,
|
|
2450
|
+
sources,
|
|
2451
|
+
opts?.moveLibraries ? void 0 : lockForLibraries
|
|
2452
|
+
);
|
|
2332
2453
|
if (cloneError) return cloneError;
|
|
2333
2454
|
const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
|
|
2334
2455
|
projectDir: this.projectDir,
|
|
@@ -2357,7 +2478,8 @@ var AssetManager = class {
|
|
|
2357
2478
|
const hints = {};
|
|
2358
2479
|
for (const [m, parents] of unmetByNew) {
|
|
2359
2480
|
const requirer = parents.map((p) => p.split("#")[0]).join(", ");
|
|
2360
|
-
|
|
2481
|
+
const unreachable = [...this.storeFailures.values()];
|
|
2482
|
+
hints[m] = unreachable.length > 0 ? ` is required by ${requirer} (store unreachable, so it was not looked up: ${unreachable.join("; ")} \u2014 check the URL with \`skaile catalog test\`) \u2014 nothing was installed` : ` is required by ${requirer} (not found \u2014 ${REGISTER_HOLDER}, or drop ${requirer} with \`skaile remove ${parents[0].split("#")[0]}\`) \u2014 nothing was installed`;
|
|
2361
2483
|
}
|
|
2362
2484
|
return {
|
|
2363
2485
|
deployed: [],
|
|
@@ -2401,7 +2523,7 @@ var AssetManager = class {
|
|
|
2401
2523
|
)
|
|
2402
2524
|
)
|
|
2403
2525
|
];
|
|
2404
|
-
|
|
2526
|
+
const restored = this.restoredCopies(copyDrift, deployed);
|
|
2405
2527
|
await this.renderDriverMcpConfig();
|
|
2406
2528
|
const agentRender = await this.renderAgentInstances();
|
|
2407
2529
|
const lockWanted = resolved.length > 0 || lib.entries.length > 0 || existsSync(this.lockPath);
|
|
@@ -2409,9 +2531,8 @@ var AssetManager = class {
|
|
|
2409
2531
|
let relocked = [];
|
|
2410
2532
|
let moved = [];
|
|
2411
2533
|
if (lockWanted) {
|
|
2412
|
-
const lockData = withKeptLockEntries(freshLock, kept);
|
|
2534
|
+
const lockData = this.withRenderedAgents(withKeptLockEntries(freshLock, kept));
|
|
2413
2535
|
relocked = relockedRefs(prevLock, lockData);
|
|
2414
|
-
restored = [...restored, ...this.removeExcludedLeftovers(relocked)];
|
|
2415
2536
|
moved = libraryMoves(prevLock, libraryLock);
|
|
2416
2537
|
lockWritten = writeLock(this.lockPath, lockData);
|
|
2417
2538
|
}
|
|
@@ -2488,13 +2609,25 @@ var AssetManager = class {
|
|
|
2488
2609
|
* {@link InstallResult} describing the failed source on the first error, or
|
|
2489
2610
|
* `null` when every clone succeeds.
|
|
2490
2611
|
*/
|
|
2491
|
-
ensureSourceClones(repositories, sources) {
|
|
2612
|
+
ensureSourceClones(repositories, sources, lock) {
|
|
2492
2613
|
const pinBySlug = pinsBySlug(sources);
|
|
2614
|
+
const lockedCommit = /* @__PURE__ */ new Map();
|
|
2615
|
+
for (const s of lock?.sources ?? []) {
|
|
2616
|
+
if (!/^0*$/.test(s.commit)) lockedCommit.set(sourceCacheKey(s.url), s.commit);
|
|
2617
|
+
}
|
|
2493
2618
|
for (const [name, decl] of Object.entries(repositories)) {
|
|
2494
2619
|
try {
|
|
2620
|
+
const declaredPin = pinBySlug.get(name);
|
|
2621
|
+
let locked = decl.url && !decl.factory ? lockedCommit.get(name) : void 0;
|
|
2622
|
+
if (locked && declaredPin === void 0) {
|
|
2623
|
+
const dir = this.resolveRepoDir(decl, name);
|
|
2624
|
+
const head = dir ? getRepoCommit(dir) : void 0;
|
|
2625
|
+
if (dir && head && head !== locked && !isCommitOnRemote(dir, head)) locked = void 0;
|
|
2626
|
+
}
|
|
2495
2627
|
ensureRepo(decl, name, this.reposDir, {
|
|
2496
2628
|
projectDir: this.projectDir,
|
|
2497
|
-
pin:
|
|
2629
|
+
pin: declaredPin ?? locked,
|
|
2630
|
+
...declaredPin === void 0 && locked ? { strictPin: true } : {}
|
|
2498
2631
|
});
|
|
2499
2632
|
} catch (err) {
|
|
2500
2633
|
return {
|
|
@@ -2773,7 +2906,7 @@ var AssetManager = class {
|
|
|
2773
2906
|
const candidate = this.lockedCandidate(key, entry, repositories);
|
|
2774
2907
|
if (!candidate) continue;
|
|
2775
2908
|
candidates.push(candidate);
|
|
2776
|
-
if (
|
|
2909
|
+
if (this.candidateHasLocalBytes(candidate, repositories)) {
|
|
2777
2910
|
cloneOrigin[key] = entry;
|
|
2778
2911
|
}
|
|
2779
2912
|
}
|
|
@@ -2996,7 +3129,28 @@ var AssetManager = class {
|
|
|
2996
3129
|
...dependencies.map((d) => parseAssetRefLoose(d) ?? {})
|
|
2997
3130
|
]
|
|
2998
3131
|
);
|
|
3132
|
+
if (!opts?.force) {
|
|
3133
|
+
this.assertNoUnownedFolder(
|
|
3134
|
+
[
|
|
3135
|
+
...resolved.map((c) => ({
|
|
3136
|
+
id: c,
|
|
3137
|
+
entry: this.candidateToCatalogEntry(c, repositories)
|
|
3138
|
+
})),
|
|
3139
|
+
...lib.entries.map((e) => ({ id: this.entryIdentity(e), entry: e }))
|
|
3140
|
+
],
|
|
3141
|
+
[
|
|
3142
|
+
...Object.keys(this.tryReadLock()?.assets ?? {}).map(parseCanonicalLockKey),
|
|
3143
|
+
...dependencies.map((d) => parseAssetRefLoose(d) ?? {})
|
|
3144
|
+
]
|
|
3145
|
+
);
|
|
3146
|
+
}
|
|
2999
3147
|
if (missing.length > 0) {
|
|
3148
|
+
const unreachable = [...this.storeFailures.values()];
|
|
3149
|
+
if (unreachable.length > 0) {
|
|
3150
|
+
throw new Error(
|
|
3151
|
+
`Store unreachable \u2014 ${ref.split("#")[0]} requires ${missing.join(", ")}, which was not looked up: ${unreachable.join("; ")}. Check the URL with \`skaile catalog test\`; a library or source can still hold the requirement \u2014 nothing was added`
|
|
3152
|
+
);
|
|
3153
|
+
}
|
|
3000
3154
|
throw new Error(
|
|
3001
3155
|
`${ref.split("#")[0]} requires ${missing.join(", ")} (not found \u2014 ${REGISTER_HOLDER}, or remove the requirement from the asset's manifest) \u2014 nothing was added`
|
|
3002
3156
|
);
|
|
@@ -3035,7 +3189,7 @@ var AssetManager = class {
|
|
|
3035
3189
|
if (opts?.onLibraryMoved) {
|
|
3036
3190
|
for (const m of libraryMoves(prevLock, libraryLock)) opts.onLibraryMoved(m);
|
|
3037
3191
|
}
|
|
3038
|
-
writeLock(this.lockPath, mergeLockFile(prevLock, fresh));
|
|
3192
|
+
writeLock(this.lockPath, mergeLockFile(prevLock, this.withRenderedAgents(fresh)));
|
|
3039
3193
|
}
|
|
3040
3194
|
for (const d of deployed) {
|
|
3041
3195
|
appendHistory(this.projectDir, {
|
|
@@ -3548,7 +3702,13 @@ var AssetManager = class {
|
|
|
3548
3702
|
for (const [name, decl] of Object.entries(repositories)) {
|
|
3549
3703
|
const repoDir = this.resolveRepoDir(decl, name);
|
|
3550
3704
|
if (!repoDir) continue;
|
|
3551
|
-
all = [
|
|
3705
|
+
all = [
|
|
3706
|
+
...all,
|
|
3707
|
+
...await scanRepo(repoDir, name, {
|
|
3708
|
+
knownKinds: this.knownKinds,
|
|
3709
|
+
declaredPublisher: decl.publisher
|
|
3710
|
+
})
|
|
3711
|
+
];
|
|
3552
3712
|
}
|
|
3553
3713
|
if (kind) all = all.filter((e) => e.kind === kind);
|
|
3554
3714
|
if (query) {
|
|
@@ -3593,7 +3753,10 @@ var AssetManager = class {
|
|
|
3593
3753
|
for (const [name, decl] of Object.entries(repositories)) {
|
|
3594
3754
|
const repoDir = this.resolveRepoDir(decl, name);
|
|
3595
3755
|
if (!repoDir) continue;
|
|
3596
|
-
const entries = await scanRepo(repoDir, name, {
|
|
3756
|
+
const entries = await scanRepo(repoDir, name, {
|
|
3757
|
+
knownKinds: this.knownKinds,
|
|
3758
|
+
declaredPublisher: decl.publisher
|
|
3759
|
+
});
|
|
3597
3760
|
const match = entries.find(
|
|
3598
3761
|
(e) => e.kind === parsed.kind && e.name === parsed.name && (!parsed.publisher || e.publisher === parsed.publisher)
|
|
3599
3762
|
);
|
|
@@ -4398,8 +4561,14 @@ var AssetManager = class {
|
|
|
4398
4561
|
stores,
|
|
4399
4562
|
declaredRefs: dependencies
|
|
4400
4563
|
});
|
|
4564
|
+
this.assertSourceCommitsPublished(resolved, repositories);
|
|
4401
4565
|
const libraryLock = await this.libraryLockEntries(lib);
|
|
4402
4566
|
const lockData = buildLockFile(resolved, overridesApplied, libraryLock);
|
|
4567
|
+
const prior = this.tryReadLock();
|
|
4568
|
+
for (const [key, entry] of Object.entries(lockData.assets)) {
|
|
4569
|
+
const rendered = prior?.assets[key]?.rendered;
|
|
4570
|
+
if (rendered) entry.rendered = rendered;
|
|
4571
|
+
}
|
|
4403
4572
|
writeLock(this.lockPath, lockData);
|
|
4404
4573
|
return lockData;
|
|
4405
4574
|
}
|
|
@@ -4643,7 +4812,19 @@ var AssetManager = class {
|
|
|
4643
4812
|
}
|
|
4644
4813
|
const asset = lockIdentity(i.assetKind, i.assetName);
|
|
4645
4814
|
const dep = `${i.depKind}:${i.depName}`;
|
|
4646
|
-
|
|
4815
|
+
const depId = /^@([^/]+)\/(.+)$/.exec(i.depName);
|
|
4816
|
+
const lockedOnly = lockedIds.some(
|
|
4817
|
+
(id) => id.kind === i.depKind && id.name === (depId ? depId[2] : i.depName) && (!depId || id.publisher === depId[1])
|
|
4818
|
+
);
|
|
4819
|
+
if (lockedOnly) {
|
|
4820
|
+
gaps.push({
|
|
4821
|
+
type: "requires",
|
|
4822
|
+
ref: dep,
|
|
4823
|
+
asset,
|
|
4824
|
+
reason: `is required by ${asset} but locked and not deployed (run skaile install --locked)`,
|
|
4825
|
+
message: `${asset} requires ${dep} (run skaile install --locked)`
|
|
4826
|
+
});
|
|
4827
|
+
} else if (i.inRepos) {
|
|
4647
4828
|
gaps.push({
|
|
4648
4829
|
type: "requires",
|
|
4649
4830
|
ref: dep,
|
|
@@ -4916,26 +5097,53 @@ var AssetManager = class {
|
|
|
4916
5097
|
return gaps;
|
|
4917
5098
|
}
|
|
4918
5099
|
/**
|
|
4919
|
-
*
|
|
4920
|
-
*
|
|
4921
|
-
*
|
|
4922
|
-
*
|
|
4923
|
-
*
|
|
4924
|
-
* @param refs - Lock keys the install re-locked (hash or commit changed).
|
|
5100
|
+
* Record, on every agent entry of `lock` that has none, the files the agent's harness
|
|
5101
|
+
* rendering occupies and their sha256. Call it after the deploy, so the bytes hashed are the
|
|
5102
|
+
* ones `install` just wrote; {@link lockedCopyDrift} compares later edits with them.
|
|
5103
|
+
* Entries that carry a record (kept from an earlier lock) are left as they are.
|
|
4925
5104
|
*/
|
|
4926
|
-
|
|
4927
|
-
|
|
4928
|
-
for (const key of
|
|
5105
|
+
withRenderedAgents(lock) {
|
|
5106
|
+
if (this.global) return lock;
|
|
5107
|
+
for (const [key, entry] of Object.entries(lock.assets)) {
|
|
5108
|
+
if (entry.rendered || entry.library?.installed) continue;
|
|
4929
5109
|
const { kind, name } = parseCanonicalLockKey(key);
|
|
4930
|
-
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
const removed = removeExcludedLeftovers(dest);
|
|
4934
|
-
if (removed.length === 0) continue;
|
|
4935
|
-
const dir = relative(this.projectDir, dest).split(sep).join("/");
|
|
4936
|
-
out.push({ ref: key, restored: [], removed: removed.map((f) => `${dir}/${f}`) });
|
|
5110
|
+
if (!kind || !name || this.installTarget(kind) !== "agent") continue;
|
|
5111
|
+
const rendered = this.renderedAgentFiles(name);
|
|
5112
|
+
if (rendered.length > 0) entry.rendered = rendered;
|
|
4937
5113
|
}
|
|
4938
|
-
return
|
|
5114
|
+
return lock;
|
|
5115
|
+
}
|
|
5116
|
+
/** The files of one agent's rendering for the active harness, project-relative, with sha256. */
|
|
5117
|
+
renderedAgentFiles(name) {
|
|
5118
|
+
const out = [];
|
|
5119
|
+
const walk = (path2) => {
|
|
5120
|
+
let stat;
|
|
5121
|
+
try {
|
|
5122
|
+
stat = lstatSync(path2);
|
|
5123
|
+
} catch {
|
|
5124
|
+
return;
|
|
5125
|
+
}
|
|
5126
|
+
if (stat.isSymbolicLink()) return;
|
|
5127
|
+
if (stat.isDirectory()) {
|
|
5128
|
+
for (const child of readdirSync(path2).sort()) walk(join(path2, child));
|
|
5129
|
+
} else if (stat.isFile()) {
|
|
5130
|
+
out.push({
|
|
5131
|
+
path: relative(this.projectDir, path2).split(sep).join("/"),
|
|
5132
|
+
sha256: computeHash(path2)
|
|
5133
|
+
});
|
|
5134
|
+
}
|
|
5135
|
+
};
|
|
5136
|
+
for (const path2 of deployedPaths("agent", name, this.driverTarget, false, this.projectDir)) {
|
|
5137
|
+
walk(path2);
|
|
5138
|
+
}
|
|
5139
|
+
walk(
|
|
5140
|
+
join(
|
|
5141
|
+
dirname(deployedBase("agent", this.driverTarget, false, this.projectDir)),
|
|
5142
|
+
CODEX_IDENTITY_DIR,
|
|
5143
|
+
`${name}.md`
|
|
5144
|
+
)
|
|
5145
|
+
);
|
|
5146
|
+
return out.sort((a, b) => a.path.localeCompare(b.path));
|
|
4939
5147
|
}
|
|
4940
5148
|
/**
|
|
4941
5149
|
* The {@link RestoredAsset} rows for the drifted copies (see {@link lockedCopyDrift}) a
|
|
@@ -4946,6 +5154,10 @@ var AssetManager = class {
|
|
|
4946
5154
|
const out = [];
|
|
4947
5155
|
for (const d of drifts) {
|
|
4948
5156
|
if (!rewritten.has(d.ref)) continue;
|
|
5157
|
+
if (d.rendered) {
|
|
5158
|
+
out.push({ ref: d.key, restored: [...d.modified], removed: [] });
|
|
5159
|
+
continue;
|
|
5160
|
+
}
|
|
4949
5161
|
const { kind, name } = parseCanonicalLockKey(d.key);
|
|
4950
5162
|
const component = kind ? this.installTarget(kind) : void 0;
|
|
4951
5163
|
if (!kind || !name || !component) continue;
|
|
@@ -4973,8 +5185,10 @@ var AssetManager = class {
|
|
|
4973
5185
|
* - A source asset is compared with the per-file hashes the lock records (modified files only:
|
|
4974
5186
|
* the lock lists what the source covers, not what the deploy copies).
|
|
4975
5187
|
*
|
|
4976
|
-
*
|
|
4977
|
-
*
|
|
5188
|
+
* A `--link` deploy, an asset with a configured patch, and a copy that is missing are not
|
|
5189
|
+
* compared: other gaps cover them. An agent (rendered, not copied) is compared with the
|
|
5190
|
+
* hashes of its rendered files the lock records (`LockEntry.rendered`); its `modified` paths
|
|
5191
|
+
* are project-relative. Project mode only.
|
|
4978
5192
|
*/
|
|
4979
5193
|
async lockedCopyDrift() {
|
|
4980
5194
|
if (this.global) return [];
|
|
@@ -5028,6 +5242,24 @@ var AssetManager = class {
|
|
|
5028
5242
|
if (modified.length > 0)
|
|
5029
5243
|
out.push({ ref: refOf(key), key, modified, extra: [], library: false });
|
|
5030
5244
|
}
|
|
5245
|
+
for (const [key, entry] of Object.entries(lock.assets)) {
|
|
5246
|
+
if (!entry.rendered || entry.rendered.length === 0 || entry.library?.installed) continue;
|
|
5247
|
+
const { kind, name } = parseCanonicalLockKey(key);
|
|
5248
|
+
if (!kind || !name || this.installTarget(kind) !== "agent") continue;
|
|
5249
|
+
if (patches[`${kind}:${name}`]) continue;
|
|
5250
|
+
const modified = [];
|
|
5251
|
+
for (const f of entry.rendered) {
|
|
5252
|
+
const file = join(this.projectDir, f.path);
|
|
5253
|
+
if (!existsSync(file)) continue;
|
|
5254
|
+
try {
|
|
5255
|
+
if (computeHash(file) !== f.sha256) modified.push(f.path);
|
|
5256
|
+
} catch {
|
|
5257
|
+
modified.push(f.path);
|
|
5258
|
+
}
|
|
5259
|
+
}
|
|
5260
|
+
if (modified.length > 0)
|
|
5261
|
+
out.push({ ref: refOf(key), key, modified, extra: [], library: false, rendered: true });
|
|
5262
|
+
}
|
|
5031
5263
|
return out;
|
|
5032
5264
|
}
|
|
5033
5265
|
/**
|
|
@@ -5045,7 +5277,7 @@ var AssetManager = class {
|
|
|
5045
5277
|
if (!kind || !name || !component || named.has(`${kind}:${name}`)) continue;
|
|
5046
5278
|
if (isDeployed(component, name, this.driverTarget, this.global, this.projectDir)) continue;
|
|
5047
5279
|
const ref = publisher ? `${kind}:@${publisher}/${name}` : `${kind}:${name}`;
|
|
5048
|
-
const reason = "is locked but its deployed copy is missing \u2014 run `skaile install`";
|
|
5280
|
+
const reason = "is locked but its deployed copy is missing \u2014 run `skaile install --locked`";
|
|
5049
5281
|
gaps.push({ type: "drift", ref, reason, message: `${ref} ${reason}` });
|
|
5050
5282
|
}
|
|
5051
5283
|
return gaps;
|
|
@@ -5096,7 +5328,12 @@ var AssetManager = class {
|
|
|
5096
5328
|
manualFix: true
|
|
5097
5329
|
};
|
|
5098
5330
|
} else if (await this.declaredRefResolvable(d.ref)) {
|
|
5099
|
-
|
|
5331
|
+
const unmet = await this.unmetRequirementOf(d.ref);
|
|
5332
|
+
gap = unmet ? {
|
|
5333
|
+
type: "declared",
|
|
5334
|
+
reason: `requires ${unmet} but no library or source holds it \u2014 ${REGISTER_HOLDER}, or drop ${d.ref.split("#")[0]} with \`skaile remove ${d.ref.split("#")[0]}\``,
|
|
5335
|
+
manualFix: true
|
|
5336
|
+
} : { type: "declared", reason: "is declared but not locked \u2014 run `skaile install`" };
|
|
5100
5337
|
} else {
|
|
5101
5338
|
gap = {
|
|
5102
5339
|
type: "declared",
|
|
@@ -5138,6 +5375,38 @@ var AssetManager = class {
|
|
|
5138
5375
|
return p !== null && p.kind === want.kind && p.name === want.name && (!want.publisher || !p.publisher || p.publisher === want.publisher);
|
|
5139
5376
|
});
|
|
5140
5377
|
}
|
|
5378
|
+
/**
|
|
5379
|
+
* The first requirement, direct or transitive, of the declared `ref` that no local source or
|
|
5380
|
+
* library holds and that nothing in the project already provides — the case `install` ends
|
|
5381
|
+
* with `Missing: … nothing was installed`. `undefined` when every requirement is held, when a
|
|
5382
|
+
* store is declared (it may hold the requirement and a check never goes to the network), or
|
|
5383
|
+
* when `ref` itself resolves to nothing.
|
|
5384
|
+
*/
|
|
5385
|
+
async unmetRequirementOf(ref) {
|
|
5386
|
+
if (this.loadConfig().stores.length > 0) return void 0;
|
|
5387
|
+
const lockedIds = Object.keys(this.tryReadLock()?.assets ?? {}).map(parseCanonicalLockKey);
|
|
5388
|
+
const seen = /* @__PURE__ */ new Set();
|
|
5389
|
+
const queue = [ref];
|
|
5390
|
+
for (let cur = queue.shift(); cur !== void 0; cur = queue.shift()) {
|
|
5391
|
+
const id = refIdentity(cur);
|
|
5392
|
+
if (id !== null) {
|
|
5393
|
+
if (seen.has(id)) continue;
|
|
5394
|
+
seen.add(id);
|
|
5395
|
+
}
|
|
5396
|
+
const entry = await this.info(cur);
|
|
5397
|
+
if (!entry) {
|
|
5398
|
+
if (cur === ref) return void 0;
|
|
5399
|
+
const want = parseRefTolerant(cur);
|
|
5400
|
+
const locked = want !== null && lockedIds.some(
|
|
5401
|
+
(l) => l.kind === want.kind && l.name === want.name && (!want.publisher || l.publisher === want.publisher)
|
|
5402
|
+
);
|
|
5403
|
+
if (!locked) return cur;
|
|
5404
|
+
continue;
|
|
5405
|
+
}
|
|
5406
|
+
queue.push(...libraryEntryDepRefs(entry));
|
|
5407
|
+
}
|
|
5408
|
+
return void 0;
|
|
5409
|
+
}
|
|
5141
5410
|
/**
|
|
5142
5411
|
* Whether `skaile install` can resolve a declared ref: a source or library holds it, or the
|
|
5143
5412
|
* project declares a store that may. The global catalog is not asked: a check never goes
|
|
@@ -5480,5 +5749,5 @@ var AssetManager = class {
|
|
|
5480
5749
|
};
|
|
5481
5750
|
|
|
5482
5751
|
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName };
|
|
5483
|
-
//# sourceMappingURL=chunk-
|
|
5484
|
-
//# sourceMappingURL=chunk-
|
|
5752
|
+
//# sourceMappingURL=chunk-QAYL3PYY.js.map
|
|
5753
|
+
//# sourceMappingURL=chunk-QAYL3PYY.js.map
|