@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../types/src/manifests/_shared.ts","../types/src/manifests/agent-composition.ts","../types/src/manifests/agent.ts","../types/src/manifests/connector.ts","../types/src/manifests/skill.ts","../types/src/manifests/contract.ts","../types/src/manifests/mcp-server.ts","../types/src/manifests/prompt.ts","../types/src/manifests/persona.ts","../types/src/manifests/preset.ts","../types/src/manifests/ruleset.ts"],"names":["z","z3","z4","z5","z6","z7","z8","z9","z10"],"mappings":"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","file":"chunk-ZCAJZ4B2.js","sourcesContent":["/**\n * Shared manifest frontmatter schemas and types.\n * Common across all asset kinds + Preset.\n */\nimport * as z from \"zod\";\n\n// ---------------------------------------------------------------------------\n// Shared metadata sub-schemas\n// ---------------------------------------------------------------------------\n\n/** Artifact dependency (requires/produces/consumes in skill metadata). */\nexport const ArtifactRefSchema = z.object({\n id: z.string().min(1),\n description: z.string().optional(),\n gate: z.enum([\"hard\", \"soft\"]).optional(),\n path: z.string().optional(),\n});\n\n/** File prerequisite for a skill. */\nexport const FilePrerequisiteSchema = z.object({\n path: z.string().min(1),\n gate: z.enum([\"hard\", \"soft\"]).optional(),\n description: z.string().optional(),\n});\n\n/** User input definition (for skill user_inputs or metadata.prerequisites.inputs_*). */\nexport const UserInputSchema = z.looseObject({\n key: z.string().min(1).optional(),\n id: z.string().min(1).optional(),\n label: z.string().optional(),\n prompt: z.string().optional(),\n type: z.string().optional(),\n required: z.boolean().optional(),\n options: z.array(z.string()).optional(),\n values: z.array(z.union([z.string(), z.number()])).optional(),\n default: z\n .union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))])\n .optional(),\n hint: z.string().optional(),\n});\n\n/** Field definition for connectors/mounts. */\nexport const FieldSchema = z.object({\n key: z.string().min(1),\n label: z.string().optional(),\n required: z.boolean().optional(),\n sensitive: z.boolean().optional(),\n type: z.string().optional(),\n default: z.union([z.string(), z.number(), z.boolean()]).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Common metadata block (appears inside metadata: in most manifest kinds)\n// ---------------------------------------------------------------------------\n\nexport const CommonMetadataSchema = z.looseObject({\n version: z.string().optional(),\n author: z.string().optional(),\n tags: z.array(z.string()).optional(),\n stage: z.enum([\"alpha\", \"beta\", \"stable\", \"deprecated\"]).optional(),\n source: z.string().optional(),\n do_not_invoke: z.boolean().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Common frontmatter fields (top-level, shared across kinds)\n// ---------------------------------------------------------------------------\n\n/**\n * Fields that can appear at the top level of any manifest's frontmatter.\n * Not all are required -- each kind schema intersects with its own specifics.\n */\nexport const BaseFrontmatterSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n\n // Catalog identity (populated at discovery or authoring time)\n publisher: z.string().optional(),\n category: z.string().optional(),\n license: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Validation result type\n// ---------------------------------------------------------------------------\n\nexport interface ManifestValidationSuccess<T> {\n ok: true;\n data: T;\n}\n\nexport interface ManifestValidationFailure {\n ok: false;\n errors: Array<{ path: string; message: string }>;\n}\n\nexport type ManifestValidationResult<T> = ManifestValidationSuccess<T> | ManifestValidationFailure;\n\nexport function validateManifest<T>(\n schema: z.ZodType<T>,\n data: unknown,\n): ManifestValidationResult<T> {\n const result = schema.safeParse(data);\n if (result.success) {\n return { ok: true, data: result.data };\n }\n return {\n ok: false,\n errors: result.error.issues.map((issue) => ({\n path: issue.path.join(\".\"),\n message: issue.message,\n })),\n };\n}\n","/**\n * Pure helpers over an agent asset's composition surface: the implicit\n * convention-file items, the deprecation diagnostics for 0.1 inputs, and the\n * slot-id conflict check. No I/O — callers pass file listings / parsed YAML.\n */\n\nimport type { AgentComposeItem } from \"./agent.js\";\n\n/** A structured note about an agent manifest; structurally a core `Diagnostic`. */\nexport interface AgentManifestDiagnostic {\n code: string;\n severity: \"error\" | \"warning\" | \"info\";\n message: string;\n /** Dotted/indexed path into the manifest, e.g. `composes[2].id`. */\n path?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Convention files → implicit composition items\n// ---------------------------------------------------------------------------\n\nconst CONVENTION_FILES: ReadonlyArray<{\n file: string;\n kind: string;\n binding: NonNullable<AgentComposeItem[\"binding\"]>;\n}> = [\n { file: \"SOUL.md\", kind: \"soul\", binding: \"inline-snapshot\" },\n { file: \"RULES.md\", kind: \"ruleset\", binding: \"inline-live\" },\n { file: \"DUTIES.md\", kind: \"prompt\", binding: \"inline-live\" },\n];\n\nconst KNOWLEDGE_DIR = \"knowledge\";\n\nconst stripDotSlash = (ref: string): string => ref.replace(/^\\.\\//, \"\").replace(/\\/+$/, \"\");\n\n/**\n * The implicit composition items of an agent directory: `SOUL.md` → `soul`\n * (inline-snapshot), `RULES.md` → `ruleset` (inline-live), `DUTIES.md` →\n * `prompt` (inline-live), `knowledge/` → `knowledge` (discoverable). An item\n * exists only when its file/directory does. Refs are `./`-relative to the\n * agent directory; order is soul, ruleset, prompt, knowledge.\n *\n * @param entries - Paths relative to the agent directory (files; directories\n * may appear as `knowledge` or as the prefix of `knowledge/<file>`).\n */\nexport function conventionItems(entries: Iterable<string>): AgentComposeItem[] {\n const present = [...entries].map(stripDotSlash);\n const items: AgentComposeItem[] = [];\n for (const { file, kind, binding } of CONVENTION_FILES) {\n if (present.includes(file)) items.push({ kind, ref: `./${file}`, binding });\n }\n if (present.some((p) => p === KNOWLEDGE_DIR || p.startsWith(`${KNOWLEDGE_DIR}/`))) {\n items.push({ kind: \"knowledge\", ref: `./${KNOWLEDGE_DIR}`, binding: \"discoverable\" });\n }\n return items;\n}\n\n/**\n * Effective composition: the convention items followed by the declared\n * `composes`. A declared item that repeats a convention item (same kind, same\n * path) replaces it in place — that is how an author changes its `binding`.\n */\nexport function effectiveComposes(\n composes: readonly AgentComposeItem[] | undefined,\n entries: Iterable<string>,\n): AgentComposeItem[] {\n const declared = composes ?? [];\n const key = (item: AgentComposeItem): string => `${item.kind}\\0${stripDotSlash(item.ref)}`;\n const declaredKeys = new Set(declared.map(key));\n const implicit = conventionItems(entries).filter((item) => !declaredKeys.has(key(item)));\n return [...implicit, ...declared];\n}\n\n// ---------------------------------------------------------------------------\n// Deprecated 0.1 inputs\n// ---------------------------------------------------------------------------\n\nconst DEPRECATED_TOP_LEVEL: ReadonlyArray<{ field: string; replacement: string }> = [\n { field: \"skills\", replacement: \"composes: [{ kind: skill, ref }]\" },\n { field: \"abilities\", replacement: \"composes: [{ kind: skill, ref }]\" },\n { field: \"contracts\", replacement: \"composes: [{ kind: contract, ref }]\" },\n { field: \"persona\", replacement: \"composes: [{ kind: persona, ref }] or SOUL.md\" },\n { field: \"rules\", replacement: \"composes: [{ kind: ruleset, ref }] or RULES.md\" },\n { field: \"knowledge\", replacement: \"composes: [{ kind: knowledge, ref }] or knowledge/\" },\n { field: \"requires\", replacement: \"composes: [{ kind: agent, ref, binding: delegate }]\" },\n { field: \"dependencies\", replacement: \"composes: [{ kind, ref }]\" },\n];\n\nconst DEPRECATED_METADATA: ReadonlyArray<{ field: string; replacement: string }> = [\n { field: \"soul\", replacement: \"SOUL.md or composes: [{ kind: persona, ref }]\" },\n { field: \"orchestrates\", replacement: \"composes: [{ kind: skill|agent, ref }]\" },\n { field: \"routes_to\", replacement: \"composes: [{ kind: agent, ref, binding: delegate }]\" },\n { field: \"knows\", replacement: \"composes: [{ kind: knowledge, ref }]\" },\n];\n\n/**\n * One named `warning` diagnostic per deprecated 0.1 field present on a parsed\n * `agent.yaml`: `deprecated_agent_<field>` for top-level fields and\n * `deprecated_agent_metadata_<field>` for `metadata.*`. Deprecated fields still\n * parse but are not read for composition.\n */\nexport function agentDeprecationDiagnostics(parsed: unknown): AgentManifestDiagnostic[] {\n if (parsed === null || typeof parsed !== \"object\") return [];\n const manifest = parsed as Record<string, unknown>;\n const out: AgentManifestDiagnostic[] = [];\n for (const { field, replacement } of DEPRECATED_TOP_LEVEL) {\n if (manifest[field] === undefined) continue;\n out.push({\n code: `deprecated_agent_${field}`,\n severity: \"warning\",\n message: `agent.yaml field \"${field}\" is deprecated and no longer read; use ${replacement}`,\n path: field,\n });\n }\n const metadata = manifest.metadata;\n if (metadata !== null && typeof metadata === \"object\") {\n for (const { field, replacement } of DEPRECATED_METADATA) {\n if ((metadata as Record<string, unknown>)[field] === undefined) continue;\n out.push({\n code: `deprecated_agent_metadata_${field}`,\n severity: \"warning\",\n message: `agent.yaml field \"metadata.${field}\" is deprecated and no longer read; use ${replacement}`,\n path: `metadata.${field}`,\n });\n }\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Slot ids\n// ---------------------------------------------------------------------------\n\n/**\n * `composition_conflict` error per `composes[].id` already used by an earlier\n * item. Slot ids name connector / mcp-server slots, so two items must not share one.\n */\nexport function composeSlotDiagnostics(parsed: unknown): AgentManifestDiagnostic[] {\n if (parsed === null || typeof parsed !== \"object\") return [];\n const composes = (parsed as Record<string, unknown>).composes;\n if (!Array.isArray(composes)) return [];\n const firstSeen = new Map<string, number>();\n const out: AgentManifestDiagnostic[] = [];\n composes.forEach((item, i) => {\n if (item === null || typeof item !== \"object\") return;\n const id = (item as Record<string, unknown>).id;\n if (typeof id !== \"string\") return;\n const first = firstSeen.get(id);\n if (first === undefined) {\n firstSeen.set(id, i);\n return;\n }\n out.push({\n code: \"composition_conflict\",\n severity: \"error\",\n message: `composes slot id \"${id}\" is already used by composes[${first}]`,\n path: `composes[${i}].id`,\n });\n });\n return out;\n}\n","import * as z from \"zod\";\nimport { type ManifestValidationResult, validateManifest } from \"./_shared.js\";\n\n/** Body the scaffold writes into a new agent's `SOUL.md`; an untouched body is a lint warning. */\nexport const AGENT_BODY_PLACEHOLDER = \"Agent prompt goes here.\";\n\n// ---------------------------------------------------------------------------\n// Model identifier validation + normalization\n// ---------------------------------------------------------------------------\n\n/**\n * Anthropic model aliases recognized by Claude Code and the Claude Agent SDK.\n *\n * - `inherit` — use the parent agent's model (Claude Code only).\n * - `opus` / `sonnet` / `haiku` — auto-rolling pointer to the current top model\n * in that family. Resolved by Claude Code / the Claude SDK at runtime.\n *\n * Use these in `agent.yaml` `model.preferred` for portability across Claude\n * Code and `claude-sdk`. Use a full ID (see {@link ANTHROPIC_FULL_ID_PATTERN})\n * when you need to pin to a specific Anthropic release.\n */\nexport const ANTHROPIC_MODEL_ALIASES = [\"inherit\", \"opus\", \"sonnet\", \"haiku\"] as const;\nexport type AnthropicModelAlias = (typeof ANTHROPIC_MODEL_ALIASES)[number];\n\n/**\n * Anthropic model family segments recognized inside a full model identifier.\n *\n * This is the *ID* vocabulary, deliberately wider than\n * {@link ANTHROPIC_MODEL_ALIASES}: `fable` ships as a real model family\n * (`claude-fable-5`) but has no Claude Code rolling alias, so it belongs here\n * and not there.\n *\n * @since 1.5.0\n */\nexport const ANTHROPIC_MODEL_FAMILIES = [\"opus\", \"sonnet\", \"haiku\", \"fable\"] as const;\nexport type AnthropicModelFamily = (typeof ANTHROPIC_MODEL_FAMILIES)[number];\n\nconst FAMILY_ALT = ANTHROPIC_MODEL_FAMILIES.join(\"|\");\n\n/**\n * Family + version core shared by the full / Bedrock / Vertex patterns.\n *\n * Matches both the Claude 4+ \"family-first\" form (`opus-4-6`, `opus-5`) and the\n * legacy \"version-first\" form used by Claude 3.x and some OpenRouter aliases\n * (`3-5-sonnet`).\n *\n * The version is `\\d+(?:[-.]\\d+)*` — one *or more* numeric components. It used\n * to demand two or more, which rejected every current single-digit-major ID\n * (`claude-opus-5`, `claude-sonnet-5`, `claude-fable-5`). Those are structurally\n * indistinguishable from the older partial IDs the two-component rule was\n * written to catch (`claude-opus-4`), so accepting the current lineup\n * necessarily accepts those too. This validator is structural, not a catalog\n * check — a well-formed ID that no provider serves is caught at dispatch, not\n * here.\n */\nconst FAMILY_VERSION_CORE = `(?:(?:${FAMILY_ALT})-\\\\d+(?:[-.]\\\\d+)*|\\\\d+(?:[-.]\\\\d+)*-(?:${FAMILY_ALT}))`;\n\n/**\n * Regex matching a full Anthropic model identifier, optionally provider-prefixed.\n *\n * Examples that match (family-first):\n * - `claude-opus-5`\n * - `claude-sonnet-5`\n * - `claude-fable-5`\n * - `claude-opus-4-6`\n * - `claude-haiku-4-5-20251001`\n * - `anthropic/claude-sonnet-4.6` (OpenRouter form)\n *\n * Examples that match (version-first / legacy):\n * - `claude-3-5-sonnet-20241022`\n * - `anthropic/claude-3.7-sonnet`\n *\n * Still rejected: a bare family (`claude-opus`), a non-Claude vendor\n * (`gpt-4o`), an unknown family (`claude-turbo-5`).\n */\nexport const ANTHROPIC_FULL_ID_PATTERN = new RegExp(\n `^(?:[a-z0-9-]+\\\\/)?claude-${FAMILY_VERSION_CORE}(?:-\\\\d{8})?$`,\n);\n\n/**\n * Regex matching an Amazon Bedrock-form Anthropic model identifier: an\n * optional region/scope prefix (`us.` / `eu.` / `apac.` / `global.`), the\n * `anthropic.` vendor segment, the same family/version core as\n * {@link ANTHROPIC_FULL_ID_PATTERN}, plus Bedrock's optional\n * `-v<major>[:<minor>]` suffix.\n *\n * Examples that match:\n * - `anthropic.claude-3-5-sonnet-20241022-v2:0`\n * - `us.anthropic.claude-opus-4-6-v1:0`\n * - `anthropic.claude-sonnet-4-5-20250929-v1:0`\n *\n * Does NOT match `anthropic.gpt-4` (not a Claude family) or a bare\n * `us.claude-…` (the `anthropic.` segment is required).\n *\n * @since 1.3.0\n */\nexport const BEDROCK_MODEL_ID_PATTERN = new RegExp(\n `^(?:(?:us|eu|apac|global)\\\\.)?anthropic\\\\.claude-${FAMILY_VERSION_CORE}(?:-\\\\d{8})?(?:-v\\\\d+(?::\\\\d+)?)?$`,\n);\n\n/**\n * Regex matching a Google Vertex AI publisher-form Anthropic identifier —\n * a first-party ID pinned with an `@YYYYMMDD` date suffix instead of the\n * native `-YYYYMMDD` (e.g. `claude-sonnet-4-5@20250929`).\n *\n * @since 1.3.0\n */\nexport const VERTEX_MODEL_ID_PATTERN = new RegExp(`^claude-${FAMILY_VERSION_CORE}@\\\\d{8}$`);\n\n/**\n * Zod schema for a **first-party Anthropic** model identifier: a Claude Code\n * alias, a full Anthropic ID, a Bedrock-form ID (see\n * {@link BEDROCK_MODEL_ID_PATTERN}), or a Vertex `@date`-pinned ID (see\n * {@link VERTEX_MODEL_ID_PATTERN}).\n *\n * This is **not** a universal model-id rule. It is the vocabulary of exactly\n * one wire target — `surface: anthropic-messages` on `transport: direct`\n * pointed at Anthropic's own host — because that is the only endpoint whose\n * model namespace this package knows. Every other endpoint names models it\n * cannot enumerate (a Bedrock ARN, an Azure deployment name,\n * `accounts/fireworks/models/…`, `meta-llama/Llama-3.3-70B`, an Ollama tag),\n * and applying this schema there rejected working configurations. Pick between\n * the two vocabularies with {@link modelIdSchemaForTarget}.\n *\n * Use {@link normalizeAnthropicModel} to coerce an unrecognized value to a safe\n * alias instead of failing.\n */\nexport const ModelIdSchema = z.union([\n z.enum(ANTHROPIC_MODEL_ALIASES),\n z\n .string()\n .regex(\n ANTHROPIC_FULL_ID_PATTERN,\n \"Invalid Anthropic model ID. Use an alias (opus | sonnet | haiku | inherit), a full ID (e.g. claude-opus-5, claude-sonnet-4-6), a Bedrock ID (e.g. us.anthropic.claude-opus-4-6-v1:0), or a Vertex ID (e.g. claude-sonnet-4-5@20250929).\",\n ),\n z.string().regex(BEDROCK_MODEL_ID_PATTERN),\n z.string().regex(VERTEX_MODEL_ID_PATTERN),\n]);\n\n/**\n * Hosts that serve the first-party Anthropic Messages API. An\n * `anthropic-messages` entry pointed anywhere else — a gateway, LiteLLM, an\n * Azure AI Foundry deployment — speaks the same wire protocol over its own\n * model namespace.\n *\n * @since 3.21.0\n */\nexport const ANTHROPIC_FIRST_PARTY_HOSTS: readonly string[] = [\"api.anthropic.com\"];\n\n/**\n * The slice of a provider-registry `llm` entry that decides which model-id\n * vocabulary applies.\n *\n * Structurally a subset of `AIProviderLlmEntry`\n * (`@skaile/workspaces/core/provider-registry`), so a registry entry can be\n * passed straight in. The fields are plain strings because this module sits\n * *below* the registry in the dependency graph and must not import it; the\n * enums live in exactly one place, and this is not it.\n *\n * @since 3.21.0\n */\nexport interface ModelIdTarget {\n /** omp `api` value — `anthropic-messages`, `openai-completions`, … */\n surface?: string;\n /** `direct` when absent. */\n transport?: string;\n /** Resolved endpoint: `resolveEntryBaseUrl(entry)`, or the preset literal. */\n base_url?: string;\n}\n\n/**\n * True when `baseUrl` is the first-party Anthropic API.\n *\n * An absent URL counts: an `anthropic-messages` entry with no endpoint of its\n * own is the first-party API (the catalog layer fills in\n * `https://api.anthropic.com` during the merge). A URL that will not parse is\n * treated as *not* first-party — guessing the other way would reject ids that\n * whatever is at the other end serves.\n *\n * @since 3.21.0\n */\nexport function isFirstPartyAnthropicEndpoint(baseUrl?: string): boolean {\n if (!baseUrl) return true;\n let host: string;\n try {\n host = new URL(baseUrl).hostname.toLowerCase();\n } catch {\n return false;\n }\n return ANTHROPIC_FIRST_PARTY_HOSTS.includes(host);\n}\n\n/**\n * Whether `target` demands an Anthropic-shaped model id.\n *\n * Exactly one combination does: the Anthropic Messages wire, spoken directly,\n * to Anthropic's own host. Every gateway transport (`bedrock`, `vertex`,\n * `foundry`, `azure-openai`) addresses the same models under a renamed\n * namespace — an inference-profile ARN, a publisher path, a deployment name —\n * and an `anthropic-messages` proxy owns its namespace outright.\n *\n * An absent `target` is the pre-registry default: first-party Anthropic is what\n * the Claude drivers talk to when nothing says otherwise, so the strict\n * vocabulary still applies there and nothing that validates today stops\n * validating.\n *\n * @since 3.21.0\n */\nexport function requiresAnthropicModelId(target?: ModelIdTarget): boolean {\n if (!target) return true;\n if (target.surface !== \"anthropic-messages\") return false;\n if ((target.transport ?? \"direct\") !== \"direct\") return false;\n return isFirstPartyAnthropicEndpoint(target.base_url);\n}\n\n/**\n * Any non-empty, whitespace-free model id — the vocabulary of every endpoint\n * whose model namespace belongs to the operator rather than to us.\n *\n * @since 3.21.0\n */\nexport const FreeFormModelIdSchema = z\n .string()\n .regex(/^\\S+$/, \"Model ID must be a non-empty string with no whitespace.\");\n\n/**\n * The model-id schema a given wire target enforces: {@link ModelIdSchema} for\n * first-party Anthropic, {@link FreeFormModelIdSchema} everywhere else.\n *\n * @since 3.21.0\n */\nexport function modelIdSchemaForTarget(target?: ModelIdTarget): z.ZodType<string> {\n return requiresAnthropicModelId(target)\n ? (ModelIdSchema as z.ZodType<string>)\n : (FreeFormModelIdSchema as z.ZodType<string>);\n}\n\n/**\n * Contextual model-ID schema for the legacy `cloud` dimension.\n *\n * `default` (or absent) is the first-party Anthropic API, so the strict\n * vocabulary applies. Every other value either renames the namespace\n * (`bedrock` ARNs, `vertex` publisher paths, `azure` deployments) or is an\n * unknowable proxy (`gateway`) — all free-form, the same answer\n * {@link modelIdSchemaForTarget} gives for the equivalent registry entry.\n *\n * Superseded by {@link modelIdSchemaForTarget}; it goes when the rest of the\n * `cloud` surface does.\n *\n * @since 1.3.0\n */\nexport function modelIdSchemaForCloud(cloud?: string): z.ZodType<string> {\n return !cloud || cloud === \"default\"\n ? modelIdSchemaForTarget()\n : (FreeFormModelIdSchema as z.ZodType<string>);\n}\n\n/**\n * Normalize an arbitrary model string to a safe Claude Code value.\n *\n * - If `input` is a recognized alias or a full / Bedrock-form / Vertex-form ID,\n * returns it unchanged.\n * - If `input` looks like `claude-<family>-...` but doesn't match any full-ID\n * regex (e.g. the broken `claude-opus-4`), returns the family alias.\n * - Otherwise returns `fallback` (default `\"sonnet\"` — Claude Code's default).\n *\n * Used by renderers that target Claude Code / the Claude SDK to coerce stale\n * or malformed model fields into a working alias rather than propagating a\n * silent runtime failure. All full-pattern checks run BEFORE the family\n * fallback so a valid Bedrock/Vertex ID is never downgraded to an alias.\n */\nexport function normalizeAnthropicModel(\n input: string | undefined | null,\n fallback: AnthropicModelAlias = \"sonnet\",\n): string {\n if (!input) return fallback;\n if ((ANTHROPIC_MODEL_ALIASES as readonly string[]).includes(input)) return input;\n if (ANTHROPIC_FULL_ID_PATTERN.test(input)) return input;\n if (BEDROCK_MODEL_ID_PATTERN.test(input) || VERTEX_MODEL_ID_PATTERN.test(input)) return input;\n // Family fallback is restricted to the rolling *aliases* — `fable` has no\n // Claude Code alias, so a malformed `claude-fable-*` falls through to\n // `fallback` rather than to an alias the runtime would reject.\n const familyMatch = input.match(/claude-(opus|sonnet|haiku)/i);\n if (familyMatch) return familyMatch[1]!.toLowerCase() as AnthropicModelAlias;\n return fallback;\n}\n\n/**\n * A model *selector* as a manifest writes it: `@role`,\n * `<providerId>/<modelId>`, a bare provider-side id, or an Anthropic alias.\n * Resolved against the provider registry — and only then checked against the\n * selected entry's own vocabulary — by `resolveManifestModel`\n * (`@skaile/workspaces/bridge`).\n *\n * Structural on purpose. An agent manifest is portable across providers: it\n * cannot know which registry entry will serve it, so an id-vocabulary check\n * here would enforce one endpoint's namespace on every other one. That check\n * belongs to {@link modelIdSchemaForTarget}, at the point where the endpoint is\n * known.\n *\n * @since 3.21.0\n */\nexport const ModelSelectorSchema = z\n .string()\n .regex(\n /^\\S+$/,\n 'Model selector must be a non-empty string with no whitespace: \"@role\", \"provider/model\", a model ID, or an Anthropic alias.',\n );\n\nconst ModelConfigSchema = z.looseObject({\n preferred: ModelSelectorSchema.optional(),\n fallback: z.array(ModelSelectorSchema).optional(),\n constraints: z\n .looseObject({\n temperature: z.number().optional(),\n max_tokens: z.number().optional(),\n })\n .optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Composition binding types (Task 1.7)\n// ---------------------------------------------------------------------------\n\n/** Bindings for content items: how the asset's bytes reach the prompt / tool surface. */\nexport const ContentBindingValues = [\"discoverable\", \"inline-live\", \"inline-snapshot\"] as const;\n/** Bindings for `kind: agent` items: how the sub-agent is invoked. */\nexport const AgentBindingValues = [\"delegate\", \"run\"] as const;\nexport const BindingValues = [...ContentBindingValues, ...AgentBindingValues] as const;\nexport const BindingSchema = z.enum(BindingValues);\nexport type Binding = z.infer<typeof BindingSchema>;\n\n/** Slot ids name a composed connector / mcp-server inside one agent: `composition.<id>`, `<id>.<operation>`. */\nexport const SLOT_ID_PATTERN = /^[a-z][a-z0-9_-]*$/;\n\n/** Kinds whose compose item MUST carry a slot `id`. */\nexport const SLOT_ID_REQUIRED_KINDS: Readonly<Record<string, true>> = {\n connector: true,\n \"mcp-server\": true,\n};\n\nconst SlotIdSchema = z\n .string()\n .regex(SLOT_ID_PATTERN, \"id must match [a-z][a-z0-9_-]* (lowercase, starts with a letter)\");\n\n/**\n * A single composition item within an agent's `composes:` field.\n *\n * - `kind`: the asset kind being composed. Any string here; `skaile validate`\n * checks it against the kind registry (plus the `soul` pseudo-kind).\n * - `ref`: asset ref (e.g. '@skaile/gmail@^1') or a local path.\n * - `id`: slot id; required for `connector` and `mcp-server` items.\n * - `as`: local alias under which the item is exposed (e.g. a sub-agent name); also the rendered\n * file name, so it must match `[a-z][a-z0-9_-]*`.\n * - `instance`: optional Library Instance ref to reuse (e.g. 'library://personal/instances/uuid')\n * - `config`: free-form per-item configuration.\n * - `binding`: how the asset integrates into the agent runtime; defaults per-kind.\n * `delegate | run` apply to `kind: agent` only.\n */\nexport const AgentComposeItemSchema = z\n .object({\n kind: z.string().min(1),\n ref: z.string().min(1),\n id: SlotIdSchema.optional(),\n as: z\n .string()\n .regex(\n SLOT_ID_PATTERN,\n \"as must match [a-z][a-z0-9_-]* (it names a rendered file: no path separators or dots)\",\n )\n .optional(),\n instance: z.string().optional(),\n config: z.record(z.string(), z.unknown()).optional(),\n binding: BindingSchema.optional(),\n })\n .superRefine((item, ctx) => {\n if (item.kind === \"memory\" || item.kind === \"trigger\") {\n ctx.addIssue({\n code: \"custom\",\n path: [\"kind\"],\n message: `\"${item.kind}\" is not a composes kind; declare ${item.kind === \"memory\" ? \"memory\" : \"triggers\"} as a top-level field`,\n });\n }\n if (Object.hasOwn(SLOT_ID_REQUIRED_KINDS, item.kind) && item.id === undefined) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"id\"],\n message: `composes item of kind \"${item.kind}\" requires a slot id`,\n });\n }\n if (item.binding === undefined) return;\n const isAgentBinding = (AgentBindingValues as readonly string[]).includes(item.binding);\n if (item.kind === \"agent\" && !isAgentBinding) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"binding\"],\n message: `composes item of kind \"agent\" accepts binding \"delegate\" or \"run\", not \"${item.binding}\"`,\n });\n } else if (item.kind !== \"agent\" && isAgentBinding) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"binding\"],\n message: `binding \"${item.binding}\" is only valid for kind \"agent\"`,\n });\n }\n });\n\nexport type AgentComposeItem = z.infer<typeof AgentComposeItemSchema>;\n\n// ---------------------------------------------------------------------------\n// Agent manifest\n// ---------------------------------------------------------------------------\n\n/**\n * Declared tool restrictions for an agent.\n *\n * `allowed` is an allowlist: when non-empty, the agent may invoke only these\n * tools. `denied` is a denylist applied on top. An absent block (or two empty\n * arrays) means \"no restriction\" — the harness's full default toolset.\n *\n * Tool names are written in the canonical Claude Code vocabulary (`Read`,\n * `Write`, `Bash`, `WebSearch`, …). Each driver maps them onto its own\n * runtime: `claude-sdk` passes them through as `allowedTools` /\n * `disallowedTools`; the omp driver translates them to omp's built-in tool\n * names and passes `--tools`. A name a harness does not recognize is dropped\n * for that harness rather than failing the manifest, because the same manifest\n * is expected to run on more than one harness.\n *\n * This was previously an undeclared field that survived only because\n * {@link AgentManifestSchema} is a loose object — so `AgentManifest.tools` was\n * typed `unknown` and every consumer read it through a cast.\n *\n * @since 1.5.0\n */\nexport const AgentToolsSchema = z.looseObject({\n /** Tool names the agent may invoke. Empty or absent means \"no allowlist\". */\n allowed: z.array(z.string().min(1)).optional(),\n /** Tool names the agent must not invoke. Applied after `allowed`. */\n denied: z.array(z.string().min(1)).optional(),\n});\n\nexport type AgentTools = z.infer<typeof AgentToolsSchema>;\n\n// ---------------------------------------------------------------------------\n// Spec 0.2: lifecycle, io, memory, triggers, capabilities\n// ---------------------------------------------------------------------------\n\n/** `standing` = long-running identity; `role` = short-lived, callable with typed I/O. */\nexport const AgentLifecycleValues = [\"standing\", \"role\"] as const;\nexport const AgentLifecycleSchema = z.enum(AgentLifecycleValues);\nexport type AgentLifecycle = z.infer<typeof AgentLifecycleSchema>;\n\n/** JSON Schema (object form) describing a role's input or output. */\nconst JsonSchemaObject = z.record(z.string(), z.unknown());\n\n/** Typed I/O of a role agent, validated by `agent.run`. */\nexport const AgentIoSchema = z.looseObject({\n input: JsonSchemaObject.optional(),\n output: JsonSchemaObject.optional(),\n});\nexport type AgentIo = z.infer<typeof AgentIoSchema>;\n\nexport const MemoryScopeValues = [\"instance\", \"user\", \"workspace\"] as const;\nexport const MemoryScopeSchema = z.enum(MemoryScopeValues);\nexport type MemoryScope = z.infer<typeof MemoryScopeSchema>;\n\n/** A named, scoped, bounded text block the host stores and the runner renders. */\nexport const MemoryBlockSchema = z.looseObject({\n name: z.string().regex(SLOT_ID_PATTERN, \"block name must match [a-z][a-z0-9_-]*\"),\n scope: MemoryScopeSchema,\n max_chars: z.number().int().positive(),\n /** Convention file the block is seeded from (e.g. `SOUL.md`). */\n source: z.string().min(1).optional(),\n});\nexport type MemoryBlock = z.infer<typeof MemoryBlockSchema>;\n\n/** Top-level memory declaration. Memory is never a `composes:` kind. */\nexport const AgentMemorySchema = z.looseObject({\n blocks: z.array(MemoryBlockSchema).optional(),\n /** Hint only; the host decides. */\n consolidation: z\n .looseObject({\n strategy: z.string().min(1),\n threshold: z.number().int().positive().optional(),\n })\n .optional(),\n});\nexport type AgentMemory = z.infer<typeof AgentMemorySchema>;\n\nconst TriggerIdSchema = z.string().regex(SLOT_ID_PATTERN, \"trigger id must match [a-z][a-z0-9_-]*\");\n\n/**\n * Default triggers declared on the asset; an instance may override or extend\n * them by `id`. Triggers are never a `composes:` kind.\n */\nexport const AgentTriggerSchema = z.discriminatedUnion(\"kind\", [\n z.looseObject({\n kind: z.literal(\"schedule\"),\n id: TriggerIdSchema,\n cron: z.string().min(1),\n prompt: z.string().min(1),\n timezone: z.string().min(1).optional(),\n enabled: z.boolean().optional(),\n }),\n z.looseObject({\n kind: z.literal(\"webhook\"),\n id: TriggerIdSchema,\n prompt: z.string().min(1),\n enabled: z.boolean().optional(),\n }),\n z.looseObject({\n kind: z.literal(\"channel\"),\n id: TriggerIdSchema,\n /** Which channel messages fire the trigger (e.g. `mention`). */\n when: z.string().min(1),\n prompt: z.string().min(1).optional(),\n enabled: z.boolean().optional(),\n }),\n z.looseObject({\n kind: z.literal(\"event\"),\n id: TriggerIdSchema,\n /** Protocol / host event name (e.g. `session_error`). */\n event: z.string().min(1),\n prompt: z.string().min(1).optional(),\n enabled: z.boolean().optional(),\n }),\n]);\nexport type AgentTrigger = z.infer<typeof AgentTriggerSchema>;\n\n/** A capability the agent needs at runtime; `connector` is a compose slot id. */\nexport const AgentCapabilityRequirementSchema = z.looseObject({\n name: z.string().min(1),\n connector: SlotIdSchema.optional(),\n required: z.boolean().default(false),\n});\nexport type AgentCapabilityRequirement = z.infer<typeof AgentCapabilityRequirementSchema>;\n\n// ---------------------------------------------------------------------------\n// Deprecated 0.1 inputs — still parsed, each yields a diagnostic\n// (see `agentDeprecationDiagnostics`); none is read for composition.\n// ---------------------------------------------------------------------------\n\n/** @deprecated 0.1 `requires[]` entry; replaced by `composes[{kind: agent}]`. */\nconst DeprecatedRequiresItemSchema = z.looseObject({\n name: z.string(),\n source: z.string().optional(),\n version: z.string().optional(),\n});\n\nexport const AgentManifestSchema = z\n .looseObject({\n spec_version: z.string().optional(),\n name: z.string().min(1),\n version: z.string().optional(),\n description: z.string().min(1),\n extends: z.string().optional(),\n\n model: ModelConfigSchema.optional(),\n tools: AgentToolsSchema.optional(),\n delegation: z.looseObject({ mode: z.string() }).optional(),\n runtime: z\n .looseObject({\n max_turns: z.number().optional(),\n timeout: z.number().optional(),\n /** Role instances only: render the harness sub-agent as a background agent. */\n background: z.boolean().optional(),\n })\n .optional(),\n\n author: z.string().optional(),\n license: z.string().optional(),\n tags: z.array(z.string()).optional(),\n keywords: z.array(z.string()).optional(),\n\n // spec 0.2\n /** Default `standing`. */\n lifecycle: AgentLifecycleSchema.optional(),\n /** Required when `lifecycle: role`. */\n io: AgentIoSchema.optional(),\n memory: AgentMemorySchema.optional(),\n triggers: z.array(AgentTriggerSchema).optional(),\n capabilities: z.array(AgentCapabilityRequirementSchema).optional(),\n composes: z.array(AgentComposeItemSchema).optional(),\n\n metadata: z.record(z.string(), z.unknown()).optional(),\n\n // Deprecated 0.1 inputs.\n /** @deprecated Use `composes[{kind: skill}]`. */\n skills: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: skill}]`. */\n abilities: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: contract}]`. */\n contracts: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: persona}]`. */\n persona: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: ruleset}]`. */\n rules: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: knowledge}]`. */\n knowledge: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: agent}]`. */\n requires: z.array(DeprecatedRequiresItemSchema).optional(),\n })\n .superRefine((manifest, ctx) => {\n if (manifest.lifecycle === \"role\" && manifest.io === undefined) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"io\"],\n message: 'lifecycle \"role\" requires an io block ({ input, output } JSON Schemas)',\n });\n }\n addDuplicateIssues(\n ctx,\n \"triggers\",\n (manifest.triggers ?? []).map((t) => t.id),\n \"trigger id\",\n );\n addDuplicateIssues(\n ctx,\n \"memory.blocks\",\n (manifest.memory?.blocks ?? []).map((b) => b.name),\n \"memory block name\",\n );\n });\n\nfunction addDuplicateIssues(\n ctx: z.RefinementCtx,\n field: string,\n values: readonly string[],\n label: string,\n): void {\n const seen = new Set<string>();\n values.forEach((value, i) => {\n if (seen.has(value)) {\n ctx.addIssue({\n code: \"custom\",\n path: [...field.split(\".\"), i],\n message: `duplicate ${label} \"${value}\"`,\n });\n }\n seen.add(value);\n });\n}\n\nexport type AgentManifest = z.infer<typeof AgentManifestSchema>;\n\nexport function validateAgent(data: unknown): ManifestValidationResult<AgentManifest> {\n return validateManifest(AgentManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport { FieldSchema, type ManifestValidationResult, validateManifest } from \"./_shared.js\";\n\nexport const ConnectorManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n entry: z.string().min(1),\n npm_deps: z\n .object({\n required: z.array(z.string()).optional(),\n optional: z.array(z.string()).optional(),\n })\n .optional(),\n fields: z.array(FieldSchema).optional(),\n health_check: z.string().nullable().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n});\n\nexport type ConnectorManifest = z.infer<typeof ConnectorManifestSchema>;\n\nexport function validateConnector(data: unknown): ManifestValidationResult<ConnectorManifest> {\n return validateManifest(ConnectorManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n ArtifactRefSchema,\n CommonMetadataSchema,\n FilePrerequisiteSchema,\n type ManifestValidationResult,\n UserInputSchema,\n validateManifest,\n} from \"./_shared.js\";\n\nconst SkillMetadataSchema = CommonMetadataSchema.extend({\n parameters: z.record(z.string(), z.unknown()).optional(),\n artifacts: z\n .object({\n requires: z.array(ArtifactRefSchema).optional(),\n produces: z.array(ArtifactRefSchema).optional(),\n consumes: z.array(ArtifactRefSchema).optional(),\n })\n .optional(),\n prerequisites: z\n .object({\n files: z.array(FilePrerequisiteSchema).optional(),\n inputs_required: z.array(UserInputSchema).optional(),\n inputs_optional: z.array(UserInputSchema).optional(),\n // Parsed by the resolver's parseSkillRequirements; Zod would strip them otherwise.\n reads: z.array(z.object({ path: z.string(), description: z.string().optional() })).optional(),\n produces: z\n .array(z.object({ path: z.string(), description: z.string().optional() }))\n .optional(),\n resources: z\n .array(\n z.object({\n id: z.string(),\n operations: z.array(z.string()).optional(),\n optional: z.boolean().optional(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n connectors: z\n .array(\n z.object({\n driver: z.string(),\n access: z.enum([\"read-only\", \"read-write\"]).optional(),\n }),\n )\n .optional(),\n })\n .optional(),\n produces: z.array(z.object({ path: z.string(), description: z.string().optional() })).optional(),\n});\n\n/**\n * Prefix `skaile library create` writes into a new skill's `description`. The\n * Agent Skills spec requires a real description (what the skill does and when\n * to use it), so a description that still starts with this marker is rejected.\n */\nexport const SKILL_DESCRIPTION_PLACEHOLDER_PREFIX = \"TODO:\";\n\n/** Full placeholder description the scaffold writes when `--description` is omitted. */\nexport const SKILL_DESCRIPTION_PLACEHOLDER = `${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} describe what this skill does and when to use it.`;\n\n/** Body the scaffold writes into a new SKILL.md; an untouched body is a lint warning. */\nexport const SKILL_BODY_PLACEHOLDER = \"Skill prompt goes here.\";\n\nexport const SkillManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z\n .string()\n .refine((d) => d.trim().length > 0, {\n message:\n \"description is empty — say what the skill does and when to use it (Agent Skills spec: 1–1024 chars)\",\n })\n .refine((d) => !d.trim().startsWith(SKILL_DESCRIPTION_PLACEHOLDER_PREFIX), {\n message: `description is still the scaffold placeholder (${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} …) — say what the skill does and when to use it`,\n }),\n version: z.string().optional(),\n license: z.string().optional(),\n compatibility: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n // agentskills.io standard field. Kept as `unknown` (not `string`) so a legacy\n // array form never hard-fails validateSkill — the string-typing rule is\n // advisory, owned by checkAgentSkillConformance (warn, not error).\n \"allowed-tools\": z.unknown().optional(),\n\n // Legacy fields (SKILL.md convention)\n source: z.string().optional(),\n user_inputs: z.array(UserInputSchema).optional(),\n reads_from: z.array(z.string()).optional(),\n writes_to: z.array(z.string()).optional(),\n\n metadata: SkillMetadataSchema.optional(),\n});\n\nexport type SkillManifest = z.infer<typeof SkillManifestSchema>;\n\nexport function validateSkill(data: unknown): ManifestValidationResult<SkillManifest> {\n return validateManifest(SkillManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\n/** Body the scaffold writes into a new `CONTRACT.md`; an untouched body is a lint warning. */\nexport const CONTRACT_BODY_PLACEHOLDER = \"Contract goes here.\";\n\nexport const ContractManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type ContractManifest = z.infer<typeof ContractManifestSchema>;\n\nexport function validateContract(data: unknown): ManifestValidationResult<ContractManifest> {\n return validateManifest(ContractManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport { type ManifestValidationResult, validateManifest } from \"./_shared.js\";\n\nexport const McpServerManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.union([z.string(), z.number()]).optional(),\n // \"http\" is the runtime literal the runner honours (StreamableHTTPClientTransport);\n // \"streamable-http\" is accepted as an MCP-spec-aligned alias and normalized to\n // \"http\" in mcpDeclFromCatalogEntry. Keep both until the alias is retired.\n transport: z.enum([\"stdio\", \"sse\", \"http\", \"streamable-http\"]).optional(),\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string(), z.string()).optional(),\n url: z.string().optional(),\n headers: z.record(z.string(), z.string()).optional(),\n /** Remote only: PEM CA certificate (or a secret ref to one) pinned for this server's TLS. */\n ca: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n // Optional runnable payload fetched + sha256-verified by the platform\n // session-materializer into the asset dir at materialize time (e.g. a bundled\n // server.js shipped as a GitHub release asset). `dest` defaults to the URL\n // basename.\n payload: z\n .object({\n // https only — bare `z.string().url()` also accepts file:/data:/javascript: schemes.\n url: z\n .string()\n .url()\n .refine((u) => u.startsWith(\"https://\"), { message: \"payload url must be https\" }),\n sha256: z.string().regex(/^[a-f0-9]{64}$/),\n // Plain filename, no path separators — schema-level guard against a traversal dest.\n dest: z\n .string()\n .regex(/^[^/\\\\]+$/, { message: \"dest must be a plain filename, not a path\" })\n .optional(),\n })\n .optional(),\n});\n\nexport type McpServerManifest = z.infer<typeof McpServerManifestSchema>;\n\nexport function validateMcpServer(data: unknown): ManifestValidationResult<McpServerManifest> {\n return validateManifest(McpServerManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\n/** Body the scaffold writes into a new `<name>.prompt.md`; an untouched body is a lint warning. */\nexport const PROMPT_BODY_PLACEHOLDER = \"Prompt goes here.\";\n\nexport const PromptManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type PromptManifest = z.infer<typeof PromptManifestSchema>;\n\nexport function validatePrompt(data: unknown): ManifestValidationResult<PromptManifest> {\n return validateManifest(PromptManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\nexport const PersonaManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type PersonaManifest = z.infer<typeof PersonaManifestSchema>;\n\nexport function validatePersona(data: unknown): ManifestValidationResult<PersonaManifest> {\n return validateManifest(PersonaManifestSchema, data);\n}\n","/**\n * Polymorphic Preset manifest schema.\n *\n * A Preset is the unified composition + configuration primitive. Items can be:\n * - Asset ref (plain or with inline config + placeholders)\n * - Library Instance ref (`library://tier/instances/id`)\n * - Nested Preset ref (resolved recursively, max depth 3)\n *\n * Apply semantics derive from ref type, not an explicit mode field.\n */\nimport * as z from \"zod\";\nimport { type ManifestValidationResult, validateManifest } from \"./_shared.js\";\n\n// ---------------------------------------------------------------------------\n// Placeholder types\n// ---------------------------------------------------------------------------\n\nconst PlaceholderTypeValues = [\n \"text\",\n \"multiline\",\n \"secret\",\n \"number\",\n \"boolean\",\n \"enum\",\n \"oauth\",\n \"instance-picker\",\n] as const;\n\nexport const PlaceholderTypeSchema = z.enum(PlaceholderTypeValues);\n\nexport const PlaceholderSchema = z.object({\n key: z.string().min(1),\n prompt: z.string().optional(),\n type: PlaceholderTypeSchema.optional(),\n required: z.boolean().optional(),\n default: z.union([z.string(), z.number(), z.boolean()]).optional(),\n values: z.array(z.union([z.string(), z.number()])).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Compose item (for agents within presets)\n// ---------------------------------------------------------------------------\n\nconst ComposeRefSchema = z.object({\n kind: z.string().min(1),\n ref: z.string().min(1),\n});\n\n// ---------------------------------------------------------------------------\n// Preset item\n// ---------------------------------------------------------------------------\n\nexport const PresetItemSchema = z.looseObject({\n /** Asset ref, Library Instance ref, or nested Preset ref. */\n ref: z.string().min(1),\n /** Local item ID for cross-item references (#item-id). */\n id: z.string().optional(),\n /** Author-prefilled non-secret config values. */\n config: z.record(z.string(), z.unknown()).optional(),\n /** User/secret values prompted at install. */\n placeholders: z.array(PlaceholderSchema).optional(),\n /** How placeholder values fold into the Instance config. */\n materialize: z.record(z.string(), z.string()).optional(),\n /** Composition for agent items. */\n composes: z.array(ComposeRefSchema).optional(),\n /** Outer-Preset-author-supplied placeholder values for nested Presets. */\n inputs: z.record(z.string(), z.unknown()).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Preset-level input (rare, shared across items)\n// ---------------------------------------------------------------------------\n\nconst PresetInputSchema = z.object({\n key: z.string().min(1),\n type: PlaceholderTypeSchema.optional(),\n prompt: z.string().optional(),\n required: z.boolean().optional(),\n values: z.array(z.union([z.string(), z.number()])).optional(),\n default: z.union([z.string(), z.number(), z.boolean()]).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Source (git repo backing non-factory dependencies)\n// ---------------------------------------------------------------------------\n\n/** A `{url, pin?}` source the preset's dependencies resolve from (mirrors `SourceEntry`). */\nexport const PresetSourceSchema = z.object({\n url: z.string().min(1),\n pin: z.string().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Scaffold placeholders (`library create preset`)\n// ---------------------------------------------------------------------------\n\n/** The `description:` `library create preset` writes when `--description` is omitted. */\nexport const PRESET_DESCRIPTION_PLACEHOLDER = \"A curated set of assets\";\n\n/** The single item ref `library create preset` writes; it names no real publisher or skill. */\nexport const PRESET_ITEM_PLACEHOLDER_REF = \"skill:@your-publisher/example-skill\";\n\n// ---------------------------------------------------------------------------\n// Preset manifest\n// ---------------------------------------------------------------------------\n\nexport const PresetManifestSchema = z.looseObject({\n publisher: z.string().optional(),\n name: z.string().min(1),\n version: z.union([z.string(), z.number()]).default(\"0.1.0\"),\n description: z.string().min(1),\n category: z.string().optional(),\n license: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n\n /** 1+ polymorphic items. */\n items: z.array(PresetItemSchema).min(1),\n\n /** Preset-level inputs shared across items (rare). */\n inputs: z.array(PresetInputSchema).optional(),\n\n /** Git sources the dependency items resolve from; `apply` registers these first. */\n sources: z.array(PresetSourceSchema).optional(),\n});\n\nexport type PresetManifest = z.infer<typeof PresetManifestSchema>;\nexport type PresetItem = z.infer<typeof PresetItemSchema>;\nexport type PresetSource = z.infer<typeof PresetSourceSchema>;\nexport type Placeholder = z.infer<typeof PlaceholderSchema>;\n\nexport function validatePreset(data: unknown): ManifestValidationResult<PresetManifest> {\n return validateManifest(PresetManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\nexport const RulesetManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type RulesetManifest = z.infer<typeof RulesetManifestSchema>;\n\nexport function validateRuleset(data: unknown): ManifestValidationResult<RulesetManifest> {\n return validateManifest(RulesetManifestSchema, data);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../core/src/publish-manifest.ts"],"names":[],"mappings":"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","file":"chunk-ZPWTOUTK.js","sourcesContent":["/**\n * Publish manifest — `skaile.manifest.yaml`\n *\n * What a repo PUBLISHES: the `publisher` / `version` / `assets[]` that used to\n * live in the publication half of `skaile.yaml`, plus a per-asset dependency\n * graph, store-listing metadata, and an optional curator `source:` pointer.\n *\n * ── Two files, two codecs ──────────────────────────────────────────────────\n *\n * skaile.yaml → SkWorkspaceConfig (workspace + consumption)\n * skaile.manifest.yaml → SkPublishManifest (publication) ← this module\n *\n * A repo can have either file, both, or neither: a pure workspace has only\n * `skaile.yaml`; a pure asset repo (e.g. `ai-assets`) has only\n * `skaile.manifest.yaml`; a repo that is both has both.\n *\n * ── One format, three roles ────────────────────────────────────────────────\n *\n * First-party `source:` absent → bytes live in this repo (`root`/`files`).\n * Curator/sidecar `source:` present → bytes come from the referenced upstream,\n * verified by `sha256`.\n *\n * `decodeSkaileManifest` mirrors `decodeSkaileYaml`: total (never throws),\n * returns {@link Diagnostic}s. Dep-ref strings are validated with `parseAssetRef`.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { type Dirent, existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { parse, stringify } from \"yaml\";\nimport { parseAssetRef } from \"./models.js\";\nimport type { Diagnostic } from \"./workspace-config.js\";\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\n/** One file inside a curated asset, pinned to an exact upstream blob hash. */\nexport interface ManifestFileEntry {\n path: string;\n /** 64-hex sha256 of the upstream blob. */\n sha256: string;\n}\n\n/**\n * One entry in a manifest's `assets:` list. Either `root:` (recursive walk) or\n * `files:` (explicit list, supports globs for first-party; the granular\n * `{path, sha256}` form for curated upstream verification) declares which paths\n * constitute the asset. `version:` overrides the manifest-level version.\n *\n * @docLink packages/core/publish-manifest#asset-entry\n */\nexport interface AssetEntry {\n kind: string;\n name: string;\n root?: string;\n /**\n * Explicit file listing. First-party manifests use bare `string[]` (globs,\n * fast-glob). Curated entries may use the granular `{path, sha256}` form so\n * the resolver fetches + verifies exact upstream blobs without a full clone.\n */\n files?: string[] | ManifestFileEntry[];\n version?: string;\n /** Per-asset publisher override (e.g. for curator/mirror repos). */\n publisher?: string;\n\n /**\n * Canonical dep refs (`kind:@<publisher>/name[#version]`) — same grammar as\n * `SkWorkspaceConfig.dependencies`. Authoritative for this asset's resolved\n * deps. (Was `requires` in `.skaile-source.yaml`.)\n */\n dependencies?: string[];\n\n /**\n * Author-pinned composite sha256 over the asset's `files`/`root` (the\n * {@link compositeSha256} the walker, discovery and the lock all use). Optional locally;\n * REQUIRED on store publish. (Was `.skaile-source.yaml` `assets[].sha256`.)\n */\n sha256?: string;\n\n /**\n * Curator override: this single asset's bytes come from a different upstream\n * than the manifest-level `source`. Absent → inherit manifest `source` (or\n * first-party when that is also absent).\n */\n source?: ManifestSource;\n\n // ── Store-listing metadata (all optional; fall back to content frontmatter) ──\n description?: string;\n keywords?: string[];\n category?: string;\n license?: string;\n homepage?: string;\n}\n\n/**\n * Upstream the bytes come from when a manifest curates a repo it does not own.\n * Absent → first-party (bytes live in the manifest's own repo).\n *\n * @docLink packages/core/publish-manifest#manifest-source\n */\nexport interface ManifestSource {\n url: string;\n /** 40-char commit the curated bytes are pinned to. */\n commit?: string;\n}\n\n/**\n * Signing/attribution recorded when a manifest is published on behalf of others.\n *\n * @docLink packages/core/publish-manifest#manifest-provenance\n */\nexport interface ManifestProvenance {\n curator: string;\n signed_by?: string;\n}\n\n/**\n * Parsed `skaile.manifest.yaml` — what a repo publishes.\n *\n * @docLink packages/core/publish-manifest#sk-publish-manifest\n */\nexport interface SkPublishManifest {\n publisher?: string;\n version?: string;\n /** Repo-level store defaults inherited by assets unless overridden per-entry. */\n license?: string;\n homepage?: string;\n /**\n * Repo-relative path prefixes holding dev-only assets — excluded from\n * discovery/publish unless `--dev`. (Was `.skaile-source.yaml` `dev_paths`.)\n */\n dev_paths?: string[];\n /**\n * Curator mode: the single upstream all assets in this file come from. A\n * per-asset `source` overrides it. Absent → first-party (own repo).\n */\n source?: ManifestSource;\n /** Present when this manifest is curated/published on behalf of another author. */\n provenance?: ManifestProvenance;\n assets?: AssetEntry[];\n}\n\n/** Result of {@link decodeSkaileManifest}: the manifest plus any notes. */\nexport interface ManifestDecodeResult {\n manifest: SkPublishManifest;\n diagnostics: Diagnostic[];\n}\n\n/** The single fixed filename for a publish manifest. */\nexport const SKAILE_MANIFEST_FILENAME = \"skaile.manifest.yaml\";\n\n// ── Decode ──────────────────────────────────────────────────────────────────\n\nfunction parseSource(raw: unknown): ManifestSource | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const s = raw as Record<string, unknown>;\n if (typeof s.url !== \"string\" || s.url.length === 0) return undefined;\n const out: ManifestSource = { url: s.url };\n if (typeof s.commit === \"string\" && s.commit.length > 0) out.commit = s.commit;\n return out;\n}\n\nfunction parseProvenance(raw: unknown): ManifestProvenance | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const p = raw as Record<string, unknown>;\n if (typeof p.curator !== \"string\" || p.curator.length === 0) return undefined;\n const out: ManifestProvenance = { curator: p.curator };\n if (typeof p.signed_by === \"string\" && p.signed_by.length > 0) out.signed_by = p.signed_by;\n return out;\n}\n\n/** Parse `files:` as either `string[]` (globs) or `{path, sha256}[]` (granular). */\nfunction parseFiles(raw: unknown): string[] | ManifestFileEntry[] | undefined {\n if (!Array.isArray(raw)) return undefined;\n const strings: string[] = [];\n const granular: ManifestFileEntry[] = [];\n for (const item of raw) {\n if (typeof item === \"string\") {\n strings.push(item);\n } else if (item && typeof item === \"object\" && !Array.isArray(item)) {\n const f = item as Record<string, unknown>;\n if (typeof f.path === \"string\" && typeof f.sha256 === \"string\") {\n granular.push({ path: f.path, sha256: f.sha256 });\n }\n }\n }\n // A manifest uses one form per entry; if both somehow appear, granular wins\n // (it is the verifiable form). Empty → undefined.\n if (granular.length > 0) return granular;\n if (strings.length > 0) return strings;\n return undefined;\n}\n\n/** Parse the YAML root, returning either the mapping or an error diagnostic. */\nfunction parseManifestRoot(\n text: string,\n): { ok: true; raw: Record<string, unknown> } | { ok: false; diagnostic: Diagnostic } {\n let parsed: unknown;\n try {\n parsed = parse(text) ?? {};\n } catch (err) {\n return {\n ok: false,\n diagnostic: {\n code: \"yaml_syntax\",\n severity: \"error\",\n message: `Invalid YAML: ${err instanceof Error ? err.message : String(err)}`,\n },\n };\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return {\n ok: false,\n diagnostic: {\n code: \"non_object_root\",\n severity: \"error\",\n message: \"skaile.manifest.yaml must be a mapping at the top level.\",\n },\n };\n }\n return { ok: true, raw: parsed as Record<string, unknown> };\n}\n\n/**\n * Strip a SINGLE leading `@` from a publisher and, when one was removed, push a\n * `warning` diagnostic. The `@` is the scope sigil the ref formatter adds — an\n * authored `@acme` would otherwise index as `@@acme` and be un-addable. Bare\n * names are returned untouched.\n */\nfunction normalizePublisher(value: string, path: string, diagnostics: Diagnostic[]): string {\n if (!value.startsWith(\"@\")) return value;\n const stripped = value.slice(1);\n diagnostics.push({\n code: \"publisher_leading_sigil\",\n severity: \"warning\",\n message: `publisher \"${value}\": leading \"@\" is the scope sigil and is added automatically — use bare \"${stripped}\"`,\n path,\n });\n return stripped;\n}\n\n/** Decode the manifest-level scalar/array/object fields onto `manifest`. */\nfunction decodeManifestFields(\n raw: Record<string, unknown>,\n manifest: SkPublishManifest,\n diagnostics: Diagnostic[],\n): void {\n if (typeof raw.publisher === \"string\" && raw.publisher.length > 0) {\n manifest.publisher = normalizePublisher(raw.publisher, \"publisher\", diagnostics);\n }\n if (typeof raw.version === \"string\" && raw.version.length > 0) {\n manifest.version = raw.version;\n }\n if (typeof raw.license === \"string\" && raw.license.length > 0) {\n manifest.license = raw.license;\n }\n if (typeof raw.homepage === \"string\" && raw.homepage.length > 0) {\n manifest.homepage = raw.homepage;\n }\n if (Array.isArray(raw.dev_paths)) {\n const paths = raw.dev_paths.filter((p): p is string => typeof p === \"string\" && p.length > 0);\n if (paths.length > 0) manifest.dev_paths = paths;\n }\n const source = parseSource(raw.source);\n if (source) manifest.source = source;\n const provenance = parseProvenance(raw.provenance);\n if (provenance) manifest.provenance = provenance;\n}\n\n/**\n * Validate an asset's `dependencies` via `parseAssetRef`, pushing a `warning`\n * for each malformed ref. Returns the kept (valid) refs.\n */\nfunction decodeAssetDependencies(\n raw: unknown,\n kind: string,\n name: string,\n diagnostics: Diagnostic[],\n): string[] {\n const deps: string[] = [];\n if (!Array.isArray(raw)) return deps;\n for (const dep of raw) {\n if (typeof dep !== \"string\") continue;\n try {\n parseAssetRef(dep);\n deps.push(dep);\n } catch (err) {\n diagnostics.push({\n code: \"malformed_dependency\",\n severity: \"warning\",\n message: `assets[${kind}:${name}].dependencies: ${\n err instanceof Error ? err.message : String(err)\n }`,\n path: `assets.${kind}:${name}.dependencies`,\n });\n }\n }\n return deps;\n}\n\n/**\n * Decode one `assets[]` item into an {@link AssetEntry}, or `undefined` when the\n * item is not a mapping or lacks both `kind` and `name`. Pushes dependency\n * warnings to `diagnostics`.\n */\nfunction decodeAssetEntry(item: unknown, diagnostics: Diagnostic[]): AssetEntry | undefined {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) return undefined;\n const a = item as Record<string, unknown>;\n const kind = typeof a.kind === \"string\" ? a.kind : \"\";\n const name = typeof a.name === \"string\" ? a.name : \"\";\n if (!kind || !name) return undefined;\n const entry: AssetEntry = { kind, name };\n if (typeof a.root === \"string\") entry.root = a.root;\n const files = parseFiles(a.files);\n if (files) entry.files = files;\n if (typeof a.version === \"string\") entry.version = a.version;\n if (typeof a.publisher === \"string\")\n entry.publisher = normalizePublisher(\n a.publisher,\n `assets.${kind}:${name}.publisher`,\n diagnostics,\n );\n if (typeof a.sha256 === \"string\") entry.sha256 = a.sha256;\n const assetSource = parseSource(a.source);\n if (assetSource) entry.source = assetSource;\n\n const deps = decodeAssetDependencies(a.dependencies, kind, name, diagnostics);\n if (deps.length > 0) entry.dependencies = deps;\n\n if (typeof a.description === \"string\") entry.description = a.description;\n if (Array.isArray(a.keywords)) {\n const kw = a.keywords.filter((k): k is string => typeof k === \"string\");\n if (kw.length > 0) entry.keywords = kw;\n }\n if (typeof a.category === \"string\") entry.category = a.category;\n if (typeof a.license === \"string\") entry.license = a.license;\n if (typeof a.homepage === \"string\") entry.homepage = a.homepage;\n\n return entry;\n}\n\n/** Decode the `assets[]` list onto `manifest`, collecting dependency warnings. */\nfunction decodeManifestAssets(\n raw: Record<string, unknown>,\n manifest: SkPublishManifest,\n diagnostics: Diagnostic[],\n): void {\n if (!Array.isArray(raw.assets)) return;\n const entries: AssetEntry[] = [];\n for (const item of raw.assets) {\n const entry = decodeAssetEntry(item, diagnostics);\n if (entry) entries.push(entry);\n }\n if (entries.length > 0) manifest.assets = entries;\n}\n\n/**\n * Decode `skaile.manifest.yaml` text into a {@link SkPublishManifest} plus\n * {@link Diagnostic}s. Total — never throws: a YAML syntax error or non-object\n * root is reported as an `error`-severity diagnostic with an empty manifest.\n * Malformed `assets[].dependencies` refs are reported as `warning`s (validated\n * via `parseAssetRef`) rather than silently dropped.\n *\n * Pair with {@link encodeSkaileManifest} for round-tripping.\n * @docLink packages/core/publish-manifest#decode-skaile-manifest\n */\nexport function decodeSkaileManifest(text: string): ManifestDecodeResult {\n const root = parseManifestRoot(text);\n if (!root.ok) {\n return { manifest: {}, diagnostics: [root.diagnostic] };\n }\n\n const manifest: SkPublishManifest = {};\n const diagnostics: Diagnostic[] = [];\n decodeManifestFields(root.raw, manifest, diagnostics);\n decodeManifestAssets(root.raw, manifest, diagnostics);\n\n return { manifest, diagnostics };\n}\n\n// ── Encode ──────────────────────────────────────────────────────────────────\n\n/** Fixed top-level key order for {@link encodeSkaileManifest}. */\nconst MANIFEST_KEY_ORDER: (keyof SkPublishManifest)[] = [\n \"publisher\",\n \"version\",\n \"license\",\n \"homepage\",\n \"dev_paths\",\n \"source\",\n \"provenance\",\n \"assets\",\n];\n\n/** Fixed per-asset key order for {@link encodeSkaileManifest}. */\nexport const ASSET_KEY_ORDER: readonly (keyof AssetEntry)[] = [\n \"kind\",\n \"name\",\n \"source\",\n \"root\",\n \"files\",\n \"version\",\n \"publisher\",\n \"sha256\",\n \"dependencies\",\n \"description\",\n \"keywords\",\n \"category\",\n \"license\",\n \"homepage\",\n];\n\n/** An entry with its keys in canonical order, undefined fields dropped. */\nexport function orderedAsset(a: AssetEntry): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of ASSET_KEY_ORDER) {\n const value = a[key];\n if (value !== undefined) out[key] = value;\n }\n return out;\n}\n\n/**\n * Encode a {@link SkPublishManifest} to canonical `skaile.manifest.yaml` text:\n * deterministic key order, only defined fields, `lineWidth: 120` (mirrors\n * `encodeSkaileYaml`).\n * @docLink packages/core/publish-manifest#encode-skaile-manifest\n */\nexport function encodeSkaileManifest(manifest: SkPublishManifest): string {\n const out: Record<string, unknown> = {};\n for (const key of MANIFEST_KEY_ORDER) {\n const value = manifest[key];\n if (value === undefined) continue;\n if (key === \"assets\" && Array.isArray(value)) {\n out.assets = (value as AssetEntry[]).map(orderedAsset);\n } else {\n out[key] = value;\n }\n }\n return stringify(out, { lineWidth: 120 });\n}\n\n// ── File I/O ──────────────────────────────────────────────────────────────────\n\n/**\n * Load and decode `<dir>/skaile.manifest.yaml`. Returns `null` when the file is\n * absent or unparseable (mirrors `loadSkWorkspaceConfig`'s tolerant contract).\n * @docLink packages/core/publish-manifest#load-sk-publish-manifest\n */\nexport function loadSkPublishManifest(dir: string): SkPublishManifest | null {\n const filePath = join(resolve(dir), SKAILE_MANIFEST_FILENAME);\n if (!existsSync(filePath)) return null;\n let raw: string;\n try {\n raw = readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n const { manifest, diagnostics } = decodeSkaileManifest(raw);\n if (diagnostics.some((d) => d.code === \"yaml_syntax\" || d.code === \"non_object_root\")) {\n return null;\n }\n return manifest;\n}\n\n// ── Asset content hash ──────────────────────────────────────────────────────\n\n/** Hex SHA-256 of one file's bytes (the per-file `files[].sha256`). */\nexport function sha256Hex(bytes: Uint8Array): string {\n return createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\n/**\n * The one asset content hash, shared by every origin (library index, library\n * lock, git-source lock + provenance walker, store install manifest, author-pinned\n * `sha256`): SHA-256 (bare 64-hex) over `localeCompare`-sorted `<path>:<sha256>\\n`\n * rows, where each `sha256` is the file's own {@link sha256Hex}.\n *\n * `path` MUST be POSIX and relative to the root of the repository/library that\n * holds the asset (so `skills/foo/SKILL.md`, never `SKILL.md` relative to the\n * asset folder) — the path is folded into the digest, so a different base gives a\n * different hash for the same bytes.\n */\nexport function compositeSha256(files: ReadonlyArray<{ path: string; sha256: string }>): string {\n const lines = files\n .slice()\n .sort((a, b) => a.path.localeCompare(b.path))\n .map((f) => `${f.path}:${f.sha256}\\n`)\n .join(\"\");\n return createHash(\"sha256\").update(lines).digest(\"hex\");\n}\n\n/**\n * Directories never part of an asset's bytes: VCS, dependencies, per-project state, interpreter\n * and tool caches, virtual environments and editor folders. One list for the deploy file set and\n * the content hash, so a helper script or a test run inside a library (`__pycache__/`,\n * `.pytest_cache/`) never makes the lock drift.\n */\nconst NON_ASSET_DIRS = new Set([\n \".git\",\n \"node_modules\",\n \".skaile\",\n \"__pycache__\",\n \".venv\",\n \"venv\",\n \".pytest_cache\",\n \".mypy_cache\",\n \".ruff_cache\",\n \".idea\",\n \".vscode\",\n]);\n\n/** File names never part of an asset's bytes (OS and interpreter leftovers). */\nconst NON_ASSET_FILES = new Set([\".DS_Store\", \"Thumbs.db\"]);\n\n/** `true` for a directory name no asset ships (see {@link NON_ASSET_DIRS}). */\nexport function isNonAssetDir(name: string): boolean {\n return NON_ASSET_DIRS.has(name);\n}\n\n/** `true` for a file name no asset ships: `.DS_Store`, `Thumbs.db`, `*.pyc`, `*.pyo`, `.env*`. */\nexport function isNonAssetFile(name: string): boolean {\n return (\n NON_ASSET_FILES.has(name) ||\n name.endsWith(\".pyc\") ||\n name.endsWith(\".pyo\") ||\n isEnvFileName(name)\n );\n}\n\n/** Committed `.env` templates: no secrets, so they stay part of the asset. */\nconst ENV_TEMPLATE_SUFFIXES = new Set([\".example\", \".sample\", \".template\", \".dist\"]);\n\n/**\n * `true` for a `.env` or `.env.*` file name that holds local secrets and is never shipped with\n * an asset. A template (`.env.example`, `.env.sample`, `.env.template`, `.env.dist`) is not one.\n */\nexport function isEnvFileName(name: string): boolean {\n if (name === \".env\") return true;\n if (!name.startsWith(\".env.\")) return false;\n return !ENV_TEMPLATE_SUFFIXES.has(name.slice(\".env\".length));\n}\n\n/**\n * `true` when a POSIX path (relative to anything) lies in a {@link isNonAssetDir} directory\n * or names a {@link isNonAssetFile} file. Symlinks are not part of an asset either, but a path\n * string cannot tell: walkers skip them through `Dirent.isFile()`.\n */\nexport function isNonAssetPath(posixPath: string): boolean {\n const parts = posixPath.split(\"/\");\n const last = parts.pop() ?? \"\";\n return isNonAssetFile(last) || parts.some(isNonAssetDir);\n}\n\n/**\n * Every file under `absDir`, as sorted POSIX paths relative to `absDir`,\n * skipping {@link NON_ASSET_DIRS}, {@link NON_ASSET_FILES} and `*.pyc`. The single enumeration\n * behind a `root:` manifest entry — used by the provenance walker and by discovery, so both\n * hash the same file list. Symlinks are skipped.\n */\nexport function listAssetFiles(absDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, rel: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n const childRel = rel ? `${rel}/${e.name}` : e.name;\n if (e.isDirectory()) {\n if (!isNonAssetDir(e.name)) walk(join(dir, e.name), childRel);\n } else if (e.isFile() && !isNonAssetFile(e.name)) {\n out.push(childRel);\n }\n }\n };\n walk(absDir, \"\");\n return out.sort();\n}\n\n/**\n * Every symlink under `absDir` (sorted POSIX paths relative to `absDir`) that\n * {@link listAssetFiles} leaves out: the links a deploy drops. Walks the same\n * directories, never follows a link and skips {@link NON_ASSET_DIRS}.\n */\nexport function listSkippedSymlinks(absDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, rel: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n const childRel = rel ? `${rel}/${e.name}` : e.name;\n if (e.isSymbolicLink()) {\n if (!isNonAssetFile(e.name)) out.push(childRel);\n } else if (e.isDirectory() && !isNonAssetDir(e.name)) {\n walk(join(dir, e.name), childRel);\n }\n }\n };\n walk(absDir, \"\");\n return out.sort();\n}\n\n/**\n * Every `.env` / `.env.*` file under `absDir` (sorted POSIX paths relative to `absDir`), in the\n * directories {@link listAssetFiles} walks. A deploy leaves them out; the list lets `add` say so.\n */\nexport function listEnvFiles(absDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, rel: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n const childRel = rel ? `${rel}/${e.name}` : e.name;\n if (e.isFile() && isEnvFileName(e.name)) out.push(childRel);\n else if (e.isDirectory() && !isNonAssetDir(e.name)) walk(join(dir, e.name), childRel);\n }\n };\n walk(absDir, \"\");\n return out.sort();\n}\n"]}
|
package/dist/flows-EQF2CH4U.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export { flowFindFlowForSession, flowGetSession, flowList, flowListSessions, flowShow } from './chunk-QVFAS5IO.js';
|
|
2
|
-
import './chunk-R6O6YWU7.js';
|
|
3
|
-
import './chunk-T42WRQ4O.js';
|
|
4
|
-
import './chunk-X5YPJV4N.js';
|
|
5
|
-
import './chunk-GCHPUTA3.js';
|
|
6
|
-
import './chunk-PBBPZYVG.js';
|
|
7
|
-
import './chunk-4GY63JU6.js';
|
|
8
|
-
import './chunk-EDYHEMJA.js';
|
|
9
|
-
import './chunk-PMECEZK3.js';
|
|
10
|
-
import './chunk-5BEFNLOR.js';
|
|
11
|
-
import './chunk-A2ULN3KX.js';
|
|
12
|
-
import './chunk-ALEYHUC5.js';
|
|
13
|
-
import './chunk-L5VSIPQD.js';
|
|
14
|
-
import './chunk-CPSIPIX7.js';
|
|
15
|
-
import './chunk-ZPWTOUTK.js';
|
|
16
|
-
import './chunk-RVRB27AN.js';
|
|
17
|
-
import './chunk-SBSA3IQA.js';
|
|
18
|
-
import './chunk-BNMZVPYA.js';
|
|
19
|
-
import './chunk-ICSCSM5D.js';
|
|
20
|
-
import './chunk-DALV4HHP.js';
|
|
21
|
-
import './chunk-MJHSLODD.js';
|
|
22
|
-
import './chunk-C3CAXQMA.js';
|
|
23
|
-
import './chunk-BOFL7GIF.js';
|
|
24
|
-
import './chunk-NSBPE2FW.js';
|
|
25
|
-
//# sourceMappingURL=flows-EQF2CH4U.js.map
|
|
26
|
-
//# sourceMappingURL=flows-EQF2CH4U.js.map
|
package/dist/helpers-CFK6YP6R.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export { KIND_COL_WIDTH, S, TARGET_DEFAULT_HINT, bareSoftDepName, colorRef, deferredWarnings, fitWidth, formatRelativeTime, formatSoftDepAddPreview, formatSoftDepHint, formatSoftDepRemovePreview, formatSoftDepSection, kindColor, kindColorPad, logErr, logInfo, logOk, logWarn, requireProjectConfig, warnLegacyClaudeCopies } from './chunk-GV4DZ6MT.js';
|
|
2
|
-
import './chunk-DZMNFCWB.js';
|
|
3
|
-
import './chunk-2F5AWQX5.js';
|
|
4
|
-
import './chunk-J4RBUFGM.js';
|
|
5
|
-
import './chunk-COH6FQAG.js';
|
|
6
|
-
import './chunk-R7FOF242.js';
|
|
7
|
-
import './chunk-3TXEJN4W.js';
|
|
8
|
-
import './chunk-FH7W6TJ4.js';
|
|
9
|
-
import './chunk-CGYEHQOX.js';
|
|
10
|
-
import './chunk-KTBKW2FI.js';
|
|
11
|
-
import './chunk-UQ6LFBPZ.js';
|
|
12
|
-
import './chunk-HZXUXHIV.js';
|
|
13
|
-
import './chunk-ZCAJZ4B2.js';
|
|
14
|
-
import './chunk-PBBPZYVG.js';
|
|
15
|
-
import './chunk-4GY63JU6.js';
|
|
16
|
-
import './chunk-EDYHEMJA.js';
|
|
17
|
-
import './chunk-PMECEZK3.js';
|
|
18
|
-
import './chunk-5BEFNLOR.js';
|
|
19
|
-
import './chunk-A2ULN3KX.js';
|
|
20
|
-
import './chunk-ALEYHUC5.js';
|
|
21
|
-
import './chunk-L5VSIPQD.js';
|
|
22
|
-
import './chunk-CPSIPIX7.js';
|
|
23
|
-
import './chunk-ZPWTOUTK.js';
|
|
24
|
-
import './chunk-RVRB27AN.js';
|
|
25
|
-
import './chunk-SBSA3IQA.js';
|
|
26
|
-
import './chunk-BNMZVPYA.js';
|
|
27
|
-
import './chunk-ICSCSM5D.js';
|
|
28
|
-
import './chunk-DALV4HHP.js';
|
|
29
|
-
import './chunk-MJHSLODD.js';
|
|
30
|
-
import './chunk-C3CAXQMA.js';
|
|
31
|
-
import './chunk-BOFL7GIF.js';
|
|
32
|
-
import './chunk-NSBPE2FW.js';
|
|
33
|
-
//# sourceMappingURL=helpers-CFK6YP6R.js.map
|
|
34
|
-
//# sourceMappingURL=helpers-CFK6YP6R.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/commands/library-publish.ts"],"names":[],"mappings":"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","file":"library-publish-53UTB3MB.js","sourcesContent":["/**\n * `skaile library publish / register / yank` — the first-party publish flow.\n * A git-backed library you own carries an in-repo `skaile.manifest.yaml`; this\n * commits + pushes the library repo (publish), or takes the current remote HEAD\n * as-is (register), then registers + syncs it as a store source and publishes\n * the manifest's assets, each under its own namespace — `assets[].publisher`,\n * else the manifest's top-level `publisher` (no namespace remap — first-party\n * authors intend their declared namespace). Every distinct namespace is\n * preflighted before the push. The plan phase (dry-run and real) also requires the\n * remote to be a GitHub url and warns about a missing LICENSE and, for `publish`,\n * untracked files that `git add -A` would make public.\n *\n * - `publish` = commit (if dirty) + push + register + sync + publish.\n * - `register` = same, but skip the commit/push (bytes already on GitHub).\n * - `yank` = unpublish the library's published assets (all, or one).\n *\n * The store REST surface is reached through the injectable {@link PublisherClient}\n * (default HTTP); git side-effects go through an injectable `spawn`. Both seams\n * keep the flow unit/integration-testable without a live store or a real remote.\n *\n * @docLink cli/commands/library\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { basename, join, relative, sep } from \"node:path\";\nimport {\n type AssetEntry,\n decodeSkaileManifest,\n loadSkPublishManifest,\n matchPin,\n type SkPublishManifest,\n} from \"@skaile/workspaces/core\";\nimport { type ParseManifestResult, parseManifestFile } from \"@skaile/workspaces/discovery\";\nimport {\n type GitBackendConfig,\n type Library,\n missingRootAssets,\n scanUnlistedAssets,\n upsertManifestAsset,\n} from \"@skaile/workspaces/library\";\nimport { logErr, logInfo, logOk, logWarn, S } from \"../helpers.ts\";\nimport { openLibraryManager } from \"../open-library.ts\";\nimport { getKindRegistry } from \"../open-registry.ts\";\nimport {\n type AssetCheckResult,\n checkAsset,\n checkAssetFile,\n declaredVersion,\n duplicateAssetMessage,\n findAssetManifestFile,\n invalidSemverText,\n readAssetBody,\n} from \"../skill-checks.ts\";\nimport { isStoreAuthenticated } from \"../store-client.ts\";\nimport { makeHttpPublisherClient, type PublisherClient } from \"../store-publisher.ts\";\nimport { exitOnManifestPublisherProblems, manifestRequiresProblems } from \"./library-index.ts\";\nimport {\n assetEntryRef,\n assetNamespace,\n bareName,\n formatNamespaceAvailability,\n manifestNamespaces,\n plannedRefs,\n preflightNamespace,\n publishToStore,\n refFor,\n} from \"./publish-core.ts\";\n\n/** Injectable spawn contract — the subset of `spawnSync` these helpers use. */\ntype SpawnLike = typeof spawnSync;\n\n/** The fixed filename a library carries at its root for publication. */\nconst MANIFEST_FILENAME = \"skaile.manifest.yaml\";\n\n/** The remote url of a git-backed library, or `undefined` for a local one. */\nfunction remoteUrlOf(lib: Library): string | undefined {\n if (lib.backend !== \"git\") return undefined;\n return (lib.backendConfig as GitBackendConfig).url;\n}\n\n/** The publish branch of a git-backed library (defaults to `main`). */\nfunction branchOf(lib: Library): string {\n if (lib.backend !== \"git\") return \"main\";\n return (lib.backendConfig as GitBackendConfig).branch ?? \"main\";\n}\n\n/**\n * Read + decode the in-repo `skaile.manifest.yaml`. Prints each error\n * diagnostic and exits (1) — mirroring the sidecar flow's validation gate.\n */\nfunction loadManifest(libPath: string): SkPublishManifest {\n let text: string;\n try {\n text = readFileSync(join(libPath, MANIFEST_FILENAME), \"utf-8\");\n } catch {\n logErr(\n `No ${S.dim(MANIFEST_FILENAME)} in the library — author it (see \\`skaile library create\\`) ` +\n \"and run `skaile validate` before publishing.\",\n );\n process.exit(1);\n }\n const { manifest, diagnostics } = decodeSkaileManifest(text);\n const errors = diagnostics.filter((d) => d.severity === \"error\");\n if (errors.length > 0) {\n for (const d of errors) logErr(`${d.code}: ${d.message}`);\n logErr(\"The manifest has errors — fix them with `skaile validate` before publishing.\");\n process.exit(1);\n }\n return manifest;\n}\n\n/** Run a git command in `cwd` via the injected spawn; returns the result. */\nfunction runGit(spawn: SpawnLike, cwd: string, args: string[]) {\n return spawn(\"git\", [\"-C\", cwd, ...args], { encoding: \"utf-8\" });\n}\n\n/**\n * Refuse (exit 1) a `--ref` that is not a valid git ref name, or that names no branch, tag\n * or commit of the library repo (local, or fetched from `origin`). A library directory that\n * is not a git repo yet has nothing to check against and passes: `publish` creates the repo.\n *\n * The ref is sent to the store as a plain string and the store ingests the GitHub repo at that\n * name, so only what GitHub resolves by name is accepted: a branch, a tag or a commit id. A\n * revision expression (`HEAD~1`, `v1.0^{}`) resolves locally but not in the store, so it is\n * refused here rather than published under a ref the store cannot read.\n */\nfunction exitOnUnknownRef(libPath: string, libName: string, ref: string, spawn: SpawnLike): void {\n const wellFormed =\n !ref.startsWith(\"-\") &&\n spawn(\"git\", [\"check-ref-format\", \"--allow-onelevel\", ref], { encoding: \"utf-8\" }).status === 0;\n if (!wellFormed) {\n logErr(\n `--ref \"${ref}\" is not a valid git ref name; pass a branch or tag name or a commit id ` +\n \"(revision expressions like HEAD~1 are not accepted).\",\n );\n process.exit(1);\n }\n if (runGit(spawn, libPath, [\"rev-parse\", \"--git-dir\"]).status !== 0) return;\n const exists = [ref, `refs/remotes/origin/${ref}`].some(\n (candidate) =>\n runGit(spawn, libPath, [\"rev-parse\", \"--verify\", \"--quiet\", `${candidate}^{commit}`])\n .status === 0,\n );\n if (!exists) {\n logErr(\n `--ref \"${ref}\" is not a branch, tag or commit of library \"${libName}\"; ` +\n `fetch it first (\\`skaile library pull ${libName}\\`) if it only exists on the remote.`,\n );\n process.exit(1);\n }\n}\n\n/**\n * Ensure `libPath` is a git repo whose `origin` points at `remoteUrl`, then\n * commit any changes and push to `branch`. Idempotent re-publish: an unchanged\n * tree makes `git commit` fail with \"nothing to commit\" — swallowed. Push (or\n * any other git) failures surface as thrown Errors carrying git's stderr.\n */\nfunction commitAndPush(opts: {\n libPath: string;\n remoteUrl: string;\n branch: string;\n spawn: SpawnLike;\n}): void {\n const { libPath, remoteUrl, branch, spawn } = opts;\n\n const gitDir = runGit(spawn, libPath, [\"rev-parse\", \"--git-dir\"]);\n if (gitDir.status !== 0) {\n const init = runGit(spawn, libPath, [\"init\"]);\n if (init.status !== 0) {\n throw new Error(\n `git init failed: ${(init.stderr ?? \"\").toString().trim() || `exit ${init.status}`}`,\n );\n }\n }\n\n // Point origin at the resolved remote (add if absent, else set-url).\n const getUrl = runGit(spawn, libPath, [\"remote\", \"get-url\", \"origin\"]);\n const originArgs =\n getUrl.status === 0\n ? [\"remote\", \"set-url\", \"origin\", remoteUrl]\n : [\"remote\", \"add\", \"origin\", remoteUrl];\n const setOrigin = runGit(spawn, libPath, originArgs);\n if (setOrigin.status !== 0) {\n throw new Error(\n `git remote failed: ${(setOrigin.stderr ?? \"\").toString().trim() || `exit ${setOrigin.status}`}`,\n );\n }\n\n const add = runGit(spawn, libPath, [\"add\", \"-A\"]);\n if (add.status !== 0) {\n throw new Error(\n `git add failed: ${(add.stderr ?? \"\").toString().trim() || `exit ${add.status}`}`,\n );\n }\n\n // Fixed bot identity via -c so the commit succeeds regardless of the author's\n // git config (the publish commit is a machine action).\n const commit = spawn(\n \"git\",\n [\n \"-C\",\n libPath,\n \"-c\",\n \"user.email=publish@skaile.store\",\n \"-c\",\n \"user.name=skaile\",\n \"commit\",\n \"-m\",\n \"chore: publish\",\n ],\n { encoding: \"utf-8\" },\n );\n if (commit.status !== 0) {\n const out = `${commit.stdout ?? \"\"}${commit.stderr ?? \"\"}`;\n if (!/nothing to commit/i.test(out)) {\n throw new Error(`git commit failed: ${out.trim() || `exit ${commit.status}`}`);\n }\n }\n\n const push = runGit(spawn, libPath, [\"push\", \"origin\", `HEAD:${branch}`]);\n if (push.status !== 0) {\n throw new Error(\n `git push failed: ${(push.stderr ?? \"\").toString().trim() || `exit ${push.status}`}`,\n );\n }\n}\n\n/**\n * `true` when `url` is a GitHub repo remote the store can fetch: `https://github.com/<o>/<r>[.git]`,\n * `git@github.com:<o>/<r>[.git]` or `ssh://git@github.com/<o>/<r>[.git]`. The store is\n * pointer-only and fetches bytes from GitHub, so any other remote (a local path, a `file://`\n * url, another host) can be pushed to but never published.\n */\nexport function isGithubRemote(url: string): boolean {\n return /^(?:https:\\/\\/github\\.com\\/|git@github\\.com:|ssh:\\/\\/git@github\\.com\\/)[^/\\s]+\\/[^/\\s]+?(?:\\.git)?\\/?$/i.test(\n url.trim(),\n );\n}\n\n/** The advisory for a remote `library publish` cannot use (see {@link isGithubRemote}). */\nexport function notGithubRemoteMessage(name: string, url: string): string {\n return (\n `The remote of library \"${name}\" is not a GitHub url: ${url}. ` +\n \"The store fetches published assets from GitHub — repoint it with \" +\n `\\`skaile library set ${name} backendConfig.url=https://github.com/<owner>/<repo>\\`.`\n );\n}\n\n/** How many untracked paths the publish plan lists before collapsing to \"and N more\". */\nconst MAX_LISTED_UNTRACKED = 10;\n\n/** A first-party manifest asset resolved to its on-disk manifest file, read and parsed. */\ninterface PlanAsset {\n entry: AssetEntry;\n /** Path relative to the library root, for messages. */\n rel: string;\n parsed: ParseManifestResult;\n /** The shared per-asset checks ({@link checkAsset}); `undefined` when the file did not parse. */\n checked: AssetCheckResult | undefined;\n}\n\n/**\n * The first-party `root:` assets the plan covers, each with its manifest file read.\n * Curated entries (`source`) carry no library directory and a root with no manifest\n * file is `missingRootAssets`' concern, so both are left out.\n */\nfunction planAssets(\n libPath: string,\n manifest: SkPublishManifest,\n targetName: string | undefined,\n): PlanAsset[] {\n const out: PlanAsset[] = [];\n const registry = getKindRegistry();\n for (const entry of manifest.assets ?? []) {\n if (targetName && entry.name !== targetName) continue;\n if (!entry.root || entry.source || manifest.source) continue;\n const file = findAssetManifestFile(join(libPath, entry.root), entry.kind, entry.name);\n if (!file) continue;\n const text = readFileSync(file, \"utf-8\");\n const parsed = parseManifestFile(file, text);\n out.push({\n entry,\n rel: relative(libPath, file),\n parsed,\n checked: parsed.ok\n ? checkAsset(\n entry.kind,\n parsed.data,\n readAssetBody(file, text),\n basename(entry.root),\n registry,\n )\n : undefined,\n });\n }\n return out;\n}\n\n/**\n * The manifest with every entry's `version` replaced by the one in its asset\n * file — the version a publish ships (the file is the source of truth; the\n * entry only mirrors it after `skaile library index`).\n */\nfunction manifestWithFileVersions(\n manifest: SkPublishManifest,\n assets: PlanAsset[],\n): SkPublishManifest {\n return {\n ...manifest,\n assets: manifest.assets?.map((entry) => {\n const planned = assets.find((a) => a.entry === entry);\n const fileVersion = planned?.parsed.ok ? declaredVersion(planned.parsed.data) : undefined;\n return fileVersion === undefined ? entry : { ...entry, version: fileVersion };\n }),\n };\n}\n\n/** A manifest entry whose version differs from the one in its asset file. */\ninterface VersionDrift {\n asset: PlanAsset;\n ref: string;\n /** The version the manifest records (`assets[].version ?? version`), `undefined` when none. */\n entryVersion: string | undefined;\n fileVersion: string;\n}\n\n/**\n * The planned assets whose manifest entry does not carry the version of their asset\n * file. The store reads the manifest it finds in the pushed repo, so a publish\n * records the entry's version — {@link manifestWithFileVersions} is what the plan\n * shows, and these are the entries a real publish has to rewrite to match it.\n */\nfunction versionDrift(assets: PlanAsset[], manifest: SkPublishManifest): VersionDrift[] {\n const out: VersionDrift[] = [];\n for (const asset of assets) {\n if (!asset.parsed.ok) continue;\n const fileVersion = declaredVersion(asset.parsed.data);\n const entryVersion = asset.entry.version ?? manifest.version;\n if (fileVersion !== undefined && fileVersion !== entryVersion) {\n out.push({ asset, ref: assetEntryRef(asset.entry, manifest), entryVersion, fileVersion });\n }\n }\n return out;\n}\n\nconst describeDrift = (d: VersionDrift): string =>\n `${d.ref}: manifest version ${d.entryVersion ?? \"(none)\"} → ${d.fileVersion} (${d.asset.rel.split(sep).join(\"/\")})`;\n\n/**\n * Reasons the plan cannot publish an asset: its manifest file cannot be parsed (an\n * empty `SKILL.md`), or it fails the errors of the shared per-asset check list\n * ({@link checkAsset}: version not semver, the kind's manifest schema — the skill\n * schema refuses the scaffold `TODO:` description — and the flow definition parser),\n * or its manifest entry carries a version that is not semver. These are the cases\n * `skaile validate` fails on and `skaile library index` keeps out of the manifest;\n * a hand-edited manifest can still list one, so the plan stops rather than ships it.\n */\nfunction assetRefusals(assets: PlanAsset[], manifest: SkPublishManifest): string[] {\n const refusals: string[] = [];\n for (const { entry, rel, parsed, checked } of assets) {\n const ref = assetEntryRef(entry, manifest);\n if (!parsed.ok || !checked) {\n const reason = parsed.ok ? \"\" : parsed.reason;\n refusals.push(`${ref} (${rel}) — manifest file could not be parsed: ${reason}`);\n continue;\n }\n for (const f of checked.errors) refusals.push(`${ref} (${rel}) [${f.tag}] — ${f.text}`);\n // The file's own version is checked above; the entry's can differ from it.\n const entryInvalid = entry.version === undefined ? undefined : invalidSemverText(entry.version);\n if (entryInvalid && entry.version !== declaredVersion(parsed.data)) {\n refusals.push(`${ref} (${rel}) — ${entryInvalid}`);\n }\n }\n return refusals;\n}\n\n/**\n * Per-asset advisories for the assets the plan would publish — the advisories of the\n * shared check list `skaile validate` runs (agentskills.io conformance for skills, the\n * untouched `library create` scaffold for skill, agent, prompt, contract, flow and\n * preset), one line per asset/finding. An unparsable manifest is {@link assetRefusals}'\n * to report.\n */\nfunction assetWarnings(assets: PlanAsset[], manifest: SkPublishManifest): string[] {\n const warnings: string[] = [];\n for (const { entry, rel, parsed, checked } of assets) {\n if (!parsed.ok || !checked || Object.keys(parsed.data).length === 0) continue;\n for (const f of checked.advisories) {\n warnings.push(`${assetEntryRef(entry, manifest)} (${rel}) [${f.tag}] — ${f.text}`);\n }\n }\n return warnings;\n}\n\n/**\n * Advisory publish-plan warnings: a missing LICENSE (a public repo without one grants\n * consumers no rights), per-asset skill warnings ({@link assetWarnings}) and — for `publish`,\n * which runs `git add -A` — untracked files that would become public. Never throws; a\n * non-git directory simply yields no untracked warning.\n */\nfunction publishWarnings(\n libPath: string,\n spawn: SpawnLike,\n skipPush: boolean,\n manifest: SkPublishManifest,\n assets: PlanAsset[],\n): string[] {\n const warnings: string[] = [];\n if (!existsSync(join(libPath, \"LICENSE\")) && !existsSync(join(libPath, \"LICENSE.md\"))) {\n warnings.push(\n \"No LICENSE or LICENSE.md in the library root — a public repo without a license grants consumers no rights to use it.\",\n );\n }\n warnings.push(...assetWarnings(assets, manifest));\n if (!skipPush) {\n const status = runGit(spawn, libPath, [\"status\", \"--porcelain\", \"--untracked-files=all\"]);\n if (status.status === 0) {\n const untracked = (status.stdout ?? \"\")\n .toString()\n .split(\"\\n\")\n .filter((l) => l.startsWith(\"?? \"))\n .map((l) => l.slice(3));\n if (untracked.length > 0) {\n const shown = untracked.slice(0, MAX_LISTED_UNTRACKED).join(\", \");\n const more =\n untracked.length > MAX_LISTED_UNTRACKED\n ? ` and ${untracked.length - MAX_LISTED_UNTRACKED} more`\n : \"\";\n warnings.push(\n `${untracked.length} untracked file(s) will be committed by \\`git add -A\\` and published: ${shown}${more}.`,\n );\n }\n }\n }\n return warnings;\n}\n\n/**\n * The store only registers PUBLIC repos (the backend rejects a private one with \"must be\n * public\"), so a repo provisioned with `--private` can be created and linked but not published.\n */\nconst PRIVATE_REPO_WARNING =\n \"--private: the store only accepts PUBLIC repos — registering a private repo is rejected. \" +\n \"The repo will be created private, but publishing it will fail; share it directly \" +\n \"(`skaile source add <url>` with the consumer's own git credentials) instead.\";\n\n/**\n * Provision a GitHub repo `github.com/<you>/<name>` via `gh` (public unless `isPrivate`) and\n * return its https url. Parses the url `gh` prints on success. Throws on failure.\n */\nfunction createRepoViaGh(name: string, spawn: SpawnLike, isPrivate: boolean): string {\n const res = spawn(\"gh\", [\"repo\", \"create\", name, isPrivate ? \"--private\" : \"--public\"], {\n encoding: \"utf-8\",\n });\n if (res.status !== 0) {\n const stderr = (res.stderr ?? \"\").toString().trim();\n throw new Error(`gh repo create ${name} failed: ${stderr || `exit ${res.status}`}`);\n }\n // `gh repo create` prints the repo url (e.g. `https://github.com/<owner>/<name>`);\n // scan combined output for the first github.com url so we capture whatever\n // owner gh resolved (the authed user).\n const out = `${res.stdout ?? \"\"}\\n${res.stderr ?? \"\"}`;\n const match = out.match(/https:\\/\\/github\\.com\\/[^\\s]+/);\n if (!match) {\n throw new Error(`gh repo create ${name} succeeded but printed no repo url:\\n${out.trim()}`);\n }\n return match[0].replace(/\\.git$/, \"\").trim();\n}\n\n/** `--asset <ref>` split into its parts: `[kind:][@publisher/]name[#pin]`. */\ninterface AssetSelection {\n kind?: string;\n publisher?: string;\n name: string;\n pin?: string;\n}\n\nfunction parseAssetSelection(ref: string): AssetSelection {\n const [head, ...pinParts] = ref.trim().split(\"#\");\n const pin = pinParts.join(\"#\") || undefined;\n const colon = head.indexOf(\":\");\n const kind = colon > 0 ? head.slice(0, colon) : undefined;\n const rest = colon > 0 ? head.slice(colon + 1) : head;\n const scoped = rest.startsWith(\"@\") ? rest.indexOf(\"/\") : -1;\n const publisher = scoped > 0 ? rest.slice(1, scoped) : undefined;\n const name = scoped > 0 ? rest.slice(scoped + 1) : rest;\n return { kind, publisher, name, pin };\n}\n\n/** The manifest entries `--asset` selects: same name, and kind / publisher when the ref names them. */\nfunction selectedEntries(manifest: SkPublishManifest, sel: AssetSelection): AssetEntry[] {\n return (manifest.assets ?? []).filter(\n (a) =>\n a.name === sel.name &&\n (!sel.kind || a.kind === sel.kind) &&\n (!sel.publisher || assetNamespace(a, manifest) === sel.publisher),\n );\n}\n\n/**\n * What the plan says about asset directories the manifest does not list - the ones\n * `skaile library index` would add or skip. A directory holding a kind + name the manifest\n * already names elsewhere is refused (index skips it and exits 1); a new asset the shared\n * checks reject is refused with the same finding text `validate` prints; a valid new asset\n * is only a warning, since the plan would not ship it.\n */\nasync function unlistedAssetProblems(\n libPath: string,\n manifest: SkPublishManifest,\n libName: string,\n targetName: string | undefined,\n): Promise<{ refusals: string[]; warnings: string[] }> {\n const refusals: string[] = [];\n const warnings: string[] = [];\n const registry = getKindRegistry();\n const unlisted = await scanUnlistedAssets(libPath, manifest.publisher ?? libName, registry);\n for (const u of unlisted) {\n if (targetName && u.entry.name !== targetName) continue;\n const rel = relative(libPath, u.entry.source);\n if (u.registeredAt) {\n refusals.push(\n duplicateAssetMessage(\n u.entry.kind,\n u.entry.name,\n u.root,\n `already registered at \"${u.registeredAt}\"`,\n libName,\n ),\n );\n continue;\n }\n const errors = checkAssetFile(u.entry.source, u.entry.kind, registry);\n for (const f of errors)\n refusals.push(`${u.entry.kind}:${u.entry.name} (${rel}) [${f.tag}] — ${f.text}`);\n if (errors.length === 0) {\n warnings.push(\n `${u.entry.kind}:${u.entry.name} (${rel}) is on disk but not in the manifest, so it is not published; run \\`skaile library index ${libName}\\`.`,\n );\n }\n }\n return { refusals, warnings };\n}\n\n/** Shared publish body for `publish` (pushes) and `register` (skips the push). */\nasync function publishLibrary(\n name: string,\n opts: {\n asset?: string;\n createRepo?: boolean;\n private?: boolean;\n ref?: string;\n dryRun?: boolean;\n skipPush: boolean;\n },\n client?: PublisherClient,\n spawn: SpawnLike = spawnSync,\n): Promise<void> {\n const injected = client !== undefined;\n const { manager, close } = await openLibraryManager();\n try {\n const lib = await manager.requireLibraryDir(name);\n const manifest = loadManifest(lib.path);\n\n // A publisher that is not a valid slug would publish refs `add` cannot parse: refuse\n // (dry-run included) with the text `library index` and `validate` print.\n exitOnManifestPublisherProblems(lib.path, name);\n\n // A manifest entry whose directory is gone would publish a catalog entry\n // that points at nothing — refuse (dry-run included) rather than plan it.\n const missing = missingRootAssets(lib.path, manifest);\n if (missing.length > 0) {\n for (const a of missing) {\n logErr(`${assetEntryRef(a, manifest)} — root \"${a.root}\" does not exist in the library.`);\n }\n logErr(\n \"The manifest lists assets that are no longer on disk. Run \" +\n `\\`skaile library index ${name}\\` to drop them from the manifest, then re-run.`,\n );\n process.exit(1);\n }\n\n // `--asset` must select something: a plan of 0 assets that exits 0 reads as a publish.\n const selection = opts.asset ? parseAssetSelection(opts.asset) : undefined;\n if (opts.asset && selection && selectedEntries(manifest, selection).length === 0) {\n const listed = (manifest.assets ?? []).map((a) => assetEntryRef(a, manifest));\n logErr(\n `No asset matches \"${opts.asset}\" in library \"${name}\"` +\n (listed.length > 0\n ? ` (the manifest lists: ${listed.join(\", \")}).`\n : \" (the manifest lists no assets).\"),\n );\n process.exit(1);\n }\n\n // `--ref` must name a ref the library repo has: a plan for `source ref: nosuchref` reads as a\n // publish of it.\n if (opts.ref !== undefined) exitOnUnknownRef(lib.path, name, opts.ref, spawn);\n\n // Resolve the remote: git-backed → its url; local + --create-repo → provision\n // and link; else stop with a hint.\n let remoteUrl = remoteUrlOf(lib);\n let wouldCreateRepo = false;\n if (opts.private && !opts.createRepo) {\n logErr(\n \"--private only applies together with --create-repo (it sets the new repo's visibility).\",\n );\n process.exit(1);\n }\n const visibility = opts.private ? \"private\" : \"public\";\n if (!remoteUrl) {\n if (opts.createRepo) {\n if (opts.private) logWarn(PRIVATE_REPO_WARNING);\n if (opts.dryRun) {\n // A dry-run must not provision anything — defer the real\n // `gh repo create` to the live run and just show the would-be remote.\n wouldCreateRepo = true;\n remoteUrl = `https://github.com/<your-account>/${lib.name}`;\n } else {\n remoteUrl = createRepoViaGh(lib.name, spawn, opts.private === true);\n await manager.updateLibrary(name, {\n backend: \"git\",\n backendConfig: { url: remoteUrl, branch: \"main\", authHint: \"ssh\" },\n });\n logOk(`Created + linked ${S.dim(remoteUrl)} (${visibility}).`);\n }\n } else {\n logErr(\n `Library \"${name}\" has no remote — run ${S.cmd(`skaile library link ${name} <url>`)} ` +\n \"first, or pass `--create-repo` to provision a public repo.\",\n );\n process.exit(1);\n }\n } else if (!isGithubRemote(remoteUrl)) {\n // Plan-phase gate (dry-run and real): the store fetches from GitHub, so a\n // local-path / other-host remote can never be published. A remote here means\n // the library is already git-backed, where `library link` refuses.\n logErr(notGithubRemoteMessage(name, remoteUrl));\n process.exit(1);\n }\n\n // Each asset publishes under `assets[].publisher ?? manifest.publisher`\n // (first-party — no remap), so one library can span several namespaces.\n const targetName = opts.asset ? bareName(opts.asset) : undefined;\n const namespaces = manifestNamespaces(manifest, targetName);\n\n // An asset whose manifest file cannot be parsed or carries a non-semver version\n // must not be planned (dry-run included): it would publish as a broken entry.\n const assets = planAssets(lib.path, manifest, targetName);\n const wouldBeRefs = plannedRefs(manifestWithFileVersions(manifest, assets), targetName);\n const unlisted = await unlistedAssetProblems(lib.path, manifest, name, targetName);\n // A manifest `dependencies:` entry `validate` and `index` reject would ship as an unresolvable ref.\n const requiresRefusals = manifestRequiresProblems(lib.path)\n .filter((p) => !targetName || p.asset.endsWith(`:${targetName}`))\n .map(\n (p) =>\n `${MANIFEST_FILENAME} [assets] — ${p.asset}: ${p.message}. ` +\n \"Use the `kind:@<publisher>/name[#version]` form.\",\n );\n const refusals = [\n ...assetRefusals(assets, manifest),\n ...requiresRefusals,\n ...unlisted.refusals,\n ];\n if (selection?.pin !== undefined) {\n const held = selectedEntries(manifest, selection).map((e) => {\n const planned = assets.find((a) => a.entry === e);\n const fileVersion = planned?.parsed.ok ? declaredVersion(planned.parsed.data) : undefined;\n return fileVersion ?? e.version ?? manifest.version;\n });\n if (!held.some((v) => v !== undefined && matchPin(selection.pin, v))) {\n logErr(\n `${opts.asset}: the library holds ${held.filter((v) => v).join(\", \") || \"no version\"} of this asset, not #${selection.pin}. ` +\n \"A publish ships the version in the asset file; drop the pin or change the file version.\",\n );\n process.exit(1);\n }\n }\n if (refusals.length > 0) {\n for (const r of refusals) logErr(r);\n logErr(\n \"These assets cannot be published. Fix them (see `skaile validate`), then run \" +\n `\\`skaile library index ${name}\\` and re-run.`,\n );\n process.exit(1);\n }\n\n // The store records the version of the manifest it finds in the pushed repo, so\n // the plan (file versions) and the publish only agree when the entries match the\n // files. `publish` rewrites them before it commits; `register` pushes nothing,\n // so it cannot, and stops instead.\n const drift = versionDrift(assets, manifest);\n if (drift.length > 0 && opts.skipPush) {\n for (const d of drift) logErr(describeDrift(d));\n logErr(\n \"register publishes the remote HEAD as-is, so these manifest versions would be recorded \" +\n `instead of the file versions. Run \\`skaile library index ${name}\\`, commit and push, then re-run.`,\n );\n process.exit(1);\n }\n\n const sourceRef = opts.ref ?? branchOf(lib);\n const warnings = [\n ...publishWarnings(lib.path, spawn, opts.skipPush, manifest, assets),\n ...unlisted.warnings,\n ];\n\n if (opts.dryRun) {\n logInfo(`Publish plan for ${S.bold(name)}:`);\n logInfo(\n ` remote: ${remoteUrl}${wouldCreateRepo ? ` (would be created ${visibility} via \\`gh repo create --${visibility}\\`)` : \"\"}`,\n );\n logInfo(\n ` publisher: ${namespaces.length > 0 ? namespaces.join(\", \") : \"<manifest publisher>\"}`,\n );\n // Best-effort namespace-availability probe — a read-only GET, only when\n // signed in (or a client is injected). A failure keeps dry-run offline-safe.\n const canCheck = injected || isStoreAuthenticated();\n if (!canCheck) {\n // The real run stops at \"Not signed in\" before any namespace check.\n logWarn(\"namespace check skipped: not signed in (run `skaile store login`)\");\n } else if (namespaces.length > 0) {\n for (const ns of namespaces) {\n try {\n const avail = await (client ?? makeHttpPublisherClient()).namespaceAvailability(ns);\n const prefix = namespaces.length > 1 ? `@${ns} — ` : \"\";\n logInfo(` namespace: ${prefix}${formatNamespaceAvailability(avail)}`);\n } catch {\n // Store unreachable / not signed in — skip the advisory, never fail.\n }\n }\n }\n logInfo(` source ref: ${sourceRef}`);\n logInfo(` would publish ${wouldBeRefs.length} asset(s):`);\n for (const r of wouldBeRefs) logInfo(` ${r}`);\n for (const d of drift) logInfo(` would update the manifest: ${describeDrift(d)}`);\n for (const w of warnings) logWarn(w);\n return;\n }\n\n // Real run: surface the same advisories before anything is pushed.\n for (const w of warnings) logWarn(w);\n\n // A real publish makes store calls, so it needs a token (injected fakes bypass).\n if (!injected && !isStoreAuthenticated()) {\n logErr(\"Not signed in — run `skaile store login` first.\");\n process.exit(1);\n }\n\n const pub = client ?? makeHttpPublisherClient();\n\n // Preflight EVERY distinct namespace BEFORE the public git push, so a\n // reserved/unclaimed one fails fast with guidance instead of after publishing bytes.\n for (const ns of namespaces) {\n const gate = await preflightNamespace(pub, ns);\n if (!gate.ok) {\n logErr(gate.message ?? `Cannot publish under @${ns}.`);\n process.exit(1);\n }\n }\n\n // Bring the entries to the file versions the plan showed, before they are committed.\n for (const d of drift) {\n upsertManifestAsset(lib.path, {\n kind: d.asset.entry.kind,\n name: d.asset.entry.name,\n root: d.asset.entry.root ?? \"\",\n version: d.fileVersion,\n });\n logInfo(`Updated the manifest: ${describeDrift(d)}`);\n }\n\n // publish commits + pushes the library repo; register takes the remote HEAD as-is.\n if (!opts.skipPush) {\n // `git add -A` stages every non-ignored file → a PUBLIC push. Surface it so\n // an unexpected file in the working tree is not silently published.\n logInfo(\n `Committing the library and pushing to the PUBLIC remote ${S.dim(remoteUrl)} ` +\n \"(.gitignore honored; anything else in the working tree becomes public).\",\n );\n commitAndPush({ libPath: lib.path, remoteUrl, branch: branchOf(lib), spawn });\n logOk(`Pushed ${S.dim(name)} to ${S.dim(remoteUrl)}.`);\n }\n\n const { published } = await publishToStore({\n sourceUrl: remoteUrl,\n ref: sourceRef,\n manifest: manifestWithFileVersions(manifest, assets),\n assetName: targetName,\n client: pub,\n });\n\n if (published.length > 0) {\n logInfo(`Consumers can now \\`skaile add ${published[0]}\\`.`);\n }\n } finally {\n close();\n }\n}\n\n/**\n * `skaile library publish <lib>` — commit + push the library repo, register +\n * sync it as a store source, and publish its manifest's assets under the\n * manifest publisher. See the module header for the full flow.\n */\nexport async function runLibraryPublish(\n name: string,\n opts: {\n asset?: string;\n createRepo?: boolean;\n private?: boolean;\n ref?: string;\n dryRun?: boolean;\n },\n client?: PublisherClient,\n spawn: SpawnLike = spawnSync,\n): Promise<void> {\n await publishLibrary(name, { ...opts, skipPush: false }, client, spawn);\n}\n\n/**\n * `skaile library register <lib>` — same as publish but skips the commit/push\n * (the bytes are already on GitHub at the current remote HEAD). Still requires a\n * git-backed remote.\n */\nexport async function runLibraryRegister(\n name: string,\n opts: { asset?: string; ref?: string; dryRun?: boolean },\n client?: PublisherClient,\n spawn: SpawnLike = spawnSync,\n): Promise<void> {\n await publishLibrary(name, { ...opts, skipPush: true }, client, spawn);\n}\n\n/**\n * `skaile library yank <lib>` — unpublish the library's published assets from\n * the store (all, or the single asset matching `opts.asset`'s name).\n * Auth-gated like publish.\n */\nexport async function runLibraryYank(\n name: string,\n opts: { asset?: string },\n client?: PublisherClient,\n): Promise<void> {\n const injected = client !== undefined;\n const { manager, close } = await openLibraryManager();\n try {\n const lib = await manager.requireLibrary(name);\n const remoteUrl = remoteUrlOf(lib);\n if (!remoteUrl) {\n logErr(`Library \"${name}\" has no remote — nothing published to yank.`);\n process.exit(1);\n }\n\n if (!injected && !isStoreAuthenticated()) {\n logErr(\"Not signed in — run `skaile store login` first.\");\n process.exit(1);\n }\n\n const pub = client ?? makeHttpPublisherClient();\n const rows = await pub.sourcesList();\n const source = rows.find((r) => r.url === remoteUrl);\n if (!source) {\n logErr(`Library \"${name}\" is not registered in the store — nothing to yank.`);\n process.exit(1);\n }\n\n const targetName = opts.asset ? bareName(opts.asset) : undefined;\n const candidates = (await pub.sourceCandidates(source.id)).filter(\n (c) => c.published && (!targetName || c.name === targetName),\n );\n if (candidates.length === 0) {\n logInfo(\"No published assets matched — nothing to yank.\");\n return;\n }\n\n // Report each yanked asset under its own namespace\n // (`assets[].publisher ?? manifest.publisher`); fall back to `kind:name`\n // when the manifest is absent or declares no namespace for it.\n const manifest = loadSkPublishManifest(lib.path);\n const yanked: string[] = [];\n for (const c of candidates) {\n try {\n await pub.assetUnpublish(c.id);\n const entry = manifest?.assets?.find((a) => a.kind === c.kind && a.name === c.name);\n const ns = manifest && entry ? assetNamespace(entry, manifest) : undefined;\n yanked.push(ns ? refFor(c.kind, ns, c.name, c.version) : `${c.kind}:${c.name}`);\n } catch (err) {\n logErr(\n `Failed to yank ${c.kind}:${c.name}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n logOk(`Yanked ${yanked.length} asset(s):`);\n for (const r of yanked) logInfo(` ${r}`);\n } finally {\n close();\n }\n}\n"]}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export { LocalCatalogDisabledError, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource } from './chunk-PQFHMQHQ.js';
|
|
2
|
-
import './chunk-GV4DZ6MT.js';
|
|
3
|
-
import './chunk-CAHB6MHA.js';
|
|
4
|
-
import './chunk-TCHRMVTO.js';
|
|
5
|
-
import './chunk-D3B36CYC.js';
|
|
6
|
-
import './chunk-7RGTAEG6.js';
|
|
7
|
-
import './chunk-NUELZWCF.js';
|
|
8
|
-
import './chunk-DZMNFCWB.js';
|
|
9
|
-
import './chunk-2F5AWQX5.js';
|
|
10
|
-
import './chunk-J4RBUFGM.js';
|
|
11
|
-
import './chunk-COH6FQAG.js';
|
|
12
|
-
import './chunk-R7FOF242.js';
|
|
13
|
-
import './chunk-3TXEJN4W.js';
|
|
14
|
-
import './chunk-FH7W6TJ4.js';
|
|
15
|
-
import './chunk-CGYEHQOX.js';
|
|
16
|
-
import './chunk-KTBKW2FI.js';
|
|
17
|
-
import './chunk-UQ6LFBPZ.js';
|
|
18
|
-
import './chunk-HZXUXHIV.js';
|
|
19
|
-
import './chunk-ZCAJZ4B2.js';
|
|
20
|
-
import './chunk-PBBPZYVG.js';
|
|
21
|
-
import './chunk-4GY63JU6.js';
|
|
22
|
-
import './chunk-EDYHEMJA.js';
|
|
23
|
-
import './chunk-PMECEZK3.js';
|
|
24
|
-
import './chunk-5BEFNLOR.js';
|
|
25
|
-
import './chunk-A2ULN3KX.js';
|
|
26
|
-
import './chunk-ALEYHUC5.js';
|
|
27
|
-
import './chunk-L5VSIPQD.js';
|
|
28
|
-
import './chunk-CPSIPIX7.js';
|
|
29
|
-
import './chunk-ZPWTOUTK.js';
|
|
30
|
-
import './chunk-RVRB27AN.js';
|
|
31
|
-
import './chunk-SBSA3IQA.js';
|
|
32
|
-
import './chunk-BNMZVPYA.js';
|
|
33
|
-
import './chunk-ICSCSM5D.js';
|
|
34
|
-
import './chunk-DALV4HHP.js';
|
|
35
|
-
import './chunk-MJHSLODD.js';
|
|
36
|
-
import './chunk-C3CAXQMA.js';
|
|
37
|
-
import './chunk-BOFL7GIF.js';
|
|
38
|
-
import './chunk-NSBPE2FW.js';
|
|
39
|
-
//# sourceMappingURL=open-library-BOSPJVID.js.map
|
|
40
|
-
//# sourceMappingURL=open-library-BOSPJVID.js.map
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export { getKindRegistry, getKnownKinds } from './chunk-CAHB6MHA.js';
|
|
2
|
-
import './chunk-TCHRMVTO.js';
|
|
3
|
-
import './chunk-D3B36CYC.js';
|
|
4
|
-
import './chunk-7RGTAEG6.js';
|
|
5
|
-
import './chunk-NUELZWCF.js';
|
|
6
|
-
import './chunk-2F5AWQX5.js';
|
|
7
|
-
import './chunk-J4RBUFGM.js';
|
|
8
|
-
import './chunk-COH6FQAG.js';
|
|
9
|
-
import './chunk-R7FOF242.js';
|
|
10
|
-
import './chunk-3TXEJN4W.js';
|
|
11
|
-
import './chunk-ZCAJZ4B2.js';
|
|
12
|
-
import './chunk-PBBPZYVG.js';
|
|
13
|
-
import './chunk-4GY63JU6.js';
|
|
14
|
-
import './chunk-EDYHEMJA.js';
|
|
15
|
-
import './chunk-PMECEZK3.js';
|
|
16
|
-
import './chunk-5BEFNLOR.js';
|
|
17
|
-
import './chunk-A2ULN3KX.js';
|
|
18
|
-
import './chunk-ALEYHUC5.js';
|
|
19
|
-
import './chunk-L5VSIPQD.js';
|
|
20
|
-
import './chunk-CPSIPIX7.js';
|
|
21
|
-
import './chunk-ZPWTOUTK.js';
|
|
22
|
-
import './chunk-RVRB27AN.js';
|
|
23
|
-
import './chunk-SBSA3IQA.js';
|
|
24
|
-
import './chunk-BNMZVPYA.js';
|
|
25
|
-
import './chunk-ICSCSM5D.js';
|
|
26
|
-
import './chunk-DALV4HHP.js';
|
|
27
|
-
import './chunk-MJHSLODD.js';
|
|
28
|
-
import './chunk-C3CAXQMA.js';
|
|
29
|
-
import './chunk-BOFL7GIF.js';
|
|
30
|
-
import './chunk-NSBPE2FW.js';
|
|
31
|
-
//# sourceMappingURL=open-registry-4FI7HKET.js.map
|
|
32
|
-
//# sourceMappingURL=open-registry-4FI7HKET.js.map
|
package/dist/paths-SUS4S4YT.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export { AI_RESOURCES, MONOREPO_ROOT } from './chunk-S3O3GKB7.js';
|
|
2
|
-
export { aiResourceRoots } from './chunk-PBBPZYVG.js';
|
|
3
|
-
import './chunk-4GY63JU6.js';
|
|
4
|
-
import './chunk-EDYHEMJA.js';
|
|
5
|
-
import './chunk-PMECEZK3.js';
|
|
6
|
-
import './chunk-5BEFNLOR.js';
|
|
7
|
-
import './chunk-A2ULN3KX.js';
|
|
8
|
-
import './chunk-ALEYHUC5.js';
|
|
9
|
-
import './chunk-L5VSIPQD.js';
|
|
10
|
-
import './chunk-CPSIPIX7.js';
|
|
11
|
-
import './chunk-ZPWTOUTK.js';
|
|
12
|
-
import './chunk-RVRB27AN.js';
|
|
13
|
-
import './chunk-SBSA3IQA.js';
|
|
14
|
-
import './chunk-BNMZVPYA.js';
|
|
15
|
-
import './chunk-ICSCSM5D.js';
|
|
16
|
-
import './chunk-DALV4HHP.js';
|
|
17
|
-
import './chunk-MJHSLODD.js';
|
|
18
|
-
import './chunk-C3CAXQMA.js';
|
|
19
|
-
import './chunk-BOFL7GIF.js';
|
|
20
|
-
import './chunk-NSBPE2FW.js';
|
|
21
|
-
//# sourceMappingURL=paths-SUS4S4YT.js.map
|
|
22
|
-
//# sourceMappingURL=paths-SUS4S4YT.js.map
|