@skaile/workspaces 4.35.0 → 4.37.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 +42 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-NL3526ZV.js → asset-feeds-KTRFFJYM.js} +10 -10
- package/dist/{asset-feeds-NL3526ZV.js.map → asset-feeds-KTRFFJYM.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +5 -5
- package/dist/asset-manager/index.js +10 -10
- package/dist/asset-manager/installer.js +7 -7
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/asset-manager/src/index.d.ts +18 -0
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +14 -11
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +7 -7
- package/dist/bridge/drivers/continue.js +8 -8
- package/dist/bridge/drivers/echo.js +3 -3
- package/dist/bridge/drivers/gemini.js +6 -6
- package/dist/bridge/drivers/goose.js +8 -8
- package/dist/bridge/drivers/omp.js +9 -6
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +8 -8
- package/dist/bridge/drivers/qwen.js +6 -6
- package/dist/bridge/index.js +11 -11
- package/dist/bridge/src/drivers/claude-sdk.d.ts +1 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +3 -2
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +8 -0
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-TGE33MKN.js → chunk-2D3C4AJP.js} +4 -2
- package/dist/chunk-2D3C4AJP.js.map +1 -0
- package/dist/{chunk-ZWTCXL3H.js → chunk-2QYQOJ2F.js} +3 -3
- package/dist/{chunk-ZWTCXL3H.js.map → chunk-2QYQOJ2F.js.map} +1 -1
- package/dist/{chunk-T3YUSWVK.js → chunk-3SUWLY3H.js} +3 -3
- package/dist/{chunk-T3YUSWVK.js.map → chunk-3SUWLY3H.js.map} +1 -1
- package/dist/{chunk-Q6NDQ6BH.js → chunk-5JAO4MXA.js} +3 -3
- package/dist/{chunk-Q6NDQ6BH.js.map → chunk-5JAO4MXA.js.map} +1 -1
- package/dist/{chunk-NVQLE4MK.js → chunk-5SGS5SN2.js} +4 -4
- package/dist/{chunk-NVQLE4MK.js.map → chunk-5SGS5SN2.js.map} +1 -1
- package/dist/{chunk-RHESVS7V.js → chunk-7YCPY6NC.js} +6 -6
- package/dist/{chunk-RHESVS7V.js.map → chunk-7YCPY6NC.js.map} +1 -1
- package/dist/{chunk-N2UGG6WV.js → chunk-A5RRXBLI.js} +5 -5
- package/dist/{chunk-N2UGG6WV.js.map → chunk-A5RRXBLI.js.map} +1 -1
- package/dist/{chunk-DOF77WEV.js → chunk-BSIHJZKN.js} +6 -6
- package/dist/{chunk-DOF77WEV.js.map → chunk-BSIHJZKN.js.map} +1 -1
- package/dist/{chunk-VOXFI3XS.js → chunk-DFZDL62S.js} +4 -4
- package/dist/{chunk-VOXFI3XS.js.map → chunk-DFZDL62S.js.map} +1 -1
- package/dist/{chunk-XTOTP7MJ.js → chunk-ENXE4BKS.js} +2 -2
- package/dist/{chunk-XTOTP7MJ.js.map → chunk-ENXE4BKS.js.map} +1 -1
- package/dist/{chunk-3ELIPWCH.js → chunk-FJYOQMXT.js} +4 -4
- package/dist/{chunk-3ELIPWCH.js.map → chunk-FJYOQMXT.js.map} +1 -1
- package/dist/{chunk-7HJ6SFFF.js → chunk-FLGLODDF.js} +3 -3
- package/dist/{chunk-7HJ6SFFF.js.map → chunk-FLGLODDF.js.map} +1 -1
- package/dist/{chunk-TGJIX77V.js → chunk-FZFCOQTI.js} +3 -3
- package/dist/{chunk-TGJIX77V.js.map → chunk-FZFCOQTI.js.map} +1 -1
- package/dist/{chunk-P2DLXBZK.js → chunk-H3KXUUYQ.js} +4 -4
- package/dist/{chunk-P2DLXBZK.js.map → chunk-H3KXUUYQ.js.map} +1 -1
- package/dist/{chunk-AKO6XHGV.js → chunk-KN5Y5BXK.js} +5 -5
- package/dist/{chunk-AKO6XHGV.js.map → chunk-KN5Y5BXK.js.map} +1 -1
- package/dist/{chunk-QJOOD3OV.js → chunk-L7R52OOV.js} +3 -3
- package/dist/{chunk-QJOOD3OV.js.map → chunk-L7R52OOV.js.map} +1 -1
- package/dist/{chunk-TB3LJ6NA.js → chunk-MDBAEEY5.js} +3 -3
- package/dist/{chunk-TB3LJ6NA.js.map → chunk-MDBAEEY5.js.map} +1 -1
- package/dist/{chunk-TUTVTGMG.js → chunk-MIRWAK5C.js} +4 -4
- package/dist/{chunk-TUTVTGMG.js.map → chunk-MIRWAK5C.js.map} +1 -1
- package/dist/{chunk-C3256F2F.js → chunk-MRS5YHPI.js} +3 -3
- package/dist/{chunk-C3256F2F.js.map → chunk-MRS5YHPI.js.map} +1 -1
- package/dist/{chunk-7LBPHRRP.js → chunk-NFECHLV6.js} +3 -3
- package/dist/{chunk-7LBPHRRP.js.map → chunk-NFECHLV6.js.map} +1 -1
- package/dist/{chunk-LX3FKVLL.js → chunk-NTASYPDN.js} +3 -3
- package/dist/{chunk-LX3FKVLL.js.map → chunk-NTASYPDN.js.map} +1 -1
- package/dist/{chunk-7IH3RKKK.js → chunk-OEBAXTQ4.js} +3 -3
- package/dist/{chunk-7IH3RKKK.js.map → chunk-OEBAXTQ4.js.map} +1 -1
- package/dist/{chunk-7LZJRVKJ.js → chunk-OKGUDNDT.js} +94 -16
- package/dist/chunk-OKGUDNDT.js.map +1 -0
- package/dist/{chunk-Z2QI42YH.js → chunk-OPBGV4DX.js} +30 -9
- package/dist/chunk-OPBGV4DX.js.map +1 -0
- package/dist/{chunk-T762W5CI.js → chunk-QABZZROM.js} +3 -3
- package/dist/{chunk-T762W5CI.js.map → chunk-QABZZROM.js.map} +1 -1
- package/dist/{chunk-LRCSWOZO.js → chunk-QKXDRBLL.js} +5 -3
- package/dist/chunk-QKXDRBLL.js.map +1 -0
- package/dist/{chunk-66A35U4V.js → chunk-R2SYODNK.js} +64 -8
- package/dist/chunk-R2SYODNK.js.map +1 -0
- package/dist/{chunk-TTITGVXV.js → chunk-RZXP5ZER.js} +3 -3
- package/dist/{chunk-TTITGVXV.js.map → chunk-RZXP5ZER.js.map} +1 -1
- package/dist/{chunk-DHLE66FV.js → chunk-S63H4HDH.js} +8 -4
- package/dist/chunk-S63H4HDH.js.map +1 -0
- package/dist/{chunk-J4ANCOQ4.js → chunk-SGMCSVTO.js} +7 -7
- package/dist/{chunk-J4ANCOQ4.js.map → chunk-SGMCSVTO.js.map} +1 -1
- package/dist/{chunk-IGNY4C6K.js → chunk-SOFPA4S4.js} +7 -7
- package/dist/{chunk-IGNY4C6K.js.map → chunk-SOFPA4S4.js.map} +1 -1
- package/dist/{chunk-2FBPAR2V.js → chunk-SQ7IN7KR.js} +3 -2
- package/dist/chunk-SQ7IN7KR.js.map +1 -0
- package/dist/{chunk-GORUF3YZ.js → chunk-U4CNCL7Q.js} +10 -10
- package/dist/{chunk-GORUF3YZ.js.map → chunk-U4CNCL7Q.js.map} +1 -1
- package/dist/{chunk-75LXFKQR.js → chunk-UFBURH6K.js} +4 -4
- package/dist/{chunk-75LXFKQR.js.map → chunk-UFBURH6K.js.map} +1 -1
- package/dist/{chunk-AO7TCPOS.js → chunk-USJWXEXS.js} +311 -32
- package/dist/chunk-USJWXEXS.js.map +1 -0
- package/dist/{chunk-GKTFGCQZ.js → chunk-UTZEHXYT.js} +3 -3
- package/dist/{chunk-GKTFGCQZ.js.map → chunk-UTZEHXYT.js.map} +1 -1
- package/dist/{chunk-JS7DCCDA.js → chunk-V2OQ3BI6.js} +4 -4
- package/dist/chunk-V2OQ3BI6.js.map +1 -0
- package/dist/{chunk-5YXKEM7Q.js → chunk-VCLN2IUM.js} +5 -5
- package/dist/{chunk-5YXKEM7Q.js.map → chunk-VCLN2IUM.js.map} +1 -1
- package/dist/{chunk-JRIU5GA7.js → chunk-VRFKCF3R.js} +4 -4
- package/dist/{chunk-JRIU5GA7.js.map → chunk-VRFKCF3R.js.map} +1 -1
- package/dist/{chunk-MTWZ7KHZ.js → chunk-WQULDAH2.js} +11 -2
- package/dist/chunk-WQULDAH2.js.map +1 -0
- package/dist/{chunk-IFUQ6XBQ.js → chunk-WTBXGJCD.js} +207 -19
- package/dist/chunk-WTBXGJCD.js.map +1 -0
- package/dist/{chunk-7ERHZQ7O.js → chunk-XN7DAZB7.js} +3 -3
- package/dist/{chunk-7ERHZQ7O.js.map → chunk-XN7DAZB7.js.map} +1 -1
- package/dist/{chunk-24X2GGSC.js → chunk-YU433JEL.js} +6 -6
- package/dist/{chunk-24X2GGSC.js.map → chunk-YU433JEL.js.map} +1 -1
- package/dist/cli/index.js +72 -64
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +7 -0
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/connector.d.ts.map +1 -1
- package/dist/connectors/config.js +3 -3
- package/dist/connectors/index.js +15 -15
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/connectors/src/connector-types.d.ts +7 -0
- package/dist/connectors/src/connector-types.d.ts.map +1 -1
- package/dist/connectors/src/materialized-connectors.d.ts.map +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +4 -4
- package/dist/core/manifest.js +1 -1
- package/dist/core/runtime-assets.js +3 -3
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +7 -0
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +2 -2
- package/dist/deploy/index.js +4 -4
- package/dist/discovery/index.js +3 -3
- package/dist/{ensure-sources-DVPPPCBS.js → ensure-sources-IGU65O72.js} +13 -13
- package/dist/{ensure-sources-DVPPPCBS.js.map → ensure-sources-IGU65O72.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +15 -15
- package/dist/factory-assets/connectors/deploy.js +15 -15
- package/dist/factory-assets/connectors/devserver.js +15 -15
- package/dist/factory-assets/connectors/flow/adapter.js +15 -15
- package/dist/factory-assets/connectors/flow/engine.js +5 -5
- package/dist/factory-assets/connectors/flow/run-flow.js +17 -17
- package/dist/factory-assets/connectors/flow.js +15 -15
- package/dist/factory-assets/connectors/git/CONNECTOR.md +1 -0
- package/dist/factory-assets/connectors/git/driver.d.ts +29 -0
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +15 -15
- package/dist/factory-assets/connectors/gmail.js +15 -15
- package/dist/factory-assets/connectors/googledrive.js +15 -15
- package/dist/factory-assets/connectors/local.js +15 -15
- package/dist/factory-assets/connectors/mattermost.js +15 -15
- package/dist/factory-assets/connectors/memory.js +15 -15
- package/dist/factory-assets/connectors/minio.js +15 -15
- package/dist/factory-assets/connectors/postgres.js +15 -15
- package/dist/factory-assets/connectors/s3.js +15 -15
- package/dist/factory-assets/connectors/sharepoint.js +15 -15
- package/dist/factory-assets/connectors/sqlite.js +15 -15
- package/dist/factory-assets/connectors/static-server.js +15 -15
- package/dist/factory-assets/connectors/tunnel.js +15 -15
- package/dist/factory-assets/connectors/webdav.js +15 -15
- package/dist/factory-assets/connectors/xstate-store.js +15 -15
- package/dist/factory-assets/connectors/xstate.js +15 -15
- package/dist/{flows-X7JFAVRR.js → flows-6MDMBQUZ.js} +9 -9
- package/dist/{flows-X7JFAVRR.js.map → flows-6MDMBQUZ.js.map} +1 -1
- package/dist/{helpers-KLO5VUVZ.js → helpers-IELIL4YR.js} +13 -13
- package/dist/{helpers-KLO5VUVZ.js.map → helpers-IELIL4YR.js.map} +1 -1
- package/dist/library/index.js +7 -7
- package/dist/{library-publish-X6JGR7K3.js → library-publish-YKBYHZ43.js} +17 -17
- package/dist/{library-publish-X6JGR7K3.js.map → library-publish-YKBYHZ43.js.map} +1 -1
- package/dist/{open-library-S2ZFKJUK.js → open-library-ULRYWTEA.js} +15 -15
- package/dist/{open-library-S2ZFKJUK.js.map → open-library-ULRYWTEA.js.map} +1 -1
- package/dist/{paths-OI5IIS22.js → paths-4MTICP3T.js} +7 -7
- package/dist/{paths-OI5IIS22.js.map → paths-4MTICP3T.js.map} +1 -1
- package/dist/{plugin-store-C67RLSPD.js → plugin-store-GQ4WQZJ2.js} +6 -6
- package/dist/{plugin-store-C67RLSPD.js.map → plugin-store-GQ4WQZJ2.js.map} +1 -1
- package/dist/{project-7VOTYB7O.js → project-VKYNDEB6.js} +14 -14
- package/dist/{project-7VOTYB7O.js.map → project-VKYNDEB6.js.map} +1 -1
- package/dist/resolver/index.js +5 -5
- package/dist/runner/index.js +24 -24
- package/dist/runner/src/capability-registry.d.ts +13 -0
- package/dist/runner/src/capability-registry.d.ts.map +1 -1
- package/dist/runner/src/compaction/orchestrator.d.ts +8 -0
- package/dist/runner/src/compaction/orchestrator.d.ts.map +1 -1
- package/dist/runner/src/compaction-gate.d.ts +64 -1
- package/dist/runner/src/compaction-gate.d.ts.map +1 -1
- package/dist/runner/src/driver-swap-gate.d.ts +17 -0
- package/dist/runner/src/driver-swap-gate.d.ts.map +1 -1
- package/dist/runner/src/external-mcp.d.ts +6 -0
- package/dist/runner/src/external-mcp.d.ts.map +1 -1
- package/dist/runner/src/mcp-pinned-ca.d.ts +8 -0
- package/dist/runner/src/mcp-pinned-ca.d.ts.map +1 -0
- package/dist/runner/src/prompt-turn-queue.d.ts +51 -0
- package/dist/runner/src/prompt-turn-queue.d.ts.map +1 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +10 -10
- package/dist/sdk/bridge.js +11 -11
- package/dist/sdk/core.js +4 -4
- package/dist/sdk/flow.js +5 -5
- package/dist/sdk/index.js +24 -24
- package/dist/sdk/resolver.js +5 -5
- package/dist/sdk/runner.js +24 -24
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/store.js +1 -1
- package/dist/sdk/types.js +1 -1
- package/dist/session/index.js +2 -2
- package/dist/session/src/bounded-subscriber-transport.d.ts +11 -4
- package/dist/session/src/bounded-subscriber-transport.d.ts.map +1 -1
- package/dist/session/src/dispatcher.d.ts +5 -0
- package/dist/session/src/dispatcher.d.ts.map +1 -1
- package/dist/session/src/index.d.ts +1 -1
- package/dist/session/src/index.d.ts.map +1 -1
- package/dist/session/src/types.d.ts +20 -1
- package/dist/session/src/types.d.ts.map +1 -1
- package/dist/{setup-RO3PGJYS.js → setup-INJFK3VJ.js} +20 -20
- package/dist/{setup-RO3PGJYS.js.map → setup-INJFK3VJ.js.map} +1 -1
- package/dist/{skills-4YTVHMOH.js → skills-JHUY4DFE.js} +10 -10
- package/dist/{skills-4YTVHMOH.js.map → skills-JHUY4DFE.js.map} +1 -1
- package/dist/{source-ZZLLOP2U.js → source-IZXICUBU.js} +16 -16
- package/dist/{source-ZZLLOP2U.js.map → source-IZXICUBU.js.map} +1 -1
- package/dist/{source-manifest-publish-7WRQDIXO.js → source-manifest-publish-4JHOT4PA.js} +18 -18
- package/dist/{source-manifest-publish-7WRQDIXO.js.map → source-manifest-publish-4JHOT4PA.js.map} +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/src/store.d.ts +30 -1
- package/dist/store/src/store.d.ts.map +1 -1
- package/dist/store/src/types.d.ts +17 -0
- package/dist/store/src/types.d.ts.map +1 -1
- package/dist/tui/index.js +24 -24
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/events.d.ts +24 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/manifests/mcp-server.d.ts +1 -0
- package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
- package/dist/types/src/protocol.d.ts +2 -0
- package/dist/types/src/protocol.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +12 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +11 -11
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-2FBPAR2V.js.map +0 -1
- package/dist/chunk-66A35U4V.js.map +0 -1
- package/dist/chunk-7LZJRVKJ.js.map +0 -1
- package/dist/chunk-AO7TCPOS.js.map +0 -1
- package/dist/chunk-DHLE66FV.js.map +0 -1
- package/dist/chunk-IFUQ6XBQ.js.map +0 -1
- package/dist/chunk-JS7DCCDA.js.map +0 -1
- package/dist/chunk-LRCSWOZO.js.map +0 -1
- package/dist/chunk-MTWZ7KHZ.js.map +0 -1
- package/dist/chunk-TGE33MKN.js.map +0 -1
- package/dist/chunk-Z2QI42YH.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { factoryAssetRoots } from './chunk-
|
|
1
|
+
import { factoryAssetRoots } from './chunk-VRFKCF3R.js';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import path from 'path';
|
|
@@ -19,5 +19,5 @@ var MONOREPO_ROOT = findMonorepoRoot(__ownDir);
|
|
|
19
19
|
var AI_RESOURCES = factoryAssetRoots()[0] ?? path.join(os.homedir(), ".skaile", "libraries");
|
|
20
20
|
|
|
21
21
|
export { AI_RESOURCES, MONOREPO_ROOT };
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-XN7DAZB7.js.map
|
|
23
|
+
//# sourceMappingURL=chunk-XN7DAZB7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAgBA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GACX,iBAAA,EAAkB,CAAE,CAAC,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,OAAA,EAAQ,EAAG,SAAA,EAAW,WAAW","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAgBA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GACX,iBAAA,EAAkB,CAAE,CAAC,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,OAAA,EAAQ,EAAG,SAAA,EAAW,WAAW","file":"chunk-XN7DAZB7.js","sourcesContent":["import fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { factoryAssetRoots } from \"@skaile/workspaces/core\";\n\n/**\n * The content-root policy lives in `@skaile/workspaces/core` so the flow\n * connector's resolution surfaces can reach it too — `factory-assets → cli`\n * would be a module cycle. Re-exported here because this module is the CLI's\n * documented path surface and every CLI caller imports it from here.\n *\n * @docLink cli/dev-guide#paths\n */\nexport { aiResourceRoots } from \"@skaile/workspaces/core\";\n\nconst __ownDir = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Walk up from `from` looking for the monorepo marker (`biome.json`, the\n * repo-root shared tooling config). Returns the matching directory or `null`\n * when none is found within eight levels — the latter is the typical case when\n * `@skaile/workspaces` has been installed via `npm i` without a skaile-dev\n * workspace context. Used only to gate dev-only commands (e.g.\n * `serve --compile-test`); first-party content is located via\n * {@link aiResourceRoots}, not this.\n */\nfunction findMonorepoRoot(from: string): string | null {\n let dir = from;\n for (let i = 0; i < 8; i++) {\n if (fs.existsSync(path.join(dir, \"biome.json\"))) return dir;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Absolute path to the monorepo root, or `null` when the CLI is running\n * outside the skaile-dev workspace (typical for `npm i -g` installs).\n *\n * Consumers that only make sense inside the workspace (e.g.\n * `skaile serve --compile-test`) MUST check for `null` and report a\n * \"monorepo-only feature\" error before proceeding.\n *\n * @docLink cli/dev-guide#paths\n */\nexport const MONOREPO_ROOT: string | null = findMonorepoRoot(__ownDir);\n\n/**\n * Default content root used by path display and the `validate` command.\n *\n * The primary first-party `factory-assets/` root resolved through the shared\n * `factoryAssetRoots()` helper — the `SKAILE_FACTORY_ASSETS_DIR` override when\n * set, else the in-repo source during dev / bundled `dist/factory-assets/` after\n * `npm i`. Falls back to `~/.skaile/libraries/` — the user-library directory\n * managed by `skaile library add` — when the package cannot be located.\n * Consumers `fs.existsSync` first and degrade to \"no skills / flows discovered\".\n *\n * @docLink cli/dev-guide#paths\n */\nexport const AI_RESOURCES: string =\n factoryAssetRoots()[0] ?? path.join(os.homedir(), \".skaile\", \"libraries\");\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { logErr } from './chunk-
|
|
2
|
-
import { flowKindProvider } from './chunk-
|
|
3
|
-
import { knowledgeKindProvider } from './chunk-
|
|
4
|
-
import { createDefaultRegistry } from './chunk-
|
|
1
|
+
import { logErr } from './chunk-L7R52OOV.js';
|
|
2
|
+
import { flowKindProvider } from './chunk-FLGLODDF.js';
|
|
3
|
+
import { knowledgeKindProvider } from './chunk-BSIHJZKN.js';
|
|
4
|
+
import { createDefaultRegistry } from './chunk-DFZDL62S.js';
|
|
5
5
|
|
|
6
6
|
// cli/src/open-registry.ts
|
|
7
7
|
function createFullRegistry() {
|
|
@@ -103,5 +103,5 @@ async function openLibraryManager() {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export { LocalCatalogDisabledError, createFullRegistry, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource };
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
107
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-YU433JEL.js.map
|
|
107
|
+
//# sourceMappingURL=chunk-YU433JEL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/open-registry.ts","../cli/src/open-library.ts"],"names":["source"],"mappings":"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","file":"chunk-24X2GGSC.js","sourcesContent":["/**\n * open-registry.ts — shared helper to create a full AssetKindRegistry.\n *\n * Bootstraps the registry with all built-in providers (9 core + preset)\n * from @skaile/discovery, plus the extension kind providers (flow from\n * @skaile/workspaces/factory-assets/connectors/flow/engine, knowledge from @skaile/library).\n *\n * This is the single registration point for the CLI. All code paths\n * that need a registry (source sync, lib-status, etc.) should use this.\n */\n\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultRegistry } from \"@skaile/workspaces/discovery\";\nimport { flowKindProvider } from \"@skaile/workspaces/factory-assets/connectors/flow/engine\";\nimport { knowledgeKindProvider } from \"@skaile/workspaces/library\";\n\n/**\n * Create a fully-configured AssetKindRegistry with all known providers.\n *\n * Registers:\n * - 9 core kinds (skill, agent, connector, mount, mcp-server, contract, prompt, persona, ruleset)\n * - preset (composition entity)\n * - flow (extension, from @skaile/workspaces/factory-assets/connectors/flow/engine)\n * - knowledge (extension, from @skaile/library)\n *\n * @returns An unfrozen registry (auto-freezes on first read)\n */\nexport function createFullRegistry(): AssetKindRegistry {\n const registry = createDefaultRegistry();\n registry.register(flowKindProvider);\n registry.register(knowledgeKindProvider);\n return registry;\n}\n","/**\n * open-library.ts — shared helpers to open the LocalIndex and the configured\n * Catalog source.\n *\n * Lazy-loads the `@skaile/workspaces/library` subpath and returns the\n * LocalIndex instance (backed by `@libsql/client`; runs on Node and Bun).\n * The catalog-source helper reads\n * `~/.skaile/config.yaml` (and project-level overlay if `projectDir` is given)\n * to decide between {@link RemoteCatalogSource} (default — points at\n * `https://skaile.store`) and a {@link LocalCatalogSource} bound to the most\n * recent local library registered via `skaile source add`.\n */\n\nimport { logErr } from \"./helpers.ts\";\nimport { createFullRegistry } from \"./open-registry.ts\";\n\n/** Thrown by {@link openCatalogSource} when `catalog.url` is the `local` sentinel. */\nexport class LocalCatalogDisabledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"LocalCatalogDisabledError\";\n }\n}\n\n/**\n * Open the LocalIndex with the full kind registry. Exits with code 1\n * if the library directory cannot be created.\n *\n * @returns A `LocalIndex` instance ready for use.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibrary() {\n try {\n const { LocalIndex } = await import(\"@skaile/workspaces/library\");\n return new LocalIndex({ kindRegistry: createFullRegistry() });\n } catch (err) {\n logErr(`Could not open LocalIndex: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n/**\n * Resolve the configured **remote** Catalog source for the CLI.\n *\n * Reads `~/.skaile/config.yaml` (plus the optional project-level overlay) and\n * returns a {@link RemoteCatalogSource} pointing at `catalog.url` (default:\n * `https://skaile.store`). The `cache_ttl: 0` config flag flips the source\n * into air-gapped mode: network reads are disabled, only `skaile update`\n * performs refreshes.\n *\n * **Local-mode rejection.** If the resolved config has `catalog.url: local`\n * this helper throws — callers wanting the dispatched local-or-remote source\n * must use {@link resolveCatalogSource}. Remote-only consumers like\n * `skaile update --catalog-only` rely on this strict behaviour.\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A configured {@link RemoteCatalogSource}.\n * @throws When `catalog.url` is the `local` sentinel.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<\n | import(\"@skaile/workspaces/library\").RemoteCatalogSource\n | import(\"@skaile/workspaces/library\").RestCatalogSource\n> {\n const { resolveConfig, RemoteCatalogSource, RestCatalogSource, isLocalCatalogUrl } = await import(\n \"@skaile/workspaces/library\"\n );\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n if (isLocalCatalogUrl(baseUrl)) {\n throw new LocalCatalogDisabledError(\n \"catalog.url is set to 'local' — remote catalog is disabled. \" +\n \"Use `skaile source add <path>` + `skaile source sync` for local sources, \" +\n \"or set `catalog.url: https://skaile.store` in ~/.skaile/config.yaml.\",\n );\n }\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n if (cfg.catalog.framing === \"rest\") {\n return new RestCatalogSource({ baseUrl, cacheTtlMs });\n }\n return new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n}\n\n/**\n * Resolved catalog source plus a close handle for releasing any underlying\n * resources (e.g. the `LocalIndex` SQLite connection in local mode).\n *\n * Callers MUST invoke `close()` when done — typically in a `finally` block.\n * For remote-mode sources `close()` is a no-op, but the contract is uniform\n * so consumers don't have to branch.\n *\n * @docLink cli/dev-guide#open-library\n */\nexport interface ResolvedCatalogSource {\n /** The {@link ICatalogSource} ready for use. */\n source: import(\"@skaile/workspaces/library\").ICatalogSource;\n /** Release any underlying resources (SQLite handle in local mode). */\n close(): void;\n}\n\n/**\n * Resolve the configured Catalog source — local or remote — based on\n * `~/.skaile/config.yaml`.\n *\n * Dispatch:\n * - `catalog.url: local` → opens {@link LocalIndex}, picks the most recently\n * registered local library whose `path` still exists on disk, and returns a\n * {@link LocalCatalogSource} bound to that library. Throws if no usable\n * local library is registered.\n * - any URL → returns {@link RemoteCatalogSource} (same as\n * {@link openCatalogSource}).\n *\n * The returned `close()` releases the underlying `LocalIndex` SQLite handle\n * in local mode (no-op in remote mode). Callers MUST invoke it — typically in\n * a `finally` block — to satisfy `library/CLAUDE.md` § \"Notes for Consumers\".\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A `ResolvedCatalogSource` carrying the source and a close handle.\n * @throws When `local` is configured but no usable local library is registered.\n * @docLink cli/dev-guide#open-library\n */\nexport async function resolveCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<ResolvedCatalogSource> {\n const {\n resolveConfig,\n RemoteCatalogSource,\n RestCatalogSource,\n LocalCatalogSource,\n isLocalCatalogUrl,\n } = await import(\"@skaile/workspaces/library\");\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n\n if (isLocalCatalogUrl(baseUrl)) {\n const fs = await import(\"node:fs\");\n const library = await openLibrary();\n try {\n const sources = await library.listSources();\n type LibraryRow = (typeof sources)[number];\n // Type-narrow: `path` is required for local libraries after the filter.\n const usable = sources\n .filter(\n (s): s is LibraryRow & { path: string } =>\n s.backend === \"local\" && typeof s.path === \"string\" && s.path.length > 0,\n )\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n\n if (usable.length === 0) {\n throw new Error(\n \"catalog.url is set to 'local' but no local library is registered. \" +\n \"Run `skaile source add <path>` first, then `skaile source sync`.\",\n );\n }\n\n // Prefer the most recently added library whose path still exists.\n const present = usable.find((s) => fs.existsSync(s.path));\n if (!present) {\n const head = usable[0];\n throw new Error(\n `catalog.url is set to 'local' but every registered local library has a missing path on disk. ` +\n `Most recent: ${head.path} (library ${head.id}). ` +\n `Re-register with \\`skaile source add <existing-path>\\` or run \\`skaile source list\\` to inspect.`,\n );\n }\n\n const source = new LocalCatalogSource(\n library,\n present.id,\n present.path,\n createFullRegistry(),\n );\n return { source, close: () => library.close() };\n } catch (err) {\n // Release the handle on any failure during dispatch — otherwise the\n // SQLite WAL state leaks for the lifetime of the process.\n library.close();\n throw err;\n }\n }\n\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n const source =\n cfg.catalog.framing === \"rest\"\n ? new RestCatalogSource({ baseUrl, cacheTtlMs })\n : new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n return { source, close: () => {} };\n}\n\n/**\n * Open the LibraryManager bound to the active LocalIndex.\n * Caller owns lifetime — must call `close()` (returned helper closes the\n * underlying LocalIndex).\n *\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibraryManager(): Promise<{\n manager: import(\"@skaile/workspaces/library\").LibraryManager;\n library: import(\"@skaile/workspaces/library\").LocalIndex;\n close: () => void;\n}> {\n const { LibraryManager } = await import(\"@skaile/workspaces/library\");\n const library = await openLibrary();\n const manager = new LibraryManager(library);\n return { manager, library, close: () => library.close() };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../cli/src/open-registry.ts","../cli/src/open-library.ts"],"names":["source"],"mappings":"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","file":"chunk-YU433JEL.js","sourcesContent":["/**\n * open-registry.ts — shared helper to create a full AssetKindRegistry.\n *\n * Bootstraps the registry with all built-in providers (9 core + preset)\n * from @skaile/discovery, plus the extension kind providers (flow from\n * @skaile/workspaces/factory-assets/connectors/flow/engine, knowledge from @skaile/library).\n *\n * This is the single registration point for the CLI. All code paths\n * that need a registry (source sync, lib-status, etc.) should use this.\n */\n\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultRegistry } from \"@skaile/workspaces/discovery\";\nimport { flowKindProvider } from \"@skaile/workspaces/factory-assets/connectors/flow/engine\";\nimport { knowledgeKindProvider } from \"@skaile/workspaces/library\";\n\n/**\n * Create a fully-configured AssetKindRegistry with all known providers.\n *\n * Registers:\n * - 9 core kinds (skill, agent, connector, mount, mcp-server, contract, prompt, persona, ruleset)\n * - preset (composition entity)\n * - flow (extension, from @skaile/workspaces/factory-assets/connectors/flow/engine)\n * - knowledge (extension, from @skaile/library)\n *\n * @returns An unfrozen registry (auto-freezes on first read)\n */\nexport function createFullRegistry(): AssetKindRegistry {\n const registry = createDefaultRegistry();\n registry.register(flowKindProvider);\n registry.register(knowledgeKindProvider);\n return registry;\n}\n","/**\n * open-library.ts — shared helpers to open the LocalIndex and the configured\n * Catalog source.\n *\n * Lazy-loads the `@skaile/workspaces/library` subpath and returns the\n * LocalIndex instance (backed by `@libsql/client`; runs on Node and Bun).\n * The catalog-source helper reads\n * `~/.skaile/config.yaml` (and project-level overlay if `projectDir` is given)\n * to decide between {@link RemoteCatalogSource} (default — points at\n * `https://skaile.store`) and a {@link LocalCatalogSource} bound to the most\n * recent local library registered via `skaile source add`.\n */\n\nimport { logErr } from \"./helpers.ts\";\nimport { createFullRegistry } from \"./open-registry.ts\";\n\n/** Thrown by {@link openCatalogSource} when `catalog.url` is the `local` sentinel. */\nexport class LocalCatalogDisabledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"LocalCatalogDisabledError\";\n }\n}\n\n/**\n * Open the LocalIndex with the full kind registry. Exits with code 1\n * if the library directory cannot be created.\n *\n * @returns A `LocalIndex` instance ready for use.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibrary() {\n try {\n const { LocalIndex } = await import(\"@skaile/workspaces/library\");\n return new LocalIndex({ kindRegistry: createFullRegistry() });\n } catch (err) {\n logErr(`Could not open LocalIndex: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n/**\n * Resolve the configured **remote** Catalog source for the CLI.\n *\n * Reads `~/.skaile/config.yaml` (plus the optional project-level overlay) and\n * returns a {@link RemoteCatalogSource} pointing at `catalog.url` (default:\n * `https://skaile.store`). The `cache_ttl: 0` config flag flips the source\n * into air-gapped mode: network reads are disabled, only `skaile update`\n * performs refreshes.\n *\n * **Local-mode rejection.** If the resolved config has `catalog.url: local`\n * this helper throws — callers wanting the dispatched local-or-remote source\n * must use {@link resolveCatalogSource}. Remote-only consumers like\n * `skaile update --catalog-only` rely on this strict behaviour.\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A configured {@link RemoteCatalogSource}.\n * @throws When `catalog.url` is the `local` sentinel.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<\n | import(\"@skaile/workspaces/library\").RemoteCatalogSource\n | import(\"@skaile/workspaces/library\").RestCatalogSource\n> {\n const { resolveConfig, RemoteCatalogSource, RestCatalogSource, isLocalCatalogUrl } = await import(\n \"@skaile/workspaces/library\"\n );\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n if (isLocalCatalogUrl(baseUrl)) {\n throw new LocalCatalogDisabledError(\n \"catalog.url is set to 'local' — remote catalog is disabled. \" +\n \"Use `skaile source add <path>` + `skaile source sync` for local sources, \" +\n \"or set `catalog.url: https://skaile.store` in ~/.skaile/config.yaml.\",\n );\n }\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n if (cfg.catalog.framing === \"rest\") {\n return new RestCatalogSource({ baseUrl, cacheTtlMs });\n }\n return new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n}\n\n/**\n * Resolved catalog source plus a close handle for releasing any underlying\n * resources (e.g. the `LocalIndex` SQLite connection in local mode).\n *\n * Callers MUST invoke `close()` when done — typically in a `finally` block.\n * For remote-mode sources `close()` is a no-op, but the contract is uniform\n * so consumers don't have to branch.\n *\n * @docLink cli/dev-guide#open-library\n */\nexport interface ResolvedCatalogSource {\n /** The {@link ICatalogSource} ready for use. */\n source: import(\"@skaile/workspaces/library\").ICatalogSource;\n /** Release any underlying resources (SQLite handle in local mode). */\n close(): void;\n}\n\n/**\n * Resolve the configured Catalog source — local or remote — based on\n * `~/.skaile/config.yaml`.\n *\n * Dispatch:\n * - `catalog.url: local` → opens {@link LocalIndex}, picks the most recently\n * registered local library whose `path` still exists on disk, and returns a\n * {@link LocalCatalogSource} bound to that library. Throws if no usable\n * local library is registered.\n * - any URL → returns {@link RemoteCatalogSource} (same as\n * {@link openCatalogSource}).\n *\n * The returned `close()` releases the underlying `LocalIndex` SQLite handle\n * in local mode (no-op in remote mode). Callers MUST invoke it — typically in\n * a `finally` block — to satisfy `library/CLAUDE.md` § \"Notes for Consumers\".\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A `ResolvedCatalogSource` carrying the source and a close handle.\n * @throws When `local` is configured but no usable local library is registered.\n * @docLink cli/dev-guide#open-library\n */\nexport async function resolveCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<ResolvedCatalogSource> {\n const {\n resolveConfig,\n RemoteCatalogSource,\n RestCatalogSource,\n LocalCatalogSource,\n isLocalCatalogUrl,\n } = await import(\"@skaile/workspaces/library\");\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n\n if (isLocalCatalogUrl(baseUrl)) {\n const fs = await import(\"node:fs\");\n const library = await openLibrary();\n try {\n const sources = await library.listSources();\n type LibraryRow = (typeof sources)[number];\n // Type-narrow: `path` is required for local libraries after the filter.\n const usable = sources\n .filter(\n (s): s is LibraryRow & { path: string } =>\n s.backend === \"local\" && typeof s.path === \"string\" && s.path.length > 0,\n )\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n\n if (usable.length === 0) {\n throw new Error(\n \"catalog.url is set to 'local' but no local library is registered. \" +\n \"Run `skaile source add <path>` first, then `skaile source sync`.\",\n );\n }\n\n // Prefer the most recently added library whose path still exists.\n const present = usable.find((s) => fs.existsSync(s.path));\n if (!present) {\n const head = usable[0];\n throw new Error(\n `catalog.url is set to 'local' but every registered local library has a missing path on disk. ` +\n `Most recent: ${head.path} (library ${head.id}). ` +\n `Re-register with \\`skaile source add <existing-path>\\` or run \\`skaile source list\\` to inspect.`,\n );\n }\n\n const source = new LocalCatalogSource(\n library,\n present.id,\n present.path,\n createFullRegistry(),\n );\n return { source, close: () => library.close() };\n } catch (err) {\n // Release the handle on any failure during dispatch — otherwise the\n // SQLite WAL state leaks for the lifetime of the process.\n library.close();\n throw err;\n }\n }\n\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n const source =\n cfg.catalog.framing === \"rest\"\n ? new RestCatalogSource({ baseUrl, cacheTtlMs })\n : new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n return { source, close: () => {} };\n}\n\n/**\n * Open the LibraryManager bound to the active LocalIndex.\n * Caller owns lifetime — must call `close()` (returned helper closes the\n * underlying LocalIndex).\n *\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibraryManager(): Promise<{\n manager: import(\"@skaile/workspaces/library\").LibraryManager;\n library: import(\"@skaile/workspaces/library\").LocalIndex;\n close: () => void;\n}> {\n const { LibraryManager } = await import(\"@skaile/workspaces/library\");\n const library = await openLibrary();\n const manager = new LibraryManager(library);\n return { manager, library, close: () => library.close() };\n}\n"]}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { AI_RESOURCES } from '../chunk-
|
|
3
|
-
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportInstalledSoftDeps } from '../chunk-
|
|
4
|
-
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-
|
|
5
|
-
import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity } from '../chunk-
|
|
6
|
-
import { makeSourceCommand, syncProjectSources } from '../chunk-
|
|
7
|
-
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-
|
|
8
|
-
import { logErr, S, logOk, logInfo, logWarn, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth } from '../chunk-
|
|
2
|
+
import { AI_RESOURCES } from '../chunk-XN7DAZB7.js';
|
|
3
|
+
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportInstalledSoftDeps } from '../chunk-SOFPA4S4.js';
|
|
4
|
+
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-KN5Y5BXK.js';
|
|
5
|
+
import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity } from '../chunk-MDBAEEY5.js';
|
|
6
|
+
import { makeSourceCommand, syncProjectSources } from '../chunk-U4CNCL7Q.js';
|
|
7
|
+
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-YU433JEL.js';
|
|
8
|
+
import { logErr, S, logOk, logInfo, logWarn, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth } from '../chunk-L7R52OOV.js';
|
|
9
9
|
import { LocalSecretsProvider } from '../chunk-6BEGKO2Q.js';
|
|
10
|
-
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-
|
|
11
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
14
|
-
import '../chunk-
|
|
15
|
-
import '../chunk-
|
|
10
|
+
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-USJWXEXS.js';
|
|
11
|
+
import { buildClaudePluginFiles } from '../chunk-ENXE4BKS.js';
|
|
12
|
+
import '../chunk-A5RRXBLI.js';
|
|
13
|
+
import '../chunk-MRS5YHPI.js';
|
|
14
|
+
import '../chunk-H3KXUUYQ.js';
|
|
15
|
+
import '../chunk-OEBAXTQ4.js';
|
|
16
16
|
import '../chunk-4ZTPYIBE.js';
|
|
17
17
|
import '../chunk-35G4M33T.js';
|
|
18
18
|
import '../chunk-R6O6YWU7.js';
|
|
@@ -24,50 +24,50 @@ import '../chunk-5LKOAX7I.js';
|
|
|
24
24
|
import '../chunk-32NA4TVC.js';
|
|
25
25
|
import '../chunk-W3UDISS2.js';
|
|
26
26
|
import '../chunk-HCYS7GFP.js';
|
|
27
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
27
|
+
import { runFlow, resumeFlow } from '../chunk-SGMCSVTO.js';
|
|
28
28
|
import '../chunk-4R6DROGN.js';
|
|
29
|
-
import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-
|
|
30
|
-
import '../chunk-
|
|
29
|
+
import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-3SUWLY3H.js';
|
|
30
|
+
import '../chunk-5JAO4MXA.js';
|
|
31
31
|
import '../chunk-6X4DHKHP.js';
|
|
32
|
-
import '../chunk-
|
|
33
|
-
import '../chunk-
|
|
34
|
-
import '../chunk-
|
|
35
|
-
import '../chunk-
|
|
36
|
-
import '../chunk-
|
|
32
|
+
import '../chunk-WTBXGJCD.js';
|
|
33
|
+
import '../chunk-2QYQOJ2F.js';
|
|
34
|
+
import '../chunk-S63H4HDH.js';
|
|
35
|
+
import '../chunk-5SGS5SN2.js';
|
|
36
|
+
import '../chunk-NTASYPDN.js';
|
|
37
37
|
import '../chunk-EINLFFP6.js';
|
|
38
38
|
import '../chunk-LOO5CB5M.js';
|
|
39
|
-
import '../chunk-
|
|
40
|
-
import '../chunk-
|
|
39
|
+
import '../chunk-RZXP5ZER.js';
|
|
40
|
+
import '../chunk-UFBURH6K.js';
|
|
41
41
|
import '../chunk-XBSQ4KMC.js';
|
|
42
42
|
import '../chunk-YROR332M.js';
|
|
43
|
-
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-
|
|
43
|
+
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-WQULDAH2.js';
|
|
44
44
|
import '../chunk-6E6PKKAD.js';
|
|
45
45
|
import '../chunk-IFGTRL2I.js';
|
|
46
|
-
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-
|
|
46
|
+
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-FLGLODDF.js';
|
|
47
47
|
import '../chunk-YYH5EVPM.js';
|
|
48
48
|
import '../chunk-DIQDYNXZ.js';
|
|
49
49
|
import '../chunk-K3IBZ2UZ.js';
|
|
50
50
|
import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind, flowSkillVersionPins } from '../chunk-UDFWBALP.js';
|
|
51
51
|
import '../chunk-ORH2BZEM.js';
|
|
52
|
-
import '../chunk-
|
|
53
|
-
import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-
|
|
54
|
-
import { getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-
|
|
55
|
-
import '../chunk-
|
|
52
|
+
import '../chunk-V2OQ3BI6.js';
|
|
53
|
+
import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-R2SYODNK.js';
|
|
54
|
+
import { getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-BSIHJZKN.js';
|
|
55
|
+
import '../chunk-DFZDL62S.js';
|
|
56
56
|
import '../chunk-VOEBLPXO.js';
|
|
57
57
|
import '../chunk-R7FOF242.js';
|
|
58
58
|
import '../chunk-JXT46QFC.js';
|
|
59
|
-
import '../chunk-
|
|
59
|
+
import '../chunk-VCLN2IUM.js';
|
|
60
60
|
import '../chunk-CGYEHQOX.js';
|
|
61
|
-
import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, aiResourceRoots, readLock, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile } from '../chunk-
|
|
61
|
+
import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, aiResourceRoots, readLock, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile } from '../chunk-FJYOQMXT.js';
|
|
62
62
|
import '../chunk-4GY63JU6.js';
|
|
63
|
-
import { factoryAssetRoots } from '../chunk-
|
|
63
|
+
import { factoryAssetRoots } from '../chunk-VRFKCF3R.js';
|
|
64
64
|
import '../chunk-KIFJWSNC.js';
|
|
65
65
|
import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
|
|
66
66
|
import { detectDomains, assetSearchDirs } from '../chunk-QVZA2MDT.js';
|
|
67
|
-
import { globalCacheRoot, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, matchPin, coerceVersion, loadSkWorkspaceConfig, resolveSkWorkspaceConfig, storeManifestSlug, isWorkspaceConfigFilename } from '../chunk-
|
|
67
|
+
import { globalCacheRoot, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, matchPin, coerceVersion, loadSkWorkspaceConfig, resolveSkWorkspaceConfig, storeManifestSlug, isWorkspaceConfigFilename } from '../chunk-QKXDRBLL.js';
|
|
68
68
|
import { SUPPORTED_DRIVER_TARGETS } from '../chunk-EB4ZTESQ.js';
|
|
69
69
|
import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest, loadSkPublishManifest, saveSkPublishManifest } from '../chunk-P4VHQA4N.js';
|
|
70
|
-
import { parseFrontmatter, scanDirectory } from '../chunk-
|
|
70
|
+
import { parseFrontmatter, scanDirectory } from '../chunk-SQ7IN7KR.js';
|
|
71
71
|
import { parseAssetRef, ASSET_KINDS, isValidAssetName, slugifyAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-GEEW6SY2.js';
|
|
72
72
|
import { openSqlite } from '../chunk-JMKB7IB4.js';
|
|
73
73
|
import { portableSpawn, portableSpawnSync } from '../chunk-ICSCSM5D.js';
|
|
@@ -76,8 +76,8 @@ import '../chunk-C3CAXQMA.js';
|
|
|
76
76
|
import '../chunk-BOFL7GIF.js';
|
|
77
77
|
import '../chunk-KTBKW2FI.js';
|
|
78
78
|
import '../chunk-UQ6LFBPZ.js';
|
|
79
|
-
import '../chunk-
|
|
80
|
-
import { validatePreset } from '../chunk-
|
|
79
|
+
import '../chunk-NFECHLV6.js';
|
|
80
|
+
import { validatePreset } from '../chunk-2D3C4AJP.js';
|
|
81
81
|
import '../chunk-NSBPE2FW.js';
|
|
82
82
|
import * as fs12 from 'fs';
|
|
83
83
|
import fs12__default, { readFileSync, existsSync, mkdirSync, writeFileSync, lstatSync, rmSync, readdirSync, statSync } from 'fs';
|
|
@@ -129,7 +129,7 @@ async function runSearch(kind, query, opts) {
|
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
async function searchIndex(query, kind) {
|
|
132
|
-
const { openLibrary: openLibrary2 } = await import('../open-library-
|
|
132
|
+
const { openLibrary: openLibrary2 } = await import('../open-library-ULRYWTEA.js');
|
|
133
133
|
const library = await openLibrary2();
|
|
134
134
|
try {
|
|
135
135
|
const defs = await library.listAssetDefs(kind ? { kind } : {});
|
|
@@ -182,7 +182,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
|
182
182
|
const factory = await searchFactory(projectDir, query, kind);
|
|
183
183
|
let entries = unionEntries(await searchIndex(query, kind), factory);
|
|
184
184
|
if (entries.length === 0 && !query && !kind && !airGapped) {
|
|
185
|
-
const { autoSyncForSearch } = await import('../source-
|
|
185
|
+
const { autoSyncForSearch } = await import('../source-IZXICUBU.js');
|
|
186
186
|
if (await autoSyncForSearch(projectDir)) {
|
|
187
187
|
entries = unionEntries(await searchIndex(query, kind), factory);
|
|
188
188
|
}
|
|
@@ -236,7 +236,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
236
236
|
logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
|
|
237
237
|
return;
|
|
238
238
|
}
|
|
239
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-
|
|
239
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-ULRYWTEA.js');
|
|
240
240
|
try {
|
|
241
241
|
const remote = await openCatalogSource2({ projectDir: path36__default.resolve(opts.projectDir) });
|
|
242
242
|
const assets = await remote.listAssets(kind ? { kind } : {});
|
|
@@ -315,6 +315,13 @@ async function promptSoftDepAdds(am2, ref, io) {
|
|
|
315
315
|
if (yes === true) await addEdge(edge.toRef);
|
|
316
316
|
}
|
|
317
317
|
}
|
|
318
|
+
async function reportBundleMembership(am2, ref, onHint) {
|
|
319
|
+
for (const bundle of await am2.bundlesContaining(ref)) {
|
|
320
|
+
onHint(
|
|
321
|
+
`${ref} is part of bundle ${bundle.name} \u2014 run \`skaile add ${bundle.ref}\` to add the whole set.`
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
318
325
|
async function promptSoftDepRemovals(am2, ref, io) {
|
|
319
326
|
if (io.noSoftDeps) return;
|
|
320
327
|
const orphans = (await am2.orphanedSoftDepsAfterRemoving([ref])).filter((o) => o.targetRef);
|
|
@@ -381,6 +388,7 @@ function makeAddCommand() {
|
|
|
381
388
|
);
|
|
382
389
|
else logInfo("Nothing to deploy (already up to date).");
|
|
383
390
|
} else for (const a of added) logOk(a);
|
|
391
|
+
await reportBundleMembership(am2, ref, (line) => logInfo(S.dim(line)));
|
|
384
392
|
} catch (err) {
|
|
385
393
|
spinner4.stop("Failed");
|
|
386
394
|
logErr(String(err));
|
|
@@ -551,7 +559,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
551
559
|
return { entry: match ?? deployed };
|
|
552
560
|
}
|
|
553
561
|
const lookup = opts.storeLookup ?? (async (filter) => {
|
|
554
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
562
|
+
const { resolveCatalogSource } = await import('../open-library-ULRYWTEA.js');
|
|
555
563
|
const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
556
564
|
try {
|
|
557
565
|
return await source.listAssets(filter);
|
|
@@ -567,7 +575,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
567
575
|
);
|
|
568
576
|
return { entry: hit ? catalogAssetToEntry(hit) : null };
|
|
569
577
|
} catch (err) {
|
|
570
|
-
const { LocalCatalogDisabledError } = await import('../open-library-
|
|
578
|
+
const { LocalCatalogDisabledError } = await import('../open-library-ULRYWTEA.js');
|
|
571
579
|
const storeNote = err instanceof Error ? err.message : String(err);
|
|
572
580
|
const disabled = err instanceof LocalCatalogDisabledError || /catalog\.url/i.test(storeNote);
|
|
573
581
|
return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
|
|
@@ -1187,7 +1195,7 @@ function makeCatalogCommand() {
|
|
|
1187
1195
|
return catalog;
|
|
1188
1196
|
}
|
|
1189
1197
|
async function runLocalCatalogTest(projectDir) {
|
|
1190
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1198
|
+
const { resolveCatalogSource } = await import('../open-library-ULRYWTEA.js');
|
|
1191
1199
|
let resolved;
|
|
1192
1200
|
try {
|
|
1193
1201
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -1900,7 +1908,7 @@ function makeConnectorCommand() {
|
|
|
1900
1908
|
console.log(`Run: skaile connector add <driver> to add one to your project.
|
|
1901
1909
|
`);
|
|
1902
1910
|
});
|
|
1903
|
-
cmd.command("add <driver>").option("--id <id>", "Connector instance ID (defaults to driver name)").option("--access <level>", "Access level: read-only | read-write
|
|
1911
|
+
cmd.command("add <driver>").option("--id <id>", "Connector instance ID (defaults to driver name)").option("--access <level>", "Access level: read-only | read-write (omitted: read-only default)").option("--no-install", "Skip npm dependency installation").option("--project-dir <path>", "Workspace directory", process.cwd()).description("Add a connector to skaile.yaml and install its npm deps").action(
|
|
1904
1912
|
async (driver, opts) => {
|
|
1905
1913
|
const { installNpmPackages } = await import('../connectors/index.js');
|
|
1906
1914
|
const { scanDirectory: scanDirectory2, factoryAssetRoots: factoryAssetRoots2, WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
@@ -1922,7 +1930,7 @@ function makeConnectorCommand() {
|
|
|
1922
1930
|
Adding connector: ${entry.name} (${driver})
|
|
1923
1931
|
`);
|
|
1924
1932
|
const id = opts.id ?? await promptText("Connector ID", driver);
|
|
1925
|
-
const access = opts.access
|
|
1933
|
+
const access = opts.access;
|
|
1926
1934
|
const fields = entry.metadata?.fields ?? [];
|
|
1927
1935
|
const fieldValues = {};
|
|
1928
1936
|
const requiredFields = fields.filter((f) => f.required);
|
|
@@ -1954,7 +1962,7 @@ ${installResult.output}`);
|
|
|
1954
1962
|
editor.setConnector({
|
|
1955
1963
|
id,
|
|
1956
1964
|
driver,
|
|
1957
|
-
access,
|
|
1965
|
+
...access ? { access } : {},
|
|
1958
1966
|
options: Object.keys(fieldValues).length > 0 ? fieldValues : void 0
|
|
1959
1967
|
});
|
|
1960
1968
|
editor.save();
|
|
@@ -2249,7 +2257,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
2249
2257
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
2250
2258
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
2251
2259
|
if (config.plugins && config.plugins.length > 0) {
|
|
2252
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
2260
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-GQ4WQZJ2.js');
|
|
2253
2261
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
2254
2262
|
for (const f of result.failed) logWarn(f.error);
|
|
2255
2263
|
}
|
|
@@ -3504,16 +3512,16 @@ function makeLibraryCommand() {
|
|
|
3504
3512
|
});
|
|
3505
3513
|
cmd.command("publish <lib>").description("Push + register the library's manifest atomically (needs git backend)").option("--asset <ref>", "Publish only the single asset matching this ref/name").option("--create-repo", "Provision + link a public github repo if the library has no remote").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(
|
|
3506
3514
|
async (lib, opts) => {
|
|
3507
|
-
const { runLibraryPublish } = await import('../library-publish-
|
|
3515
|
+
const { runLibraryPublish } = await import('../library-publish-YKBYHZ43.js');
|
|
3508
3516
|
await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
|
|
3509
3517
|
}
|
|
3510
3518
|
);
|
|
3511
3519
|
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) => {
|
|
3512
|
-
const { runLibraryRegister } = await import('../library-publish-
|
|
3520
|
+
const { runLibraryRegister } = await import('../library-publish-YKBYHZ43.js');
|
|
3513
3521
|
await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
|
|
3514
3522
|
});
|
|
3515
3523
|
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) => {
|
|
3516
|
-
const { runLibraryYank } = await import('../library-publish-
|
|
3524
|
+
const { runLibraryYank } = await import('../library-publish-YKBYHZ43.js');
|
|
3517
3525
|
await withStoreErrorHandling(() => runLibraryYank(lib, opts));
|
|
3518
3526
|
});
|
|
3519
3527
|
return cmd;
|
|
@@ -4235,7 +4243,7 @@ function scheduleSoftDepPreview() {
|
|
|
4235
4243
|
}
|
|
4236
4244
|
async function loadAssets() {
|
|
4237
4245
|
softDepPreviewCache.clear();
|
|
4238
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
4246
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-KTRFFJYM.js');
|
|
4239
4247
|
const { entries, domains, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
4240
4248
|
if (notes.length > 0) {
|
|
4241
4249
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -4441,7 +4449,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
4441
4449
|
async function loadSourcesAndLibraries() {
|
|
4442
4450
|
try {
|
|
4443
4451
|
const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir }, { getGlobalCacheDir: getGlobalCacheDir2 }] = await Promise.all([
|
|
4444
|
-
import('../open-library-
|
|
4452
|
+
import('../open-library-ULRYWTEA.js'),
|
|
4445
4453
|
import('../library/index.js'),
|
|
4446
4454
|
import('../core/index.js')
|
|
4447
4455
|
]);
|
|
@@ -6083,7 +6091,7 @@ function action2(fn) {
|
|
|
6083
6091
|
};
|
|
6084
6092
|
}
|
|
6085
6093
|
async function reconcileAndReport(projectDir, plugins) {
|
|
6086
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
6094
|
+
const { reconcilePlugins } = await import('../plugin-store-GQ4WQZJ2.js');
|
|
6087
6095
|
if (plugins.length === 0) {
|
|
6088
6096
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
6089
6097
|
return;
|
|
@@ -6099,7 +6107,7 @@ async function reconcileAndReport(projectDir, plugins) {
|
|
|
6099
6107
|
async function runInstall2(spec, opts) {
|
|
6100
6108
|
const projectDir = path36__default.resolve(opts.projectDir);
|
|
6101
6109
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
6102
|
-
const { specName } = await import('../plugin-store-
|
|
6110
|
+
const { specName } = await import('../plugin-store-GQ4WQZJ2.js');
|
|
6103
6111
|
const yamlPath = path36__default.join(projectDir, "skaile.yaml");
|
|
6104
6112
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
6105
6113
|
const replaced = editor.addPlugin(spec, specName);
|
|
@@ -6111,7 +6119,7 @@ async function runInstall2(spec, opts) {
|
|
|
6111
6119
|
async function runRemove(name, opts) {
|
|
6112
6120
|
const projectDir = path36__default.resolve(opts.projectDir);
|
|
6113
6121
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
6114
|
-
const { specName } = await import('../plugin-store-
|
|
6122
|
+
const { specName } = await import('../plugin-store-GQ4WQZJ2.js');
|
|
6115
6123
|
const yamlPath = path36__default.join(projectDir, "skaile.yaml");
|
|
6116
6124
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
6117
6125
|
const removed = editor.removePlugin(name, specName);
|
|
@@ -6139,7 +6147,7 @@ async function runList(opts) {
|
|
|
6139
6147
|
const registry = createPluginRegistry();
|
|
6140
6148
|
if (declared.length > 0) {
|
|
6141
6149
|
try {
|
|
6142
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
6150
|
+
const { loadPlugins } = await import('../plugin-store-GQ4WQZJ2.js');
|
|
6143
6151
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
6144
6152
|
for (const f of result.failed) logWarn(f.error);
|
|
6145
6153
|
} catch (err) {
|
|
@@ -7264,12 +7272,12 @@ function makeServeCommand() {
|
|
|
7264
7272
|
);
|
|
7265
7273
|
}
|
|
7266
7274
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
7267
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
7275
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-IELIL4YR.js');
|
|
7268
7276
|
try {
|
|
7269
7277
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
7270
7278
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
7271
7279
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
7272
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
7280
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-GQ4WQZJ2.js');
|
|
7273
7281
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
7274
7282
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
7275
7283
|
if (result.loaded.length > 0) {
|
|
@@ -7283,14 +7291,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
7283
7291
|
}
|
|
7284
7292
|
}
|
|
7285
7293
|
async function runCompileTest(opts) {
|
|
7286
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
7294
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-IELIL4YR.js');
|
|
7287
7295
|
const { tmpdir } = await import('os');
|
|
7288
7296
|
const { dirname: dirname4, join: join7, resolve: resolve5 } = await import('path');
|
|
7289
7297
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
7290
7298
|
const { unlinkSync, existsSync: existsSync15 } = await import('fs');
|
|
7291
7299
|
const { spawn } = await import('child_process');
|
|
7292
7300
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
7293
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
7301
|
+
const { MONOREPO_ROOT } = await import('../paths-4MTICP3T.js');
|
|
7294
7302
|
if (MONOREPO_ROOT === null) {
|
|
7295
7303
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
7296
7304
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -8166,7 +8174,7 @@ function makeStoreCommand() {
|
|
|
8166
8174
|
process.exit(2);
|
|
8167
8175
|
});
|
|
8168
8176
|
store.command("search <query>").description("Search the AI Asset Store catalog by name, description, or publisher").option("--kind <kind>", "Filter by asset kind (skill, agent, prompt, flow, \u2026)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
|
|
8169
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-
|
|
8177
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-ULRYWTEA.js');
|
|
8170
8178
|
try {
|
|
8171
8179
|
const remote = await openCatalogSource2({ projectDir: path36__default.resolve(opts.projectDir) });
|
|
8172
8180
|
const assets = await remote.listAssets(opts.kind ? { kind: opts.kind } : {});
|
|
@@ -8199,8 +8207,8 @@ function makeStoreCommand() {
|
|
|
8199
8207
|
}
|
|
8200
8208
|
});
|
|
8201
8209
|
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) => {
|
|
8202
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-
|
|
8203
|
-
const { supportsInstallManifest } = await import('../project-
|
|
8210
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-ULRYWTEA.js');
|
|
8211
|
+
const { supportsInstallManifest } = await import('../project-VKYNDEB6.js');
|
|
8204
8212
|
try {
|
|
8205
8213
|
const remote = await openCatalogSource2({ projectDir: path36__default.resolve(opts.projectDir) });
|
|
8206
8214
|
const asset = await remote.resolve(ref);
|
|
@@ -9288,7 +9296,7 @@ async function bootstrapUserConfig() {
|
|
|
9288
9296
|
}
|
|
9289
9297
|
async function hydrateInitSources(resolved, created) {
|
|
9290
9298
|
try {
|
|
9291
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
9299
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-IGU65O72.js');
|
|
9292
9300
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
9293
9301
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
9294
9302
|
if (hydrate.failed.length > 0) {
|
|
@@ -9328,7 +9336,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
9328
9336
|
console.log();
|
|
9329
9337
|
}
|
|
9330
9338
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
9331
|
-
const { cmdSetup } = await import('../setup-
|
|
9339
|
+
const { cmdSetup } = await import('../setup-INJFK3VJ.js');
|
|
9332
9340
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
9333
9341
|
});
|
|
9334
9342
|
program.addCommand(makeInstallCommand());
|