@skaile/workspaces 5.5.0 → 5.6.1
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 +95 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-KTFUB7EX.js → asset-feeds-LU7NHOAP.js} +27 -14
- package/dist/asset-feeds-LU7NHOAP.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-75EX5GY4.js → chunk-2KOKBTR4.js} +197 -118
- package/dist/chunk-2KOKBTR4.js.map +1 -0
- 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-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-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-EJYZ3MKJ.js → chunk-65EYRFZJ.js} +4 -4
- package/dist/{chunk-EJYZ3MKJ.js.map → chunk-65EYRFZJ.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-5Y3L7XWH.js → chunk-D2V42LUE.js} +15 -15
- package/dist/chunk-D2V42LUE.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-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-UFS3FEBA.js → chunk-GP6ZL7PE.js} +3 -3
- package/dist/{chunk-UFS3FEBA.js.map → chunk-GP6ZL7PE.js.map} +1 -1
- package/dist/{chunk-P6KFWTGP.js → chunk-I4QBZLOR.js} +7 -12
- package/dist/chunk-I4QBZLOR.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-BNUZEYC3.js → chunk-NARITJS2.js} +3 -3
- package/dist/{chunk-BNUZEYC3.js.map → chunk-NARITJS2.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-MMC24L2W.js → chunk-PTO2YDDG.js} +286 -121
- package/dist/chunk-PTO2YDDG.js.map +1 -0
- package/dist/{chunk-3665M43C.js → chunk-QD772CGQ.js} +5 -5
- package/dist/{chunk-3665M43C.js.map → chunk-QD772CGQ.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-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-LAI7X6I2.js → chunk-VBBBZDI7.js} +3 -3
- package/dist/{chunk-LAI7X6I2.js.map → chunk-VBBBZDI7.js.map} +1 -1
- package/dist/{chunk-R4G7XI7A.js → chunk-VJENKWXF.js} +4 -5
- package/dist/chunk-VJENKWXF.js.map +1 -0
- 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-N3Y43LMZ.js → chunk-WIHQWVWL.js} +34 -11
- package/dist/chunk-WIHQWVWL.js.map +1 -0
- 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 +5025 -3406
- 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-DSTSXJWK.js} +21 -21
- package/dist/{ensure-sources-QFRA46DJ.js.map → ensure-sources-DSTSXJWK.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-R44RUTDY.js} +21 -21
- package/dist/{helpers-PSROT7CU.js.map → helpers-R44RUTDY.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-LFOJJVMK.js} +27 -27
- package/dist/{library-publish-YAI7WOXC.js.map → library-publish-LFOJJVMK.js.map} +1 -1
- package/dist/open-library-4WUMQHES.js +40 -0
- package/dist/{open-library-Z5NJU4Z5.js.map → open-library-4WUMQHES.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-VMOHUXBD.js +41 -0
- package/dist/{project-SVS4UMGL.js.map → project-VMOHUXBD.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-PYY23HGZ.js} +28 -28
- package/dist/{setup-IOEZGJNC.js.map → setup-PYY23HGZ.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-JCF6KSQN.js +41 -0
- package/dist/{source-OKRJT53H.js.map → source-JCF6KSQN.js.map} +1 -1
- package/dist/{source-manifest-publish-MILEQDRD.js → source-manifest-publish-O6P7G2M7.js} +27 -27
- package/dist/{source-manifest-publish-MILEQDRD.js.map → source-manifest-publish-O6P7G2M7.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 +3 -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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,100 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.6.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1031](https://github.com/skaile-ai/workspaces/pull/1031) [`377e0d6`](https://github.com/skaile-ai/workspaces/commit/377e0d6736eb01d828aaf74764e09fd82db96b53) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile migrate agents` no longer copies a legacy `requires[].name` such as `Code Reviewer` or `foo.bar` verbatim into `composes[].as`, which failed validation and got the whole `agent.yaml` skipped. The name is slugified (`code-reviewer`, `foo-bar`) with a note naming the original; a name with no valid slug, or one that collides with another alias in the same agent, omits `as` and is listed under the plan's manual section.
|
|
8
|
+
|
|
9
|
+
- Tests now pin the run controller's cancel races: a cancel while a run is moving from `queued` to `running`, and a cancel while the nested session is being created or started, each end `cancelled`, settle `agent.result { wait: true }` and dispose the half-started session.
|
|
10
|
+
|
|
11
|
+
- [#1034](https://github.com/skaile-ai/workspaces/pull/1034) [`85bf2cc`](https://github.com/skaile-ai/workspaces/commit/85bf2cc7dc8517f90568ac4bdb26299db617b8d3) Thanks [@mortegro](https://github.com/mortegro)! - - `skaile install` deploys every file the lock records for an asset from a `sources:` clone again. Since 5.6.0 such assets were copied through the kind's convention filter, so a skill's `.gitignore` or `resources/` dir was dropped while `skaile.lock.yaml` still listed it. Store-staged assets already copied their full file list; both paths now share it.
|
|
12
|
+
- A re-install compares every deployed file of an asset, not only its manifest, so a deleted or stale companion file (`scripts/`, `resources/`, dotfiles) is restored even when `SKILL.md` is unchanged.
|
|
13
|
+
|
|
14
|
+
## 5.6.0
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - The runner now resolves one agent instance per session. `resolveAgentInstance({ instanceId, instance, asset, projectDir, source?, host?, ... })` (`@skaile/workspaces/runner`) replaces `resolveAgentComposition` and returns a `ResolvedAgentInstance`: inline blocks, discoverable entries, `subagents: { delegate, run }`, `memoryBlocks`, effective `triggers`, `io`, connector `slots`, `warnings` and a stable `revisionHash`. The convention files (`SOUL.md`, `RULES.md`, `DUTIES.md`, `knowledge/`) compose first as implicit items; a standalone `persona` / `ruleset` composes like its convention file. `kind: agent` items default to `delegate` when the driver has native sub-agents, else `run`. Memory blocks take the instance's `memory.scope`, are seeded from their `source` file and take host content when the host provides it; triggers merge by id with the instance's overrides (`enabled: false` drops one). A required `capabilities[]` entry that the host, the composition and the bound connector slots do not provide fails session start with `composition_asset_missing`; an optional one is a warning. `createAgentSession` accepts `instanceId` (default `default`) and exposes the resolved instance as `session.composition`.
|
|
19
|
+
|
|
20
|
+
`revisionHash` (`computeRevisionHash`, `hashAgentFiles`) is the SHA-256 of the normalized manifest, the sorted file entries and the composition entries; it excludes timestamps, host ids, the instance id and connector bindings. `skaile run --dry-run` prints the instance and its revision hash, and `skaile rebuild` now compiles the convention-file items too.
|
|
21
|
+
|
|
22
|
+
One section builder fixes the order of an agent's prompt for both the install renderers and the runner (`buildAgentPromptSections`, `@skaile/workspaces/core`): soul → `<MEMORY>` → fragments → constraints → duties → abilities → contracts → composed blocks → prompt-extensions. `<MEMORY>` frames each memory block as `<block name=… scope=…>` capped at its `max_chars`. The system-prompt breakdown (`SystemPromptSection`) gains a `memory` label. `resolveAgentMixins` and `AgentMixinContent` (runner `mixin-resolver`) are removed; their persona / rules / knowledge fields are read through `composes:` and the convention files.
|
|
23
|
+
|
|
24
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - Agent runs have a framework-owned lifecycle. `createRunController({ store, launch, authorize, getInstance, execute, workspaceId, limits? })` (`@skaile/workspaces/runner`) is the authority behind `agent.run` / status / cancel / result / `approval.decide`: `AgentRun` records move `queued -> running -> waiting_approval | waiting_children -> succeeded | failed | cancelled`; delegation depth is capped at 2 and a root run has at most 4 live children (a parent in `waiting_children` holds no driver and resumes with a `children_finished` host message when the last child ends); the runs of one `standing` instance execute one at a time; cancel stops the run and every descendant; `agent.run` is idempotent per `(callerSessionId, callId)`, so a redelivered dispatch answers the same `runId`. Approvals are persisted: a held capability call (or a held start) parks the run, deciding claims the approval with a compare-and-set, executes the stored operation exactly once under its `operationId`, persists the result and resumes the native session with `{ type: "approval_result", operationId, status, result }`. A replay with changed args, a consumed or expired approval, or stored args that no longer match their `argsHash` is `approval_invalid`; an approval a restart cut short is never re-run (`operation_outcome_unknown`). State changes append `AgentRunEvent`s to the store (a host persists them as `agent_run_events` and broadcasts from `onEvent`); `subagent` events carry `runId`. The controller imports no host code: storage is the injected `RunStore` (`createInMemoryRunStore()` ships for `skaile run`, `skaile repl` and tests; Forge brings a durable one), execution the injected `launch`.
|
|
25
|
+
|
|
26
|
+
The in-process `agent.run` host that serves `skaile run` / `skaile repl` is now this controller over the in-memory store with a nested-driver launcher; there is no second lifecycle. New types in `@skaile/workspaces/types`: `AgentRun`, `AgentRunEvent`, `AgentRunEventRecord`, `AgentApproval`, `RunStore`, `RunHostMessage`, `AgentRunFilter`, `AgentRunPatch`, `AgentApprovalPatch`.
|
|
27
|
+
|
|
28
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - Protocol 4.16: a session can list and run the workspace's agent instances, and read/write memory blocks and triggers. The runner registers the framework capabilities `agent.list`, `agent.run`, `agent.status`, `agent.cancel`, `agent.result`, `approval.decide`, `memory.read|write|append|list` and `trigger.list|upsert|toggle` from what the host advertises in `session_init.capabilities`: `host.agent_run` switches on `agent.*` + `approval.decide` (host-backed over the existing host-request channel), `host.memory_store` switches on `memory.*`, `host.trigger_store` switches on `trigger.*`. Nothing is registered without the advertisement. A session with no host (`skaile run`, `skaile repl`) serves `agent.list` / `agent.run` in-process: `agent.run` starts a nested driver session of the role instance (`createAgentSession` with that `instanceId`), bounded by the role's `runtime.max_turns`, and its final JSON reply is the run's output; memory and trigger capabilities are absent and `<MEMORY>` renders only the seeded blocks.
|
|
29
|
+
|
|
30
|
+
`agent.run` validates `input` against the instance's `io.input` before the run starts (`input_invalid`, nothing started) and the run's `output` against `io.output` after it (`output_invalid`, reported as a failed run). `requiresApproval` follows the instance's `permissions.permission_mode`. New types in `@skaile/workspaces/types`: `AgentRun*`, `AgentInstanceSummary`, `HostAgentRun*`, `HostMemoryStore*`, `HostTriggerStore*`. `SubagentEvent` gains `runId`, `instanceId`, `input`, `runStatus`, `error` and a widened `output`; new events `memory_changed` and `trigger_fired`; `session_init_ack.instances[]` carries each instance's id, ref, lifecycle, revision hash and io summary. `PROTOCOL_VERSION` is 4.16.0. `skaile run` prints `subagent` events of `agent.run` runs.
|
|
31
|
+
|
|
32
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - Agent asset schema `spec_version: "0.2"` (`@skaile/workspaces/types/manifests`). `agent.yaml` gains `lifecycle: standing | role` (default `standing`; a `role` requires an `io: { input, output }` JSON-Schema block), `memory: { blocks[{ name, scope: instance | user | workspace, max_chars, source? }], consolidation? }`, `triggers[]` (discriminated by `kind: schedule | webhook | channel | event`, each with an `id`), and `capabilities[{ name, connector?, required }]`. Memory and triggers are top-level fields only; `memory` / `trigger` are rejected as `composes[].kind`.
|
|
33
|
+
|
|
34
|
+
`composes[]` items take an optional slot `id` (`[a-z][a-z0-9_-]*`, required for `connector` and `mcp-server`), `as` and `config`; `kind` stays an open string validated against the kind registry (plus the `soul` pseudo-kind). `kind: agent` items take `binding: delegate | run` (default `delegate`); the new `Binding` values are valid on `agent` items only. New pure helpers `conventionItems()` / `effectiveComposes()` expose `SOUL.md` / `RULES.md` / `DUTIES.md` / `knowledge/` as implicit composition items.
|
|
35
|
+
|
|
36
|
+
The deprecated 0.1 inputs (`skills`, `abilities`, `contracts`, `persona`, `rules`, `knowledge`, `requires`, `dependencies`, `metadata.soul` / `orchestrates` / `routes_to` / `knows`) still parse but are no longer read for the catalog: `CatalogEntry.requires` of an agent now lists its `composes[].ref` entries. `agentDeprecationDiagnostics()` returns one named `deprecated_agent_<field>` warning per field, and `skaile validate` prints them. `skaile validate` also reports duplicate slot ids as `composition_conflict`.
|
|
37
|
+
|
|
38
|
+
The second, divergent loose `AgentManifest` type in `@skaile/workspaces/core` is removed; `AgentManifest` from `@skaile/workspaces/types/manifests` is the only agent manifest type.
|
|
39
|
+
|
|
40
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - `skaile install` renders every agent instance of `skaile.yaml` (`agent:` as `default`, plus the `agents:` map) for the target harness, not only the primary agent. Each rendering is named by the instance id: `.claude/agents/<id>.md`, `.omp/agents/<id>/` (its `agent.yaml` carries `composes`, `lifecycle`, `io`, `memory`, `triggers` and `capabilities` verbatim) and `.codex/agents/<id>.toml`. The instance's model, `budget.max_turns` and lifecycle override the asset's. `composes: [{ kind: agent }]` items with binding `delegate` render flat as their own files; `binding: run` items get none.
|
|
41
|
+
|
|
42
|
+
Claude frontmatter gains `skills` (composed skills), `mcpServers` (the servers the `mcp-server` slots are bound to through the instance's `connectors` map) and `background: true` for a `role` instance whose agent sets the new `runtime.background`. Codex has no per-tool allowlist, so a tool surface that cannot write or run commands renders `sandbox_mode = "read-only"`.
|
|
43
|
+
|
|
44
|
+
Files an earlier install wrote for an instance that has left `skaile.yaml` are removed on the next install, tracked in `.skaile/agent-instances-managed.json`; hand-written agent files are never touched. `skaile install` prints one `agent <id>: <files>` line per instance, and `InstallResult` gains `agentInstances` and `agentFilesRemoved`. `installAgentInstances` is exported from `@skaile/workspaces/asset-manager`.
|
|
45
|
+
|
|
46
|
+
The session now forwards the instance id as the native `agentName` (it was `agent.yaml#name`), so a session loads the file its own instance rendered. The Codex driver reads `.codex/skaile-agents/<agentName>.md` instead of the single `.codex/skaile-agent.md`, which would have let two instances overwrite each other.
|
|
47
|
+
|
|
48
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - Asset-kind providers declare where `skaile install` puts them. `IAssetKindProvider.installTarget` (`skill`, `agent`, `prompt`, `flow` or `contract`) replaces the per-kind installer branches and the `NON_DEPLOYABLE_KINDS` list: a kind with a target is copied into the active driver target's directory using the provider's file filter; a kind without one (`connector`, `mcp-server`, `knowledge`, `persona`, `ruleset`, `preset`) is fetched, verified and cached under `.skaile/cache/store/` for composition only. `AiComponent` is now derived from the provider type. `removeAsset` and the asset manager no longer resolve a harness directory for a composition-only kind.
|
|
49
|
+
|
|
50
|
+
`persona` and `ruleset` assets are now discoverable and publishable as `PERSONA.md` and `RULESET.md` (provider version 1.1.0). An agent's own `RULES.md` is never a standalone asset.
|
|
51
|
+
|
|
52
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - The asset-kind provider registry is now the only authority on which asset kinds exist. `createDefaultKindRegistry(extra?)` (`@skaile/workspaces/discovery`) replaces `createDefaultRegistry()`; the CLI builds one registry per process (built-ins plus flow and knowledge) and passes it to the asset manager, catalog sources and `skaile validate`. The static lists are gone: `AssetKindValues`, `AssetKindSchema`, `validateByKind` (types), `ASSET_KINDS`, `INDIVIDUAL_KINDS` (core) and `KNOWN_ASSET_KINDS`, `KnownAssetKind` (library); `AssetKind` is `string`.
|
|
53
|
+
|
|
54
|
+
A `SKILL.md` whose `type:` names an unregistered kind (for example `mount`) is no longer silently catalogued as a skill: the scanners skip it and report an `unknown_asset_kind` error diagnostic. `skaile validate` reports `unknown_asset_kind` for an unregistered kind of a manifest file or of an `agent.yaml` `composes:` item. Composition binding resolution throws on an item whose kind has no default binding and no explicit `binding`, instead of falling back to `discoverable`.
|
|
55
|
+
|
|
56
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - New `skaile migrate agents [paths...]` and `skaile migrate assets [root]` upgrade existing assets mechanically. Both are dry runs by default: they print a unified diff per file and write nothing until `--write`. A migrated `agent.yaml` that would not pass the 0.2 manifest checks is reported and left untouched.
|
|
57
|
+
|
|
58
|
+
`migrate agents` rewrites deprecated agent inputs into `composes:` (through the `yaml` Document API, so comments and key order survive) and bumps `spec_version` to `"0.2"`:
|
|
59
|
+
|
|
60
|
+
- `skills:` / `abilities:` become `skill` items (`./skills/<name>` when the agent directory ships that skill, otherwise `skill:<name>`); `contracts:` become `contract` items; `knowledge:` becomes `knowledge` items.
|
|
61
|
+
- `persona:` / `rules:` path refs become `persona` / `ruleset` items with the path kept.
|
|
62
|
+
- `requires:` / `dependencies:` become `agent` items with `binding: delegate` (a `kind:` prefix on a string picks another kind; `requires[].name` becomes `as`, `requires[].source` the ref). `mcp-server` and `connector` items get a generated slot `id`.
|
|
63
|
+
- `metadata.orchestrates` becomes items whose kind comes from the `kind:` prefix (usually `skill`); `metadata.routes_to` becomes `agent` items and `metadata.knows` `knowledge` items, for explicit refs only (a `kind:` prefix, a `./`/`../`/`/` path, or `@publisher/name`). Prose entries cannot be resolved and move unchanged to `metadata.routing_notes` / `metadata.knowledge_notes`, so nothing is lost.
|
|
64
|
+
- `metadata.soul` is dropped when it names `SOUL.md` (the convention file) and becomes a `persona` item otherwise.
|
|
65
|
+
- A workspace `skaile.yaml` with `agent.subagents.<name>` gets a local role asset `.skaile/agents/<name>/agent.yaml` (`lifecycle: role`, `io` `{task}` → `{result}`; the prompt becomes `SOUL.md`) plus an `agents.<name>: { ref: ./.skaile/agents/<name>, lifecycle: role }` instance. A subagent whose target directory already exists is kept and reported.
|
|
66
|
+
|
|
67
|
+
`migrate assets` moves a repo onto the registry-derived kind model:
|
|
68
|
+
|
|
69
|
+
- `type: persona` / `type: ruleset` markdown (`_agent-parts/personas/<n>.md`) moves to `<n>/PERSONA.md` / `<n>/RULESET.md` with `type:` dropped, and agent `persona:` / `rules:` refs to the old path become compose items at the new path.
|
|
70
|
+
- Every `*.bundle.yaml`, and every `kind: bundle` entry of `skaile.yaml#assets`, becomes `<name>.preset.yaml` (`version: 1.0.0`, `items: [{ref: kind:@publisher/name}]`); `bundle:@…` refs in `skaile.yaml#dependencies` become `preset:@…`.
|
|
71
|
+
- The publication half of `skaile.yaml` (`publisher`, `version`, `assets`) moves into a publisher-only `skaile.manifest.yaml`, written with the same `encodeSkaileManifest` writer `skaile source manifest` uses (publisher normalised to the bare `skaile-ai`); the old `assets:` inventory is dropped (a manifest with `assets:` restricts discovery to the listed assets), the keys are removed from `skaile.yaml`, and a `skaile.yaml` left empty is deleted. An existing `skaile.manifest.yaml` is never overwritten.
|
|
72
|
+
- Frontmatter `type:` values that name no registered kind (in `SKILL.md` files and under `_agent-parts/`) are reported, never rewritten.
|
|
73
|
+
|
|
74
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - `preset` is now the only grouping primitive. The `bundle` and `mount` asset kinds are deleted (types, core, library, runner, the capability origin enum). A `preset:@pub/name#ver` entry in `skaile.yaml` `dependencies` expands the preset's asset items (nested presets up to depth 3) into the install set; the lock records only the expanded items. `library://`, placeholder and connector/MCP instance items are skipped and `skaile install` prints `preset <ref>: N assets, M instance items skipped (apply with skaile preset apply)`. Nesting deeper than 3 or a cycle raises `preset_depth_exceeded`; a `bundle:` ref raises `unknown_asset_kind` naming `preset:`. Presets are indexed by `LocalCatalogSource` and kept in curated manifests. `*.bundle.yaml` is replaced by `*.preset.yaml`; `skaile create -k preset` and `skaile add preset:…` replace the bundle forms, and the first-party `workspaces-authoring` bundle is now a preset.
|
|
75
|
+
|
|
76
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - Running an agent now uses the composition bytes that were compiled or pinned, not whatever the sources hold today.
|
|
77
|
+
|
|
78
|
+
- New `CompositionContentSource` (`createCompositionContentSource`) resolves a `composes:` ref from a local path, the project lock (a lock pin wins over the catalog; the pinned bytes are hash-verified) or the local catalog scan. Nothing is fetched from the network at session start. A ref that cannot be served exactly as pinned fails with a typed `CompositionError` (`composition_asset_missing`, `composition_conflict`, `composition_rebuild_required`) instead of being skipped.
|
|
79
|
+
- `compile_manifest.json` is schema 2: each entry also carries `kind`, `resolved_ref` and the captured `content`; hashes are recomputed on read. `inline-snapshot` serves the compiled bytes only (the live-read drift warning is gone); an uncompiled snapshot item is `composition_rebuild_required`. `inline-live` is read once per new run and stored in `.skaile/composition-runs/<session>.json`; a resumed session reuses those bytes. `discoverable` items serve their captured content.
|
|
80
|
+
- `skaile rebuild` regenerates the manifest from the content source and rejects an agent that composes itself through `kind: agent` items.
|
|
81
|
+
- `skaile run --agent-definition <ref|path>` selects the agent asset for one single-shot invocation (error when combined with a flow). `skaile run --dry-run "<prompt>"` prints each resolved item (ref, kind, binding, version, hash, source) and how it reaches the claude-code, omp and codex harnesses, without starting a model.
|
|
82
|
+
|
|
83
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - `skaile.yaml` gains a root `agents:` map of named agent instances (`AgentConfig.instances` in `@skaile/workspaces/core`). Each instance has a `ref`, an optional `lifecycle` (`standing | role`), `model`, `permissions` (same shape as `agent.permissions`), `memory.scope` (`instance | user | workspace | none`), `triggers` (merged by id into the asset's), a `connectors` map from compose slot ids to `connectors[].id`, and a `budget`. `agent:` stays the primary agent and equals `agents.default`; declaring both is an `agent_default_conflict` error. Layers merge instances by id: scalars overlay-win, triggers merge by id, deny lists are unioned. New exports: `AgentInstanceConfig` and friends, `effectiveAgentInstances()`, `mergeAgentInstances()`, `mergeAgentPermissions()`, `normalizeAgentInstances()`, `agentInstanceDiagnostics()`, `resolveAgentDefinitionDir()`.
|
|
84
|
+
|
|
85
|
+
`agent.subagents` is removed (the `SubagentConfig` type, the merge, and the `ResolvedSkaileConfig.subagents` session_init field that only forced a session recreate). A `skaile.yaml` that still contains it fails to load with an error pointing to `agents:`.
|
|
86
|
+
|
|
87
|
+
`skaile validate` checks every `agents.*.ref` resolves to an `agent.yaml`, role instances have an asset `io`, `connectors` keys are connector slot ids of the asset and values exist in `connectors[]`, and trigger ids are unique per instance and either exist in the asset or are declared in full.
|
|
88
|
+
|
|
89
|
+
### Patch Changes
|
|
90
|
+
|
|
91
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - Two fixes for the agent composition migration:
|
|
92
|
+
|
|
93
|
+
- `skaile migrate assets` no longer converts the old `skaile.yaml#assets` inventory into the new `skaile.manifest.yaml`. A manifest with an `assets:` list switches discovery into manifest mode where only listed assets exist, which shrank real catalogs (96 skills to 42; agents vanished). The emitted manifest is publisher-only (`publisher`, `version`), the plan prints one line naming how many `assets[]` entries were dropped, and discovery keeps walking the whole tree.
|
|
94
|
+
- A knowledge dir whose valid `index.yaml` declares `documents: []` is an empty knowledge base, not a missing asset. It compiles (captured with its index bytes), contributes no prompt text or capability and raises no warning or error. A missing dir, or one without a valid index, still fails with `composition_asset_missing`.
|
|
95
|
+
|
|
96
|
+
- [#1025](https://github.com/skaile-ai/workspaces/pull/1025) [`840afda`](https://github.com/skaile-ai/workspaces/commit/840afda25ba0a8621b69e7254ee988717c2c5bcd) Thanks [@mortegro](https://github.com/mortegro)! - Review fixes for the agent composition release. A run cancelled while its nested role session is being created now ends `cancelled` (the half-started driver is disposed) instead of hanging `agent.run`; `dispose()` waits for nested drivers; finished runs no longer leak approval and call-id entries, and an `agent.run` call id is only replayed for the session that made it. The run ledger behind `agent.status` / `agent.result` survives session rebuilds, so `io.output` is still validated and `finished` is emitted once. `composes[].as` and a composed sub-agent's name must match `[a-z][a-z0-9_-]*` (they name rendered files; `../x` is rejected in the schema and at install, and the instance ledger only removes paths inside the deploy dirs). `SubagentEvent.output` keeps its structured harness shape; the typed output of a role run is `SubagentEvent.result`. A host that declares `host.memory_store` / `host.trigger_store` / `host.agent_run` with `capability_register` instead of `session_init` now gets `memory.*` / `trigger.*` / `agent.*`; `capability_deregister` removes them.
|
|
97
|
+
|
|
3
98
|
## 5.5.0
|
|
4
99
|
|
|
5
100
|
### Minor Changes
|
package/dist/app-sdk/index.js
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
import './chunk-
|
|
1
|
+
import { getKnownKinds } from './chunk-OLLAQLFJ.js';
|
|
2
|
+
import './chunk-AOAZCSDI.js';
|
|
3
|
+
import './chunk-QZLWJETK.js';
|
|
4
|
+
import './chunk-NFGRW3L7.js';
|
|
5
|
+
import './chunk-QCI6D7E4.js';
|
|
6
|
+
import './chunk-MX3UQXLU.js';
|
|
7
|
+
import './chunk-XOGG7VDZ.js';
|
|
8
|
+
import './chunk-BTISGSK4.js';
|
|
9
|
+
import './chunk-R7FOF242.js';
|
|
10
|
+
import './chunk-3TXEJN4W.js';
|
|
11
|
+
import './chunk-FRHE7FFB.js';
|
|
12
|
+
import './chunk-TZCQ7ZWQ.js';
|
|
2
13
|
import './chunk-4GY63JU6.js';
|
|
3
|
-
import { factoryAssetRoots } from './chunk-
|
|
4
|
-
import './chunk-
|
|
14
|
+
import { factoryAssetRoots } from './chunk-BF33SCLY.js';
|
|
15
|
+
import './chunk-46OVMT76.js';
|
|
5
16
|
import './chunk-5BEFNLOR.js';
|
|
6
17
|
import './chunk-A2ULN3KX.js';
|
|
7
|
-
import { scanRepo } from './chunk-
|
|
18
|
+
import { scanRepo } from './chunk-2W4LBLIN.js';
|
|
8
19
|
import './chunk-MFHKHXDE.js';
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
20
|
+
import './chunk-CPSIPIX7.js';
|
|
21
|
+
import './chunk-7ZHLYXTI.js';
|
|
11
22
|
import './chunk-RVRB27AN.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
23
|
+
import './chunk-PA7WLID3.js';
|
|
24
|
+
import './chunk-AO7VJ6G6.js';
|
|
14
25
|
import './chunk-ICSCSM5D.js';
|
|
15
26
|
import './chunk-JMKB7IB4.js';
|
|
16
27
|
import './chunk-MJHSLODD.js';
|
|
@@ -23,14 +34,16 @@ import * as path from 'path';
|
|
|
23
34
|
async function libraryAssets() {
|
|
24
35
|
const notes = [];
|
|
25
36
|
try {
|
|
26
|
-
const { openLibraryManager, authoringLibraries } = await import('./open-library-
|
|
37
|
+
const { openLibraryManager, authoringLibraries } = await import('./open-library-4WUMQHES.js');
|
|
27
38
|
const { manager, close } = await openLibraryManager();
|
|
28
39
|
try {
|
|
29
40
|
const libs = authoringLibraries(await manager.listLibraries());
|
|
30
41
|
const entries = [];
|
|
31
42
|
for (const lib of libs) {
|
|
32
43
|
if (!existsSync(lib.path)) continue;
|
|
33
|
-
const libEntries = [
|
|
44
|
+
const libEntries = [
|
|
45
|
+
...await scanRepo(lib.path, lib.name, { knownKinds: getKnownKinds() })
|
|
46
|
+
];
|
|
34
47
|
for (const entry of libEntries) entries.push({ origin: "library", entry, group: lib.name });
|
|
35
48
|
}
|
|
36
49
|
return { entries, notes };
|
|
@@ -48,7 +61,7 @@ async function libraryAssets() {
|
|
|
48
61
|
async function storeAssets(projectDir) {
|
|
49
62
|
const notes = [];
|
|
50
63
|
try {
|
|
51
|
-
const { resolveCatalogSource } = await import('./open-library-
|
|
64
|
+
const { resolveCatalogSource } = await import('./open-library-4WUMQHES.js');
|
|
52
65
|
const { source, close } = await resolveCatalogSource({ projectDir });
|
|
53
66
|
try {
|
|
54
67
|
const assets = await source.listAssets();
|
|
@@ -97,7 +110,7 @@ async function factoryAssets() {
|
|
|
97
110
|
try {
|
|
98
111
|
const entries = [];
|
|
99
112
|
for (const root of factoryAssetRoots()) {
|
|
100
|
-
entries.push(...await scanRepo(root, "skaile-factory"));
|
|
113
|
+
entries.push(...await scanRepo(root, "skaile-factory", { knownKinds: getKnownKinds() }));
|
|
101
114
|
}
|
|
102
115
|
return { entries, notes };
|
|
103
116
|
} catch (err) {
|
|
@@ -127,5 +140,5 @@ async function gatherAssetFeeds(am, projectDir) {
|
|
|
127
140
|
}
|
|
128
141
|
|
|
129
142
|
export { gatherAssetFeeds };
|
|
130
|
-
//# sourceMappingURL=asset-feeds-
|
|
131
|
-
//# sourceMappingURL=asset-feeds-
|
|
143
|
+
//# sourceMappingURL=asset-feeds-LU7NHOAP.js.map
|
|
144
|
+
//# sourceMappingURL=asset-feeds-LU7NHOAP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-LU7NHOAP.js","sourcesContent":["/**\n * asset-feeds.ts — gather installable assets from every feed the manage TUI\n * surfaces.\n *\n * Four feeds, normalized into `CatalogEntry`:\n * - **Project sources** — `skaile.yaml` `sources:` entries (scanned via\n * `AssetManager.search()`; the new `sources:` field is merged into the\n * legacy repositories map in `AssetManager.loadConfig`).\n * - **Local libraries** — user authoring places from `LocalIndex` (filesystem\n * scan of each library's `path`).\n * - **Factory assets** — the bundled first-party `factory-assets` tree\n * (`factoryAssetRoots()`), scanned from disk. Always present; no network.\n * - **Remote store** — the configured catalog source when `catalog.url` is\n * not `local`. Failures are non-fatal — they surface as notes.\n */\n\nimport { existsSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogEntry,\n factoryAssetRoots,\n scanRepo,\n} from \"@skaile/workspaces/core\";\nimport { getKnownKinds } from \"./open-registry.ts\";\n\n/** One non-fatal note returned to the caller for surfacing in the UI. */\nexport interface FeedNote {\n feed: \"sources\" | \"libraries\" | \"store\" | \"factory\";\n message: string;\n}\n\n/**\n * Which feed an asset came from. This is the top-level grouping axis in the\n * manage TUI (\"where is this skill coming from?\") and is intentionally distinct\n * from `publisher` (asset-intrinsic identity): the same publisher can legitimately\n * appear under more than one origin (e.g. a github repo you added as a `source`\n * that is also listed in the remote `store`).\n */\nexport type AssetOrigin = \"source\" | \"library\" | \"factory\" | \"store\";\n\n/** A catalog entry tagged with the feed it was gathered from. */\nexport interface OriginEntry {\n origin: AssetOrigin;\n entry: CatalogEntry;\n /**\n * Second-level grouping label for the manage tree. Defaults (when unset) to the\n * entry's `publisher`; the source feed sets it to the source's short repo name\n * so the Sources band groups by source — \"which repo did this come from\" — not\n * by the asset-intrinsic publisher.\n */\n group?: string;\n}\n\nexport interface AssetFeedResult {\n entries: OriginEntry[];\n notes: FeedNote[];\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache). Each\n * library's `path` is scanned with `scanRepo` and grouped under the bare library\n * name (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix (mirrors the source feed). Plugin grouping (`entry.plugin`)\n * is stamped by `scanRepo`.\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const { openLibraryManager, authoringLibraries } = await import(\"./open-library.ts\");\n const { manager, close } = await openLibraryManager();\n try {\n // Authoring libraries are the rows that are NOT source clones.\n const libs = authoringLibraries(await manager.listLibraries());\n const entries: OriginEntry[] = [];\n for (const lib of libs) {\n if (!existsSync(lib.path)) continue;\n const libEntries = [\n ...(await scanRepo(lib.path, lib.name, { knownKinds: getKnownKinds() })),\n ];\n for (const entry of libEntries) entries.push({ origin: \"library\", entry, group: lib.name });\n }\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n notes.push({\n feed: \"libraries\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/**\n * Pull a (best-effort) snapshot of the connected remote store catalog.\n *\n * - Returns no entries when the resolved catalog is local-only or the host\n * is unreachable (the failure becomes a note, not an exception).\n * - Maps `CatalogAsset` → `CatalogEntry`, carrying `publisher`, `repo`, and\n * `category` straight through and using `source = \"store://<id>\"`; per-file\n * `source` paths are not available for remote assets so the canonical ref is\n * a stable placeholder.\n */\nasync function storeAssets(projectDir: string): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const { resolveCatalogSource } = await import(\"./open-library.ts\");\n const { source, close } = await resolveCatalogSource({ projectDir });\n try {\n const assets = await source.listAssets();\n const entries: CatalogEntry[] = assets.map((a) => ({\n name: a.name,\n kind: (a.kind as AssetKind) ?? \"skill\",\n description: a.description ?? \"\",\n source: `store://${a.id}`,\n publisher: a.publisher,\n repo: a.repo,\n plugin: a.plugin,\n category: a.category,\n version: a.version,\n requires: [],\n dependencies: [],\n }));\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // Local-only catalog throws a recognizable message — silence it; absence\n // is the user's choice, not an error.\n if (!/local/i.test(msg)) {\n notes.push({ feed: \"store\", message: msg });\n }\n return { entries: [], notes };\n }\n}\n\n/** The slice of `AssetManager` the source feed needs (kept narrow for tests). */\ninterface AssetManagerLike {\n search: () => Promise<CatalogEntry[]>;\n searchRepoRoots: () => { repoName: string; root: string }[];\n}\n\n/**\n * Project-source feed: leans on `AssetManager.search()`, which merges\n * `skaile.yaml`'s `sources:` field into the repositories map. Plugin grouping\n * (`entry.plugin`) is stamped by the scanner, so entries pass through as-is.\n */\nasync function sourceAssets(am: AssetManagerLike): Promise<OriginEntry[]> {\n // The bundled factory tree is injected into the repositories map as an implicit\n // source, so `am.search()` returns it too. It has its own `factory` origin band,\n // so drop it here — otherwise the same first-party skills list twice under Sources.\n const factoryPrefixes = factoryAssetRoots().map((r) => (r.endsWith(path.sep) ? r : r + path.sep));\n const isFactoryPath = (p: string) =>\n factoryPrefixes.some((fp) => p === fp.slice(0, -1) || p.startsWith(fp));\n\n const all = (await am.search()).filter((e) => !isFactoryPath(e.source));\n const entries: OriginEntry[] = [];\n // Group each source's entries under the source node (its short repo name), not\n // the publisher: under Sources the navigational question is \"which repo did\n // this come from\". Each entry's `source` (absolute manifest path) lives under\n // exactly one declared root, so group by prefix. The cache slug is\n // URL-keyed `github.com/<org>/<repo>` — take the trailing segment.\n for (const { repoName, root } of am.searchRepoRoots()) {\n if (isFactoryPath(root)) continue;\n const prefix = root.endsWith(path.sep) ? root : root + path.sep;\n const owned = all.filter((e) => e.source === root || e.source.startsWith(prefix));\n if (owned.length === 0) continue;\n const sourceName = repoName.split(\"/\").pop() || repoName;\n for (const entry of owned) entries.push({ origin: \"source\", entry, group: sourceName });\n }\n return entries;\n}\n\n/**\n * Factory-asset feed: scan the bundled first-party `factory-assets` tree(s)\n * resolved by `factoryAssetRoots()` (the `SKAILE_FACTORY_ASSETS_DIR` override\n * layer ahead of the bundled tree). Local disk only, no network — the entries are\n * the built-in skills / connectors / bundles that ship with `@skaile/workspaces`.\n * `factoryAssetRoots()` already dedupes, so the env override pointing at the\n * bundled dir collapses to one root.\n */\nasync function factoryAssets(): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const entries: CatalogEntry[] = [];\n for (const root of factoryAssetRoots()) {\n entries.push(...(await scanRepo(root, \"skaile-factory\", { knownKinds: getKnownKinds() })));\n }\n return { entries, notes };\n } catch (err) {\n notes.push({\n feed: \"factory\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/** Tag a flat entry list with a single origin. */\nfunction tag(origin: AssetOrigin, entries: CatalogEntry[]): OriginEntry[] {\n return entries.map((entry) => ({ origin, entry }));\n}\n\n/**\n * Run all feeds and return a single normalized result.\n *\n * Feeds run in parallel where possible — the store fetch is the slow one\n * (one HTTP call) and is fired alongside the local library walk. The factory\n * scan is local disk only, so it runs inline.\n */\nexport async function gatherAssetFeeds(\n am: AssetManagerLike,\n projectDir: string,\n): Promise<AssetFeedResult> {\n const [libs, store] = await Promise.all([libraryAssets(), storeAssets(projectDir)]);\n const factory = await factoryAssets();\n const src = await sourceAssets(am);\n return {\n entries: [\n ...src,\n ...libs.entries,\n ...tag(\"factory\", factory.entries),\n ...tag(\"store\", store.entries),\n ],\n notes: [...libs.notes, ...store.notes, ...factory.notes],\n };\n}\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export { WORKSPACE_MOUNT_ENV_VAR, deployAll, deployCatalogEntry, findAiAssetsRoot, isUnderWorkspaceMount, resolveFlowSkills, undeployCatalogEntry, workspaceMountDirs } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { WORKSPACE_MOUNT_ENV_VAR, deployAll, deployCatalogEntry, findAiAssetsRoot, isUnderWorkspaceMount, resolveFlowSkills, undeployCatalogEntry, workspaceMountDirs } from '../chunk-SDFROXSA.js';
|
|
2
|
+
import '../chunk-TZCQ7ZWQ.js';
|
|
3
3
|
import '../chunk-4GY63JU6.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-BF33SCLY.js';
|
|
5
|
+
import '../chunk-46OVMT76.js';
|
|
6
6
|
import '../chunk-5BEFNLOR.js';
|
|
7
7
|
import '../chunk-A2ULN3KX.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-2W4LBLIN.js';
|
|
9
9
|
import '../chunk-MFHKHXDE.js';
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-CPSIPIX7.js';
|
|
11
|
+
import '../chunk-7ZHLYXTI.js';
|
|
12
12
|
import '../chunk-RVRB27AN.js';
|
|
13
|
-
import '../chunk-
|
|
14
|
-
import '../chunk-
|
|
13
|
+
import '../chunk-PA7WLID3.js';
|
|
14
|
+
import '../chunk-AO7VJ6G6.js';
|
|
15
15
|
import '../chunk-ICSCSM5D.js';
|
|
16
16
|
import '../chunk-JMKB7IB4.js';
|
|
17
17
|
import '../chunk-MJHSLODD.js';
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError,
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName } from '../chunk-PTO2YDDG.js';
|
|
2
|
+
import '../chunk-MX3UQXLU.js';
|
|
3
|
+
import '../chunk-XOGG7VDZ.js';
|
|
4
|
+
import '../chunk-BTISGSK4.js';
|
|
5
5
|
import '../chunk-R7FOF242.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-
|
|
6
|
+
import '../chunk-3TXEJN4W.js';
|
|
7
|
+
export { createScaffold, deployAll, installAgent, installTargetOf, removeAsset } from '../chunk-2KOKBTR4.js';
|
|
8
8
|
export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-CGYEHQOX.js';
|
|
9
|
-
|
|
9
|
+
export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-KTBKW2FI.js';
|
|
10
|
+
import '../chunk-UQ6LFBPZ.js';
|
|
11
|
+
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-VKSXST23.js';
|
|
12
|
+
import '../chunk-FRHE7FFB.js';
|
|
13
|
+
import '../chunk-TZCQ7ZWQ.js';
|
|
10
14
|
import '../chunk-4GY63JU6.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-BF33SCLY.js';
|
|
16
|
+
import '../chunk-46OVMT76.js';
|
|
13
17
|
import '../chunk-5BEFNLOR.js';
|
|
14
18
|
import '../chunk-A2ULN3KX.js';
|
|
15
|
-
import '../chunk-
|
|
19
|
+
import '../chunk-2W4LBLIN.js';
|
|
16
20
|
import '../chunk-MFHKHXDE.js';
|
|
17
|
-
import '../chunk-
|
|
18
|
-
import '../chunk-
|
|
21
|
+
import '../chunk-CPSIPIX7.js';
|
|
22
|
+
import '../chunk-7ZHLYXTI.js';
|
|
19
23
|
import '../chunk-RVRB27AN.js';
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
24
|
+
import '../chunk-PA7WLID3.js';
|
|
25
|
+
import '../chunk-AO7VJ6G6.js';
|
|
22
26
|
import '../chunk-ICSCSM5D.js';
|
|
23
27
|
import '../chunk-JMKB7IB4.js';
|
|
24
28
|
import '../chunk-MJHSLODD.js';
|
|
25
29
|
import '../chunk-C3CAXQMA.js';
|
|
26
30
|
import '../chunk-BOFL7GIF.js';
|
|
27
|
-
export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-KTBKW2FI.js';
|
|
28
|
-
import '../chunk-UQ6LFBPZ.js';
|
|
29
|
-
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-TNWXGHLD.js';
|
|
30
|
-
import '../chunk-5CYEWBPB.js';
|
|
31
31
|
import '../chunk-NSBPE2FW.js';
|
|
32
32
|
//# sourceMappingURL=index.js.map
|
|
33
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
export { canonicalEntryRef, createScaffold, deployAll, deployAsset, removeAsset } from '../chunk-
|
|
1
|
+
export { canonicalEntryRef, createScaffold, deployAll, deployAsset, installTargetOf, removeAsset } from '../chunk-2KOKBTR4.js';
|
|
2
2
|
import '../chunk-CGYEHQOX.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-VKSXST23.js';
|
|
4
|
+
import '../chunk-FRHE7FFB.js';
|
|
5
|
+
import '../chunk-TZCQ7ZWQ.js';
|
|
4
6
|
import '../chunk-4GY63JU6.js';
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-BF33SCLY.js';
|
|
8
|
+
import '../chunk-46OVMT76.js';
|
|
7
9
|
import '../chunk-5BEFNLOR.js';
|
|
8
10
|
import '../chunk-A2ULN3KX.js';
|
|
9
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-2W4LBLIN.js';
|
|
10
12
|
import '../chunk-MFHKHXDE.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
+
import '../chunk-CPSIPIX7.js';
|
|
14
|
+
import '../chunk-7ZHLYXTI.js';
|
|
13
15
|
import '../chunk-RVRB27AN.js';
|
|
14
|
-
import '../chunk-
|
|
15
|
-
import '../chunk-
|
|
16
|
+
import '../chunk-PA7WLID3.js';
|
|
17
|
+
import '../chunk-AO7VJ6G6.js';
|
|
16
18
|
import '../chunk-ICSCSM5D.js';
|
|
17
19
|
import '../chunk-JMKB7IB4.js';
|
|
18
20
|
import '../chunk-MJHSLODD.js';
|
|
19
21
|
import '../chunk-C3CAXQMA.js';
|
|
20
22
|
import '../chunk-BOFL7GIF.js';
|
|
21
|
-
import '../chunk-TNWXGHLD.js';
|
|
22
|
-
import '../chunk-5CYEWBPB.js';
|
|
23
23
|
import '../chunk-NSBPE2FW.js';
|
|
24
24
|
//# sourceMappingURL=installer.js.map
|
|
25
25
|
//# sourceMappingURL=installer.js.map
|
|
@@ -1,5 +1,23 @@
|
|
|
1
|
-
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { AGENT_RENDERERS, CODEX_IDENTITY_DIR, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-VKSXST23.js';
|
|
2
|
+
import '../chunk-FRHE7FFB.js';
|
|
3
|
+
import '../chunk-TZCQ7ZWQ.js';
|
|
4
|
+
import '../chunk-4GY63JU6.js';
|
|
5
|
+
import '../chunk-BF33SCLY.js';
|
|
6
|
+
import '../chunk-46OVMT76.js';
|
|
7
|
+
import '../chunk-5BEFNLOR.js';
|
|
8
|
+
import '../chunk-A2ULN3KX.js';
|
|
9
|
+
import '../chunk-2W4LBLIN.js';
|
|
10
|
+
import '../chunk-MFHKHXDE.js';
|
|
11
|
+
import '../chunk-CPSIPIX7.js';
|
|
12
|
+
import '../chunk-7ZHLYXTI.js';
|
|
13
|
+
import '../chunk-RVRB27AN.js';
|
|
14
|
+
import '../chunk-PA7WLID3.js';
|
|
15
|
+
import '../chunk-AO7VJ6G6.js';
|
|
16
|
+
import '../chunk-ICSCSM5D.js';
|
|
17
|
+
import '../chunk-JMKB7IB4.js';
|
|
18
|
+
import '../chunk-MJHSLODD.js';
|
|
19
|
+
import '../chunk-C3CAXQMA.js';
|
|
20
|
+
import '../chunk-BOFL7GIF.js';
|
|
3
21
|
import '../chunk-NSBPE2FW.js';
|
|
4
22
|
//# sourceMappingURL=renderers.js.map
|
|
5
23
|
//# sourceMappingURL=renderers.js.map
|
|
@@ -10,8 +10,11 @@
|
|
|
10
10
|
* await am.install()
|
|
11
11
|
*/
|
|
12
12
|
import type { AssetRef, CatalogEntry, DriverTarget, LockFile, StoreFetcher } from "@skaile/workspaces/core";
|
|
13
|
+
import type { IAssetKindRegistry } from "@skaile/workspaces/plugins";
|
|
14
|
+
import type { PresetExpansion } from "@skaile/workspaces/core";
|
|
13
15
|
import type { AssetFetcher } from "@skaile/workspaces/library";
|
|
14
16
|
import type { HistoryEntry } from "./history.js";
|
|
17
|
+
import { type InstalledAgentInstance } from "./install-instances.js";
|
|
15
18
|
import type { ScaffoldOptions } from "./installer.js";
|
|
16
19
|
/**
|
|
17
20
|
* Normalize a git remote URL to a comparable identity so the same repo declared
|
|
@@ -20,15 +23,6 @@ import type { ScaffoldOptions } from "./installer.js";
|
|
|
20
23
|
* explicit user declaration.
|
|
21
24
|
*/
|
|
22
25
|
export declare function normalizeRepoUrl(url: string): string;
|
|
23
|
-
/**
|
|
24
|
-
* Asset kinds that are never **copied into a driver target dir** as files —
|
|
25
|
-
* bundles resolve to their members, mcp-servers are wired at session startup,
|
|
26
|
-
* and the mixin kinds are resolved at session creation. Mirrors the skip set in
|
|
27
|
-
* `deployAll`, and says nothing about whether store bytes are fetched:
|
|
28
|
-
* `mcp-server` IS staged into the store cache (see `stageStoreAssets`), because
|
|
29
|
-
* its wiring reads a real `MCP.md` off disk.
|
|
30
|
-
*/
|
|
31
|
-
export declare const NON_DEPLOYABLE_KINDS: Set<string>;
|
|
32
26
|
/**
|
|
33
27
|
* Parse a canonical lock key (`<kind>:@<publisher>/<name>#<version>`) into its
|
|
34
28
|
* parts. The lock key is a canonical asset ref, so this delegates to the one ref
|
|
@@ -141,7 +135,8 @@ export declare class MissingManifestError extends Error {
|
|
|
141
135
|
export type { HistoryEntry } from "./history.js";
|
|
142
136
|
export { appendHistory, clearHistory, getRecentHistory, loadHistory, } from "./history.js";
|
|
143
137
|
export type { DeployOptions, ScaffoldOptions } from "./installer.js";
|
|
144
|
-
export {
|
|
138
|
+
export type { DeployableEntry } from "./installer.js";
|
|
139
|
+
export { createScaffold, deployAll, installTargetOf, removeAsset } from "./installer.js";
|
|
145
140
|
export type { RenderMcpConfigOptions, RenderMcpConfigResult, SkippedMcpServer, } from "./mcp-config.js";
|
|
146
141
|
export { renderMcpServerConfig } from "./mcp-config.js";
|
|
147
142
|
export type { Log } from "./renderers.js";
|
|
@@ -207,6 +202,24 @@ export interface InstallResult {
|
|
|
207
202
|
* Non-fatal — listed for telemetry and CLI reporting.
|
|
208
203
|
*/
|
|
209
204
|
npmFailed?: string[];
|
|
205
|
+
/**
|
|
206
|
+
* One entry per `preset:` dependency expanded into this install (nested presets
|
|
207
|
+
* included): how many asset items joined the install set and how many instance
|
|
208
|
+
* items (`library://`, placeholders) were skipped.
|
|
209
|
+
*/
|
|
210
|
+
presets?: PresetExpansion[];
|
|
211
|
+
/**
|
|
212
|
+
* One entry per `skaile.yaml` agent instance (`agent:` as `default`, plus
|
|
213
|
+
* `agents:`) rendered into the target harness's native agent files, with the
|
|
214
|
+
* workspace-relative paths written. Absent for `--global` installs and
|
|
215
|
+
* harnesses without a native agent format.
|
|
216
|
+
*/
|
|
217
|
+
agentInstances?: InstalledAgentInstance[];
|
|
218
|
+
/**
|
|
219
|
+
* Workspace-relative native agent files removed because their instance left
|
|
220
|
+
* `skaile.yaml` (only files an earlier `skaile install` rendered are ever removed).
|
|
221
|
+
*/
|
|
222
|
+
agentFilesRemoved?: string[];
|
|
210
223
|
}
|
|
211
224
|
/**
|
|
212
225
|
* An installed asset whose source repository is behind the remote.
|
|
@@ -329,6 +342,11 @@ export interface OverviewResult {
|
|
|
329
342
|
export interface AssetManagerOptions {
|
|
330
343
|
/** Absolute or relative path to the workspace root (must contain `skaile.yaml`). */
|
|
331
344
|
projectDir: string;
|
|
345
|
+
/**
|
|
346
|
+
* The process's asset-kind registry — the only authority on which kinds exist.
|
|
347
|
+
* Typed frontmatter whose `type:` is not registered is reported, not catalogued.
|
|
348
|
+
*/
|
|
349
|
+
registry: IAssetKindRegistry;
|
|
332
350
|
/**
|
|
333
351
|
* Agent framework to target for asset deployment.
|
|
334
352
|
* Determines which framework directories (``.claude/``, ``.omp/``, etc.) are used.
|
|
@@ -423,6 +441,9 @@ export declare class AssetManager {
|
|
|
423
441
|
readonly driverTarget: DriverTarget;
|
|
424
442
|
/** Whether this instance operates in global-install mode. */
|
|
425
443
|
readonly global: boolean;
|
|
444
|
+
/** Asset-kind registry shared with the host (one instance per process). */
|
|
445
|
+
readonly registry: IAssetKindRegistry;
|
|
446
|
+
private _knownKinds?;
|
|
426
447
|
/** Explicit global-harness override (global mode only); else auto-resolved. */
|
|
427
448
|
private readonly harnessesOverride?;
|
|
428
449
|
/** Injected catalog fetcher (tests / custom); falls back to a built one. */
|
|
@@ -436,6 +457,14 @@ export declare class AssetManager {
|
|
|
436
457
|
/** Sink for cross-library collision warnings; else `console.warn`. */
|
|
437
458
|
private readonly onLibraryCollision?;
|
|
438
459
|
constructor(opts: AssetManagerOptions);
|
|
460
|
+
/** Registered kind names — the `knownKinds` argument of the manifest scanners. */
|
|
461
|
+
private get knownKinds();
|
|
462
|
+
/**
|
|
463
|
+
* The harness component dir a kind installs into (its provider's
|
|
464
|
+
* `installTarget`), or `undefined` for composition-only kinds, which are only
|
|
465
|
+
* cached in the store cache and composed at session start.
|
|
466
|
+
*/
|
|
467
|
+
private installTarget;
|
|
439
468
|
/**
|
|
440
469
|
* Root for this manager's **state** — config SSOT, lock, cache, history.
|
|
441
470
|
* `~/.skaile` in global mode (the cross-harness SSOT), else the project dir.
|
|
@@ -476,6 +505,14 @@ export declare class AssetManager {
|
|
|
476
505
|
* swallowed.
|
|
477
506
|
*/
|
|
478
507
|
private renderDriverMcpConfig;
|
|
508
|
+
/**
|
|
509
|
+
* Render every agent instance of `skaile.yaml` into the driver target's native
|
|
510
|
+
* agent files (`.claude/agents/<id>.md`, …) and prune the renderings of
|
|
511
|
+
* instances that left the config. Runs after the skills deploy, so composed
|
|
512
|
+
* skills resolve. Project scope only. Never fails an install — a render error
|
|
513
|
+
* is warned and swallowed.
|
|
514
|
+
*/
|
|
515
|
+
private renderAgentInstances;
|
|
479
516
|
private loadConfig;
|
|
480
517
|
/** Build provenance-index clones from the resolved source declarations. */
|
|
481
518
|
private buildClones;
|
|
@@ -567,7 +604,7 @@ export declare class AssetManager {
|
|
|
567
604
|
* Fetch + SHA-verify the bytes of every store-resolved candidate that needs
|
|
568
605
|
* bytes on disk into `.skaile/cache/store/`, reusing the same verified-fetch
|
|
569
606
|
* path the pointer-only `library.install` uses (`installFromManifest` flat
|
|
570
|
-
* mode).
|
|
607
|
+
* mode). Every kind with bytes, composition-only kinds included.
|
|
571
608
|
*
|
|
572
609
|
* @returns Map of candidate key → staged primary-manifest path.
|
|
573
610
|
*/
|
|
@@ -697,20 +734,20 @@ export declare class AssetManager {
|
|
|
697
734
|
toRef?: string;
|
|
698
735
|
}>>;
|
|
699
736
|
/**
|
|
700
|
-
*
|
|
701
|
-
* `ref` as
|
|
702
|
-
* not a dependency: nothing here installs the
|
|
737
|
+
* Presets in the configured sources (and the bundled factory source) that list
|
|
738
|
+
* `ref` as an asset item, for the `skaile add` discoverability hint. Membership is
|
|
739
|
+
* not a dependency: nothing here installs the preset or its siblings.
|
|
703
740
|
*
|
|
704
741
|
* Matches on kind + name, and on publisher only when both sides carry one, so
|
|
705
|
-
* a bare `skill:x`
|
|
742
|
+
* a bare `skill:x` item still matches `skill:@pub/x`. Presets already
|
|
706
743
|
* declared in `skaile.yaml` are left out. Best-effort: any failure yields `[]`,
|
|
707
744
|
* so it can never fail an `add` that succeeded.
|
|
708
745
|
*
|
|
709
746
|
* @param ref - The added asset ref (`kind:name`, `kind:@pub/name`, optionally pinned).
|
|
710
|
-
* @returns One `{ name, ref }` per containing
|
|
711
|
-
* the `skaile add` form (`
|
|
747
|
+
* @returns One `{ name, ref }` per containing preset, deduped by `ref`; `ref` is
|
|
748
|
+
* the `skaile add` form (`preset:@pub/name`, or `preset:name` without a publisher).
|
|
712
749
|
*/
|
|
713
|
-
|
|
750
|
+
presetsContaining(ref: string): Promise<Array<{
|
|
714
751
|
name: string;
|
|
715
752
|
ref: string;
|
|
716
753
|
}>>;
|
|
@@ -789,6 +826,8 @@ export declare class AssetManager {
|
|
|
789
826
|
*
|
|
790
827
|
* @param ref - Asset ref in `kind:name` form (e.g. `skill:my-skill`).
|
|
791
828
|
* @returns `true` if the asset was found and removed, `false` if it was not deployed.
|
|
829
|
+
* A `preset:` ref has no deployed files: it is found when declared in `skaile.yaml`, and
|
|
830
|
+
* only its declaration goes — its expanded items leave with the next `skaile install`.
|
|
792
831
|
*/
|
|
793
832
|
remove(ref: string): boolean;
|
|
794
833
|
/**
|
|
@@ -857,11 +896,12 @@ export declare class AssetManager {
|
|
|
857
896
|
* with a reconciliation {@link DeclaredState}:
|
|
858
897
|
*
|
|
859
898
|
* - `declared` — in `skaile.yaml`, not yet resolved into the lock.
|
|
860
|
-
* - `installed` — declared + locked, and (for
|
|
861
|
-
* disk. An `mcp-server` is instead checked against the
|
|
862
|
-
* would actually wire (store-staged or materialized
|
|
863
|
-
*
|
|
864
|
-
* locked — they are resolved at session start with no
|
|
899
|
+
* - `installed` — declared + locked, and (for kinds with an `installTarget`)
|
|
900
|
+
* materialized on disk. An `mcp-server` is instead checked against the
|
|
901
|
+
* declarations the runner would actually wire (store-staged or materialized
|
|
902
|
+
* `MCP.md`); the remaining composition-only kinds (no `installTarget`) count as
|
|
903
|
+
* installed once locked — they are resolved at session start with no harness
|
|
904
|
+
* footprint here.
|
|
865
905
|
* - `drift` — declared + locked but the deployed files are missing on disk.
|
|
866
906
|
* - `invalid` — the `dependencies:` entry isn't a parseable canonical ref. Only
|
|
867
907
|
* surfaced in the unfiltered listing (a `kind` filter can't classify it).
|
|
@@ -1015,7 +1055,7 @@ export declare class AssetManager {
|
|
|
1015
1055
|
* Create a minimal asset scaffold directory (delegates to {@link createScaffold}).
|
|
1016
1056
|
*
|
|
1017
1057
|
* @param name - Asset name (also used as the directory name).
|
|
1018
|
-
* @param kind - Asset kind: `skill` | `agent` | `
|
|
1058
|
+
* @param kind - Asset kind: `skill` | `agent` | `preset` | `flow` | `prompt` | `contract`.
|
|
1019
1059
|
* @param destDir - Parent directory to create the asset in.
|
|
1020
1060
|
* @param opts - Optional scaffold content (`description`).
|
|
1021
1061
|
* @returns `{ ok: true, path }` on success, `{ ok: false, path: errorMessage }` if the
|
|
@@ -1085,6 +1125,8 @@ export declare class AssetManager {
|
|
|
1085
1125
|
private resolveRepoDir;
|
|
1086
1126
|
}
|
|
1087
1127
|
export { installAgent } from "./install-agent.js";
|
|
1128
|
+
export type { InstalledAgentInstance, InstallAgentInstancesOptions, InstallAgentInstancesResult, } from "./install-instances.js";
|
|
1129
|
+
export { installAgentInstances } from "./install-instances.js";
|
|
1088
1130
|
export type { AgentRenderer, AgentRenderInput, AgentRenderResult } from "./renderers.js";
|
|
1089
1131
|
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, } from "./renderers.js";
|
|
1090
1132
|
export type { AbilityRef, ConnectorRef, ContractRef, FragmentContext, FragmentId, } from "./fragments.js";
|