@skaile/workspaces 5.15.1 → 5.16.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 +54 -0
- package/dist/{asset-feeds-FVDNQ2FM.js → asset-feeds-BELBSJEE.js} +18 -18
- package/dist/{asset-feeds-FVDNQ2FM.js.map → asset-feeds-BELBSJEE.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +7 -7
- package/dist/asset-manager/index.js +13 -13
- package/dist/asset-manager/installer.js +9 -9
- package/dist/asset-manager/renderers.js +8 -8
- package/dist/asset-manager/src/index.d.ts +105 -6
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +11 -2
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +150 -19
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +15 -128
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +10 -10
- package/dist/bridge/drivers/echo.js +2 -2
- package/dist/bridge/drivers/gemini.js +7 -7
- package/dist/bridge/drivers/goose.js +10 -10
- package/dist/bridge/drivers/omp.js +61 -5
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +10 -10
- package/dist/bridge/drivers/qwen.js +7 -7
- package/dist/bridge/index.js +13 -12
- package/dist/bridge/src/approval-card.d.ts +24 -0
- package/dist/bridge/src/approval-card.d.ts.map +1 -0
- package/dist/bridge/src/driver-model-check.d.ts +21 -0
- package/dist/bridge/src/driver-model-check.d.ts.map +1 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts +22 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +2 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +23 -0
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-YUURCZWY.js → chunk-2SKPPIV7.js} +5 -5
- package/dist/{chunk-YUURCZWY.js.map → chunk-2SKPPIV7.js.map} +1 -1
- package/dist/{chunk-PK5XQBOC.js → chunk-46IRZJV4.js} +4 -4
- package/dist/{chunk-PK5XQBOC.js.map → chunk-46IRZJV4.js.map} +1 -1
- package/dist/{chunk-NVBN3YOH.js → chunk-5CE6J4DB.js} +46 -67
- package/dist/chunk-5CE6J4DB.js.map +1 -0
- package/dist/{chunk-54TVXZP3.js → chunk-5DCOG5B5.js} +3 -3
- package/dist/{chunk-54TVXZP3.js.map → chunk-5DCOG5B5.js.map} +1 -1
- package/dist/{chunk-X7DIT65W.js → chunk-5RDZ5JHH.js} +4 -4
- package/dist/{chunk-X7DIT65W.js.map → chunk-5RDZ5JHH.js.map} +1 -1
- package/dist/{chunk-BV7NLPI6.js → chunk-6GSE63K2.js} +4 -4
- package/dist/{chunk-BV7NLPI6.js.map → chunk-6GSE63K2.js.map} +1 -1
- package/dist/{chunk-GQ5OYFVD.js → chunk-6Q7NKTDG.js} +47 -47
- package/dist/chunk-6Q7NKTDG.js.map +1 -0
- package/dist/chunk-6RTEUWXX.js +125 -0
- package/dist/chunk-6RTEUWXX.js.map +1 -0
- package/dist/{chunk-RTYDYSUV.js → chunk-72KZJE3G.js} +82 -22
- package/dist/chunk-72KZJE3G.js.map +1 -0
- package/dist/{chunk-SAKVAG23.js → chunk-A26MUUN7.js} +7 -7
- package/dist/{chunk-SAKVAG23.js.map → chunk-A26MUUN7.js.map} +1 -1
- package/dist/{chunk-NHH3MRSC.js → chunk-A7AZ3RL5.js} +6 -6
- package/dist/{chunk-NHH3MRSC.js.map → chunk-A7AZ3RL5.js.map} +1 -1
- package/dist/{chunk-LEOXPIC6.js → chunk-AP24HESN.js} +3 -3
- package/dist/{chunk-LEOXPIC6.js.map → chunk-AP24HESN.js.map} +1 -1
- package/dist/{chunk-JJLH4TX4.js → chunk-CQFVKN6S.js} +230 -62
- package/dist/chunk-CQFVKN6S.js.map +1 -0
- package/dist/{chunk-OOQ5Q75W.js → chunk-D3PU3C6F.js} +41 -16
- package/dist/chunk-D3PU3C6F.js.map +1 -0
- package/dist/{chunk-WXKNM2JJ.js → chunk-D5REDKVU.js} +3 -3
- package/dist/{chunk-WXKNM2JJ.js.map → chunk-D5REDKVU.js.map} +1 -1
- package/dist/{chunk-R37L4BNR.js → chunk-DADAZLFW.js} +648 -76
- package/dist/chunk-DADAZLFW.js.map +1 -0
- package/dist/{chunk-U7YMGW7M.js → chunk-DQOAPR4M.js} +2 -2
- package/dist/{chunk-U7YMGW7M.js.map → chunk-DQOAPR4M.js.map} +1 -1
- package/dist/{chunk-7Y7UYNGL.js → chunk-E634MBP6.js} +12 -9
- package/dist/chunk-E634MBP6.js.map +1 -0
- package/dist/{chunk-NKDSU4Q7.js → chunk-ES6ARJPQ.js} +21 -7
- package/dist/chunk-ES6ARJPQ.js.map +1 -0
- package/dist/{chunk-WWUWMOX2.js → chunk-FSLVMZXR.js} +37 -17
- package/dist/chunk-FSLVMZXR.js.map +1 -0
- package/dist/{chunk-MKTJZLQM.js → chunk-FSSRBWYL.js} +4 -4
- package/dist/{chunk-MKTJZLQM.js.map → chunk-FSSRBWYL.js.map} +1 -1
- package/dist/{chunk-VY6NTFE7.js → chunk-FT4ZHLYR.js} +3 -2
- package/dist/chunk-FT4ZHLYR.js.map +1 -0
- package/dist/chunk-FWAJUWXQ.js +1016 -0
- package/dist/chunk-FWAJUWXQ.js.map +1 -0
- package/dist/{chunk-ANSZULXH.js → chunk-H7R7R5BN.js} +21 -6
- package/dist/chunk-H7R7R5BN.js.map +1 -0
- package/dist/{chunk-4AKR4XPQ.js → chunk-HG52NGAV.js} +3 -3
- package/dist/chunk-HG52NGAV.js.map +1 -0
- package/dist/{plugin-store-BIITCNOZ.js → chunk-HUKUYWBJ.js} +32 -23
- package/dist/chunk-HUKUYWBJ.js.map +1 -0
- package/dist/{chunk-JUHDED6J.js → chunk-ISSYT5AZ.js} +3 -3
- package/dist/{chunk-JUHDED6J.js.map → chunk-ISSYT5AZ.js.map} +1 -1
- package/dist/{chunk-GR7TV4XC.js → chunk-J4RRH2NP.js} +4 -4
- package/dist/{chunk-GR7TV4XC.js.map → chunk-J4RRH2NP.js.map} +1 -1
- package/dist/{chunk-NOF73BUH.js → chunk-L6UMSKDF.js} +10 -2
- package/dist/chunk-L6UMSKDF.js.map +1 -0
- package/dist/{chunk-TCWECSEB.js → chunk-NSNM2ZXF.js} +28 -4
- package/dist/chunk-NSNM2ZXF.js.map +1 -0
- package/dist/{chunk-B6I7SF2X.js → chunk-OHNNCXMB.js} +114 -81
- package/dist/chunk-OHNNCXMB.js.map +1 -0
- package/dist/{chunk-MUOSKYI2.js → chunk-OJHPG6HK.js} +10 -10
- package/dist/{chunk-MUOSKYI2.js.map → chunk-OJHPG6HK.js.map} +1 -1
- package/dist/{chunk-SZPE55SB.js → chunk-PGZDSDOB.js} +3 -3
- package/dist/{chunk-SZPE55SB.js.map → chunk-PGZDSDOB.js.map} +1 -1
- package/dist/{chunk-4QINFQ27.js → chunk-PIC23DDE.js} +59 -17
- package/dist/chunk-PIC23DDE.js.map +1 -0
- package/dist/{chunk-GLMKS6V6.js → chunk-RTNWU2UD.js} +4 -4
- package/dist/{chunk-GLMKS6V6.js.map → chunk-RTNWU2UD.js.map} +1 -1
- package/dist/{chunk-354JIEIE.js → chunk-SAGBVBY2.js} +5 -5
- package/dist/{chunk-354JIEIE.js.map → chunk-SAGBVBY2.js.map} +1 -1
- package/dist/{chunk-55VKZUQY.js → chunk-SMUIYYCH.js} +70 -34
- package/dist/chunk-SMUIYYCH.js.map +1 -0
- package/dist/{chunk-N36S36OZ.js → chunk-SPV2CXJ3.js} +3 -3
- package/dist/{chunk-N36S36OZ.js.map → chunk-SPV2CXJ3.js.map} +1 -1
- package/dist/{chunk-KRRHADE7.js → chunk-SXWGLW23.js} +4 -4
- package/dist/{chunk-KRRHADE7.js.map → chunk-SXWGLW23.js.map} +1 -1
- package/dist/{chunk-RNFHJUK7.js → chunk-TADJCATD.js} +3 -3
- package/dist/{chunk-RNFHJUK7.js.map → chunk-TADJCATD.js.map} +1 -1
- package/dist/{chunk-PQF5QHVS.js → chunk-TKI7YDWE.js} +19 -5
- package/dist/chunk-TKI7YDWE.js.map +1 -0
- package/dist/{chunk-O673TBWJ.js → chunk-TXGVG7VH.js} +3 -3
- package/dist/{chunk-O673TBWJ.js.map → chunk-TXGVG7VH.js.map} +1 -1
- package/dist/{chunk-GV3MFKDV.js → chunk-VJ2DZLDM.js} +62 -6
- package/dist/chunk-VJ2DZLDM.js.map +1 -0
- package/dist/{chunk-PV47EEHD.js → chunk-WKEBNB5S.js} +4 -4
- package/dist/{chunk-PV47EEHD.js.map → chunk-WKEBNB5S.js.map} +1 -1
- package/dist/{chunk-ESXZJP4M.js → chunk-WXWQNJCT.js} +3 -3
- package/dist/{chunk-ESXZJP4M.js.map → chunk-WXWQNJCT.js.map} +1 -1
- package/dist/{chunk-DPCEQOIZ.js → chunk-XGR7IDTY.js} +3 -3
- package/dist/{chunk-DPCEQOIZ.js.map → chunk-XGR7IDTY.js.map} +1 -1
- package/dist/{chunk-VQQCA7BD.js → chunk-Y25V2MW2.js} +4 -4
- package/dist/{chunk-VQQCA7BD.js.map → chunk-Y25V2MW2.js.map} +1 -1
- package/dist/{chunk-MGM5EJQQ.js → chunk-YK3XLEQJ.js} +40 -26
- package/dist/chunk-YK3XLEQJ.js.map +1 -0
- package/dist/{chunk-SP5NGNBV.js → chunk-YW2BNDSE.js} +11 -4
- package/dist/chunk-YW2BNDSE.js.map +1 -0
- package/dist/{chunk-J76LDUDS.js → chunk-ZVZTCDUN.js} +26 -10
- package/dist/chunk-ZVZTCDUN.js.map +1 -0
- package/dist/cli/index.js +899 -1617
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-checks.d.ts +22 -10
- package/dist/cli/src/agent-checks.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/integration.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +6 -0
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/codex.d.ts +10 -0
- package/dist/cli/src/commands/plugin/codex.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/types.d.ts +5 -2
- package/dist/cli/src/commands/plugin/types.d.ts.map +1 -1
- package/dist/cli/src/commands/preset-export.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +6 -0
- 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/serve-preflight.d.ts +13 -0
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/show.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +2 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/store.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts +6 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/commands/verify.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +23 -0
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +8 -0
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/load.d.ts +1 -0
- package/dist/cli/src/plugin-store/load.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +9 -21
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +16 -15
- package/dist/{connectors-TVFFE5H4.js → connectors-44RE2QEM.js} +19 -18
- package/dist/{connectors-TVFFE5H4.js.map → connectors-44RE2QEM.js.map} +1 -1
- package/dist/core/index.js +6 -6
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +3 -3
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/conformance.d.ts.map +1 -1
- package/dist/core/src/driver-sdk.d.ts +12 -2
- package/dist/core/src/driver-sdk.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +4 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +7 -0
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +9 -0
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +5 -2
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +14 -0
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +6 -6
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/index.d.ts +2 -2
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/discovery/src/parse-manifest.d.ts +7 -0
- package/dist/discovery/src/parse-manifest.d.ts.map +1 -1
- package/dist/discovery/src/source-config.d.ts +6 -0
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/{ensure-sources-N4E5EDGC.js → ensure-sources-R6AHZ7RV.js} +16 -16
- package/dist/{ensure-sources-N4E5EDGC.js.map → ensure-sources-R6AHZ7RV.js.map} +1 -1
- package/dist/factory-assets/README.md +1 -1
- package/dist/factory-assets/connectors/box.js +16 -15
- package/dist/factory-assets/connectors/deploy.js +16 -15
- package/dist/factory-assets/connectors/devserver.js +16 -15
- package/dist/factory-assets/connectors/flow/adapter.js +16 -15
- package/dist/factory-assets/connectors/flow/engine.js +7 -7
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +18 -17
- package/dist/factory-assets/connectors/flow.js +16 -15
- package/dist/factory-assets/connectors/git.js +16 -15
- package/dist/factory-assets/connectors/gmail.js +16 -15
- package/dist/factory-assets/connectors/googledrive.js +16 -15
- package/dist/factory-assets/connectors/local.js +16 -15
- package/dist/factory-assets/connectors/mattermost.js +16 -15
- package/dist/factory-assets/connectors/memory.js +16 -15
- package/dist/factory-assets/connectors/minio.js +16 -15
- package/dist/factory-assets/connectors/postgres.js +16 -15
- package/dist/factory-assets/connectors/s3.js +16 -15
- package/dist/factory-assets/connectors/sharepoint.js +16 -15
- package/dist/factory-assets/connectors/sqlite.js +16 -15
- package/dist/factory-assets/connectors/static-server.js +16 -15
- package/dist/factory-assets/connectors/tunnel.js +16 -15
- package/dist/factory-assets/connectors/webdav.js +16 -15
- package/dist/factory-assets/connectors/xstate-store.js +16 -15
- package/dist/factory-assets/connectors/xstate.js +16 -15
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +12 -11
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +11 -7
- package/dist/factory-assets/skills/skailify/SKILL.md +3 -3
- package/dist/{flows-CYJI3URW.js → flows-YKC53LDP.js} +11 -11
- package/dist/{flows-CYJI3URW.js.map → flows-YKC53LDP.js.map} +1 -1
- package/dist/{helpers-PPVGVYIZ.js → helpers-FNQL5PI7.js} +16 -16
- package/dist/{helpers-PPVGVYIZ.js.map → helpers-FNQL5PI7.js.map} +1 -1
- package/dist/library/index.js +10 -10
- package/dist/library/install.js +4 -4
- package/dist/library/src/index.d.ts +1 -1
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/local/store-paths.d.ts +8 -0
- package/dist/library/src/local/store-paths.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts +5 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +3 -2
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/{library-publish-EQFYHJ6G.js → library-publish-GHPVY42Y.js} +56 -48
- package/dist/library-publish-GHPVY42Y.js.map +1 -0
- package/dist/model-endpoint/index.js +19 -3
- package/dist/model-endpoint/src/index.d.ts +1 -1
- package/dist/model-endpoint/src/index.d.ts.map +1 -1
- package/dist/model-endpoint/src/resolve.d.ts +5 -0
- package/dist/model-endpoint/src/resolve.d.ts.map +1 -1
- package/dist/model-endpoint/src/server.d.ts +7 -0
- package/dist/model-endpoint/src/server.d.ts.map +1 -1
- package/dist/model-endpoint/src/types.d.ts +41 -7
- package/dist/model-endpoint/src/types.d.ts.map +1 -1
- package/dist/{open-library-JJGDEYYT.js → open-library-YSUGNP36.js} +19 -19
- package/dist/{open-library-JJGDEYYT.js.map → open-library-YSUGNP36.js.map} +1 -1
- package/dist/{open-registry-X6YQVP7V.js → open-registry-YPRQDUMK.js} +14 -14
- package/dist/{open-registry-X6YQVP7V.js.map → open-registry-YPRQDUMK.js.map} +1 -1
- package/dist/{paths-NXWIBZCX.js → paths-P55DTBEK.js} +9 -9
- package/dist/{paths-NXWIBZCX.js.map → paths-P55DTBEK.js.map} +1 -1
- package/dist/plugin-store-IPIBZRBX.js +23 -0
- package/dist/plugin-store-IPIBZRBX.js.map +1 -0
- package/dist/project-NDSLXERO.js +83 -0
- package/dist/{project-5HW3XSOE.js.map → project-NDSLXERO.js.map} +1 -1
- package/dist/resolver/index.js +7 -7
- package/dist/resolver/src/types.d.ts +1 -0
- package/dist/resolver/src/types.d.ts.map +1 -1
- package/dist/resolver/src/validator.d.ts +1 -1
- package/dist/runner/index.js +32 -31
- package/dist/runner/src/agent.d.ts +9 -1
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/agents/in-process-host.d.ts.map +1 -1
- package/dist/runner/src/composition/content-source.d.ts.map +1 -1
- package/dist/runner/src/composition/index.d.ts +1 -1
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/resolve-instance.d.ts +20 -0
- package/dist/runner/src/composition/resolve-instance.d.ts.map +1 -1
- package/dist/runner/src/model-endpoint-discovery.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/runner-capabilities.d.ts +9 -3
- package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +10 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +20 -1
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +5 -0
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +13 -13
- package/dist/sdk/bridge.js +13 -12
- package/dist/sdk/core.js +6 -6
- package/dist/sdk/flow.js +7 -7
- package/dist/sdk/index.js +32 -31
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +7 -7
- package/dist/sdk/runner.js +32 -31
- package/dist/sdk/transport/ws/server.js +1 -1
- package/dist/sdk/transport/ws.js +1 -1
- package/dist/sdk/transport.js +1 -1
- package/dist/{serve-preflight-GD7IQFA3.js → serve-preflight-ON2LS3SD.js} +15 -9
- package/dist/serve-preflight-ON2LS3SD.js.map +1 -0
- package/dist/{setup-52NDDR7C.js → setup-MFPEQS2I.js} +23 -22
- package/dist/setup-MFPEQS2I.js.map +1 -0
- package/dist/{skills-XVHOXOOH.js → skills-7G6QCDEM.js} +12 -12
- package/dist/{skills-XVHOXOOH.js.map → skills-7G6QCDEM.js.map} +1 -1
- package/dist/{source-WKV4QFGS.js → source-4QVRD5NV.js} +42 -41
- package/dist/{source-WKV4QFGS.js.map → source-4QVRD5NV.js.map} +1 -1
- package/dist/{source-manifest-publish-3HAX6DPN.js → source-manifest-publish-ZIO24GUM.js} +44 -43
- package/dist/source-manifest-publish-ZIO24GUM.js.map +1 -0
- package/dist/transport/index.js +1 -1
- package/dist/transport/src/ws/server.d.ts +9 -0
- package/dist/transport/src/ws/server.d.ts.map +1 -1
- package/dist/transport/ws/server.js +1 -1
- package/dist/transport/ws.js +1 -1
- package/dist/tui/index.js +107 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl-session.d.ts +7 -0
- package/dist/tui/src/repl-session.d.ts.map +1 -1
- package/dist/tui/src/repl.d.ts +16 -0
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/index.d.ts +1 -0
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/scaffold-body.d.ts +8 -0
- package/dist/types/src/manifests/scaffold-body.d.ts.map +1 -0
- package/dist/workspace-plugin/adapters/mcp.js +23 -22
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4AKR4XPQ.js.map +0 -1
- package/dist/chunk-4QINFQ27.js.map +0 -1
- package/dist/chunk-55VKZUQY.js.map +0 -1
- package/dist/chunk-7Y7UYNGL.js.map +0 -1
- package/dist/chunk-ANSZULXH.js.map +0 -1
- package/dist/chunk-B6I7SF2X.js.map +0 -1
- package/dist/chunk-GQ5OYFVD.js.map +0 -1
- package/dist/chunk-GV3MFKDV.js.map +0 -1
- package/dist/chunk-J76LDUDS.js.map +0 -1
- package/dist/chunk-JJLH4TX4.js.map +0 -1
- package/dist/chunk-MGM5EJQQ.js.map +0 -1
- package/dist/chunk-NKDSU4Q7.js.map +0 -1
- package/dist/chunk-NOF73BUH.js.map +0 -1
- package/dist/chunk-NVBN3YOH.js.map +0 -1
- package/dist/chunk-OOQ5Q75W.js.map +0 -1
- package/dist/chunk-PQF5QHVS.js.map +0 -1
- package/dist/chunk-R37L4BNR.js.map +0 -1
- package/dist/chunk-RTYDYSUV.js.map +0 -1
- package/dist/chunk-SP5NGNBV.js.map +0 -1
- package/dist/chunk-TCWECSEB.js.map +0 -1
- package/dist/chunk-VY6NTFE7.js.map +0 -1
- package/dist/chunk-WWUWMOX2.js.map +0 -1
- package/dist/library-publish-EQFYHJ6G.js.map +0 -1
- package/dist/plugin-store-BIITCNOZ.js.map +0 -1
- package/dist/project-5HW3XSOE.js +0 -82
- package/dist/serve-preflight-GD7IQFA3.js.map +0 -1
- package/dist/setup-52NDDR7C.js.map +0 -1
- package/dist/source-manifest-publish-3HAX6DPN.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - `validate`, `library index` and `library publish` give one verdict per authoring case.
|
|
8
|
+
|
|
9
|
+
- A manifest entry with `root: .` or an empty root fails all three with `an asset needs its own directory`, instead of an index parse error on `.gitignore` (p870).
|
|
10
|
+
- `library index` keeps a flow whose `id:` differs from its file name out of the manifest and the index (no `Renamed manifest entry`), and `add` refuses such a flow (p871).
|
|
11
|
+
- The secret check and the scaffold `.gitignore` cover `.npmrc`, `.netrc`, `.envrc`, `credentials` and `token.json` (p872).
|
|
12
|
+
- The semver error for a part of more than 15 digits names the 15-digit limit (p873).
|
|
13
|
+
- `library init` exits 1 and registers nothing for a project folder with deployed copies (p875) and for a `skaile.manifest.yaml` that does not parse (p915).
|
|
14
|
+
- `library index` fails an untouched scaffold for all six kinds, as `validate` does; the prompt line reads `write the prompt text` (p1020).
|
|
15
|
+
- `metadata.tags`, `metadata.requires` and `metadata.prerequisites` in their schema shapes (array, array, object) are no conformance finding; the factory skills pass `validate --strict-conformance` (p1027, p853).
|
|
16
|
+
- `validate` of a directory without a manifest refuses a symlink to an asset directory (p520).
|
|
17
|
+
- A `composes:` ref that neither the library nor a registered library of its publisher holds is an error in `validate`, `library index` and the publish plan (p415).
|
|
18
|
+
- `add`, `install` and `update` print `! <ref> body is still the scaffold placeholder` for a deployed library asset with an untouched body (p926).
|
|
19
|
+
|
|
20
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - `skaile remove` and `add` respect who owns a folder and keep unrelated state.
|
|
21
|
+
|
|
22
|
+
- `remove` deletes a deployed folder only when its own lock entry (publisher, kind and name) owns it. For a ref whose folder another publisher's lock entry holds, it drops the declaration, keeps the folder and names the owner (p57, p720).
|
|
23
|
+
- A dangling symlink at the asset path counts as an unowned path: `add` refuses to replace it without `--force`, `remove` keeps it (p892).
|
|
24
|
+
- `install` without a lock adopts an agent file whose bytes equal what skaile renders from the agent, as it does for skill folders (p913).
|
|
25
|
+
- `add` warns `Same version, different content` when two libraries hold a ref at one version with different bytes; the default library still wins (p927).
|
|
26
|
+
- `install --locked` in a project with no dependencies prints `Nothing to install` and exits 0 (p944).
|
|
27
|
+
- `remove` of the last mcp-server drops its `.mcp.json` entry at once and deletes `.mcp.json` and `.skaile/mcp-managed.json` when nothing else is left in them (p963).
|
|
28
|
+
- `remove agent:<ref>` keeps the other `agents.<id>` bindings and the agents they declare (p982).
|
|
29
|
+
- `add` of an asset a reader source does not list says to add it to `skaile.manifest.yaml` in the source repo and push; `library index <reader>` exits 1 without editing the clone (p1026).
|
|
30
|
+
- `add bundle:@acme/x` prints `Error: asset kind "bundle" no longer exists …` instead of the class name (p1032).
|
|
31
|
+
|
|
32
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - omp one-shot output and model endpoint (p980, p1003, p1004, p1005, p1006, p1007, p1008). `skaile run --driver omp` prints the whole answer: the text in omp's `message_start` is now the first delta, not dropped. The omp driver merges `config.env` over its base env, so `serve --driver omp --model-endpoint` keeps `PATH`. The model endpoint finds `@earendil-works/pi-ai` in the project first, and `serve` names both places it looked in before the ready line. A model with an unknown provider prefix answers 404 `model_not_found` and lists the providers. A busy `--model-endpoint` port is one line. The public types of `@skaile/workspaces/model-endpoint` compile without pi-ai. `skaile serve` prints a `ws://` line when it listens.
|
|
33
|
+
|
|
34
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - Protocol guarantees and agent runs (p1000, p1001, p1002, p410, p421 of the 5.15.0 critique). `access: read-only` now blocks every write path of a mount: a host `resource_request` `write`, `write_range`, `mkdir` or `delete` answers `Connector "<id>" is read-only` (before, only the agent tool path checked it). A mount resolves symlinks and refuses a target whose real path is outside the mount (`Path escapes the mount through a symlink`); a link to a folder inside the mount lists as `directory`. `runner.set_state` is implemented: it writes a key of a shared-state store declared in `session_init.sharedState` and the store answers `state_changed`; an id `session_init.sharedState` did not declare answers `store_not_found`, also for a live flow or user connector. An agent added from a local library that `composes:` a library skill (or another library asset) now runs and dry-runs without a `sources:` clone: the content source reads a locked library asset from the registered library its lock entry records (by name, else by remote URL), and the pinned hash still decides between run and `composition_conflict`. `skaile run --instance <id>` and `skaile repl --instance <id>` start a named `agents:` instance with its overrides (its `model.preferred`, unless `--model` is given, and its `budget.max_turns` / `permissions.max_turns`); an unknown id exits 1 and lists the declared ones. `permissions.permission_mode: interactive` is honoured: claude-sdk runs under `default` and asks before each tool call it does not auto-allow (`repl` and a terminal `run` prompt `y/N`, `serve` clients get a `question` event with an `approval` card, an unanswerable session refuses); codex (standalone) uses `approvalPolicy: on-request` and refuses a command that needs to leave its sandbox, since it cannot show an approval card.
|
|
35
|
+
|
|
36
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - Project state commands: no stack traces, no hidden drift. `show`, `rebuild`, `clean` and `info` print one `✗` line for a `skaile.yaml` that does not parse (p910) and for a library asset whose version is not semver (p874). An extra file in the deployed copy of a source- or store-origin asset is drift for `check`, `doctor`, `outdated` and `diff`, and `install --locked` prints `Removed <file>` when it deletes one (p964). `outdated` lists a `0.0.0-sha.<commit>` source lock key whose file now declares a version as `re-key (a → b)` (p914). `diff agent:<ref>` renders and compares the agent instances bound to the ref, and `check` names the instance of an edited instance file (p925). After `library rename`, `outdated` names the locked library on the left of `origin changes` (p890), and the next `install` locks the library under its new name (p893). `search` lists a source asset in the version `add` locks (p855). `remove` leaves the `sources:` rows of the lock as the next `install` builds them, so that `install` does not rewrite a clean lock (p790).
|
|
37
|
+
|
|
38
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - Store and source consumption.
|
|
39
|
+
|
|
40
|
+
- A failed `update` catalog refresh keeps the cached catalog; the cache is replaced only after the new list arrived (p960).
|
|
41
|
+
- `store show <ref>#<missing version>` says `<name> has version(s): …`, and no longer asks for a "full ref" when the ref is full (p962).
|
|
42
|
+
- `verify` reports a deployed copy that differs from the lock, compares a store asset with the store's install manifest, and names the reason when it cannot (p965).
|
|
43
|
+
- A skipped MCP server is warned about once per reason, not on every `add`, `install` and `update` (p966).
|
|
44
|
+
- A `--publisher` source asset has one ref, `kind:@<declared publisher>/<name>`; the library-name slug is refused with a hint. A source asset without a version is `0.0.0-sha.<commit>` in `search`, `info`, `add` and the lock; `add …#0.1.0` fails and names it (p967).
|
|
45
|
+
- An ES-module `server.js` payload of a store MCP server gets a `package.json` with `"type": "module"`, so the `node` command in `.mcp.json` starts it (p971).
|
|
46
|
+
- A source URL has one spelling (trailing slash dropped, scheme and host lower-cased): `source add …/r.git/` is the source `…/r.git` already is, and the `--publisher` guard cannot be bypassed with it (p722, p891).
|
|
47
|
+
- A source made under the key a `….git/` URL had before is found by its old clone path, the url its library row records, and its old curated-manifest slug: `source sync` moves the row, the manifest still applies, and `source remove` drops the row (p891).
|
|
48
|
+
- A version-less asset of a source clone has one version, `0.0.0-sha.<commit>`, also when it comes from the shared reader library in a project without `sources:`: `install --locked` and `check` accept what `add` locked. A pin on that version is accepted even when the commit is all digits with a leading zero (p967).
|
|
49
|
+
- `source add` and `source sync` print the notes about files outside the asset filter as one line with a count; `--verbose` lists them (p1031).
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - Docs and factory skills match the CLI (p1021, p1023, p1024, p1025, p1028, p1029, p1030 and 37 doc defects of the 5.15.0 critique). The factory skills `authoring-skaile-assets`, `authoring-skaile-manifests` and `skailify` now say what the CLI does: a `name:` that differs from `assets[].name` fails `validate` and `library index` renames the entry; an asset on disk but not in the manifest fails `add` with `is in library "<lib>" but not listed in its skaile.manifest.yaml`; `sources[]` is `{url, pin?, publisher?}`; a second `asset import` fails with `Destination already exists`. `docs/CURRICULUM.md` is labelled a blueprint and uses real commands, the three workspace-plugin pages use `skaile add skill:@skaile-ai/use-exa`, `commands/index.md` lists every command, and the resolver page no longer presents `skip_checks` as a flow-file feature.
|
|
54
|
+
|
|
55
|
+
- [#1079](https://github.com/skaile-ai/workspaces/pull/1079) [`4db3b13`](https://github.com/skaile-ai/workspaces/commit/4db3b138138faf5e6754a68d017a1a8265621bfd) Thanks [@mortegro](https://github.com/mortegro)! - Harness rough edges (p940, p941, p942, p943, p945, p981, p1022, p1033, p911, p912, p744, p591, p598, p811, p428). `integration install --driver codex` marks the project trusted in `~/.codex/config.toml`, and `integration status` says `untrusted` when it is not. The claude-sdk driver no longer prints the SDK warning `CLAUDE_SDK_CAN_USE_TOOL_SHADOWED`. An unknown `--driver` of `integration` is one line. `run --dry-run` rejects a model the driver refuses. The repl banner lists the deployed agents. A Claude alias in `model.preferred` is not sent to codex or omp. `config set driver` validates the name; `config get --global` reads the personal file. `check`, `doctor` and `clean` take `--global`. `add --global --harness` is remembered per entry. The omp private home is deleted at exit and old ones are swept. A driver failure is printed once in `repl`. `add agent:` with a delegate under codex prints one line about it. `integration install --full` ignores the per-machine `.claude` files. `run` and `repl` load the project's declared `plugins:` before resolving `--driver`. `remove --global` and `clean --global` never delete an old omp folder an earlier sweep kept.
|
|
56
|
+
|
|
3
57
|
## 5.15.1
|
|
4
58
|
|
|
5
59
|
### Patch Changes
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { storeNotInstallableReason } from './chunk-
|
|
2
|
-
import { getKnownKinds } from './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
import { storeNotInstallableReason } from './chunk-WXWQNJCT.js';
|
|
2
|
+
import { getKnownKinds } from './chunk-2SKPPIV7.js';
|
|
3
|
+
import './chunk-SPV2CXJ3.js';
|
|
4
4
|
import './chunk-X3RMRJNR.js';
|
|
5
5
|
import './chunk-7RGTAEG6.js';
|
|
6
6
|
import './chunk-NUELZWCF.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
7
|
+
import './chunk-D3PU3C6F.js';
|
|
8
|
+
import './chunk-ES6ARJPQ.js';
|
|
9
|
+
import './chunk-SXWGLW23.js';
|
|
10
10
|
import './chunk-BFMYYNDT.js';
|
|
11
11
|
import './chunk-3TXEJN4W.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
12
|
+
import './chunk-YK3XLEQJ.js';
|
|
13
|
+
import './chunk-PIC23DDE.js';
|
|
14
14
|
import './chunk-4GY63JU6.js';
|
|
15
|
-
import { factoryAssetRoots } from './chunk-
|
|
15
|
+
import { factoryAssetRoots } from './chunk-5RDZ5JHH.js';
|
|
16
16
|
import './chunk-D54T2F54.js';
|
|
17
17
|
import './chunk-5BEFNLOR.js';
|
|
18
18
|
import './chunk-A2ULN3KX.js';
|
|
19
|
-
import { scanRepo } from './chunk-
|
|
19
|
+
import { scanRepo } from './chunk-ZVZTCDUN.js';
|
|
20
20
|
import './chunk-L5VSIPQD.js';
|
|
21
21
|
import './chunk-IG5LZ3WU.js';
|
|
22
|
-
import './chunk-
|
|
22
|
+
import './chunk-H7R7R5BN.js';
|
|
23
23
|
import './chunk-RVRB27AN.js';
|
|
24
|
-
import { parseRequires } from './chunk-
|
|
25
|
-
import './chunk-
|
|
24
|
+
import { parseRequires } from './chunk-YW2BNDSE.js';
|
|
25
|
+
import './chunk-FT4ZHLYR.js';
|
|
26
26
|
import './chunk-ICSCSM5D.js';
|
|
27
27
|
import './chunk-DKXNKFKP.js';
|
|
28
28
|
import './chunk-MJHSLODD.js';
|
|
@@ -52,8 +52,8 @@ function libraryEntryOf(asset) {
|
|
|
52
52
|
async function libraryAssets() {
|
|
53
53
|
const notes = [];
|
|
54
54
|
try {
|
|
55
|
-
const { openLibraryManager } = await import('./open-library-
|
|
56
|
-
const { getKindRegistry } = await import('./open-registry-
|
|
55
|
+
const { openLibraryManager } = await import('./open-library-YSUGNP36.js');
|
|
56
|
+
const { getKindRegistry } = await import('./open-registry-YPRQDUMK.js');
|
|
57
57
|
const { scanAuthoringLibraries } = await import('./library/index.js');
|
|
58
58
|
const { library: index, close } = await openLibraryManager();
|
|
59
59
|
try {
|
|
@@ -86,7 +86,7 @@ async function libraryAssets() {
|
|
|
86
86
|
async function storeAssets(projectDir) {
|
|
87
87
|
const notes = [];
|
|
88
88
|
try {
|
|
89
|
-
const { resolveCatalogSource } = await import('./open-library-
|
|
89
|
+
const { resolveCatalogSource } = await import('./open-library-YSUGNP36.js');
|
|
90
90
|
const { source, close } = await resolveCatalogSource({ projectDir });
|
|
91
91
|
try {
|
|
92
92
|
const assets = (await source.listAssets()).filter(
|
|
@@ -167,5 +167,5 @@ async function gatherAssetFeeds(am, projectDir) {
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
export { gatherAssetFeeds };
|
|
170
|
-
//# sourceMappingURL=asset-feeds-
|
|
171
|
-
//# sourceMappingURL=asset-feeds-
|
|
170
|
+
//# sourceMappingURL=asset-feeds-BELBSJEE.js.map
|
|
171
|
+
//# sourceMappingURL=asset-feeds-BELBSJEE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-FVDNQ2FM.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`, read through\n * `scanAuthoringLibraries` (`@skaile/workspaces/library`): the same scan\n * `library index` / `search --local` use, so publishers and refs match them\n * (per-asset `publisher_overrides` honoured), `dev_paths` assets are left out,\n * and a library that fails to scan becomes one note while the rest stay listed.\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 * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogEntry,\n factoryAssetRoots,\n parseRequires,\n scanRepo,\n} from \"@skaile/workspaces/core\";\nimport { getKnownKinds } from \"./open-registry.ts\";\nimport { storeNotInstallableReason } from \"./store-addable.ts\";\nimport type { DiscoveredAsset } from \"@skaile/workspaces/discovery\";\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 * Map one discovered library asset to the `CatalogEntry` the manage rows read.\n * `publisher` is the bare per-asset publisher (what `search --local` prints),\n * `source` the manifest path. `repo` is left unset: it only feeds the Sources-tree\n * org grouping. `requires` / `dependencies` come from the manifest the way the\n * scanner fills them — string `requires:` refs parsed to `{kind, name}`, a bundle's\n * string `dependencies:` list verbatim.\n */\nfunction libraryEntryOf(asset: DiscoveredAsset): CatalogEntry {\n const { manifest } = asset;\n const nested = (manifest.metadata as Record<string, unknown> | undefined)?.requires;\n const rawRequires = manifest.requires ?? nested;\n const requireRefs =\n typeof rawRequires === \"string\"\n ? rawRequires\n : Array.isArray(rawRequires)\n ? rawRequires.filter((r): r is string => typeof r === \"string\")\n : undefined;\n const deps = manifest.dependencies;\n return {\n name: asset.name,\n kind: asset.kind as AssetKind,\n description: typeof manifest.description === \"string\" ? manifest.description : \"\",\n source: asset.manifestPath,\n publisher: asset.publisher,\n ...(asset.plugin ? { plugin: asset.plugin } : {}),\n version: asset.version,\n requires: requireRefs === undefined ? [] : parseRequires({ requires: requireRefs }),\n dependencies:\n asset.kind === \"bundle\" && Array.isArray(deps)\n ? deps.filter((d): d is string => typeof d === \"string\" && d.length > 0)\n : [],\n };\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache) through\n * `scanAuthoringLibraries`, grouped under the bare library name\n * (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix (mirrors the source feed). Plugin grouping (`entry.plugin`)\n * comes from `DiscoveredAsset.plugin`. A library whose scan fails becomes one\n * `FeedNote`; the outer `catch` covers only opening the index.\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n // Lazy: the library subpath pulls in SQLite, which the other feeds never need.\n const { openLibraryManager } = await import(\"./open-library.ts\");\n const { getKindRegistry } = await import(\"./open-registry.ts\");\n const { scanAuthoringLibraries } = await import(\"@skaile/workspaces/library\");\n const { library: index, close } = await openLibraryManager();\n try {\n const entries: OriginEntry[] = [];\n for (const scan of await scanAuthoringLibraries(index, getKindRegistry())) {\n if (scan.error !== undefined) {\n notes.push({ feed: \"libraries\", message: `${scan.library.name}: ${scan.error}` });\n continue;\n }\n for (const asset of scan.assets) {\n entries.push({\n origin: \"library\",\n entry: libraryEntryOf(asset),\n group: scan.library.name,\n });\n }\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 // The store lists only what `skaile add` can install (see store-addable.ts).\n const assets = (await source.listAssets()).filter(\n (a) => storeNotInstallableReason(a) === undefined,\n );\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
|
+
{"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-BELBSJEE.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`, read through\n * `scanAuthoringLibraries` (`@skaile/workspaces/library`): the same scan\n * `library index` / `search --local` use, so publishers and refs match them\n * (per-asset `publisher_overrides` honoured), `dev_paths` assets are left out,\n * and a library that fails to scan becomes one note while the rest stay listed.\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 * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogEntry,\n factoryAssetRoots,\n parseRequires,\n scanRepo,\n} from \"@skaile/workspaces/core\";\nimport { getKnownKinds } from \"./open-registry.ts\";\nimport { storeNotInstallableReason } from \"./store-addable.ts\";\nimport type { DiscoveredAsset } from \"@skaile/workspaces/discovery\";\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 * Map one discovered library asset to the `CatalogEntry` the manage rows read.\n * `publisher` is the bare per-asset publisher (what `search --local` prints),\n * `source` the manifest path. `repo` is left unset: it only feeds the Sources-tree\n * org grouping. `requires` / `dependencies` come from the manifest the way the\n * scanner fills them — string `requires:` refs parsed to `{kind, name}`, a bundle's\n * string `dependencies:` list verbatim.\n */\nfunction libraryEntryOf(asset: DiscoveredAsset): CatalogEntry {\n const { manifest } = asset;\n const nested = (manifest.metadata as Record<string, unknown> | undefined)?.requires;\n const rawRequires = manifest.requires ?? nested;\n const requireRefs =\n typeof rawRequires === \"string\"\n ? rawRequires\n : Array.isArray(rawRequires)\n ? rawRequires.filter((r): r is string => typeof r === \"string\")\n : undefined;\n const deps = manifest.dependencies;\n return {\n name: asset.name,\n kind: asset.kind as AssetKind,\n description: typeof manifest.description === \"string\" ? manifest.description : \"\",\n source: asset.manifestPath,\n publisher: asset.publisher,\n ...(asset.plugin ? { plugin: asset.plugin } : {}),\n version: asset.version,\n requires: requireRefs === undefined ? [] : parseRequires({ requires: requireRefs }),\n dependencies:\n asset.kind === \"bundle\" && Array.isArray(deps)\n ? deps.filter((d): d is string => typeof d === \"string\" && d.length > 0)\n : [],\n };\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache) through\n * `scanAuthoringLibraries`, grouped under the bare library name\n * (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix (mirrors the source feed). Plugin grouping (`entry.plugin`)\n * comes from `DiscoveredAsset.plugin`. A library whose scan fails becomes one\n * `FeedNote`; the outer `catch` covers only opening the index.\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n // Lazy: the library subpath pulls in SQLite, which the other feeds never need.\n const { openLibraryManager } = await import(\"./open-library.ts\");\n const { getKindRegistry } = await import(\"./open-registry.ts\");\n const { scanAuthoringLibraries } = await import(\"@skaile/workspaces/library\");\n const { library: index, close } = await openLibraryManager();\n try {\n const entries: OriginEntry[] = [];\n for (const scan of await scanAuthoringLibraries(index, getKindRegistry())) {\n if (scan.error !== undefined) {\n notes.push({ feed: \"libraries\", message: `${scan.library.name}: ${scan.error}` });\n continue;\n }\n for (const asset of scan.assets) {\n entries.push({\n origin: \"library\",\n entry: libraryEntryOf(asset),\n group: scan.library.name,\n });\n }\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 // The store lists only what `skaile add` can install (see store-addable.ts).\n const assets = (await source.listAssets()).filter(\n (a) => storeNotInstallableReason(a) === undefined,\n );\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-AP24HESN.js';
|
|
2
|
+
import '../chunk-PIC23DDE.js';
|
|
3
3
|
import '../chunk-4GY63JU6.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-5RDZ5JHH.js';
|
|
5
5
|
import '../chunk-D54T2F54.js';
|
|
6
6
|
import '../chunk-5BEFNLOR.js';
|
|
7
7
|
import '../chunk-A2ULN3KX.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-ZVZTCDUN.js';
|
|
9
9
|
import '../chunk-L5VSIPQD.js';
|
|
10
10
|
import '../chunk-IG5LZ3WU.js';
|
|
11
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-H7R7R5BN.js';
|
|
12
12
|
import '../chunk-RVRB27AN.js';
|
|
13
|
-
import '../chunk-
|
|
14
|
-
import '../chunk-
|
|
13
|
+
import '../chunk-YW2BNDSE.js';
|
|
14
|
+
import '../chunk-FT4ZHLYR.js';
|
|
15
15
|
import '../chunk-ICSCSM5D.js';
|
|
16
16
|
import '../chunk-DKXNKFKP.js';
|
|
17
17
|
import '../chunk-MJHSLODD.js';
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { AssetManager, FACTORY_SOURCE_URL, MissingManifestError, installAgentInstances, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, softDepName } from '../chunk-DADAZLFW.js';
|
|
2
|
+
import '../chunk-D3PU3C6F.js';
|
|
3
|
+
import '../chunk-ES6ARJPQ.js';
|
|
4
|
+
import '../chunk-SXWGLW23.js';
|
|
5
5
|
import '../chunk-BFMYYNDT.js';
|
|
6
6
|
import '../chunk-3TXEJN4W.js';
|
|
7
|
-
export { SCAFFOLD_KINDS, createScaffold, deployAll, installAgent, installTargetOf, removeAsset } from '../chunk-
|
|
7
|
+
export { SCAFFOLD_KINDS, createScaffold, deployAll, installAgent, installTargetOf, removeAsset } from '../chunk-FSLVMZXR.js';
|
|
8
8
|
export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-NOA6EJXE.js';
|
|
9
9
|
export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-KTBKW2FI.js';
|
|
10
10
|
import '../chunk-UQ6LFBPZ.js';
|
|
11
|
-
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
11
|
+
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-6GSE63K2.js';
|
|
12
|
+
import '../chunk-YK3XLEQJ.js';
|
|
13
|
+
import '../chunk-PIC23DDE.js';
|
|
14
14
|
import '../chunk-4GY63JU6.js';
|
|
15
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-5RDZ5JHH.js';
|
|
16
16
|
import '../chunk-D54T2F54.js';
|
|
17
17
|
import '../chunk-5BEFNLOR.js';
|
|
18
18
|
import '../chunk-A2ULN3KX.js';
|
|
19
|
-
import '../chunk-
|
|
19
|
+
import '../chunk-ZVZTCDUN.js';
|
|
20
20
|
import '../chunk-L5VSIPQD.js';
|
|
21
21
|
import '../chunk-IG5LZ3WU.js';
|
|
22
|
-
import '../chunk-
|
|
22
|
+
import '../chunk-H7R7R5BN.js';
|
|
23
23
|
import '../chunk-RVRB27AN.js';
|
|
24
|
-
import '../chunk-
|
|
25
|
-
import '../chunk-
|
|
24
|
+
import '../chunk-YW2BNDSE.js';
|
|
25
|
+
import '../chunk-FT4ZHLYR.js';
|
|
26
26
|
import '../chunk-ICSCSM5D.js';
|
|
27
27
|
import '../chunk-DKXNKFKP.js';
|
|
28
28
|
import '../chunk-MJHSLODD.js';
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export { SCAFFOLD_KINDS, canonicalEntryRef, createScaffold, deployAll, deployAsset, deployedAssetDrift, diffDeployedAgent, installTargetOf, removeAsset } from '../chunk-
|
|
1
|
+
export { SCAFFOLD_KINDS, canonicalEntryRef, createScaffold, deployAll, deployAsset, deployedAssetDrift, diffDeployedAgent, installTargetOf, readKeptLegacyCopies, removeAsset, writeKeptLegacyCopies } from '../chunk-FSLVMZXR.js';
|
|
2
2
|
import '../chunk-NOA6EJXE.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-6GSE63K2.js';
|
|
4
|
+
import '../chunk-YK3XLEQJ.js';
|
|
5
|
+
import '../chunk-PIC23DDE.js';
|
|
6
6
|
import '../chunk-4GY63JU6.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-5RDZ5JHH.js';
|
|
8
8
|
import '../chunk-D54T2F54.js';
|
|
9
9
|
import '../chunk-5BEFNLOR.js';
|
|
10
10
|
import '../chunk-A2ULN3KX.js';
|
|
11
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-ZVZTCDUN.js';
|
|
12
12
|
import '../chunk-L5VSIPQD.js';
|
|
13
13
|
import '../chunk-IG5LZ3WU.js';
|
|
14
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-H7R7R5BN.js';
|
|
15
15
|
import '../chunk-RVRB27AN.js';
|
|
16
|
-
import '../chunk-
|
|
17
|
-
import '../chunk-
|
|
16
|
+
import '../chunk-YW2BNDSE.js';
|
|
17
|
+
import '../chunk-FT4ZHLYR.js';
|
|
18
18
|
import '../chunk-ICSCSM5D.js';
|
|
19
19
|
import '../chunk-DKXNKFKP.js';
|
|
20
20
|
import '../chunk-MJHSLODD.js';
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
export { AGENT_RENDERERS, CODEX_IDENTITY_DIR, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { AGENT_RENDERERS, CODEX_IDENTITY_DIR, claudeCodeRenderer, codexRenderer, driverTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-6GSE63K2.js';
|
|
2
|
+
import '../chunk-YK3XLEQJ.js';
|
|
3
|
+
import '../chunk-PIC23DDE.js';
|
|
4
4
|
import '../chunk-4GY63JU6.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-5RDZ5JHH.js';
|
|
6
6
|
import '../chunk-D54T2F54.js';
|
|
7
7
|
import '../chunk-5BEFNLOR.js';
|
|
8
8
|
import '../chunk-A2ULN3KX.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-ZVZTCDUN.js';
|
|
10
10
|
import '../chunk-L5VSIPQD.js';
|
|
11
11
|
import '../chunk-IG5LZ3WU.js';
|
|
12
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-H7R7R5BN.js';
|
|
13
13
|
import '../chunk-RVRB27AN.js';
|
|
14
|
-
import '../chunk-
|
|
15
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-YW2BNDSE.js';
|
|
15
|
+
import '../chunk-FT4ZHLYR.js';
|
|
16
16
|
import '../chunk-ICSCSM5D.js';
|
|
17
17
|
import '../chunk-DKXNKFKP.js';
|
|
18
18
|
import '../chunk-MJHSLODD.js';
|
|
@@ -252,6 +252,11 @@ export interface StoreNotChecked {
|
|
|
252
252
|
export interface InstallResult {
|
|
253
253
|
/** Canonical refs (`kind:@publisher/name#version`) successfully deployed in this run. */
|
|
254
254
|
deployed: string[];
|
|
255
|
+
/**
|
|
256
|
+
* Deployed library assets whose body is still the untouched `library create` scaffold: they
|
|
257
|
+
* fail `validate` and the publish plan, so `install` names them (p926). Absent when none is.
|
|
258
|
+
*/
|
|
259
|
+
placeholderBodies?: string[];
|
|
255
260
|
/** Asset refs (`kind:name`) removed because they are no longer in the resolved set. */
|
|
256
261
|
removed: string[];
|
|
257
262
|
/**
|
|
@@ -385,6 +390,12 @@ export interface OutdatedEntry {
|
|
|
385
390
|
* not the one the lock names (`library`), e.g. after `skaile library default <other>`.
|
|
386
391
|
*/
|
|
387
392
|
movesTo?: string;
|
|
393
|
+
/**
|
|
394
|
+
* Source asset only: the version the next `install` or `update` locks it under, when that
|
|
395
|
+
* is not the locked key. A `0.0.0-sha.<commit>` key whose file now declares a version is
|
|
396
|
+
* re-keyed (`0.0.0-sha.7de3555 → 0.2.0`, p914).
|
|
397
|
+
*/
|
|
398
|
+
rekeyTo?: string;
|
|
388
399
|
/**
|
|
389
400
|
* Set on a `problem` row whose cause `skaile install` cannot fix: the asset's library is
|
|
390
401
|
* gone or its publisher changed, so the ref resolves nowhere. `problem` names what to
|
|
@@ -447,6 +458,15 @@ export interface RemoveResult {
|
|
|
447
458
|
* kept, not deleted. Empty when `force` was given.
|
|
448
459
|
*/
|
|
449
460
|
kept?: string[];
|
|
461
|
+
/**
|
|
462
|
+
* Deployed folders or files of the asset that another publisher's lock entry holds: kept, not
|
|
463
|
+
* deleted (only that entry's own `remove` may delete them, or `force`). `refs` are the owning
|
|
464
|
+
* lock entries, `paths` the kept folders.
|
|
465
|
+
*/
|
|
466
|
+
ownedBy?: {
|
|
467
|
+
refs: string[];
|
|
468
|
+
paths: string[];
|
|
469
|
+
}[];
|
|
450
470
|
}
|
|
451
471
|
/**
|
|
452
472
|
* A missing dependency detected by `AssetManager.doctor()`.
|
|
@@ -657,6 +677,8 @@ export declare class AssetManager {
|
|
|
657
677
|
private _knownKinds?;
|
|
658
678
|
/** Explicit global-harness override (global mode only); else auto-resolved. */
|
|
659
679
|
private readonly harnessesOverride?;
|
|
680
|
+
private readonly legacyCopiesRemoved;
|
|
681
|
+
private readonly legacyCopiesKept;
|
|
660
682
|
/** Injected catalog fetcher (tests / custom); falls back to a built one. */
|
|
661
683
|
private readonly injectedStoreFetcher?;
|
|
662
684
|
/** Injected byte fetcher for store staging; falls back to GitHub. */
|
|
@@ -701,6 +723,42 @@ export declare class AssetManager {
|
|
|
701
723
|
* single-target path.
|
|
702
724
|
*/
|
|
703
725
|
private targetHarnesses;
|
|
726
|
+
/** The global harness set without a `--harness` filter (see {@link AssetManager.targetHarnesses}). */
|
|
727
|
+
private defaultGlobalHarnesses;
|
|
728
|
+
/**
|
|
729
|
+
* `global_asset_harnesses:` of `~/.skaile/skaile.yaml`: the harnesses `add --global --harness`
|
|
730
|
+
* limited an entry to, keyed by the declared ref without its pin. An entry with no row goes to
|
|
731
|
+
* every global harness. Global mode only.
|
|
732
|
+
*/
|
|
733
|
+
private readEntryHarnesses;
|
|
734
|
+
/** The harnesses recorded for `kind:name` (`publisher` must agree when both sides have one). */
|
|
735
|
+
private entryHarnessRecord;
|
|
736
|
+
/** Keep the entries a recorded `--harness` limit sends to `target` (all of them in project mode). */
|
|
737
|
+
private entriesForHarness;
|
|
738
|
+
/**
|
|
739
|
+
* Set (or, with `harnesses` undefined, clear) the harness row of `ref` in the parsed
|
|
740
|
+
* `~/.skaile/skaile.yaml` `raw`. Returns whether `raw` changed.
|
|
741
|
+
*/
|
|
742
|
+
private setEntryHarnessRow;
|
|
743
|
+
/**
|
|
744
|
+
* Delete the copies a 5.12.0 global install left in `~/.omp/skills`, `~/.omp/agents`,
|
|
745
|
+
* `~/.omp/prompts` and `~/.omp/contracts` (omp reads `~/.omp/agent/<dir>`) for the assets just
|
|
746
|
+
* deployed into omp's new folder, and remember them for {@link takeLegacyCopiesRemoved} (p744).
|
|
747
|
+
*/
|
|
748
|
+
private sweepLegacyOmpCopies;
|
|
749
|
+
/** The old omp copies the deploys since the last call kept, as skaile did not write them. */
|
|
750
|
+
takeLegacyCopiesKept(): string[];
|
|
751
|
+
/**
|
|
752
|
+
* The old `~/.omp/<dir>/<name>` copies of the globally locked assets that are still on disk
|
|
753
|
+
* (a 5.12.0 install wrote them; omp reads `~/.omp/agent/<dir>`). Global mode only. `check`,
|
|
754
|
+
* `doctor` and `clean` with `--global` report or remove them (p911).
|
|
755
|
+
*/
|
|
756
|
+
staleLegacyOmpCopies(): {
|
|
757
|
+
ref: string;
|
|
758
|
+
path: string;
|
|
759
|
+
}[];
|
|
760
|
+
/** The old omp copies the deploys since the last call removed (see {@link sweepLegacyOmpCopies}). */
|
|
761
|
+
takeLegacyCopiesRemoved(): string[];
|
|
704
762
|
/**
|
|
705
763
|
* The harnesses `add` / `install` deploy into: `[driverTarget]` for a project, the global
|
|
706
764
|
* harness set (see {@link AssetManager.targetHarnesses}) for a global manager.
|
|
@@ -829,6 +887,12 @@ export declare class AssetManager {
|
|
|
829
887
|
* has nothing to choose between and is left out.
|
|
830
888
|
*/
|
|
831
889
|
competingOrigins(): Promise<Map<string, RefOrigin[]>>;
|
|
890
|
+
/**
|
|
891
|
+
* The origins of {@link refOrigins} for every ref, keyed by `kind:@publisher/name`: the
|
|
892
|
+
* version in each row is the one `add` locks (a source asset whose file declares none is
|
|
893
|
+
* `0.0.0-sha.<commit>`), which `search` lists too (p855).
|
|
894
|
+
*/
|
|
895
|
+
allOrigins(): Promise<Map<string, RefOrigin[]>>;
|
|
832
896
|
/**
|
|
833
897
|
* The origins of {@link refOrigins} for every ref, or for the one `only` names
|
|
834
898
|
* (`kind:@publisher/name`), keyed by `kind:@publisher/name`.
|
|
@@ -951,7 +1015,8 @@ export declare class AssetManager {
|
|
|
951
1015
|
* A git-backed library also records its remote URL. When the previous lock names the
|
|
952
1016
|
* library under another name that {@link lockedLibrary} matched to this one by URL (a
|
|
953
1017
|
* teammate registered the same remote under a different name), the entry keeps the locked
|
|
954
|
-
* name and URL: the lock does not change because it was installed on another machine.
|
|
1018
|
+
* name and URL: the lock does not change because it was installed on another machine. A
|
|
1019
|
+
* library renamed on this machine with `library rename` is locked under its new name.
|
|
955
1020
|
*/
|
|
956
1021
|
private libraryLockEntries;
|
|
957
1022
|
/**
|
|
@@ -1126,7 +1191,8 @@ export declare class AssetManager {
|
|
|
1126
1191
|
*
|
|
1127
1192
|
* @param opts - Optional installation options.
|
|
1128
1193
|
* @param opts.locked - When `true`, restore the exact versions recorded in the existing
|
|
1129
|
-
* lock file instead of resolving from source. Throws if no lock file is found
|
|
1194
|
+
* lock file instead of resolving from source. Throws if no lock file is found, unless the
|
|
1195
|
+
* project declares no dependencies (nothing to restore).
|
|
1130
1196
|
* @param opts.link - When `true`, symlink local-path assets instead of copying them
|
|
1131
1197
|
* (the author dev-loop). Machine-local / not for committing; a no-op for
|
|
1132
1198
|
* store/factory sources. Defaults to copy.
|
|
@@ -1275,6 +1341,8 @@ export declare class AssetManager {
|
|
|
1275
1341
|
add(ref: string, opts?: {
|
|
1276
1342
|
link?: boolean;
|
|
1277
1343
|
onLibraryOrigin?: (deployedRef: string, library: string) => void;
|
|
1344
|
+
/** Called per deployed library asset whose body is still the untouched `library create` scaffold. */
|
|
1345
|
+
onPlaceholderBody?: (deployedRef: string) => void;
|
|
1278
1346
|
/** Called per already-locked asset this add moved to another library than its lock entry named. */
|
|
1279
1347
|
onLibraryMoved?: (move: LibraryMove) => void;
|
|
1280
1348
|
/** `update <name>`: an equal-version tie between libraries goes to the default library, then the locked one (see {@link install}'s `moveLibraries`). */
|
|
@@ -1407,8 +1475,9 @@ export declare class AssetManager {
|
|
|
1407
1475
|
*
|
|
1408
1476
|
* Deliberately does NOT re-render the driver target's MCP config: the render
|
|
1409
1477
|
* step is async (the declaration resolver is), and making this synchronous
|
|
1410
|
-
* method async would break every external caller.
|
|
1411
|
-
*
|
|
1478
|
+
* method async would break every external caller. {@link removeWithDependencies}
|
|
1479
|
+
* (what `skaile remove` runs) does re-render it; a caller of this method gets the
|
|
1480
|
+
* dropped entry at the next {@link AssetManager.install} — see
|
|
1412
1481
|
* {@link renderMcpServerConfig}.
|
|
1413
1482
|
*
|
|
1414
1483
|
* @param ref - Asset ref: `kind:@publisher/name`, or the short `kind:name` /
|
|
@@ -1465,8 +1534,11 @@ export declare class AssetManager {
|
|
|
1465
1534
|
* publisher-less declaration.
|
|
1466
1535
|
*/
|
|
1467
1536
|
private trackedPublishers;
|
|
1468
|
-
/**
|
|
1469
|
-
|
|
1537
|
+
/**
|
|
1538
|
+
* The lock entries that hold `kind:name`, each with its publisher (no leading `@`) and its
|
|
1539
|
+
* canonical ref. A deployed folder carries no publisher; these are who it belongs to.
|
|
1540
|
+
*/
|
|
1541
|
+
private lockHolders;
|
|
1470
1542
|
/** The folders or files of `kind:name` on disk in `target`, shown relative to the project. */
|
|
1471
1543
|
private heldDeployPaths;
|
|
1472
1544
|
/**
|
|
@@ -1476,6 +1548,13 @@ export declare class AssetManager {
|
|
|
1476
1548
|
* it is kept and named in `opts.kept` unless `opts.force`.
|
|
1477
1549
|
*/
|
|
1478
1550
|
private removeResolved;
|
|
1551
|
+
/**
|
|
1552
|
+
* After `remove --global --harness X`: the harnesses outside `X` that still hold a copy of the
|
|
1553
|
+
* asset, or `undefined` when none does (or this is not a harness-limited global remove).
|
|
1554
|
+
*/
|
|
1555
|
+
private harnessesStillHolding;
|
|
1556
|
+
/** Limit the declared global entry of `target` to `harnesses` (`~/.skaile/skaile.yaml`). */
|
|
1557
|
+
private limitDeclaredEntry;
|
|
1479
1558
|
/**
|
|
1480
1559
|
* Drop the locked assets among `requiredRefs` (and what they require in turn) that
|
|
1481
1560
|
* nothing needs any more: not declared in `skaile.yaml`, not required by a locked
|
|
@@ -1687,6 +1766,13 @@ export declare class AssetManager {
|
|
|
1687
1766
|
* @returns Array of {@link OutdatedEntry} objects.
|
|
1688
1767
|
*/
|
|
1689
1768
|
outdated(): Promise<OutdatedEntry[]>;
|
|
1769
|
+
/**
|
|
1770
|
+
* List a source asset locked under a `0.0.0-sha.<commit>` key whose file now declares a
|
|
1771
|
+
* version: the next `install` or `update` re-keys it (`replaced 0.0.0-sha.7de3555 → 0.2.0`),
|
|
1772
|
+
* so `outdated` lists it as `re-key (…)` instead of saying everything is up to date (p914).
|
|
1773
|
+
* An asset already listed (behind its remote) gets the target on that row.
|
|
1774
|
+
*/
|
|
1775
|
+
private addRekeyRows;
|
|
1690
1776
|
/**
|
|
1691
1777
|
* List a locked library asset that `update` would move to another library (a default-library
|
|
1692
1778
|
* switch, a library that now holds a newer version) as `library → movesTo`, so `outdated`
|
|
@@ -1736,6 +1822,11 @@ export declare class AssetManager {
|
|
|
1736
1822
|
* @throws When `diff(1)` itself fails (exit status other than 0/1).
|
|
1737
1823
|
*/
|
|
1738
1824
|
diff(ref: string): Promise<DiffResult>;
|
|
1825
|
+
/**
|
|
1826
|
+
* The agent instances of `skaile.yaml` whose `ref` names `want` (an `agent:` ref, matched on
|
|
1827
|
+
* name and, when both name one, publisher) and bind to an agent definition directory.
|
|
1828
|
+
*/
|
|
1829
|
+
private instancesBoundTo;
|
|
1739
1830
|
/**
|
|
1740
1831
|
* Resolve all declared dependencies and write (or overwrite) `skaile.lock.yaml`.
|
|
1741
1832
|
*
|
|
@@ -2029,6 +2120,12 @@ export declare class AssetManager {
|
|
|
2029
2120
|
}>;
|
|
2030
2121
|
unmanaged: string[];
|
|
2031
2122
|
};
|
|
2123
|
+
/**
|
|
2124
|
+
* `clean --global`: remove the copy of every asset the global lock tracks from each global
|
|
2125
|
+
* harness (and the old `~/.omp/<dir>` copy), keeping `~/.skaile/skaile.yaml`. With `all`, the
|
|
2126
|
+
* global lock goes too.
|
|
2127
|
+
*/
|
|
2128
|
+
private cleanGlobal;
|
|
2032
2129
|
/**
|
|
2033
2130
|
* Remove the deployed dir of every asset tracked by the lock; missing dirs
|
|
2034
2131
|
* still count as removed. Returns the list of cleaned refs.
|
|
@@ -2062,6 +2159,8 @@ export declare class AssetManager {
|
|
|
2062
2159
|
* @returns `true` when a declaration was removed.
|
|
2063
2160
|
*/
|
|
2064
2161
|
private removeDependencyFromConfig;
|
|
2162
|
+
/** The refs `skaile.yaml` binds agent instances to: every `agents.<id>.ref` and `agent.definition`. Project mode only. */
|
|
2163
|
+
private declaredAgentInstanceRefs;
|
|
2065
2164
|
/**
|
|
2066
2165
|
* Drop the agent instances of `skaile.yaml` (`agents.<id>`, or the `agent.definition`
|
|
2067
2166
|
* default) whose `ref` binds to `target`, and the native agent files an install rendered for
|