@skaile/workspaces 5.9.0 → 5.11.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 +145 -0
- package/README.md +12 -0
- package/dist/{asset-feeds-XMKKUUK6.js → asset-feeds-CXGQIDFR.js} +19 -19
- package/dist/{asset-feeds-XMKKUUK6.js.map → asset-feeds-CXGQIDFR.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +8 -8
- package/dist/asset-manager/index.js +14 -14
- package/dist/asset-manager/installer.js +10 -10
- package/dist/asset-manager/renderers.js +9 -9
- package/dist/asset-manager/src/index.d.ts +400 -35
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +3 -1
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/install-instances.d.ts +31 -1
- package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +43 -3
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts +4 -5
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +11 -11
- package/dist/bridge/drivers/codex.js +11 -11
- package/dist/bridge/drivers/continue.js +10 -10
- package/dist/bridge/drivers/echo.js +2 -2
- package/dist/bridge/drivers/gemini.js +7 -7
- package/dist/bridge/drivers/goose.js +10 -10
- package/dist/bridge/drivers/omp.js +19 -3
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +10 -10
- package/dist/bridge/drivers/qwen.js +7 -7
- package/dist/bridge/index.js +12 -12
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/{chunk-4MQS7CAF.js → chunk-2F5AWQX5.js} +437 -175
- package/dist/chunk-2F5AWQX5.js.map +1 -0
- package/dist/{chunk-UM7RIAHO.js → chunk-3SM2DL2T.js} +8 -8
- package/dist/{chunk-UM7RIAHO.js.map → chunk-3SM2DL2T.js.map} +1 -1
- package/dist/{chunk-5NNNV76P.js → chunk-47U4GZ4M.js} +2 -2
- package/dist/{chunk-5NNNV76P.js.map → chunk-47U4GZ4M.js.map} +1 -1
- package/dist/{chunk-TTRYE6AC.js → chunk-4A4OD24G.js} +9 -9
- package/dist/{chunk-TTRYE6AC.js.map → chunk-4A4OD24G.js.map} +1 -1
- package/dist/{chunk-ZTBAYUDY.js → chunk-6O2X3GPW.js} +2 -2
- package/dist/{chunk-ZTBAYUDY.js.map → chunk-6O2X3GPW.js.map} +1 -1
- package/dist/{chunk-JAKOMFC6.js → chunk-ALEYHUC5.js} +114 -46
- package/dist/chunk-ALEYHUC5.js.map +1 -0
- package/dist/{chunk-QVNRCDTV.js → chunk-BNMZVPYA.js} +7 -7
- package/dist/chunk-BNMZVPYA.js.map +1 -0
- package/dist/{chunk-2FRUUDZY.js → chunk-CAHB6MHA.js} +5 -5
- package/dist/{chunk-2FRUUDZY.js.map → chunk-CAHB6MHA.js.map} +1 -1
- package/dist/{chunk-GKMZ6THE.js → chunk-CJERAGFY.js} +44 -33
- package/dist/chunk-CJERAGFY.js.map +1 -0
- package/dist/{chunk-CKQEIY43.js → chunk-COH6FQAG.js} +4 -4
- package/dist/{chunk-CKQEIY43.js.map → chunk-COH6FQAG.js.map} +1 -1
- package/dist/{chunk-UO7WPLDY.js → chunk-CPWLNZGJ.js} +3 -3
- package/dist/{chunk-UO7WPLDY.js.map → chunk-CPWLNZGJ.js.map} +1 -1
- package/dist/{chunk-MGGFBZWA.js → chunk-D3B36CYC.js} +4 -3
- package/dist/chunk-D3B36CYC.js.map +1 -0
- package/dist/{chunk-UMVKJM4Q.js → chunk-DALV4HHP.js} +18 -3
- package/dist/chunk-DALV4HHP.js.map +1 -0
- package/dist/{chunk-IMKSM5NL.js → chunk-DZMNFCWB.js} +1447 -199
- package/dist/chunk-DZMNFCWB.js.map +1 -0
- package/dist/{chunk-GB7WDMH2.js → chunk-EDYHEMJA.js} +4 -4
- package/dist/{chunk-GB7WDMH2.js.map → chunk-EDYHEMJA.js.map} +1 -1
- package/dist/{chunk-YSHVQGUS.js → chunk-FH7W6TJ4.js} +164 -41
- package/dist/chunk-FH7W6TJ4.js.map +1 -0
- package/dist/{chunk-W5DWWE4Y.js → chunk-G4FFOV3N.js} +4 -4
- package/dist/{chunk-W5DWWE4Y.js.map → chunk-G4FFOV3N.js.map} +1 -1
- package/dist/{chunk-2LWYNQK7.js → chunk-GCHPUTA3.js} +3 -3
- package/dist/{chunk-2LWYNQK7.js.map → chunk-GCHPUTA3.js.map} +1 -1
- package/dist/{chunk-JZ5EHBPI.js → chunk-GV4DZ6MT.js} +20 -4
- package/dist/chunk-GV4DZ6MT.js.map +1 -0
- package/dist/{chunk-S53LOR7B.js → chunk-HCEVNYSH.js} +3 -3
- package/dist/{chunk-S53LOR7B.js.map → chunk-HCEVNYSH.js.map} +1 -1
- package/dist/{chunk-EF7NPDDU.js → chunk-HZXUXHIV.js} +31 -17
- package/dist/chunk-HZXUXHIV.js.map +1 -0
- package/dist/{chunk-IR33D6EP.js → chunk-IER3KIPH.js} +5 -5
- package/dist/{chunk-IR33D6EP.js.map → chunk-IER3KIPH.js.map} +1 -1
- package/dist/{chunk-Y7QA2OLD.js → chunk-J4RBUFGM.js} +22 -20
- package/dist/chunk-J4RBUFGM.js.map +1 -0
- package/dist/{chunk-J7U3PIOE.js → chunk-M3B6EIJD.js} +4 -4
- package/dist/{chunk-J7U3PIOE.js.map → chunk-M3B6EIJD.js.map} +1 -1
- package/dist/{chunk-DNZYOKOJ.js → chunk-MZG34MBZ.js} +3 -3
- package/dist/{chunk-DNZYOKOJ.js.map → chunk-MZG34MBZ.js.map} +1 -1
- package/dist/{chunk-V2DXZYBB.js → chunk-NWDSLXOX.js} +3 -3
- package/dist/{chunk-V2DXZYBB.js.map → chunk-NWDSLXOX.js.map} +1 -1
- package/dist/{chunk-36AFURKZ.js → chunk-PBBPZYVG.js} +61 -12
- package/dist/chunk-PBBPZYVG.js.map +1 -0
- package/dist/{chunk-P67WJVP4.js → chunk-PQFHMQHQ.js} +10 -9
- package/dist/chunk-PQFHMQHQ.js.map +1 -0
- package/dist/{chunk-UAROCOXF.js → chunk-QVFAS5IO.js} +3 -3
- package/dist/{chunk-UAROCOXF.js.map → chunk-QVFAS5IO.js.map} +1 -1
- package/dist/{chunk-K3CVFRVS.js → chunk-QZNJOHN6.js} +3 -3
- package/dist/{chunk-K3CVFRVS.js.map → chunk-QZNJOHN6.js.map} +1 -1
- package/dist/{chunk-FVJK4QWM.js → chunk-R7NHYEJF.js} +4 -4
- package/dist/{chunk-FVJK4QWM.js.map → chunk-R7NHYEJF.js.map} +1 -1
- package/dist/{chunk-GXLQLPE5.js → chunk-RYYLMBA2.js} +5 -5
- package/dist/{chunk-GXLQLPE5.js.map → chunk-RYYLMBA2.js.map} +1 -1
- package/dist/{chunk-Y4N2NUZD.js → chunk-S3O3GKB7.js} +4 -4
- package/dist/{chunk-Y4N2NUZD.js.map → chunk-S3O3GKB7.js.map} +1 -1
- package/dist/{chunk-GTILM2CI.js → chunk-SBSA3IQA.js} +43 -12
- package/dist/chunk-SBSA3IQA.js.map +1 -0
- package/dist/{chunk-4PTSR4UU.js → chunk-T42WRQ4O.js} +3 -3
- package/dist/{chunk-4PTSR4UU.js.map → chunk-T42WRQ4O.js.map} +1 -1
- package/dist/{chunk-MR5HBOUF.js → chunk-T7CTHHG7.js} +3 -3
- package/dist/{chunk-MR5HBOUF.js.map → chunk-T7CTHHG7.js.map} +1 -1
- package/dist/{chunk-FZNG4V4J.js → chunk-TCHRMVTO.js} +4 -4
- package/dist/{chunk-FZNG4V4J.js.map → chunk-TCHRMVTO.js.map} +1 -1
- package/dist/{chunk-LAMCXQGA.js → chunk-VLTQGE2E.js} +75 -25
- package/dist/chunk-VLTQGE2E.js.map +1 -0
- package/dist/{chunk-7AI3Q5AQ.js → chunk-WSBKB4CJ.js} +71 -24
- package/dist/chunk-WSBKB4CJ.js.map +1 -0
- package/dist/{chunk-CGT45WN7.js → chunk-X77SUM4P.js} +3 -3
- package/dist/{chunk-CGT45WN7.js.map → chunk-X77SUM4P.js.map} +1 -1
- package/dist/{chunk-SCOT677Q.js → chunk-XDKH7XSA.js} +5 -5
- package/dist/{chunk-SCOT677Q.js.map → chunk-XDKH7XSA.js.map} +1 -1
- package/dist/{chunk-QVEKLSEH.js → chunk-XUSALIEI.js} +6 -6
- package/dist/{chunk-QVEKLSEH.js.map → chunk-XUSALIEI.js.map} +1 -1
- package/dist/{chunk-FYXZRVID.js → chunk-Y3HTGHJC.js} +3 -3
- package/dist/{chunk-FYXZRVID.js.map → chunk-Y3HTGHJC.js.map} +1 -1
- package/dist/chunk-YOH2L76X.js +505 -0
- package/dist/chunk-YOH2L76X.js.map +1 -0
- package/dist/{chunk-B6GIW55K.js → chunk-ZCAJZ4B2.js} +7 -4
- package/dist/chunk-ZCAJZ4B2.js.map +1 -0
- package/dist/{chunk-BTE2V4IW.js → chunk-ZPWTOUTK.js} +76 -7
- package/dist/{chunk-BTE2V4IW.js.map → chunk-ZPWTOUTK.js.map} +1 -1
- package/dist/cli/index.js +1034 -794
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +8 -5
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/diff.d.ts +4 -2
- package/dist/cli/src/commands/diff.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +34 -2
- 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/manage.d.ts +12 -5
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts +7 -5
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +13 -8
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +30 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/commands/why.d.ts +1 -0
- package/dist/cli/src/commands/why.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +12 -0
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +57 -4
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +16 -16
- package/dist/{connectors-C7UQ73BK.js → connectors-4QWAKPHB.js} +19 -19
- package/dist/{connectors-C7UQ73BK.js.map → connectors-4QWAKPHB.js.map} +1 -1
- package/dist/core/index.js +7 -7
- 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 +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/index.d.ts +2 -1
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +6 -2
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/sinks/sqlite-runtime.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +22 -6
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +29 -3
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/requirements.d.ts +26 -0
- package/dist/core/src/requirements.d.ts.map +1 -0
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +22 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts +4 -1
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +7 -7
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
- package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
- package/dist/discovery/src/discover.d.ts.map +1 -1
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/{ensure-sources-SRC2DVR5.js → ensure-sources-2RONZKCU.js} +17 -17
- package/dist/{ensure-sources-SRC2DVR5.js.map → ensure-sources-2RONZKCU.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +16 -16
- package/dist/factory-assets/connectors/deploy.js +16 -16
- package/dist/factory-assets/connectors/devserver.js +16 -16
- package/dist/factory-assets/connectors/flow/adapter.js +16 -16
- 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 +9 -9
- package/dist/factory-assets/connectors/flow/run-flow.js +18 -18
- package/dist/factory-assets/connectors/flow.js +16 -16
- package/dist/factory-assets/connectors/git.js +16 -16
- package/dist/factory-assets/connectors/gmail.js +16 -16
- package/dist/factory-assets/connectors/googledrive.js +16 -16
- package/dist/factory-assets/connectors/local.js +16 -16
- package/dist/factory-assets/connectors/mattermost.js +16 -16
- package/dist/factory-assets/connectors/memory.js +16 -16
- package/dist/factory-assets/connectors/minio.js +16 -16
- package/dist/factory-assets/connectors/postgres.js +16 -16
- package/dist/factory-assets/connectors/s3.js +16 -16
- package/dist/factory-assets/connectors/sharepoint.js +16 -16
- package/dist/factory-assets/connectors/sqlite.js +16 -16
- package/dist/factory-assets/connectors/static-server.js +16 -16
- package/dist/factory-assets/connectors/tunnel.js +16 -16
- package/dist/factory-assets/connectors/webdav.js +16 -16
- package/dist/factory-assets/connectors/xstate-store.js +16 -16
- package/dist/factory-assets/connectors/xstate.js +16 -16
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +9 -3
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +4 -2
- package/dist/{flows-CBYRSAGS.js → flows-EQF2CH4U.js} +12 -12
- package/dist/{flows-CBYRSAGS.js.map → flows-EQF2CH4U.js.map} +1 -1
- package/dist/{helpers-XAEKCZKT.js → helpers-CFK6YP6R.js} +17 -17
- package/dist/{helpers-XAEKCZKT.js.map → helpers-CFK6YP6R.js.map} +1 -1
- package/dist/library/index.js +11 -11
- package/dist/library/install.js +3 -3
- package/dist/library/src/index.d.ts +2 -1
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/local/library-dir.d.ts +68 -0
- package/dist/library/src/local/library-dir.d.ts.map +1 -0
- package/dist/library/src/local/library-manager.d.ts +10 -1
- package/dist/library/src/local/library-manager.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +2 -2
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +9 -0
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts +55 -4
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/cache.d.ts +18 -1
- package/dist/library/src/remote/cache.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts +7 -6
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-VJSWMOLH.js → library-publish-53UTB3MB.js} +151 -42
- package/dist/library-publish-53UTB3MB.js.map +1 -0
- package/dist/open-library-BOSPJVID.js +40 -0
- package/dist/{open-library-DB2PNL2X.js.map → open-library-BOSPJVID.js.map} +1 -1
- package/dist/open-registry-4FI7HKET.js +32 -0
- package/dist/{open-registry-ZUZJ7MS7.js.map → open-registry-4FI7HKET.js.map} +1 -1
- package/dist/paths-SUS4S4YT.js +22 -0
- package/dist/{paths-FQ64OLJG.js.map → paths-SUS4S4YT.js.map} +1 -1
- package/dist/{plugin-store-MPAMD5OT.js → plugin-store-AGQDMING.js} +9 -9
- package/dist/{plugin-store-MPAMD5OT.js.map → plugin-store-AGQDMING.js.map} +1 -1
- package/dist/project-I55A4O2T.js +41 -0
- package/dist/{project-I6NX3NFB.js.map → project-I55A4O2T.js.map} +1 -1
- package/dist/resolver/index.js +8 -8
- package/dist/runner/index.js +30 -30
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/usage-limit-turn-hold.d.ts +51 -0
- package/dist/runner/src/usage-limit-turn-hold.d.ts.map +1 -0
- package/dist/sdk/asset-manager.js +14 -14
- package/dist/sdk/bridge.js +12 -12
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +30 -30
- package/dist/sdk/resolver.js +8 -8
- package/dist/sdk/runner.js +30 -30
- package/dist/{setup-B7JUHYJW.js → setup-7DQJKHUI.js} +22 -22
- package/dist/{setup-B7JUHYJW.js.map → setup-7DQJKHUI.js.map} +1 -1
- package/dist/{skills-TVO26Y4V.js → skills-NUEN5NDX.js} +13 -13
- package/dist/{skills-TVO26Y4V.js.map → skills-NUEN5NDX.js.map} +1 -1
- package/dist/source-G2LV5LVD.js +41 -0
- package/dist/{source-PJBMDCKX.js.map → source-G2LV5LVD.js.map} +1 -1
- package/dist/{source-manifest-publish-LLJWXGID.js → source-manifest-publish-6RM7SWLZ.js} +24 -24
- package/dist/{source-manifest-publish-LLJWXGID.js.map → source-manifest-publish-6RM7SWLZ.js.map} +1 -1
- package/dist/tui/index.js +61 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/agent.d.ts +2 -0
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/contract.d.ts +2 -0
- package/dist/types/src/manifests/contract.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +3 -3
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +1 -1
- package/dist/types/src/manifests/prompt.d.ts +2 -0
- package/dist/types/src/manifests/prompt.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +23 -23
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-36AFURKZ.js.map +0 -1
- package/dist/chunk-4MQS7CAF.js.map +0 -1
- package/dist/chunk-7AI3Q5AQ.js.map +0 -1
- package/dist/chunk-B6GIW55K.js.map +0 -1
- package/dist/chunk-EF7NPDDU.js.map +0 -1
- package/dist/chunk-GKMZ6THE.js.map +0 -1
- package/dist/chunk-GTILM2CI.js.map +0 -1
- package/dist/chunk-IMKSM5NL.js.map +0 -1
- package/dist/chunk-JAKOMFC6.js.map +0 -1
- package/dist/chunk-JZ5EHBPI.js.map +0 -1
- package/dist/chunk-LAMCXQGA.js.map +0 -1
- package/dist/chunk-MGGFBZWA.js.map +0 -1
- package/dist/chunk-P67WJVP4.js.map +0 -1
- package/dist/chunk-QVNRCDTV.js.map +0 -1
- package/dist/chunk-UMVKJM4Q.js.map +0 -1
- package/dist/chunk-Y7QA2OLD.js.map +0 -1
- package/dist/chunk-YSHVQGUS.js.map +0 -1
- package/dist/chunk-ZAOGFXDO.js +0 -112
- package/dist/chunk-ZAOGFXDO.js.map +0 -1
- package/dist/library-publish-VJSWMOLH.js.map +0 -1
- package/dist/open-library-DB2PNL2X.js +0 -40
- package/dist/open-registry-ZUZJ7MS7.js +0 -32
- package/dist/paths-FQ64OLJG.js +0 -22
- package/dist/project-I6NX3NFB.js +0 -41
- package/dist/source-PJBMDCKX.js +0 -41
|
@@ -32,6 +32,17 @@ export interface LibraryHolder {
|
|
|
32
32
|
/** `true` for the holder `add <ref>` deploys. */
|
|
33
33
|
picked: boolean;
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* One origin that holds a ref, see {@link AssetManager.refOrigins}: the bundled factory
|
|
37
|
+
* source, a project source clone, or a registered library.
|
|
38
|
+
*/
|
|
39
|
+
export interface RefOrigin {
|
|
40
|
+
kind: "factory" | "source" | "library";
|
|
41
|
+
/** `factory`, the source's short name, or the library name. */
|
|
42
|
+
label: string;
|
|
43
|
+
version: string;
|
|
44
|
+
description: string;
|
|
45
|
+
}
|
|
35
46
|
/**
|
|
36
47
|
* Parse a canonical lock key (`<kind>:@<publisher>/<name>#<version>`) into its
|
|
37
48
|
* parts. The lock key is a canonical asset ref, so this delegates to the one ref
|
|
@@ -68,6 +79,15 @@ export declare function softDepName(ref: string): string;
|
|
|
68
79
|
* @internal Exported for unit tests; not part of the stable public surface.
|
|
69
80
|
*/
|
|
70
81
|
export declare function parseRefTolerant(ref: string): AssetRef | null;
|
|
82
|
+
/** A locked asset that now resolves from another library than its lock entry named. */
|
|
83
|
+
export interface LibraryMove {
|
|
84
|
+
/** `kind:@publisher/name` (no version). */
|
|
85
|
+
ref: string;
|
|
86
|
+
/** Library name the lock entry recorded. */
|
|
87
|
+
from: string;
|
|
88
|
+
/** Library name the asset resolved from now. */
|
|
89
|
+
to: string;
|
|
90
|
+
}
|
|
71
91
|
/**
|
|
72
92
|
* Reconciliation state of a declared dependency relative to the lock + disk.
|
|
73
93
|
* `invalid` flags a `dependencies:` entry that isn't a parseable canonical ref —
|
|
@@ -193,6 +213,22 @@ export interface RepoStatusInfo {
|
|
|
193
213
|
/** Error message when status check failed. */
|
|
194
214
|
error?: string;
|
|
195
215
|
}
|
|
216
|
+
/** One deployed copy `install` made equal to its locked bytes again. */
|
|
217
|
+
export interface RestoredAsset {
|
|
218
|
+
/** Canonical ref of the asset. */
|
|
219
|
+
ref: string;
|
|
220
|
+
/** Deployed files whose hand edit was overwritten (project-relative POSIX paths). */
|
|
221
|
+
restored: string[];
|
|
222
|
+
/** Files the asset does not ship that were deleted from its deployed directory. */
|
|
223
|
+
removed: string[];
|
|
224
|
+
}
|
|
225
|
+
/** One asset `install` moved from one locked version to another. */
|
|
226
|
+
export interface ReplacedAsset {
|
|
227
|
+
/** `kind:@publisher/name`, no version. */
|
|
228
|
+
ref: string;
|
|
229
|
+
from: string;
|
|
230
|
+
to: string;
|
|
231
|
+
}
|
|
196
232
|
/**
|
|
197
233
|
* Result of a full `skaile install` or `skaile add` run.
|
|
198
234
|
*
|
|
@@ -208,9 +244,9 @@ export interface InstallResult {
|
|
|
208
244
|
* non-locked path every entry is a bare ref; the reason a miss happened lives in
|
|
209
245
|
* {@link InstallResult.missingHints}. The `--locked` path still appends its prose
|
|
210
246
|
* (`ref (not found in library "x")`) to the entry, and also lists every
|
|
211
|
-
* {@link AssetManager.
|
|
212
|
-
* `requires` with no lock entry, a lock that contradicts a `skaile.yaml` pin
|
|
213
|
-
* one-line message.
|
|
247
|
+
* {@link AssetManager.projectState} gap (a declared dependency or a locked asset's
|
|
248
|
+
* `requires` with no lock entry, a lock that contradicts a `skaile.yaml` pin, a library
|
|
249
|
+
* that cannot supply a locked asset) as its one-line message.
|
|
214
250
|
*/
|
|
215
251
|
missing: string[];
|
|
216
252
|
/**
|
|
@@ -228,6 +264,24 @@ export interface InstallResult {
|
|
|
228
264
|
* content. A re-lock can happen with nothing to deploy. Absent when none changed.
|
|
229
265
|
*/
|
|
230
266
|
relocked?: string[];
|
|
267
|
+
/**
|
|
268
|
+
* Library-origin assets whose lock entry now names another library than before. `install`
|
|
269
|
+
* keeps a locked asset on its library; only `update`, a pin, or a locked library that no
|
|
270
|
+
* longer holds the asset moves it. Absent when none moved.
|
|
271
|
+
*/
|
|
272
|
+
moved?: LibraryMove[];
|
|
273
|
+
/**
|
|
274
|
+
* Assets whose locked version `install` replaced with another version of the same asset
|
|
275
|
+
* (`ref` is `kind:@publisher/name`). Not part of {@link InstallResult.removed}: nothing
|
|
276
|
+
* left the project. Absent when none changed.
|
|
277
|
+
*/
|
|
278
|
+
replaced?: ReplacedAsset[];
|
|
279
|
+
/**
|
|
280
|
+
* Deployed copies `install` made equal to their locked bytes again: a file edited by hand
|
|
281
|
+
* (`restored`) or an extra file in the asset directory (`removed`), both as project-relative
|
|
282
|
+
* POSIX paths. Absent when every deployed copy already matched.
|
|
283
|
+
*/
|
|
284
|
+
restored?: RestoredAsset[];
|
|
231
285
|
/** Whether `skaile.lock.yaml` was written or updated. */
|
|
232
286
|
lockWritten: boolean;
|
|
233
287
|
/**
|
|
@@ -259,6 +313,11 @@ export interface InstallResult {
|
|
|
259
313
|
* `skaile.yaml` (only files an earlier `skaile install` rendered are ever removed).
|
|
260
314
|
*/
|
|
261
315
|
agentFilesRemoved?: string[];
|
|
316
|
+
/**
|
|
317
|
+
* Agent instances of `skaile.yaml` whose `ref` resolves to no agent (never added, or gone):
|
|
318
|
+
* one message each. Their earlier rendering is kept. `skaile install` fails on a non-empty list.
|
|
319
|
+
*/
|
|
320
|
+
agentInstanceErrors?: string[];
|
|
262
321
|
}
|
|
263
322
|
/**
|
|
264
323
|
* An installed asset whose source repository is behind the remote.
|
|
@@ -283,7 +342,7 @@ export interface OutdatedEntry {
|
|
|
283
342
|
/**
|
|
284
343
|
* Set when the locked asset cannot be checked or is not in place: its library is
|
|
285
344
|
* not registered (renamed or removed), its deployed copy is gone, or the lock does not
|
|
286
|
-
* cover it ({@link AssetManager.
|
|
345
|
+
* cover it ({@link AssetManager.projectState}). Such a row has no `latestVersion`.
|
|
287
346
|
*/
|
|
288
347
|
problem?: string;
|
|
289
348
|
/**
|
|
@@ -307,6 +366,8 @@ export interface OutdatedEntry {
|
|
|
307
366
|
* - `not-deployed` — the asset resolves, but there is no deployed copy to compare.
|
|
308
367
|
* - `identical` — the deployed copy matches the source.
|
|
309
368
|
* - `differs` — the deployed copy differs; `diff` carries the unified diff.
|
|
369
|
+
* - `no-files` — the asset kind has no files of its own (a preset: its items are the assets to
|
|
370
|
+
* compare) and the lock records it.
|
|
310
371
|
*
|
|
311
372
|
* @docLink packages/asset-manager/concepts#asset-manager
|
|
312
373
|
*/
|
|
@@ -316,6 +377,8 @@ export type DiffResult = {
|
|
|
316
377
|
status: "not-deployed";
|
|
317
378
|
} | {
|
|
318
379
|
status: "identical";
|
|
380
|
+
} | {
|
|
381
|
+
status: "no-files";
|
|
319
382
|
} | {
|
|
320
383
|
status: "differs";
|
|
321
384
|
diff: string;
|
|
@@ -337,6 +400,14 @@ export interface RemoveResult {
|
|
|
337
400
|
changed: boolean;
|
|
338
401
|
/** Canonical refs (`kind:@publisher/name`) of the orphaned dependencies dropped as well. */
|
|
339
402
|
pruned: string[];
|
|
403
|
+
/**
|
|
404
|
+
* Set when the removal was refused because other assets still require it; nothing was
|
|
405
|
+
* removed. `ref` is the asset (`kind:@publisher/name`), `requiredBy` the refs requiring it.
|
|
406
|
+
*/
|
|
407
|
+
blocked?: {
|
|
408
|
+
ref: string;
|
|
409
|
+
requiredBy: string[];
|
|
410
|
+
};
|
|
340
411
|
}
|
|
341
412
|
/**
|
|
342
413
|
* A missing dependency detected by `AssetManager.doctor()`.
|
|
@@ -367,21 +438,35 @@ export interface DepIssue {
|
|
|
367
438
|
fix?: string;
|
|
368
439
|
}
|
|
369
440
|
/**
|
|
370
|
-
* One way the
|
|
441
|
+
* One way the project differs from what it declares and locks; see {@link AssetManager.projectState}.
|
|
371
442
|
*
|
|
372
443
|
* @docLink packages/asset-manager/concepts#asset-manager
|
|
373
444
|
*/
|
|
374
445
|
export interface LockGap {
|
|
375
|
-
type: "declared" | "invalid" | "drift" | "pin" | "requires" | "unresolved";
|
|
376
|
-
/** The ref to act on: the declared ref, the unmet dependency `kind:name`, or the
|
|
446
|
+
type: "declared" | "invalid" | "drift" | "pin" | "requires" | "unresolved" | "library" | "incomplete" | "content" | "modified" | "agent";
|
|
447
|
+
/** The ref to act on: the declared ref, the unmet dependency `kind:name`, or the asset itself. */
|
|
377
448
|
ref: string;
|
|
378
|
-
/**
|
|
449
|
+
/** Set on a `requires` gap: the requiring asset, `kind:@publisher/name` (`kind:name` when the lock knows no publisher). */
|
|
450
|
+
asset?: string;
|
|
451
|
+
/** What is wrong, as a phrase that follows `ref` (e.g. `is declared but not locked — run …`). */
|
|
379
452
|
reason: string;
|
|
380
453
|
/** One line naming the gap, without a leading status mark: `${ref} ${reason}`, except a `requires` gap, which leads with the requiring asset. */
|
|
381
454
|
message: string;
|
|
382
455
|
/** Set when `skaile install` cannot fix the gap; `reason` then names what to change instead. */
|
|
383
456
|
manualFix?: true;
|
|
384
457
|
}
|
|
458
|
+
/**
|
|
459
|
+
* The project's state as {@link AssetManager.projectState} computes it: the one verdict
|
|
460
|
+
* `check`, `doctor`, `outdated`, `diff` and `install --locked` share.
|
|
461
|
+
*
|
|
462
|
+
* @docLink packages/asset-manager/concepts#asset-manager
|
|
463
|
+
*/
|
|
464
|
+
export interface ProjectState {
|
|
465
|
+
/** Every problem, one {@link LockGap} each; empty when the project is as declared and locked. */
|
|
466
|
+
gaps: LockGap[];
|
|
467
|
+
/** What {@link AssetManager.doctor} found: the unmet requirements (a `doctor` table row each) and the locked assets nothing provides. */
|
|
468
|
+
requirements: DepIssue[];
|
|
469
|
+
}
|
|
385
470
|
/**
|
|
386
471
|
* A single deployed asset shown in the workspace overview.
|
|
387
472
|
*
|
|
@@ -481,8 +566,9 @@ export interface AssetManagerOptions {
|
|
|
481
566
|
*/
|
|
482
567
|
indexPath?: string;
|
|
483
568
|
/**
|
|
484
|
-
* Receives the warning printed when one ref
|
|
485
|
-
* libraries (which library was chosen and why). Defaults to
|
|
569
|
+
* Receives the warning printed when {@link AssetManager.add} picks one ref out of several
|
|
570
|
+
* local libraries (which library was chosen and why); no other method warns. Defaults to
|
|
571
|
+
* `console.warn`
|
|
486
572
|
* with a `skaile:` prefix. A CLI with a live spinner passes a collector and
|
|
487
573
|
* prints the lines after the spinner stops, so frames can't overwrite them.
|
|
488
574
|
*/
|
|
@@ -596,8 +682,8 @@ export declare class AssetManager {
|
|
|
596
682
|
* Render every agent instance of `skaile.yaml` into the driver target's native
|
|
597
683
|
* agent files (`.claude/agents/<id>.md`, …) and prune the renderings of
|
|
598
684
|
* instances that left the config. Runs after the skills deploy, so composed
|
|
599
|
-
* skills resolve. Project scope only.
|
|
600
|
-
* is warned and swallowed.
|
|
685
|
+
* skills resolve. Project scope only. An instance whose `ref` resolves to no agent is
|
|
686
|
+
* reported in `agentInstanceErrors`; any other render error is warned and swallowed.
|
|
601
687
|
*/
|
|
602
688
|
private renderAgentInstances;
|
|
603
689
|
private loadConfig;
|
|
@@ -625,6 +711,11 @@ export declare class AssetManager {
|
|
|
625
711
|
*
|
|
626
712
|
* @param opts.quiet - Skip the cross-library collision warning (a lookup that only
|
|
627
713
|
* builds an error hint must not warn).
|
|
714
|
+
* @param opts.library - Resolve only from this library (the one a lock entry names), not
|
|
715
|
+
* from every registered one. Never warns: no choice is made between libraries.
|
|
716
|
+
* @param opts.lockedLibraries - `kind:publisher/name` → the library its lock entry names
|
|
717
|
+
* ({@link AssetManager.lockedLibraryNames}). A ref listed here resolves from that library
|
|
718
|
+
* when it holds a match, whatever the default library is.
|
|
628
719
|
* @returns the matched deploy entries, the set of `missing` refs covered, and
|
|
629
720
|
* each entry's originating library name.
|
|
630
721
|
*/
|
|
@@ -647,10 +738,47 @@ export declare class AssetManager {
|
|
|
647
738
|
* @returns `kind:@publisher/name` → holders; refs held by one library are absent.
|
|
648
739
|
*/
|
|
649
740
|
libraryHolders(): Promise<Map<string, LibraryHolder[]>>;
|
|
741
|
+
/**
|
|
742
|
+
* Every asset a registered library holds, read from the library directories themselves
|
|
743
|
+
* (not the local index, which keeps one row per ref and version and loses a ref when
|
|
744
|
+
* another library re-publishes it). One row per holder, all versions.
|
|
745
|
+
*
|
|
746
|
+
* @returns `[]` when no library holds an asset. Never warns.
|
|
747
|
+
*/
|
|
748
|
+
libraryAssets(): Promise<Array<{
|
|
749
|
+
entry: CatalogEntry;
|
|
750
|
+
library: string;
|
|
751
|
+
}>>;
|
|
752
|
+
/**
|
|
753
|
+
* Every origin that holds `ref` (`kind:@publisher/name`) with the version it holds, in
|
|
754
|
+
* the order `add <ref>` prefers them, so the first row is the one `add` deploys: the
|
|
755
|
+
* project's source clones and the bundled factory source (highest version first), then
|
|
756
|
+
* the registered libraries. `add`, `info` and `search` all read this, so the three name
|
|
757
|
+
* one origin for one ref. Stores are not asked (no network).
|
|
758
|
+
*
|
|
759
|
+
* @returns one row per origin and version; `[]` for a ref without a publisher or one
|
|
760
|
+
* nothing holds. Never warns.
|
|
761
|
+
*/
|
|
762
|
+
refOrigins(ref: string): Promise<RefOrigin[]>;
|
|
763
|
+
/**
|
|
764
|
+
* Every ref (`kind:@publisher/name`) that several origins hold at different versions,
|
|
765
|
+
* with its origins in {@link refOrigins} order. A ref the origins hold at one version
|
|
766
|
+
* has nothing to choose between and is left out.
|
|
767
|
+
*/
|
|
768
|
+
competingOrigins(): Promise<Map<string, RefOrigin[]>>;
|
|
769
|
+
/**
|
|
770
|
+
* The origins of {@link refOrigins} for every ref, or for the one `only` names
|
|
771
|
+
* (`kind:@publisher/name`), keyed by `kind:@publisher/name`.
|
|
772
|
+
*/
|
|
773
|
+
private collectOrigins;
|
|
650
774
|
/**
|
|
651
775
|
* Where each missed publisher-qualified ref went when its publisher changed, for every
|
|
652
776
|
* ref at once (one library scan, one lock read):
|
|
653
|
-
* - `moved` when a registered library holds the same kind + name under another publisher
|
|
777
|
+
* - `moved` when a registered library holds the same kind + name under another publisher.
|
|
778
|
+
* When the lock ties the missed ref to a library, only that library is looked at (an
|
|
779
|
+
* asset of the same name in another library is a different asset). Without a lock
|
|
780
|
+
* entry, a library asset the project already declares or locks under its own ref is
|
|
781
|
+
* not offered, and two candidate publishers are ambiguous: no hint;
|
|
654
782
|
* - `lockedAs` when the lock holds the same kind + name under another publisher, records
|
|
655
783
|
* the library it came from, and that library now holds the asset under yet another
|
|
656
784
|
* publisher than the locked one. An unrelated asset that merely shares kind + name does
|
|
@@ -716,8 +844,34 @@ export declare class AssetManager {
|
|
|
716
844
|
* preferring it would lock a stale version after an in-place bump. The hash is
|
|
717
845
|
* computed from the files on disk, so it matches what `install --locked`
|
|
718
846
|
* re-hashes.
|
|
847
|
+
*
|
|
848
|
+
* A git-backed library also records its remote URL. When the previous lock names the
|
|
849
|
+
* library under another name that {@link lockedLibrary} matched to this one by URL (a
|
|
850
|
+
* teammate registered the same remote under a different name), the entry keeps the locked
|
|
851
|
+
* name and URL: the lock does not change because it was installed on another machine.
|
|
719
852
|
*/
|
|
720
853
|
private libraryLockEntries;
|
|
854
|
+
/**
|
|
855
|
+
* Lock keys that `skaile.yaml` still wants: the entries a declared ref names, plus every
|
|
856
|
+
* entry such an asset requires, transitively. All keys when a `preset:` is declared.
|
|
857
|
+
*/
|
|
858
|
+
private declaredLockKeys;
|
|
859
|
+
/**
|
|
860
|
+
* The `Missing:` lines of every library-origin lock entry whose library cannot supply
|
|
861
|
+
* assets on this machine (not registered, or registered with its directory gone). Plain
|
|
862
|
+
* `install` stops on a non-empty list, the same lines `install --locked` prints: it must
|
|
863
|
+
* not re-resolve a locked asset from another origin. The ONE function that decides "the
|
|
864
|
+
* locked library is not here", so a lock-recorded URL fallback extends it in one place.
|
|
865
|
+
*
|
|
866
|
+
* Only entries `skaile.yaml` still declares, or that a declared asset requires
|
|
867
|
+
* (transitively, read from the deployed copy), count. A stale entry nothing declares is
|
|
868
|
+
* pruned by `install` as usual, so a removed dependency whose library is gone can be
|
|
869
|
+
* cleaned up. With a declared `preset:` every entry counts: the lock records no edge
|
|
870
|
+
* from a preset to its items, and the preset's own library may be the one that is gone.
|
|
871
|
+
*
|
|
872
|
+
* @param declared - The `dependencies:` refs as written in `skaile.yaml`.
|
|
873
|
+
*/
|
|
874
|
+
private unavailableLockedLibraries;
|
|
721
875
|
/**
|
|
722
876
|
* Re-resolve every library-origin lock entry from its named library, for
|
|
723
877
|
* `install --locked`. An entry is restored only when its library is still
|
|
@@ -726,10 +880,41 @@ export declare class AssetManager {
|
|
|
726
880
|
*/
|
|
727
881
|
private restoreLibraryLockEntries;
|
|
728
882
|
/**
|
|
729
|
-
*
|
|
730
|
-
*
|
|
883
|
+
* Whether a deployed copy exists for the lock entries `install` kept for the unresolved
|
|
884
|
+
* `ref`. A kind with no install target has no deployed copy.
|
|
731
885
|
*/
|
|
886
|
+
private keptCopyDeployed;
|
|
887
|
+
/**
|
|
888
|
+
* How the library `origin` names stands on this machine. THE one lookup of a locked library
|
|
889
|
+
* ("is it registered here?"): `check`, `outdated`, `install` and `install --locked` all ask it.
|
|
890
|
+
*
|
|
891
|
+
* - registered in the index under its name: `ok` at its registered path, or `dir-missing` when
|
|
892
|
+
* that directory is gone;
|
|
893
|
+
* - not registered: a directory `<libraries dir>/<name>` nobody unregistered still counts as a
|
|
894
|
+
* hand-made library (`ok`). One `library remove` unregistered without `--purge` does not
|
|
895
|
+
* (it stays on disk but no longer resolves), and neither does the reserved `installed` folder.
|
|
896
|
+
* - otherwise, when the lock recorded the library's remote URL: another registered library
|
|
897
|
+
* whose git remote is the same repository (`.git` suffix, trailing `/` and the
|
|
898
|
+
* `git@host:o/r` / `https://host/o/r` forms do not matter) and whose directory exists is
|
|
899
|
+
* `ok`, with `name` set to the name it is registered under here. The library name is
|
|
900
|
+
* machine-local; the remote is what a clone shares.
|
|
901
|
+
*/
|
|
902
|
+
private lockedLibrary;
|
|
903
|
+
/** On-disk root of the library `origin` names; `null` unless {@link lockedLibrary} says `ok`. */
|
|
732
904
|
private libraryPath;
|
|
905
|
+
/**
|
|
906
|
+
* Where each library-origin lock entry of this project resolves on this machine: identity
|
|
907
|
+
* `kind:publisher/name` (no scope sigil, no version) → the name the locked library is
|
|
908
|
+
* registered under here. The name differs from the locked one when the lock's remote URL
|
|
909
|
+
* matched another registered library ({@link lockedLibrary}). A deployed entry whose library
|
|
910
|
+
* resolves nowhere (not registered, directory gone) maps to `null`.
|
|
911
|
+
*
|
|
912
|
+
* Direct `asset install` entries (`library.installed`) are included and resolved the same
|
|
913
|
+
* way, but they map to the locked library name when that lookup fails: such a copy sits in
|
|
914
|
+
* the project and does not depend on the library still being registered. A missing or
|
|
915
|
+
* unreadable lock yields an empty map. `skaile manage` uses it to tick the right library row.
|
|
916
|
+
*/
|
|
917
|
+
lockedLibraryNames(): Promise<Map<string, string | null>>;
|
|
733
918
|
/** A candidate's stable identity key (`<publisher>/<kind>:<name>@<version>`). */
|
|
734
919
|
private candidateKey;
|
|
735
920
|
/**
|
|
@@ -819,11 +1004,15 @@ export declare class AssetManager {
|
|
|
819
1004
|
* @param opts.link - When `true`, symlink local-path assets instead of copying them
|
|
820
1005
|
* (the author dev-loop). Machine-local / not for committing; a no-op for
|
|
821
1006
|
* store/factory sources. Defaults to copy.
|
|
1007
|
+
* @param opts.moveLibraries - When `true` (`skaile update`), a locked library asset is
|
|
1008
|
+
* re-resolved from every library and may move to another one; {@link InstallResult.moved}
|
|
1009
|
+
* lists the moves. Without it a locked asset stays on the library its lock entry names.
|
|
822
1010
|
* @returns {@link InstallResult} summarising what was deployed, what was missing, and any collisions.
|
|
823
1011
|
*/
|
|
824
1012
|
install(opts?: {
|
|
825
1013
|
locked?: boolean;
|
|
826
1014
|
link?: boolean;
|
|
1015
|
+
moveLibraries?: boolean;
|
|
827
1016
|
}): Promise<InstallResult>;
|
|
828
1017
|
/**
|
|
829
1018
|
* Extend `kept` (see {@link keptLockEntries}) with every previous lock entry a kept asset
|
|
@@ -833,8 +1022,13 @@ export declare class AssetManager {
|
|
|
833
1022
|
* cannot be read has no known requirements.
|
|
834
1023
|
*/
|
|
835
1024
|
private keepRequiredByKept;
|
|
836
|
-
/**
|
|
837
|
-
|
|
1025
|
+
/**
|
|
1026
|
+
* Publisher-qualified refs the deployed copy of `id` requires, read from its own
|
|
1027
|
+
* manifest file (`metadata.requires`, a manifest `dependencies:` entry): the one place
|
|
1028
|
+
* the requirements stay knowable when no source or library holds the asset any more.
|
|
1029
|
+
* A copy that is not deployed or cannot be read has no known requirements.
|
|
1030
|
+
*/
|
|
1031
|
+
private deployedRequirementsOf;
|
|
838
1032
|
/**
|
|
839
1033
|
* Ensure all source clones are present/up to date. Returns an early
|
|
840
1034
|
* {@link InstallResult} describing the failed source on the first error, or
|
|
@@ -873,7 +1067,29 @@ export declare class AssetManager {
|
|
|
873
1067
|
* to pull every connector's deps). Future: add a flag to opt in.
|
|
874
1068
|
*/
|
|
875
1069
|
private installRuntimeAssetDeps;
|
|
1070
|
+
/**
|
|
1071
|
+
* Give every ref `install` could not resolve, and that has no hint yet, the fix the shared
|
|
1072
|
+
* {@link AssetManager.projectState} names for it (a declared ref no library or source holds,
|
|
1073
|
+
* a requirement nothing holds). Runs after the deploy, so a requirer is known by then.
|
|
1074
|
+
* Mutates `hints`: ` <reason>` follows the ref in the `Missing:` line.
|
|
1075
|
+
*/
|
|
1076
|
+
private adviseMissing;
|
|
876
1077
|
private installLocked;
|
|
1078
|
+
/**
|
|
1079
|
+
* Parse the ref `add` was given. A ref the grammar rejects fails with the parser's message
|
|
1080
|
+
* minus its manifest-migration advice (it points at a skill that is not for `add`), and:
|
|
1081
|
+
* - a publisher-less ref (`report-html`, `skill:report-html`) names the assets of that
|
|
1082
|
+
* kind and name that `add` can resolve (a source, the bundled factory source or a
|
|
1083
|
+
* library holds them), so `Did you mean` never names an asset that does not resolve;
|
|
1084
|
+
* - a `@version` suffix (`skill:@acme/x@1.0.0`) says the pin is written `#<version>`.
|
|
1085
|
+
*/
|
|
1086
|
+
private parseAddRef;
|
|
1087
|
+
/**
|
|
1088
|
+
* The publisher-qualified refs of the assets named like the publisher-less `ref` that
|
|
1089
|
+
* `add` resolves: held by a source clone, the bundled factory source or a registered
|
|
1090
|
+
* library. A ref without a kind means a skill, as the grammar says.
|
|
1091
|
+
*/
|
|
1092
|
+
private resolvableMatches;
|
|
877
1093
|
/**
|
|
878
1094
|
* Add a single asset (and its transitive dependencies) to the workspace.
|
|
879
1095
|
*
|
|
@@ -887,6 +1103,8 @@ export declare class AssetManager {
|
|
|
887
1103
|
* store/factory sources. Defaults to copy.
|
|
888
1104
|
* @param opts.onLibraryOrigin - Called once per deployed library-origin asset with its
|
|
889
1105
|
* canonical ref and the name of the library it was resolved from.
|
|
1106
|
+
* @param opts.onLibraryMoved - Called once per asset whose lock entry named another library
|
|
1107
|
+
* than the one this add resolved it from.
|
|
890
1108
|
* @param opts.onPresets - Called once with the presets expanded into this add (the
|
|
891
1109
|
* added preset and any it nests); a library-held preset names its library.
|
|
892
1110
|
* @returns Array of asset refs that were deployed in this call.
|
|
@@ -896,7 +1114,13 @@ export declare class AssetManager {
|
|
|
896
1114
|
add(ref: string, opts?: {
|
|
897
1115
|
link?: boolean;
|
|
898
1116
|
onLibraryOrigin?: (deployedRef: string, library: string) => void;
|
|
1117
|
+
/** Called per already-locked asset this add moved to another library than its lock entry named. */
|
|
1118
|
+
onLibraryMoved?: (move: LibraryMove) => void;
|
|
899
1119
|
onPresets?: (presets: PresetExpansion[]) => void;
|
|
1120
|
+
/** Called per symlink an asset's copy deploy leaves out (`ref`, path under the asset dir). */
|
|
1121
|
+
onSkippedSymlink?: (ref: string, path: string) => void;
|
|
1122
|
+
/** Called per `.env` file in an asset's directory that a copy deploy leaves out. */
|
|
1123
|
+
onEnvFile?: (ref: string, path: string) => void;
|
|
900
1124
|
}): Promise<string[]>;
|
|
901
1125
|
/**
|
|
902
1126
|
* Report the body-link **soft dependencies** of the given assets that are not
|
|
@@ -1039,10 +1263,16 @@ export declare class AssetManager {
|
|
|
1039
1263
|
* preset's items count as its requirements. They are undeployed and unlocked;
|
|
1040
1264
|
* a dependency still declared or required elsewhere stays.
|
|
1041
1265
|
*
|
|
1266
|
+
* An asset another locked asset (or a declared preset) requires is kept and reported in
|
|
1267
|
+
* `blocked`, nothing changes, unless `opts.force` (see {@link requiredByOthers}).
|
|
1268
|
+
*
|
|
1042
1269
|
* @returns `changed` as {@link remove}; `pruned` the canonical refs
|
|
1043
|
-
* (`kind:@publisher/name`) of the dependencies dropped as well
|
|
1270
|
+
* (`kind:@publisher/name`) of the dependencies dropped as well; `blocked` when the
|
|
1271
|
+
* removal was refused.
|
|
1044
1272
|
*/
|
|
1045
|
-
removeWithDependencies(ref: string
|
|
1273
|
+
removeWithDependencies(ref: string, opts?: {
|
|
1274
|
+
force?: boolean;
|
|
1275
|
+
}): Promise<RemoveResult>;
|
|
1046
1276
|
/**
|
|
1047
1277
|
* Resolve the identity {@link remove} acts on. A publisher-qualified ref is taken
|
|
1048
1278
|
* as written; a short ref (`kind:name`, or just `name`) is matched on kind + name
|
|
@@ -1053,6 +1283,21 @@ export declare class AssetManager {
|
|
|
1053
1283
|
* @throws On a malformed ref, or when a short ref matches more than one asset.
|
|
1054
1284
|
*/
|
|
1055
1285
|
private resolveRemoveTarget;
|
|
1286
|
+
/**
|
|
1287
|
+
* The reverse guard of {@link removeWithDependencies}: which other locked assets (and
|
|
1288
|
+
* declared presets) require `target`. Their requirements are read the way {@link lockedGraph}
|
|
1289
|
+
* reads them for pruning. Never touches the project.
|
|
1290
|
+
*
|
|
1291
|
+
* @returns `ref` and `requiredBy` (both `kind:@publisher/name`, version-agnostic), or `null`
|
|
1292
|
+
* when `target` is not locked or nothing else requires it.
|
|
1293
|
+
*/
|
|
1294
|
+
private requiredByOthers;
|
|
1295
|
+
/**
|
|
1296
|
+
* Publishers under which the lock or `skaile.yaml` track `kind:name`. A deployed dir carries
|
|
1297
|
+
* no publisher, so this is what says whose copy it is. `undefined` stands for a
|
|
1298
|
+
* publisher-less declaration.
|
|
1299
|
+
*/
|
|
1300
|
+
private trackedPublishers;
|
|
1056
1301
|
/** Undeploy `parsed` from every target harness and drop its declaration and lock entry. */
|
|
1057
1302
|
private removeResolved;
|
|
1058
1303
|
/**
|
|
@@ -1238,6 +1483,14 @@ export declare class AssetManager {
|
|
|
1238
1483
|
* instead. `[]` when the asset is not in the lock file.
|
|
1239
1484
|
*/
|
|
1240
1485
|
why(ref: string): Promise<string[]>;
|
|
1486
|
+
/**
|
|
1487
|
+
* The {@link AssetManager.why} chain of a preset. A preset is never a lock asset: its record
|
|
1488
|
+
* is the lock's `presets` slice. Declared in `skaile.yaml` it is `direct`; one only a declared
|
|
1489
|
+
* preset nests is traced through the presets that list it.
|
|
1490
|
+
*
|
|
1491
|
+
* @returns `[]` when the lock does not record the preset.
|
|
1492
|
+
*/
|
|
1493
|
+
private whyPreset;
|
|
1241
1494
|
/**
|
|
1242
1495
|
* List installed assets that have a newer upstream available.
|
|
1243
1496
|
*
|
|
@@ -1248,20 +1501,33 @@ export declare class AssetManager {
|
|
|
1248
1501
|
* - **Library assets** — a library-origin lock entry whose library files on disk
|
|
1249
1502
|
* (not the index, which lags until `skaile library index`) hold a newer version
|
|
1250
1503
|
* than the locked one (`latestVersion`, `library` set), or the same version with
|
|
1251
|
-
* different bytes (`contentChanged`). `behind` is 0.
|
|
1252
|
-
*
|
|
1253
|
-
*
|
|
1254
|
-
*
|
|
1255
|
-
* `
|
|
1504
|
+
* different bytes (`contentChanged`). `behind` is 0.
|
|
1505
|
+
* - **Project state** — every {@link AssetManager.projectState} gap (an unregistered or
|
|
1506
|
+
* renamed library, a missing deployed copy, a declared dependency or a deployed asset's
|
|
1507
|
+
* `requires` with no lock entry, a lock that contradicts a `skaile.yaml` pin) as a
|
|
1508
|
+
* `problem` row, so `outdated` lists what `check`, `doctor` and `install --locked` fail
|
|
1509
|
+
* on. An asset that also has a version row is listed once, with that row.
|
|
1256
1510
|
*
|
|
1257
1511
|
* @returns Array of {@link OutdatedEntry} objects.
|
|
1258
1512
|
*/
|
|
1259
1513
|
outdated(): Promise<OutdatedEntry[]>;
|
|
1260
1514
|
/**
|
|
1261
|
-
*
|
|
1262
|
-
* listed yet, so `outdated`
|
|
1515
|
+
* Add one `problem` row per {@link AssetManager.projectState} gap whose asset is not
|
|
1516
|
+
* listed yet, so `outdated` lists the same assets `check`, `doctor` and `install --locked`
|
|
1517
|
+
* fail on. An asset that is behind its source and also broken is listed once, with its
|
|
1518
|
+
* version row.
|
|
1263
1519
|
*/
|
|
1264
1520
|
private addLockGapRows;
|
|
1521
|
+
/**
|
|
1522
|
+
* The deploy entry of a library-origin asset from the library its lock entry records,
|
|
1523
|
+
* at the locked version when that library still holds it (else its newest). Other
|
|
1524
|
+
* libraries holding the same ref are not consulted: the lock already chose.
|
|
1525
|
+
*
|
|
1526
|
+
* @param want - Kind, name and optional publisher of the asset.
|
|
1527
|
+
* @returns `null` when the lock has no library-origin entry for it, or the recorded
|
|
1528
|
+
* library is gone or no longer holds it (callers fall back to a general lookup).
|
|
1529
|
+
*/
|
|
1530
|
+
private lockedLibraryEntry;
|
|
1265
1531
|
/**
|
|
1266
1532
|
* Produce a unified diff from the deployed asset to its catalog source: `-` lines
|
|
1267
1533
|
* are in the deployed copy only (local edits `update` would overwrite), `+` lines
|
|
@@ -1341,24 +1607,114 @@ export declare class AssetManager {
|
|
|
1341
1607
|
*/
|
|
1342
1608
|
doctor(): Promise<DepIssue[]>;
|
|
1343
1609
|
/**
|
|
1344
|
-
*
|
|
1345
|
-
* `skaile check`, `skaile
|
|
1610
|
+
* The project's state as one verdict: every way the project differs from what it
|
|
1611
|
+
* declares and locks. `skaile check`, `skaile doctor`, `skaile outdated`, `skaile diff`
|
|
1612
|
+
* and `skaile install --locked` all take their verdict and exit code from this one list,
|
|
1613
|
+
* so one situation reads the same in all five.
|
|
1346
1614
|
*
|
|
1347
1615
|
* - `declared` — a `skaile.yaml` dependency with no lock entry (library or source gone,
|
|
1348
1616
|
* unresolvable ref, never installed);
|
|
1349
1617
|
* - `invalid` — a `dependencies:` entry that is not a parseable ref;
|
|
1350
|
-
* - `drift` —
|
|
1618
|
+
* - `drift` — a locked asset whose deployed files are missing;
|
|
1351
1619
|
* - `pin` — a declared `#pin` that no lock entry for that asset satisfies;
|
|
1352
|
-
* - `requires` — a deployed asset's `requires`
|
|
1353
|
-
*
|
|
1620
|
+
* - `requires` — a deployed asset's `requires` (or a declared preset's item) that is not
|
|
1621
|
+
* deployed (so not locked either);
|
|
1622
|
+
* - `unresolved` — a lock-managed deployed asset that no source or library holds any more;
|
|
1623
|
+
* - `library` — a locked library asset whose library is not registered (renamed or
|
|
1624
|
+
* removed) or no longer holds it, while another library holds it now;
|
|
1625
|
+
* - `incomplete` — a deployed library asset that lacks files of its library entry;
|
|
1626
|
+
* - `content` — a locked library asset whose files in the library changed since the lock
|
|
1627
|
+
* (or whose lock hash predates the one shared asset hash); `skaile install` re-locks it;
|
|
1628
|
+
* - `agent` — an `agents.<id>.ref` (or `agent.definition`) that binds to no agent.
|
|
1629
|
+
*
|
|
1630
|
+
* An asset appears once for what the lock says about it (`unresolved`, else `library`,
|
|
1631
|
+
* else `drift`). A declared ref no registered library or source holds names
|
|
1632
|
+
* `skaile library init` / `skaile remove`, never `skaile install`: `install` has nothing
|
|
1633
|
+
* to resolve it from.
|
|
1354
1634
|
*
|
|
1355
|
-
* Project mode only: a global manager (`global: true`)
|
|
1356
|
-
* `skaile.yaml` has no declared set, so only the
|
|
1357
|
-
* deployed assets can appear.
|
|
1635
|
+
* Project mode only: a global manager (`global: true`) has no gaps. A project without
|
|
1636
|
+
* `skaile.yaml` has no declared set, so only the lock and deployed-asset gaps can appear.
|
|
1358
1637
|
*
|
|
1359
|
-
* @returns
|
|
1638
|
+
* @returns The {@link ProjectState}; `gaps` is empty when the project is as declared and locked.
|
|
1360
1639
|
*/
|
|
1640
|
+
projectState(): Promise<ProjectState>;
|
|
1641
|
+
/**
|
|
1642
|
+
* Why the `agent:` ref of agent instance `id` binds to nothing, as the phrase that follows
|
|
1643
|
+
* the ref in a {@link LockGap}; see {@link AssetManager.unboundAgentAdvice}.
|
|
1644
|
+
*/
|
|
1645
|
+
private unboundAgentReason;
|
|
1646
|
+
/**
|
|
1647
|
+
* What is wrong with an `agent:` ref bound by an agent instance and what to do (`lead`, then
|
|
1648
|
+
* `advice`). `skaile add` is named only when a registered library or source holds the agent
|
|
1649
|
+
* and `add` takes the ref (it needs a publisher); otherwise the user registers the library
|
|
1650
|
+
* that holds it, writes the publisher, or drops the binding.
|
|
1651
|
+
*/
|
|
1652
|
+
private unboundAgentAdvice;
|
|
1653
|
+
/** @deprecated Use `(await projectState()).gaps`; removed in the next major. */
|
|
1361
1654
|
lockGaps(): Promise<LockGap[]>;
|
|
1655
|
+
/**
|
|
1656
|
+
* The {@link ProjectState} gaps that name `ref`: as the gap's own ref, or as the asset
|
|
1657
|
+
* whose requirement is unmet. A ref without a publisher matches any publisher.
|
|
1658
|
+
*
|
|
1659
|
+
* @param ref - Asset ref in `kind:name` or `kind:@publisher/name` form.
|
|
1660
|
+
*/
|
|
1661
|
+
gapsOf(ref: string): Promise<LockGap[]>;
|
|
1662
|
+
/**
|
|
1663
|
+
* Locked library assets whose library cannot supply them: the library is not registered
|
|
1664
|
+
* (renamed or removed) or no longer holds the asset. Another library holding it makes the
|
|
1665
|
+
* gap fixable by `skaile install` (it re-locks); otherwise the user registers the library
|
|
1666
|
+
* again or drops the dependency.
|
|
1667
|
+
*
|
|
1668
|
+
* @param named - `kind:name` identities already reported; they are skipped.
|
|
1669
|
+
*/
|
|
1670
|
+
private libraryOriginGaps;
|
|
1671
|
+
/**
|
|
1672
|
+
* The {@link RestoredAsset} rows for the drifted copies (see {@link lockedCopyDrift}) a
|
|
1673
|
+
* deploy just wrote again: those whose ref is among the `deployed` canonical refs.
|
|
1674
|
+
*/
|
|
1675
|
+
private restoredCopies;
|
|
1676
|
+
/**
|
|
1677
|
+
* Locked assets whose deployed copy differs from the bytes the lock covers: a file edited by
|
|
1678
|
+
* hand, or a file the asset does not ship. One row per asset, `ref` being `kind:@publisher/name`
|
|
1679
|
+
* and `key` its lock key. The one comparison behind the `modified` gap and the `Restored` lines
|
|
1680
|
+
* of `install`.
|
|
1681
|
+
*
|
|
1682
|
+
* - A library-origin asset is compared with its library's files, but only while those equal the
|
|
1683
|
+
* locked hash (changed library content is the `content` gap's business), both modified and
|
|
1684
|
+
* extra files.
|
|
1685
|
+
* - A source asset is compared with the per-file hashes the lock records (modified files only:
|
|
1686
|
+
* the lock lists what the source covers, not what the deploy copies).
|
|
1687
|
+
*
|
|
1688
|
+
* An agent (rendered, not copied), a `--link` deploy, an asset with a configured patch, and a
|
|
1689
|
+
* copy that is missing are not compared: other gaps cover them. Project mode only.
|
|
1690
|
+
*/
|
|
1691
|
+
private lockedCopyDrift;
|
|
1692
|
+
/**
|
|
1693
|
+
* Locked assets (declared or required by one) whose deployed copy is gone: `skaile install`
|
|
1694
|
+
* restores them. Same deployability rule as {@link AssetManager.listDeclared}'s `drift`.
|
|
1695
|
+
*
|
|
1696
|
+
* @param named - `kind:name` identities already reported; they are skipped.
|
|
1697
|
+
*/
|
|
1698
|
+
private undeployedLockGaps;
|
|
1699
|
+
/**
|
|
1700
|
+
* The `skaile.yaml` side of {@link AssetManager.projectState}: declared refs that do not
|
|
1701
|
+
* parse, never resolved into the lock, are not materialized, or contradict a `#pin`.
|
|
1702
|
+
* A project with no (or an unreadable) `skaile.yaml` has no declared set to reconcile.
|
|
1703
|
+
*
|
|
1704
|
+
* @param requirements - What {@link AssetManager.doctor} found; a declared preset whose
|
|
1705
|
+
* items it already named needs no second line.
|
|
1706
|
+
* @param named - `kind:name` identities already reported; a declared asset among them
|
|
1707
|
+
* needs no `drift` line.
|
|
1708
|
+
*/
|
|
1709
|
+
private declaredGaps;
|
|
1710
|
+
/** Whether the lock's `presets` slice records `want` (kind, name and, when both carry one, publisher). */
|
|
1711
|
+
private presetRecorded;
|
|
1712
|
+
/**
|
|
1713
|
+
* Whether `skaile install` can resolve a declared ref: a source or library holds it, or the
|
|
1714
|
+
* project declares a store that may. The global catalog is not asked: a check never goes
|
|
1715
|
+
* to the network.
|
|
1716
|
+
*/
|
|
1717
|
+
private declaredRefResolvable;
|
|
1362
1718
|
/**
|
|
1363
1719
|
* Items of each declared `preset:` dependency that the lock does not cover.
|
|
1364
1720
|
*
|
|
@@ -1456,6 +1812,15 @@ export declare class AssetManager {
|
|
|
1456
1812
|
* @returns `true` when a declaration was removed.
|
|
1457
1813
|
*/
|
|
1458
1814
|
private removeDependencyFromConfig;
|
|
1815
|
+
/**
|
|
1816
|
+
* Drop the agent instances of `skaile.yaml` (`agents.<id>`, or the `agent.definition`
|
|
1817
|
+
* default) whose `ref` binds to `target`, and the native agent files an install rendered for
|
|
1818
|
+
* them. Only an `agent` target has bindings; project mode only. A `ref` without a publisher
|
|
1819
|
+
* matches any publisher, and a pin is ignored.
|
|
1820
|
+
*
|
|
1821
|
+
* @returns `true` when a binding was removed.
|
|
1822
|
+
*/
|
|
1823
|
+
private removeAgentBindings;
|
|
1459
1824
|
private resolveRepoDir;
|
|
1460
1825
|
}
|
|
1461
1826
|
export { installAgent } from "./install-agent.js";
|