@skaile/workspaces 5.5.0 → 5.6.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 +84 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-KTFUB7EX.js → asset-feeds-4O2JK5S4.js} +27 -14
- package/dist/asset-feeds-4O2JK5S4.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +9 -9
- package/dist/asset-manager/index.js +18 -18
- package/dist/asset-manager/installer.js +11 -11
- package/dist/asset-manager/renderers.js +20 -2
- package/dist/asset-manager/src/index.d.ts +66 -24
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +22 -14
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/install-instances.d.ts +55 -0
- package/dist/asset-manager/src/install-instances.d.ts.map +1 -0
- package/dist/asset-manager/src/installer.d.ts +30 -7
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts +29 -8
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +14 -14
- package/dist/bridge/drivers/codex.js +20 -14
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +11 -11
- package/dist/bridge/drivers/echo.js +3 -3
- package/dist/bridge/drivers/gemini.js +6 -6
- package/dist/bridge/drivers/goose.js +11 -11
- package/dist/bridge/drivers/omp.js +4 -4
- package/dist/bridge/drivers/opencode.js +11 -11
- package/dist/bridge/drivers/qwen.js +6 -6
- package/dist/bridge/index.js +15 -15
- package/dist/bridge/src/codex/native-policy.d.ts +1 -1
- package/dist/bridge/src/drivers/codex.d.ts +2 -1
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/{chunk-LCULZ4ED.js → chunk-27HS2DHB.js} +4 -4
- package/dist/{chunk-LCULZ4ED.js.map → chunk-27HS2DHB.js.map} +1 -1
- package/dist/{chunk-X4GO3GJZ.js → chunk-2GRB5ITE.js} +4 -4
- package/dist/{chunk-X4GO3GJZ.js.map → chunk-2GRB5ITE.js.map} +1 -1
- package/dist/{chunk-ES2FXWQ4.js → chunk-2NYXQYHN.js} +4 -4
- package/dist/{chunk-ES2FXWQ4.js.map → chunk-2NYXQYHN.js.map} +1 -1
- package/dist/{chunk-ORUHADS6.js → chunk-2W4LBLIN.js} +386 -60
- package/dist/chunk-2W4LBLIN.js.map +1 -0
- package/dist/{chunk-SNVOASTL.js → chunk-2XFUXGV6.js} +3 -3
- package/dist/{chunk-SNVOASTL.js.map → chunk-2XFUXGV6.js.map} +1 -1
- package/dist/{chunk-ZDKJHQY2.js → chunk-3TXEJN4W.js} +2 -2
- package/dist/{chunk-ZDKJHQY2.js.map → chunk-3TXEJN4W.js.map} +1 -1
- package/dist/{chunk-5Y3L7XWH.js → chunk-436GRQC2.js} +15 -15
- package/dist/chunk-436GRQC2.js.map +1 -0
- package/dist/{chunk-JELTQ4H7.js → chunk-45VFGT7A.js} +3 -3
- package/dist/{chunk-JELTQ4H7.js.map → chunk-45VFGT7A.js.map} +1 -1
- package/dist/{chunk-XGIS325V.js → chunk-46OVMT76.js} +3 -3
- package/dist/{chunk-XGIS325V.js.map → chunk-46OVMT76.js.map} +1 -1
- package/dist/{chunk-37GBJLF5.js → chunk-47ZD34KB.js} +3 -3
- package/dist/{chunk-37GBJLF5.js.map → chunk-47ZD34KB.js.map} +1 -1
- package/dist/{chunk-MMC24L2W.js → chunk-4CTGEEN6.js} +274 -121
- package/dist/chunk-4CTGEEN6.js.map +1 -0
- package/dist/{chunk-LFEGIZTW.js → chunk-4GNJELPH.js} +2 -2
- package/dist/{chunk-LFEGIZTW.js.map → chunk-4GNJELPH.js.map} +1 -1
- package/dist/{chunk-V7VDSFPS.js → chunk-5B5IZVEP.js} +2 -2
- package/dist/{chunk-V7VDSFPS.js.map → chunk-5B5IZVEP.js.map} +1 -1
- package/dist/{chunk-CODXK5L5.js → chunk-6NPINANG.js} +6 -6
- package/dist/{chunk-CODXK5L5.js.map → chunk-6NPINANG.js.map} +1 -1
- package/dist/{chunk-XBM5ND55.js → chunk-7KLC4LZO.js} +8 -8
- package/dist/{chunk-XBM5ND55.js.map → chunk-7KLC4LZO.js.map} +1 -1
- package/dist/{chunk-SR4RFKHM.js → chunk-7ZHLYXTI.js} +3 -3
- package/dist/{chunk-SR4RFKHM.js.map → chunk-7ZHLYXTI.js.map} +1 -1
- package/dist/{chunk-WX74MVNA.js → chunk-AO7VJ6G6.js} +3 -24
- package/dist/chunk-AO7VJ6G6.js.map +1 -0
- package/dist/{chunk-DPMKI26Y.js → chunk-AOAZCSDI.js} +4 -3
- package/dist/chunk-AOAZCSDI.js.map +1 -0
- package/dist/{chunk-YK7WJSTD.js → chunk-BF33SCLY.js} +10 -5
- package/dist/chunk-BF33SCLY.js.map +1 -0
- package/dist/{chunk-VKSA2CDJ.js → chunk-BTISGSK4.js} +4 -4
- package/dist/{chunk-VKSA2CDJ.js.map → chunk-BTISGSK4.js.map} +1 -1
- package/dist/{chunk-TOSHZX4C.js → chunk-CPSIPIX7.js} +2 -2
- package/dist/chunk-CPSIPIX7.js.map +1 -0
- package/dist/{chunk-K2K7OF4P.js → chunk-DMLDYFDS.js} +23 -6
- package/dist/chunk-DMLDYFDS.js.map +1 -0
- package/dist/{chunk-EJYZ3MKJ.js → chunk-DZM73WDN.js} +4 -4
- package/dist/{chunk-EJYZ3MKJ.js.map → chunk-DZM73WDN.js.map} +1 -1
- package/dist/{chunk-QMWMSZQ4.js → chunk-FK6HPLQA.js} +3 -3
- package/dist/{chunk-QMWMSZQ4.js.map → chunk-FK6HPLQA.js.map} +1 -1
- package/dist/chunk-FRHE7FFB.js +655 -0
- package/dist/chunk-FRHE7FFB.js.map +1 -0
- package/dist/{chunk-75EX5GY4.js → chunk-IPWR33AW.js} +181 -111
- package/dist/chunk-IPWR33AW.js.map +1 -0
- package/dist/{chunk-C4GF7RSQ.js → chunk-KUFNKVBM.js} +3 -3
- package/dist/{chunk-C4GF7RSQ.js.map → chunk-KUFNKVBM.js.map} +1 -1
- package/dist/{chunk-GCYD4EGY.js → chunk-KYXOGHY6.js} +4 -4
- package/dist/{chunk-GCYD4EGY.js.map → chunk-KYXOGHY6.js.map} +1 -1
- package/dist/{chunk-G474PBUQ.js → chunk-LLKKLKZJ.js} +3 -3
- package/dist/{chunk-G474PBUQ.js.map → chunk-LLKKLKZJ.js.map} +1 -1
- package/dist/{chunk-AC2N5BRP.js → chunk-MX3UQXLU.js} +18 -30
- package/dist/chunk-MX3UQXLU.js.map +1 -0
- package/dist/{chunk-N3Y43LMZ.js → chunk-MX6LZE2C.js} +34 -11
- package/dist/chunk-MX6LZE2C.js.map +1 -0
- package/dist/{chunk-BNUZEYC3.js → chunk-NARITJS2.js} +3 -3
- package/dist/{chunk-BNUZEYC3.js.map → chunk-NARITJS2.js.map} +1 -1
- package/dist/{chunk-3665M43C.js → chunk-NLXIALVO.js} +5 -5
- package/dist/{chunk-3665M43C.js.map → chunk-NLXIALVO.js.map} +1 -1
- package/dist/{chunk-UFS3FEBA.js → chunk-O5GDKC5I.js} +3 -3
- package/dist/{chunk-UFS3FEBA.js.map → chunk-O5GDKC5I.js.map} +1 -1
- package/dist/{chunk-Y4QWHIHB.js → chunk-OGLDAJFL.js} +4 -4
- package/dist/{chunk-Y4QWHIHB.js.map → chunk-OGLDAJFL.js.map} +1 -1
- package/dist/chunk-OLLAQLFJ.js +17 -0
- package/dist/chunk-OLLAQLFJ.js.map +1 -0
- package/dist/{chunk-LFMX2UEF.js → chunk-PA7WLID3.js} +86 -69
- package/dist/chunk-PA7WLID3.js.map +1 -0
- package/dist/{chunk-K2NUT3HO.js → chunk-PJS2YWGG.js} +6 -6
- package/dist/{chunk-K2NUT3HO.js.map → chunk-PJS2YWGG.js.map} +1 -1
- package/dist/{chunk-G2O2AARG.js → chunk-RGXVQZOV.js} +6021 -3099
- package/dist/chunk-RGXVQZOV.js.map +1 -0
- package/dist/{chunk-R4G7XI7A.js → chunk-S7QXEXKY.js} +4 -5
- package/dist/chunk-S7QXEXKY.js.map +1 -0
- package/dist/{chunk-JKWU6ULI.js → chunk-SDFROXSA.js} +3 -3
- package/dist/{chunk-JKWU6ULI.js.map → chunk-SDFROXSA.js.map} +1 -1
- package/dist/{chunk-WHSQSVN2.js → chunk-SX4UIDKT.js} +3 -3
- package/dist/{chunk-WHSQSVN2.js.map → chunk-SX4UIDKT.js.map} +1 -1
- package/dist/{chunk-3JHFFIQ6.js → chunk-TZCQ7ZWQ.js} +83 -9
- package/dist/chunk-TZCQ7ZWQ.js.map +1 -0
- package/dist/{chunk-UHLBDAJR.js → chunk-UAP2XHRF.js} +10 -10
- package/dist/{chunk-UHLBDAJR.js.map → chunk-UAP2XHRF.js.map} +1 -1
- package/dist/{chunk-P6KFWTGP.js → chunk-V7NN3HXR.js} +7 -12
- package/dist/chunk-V7NN3HXR.js.map +1 -0
- package/dist/{chunk-LAI7X6I2.js → chunk-VBBBZDI7.js} +3 -3
- package/dist/{chunk-LAI7X6I2.js.map → chunk-VBBBZDI7.js.map} +1 -1
- package/dist/{chunk-TNWXGHLD.js → chunk-VKSXST23.js} +51 -42
- package/dist/chunk-VKSXST23.js.map +1 -0
- package/dist/{chunk-HTKZ4AOW.js → chunk-VSQFGU5D.js} +3 -3
- package/dist/{chunk-HTKZ4AOW.js.map → chunk-VSQFGU5D.js.map} +1 -1
- package/dist/{chunk-JBPG5KQC.js → chunk-VX3INFBA.js} +4 -4
- package/dist/{chunk-JBPG5KQC.js.map → chunk-VX3INFBA.js.map} +1 -1
- package/dist/{chunk-Y7UBRRKG.js → chunk-XOGG7VDZ.js} +40 -31
- package/dist/chunk-XOGG7VDZ.js.map +1 -0
- package/dist/{chunk-JAJG4G5E.js → chunk-ZBBM6O6P.js} +3 -3
- package/dist/{chunk-JAJG4G5E.js.map → chunk-ZBBM6O6P.js.map} +1 -1
- package/dist/cli/index.js +4997 -3410
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +7 -7
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/connector.d.ts +2 -2
- package/dist/cli/src/commands/connector.d.ts.map +1 -1
- package/dist/cli/src/commands/diff.d.ts.map +1 -1
- package/dist/cli/src/commands/history.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-agents.d.ts +131 -0
- package/dist/cli/src/commands/migrate-agents.d.ts.map +1 -0
- package/dist/cli/src/commands/migrate-assets.d.ts +54 -0
- package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -0
- package/dist/cli/src/commands/migrate-files.d.ts +52 -0
- package/dist/cli/src/commands/migrate-files.d.ts.map +1 -0
- package/dist/cli/src/commands/migrate-providers.d.ts +5 -8
- package/dist/cli/src/commands/migrate-providers.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts +21 -0
- package/dist/cli/src/commands/migrate.d.ts.map +1 -0
- package/dist/cli/src/commands/npx.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/patch.d.ts.map +1 -1
- package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +13 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/rebuild.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/show.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 +17 -0
- package/dist/cli/src/commands/validate-instances.d.ts.map +1 -0
- package/dist/cli/src/commands/validate.d.ts +14 -0
- 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/helpers.d.ts.map +1 -1
- package/dist/cli/src/open-library.d.ts.map +1 -1
- package/dist/cli/src/open-registry.d.ts +13 -16
- package/dist/cli/src/open-registry.d.ts.map +1 -1
- package/dist/cli/src/type-guards.d.ts +3 -0
- package/dist/cli/src/type-guards.d.ts.map +1 -0
- package/dist/connectors/config.js +6 -6
- package/dist/connectors/index.js +19 -19
- package/dist/{connectors-MPYCSQNG.js → connectors-HWENZFKW.js} +22 -22
- package/dist/{connectors-MPYCSQNG.js.map → connectors-HWENZFKW.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/driver-targets.js +1 -1
- package/dist/core/index.js +8 -8
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +6 -6
- package/dist/core/src/agent-instances.d.ts +93 -0
- package/dist/core/src/agent-instances.d.ts.map +1 -0
- package/dist/core/src/agent-prompt-sections.d.ts +90 -0
- package/dist/core/src/agent-prompt-sections.d.ts.map +1 -0
- package/dist/core/src/driver-targets.d.ts +4 -2
- package/dist/core/src/driver-targets.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +12 -8
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +71 -27
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +6 -92
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +47 -3
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/type-guards.d.ts +3 -0
- package/dist/core/src/type-guards.d.ts.map +1 -0
- package/dist/core/src/walker.d.ts +7 -3
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +19 -15
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/store.js +2 -2
- package/dist/core/workspace-config.js +5 -5
- package/dist/deploy/index.js +8 -8
- package/dist/discovery/index.js +6 -6
- package/dist/discovery/src/builtin-providers.d.ts +5 -4
- package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
- package/dist/discovery/src/default-registry.d.ts +23 -0
- package/dist/discovery/src/default-registry.d.ts.map +1 -0
- package/dist/discovery/src/discover.d.ts +0 -6
- package/dist/discovery/src/discover.d.ts.map +1 -1
- package/dist/discovery/src/index.d.ts +2 -1
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/discovery/src/tree-entries.d.ts +1 -1
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/{ensure-sources-QFRA46DJ.js → ensure-sources-VCPKNPK2.js} +21 -21
- package/dist/{ensure-sources-QFRA46DJ.js.map → ensure-sources-VCPKNPK2.js.map} +1 -1
- package/dist/factory-assets/README.md +3 -3
- package/dist/factory-assets/connectors/box.js +19 -19
- package/dist/factory-assets/connectors/deploy.js +19 -19
- package/dist/factory-assets/connectors/devserver.js +19 -19
- package/dist/factory-assets/connectors/flow/adapter.js +19 -19
- package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +9 -9
- package/dist/factory-assets/connectors/flow/run-flow.js +21 -21
- package/dist/factory-assets/connectors/flow.js +19 -19
- package/dist/factory-assets/connectors/git.js +19 -19
- package/dist/factory-assets/connectors/gmail.js +19 -19
- package/dist/factory-assets/connectors/googledrive.js +19 -19
- package/dist/factory-assets/connectors/local.js +19 -19
- package/dist/factory-assets/connectors/mattermost.js +19 -19
- package/dist/factory-assets/connectors/memory.js +19 -19
- package/dist/factory-assets/connectors/minio.js +19 -19
- package/dist/factory-assets/connectors/postgres.js +19 -19
- package/dist/factory-assets/connectors/s3.js +19 -19
- package/dist/factory-assets/connectors/sharepoint.js +19 -19
- package/dist/factory-assets/connectors/sqlite.js +19 -19
- package/dist/factory-assets/connectors/static-server.js +19 -19
- package/dist/factory-assets/connectors/tunnel.js +19 -19
- package/dist/factory-assets/connectors/webdav.js +19 -19
- package/dist/factory-assets/connectors/xstate-store.js +19 -19
- package/dist/factory-assets/connectors/xstate.js +19 -19
- package/dist/factory-assets/index.js.map +1 -1
- package/dist/factory-assets/presets/workspaces-authoring/workspaces-authoring.preset.yaml +9 -0
- package/dist/factory-assets/skaile.manifest.yaml +2 -2
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +16 -12
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +8 -8
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +13 -11
- package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +1 -1
- package/dist/{flows-KCARGXRT.js → flows-ENQY2DV7.js} +13 -13
- package/dist/{flows-KCARGXRT.js.map → flows-ENQY2DV7.js.map} +1 -1
- package/dist/{helpers-PSROT7CU.js → helpers-IW36CEJX.js} +21 -21
- package/dist/{helpers-PSROT7CU.js.map → helpers-IW36CEJX.js.map} +1 -1
- package/dist/library/index.js +13 -13
- package/dist/library/install.js +3 -3
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/library.d.ts +2 -12
- package/dist/library/src/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +2 -2
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts +4 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/sync/manifest-writeback.d.ts.map +1 -1
- package/dist/{library-publish-YAI7WOXC.js → library-publish-R3DQLMTD.js} +27 -27
- package/dist/{library-publish-YAI7WOXC.js.map → library-publish-R3DQLMTD.js.map} +1 -1
- package/dist/open-library-FAJZRDKE.js +40 -0
- package/dist/{open-library-Z5NJU4Z5.js.map → open-library-FAJZRDKE.js.map} +1 -1
- package/dist/open-registry-NVPCQPND.js +32 -0
- package/dist/{open-registry-TYUVN5SG.js.map → open-registry-NVPCQPND.js.map} +1 -1
- package/dist/paths-YUCP7K6U.js +22 -0
- package/dist/{paths-HKAXUR3W.js.map → paths-YUCP7K6U.js.map} +1 -1
- package/dist/{plugin-store-N6SI2TYM.js → plugin-store-66QFBNEO.js} +10 -10
- package/dist/{plugin-store-N6SI2TYM.js.map → plugin-store-66QFBNEO.js.map} +1 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/src/asset-kind-provider.d.ts +14 -2
- package/dist/plugins/src/asset-kind-provider.d.ts.map +1 -1
- package/dist/plugins/src/index.d.ts +1 -1
- package/dist/plugins/src/index.d.ts.map +1 -1
- package/dist/project-ALJIVFHI.js +41 -0
- package/dist/{project-SVS4UMGL.js.map → project-ALJIVFHI.js.map} +1 -1
- package/dist/resolver/index.js +9 -9
- package/dist/runner/index.js +34 -29
- package/dist/runner/src/agent-capabilities.d.ts +101 -0
- package/dist/runner/src/agent-capabilities.d.ts.map +1 -0
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/agents/in-process-host.d.ts +56 -0
- package/dist/runner/src/agents/in-process-host.d.ts.map +1 -0
- package/dist/runner/src/agents/instances.d.ts +62 -0
- package/dist/runner/src/agents/instances.d.ts.map +1 -0
- package/dist/runner/src/agents/json-schema.d.ts +16 -0
- package/dist/runner/src/agents/json-schema.d.ts.map +1 -0
- package/dist/runner/src/agents/memory-run-store.d.ts +19 -0
- package/dist/runner/src/agents/memory-run-store.d.ts.map +1 -0
- package/dist/runner/src/agents/run-controller.d.ts +208 -0
- package/dist/runner/src/agents/run-controller.d.ts.map +1 -0
- package/dist/runner/src/agents/standalone-surface.d.ts +30 -0
- package/dist/runner/src/agents/standalone-surface.d.ts.map +1 -0
- package/dist/runner/src/capability-registry.d.ts.map +1 -1
- package/dist/runner/src/composition/bootstrap.d.ts +13 -51
- package/dist/runner/src/composition/bootstrap.d.ts.map +1 -1
- package/dist/runner/src/composition/compile.d.ts +43 -27
- package/dist/runner/src/composition/compile.d.ts.map +1 -1
- package/dist/runner/src/composition/content-source.d.ts +94 -0
- package/dist/runner/src/composition/content-source.d.ts.map +1 -0
- package/dist/runner/src/composition/dry-run.d.ts +34 -0
- package/dist/runner/src/composition/dry-run.d.ts.map +1 -0
- package/dist/runner/src/composition/errors.d.ts +41 -0
- package/dist/runner/src/composition/errors.d.ts.map +1 -0
- package/dist/runner/src/composition/index.d.ts +10 -3
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/prompt-sections.d.ts +31 -0
- package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -0
- package/dist/runner/src/composition/resolve-instance.d.ts +140 -0
- package/dist/runner/src/composition/resolve-instance.d.ts.map +1 -0
- package/dist/runner/src/composition/resolve.d.ts +43 -25
- package/dist/runner/src/composition/resolve.d.ts.map +1 -1
- package/dist/runner/src/composition/revision-hash.d.ts +58 -0
- package/dist/runner/src/composition/revision-hash.d.ts.map +1 -0
- package/dist/runner/src/composition/run-snapshot.d.ts +37 -0
- package/dist/runner/src/composition/run-snapshot.d.ts.map +1 -0
- package/dist/runner/src/composition/types.d.ts +79 -12
- package/dist/runner/src/composition/types.d.ts.map +1 -1
- package/dist/runner/src/index.d.ts +2 -0
- package/dist/runner/src/index.d.ts.map +1 -1
- package/dist/runner/src/manifest.d.ts +1 -1
- package/dist/runner/src/manifest.d.ts.map +1 -1
- package/dist/runner/src/mixin-resolver.d.ts +14 -15
- package/dist/runner/src/mixin-resolver.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +6 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +35 -6
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +18 -18
- package/dist/sdk/bridge.js +15 -15
- package/dist/sdk/core.js +8 -8
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +34 -29
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +9 -9
- package/dist/sdk/runner.js +34 -29
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/types.js +1 -1
- package/dist/secrets/index.js +2 -2
- package/dist/session/index.js +2 -2
- package/dist/{setup-IOEZGJNC.js → setup-35JXIA3N.js} +28 -28
- package/dist/{setup-IOEZGJNC.js.map → setup-35JXIA3N.js.map} +1 -1
- package/dist/skills-CS7NE5TT.js +26 -0
- package/dist/{skills-HW6I6ZZ7.js.map → skills-CS7NE5TT.js.map} +1 -1
- package/dist/source-ISR4KRZV.js +41 -0
- package/dist/{source-OKRJT53H.js.map → source-ISR4KRZV.js.map} +1 -1
- package/dist/{source-manifest-publish-MILEQDRD.js → source-manifest-publish-P22IPK5F.js} +27 -27
- package/dist/{source-manifest-publish-MILEQDRD.js.map → source-manifest-publish-P22IPK5F.js.map} +1 -1
- package/dist/tui/index.js +34 -29
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/agent-lifecycle.d.ts +402 -0
- package/dist/types/src/agent-lifecycle.d.ts.map +1 -0
- package/dist/types/src/capabilities.d.ts +0 -4
- package/dist/types/src/capabilities.d.ts.map +1 -1
- package/dist/types/src/delivery.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +66 -4
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/lifecycle.d.ts +21 -3
- package/dist/types/src/lifecycle.d.ts.map +1 -1
- package/dist/types/src/manifests/_shared.d.ts +1 -16
- package/dist/types/src/manifests/_shared.d.ts.map +1 -1
- package/dist/types/src/manifests/agent-composition.d.ts +44 -0
- package/dist/types/src/manifests/agent-composition.d.ts.map +1 -0
- package/dist/types/src/manifests/agent.d.ts +184 -6
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +6 -15
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +5 -5
- package/dist/types/src/version.d.ts +16 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +26 -26
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/asset-feeds-KTFUB7EX.js.map +0 -1
- package/dist/chunk-2D2P7HSR.js +0 -15
- package/dist/chunk-2D2P7HSR.js.map +0 -1
- package/dist/chunk-3JHFFIQ6.js.map +0 -1
- package/dist/chunk-5CYEWBPB.js +0 -440
- package/dist/chunk-5CYEWBPB.js.map +0 -1
- package/dist/chunk-5Y3L7XWH.js.map +0 -1
- package/dist/chunk-75EX5GY4.js.map +0 -1
- package/dist/chunk-AC2N5BRP.js.map +0 -1
- package/dist/chunk-DPMKI26Y.js.map +0 -1
- package/dist/chunk-G2O2AARG.js.map +0 -1
- package/dist/chunk-K2K7OF4P.js.map +0 -1
- package/dist/chunk-LFMX2UEF.js.map +0 -1
- package/dist/chunk-MMC24L2W.js.map +0 -1
- package/dist/chunk-N3Y43LMZ.js.map +0 -1
- package/dist/chunk-ORUHADS6.js.map +0 -1
- package/dist/chunk-P6KFWTGP.js.map +0 -1
- package/dist/chunk-R4G7XI7A.js.map +0 -1
- package/dist/chunk-TNWXGHLD.js.map +0 -1
- package/dist/chunk-TOSHZX4C.js.map +0 -1
- package/dist/chunk-WX74MVNA.js.map +0 -1
- package/dist/chunk-Y7UBRRKG.js.map +0 -1
- package/dist/chunk-YK7WJSTD.js.map +0 -1
- package/dist/factory-assets/bundles/workspaces-authoring/workspaces-authoring.bundle.yaml +0 -9
- package/dist/open-library-Z5NJU4Z5.js +0 -40
- package/dist/open-registry-TYUVN5SG.js +0 -32
- package/dist/paths-HKAXUR3W.js +0 -22
- package/dist/project-SVS4UMGL.js +0 -36
- package/dist/skills-HW6I6ZZ7.js +0 -26
- package/dist/source-OKRJT53H.js +0 -41
- package/dist/types/src/manifests/mount.d.ts +0 -21
- package/dist/types/src/manifests/mount.d.ts.map +0 -1
|
@@ -1,22 +1,107 @@
|
|
|
1
|
-
import { getStoreManifestsDir } from './chunk-
|
|
2
|
-
import { readManifestSourceConfig, discoverAssetsInTree } from './chunk-
|
|
3
|
-
import { deployAll, removeAsset, canonicalEntryRef, createScaffold } from './chunk-
|
|
4
|
-
import { resolveConfiguredDriverTarget, GLOBAL_INSTALL_DIR_NAME, resolveLibraryDir, buildLibraryLockEntries, writeLock, buildLockFile, readLock, verifyLock, mergeLockFile, extractForPatch, generatePatch, savePatch, applyPatch } from './chunk-3JHFFIQ6.js';
|
|
5
|
-
import { resolveRuntimeAssets, factoryAssetRoots } from './chunk-YK7WJSTD.js';
|
|
6
|
-
import { deployedBase, deployedDir, isDeployed } from './chunk-XGIS325V.js';
|
|
7
|
-
import { loadMcpServerDeclarations, resolveGlobalHarnesses, resolveGlobalSkWorkspaceConfig, resolveSkWorkspaceConfig, getGlobalCacheDir, sourceCacheKey, getRepoCommit, matchPin, coerceVersion, resolveAll, buildProvenanceIndex, ensureRepo, sourceShortName, scanRepo, SKAILE_YAML_DEFAULT, checkRepoStatus, resolveAsset, readLinks, storeManifestSlug } from './chunk-ORUHADS6.js';
|
|
8
|
-
import { globalSkaileDir, globalCacheRoot, migrateLegacyDir } from './chunk-MFHKHXDE.js';
|
|
9
|
-
import { scanDirectory, parseRequires } from './chunk-LFMX2UEF.js';
|
|
10
|
-
import { parseAssetRef, parseAssetRefLoose, assetRefToStr, slugifyAssetName } from './chunk-WX74MVNA.js';
|
|
1
|
+
import { getStoreManifestsDir } from './chunk-MX3UQXLU.js';
|
|
2
|
+
import { readManifestSourceConfig, discoverAssetsInTree } from './chunk-XOGG7VDZ.js';
|
|
3
|
+
import { installAgent, installTargetOf, deployAll, removeAsset, canonicalEntryRef, createScaffold } from './chunk-IPWR33AW.js';
|
|
11
4
|
import { appendHistory, getRecentHistory, clearHistory } from './chunk-KTBKW2FI.js';
|
|
12
5
|
import { commitChanges } from './chunk-UQ6LFBPZ.js';
|
|
6
|
+
import { driverTargetSupportsAgents, CODEX_IDENTITY_DIR } from './chunk-VKSXST23.js';
|
|
7
|
+
import { resolveConfiguredDriverTarget, GLOBAL_INSTALL_DIR_NAME, resolveLibraryDir, buildLibraryLockEntries, writeLock, buildLockFile, readLock, verifyLock, mergeLockFile, extractForPatch, generatePatch, savePatch, applyPatch } from './chunk-TZCQ7ZWQ.js';
|
|
8
|
+
import { resolveRuntimeAssets, factoryAssetRoots } from './chunk-BF33SCLY.js';
|
|
9
|
+
import { deployedBase, deployedDir, isDeployed } from './chunk-46OVMT76.js';
|
|
10
|
+
import { resolveSkWorkspaceConfig, effectiveAgentInstances, resolveAgentDefinitionDir, loadMcpServerDeclarations, resolveGlobalHarnesses, resolveGlobalSkWorkspaceConfig, getGlobalCacheDir, sourceCacheKey, getRepoCommit, matchPin, coerceVersion, resolveAll, buildProvenanceIndex, ensureRepo, sourceShortName, scanRepo, SKAILE_YAML_DEFAULT, checkRepoStatus, resolveAsset, readLinks, storeManifestSlug } from './chunk-2W4LBLIN.js';
|
|
11
|
+
import { globalSkaileDir, globalCacheRoot, migrateLegacyDir } from './chunk-MFHKHXDE.js';
|
|
12
|
+
import { DRIVER_TARGETS } from './chunk-CPSIPIX7.js';
|
|
13
|
+
import { scanDirectory, parseRequires } from './chunk-PA7WLID3.js';
|
|
14
|
+
import { parseAssetRef, parseAssetRefLoose, assetRefToStr, slugifyAssetName } from './chunk-AO7VJ6G6.js';
|
|
13
15
|
import { spawnSync } from 'child_process';
|
|
14
|
-
import { existsSync,
|
|
15
|
-
import path, { resolve,
|
|
16
|
+
import { existsSync, rmSync, readdirSync, lstatSync, unlinkSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
|
|
17
|
+
import path, { join, resolve, dirname, sep, posix } from 'path';
|
|
16
18
|
import { gt } from 'semver';
|
|
17
19
|
import { stringify, parse } from 'yaml';
|
|
18
20
|
import fs from 'fs/promises';
|
|
19
21
|
|
|
22
|
+
var ledgerPath = (projectDir) => join(projectDir, ".skaile", "agent-instances-managed.json");
|
|
23
|
+
function readLedger(projectDir) {
|
|
24
|
+
const p = ledgerPath(projectDir);
|
|
25
|
+
if (!existsSync(p)) return { version: 1, targets: {} };
|
|
26
|
+
try {
|
|
27
|
+
const parsed = JSON.parse(readFileSync(p, "utf-8"));
|
|
28
|
+
return { version: 1, targets: parsed.targets ?? {} };
|
|
29
|
+
} catch {
|
|
30
|
+
return { version: 1, targets: {} };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function writeLedger(projectDir, ledger) {
|
|
34
|
+
const p = ledgerPath(projectDir);
|
|
35
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
36
|
+
writeFileSync(p, `${JSON.stringify(ledger, null, 2)}
|
|
37
|
+
`, "utf-8");
|
|
38
|
+
}
|
|
39
|
+
function installAgentInstances(opts) {
|
|
40
|
+
const { projectDir, driverTarget, log } = opts;
|
|
41
|
+
const result = { instances: [], removed: [], warnings: [] };
|
|
42
|
+
if (!driverTargetSupportsAgents(driverTarget)) return result;
|
|
43
|
+
const wsConfig = opts.wsConfig ?? resolveSkWorkspaceConfig(projectDir);
|
|
44
|
+
const instances = effectiveAgentInstances(wsConfig);
|
|
45
|
+
const agentDeployDir = deployedBase("agent", driverTarget, false, projectDir);
|
|
46
|
+
const skillsRelDir = DRIVER_TARGETS[driverTarget]?.local.skill ?? "";
|
|
47
|
+
const ledger = readLedger(projectDir);
|
|
48
|
+
const previous = ledger.targets[driverTarget] ?? {};
|
|
49
|
+
const owned = {};
|
|
50
|
+
for (const [id, instance] of Object.entries(instances)) {
|
|
51
|
+
let srcDir;
|
|
52
|
+
try {
|
|
53
|
+
srcDir = resolveAgentDefinitionDir(projectDir, instance.ref);
|
|
54
|
+
} catch (err) {
|
|
55
|
+
result.warnings.push(
|
|
56
|
+
`agent instance "${id}": ${err instanceof Error ? err.message : String(err)}`
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
if (srcDir === void 0 || !existsSync(join(srcDir, "agent.yaml"))) {
|
|
60
|
+
if (srcDir !== void 0) {
|
|
61
|
+
result.warnings.push(
|
|
62
|
+
`agent instance "${id}": ${instance.ref} resolves to ${srcDir}, which has no agent.yaml`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
if (previous[id]) owned[id] = previous[id];
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const rendered = installAgent(
|
|
69
|
+
srcDir,
|
|
70
|
+
agentDeployDir,
|
|
71
|
+
projectDir,
|
|
72
|
+
driverTarget,
|
|
73
|
+
skillsRelDir,
|
|
74
|
+
id,
|
|
75
|
+
/* includeSubAgents */
|
|
76
|
+
true,
|
|
77
|
+
/* @__PURE__ */ new Set(),
|
|
78
|
+
wsConfig,
|
|
79
|
+
log,
|
|
80
|
+
instance
|
|
81
|
+
);
|
|
82
|
+
result.warnings.push(...rendered.warnings);
|
|
83
|
+
const files = [...new Set(rendered.created)];
|
|
84
|
+
owned[id] = files;
|
|
85
|
+
result.instances.push({ id, files });
|
|
86
|
+
}
|
|
87
|
+
const claimed = new Set(Object.values(owned).flat());
|
|
88
|
+
const root = resolve(projectDir);
|
|
89
|
+
const removable = [resolve(agentDeployDir), resolve(dirname(agentDeployDir), CODEX_IDENTITY_DIR)];
|
|
90
|
+
for (const rel of Object.values(previous).flat()) {
|
|
91
|
+
if (claimed.has(rel)) continue;
|
|
92
|
+
const abs = resolve(root, rel);
|
|
93
|
+
if (!removable.some((dir) => abs.startsWith(dir + sep)) || !existsSync(abs)) continue;
|
|
94
|
+
rmSync(abs, { recursive: true, force: true });
|
|
95
|
+
result.removed.push(rel);
|
|
96
|
+
}
|
|
97
|
+
const nextTargets = { ...ledger.targets };
|
|
98
|
+
if (Object.keys(owned).length > 0) nextTargets[driverTarget] = owned;
|
|
99
|
+
else delete nextTargets[driverTarget];
|
|
100
|
+
if (JSON.stringify(nextTargets) !== JSON.stringify(ledger.targets)) {
|
|
101
|
+
writeLedger(projectDir, { version: 1, targets: nextTargets });
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
20
105
|
var TARGET_MCP_CONFIG = {
|
|
21
106
|
"claude-code": ".mcp.json"
|
|
22
107
|
};
|
|
@@ -199,7 +284,6 @@ function pinsBySlug(sources) {
|
|
|
199
284
|
var MD_BY_KIND = {
|
|
200
285
|
skill: "SKILL.md",
|
|
201
286
|
agent: "AGENT.md",
|
|
202
|
-
bundle: "BUNDLE.md",
|
|
203
287
|
"mcp-server": "MCP.md",
|
|
204
288
|
connector: "CONNECTOR.md",
|
|
205
289
|
prompt: "PROMPT.md",
|
|
@@ -211,19 +295,13 @@ function matchManifestPath(kind, paths) {
|
|
|
211
295
|
const hit = paths.find((p) => p.endsWith(exact));
|
|
212
296
|
if (hit) return hit;
|
|
213
297
|
}
|
|
298
|
+
if (kind === "preset") return paths.find((p) => p.endsWith(".preset.yaml"));
|
|
214
299
|
if (kind === "prompt") return paths.find((p) => p.endsWith(".prompt.md"));
|
|
215
300
|
if (kind === "flow") {
|
|
216
301
|
return paths.find((p) => p.endsWith(".flow.yaml") || p.endsWith(".flow.json"));
|
|
217
302
|
}
|
|
218
303
|
return void 0;
|
|
219
304
|
}
|
|
220
|
-
var NON_DEPLOYABLE_KINDS = /* @__PURE__ */ new Set([
|
|
221
|
-
"bundle",
|
|
222
|
-
"mcp-server",
|
|
223
|
-
"persona",
|
|
224
|
-
"ruleset",
|
|
225
|
-
"knowledge"
|
|
226
|
-
]);
|
|
227
305
|
function unscopedName(x) {
|
|
228
306
|
return x.includes("/") ? x.split("/").pop() : x;
|
|
229
307
|
}
|
|
@@ -254,7 +332,7 @@ function indexLockByKindName(lock) {
|
|
|
254
332
|
}
|
|
255
333
|
return lockByKindName;
|
|
256
334
|
}
|
|
257
|
-
function libraryDiskHashes(libPath, cache) {
|
|
335
|
+
function libraryDiskHashes(libPath, cache, registry) {
|
|
258
336
|
let hashes = cache.get(libPath);
|
|
259
337
|
if (!hashes) {
|
|
260
338
|
const sourceConfig = readManifestSourceConfig(libPath, "library") ?? {
|
|
@@ -265,7 +343,7 @@ function libraryDiskHashes(libPath, cache) {
|
|
|
265
343
|
dev_paths: []
|
|
266
344
|
};
|
|
267
345
|
hashes = new Map(
|
|
268
|
-
discoverAssetsInTree(libPath, { sourceConfig }).assets.map((a) => [
|
|
346
|
+
discoverAssetsInTree(libPath, { sourceConfig, registry }).assets.map((a) => [
|
|
269
347
|
`${a.kind}:${a.name}`,
|
|
270
348
|
a.sha256
|
|
271
349
|
])
|
|
@@ -420,6 +498,9 @@ var AssetManager = class {
|
|
|
420
498
|
driverTarget;
|
|
421
499
|
/** Whether this instance operates in global-install mode. */
|
|
422
500
|
global;
|
|
501
|
+
/** Asset-kind registry shared with the host (one instance per process). */
|
|
502
|
+
registry;
|
|
503
|
+
_knownKinds;
|
|
423
504
|
/** Explicit global-harness override (global mode only); else auto-resolved. */
|
|
424
505
|
harnessesOverride;
|
|
425
506
|
/** Injected catalog fetcher (tests / custom); falls back to a built one. */
|
|
@@ -435,6 +516,7 @@ var AssetManager = class {
|
|
|
435
516
|
constructor(opts) {
|
|
436
517
|
this.projectDir = resolve(opts.projectDir);
|
|
437
518
|
this.global = opts.global ?? false;
|
|
519
|
+
this.registry = opts.registry;
|
|
438
520
|
this.driverTarget = opts.driverTarget ?? (this.global ? void 0 : resolveConfiguredDriverTarget(this.projectDir)) ?? "claude-code";
|
|
439
521
|
this.harnessesOverride = opts.harnesses ?? opts.backends;
|
|
440
522
|
this.injectedStoreFetcher = opts.storeFetcher;
|
|
@@ -443,6 +525,19 @@ var AssetManager = class {
|
|
|
443
525
|
this.indexPathOverride = opts.indexPath;
|
|
444
526
|
this.onLibraryCollision = opts.onLibraryCollision;
|
|
445
527
|
}
|
|
528
|
+
/** Registered kind names — the `knownKinds` argument of the manifest scanners. */
|
|
529
|
+
get knownKinds() {
|
|
530
|
+
this._knownKinds ??= new Set(this.registry.getAllKinds());
|
|
531
|
+
return this._knownKinds;
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* The harness component dir a kind installs into (its provider's
|
|
535
|
+
* `installTarget`), or `undefined` for composition-only kinds, which are only
|
|
536
|
+
* cached in the store cache and composed at session start.
|
|
537
|
+
*/
|
|
538
|
+
installTarget(kind) {
|
|
539
|
+
return installTargetOf(this.registry, kind);
|
|
540
|
+
}
|
|
446
541
|
/**
|
|
447
542
|
* Root for this manager's **state** — config SSOT, lock, cache, history.
|
|
448
543
|
* `~/.skaile` in global mode (the cross-harness SSOT), else the project dir.
|
|
@@ -493,7 +588,13 @@ var AssetManager = class {
|
|
|
493
588
|
/** Deploy options for one harness. In global mode, `driverTarget` is the
|
|
494
589
|
* fan-out target (not the constructor's `driverTarget`, which is project-only). */
|
|
495
590
|
deployOptsFor(target, link) {
|
|
496
|
-
return {
|
|
591
|
+
return {
|
|
592
|
+
registry: this.registry,
|
|
593
|
+
driverTarget: target,
|
|
594
|
+
global: this.global,
|
|
595
|
+
cwd: this.projectDir,
|
|
596
|
+
link: link === true
|
|
597
|
+
};
|
|
497
598
|
}
|
|
498
599
|
/**
|
|
499
600
|
* Render the project's declared MCP servers into the driver target's own
|
|
@@ -515,6 +616,29 @@ var AssetManager = class {
|
|
|
515
616
|
);
|
|
516
617
|
}
|
|
517
618
|
}
|
|
619
|
+
/**
|
|
620
|
+
* Render every agent instance of `skaile.yaml` into the driver target's native
|
|
621
|
+
* agent files (`.claude/agents/<id>.md`, …) and prune the renderings of
|
|
622
|
+
* instances that left the config. Runs after the skills deploy, so composed
|
|
623
|
+
* skills resolve. Project scope only. Never fails an install — a render error
|
|
624
|
+
* is warned and swallowed.
|
|
625
|
+
*/
|
|
626
|
+
renderAgentInstances() {
|
|
627
|
+
if (this.global) return {};
|
|
628
|
+
try {
|
|
629
|
+
const result = installAgentInstances({
|
|
630
|
+
projectDir: this.projectDir,
|
|
631
|
+
driverTarget: this.driverTarget
|
|
632
|
+
});
|
|
633
|
+
for (const w of result.warnings) console.warn(`skaile: ${w}`);
|
|
634
|
+
return { agentInstances: result.instances, agentFilesRemoved: result.removed };
|
|
635
|
+
} catch (err) {
|
|
636
|
+
console.warn(
|
|
637
|
+
`skaile: could not render agent instances for ${this.driverTarget}: ${err instanceof Error ? err.message : String(err)}`
|
|
638
|
+
);
|
|
639
|
+
return {};
|
|
640
|
+
}
|
|
641
|
+
}
|
|
518
642
|
loadConfig() {
|
|
519
643
|
const config = this.global ? resolveGlobalSkWorkspaceConfig() : resolveSkWorkspaceConfig(this.projectDir);
|
|
520
644
|
const sources = config.sources ?? [];
|
|
@@ -664,7 +788,7 @@ var AssetManager = class {
|
|
|
664
788
|
const isDefaultLib = new Map(roots.map((r) => [r.name, r.isDefault]));
|
|
665
789
|
for (const { name, dir } of roots) {
|
|
666
790
|
const publisher = readDeclaredPublisher(dir) ?? slugifyAssetName(name);
|
|
667
|
-
for (const entry of await scanDirectory(dir, publisher)) {
|
|
791
|
+
for (const entry of await scanDirectory(dir, publisher, { knownKinds: this.knownKinds })) {
|
|
668
792
|
const key = `${entry.kind}:@${entry.publisher}/${entry.name}`;
|
|
669
793
|
const list = byKey.get(key);
|
|
670
794
|
if (list) list.push({ entry, library: name });
|
|
@@ -756,7 +880,7 @@ var AssetManager = class {
|
|
|
756
880
|
const publisher = e.publisher ?? "";
|
|
757
881
|
const def = newestLibraryDef(snap, name, { kind: e.kind, publisher, name: e.name });
|
|
758
882
|
const libPath = this.libraryPath(name, snap);
|
|
759
|
-
const sha256 = (libPath ? libraryDiskHashes(libPath, diskHashes).get(`${e.kind}:${e.name}`) : void 0) ?? def?.sha256;
|
|
883
|
+
const sha256 = (libPath ? libraryDiskHashes(libPath, diskHashes, this.registry).get(`${e.kind}:${e.name}`) : void 0) ?? def?.sha256;
|
|
760
884
|
return {
|
|
761
885
|
kind: e.kind,
|
|
762
886
|
publisher,
|
|
@@ -795,7 +919,7 @@ var AssetManager = class {
|
|
|
795
919
|
);
|
|
796
920
|
continue;
|
|
797
921
|
}
|
|
798
|
-
const found = (await scanDirectory(libPath, publisher)).find(
|
|
922
|
+
const found = (await scanDirectory(libPath, publisher, { knownKinds: this.knownKinds })).find(
|
|
799
923
|
(x) => x.kind === kind && x.name === name
|
|
800
924
|
);
|
|
801
925
|
if (!found) {
|
|
@@ -811,7 +935,7 @@ var AssetManager = class {
|
|
|
811
935
|
continue;
|
|
812
936
|
}
|
|
813
937
|
if (origin.sha256) {
|
|
814
|
-
const onDisk = libraryDiskHashes(libPath, diskHashes).get(`${kind}:${name}`);
|
|
938
|
+
const onDisk = libraryDiskHashes(libPath, diskHashes, this.registry).get(`${kind}:${name}`);
|
|
815
939
|
if (onDisk !== void 0 && onDisk !== origin.sha256) {
|
|
816
940
|
missing.push(
|
|
817
941
|
`${ref} (library "${origin.name}" content changed since lock \u2014 or the lock predates the one shared asset hash; re-lock with \`skaile install\`)`
|
|
@@ -857,7 +981,8 @@ var AssetManager = class {
|
|
|
857
981
|
overrides: opts.overrides,
|
|
858
982
|
stores: opts.stores,
|
|
859
983
|
storeFetcher: this.storeFetcherFor(opts.stores),
|
|
860
|
-
projectDir: this.projectDir
|
|
984
|
+
projectDir: this.projectDir,
|
|
985
|
+
knownKinds: this.knownKinds
|
|
861
986
|
});
|
|
862
987
|
if (first.missing.length === 0) return first;
|
|
863
988
|
const fallback = await this.globalStoreFallback(opts.stores);
|
|
@@ -869,7 +994,8 @@ var AssetManager = class {
|
|
|
869
994
|
overrides: opts.overrides,
|
|
870
995
|
stores,
|
|
871
996
|
storeFetcher: this.storeFetcherFor(stores),
|
|
872
|
-
projectDir: this.projectDir
|
|
997
|
+
projectDir: this.projectDir,
|
|
998
|
+
knownKinds: this.knownKinds
|
|
873
999
|
});
|
|
874
1000
|
return retry.missing.length < first.missing.length ? retry : first;
|
|
875
1001
|
} catch {
|
|
@@ -920,7 +1046,7 @@ var AssetManager = class {
|
|
|
920
1046
|
* Fetch + SHA-verify the bytes of every store-resolved candidate that needs
|
|
921
1047
|
* bytes on disk into `.skaile/cache/store/`, reusing the same verified-fetch
|
|
922
1048
|
* path the pointer-only `library.install` uses (`installFromManifest` flat
|
|
923
|
-
* mode).
|
|
1049
|
+
* mode). Every kind with bytes, composition-only kinds included.
|
|
924
1050
|
*
|
|
925
1051
|
* @returns Map of candidate key → staged primary-manifest path.
|
|
926
1052
|
*/
|
|
@@ -928,7 +1054,6 @@ var AssetManager = class {
|
|
|
928
1054
|
const staged = /* @__PURE__ */ new Map();
|
|
929
1055
|
let installFromManifest;
|
|
930
1056
|
for (const c of resolved) {
|
|
931
|
-
if (NON_DEPLOYABLE_KINDS.has(c.kind) && c.kind !== "mcp-server") continue;
|
|
932
1057
|
if (!c.files || c.files.length === 0 || !c.sourceUrl || !c.commit) continue;
|
|
933
1058
|
if (this.candidateHasLocalBytes(c, repositories)) continue;
|
|
934
1059
|
if (!installFromManifest) {
|
|
@@ -998,7 +1123,12 @@ var AssetManager = class {
|
|
|
998
1123
|
}
|
|
999
1124
|
/** Build a copy-deploy catalog entry pointing at staged store bytes. */
|
|
1000
1125
|
stagedCandidateToEntry(c, stagedManifestPath) {
|
|
1126
|
+
const paths = (c.files ?? []).map((f) => f.path);
|
|
1127
|
+
const root = commonDirPrefix(paths);
|
|
1128
|
+
const manifestDir = posix.dirname(this.stagedManifestRel(c));
|
|
1129
|
+
const files = paths.map((p) => root && p.startsWith(`${root}/`) ? p.slice(root.length + 1) : p).map((p) => posix.relative(manifestDir, p)).filter((rel) => rel !== "" && !rel.startsWith(".."));
|
|
1001
1130
|
const entry = {
|
|
1131
|
+
files,
|
|
1002
1132
|
name: c.name,
|
|
1003
1133
|
kind: c.kind,
|
|
1004
1134
|
description: c.description ?? "",
|
|
@@ -1040,13 +1170,17 @@ var AssetManager = class {
|
|
|
1040
1170
|
const cloneError = this.ensureSourceClones(repositories, sources);
|
|
1041
1171
|
if (cloneError) return cloneError;
|
|
1042
1172
|
const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
|
|
1043
|
-
projectDir: this.projectDir
|
|
1044
|
-
|
|
1045
|
-
const { resolved, missing, overridesApplied } = await this.resolveWithStores(dependencies, {
|
|
1046
|
-
provenanceIndex,
|
|
1047
|
-
overrides,
|
|
1048
|
-
stores
|
|
1173
|
+
projectDir: this.projectDir,
|
|
1174
|
+
knownKinds: this.knownKinds
|
|
1049
1175
|
});
|
|
1176
|
+
const { resolved, missing, overridesApplied, presets } = await this.resolveWithStores(
|
|
1177
|
+
dependencies,
|
|
1178
|
+
{
|
|
1179
|
+
provenanceIndex,
|
|
1180
|
+
overrides,
|
|
1181
|
+
stores
|
|
1182
|
+
}
|
|
1183
|
+
);
|
|
1050
1184
|
const lib = await this.resolveLibraryEntries(missing);
|
|
1051
1185
|
const directLock = this.directInstallLockEntries();
|
|
1052
1186
|
const libraryLock = { ...directLock, ...await this.libraryLockEntries(lib) };
|
|
@@ -1060,6 +1194,7 @@ var AssetManager = class {
|
|
|
1060
1194
|
)
|
|
1061
1195
|
];
|
|
1062
1196
|
await this.renderDriverMcpConfig();
|
|
1197
|
+
const agentRender = this.renderAgentInstances();
|
|
1063
1198
|
const lockWritten = resolved.length > 0 || lib.entries.length > 0 || existsSync(this.lockPath);
|
|
1064
1199
|
if (lockWritten) {
|
|
1065
1200
|
writeLock(this.lockPath, buildLockFile(resolved, overridesApplied, libraryLock));
|
|
@@ -1067,7 +1202,16 @@ var AssetManager = class {
|
|
|
1067
1202
|
this.recordInstallHistory(deployed, removed);
|
|
1068
1203
|
const { npmInstalled, npmFailed } = await this.installRuntimeAssetDeps();
|
|
1069
1204
|
const stillMissing = missing.filter((m) => !lib.resolved.has(m));
|
|
1070
|
-
return {
|
|
1205
|
+
return {
|
|
1206
|
+
deployed,
|
|
1207
|
+
removed,
|
|
1208
|
+
missing: stillMissing,
|
|
1209
|
+
lockWritten,
|
|
1210
|
+
npmInstalled,
|
|
1211
|
+
npmFailed,
|
|
1212
|
+
presets,
|
|
1213
|
+
...agentRender
|
|
1214
|
+
};
|
|
1071
1215
|
}
|
|
1072
1216
|
/**
|
|
1073
1217
|
* Ensure all source clones are present/up to date. Returns an early
|
|
@@ -1321,7 +1465,14 @@ var AssetManager = class {
|
|
|
1321
1465
|
)
|
|
1322
1466
|
];
|
|
1323
1467
|
await this.renderDriverMcpConfig();
|
|
1324
|
-
|
|
1468
|
+
const agentRender = this.renderAgentInstances();
|
|
1469
|
+
return {
|
|
1470
|
+
deployed,
|
|
1471
|
+
removed: [],
|
|
1472
|
+
missing: library.missing,
|
|
1473
|
+
lockWritten: false,
|
|
1474
|
+
...agentRender
|
|
1475
|
+
};
|
|
1325
1476
|
}
|
|
1326
1477
|
/**
|
|
1327
1478
|
* Add a single asset (and its transitive dependencies) to the workspace.
|
|
@@ -1344,7 +1495,8 @@ var AssetManager = class {
|
|
|
1344
1495
|
parseAssetRef(ref);
|
|
1345
1496
|
this.ensureSourceClonesQuiet(repositories, sources);
|
|
1346
1497
|
const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
|
|
1347
|
-
projectDir: this.projectDir
|
|
1498
|
+
projectDir: this.projectDir,
|
|
1499
|
+
knownKinds: this.knownKinds
|
|
1348
1500
|
});
|
|
1349
1501
|
const { resolved, missing, overridesApplied } = await this.resolveWithStores([ref], {
|
|
1350
1502
|
provenanceIndex,
|
|
@@ -1374,6 +1526,7 @@ var AssetManager = class {
|
|
|
1374
1526
|
}
|
|
1375
1527
|
this.addDependencyToConfig(ref);
|
|
1376
1528
|
await this.renderDriverMcpConfig();
|
|
1529
|
+
this.renderAgentInstances();
|
|
1377
1530
|
if (resolved.length > 0 || lib.entries.length > 0) {
|
|
1378
1531
|
const fresh = buildLockFile(resolved, overridesApplied, await this.libraryLockEntries(lib));
|
|
1379
1532
|
writeLock(this.lockPath, mergeLockFile(this.tryReadLock(), fresh));
|
|
@@ -1417,37 +1570,37 @@ var AssetManager = class {
|
|
|
1417
1570
|
);
|
|
1418
1571
|
}
|
|
1419
1572
|
/**
|
|
1420
|
-
*
|
|
1421
|
-
* `ref` as
|
|
1422
|
-
* not a dependency: nothing here installs the
|
|
1573
|
+
* Presets in the configured sources (and the bundled factory source) that list
|
|
1574
|
+
* `ref` as an asset item, for the `skaile add` discoverability hint. Membership is
|
|
1575
|
+
* not a dependency: nothing here installs the preset or its siblings.
|
|
1423
1576
|
*
|
|
1424
1577
|
* Matches on kind + name, and on publisher only when both sides carry one, so
|
|
1425
|
-
* a bare `skill:x`
|
|
1578
|
+
* a bare `skill:x` item still matches `skill:@pub/x`. Presets already
|
|
1426
1579
|
* declared in `skaile.yaml` are left out. Best-effort: any failure yields `[]`,
|
|
1427
1580
|
* so it can never fail an `add` that succeeded.
|
|
1428
1581
|
*
|
|
1429
1582
|
* @param ref - The added asset ref (`kind:name`, `kind:@pub/name`, optionally pinned).
|
|
1430
|
-
* @returns One `{ name, ref }` per containing
|
|
1431
|
-
* the `skaile add` form (`
|
|
1583
|
+
* @returns One `{ name, ref }` per containing preset, deduped by `ref`; `ref` is
|
|
1584
|
+
* the `skaile add` form (`preset:@pub/name`, or `preset:name` without a publisher).
|
|
1432
1585
|
*/
|
|
1433
|
-
async
|
|
1586
|
+
async presetsContaining(ref) {
|
|
1434
1587
|
const target = memberIdentity(ref);
|
|
1435
|
-
if (!target || target.kind === "
|
|
1588
|
+
if (!target || target.kind === "preset") return [];
|
|
1436
1589
|
try {
|
|
1437
1590
|
const sameAsset = (id, want) => !!id && id.kind === want.kind && id.name === want.name && (!id.publisher || !want.publisher || id.publisher === want.publisher);
|
|
1438
1591
|
const declared = this.loadConfig().dependencies.map(memberIdentity);
|
|
1439
1592
|
const out = [];
|
|
1440
1593
|
const seen = /* @__PURE__ */ new Set();
|
|
1441
|
-
for (const
|
|
1442
|
-
const members = [...
|
|
1594
|
+
for (const p of await this.search(void 0, "preset")) {
|
|
1595
|
+
const members = [...p.dependencies, ...p.requires.map((d) => `${d.kind}:${d.name}`)];
|
|
1443
1596
|
if (!members.some((m) => sameAsset(memberIdentity(m), target))) continue;
|
|
1444
|
-
const publisher =
|
|
1445
|
-
const
|
|
1446
|
-
if (declared.some((d) => sameAsset(d,
|
|
1447
|
-
const
|
|
1448
|
-
if (seen.has(
|
|
1449
|
-
seen.add(
|
|
1450
|
-
out.push({ name:
|
|
1597
|
+
const publisher = p.publisher?.replace(/^@/, "");
|
|
1598
|
+
const presetId = { kind: "preset", name: p.name, publisher };
|
|
1599
|
+
if (declared.some((d) => sameAsset(d, presetId))) continue;
|
|
1600
|
+
const presetRef = publisher ? assetRefToStr({ kind: "preset", name: p.name, publisher }) : `preset:${p.name}`;
|
|
1601
|
+
if (seen.has(presetRef)) continue;
|
|
1602
|
+
seen.add(presetRef);
|
|
1603
|
+
out.push({ name: p.name, ref: presetRef });
|
|
1451
1604
|
}
|
|
1452
1605
|
return out;
|
|
1453
1606
|
} catch {
|
|
@@ -1629,10 +1782,12 @@ var AssetManager = class {
|
|
|
1629
1782
|
*
|
|
1630
1783
|
* @param ref - Asset ref in `kind:name` form (e.g. `skill:my-skill`).
|
|
1631
1784
|
* @returns `true` if the asset was found and removed, `false` if it was not deployed.
|
|
1785
|
+
* A `preset:` ref has no deployed files: it is found when declared in `skaile.yaml`, and
|
|
1786
|
+
* only its declaration goes — its expanded items leave with the next `skaile install`.
|
|
1632
1787
|
*/
|
|
1633
1788
|
remove(ref) {
|
|
1634
1789
|
const parsed = parseAssetRef(ref);
|
|
1635
|
-
let ok = false;
|
|
1790
|
+
let ok = parsed.kind === "preset" ? this.removeDependencyFromConfig(parsed) : false;
|
|
1636
1791
|
for (const t of this.targetHarnesses()) {
|
|
1637
1792
|
if (removeAsset(parsed.kind, parsed.name, this.deployOptsFor(t))) ok = true;
|
|
1638
1793
|
}
|
|
@@ -1683,7 +1838,7 @@ var AssetManager = class {
|
|
|
1683
1838
|
for (const [name, decl] of Object.entries(repositories)) {
|
|
1684
1839
|
const repoDir = this.resolveRepoDir(decl, name);
|
|
1685
1840
|
if (!repoDir) continue;
|
|
1686
|
-
all = [...all, ...await scanRepo(repoDir, name)];
|
|
1841
|
+
all = [...all, ...await scanRepo(repoDir, name, { knownKinds: this.knownKinds })];
|
|
1687
1842
|
}
|
|
1688
1843
|
if (kind) all = all.filter((e) => e.kind === kind);
|
|
1689
1844
|
if (query) {
|
|
@@ -1727,7 +1882,7 @@ var AssetManager = class {
|
|
|
1727
1882
|
for (const [name, decl] of Object.entries(repositories)) {
|
|
1728
1883
|
const repoDir = this.resolveRepoDir(decl, name);
|
|
1729
1884
|
if (!repoDir) continue;
|
|
1730
|
-
const entries = await scanRepo(repoDir, name);
|
|
1885
|
+
const entries = await scanRepo(repoDir, name, { knownKinds: this.knownKinds });
|
|
1731
1886
|
const match = entries.find(
|
|
1732
1887
|
(e) => e.kind === parsed.kind && e.name === parsed.name && (!parsed.publisher || e.publisher === parsed.publisher)
|
|
1733
1888
|
);
|
|
@@ -1746,7 +1901,11 @@ var AssetManager = class {
|
|
|
1746
1901
|
* @returns Shallow {@link CatalogEntry} objects (description and version will be empty).
|
|
1747
1902
|
*/
|
|
1748
1903
|
listDeployed(kind) {
|
|
1749
|
-
const kinds = kind ? [kind]
|
|
1904
|
+
const kinds = kind ? [this.installTarget(kind)].filter((k) => k !== void 0) : [
|
|
1905
|
+
...new Set(
|
|
1906
|
+
this.registry.getAllProviders().map((p) => p.installTarget).filter((t) => t !== void 0)
|
|
1907
|
+
)
|
|
1908
|
+
];
|
|
1750
1909
|
const result = [];
|
|
1751
1910
|
const seen = /* @__PURE__ */ new Set();
|
|
1752
1911
|
for (const k of kinds) {
|
|
@@ -1758,7 +1917,7 @@ var AssetManager = class {
|
|
|
1758
1917
|
if (item.isDirectory() || item.isSymbolicLink()) {
|
|
1759
1918
|
name = item.name;
|
|
1760
1919
|
} else if (item.isFile()) {
|
|
1761
|
-
name = item.name.replace(/\.prompt\.md$/, "").replace(/\.flow\.(yaml|json)$/, "").replace(/\.
|
|
1920
|
+
name = item.name.replace(/\.prompt\.md$/, "").replace(/\.flow\.(yaml|json)$/, "").replace(/\.(md|toml|yaml|json)$/, "");
|
|
1762
1921
|
} else {
|
|
1763
1922
|
continue;
|
|
1764
1923
|
}
|
|
@@ -1796,8 +1955,9 @@ var AssetManager = class {
|
|
|
1796
1955
|
if (this.global || this.driverTarget === "claude-code") return [];
|
|
1797
1956
|
const tracked = /* @__PURE__ */ new Map();
|
|
1798
1957
|
const track = (kind, name) => {
|
|
1799
|
-
|
|
1800
|
-
|
|
1958
|
+
const component = kind ? this.installTarget(kind) : void 0;
|
|
1959
|
+
if (kind && name && component) {
|
|
1960
|
+
tracked.set(`${kind}:${name}`, { kind, name, component });
|
|
1801
1961
|
}
|
|
1802
1962
|
};
|
|
1803
1963
|
const lock = this.tryReadLock();
|
|
@@ -1818,8 +1978,7 @@ var AssetManager = class {
|
|
|
1818
1978
|
} catch {
|
|
1819
1979
|
}
|
|
1820
1980
|
const out = [];
|
|
1821
|
-
for (const { kind, name } of tracked.values()) {
|
|
1822
|
-
const k = kind;
|
|
1981
|
+
for (const { kind, name, component: k } of tracked.values()) {
|
|
1823
1982
|
const legacy = deployedDir(k, name, "claude-code", false, this.projectDir);
|
|
1824
1983
|
if (legacy === deployedDir(k, name, this.driverTarget, false, this.projectDir)) continue;
|
|
1825
1984
|
if (isDeployed(k, name, "claude-code", false, this.projectDir)) {
|
|
@@ -1833,11 +1992,12 @@ var AssetManager = class {
|
|
|
1833
1992
|
* with a reconciliation {@link DeclaredState}:
|
|
1834
1993
|
*
|
|
1835
1994
|
* - `declared` — in `skaile.yaml`, not yet resolved into the lock.
|
|
1836
|
-
* - `installed` — declared + locked, and (for
|
|
1837
|
-
* disk. An `mcp-server` is instead checked against the
|
|
1838
|
-
* would actually wire (store-staged or materialized
|
|
1839
|
-
*
|
|
1840
|
-
* locked — they are resolved at session start with no
|
|
1995
|
+
* - `installed` — declared + locked, and (for kinds with an `installTarget`)
|
|
1996
|
+
* materialized on disk. An `mcp-server` is instead checked against the
|
|
1997
|
+
* declarations the runner would actually wire (store-staged or materialized
|
|
1998
|
+
* `MCP.md`); the remaining composition-only kinds (no `installTarget`) count as
|
|
1999
|
+
* installed once locked — they are resolved at session start with no harness
|
|
2000
|
+
* footprint here.
|
|
1841
2001
|
* - `drift` — declared + locked but the deployed files are missing on disk.
|
|
1842
2002
|
* - `invalid` — the `dependencies:` entry isn't a parseable canonical ref. Only
|
|
1843
2003
|
* surfaced in the unfiltered listing (a `kind` filter can't classify it).
|
|
@@ -1879,7 +2039,7 @@ var AssetManager = class {
|
|
|
1879
2039
|
continue;
|
|
1880
2040
|
}
|
|
1881
2041
|
if (kind && parsed.kind !== kind) continue;
|
|
1882
|
-
const locked = lockKeys.some(
|
|
2042
|
+
const locked = parsed.kind === "preset" ? lock !== null : lockKeys.some(
|
|
1883
2043
|
(k) => k.kind === parsed.kind && k.name === parsed.name && (!parsed.publisher || k.publisher === parsed.publisher)
|
|
1884
2044
|
);
|
|
1885
2045
|
let state;
|
|
@@ -1888,17 +2048,20 @@ var AssetManager = class {
|
|
|
1888
2048
|
} else if (parsed.kind === "mcp-server") {
|
|
1889
2049
|
const wired = await wiredMcpNames();
|
|
1890
2050
|
state = wired.has(parsed.name) || wired.has(unscopedName(parsed.name)) ? "installed" : "drift";
|
|
1891
|
-
} else if (NON_DEPLOYABLE_KINDS.has(parsed.kind)) {
|
|
1892
|
-
state = "installed";
|
|
1893
2051
|
} else {
|
|
1894
|
-
const
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
2052
|
+
const component = this.installTarget(parsed.kind);
|
|
2053
|
+
if (!component) {
|
|
2054
|
+
state = "installed";
|
|
2055
|
+
} else {
|
|
2056
|
+
const onDisk = isDeployed(
|
|
2057
|
+
component,
|
|
2058
|
+
parsed.name,
|
|
2059
|
+
this.driverTarget,
|
|
2060
|
+
this.global,
|
|
2061
|
+
this.projectDir
|
|
2062
|
+
);
|
|
2063
|
+
state = onDisk ? "installed" : "drift";
|
|
2064
|
+
}
|
|
1902
2065
|
}
|
|
1903
2066
|
out.push({ ref, kind: parsed.kind, name: parsed.name, state });
|
|
1904
2067
|
}
|
|
@@ -1941,18 +2104,16 @@ var AssetManager = class {
|
|
|
1941
2104
|
continue;
|
|
1942
2105
|
}
|
|
1943
2106
|
if (opts?.kind && parsed.kind !== opts.kind) continue;
|
|
1944
|
-
const locked = lockKeys.some(
|
|
2107
|
+
const locked = parsed.kind === "preset" ? lock !== null : lockKeys.some(
|
|
1945
2108
|
(k) => k.kind === parsed.kind && k.name === parsed.name && (!parsed.publisher || k.publisher === parsed.publisher)
|
|
1946
2109
|
);
|
|
1947
2110
|
for (const harness of harnesses) {
|
|
1948
2111
|
let state;
|
|
1949
2112
|
if (!locked) {
|
|
1950
2113
|
state = "declared";
|
|
1951
|
-
} else if (NON_DEPLOYABLE_KINDS.has(parsed.kind)) {
|
|
1952
|
-
state = "installed";
|
|
1953
2114
|
} else {
|
|
1954
|
-
const
|
|
1955
|
-
state =
|
|
2115
|
+
const component = this.installTarget(parsed.kind);
|
|
2116
|
+
state = !component || isDeployed(component, parsed.name, harness, true) ? "installed" : "drift";
|
|
1956
2117
|
}
|
|
1957
2118
|
out.push({ ref, kind: parsed.kind, name: parsed.name, state, harness });
|
|
1958
2119
|
}
|
|
@@ -2110,8 +2271,9 @@ var AssetManager = class {
|
|
|
2110
2271
|
for (const [ref, entry] of Object.entries(lock.assets)) {
|
|
2111
2272
|
if (reported.has(ref) || entry.library?.installed) continue;
|
|
2112
2273
|
const { publisher, kind, name, version } = parseCanonicalLockKey(ref);
|
|
2113
|
-
|
|
2114
|
-
if (
|
|
2274
|
+
const component = kind ? this.installTarget(kind) : void 0;
|
|
2275
|
+
if (!kind || !name || !component) continue;
|
|
2276
|
+
if (isDeployed(component, name, this.driverTarget, this.global, this.projectDir)) {
|
|
2115
2277
|
continue;
|
|
2116
2278
|
}
|
|
2117
2279
|
result.push({
|
|
@@ -2144,8 +2306,10 @@ var AssetManager = class {
|
|
|
2144
2306
|
const parsed = parseAssetRef(ref);
|
|
2145
2307
|
const entry = await this.info(ref);
|
|
2146
2308
|
if (!entry || !existsSync(entry.source)) return { status: "not-found" };
|
|
2309
|
+
const component = this.installTarget(parsed.kind);
|
|
2310
|
+
if (!component) return { status: "not-deployed" };
|
|
2147
2311
|
const deployedPath = join(
|
|
2148
|
-
deployedBase(
|
|
2312
|
+
deployedBase(component, this.driverTarget, this.global, this.projectDir),
|
|
2149
2313
|
parsed.name
|
|
2150
2314
|
);
|
|
2151
2315
|
if (!existsSync(deployedPath)) return { status: "not-deployed" };
|
|
@@ -2167,7 +2331,8 @@ var AssetManager = class {
|
|
|
2167
2331
|
const { repositories, sources, stores, dependencies, overrides } = this.loadConfig();
|
|
2168
2332
|
this.ensureSourceClonesQuiet(repositories, sources);
|
|
2169
2333
|
const provenanceIndex = await buildProvenanceIndex(this.buildClones(repositories), {
|
|
2170
|
-
projectDir: this.projectDir
|
|
2334
|
+
projectDir: this.projectDir,
|
|
2335
|
+
knownKinds: this.knownKinds
|
|
2171
2336
|
});
|
|
2172
2337
|
const { resolved, missing, overridesApplied } = await this.resolveWithStores(dependencies, {
|
|
2173
2338
|
provenanceIndex,
|
|
@@ -2282,18 +2447,11 @@ var AssetManager = class {
|
|
|
2282
2447
|
for (const req of full.requires) {
|
|
2283
2448
|
const dep = memberIdentity(`${req.kind}:${req.name}`);
|
|
2284
2449
|
if (!dep) continue;
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
dep.name,
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
this.projectDir
|
|
2291
|
-
)) {
|
|
2292
|
-
const inRepos = await resolveAsset(
|
|
2293
|
-
{ kind: dep.kind, name: dep.name },
|
|
2294
|
-
repositories,
|
|
2295
|
-
this.reposDir
|
|
2296
|
-
) !== null;
|
|
2450
|
+
const depComponent = this.installTarget(dep.kind);
|
|
2451
|
+
if (depComponent && !isDeployed(depComponent, dep.name, this.driverTarget, this.global, this.projectDir)) {
|
|
2452
|
+
const inRepos = await resolveAsset({ kind: dep.kind, name: dep.name }, repositories, this.reposDir, {
|
|
2453
|
+
knownKinds: this.knownKinds
|
|
2454
|
+
}) !== null;
|
|
2297
2455
|
issues.push({
|
|
2298
2456
|
assetKind: entry.kind,
|
|
2299
2457
|
assetName: entry.name,
|
|
@@ -2311,7 +2469,7 @@ var AssetManager = class {
|
|
|
2311
2469
|
* Create a minimal asset scaffold directory (delegates to {@link createScaffold}).
|
|
2312
2470
|
*
|
|
2313
2471
|
* @param name - Asset name (also used as the directory name).
|
|
2314
|
-
* @param kind - Asset kind: `skill` | `agent` | `
|
|
2472
|
+
* @param kind - Asset kind: `skill` | `agent` | `preset` | `flow` | `prompt` | `contract`.
|
|
2315
2473
|
* @param destDir - Parent directory to create the asset in.
|
|
2316
2474
|
* @param opts - Optional scaffold content (`description`).
|
|
2317
2475
|
* @returns `{ ok: true, path }` on success, `{ ok: false, path: errorMessage }` if the
|
|
@@ -2372,14 +2530,9 @@ var AssetManager = class {
|
|
|
2372
2530
|
if (!lock) return removed;
|
|
2373
2531
|
for (const ref of Object.keys(lock.assets)) {
|
|
2374
2532
|
const { kind, name } = parseCanonicalLockKey(ref);
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
name,
|
|
2379
|
-
this.driverTarget,
|
|
2380
|
-
this.global,
|
|
2381
|
-
this.projectDir
|
|
2382
|
-
);
|
|
2533
|
+
const component = kind ? this.installTarget(kind) : void 0;
|
|
2534
|
+
if (!kind || !name || !component) continue;
|
|
2535
|
+
const dest = deployedDir(component, name, this.driverTarget, this.global, this.projectDir);
|
|
2383
2536
|
try {
|
|
2384
2537
|
const stat = lstatSync(dest);
|
|
2385
2538
|
if (stat.isSymbolicLink()) unlinkSync(dest);
|
|
@@ -2460,9 +2613,9 @@ var AssetManager = class {
|
|
|
2460
2613
|
*/
|
|
2461
2614
|
removeDependencyFromConfig(target) {
|
|
2462
2615
|
const configPath = join(this.stateRoot, "skaile.yaml");
|
|
2463
|
-
if (!existsSync(configPath)) return;
|
|
2616
|
+
if (!existsSync(configPath)) return false;
|
|
2464
2617
|
const raw = parse(readFileSync(configPath, "utf8")) ?? {};
|
|
2465
|
-
if (!Array.isArray(raw.dependencies)) return;
|
|
2618
|
+
if (!Array.isArray(raw.dependencies)) return false;
|
|
2466
2619
|
const wantPub = target.publisher?.replace(/^@/, "");
|
|
2467
2620
|
const idx = raw.dependencies.findIndex((dep) => {
|
|
2468
2621
|
if (typeof dep !== "string") return false;
|
|
@@ -2471,10 +2624,10 @@ var AssetManager = class {
|
|
|
2471
2624
|
const havePub = p.publisher?.replace(/^@/, "");
|
|
2472
2625
|
return wantPub === void 0 || havePub === void 0 || havePub === wantPub;
|
|
2473
2626
|
});
|
|
2474
|
-
if (idx
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2627
|
+
if (idx === -1) return false;
|
|
2628
|
+
raw.dependencies.splice(idx, 1);
|
|
2629
|
+
writeFileSync(configPath, stringify(raw, { lineWidth: 120 }));
|
|
2630
|
+
return true;
|
|
2478
2631
|
}
|
|
2479
2632
|
resolveRepoDir(decl, name) {
|
|
2480
2633
|
const links = readLinks(this.projectDir);
|
|
@@ -2493,6 +2646,6 @@ var AssetManager = class {
|
|
|
2493
2646
|
}
|
|
2494
2647
|
};
|
|
2495
2648
|
|
|
2496
|
-
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError,
|
|
2497
|
-
//# sourceMappingURL=chunk-
|
|
2498
|
-
//# sourceMappingURL=chunk-
|
|
2649
|
+
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName };
|
|
2650
|
+
//# sourceMappingURL=chunk-4CTGEEN6.js.map
|
|
2651
|
+
//# sourceMappingURL=chunk-4CTGEEN6.js.map
|