@skaile/workspaces 6.9.1 → 6.10.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 +24 -0
- package/dist/ai-sdk.js +8 -8
- package/dist/{asset-feeds-PANNQPEE.js → asset-feeds-UG3PG423.js} +22 -22
- package/dist/{asset-feeds-PANNQPEE.js.map → asset-feeds-UG3PG423.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +8 -8
- package/dist/asset-manager/history.js +8 -8
- package/dist/asset-manager/index.js +14 -14
- package/dist/asset-manager/installer.js +9 -9
- package/dist/asset-manager/renderers.js +8 -8
- package/dist/asset-manager/src/harness-switch-state.d.ts +30 -0
- package/dist/asset-manager/src/harness-switch-state.d.ts.map +1 -0
- package/dist/asset-manager/src/index.d.ts +49 -12
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/mcp-config.d.ts +6 -0
- package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
- package/dist/bridge/codex-app-server.js +1 -2
- package/dist/bridge/harnesses/claude-sdk.js +11 -11
- package/dist/bridge/harnesses/codex.js +15 -1926
- package/dist/bridge/harnesses/codex.js.map +1 -1
- package/dist/bridge/harnesses/continue.js +11 -11
- package/dist/bridge/harnesses/echo.js +3 -3
- package/dist/bridge/harnesses/gemini.js +6 -6
- package/dist/bridge/harnesses/goose.js +11 -11
- package/dist/bridge/harnesses/omp.js +26 -9
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +11 -11
- package/dist/bridge/harnesses/qwen.js +6 -6
- package/dist/bridge/index.js +17 -16
- package/dist/bridge/src/harness-model-check.d.ts +5 -4
- package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/codex.d.ts +13 -0
- package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/omp.d.ts +11 -0
- package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +1 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/{chunk-SME3PK4L.js → chunk-2D6HZAO5.js} +8 -8
- package/dist/{chunk-SME3PK4L.js.map → chunk-2D6HZAO5.js.map} +1 -1
- package/dist/chunk-2MUUPRIG.js +688 -0
- package/dist/chunk-2MUUPRIG.js.map +1 -0
- package/dist/{chunk-TMQFOJ6F.js → chunk-2PVYDAFN.js} +3 -3
- package/dist/{chunk-TMQFOJ6F.js.map → chunk-2PVYDAFN.js.map} +1 -1
- package/dist/{chunk-S47KU4YB.js → chunk-2U67XYZM.js} +3 -3
- package/dist/{chunk-S47KU4YB.js.map → chunk-2U67XYZM.js.map} +1 -1
- package/dist/{chunk-PLVM6OIV.js → chunk-375HN3FD.js} +18 -14
- package/dist/chunk-375HN3FD.js.map +1 -0
- package/dist/{chunk-VEIWFS7Z.js → chunk-4I4SBOCS.js} +345 -88
- package/dist/chunk-4I4SBOCS.js.map +1 -0
- package/dist/{chunk-PBEDRYHP.js → chunk-4Z4RULWQ.js} +48 -28
- package/dist/{chunk-PBEDRYHP.js.map → chunk-4Z4RULWQ.js.map} +1 -1
- package/dist/{chunk-MPO5CQUZ.js → chunk-5JBMYZNA.js} +3 -3
- package/dist/{chunk-MPO5CQUZ.js.map → chunk-5JBMYZNA.js.map} +1 -1
- package/dist/{chunk-EMSU6L7K.js → chunk-5KQFR4D7.js} +6 -6
- package/dist/{chunk-EMSU6L7K.js.map → chunk-5KQFR4D7.js.map} +1 -1
- package/dist/{chunk-KNY356I3.js → chunk-5KSGZP3E.js} +11 -4
- package/dist/chunk-5KSGZP3E.js.map +1 -0
- package/dist/{chunk-IISEBVMA.js → chunk-5P7LTPBR.js} +5 -5
- package/dist/{chunk-IISEBVMA.js.map → chunk-5P7LTPBR.js.map} +1 -1
- package/dist/{chunk-2UKNI2HJ.js → chunk-6O7VDKX3.js} +2 -2
- package/dist/{chunk-2UKNI2HJ.js.map → chunk-6O7VDKX3.js.map} +1 -1
- package/dist/{chunk-FZTHL6SK.js → chunk-7DUOKE73.js} +27 -33
- package/dist/chunk-7DUOKE73.js.map +1 -0
- package/dist/{chunk-V5KG6CCV.js → chunk-7HRZACI4.js} +7 -2
- package/dist/chunk-7HRZACI4.js.map +1 -0
- package/dist/{chunk-U3FI4DVT.js → chunk-7K73MCI6.js} +7 -5
- package/dist/chunk-7K73MCI6.js.map +1 -0
- package/dist/{chunk-BDAXHJC5.js → chunk-BCID52M5.js} +6 -6
- package/dist/{chunk-BDAXHJC5.js.map → chunk-BCID52M5.js.map} +1 -1
- package/dist/{chunk-FZO64PLQ.js → chunk-BNLXZXZN.js} +81 -8
- package/dist/chunk-BNLXZXZN.js.map +1 -0
- package/dist/{chunk-ZUROGXJM.js → chunk-C5UKYTTD.js} +13 -23
- package/dist/chunk-C5UKYTTD.js.map +1 -0
- package/dist/{chunk-LYVLDGML.js → chunk-CG63XGVV.js} +3 -3
- package/dist/{chunk-LYVLDGML.js.map → chunk-CG63XGVV.js.map} +1 -1
- package/dist/{chunk-4ROXSQEG.js → chunk-CJO3XKO7.js} +4 -4
- package/dist/{chunk-4ROXSQEG.js.map → chunk-CJO3XKO7.js.map} +1 -1
- package/dist/{chunk-OSABUEWA.js → chunk-CVUMZTNO.js} +4 -4
- package/dist/{chunk-OSABUEWA.js.map → chunk-CVUMZTNO.js.map} +1 -1
- package/dist/{chunk-E675QKFG.js → chunk-DOMRBOJZ.js} +5 -5
- package/dist/{chunk-E675QKFG.js.map → chunk-DOMRBOJZ.js.map} +1 -1
- package/dist/{chunk-GTAHU4N4.js → chunk-EB2LKPI6.js} +4 -4
- package/dist/{chunk-GTAHU4N4.js.map → chunk-EB2LKPI6.js.map} +1 -1
- package/dist/{chunk-GZL6RN4Z.js → chunk-FXBKBOI5.js} +169 -49
- package/dist/chunk-FXBKBOI5.js.map +1 -0
- package/dist/{chunk-J45JCYS4.js → chunk-GA4GUDTL.js} +4 -4
- package/dist/{chunk-J45JCYS4.js.map → chunk-GA4GUDTL.js.map} +1 -1
- package/dist/{chunk-RZRJTCP2.js → chunk-HE3TZYNG.js} +4 -4
- package/dist/{chunk-RZRJTCP2.js.map → chunk-HE3TZYNG.js.map} +1 -1
- package/dist/chunk-HLFLET7S.js +2443 -0
- package/dist/chunk-HLFLET7S.js.map +1 -0
- package/dist/{chunk-WEPTGUR4.js → chunk-HQUF6O4B.js} +27 -56
- package/dist/chunk-HQUF6O4B.js.map +1 -0
- package/dist/{chunk-QIV7H3GJ.js → chunk-IMO4EHND.js} +5 -5
- package/dist/{chunk-QIV7H3GJ.js.map → chunk-IMO4EHND.js.map} +1 -1
- package/dist/{chunk-TUOHA6BM.js → chunk-IOXFT5D7.js} +3 -3
- package/dist/{chunk-TUOHA6BM.js.map → chunk-IOXFT5D7.js.map} +1 -1
- package/dist/{chunk-CPMLMNI5.js → chunk-JDZUQFN7.js} +4 -4
- package/dist/{chunk-CPMLMNI5.js.map → chunk-JDZUQFN7.js.map} +1 -1
- package/dist/{chunk-7TF5MNFK.js → chunk-KE5HDORU.js} +2 -2
- package/dist/{chunk-7TF5MNFK.js.map → chunk-KE5HDORU.js.map} +1 -1
- package/dist/{chunk-PTJTOPE5.js → chunk-KOI7QFDH.js} +3 -3
- package/dist/{chunk-PTJTOPE5.js.map → chunk-KOI7QFDH.js.map} +1 -1
- package/dist/{chunk-NDBHEOIA.js → chunk-KRL53RZB.js} +8 -8
- package/dist/{chunk-NDBHEOIA.js.map → chunk-KRL53RZB.js.map} +1 -1
- package/dist/{chunk-7QYBKUAS.js → chunk-LKBRBVVS.js} +3 -3
- package/dist/{chunk-7QYBKUAS.js.map → chunk-LKBRBVVS.js.map} +1 -1
- package/dist/{chunk-USSP43U3.js → chunk-LQWOU7S2.js} +3 -3
- package/dist/{chunk-USSP43U3.js.map → chunk-LQWOU7S2.js.map} +1 -1
- package/dist/{chunk-4KPQ6ILH.js → chunk-MEU2HHGV.js} +18 -9
- package/dist/chunk-MEU2HHGV.js.map +1 -0
- package/dist/{chunk-QC5BYUED.js → chunk-MS2IXLTC.js} +4 -4
- package/dist/{chunk-QC5BYUED.js.map → chunk-MS2IXLTC.js.map} +1 -1
- package/dist/{chunk-Q5SSRVD5.js → chunk-NCJSYU6A.js} +16 -14
- package/dist/chunk-NCJSYU6A.js.map +1 -0
- package/dist/{chunk-5J6N6LHL.js → chunk-NFFBYG2W.js} +3 -3
- package/dist/{chunk-5J6N6LHL.js.map → chunk-NFFBYG2W.js.map} +1 -1
- package/dist/{chunk-7UCPGQCW.js → chunk-NTFP2XF4.js} +10 -10
- package/dist/chunk-NTFP2XF4.js.map +1 -0
- package/dist/{chunk-KVTV4LT2.js → chunk-PSPFWTJI.js} +4 -4
- package/dist/{chunk-KVTV4LT2.js.map → chunk-PSPFWTJI.js.map} +1 -1
- package/dist/{chunk-YPTDPN2B.js → chunk-PTXQMTCG.js} +3 -3
- package/dist/{chunk-YPTDPN2B.js.map → chunk-PTXQMTCG.js.map} +1 -1
- package/dist/{chunk-X5SGUBUV.js → chunk-QBJQ426X.js} +3 -3
- package/dist/{chunk-X5SGUBUV.js.map → chunk-QBJQ426X.js.map} +1 -1
- package/dist/{chunk-QBUJTVMY.js → chunk-R3ZNAPBV.js} +3 -3
- package/dist/{chunk-QBUJTVMY.js.map → chunk-R3ZNAPBV.js.map} +1 -1
- package/dist/{chunk-RP3ML3QD.js → chunk-RTFH2QR2.js} +3 -3
- package/dist/{chunk-RP3ML3QD.js.map → chunk-RTFH2QR2.js.map} +1 -1
- package/dist/{chunk-5KWQMCH7.js → chunk-RZ5R6GDJ.js} +5 -5
- package/dist/{chunk-5KWQMCH7.js.map → chunk-RZ5R6GDJ.js.map} +1 -1
- package/dist/{chunk-MDCI4RSG.js → chunk-RZL4TOK3.js} +20 -6
- package/dist/chunk-RZL4TOK3.js.map +1 -0
- package/dist/{chunk-LMADWO4Q.js → chunk-SBAUZ7XH.js} +4 -4
- package/dist/{chunk-LMADWO4Q.js.map → chunk-SBAUZ7XH.js.map} +1 -1
- package/dist/{chunk-AQTAULXT.js → chunk-SKG6G4HO.js} +108 -44
- package/dist/chunk-SKG6G4HO.js.map +1 -0
- package/dist/{chunk-HQAPUPBE.js → chunk-V2VDTQ7A.js} +3 -3
- package/dist/{chunk-HQAPUPBE.js.map → chunk-V2VDTQ7A.js.map} +1 -1
- package/dist/{chunk-GNUA7XT2.js → chunk-VS6XC5JE.js} +3 -3
- package/dist/{chunk-GNUA7XT2.js.map → chunk-VS6XC5JE.js.map} +1 -1
- package/dist/{chunk-5J6JWGY4.js → chunk-WDG5IVEA.js} +3 -3
- package/dist/{chunk-5J6JWGY4.js.map → chunk-WDG5IVEA.js.map} +1 -1
- package/dist/{chunk-XB4XHGIE.js → chunk-XWCV2A2F.js} +4 -4
- package/dist/{chunk-XB4XHGIE.js.map → chunk-XWCV2A2F.js.map} +1 -1
- package/dist/{chunk-UWD7YBDR.js → chunk-ZLDAPZIX.js} +4 -4
- package/dist/{chunk-UWD7YBDR.js.map → chunk-ZLDAPZIX.js.map} +1 -1
- package/dist/{claude-code-ILZ46SLO.js → claude-code-CMFGCDMX.js} +5 -5
- package/dist/{claude-code-ILZ46SLO.js.map → claude-code-CMFGCDMX.js.map} +1 -1
- package/dist/cli/index.js +322 -196
- 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/connector.d.ts.map +1 -1
- package/dist/cli/src/commands/harness-preflight.d.ts +3 -1
- package/dist/cli/src/commands/harness-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/harness.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +3 -3
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-files.d.ts +8 -0
- package/dist/cli/src/commands/migrate-files.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-harness.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-providers.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.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-preflight.d.ts +7 -5
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/config-checks.d.ts +50 -12
- package/dist/cli/src/config-checks.d.ts.map +1 -1
- package/dist/cli/src/ensure-sources.d.ts.map +1 -1
- package/dist/cli/src/harness-error.d.ts +7 -0
- package/dist/cli/src/harness-error.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +20 -19
- package/dist/connectors/src/index.d.ts +1 -1
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts +12 -0
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/{connectors-KTRUUKWG.js → connectors-P5M2D4MH.js} +23 -22
- package/dist/{connectors-KTRUUKWG.js.map → connectors-P5M2D4MH.js.map} +1 -1
- package/dist/core/index.js +7 -7
- package/dist/core/logging.js +1 -1
- 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/index.d.ts +2 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +7 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +28 -0
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/run-state-ignore.d.ts +5 -3
- package/dist/core/src/run-state-ignore.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +7 -7
- package/dist/discovery/index.js +4 -4
- package/dist/{ensure-sources-5QWKUIUD.js → ensure-sources-MOGLBEUF.js} +31 -29
- package/dist/ensure-sources-MOGLBEUF.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +20 -19
- package/dist/factory-assets/connectors/deploy.js +20 -19
- package/dist/factory-assets/connectors/devserver.js +20 -19
- package/dist/factory-assets/connectors/flow/adapter.js +20 -19
- package/dist/factory-assets/connectors/flow/engine.js +8 -8
- package/dist/factory-assets/connectors/flow/run-flow.js +22 -21
- package/dist/factory-assets/connectors/flow.js +20 -19
- package/dist/factory-assets/connectors/git/exec.d.ts +7 -0
- package/dist/factory-assets/connectors/git/exec.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git/repo.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +20 -19
- package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/gmail.js +20 -19
- package/dist/factory-assets/connectors/googledrive.js +20 -19
- package/dist/factory-assets/connectors/local.js +20 -19
- package/dist/factory-assets/connectors/mattermost.js +20 -19
- package/dist/factory-assets/connectors/memory.js +20 -19
- package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/minio.js +20 -19
- package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/postgres.js +20 -19
- package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/s3.js +20 -19
- package/dist/factory-assets/connectors/sharepoint.js +20 -19
- package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/sqlite.js +20 -19
- package/dist/factory-assets/connectors/static-server.js +20 -19
- package/dist/factory-assets/connectors/tunnel.js +20 -19
- package/dist/factory-assets/connectors/webdav.js +20 -19
- package/dist/factory-assets/connectors/xstate-store.js +20 -19
- package/dist/factory-assets/connectors/xstate.js +20 -19
- package/dist/{flows-UCP6ZUYS.js → flows-J64L5MGJ.js} +12 -12
- package/dist/{flows-UCP6ZUYS.js.map → flows-J64L5MGJ.js.map} +1 -1
- package/dist/{helpers-INS4B7OQ.js → helpers-JL5AEGDT.js} +28 -26
- package/dist/{helpers-INS4B7OQ.js.map → helpers-JL5AEGDT.js.map} +1 -1
- package/dist/library/index.js +10 -10
- package/dist/library/install.js +4 -4
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/library.d.ts +6 -2
- package/dist/library/src/library.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +10 -3
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +0 -9
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/local/schema.d.ts +27 -20
- package/dist/library/src/local/schema.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts +13 -0
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/index.d.ts +1 -1
- package/dist/library/src/remote/index.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +6 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-AZTYRASL.js → library-publish-DZNNZNMB.js} +49 -50
- package/dist/library-publish-DZNNZNMB.js.map +1 -0
- package/dist/model-endpoint/index.js +10 -10
- package/dist/open-library-OJREQ22B.js +61 -0
- package/dist/{open-library-3HMXYGUF.js.map → open-library-OJREQ22B.js.map} +1 -1
- package/dist/{open-registry-BHBHQMBA.js → open-registry-OEU6QUK2.js} +14 -14
- package/dist/{open-registry-BHBHQMBA.js.map → open-registry-OEU6QUK2.js.map} +1 -1
- package/dist/paths-PXBWY532.js +22 -0
- package/dist/{paths-77PXOXZY.js.map → paths-PXBWY532.js.map} +1 -1
- package/dist/{plugin-store-XQP2CRYH.js → plugin-store-ZC3EGZ3D.js} +10 -10
- package/dist/{plugin-store-XQP2CRYH.js.map → plugin-store-ZC3EGZ3D.js.map} +1 -1
- package/dist/{project-HVNPK2ZF.js → project-52UABBD5.js} +45 -46
- package/dist/{project-HVNPK2ZF.js.map → project-52UABBD5.js.map} +1 -1
- package/dist/resolver/index.js +8 -8
- package/dist/runner/index.js +35 -35
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +14 -14
- package/dist/sdk/bridge.js +17 -16
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.js +8 -8
- package/dist/sdk/index.js +35 -35
- package/dist/sdk/resolver.js +8 -8
- package/dist/sdk/runner.js +35 -35
- package/dist/sdk/transport/ws/server.js +8 -8
- package/dist/sdk/transport/ws.js +8 -8
- package/dist/sdk/transport.js +8 -8
- package/dist/{serve-preflight-NHZOKHIC.js → serve-preflight-HOQ7CGYR.js} +30 -30
- package/dist/{serve-preflight-NHZOKHIC.js.map → serve-preflight-HOQ7CGYR.js.map} +1 -1
- package/dist/{setup-EX7Z7XRN.js → setup-JIDZ372C.js} +29 -27
- package/dist/setup-JIDZ372C.js.map +1 -0
- package/dist/{skills-DE2BDQ6G.js → skills-5D4KDVPJ.js} +13 -13
- package/dist/{skills-DE2BDQ6G.js.map → skills-5D4KDVPJ.js.map} +1 -1
- package/dist/{source-URRPRGMZ.js → source-P6ZFSSZZ.js} +47 -46
- package/dist/{source-URRPRGMZ.js.map → source-P6ZFSSZZ.js.map} +1 -1
- package/dist/{source-manifest-publish-ZWRYRJ2U.js → source-manifest-publish-Y36FHVDS.js} +49 -48
- package/dist/source-manifest-publish-Y36FHVDS.js.map +1 -0
- package/dist/transport/index.js +8 -8
- package/dist/transport/src/ws/server.d.ts.map +1 -1
- package/dist/transport/ws/server.js +8 -8
- package/dist/transport/ws.js +8 -8
- package/dist/tui/index.js +35 -35
- package/dist/workspace-plugin/adapters/mcp.js +27 -26
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-4KPQ6ILH.js.map +0 -1
- package/dist/chunk-7UCPGQCW.js.map +0 -1
- package/dist/chunk-AQTAULXT.js.map +0 -1
- package/dist/chunk-BLBXOG5Q.js +0 -299
- package/dist/chunk-BLBXOG5Q.js.map +0 -1
- package/dist/chunk-C324IAXI.js +0 -160
- package/dist/chunk-C324IAXI.js.map +0 -1
- package/dist/chunk-DJSGQW2Q.js +0 -334
- package/dist/chunk-DJSGQW2Q.js.map +0 -1
- package/dist/chunk-FZO64PLQ.js.map +0 -1
- package/dist/chunk-FZTHL6SK.js.map +0 -1
- package/dist/chunk-GYPPVANR.js +0 -357
- package/dist/chunk-GYPPVANR.js.map +0 -1
- package/dist/chunk-GZL6RN4Z.js.map +0 -1
- package/dist/chunk-KNY356I3.js.map +0 -1
- package/dist/chunk-LOO5CB5M.js +0 -12
- package/dist/chunk-LOO5CB5M.js.map +0 -1
- package/dist/chunk-MDCI4RSG.js.map +0 -1
- package/dist/chunk-PLVM6OIV.js.map +0 -1
- package/dist/chunk-Q5SSRVD5.js.map +0 -1
- package/dist/chunk-U3FI4DVT.js.map +0 -1
- package/dist/chunk-V5KG6CCV.js.map +0 -1
- package/dist/chunk-VEIWFS7Z.js.map +0 -1
- package/dist/chunk-WEPTGUR4.js.map +0 -1
- package/dist/chunk-ZUROGXJM.js.map +0 -1
- package/dist/ensure-sources-5QWKUIUD.js.map +0 -1
- package/dist/library-publish-AZTYRASL.js.map +0 -1
- package/dist/open-library-3HMXYGUF.js +0 -59
- package/dist/paths-77PXOXZY.js +0 -22
- package/dist/setup-EX7Z7XRN.js.map +0 -1
- package/dist/source-manifest-publish-ZWRYRJ2U.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 6.10.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Agents and protocol: `rebuild`, `outdated`, `update`, `list`, `show`, `why`, `tree` and `diff` print the same unknown-key warnings as `validate`, `check`, `doctor`, `install` and `run` (top-level keys, `agent-config` keys, and the keys of `agent:` and `agents:`), once per run; `list --json` prints them on stderr so stdout stays JSON. When omp exits with a non-zero code, the error now ends with omp's last stderr lines, or with `omp wrote nothing to stderr; its last event was <type> (<detail>)` when it said nothing, so a silent exit has a visible cause. A codex turn that failed (`turn.failed`) ends once: later retry notices of the stream no longer end the turn again (a dozen `status idle` events after `finished`), and codex error items and top-level retry notices (such as the fallback from WebSockets to HTTPS, or `Reconnecting... 1/5`) go to the log, not into a `tool_result CodexError`; a turn that recovers from a notice still delivers its answer. The error the WebSocket server sends for a message that is not JSON, or a `session_init` of the wrong shape, carries `category: "validation"`.
|
|
8
|
+
|
|
9
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Authoring: `library init --path <git clone>` with an `origin` adopts the clone as `reader` (new `--owner` makes it an owner; a folder with no `origin` stays `owner`). `library init` refuses a manifest with an invalid publisher (exit 1, nothing registered), like `library index`. A manifest entry without a `version` gets one at `init` (owner) and `index`, and the command prints `skaile.manifest.yaml changed: version … added to <ref>`; a reader clone is never written and `search` shows the version `add` locks. `validate` prints no `manifest version differs` warning next to the semver error for a non-semver file version. `asset migrate` prints the `add` ref from the name in the asset's own file, not the folder name.
|
|
10
|
+
|
|
11
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Connector fixes. Connector drivers (`sqlite`, `postgres`, `minio`, `s3`, `gmail`, `xstate`) load their npm package like the harness SDKs: from the project's `node_modules` first, then from next to `skaile`, so a package added with `connector add` is found when the CLI is installed elsewhere. `connector status` exits 1 when a connect fails. A failed `connector add` install prints the reason and names the `--no-install` way out. `serve` copies only `http.sslCAInfo` (the path) from the user gitconfig into the managed gitconfig, and sends a mount token on `http://` only to loopback hosts. `serve` stops on exactly what `validate` calls a connector error (a missing `mountPath`, a symlinked `mountPath` and an unknown `driver` now too).
|
|
12
|
+
|
|
13
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Harness fixes. `add` and `run` find a git work tree with a parent walk and write the run-state lines to a `.gitignore` in the project folder, so a project in a subfolder of a repository no longer leaves `.skaile/logs.db` and `history.yaml` untracked. `harness set <h> --clean` removes the emptied folders of the old harness, and a file it kept is recorded and no longer named as stale. claude-sdk refuses a `provider/` prefix that is no registered provider, with or without registry entries. `run --dry-run` for codex prints the credential refusal of the real run. `skaile clean` without a terminal says `Not a terminal: pass --yes to confirm`. `claude-code` is accepted as `claude-sdk` in `run`, `repl`, `serve` and `config set harness`. `check`, `doctor`, `list`, `install`, `config show` and `run` report a profile that sets both `harness` and `driver`, as `validate` does.
|
|
14
|
+
|
|
15
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Index: the library index keeps one row per library, ref and version, so a source clone of a fork of a library's repository no longer takes that library's row over. `search --local` in a project that does not declare the source lists the libraries' copies as it did before the `source add`; `asset show` and `asset install` skip the clone of a source the project does not declare. The rows live in a new table `library_assets`; the old `asset_definitions` table is left as it is, so an older CLI sharing `~/.skaile/index.db` keeps working, and the first open copies its rows over. `install --locked` takes, among the registered libraries of the locked remote, the one whose files hash to the lock, instead of stopping at the first one with `content changed since lock`.
|
|
16
|
+
|
|
17
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Sources: a `publisher: "@name"` in a `sources:` entry of `skaile.yaml` is loaded as `name`, so `add skill:@name/x` finds the assets (before, the repo was indexed under another publisher). The first `library push` to an empty bare remote on this machine points that remote's HEAD at the pushed branch, and `library init --git <url>` of a remote that holds `main` under another HEAD follows `main` instead of refusing it. `outdated` lists a source clone that holds a commit of its own and is also behind as a problem with the `git -C <dir> checkout -B <branch> <remote>/<branch>` line and exits 1, instead of advising `skaile update` (which refuses that clone). `add skill:@pub/name#` says `empty version after #` and no longer blames the publisher; `add ""` no longer suggests `skaile store search` with an empty query. A `pin:` that names no branch or tag of the remote is named by `source sync`, `source add --pin` and `install` (`pin "x" does not exist in <url> (branches: ...; tags: ...)`), and by `check` and `doctor` for a source that is not cloned yet (exit 1).
|
|
18
|
+
|
|
19
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Store: a store that does not answer is asked once per process, so `check`, `doctor`, `outdated`, `install` and `update` cost one 5 s wait at most, not one per command step. A store entry in the lock restores from its own recorded commit and file hashes: adding the repo that holds a store asset as a source no longer fails `install --locked` with `drifted:`, the registered clone is not moved to the store's commit, and the lock's `sources:` row takes the commit of a source asset before a store asset. `update --no-catalog` and `update` with `catalog.url: local` keep the `.mcp.json` entry and payload of a locked store `mcp-server`. A wrong file hash in the lock reads `the lock records another hash for <file>` and advises `skaile install` (re-lock), not `was edited` and not the command that just failed.
|
|
20
|
+
|
|
21
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Upgrade and migrate: a project from 5.11.0 or 5.13.0 that still holds the asset-named agent file (`.claude/agents/captain.md` next to the instance file `cap.md`; the omp and codex files too) now has it named by `check` and `doctor` (`<file> is left over from an older skaile: skaile install removes it`) and removed by `install --locked` with a `Removed:` line, as plain `install` and `update` do. An edited file stays and is named. The leftover is no `Missing` or edited copy any more while the instance file stands. `migrate assets`, `migrate agents`, `migrate harness` and `migrate providers` exit 1 with `Path does not exist` (or `is not a directory`) for a missing path, a file or a dangling symlink, instead of `Nothing to migrate.` with exit 0. `outdated` takes `--global`, like `check`, `doctor` and `clean`.
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- [#1141](https://github.com/skaile-ai/workspaces/pull/1141) [`38a1931`](https://github.com/skaile-ai/workspaces/commit/38a19312e12ffed4abf783f9585de2cfd2694815) Thanks [@mortegro](https://github.com/mortegro)! - Docs: fix commands and values that did not match the CLI. The protocol page names protocol 5.1.0. Tutorial 02 and the commands index no longer name the retired `agent:` key. The workspace-plugin tutorials name Node.js 22.5. The v2 to v3 migration page teaches `--harness`. The library docs name `source manifest yank <src> --asset <ref>` and `preset apply`. The commands index lists `auth`, and the resource explorer page uses refs with a publisher and the `index.db` path.
|
|
26
|
+
|
|
3
27
|
## 6.9.1
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
package/dist/ai-sdk.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { loadMergedProviderRegistry } from './chunk-
|
|
1
|
+
import { loadMergedProviderRegistry } from './chunk-CG63XGVV.js';
|
|
2
2
|
import { buildCredentialHeaders } from './chunk-6UP2EDFN.js';
|
|
3
|
-
import { installCommandFor } from './chunk-
|
|
3
|
+
import { installCommandFor } from './chunk-MEU2HHGV.js';
|
|
4
4
|
import './chunk-4GY63JU6.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-CJO3XKO7.js';
|
|
6
6
|
import './chunk-5KRMNUL4.js';
|
|
7
7
|
import './chunk-C5HFK34M.js';
|
|
8
8
|
import './chunk-MWXYN6NY.js';
|
|
9
|
-
import './chunk-
|
|
9
|
+
import './chunk-BNLXZXZN.js';
|
|
10
10
|
import './chunk-L5VSIPQD.js';
|
|
11
11
|
import './chunk-VTETQCR6.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
12
|
+
import './chunk-MS2IXLTC.js';
|
|
13
|
+
import './chunk-VS6XC5JE.js';
|
|
14
14
|
import './chunk-RVRB27AN.js';
|
|
15
|
-
import './chunk-
|
|
15
|
+
import './chunk-7HRZACI4.js';
|
|
16
16
|
import { resolveCredential } from './chunk-VSX2G7LA.js';
|
|
17
17
|
import { parseModelRef, registryEntries, isEntryEnabled, normalizeEntryBaseUrl, resolveEntryBaseUrl, normalizeAnthropicBaseUrl } from './chunk-RXGPFAMN.js';
|
|
18
|
-
import './chunk-
|
|
18
|
+
import './chunk-RZL4TOK3.js';
|
|
19
19
|
import './chunk-C3CAXQMA.js';
|
|
20
20
|
import './chunk-BOFL7GIF.js';
|
|
21
21
|
import './chunk-NSBPE2FW.js';
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { storeNotInstallableReason } from './chunk-
|
|
2
|
-
import { getKnownKinds } from './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
import { storeNotInstallableReason } from './chunk-XWCV2A2F.js';
|
|
2
|
+
import { getKnownKinds } from './chunk-DOMRBOJZ.js';
|
|
3
|
+
import './chunk-WDG5IVEA.js';
|
|
4
4
|
import './chunk-7RGTAEG6.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
5
|
+
import './chunk-4I4SBOCS.js';
|
|
6
|
+
import './chunk-FXBKBOI5.js';
|
|
7
|
+
import './chunk-RZ5R6GDJ.js';
|
|
8
|
+
import './chunk-CVUMZTNO.js';
|
|
9
9
|
import './chunk-F3D25RGM.js';
|
|
10
10
|
import './chunk-3TXEJN4W.js';
|
|
11
11
|
import './chunk-ISHJITXJ.js';
|
|
12
12
|
import './chunk-LNFKL23K.js';
|
|
13
13
|
import './chunk-JRN5QF4C.js';
|
|
14
14
|
import './chunk-NUELZWCF.js';
|
|
15
|
-
import './chunk-
|
|
15
|
+
import './chunk-KRL53RZB.js';
|
|
16
16
|
import './chunk-PKE3PXOK.js';
|
|
17
|
-
import './chunk-
|
|
17
|
+
import './chunk-LKBRBVVS.js';
|
|
18
18
|
import './chunk-UQ6LFBPZ.js';
|
|
19
|
-
import './chunk-
|
|
19
|
+
import './chunk-R3ZNAPBV.js';
|
|
20
20
|
import './chunk-WS3BOCAT.js';
|
|
21
|
-
import './chunk-
|
|
21
|
+
import './chunk-MEU2HHGV.js';
|
|
22
22
|
import './chunk-4GY63JU6.js';
|
|
23
|
-
import { factoryAssetRoots } from './chunk-
|
|
23
|
+
import { factoryAssetRoots } from './chunk-CJO3XKO7.js';
|
|
24
24
|
import './chunk-5KRMNUL4.js';
|
|
25
25
|
import './chunk-C5HFK34M.js';
|
|
26
26
|
import './chunk-MWXYN6NY.js';
|
|
27
|
-
import { scanRepo } from './chunk-
|
|
27
|
+
import { scanRepo } from './chunk-BNLXZXZN.js';
|
|
28
28
|
import './chunk-L5VSIPQD.js';
|
|
29
29
|
import './chunk-VTETQCR6.js';
|
|
30
|
-
import './chunk-
|
|
31
|
-
import { parseRequires } from './chunk-
|
|
30
|
+
import './chunk-MS2IXLTC.js';
|
|
31
|
+
import { parseRequires } from './chunk-VS6XC5JE.js';
|
|
32
32
|
import './chunk-RVRB27AN.js';
|
|
33
|
-
import './chunk-
|
|
33
|
+
import './chunk-7HRZACI4.js';
|
|
34
34
|
import './chunk-VSX2G7LA.js';
|
|
35
35
|
import './chunk-RXGPFAMN.js';
|
|
36
|
-
import './chunk-
|
|
36
|
+
import './chunk-RZL4TOK3.js';
|
|
37
37
|
import './chunk-C3CAXQMA.js';
|
|
38
38
|
import './chunk-BOFL7GIF.js';
|
|
39
39
|
import './chunk-NSBPE2FW.js';
|
|
@@ -60,8 +60,8 @@ function libraryEntryOf(asset) {
|
|
|
60
60
|
async function libraryAssets() {
|
|
61
61
|
const notes = [];
|
|
62
62
|
try {
|
|
63
|
-
const { openLibraryManager } = await import('./open-library-
|
|
64
|
-
const { getKindRegistry } = await import('./open-registry-
|
|
63
|
+
const { openLibraryManager } = await import('./open-library-OJREQ22B.js');
|
|
64
|
+
const { getKindRegistry } = await import('./open-registry-OEU6QUK2.js');
|
|
65
65
|
const { scanAuthoringLibraries } = await import('./library/index.js');
|
|
66
66
|
const { library: index, close } = await openLibraryManager();
|
|
67
67
|
try {
|
|
@@ -94,7 +94,7 @@ async function libraryAssets() {
|
|
|
94
94
|
async function storeAssets(projectDir) {
|
|
95
95
|
const notes = [];
|
|
96
96
|
try {
|
|
97
|
-
const { resolveCatalogSource } = await import('./open-library-
|
|
97
|
+
const { resolveCatalogSource } = await import('./open-library-OJREQ22B.js');
|
|
98
98
|
const { source, close } = await resolveCatalogSource({ projectDir });
|
|
99
99
|
try {
|
|
100
100
|
const assets = (await source.listAssets()).filter(
|
|
@@ -175,5 +175,5 @@ async function gatherAssetFeeds(am, projectDir) {
|
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
export { gatherAssetFeeds };
|
|
178
|
-
//# sourceMappingURL=asset-feeds-
|
|
179
|
-
//# sourceMappingURL=asset-feeds-
|
|
178
|
+
//# sourceMappingURL=asset-feeds-UG3PG423.js.map
|
|
179
|
+
//# sourceMappingURL=asset-feeds-UG3PG423.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-PANNQPEE.js","sourcesContent":["/**\n * asset-feeds.ts — gather installable assets from every feed the manage TUI\n * surfaces.\n *\n * Four feeds, normalized into `CatalogEntry`:\n * - **Project sources** — `skaile.yaml` `sources:` entries (scanned via\n * `AssetManager.search()`; the new `sources:` field is merged into the\n * legacy repositories map in `AssetManager.loadConfig`).\n * - **Local libraries** — user authoring places from `LocalIndex`, read through\n * `scanAuthoringLibraries` (`@skaile/workspaces/library`): the same scan\n * `library index` / `search --local` use, so publishers and refs match them\n * (per-asset `publisher_overrides` honoured), `dev_paths` assets are left out,\n * and a library that fails to scan becomes one note while the rest stay listed.\n * - **Factory assets** — the bundled first-party `factory-assets` tree\n * (`factoryAssetRoots()`), scanned from disk. Always present; no network.\n * - **Remote store** — the configured catalog source when `catalog.url` is\n * not `local`. Failures are non-fatal — they surface as notes.\n */\n\nimport * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogEntry,\n factoryAssetRoots,\n parseRequires,\n scanRepo,\n} from \"@skaile/workspaces/core\";\nimport { getKnownKinds } from \"./open-registry.ts\";\nimport { storeNotInstallableReason } from \"./store-addable.ts\";\nimport type { DiscoveredAsset } from \"@skaile/workspaces/discovery\";\n\n/** One non-fatal note returned to the caller for surfacing in the UI. */\nexport interface FeedNote {\n feed: \"sources\" | \"libraries\" | \"store\" | \"factory\";\n message: string;\n}\n\n/**\n * Which feed an asset came from. This is the top-level grouping axis in the\n * manage TUI (\"where is this skill coming from?\") and is intentionally distinct\n * from `publisher` (asset-intrinsic identity): the same publisher can legitimately\n * appear under more than one origin (e.g. a github repo you added as a `source`\n * that is also listed in the remote `store`).\n */\nexport type AssetOrigin = \"source\" | \"library\" | \"factory\" | \"store\";\n\n/** A catalog entry tagged with the feed it was gathered from. */\nexport interface OriginEntry {\n origin: AssetOrigin;\n entry: CatalogEntry;\n /**\n * Second-level grouping label for the manage tree. Defaults (when unset) to the\n * entry's `publisher`; the source feed sets it to the source's short repo name\n * so the Sources band groups by source — \"which repo did this come from\" — not\n * by the asset-intrinsic publisher.\n */\n group?: string;\n}\n\nexport interface AssetFeedResult {\n entries: OriginEntry[];\n notes: FeedNote[];\n}\n\n/**\n * Map one discovered library asset to the `CatalogEntry` the manage rows read.\n * `publisher` is the bare per-asset publisher (what `search --local` prints),\n * `source` the manifest path. `repo` is left unset: it only feeds the Sources-tree\n * org grouping. `requires` / `dependencies` come from the manifest the way the\n * scanner fills them — string `requires:` refs parsed to `{kind, name}`, a bundle's\n * string `dependencies:` list verbatim.\n */\nfunction libraryEntryOf(asset: DiscoveredAsset): CatalogEntry {\n const { manifest } = asset;\n const nested = (manifest.metadata as Record<string, unknown> | undefined)?.requires;\n const rawRequires = manifest.requires ?? nested;\n const requireRefs =\n typeof rawRequires === \"string\"\n ? rawRequires\n : Array.isArray(rawRequires)\n ? rawRequires.filter((r): r is string => typeof r === \"string\")\n : undefined;\n const deps = manifest.dependencies;\n return {\n name: asset.name,\n kind: asset.kind as AssetKind,\n description: typeof manifest.description === \"string\" ? manifest.description : \"\",\n source: asset.manifestPath,\n publisher: asset.publisher,\n ...(asset.plugin ? { plugin: asset.plugin } : {}),\n version: asset.version,\n requires: requireRefs === undefined ? [] : parseRequires({ requires: requireRefs }),\n dependencies:\n asset.kind === \"bundle\" && Array.isArray(deps)\n ? deps.filter((d): d is string => typeof d === \"string\" && d.length > 0)\n : [],\n };\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache) through\n * `scanAuthoringLibraries`, grouped under the bare library name\n * (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix (mirrors the source feed). Plugin grouping (`entry.plugin`)\n * comes from `DiscoveredAsset.plugin`. A library whose scan fails becomes one\n * `FeedNote`; the outer `catch` covers only opening the index.\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n // Lazy: the library subpath pulls in SQLite, which the other feeds never need.\n const { openLibraryManager } = await import(\"./open-library.ts\");\n const { getKindRegistry } = await import(\"./open-registry.ts\");\n const { scanAuthoringLibraries } = await import(\"@skaile/workspaces/library\");\n const { library: index, close } = await openLibraryManager();\n try {\n const entries: OriginEntry[] = [];\n for (const scan of await scanAuthoringLibraries(index, getKindRegistry())) {\n if (scan.error !== undefined) {\n notes.push({ feed: \"libraries\", message: `${scan.library.name}: ${scan.error}` });\n continue;\n }\n for (const asset of scan.assets) {\n entries.push({\n origin: \"library\",\n entry: libraryEntryOf(asset),\n group: scan.library.name,\n });\n }\n }\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n notes.push({\n feed: \"libraries\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/**\n * Pull a (best-effort) snapshot of the connected remote store catalog.\n *\n * - Returns no entries when the resolved catalog is local-only or the host\n * is unreachable (the failure becomes a note, not an exception).\n * - Maps `CatalogAsset` → `CatalogEntry`, carrying `publisher`, `repo`, and\n * `category` straight through and using `source = \"store://<id>\"`; per-file\n * `source` paths are not available for remote assets so the canonical ref is\n * a stable placeholder.\n */\nasync function storeAssets(projectDir: string): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const { resolveCatalogSource } = await import(\"./open-library.ts\");\n const { source, close } = await resolveCatalogSource({ projectDir });\n try {\n // The store lists only what `skaile add` can install (see store-addable.ts).\n const assets = (await source.listAssets()).filter(\n (a) => storeNotInstallableReason(a) === undefined,\n );\n const entries: CatalogEntry[] = assets.map((a) => ({\n name: a.name,\n kind: (a.kind as AssetKind) ?? \"skill\",\n description: a.description ?? \"\",\n source: `store://${a.id}`,\n publisher: a.publisher,\n repo: a.repo,\n plugin: a.plugin,\n category: a.category,\n version: a.version,\n requires: [],\n dependencies: [],\n }));\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // Local-only catalog throws a recognizable message — silence it; absence\n // is the user's choice, not an error.\n if (!/local/i.test(msg)) {\n notes.push({ feed: \"store\", message: msg });\n }\n return { entries: [], notes };\n }\n}\n\n/** The slice of `AssetManager` the source feed needs (kept narrow for tests). */\ninterface AssetManagerLike {\n search: () => Promise<CatalogEntry[]>;\n searchRepoRoots: () => { repoName: string; root: string }[];\n}\n\n/**\n * Project-source feed: leans on `AssetManager.search()`, which merges\n * `skaile.yaml`'s `sources:` field into the repositories map. Plugin grouping\n * (`entry.plugin`) is stamped by the scanner, so entries pass through as-is.\n */\nasync function sourceAssets(am: AssetManagerLike): Promise<OriginEntry[]> {\n // The bundled factory tree is injected into the repositories map as an implicit\n // source, so `am.search()` returns it too. It has its own `factory` origin band,\n // so drop it here — otherwise the same first-party skills list twice under Sources.\n const factoryPrefixes = factoryAssetRoots().map((r) => (r.endsWith(path.sep) ? r : r + path.sep));\n const isFactoryPath = (p: string) =>\n factoryPrefixes.some((fp) => p === fp.slice(0, -1) || p.startsWith(fp));\n\n const all = (await am.search()).filter((e) => !isFactoryPath(e.source));\n const entries: OriginEntry[] = [];\n // Group each source's entries under the source node (its short repo name), not\n // the publisher: under Sources the navigational question is \"which repo did\n // this come from\". Each entry's `source` (absolute manifest path) lives under\n // exactly one declared root, so group by prefix. The cache slug is\n // URL-keyed `github.com/<org>/<repo>` — take the trailing segment.\n for (const { repoName, root } of am.searchRepoRoots()) {\n if (isFactoryPath(root)) continue;\n const prefix = root.endsWith(path.sep) ? root : root + path.sep;\n const owned = all.filter((e) => e.source === root || e.source.startsWith(prefix));\n if (owned.length === 0) continue;\n const sourceName = repoName.split(\"/\").pop() || repoName;\n for (const entry of owned) entries.push({ origin: \"source\", entry, group: sourceName });\n }\n return entries;\n}\n\n/**\n * Factory-asset feed: scan the bundled first-party `factory-assets` tree(s)\n * resolved by `factoryAssetRoots()` (the `SKAILE_FACTORY_ASSETS_DIR` override\n * layer ahead of the bundled tree). Local disk only, no network — the entries are\n * the built-in skills / connectors / bundles that ship with `@skaile/workspaces`.\n * `factoryAssetRoots()` already dedupes, so the env override pointing at the\n * bundled dir collapses to one root.\n */\nasync function factoryAssets(): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const entries: CatalogEntry[] = [];\n for (const root of factoryAssetRoots()) {\n entries.push(...(await scanRepo(root, \"skaile-factory\", { knownKinds: getKnownKinds() })));\n }\n return { entries, notes };\n } catch (err) {\n notes.push({\n feed: \"factory\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/** Tag a flat entry list with a single origin. */\nfunction tag(origin: AssetOrigin, entries: CatalogEntry[]): OriginEntry[] {\n return entries.map((entry) => ({ origin, entry }));\n}\n\n/**\n * Run all feeds and return a single normalized result.\n *\n * Feeds run in parallel where possible — the store fetch is the slow one\n * (one HTTP call) and is fired alongside the local library walk. The factory\n * scan is local disk only, so it runs inline.\n */\nexport async function gatherAssetFeeds(\n am: AssetManagerLike,\n projectDir: string,\n): Promise<AssetFeedResult> {\n const [libs, store] = await Promise.all([libraryAssets(), storeAssets(projectDir)]);\n const factory = await factoryAssets();\n const src = await sourceAssets(am);\n return {\n entries: [\n ...src,\n ...libs.entries,\n ...tag(\"factory\", factory.entries),\n ...tag(\"store\", store.entries),\n ],\n notes: [...libs.notes, ...store.notes, ...factory.notes],\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-UG3PG423.js","sourcesContent":["/**\n * asset-feeds.ts — gather installable assets from every feed the manage TUI\n * surfaces.\n *\n * Four feeds, normalized into `CatalogEntry`:\n * - **Project sources** — `skaile.yaml` `sources:` entries (scanned via\n * `AssetManager.search()`; the new `sources:` field is merged into the\n * legacy repositories map in `AssetManager.loadConfig`).\n * - **Local libraries** — user authoring places from `LocalIndex`, read through\n * `scanAuthoringLibraries` (`@skaile/workspaces/library`): the same scan\n * `library index` / `search --local` use, so publishers and refs match them\n * (per-asset `publisher_overrides` honoured), `dev_paths` assets are left out,\n * and a library that fails to scan becomes one note while the rest stay listed.\n * - **Factory assets** — the bundled first-party `factory-assets` tree\n * (`factoryAssetRoots()`), scanned from disk. Always present; no network.\n * - **Remote store** — the configured catalog source when `catalog.url` is\n * not `local`. Failures are non-fatal — they surface as notes.\n */\n\nimport * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogEntry,\n factoryAssetRoots,\n parseRequires,\n scanRepo,\n} from \"@skaile/workspaces/core\";\nimport { getKnownKinds } from \"./open-registry.ts\";\nimport { storeNotInstallableReason } from \"./store-addable.ts\";\nimport type { DiscoveredAsset } from \"@skaile/workspaces/discovery\";\n\n/** One non-fatal note returned to the caller for surfacing in the UI. */\nexport interface FeedNote {\n feed: \"sources\" | \"libraries\" | \"store\" | \"factory\";\n message: string;\n}\n\n/**\n * Which feed an asset came from. This is the top-level grouping axis in the\n * manage TUI (\"where is this skill coming from?\") and is intentionally distinct\n * from `publisher` (asset-intrinsic identity): the same publisher can legitimately\n * appear under more than one origin (e.g. a github repo you added as a `source`\n * that is also listed in the remote `store`).\n */\nexport type AssetOrigin = \"source\" | \"library\" | \"factory\" | \"store\";\n\n/** A catalog entry tagged with the feed it was gathered from. */\nexport interface OriginEntry {\n origin: AssetOrigin;\n entry: CatalogEntry;\n /**\n * Second-level grouping label for the manage tree. Defaults (when unset) to the\n * entry's `publisher`; the source feed sets it to the source's short repo name\n * so the Sources band groups by source — \"which repo did this come from\" — not\n * by the asset-intrinsic publisher.\n */\n group?: string;\n}\n\nexport interface AssetFeedResult {\n entries: OriginEntry[];\n notes: FeedNote[];\n}\n\n/**\n * Map one discovered library asset to the `CatalogEntry` the manage rows read.\n * `publisher` is the bare per-asset publisher (what `search --local` prints),\n * `source` the manifest path. `repo` is left unset: it only feeds the Sources-tree\n * org grouping. `requires` / `dependencies` come from the manifest the way the\n * scanner fills them — string `requires:` refs parsed to `{kind, name}`, a bundle's\n * string `dependencies:` list verbatim.\n */\nfunction libraryEntryOf(asset: DiscoveredAsset): CatalogEntry {\n const { manifest } = asset;\n const nested = (manifest.metadata as Record<string, unknown> | undefined)?.requires;\n const rawRequires = manifest.requires ?? nested;\n const requireRefs =\n typeof rawRequires === \"string\"\n ? rawRequires\n : Array.isArray(rawRequires)\n ? rawRequires.filter((r): r is string => typeof r === \"string\")\n : undefined;\n const deps = manifest.dependencies;\n return {\n name: asset.name,\n kind: asset.kind as AssetKind,\n description: typeof manifest.description === \"string\" ? manifest.description : \"\",\n source: asset.manifestPath,\n publisher: asset.publisher,\n ...(asset.plugin ? { plugin: asset.plugin } : {}),\n version: asset.version,\n requires: requireRefs === undefined ? [] : parseRequires({ requires: requireRefs }),\n dependencies:\n asset.kind === \"bundle\" && Array.isArray(deps)\n ? deps.filter((d): d is string => typeof d === \"string\" && d.length > 0)\n : [],\n };\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache) through\n * `scanAuthoringLibraries`, grouped under the bare library name\n * (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix (mirrors the source feed). Plugin grouping (`entry.plugin`)\n * comes from `DiscoveredAsset.plugin`. A library whose scan fails becomes one\n * `FeedNote`; the outer `catch` covers only opening the index.\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n // Lazy: the library subpath pulls in SQLite, which the other feeds never need.\n const { openLibraryManager } = await import(\"./open-library.ts\");\n const { getKindRegistry } = await import(\"./open-registry.ts\");\n const { scanAuthoringLibraries } = await import(\"@skaile/workspaces/library\");\n const { library: index, close } = await openLibraryManager();\n try {\n const entries: OriginEntry[] = [];\n for (const scan of await scanAuthoringLibraries(index, getKindRegistry())) {\n if (scan.error !== undefined) {\n notes.push({ feed: \"libraries\", message: `${scan.library.name}: ${scan.error}` });\n continue;\n }\n for (const asset of scan.assets) {\n entries.push({\n origin: \"library\",\n entry: libraryEntryOf(asset),\n group: scan.library.name,\n });\n }\n }\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n notes.push({\n feed: \"libraries\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/**\n * Pull a (best-effort) snapshot of the connected remote store catalog.\n *\n * - Returns no entries when the resolved catalog is local-only or the host\n * is unreachable (the failure becomes a note, not an exception).\n * - Maps `CatalogAsset` → `CatalogEntry`, carrying `publisher`, `repo`, and\n * `category` straight through and using `source = \"store://<id>\"`; per-file\n * `source` paths are not available for remote assets so the canonical ref is\n * a stable placeholder.\n */\nasync function storeAssets(projectDir: string): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const { resolveCatalogSource } = await import(\"./open-library.ts\");\n const { source, close } = await resolveCatalogSource({ projectDir });\n try {\n // The store lists only what `skaile add` can install (see store-addable.ts).\n const assets = (await source.listAssets()).filter(\n (a) => storeNotInstallableReason(a) === undefined,\n );\n const entries: CatalogEntry[] = assets.map((a) => ({\n name: a.name,\n kind: (a.kind as AssetKind) ?? \"skill\",\n description: a.description ?? \"\",\n source: `store://${a.id}`,\n publisher: a.publisher,\n repo: a.repo,\n plugin: a.plugin,\n category: a.category,\n version: a.version,\n requires: [],\n dependencies: [],\n }));\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // Local-only catalog throws a recognizable message — silence it; absence\n // is the user's choice, not an error.\n if (!/local/i.test(msg)) {\n notes.push({ feed: \"store\", message: msg });\n }\n return { entries: [], notes };\n }\n}\n\n/** The slice of `AssetManager` the source feed needs (kept narrow for tests). */\ninterface AssetManagerLike {\n search: () => Promise<CatalogEntry[]>;\n searchRepoRoots: () => { repoName: string; root: string }[];\n}\n\n/**\n * Project-source feed: leans on `AssetManager.search()`, which merges\n * `skaile.yaml`'s `sources:` field into the repositories map. Plugin grouping\n * (`entry.plugin`) is stamped by the scanner, so entries pass through as-is.\n */\nasync function sourceAssets(am: AssetManagerLike): Promise<OriginEntry[]> {\n // The bundled factory tree is injected into the repositories map as an implicit\n // source, so `am.search()` returns it too. It has its own `factory` origin band,\n // so drop it here — otherwise the same first-party skills list twice under Sources.\n const factoryPrefixes = factoryAssetRoots().map((r) => (r.endsWith(path.sep) ? r : r + path.sep));\n const isFactoryPath = (p: string) =>\n factoryPrefixes.some((fp) => p === fp.slice(0, -1) || p.startsWith(fp));\n\n const all = (await am.search()).filter((e) => !isFactoryPath(e.source));\n const entries: OriginEntry[] = [];\n // Group each source's entries under the source node (its short repo name), not\n // the publisher: under Sources the navigational question is \"which repo did\n // this come from\". Each entry's `source` (absolute manifest path) lives under\n // exactly one declared root, so group by prefix. The cache slug is\n // URL-keyed `github.com/<org>/<repo>` — take the trailing segment.\n for (const { repoName, root } of am.searchRepoRoots()) {\n if (isFactoryPath(root)) continue;\n const prefix = root.endsWith(path.sep) ? root : root + path.sep;\n const owned = all.filter((e) => e.source === root || e.source.startsWith(prefix));\n if (owned.length === 0) continue;\n const sourceName = repoName.split(\"/\").pop() || repoName;\n for (const entry of owned) entries.push({ origin: \"source\", entry, group: sourceName });\n }\n return entries;\n}\n\n/**\n * Factory-asset feed: scan the bundled first-party `factory-assets` tree(s)\n * resolved by `factoryAssetRoots()` (the `SKAILE_FACTORY_ASSETS_DIR` override\n * layer ahead of the bundled tree). Local disk only, no network — the entries are\n * the built-in skills / connectors / bundles that ship with `@skaile/workspaces`.\n * `factoryAssetRoots()` already dedupes, so the env override pointing at the\n * bundled dir collapses to one root.\n */\nasync function factoryAssets(): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const entries: CatalogEntry[] = [];\n for (const root of factoryAssetRoots()) {\n entries.push(...(await scanRepo(root, \"skaile-factory\", { knownKinds: getKnownKinds() })));\n }\n return { entries, notes };\n } catch (err) {\n notes.push({\n feed: \"factory\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/** Tag a flat entry list with a single origin. */\nfunction tag(origin: AssetOrigin, entries: CatalogEntry[]): OriginEntry[] {\n return entries.map((entry) => ({ origin, entry }));\n}\n\n/**\n * Run all feeds and return a single normalized result.\n *\n * Feeds run in parallel where possible — the store fetch is the slow one\n * (one HTTP call) and is fired alongside the local library walk. The factory\n * scan is local disk only, so it runs inline.\n */\nexport async function gatherAssetFeeds(\n am: AssetManagerLike,\n projectDir: string,\n): Promise<AssetFeedResult> {\n const [libs, store] = await Promise.all([libraryAssets(), storeAssets(projectDir)]);\n const factory = await factoryAssets();\n const src = await sourceAssets(am);\n return {\n entries: [\n ...src,\n ...libs.entries,\n ...tag(\"factory\", factory.entries),\n ...tag(\"store\", store.entries),\n ],\n notes: [...libs.notes, ...store.notes, ...factory.notes],\n };\n}\n"]}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export { WORKSPACE_MOUNT_ENV_VAR, deployAll, deployCatalogEntry, findAiAssetsRoot, isUnderWorkspaceMount, resolveFlowSkills, undeployCatalogEntry, workspaceMountDirs } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { WORKSPACE_MOUNT_ENV_VAR, deployAll, deployCatalogEntry, findAiAssetsRoot, isUnderWorkspaceMount, resolveFlowSkills, undeployCatalogEntry, workspaceMountDirs } from '../chunk-LQWOU7S2.js';
|
|
2
|
+
import '../chunk-MEU2HHGV.js';
|
|
3
3
|
import '../chunk-4GY63JU6.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-CJO3XKO7.js';
|
|
5
5
|
import '../chunk-5KRMNUL4.js';
|
|
6
6
|
import '../chunk-C5HFK34M.js';
|
|
7
7
|
import '../chunk-MWXYN6NY.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-BNLXZXZN.js';
|
|
9
9
|
import '../chunk-L5VSIPQD.js';
|
|
10
10
|
import '../chunk-VTETQCR6.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-MS2IXLTC.js';
|
|
12
|
+
import '../chunk-VS6XC5JE.js';
|
|
13
13
|
import '../chunk-RVRB27AN.js';
|
|
14
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-7HRZACI4.js';
|
|
15
15
|
import '../chunk-VSX2G7LA.js';
|
|
16
16
|
import '../chunk-RXGPFAMN.js';
|
|
17
|
-
import '../chunk-
|
|
17
|
+
import '../chunk-RZL4TOK3.js';
|
|
18
18
|
import '../chunk-C3CAXQMA.js';
|
|
19
19
|
import '../chunk-BOFL7GIF.js';
|
|
20
20
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-LKBRBVVS.js';
|
|
2
|
+
import '../chunk-MEU2HHGV.js';
|
|
3
3
|
import '../chunk-4GY63JU6.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-CJO3XKO7.js';
|
|
5
5
|
import '../chunk-5KRMNUL4.js';
|
|
6
6
|
import '../chunk-C5HFK34M.js';
|
|
7
7
|
import '../chunk-MWXYN6NY.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-BNLXZXZN.js';
|
|
9
9
|
import '../chunk-L5VSIPQD.js';
|
|
10
10
|
import '../chunk-VTETQCR6.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-MS2IXLTC.js';
|
|
12
|
+
import '../chunk-VS6XC5JE.js';
|
|
13
13
|
import '../chunk-RVRB27AN.js';
|
|
14
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-7HRZACI4.js';
|
|
15
15
|
import '../chunk-VSX2G7LA.js';
|
|
16
16
|
import '../chunk-RXGPFAMN.js';
|
|
17
|
-
import '../chunk-
|
|
17
|
+
import '../chunk-RZL4TOK3.js';
|
|
18
18
|
import '../chunk-C3CAXQMA.js';
|
|
19
19
|
import '../chunk-BOFL7GIF.js';
|
|
20
20
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
export { AssetManager, LibraryEntryError, MissingManifestError, installAgentInstances, labelDiffHeaders, mcpNotRunnableReason, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, renderMcpServerConfig, setLibraryAssetCheck, setRenamedEntryLookup, softDepName } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { AssetManager, LibraryEntryError, MissingManifestError, harnessSwitchKeptKey, harnessSwitchStateFile, installAgentInstances, labelDiffHeaders, mcpNotRunnableReason, normalizeRepoUrl, parseCanonicalLockKey, parseRefTolerant, readHarnessSwitchState, renderMcpServerConfig, setLibraryAssetCheck, setRenamedEntryLookup, softDepName, writeHarnessSwitchState } from '../chunk-4I4SBOCS.js';
|
|
2
|
+
import '../chunk-FXBKBOI5.js';
|
|
3
|
+
import '../chunk-RZ5R6GDJ.js';
|
|
4
|
+
import '../chunk-CVUMZTNO.js';
|
|
5
5
|
import '../chunk-F3D25RGM.js';
|
|
6
6
|
import '../chunk-3TXEJN4W.js';
|
|
7
7
|
import '../chunk-ISHJITXJ.js';
|
|
8
8
|
import '../chunk-LNFKL23K.js';
|
|
9
9
|
import '../chunk-JRN5QF4C.js';
|
|
10
10
|
import '../chunk-NUELZWCF.js';
|
|
11
|
-
export { SCAFFOLD_KINDS, createScaffold, deployAll, installAgent, installTargetOf, removeAsset } from '../chunk-
|
|
11
|
+
export { SCAFFOLD_KINDS, createScaffold, deployAll, installAgent, installTargetOf, removeAsset } from '../chunk-KRL53RZB.js';
|
|
12
12
|
export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments } from '../chunk-PKE3PXOK.js';
|
|
13
|
-
export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-
|
|
13
|
+
export { appendHistory, clearHistory, getRecentHistory, loadHistory } from '../chunk-LKBRBVVS.js';
|
|
14
14
|
import '../chunk-UQ6LFBPZ.js';
|
|
15
|
-
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, harnessTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-
|
|
15
|
+
export { AGENT_RENDERERS, claudeCodeRenderer, codexRenderer, harnessTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-R3ZNAPBV.js';
|
|
16
16
|
import '../chunk-WS3BOCAT.js';
|
|
17
|
-
export { FACTORY_SOURCE_URL } from '../chunk-
|
|
17
|
+
export { FACTORY_SOURCE_URL } from '../chunk-MEU2HHGV.js';
|
|
18
18
|
import '../chunk-4GY63JU6.js';
|
|
19
|
-
import '../chunk-
|
|
19
|
+
import '../chunk-CJO3XKO7.js';
|
|
20
20
|
import '../chunk-5KRMNUL4.js';
|
|
21
21
|
import '../chunk-C5HFK34M.js';
|
|
22
22
|
import '../chunk-MWXYN6NY.js';
|
|
23
|
-
import '../chunk-
|
|
23
|
+
import '../chunk-BNLXZXZN.js';
|
|
24
24
|
import '../chunk-L5VSIPQD.js';
|
|
25
25
|
import '../chunk-VTETQCR6.js';
|
|
26
|
-
import '../chunk-
|
|
27
|
-
import '../chunk-
|
|
26
|
+
import '../chunk-MS2IXLTC.js';
|
|
27
|
+
import '../chunk-VS6XC5JE.js';
|
|
28
28
|
import '../chunk-RVRB27AN.js';
|
|
29
|
-
import '../chunk-
|
|
29
|
+
import '../chunk-7HRZACI4.js';
|
|
30
30
|
import '../chunk-VSX2G7LA.js';
|
|
31
31
|
import '../chunk-RXGPFAMN.js';
|
|
32
|
-
import '../chunk-
|
|
32
|
+
import '../chunk-RZL4TOK3.js';
|
|
33
33
|
import '../chunk-C3CAXQMA.js';
|
|
34
34
|
import '../chunk-BOFL7GIF.js';
|
|
35
35
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export { SCAFFOLD_KINDS, assertNoLibrarySymlinks, cachedComposedFiles, canonicalEntryRef, composedDriftRefs, createScaffold, deployAll, deployAsset, deployedAssetDrift, diffDeployedAgent, entriesNeedingDeploy, installTargetOf, readKeptLegacyCopies, removeAsset, sourceComposedFiles, writeKeptLegacyCopies } from '../chunk-
|
|
1
|
+
export { SCAFFOLD_KINDS, assertNoLibrarySymlinks, cachedComposedFiles, canonicalEntryRef, composedDriftRefs, createScaffold, deployAll, deployAsset, deployedAssetDrift, diffDeployedAgent, entriesNeedingDeploy, installTargetOf, readKeptLegacyCopies, removeAsset, sourceComposedFiles, writeKeptLegacyCopies } from '../chunk-KRL53RZB.js';
|
|
2
2
|
import '../chunk-PKE3PXOK.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-R3ZNAPBV.js';
|
|
4
4
|
import '../chunk-WS3BOCAT.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-MEU2HHGV.js';
|
|
6
6
|
import '../chunk-4GY63JU6.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-CJO3XKO7.js';
|
|
8
8
|
import '../chunk-5KRMNUL4.js';
|
|
9
9
|
import '../chunk-C5HFK34M.js';
|
|
10
10
|
import '../chunk-MWXYN6NY.js';
|
|
11
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-BNLXZXZN.js';
|
|
12
12
|
import '../chunk-L5VSIPQD.js';
|
|
13
13
|
import '../chunk-VTETQCR6.js';
|
|
14
|
-
import '../chunk-
|
|
15
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-MS2IXLTC.js';
|
|
15
|
+
import '../chunk-VS6XC5JE.js';
|
|
16
16
|
import '../chunk-RVRB27AN.js';
|
|
17
|
-
import '../chunk-
|
|
17
|
+
import '../chunk-7HRZACI4.js';
|
|
18
18
|
import '../chunk-VSX2G7LA.js';
|
|
19
19
|
import '../chunk-RXGPFAMN.js';
|
|
20
|
-
import '../chunk-
|
|
20
|
+
import '../chunk-RZL4TOK3.js';
|
|
21
21
|
import '../chunk-C3CAXQMA.js';
|
|
22
22
|
import '../chunk-BOFL7GIF.js';
|
|
23
23
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
export { AGENT_RENDERERS, CODEX_IDENTITY_DIR, agentRenderFiles, claudeCodeRenderer, codexRenderer, harnessTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-
|
|
1
|
+
export { AGENT_RENDERERS, CODEX_IDENTITY_DIR, agentRenderFiles, claudeCodeRenderer, codexRenderer, harnessTargetSupportsAgents, ompRenderer, renderAgentToFramework } from '../chunk-R3ZNAPBV.js';
|
|
2
2
|
import '../chunk-WS3BOCAT.js';
|
|
3
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-MEU2HHGV.js';
|
|
4
4
|
import '../chunk-4GY63JU6.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-CJO3XKO7.js';
|
|
6
6
|
import '../chunk-5KRMNUL4.js';
|
|
7
7
|
import '../chunk-C5HFK34M.js';
|
|
8
8
|
import '../chunk-MWXYN6NY.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-BNLXZXZN.js';
|
|
10
10
|
import '../chunk-L5VSIPQD.js';
|
|
11
11
|
import '../chunk-VTETQCR6.js';
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-MS2IXLTC.js';
|
|
13
|
+
import '../chunk-VS6XC5JE.js';
|
|
14
14
|
import '../chunk-RVRB27AN.js';
|
|
15
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-7HRZACI4.js';
|
|
16
16
|
import '../chunk-VSX2G7LA.js';
|
|
17
17
|
import '../chunk-RXGPFAMN.js';
|
|
18
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-RZL4TOK3.js';
|
|
19
19
|
import '../chunk-C3CAXQMA.js';
|
|
20
20
|
import '../chunk-BOFL7GIF.js';
|
|
21
21
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What `skaile harness set` remembers about the harness a project left, in
|
|
3
|
+
* `.skaile/harness-switch-hashes.json` (per machine, ignored by git):
|
|
4
|
+
*
|
|
5
|
+
* - `hashes`: absolute path -> sha256 of every agent file the lock recorded for the old harness.
|
|
6
|
+
* An old copy that still hashes to its record is untouched, so `--clean` may delete it.
|
|
7
|
+
* - `kept`: project-relative paths (`/` separators) of old copies `--clean` kept because the user
|
|
8
|
+
* changed them. They leave the stale list: the hint to run `--clean` cannot remove them.
|
|
9
|
+
*
|
|
10
|
+
* The first versions wrote the hashes as one flat map; that shape is still read.
|
|
11
|
+
*/
|
|
12
|
+
/** The remembered state of one project. */
|
|
13
|
+
export interface HarnessSwitchState {
|
|
14
|
+
/** Absolute path -> sha256 of an agent file the lock recorded. */
|
|
15
|
+
hashes: Map<string, string>;
|
|
16
|
+
/** Project-relative paths of old copies `--clean` kept. */
|
|
17
|
+
kept: Set<string>;
|
|
18
|
+
}
|
|
19
|
+
/** Where the state of a project is kept. */
|
|
20
|
+
export declare function harnessSwitchStateFile(projectDir: string): string;
|
|
21
|
+
/** Project-relative key of a path in {@link HarnessSwitchState.kept}. */
|
|
22
|
+
export declare function harnessSwitchKeptKey(projectDir: string, path: string): string;
|
|
23
|
+
/** Read the state; empty when there is none or the file is unreadable. */
|
|
24
|
+
export declare function readHarnessSwitchState(projectDir: string): HarnessSwitchState;
|
|
25
|
+
/**
|
|
26
|
+
* Save the state; an empty state removes the file. A failed write is ignored: the state is a
|
|
27
|
+
* courtesy, and `--clean` keeps what it cannot tell.
|
|
28
|
+
*/
|
|
29
|
+
export declare function writeHarnessSwitchState(projectDir: string, state: HarnessSwitchState): void;
|
|
30
|
+
//# sourceMappingURL=harness-switch-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-switch-state.d.ts","sourceRoot":"","sources":["../../../asset-manager/src/harness-switch-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,2DAA2D;IAC3D,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB;AAED,4CAA4C;AAC5C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAUD,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CAkB7E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAgB3F"}
|
|
@@ -865,7 +865,7 @@ export declare class AssetManager {
|
|
|
865
865
|
private readonly verboseCollisions;
|
|
866
866
|
/** Store URLs whose failed version lookup was already reported (one warning per URL). */
|
|
867
867
|
private readonly warnedStoreVersionLookups;
|
|
868
|
-
/** Whether each store answers: one
|
|
868
|
+
/** Whether each store answers: one process asks a dead store once (`processStoreProbe`). */
|
|
869
869
|
private readonly storeProbe;
|
|
870
870
|
/** Stores a lookup could not reach (store URL -> one line why); `add` reports them instead of "not found". */
|
|
871
871
|
private readonly storeFailures;
|
|
@@ -1071,16 +1071,44 @@ export declare class AssetManager {
|
|
|
1071
1071
|
*/
|
|
1072
1072
|
private renderHarnessMcpConfig;
|
|
1073
1073
|
/**
|
|
1074
|
-
*
|
|
1075
|
-
*
|
|
1076
|
-
*
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1074
|
+
* Whether a project-relative path is a file an agent instance renders (the ledger's files). An
|
|
1075
|
+
* instance claims files and folders (omp renders a folder): a file under a claimed folder is
|
|
1076
|
+
* claimed too.
|
|
1077
|
+
*/
|
|
1078
|
+
private instanceClaims;
|
|
1079
|
+
/**
|
|
1080
|
+
* Whether the path `rel` that the lock lists under `rendered:` for the agent `name` is a file
|
|
1081
|
+
* named after the asset that an instance's file (or the `binding: run` role) stands for now.
|
|
1082
|
+
* Such a path is no part of the rendering the lock expects any more: a lock of 5.13.0 and older
|
|
1083
|
+
* still lists it, `install` drops it at the next lock write, and until then it is neither a
|
|
1084
|
+
* missing nor an edited copy. Always `false` in global mode.
|
|
1085
|
+
*/
|
|
1086
|
+
private supersededRendering;
|
|
1087
|
+
/**
|
|
1088
|
+
* The files named after an agent asset that an earlier CLI rendered and this one does not: the
|
|
1089
|
+
* agent is bound by an instance (its rendering is the instance's file), or it only runs as a
|
|
1090
|
+
* `binding: run` role. A file counts when no instance of the ledger claims it and either the
|
|
1091
|
+
* lock lists it for the agent (`edited` when its bytes differ from the recorded ones), or the
|
|
1092
|
+
* lock records no rendering for the agent at all (5.11.0 and older) and the file is the
|
|
1093
|
+
* instance's render under the asset's name. A file of the second kind that differs from that
|
|
1094
|
+
* render may be the user's own and is not listed. Project mode only.
|
|
1095
|
+
*/
|
|
1096
|
+
private leftoverAgentFiles;
|
|
1097
|
+
/**
|
|
1098
|
+
* Remove the leftover files {@link leftoverAgentFiles} lists. A file edited since the lock
|
|
1099
|
+
* stays (it is the user's now) and is named. The old lock entry is rewritten by the same
|
|
1100
|
+
* install, so the lock never keeps a path that is gone; `install --locked` leaves the lock,
|
|
1101
|
+
* which `check` does not read for a file that is gone.
|
|
1080
1102
|
*
|
|
1081
1103
|
* @returns The project-relative paths removed.
|
|
1082
1104
|
*/
|
|
1083
1105
|
private pruneAssetNamedAgentFiles;
|
|
1106
|
+
/**
|
|
1107
|
+
* The `check`, `doctor` and `outdated` lines for the files {@link leftoverAgentFiles} lists: an
|
|
1108
|
+
* untouched one is removed by the next `install` (and by `install --locked`), an edited one
|
|
1109
|
+
* stays. Empty in global mode and when nothing is left over.
|
|
1110
|
+
*/
|
|
1111
|
+
leftoverAgentFileNotices(): string[];
|
|
1084
1112
|
/**
|
|
1085
1113
|
* Render every agent instance of `skaile.yaml` into the harness target's native
|
|
1086
1114
|
* agent files (`.claude/agents/<id>.md`, …) and prune the renderings of
|
|
@@ -1090,7 +1118,7 @@ export declare class AssetManager {
|
|
|
1090
1118
|
*
|
|
1091
1119
|
* @param opts.prune - Also remove the files named after the agent assets that an earlier CLI
|
|
1092
1120
|
* rendered and an instance renders now ({@link pruneAssetNamedAgentFiles}). Set by the
|
|
1093
|
-
* commands that
|
|
1121
|
+
* commands that deploy or re-lock; the lock is left as it is by `install --locked`.
|
|
1094
1122
|
*/
|
|
1095
1123
|
private renderAgentInstances;
|
|
1096
1124
|
private loadConfig;
|
|
@@ -1147,16 +1175,17 @@ export declare class AssetManager {
|
|
|
1147
1175
|
/**
|
|
1148
1176
|
* Every ref that more than one registered library holds, with one row per holder
|
|
1149
1177
|
* (all libraries, all versions) in the order `add` prefers them: the first row is
|
|
1150
|
-
* the one `add <ref>` deploys.
|
|
1151
|
-
*
|
|
1178
|
+
* the one `add <ref>` deploys. `search` reads this to group the index rows of a ref
|
|
1179
|
+
* (one per library) and mark the copy `add` deploys; the versions come from the files
|
|
1180
|
+
* themselves, which the index follows only after the next `skaile library index`.
|
|
1152
1181
|
*
|
|
1153
1182
|
* @returns `kind:@publisher/name` → holders; refs held by one library are absent.
|
|
1154
1183
|
*/
|
|
1155
1184
|
libraryHolders(): Promise<Map<string, LibraryHolder[]>>;
|
|
1156
1185
|
/**
|
|
1157
1186
|
* Every asset a registered library holds, read from the library directories themselves
|
|
1158
|
-
* (not the local index, which
|
|
1159
|
-
*
|
|
1187
|
+
* (not the local index, which lags behind them until the next `skaile library index`).
|
|
1188
|
+
* One row per holder, all versions.
|
|
1160
1189
|
*
|
|
1161
1190
|
* @returns `[]` when no library holds an asset. Never warns.
|
|
1162
1191
|
*/
|
|
@@ -1637,6 +1666,13 @@ export declare class AssetManager {
|
|
|
1637
1666
|
* clone-relative entry.
|
|
1638
1667
|
*/
|
|
1639
1668
|
private buildCatalogEntries;
|
|
1669
|
+
/**
|
|
1670
|
+
* The tail of a `hash mismatch for <file>: expected <lock>, got <fetched>` failure of a locked
|
|
1671
|
+
* restore when the deployed copy already holds the fetched bytes: the lock records another
|
|
1672
|
+
* hash for the file, and `install` (not `install --locked`) writes the right one. Empty for
|
|
1673
|
+
* any other failure, and when the copy is missing or differs from the fetched bytes.
|
|
1674
|
+
*/
|
|
1675
|
+
private wrongLockHashHint;
|
|
1640
1676
|
/**
|
|
1641
1677
|
* Fetch + SHA-verify the bytes of every store-resolved candidate that needs
|
|
1642
1678
|
* bytes on disk into `.skaile/cache/store/`, reusing the same verified-fetch
|
|
@@ -2964,6 +3000,7 @@ export declare class AssetManager {
|
|
|
2964
3000
|
private resolveRepoDir;
|
|
2965
3001
|
}
|
|
2966
3002
|
export { installAgent } from "./install-agent.js";
|
|
3003
|
+
export { type HarnessSwitchState, harnessSwitchKeptKey, harnessSwitchStateFile, readHarnessSwitchState, writeHarnessSwitchState, } from "./harness-switch-state.js";
|
|
2967
3004
|
export type { InstalledAgentInstance, InstallAgentInstancesOptions, InstallAgentInstancesResult, } from "./install-instances.js";
|
|
2968
3005
|
export { installAgentInstances } from "./install-instances.js";
|
|
2969
3006
|
export type { AgentRenderer, AgentRenderInput, AgentRenderResult } from "./renderers.js";
|