@skaile/workspaces 5.17.0 → 5.18.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 +31 -0
- package/dist/{asset-feeds-MALYFZUM.js → asset-feeds-WAKBHGEV.js} +21 -21
- package/dist/{asset-feeds-MALYFZUM.js.map → asset-feeds-WAKBHGEV.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +8 -8
- package/dist/asset-manager/index.js +18 -14
- package/dist/asset-manager/installer.js +10 -10
- package/dist/asset-manager/renderers.js +9 -9
- package/dist/asset-manager/src/index.d.ts +122 -5
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +13 -10
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/mcp-config.d.ts +61 -1
- package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +12 -12
- package/dist/bridge/drivers/codex.js +12 -12
- package/dist/bridge/drivers/continue.js +11 -11
- package/dist/bridge/drivers/echo.js +2 -2
- package/dist/bridge/drivers/gemini.js +7 -7
- package/dist/bridge/drivers/goose.js +11 -11
- package/dist/bridge/drivers/omp.js +31 -5
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +11 -11
- package/dist/bridge/drivers/qwen.js +7 -7
- package/dist/bridge/index.js +14 -14
- package/dist/bridge/src/driver-model-check.d.ts +8 -8
- package/dist/bridge/src/driver-model-check.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts +5 -0
- 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 +1 -1
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/{chunk-KZWZRNIY.js → chunk-24AXETE3.js} +55 -17
- package/dist/chunk-24AXETE3.js.map +1 -0
- package/dist/{chunk-ZVZTCDUN.js → chunk-2NOLF7B2.js} +37 -9
- package/dist/chunk-2NOLF7B2.js.map +1 -0
- package/dist/{chunk-3OYOBTY4.js → chunk-3KMREAR2.js} +3 -3
- package/dist/{chunk-3OYOBTY4.js.map → chunk-3KMREAR2.js.map} +1 -1
- package/dist/{chunk-D54T2F54.js → chunk-5TBFN46Z.js} +4 -4
- package/dist/chunk-5TBFN46Z.js.map +1 -0
- package/dist/{chunk-5SWED2LW.js → chunk-6HK6RUFM.js} +3 -3
- package/dist/{chunk-5SWED2LW.js.map → chunk-6HK6RUFM.js.map} +1 -1
- package/dist/{chunk-PGZDSDOB.js → chunk-6Z5KTFJT.js} +3 -3
- package/dist/{chunk-PGZDSDOB.js.map → chunk-6Z5KTFJT.js.map} +1 -1
- package/dist/{chunk-46IRZJV4.js → chunk-CD7SVH6W.js} +4 -4
- package/dist/{chunk-46IRZJV4.js.map → chunk-CD7SVH6W.js.map} +1 -1
- package/dist/{chunk-WKEBNB5S.js → chunk-CKBCX3HQ.js} +4 -4
- package/dist/{chunk-WKEBNB5S.js.map → chunk-CKBCX3HQ.js.map} +1 -1
- package/dist/{chunk-H7R7R5BN.js → chunk-CKICWXMU.js} +18 -15
- package/dist/chunk-CKICWXMU.js.map +1 -0
- package/dist/{chunk-YK3XLEQJ.js → chunk-CKNIYIV2.js} +83 -77
- package/dist/chunk-CKNIYIV2.js.map +1 -0
- package/dist/{chunk-SPV2CXJ3.js → chunk-D6UBEYQH.js} +4 -4
- package/dist/{chunk-SPV2CXJ3.js.map → chunk-D6UBEYQH.js.map} +1 -1
- package/dist/{chunk-OXUCYHL5.js → chunk-DA2MCPFN.js} +53 -16
- package/dist/chunk-DA2MCPFN.js.map +1 -0
- package/dist/{chunk-QBY74UBH.js → chunk-DJD36HC5.js} +7 -7
- package/dist/{chunk-QBY74UBH.js.map → chunk-DJD36HC5.js.map} +1 -1
- package/dist/{chunk-EYDRONKO.js → chunk-E5YNGE3I.js} +4 -4
- package/dist/{chunk-EYDRONKO.js.map → chunk-E5YNGE3I.js.map} +1 -1
- package/dist/{chunk-V5CDPKDA.js → chunk-EELKR2WP.js} +44 -27
- package/dist/chunk-EELKR2WP.js.map +1 -0
- package/dist/{chunk-BVXXBZWA.js → chunk-EZVZDCHZ.js} +24 -15
- package/dist/chunk-EZVZDCHZ.js.map +1 -0
- package/dist/{chunk-WY22FMZF.js → chunk-FHIMIXT3.js} +5 -5
- package/dist/{chunk-WY22FMZF.js.map → chunk-FHIMIXT3.js.map} +1 -1
- package/dist/{chunk-D5REDKVU.js → chunk-FKU57Q5Q.js} +3 -3
- package/dist/{chunk-D5REDKVU.js.map → chunk-FKU57Q5Q.js.map} +1 -1
- package/dist/{chunk-OQN7PCI4.js → chunk-FV2MSBVA.js} +4 -4
- package/dist/{chunk-OQN7PCI4.js.map → chunk-FV2MSBVA.js.map} +1 -1
- package/dist/{chunk-YW2BNDSE.js → chunk-GOCWM7FN.js} +22 -4
- package/dist/chunk-GOCWM7FN.js.map +1 -0
- package/dist/{chunk-GYZJKZPJ.js → chunk-GRKU3S5V.js} +3 -3
- package/dist/{chunk-GYZJKZPJ.js.map → chunk-GRKU3S5V.js.map} +1 -1
- package/dist/{chunk-AP24HESN.js → chunk-H6UVIKQ2.js} +3 -3
- package/dist/{chunk-AP24HESN.js.map → chunk-H6UVIKQ2.js.map} +1 -1
- package/dist/{chunk-ES6ARJPQ.js → chunk-HPVMTX6M.js} +15 -10
- package/dist/chunk-HPVMTX6M.js.map +1 -0
- package/dist/{chunk-MMARPEV7.js → chunk-JJ7LDI3S.js} +6 -6
- package/dist/{chunk-MMARPEV7.js.map → chunk-JJ7LDI3S.js.map} +1 -1
- package/dist/{chunk-DR5ZOEYI.js → chunk-JY7GVNYU.js} +32 -18
- package/dist/chunk-JY7GVNYU.js.map +1 -0
- package/dist/{chunk-HUKUYWBJ.js → chunk-JYWW32JI.js} +17 -6
- package/dist/chunk-JYWW32JI.js.map +1 -0
- package/dist/{chunk-QEX75L77.js → chunk-K5LVU2MN.js} +13 -7
- package/dist/chunk-K5LVU2MN.js.map +1 -0
- package/dist/{chunk-5RDZ5JHH.js → chunk-KC6HGWXN.js} +4 -4
- package/dist/{chunk-5RDZ5JHH.js.map → chunk-KC6HGWXN.js.map} +1 -1
- package/dist/{chunk-ZPCABSSW.js → chunk-L5XUEC2W.js} +4 -4
- package/dist/{chunk-ZPCABSSW.js.map → chunk-L5XUEC2W.js.map} +1 -1
- package/dist/{chunk-QW534EZB.js → chunk-L6IFN6ER.js} +53 -8
- package/dist/chunk-L6IFN6ER.js.map +1 -0
- package/dist/{chunk-L6UMSKDF.js → chunk-LW7ZI6EQ.js} +8 -36
- package/dist/chunk-LW7ZI6EQ.js.map +1 -0
- package/dist/{chunk-QXA2W6UB.js → chunk-MQIRRN76.js} +3 -3
- package/dist/{chunk-QXA2W6UB.js.map → chunk-MQIRRN76.js.map} +1 -1
- package/dist/{chunk-CWAWYXD5.js → chunk-N5P2WBUL.js} +3 -3
- package/dist/{chunk-CWAWYXD5.js.map → chunk-N5P2WBUL.js.map} +1 -1
- package/dist/{chunk-BBRMS4IC.js → chunk-ODDATIII.js} +8 -8
- package/dist/{chunk-BBRMS4IC.js.map → chunk-ODDATIII.js.map} +1 -1
- package/dist/{chunk-WXWQNJCT.js → chunk-PUK7TQT4.js} +3 -3
- package/dist/{chunk-WXWQNJCT.js.map → chunk-PUK7TQT4.js.map} +1 -1
- package/dist/{chunk-ZWUJ22RF.js → chunk-PZ6NF5DE.js} +16 -23
- package/dist/chunk-PZ6NF5DE.js.map +1 -0
- package/dist/{chunk-5DCOG5B5.js → chunk-RD6N2D7I.js} +3 -3
- package/dist/{chunk-5DCOG5B5.js.map → chunk-RD6N2D7I.js.map} +1 -1
- package/dist/{chunk-HLETG3CX.js → chunk-RO2BPKXK.js} +3 -3
- package/dist/{chunk-HLETG3CX.js.map → chunk-RO2BPKXK.js.map} +1 -1
- package/dist/{chunk-6GSE63K2.js → chunk-SRNCN4X2.js} +13 -5
- package/dist/chunk-SRNCN4X2.js.map +1 -0
- package/dist/{chunk-PIC23DDE.js → chunk-T2TQAH2X.js} +42 -11
- package/dist/chunk-T2TQAH2X.js.map +1 -0
- package/dist/{chunk-W44KA24A.js → chunk-TDQ2ERCM.js} +695 -96
- package/dist/chunk-TDQ2ERCM.js.map +1 -0
- package/dist/{chunk-SXWGLW23.js → chunk-U2FI547Z.js} +4 -4
- package/dist/{chunk-SXWGLW23.js.map → chunk-U2FI547Z.js.map} +1 -1
- package/dist/{chunk-EOKWTN4N.js → chunk-V4RV2NJF.js} +44 -29
- package/dist/chunk-V4RV2NJF.js.map +1 -0
- package/dist/{chunk-D3PU3C6F.js → chunk-VKPBUPH7.js} +41 -15
- package/dist/chunk-VKPBUPH7.js.map +1 -0
- package/dist/{chunk-FT4ZHLYR.js → chunk-WDXZA7QW.js} +33 -3
- package/dist/chunk-WDXZA7QW.js.map +1 -0
- package/dist/{chunk-FSSRBWYL.js → chunk-WJCQFNF6.js} +4 -4
- package/dist/chunk-WJCQFNF6.js.map +1 -0
- package/dist/{chunk-2SKPPIV7.js → chunk-WJLYL6RY.js} +5 -5
- package/dist/{chunk-2SKPPIV7.js.map → chunk-WJLYL6RY.js.map} +1 -1
- package/dist/{chunk-LQT2IKYY.js → chunk-X54YR4AW.js} +2 -2
- package/dist/{chunk-LQT2IKYY.js.map → chunk-X54YR4AW.js.map} +1 -1
- package/dist/{chunk-QSLXB44M.js → chunk-YU6AURJY.js} +3 -3
- package/dist/{chunk-QSLXB44M.js.map → chunk-YU6AURJY.js.map} +1 -1
- package/dist/{chunk-FSLVMZXR.js → chunk-YZ3N7IUU.js} +72 -31
- package/dist/chunk-YZ3N7IUU.js.map +1 -0
- package/dist/{chunk-FACRITOL.js → chunk-ZNN7ONJX.js} +8 -4
- package/dist/chunk-ZNN7ONJX.js.map +1 -0
- package/dist/cli/index.js +346 -147
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/asset-cmd.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-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/codex.d.ts +6 -0
- package/dist/cli/src/commands/plugin/codex.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts +5 -0
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -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/driver-error.d.ts +3 -1
- package/dist/cli/src/driver-error.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +6 -4
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +6 -0
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +4 -3
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +20 -20
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-types.d.ts +5 -0
- package/dist/connectors/src/connector-types.d.ts.map +1 -1
- package/dist/connectors/src/watcher.d.ts.map +1 -1
- package/dist/{connectors-CIEIMJY2.js → connectors-QL4GBMH3.js} +23 -23
- package/dist/{connectors-CIEIMJY2.js.map → connectors-QL4GBMH3.js.map} +1 -1
- package/dist/core/index.js +7 -7
- 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/bind.d.ts +30 -0
- package/dist/core/src/bind.d.ts.map +1 -0
- package/dist/core/src/index.d.ts +4 -3
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +11 -2
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +19 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +15 -13
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/store.d.ts +2 -1
- package/dist/core/src/store.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +26 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/store.js +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +7 -7
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/parse-manifest.d.ts +1 -1
- package/dist/discovery/src/source-config.d.ts +2 -1
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/{ensure-sources-I62QMZZP.js → ensure-sources-CEFODJCE.js} +21 -17
- package/dist/ensure-sources-CEFODJCE.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +20 -20
- package/dist/factory-assets/connectors/deploy.js +20 -20
- package/dist/factory-assets/connectors/devserver.js +20 -20
- package/dist/factory-assets/connectors/flow/adapter.js +20 -20
- package/dist/factory-assets/connectors/flow/engine.js +9 -9
- package/dist/factory-assets/connectors/flow/run-flow.js +22 -22
- package/dist/factory-assets/connectors/flow.js +20 -20
- package/dist/factory-assets/connectors/git.js +20 -20
- package/dist/factory-assets/connectors/gmail.js +20 -20
- package/dist/factory-assets/connectors/googledrive.js +20 -20
- package/dist/factory-assets/connectors/local.js +20 -20
- package/dist/factory-assets/connectors/mattermost.js +20 -20
- package/dist/factory-assets/connectors/memory.js +20 -20
- package/dist/factory-assets/connectors/minio.js +20 -20
- package/dist/factory-assets/connectors/postgres.js +20 -20
- package/dist/factory-assets/connectors/s3.js +20 -20
- package/dist/factory-assets/connectors/sharepoint.js +20 -20
- package/dist/factory-assets/connectors/sqlite.js +20 -20
- package/dist/factory-assets/connectors/static-server.js +20 -20
- package/dist/factory-assets/connectors/tunnel.js +20 -20
- package/dist/factory-assets/connectors/webdav.js +20 -20
- package/dist/factory-assets/connectors/xstate-store/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/xstate-store.js +20 -20
- package/dist/factory-assets/connectors/xstate.js +20 -20
- package/dist/{flows-YKC53LDP.js → flows-BHY73K3O.js} +12 -12
- package/dist/{flows-YKC53LDP.js.map → flows-BHY73K3O.js.map} +1 -1
- package/dist/{helpers-3FOM37BO.js → helpers-R22QNPFN.js} +21 -17
- package/dist/{helpers-3FOM37BO.js.map → helpers-R22QNPFN.js.map} +1 -1
- package/dist/library/index.js +11 -11
- 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/manifest-writer.d.ts +17 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/{library-publish-EFKITCGE.js → library-publish-VBE3X2TH.js} +60 -63
- package/dist/library-publish-VBE3X2TH.js.map +1 -0
- package/dist/model-endpoint/index.js +10 -10
- package/dist/model-endpoint/src/server.d.ts.map +1 -1
- package/dist/open-library-JP5TC5UX.js +42 -0
- package/dist/{open-library-NZUI4XGF.js.map → open-library-JP5TC5UX.js.map} +1 -1
- package/dist/open-registry-RBELV5YH.js +32 -0
- package/dist/{open-registry-YPRQDUMK.js.map → open-registry-RBELV5YH.js.map} +1 -1
- package/dist/paths-BFM6K2QO.js +22 -0
- package/dist/{paths-P55DTBEK.js.map → paths-BFM6K2QO.js.map} +1 -1
- package/dist/plugin-store-QOQDM24E.js +23 -0
- package/dist/{plugin-store-IPIBZRBX.js.map → plugin-store-QOQDM24E.js.map} +1 -1
- package/dist/{project-2BNFZ2CR.js → project-6ETXGQWD.js} +45 -45
- package/dist/{project-2BNFZ2CR.js.map → project-6ETXGQWD.js.map} +1 -1
- package/dist/resolver/index.js +8 -8
- package/dist/runner/index.js +37 -37
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +18 -14
- package/dist/sdk/bridge.js +14 -14
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +37 -37
- package/dist/sdk/resolver.js +8 -8
- package/dist/sdk/runner.js +37 -37
- package/dist/sdk/transport/ws/server.js +19 -1
- package/dist/sdk/transport/ws.js +19 -1
- package/dist/sdk/transport.js +19 -1
- package/dist/{serve-preflight-V5GM33T3.js → serve-preflight-BTGTZUDN.js} +9 -9
- package/dist/{serve-preflight-V5GM33T3.js.map → serve-preflight-BTGTZUDN.js.map} +1 -1
- package/dist/{setup-ZMAPTKJW.js → setup-JQDTYPSD.js} +28 -24
- package/dist/setup-JQDTYPSD.js.map +1 -0
- package/dist/{skills-7G6QCDEM.js → skills-RSZVUIYZ.js} +13 -13
- package/dist/{skills-7G6QCDEM.js.map → skills-RSZVUIYZ.js.map} +1 -1
- package/dist/{source-6BZA34F5.js → source-FPLHY3DP.js} +47 -47
- package/dist/{source-6BZA34F5.js.map → source-FPLHY3DP.js.map} +1 -1
- package/dist/{source-manifest-publish-MJXCSUKT.js → source-manifest-publish-LY4H63VA.js} +49 -49
- package/dist/{source-manifest-publish-MJXCSUKT.js.map → source-manifest-publish-LY4H63VA.js.map} +1 -1
- package/dist/transport/index.js +19 -1
- package/dist/transport/src/ws/server.d.ts +2 -16
- package/dist/transport/src/ws/server.d.ts.map +1 -1
- package/dist/transport/ws/server.js +19 -1
- package/dist/transport/ws.js +19 -1
- package/dist/tui/index.js +54 -42
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl.d.ts +4 -1
- 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 -1
- 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 -1
- package/dist/types/src/manifests/skill.d.ts +0 -2
- package/dist/types/src/manifests/skill.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +27 -27
- package/dist/workspace-plugin/adapters/omp.js +32 -18
- package/dist/workspace-plugin/adapters/omp.js.map +1 -1
- package/dist/workspace-plugin/index.js +1 -1
- package/dist/workspace-plugin/src/adapters/claude-code.d.ts +1 -1
- package/dist/workspace-plugin/src/adapters/omp.d.ts +8 -5
- package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
- package/dist/workspace-plugin/src/plugin.d.ts +7 -1
- package/dist/workspace-plugin/src/plugin.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-6GSE63K2.js.map +0 -1
- package/dist/chunk-BVXXBZWA.js.map +0 -1
- package/dist/chunk-D3PU3C6F.js.map +0 -1
- package/dist/chunk-D54T2F54.js.map +0 -1
- package/dist/chunk-DR5ZOEYI.js.map +0 -1
- package/dist/chunk-EOKWTN4N.js.map +0 -1
- package/dist/chunk-ES6ARJPQ.js.map +0 -1
- package/dist/chunk-FACRITOL.js.map +0 -1
- package/dist/chunk-FSLVMZXR.js.map +0 -1
- package/dist/chunk-FSSRBWYL.js.map +0 -1
- package/dist/chunk-FT4ZHLYR.js.map +0 -1
- package/dist/chunk-H7R7R5BN.js.map +0 -1
- package/dist/chunk-HUKUYWBJ.js.map +0 -1
- package/dist/chunk-KZWZRNIY.js.map +0 -1
- package/dist/chunk-L6UMSKDF.js.map +0 -1
- package/dist/chunk-OXUCYHL5.js.map +0 -1
- package/dist/chunk-PIC23DDE.js.map +0 -1
- package/dist/chunk-QEX75L77.js.map +0 -1
- package/dist/chunk-QW534EZB.js.map +0 -1
- package/dist/chunk-V5CDPKDA.js.map +0 -1
- package/dist/chunk-W44KA24A.js.map +0 -1
- package/dist/chunk-YK3XLEQJ.js.map +0 -1
- package/dist/chunk-YW2BNDSE.js.map +0 -1
- package/dist/chunk-ZVZTCDUN.js.map +0 -1
- package/dist/chunk-ZWUJ22RF.js.map +0 -1
- package/dist/ensure-sources-I62QMZZP.js.map +0 -1
- package/dist/library-publish-EFKITCGE.js.map +0 -1
- package/dist/open-library-NZUI4XGF.js +0 -40
- package/dist/open-registry-YPRQDUMK.js +0 -32
- package/dist/paths-P55DTBEK.js +0 -22
- package/dist/plugin-store-IPIBZRBX.js +0 -23
- package/dist/setup-ZMAPTKJW.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,89 +1,89 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { storeNotInstallableReason } from '../chunk-
|
|
3
|
-
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-
|
|
4
|
-
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, globalProblems, editedConventionFiles, supportsInstallManifest, REF_HINT, reportInstalledSoftDeps } from '../chunk-
|
|
2
|
+
import { storeNotInstallableReason } from '../chunk-PUK7TQT4.js';
|
|
3
|
+
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-FHIMIXT3.js';
|
|
4
|
+
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, globalProblems, editedConventionFiles, supportsInstallManifest, REF_HINT, reportInstalledSoftDeps } from '../chunk-EZVZDCHZ.js';
|
|
5
5
|
import { createSpinner } from '../chunk-NESV47MF.js';
|
|
6
|
-
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-
|
|
7
|
-
import { loadDeclaredPlugins } from '../chunk-
|
|
8
|
-
import { makeValidateCommand, scanIdentities, isRecord } from '../chunk-
|
|
9
|
-
import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-
|
|
10
|
-
import { deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, exitOnLibrarySymlinks, resolveLibraryPublisherDetailed, getStoreIdentity, warnLibraryNameFallback, indexLibrary, warnIgnoredDomainFiles, removedDomainOption, rejectRemovedDomainOption, requireValidPublisherOrExit, exitOnManifestPublisherProblems, registerLibraryAsset, DOMAIN_REMOVED_HINT, reportLibrarySymlinks, checkAsset, manifestPublisherProblems, exitOnManifestRootProblems, manifestRequiresProblems, composeRefContext, registeredAssetKeys, checkAssetFile, assetEntryRef, duplicateAssetMessage, unresolvedManifestDependencies, warnLegacyBundleFiles, checkComposeKinds } from '../chunk-
|
|
11
|
-
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-
|
|
12
|
-
import { AI_RESOURCES } from '../chunk-
|
|
13
|
-
import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, parseHarnessFilter, requireProjectConfig, deferredWarnings, warnPlaceholderBodies, warnFilesOnlyDelegates, reportLegacyOmpCopies, logNoProject, warnLegacyClaudeCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-
|
|
14
|
-
import { getKindRegistry, getKnownKinds } from '../chunk-
|
|
6
|
+
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-JY7GVNYU.js';
|
|
7
|
+
import { loadDeclaredPlugins } from '../chunk-JYWW32JI.js';
|
|
8
|
+
import { makeValidateCommand, scanIdentities, isRecord } from '../chunk-24AXETE3.js';
|
|
9
|
+
import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-E5YNGE3I.js';
|
|
10
|
+
import { deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, exitOnLibrarySymlinks, resolveLibraryPublisherDetailed, getStoreIdentity, warnLibraryNameFallback, indexLibrary, warnIgnoredDomainFiles, removedDomainOption, rejectRemovedDomainOption, requireValidPublisherOrExit, exitOnManifestPublisherProblems, registerLibraryAsset, DOMAIN_REMOVED_HINT, reportLibrarySymlinks, checkAsset, manifestPublisherProblems, exitOnManifestRootProblems, manifestRequiresProblems, composeRefContext, registeredAssetKeys, checkAssetFile, assetEntryRef, duplicateAssetMessage, unresolvedManifestDependencies, warnLegacyBundleFiles, checkComposeKinds } from '../chunk-DA2MCPFN.js';
|
|
11
|
+
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-FV2MSBVA.js';
|
|
12
|
+
import { AI_RESOURCES } from '../chunk-CKBCX3HQ.js';
|
|
13
|
+
import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, parseHarnessFilter, requireProjectConfig, deferredWarnings, warnPlaceholderBodies, warnFilesOnlyDelegates, reportLegacyOmpCopies, logNoProject, warnLegacyClaudeCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-K5LVU2MN.js';
|
|
14
|
+
import { getKindRegistry, getKnownKinds } from '../chunk-WJLYL6RY.js';
|
|
15
15
|
import { LocalSecretsProvider } from '../chunk-ILFGVSTJ.js';
|
|
16
|
-
import { resolveInstanceAgentDir, instanceSessionOverrides, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, manifestModelForDriver, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer, createFinalTextFallback } from '../chunk-
|
|
17
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
18
|
-
import '../chunk-
|
|
19
|
-
import '../chunk-
|
|
20
|
-
import '../chunk-
|
|
16
|
+
import { resolveInstanceAgentDir, instanceSessionOverrides, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, manifestModelForDriver, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer, createFinalTextFallback } from '../chunk-V4RV2NJF.js';
|
|
17
|
+
import { buildClaudePluginFiles } from '../chunk-ZNN7ONJX.js';
|
|
18
|
+
import '../chunk-JJ7LDI3S.js';
|
|
19
|
+
import '../chunk-RO2BPKXK.js';
|
|
20
|
+
import '../chunk-RD6N2D7I.js';
|
|
21
21
|
import '../chunk-R6O6YWU7.js';
|
|
22
|
-
import '../chunk-
|
|
23
|
-
import '../chunk-
|
|
22
|
+
import '../chunk-CD7SVH6W.js';
|
|
23
|
+
import '../chunk-6Z5KTFJT.js';
|
|
24
24
|
import '../chunk-4ZTPYIBE.js';
|
|
25
25
|
import '../chunk-X5YPJV4N.js';
|
|
26
|
-
import '../chunk-
|
|
26
|
+
import '../chunk-PZ6NF5DE.js';
|
|
27
27
|
import '../chunk-O7SG5PC2.js';
|
|
28
28
|
import '../chunk-7QBNJTTQ.js';
|
|
29
29
|
import '../chunk-O2SYFJWP.js';
|
|
30
|
-
import '../chunk-
|
|
30
|
+
import '../chunk-LW7ZI6EQ.js';
|
|
31
31
|
import '../chunk-32NA4TVC.js';
|
|
32
32
|
import '../chunk-W3UDISS2.js';
|
|
33
33
|
import '../chunk-PHRNUTSG.js';
|
|
34
|
-
import '../chunk-
|
|
35
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
34
|
+
import '../chunk-GRKU3S5V.js';
|
|
35
|
+
import { runFlow, resumeFlow } from '../chunk-ODDATIII.js';
|
|
36
36
|
import '../chunk-4R6DROGN.js';
|
|
37
|
-
import { parseSkillRequirements, validateRequirements } from '../chunk-
|
|
38
|
-
import '../chunk-
|
|
39
|
-
import '../chunk-
|
|
40
|
-
import '../chunk-V5CDPKDA.js';
|
|
37
|
+
import { parseSkillRequirements, validateRequirements } from '../chunk-FKU57Q5Q.js';
|
|
38
|
+
import '../chunk-H6UVIKQ2.js';
|
|
39
|
+
import '../chunk-EELKR2WP.js';
|
|
41
40
|
import '../chunk-YIF2IJUA.js';
|
|
42
|
-
import '../chunk-
|
|
43
|
-
import { checkDriverModel } from '../chunk-
|
|
44
|
-
import '../chunk-
|
|
45
|
-
import '../chunk-
|
|
41
|
+
import '../chunk-WJCQFNF6.js';
|
|
42
|
+
import { checkModelProvider, checkDriverModel } from '../chunk-L6IFN6ER.js';
|
|
43
|
+
import '../chunk-3KMREAR2.js';
|
|
44
|
+
import '../chunk-6HK6RUFM.js';
|
|
46
45
|
import '../chunk-LOO5CB5M.js';
|
|
47
46
|
import '../chunk-AJ7EGIFR.js';
|
|
48
|
-
import '../chunk-
|
|
47
|
+
import '../chunk-L5XUEC2W.js';
|
|
49
48
|
import '../chunk-B4X2N7JQ.js';
|
|
50
49
|
import '../chunk-YROR332M.js';
|
|
51
|
-
import '../chunk-
|
|
52
|
-
import { listDrivers, getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-
|
|
50
|
+
import '../chunk-YU6AURJY.js';
|
|
51
|
+
import { listDrivers, getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-X54YR4AW.js';
|
|
53
52
|
import '../chunk-6E6PKKAD.js';
|
|
54
53
|
import '../chunk-IFGTRL2I.js';
|
|
55
|
-
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-
|
|
56
|
-
import '../chunk-LNFKL23K.js';
|
|
57
|
-
import '../chunk-X3RMRJNR.js';
|
|
54
|
+
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-D6UBEYQH.js';
|
|
58
55
|
import '../chunk-M3WPBTGJ.js';
|
|
59
56
|
import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind } from '../chunk-7RGTAEG6.js';
|
|
60
|
-
import '../chunk-NUELZWCF.js';
|
|
61
57
|
import '../chunk-Y56YIT6J.js';
|
|
62
|
-
import { AssetManager, parseRefTolerant, MissingManifestError, normalizeRepoUrl, FACTORY_SOURCE_URL, parseCanonicalLockKey } from '../chunk-
|
|
63
|
-
import { CatalogHttpError, libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, isGitRepo, ensureGitRepo, conflictingAssetRoot, setManifestPublisher, LIBRARY_OWNERSHIPS, assertManifestEditable, installLibraryAsset, getStoreManifestsDir, assertValidLibraryName, syncManifestWithDisk, storeManifestFile, getDefaultValue, isSecretPlaceholder } from '../chunk-
|
|
64
|
-
import { flowFileNameError, SEMVER_RE } from '../chunk-
|
|
65
|
-
import '../chunk-
|
|
58
|
+
import { LibraryEntryError, AssetManager, parseRefTolerant, MissingManifestError, normalizeRepoUrl, FACTORY_SOURCE_URL, parseCanonicalLockKey } from '../chunk-TDQ2ERCM.js';
|
|
59
|
+
import { CatalogHttpError, libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, isGitRepo, ensureGitRepo, conflictingAssetRoot, setManifestPublisher, LIBRARY_OWNERSHIPS, assertManifestEditable, installLibraryAsset, getStoreManifestsDir, assertValidLibraryName, unparsableAssetFiles, syncManifestWithDisk, storeManifestFile, getDefaultValue, isSecretPlaceholder } from '../chunk-VKPBUPH7.js';
|
|
60
|
+
import { flowFileNameError, SEMVER_RE } from '../chunk-HPVMTX6M.js';
|
|
61
|
+
import '../chunk-U2FI547Z.js';
|
|
66
62
|
import '../chunk-BFMYYNDT.js';
|
|
67
63
|
import '../chunk-3TXEJN4W.js';
|
|
68
|
-
import
|
|
64
|
+
import '../chunk-ISHJITXJ.js';
|
|
65
|
+
import '../chunk-LNFKL23K.js';
|
|
66
|
+
import '../chunk-X3RMRJNR.js';
|
|
67
|
+
import '../chunk-NUELZWCF.js';
|
|
68
|
+
import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-YZ3N7IUU.js';
|
|
69
69
|
import '../chunk-NOA6EJXE.js';
|
|
70
70
|
import '../chunk-KTBKW2FI.js';
|
|
71
71
|
import '../chunk-UQ6LFBPZ.js';
|
|
72
|
-
import '../chunk-
|
|
73
|
-
import { effectiveComposes, validatePreset, validateAgent, composeSlotDiagnostics, agentDeprecationDiagnostics, SLOT_ID_PATTERN } from '../chunk-
|
|
74
|
-
import { loadSettings, globalSettingsPath, resolveSettings, projectSettingsPath, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, resolveSettingsWithSources, readLock, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, aiResourceRoots, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile } from '../chunk-
|
|
72
|
+
import '../chunk-SRNCN4X2.js';
|
|
73
|
+
import { effectiveComposes, validatePreset, validateAgent, composeSlotDiagnostics, agentDeprecationDiagnostics, SLOT_ID_PATTERN } from '../chunk-CKNIYIV2.js';
|
|
74
|
+
import { loadSettings, globalSettingsPath, resolveSettings, projectSettingsPath, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, resolveSettingsWithSources, readLock, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, aiResourceRoots, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile } from '../chunk-T2TQAH2X.js';
|
|
75
75
|
import '../chunk-4GY63JU6.js';
|
|
76
|
-
import { factoryAssetRoots } from '../chunk-
|
|
77
|
-
import { deployedDir } from '../chunk-
|
|
76
|
+
import { factoryAssetRoots } from '../chunk-KC6HGWXN.js';
|
|
77
|
+
import { deployedDir } from '../chunk-5TBFN46Z.js';
|
|
78
78
|
import { DEFAULT_DRIVER_ID, DRIVER_DEFAULTS } from '../chunk-5BEFNLOR.js';
|
|
79
79
|
import { findKindDirs } from '../chunk-A2ULN3KX.js';
|
|
80
|
-
import { SourceEntryError, resolveSkWorkspaceConfig, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, isWorkspaceConfigFilename } from '../chunk-
|
|
80
|
+
import { SourceEntryError, resolveSkWorkspaceConfig, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, isWorkspaceConfigFilename } from '../chunk-2NOLF7B2.js';
|
|
81
81
|
import { globalCacheRoot, globalSkaileDir, userConfigPath } from '../chunk-L5VSIPQD.js';
|
|
82
|
-
import { SUPPORTED_DRIVER_TARGETS, driverTargetForDriver } from '../chunk-IG5LZ3WU.js';
|
|
83
|
-
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-
|
|
82
|
+
import { DRIVER_TARGETS, SUPPORTED_DRIVER_TARGETS, driverTargetForDriver } from '../chunk-IG5LZ3WU.js';
|
|
83
|
+
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-CKICWXMU.js';
|
|
84
84
|
import { pluginTitle } from '../chunk-RVRB27AN.js';
|
|
85
|
-
import { dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-
|
|
86
|
-
import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, depToStr, assetRefToStr, slugifyAssetName, parseAssetRefLoose } from '../chunk-
|
|
85
|
+
import { dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-GOCWM7FN.js';
|
|
86
|
+
import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, depToStr, assetRefToStr, slugifyAssetName, parseAssetRefLoose } from '../chunk-WDXZA7QW.js';
|
|
87
87
|
import { portableSpawn, portableSpawnSync } from '../chunk-ICSCSM5D.js';
|
|
88
88
|
import { openSqlite } from '../chunk-DKXNKFKP.js';
|
|
89
89
|
import { parseModelRef, resolveEntryBaseUrl } from '../chunk-MJHSLODD.js';
|
|
@@ -104,9 +104,9 @@ import pc5 from 'picocolors';
|
|
|
104
104
|
import { stringify, parse, parseDocument, isMap, isScalar, isSeq } from 'yaml';
|
|
105
105
|
import * as readline from 'readline';
|
|
106
106
|
import { createInterface } from 'readline';
|
|
107
|
+
import { execSync, spawnSync } from 'child_process';
|
|
107
108
|
import fs5 from 'fs/promises';
|
|
108
109
|
import { parse as parse$1, stringify as stringify$1 } from 'smol-toml';
|
|
109
|
-
import { execSync, spawnSync } from 'child_process';
|
|
110
110
|
import * as readline2 from 'readline/promises';
|
|
111
111
|
import { createTRPCUntypedClient, httpLink, httpSubscriptionLink } from '@trpc/client';
|
|
112
112
|
|
|
@@ -231,7 +231,7 @@ async function runSearch(kind, query, opts) {
|
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
233
|
async function searchIndex(query, kind) {
|
|
234
|
-
const { openLibrary: openLibrary2 } = await import('../open-library-
|
|
234
|
+
const { openLibrary: openLibrary2 } = await import('../open-library-JP5TC5UX.js');
|
|
235
235
|
const library = await openLibrary2();
|
|
236
236
|
try {
|
|
237
237
|
const { libraryDirMissing: libraryDirMissing2 } = await import('../library/index.js');
|
|
@@ -383,14 +383,14 @@ async function expandCompetingOrigins(entries, projectDir) {
|
|
|
383
383
|
}
|
|
384
384
|
async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
385
385
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
386
|
-
const { restoreSourceReaders } = await import('../source-
|
|
386
|
+
const { restoreSourceReaders } = await import('../source-FPLHY3DP.js');
|
|
387
387
|
for (const name of await restoreSourceReaders(projectDir)) {
|
|
388
388
|
logInfo(`Re-registered source "${name}" (its library entry was removed elsewhere).`);
|
|
389
389
|
}
|
|
390
390
|
const factory = await searchFactory(projectDir, query, kind);
|
|
391
391
|
let entries = unionEntries(await searchIndex(query, kind), factory);
|
|
392
392
|
if (entries.length === 0 && !query && !kind && !airGapped) {
|
|
393
|
-
const { autoSyncForSearch } = await import('../source-
|
|
393
|
+
const { autoSyncForSearch } = await import('../source-FPLHY3DP.js');
|
|
394
394
|
if (await autoSyncForSearch(projectDir)) {
|
|
395
395
|
entries = unionEntries(await searchIndex(query, kind), factory);
|
|
396
396
|
}
|
|
@@ -504,7 +504,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
504
504
|
logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
|
|
505
505
|
return;
|
|
506
506
|
}
|
|
507
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
507
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-JP5TC5UX.js');
|
|
508
508
|
try {
|
|
509
509
|
const remote = await openCatalogSource2({ projectDir: path18__default.resolve(opts.projectDir) });
|
|
510
510
|
const assets = await remote.listAssets(kind ? { kind } : {});
|
|
@@ -622,7 +622,7 @@ function makeAddCommand() {
|
|
|
622
622
|
).option("--no-soft-deps", "skip the soft-dep prompt entirely (don't add, don't report)").option(
|
|
623
623
|
"--force",
|
|
624
624
|
"overwrite a deployed folder that no lock entry owns (a hand-made skill of the same name)"
|
|
625
|
-
).action(async (ref, opts) => {
|
|
625
|
+
).option("--verbose", "print the full `exists in N libraries` warning for every asset").action(async (ref, opts) => {
|
|
626
626
|
if (opts.withSoftDeps && opts.softDeps === false) {
|
|
627
627
|
logErr("--with-soft-deps and --no-soft-deps are mutually exclusive.");
|
|
628
628
|
process.exit(1);
|
|
@@ -637,8 +637,9 @@ function makeAddCommand() {
|
|
|
637
637
|
global: opts.global || harnesses !== void 0,
|
|
638
638
|
harnesses,
|
|
639
639
|
driverTarget: opts.target,
|
|
640
|
-
|
|
641
|
-
|
|
640
|
+
verboseCollisions: opts.verbose === true,
|
|
641
|
+
onLibraryCollision: (msg, keys) => {
|
|
642
|
+
collisionKeys.push(...keys ?? [msg.split(" exists in ")[0]]);
|
|
642
643
|
warnings.push(msg);
|
|
643
644
|
}
|
|
644
645
|
});
|
|
@@ -647,30 +648,26 @@ function makeAddCommand() {
|
|
|
647
648
|
try {
|
|
648
649
|
const libraryOf = /* @__PURE__ */ new Map();
|
|
649
650
|
const placeholderBodies = [];
|
|
651
|
+
const placeholderDescriptions = [];
|
|
650
652
|
let presets = [];
|
|
651
|
-
const
|
|
652
|
-
const skippedEnv = /* @__PURE__ */ new Set();
|
|
653
|
+
const skippedSecrets = /* @__PURE__ */ new Set();
|
|
653
654
|
const added = await am2.add(ref, {
|
|
654
655
|
link: opts.link,
|
|
655
656
|
force: opts.force,
|
|
656
657
|
onLibraryOrigin: (deployedRef, library) => libraryOf.set(deployedRef, library),
|
|
657
658
|
onPlaceholderBody: (deployedRef) => placeholderBodies.push(deployedRef),
|
|
659
|
+
onPlaceholderDescription: (deployedRef) => placeholderDescriptions.push(deployedRef),
|
|
658
660
|
onLibraryMoved: (m) => warnings.push(`${m.ref} moved from ${m.from} to ${m.to}`),
|
|
659
661
|
onPresets: (expanded) => {
|
|
660
662
|
presets = expanded;
|
|
661
663
|
},
|
|
662
|
-
//
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
},
|
|
668
|
-
// A `.env` in an asset root is never deployed or hashed: say so once per file.
|
|
669
|
-
onEnvFile: (_assetRef, envPath) => {
|
|
670
|
-
if (skippedEnv.has(envPath)) return;
|
|
671
|
-
skippedEnv.add(envPath);
|
|
664
|
+
// A secret in an asset root (`.env`, a private key, a credential file) is never
|
|
665
|
+
// deployed or hashed: say so once per file.
|
|
666
|
+
onSecretFile: (_assetRef, secretPath) => {
|
|
667
|
+
if (skippedSecrets.has(secretPath)) return;
|
|
668
|
+
skippedSecrets.add(secretPath);
|
|
672
669
|
warnings.push(
|
|
673
|
-
`${
|
|
670
|
+
`${secretPath} looks like a secret: it is not deployed or hashed with the asset. Keep secrets out of an asset root`
|
|
674
671
|
);
|
|
675
672
|
}
|
|
676
673
|
});
|
|
@@ -701,7 +698,7 @@ function makeAddCommand() {
|
|
|
701
698
|
const library = libraryOf.get(a);
|
|
702
699
|
logOk(library ? `${a} (library ${library})` : a);
|
|
703
700
|
}
|
|
704
|
-
warnPlaceholderBodies(placeholderBodies);
|
|
701
|
+
warnPlaceholderBodies(placeholderBodies, placeholderDescriptions);
|
|
705
702
|
if (!am2.global) warnFilesOnlyDelegates(am2.projectDir, am2.driverTarget);
|
|
706
703
|
if (am2.global) {
|
|
707
704
|
for (const a of added) {
|
|
@@ -812,7 +809,7 @@ function makeRemoveCommand() {
|
|
|
812
809
|
}
|
|
813
810
|
function stateLabel(s) {
|
|
814
811
|
if (s === "installed") return S.ok(s);
|
|
815
|
-
if (s === "drift") return S.warn(s);
|
|
812
|
+
if (s === "drift" || s === "skipped") return S.warn(s);
|
|
816
813
|
if (s === "invalid") return S.err(s);
|
|
817
814
|
return S.dim(s);
|
|
818
815
|
}
|
|
@@ -869,6 +866,9 @@ function makeListCommand() {
|
|
|
869
866
|
const drift = declared.filter((e) => e.state === "drift").length;
|
|
870
867
|
if (drift > 0)
|
|
871
868
|
logInfo(`${drift} with drift \u2014 run ${S.cmd("skaile install")} to materialize.`);
|
|
869
|
+
for (const e of declared.filter((d) => d.state === "skipped")) {
|
|
870
|
+
logWarn(`${e.kind}:${e.name} is skipped: ${e.reason ?? "not written to the MCP config"}`);
|
|
871
|
+
}
|
|
872
872
|
const invalid = declared.filter((e) => e.state === "invalid").length;
|
|
873
873
|
if (invalid > 0)
|
|
874
874
|
logInfo(`${invalid} invalid \u2014 fix the ${S.cmd("skaile.yaml")} dependencies entry.`);
|
|
@@ -989,7 +989,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
989
989
|
return { entry: match ?? deployed };
|
|
990
990
|
}
|
|
991
991
|
const lookup = opts.storeLookup ?? (async (filter) => {
|
|
992
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
992
|
+
const { resolveCatalogSource } = await import('../open-library-JP5TC5UX.js');
|
|
993
993
|
const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
994
994
|
try {
|
|
995
995
|
return await source.listAssets(filter);
|
|
@@ -1005,7 +1005,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
1005
1005
|
);
|
|
1006
1006
|
return { entry: hit ? catalogAssetToEntry(hit) : null };
|
|
1007
1007
|
} catch (err) {
|
|
1008
|
-
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
1008
|
+
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-JP5TC5UX.js');
|
|
1009
1009
|
const storeNote = err instanceof Error ? err.message : String(err);
|
|
1010
1010
|
const disabled = err instanceof LocalCatalogDisabledError2 || /catalog\.url/i.test(storeNote);
|
|
1011
1011
|
return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
|
|
@@ -1045,6 +1045,12 @@ function makeInfoCommand() {
|
|
|
1045
1045
|
if (entry.description) console.log(` description: ${entry.description}`);
|
|
1046
1046
|
if (entry.publisher) console.log(` repository: ${S.dim(entry.publisher)}`);
|
|
1047
1047
|
console.log(` source: ${S.dim(entry.source)}`);
|
|
1048
|
+
if (entry.kind === "mcp-server") {
|
|
1049
|
+
const skipped = (await am2.mcpNotices()).find(
|
|
1050
|
+
(n) => n.kind === "skipped" && (n.id === entry.name || n.id.endsWith(`/${entry.name}`))
|
|
1051
|
+
);
|
|
1052
|
+
if (skipped) console.log(` state: ${S.warn(`skipped: ${skipped.reason}`)}`);
|
|
1053
|
+
}
|
|
1048
1054
|
const infoOrigins = await competingOriginsOf(am2, entry);
|
|
1049
1055
|
if (infoOrigins) {
|
|
1050
1056
|
const [first, ...rest] = infoOrigins;
|
|
@@ -1112,10 +1118,13 @@ function makeDoctorCommand() {
|
|
|
1112
1118
|
});
|
|
1113
1119
|
const { gaps } = await am2.projectState();
|
|
1114
1120
|
const edited = await editedConventionFiles(path18__default.resolve(opts.projectDir));
|
|
1121
|
+
const notices = await am2.mcpNotices();
|
|
1115
1122
|
if (gaps.length === 0 && edited.length === 0) {
|
|
1116
1123
|
logOk("No missing dependencies.");
|
|
1124
|
+
for (const n of notices) logWarn(n.text);
|
|
1117
1125
|
return;
|
|
1118
1126
|
}
|
|
1127
|
+
for (const n of notices) logWarn(n.text);
|
|
1119
1128
|
process.exitCode = 1;
|
|
1120
1129
|
for (const e of edited) logErr(e);
|
|
1121
1130
|
for (const g of gaps) if (g.type !== "requires") logErr(g.message);
|
|
@@ -1353,9 +1362,9 @@ function makeAssetCommand() {
|
|
|
1353
1362
|
publisher: opts.publisher
|
|
1354
1363
|
});
|
|
1355
1364
|
if (target.backend === "git" && opts.commit) {
|
|
1356
|
-
const { spawnSync:
|
|
1357
|
-
|
|
1358
|
-
const r =
|
|
1365
|
+
const { spawnSync: spawnSync3 } = await import('child_process');
|
|
1366
|
+
spawnSync3("git", ["add", "--", destDir], { cwd: target.path, stdio: "inherit" });
|
|
1367
|
+
const r = spawnSync3("git", ["commit", "-m", `skaile: import ${norm.name}`], {
|
|
1359
1368
|
cwd: target.path,
|
|
1360
1369
|
stdio: "inherit"
|
|
1361
1370
|
});
|
|
@@ -1427,9 +1436,9 @@ function makeAssetCommand() {
|
|
|
1427
1436
|
break;
|
|
1428
1437
|
}
|
|
1429
1438
|
if (target.backend === "git" && opts.commit) {
|
|
1430
|
-
const { spawnSync:
|
|
1431
|
-
|
|
1432
|
-
const r =
|
|
1439
|
+
const { spawnSync: spawnSync3 } = await import('child_process');
|
|
1440
|
+
spawnSync3("git", ["add", "--", destPath], { cwd: target.path, stdio: "inherit" });
|
|
1441
|
+
const r = spawnSync3("git", ["commit", "-m", `skaile: migrate ${basename3}`], {
|
|
1433
1442
|
cwd: target.path,
|
|
1434
1443
|
stdio: "inherit"
|
|
1435
1444
|
});
|
|
@@ -1505,6 +1514,15 @@ function makeAssetCommand() {
|
|
|
1505
1514
|
try {
|
|
1506
1515
|
const def = await resolveDefByRef(library, ref);
|
|
1507
1516
|
if (!def) {
|
|
1517
|
+
try {
|
|
1518
|
+
await new AssetManager({
|
|
1519
|
+
registry: getKindRegistry(),
|
|
1520
|
+
projectDir: process.cwd()
|
|
1521
|
+
}).info(ref);
|
|
1522
|
+
} catch (err) {
|
|
1523
|
+
logErr(err instanceof Error ? err.message : String(err));
|
|
1524
|
+
process.exit(1);
|
|
1525
|
+
}
|
|
1508
1526
|
logErr(`Not found: ${ref}`);
|
|
1509
1527
|
process.exit(1);
|
|
1510
1528
|
}
|
|
@@ -1685,7 +1703,7 @@ function makeCatalogCommand() {
|
|
|
1685
1703
|
return catalog;
|
|
1686
1704
|
}
|
|
1687
1705
|
async function runLocalCatalogTest(projectDir) {
|
|
1688
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1706
|
+
const { resolveCatalogSource } = await import('../open-library-JP5TC5UX.js');
|
|
1689
1707
|
let resolved;
|
|
1690
1708
|
try {
|
|
1691
1709
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -1855,7 +1873,7 @@ async function scanLibraryFlowEntries() {
|
|
|
1855
1873
|
const { LocalIndex, resolveIndexPath, scanAuthoringLibraries } = await import('../library/index.js');
|
|
1856
1874
|
const indexPath = resolveIndexPath();
|
|
1857
1875
|
if (!existsSync(indexPath)) return entries;
|
|
1858
|
-
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-
|
|
1876
|
+
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-RBELV5YH.js');
|
|
1859
1877
|
const index = new LocalIndex({ indexPath });
|
|
1860
1878
|
try {
|
|
1861
1879
|
for (const { assets } of await scanAuthoringLibraries(index, getKindRegistry2())) {
|
|
@@ -2196,18 +2214,17 @@ function makeConfigCommand() {
|
|
|
2196
2214
|
process.exit(1);
|
|
2197
2215
|
}
|
|
2198
2216
|
}
|
|
2217
|
+
const projectDriver = key === "driver" ? resolveSkWorkspaceConfig(projectDir).agent_config?.default?.driver : void 0;
|
|
2199
2218
|
const filePath = opts.global ? globalSettingsPath() : projectSettingsPath(projectDir);
|
|
2200
2219
|
const existing = await loadSettings(filePath);
|
|
2201
2220
|
await saveSettings({ ...existing, [key]: value }, filePath);
|
|
2202
2221
|
logOk(`Set ${pc5.bold(key)} = ${value}`);
|
|
2203
2222
|
console.log(S.dim(` \u2192 ${filePath}`));
|
|
2204
|
-
if (
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
);
|
|
2210
|
-
}
|
|
2223
|
+
if (projectDriver && projectDriver !== value) {
|
|
2224
|
+
logWarn(
|
|
2225
|
+
`skaile.yaml sets driver ${projectDriver}; a personal driver does not override the project harness.
|
|
2226
|
+
Remove this one again: skaile config unset driver${opts.global ? " --global" : ""}`
|
|
2227
|
+
);
|
|
2211
2228
|
}
|
|
2212
2229
|
if (key === "model") {
|
|
2213
2230
|
const view = loadRegistryView({ projectDir });
|
|
@@ -2226,6 +2243,26 @@ function makeConfigCommand() {
|
|
|
2226
2243
|
}
|
|
2227
2244
|
}
|
|
2228
2245
|
});
|
|
2246
|
+
cmd.command("unset <key>").description("Remove a personal config value (driver, model) from the settings file").option("--project-dir <path>", "Project directory").option("--global", "Remove from ~/.skaile/settings.json instead of project-local").action(async (key, opts) => {
|
|
2247
|
+
const projectDir = opts.projectDir ? path18__default.resolve(opts.projectDir) : process.cwd();
|
|
2248
|
+
if (!PERSONAL_KEYS.has(key)) {
|
|
2249
|
+
logErr(
|
|
2250
|
+
`'${key}' is not a personal setting that can be unset.
|
|
2251
|
+
Personal keys: ${[...PERSONAL_KEYS].join(", ")}`
|
|
2252
|
+
);
|
|
2253
|
+
process.exit(1);
|
|
2254
|
+
}
|
|
2255
|
+
const filePath = opts.global ? globalSettingsPath() : projectSettingsPath(projectDir);
|
|
2256
|
+
const existing = await loadSettings(filePath);
|
|
2257
|
+
if (!(key in existing)) {
|
|
2258
|
+
logInfo(`${key} is not set in ${filePath}`);
|
|
2259
|
+
return;
|
|
2260
|
+
}
|
|
2261
|
+
const { [key]: _removed, ...rest } = existing;
|
|
2262
|
+
await saveSettings(rest, filePath);
|
|
2263
|
+
logOk(`Unset ${pc5.bold(key)}`);
|
|
2264
|
+
console.log(S.dim(` \u2192 ${filePath}`));
|
|
2265
|
+
});
|
|
2229
2266
|
cmd.action(() => showConfig({}));
|
|
2230
2267
|
return cmd;
|
|
2231
2268
|
}
|
|
@@ -2867,7 +2904,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
2867
2904
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
2868
2905
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
2869
2906
|
if (config.plugins && config.plugins.length > 0) {
|
|
2870
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
2907
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-QOQDM24E.js');
|
|
2871
2908
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
2872
2909
|
for (const f of result.failed) logWarn(f.error);
|
|
2873
2910
|
}
|
|
@@ -3176,14 +3213,27 @@ async function writeJson(p6, value) {
|
|
|
3176
3213
|
await fs5.writeFile(p6, `${JSON.stringify(value, null, 2)}
|
|
3177
3214
|
`);
|
|
3178
3215
|
}
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
const
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3216
|
+
var SKIPPED_IN_SKILL = /* @__PURE__ */ new Set(["__pycache__", "node_modules", ".DS_Store"]);
|
|
3217
|
+
async function copyInstalledSkills(projectDir, skillsDir) {
|
|
3218
|
+
for (const entry of await fs5.readdir(skillsDir).catch(() => [])) {
|
|
3219
|
+
if (entry !== ".gitkeep")
|
|
3220
|
+
await fs5.rm(path18__default.join(skillsDir, entry), { recursive: true, force: true });
|
|
3221
|
+
}
|
|
3222
|
+
for (const root of [
|
|
3223
|
+
path18__default.join(projectDir, ".claude", "skills"),
|
|
3224
|
+
path18__default.join(projectDir, ".skaile", "skills")
|
|
3225
|
+
]) {
|
|
3226
|
+
for (const name of await fs5.readdir(root).catch(() => [])) {
|
|
3227
|
+
const from = path18__default.join(root, name);
|
|
3228
|
+
if (!existsSync(path18__default.join(from, "SKILL.md"))) continue;
|
|
3229
|
+
const to = path18__default.join(skillsDir, name);
|
|
3230
|
+
await fs5.rm(to, { recursive: true, force: true });
|
|
3231
|
+
await fs5.cp(from, to, {
|
|
3232
|
+
recursive: true,
|
|
3233
|
+
dereference: true,
|
|
3234
|
+
filter: (src) => !SKIPPED_IN_SKILL.has(path18__default.basename(src))
|
|
3235
|
+
});
|
|
3236
|
+
}
|
|
3187
3237
|
}
|
|
3188
3238
|
}
|
|
3189
3239
|
async function install(projectDir, opts) {
|
|
@@ -3204,17 +3254,20 @@ async function installMcp(projectDir) {
|
|
|
3204
3254
|
const migrated = await removeSkaileMcpEntry(legacyMcpFilePath(projectDir));
|
|
3205
3255
|
return { changed: !matches || migrated, method: "mcp", warning };
|
|
3206
3256
|
}
|
|
3257
|
+
async function dropSymlink(p6) {
|
|
3258
|
+
const stat = await fs5.lstat(p6).catch(() => void 0);
|
|
3259
|
+
if (stat?.isSymbolicLink()) await fs5.unlink(p6);
|
|
3260
|
+
}
|
|
3207
3261
|
async function installFullPlugin(projectDir) {
|
|
3208
3262
|
const dir = pluginDir(projectDir);
|
|
3263
|
+
await dropSymlink(dir);
|
|
3264
|
+
await dropSymlink(path18__default.join(dir, "skills"));
|
|
3209
3265
|
for (const [rel, content] of Object.entries(buildClaudePluginFiles())) {
|
|
3210
3266
|
const dest = path18__default.join(dir, rel);
|
|
3211
3267
|
await fs5.mkdir(path18__default.dirname(dest), { recursive: true });
|
|
3212
3268
|
await fs5.writeFile(dest, content);
|
|
3213
3269
|
}
|
|
3214
|
-
|
|
3215
|
-
if (existsSync(projectSkillsDir)) {
|
|
3216
|
-
await copyDir(projectSkillsDir, path18__default.join(dir, "skills"));
|
|
3217
|
-
}
|
|
3270
|
+
await copyInstalledSkills(projectDir, path18__default.join(dir, "skills"));
|
|
3218
3271
|
const settingsPath = path18__default.join(projectDir, ".claude", "settings.json");
|
|
3219
3272
|
const settings = await readJsonStrict(settingsPath) ?? {};
|
|
3220
3273
|
const plugins = settings.plugins ?? [];
|
|
@@ -3439,8 +3492,61 @@ async function trustProject(projectDir) {
|
|
|
3439
3492
|
}
|
|
3440
3493
|
await fs5.mkdir(path18__default.dirname(p6), { recursive: true });
|
|
3441
3494
|
await fs5.writeFile(p6, next);
|
|
3495
|
+
await writeTrustMark(projectDir, true);
|
|
3442
3496
|
return "added";
|
|
3443
3497
|
}
|
|
3498
|
+
var TRUST_MARK = "codexTrustAdded";
|
|
3499
|
+
function stateFilePath(projectDir) {
|
|
3500
|
+
return path18__default.join(projectDir, ".skaile", "plugin-state.json");
|
|
3501
|
+
}
|
|
3502
|
+
async function readState(projectDir) {
|
|
3503
|
+
try {
|
|
3504
|
+
const parsed = JSON.parse(await fs5.readFile(stateFilePath(projectDir), "utf-8"));
|
|
3505
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
3506
|
+
return parsed;
|
|
3507
|
+
}
|
|
3508
|
+
} catch {
|
|
3509
|
+
}
|
|
3510
|
+
return {};
|
|
3511
|
+
}
|
|
3512
|
+
async function writeTrustMark(projectDir, on) {
|
|
3513
|
+
const state2 = await readState(projectDir);
|
|
3514
|
+
if (on) state2[TRUST_MARK] = true;
|
|
3515
|
+
else delete state2[TRUST_MARK];
|
|
3516
|
+
await fs5.mkdir(path18__default.dirname(stateFilePath(projectDir)), { recursive: true });
|
|
3517
|
+
await fs5.writeFile(stateFilePath(projectDir), JSON.stringify(state2, null, 2));
|
|
3518
|
+
}
|
|
3519
|
+
async function untrustProject(projectDir) {
|
|
3520
|
+
if ((await readState(projectDir))[TRUST_MARK] !== true) return "none";
|
|
3521
|
+
const { path: p6, raw, projects } = await readUserConfig();
|
|
3522
|
+
const kept = async () => {
|
|
3523
|
+
await writeTrustMark(projectDir, false);
|
|
3524
|
+
return "kept";
|
|
3525
|
+
};
|
|
3526
|
+
const { root } = await trustLevel(projects, projectDir);
|
|
3527
|
+
const parsed = projects[root];
|
|
3528
|
+
if (!parsed || Object.keys(parsed).length !== 1 || parsed.trust_level !== "trusted") {
|
|
3529
|
+
return kept();
|
|
3530
|
+
}
|
|
3531
|
+
const entry = `${await trustEntry(projectDir)}
|
|
3532
|
+
`;
|
|
3533
|
+
const at = raw.indexOf(entry);
|
|
3534
|
+
if (at === -1) return kept();
|
|
3535
|
+
const before = raw.slice(0, at).replace(/\n+$/, "");
|
|
3536
|
+
const after = raw.slice(at + entry.length).replace(/^\n+/, "");
|
|
3537
|
+
const next = [before, after].filter((s) => s !== "").join("\n\n");
|
|
3538
|
+
try {
|
|
3539
|
+
const left = parse$1(next).projects ?? {};
|
|
3540
|
+
if (root in left) return kept();
|
|
3541
|
+
} catch {
|
|
3542
|
+
return kept();
|
|
3543
|
+
}
|
|
3544
|
+
if (next === "") await fs5.unlink(p6);
|
|
3545
|
+
else await fs5.writeFile(p6, `${next}
|
|
3546
|
+
`);
|
|
3547
|
+
await writeTrustMark(projectDir, false);
|
|
3548
|
+
return "removed";
|
|
3549
|
+
}
|
|
3444
3550
|
async function uninstall2(projectDir) {
|
|
3445
3551
|
const p6 = configPath(projectDir);
|
|
3446
3552
|
const cfg = await readConfig(p6);
|
|
@@ -3567,12 +3673,21 @@ async function installClaudeCode(projectDir, opts) {
|
|
|
3567
3673
|
async function installOmp(projectDir) {
|
|
3568
3674
|
const r = await install3(projectDir);
|
|
3569
3675
|
if (r.changed) {
|
|
3570
|
-
logOk(`Wrote ${S.cmd(
|
|
3676
|
+
logOk(`Wrote ${S.cmd(OMP_EXTENSION)} (${r.method}; no host path, commit it)`);
|
|
3571
3677
|
} else {
|
|
3572
3678
|
logInfo(`omp: already installed (${r.method})`);
|
|
3573
3679
|
}
|
|
3680
|
+
await unignoreOmpExtension(projectDir);
|
|
3681
|
+
if (isGitIgnored(projectDir, OMP_EXTENSION)) {
|
|
3682
|
+
logWarn(
|
|
3683
|
+
`git ignores ${OMP_EXTENSION} (a global ignore file or .git/info/exclude); omp does not load an ignored extension. Remove that rule.`
|
|
3684
|
+
);
|
|
3685
|
+
}
|
|
3574
3686
|
console.log(` ${S.dim("\u2192")} OMP auto-discovers extensions on next startup.`);
|
|
3575
3687
|
}
|
|
3688
|
+
function isGitIgnored(projectDir, file) {
|
|
3689
|
+
return spawnSync("git", ["check-ignore", "-q", file], { cwd: projectDir, stdio: "ignore" }).status === 0;
|
|
3690
|
+
}
|
|
3576
3691
|
async function installCodex(projectDir) {
|
|
3577
3692
|
const r = await install2(projectDir);
|
|
3578
3693
|
if (r.warning) logWarn(r.warning);
|
|
@@ -3634,6 +3749,14 @@ async function uninstallCodex(projectDir) {
|
|
|
3634
3749
|
const r = await uninstall2(projectDir);
|
|
3635
3750
|
if (r.changed) logOk(`Removed skaile entry from ${S.cmd(".codex/config.toml")}`);
|
|
3636
3751
|
else logInfo(`codex: not installed`);
|
|
3752
|
+
const trust = await untrustProject(projectDir);
|
|
3753
|
+
const userFile = userConfigPath2().replace(homedir(), "~");
|
|
3754
|
+
if (trust === "removed") logOk(`Removed the trust entry skaile added from ${S.cmd(userFile)}`);
|
|
3755
|
+
else if (trust === "kept") {
|
|
3756
|
+
logInfo(
|
|
3757
|
+
`codex: left the project's entry in ${userFile} (it no longer matches what skaile wrote)`
|
|
3758
|
+
);
|
|
3759
|
+
}
|
|
3637
3760
|
}
|
|
3638
3761
|
async function runUninstall(opts) {
|
|
3639
3762
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
@@ -3670,9 +3793,26 @@ async function removeEmptyPluginState(projectDir) {
|
|
|
3670
3793
|
}
|
|
3671
3794
|
var PER_MACHINE_FILES = {
|
|
3672
3795
|
"claude-code": [".skaile/plugin-state.json"],
|
|
3673
|
-
omp: [".
|
|
3796
|
+
omp: [".skaile/plugin-state.json"],
|
|
3674
3797
|
codex: [".codex/config.toml", ".skaile/plugin-state.json"]
|
|
3675
3798
|
};
|
|
3799
|
+
var OMP_EXTENSION = ".omp/extensions/skaile.ts";
|
|
3800
|
+
async function unignoreOmpExtension(projectDir) {
|
|
3801
|
+
const gitignore = path18__default.join(projectDir, ".gitignore");
|
|
3802
|
+
let text;
|
|
3803
|
+
try {
|
|
3804
|
+
text = await fs5.readFile(gitignore, "utf-8");
|
|
3805
|
+
} catch {
|
|
3806
|
+
return;
|
|
3807
|
+
}
|
|
3808
|
+
const lines = text.split("\n");
|
|
3809
|
+
const kept = lines.filter((l) => l.trim() !== OMP_EXTENSION && l.trim() !== `/${OMP_EXTENSION}`);
|
|
3810
|
+
if (kept.length === lines.length) return;
|
|
3811
|
+
await fs5.writeFile(gitignore, kept.join("\n"));
|
|
3812
|
+
logInfo(
|
|
3813
|
+
`Removed ${S.cmd(OMP_EXTENSION)} from ${S.cmd(".gitignore")} (omp does not load an ignored extension; commit the file)`
|
|
3814
|
+
);
|
|
3815
|
+
}
|
|
3676
3816
|
var CLAUDE_FULL_FILES = [".claude/settings.json", ".claude/plugins/skaile/"];
|
|
3677
3817
|
async function ignorePerMachineFiles(projectDir, targets, full) {
|
|
3678
3818
|
const gitignore = path18__default.join(projectDir, ".gitignore");
|
|
@@ -4068,19 +4208,33 @@ function assertManifestEditableOrExit(libraryPath) {
|
|
|
4068
4208
|
exitOnSyncError(err);
|
|
4069
4209
|
}
|
|
4070
4210
|
}
|
|
4071
|
-
var DEPLOYED_COPY_DIRS = [
|
|
4072
|
-
|
|
4211
|
+
var DEPLOYED_COPY_DIRS = [
|
|
4212
|
+
...new Set(
|
|
4213
|
+
Object.values(DRIVER_TARGETS).flatMap(
|
|
4214
|
+
(t) => Object.values(t.local).filter((d) => typeof d === "string")
|
|
4215
|
+
)
|
|
4216
|
+
)
|
|
4217
|
+
];
|
|
4218
|
+
async function refuseUnusableLibraryDir(dir, force = false) {
|
|
4073
4219
|
const deployed = DEPLOYED_COPY_DIRS.filter((d) => {
|
|
4074
4220
|
const full = path18.join(dir, d);
|
|
4075
4221
|
return fs9.existsSync(full) && fs9.statSync(full).isDirectory() && fs9.readdirSync(full).length > 0;
|
|
4076
4222
|
});
|
|
4077
|
-
if (
|
|
4223
|
+
if (deployed.length > 0 && !force) {
|
|
4224
|
+
const where = fs9.existsSync(path18.join(dir, "skaile.yaml")) ? "skaile.yaml with deployed copies" : "deployed copies";
|
|
4078
4225
|
logErr(
|
|
4079
|
-
`${dir} is a project folder (
|
|
4226
|
+
`${dir} is a project folder (${where} in ${deployed.map((d) => `${d}/`).join(", ")}): a library holds asset sources, not the copies \`skaile add\` deployed. Pick another --path for the library, or pass --force when the sources live in those folders.`
|
|
4080
4227
|
);
|
|
4081
4228
|
process.exit(1);
|
|
4082
4229
|
}
|
|
4083
4230
|
assertManifestEditableOrExit(dir);
|
|
4231
|
+
const unparsable = await unparsableAssetFiles(dir, getKindRegistry());
|
|
4232
|
+
if (unparsable.length > 0) {
|
|
4233
|
+
logErr(
|
|
4234
|
+
`${dir} holds asset file(s) that do not parse: ${unparsable.join(", ")}. Fix them before the directory becomes a library; nothing was registered.`
|
|
4235
|
+
);
|
|
4236
|
+
process.exit(1);
|
|
4237
|
+
}
|
|
4084
4238
|
}
|
|
4085
4239
|
async function assertLibraryPathFree(manager, dir, exceptId) {
|
|
4086
4240
|
const clash = (await manager.listLibraries()).find(
|
|
@@ -4263,7 +4417,7 @@ function remoteBranches(url) {
|
|
|
4263
4417
|
return r.stdout.split("\n").map((line) => line.split(" ")[1]?.replace(/^refs\/heads\//, "")).filter((b) => !!b);
|
|
4264
4418
|
}
|
|
4265
4419
|
async function warnIfNotGithubRemote(name, url) {
|
|
4266
|
-
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-
|
|
4420
|
+
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-VBE3X2TH.js');
|
|
4267
4421
|
if (!isGithubRemote(url)) logWarn(notGithubRemoteMessage(name, url));
|
|
4268
4422
|
}
|
|
4269
4423
|
function scaffoldLibraryFiles(dir, name) {
|
|
@@ -4371,7 +4525,10 @@ function makeLibraryCommand() {
|
|
|
4371
4525
|
close();
|
|
4372
4526
|
}
|
|
4373
4527
|
});
|
|
4374
|
-
cmd.command("init <name>").description("Create (or adopt) a library \u2014 default location ~/.skaile/libraries/<name>").option("--git <url>", "Initialize as a git library tracking <url>").option("--path <dir>", "Register the library at <dir> (created if missing) instead").option(
|
|
4528
|
+
cmd.command("init <name>").description("Create (or adopt) a library \u2014 default location ~/.skaile/libraries/<name>").option("--git <url>", "Initialize as a git library tracking <url>").option("--path <dir>", "Register the library at <dir> (created if missing) instead").option(
|
|
4529
|
+
"--force",
|
|
4530
|
+
"Adopt a folder that holds deployed copies (.claude/, .skaile/, .codex/, .omp/) as a library"
|
|
4531
|
+
).option("--owner", "Mark as owner (the default)").option("--contributor", "Mark as contributor (needs --git or an existing git clone)").option("--reader", "Mark as reader (needs --git or an existing git clone)").action(
|
|
4375
4532
|
async (name, opts) => {
|
|
4376
4533
|
requireValidLibraryName(name);
|
|
4377
4534
|
const flagged = ["owner", "contributor", "reader"].filter((o) => opts[o]);
|
|
@@ -4410,7 +4567,7 @@ function makeLibraryCommand() {
|
|
|
4410
4567
|
await refuseNestedLibraryPath(manager, libPath);
|
|
4411
4568
|
if (fs9.existsSync(libPath)) {
|
|
4412
4569
|
exitOnLibrarySymlinks(libPath, `skaile library init ${name} --path ${libPath}`);
|
|
4413
|
-
refuseUnusableLibraryDir(libPath);
|
|
4570
|
+
await refuseUnusableLibraryDir(libPath, opts.force);
|
|
4414
4571
|
}
|
|
4415
4572
|
const hasDefault = (await manager.listLibraries()).some((l) => l.isDefault);
|
|
4416
4573
|
let backend = "local";
|
|
@@ -4424,7 +4581,7 @@ function makeLibraryCommand() {
|
|
|
4424
4581
|
}
|
|
4425
4582
|
await warnIfNotGithubRemote(name, opts.git);
|
|
4426
4583
|
trackOriginBranch(libPath, branch);
|
|
4427
|
-
refuseUnusableLibraryDir(libPath);
|
|
4584
|
+
await refuseUnusableLibraryDir(libPath, opts.force);
|
|
4428
4585
|
backend = "git";
|
|
4429
4586
|
backendConfig = { url: opts.git, branch, authHint: "ssh" };
|
|
4430
4587
|
} else if (adopted) {
|
|
@@ -4957,16 +5114,16 @@ function makeLibraryCommand() {
|
|
|
4957
5114
|
"With --create-repo: create the repo private (the store only accepts public repos)"
|
|
4958
5115
|
).option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; push nothing and call no store endpoint").action(
|
|
4959
5116
|
async (lib, opts) => {
|
|
4960
|
-
const { runLibraryPublish } = await import('../library-publish-
|
|
5117
|
+
const { runLibraryPublish } = await import('../library-publish-VBE3X2TH.js');
|
|
4961
5118
|
await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
|
|
4962
5119
|
}
|
|
4963
5120
|
);
|
|
4964
5121
|
cmd.command("register <lib>").description("Register the library's manifest without pushing (bytes already on github)").option("--asset <ref>", "Publish only the single asset matching this ref/name").option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; call no store endpoint").action(async (lib, opts) => {
|
|
4965
|
-
const { runLibraryRegister } = await import('../library-publish-
|
|
5122
|
+
const { runLibraryRegister } = await import('../library-publish-VBE3X2TH.js');
|
|
4966
5123
|
await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
|
|
4967
5124
|
});
|
|
4968
5125
|
cmd.command("yank <lib>").description("Retract the library's published assets from the store").option("--asset <ref>", "Yank only the single asset matching this ref/name").action(async (lib, opts) => {
|
|
4969
|
-
const { runLibraryYank } = await import('../library-publish-
|
|
5126
|
+
const { runLibraryYank } = await import('../library-publish-VBE3X2TH.js');
|
|
4970
5127
|
await withStoreErrorHandling(() => runLibraryYank(lib, opts));
|
|
4971
5128
|
});
|
|
4972
5129
|
return cmd;
|
|
@@ -5626,7 +5783,7 @@ function scheduleSoftDepPreview() {
|
|
|
5626
5783
|
}
|
|
5627
5784
|
async function loadAssets() {
|
|
5628
5785
|
softDepPreviewCache.clear();
|
|
5629
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
5786
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-WAKBHGEV.js');
|
|
5630
5787
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
5631
5788
|
if (notes.length > 0) {
|
|
5632
5789
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -5830,7 +5987,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
5830
5987
|
async function loadSourcesAndLibraries() {
|
|
5831
5988
|
try {
|
|
5832
5989
|
const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
|
|
5833
|
-
import('../open-library-
|
|
5990
|
+
import('../open-library-JP5TC5UX.js'),
|
|
5834
5991
|
import('../core/index.js')
|
|
5835
5992
|
]);
|
|
5836
5993
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -8668,7 +8825,7 @@ function action2(fn) {
|
|
|
8668
8825
|
};
|
|
8669
8826
|
}
|
|
8670
8827
|
async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
8671
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
8828
|
+
const { reconcilePlugins } = await import('../plugin-store-QOQDM24E.js');
|
|
8672
8829
|
if (plugins.length === 0) {
|
|
8673
8830
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
8674
8831
|
return;
|
|
@@ -8683,7 +8840,7 @@ async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
|
8683
8840
|
}
|
|
8684
8841
|
}
|
|
8685
8842
|
async function verifyPluginLoads(projectDir, spec) {
|
|
8686
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
8843
|
+
const { loadPlugins } = await import('../plugin-store-QOQDM24E.js');
|
|
8687
8844
|
const { createPluginRegistry } = await import('../plugin-registry/index.js');
|
|
8688
8845
|
const registry = createPluginRegistry();
|
|
8689
8846
|
const result = await loadPlugins(projectDir, [spec], registry);
|
|
@@ -8697,7 +8854,7 @@ async function verifyPluginLoads(projectDir, spec) {
|
|
|
8697
8854
|
async function runInstall2(spec, opts) {
|
|
8698
8855
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
8699
8856
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
8700
|
-
const { specName, rollbackPluginStore } = await import('../plugin-store-
|
|
8857
|
+
const { specName, rollbackPluginStore } = await import('../plugin-store-QOQDM24E.js');
|
|
8701
8858
|
const yamlPath = path18__default.join(projectDir, "skaile.yaml");
|
|
8702
8859
|
if (!existsSync(yamlPath)) {
|
|
8703
8860
|
throw new Error(`no skaile.yaml in ${projectDir}; run \`skaile init\` first`);
|
|
@@ -8726,7 +8883,7 @@ async function runInstall2(spec, opts) {
|
|
|
8726
8883
|
async function runRemove(name, opts) {
|
|
8727
8884
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
8728
8885
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
8729
|
-
const { specName } = await import('../plugin-store-
|
|
8886
|
+
const { specName } = await import('../plugin-store-QOQDM24E.js');
|
|
8730
8887
|
const yamlPath = path18__default.join(projectDir, "skaile.yaml");
|
|
8731
8888
|
if (!existsSync(yamlPath)) {
|
|
8732
8889
|
logInfo(`No plugin matching ${S.cmd(name)}: there is no skaile.yaml in ${projectDir}.`);
|
|
@@ -8758,7 +8915,7 @@ async function runList(opts) {
|
|
|
8758
8915
|
const registry = createPluginRegistry();
|
|
8759
8916
|
if (declared.length > 0) {
|
|
8760
8917
|
try {
|
|
8761
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
8918
|
+
const { loadPlugins } = await import('../plugin-store-QOQDM24E.js');
|
|
8762
8919
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
8763
8920
|
for (const f of result.failed) logWarn(f.error);
|
|
8764
8921
|
} catch (err) {
|
|
@@ -9627,7 +9784,9 @@ function driverErrorNotes(err) {
|
|
|
9627
9784
|
const hint = e?.hint ?? e?.detail?.hint;
|
|
9628
9785
|
if (hint && category !== "config") notes.push(hint);
|
|
9629
9786
|
else if (category === "auth") notes.push("Check your API key or login.");
|
|
9630
|
-
|
|
9787
|
+
if (e?.logSessionId) {
|
|
9788
|
+
notes.push(`Full records: .skaile/logs.db (skaile session logs ${e.logSessionId}).`);
|
|
9789
|
+
}
|
|
9631
9790
|
return notes;
|
|
9632
9791
|
}
|
|
9633
9792
|
|
|
@@ -9857,6 +10016,14 @@ function makeRunCommand() {
|
|
|
9857
10016
|
});
|
|
9858
10017
|
const driver = config.driver ?? DEFAULT_DRIVER_ID;
|
|
9859
10018
|
const model = config.model;
|
|
10019
|
+
const providerRefusal = checkModelProvider(driver, {
|
|
10020
|
+
registry: loadRegistryView({ projectDir }).merged,
|
|
10021
|
+
model
|
|
10022
|
+
});
|
|
10023
|
+
if (providerRefusal) {
|
|
10024
|
+
logErr(providerRefusal);
|
|
10025
|
+
process.exit(1);
|
|
10026
|
+
}
|
|
9860
10027
|
const flowPath = await findFlowFileWithLibraries(
|
|
9861
10028
|
flowId,
|
|
9862
10029
|
projectAiAssetsRoots(projectDir),
|
|
@@ -10097,6 +10264,25 @@ function makeReplCommand() {
|
|
|
10097
10264
|
console.log();
|
|
10098
10265
|
}
|
|
10099
10266
|
await loadDeclaredPlugins(projectDir);
|
|
10267
|
+
const effective = await resolveSettings(projectDir, {
|
|
10268
|
+
driver: driverOverride,
|
|
10269
|
+
model: opts.model
|
|
10270
|
+
});
|
|
10271
|
+
let effectiveModel = effective.model;
|
|
10272
|
+
if (!opts.model && instanceId2) {
|
|
10273
|
+
try {
|
|
10274
|
+
effectiveModel = instanceSessionOverrides(resolveSkWorkspaceConfig(projectDir), instanceId2).model ?? effectiveModel;
|
|
10275
|
+
} catch {
|
|
10276
|
+
}
|
|
10277
|
+
}
|
|
10278
|
+
const providerRefusal = checkModelProvider(effective.driver ?? DEFAULT_DRIVER_ID, {
|
|
10279
|
+
registry: loadRegistryView({ projectDir }).merged,
|
|
10280
|
+
model: effectiveModel
|
|
10281
|
+
});
|
|
10282
|
+
if (providerRefusal) {
|
|
10283
|
+
logErr(providerRefusal);
|
|
10284
|
+
process.exit(1);
|
|
10285
|
+
}
|
|
10100
10286
|
try {
|
|
10101
10287
|
await startRepl({
|
|
10102
10288
|
projectDir,
|
|
@@ -10127,11 +10313,20 @@ function parseModelEndpointFlag(raw) {
|
|
|
10127
10313
|
}
|
|
10128
10314
|
function parsePortOption(raw) {
|
|
10129
10315
|
const port = Number(raw);
|
|
10130
|
-
if (!/^\d+$/.test(raw
|
|
10316
|
+
if (!/^\d+$/.test(raw) || port > 65535) {
|
|
10131
10317
|
throw new Error(`--port: invalid port '${raw}' (expected a whole number from 0 to 65535)`);
|
|
10132
10318
|
}
|
|
10133
10319
|
return port;
|
|
10134
10320
|
}
|
|
10321
|
+
function parseHostOption(raw) {
|
|
10322
|
+
if (raw === void 0) return void 0;
|
|
10323
|
+
if (raw === "" || raw !== raw.trim()) {
|
|
10324
|
+
throw new Error(
|
|
10325
|
+
`--host: invalid address '${raw}' (give an address such as 127.0.0.1, or leave the flag out to listen on all interfaces)`
|
|
10326
|
+
);
|
|
10327
|
+
}
|
|
10328
|
+
return raw;
|
|
10329
|
+
}
|
|
10135
10330
|
function describeBindError(err, host, port) {
|
|
10136
10331
|
const code = err?.code;
|
|
10137
10332
|
const where = host ? `${host}:${port}` : `port ${port}`;
|
|
@@ -10183,6 +10378,7 @@ function makeServeCommand() {
|
|
|
10183
10378
|
let port;
|
|
10184
10379
|
try {
|
|
10185
10380
|
port = parsePortOption(opts.port);
|
|
10381
|
+
opts.host = parseHostOption(opts.host);
|
|
10186
10382
|
} catch (err) {
|
|
10187
10383
|
logErr(err.message);
|
|
10188
10384
|
process.exitCode = 1;
|
|
@@ -10206,7 +10402,7 @@ function makeServeCommand() {
|
|
|
10206
10402
|
}
|
|
10207
10403
|
const providers = parseProviderIds(opts.providers);
|
|
10208
10404
|
const modelEndpoint = parseModelEndpointFlag(opts.modelEndpoint);
|
|
10209
|
-
const { checkDriverSdk, checkModelEndpointPeer } = await import('../serve-preflight-
|
|
10405
|
+
const { checkDriverSdk, checkModelEndpointPeer } = await import('../serve-preflight-BTGTZUDN.js');
|
|
10210
10406
|
const driverProblem = managedCodex ? null : await checkDriverSdk(opts.projectDir, opts.driver);
|
|
10211
10407
|
if (driverProblem) {
|
|
10212
10408
|
logErr(driverProblem);
|
|
@@ -10257,12 +10453,12 @@ function makeServeCommand() {
|
|
|
10257
10453
|
);
|
|
10258
10454
|
}
|
|
10259
10455
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
10260
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
10456
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-R22QNPFN.js');
|
|
10261
10457
|
try {
|
|
10262
10458
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
10263
10459
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
10264
10460
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
10265
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
10461
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-QOQDM24E.js');
|
|
10266
10462
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
10267
10463
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
10268
10464
|
if (result.loaded.length > 0) {
|
|
@@ -10276,14 +10472,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
10276
10472
|
}
|
|
10277
10473
|
}
|
|
10278
10474
|
async function runCompileTest(opts) {
|
|
10279
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
10475
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-R22QNPFN.js');
|
|
10280
10476
|
const { tmpdir } = await import('os');
|
|
10281
10477
|
const { dirname: dirname3, join: join6, resolve: resolve4 } = await import('path');
|
|
10282
10478
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
10283
10479
|
const { unlinkSync, existsSync: existsSync22 } = await import('fs');
|
|
10284
10480
|
const { spawn } = await import('child_process');
|
|
10285
10481
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
10286
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
10482
|
+
const { MONOREPO_ROOT } = await import('../paths-BFM6K2QO.js');
|
|
10287
10483
|
if (MONOREPO_ROOT === null) {
|
|
10288
10484
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
10289
10485
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -11222,8 +11418,8 @@ function makeStoreCommand() {
|
|
|
11222
11418
|
"--all",
|
|
11223
11419
|
`List every match (default: ${STORE_ROW_LIMIT} rows, only what \`skaile add\` can install)`
|
|
11224
11420
|
).option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
|
|
11225
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
11226
|
-
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-
|
|
11421
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-JP5TC5UX.js');
|
|
11422
|
+
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-RBELV5YH.js');
|
|
11227
11423
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
11228
11424
|
if (opts.kind && !getKnownKinds2().has(opts.kind)) {
|
|
11229
11425
|
logErr(
|
|
@@ -11281,8 +11477,8 @@ function makeStoreCommand() {
|
|
|
11281
11477
|
}
|
|
11282
11478
|
});
|
|
11283
11479
|
store.command("show <ref>").description("Show a store asset's details + provenance (source, files, integrity)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (ref, opts) => {
|
|
11284
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
11285
|
-
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-
|
|
11480
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-JP5TC5UX.js');
|
|
11481
|
+
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-6ETXGQWD.js');
|
|
11286
11482
|
try {
|
|
11287
11483
|
parseAssetRef(ref);
|
|
11288
11484
|
} catch (e) {
|
|
@@ -11534,7 +11730,7 @@ function makeUpdateCommand() {
|
|
|
11534
11730
|
if (result.deployed.length > 0) {
|
|
11535
11731
|
for (const d of result.deployed) logOk(`Updated ${d}`);
|
|
11536
11732
|
}
|
|
11537
|
-
warnPlaceholderBodies(result.placeholderBodies);
|
|
11733
|
+
warnPlaceholderBodies(result.placeholderBodies, result.placeholderDescriptions);
|
|
11538
11734
|
for (const r of result.restored ?? []) {
|
|
11539
11735
|
for (const f of r.restored) logInfo(`Restored ${f}`);
|
|
11540
11736
|
for (const f of r.removed) logInfo(`Removed ${f} (not part of ${r.ref})`);
|
|
@@ -11751,9 +11947,10 @@ function makeVerifyCommand() {
|
|
|
11751
11947
|
if (catalog && supportsInstallManifest(catalog)) {
|
|
11752
11948
|
try {
|
|
11753
11949
|
const m = await catalog.getInstallManifest(ref);
|
|
11754
|
-
if (m.sha256 === entry.sha256
|
|
11950
|
+
if (m.sha256 === entry.sha256) {
|
|
11951
|
+
const how = m.source.commitSha === entry.source.commit ? "store install manifest" : `store install manifest; same bytes at another commit \u2014 locked ${String(entry.source.commit).slice(0, 8)}, store ${m.source.commitSha.slice(0, 8)}`;
|
|
11755
11952
|
console.log(
|
|
11756
|
-
` ${S.ok("\u2713")} ${ref.padEnd(40)} ${S.dim(`${entry.sha256.slice(0, 20)}...`)} ${S.ok("verified")} ${S.dim(
|
|
11953
|
+
` ${S.ok("\u2713")} ${ref.padEnd(40)} ${S.dim(`${entry.sha256.slice(0, 20)}...`)} ${S.ok("verified")} ${S.dim(`(${how})`)}`
|
|
11757
11954
|
);
|
|
11758
11955
|
verified++;
|
|
11759
11956
|
} else {
|
|
@@ -12057,7 +12254,7 @@ program.command("init [project-dir]").description("Initialize a project director
|
|
|
12057
12254
|
async function runInit(projectDir, opts) {
|
|
12058
12255
|
const { mkdirSync: mkdirSync5, writeFileSync: writeFileSync7 } = await import('fs');
|
|
12059
12256
|
const { stringify: stringify2 } = await import('yaml');
|
|
12060
|
-
const { DRIVER_TARGETS, SUPPORTED_DRIVER_TARGETS: SUPPORTED_DRIVER_TARGETS2 } = await import('../core/index.js');
|
|
12257
|
+
const { DRIVER_TARGETS: DRIVER_TARGETS2, SUPPORTED_DRIVER_TARGETS: SUPPORTED_DRIVER_TARGETS2 } = await import('../core/index.js');
|
|
12061
12258
|
const harness = opts.harness;
|
|
12062
12259
|
if (!SUPPORTED_DRIVER_TARGETS2.includes(harness)) {
|
|
12063
12260
|
logErr(`Unknown harness "${opts.harness}". Supported: ${SUPPORTED_DRIVER_TARGETS2.join(", ")}`);
|
|
@@ -12087,7 +12284,7 @@ async function runInit(projectDir, opts) {
|
|
|
12087
12284
|
writeFileSync7(wsConfigPath, stringify2(buildInitWorkspaceConfig(projectName, harness)));
|
|
12088
12285
|
created.push("skaile.yaml");
|
|
12089
12286
|
}
|
|
12090
|
-
for (const dir of new Set(Object.values(
|
|
12287
|
+
for (const dir of new Set(Object.values(DRIVER_TARGETS2[harness].local))) {
|
|
12091
12288
|
const full = path18__default.join(resolved, dir);
|
|
12092
12289
|
if (!existsSync22(full)) {
|
|
12093
12290
|
mkdirSync5(full, { recursive: true });
|
|
@@ -12143,9 +12340,10 @@ async function initGitScaffold(resolved, created) {
|
|
|
12143
12340
|
".codex/skaile-session-instructions.md",
|
|
12144
12341
|
".omp/system.md",
|
|
12145
12342
|
".omp/sessions/",
|
|
12146
|
-
// `skaile integration install` writes the absolute project path into
|
|
12343
|
+
// `skaile integration install` writes the absolute project path into the codex config.
|
|
12344
|
+
// `.omp/extensions/skaile.ts` holds no host path and omp does not load an ignored
|
|
12345
|
+
// extension: it is committed, so it is not listed here.
|
|
12147
12346
|
".codex/config.toml",
|
|
12148
|
-
".omp/extensions/skaile.ts",
|
|
12149
12347
|
".skaile/plugin-state.json",
|
|
12150
12348
|
"*.log",
|
|
12151
12349
|
".env",
|
|
@@ -12190,7 +12388,7 @@ async function bootstrapUserConfig() {
|
|
|
12190
12388
|
}
|
|
12191
12389
|
async function hydrateInitSources(resolved, created) {
|
|
12192
12390
|
try {
|
|
12193
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
12391
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-CEFODJCE.js');
|
|
12194
12392
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
12195
12393
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
12196
12394
|
if (hydrate.failed.length > 0) {
|
|
@@ -12230,7 +12428,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
12230
12428
|
console.log();
|
|
12231
12429
|
}
|
|
12232
12430
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
12233
|
-
const { cmdSetup } = await import('../setup-
|
|
12431
|
+
const { cmdSetup } = await import('../setup-JQDTYPSD.js');
|
|
12234
12432
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
12235
12433
|
});
|
|
12236
12434
|
program.addCommand(makeInstallCommand());
|
|
@@ -12323,7 +12521,8 @@ try {
|
|
|
12323
12521
|
process.exit(1);
|
|
12324
12522
|
}
|
|
12325
12523
|
const { LibrarySyncError } = await import('../library/index.js');
|
|
12326
|
-
if (!(err instanceof LibrarySyncError || err instanceof SourceEntryError))
|
|
12524
|
+
if (!(err instanceof LibrarySyncError || err instanceof LibraryEntryError || err instanceof SourceEntryError))
|
|
12525
|
+
throw err;
|
|
12327
12526
|
logErr(err.message);
|
|
12328
12527
|
process.exit(1);
|
|
12329
12528
|
}
|