@skaile/workspaces 5.11.0 → 5.13.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 +193 -0
- package/README.md +4 -4
- package/dist/{asset-feeds-CXGQIDFR.js → asset-feeds-ALMTHLPV.js} +26 -23
- package/dist/asset-feeds-ALMTHLPV.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +10 -10
- package/dist/asset-manager/fragments.js +1 -1
- package/dist/asset-manager/index.js +18 -18
- package/dist/asset-manager/installer.js +13 -13
- package/dist/asset-manager/renderers.js +11 -11
- package/dist/asset-manager/src/fragments.d.ts +5 -0
- package/dist/asset-manager/src/fragments.d.ts.map +1 -1
- package/dist/asset-manager/src/index.d.ts +140 -12
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +9 -1
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts +5 -0
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +21 -16
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +101 -29
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +12 -12
- package/dist/bridge/drivers/echo.js +2 -2
- package/dist/bridge/drivers/gemini.js +7 -7
- package/dist/bridge/drivers/goose.js +12 -12
- package/dist/bridge/drivers/omp.js +135 -33
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +12 -12
- package/dist/bridge/drivers/qwen.js +7 -7
- package/dist/bridge/index.js +14 -14
- package/dist/bridge/src/codex/config-toml.d.ts +16 -3
- package/dist/bridge/src/codex/config-toml.d.ts.map +1 -1
- package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- 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 +29 -6
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/provider-materialize/credential-env.d.ts +15 -0
- package/dist/bridge/src/provider-materialize/credential-env.d.ts.map +1 -1
- package/dist/{chunk-T42WRQ4O.js → chunk-2BIESC6S.js} +3 -3
- package/dist/{chunk-T42WRQ4O.js.map → chunk-2BIESC6S.js.map} +1 -1
- package/dist/{chunk-CPWLNZGJ.js → chunk-4DLQESIY.js} +3 -3
- package/dist/{chunk-CPWLNZGJ.js.map → chunk-4DLQESIY.js.map} +1 -1
- package/dist/{chunk-HZXUXHIV.js → chunk-4L4R5LV3.js} +89 -12
- package/dist/chunk-4L4R5LV3.js.map +1 -0
- package/dist/{chunk-CAHB6MHA.js → chunk-4NJ3QQHZ.js} +5 -5
- package/dist/{chunk-CAHB6MHA.js.map → chunk-4NJ3QQHZ.js.map} +1 -1
- package/dist/{chunk-ZCAJZ4B2.js → chunk-57SF6W6E.js} +147 -4
- package/dist/chunk-57SF6W6E.js.map +1 -0
- package/dist/{chunk-FH7W6TJ4.js → chunk-5FYOM4RF.js} +106 -25
- package/dist/chunk-5FYOM4RF.js.map +1 -0
- package/dist/{chunk-R7NHYEJF.js → chunk-5SKVCMRC.js} +15 -7
- package/dist/chunk-5SKVCMRC.js.map +1 -0
- package/dist/{chunk-CJERAGFY.js → chunk-6GICC4RJ.js} +44 -13
- package/dist/chunk-6GICC4RJ.js.map +1 -0
- package/dist/{chunk-G4FFOV3N.js → chunk-6JKIOPT3.js} +4 -4
- package/dist/{chunk-G4FFOV3N.js.map → chunk-6JKIOPT3.js.map} +1 -1
- package/dist/{chunk-T7CTHHG7.js → chunk-6NQDDCIL.js} +3 -3
- package/dist/{chunk-T7CTHHG7.js.map → chunk-6NQDDCIL.js.map} +1 -1
- package/dist/{chunk-XUSALIEI.js → chunk-7SMP4GNW.js} +6 -6
- package/dist/{chunk-XUSALIEI.js.map → chunk-7SMP4GNW.js.map} +1 -1
- package/dist/{chunk-Y3HTGHJC.js → chunk-AHCI4V5L.js} +3 -3
- package/dist/{chunk-Y3HTGHJC.js.map → chunk-AHCI4V5L.js.map} +1 -1
- package/dist/{chunk-M3B6EIJD.js → chunk-B7CZYFB2.js} +4 -4
- package/dist/{chunk-M3B6EIJD.js.map → chunk-B7CZYFB2.js.map} +1 -1
- package/dist/{chunk-PBBPZYVG.js → chunk-BF422IDP.js} +112 -46
- package/dist/chunk-BF422IDP.js.map +1 -0
- package/dist/{chunk-47U4GZ4M.js → chunk-BVJU2GKE.js} +20 -3
- package/dist/chunk-BVJU2GKE.js.map +1 -0
- package/dist/{chunk-PMECEZK3.js → chunk-D54T2F54.js} +5 -4
- package/dist/chunk-D54T2F54.js.map +1 -0
- package/dist/{chunk-2F5AWQX5.js → chunk-DKGEV6SQ.js} +192 -42
- package/dist/chunk-DKGEV6SQ.js.map +1 -0
- package/dist/{chunk-DALV4HHP.js → chunk-DKXNKFKP.js} +3 -2
- package/dist/{chunk-DALV4HHP.js.map → chunk-DKXNKFKP.js.map} +1 -1
- package/dist/chunk-FB3NREF7.js +649 -0
- package/dist/chunk-FB3NREF7.js.map +1 -0
- package/dist/{chunk-QZNJOHN6.js → chunk-FHDK3BFD.js} +3 -3
- package/dist/{chunk-QZNJOHN6.js.map → chunk-FHDK3BFD.js.map} +1 -1
- package/dist/{chunk-3SM2DL2T.js → chunk-GMDSRSGI.js} +21 -11
- package/dist/chunk-GMDSRSGI.js.map +1 -0
- package/dist/chunk-H5U7LNTJ.js +122 -0
- package/dist/chunk-H5U7LNTJ.js.map +1 -0
- package/dist/{chunk-VLTQGE2E.js → chunk-HBZD3MIW.js} +269 -81
- package/dist/chunk-HBZD3MIW.js.map +1 -0
- package/dist/{chunk-S3O3GKB7.js → chunk-HWGYJMME.js} +4 -4
- package/dist/{chunk-S3O3GKB7.js.map → chunk-HWGYJMME.js.map} +1 -1
- package/dist/{chunk-CPSIPIX7.js → chunk-IG5LZ3WU.js} +8 -6
- package/dist/chunk-IG5LZ3WU.js.map +1 -0
- package/dist/{chunk-ZPWTOUTK.js → chunk-IY5E7Y5W.js} +61 -8
- package/dist/chunk-IY5E7Y5W.js.map +1 -0
- package/dist/{chunk-6O2X3GPW.js → chunk-J4DB5G36.js} +7 -5
- package/dist/chunk-J4DB5G36.js.map +1 -0
- package/dist/{chunk-BNMZVPYA.js → chunk-J4OYIYFQ.js} +2 -2
- package/dist/{chunk-BNMZVPYA.js.map → chunk-J4OYIYFQ.js.map} +1 -1
- package/dist/{chunk-ALEYHUC5.js → chunk-L3ZGYSWY.js} +182 -41
- package/dist/chunk-L3ZGYSWY.js.map +1 -0
- package/dist/{chunk-SBSA3IQA.js → chunk-M3P4BYRK.js} +49 -14
- package/dist/chunk-M3P4BYRK.js.map +1 -0
- package/dist/{chunk-IER3KIPH.js → chunk-NDUYFYJB.js} +5 -5
- package/dist/{chunk-IER3KIPH.js.map → chunk-NDUYFYJB.js.map} +1 -1
- package/dist/{chunk-CGYEHQOX.js → chunk-NOA6EJXE.js} +11 -2
- package/dist/chunk-NOA6EJXE.js.map +1 -0
- package/dist/{chunk-J4RBUFGM.js → chunk-NVO6WECE.js} +9 -8
- package/dist/chunk-NVO6WECE.js.map +1 -0
- package/dist/{chunk-OBYKJB4U.js → chunk-O2SYFJWP.js} +79 -5
- package/dist/chunk-O2SYFJWP.js.map +1 -0
- package/dist/{chunk-5LKOAX7I.js → chunk-OQ5MKDS3.js} +21 -5
- package/dist/chunk-OQ5MKDS3.js.map +1 -0
- package/dist/{chunk-NWDSLXOX.js → chunk-PHRNUTSG.js} +118 -118
- package/dist/chunk-PHRNUTSG.js.map +1 -0
- package/dist/chunk-PN44DOGP.js +345 -0
- package/dist/chunk-PN44DOGP.js.map +1 -0
- package/dist/{chunk-COH6FQAG.js → chunk-PXDWTJ3P.js} +5 -5
- package/dist/{chunk-COH6FQAG.js.map → chunk-PXDWTJ3P.js.map} +1 -1
- package/dist/{chunk-GV4DZ6MT.js → chunk-PYTTF754.js} +22 -6
- package/dist/chunk-PYTTF754.js.map +1 -0
- package/dist/chunk-PZOO7L26.js +64 -0
- package/dist/chunk-PZOO7L26.js.map +1 -0
- package/dist/{chunk-EDYHEMJA.js → chunk-QO7CR3KB.js} +10 -5
- package/dist/chunk-QO7CR3KB.js.map +1 -0
- package/dist/{chunk-XDKH7XSA.js → chunk-R6QHJEHE.js} +5 -5
- package/dist/{chunk-XDKH7XSA.js.map → chunk-R6QHJEHE.js.map} +1 -1
- package/dist/chunk-U27JRO5L.js +13 -0
- package/dist/chunk-U27JRO5L.js.map +1 -0
- package/dist/{chunk-X77SUM4P.js → chunk-USHB5KEY.js} +3 -3
- package/dist/{chunk-X77SUM4P.js.map → chunk-USHB5KEY.js.map} +1 -1
- package/dist/{chunk-QVFAS5IO.js → chunk-V5JHD4I2.js} +3 -3
- package/dist/{chunk-QVFAS5IO.js.map → chunk-V5JHD4I2.js.map} +1 -1
- package/dist/{chunk-PQFHMQHQ.js → chunk-VLBIME5L.js} +6 -6
- package/dist/{chunk-PQFHMQHQ.js.map → chunk-VLBIME5L.js.map} +1 -1
- package/dist/{chunk-D3B36CYC.js → chunk-X3RMRJNR.js} +4 -3
- package/dist/chunk-X3RMRJNR.js.map +1 -0
- package/dist/{chunk-TCHRMVTO.js → chunk-XBYSURMK.js} +4 -4
- package/dist/{chunk-TCHRMVTO.js.map → chunk-XBYSURMK.js.map} +1 -1
- package/dist/{chunk-MZG34MBZ.js → chunk-XJYBCDY2.js} +3 -3
- package/dist/{chunk-MZG34MBZ.js.map → chunk-XJYBCDY2.js.map} +1 -1
- package/dist/{chunk-4A4OD24G.js → chunk-Y4Z7LGSH.js} +9 -9
- package/dist/{chunk-4A4OD24G.js.map → chunk-Y4Z7LGSH.js.map} +1 -1
- package/dist/{chunk-DZMNFCWB.js → chunk-Y7WKXPWS.js} +816 -143
- package/dist/chunk-Y7WKXPWS.js.map +1 -0
- package/dist/{chunk-HCEVNYSH.js → chunk-YTZFSKWL.js} +3 -3
- package/dist/{chunk-HCEVNYSH.js.map → chunk-YTZFSKWL.js.map} +1 -1
- package/dist/{chunk-WSBKB4CJ.js → chunk-ZSMMX3JD.js} +167 -25
- package/dist/chunk-ZSMMX3JD.js.map +1 -0
- package/dist/{chunk-GCHPUTA3.js → chunk-ZU24LWBI.js} +3 -3
- package/dist/{chunk-GCHPUTA3.js.map → chunk-ZU24LWBI.js.map} +1 -1
- package/dist/cli/index.js +1427 -605
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-checks.d.ts +40 -0
- package/dist/cli/src/agent-checks.d.ts.map +1 -0
- 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/catalog-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +26 -0
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.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/mcp-server.d.ts +1 -1
- package/dist/cli/src/commands/migrate-assets.d.ts +2 -1
- package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/types.d.ts +3 -1
- 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/publish-core.d.ts +5 -0
- package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts +11 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +23 -0
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -0
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest-publish.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/tree.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/commands/why.d.ts.map +1 -1
- package/dist/cli/src/curated-manifests.d.ts +21 -0
- package/dist/cli/src/curated-manifests.d.ts.map +1 -0
- 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/index-busy.d.ts +8 -0
- package/dist/cli/src/index-busy.d.ts.map +1 -0
- 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/paths.d.ts +7 -3
- package/dist/cli/src/plugin-store/paths.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 +27 -3
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/cli/src/store-addable.d.ts +17 -0
- package/dist/cli/src/store-addable.d.ts.map +1 -0
- package/dist/connectors/config.js +6 -6
- package/dist/connectors/index.js +18 -18
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/{connectors-4QWAKPHB.js → connectors-GFKMKAXV.js} +21 -21
- package/dist/{connectors-4QWAKPHB.js.map → connectors-GFKMKAXV.js.map} +1 -1
- package/dist/core/driver-targets.js +1 -1
- package/dist/core/index.js +9 -9
- package/dist/core/logging.js +1 -1
- 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 +6 -5
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +15 -5
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/sinks/sqlite-sink.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +14 -3
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +11 -3
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/package-manager.d.ts +19 -0
- package/dist/core/src/package-manager.d.ts.map +1 -0
- 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 +19 -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/settings.d.ts +26 -6
- package/dist/core/src/settings.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 +8 -1
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +24 -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 +9 -9
- 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-2RONZKCU.js → ensure-sources-VUKHL65L.js} +21 -21
- package/dist/{ensure-sources-2RONZKCU.js.map → ensure-sources-VUKHL65L.js.map} +1 -1
- package/dist/factory-assets/README.md +1 -1
- package/dist/factory-assets/connectors/box.js +18 -18
- package/dist/factory-assets/connectors/deploy.js +18 -18
- package/dist/factory-assets/connectors/devserver.js +18 -18
- package/dist/factory-assets/connectors/flow/adapter.js +18 -18
- package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract.js +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +11 -11
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +20 -20
- package/dist/factory-assets/connectors/flow.js +18 -18
- package/dist/factory-assets/connectors/git.js +18 -18
- package/dist/factory-assets/connectors/gmail.js +18 -18
- package/dist/factory-assets/connectors/googledrive.js +18 -18
- package/dist/factory-assets/connectors/local.js +18 -18
- package/dist/factory-assets/connectors/mattermost.js +18 -18
- package/dist/factory-assets/connectors/memory.js +18 -18
- package/dist/factory-assets/connectors/minio.js +18 -18
- package/dist/factory-assets/connectors/postgres.js +18 -18
- package/dist/factory-assets/connectors/s3.js +18 -18
- package/dist/factory-assets/connectors/sharepoint.js +18 -18
- package/dist/factory-assets/connectors/sqlite.js +18 -18
- package/dist/factory-assets/connectors/static-server.js +18 -18
- package/dist/factory-assets/connectors/tunnel.js +18 -18
- package/dist/factory-assets/connectors/webdav.js +18 -18
- package/dist/factory-assets/connectors/xstate-store.js +18 -18
- package/dist/factory-assets/connectors/xstate.js +18 -18
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +10 -8
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +15 -11
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +12 -9
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +2 -2
- package/dist/flows-A4YALSZY.js +26 -0
- package/dist/{flows-EQF2CH4U.js.map → flows-A4YALSZY.js.map} +1 -1
- package/dist/helpers-53XZW7KF.js +34 -0
- package/dist/{helpers-CFK6YP6R.js.map → helpers-53XZW7KF.js.map} +1 -1
- package/dist/library/index.js +14 -14
- package/dist/library/install.js +6 -4
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts +2 -0
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library-manager.d.ts +5 -0
- package/dist/library/src/local/library-manager.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +5 -3
- package/dist/library/src/local/library.d.ts.map +1 -1
- 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/local/store-paths.d.ts +9 -0
- package/dist/library/src/local/store-paths.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/index.d.ts +1 -1
- package/dist/library/src/remote/index.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +17 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.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-53UTB3MB.js → library-publish-FFIPWIRM.js} +50 -39
- package/dist/library-publish-FFIPWIRM.js.map +1 -0
- package/dist/open-library-PZAT3TJA.js +40 -0
- package/dist/{open-library-BOSPJVID.js.map → open-library-PZAT3TJA.js.map} +1 -1
- package/dist/open-registry-W46UXZ3I.js +32 -0
- package/dist/{open-registry-4FI7HKET.js.map → open-registry-W46UXZ3I.js.map} +1 -1
- package/dist/paths-KKY3NSBZ.js +22 -0
- package/dist/{paths-SUS4S4YT.js.map → paths-KKY3NSBZ.js.map} +1 -1
- package/dist/plugin-store-CK7YWRIC.js +227 -0
- package/dist/plugin-store-CK7YWRIC.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-EZUH7PUJ.js +79 -0
- package/dist/{project-I55A4O2T.js.map → project-EZUH7PUJ.js.map} +1 -1
- package/dist/resolver/index.js +10 -10
- package/dist/runner/index.js +35 -35
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/agents/in-process-host.d.ts.map +1 -1
- package/dist/runner/src/composition/index.d.ts +2 -1
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/prompt-sections.d.ts +20 -5
- package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -1
- package/dist/runner/src/composition/resolve.d.ts +10 -1
- package/dist/runner/src/composition/resolve.d.ts.map +1 -1
- package/dist/runner/src/composition/verify.d.ts +29 -0
- package/dist/runner/src/composition/verify.d.ts.map +1 -0
- package/dist/runner/src/credential-notice.d.ts +14 -0
- package/dist/runner/src/credential-notice.d.ts.map +1 -0
- package/dist/runner/src/environment.d.ts.map +1 -1
- package/dist/runner/src/final-text.d.ts +17 -0
- package/dist/runner/src/final-text.d.ts.map +1 -0
- package/dist/runner/src/index.d.ts +2 -0
- package/dist/runner/src/index.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +13 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- 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 +18 -18
- package/dist/sdk/bridge.js +14 -14
- package/dist/sdk/core.js +9 -9
- package/dist/sdk/flow.js +11 -11
- package/dist/sdk/index.js +38 -36
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +10 -10
- package/dist/sdk/runner.js +35 -35
- package/dist/sdk/src/local-runtime.d.ts.map +1 -1
- package/dist/sdk/transport/ws/client.js +1 -1
- package/dist/sdk/transport/ws/server.js +1 -1
- package/dist/sdk/transport/ws.js +2 -2
- package/dist/sdk/transport.js +2 -2
- package/dist/serve-preflight-F7MYF747.js +64 -0
- package/dist/serve-preflight-F7MYF747.js.map +1 -0
- package/dist/{setup-7DQJKHUI.js → setup-L632QIHV.js} +26 -26
- package/dist/{setup-7DQJKHUI.js.map → setup-L632QIHV.js.map} +1 -1
- package/dist/skills-OY3Y5GKA.js +26 -0
- package/dist/{skills-NUEN5NDX.js.map → skills-OY3Y5GKA.js.map} +1 -1
- package/dist/source-36FHMN5V.js +42 -0
- package/dist/{source-G2LV5LVD.js.map → source-36FHMN5V.js.map} +1 -1
- package/dist/source-fetch-github-PIO6EMMF.js +4 -0
- package/dist/{source-fetch-github-QN4LLTL5.js.map → source-fetch-github-PIO6EMMF.js.map} +1 -1
- package/dist/{source-manifest-publish-6RM7SWLZ.js → source-manifest-publish-NIXJSJ22.js} +30 -28
- package/dist/source-manifest-publish-NIXJSJ22.js.map +1 -0
- package/dist/transport/index.js +2 -2
- package/dist/transport/src/ws/client.d.ts +6 -0
- package/dist/transport/src/ws/client.d.ts.map +1 -1
- package/dist/transport/src/ws/server.d.ts +4 -0
- package/dist/transport/src/ws/server.d.ts.map +1 -1
- package/dist/transport/ws/client.js +1 -1
- package/dist/transport/ws/server.js +1 -1
- package/dist/transport/ws.js +2 -2
- package/dist/tui/index.js +77 -50
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl-session.d.ts +1 -1
- package/dist/tui/src/repl-session.d.ts.map +1 -1
- package/dist/tui/src/repl.d.ts +3 -0
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +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/agent-composition.d.ts +20 -0
- package/dist/types/src/manifests/agent-composition.d.ts.map +1 -1
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/cron.d.ts +15 -0
- package/dist/types/src/manifests/cron.d.ts.map +1 -0
- package/dist/types/src/manifests/index.d.ts +3 -2
- package/dist/types/src/manifests/index.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/workspace-plugin/adapters/mcp.js +25 -25
- package/dist/workspace-plugin/adapters/omp.js +106 -51
- package/dist/workspace-plugin/adapters/omp.js.map +1 -1
- package/dist/workspace-plugin/index.js +2 -2
- package/dist/workspace-plugin/src/adapters/claude-code.d.ts.map +1 -1
- package/dist/workspace-plugin/src/adapters/omp.d.ts +11 -2
- package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/asset-feeds-CXGQIDFR.js.map +0 -1
- package/dist/chunk-2F5AWQX5.js.map +0 -1
- package/dist/chunk-3SM2DL2T.js.map +0 -1
- package/dist/chunk-47U4GZ4M.js.map +0 -1
- package/dist/chunk-5LKOAX7I.js.map +0 -1
- package/dist/chunk-6O2X3GPW.js.map +0 -1
- package/dist/chunk-ALEYHUC5.js.map +0 -1
- package/dist/chunk-CGYEHQOX.js.map +0 -1
- package/dist/chunk-CJERAGFY.js.map +0 -1
- package/dist/chunk-CPSIPIX7.js.map +0 -1
- package/dist/chunk-D3B36CYC.js.map +0 -1
- package/dist/chunk-DZMNFCWB.js.map +0 -1
- package/dist/chunk-EDYHEMJA.js.map +0 -1
- package/dist/chunk-FH7W6TJ4.js.map +0 -1
- package/dist/chunk-GV4DZ6MT.js.map +0 -1
- package/dist/chunk-HZXUXHIV.js.map +0 -1
- package/dist/chunk-J4RBUFGM.js.map +0 -1
- package/dist/chunk-NWDSLXOX.js.map +0 -1
- package/dist/chunk-OBYKJB4U.js.map +0 -1
- package/dist/chunk-PBBPZYVG.js.map +0 -1
- package/dist/chunk-PMECEZK3.js.map +0 -1
- package/dist/chunk-R7FOF242.js +0 -59
- package/dist/chunk-R7FOF242.js.map +0 -1
- package/dist/chunk-R7NHYEJF.js.map +0 -1
- package/dist/chunk-RYYLMBA2.js +0 -392
- package/dist/chunk-RYYLMBA2.js.map +0 -1
- package/dist/chunk-SBSA3IQA.js.map +0 -1
- package/dist/chunk-VLTQGE2E.js.map +0 -1
- package/dist/chunk-WSBKB4CJ.js.map +0 -1
- package/dist/chunk-YOH2L76X.js +0 -505
- package/dist/chunk-YOH2L76X.js.map +0 -1
- package/dist/chunk-ZCAJZ4B2.js.map +0 -1
- package/dist/chunk-ZPWTOUTK.js.map +0 -1
- package/dist/flows-EQF2CH4U.js +0 -26
- package/dist/helpers-CFK6YP6R.js +0 -34
- package/dist/library-publish-53UTB3MB.js.map +0 -1
- package/dist/open-library-BOSPJVID.js +0 -40
- package/dist/open-registry-4FI7HKET.js +0 -32
- package/dist/paths-SUS4S4YT.js +0 -22
- package/dist/plugin-store-AGQDMING.js +0 -149
- package/dist/plugin-store-AGQDMING.js.map +0 -1
- package/dist/project-I55A4O2T.js +0 -41
- package/dist/skills-NUEN5NDX.js +0 -26
- package/dist/source-G2LV5LVD.js +0 -41
- package/dist/source-fetch-github-QN4LLTL5.js +0 -4
- package/dist/source-manifest-publish-6RM7SWLZ.js.map +0 -1
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
import { openLibrary } from './chunk-VLBIME5L.js';
|
|
2
|
+
import { S, logErr, logWarn, logOk, logInfo } from './chunk-PYTTF754.js';
|
|
3
|
+
import { getKindRegistry } from './chunk-4NJ3QQHZ.js';
|
|
4
|
+
import { stampManifestPublisher, upsertManifestAsset, resolveIndexPath, LocalIndex } from './chunk-DKGEV6SQ.js';
|
|
5
|
+
import { requiresSyntaxErrors } from './chunk-NVO6WECE.js';
|
|
6
|
+
import { matchPin } from './chunk-L3ZGYSWY.js';
|
|
7
|
+
import { globalSkaileDir } from './chunk-L5VSIPQD.js';
|
|
8
|
+
import { SKAILE_MANIFEST_FILENAME, listLibrarySymlinks, librarySymlinkMessage, loadSkPublishManifest } from './chunk-IY5E7Y5W.js';
|
|
9
|
+
import { parseFrontmatter } from './chunk-M3P4BYRK.js';
|
|
10
|
+
import { parseDep, isValidPublisher, slugifyAssetName, PUBLISHER_HINT } from './chunk-J4OYIYFQ.js';
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import { rmSync, readFileSync, mkdirSync, writeFileSync, chmodSync } from 'fs';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
import { join, dirname } from 'path';
|
|
15
|
+
import { Option } from 'commander';
|
|
16
|
+
import { parse, stringify } from 'yaml';
|
|
17
|
+
import { randomBytes, createHash } from 'crypto';
|
|
18
|
+
|
|
19
|
+
// cli/src/commands/publish-core.ts
|
|
20
|
+
function formatNamespaceAvailability(a) {
|
|
21
|
+
switch (a.status) {
|
|
22
|
+
case "owned-by-you":
|
|
23
|
+
case "available":
|
|
24
|
+
return `${S.ok("\u2713")} ${a.message}`;
|
|
25
|
+
case "claimable-by-you":
|
|
26
|
+
return `${S.warn("!")} ${a.message}`;
|
|
27
|
+
default:
|
|
28
|
+
return `${S.err("\u2717")} ${a.message}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function preflightNamespace(client, namespace) {
|
|
32
|
+
let a;
|
|
33
|
+
try {
|
|
34
|
+
a = await client.namespaceAvailability(namespace);
|
|
35
|
+
} catch {
|
|
36
|
+
return { ok: true };
|
|
37
|
+
}
|
|
38
|
+
switch (a.status) {
|
|
39
|
+
case "owned-by-you":
|
|
40
|
+
case "available":
|
|
41
|
+
return { ok: true };
|
|
42
|
+
case "claimable-by-you":
|
|
43
|
+
return {
|
|
44
|
+
ok: false,
|
|
45
|
+
message: `@${namespace} isn't yours yet \u2014 claim it in the store first${a.claimMethod ? ` (${a.claimMethod})` : ""}, then re-run. ${a.message}`
|
|
46
|
+
};
|
|
47
|
+
default:
|
|
48
|
+
return { ok: false, message: `Cannot publish under @${namespace} \u2014 ${a.message}` };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function matchCandidatesToManifest(candidates, manifest) {
|
|
52
|
+
const wanted = new Set((manifest.assets ?? []).map((a) => `${a.kind}:${a.name}`));
|
|
53
|
+
return candidates.filter((c) => wanted.has(`${c.kind}:${c.name}`));
|
|
54
|
+
}
|
|
55
|
+
function refFor(kind, publisher, name, version) {
|
|
56
|
+
const base = `${kind}:@${publisher}/${name}`;
|
|
57
|
+
return version ? `${base}#${version}` : base;
|
|
58
|
+
}
|
|
59
|
+
var UNSET_NAMESPACE = "<manifest publisher>";
|
|
60
|
+
function assetNamespace(asset, manifest) {
|
|
61
|
+
return asset.publisher ?? manifest.publisher;
|
|
62
|
+
}
|
|
63
|
+
function assetEntryRef(asset, manifest) {
|
|
64
|
+
const ns = assetNamespace(asset, manifest);
|
|
65
|
+
return ns ? refFor(asset.kind, ns, asset.name) : `${asset.kind}:${asset.name}`;
|
|
66
|
+
}
|
|
67
|
+
function manifestVersionMismatchMessage(entryRef, entryVersion, relFile, fileVersion) {
|
|
68
|
+
return `${SKAILE_MANIFEST_FILENAME} [assets] \u2014 ${entryRef}: manifest version ${entryVersion} differs from ${relFile} (${fileVersion}). The file is the source of truth: bump the version there, then run \`skaile library index <library>\`.`;
|
|
69
|
+
}
|
|
70
|
+
function manifestNamespaces(manifest, assetName) {
|
|
71
|
+
const out = /* @__PURE__ */ new Set();
|
|
72
|
+
for (const a of manifest.assets ?? []) {
|
|
73
|
+
if (assetName && a.name !== assetName) continue;
|
|
74
|
+
const ns = assetNamespace(a, manifest);
|
|
75
|
+
if (ns) out.add(ns);
|
|
76
|
+
}
|
|
77
|
+
if (out.size === 0 && manifest.publisher) out.add(manifest.publisher);
|
|
78
|
+
return [...out];
|
|
79
|
+
}
|
|
80
|
+
function plannedRefs(manifest, assetName) {
|
|
81
|
+
return (manifest.assets ?? []).filter((a) => !assetName || a.name === assetName).map(
|
|
82
|
+
(a) => refFor(
|
|
83
|
+
a.kind,
|
|
84
|
+
assetNamespace(a, manifest) ?? UNSET_NAMESPACE,
|
|
85
|
+
a.name,
|
|
86
|
+
a.version ?? manifest.version
|
|
87
|
+
)
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
function bareName(ref) {
|
|
91
|
+
const afterKind = ref.includes(":") ? ref.slice(ref.indexOf(":") + 1) : ref;
|
|
92
|
+
const afterScope = afterKind.includes("/") ? afterKind.slice(afterKind.indexOf("/") + 1) : afterKind;
|
|
93
|
+
return afterScope.split("#")[0];
|
|
94
|
+
}
|
|
95
|
+
function exitOnEmptyAsset(asset) {
|
|
96
|
+
if (asset !== void 0 && asset.trim() === "") {
|
|
97
|
+
logErr(
|
|
98
|
+
"--asset needs a ref (`kind:@publisher/name[#version]` or a name); it is empty. Drop the option to select every asset."
|
|
99
|
+
);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async function pollJob(client, jobId, intervalMs = 1500, timeoutMs = 6e4) {
|
|
104
|
+
const deadline = Date.now() + timeoutMs;
|
|
105
|
+
let job = await client.jobGet(jobId);
|
|
106
|
+
while (job.status === "running" && Date.now() < deadline) {
|
|
107
|
+
await new Promise((r) => setTimeout(r, intervalMs));
|
|
108
|
+
job = await client.jobGet(jobId);
|
|
109
|
+
}
|
|
110
|
+
return job;
|
|
111
|
+
}
|
|
112
|
+
function isDupSourceError(err) {
|
|
113
|
+
const msg = (err instanceof Error ? err.message : String(err)).toLowerCase();
|
|
114
|
+
return /\b409\b|conflict|duplicate|already exists|already registered|unique/.test(msg);
|
|
115
|
+
}
|
|
116
|
+
async function publishToStore(opts) {
|
|
117
|
+
const { sourceUrl, ref, sidecar, manifest, assetName, client: pub } = opts;
|
|
118
|
+
let sourceId;
|
|
119
|
+
try {
|
|
120
|
+
const added = await pub.sourcesAdd({
|
|
121
|
+
url: sourceUrl,
|
|
122
|
+
ref,
|
|
123
|
+
...sidecar ? { sidecarUrl: sidecar.url, sidecarRef: sidecar.ref } : {},
|
|
124
|
+
// Publish under the manifest's declared namespace; the store resolves a
|
|
125
|
+
// claimed Publisher when it differs from the caller's login, else defaults
|
|
126
|
+
// to `@<username>`. Omitted when the manifest carries no publisher.
|
|
127
|
+
...manifest.publisher ? { namespace: manifest.publisher } : {}
|
|
128
|
+
});
|
|
129
|
+
sourceId = added.id;
|
|
130
|
+
} catch (err) {
|
|
131
|
+
if (!isDupSourceError(err)) throw err;
|
|
132
|
+
const rows = await pub.sourcesList();
|
|
133
|
+
const found = rows.find((r) => r.url === sourceUrl);
|
|
134
|
+
if (!found) {
|
|
135
|
+
throw new Error(
|
|
136
|
+
`Source ${sourceUrl} looked already-registered but no owned row matched: ${err instanceof Error ? err.message : String(err)}`
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
sourceId = found.id;
|
|
140
|
+
}
|
|
141
|
+
const { jobId } = await pub.sourceSync(sourceId);
|
|
142
|
+
const job = await pollJob(pub, jobId);
|
|
143
|
+
if (job.status === "failed" || job.status === "cancelled") {
|
|
144
|
+
const failed = (job.items ?? []).filter((i) => i.status === "failed");
|
|
145
|
+
for (const i of failed) logErr(`sync: ${i.label}: ${i.error ?? "failed"}`);
|
|
146
|
+
logErr(`Source sync ${job.status}.`);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
if (job.status === "running") {
|
|
150
|
+
logErr("Source sync timed out before completing \u2014 re-run `publish`, or check the store.");
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
let candidates = matchCandidatesToManifest(await pub.sourceCandidates(sourceId), manifest);
|
|
154
|
+
if (assetName) candidates = candidates.filter((c) => c.name === assetName);
|
|
155
|
+
if (candidates.length === 0) {
|
|
156
|
+
logWarn("No candidates discovered \u2014 check the manifest and the source ref.");
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
const published = [];
|
|
160
|
+
for (const c of candidates) {
|
|
161
|
+
try {
|
|
162
|
+
const preview = await pub.assetPreview(c.id);
|
|
163
|
+
const res = await pub.assetPublish(c.id, { ref, files: preview.discoveredFiles });
|
|
164
|
+
if (res.jobId) {
|
|
165
|
+
const pubJob = await pollJob(pub, res.jobId);
|
|
166
|
+
if (pubJob.status !== "succeeded") {
|
|
167
|
+
const errs = (pubJob.items ?? []).filter((i) => i.status === "failed").map((i) => i.error).filter(Boolean);
|
|
168
|
+
logWarn(
|
|
169
|
+
`Publish of ${c.kind}:${c.name} did not succeed (${pubJob.status})` + (errs.length ? `: ${errs.join("; ")}` : "")
|
|
170
|
+
);
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
published.push(refFor(c.kind, preview.candidate.publisherNamespace, c.name, c.version));
|
|
175
|
+
} catch (err) {
|
|
176
|
+
logWarn(
|
|
177
|
+
`Failed to publish ${c.kind}:${c.name}: ${err instanceof Error ? err.message : String(err)}`
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
logOk(`Published ${published.length} asset(s):`);
|
|
182
|
+
for (const r of published) logInfo(` ${r}`);
|
|
183
|
+
return { published };
|
|
184
|
+
}
|
|
185
|
+
function makePkcePair() {
|
|
186
|
+
const verifier = randomBytes(32).toString("base64url");
|
|
187
|
+
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
188
|
+
return { verifier, challenge };
|
|
189
|
+
}
|
|
190
|
+
function trimTrailingSlash(url) {
|
|
191
|
+
return url.replace(/\/+$/, "");
|
|
192
|
+
}
|
|
193
|
+
function loadStoreAuthConfig() {
|
|
194
|
+
return {
|
|
195
|
+
keycloakUrl: trimTrailingSlash(process.env.SKAILE_KEYCLOAK_URL ?? "https://auth.skaile.ai"),
|
|
196
|
+
realm: process.env.SKAILE_STORE_REALM ?? "skaile-store",
|
|
197
|
+
clientId: process.env.SKAILE_STORE_CLI_CLIENT ?? "skaile-store-cli",
|
|
198
|
+
authFile: process.env.SKAILE_AUTH_FILE ?? join(globalSkaileDir(), "auth.json")
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function oidc(config) {
|
|
202
|
+
const base = `${config.keycloakUrl}/realms/${config.realm}/protocol/openid-connect`;
|
|
203
|
+
return { deviceAuth: `${base}/auth/device`, token: `${base}/token` };
|
|
204
|
+
}
|
|
205
|
+
var EXPIRY_MARGIN_MS = 3e4;
|
|
206
|
+
function readAuth(config) {
|
|
207
|
+
try {
|
|
208
|
+
const parsed = JSON.parse(readFileSync(config.authFile, "utf-8"));
|
|
209
|
+
if (parsed && typeof parsed.access_token === "string") return parsed;
|
|
210
|
+
return null;
|
|
211
|
+
} catch {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
function getStoreIdentity(config = loadStoreAuthConfig()) {
|
|
216
|
+
const auth = readAuth(config);
|
|
217
|
+
if (!auth) return null;
|
|
218
|
+
try {
|
|
219
|
+
const payload = auth.access_token.split(".")[1];
|
|
220
|
+
const json = JSON.parse(Buffer.from(payload, "base64url").toString("utf-8"));
|
|
221
|
+
const username = typeof json.preferred_username === "string" ? json.preferred_username : void 0;
|
|
222
|
+
const githubLogin = typeof json.github_login === "string" ? json.github_login : void 0;
|
|
223
|
+
return username || githubLogin ? { username, githubLogin } : null;
|
|
224
|
+
} catch {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function writeAuth(config, auth) {
|
|
229
|
+
mkdirSync(dirname(config.authFile), { recursive: true });
|
|
230
|
+
writeFileSync(config.authFile, JSON.stringify(auth, null, 2), { mode: 384 });
|
|
231
|
+
chmodSync(config.authFile, 384);
|
|
232
|
+
}
|
|
233
|
+
function logout(config) {
|
|
234
|
+
try {
|
|
235
|
+
rmSync(config.authFile);
|
|
236
|
+
} catch {
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function hasStoredAuth(config) {
|
|
240
|
+
return readAuth(config) !== null;
|
|
241
|
+
}
|
|
242
|
+
function tokenToStored(token) {
|
|
243
|
+
return {
|
|
244
|
+
access_token: token.access_token,
|
|
245
|
+
refresh_token: token.refresh_token,
|
|
246
|
+
expires_at: Date.now() + (token.expires_in ?? 300) * 1e3 - EXPIRY_MARGIN_MS
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
var defaultSleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
250
|
+
function defaultPrompt(url, userCode) {
|
|
251
|
+
process.stderr.write(
|
|
252
|
+
`
|
|
253
|
+
To sign in, open:
|
|
254
|
+
|
|
255
|
+
${url}
|
|
256
|
+
|
|
257
|
+
and enter the code: ${userCode}
|
|
258
|
+
|
|
259
|
+
Waiting for approval\u2026
|
|
260
|
+
`
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
async function deviceLogin(config, deps = {}) {
|
|
264
|
+
const fetchImpl = deps.fetchImpl ?? fetch;
|
|
265
|
+
const sleep = deps.sleep ?? defaultSleep;
|
|
266
|
+
const onPrompt = deps.onPrompt ?? defaultPrompt;
|
|
267
|
+
const endpoints = oidc(config);
|
|
268
|
+
const pkce = makePkcePair();
|
|
269
|
+
const deviceRes = await fetchImpl(endpoints.deviceAuth, {
|
|
270
|
+
method: "POST",
|
|
271
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
272
|
+
body: new URLSearchParams({
|
|
273
|
+
client_id: config.clientId,
|
|
274
|
+
scope: "openid profile",
|
|
275
|
+
code_challenge: pkce.challenge,
|
|
276
|
+
code_challenge_method: "S256"
|
|
277
|
+
})
|
|
278
|
+
});
|
|
279
|
+
if (!deviceRes.ok) {
|
|
280
|
+
throw new Error(
|
|
281
|
+
`Device authorization request failed (${deviceRes.status}): ${await deviceRes.text()}`
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
const device = await deviceRes.json();
|
|
285
|
+
onPrompt(device.verification_uri_complete ?? device.verification_uri, device.user_code);
|
|
286
|
+
const intervalMs = (device.interval ?? 5) * 1e3;
|
|
287
|
+
const deadline = Date.now() + device.expires_in * 1e3;
|
|
288
|
+
let waitMs = intervalMs;
|
|
289
|
+
while (Date.now() < deadline) {
|
|
290
|
+
await sleep(waitMs);
|
|
291
|
+
const tokenRes = await fetchImpl(endpoints.token, {
|
|
292
|
+
method: "POST",
|
|
293
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
294
|
+
body: new URLSearchParams({
|
|
295
|
+
grant_type: "urn:ietf:params:oauth:grant-type:device_code",
|
|
296
|
+
device_code: device.device_code,
|
|
297
|
+
client_id: config.clientId,
|
|
298
|
+
code_verifier: pkce.verifier
|
|
299
|
+
})
|
|
300
|
+
});
|
|
301
|
+
const token = await tokenRes.json();
|
|
302
|
+
if (tokenRes.ok) {
|
|
303
|
+
const stored = tokenToStored(token);
|
|
304
|
+
writeAuth(config, stored);
|
|
305
|
+
return stored;
|
|
306
|
+
}
|
|
307
|
+
if (token.error === "authorization_pending") continue;
|
|
308
|
+
if (token.error === "slow_down") {
|
|
309
|
+
waitMs += 5e3;
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
throw new Error(`Sign-in failed: ${token.error_description ?? token.error ?? "unknown error"}`);
|
|
313
|
+
}
|
|
314
|
+
throw new Error("Sign-in timed out before approval.");
|
|
315
|
+
}
|
|
316
|
+
async function refresh(config, refreshToken, fetchImpl) {
|
|
317
|
+
const res = await fetchImpl(oidc(config).token, {
|
|
318
|
+
method: "POST",
|
|
319
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
320
|
+
body: new URLSearchParams({
|
|
321
|
+
grant_type: "refresh_token",
|
|
322
|
+
refresh_token: refreshToken,
|
|
323
|
+
client_id: config.clientId
|
|
324
|
+
})
|
|
325
|
+
});
|
|
326
|
+
const token = await res.json();
|
|
327
|
+
if (!res.ok) {
|
|
328
|
+
throw new Error(
|
|
329
|
+
`Token refresh failed: ${token.error_description ?? token.error ?? res.status}`
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
const stored = tokenToStored(token);
|
|
333
|
+
writeAuth(config, stored);
|
|
334
|
+
return stored;
|
|
335
|
+
}
|
|
336
|
+
async function getAccessToken(config, deps = {}) {
|
|
337
|
+
const fetchImpl = deps.fetchImpl ?? fetch;
|
|
338
|
+
const auth = readAuth(config);
|
|
339
|
+
if (!auth) throw new Error("Not signed in. Run `skaile store login` first.");
|
|
340
|
+
if (Date.now() < auth.expires_at) return auth.access_token;
|
|
341
|
+
if (!auth.refresh_token) throw new Error("Session expired. Run `skaile store login` again.");
|
|
342
|
+
try {
|
|
343
|
+
return (await refresh(config, auth.refresh_token, fetchImpl)).access_token;
|
|
344
|
+
} catch {
|
|
345
|
+
throw new Error("Session expired and refresh failed. Run `skaile store login` again.");
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// cli/src/commands/library-index.ts
|
|
350
|
+
function manifestRequiresProblems(dir) {
|
|
351
|
+
const file = path.join(dir, "skaile.manifest.yaml");
|
|
352
|
+
let doc;
|
|
353
|
+
try {
|
|
354
|
+
doc = parse(fs.readFileSync(file, "utf-8"));
|
|
355
|
+
} catch {
|
|
356
|
+
return [];
|
|
357
|
+
}
|
|
358
|
+
const assets = doc?.assets;
|
|
359
|
+
if (!Array.isArray(assets)) return [];
|
|
360
|
+
const problems = [];
|
|
361
|
+
for (const a of assets) {
|
|
362
|
+
if (!a || typeof a !== "object") continue;
|
|
363
|
+
const { kind, name, dependencies } = a;
|
|
364
|
+
if (!Array.isArray(dependencies)) continue;
|
|
365
|
+
const entries = dependencies.map((d) => typeof d === "string" ? d : String(d));
|
|
366
|
+
for (const message of requiresSyntaxErrors(entries)) {
|
|
367
|
+
problems.push({
|
|
368
|
+
asset: `${String(kind)}:${String(name)}`,
|
|
369
|
+
message: `ManifestRequiresError: ${message}`
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return problems;
|
|
374
|
+
}
|
|
375
|
+
async function knownAssetVersions(dir) {
|
|
376
|
+
const known = {};
|
|
377
|
+
const add = (publisher, kind, name, version) => {
|
|
378
|
+
if (!publisher) return;
|
|
379
|
+
const key = `${publisher.replace(/^@/, "")}/${kind}:${name}`;
|
|
380
|
+
const versions = known[key] ?? [];
|
|
381
|
+
if (version && !versions.includes(version)) versions.push(version);
|
|
382
|
+
known[key] = versions;
|
|
383
|
+
};
|
|
384
|
+
const addManifest = (libPath) => {
|
|
385
|
+
const manifest = loadSkPublishManifest(libPath);
|
|
386
|
+
for (const a of manifest?.assets ?? []) {
|
|
387
|
+
add(a.publisher ?? manifest?.publisher, a.kind, a.name, a.version);
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
addManifest(dir);
|
|
391
|
+
const indexPath = resolveIndexPath();
|
|
392
|
+
if (!fs.existsSync(indexPath)) return known;
|
|
393
|
+
const index = new LocalIndex({ indexPath, kindRegistry: getKindRegistry() });
|
|
394
|
+
try {
|
|
395
|
+
for (const def of await index.listAssetDefs())
|
|
396
|
+
add(def.publisher, def.kind, def.name, def.version);
|
|
397
|
+
for (const lib of await index.listSources()) {
|
|
398
|
+
if (path.resolve(lib.path) !== path.resolve(dir) && fs.existsSync(lib.path)) {
|
|
399
|
+
addManifest(lib.path);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
} catch {
|
|
403
|
+
} finally {
|
|
404
|
+
index.close();
|
|
405
|
+
}
|
|
406
|
+
return known;
|
|
407
|
+
}
|
|
408
|
+
async function unresolvedManifestDependencies(dir) {
|
|
409
|
+
let doc;
|
|
410
|
+
try {
|
|
411
|
+
doc = parse(fs.readFileSync(path.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
|
|
412
|
+
} catch {
|
|
413
|
+
return [];
|
|
414
|
+
}
|
|
415
|
+
const assets = doc?.assets;
|
|
416
|
+
if (!Array.isArray(assets)) return [];
|
|
417
|
+
const wanted = [];
|
|
418
|
+
for (const a of assets) {
|
|
419
|
+
if (!a || typeof a !== "object") continue;
|
|
420
|
+
const { kind, name, dependencies } = a;
|
|
421
|
+
if (!Array.isArray(dependencies)) continue;
|
|
422
|
+
for (const d of dependencies) {
|
|
423
|
+
const entry = typeof d === "string" ? d : String(d);
|
|
424
|
+
if (requiresSyntaxErrors([entry]).length === 0) {
|
|
425
|
+
wanted.push({ asset: `${String(kind)}:${String(name)}`, entry });
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
if (wanted.length === 0) return [];
|
|
430
|
+
const known = await knownAssetVersions(dir);
|
|
431
|
+
const out = [];
|
|
432
|
+
for (const { asset, entry } of wanted) {
|
|
433
|
+
const dep = parseDep(entry);
|
|
434
|
+
if (!dep.publisher) continue;
|
|
435
|
+
const versions = known[`${dep.publisher}/${dep.kind}:${dep.name}`];
|
|
436
|
+
const prefix = `${SKAILE_MANIFEST_FILENAME} [assets] \u2014 ${asset}: dependency "${entry}"`;
|
|
437
|
+
if (!versions) {
|
|
438
|
+
out.push(
|
|
439
|
+
`${prefix} is not held by any registered library (checked offline: this library and the local index; the store was not asked).`
|
|
440
|
+
);
|
|
441
|
+
} else if (dep.pin && versions.length > 0 && !versions.some((v) => matchPin(dep.pin, v))) {
|
|
442
|
+
out.push(
|
|
443
|
+
`${prefix} has no version matching "${dep.pin}" in any registered library (held: ${versions.join(", ")}).`
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return out;
|
|
448
|
+
}
|
|
449
|
+
function invalidPublisherMessage(raw) {
|
|
450
|
+
return `Invalid publisher "${raw}": ${PUBLISHER_HINT}.`;
|
|
451
|
+
}
|
|
452
|
+
function requireValidPublisherOrExit(raw) {
|
|
453
|
+
const bare = raw.trim().replace(/^@/, "");
|
|
454
|
+
if (!isValidPublisher(bare)) {
|
|
455
|
+
logErr(invalidPublisherMessage(raw));
|
|
456
|
+
process.exit(1);
|
|
457
|
+
}
|
|
458
|
+
return bare;
|
|
459
|
+
}
|
|
460
|
+
function manifestPublisherProblems(dir) {
|
|
461
|
+
let doc;
|
|
462
|
+
try {
|
|
463
|
+
doc = parse(fs.readFileSync(path.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
|
|
464
|
+
} catch {
|
|
465
|
+
return [];
|
|
466
|
+
}
|
|
467
|
+
if (!doc || typeof doc !== "object") return [];
|
|
468
|
+
const { publisher, assets } = doc;
|
|
469
|
+
const problems = [];
|
|
470
|
+
const check = (value, where) => {
|
|
471
|
+
if (typeof value !== "string") return;
|
|
472
|
+
if (!isValidPublisher(value.trim().replace(/^@/, ""))) {
|
|
473
|
+
problems.push(`${SKAILE_MANIFEST_FILENAME} ${where} \u2014 ${invalidPublisherMessage(value)}`);
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
check(publisher, "[publisher]");
|
|
477
|
+
if (Array.isArray(assets)) {
|
|
478
|
+
for (const a of assets) {
|
|
479
|
+
if (!a || typeof a !== "object") continue;
|
|
480
|
+
const { kind, name, publisher: assetPublisher } = a;
|
|
481
|
+
check(assetPublisher, `[assets] ${String(kind)}:${String(name)}`);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
return problems;
|
|
485
|
+
}
|
|
486
|
+
function exitOnManifestPublisherProblems(dir, libName) {
|
|
487
|
+
const problems = manifestPublisherProblems(dir);
|
|
488
|
+
if (problems.length === 0) return;
|
|
489
|
+
for (const message of problems) logErr(message);
|
|
490
|
+
logErr(
|
|
491
|
+
`Fix the publisher in ${SKAILE_MANIFEST_FILENAME} (\`skaile library set ${libName} publisher=<name>\` rewrites the library's own), then re-run.`
|
|
492
|
+
);
|
|
493
|
+
process.exit(1);
|
|
494
|
+
}
|
|
495
|
+
function reportLibrarySymlinks(dir, opts) {
|
|
496
|
+
const links = listLibrarySymlinks(dir, opts);
|
|
497
|
+
for (const link of links) logErr(librarySymlinkMessage(link));
|
|
498
|
+
return links.length;
|
|
499
|
+
}
|
|
500
|
+
function exitOnLibrarySymlinks(dir, verb) {
|
|
501
|
+
const count = reportLibrarySymlinks(dir);
|
|
502
|
+
if (count === 0) return;
|
|
503
|
+
logErr(`${count} symlink(s) in ${dir}: remove them, then re-run \`${verb}\`.`);
|
|
504
|
+
process.exit(1);
|
|
505
|
+
}
|
|
506
|
+
async function indexLibrary(lib, index, opts = {}) {
|
|
507
|
+
const { LocalCatalogSource } = await import('./library/index.js');
|
|
508
|
+
const own = index ?? await openLibrary();
|
|
509
|
+
try {
|
|
510
|
+
const source = new LocalCatalogSource(own, lib.id, lib.path, getKindRegistry());
|
|
511
|
+
const res = await source.sync({ exclude: opts.exclude });
|
|
512
|
+
if (res.pruned.length > 0) {
|
|
513
|
+
const lost = new Set(res.pruned);
|
|
514
|
+
for (const other of await own.listSources()) {
|
|
515
|
+
if (other.id === lib.id || other.backend !== "local" || !other.path) continue;
|
|
516
|
+
if (!fs.existsSync(other.path)) continue;
|
|
517
|
+
await new LocalCatalogSource(own, other.id, other.path, getKindRegistry()).sync({
|
|
518
|
+
only: lost
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
assetsFound: res.assetsFound,
|
|
524
|
+
assetsUpdated: res.assetsUpdated,
|
|
525
|
+
errors: res.errors
|
|
526
|
+
};
|
|
527
|
+
} finally {
|
|
528
|
+
if (!index) own.close();
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
function resolveLibraryPublisherDetailed(lib, opts, storeIdentity) {
|
|
532
|
+
const bare = (p) => p.startsWith("@") ? p.slice(1) : p;
|
|
533
|
+
if (opts.publisher?.trim()) return { publisher: bare(opts.publisher.trim()), source: "flag" };
|
|
534
|
+
const declared = loadSkPublishManifest(lib.path)?.publisher?.trim();
|
|
535
|
+
if (declared) return { publisher: bare(declared), source: "manifest" };
|
|
536
|
+
const identity = (storeIdentity?.githubLogin ?? storeIdentity?.username)?.trim().toLowerCase();
|
|
537
|
+
if (identity && isValidPublisher(identity)) return { publisher: identity, source: "identity" };
|
|
538
|
+
try {
|
|
539
|
+
const slug = slugifyAssetName(lib.name).slice(0, 39).replace(/-+$/, "");
|
|
540
|
+
return { publisher: slug, source: "library-name" };
|
|
541
|
+
} catch {
|
|
542
|
+
return { publisher: "library", source: "library-name" };
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
function warnLibraryNameFallback(libName, resolved, hasPublisherFlag = false) {
|
|
546
|
+
if (resolved.source !== "library-name") return;
|
|
547
|
+
const setLater = `\`skaile library set ${libName} publisher=<name>\``;
|
|
548
|
+
logWarn(
|
|
549
|
+
`No publisher given and not signed in \u2014 using the library name "${resolved.publisher}" as the publisher. ` + (hasPublisherFlag ? `Pass --publisher <name> or run \`skaile store login\`; change it later with ${setLater}.` : `Run \`skaile store login\`, or change it later with ${setLater}.`)
|
|
550
|
+
);
|
|
551
|
+
}
|
|
552
|
+
function normalizeAssetFrontmatter(assetDir) {
|
|
553
|
+
let markerFile = ["SKILL.md", "AGENT.md", "CONTRACT.md"].map((m) => path.join(assetDir, m)).find((f) => fs.existsSync(f));
|
|
554
|
+
if (!markerFile) {
|
|
555
|
+
const promptMd = fs.readdirSync(assetDir).find((f) => f.endsWith(".prompt.md"));
|
|
556
|
+
if (promptMd) markerFile = path.join(assetDir, promptMd);
|
|
557
|
+
}
|
|
558
|
+
if (!markerFile) return;
|
|
559
|
+
try {
|
|
560
|
+
const { data, body } = parseFrontmatter(fs.readFileSync(markerFile, "utf8"));
|
|
561
|
+
const fm = stringify(data).trimEnd();
|
|
562
|
+
fs.writeFileSync(markerFile, `---
|
|
563
|
+
${fm}
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
${body}
|
|
567
|
+
`, "utf8");
|
|
568
|
+
} catch {
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
async function registerLibraryAsset(lib, index, input) {
|
|
572
|
+
const { publisher, source } = resolveLibraryPublisherDetailed(
|
|
573
|
+
lib,
|
|
574
|
+
{ publisher: input.publisher },
|
|
575
|
+
getStoreIdentity()
|
|
576
|
+
);
|
|
577
|
+
warnLibraryNameFallback(lib.name, { publisher, source }, true);
|
|
578
|
+
normalizeAssetFrontmatter(input.assetDir);
|
|
579
|
+
stampManifestPublisher(lib.path, publisher);
|
|
580
|
+
upsertManifestAsset(lib.path, {
|
|
581
|
+
kind: input.kind,
|
|
582
|
+
name: input.name,
|
|
583
|
+
root: path.relative(lib.path, input.assetDir) || input.name,
|
|
584
|
+
version: input.version,
|
|
585
|
+
publisher
|
|
586
|
+
});
|
|
587
|
+
const idx = await indexLibrary(lib, index);
|
|
588
|
+
for (const e of idx.errors) logWarn(e);
|
|
589
|
+
return { publisher, ref: refFor(input.kind, publisher, input.name, input.version) };
|
|
590
|
+
}
|
|
591
|
+
var LIBRARY_UPGRADE_DOCS = "https://github.com/skaile-ai/workspaces/blob/main/docs/sections/cli/commands/library.md#upgrading-a-4x-library";
|
|
592
|
+
var DOMAIN_REMOVED_HINT = `Domains were removed in 5.0 \u2014 delete DOMAIN.md files; group assets with .claude-plugin/marketplace.json. See ${LIBRARY_UPGRADE_DOCS}`;
|
|
593
|
+
function removedDomainOption() {
|
|
594
|
+
return new Option("--domain <domain>", "Removed in 5.0").hideHelp();
|
|
595
|
+
}
|
|
596
|
+
function rejectRemovedDomainOption(opts) {
|
|
597
|
+
if (opts.domain === void 0) return;
|
|
598
|
+
logErr(DOMAIN_REMOVED_HINT);
|
|
599
|
+
process.exit(1);
|
|
600
|
+
}
|
|
601
|
+
function findFiles(root, match) {
|
|
602
|
+
const found = [];
|
|
603
|
+
const walk = (dir) => {
|
|
604
|
+
let entries;
|
|
605
|
+
try {
|
|
606
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
607
|
+
} catch {
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
for (const entry of entries) {
|
|
611
|
+
if (entry.isDirectory()) {
|
|
612
|
+
if (!entry.name.startsWith(".") && entry.name !== "node_modules") {
|
|
613
|
+
walk(path.join(dir, entry.name));
|
|
614
|
+
}
|
|
615
|
+
} else if (match(entry.name)) {
|
|
616
|
+
found.push(path.join(dir, entry.name));
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
};
|
|
620
|
+
walk(root);
|
|
621
|
+
return found;
|
|
622
|
+
}
|
|
623
|
+
function countDomainFiles(root) {
|
|
624
|
+
return findFiles(root, (name) => name === "DOMAIN.md").length;
|
|
625
|
+
}
|
|
626
|
+
function warnIgnoredDomainFiles(root) {
|
|
627
|
+
const count = countDomainFiles(root);
|
|
628
|
+
if (count > 0) {
|
|
629
|
+
logWarn(
|
|
630
|
+
`${count} DOMAIN.md file(s) are ignored since 5.0 (domains were removed) \u2014 delete them; group assets with .claude-plugin/marketplace.json. See ${LIBRARY_UPGRADE_DOCS}`
|
|
631
|
+
);
|
|
632
|
+
}
|
|
633
|
+
return count;
|
|
634
|
+
}
|
|
635
|
+
function warnLegacyBundleFiles(root) {
|
|
636
|
+
const files = findFiles(root, (name) => name.endsWith(".bundle.yaml"));
|
|
637
|
+
if (files.length > 0) {
|
|
638
|
+
const shown = files.slice(0, 5).map((f) => path.relative(root, f) || f);
|
|
639
|
+
const more = files.length > shown.length ? `, +${files.length - shown.length} more` : "";
|
|
640
|
+
logWarn(
|
|
641
|
+
`${files.length} *.bundle.yaml file(s) are not scanned (the bundle kind became preset): ${shown.join(", ")}${more}. Run \`skaile migrate assets ${root} --write\` to rename them to *.preset.yaml. See ${LIBRARY_UPGRADE_DOCS}`
|
|
642
|
+
);
|
|
643
|
+
}
|
|
644
|
+
return files.length;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
export { DOMAIN_REMOVED_HINT, assetEntryRef, assetNamespace, bareName, deviceLogin, exitOnEmptyAsset, exitOnLibrarySymlinks, exitOnManifestPublisherProblems, formatNamespaceAvailability, getAccessToken, getStoreIdentity, hasStoredAuth, indexLibrary, loadStoreAuthConfig, logout, manifestNamespaces, manifestPublisherProblems, manifestRequiresProblems, manifestVersionMismatchMessage, plannedRefs, preflightNamespace, publishToStore, refFor, registerLibraryAsset, rejectRemovedDomainOption, removedDomainOption, reportLibrarySymlinks, requireValidPublisherOrExit, resolveLibraryPublisherDetailed, unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, warnLibraryNameFallback };
|
|
648
|
+
//# sourceMappingURL=chunk-FB3NREF7.js.map
|
|
649
|
+
//# sourceMappingURL=chunk-FB3NREF7.js.map
|