@skaile/workspaces 0.25.0 → 0.26.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 +223 -0
- package/README.md +2 -2
- package/dist/{asset-feeds-77KLWCBP.js → asset-feeds-WMVTI7KW.js} +11 -10
- package/dist/asset-feeds-WMVTI7KW.js.map +1 -0
- package/dist/asset-manager/index.js +11 -10
- package/dist/asset-manager/installer.js +10 -9
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/asset-manager/src/index.d.ts +6 -7
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +14 -7
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +8 -34
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/omp.js +64 -50
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/index.js +4 -4
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +20 -4
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/error-classifier.d.ts +17 -0
- package/dist/bridge/src/error-classifier.d.ts.map +1 -1
- package/dist/bridge/src/models.d.ts +1 -1
- package/dist/bridge/src/models.d.ts.map +1 -1
- package/dist/bridge/src/provider-endpoints.d.ts +16 -0
- package/dist/bridge/src/provider-endpoints.d.ts.map +1 -0
- package/dist/bridge/src/validation.d.ts +1 -1
- package/dist/bridge/src/validation.d.ts.map +1 -1
- package/dist/{chunk-M5TE6YI5.js → chunk-23M4XZQW.js} +10 -52
- package/dist/chunk-23M4XZQW.js.map +1 -0
- package/dist/{chunk-GL45UNVS.js → chunk-2FS4FPZ7.js} +3 -3
- package/dist/{chunk-GL45UNVS.js.map → chunk-2FS4FPZ7.js.map} +1 -1
- package/dist/{chunk-6VTG73UY.js → chunk-45H3UO2R.js} +2 -2
- package/dist/{chunk-6VTG73UY.js.map → chunk-45H3UO2R.js.map} +1 -1
- package/dist/chunk-4SQ6Y6U7.js +28 -0
- package/dist/chunk-4SQ6Y6U7.js.map +1 -0
- package/dist/{chunk-LSGAYQ2E.js → chunk-5YO3H5Q4.js} +3 -3
- package/dist/{chunk-LSGAYQ2E.js.map → chunk-5YO3H5Q4.js.map} +1 -1
- package/dist/{chunk-JDX54X4Y.js → chunk-7GWYRVAX.js} +12 -9
- package/dist/chunk-7GWYRVAX.js.map +1 -0
- package/dist/{chunk-4FADEVBN.js → chunk-7OBGSR7O.js} +5 -5
- package/dist/chunk-7OBGSR7O.js.map +1 -0
- package/dist/{chunk-QXC62DOF.js → chunk-BKF3UFF4.js} +21 -9
- package/dist/chunk-BKF3UFF4.js.map +1 -0
- package/dist/{chunk-KOVLSBXK.js → chunk-BMQKMOQY.js} +81 -79
- package/dist/chunk-BMQKMOQY.js.map +1 -0
- package/dist/{chunk-4QVFQEY2.js → chunk-BQRRBGDE.js} +2 -2
- package/dist/{chunk-4QVFQEY2.js.map → chunk-BQRRBGDE.js.map} +1 -1
- package/dist/{chunk-UD4ZLXGS.js → chunk-C32BRO2W.js} +67 -35
- package/dist/chunk-C32BRO2W.js.map +1 -0
- package/dist/{chunk-GZWJGNNN.js → chunk-DEYYRFQU.js} +3 -3
- package/dist/chunk-DEYYRFQU.js.map +1 -0
- package/dist/{chunk-WIAHJOMG.js → chunk-IEJ5IOC3.js} +10 -2
- package/dist/chunk-IEJ5IOC3.js.map +1 -0
- package/dist/chunk-IERB3UXJ.js +215 -0
- package/dist/chunk-IERB3UXJ.js.map +1 -0
- package/dist/{chunk-FVTV7M76.js → chunk-IFGTRL2I.js} +3 -3
- package/dist/chunk-IFGTRL2I.js.map +1 -0
- package/dist/{chunk-KT3CK26V.js → chunk-JIQLLZ65.js} +203 -39
- package/dist/chunk-JIQLLZ65.js.map +1 -0
- package/dist/{chunk-XVL22AWE.js → chunk-KL2MQ6WI.js} +114 -63
- package/dist/chunk-KL2MQ6WI.js.map +1 -0
- package/dist/{chunk-6FNCZYJY.js → chunk-MBOR7D65.js} +3 -3
- package/dist/{chunk-6FNCZYJY.js.map → chunk-MBOR7D65.js.map} +1 -1
- package/dist/{chunk-QAVZOJCV.js → chunk-OVRSNIKJ.js} +2 -2
- package/dist/chunk-OVRSNIKJ.js.map +1 -0
- package/dist/{chunk-DQWREFRQ.js → chunk-PAYAFNXG.js} +22 -3
- package/dist/chunk-PAYAFNXG.js.map +1 -0
- package/dist/{chunk-D3VO6WNC.js → chunk-PRLD7EXG.js} +3 -3
- package/dist/chunk-PRLD7EXG.js.map +1 -0
- package/dist/{chunk-B4ZXBH57.js → chunk-PY7AQRGH.js} +59 -13
- package/dist/chunk-PY7AQRGH.js.map +1 -0
- package/dist/{chunk-NELZIQ2E.js → chunk-QDJKE557.js} +20 -3
- package/dist/chunk-QDJKE557.js.map +1 -0
- package/dist/{chunk-FJFHJBGS.js → chunk-QHXS3YDV.js} +9 -9
- package/dist/chunk-QHXS3YDV.js.map +1 -0
- package/dist/{chunk-DCAWIRD6.js → chunk-RTAIGPTF.js} +150 -104
- package/dist/chunk-RTAIGPTF.js.map +1 -0
- package/dist/{chunk-IPUYL6TD.js → chunk-TV72ZJYN.js} +8 -5
- package/dist/{chunk-IPUYL6TD.js.map → chunk-TV72ZJYN.js.map} +1 -1
- package/dist/{chunk-ICS76R4T.js → chunk-W7W66MDZ.js} +10 -8
- package/dist/chunk-W7W66MDZ.js.map +1 -0
- package/dist/{chunk-BJWUSHC4.js → chunk-WD4LP66U.js} +21 -20
- package/dist/chunk-WD4LP66U.js.map +1 -0
- package/dist/{chunk-4FJE6BI6.js → chunk-XGLGS5B4.js} +3 -3
- package/dist/{chunk-4FJE6BI6.js.map → chunk-XGLGS5B4.js.map} +1 -1
- package/dist/{chunk-XMP6XTMF.js → chunk-YDTW4GT6.js} +450 -207
- package/dist/chunk-YDTW4GT6.js.map +1 -0
- package/dist/{chunk-2XY6732A.js → chunk-YRU4WB6Y.js} +5 -5
- package/dist/chunk-YRU4WB6Y.js.map +1 -0
- package/dist/{chunk-3QTZWPGH.js → chunk-Z5DI7PDG.js} +141 -87
- package/dist/chunk-Z5DI7PDG.js.map +1 -0
- package/dist/{chunk-KLNL7QHN.js → chunk-ZAP2BDHG.js} +30 -5
- package/dist/chunk-ZAP2BDHG.js.map +1 -0
- package/dist/{chunk-GCJXPUHG.js → chunk-ZONCCO5N.js} +9 -4
- package/dist/chunk-ZONCCO5N.js.map +1 -0
- package/dist/{chunk-SETTLPBD.js → chunk-ZYDE52WE.js} +3 -3
- package/dist/{chunk-SETTLPBD.js.map → chunk-ZYDE52WE.js.map} +1 -1
- package/dist/cli/index.js +442 -415
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/connector.d.ts +7 -0
- package/dist/cli/src/commands/connector.d.ts.map +1 -1
- package/dist/cli/src/commands/flow.d.ts +3 -2
- package/dist/cli/src/commands/flow.d.ts.map +1 -1
- package/dist/cli/src/commands/npx.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/flow-discovery.d.ts +24 -0
- package/dist/cli/src/flow-discovery.d.ts.map +1 -0
- package/dist/cli/src/open-registry.d.ts +2 -2
- package/dist/cli/src/paths.d.ts +26 -9
- package/dist/cli/src/paths.d.ts.map +1 -1
- package/dist/cli/src/skill-walker.d.ts +9 -5
- package/dist/cli/src/skill-walker.d.ts.map +1 -1
- package/dist/connectors/config.js +8 -7
- package/dist/connectors/index.js +13 -12
- package/dist/connectors/rclone-config.js +1 -1
- package/dist/connectors/src/connector-manager.d.ts +24 -2
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/connector-registry.d.ts +3 -3
- package/dist/connectors/src/credential-helper-script.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +4 -2
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/connectors/src/mount-placeholder.d.ts +68 -0
- package/dist/connectors/src/mount-placeholder.d.ts.map +1 -0
- package/dist/connectors/src/rclone-config/googledrive.d.ts +1 -1
- package/dist/core/discovery.js +1 -1
- package/dist/core/index.js +7 -6
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.d.ts +2 -0
- package/dist/core/publish-manifest.js +5 -0
- package/dist/core/publish-manifest.js.map +1 -0
- package/dist/core/runtime-assets.js +5 -4
- package/dist/core/src/discovery.d.ts +27 -0
- package/dist/core/src/discovery.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +8 -5
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/manifest-yaml-editor.d.ts +62 -0
- package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -0
- package/dist/core/src/models.d.ts +6 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +160 -0
- package/dist/core/src/publish-manifest.d.ts.map +1 -0
- package/dist/core/src/repo-manager.d.ts +9 -1
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/runtime-assets.d.ts +80 -29
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +19 -6
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +9 -36
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts +1 -15
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -3
- package/dist/deploy/index.js +50 -79
- package/dist/deploy/index.js.map +1 -1
- package/dist/deploy/src/targets/container-runtime.d.ts +1 -1
- package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
- package/dist/deploy/src/targets/local.d.ts.map +1 -1
- package/dist/deploy/src/targets/nix.d.ts.map +1 -1
- package/dist/deploy/src/targets/process-handle.d.ts +7 -5
- package/dist/deploy/src/targets/process-handle.d.ts.map +1 -1
- package/dist/discovery/index.js +5 -4
- package/dist/discovery/src/discover-manifest.d.ts +3 -2
- package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
- package/dist/discovery/src/discover.d.ts +2 -2
- package/dist/discovery/src/discover.d.ts.map +1 -1
- package/dist/discovery/src/index.d.ts +1 -1
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/discovery/src/source-config.d.ts +53 -12
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/discovery/src/tree-entries.d.ts +2 -2
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/{ensure-sources-7MOOKY3K.js → ensure-sources-CVULUVH4.js} +12 -11
- package/dist/ensure-sources-CVULUVH4.js.map +1 -0
- package/dist/factory-assets/.skaile-source.yaml +6 -0
- package/dist/factory-assets/README.md +36 -0
- package/dist/factory-assets/bundles/workspaces-authoring/workspaces-authoring.bundle.yaml +9 -0
- package/dist/factory-assets/connectors/deploy/CONNECTOR.md +41 -0
- package/dist/{base-assets → factory-assets}/connectors/deploy/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/deploy.js +22 -0
- package/dist/factory-assets/connectors/devserver/CONNECTOR.md +44 -0
- package/dist/{base-assets → factory-assets}/connectors/devserver/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/devserver.js +22 -0
- package/dist/factory-assets/connectors/flow/CONNECTOR.md +47 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/adapter.js +22 -0
- package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-kind-provider.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/flow-manifest.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/loader.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine.js +15 -0
- package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.d.ts +5 -5
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js +1 -1
- package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.d.ts +8 -8
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/run-flow.js +25 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.d.ts +2 -2
- package/dist/factory-assets/connectors/flow/stimulus-driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/stimulus-driver.js +4 -0
- package/dist/factory-assets/connectors/flow.js +22 -0
- package/dist/factory-assets/connectors/git/CONNECTOR.md +145 -0
- package/dist/{base-assets → factory-assets}/connectors/git/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/git.js +22 -0
- package/dist/factory-assets/connectors/gmail/CONNECTOR.md +50 -0
- package/dist/{base-assets → factory-assets}/connectors/gmail/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/gmail.js +22 -0
- package/dist/factory-assets/connectors/googledrive/CONNECTOR.md +150 -0
- package/dist/{base-assets → factory-assets}/connectors/googledrive/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/googledrive/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/googledrive.js +22 -0
- package/dist/factory-assets/connectors/local/CONNECTOR.md +40 -0
- package/dist/{base-assets → factory-assets}/connectors/local/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/local.js +22 -0
- package/dist/factory-assets/connectors/mattermost/CONNECTOR.md +65 -0
- package/dist/{base-assets → factory-assets}/connectors/mattermost/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/mattermost.js +22 -0
- package/dist/factory-assets/connectors/memory/CONNECTOR.md +40 -0
- package/dist/{base-assets → factory-assets}/connectors/memory/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/memory.js +22 -0
- package/dist/factory-assets/connectors/minio/CONNECTOR.md +68 -0
- package/dist/{base-assets → factory-assets}/connectors/minio/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/minio.js +22 -0
- package/dist/factory-assets/connectors/postgres/CONNECTOR.md +46 -0
- package/dist/{base-assets → factory-assets}/connectors/postgres/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/postgres.js +22 -0
- package/dist/factory-assets/connectors/s3/CONNECTOR.md +76 -0
- package/dist/{base-assets → factory-assets}/connectors/s3/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/s3.js +22 -0
- package/dist/factory-assets/connectors/sharepoint/CONNECTOR.md +181 -0
- package/dist/{base-assets → factory-assets}/connectors/sharepoint/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/sharepoint.js +22 -0
- package/dist/factory-assets/connectors/sqlite/CONNECTOR.md +44 -0
- package/dist/{base-assets → factory-assets}/connectors/sqlite/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/sqlite.js +22 -0
- package/dist/factory-assets/connectors/static-server/CONNECTOR.md +41 -0
- package/dist/{base-assets → factory-assets}/connectors/static-server/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/static-server.js +22 -0
- package/dist/factory-assets/connectors/tunnel/CONNECTOR.md +40 -0
- package/dist/{base-assets → factory-assets}/connectors/tunnel/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/tunnel.js +22 -0
- package/dist/factory-assets/connectors/webdav/CONNECTOR.md +139 -0
- package/dist/{base-assets → factory-assets}/connectors/webdav/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/webdav.js +22 -0
- package/dist/factory-assets/connectors/xstate/CONNECTOR.md +57 -0
- package/dist/{base-assets → factory-assets}/connectors/xstate/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/xstate-store/CONNECTOR.md +48 -0
- package/dist/{base-assets → factory-assets}/connectors/xstate-store/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/xstate-store.js +22 -0
- package/dist/factory-assets/connectors/xstate.js +22 -0
- package/dist/{base-assets → factory-assets}/index.d.ts +1 -1
- package/dist/factory-assets/index.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/index.js +1 -1
- package/dist/factory-assets/index.js.map +1 -0
- package/dist/factory-assets/skaile.manifest.yaml +25 -0
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +176 -0
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +243 -0
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +197 -0
- package/dist/factory-assets/skills/manifest-compliance/SKILL.md +140 -0
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +239 -0
- package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +168 -0
- package/dist/{flows-DYFTPCPM.js → flows-JZFJD5IN.js} +3 -3
- package/dist/{flows-DYFTPCPM.js.map → flows-JZFJD5IN.js.map} +1 -1
- package/dist/library/index.js +10 -9
- package/dist/library/src/library.d.ts +2 -0
- package/dist/library/src/library.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +2 -0
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +2 -1
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/local/sidecar-paths.d.ts +4 -4
- package/dist/library/src/local/sidecar-paths.d.ts.map +1 -1
- package/dist/library/src/local/store-paths.d.ts +4 -3
- package/dist/library/src/local/store-paths.d.ts.map +1 -1
- package/dist/library/src/pin-resolver.d.ts.map +1 -1
- package/dist/library/src/preset/apply.d.ts.map +1 -1
- package/dist/library/src/preset/placeholders.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +7 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts +7 -0
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/library/src/sync/manifest-writeback.d.ts +1 -1
- package/dist/library/src/sync/manifest-writeback.d.ts.map +1 -1
- package/dist/open-library-WYASW4BH.js +22 -0
- package/dist/{open-library-GW7DWWNZ.js.map → open-library-WYASW4BH.js.map} +1 -1
- package/dist/paths-BMW6JYW6.js +15 -0
- package/dist/{paths-FKKGS6BA.js.map → paths-BMW6JYW6.js.map} +1 -1
- package/dist/{plugin-store-R32NH7JE.js → plugin-store-O5VR45CA.js} +9 -8
- package/dist/plugin-store-O5VR45CA.js.map +1 -0
- package/dist/plugins/src/asset-kind-provider.d.ts +1 -1
- package/dist/plugins/src/catalog-source.d.ts +13 -0
- package/dist/plugins/src/catalog-source.d.ts.map +1 -1
- package/dist/resolver/index.js +1 -1
- package/dist/resolver/src/parser.d.ts.map +1 -1
- package/dist/runner/index.js +20 -19
- package/dist/runner/src/capability-registry.d.ts +1 -1
- package/dist/runner/src/capability-registry.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/resources.d.ts +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/workspace-migration.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +11 -10
- package/dist/sdk/bridge.js +4 -4
- package/dist/sdk/core.js +7 -6
- package/dist/sdk/flow.js +12 -1
- package/dist/sdk/index.js +23 -22
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +1 -1
- package/dist/sdk/runner.js +20 -19
- package/dist/sdk/session.js +1 -1
- package/dist/sdk/src/flow/index.d.ts +1 -1
- package/dist/sdk/src/flow/index.d.ts.map +1 -1
- package/dist/sdk/src/workspace.d.ts +3 -2
- package/dist/sdk/src/workspace.d.ts.map +1 -1
- package/dist/sdk/telemetry.js +1 -1
- package/dist/secrets/index.js +1 -1
- package/dist/secrets/src/providers/env.d.ts.map +1 -1
- package/dist/secrets/src/providers/local.d.ts.map +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/src/mentions.d.ts.map +1 -1
- package/dist/{setup-SRPBQOHY.js → setup-YNLFR5GB.js} +13 -12
- package/dist/setup-YNLFR5GB.js.map +1 -0
- package/dist/skills-6HJ3WINN.js +7 -0
- package/dist/{skills-CRL3VJNN.js.map → skills-6HJ3WINN.js.map} +1 -1
- package/dist/store-client-CENBEASX.js +15 -0
- package/dist/{store-client-INZD2RYD.js.map → store-client-CENBEASX.js.map} +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/src/config.d.ts +0 -16
- package/dist/telemetry/src/config.d.ts.map +1 -1
- package/dist/tui/index.js +20 -19
- package/dist/tui/index.js.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/flow.d.ts +2 -2
- package/dist/types/src/manifests/index.d.ts +1 -1
- package/dist/types/src/manifests/skill.d.ts +21 -0
- package/dist/types/src/manifests/skill.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +4 -4
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +1 -1
- package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
- package/package.json +158 -151
- package/dist/asset-feeds-77KLWCBP.js.map +0 -1
- package/dist/base-assets/connectors/deploy/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/deploy.js +0 -21
- package/dist/base-assets/connectors/devserver/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/devserver.js +0 -21
- package/dist/base-assets/connectors/flow/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/adapter.js +0 -21
- package/dist/base-assets/connectors/flow/engine/engine.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/flow-manifest.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/index.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/loader.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/types.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine.js +0 -4
- package/dist/base-assets/connectors/flow/index.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/prompt-fragments.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/run-flow.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/run-flow.js +0 -24
- package/dist/base-assets/connectors/flow/stimulus-driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/stimulus-driver.js +0 -4
- package/dist/base-assets/connectors/flow.js +0 -21
- package/dist/base-assets/connectors/git/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/git.js +0 -21
- package/dist/base-assets/connectors/gmail/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/gmail.js +0 -21
- package/dist/base-assets/connectors/googledrive/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/googledrive.js +0 -21
- package/dist/base-assets/connectors/local/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/local.js +0 -21
- package/dist/base-assets/connectors/mattermost/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/mattermost.js +0 -21
- package/dist/base-assets/connectors/memory/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/memory.js +0 -21
- package/dist/base-assets/connectors/minio/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/minio.js +0 -21
- package/dist/base-assets/connectors/postgres/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/postgres.js +0 -21
- package/dist/base-assets/connectors/s3/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/s3.js +0 -21
- package/dist/base-assets/connectors/sharepoint/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/sharepoint.js +0 -21
- package/dist/base-assets/connectors/sqlite/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/sqlite.js +0 -21
- package/dist/base-assets/connectors/static-server/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/static-server.js +0 -21
- package/dist/base-assets/connectors/tunnel/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/tunnel.js +0 -21
- package/dist/base-assets/connectors/webdav/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/webdav.js +0 -21
- package/dist/base-assets/connectors/xstate/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/xstate-store/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/xstate-store.js +0 -21
- package/dist/base-assets/connectors/xstate.js +0 -21
- package/dist/base-assets/index.d.ts.map +0 -1
- package/dist/base-assets/index.js.map +0 -1
- package/dist/chunk-2M3XTMOL.js +0 -23
- package/dist/chunk-2M3XTMOL.js.map +0 -1
- package/dist/chunk-2XY6732A.js.map +0 -1
- package/dist/chunk-3QTZWPGH.js.map +0 -1
- package/dist/chunk-4FADEVBN.js.map +0 -1
- package/dist/chunk-B4ZXBH57.js.map +0 -1
- package/dist/chunk-BJWUSHC4.js.map +0 -1
- package/dist/chunk-D3VO6WNC.js.map +0 -1
- package/dist/chunk-DCAWIRD6.js.map +0 -1
- package/dist/chunk-DQWREFRQ.js.map +0 -1
- package/dist/chunk-FJFHJBGS.js.map +0 -1
- package/dist/chunk-FVTV7M76.js.map +0 -1
- package/dist/chunk-GCJXPUHG.js.map +0 -1
- package/dist/chunk-GZWJGNNN.js.map +0 -1
- package/dist/chunk-ICS76R4T.js.map +0 -1
- package/dist/chunk-JDX54X4Y.js.map +0 -1
- package/dist/chunk-KLNL7QHN.js.map +0 -1
- package/dist/chunk-KOVLSBXK.js.map +0 -1
- package/dist/chunk-KT3CK26V.js.map +0 -1
- package/dist/chunk-M5TE6YI5.js.map +0 -1
- package/dist/chunk-NELZIQ2E.js.map +0 -1
- package/dist/chunk-QAVZOJCV.js.map +0 -1
- package/dist/chunk-QXC62DOF.js.map +0 -1
- package/dist/chunk-UD4ZLXGS.js.map +0 -1
- package/dist/chunk-WIAHJOMG.js.map +0 -1
- package/dist/chunk-XMP6XTMF.js.map +0 -1
- package/dist/chunk-XVL22AWE.js.map +0 -1
- package/dist/ensure-sources-7MOOKY3K.js.map +0 -1
- package/dist/open-library-GW7DWWNZ.js +0 -21
- package/dist/paths-FKKGS6BA.js +0 -4
- package/dist/plugin-store-R32NH7JE.js.map +0 -1
- package/dist/setup-SRPBQOHY.js.map +0 -1
- package/dist/skills-CRL3VJNN.js +0 -7
- package/dist/store-client-INZD2RYD.js +0 -14
- /package/dist/{base-assets → factory-assets}/connectors/deploy.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/deploy.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/devserver.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/devserver.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/adapter.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/engine.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-manifest.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/index.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/loader.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/types.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/index.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/git.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/git.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/gmail.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/gmail.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/googledrive.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/googledrive.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/local.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/local.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/mattermost.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/mattermost.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/memory.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/memory.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/minio.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/minio.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/postgres.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/postgres.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/s3.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/s3.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sharepoint.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sharepoint.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sqlite.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sqlite.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/static-server.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/static-server.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/tunnel.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/tunnel.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/webdav.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/webdav.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate-store.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate-store.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate.js.map +0 -0
package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# The skaile dependency standard (canonical-identity)
|
|
2
|
+
|
|
3
|
+
Deep reference for the dependency grammar used by `@skaile/workspaces`. The
|
|
4
|
+
authoritative source is `docs/concepts/manifest-schema.md` and the spec
|
|
5
|
+
`_devlog/specs/2026-05-31-manifest-canonical-identity.md` (scoped-grammar follow-up:
|
|
6
|
+
`_devlog/specs/2026-06-02-scoped-asset-ref-grammar.md`). This file restates it for
|
|
7
|
+
asset authors and flags where the current code is **stricter than the older docs**.
|
|
8
|
+
|
|
9
|
+
## 1. Identity
|
|
10
|
+
|
|
11
|
+
Every asset has a global identity tuple:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
(publisher, kind, name, version)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- **Asset-intrinsic.** Declared in the *source's* `skaile.yaml`, never by the
|
|
18
|
+
consuming project. There is no project-local renaming.
|
|
19
|
+
- **publisher** — canonical, GitHub-shaped: 1–39 chars, alphanumeric + single
|
|
20
|
+
hyphens, no leading/trailing hyphen, no double hyphen. Auto-derived from a
|
|
21
|
+
GitHub source URL's org/user; **must be declared** for any non-GitHub URL.
|
|
22
|
+
- **kind** — one of: `skill`, `agent`, `prompt`, `bundle`, `flow`, `contract`,
|
|
23
|
+
`mcp-server`, `persona`, `ruleset`, `knowledge`, `connector`.
|
|
24
|
+
- **version** — SemVer (see § Version waterfall). Two assets with the same tuple
|
|
25
|
+
MUST be byte-identical.
|
|
26
|
+
|
|
27
|
+
## 2. The canonical reference grammar
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
kind:@<publisher>/name[#version]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
| Token | Role |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `kind:` | asset kind + colon. `mcp:` is shorthand for `mcp-server:`. |
|
|
36
|
+
| `@` | **scope sigil** — introduces the publisher, npm-style. |
|
|
37
|
+
| `<publisher>/` | publisher namespace + slash. |
|
|
38
|
+
| `name` | asset name. Permissive: anything except `/`, `#`, whitespace. |
|
|
39
|
+
| `#version` | optional **version sigil** + pin. |
|
|
40
|
+
|
|
41
|
+
Reads as an npm scoped package: `@skaile-ai/audit`.
|
|
42
|
+
|
|
43
|
+
### Examples
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
skill:@skaile-ai/audit
|
|
47
|
+
skill:@skaile-ai/audit#^1.4.0
|
|
48
|
+
bundle:@skaile-ai/skaile-development#~2.0
|
|
49
|
+
agent:@vercel-labs/reviewer
|
|
50
|
+
mcp:@skaile-ai/excel # == mcp-server:@skaile-ai/excel
|
|
51
|
+
contract:@skaile-ai/implementation-contract#1.0.0
|
|
52
|
+
skill:@skaile-ai/audit#6a5266fdda9d1c697f537968532691f6d70c779a # 40-char SHA pin
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 3. Pins
|
|
56
|
+
|
|
57
|
+
| Pin form | Meaning |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `#1.4.0` | exact SemVer |
|
|
60
|
+
| `#^1.4.0`, `#^1` | caret range |
|
|
61
|
+
| `#~1.4.0`, `#~1.4` | tilde range |
|
|
62
|
+
| `#1.x`, `#1.4.x` | wildcard |
|
|
63
|
+
| `#<40-char-sha>` | exact source-commit pin |
|
|
64
|
+
| absent | resolver picks the highest SemVer-sorted candidate |
|
|
65
|
+
| `#main`, `#latest`, `#HEAD`, any floating ref | **parse-time error** |
|
|
66
|
+
|
|
67
|
+
Floating refs are rejected by design — resolution must be reproducible.
|
|
68
|
+
|
|
69
|
+
## 4. SHA-synthetic versions
|
|
70
|
+
|
|
71
|
+
When no version can be derived (no `assets[].version`, no source `version:`, no
|
|
72
|
+
SemVer git tag), the resolver mints `0.0.0-sha.<7char>` from the commit. These:
|
|
73
|
+
|
|
74
|
+
- participate in resolution,
|
|
75
|
+
- satisfy **only** their exact literal pin (`#0.0.0-sha.abc1234`) or the
|
|
76
|
+
commit-SHA pin that produced them,
|
|
77
|
+
- never match caret/tilde/wildcard ranges.
|
|
78
|
+
|
|
79
|
+
Consequence: an untagged source resolves only when pinned exactly. **Tag
|
|
80
|
+
releases** to enable ranged (`^`, `~`, `x`) installs.
|
|
81
|
+
|
|
82
|
+
## 5. `requires:` vs `dependencies:` — the split that trips authors
|
|
83
|
+
|
|
84
|
+
There are two distinct dependency channels. They use **different grammars**.
|
|
85
|
+
|
|
86
|
+
### `requires:` — content frontmatter, intra-source, bare `kind:name`
|
|
87
|
+
|
|
88
|
+
In a `SKILL.md` / `agent.yaml` / `MCP.md`, `requires:` lists peer assets the
|
|
89
|
+
asset needs. Form is **`kind:name`** — no `@publisher`, no `#version`. The
|
|
90
|
+
publisher is **inherited from the same source** (same-source assumption).
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
# SKILL.md frontmatter
|
|
94
|
+
metadata:
|
|
95
|
+
requires:
|
|
96
|
+
- contract:implementation-contract
|
|
97
|
+
- skill:use-exa
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Accepted as a comma-separated string or a YAML list. Read from either the
|
|
101
|
+
top level or under `metadata:`.
|
|
102
|
+
|
|
103
|
+
### `dependencies:` — bundle & project manifests, full canonical refs
|
|
104
|
+
|
|
105
|
+
A **bundle** (`*.bundle.yaml`) and a **project** `skaile.yaml` use
|
|
106
|
+
`dependencies:` with the **full canonical grammar** and can cross publishers and
|
|
107
|
+
pin versions:
|
|
108
|
+
|
|
109
|
+
```yaml
|
|
110
|
+
# a bundle, or a project skaile.yaml
|
|
111
|
+
dependencies:
|
|
112
|
+
- skill:@skaile-ai/audit#^1.4
|
|
113
|
+
- agent:@skaile-ai/impl-build-implement
|
|
114
|
+
- skill:@vercel-labs/agent-skills
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
> Putting a full canonical ref in a content `requires:` (or a bare `kind:name`
|
|
118
|
+
> in a project `dependencies:`) is the most common authoring mistake. Keep them
|
|
119
|
+
> in their lanes: **`requires:` = bare same-source; `dependencies:` = canonical
|
|
120
|
+
> cross-source.**
|
|
121
|
+
|
|
122
|
+
### Transitive expansion
|
|
123
|
+
|
|
124
|
+
Installing a bundle resolves every `dependencies:` ref, recursing into nested
|
|
125
|
+
bundles to arbitrary depth. A shared dep is de-duped; cycles are broken by a
|
|
126
|
+
`seen` set. A bare transitive ref inherits its parent candidate's publisher.
|
|
127
|
+
|
|
128
|
+
## 6. Resolution algorithm (per dep)
|
|
129
|
+
|
|
130
|
+
1. Gather **source candidates** from every cloned `sources[]` repo (provenance
|
|
131
|
+
index, keyed `<publisher>/<kind>:<name>`).
|
|
132
|
+
2. Optionally gather **store candidates** from every `stores[]` catalog.
|
|
133
|
+
3. Filter by the pin (SemVer range / SHA / exact).
|
|
134
|
+
4. Pick the **highest** matching version.
|
|
135
|
+
5. **Conflict check:** if ≥2 finalists at that version have divergent content
|
|
136
|
+
`sha256`, raise `CanonicalRefConflictError` with the dep chain — unless an
|
|
137
|
+
`overrides[]` entry selects one source.
|
|
138
|
+
6. Cross-check: when a source and a store both produced the chosen version,
|
|
139
|
+
probe `catalog.getCanonicalDigest` and compare `sha256`.
|
|
140
|
+
|
|
141
|
+
### Conflict error shape
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
error: divergent sha256 for skill:@skaile-ai/audit#1.4.0
|
|
145
|
+
pulled in via:
|
|
146
|
+
bundle:@skaile-ai/skaile-development#^2.0
|
|
147
|
+
skill:@skaile-ai/audit#~1.4
|
|
148
|
+
candidates:
|
|
149
|
+
https://github.com/skaile-ai/ai-assets @ 6a5266fd sha256: 1da6294a...
|
|
150
|
+
https://github.com/mortegro/ai-assets-fork @ ab12cd34 sha256: 9e3f7c01...
|
|
151
|
+
resolve by:
|
|
152
|
+
1. removing one source from skaile.yaml,
|
|
153
|
+
2. configuring a store and using its canonical digest, or
|
|
154
|
+
3. adding to overrides: (with a non-empty reason:)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## 7. Overrides
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
overrides:
|
|
161
|
+
- ref: skill:@skaile-ai/audit#1.4.0 # the canonical, fully-pinned ref
|
|
162
|
+
source: https://github.com/skaile-ai/ai-assets # which candidate wins
|
|
163
|
+
reason: "vendored patch for #42; revert when upstream merges" # REQUIRED, non-empty
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
`reason:` is mandatory — empty/missing is a parse error. Use overrides only to
|
|
167
|
+
break a genuine sha conflict; the right long-term fix is to stop publishing
|
|
168
|
+
divergent bytes under the same coordinates.
|
|
169
|
+
|
|
170
|
+
## 8. Version waterfall (recap)
|
|
171
|
+
|
|
172
|
+
1. `assets[].version` in the source `skaile.yaml`
|
|
173
|
+
2. source top-level `version:`
|
|
174
|
+
3. SemVer git tag (`git describe --tags`, `v` stripped)
|
|
175
|
+
4. synthetic `0.0.0-sha.<7char>`
|
|
176
|
+
|
|
177
|
+
## 9. What changed from legacy (migration cheatsheet)
|
|
178
|
+
|
|
179
|
+
| Legacy | Canonical (now) |
|
|
180
|
+
|---|---|
|
|
181
|
+
| `skill:audit@skaile-ai` | `skill:@skaile-ai/audit` |
|
|
182
|
+
| `skill:audit@skaile-ai#1.4.0` | `skill:@skaile-ai/audit#1.4.0` |
|
|
183
|
+
| bare `skill:audit` in a project dep | `skill:@<publisher>/audit` (publisher now required) |
|
|
184
|
+
| `@skaile` publisher | `@skaile-ai` (rebrand) |
|
|
185
|
+
| `repositories:` / `ai_resources:` top-level keys | `sources:` / `dependencies:` |
|
|
186
|
+
|
|
187
|
+
**The legacy `kind:name@<publisher>` grammar no longer parses** — it is a hard
|
|
188
|
+
error (`publisher required in asset ref`). The older `manifest-schema.md` line
|
|
189
|
+
about "still parses for one release with a deprecation warning" is stale; the
|
|
190
|
+
aliases were removed. Run the `migrate-skaile-manifest` skill to convert.
|
|
191
|
+
|
|
192
|
+
## 10. Lock key
|
|
193
|
+
|
|
194
|
+
The lock file (`skaile.lock.yaml`, schema v3) keys each entry by the
|
|
195
|
+
fully-pinned canonical ref `kind:@<publisher>/name#version` and records the
|
|
196
|
+
contributing source URL + commit and per-file `sha256`. Regenerate, never
|
|
197
|
+
hand-edit: `rm skaile.lock.yaml && skaile install`.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: manifest-compliance
|
|
3
|
+
description: "Use when an AI-asset repo has manifests or skaile.yaml refs that fail canonical-name rules — the symptom is a runtime hard error like `publisher required in asset ref \"flow:@skaile-ai/CLI Concept\"` or `invalid asset name \"…\"` thrown by parseAssetRef at install/apply time. Scans a repo with `skaile validate`, then fixes each non-compliant asset identity (skill/agent `name`, flow `id`) to lowercase kebab-case and rewrites every reference (skaile.yaml dependencies/overrides, flow node skill refs, directory names). Trigger when the user says 'fix asset names', 'my manifest is invalid', 'publisher required error', 'invalid asset name', 'make my assets compliant', or 'migrate legacy manifest names'."
|
|
4
|
+
metadata:
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
source: AUTHORED
|
|
7
|
+
stage: beta
|
|
8
|
+
tags: [asset-store, manifest, compliance, validation, naming, migration, repo-author]
|
|
9
|
+
prerequisites:
|
|
10
|
+
inputs_optional:
|
|
11
|
+
- id: repo_path
|
|
12
|
+
label: "Path to the asset repo / library to check"
|
|
13
|
+
type: text
|
|
14
|
+
default: "."
|
|
15
|
+
hint: "Repo root — the tree containing SKILL.md / *.flow.yaml / skaile.yaml files"
|
|
16
|
+
- id: write
|
|
17
|
+
label: "Apply fixes vs report only"
|
|
18
|
+
type: boolean
|
|
19
|
+
default: false
|
|
20
|
+
hint: "If false, only report violations; if true, rename + rewrite refs"
|
|
21
|
+
reads:
|
|
22
|
+
- path: skills/authoring-skaile-manifests/references/dependency-standard.md
|
|
23
|
+
description: "Canonical dependency grammar + asset-ref shape"
|
|
24
|
+
keywords: [manifest, compliance, asset-name, kebab-case, parseAssetRef, validate]
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Manifest Compliance
|
|
28
|
+
|
|
29
|
+
Detect and fix asset manifests that violate the **canonical asset-name rule**,
|
|
30
|
+
then rewrite every reference so the repo installs and applies without the
|
|
31
|
+
`parseAssetRef` hard error.
|
|
32
|
+
|
|
33
|
+
## The rule
|
|
34
|
+
|
|
35
|
+
A canonical asset **name** (and a flow's **id**) is **lowercase kebab-case**:
|
|
36
|
+
|
|
37
|
+
- allowed: `a-z`, `0-9`, single hyphens between segments
|
|
38
|
+
- forbidden: uppercase, spaces, underscores, dots, leading/trailing or double hyphens
|
|
39
|
+
|
|
40
|
+
A full reference is `kind:@<publisher>/name[#version]` — e.g.
|
|
41
|
+
`flow:@skaile-ai/cli-concept`. A name like `"CLI Concept"` (space + uppercase)
|
|
42
|
+
breaks the grammar; because the publisher is present, older builds reported the
|
|
43
|
+
*misleading* `publisher required …` error — the real fault is the name.
|
|
44
|
+
|
|
45
|
+
> A flow's `name:` frontmatter is a human-readable **display title** and may
|
|
46
|
+
> contain spaces/uppercase. The asset identity is the flow's `id:` field —
|
|
47
|
+
> that is what must be kebab-case. Fix `id`, leave `name` alone.
|
|
48
|
+
|
|
49
|
+
## Step 0: Confirm context
|
|
50
|
+
|
|
51
|
+
1. Resolve `repo_path` (default `.`).
|
|
52
|
+
2. Confirm it's a repo/library tree (has `SKILL.md`, `*.flow.yaml`, or
|
|
53
|
+
`skaile.yaml` files somewhere under it).
|
|
54
|
+
|
|
55
|
+
## Step 1: Detect (always run first)
|
|
56
|
+
|
|
57
|
+
Run the repo-wide compliance check:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
bun run cli validate <repo_path>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`skaile validate [path]` walks the tree and reports, per file:
|
|
64
|
+
|
|
65
|
+
- `invalid asset name "…"` / `invalid asset id "…"` — a manifest identity that
|
|
66
|
+
isn't kebab-case (skill/agent `name`, flow `id`).
|
|
67
|
+
- `[dependencies] / [overrides.ref] — …` — a `skaile.yaml` ref that fails
|
|
68
|
+
`parseAssetRef` (the exact path that hard-errors at runtime).
|
|
69
|
+
- `[assets] — invalid asset name "…"` — a published `assets[]` entry identity.
|
|
70
|
+
|
|
71
|
+
Exit code is `1` when any violation is found. Collect the full list before
|
|
72
|
+
fixing — there are usually several, and references are interlinked.
|
|
73
|
+
|
|
74
|
+
If validate is clean, report "compliant" and stop.
|
|
75
|
+
|
|
76
|
+
## Step 2: Plan the renames
|
|
77
|
+
|
|
78
|
+
For each violation, derive the compliant name and present the mapping to the
|
|
79
|
+
user **before** writing:
|
|
80
|
+
|
|
81
|
+
| Bad identity | Proposed kebab-case |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `CLI Concept` | `cli-concept` |
|
|
84
|
+
| `Test Echo Flow` | `test-echo-flow` |
|
|
85
|
+
| `my_audit` | `my-audit` |
|
|
86
|
+
|
|
87
|
+
Kebab-case derivation: lowercase, replace runs of non-`[a-z0-9]` with a single
|
|
88
|
+
hyphen, trim leading/trailing hyphens. Flag collisions (two assets mapping to
|
|
89
|
+
the same name) for the user to disambiguate — never auto-merge.
|
|
90
|
+
|
|
91
|
+
## Step 3: Apply fixes (`write = true`)
|
|
92
|
+
|
|
93
|
+
For each renamed asset, apply **all** of these so no dangling reference remains:
|
|
94
|
+
|
|
95
|
+
1. **Manifest identity** — edit the `name:` (or, for flows, `id:`) field in the
|
|
96
|
+
asset's own manifest (`SKILL.md` frontmatter, `agent.yaml`, `*.flow.yaml`,
|
|
97
|
+
`MCP.md`, `CONNECTOR.md`, `*.preset.yaml`, etc.).
|
|
98
|
+
2. **Directory name** — if the asset's folder is named after the old identity,
|
|
99
|
+
rename the directory to match (use `git mv` so history is preserved).
|
|
100
|
+
3. **Inbound references** — grep the whole tree for the old identity and update
|
|
101
|
+
every occurrence:
|
|
102
|
+
- `skaile.yaml` → `dependencies:`, `overrides[].ref`, `assets[].name`
|
|
103
|
+
- flow nodes → `data.skill` / node refs that name the asset
|
|
104
|
+
- any `kind:@publisher/<old-name>` ref string anywhere
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
grep -rn "<old-name>" <repo_path> --include="*.yaml" --include="*.md" --include="*.json"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Review each hit — only rewrite genuine asset-ref occurrences, not prose.
|
|
111
|
+
|
|
112
|
+
## Step 4: Verify
|
|
113
|
+
|
|
114
|
+
Re-run the detector and confirm a clean tree:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
bun run cli validate <repo_path>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Expect `All manifests valid` and exit `0`. If violations remain, return to
|
|
121
|
+
Step 3 (a missed inbound reference, or a second-order collision).
|
|
122
|
+
|
|
123
|
+
## Step 5: Suggest commit
|
|
124
|
+
|
|
125
|
+
Summarize the renames applied (old → new) and the files touched, and suggest a
|
|
126
|
+
commit message, e.g.:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
fix(assets): make asset identities canonical kebab-case
|
|
130
|
+
|
|
131
|
+
- flow "CLI Concept" → cli-concept (+ refs)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## CHECKLIST
|
|
135
|
+
|
|
136
|
+
- [ ] Ran `skaile validate <repo_path>` and collected every violation
|
|
137
|
+
- [ ] Proposed kebab-case mapping reviewed with the user (collisions flagged)
|
|
138
|
+
- [ ] Fixed flow identity in `id:`, not `name:` (display title left intact)
|
|
139
|
+
- [ ] Updated manifest identity, directory name, AND all inbound references
|
|
140
|
+
- [ ] Re-ran `skaile validate` to a clean (exit 0) tree before committing
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "skaile-author-asset"
|
|
3
|
+
description: "Use when an asset author needs to build a skill in a local library and publish it. Covers the source/library/store model, structuring a repo into domains, the SKILL.md format, and the .skaile-source.yaml manifest (v1 glob vs v2 author-shipped inventory) and publish flow via the skaile CLI."
|
|
4
|
+
metadata:
|
|
5
|
+
version: "0.1.0"
|
|
6
|
+
tags:
|
|
7
|
+
- "authoring"
|
|
8
|
+
- "skill"
|
|
9
|
+
- "library"
|
|
10
|
+
- "publish"
|
|
11
|
+
- "manifest"
|
|
12
|
+
- "domain"
|
|
13
|
+
- "ai-assets"
|
|
14
|
+
- "asset-manager"
|
|
15
|
+
stage: "alpha"
|
|
16
|
+
requires:
|
|
17
|
+
- "skill:authoring-skaile-assets"
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Author an AI-Asset
|
|
21
|
+
|
|
22
|
+
How to author a **skill** (or any asset kind) in a local library, structure the
|
|
23
|
+
repository into **domains**, write the `.skaile-source.yaml` **manifest**, and
|
|
24
|
+
**publish** it through the store.
|
|
25
|
+
|
|
26
|
+
For the canonical skill folder layout and frontmatter spec, read the companion
|
|
27
|
+
**[authoring-skaile-assets]** skill first. This skill adds the
|
|
28
|
+
library/manifest/publish lifecycle on top of it.
|
|
29
|
+
|
|
30
|
+
## The three nouns
|
|
31
|
+
|
|
32
|
+
Everything below maps to one of three concepts. Keep them straight:
|
|
33
|
+
|
|
34
|
+
| Noun | What it is | Holds bytes? |
|
|
35
|
+
| ----------- | ----------------------------------------------------------------- | ------------ |
|
|
36
|
+
| **source** | A GitHub repo of AI-assets (yours, your team's, a third party's). | Yes |
|
|
37
|
+
| **library** | A registered place *on your machine* where you author/hold assets.| Yes |
|
|
38
|
+
| **store** | A remote catalog of **manifests** that point at sources. | No — pointers only |
|
|
39
|
+
|
|
40
|
+
The store never hosts asset bytes. It returns a pointer triple — upstream repo
|
|
41
|
+
URL + pinned commit SHA + per-file SHA256 — and the bytes are fetched directly
|
|
42
|
+
from GitHub and hash-verified on install.
|
|
43
|
+
|
|
44
|
+
## Asset kinds
|
|
45
|
+
|
|
46
|
+
A skill is one of several discoverable kinds. Each is recognized by a filename
|
|
47
|
+
glob:
|
|
48
|
+
|
|
49
|
+
| Kind | Discovery pattern |
|
|
50
|
+
| ------------ | ---------------------------------------------- |
|
|
51
|
+
| `skill` | `**/SKILL.md` |
|
|
52
|
+
| `agent` | `**/agent.yaml` or `**/AGENT.md` |
|
|
53
|
+
| `contract` | `**/CONTRACT.md` |
|
|
54
|
+
| `flow` | `**/*.flow.yaml` / `**/*.flow.json` |
|
|
55
|
+
| `connector` | `**/CONNECTOR.md` |
|
|
56
|
+
| `prompt` | `**/*.prompt.md` |
|
|
57
|
+
| `preset` | `**/*.preset.yaml` |
|
|
58
|
+
| `mcp-server` | `**/MCP.md` |
|
|
59
|
+
| `knowledge` | `**/knowledge.yaml` / `**/knowledge/index.yaml`|
|
|
60
|
+
|
|
61
|
+
## 1. Create a library and scaffold the skill
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# One-time: register a personal authoring library at ~/.skaile/libraries/personal
|
|
65
|
+
skaile library init personal
|
|
66
|
+
|
|
67
|
+
# Scaffold a new asset inside the default (or named) library
|
|
68
|
+
skaile library create skill my-skill --library personal
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Libraries live at `~/.skaile/libraries/<name>/`; the local index that tracks
|
|
72
|
+
them is `~/.skaile/index.db` (SQLite — never hand-edit it).
|
|
73
|
+
|
|
74
|
+
## 2. Structure: domains
|
|
75
|
+
|
|
76
|
+
A **domain** is the **first-level directory** of an asset repo. It groups
|
|
77
|
+
related assets and defines the publisher namespace. Lay out assets by
|
|
78
|
+
`<domain>/<kind-plural>/<name>/`:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
my-assets/ # repo root (a "source")
|
|
82
|
+
├── .skaile-source.yaml # manifest (see §4)
|
|
83
|
+
├── research/ # DOMAIN → publisher @research
|
|
84
|
+
│ ├── DOMAIN.md # domain description (recommended)
|
|
85
|
+
│ ├── skills/
|
|
86
|
+
│ │ ├── brief/SKILL.md
|
|
87
|
+
│ │ └── summarize/SKILL.md
|
|
88
|
+
│ ├── agents/
|
|
89
|
+
│ │ └── analyst/agent.yaml
|
|
90
|
+
│ └── contracts/
|
|
91
|
+
│ └── brief-format/CONTRACT.md
|
|
92
|
+
└── ops/ # DOMAIN → publisher @ops
|
|
93
|
+
└── skills/...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
With `publisher_default: '@<domain>'` in the manifest, every asset under
|
|
97
|
+
`research/` is published as `@research/<name>`. Override per-path with
|
|
98
|
+
`publisher_overrides`. Use `domain-builder` to scaffold a new domain.
|
|
99
|
+
|
|
100
|
+
## 3. Write the SKILL.md
|
|
101
|
+
|
|
102
|
+
A skill is `SKILL.md` = YAML frontmatter + a markdown body (the body is the
|
|
103
|
+
prompt injected to the LLM). Only `name` and `description` are required; all
|
|
104
|
+
skaile-specific fields go inside `metadata:` per `skill-builder-contract`.
|
|
105
|
+
Optional companions in the same folder: `validator.py` (deterministic
|
|
106
|
+
MUST/NEVER/CHECKLIST rules), `CLI.md`, `references/`, and nested sub-skills.
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
---
|
|
110
|
+
name: brief
|
|
111
|
+
description: Generate a concise project brief from a research question
|
|
112
|
+
metadata:
|
|
113
|
+
version: "1.0.0"
|
|
114
|
+
author: skaile
|
|
115
|
+
tags: [research, brief]
|
|
116
|
+
stage: alpha # alpha | beta | stable | deprecated
|
|
117
|
+
requires: # cross-asset dependencies (optional)
|
|
118
|
+
- "@research/brief-format@^2"
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
# Brief
|
|
122
|
+
|
|
123
|
+
## When to use
|
|
124
|
+
...
|
|
125
|
+
|
|
126
|
+
## How it works
|
|
127
|
+
1. ...
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Keep the body tight — it ships as a prompt.
|
|
131
|
+
|
|
132
|
+
## 4. The manifest — `.skaile-source.yaml`
|
|
133
|
+
|
|
134
|
+
One file at the **repo root** declares how the repo maps to publisher
|
|
135
|
+
namespaces. Two modes:
|
|
136
|
+
|
|
137
|
+
### v1 — glob mode (default)
|
|
138
|
+
|
|
139
|
+
Discovery walks the tree, matches kind globs, and resolves publishers from the
|
|
140
|
+
template. Use this while a repo is evolving fast.
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
version: 1
|
|
144
|
+
publisher_default: '@<domain>' # <domain> → first-level dir name
|
|
145
|
+
default_ref: main
|
|
146
|
+
publisher_overrides:
|
|
147
|
+
- path: research-contracts/
|
|
148
|
+
publisher: '@research-contracts'
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### v2 — author-shipped inventory (pinned)
|
|
152
|
+
|
|
153
|
+
Add an `assets:` block and bump to `version: 2`. Discovery then treats the
|
|
154
|
+
block as authoritative: it **skips the glob walk**, uses your curated `files[]`
|
|
155
|
+
filter, your per-entry publisher, your `requires[]` graph, and verifies your
|
|
156
|
+
`sha256`. Use this for reproducible, signed, audit-friendly releases.
|
|
157
|
+
|
|
158
|
+
```yaml
|
|
159
|
+
version: 2
|
|
160
|
+
publisher_default: '@<domain>'
|
|
161
|
+
default_ref: main
|
|
162
|
+
assets:
|
|
163
|
+
- path: research/skills/brief # relative to repo root
|
|
164
|
+
kind: skill
|
|
165
|
+
publisher: '@research' # required per entry
|
|
166
|
+
name: brief
|
|
167
|
+
version: 1.0.0
|
|
168
|
+
sha256: "<64-hex>" # optional locally, REQUIRED to publish
|
|
169
|
+
files: # explicit; no wildcards; ≥1
|
|
170
|
+
- SKILL.md
|
|
171
|
+
- validator.py
|
|
172
|
+
- references/template.md
|
|
173
|
+
requires:
|
|
174
|
+
- "@research/brief-format@^2"
|
|
175
|
+
metadata:
|
|
176
|
+
description: Generates a project brief
|
|
177
|
+
keywords: [research, brief]
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**Never hand-edit the `assets:` block.** Generate it from the asset files (this
|
|
181
|
+
is what `source-manifest-builder` automates):
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
skaile source build-manifest --path ./my-assets # preview
|
|
185
|
+
skaile source build-manifest --path ./my-assets --diff # show drift (CI-friendly, non-zero on drift)
|
|
186
|
+
skaile source build-manifest --path ./my-assets --write # write the manifest
|
|
187
|
+
skaile source verify-manifest --path ./my-assets --strict # verify before commit/publish
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Hash = sort `files[]` lexicographically, then SHA256 over
|
|
191
|
+
`<relpath>\0<content>\0` per file. Author-computed hashes are wire-compatible
|
|
192
|
+
with server-computed ones. Missing files are a hard error in manifest mode.
|
|
193
|
+
|
|
194
|
+
## 5. Publish
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Attach a GitHub remote so the library is store-publishable
|
|
198
|
+
skaile library link personal https://github.com/you/my-assets
|
|
199
|
+
|
|
200
|
+
# Push bytes to GitHub + register the manifest in the store, atomically
|
|
201
|
+
skaile library publish @research/brief@1.0.0
|
|
202
|
+
|
|
203
|
+
# Or register a manifest for bytes already on GitHub (no push)
|
|
204
|
+
skaile library register @research/brief@1.0.0
|
|
205
|
+
|
|
206
|
+
# Retract a catalog entry
|
|
207
|
+
skaile library yank @research/brief@1.0.0
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Consumers then install pointer-only: `skaile install @research/brief@1.0.0`
|
|
211
|
+
fetches from your repo at the pinned commit and verifies SHA256 per file.
|
|
212
|
+
|
|
213
|
+
## Dev-only assets — `dev_paths` + `--dev`
|
|
214
|
+
|
|
215
|
+
A package can ship two sets of assets: **public** skills its consumers want
|
|
216
|
+
(conventionally under `ai-assets/`), and skills only useful for developing *the
|
|
217
|
+
project itself* — scaffolders, validators, skill-on-skill tooling (under
|
|
218
|
+
`ai-assets-dev/`). The dev set should be **excluded from a normal run** and
|
|
219
|
+
pulled in only when a contributor opts in.
|
|
220
|
+
|
|
221
|
+
- **Folder name:** keep dev assets under one top-level folder named
|
|
222
|
+
**`ai-assets-dev/`** (intention-revealing; treat the `-dev` suffix as
|
|
223
|
+
reserved).
|
|
224
|
+
- **Mechanism:** declare it in `.skaile-source.yaml` under `dev_paths`:
|
|
225
|
+
|
|
226
|
+
```yaml
|
|
227
|
+
version: 1
|
|
228
|
+
publisher_default: '@<domain>'
|
|
229
|
+
dev_paths: # excluded from a normal discovery run
|
|
230
|
+
- ai-assets-dev
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Normal sync → `ai-assets-dev/` is skipped. `skaile source sync <name> --dev`
|
|
234
|
+
(or `skaile source add <url> --dev`) re-includes it and indexes the dev
|
|
235
|
+
assets so `manage` / `install` / `add` can see them. Re-sync without `--dev`
|
|
236
|
+
to drop them again. Matching is whole-segment, so `ai-assets-dev` excludes
|
|
237
|
+
`ai-assets-dev/…` but not a sibling like `ai-assets-development`.
|
|
238
|
+
|
|
239
|
+
Full guide: `docs/discovery/dev-assets.md`.
|