@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
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createSpinner } from './chunk-NESV47MF.js';
|
|
2
|
-
import { logInfo, logWarn, logErr, TARGET_DEFAULT_HINT, logOk, colorRef, S, requireProjectConfig, warnLegacyClaudeCopies, formatSoftDepHint } from './chunk-
|
|
3
|
-
import { getKindRegistry } from './chunk-
|
|
4
|
-
import { verifyConventionItems } from './chunk-
|
|
5
|
-
import { AssetManager } from './chunk-
|
|
6
|
-
import { readLock } from './chunk-
|
|
7
|
-
import { SourceEntryError, effectiveAgentInstances, resolveSkWorkspaceConfig, resolveAgentDefinitionDir, AgentRefResolutionError } from './chunk-
|
|
8
|
-
import { userConfigPath } from './chunk-L5VSIPQD.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
2
|
+
import { logInfo, logWarn, logErr, TARGET_DEFAULT_HINT, logOk, colorRef, S, parseHarnessFilter, requireProjectConfig, warnPlaceholderBodies, warnFilesOnlyDelegates, warnLegacyClaudeCopies, formatSoftDepHint, reportLegacyOmpCopies } from './chunk-VJ2DZLDM.js';
|
|
3
|
+
import { getKindRegistry } from './chunk-2SKPPIV7.js';
|
|
4
|
+
import { verifyConventionItems } from './chunk-CQFVKN6S.js';
|
|
5
|
+
import { AssetManager } from './chunk-DADAZLFW.js';
|
|
6
|
+
import { readLock } from './chunk-PIC23DDE.js';
|
|
7
|
+
import { SourceEntryError, effectiveAgentInstances, resolveSkWorkspaceConfig, resolveAgentDefinitionDir, AgentRefResolutionError } from './chunk-ZVZTCDUN.js';
|
|
8
|
+
import { userConfigPath, globalSkaileDir } from './chunk-L5VSIPQD.js';
|
|
9
|
+
import { parseAssetRef } from './chunk-FT4ZHLYR.js';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
11
|
import path from 'path';
|
|
12
12
|
import * as p from '@clack/prompts';
|
|
13
13
|
import { Command } from 'commander';
|
|
@@ -103,19 +103,6 @@ function makeInstallCommand() {
|
|
|
103
103
|
"Deploy over a folder no lock entry owns (a hand-made skill of the same name) instead of refusing"
|
|
104
104
|
).action(runInstallCommand);
|
|
105
105
|
}
|
|
106
|
-
function parseHarnessFilter(raw) {
|
|
107
|
-
if (!raw) return void 0;
|
|
108
|
-
const ids = raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
109
|
-
const out = [];
|
|
110
|
-
for (const id of ids) {
|
|
111
|
-
if (!SUPPORTED_DRIVER_TARGETS.includes(id)) {
|
|
112
|
-
logErr(`unknown harness '${id}' \u2014 expected one of: ${SUPPORTED_DRIVER_TARGETS.join(", ")}`);
|
|
113
|
-
process.exit(1);
|
|
114
|
-
}
|
|
115
|
-
out.push(id);
|
|
116
|
-
}
|
|
117
|
-
return out.length > 0 ? out : void 0;
|
|
118
|
-
}
|
|
119
106
|
async function runInstallCommand(ref, opts) {
|
|
120
107
|
if (ref !== void 0) {
|
|
121
108
|
await runRefInstall(ref, opts);
|
|
@@ -137,7 +124,7 @@ async function runRefInstall(ref, opts) {
|
|
|
137
124
|
const spinner = createSpinner();
|
|
138
125
|
spinner.start(`Installing ${ref}`);
|
|
139
126
|
try {
|
|
140
|
-
const { openCatalogSource, openLibrary } = await import('./open-library-
|
|
127
|
+
const { openCatalogSource, openLibrary } = await import('./open-library-YSUGNP36.js');
|
|
141
128
|
const catalog = await openCatalogSource({ projectDir: path.resolve(opts.projectDir) });
|
|
142
129
|
if (!supportsInstallManifest(catalog)) {
|
|
143
130
|
throw new Error(
|
|
@@ -184,7 +171,7 @@ async function runYamlInstall(opts) {
|
|
|
184
171
|
}
|
|
185
172
|
requireProjectConfig(projectDir);
|
|
186
173
|
try {
|
|
187
|
-
const { ensureSourcesCloned } = await import('./ensure-sources-
|
|
174
|
+
const { ensureSourcesCloned } = await import('./ensure-sources-R6AHZ7RV.js');
|
|
188
175
|
const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
|
|
189
176
|
if (hydrate.cloned.length > 0) {
|
|
190
177
|
logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
|
|
@@ -211,6 +198,7 @@ async function runYamlInstall(opts) {
|
|
|
211
198
|
if (result.deployed.length > 0) {
|
|
212
199
|
for (const d of result.deployed) logOk(d);
|
|
213
200
|
}
|
|
201
|
+
warnPlaceholderBodies(result.placeholderBodies);
|
|
214
202
|
for (const r of result.restored ?? []) {
|
|
215
203
|
for (const f of r.restored) logInfo(`Restored ${f}`);
|
|
216
204
|
for (const f of r.removed) logInfo(`Removed ${f} (not part of ${r.ref})`);
|
|
@@ -218,6 +206,7 @@ async function runYamlInstall(opts) {
|
|
|
218
206
|
reportRewritten(result.rewritten);
|
|
219
207
|
reportPresetExpansions(result.presets);
|
|
220
208
|
reportAgentInstances(result.agentInstances, result.agentFilesRemoved);
|
|
209
|
+
warnFilesOnlyDelegates(am.projectDir, am.driverTarget);
|
|
221
210
|
if (result.removed.length > 0) {
|
|
222
211
|
for (const r of result.removed) logWarn(`Removed: ${r}`);
|
|
223
212
|
}
|
|
@@ -272,6 +261,7 @@ async function runGlobalInstall(opts, harnesses) {
|
|
|
272
261
|
const storeUnreachable = result.storeNotChecked?.some((n) => n.reason === "unreachable");
|
|
273
262
|
spinner.stop(result.missing.length > 0 || storeUnreachable ? "Failed" : "Done");
|
|
274
263
|
if (result.deployed.length > 0) for (const d of result.deployed) logOk(d);
|
|
264
|
+
warnPlaceholderBodies(result.placeholderBodies);
|
|
275
265
|
reportPresetExpansions(result.presets);
|
|
276
266
|
if (result.removed.length > 0) for (const r of result.removed) logWarn(`Removed: ${r}`);
|
|
277
267
|
reportReplaced(result.replaced);
|
|
@@ -285,6 +275,7 @@ async function runGlobalInstall(opts, harnesses) {
|
|
|
285
275
|
process.exitCode = 1;
|
|
286
276
|
}
|
|
287
277
|
if (result.lockWritten) logInfo(`Global lock written: ${S.dim("~/.skaile/skaile.lock.yaml")}`);
|
|
278
|
+
reportLegacyOmpCopies(am.takeLegacyCopiesRemoved(), am.takeLegacyCopiesKept());
|
|
288
279
|
const state = am.globalState({});
|
|
289
280
|
const byHarness = /* @__PURE__ */ new Map();
|
|
290
281
|
for (const s of state)
|
|
@@ -296,8 +287,47 @@ async function runGlobalInstall(opts, harnesses) {
|
|
|
296
287
|
process.exit(1);
|
|
297
288
|
}
|
|
298
289
|
}
|
|
290
|
+
function globalManager(opts) {
|
|
291
|
+
return new AssetManager({
|
|
292
|
+
registry: getKindRegistry(),
|
|
293
|
+
projectDir: path.resolve(opts.projectDir),
|
|
294
|
+
global: true,
|
|
295
|
+
harnesses: parseHarnessFilter(opts.harness)
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
function globalProblems(am) {
|
|
299
|
+
const lines = /* @__PURE__ */ new Set();
|
|
300
|
+
for (const row of am.globalState({})) {
|
|
301
|
+
if (row.state === "declared") {
|
|
302
|
+
lines.add(
|
|
303
|
+
`${row.ref} is declared in ~/.skaile/skaile.yaml but not installed: run skaile install --global`
|
|
304
|
+
);
|
|
305
|
+
} else if (row.state === "drift") {
|
|
306
|
+
lines.add(
|
|
307
|
+
`${row.ref} is missing from ${row.harness}: run skaile install --global --harness ${row.harness}`
|
|
308
|
+
);
|
|
309
|
+
} else if (row.state === "invalid") {
|
|
310
|
+
lines.add(`${row.ref} in ~/.skaile/skaile.yaml is not a valid asset ref`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
for (const stale of am.staleLegacyOmpCopies()) {
|
|
314
|
+
lines.add(
|
|
315
|
+
`${stale.path.replace(homedir(), "~")} is an old omp copy of ${stale.ref} (omp reads ~/.omp/agent): run skaile install --global --harness omp, or delete it`
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
return [...lines];
|
|
319
|
+
}
|
|
299
320
|
function makeCheckCommand() {
|
|
300
|
-
return new Command("check").description("Check for unmet requirements").option("--project-dir <path>", "Project directory", process.cwd()).action(async (opts) => {
|
|
321
|
+
return new Command("check").description("Check for unmet requirements").option("--project-dir <path>", "Project directory", process.cwd()).option("--global", "Check the global install (~/.skaile) instead of the project").option("--harness <ids>", "With --global: only these harnesses (comma-separated)").action(async (opts) => {
|
|
322
|
+
if (opts.global || opts.harness) {
|
|
323
|
+
const problems = globalProblems(globalManager({ ...opts}));
|
|
324
|
+
if (problems.length === 0) {
|
|
325
|
+
logOk("All global dependencies satisfied.");
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
for (const line of problems) logErr(line);
|
|
329
|
+
process.exit(1);
|
|
330
|
+
}
|
|
301
331
|
requireProjectConfig(opts.projectDir);
|
|
302
332
|
const am = new AssetManager({
|
|
303
333
|
registry: getKindRegistry(),
|
|
@@ -343,13 +373,17 @@ async function editedConventionFiles(projectDir) {
|
|
|
343
373
|
return messages;
|
|
344
374
|
}
|
|
345
375
|
function makeCleanCommand() {
|
|
346
|
-
return new Command("clean").description("Remove all skaile-managed assets from the workspace").option("--all", "Full reset: also remove history, patches, repos, and lock file").option("--dry-run", "Show what would be removed without doing it").option("-y, --yes", "Skip confirmation prompt").option("--project-dir <path>", "Project directory", process.cwd()).option("--target <agent>", `Agent framework (${TARGET_DEFAULT_HINT})`).action(async (opts) => {
|
|
347
|
-
const
|
|
376
|
+
return new Command("clean").description("Remove all skaile-managed assets from the workspace").option("--all", "Full reset: also remove history, patches, repos, and lock file").option("--dry-run", "Show what would be removed without doing it").option("-y, --yes", "Skip confirmation prompt").option("--project-dir <path>", "Project directory", process.cwd()).option("--target <agent>", `Agent framework (${TARGET_DEFAULT_HINT})`).option("--global", "Clean the global install (~/.skaile and every global harness)").option("--harness <ids>", "With --global: only these harnesses (comma-separated)").action(async (opts) => {
|
|
377
|
+
const isGlobal = Boolean(opts.global || opts.harness);
|
|
378
|
+
if (!isGlobal) requireProjectConfig(opts.projectDir, { allowMissing: true });
|
|
379
|
+
const am = isGlobal ? globalManager({ ...opts}) : new AssetManager({
|
|
348
380
|
registry: getKindRegistry(),
|
|
349
381
|
projectDir: path.resolve(opts.projectDir),
|
|
350
382
|
driverTarget: opts.target
|
|
351
383
|
});
|
|
352
|
-
const lock = readLock(
|
|
384
|
+
const lock = readLock(
|
|
385
|
+
isGlobal ? path.join(globalSkaileDir(), "skaile.lock.yaml") : path.resolve(opts.projectDir, "skaile.lock.yaml")
|
|
386
|
+
);
|
|
353
387
|
if (!lock || Object.keys(lock.assets).length === 0) {
|
|
354
388
|
logInfo("Nothing to clean (no skaile-managed assets found).");
|
|
355
389
|
return;
|
|
@@ -363,9 +397,11 @@ function makeCleanCommand() {
|
|
|
363
397
|
if (opts.all) {
|
|
364
398
|
console.log();
|
|
365
399
|
console.log(` ${S.heading("Also removing:")}`);
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
400
|
+
if (!isGlobal) {
|
|
401
|
+
console.log(` ${S.dim(".skaile/history.yaml")}`);
|
|
402
|
+
console.log(` ${S.dim(".skaile/patches/")}`);
|
|
403
|
+
}
|
|
404
|
+
console.log(` ${S.dim(isGlobal ? "~/.skaile/skaile.lock.yaml" : "skaile.lock.yaml")}`);
|
|
369
405
|
}
|
|
370
406
|
if (opts.dryRun) {
|
|
371
407
|
console.log();
|
|
@@ -401,6 +437,6 @@ function makeCleanCommand() {
|
|
|
401
437
|
});
|
|
402
438
|
}
|
|
403
439
|
|
|
404
|
-
export { REF_HINT, editedConventionFiles, makeCheckCommand, makeCleanCommand, makeInstallCommand, reportAgentInstances, reportInstalledSoftDeps, reportMoved, reportPresetExpansions, reportRelocked, reportReplaced, reportRewritten, reportStoreNotChecked, runPointerOnlyInstall, supportsInstallManifest };
|
|
405
|
-
//# sourceMappingURL=chunk-
|
|
406
|
-
//# sourceMappingURL=chunk-
|
|
440
|
+
export { REF_HINT, editedConventionFiles, globalProblems, makeCheckCommand, makeCleanCommand, makeInstallCommand, reportAgentInstances, reportInstalledSoftDeps, reportMoved, reportPresetExpansions, reportRelocked, reportReplaced, reportRewritten, reportStoreNotChecked, runPointerOnlyInstall, supportsInstallManifest };
|
|
441
|
+
//# sourceMappingURL=chunk-SMUIYYCH.js.map
|
|
442
|
+
//# sourceMappingURL=chunk-SMUIYYCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../cli/src/commands/project.ts"],"names":["confirm"],"mappings":"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","file":"chunk-SMUIYYCH.js","sourcesContent":["import { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport {\n AssetManager,\n type InstalledAgentInstance,\n type LibraryMove,\n type ReplacedAsset,\n type RewrittenAgent,\n} from \"@skaile/workspaces/asset-manager\";\nimport {\n AgentRefResolutionError,\n type DriverTarget,\n effectiveAgentInstances,\n globalSkaileDir,\n type PresetExpansion,\n parseAssetRef,\n readLock,\n resolveAgentDefinitionDir,\n resolveSkWorkspaceConfig,\n SourceEntryError,\n userConfigPath,\n} from \"@skaile/workspaces/core\";\nimport { verifyConventionItems } from \"@skaile/workspaces/runner\";\nimport type { InstallManifest } from \"@skaile/workspaces/types\";\nimport { Command } from \"commander\";\nimport {\n colorRef,\n requireProjectConfig,\n formatSoftDepHint,\n logErr,\n logInfo,\n logOk,\n logWarn,\n parseHarnessFilter,\n reportLegacyOmpCopies,\n S,\n TARGET_DEFAULT_HINT,\n warnFilesOnlyDelegates,\n warnLegacyClaudeCopies,\n warnPlaceholderBodies,\n} from \"../helpers.ts\";\nimport { createSpinner } from \"../spinner.ts\";\nimport { getKindRegistry } from \"../open-registry.ts\";\n\n/**\n * Canonical asset-ref shape accepted by `skaile install <ref>`:\n * `kind:@<publisher>/<name>#<version>` (the `#` version sigil). Validated via\n * `parseAssetRef` so the CLI shares the single canonical grammar; the legacy\n * trailing-`@version` shape is rejected.\n */\nexport const REF_HINT = \"kind:@<publisher>/<name>#<version> (e.g. skill:@skaile/use-exa#1.0.0)\";\n\n/** True when `ref` parses as a canonical asset ref. */\nfunction isValidAssetRef(ref: string): boolean {\n try {\n parseAssetRef(ref);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Minimal catalog-source surface the pointer-only install path needs.\n * `RemoteCatalogSource` satisfies this — narrowing keeps {@link runPointerOnlyInstall}\n * testable with a hand-rolled stub.\n */\nexport interface InstallManifestSource {\n getInstallManifest(ref: string): Promise<InstallManifest>;\n}\n\n/**\n * Capability check: is this catalog source able to serve install manifests?\n *\n * `openCatalogSource` returns a `RemoteCatalogSource | RestCatalogSource`.\n * Only the tRPC-framed `RemoteCatalogSource` implements `getInstallManifest`;\n * the REST-framed `RestCatalogSource` (the default for any catalog URL other\n * than `https://skaile.store`) does not. Calling it unconditionally would be a\n * runtime `TypeError`, so the pointer-only install path must capability-detect\n * first and fail with a clear, actionable message.\n */\nexport function supportsInstallManifest(source: unknown): source is InstallManifestSource {\n return (\n typeof (source as { getInstallManifest?: unknown } | null | undefined)?.getInstallManifest ===\n \"function\"\n );\n}\n\n/**\n * Minimal library surface the pointer-only install path needs.\n * `LocalIndex` satisfies this.\n */\nexport interface InstallLibrary {\n install(manifest: InstallManifest): Promise<{ installPath: string }>;\n}\n\n/**\n * Result of a pointer-only catalog install.\n */\nexport interface PointerOnlyInstallResult {\n /** Absolute path the verified asset bytes were written to. */\n installPath: string;\n /** The pinned upstream commit SHA the asset was fetched at. */\n commitSha: string;\n /** Number of files in the install manifest. */\n fileCount: number;\n}\n\n/**\n * Pointer-only catalog install — the `skaile install <ref>` code path.\n *\n * 1. Resolves the pointer-only {@link InstallManifest} from the Catalog.\n * 2. Hands it to the library, which fetches each file's bytes directly from\n * the upstream repo at the pinned commit, verifies every per-file SHA256\n * plus the composite SHA256, and only then writes the verified files.\n *\n * Both dependencies are injected so the function is unit-testable without a\n * network round-trip. In production the CLI passes a `RemoteCatalogSource`\n * and a `LocalIndex`.\n *\n * @param ref - Canonical asset ref (`kind:@<publisher>/<name>#<version>`).\n * @param deps - Injected catalog source + library.\n * @returns The install path, pinned commit SHA, and file count.\n * @throws When the ref is malformed, the manifest cannot be resolved, or any\n * hash verification fails. The underlying error message is surfaced as-is.\n */\nexport async function runPointerOnlyInstall(\n ref: string,\n deps: { catalog: InstallManifestSource; library: InstallLibrary },\n): Promise<PointerOnlyInstallResult> {\n let requested: ReturnType<typeof parseAssetRef>;\n try {\n requested = parseAssetRef(ref);\n } catch (e) {\n throw new Error(\n `malformed asset ref '${ref}' — expected ${REF_HINT}: ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n const manifest = await deps.catalog.getInstallManifest(ref);\n // [M1] Identity check: the catalog must not install a different asset than\n // requested. Compare the PARSED refs (kind/publisher/name/pin) so equivalent\n // spellings (optional `kind:`, default `skill`) are treated as the same ref.\n const got = parseAssetRef(manifest.ref);\n if (\n got.kind !== requested.kind ||\n got.publisher !== requested.publisher ||\n got.name !== requested.name ||\n got.pin !== requested.pin\n ) {\n throw new Error(\n `catalog identity mismatch: requested '${ref}' but the catalog returned a manifest for '${manifest.ref}'`,\n );\n }\n const { installPath } = await deps.library.install(manifest);\n return {\n installPath,\n commitSha: manifest.source.commitSha,\n fileCount: manifest.files.length,\n };\n}\n\n/**\n * Print one summary line per `preset:` dependency `skaile install` expanded: how many\n * asset items joined the install set and how many instance items (`library://`,\n * placeholders) were skipped, which only `skaile preset apply` materialises.\n */\nexport function reportPresetExpansions(\n presets: readonly PresetExpansion[] | undefined,\n onLine: (line: string) => void = logInfo,\n): void {\n for (const preset of presets ?? []) {\n onLine(\n `preset ${preset.ref}: ${preset.assets} assets, ${preset.skipped} instance items skipped (apply with skaile preset apply)`,\n );\n }\n}\n\n/**\n * Print one line per agent instance `skaile install` rendered (with the files\n * written) and one per native agent file removed because its instance left `skaile.yaml`.\n */\nexport function reportAgentInstances(\n instances: readonly InstalledAgentInstance[] | undefined,\n removedFiles: readonly string[] | undefined,\n onLine: (line: string) => void = logInfo,\n onRemoved: (line: string) => void = logWarn,\n): void {\n for (const instance of instances ?? []) {\n onLine(`agent ${instance.id}: ${instance.files.join(\", \")}`);\n }\n for (const file of removedFiles ?? []) onRemoved(`Removed: ${file}`);\n}\n\n/** One `Re-locked` line per lock entry `install`/`update` rewrote for an already-locked asset. */\nexport function reportRelocked(\n relocked: string[] | undefined,\n onLine: (line: string) => void = logInfo,\n): void {\n for (const ref of relocked ?? []) onLine(`Re-locked ${ref}`);\n}\n\n/** One `! <ref> moved from <a> to <b>` line per locked asset that now resolves from another library. */\nexport function reportMoved(\n moved: readonly LibraryMove[] | undefined,\n onLine: (line: string) => void = logWarn,\n): void {\n for (const m of moved ?? []) onLine(`${m.ref} moved from ${m.from} to ${m.to}`);\n}\n\n/** One `replaced <old> → <new>` line per asset `install`/`update` moved to another locked version. */\nexport function reportReplaced(\n replaced: readonly ReplacedAsset[] | undefined,\n onLine: (line: string) => void = logInfo,\n): void {\n for (const r of replaced ?? []) onLine(`${r.ref} replaced ${r.from} → ${r.to}`);\n}\n\n/** One `Rewrote <file> (agent render changed)` line per rendered agent file whose bytes the CLI's render changed. */\nexport function reportRewritten(\n rewritten: readonly RewrittenAgent[] | undefined,\n onLine: (line: string) => void = logInfo,\n): void {\n for (const r of rewritten ?? []) {\n for (const f of r.files) onLine(`Rewrote ${f} (agent render changed)`);\n }\n}\n\n/**\n * Say which locked store assets `install`/`update` did not check against the store (p792,\n * p799). A chosen mode (air-gapped, `--no-catalog`) is one info line per asset; a store that\n * did not answer is an error line `store unreachable: could not check <ref> for updates`.\n *\n * @returns Whether any asset could not be checked because the store was unreachable: the\n * command then ends `Failed` with exit 1.\n */\nexport function reportStoreNotChecked(\n notChecked: readonly { ref: string; reason: string; detail: string }[] | undefined,\n): boolean {\n let unreachable = false;\n for (const n of notChecked ?? []) {\n if (n.reason === \"unreachable\") {\n unreachable = true;\n logErr(`store unreachable: could not check ${n.ref} for updates (${n.detail})`);\n } else if (n.reason === \"air-gapped\") {\n logInfo(`${n.ref} kept as locked (air-gapped: not checked against the store)`);\n } else {\n logInfo(`${n.ref} kept as locked (${n.detail})`);\n }\n }\n return unreachable;\n}\n\n/**\n * Creates the `skaile install` command.\n *\n * Two modes, selected by argument shape:\n *\n * - `skaile install` (no positional arg) — reads `skaile.yaml` and deploys all\n * declared assets (and their transitive dependencies) to the configured\n * driver target directory. Supports `--locked` for CI-mode install from a\n * lock file.\n * - `skaile install kind:@<publisher>/<name>#<version>` — pointer-only catalog\n * install: resolves the pointer-only install manifest from the configured\n * Catalog, fetches each file's bytes directly from the upstream repo at the\n * pinned commit, verifies every per-file + the composite SHA256, then writes\n * the verified files into the local Library.\n *\n * @returns Configured {@link Command} ready for `program.addCommand()`.\n * @docLink cli/commands/project#make-install-command\n */\nexport function makeInstallCommand(): Command {\n return new Command(\"install\")\n .description(`Install dependencies from skaile.yaml, or a single asset by ref (${REF_HINT})`)\n .argument(\"[ref]\", `Asset ref to install from the Catalog (${REF_HINT})`)\n .option(\"--locked\", \"Install from lock file (CI mode — fails on drift)\")\n .option(\"--project-dir <path>\", \"Project directory\", process.cwd())\n .option(\"--target <agent>\", `Agent framework (${TARGET_DEFAULT_HINT})`)\n .option(\n \"--global\",\n \"Install the global SSOT (~/.skaile/skaile.yaml), fanning out to every global harness\",\n )\n .option(\n \"--harness <ids>\",\n \"Comma-separated global harnesses to install into (default: all resolved); implies --global\",\n )\n .option(\n \"--link\",\n \"symlink local-path assets instead of copying (dev loop; machine-local, not for committing)\",\n )\n .option(\n \"--force\",\n \"Deploy over a folder no lock entry owns (a hand-made skill of the same name) instead of refusing\",\n )\n .action(runInstallCommand);\n}\n\n/** Options shape accepted by the `skaile install` command action. */\ninterface InstallCommandOptions {\n locked?: boolean;\n projectDir: string;\n target?: string;\n global?: boolean;\n harness?: string;\n link?: boolean;\n force?: boolean;\n}\n\n/**\n * `skaile install` action body. Dispatches by argument shape:\n * a positional `ref` selects pointer-only catalog install, otherwise the\n * legacy `skaile.yaml` install path runs.\n */\nasync function runInstallCommand(\n ref: string | undefined,\n opts: InstallCommandOptions,\n): Promise<void> {\n // ── Pointer-only catalog install: `skaile install <ref>` ──────────────\n if (ref !== undefined) {\n await runRefInstall(ref, opts);\n return;\n }\n\n // ── Legacy install: `skaile install` reads skaile.yaml ────────────────\n await runYamlInstall(opts);\n}\n\n/** Pointer-only catalog install path for `skaile install <ref>`. */\nasync function runRefInstall(ref: string, opts: InstallCommandOptions): Promise<void> {\n if (!isValidAssetRef(ref)) {\n logErr(`malformed asset ref '${ref}' — expected ${REF_HINT}`);\n process.exit(1);\n }\n // The store installs one exact version; without `#<version>` it answers a bare 400, so say\n // what is missing before the call.\n if (!parseAssetRef(ref).pin) {\n logErr(\n `${ref} needs a version: use ${ref}#<version>. A library asset is deployed with \\`skaile add ${ref}\\`, not \\`skaile install\\`.`,\n );\n process.exit(1);\n }\n const spinner = createSpinner();\n spinner.start(`Installing ${ref}`);\n try {\n const { openCatalogSource, openLibrary } = await import(\"../open-library.ts\");\n const catalog = await openCatalogSource({ projectDir: path.resolve(opts.projectDir) });\n // [H2] REST-framed catalogs (the default for any catalog URL other\n // than https://skaile.store) cannot serve install manifests. Detect\n // and fail clearly rather than throwing a runtime TypeError.\n if (!supportsInstallManifest(catalog)) {\n throw new Error(\n \"pointer-only install (skaile install <ref>) requires a tRPC-framed Catalog. \" +\n \"The configured catalog uses REST framing, which does not serve install \" +\n \"manifests. Set catalog.url to https://skaile.store, or catalog.framing: trpc, \" +\n `in ${userConfigPath()}.`,\n );\n }\n const library = await openLibrary();\n try {\n const result = await runPointerOnlyInstall(ref, { catalog, library });\n spinner.stop(\"Done\");\n logOk(`Installed ${colorRef(ref)}`);\n logInfo(`Path: ${S.dim(result.installPath)}`);\n logInfo(`Commit: ${S.dim(result.commitSha)}`);\n logInfo(`Files: ${S.dim(String(result.fileCount))}`);\n logInfo(\n S.dim(\n `Installed globally (see Path above) — use \\`skaile add ${ref}\\` to deploy into this project.`,\n ),\n );\n } finally {\n library.close();\n }\n } catch (err) {\n spinner.stop(\"Failed\");\n const msg = err instanceof Error ? err.message : String(err);\n if (/failed: 404\\b/.test(msg)) {\n logErr(\n `${ref} is not in the store. For a library asset use \\`skaile add ${ref.replace(/#.*$/, \"\")}\\`.`,\n );\n } else if (/unreachable/i.test(msg)) {\n logErr(`asset uninstallable — source commit no longer available (${msg})`);\n } else {\n logErr(msg);\n }\n process.exit(1);\n }\n}\n\n/** Legacy install path for bare `skaile install` (reads skaile.yaml). */\nasync function runYamlInstall(opts: InstallCommandOptions): Promise<void> {\n const projectDir = path.resolve(opts.projectDir);\n\n const harnesses = parseHarnessFilter(opts.harness);\n // `--harness` implies `--global`.\n if (opts.global || harnesses) {\n await runGlobalInstall(opts, harnesses);\n return;\n }\n\n // A project without a readable skaile.yaml stops here, before sources are cloned, assets\n // are deployed or undeployed, or the lock is written.\n requireProjectConfig(projectDir);\n\n // Hydrate sources declared in skaile.yaml before resolving assets, so\n // freshly checked-out projects pull their source clones automatically.\n try {\n const { ensureSourcesCloned } = await import(\"../ensure-sources.ts\");\n const hydrate = ensureSourcesCloned(projectDir, { quiet: true });\n if (hydrate.cloned.length > 0) {\n logOk(`Cloned source(s): ${hydrate.cloned.join(\", \")}`);\n }\n if (hydrate.failed.length > 0) {\n logErr(`Failed to clone source(s): ${hydrate.failed.join(\", \")}`);\n }\n } catch (err) {\n logWarn(`source hydration skipped: ${err instanceof Error ? err.message : String(err)}`);\n }\n\n const am = new AssetManager({\n registry: getKindRegistry(),\n projectDir,\n driverTarget: opts.target as DriverTarget,\n });\n const spinner = createSpinner();\n spinner.start(opts.locked ? \"Installing from lock file\" : \"Installing dependencies\");\n try {\n const result = await am.install({ locked: opts.locked, link: opts.link, force: opts.force });\n const storeUnreachable = result.storeNotChecked?.some((n) => n.reason === \"unreachable\");\n spinner.stop(\n result.agentInstanceErrors?.length || result.missing.length > 0 || storeUnreachable\n ? \"Failed\"\n : \"Done\",\n );\n if (result.deployed.length > 0) {\n for (const d of result.deployed) logOk(d);\n }\n warnPlaceholderBodies(result.placeholderBodies);\n for (const r of result.restored ?? []) {\n for (const f of r.restored) logInfo(`Restored ${f}`);\n for (const f of r.removed) logInfo(`Removed ${f} (not part of ${r.ref})`);\n }\n reportRewritten(result.rewritten);\n reportPresetExpansions(result.presets);\n reportAgentInstances(result.agentInstances, result.agentFilesRemoved);\n warnFilesOnlyDelegates(am.projectDir, am.driverTarget);\n if (result.removed.length > 0) {\n for (const r of result.removed) logWarn(`Removed: ${r}`);\n }\n reportReplaced(result.replaced);\n reportRelocked(result.relocked);\n reportMoved(result.moved);\n if (\n result.deployed.length === 0 &&\n result.removed.length === 0 &&\n !result.replaced?.length &&\n result.missing.length === 0 &&\n !result.storeNotChecked?.length &&\n !result.relocked?.length &&\n !result.moved?.length &&\n !result.agentInstanceErrors?.length\n ) {\n logInfo(\"Nothing to install (already up to date).\");\n }\n if (result.agentInstanceErrors?.length) {\n logErr(\n `${result.agentInstanceErrors.length} agent instance(s) could not be rendered (see above)`,\n );\n process.exitCode = 1;\n }\n if (result.missing.length > 0) {\n for (const m of result.missing) logErr(`Missing: ${m}${result.missingHints?.[m] ?? \"\"}`);\n // Partial-miss must fail the process — CI can't otherwise distinguish a\n // clean install from \"half the assets never resolved\".\n process.exitCode = 1;\n }\n if (reportStoreNotChecked(result.storeNotChecked)) process.exitCode = 1;\n if (result.lockWritten) {\n logInfo(`Lock file written: ${S.dim(\"skaile.lock.yaml\")}`);\n }\n warnLegacyClaudeCopies(am);\n // Report-only: surface soft deps the declared assets reference but aren't\n // present. Never a prompt — install is a batch/CI path. Skipped under\n // --locked: that mode is \"restore exactly\", so an `add` nudge would jar.\n if (!opts.locked) await reportInstalledSoftDeps(am);\n } catch (err) {\n spinner.stop(\"Failed\");\n logErr(err instanceof SourceEntryError ? err.message : String(err));\n process.exit(1);\n }\n}\n\n/**\n * Report (never prompt) the body-link soft deps that the declared assets\n * reference but that aren't in the project — the `install` counterpart to the\n * `add`-time soft-dep surface. `install` is a batch/CI path (often non-TTY), so\n * it only ever prints a hint: pulling stays an explicit `skaile add`. Best-effort\n * — `reportSoftDeps` swallows any index failure and returns `[]`.\n */\nexport async function reportInstalledSoftDeps(\n am: Pick<AssetManager, \"listDeclared\" | \"reportSoftDeps\">,\n onHint: (line: string) => void = (l) => logInfo(S.dim(l)),\n): Promise<void> {\n try {\n const declared = (await am.listDeclared()).map((d) => d.ref);\n if (declared.length === 0) return;\n const edges = await am.reportSoftDeps(declared);\n for (const edge of edges) onHint(formatSoftDepHint(edge));\n } catch {\n // Best-effort: a soft-dep report must never fail an install that succeeded.\n }\n}\n\n/**\n * Global cross-harness install: deploy every dep declared in the global SSOT\n * (`~/.skaile/skaile.yaml`) into each resolved global harness's dir under `~`,\n * write the global lock (`~/.skaile/skaile.lock.yaml`), then print per-harness\n * state. `harnesses` is the `--harness` filter (omit for the full resolved set).\n */\nasync function runGlobalInstall(\n opts: InstallCommandOptions,\n harnesses: DriverTarget[] | undefined,\n): Promise<void> {\n const am = new AssetManager({\n registry: getKindRegistry(),\n projectDir: path.resolve(opts.projectDir),\n global: true,\n harnesses,\n });\n const spinner = createSpinner();\n spinner.start(\"Installing global dependencies\");\n try {\n const result = await am.install({ locked: opts.locked, link: opts.link, force: opts.force });\n const storeUnreachable = result.storeNotChecked?.some((n) => n.reason === \"unreachable\");\n spinner.stop(result.missing.length > 0 || storeUnreachable ? \"Failed\" : \"Done\");\n if (result.deployed.length > 0) for (const d of result.deployed) logOk(d);\n warnPlaceholderBodies(result.placeholderBodies);\n reportPresetExpansions(result.presets);\n if (result.removed.length > 0) for (const r of result.removed) logWarn(`Removed: ${r}`);\n reportReplaced(result.replaced);\n reportRelocked(result.relocked);\n reportMoved(result.moved);\n if (\n result.deployed.length === 0 &&\n result.removed.length === 0 &&\n !result.replaced?.length &&\n result.missing.length === 0 &&\n !result.storeNotChecked?.length &&\n !result.relocked?.length &&\n !result.moved?.length\n )\n logInfo(\"Nothing to install (already up to date).\");\n if (reportStoreNotChecked(result.storeNotChecked)) process.exitCode = 1;\n if (result.missing.length > 0) {\n for (const m of result.missing) logErr(`Missing: ${m}${result.missingHints?.[m] ?? \"\"}`);\n process.exitCode = 1;\n }\n if (result.lockWritten) logInfo(`Global lock written: ${S.dim(\"~/.skaile/skaile.lock.yaml\")}`);\n reportLegacyOmpCopies(am.takeLegacyCopiesRemoved(), am.takeLegacyCopiesKept());\n\n // Per-harness reconciliation summary so a partial fan-out is visible.\n const state = am.globalState({});\n const byHarness = new Map<string, number>();\n for (const s of state)\n if (s.state === \"installed\") byHarness.set(s.harness, (byHarness.get(s.harness) ?? 0) + 1);\n for (const [harness, n] of byHarness) logInfo(`${harness}: ${n} installed`);\n } catch (err) {\n spinner.stop(\"Failed\");\n logErr(String(err));\n process.exit(1);\n }\n}\n\n/** The `--global` options of `check`, `doctor` and `clean`. */\ninterface GlobalScopeOptions {\n global?: boolean;\n harness?: string;\n projectDir: string;\n}\n\n/** A manager over the user-scope SSOT (`~/.skaile`), limited to `--harness` when given. */\nfunction globalManager(opts: GlobalScopeOptions): AssetManager {\n return new AssetManager({\n registry: getKindRegistry(),\n projectDir: path.resolve(opts.projectDir),\n global: true,\n harnesses: parseHarnessFilter(opts.harness),\n });\n}\n\n/**\n * What is wrong with the global install: one line per declared asset a harness does not hold\n * (`list --global` calls these `declared` and `drift`), per invalid entry, and per old\n * `~/.omp/<dir>` copy a 5.12.0 install left behind. Empty when the global state is clean (p911).\n */\nexport function globalProblems(am: AssetManager): string[] {\n const lines = new Set<string>();\n for (const row of am.globalState({})) {\n if (row.state === \"declared\") {\n lines.add(\n `${row.ref} is declared in ~/.skaile/skaile.yaml but not installed: run skaile install --global`,\n );\n } else if (row.state === \"drift\") {\n lines.add(\n `${row.ref} is missing from ${row.harness}: run skaile install --global --harness ${row.harness}`,\n );\n } else if (row.state === \"invalid\") {\n lines.add(`${row.ref} in ~/.skaile/skaile.yaml is not a valid asset ref`);\n }\n }\n for (const stale of am.staleLegacyOmpCopies()) {\n lines.add(\n `${stale.path.replace(homedir(), \"~\")} is an old omp copy of ${stale.ref} (omp reads ~/.omp/agent): run skaile install --global --harness omp, or delete it`,\n );\n }\n return [...lines];\n}\n\n/**\n * Creates the `skaile check` command.\n *\n * Fails (exit 1) on every problem {@link AssetManager.projectState} reports: unmet\n * requirements of deployed assets, a declared dep that never resolved into the lock (its\n * library or source is gone, like `skaile list` showing it as `declared`) or never\n * materialized (e.g. a store-sourced `mcp-server`, #462), a locked asset whose library is\n * gone or whose deployed copy or files are missing, a locked library asset whose files\n * changed since the lock (or whose lock hash predates the shared asset hash), and an\n * `agents.<id>.ref` that binds to no agent. `doctor`, `outdated`, `diff` and\n * `install --locked` take their verdict from the same state.\n *\n * @returns Configured {@link Command} ready for `program.addCommand()`.\n * @docLink cli/commands/project#make-check-command\n */\nexport function makeCheckCommand(): Command {\n return new Command(\"check\")\n .description(\"Check for unmet requirements\")\n .option(\"--project-dir <path>\", \"Project directory\", process.cwd())\n .option(\"--global\", \"Check the global install (~/.skaile) instead of the project\")\n .option(\"--harness <ids>\", \"With --global: only these harnesses (comma-separated)\")\n .action(async (opts) => {\n if (opts.global || opts.harness) {\n const problems = globalProblems(globalManager({ ...opts, global: true }));\n if (problems.length === 0) {\n logOk(\"All global dependencies satisfied.\");\n return;\n }\n for (const line of problems) logErr(line);\n process.exit(1);\n }\n requireProjectConfig(opts.projectDir);\n const am = new AssetManager({\n registry: getKindRegistry(),\n projectDir: path.resolve(opts.projectDir),\n });\n const { gaps } = await am.projectState();\n const edited = await editedConventionFiles(path.resolve(opts.projectDir));\n if (gaps.length === 0 && edited.length === 0) {\n logOk(\"All dependencies satisfied.\");\n } else {\n for (const g of gaps) logErr(g.message);\n for (const e of edited) logErr(e);\n process.exit(1);\n }\n });\n}\n\n/**\n * One message per convention file (SOUL.md, knowledge/, …) of a bound agent that was edited\n * after `skaile rebuild` pinned it: the compile manifest, not the file, is what the agent\n * runs from, so the edit never reaches it. Instances bound to the same agent directory share\n * the files, so one message names every instance that runs from them. A binding that resolves\n * to no agent is a `projectState` gap, not reported here. Shared by `check` and `doctor`.\n */\nexport async function editedConventionFiles(projectDir: string): Promise<string[]> {\n const instances = effectiveAgentInstances(resolveSkWorkspaceConfig(projectDir));\n const byDir = new Map<string, { ref: string; ids: string[] }>();\n for (const [id, instance] of Object.entries(instances)) {\n let agentDir: string | undefined;\n try {\n agentDir = resolveAgentDefinitionDir(projectDir, instance.ref);\n } catch (err) {\n if (err instanceof AgentRefResolutionError) continue;\n throw err;\n }\n if (!agentDir) continue;\n const bound = byDir.get(agentDir);\n if (bound) bound.ids.push(id);\n else byDir.set(agentDir, { ref: instance.ref, ids: [id] });\n }\n const messages: string[] = [];\n for (const [agentDir, { ref, ids }] of byDir) {\n const drifted = await verifyConventionItems({\n agentDir,\n projectDir,\n registry: getKindRegistry(),\n });\n const label = `${ids.length === 1 ? \"instance\" : \"instances\"} ${ids.join(\", \")}`;\n for (const err of drifted) messages.push(`${ref} (${label}): ${err.message}`);\n }\n return messages;\n}\n\n/**\n * Creates the `skaile clean` command.\n *\n * Removes all skaile-managed assets tracked in `skaile.lock.yaml` from the\n * workspace. With `--all` also removes history, patches, repos, and the lock\n * file itself. Preserves unmanaged (manually placed) assets.\n *\n * @returns Configured {@link Command} ready for `program.addCommand()`.\n * @docLink cli/commands/project#make-clean-command\n */\nexport function makeCleanCommand(): Command {\n return new Command(\"clean\")\n .description(\"Remove all skaile-managed assets from the workspace\")\n .option(\"--all\", \"Full reset: also remove history, patches, repos, and lock file\")\n .option(\"--dry-run\", \"Show what would be removed without doing it\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .option(\"--project-dir <path>\", \"Project directory\", process.cwd())\n .option(\"--target <agent>\", `Agent framework (${TARGET_DEFAULT_HINT})`)\n .option(\"--global\", \"Clean the global install (~/.skaile and every global harness)\")\n .option(\"--harness <ids>\", \"With --global: only these harnesses (comma-separated)\")\n .action(async (opts) => {\n const isGlobal = Boolean(opts.global || opts.harness);\n // A skaile.yaml that does not parse stops `clean` with one `✗` line (p910).\n if (!isGlobal) requireProjectConfig(opts.projectDir, { allowMissing: true });\n const am = isGlobal\n ? globalManager({ ...opts, global: true })\n : new AssetManager({\n registry: getKindRegistry(),\n projectDir: path.resolve(opts.projectDir),\n driverTarget: opts.target as DriverTarget,\n });\n\n // Preview: load lock file to show what will be cleaned\n const lock = readLock(\n isGlobal\n ? path.join(globalSkaileDir(), \"skaile.lock.yaml\")\n : path.resolve(opts.projectDir, \"skaile.lock.yaml\"),\n );\n\n if (!lock || Object.keys(lock.assets).length === 0) {\n logInfo(\"Nothing to clean (no skaile-managed assets found).\");\n return;\n }\n\n const assetRefs = Object.keys(lock.assets);\n console.log();\n console.log(` ${S.heading(\"Assets to remove:\")} ${S.dim(`(${assetRefs.length})`)}`);\n for (const ref of assetRefs) {\n console.log(` ${colorRef(ref)}`);\n }\n\n if (opts.all) {\n console.log();\n console.log(` ${S.heading(\"Also removing:\")}`);\n if (!isGlobal) {\n console.log(` ${S.dim(\".skaile/history.yaml\")}`);\n console.log(` ${S.dim(\".skaile/patches/\")}`);\n }\n console.log(` ${S.dim(isGlobal ? \"~/.skaile/skaile.lock.yaml\" : \"skaile.lock.yaml\")}`);\n }\n\n if (opts.dryRun) {\n console.log();\n logInfo(\"Dry run — no changes made.\");\n return;\n }\n\n if (!opts.yes) {\n const confirm = await p.confirm({ message: \"Proceed?\" });\n if (p.isCancel(confirm) || !confirm) {\n logInfo(\"Cancelled.\");\n return;\n }\n }\n\n const result = am.clean({ all: opts.all });\n\n console.log();\n for (const r of result.removed) {\n logOk(`Removed ${r}`);\n }\n for (const s of result.skipped) {\n logWarn(`Skipped ${s.ref}: ${s.reason}`);\n }\n if (result.unmanaged.length > 0) {\n console.log();\n logInfo(`Kept ${result.unmanaged.length} unmanaged asset(s):`);\n for (const u of result.unmanaged) {\n console.log(` ${S.dim(u)}`);\n }\n }\n if (opts.all) {\n console.log();\n logOk(\"Full reset complete.\");\n }\n });\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseFlowDefinition } from './chunk-X3RMRJNR.js';
|
|
2
2
|
import { isAgentNode, isSubpromptNode, isSubFlowNode, nodeBindings, isRouterNode, nodeIsOptional, nodeSkillId, nodeLabel, isActiveRuntimeNode } from './chunk-7RGTAEG6.js';
|
|
3
3
|
import { resolveFlowBindings, stableFlowJson, evaluateFlowExpression, FlowExpressionError, getConsumedOutputSchema, compileOutputFieldsSchema } from './chunk-NUELZWCF.js';
|
|
4
|
-
import { aiResourceRoots } from './chunk-
|
|
4
|
+
import { aiResourceRoots } from './chunk-PIC23DDE.js';
|
|
5
5
|
import { findKindDirs } from './chunk-A2ULN3KX.js';
|
|
6
6
|
import * as path2 from 'path';
|
|
7
7
|
import path2__default from 'path';
|
|
@@ -979,5 +979,5 @@ function findFlowFileInRoots(flowId, roots, opts = {}) {
|
|
|
979
979
|
}
|
|
980
980
|
|
|
981
981
|
export { FLOW_FILE_EXTENSIONS, FlowManifestSchema, appendAttempt, availableRouterFrontier, buildFlowExpressionContext, computeFlowState, computeFlowStateFromSnapshots, computeSkippable, countFailedAttempts, deriveCheckEvidence, evaluateRouterSelection, findFlowFileInRoots, flowFileCandidates, flowKindProvider, flowLookupRoots, hasAutomaticRetryBudget, interpolateNodeInstruction, isActiveExecutionExpired, isBlocking, loadAllFlowEntries, loadAllFlows, loadFlow, loadFlowEntriesFromDir, loadFlowsFromDir, nextAttemptNumber, persistedRouterSelection, planRouterSkips, producerOutputObtainedBy, projectAiAssetsRoots, remainingActiveExecutionMs, resolveAvailableRouter, resolveFlowOutputFields, resolveNextNodes, resolveNodeBindings, resolveTerminalFailureStatus, routerSelectionOutput, unsettledRouterBranchIds, validateConsumedNodeOutput, validateFlow };
|
|
982
|
-
//# sourceMappingURL=chunk-
|
|
983
|
-
//# sourceMappingURL=chunk-
|
|
982
|
+
//# sourceMappingURL=chunk-SPV2CXJ3.js.map
|
|
983
|
+
//# sourceMappingURL=chunk-SPV2CXJ3.js.map
|