@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/dist/chunk-DJSGQW2Q.js
DELETED
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
import { loadDeclaredPlugins } from './chunk-TMQFOJ6F.js';
|
|
2
|
-
import { unknownHarnessMessage, logErr, logWarn } from './chunk-BLBXOG5Q.js';
|
|
3
|
-
import { resolveAgentDefinitionDir, AgentRefResolutionError, normalizeAgentInstances, agentBlockKeyDiagnostics, agentInstanceDiagnostics, loadSkWorkspaceConfig, SKAILE_YAML_DEFAULT } from './chunk-FZO64PLQ.js';
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import path from 'path';
|
|
6
|
-
import { parse } from 'yaml';
|
|
7
|
-
|
|
8
|
-
// cli/src/type-guards.ts
|
|
9
|
-
function isRecord(value) {
|
|
10
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// cli/src/commands/validate-instances.ts
|
|
14
|
-
var AGENT_MANIFEST_FILE = "agent.yaml";
|
|
15
|
-
var TRIGGER_REQUIRED_FIELDS = {
|
|
16
|
-
schedule: ["cron", "prompt"],
|
|
17
|
-
webhook: ["prompt"],
|
|
18
|
-
channel: ["when"],
|
|
19
|
-
event: ["event"]
|
|
20
|
-
};
|
|
21
|
-
var err = (code, message, at) => ({
|
|
22
|
-
code,
|
|
23
|
-
severity: "error",
|
|
24
|
-
message,
|
|
25
|
-
path: at
|
|
26
|
-
});
|
|
27
|
-
function readAssetFacts(manifest) {
|
|
28
|
-
const facts = {
|
|
29
|
-
lifecycle: manifest.lifecycle,
|
|
30
|
-
hasIo: manifest.io !== void 0 && manifest.io !== null,
|
|
31
|
-
connectorSlots: [],
|
|
32
|
-
otherSlots: [],
|
|
33
|
-
triggerIds: []
|
|
34
|
-
};
|
|
35
|
-
for (const item of Array.isArray(manifest.composes) ? manifest.composes : []) {
|
|
36
|
-
if (!isRecord(item) || typeof item.id !== "string") continue;
|
|
37
|
-
(item.kind === "connector" ? facts.connectorSlots : facts.otherSlots).push(item.id);
|
|
38
|
-
}
|
|
39
|
-
for (const t of Array.isArray(manifest.triggers) ? manifest.triggers : []) {
|
|
40
|
-
if (isRecord(t) && typeof t.id === "string") facts.triggerIds.push(t.id);
|
|
41
|
-
}
|
|
42
|
-
return facts;
|
|
43
|
-
}
|
|
44
|
-
function agentDefinitionProblem(projectDir, definition) {
|
|
45
|
-
let dir;
|
|
46
|
-
try {
|
|
47
|
-
dir = resolveAgentDefinitionDir(projectDir, definition);
|
|
48
|
-
} catch (e) {
|
|
49
|
-
if (!(e instanceof AgentRefResolutionError)) throw e;
|
|
50
|
-
return e.message;
|
|
51
|
-
}
|
|
52
|
-
if (dir === void 0) {
|
|
53
|
-
return `agent.definition "${definition}": no ai-assets/ directory above the project`;
|
|
54
|
-
}
|
|
55
|
-
if (path.basename(dir) === AGENT_MANIFEST_FILE) dir = path.dirname(dir);
|
|
56
|
-
if (!fs.existsSync(path.join(dir, AGENT_MANIFEST_FILE))) {
|
|
57
|
-
return `agent.definition "${definition}": no ${AGENT_MANIFEST_FILE} in ${dir}`;
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
function loadAsset(projectDir, id, ref) {
|
|
62
|
-
const at = `agents.${id}.ref`;
|
|
63
|
-
let dir;
|
|
64
|
-
try {
|
|
65
|
-
dir = resolveAgentDefinitionDir(projectDir, ref);
|
|
66
|
-
} catch (e) {
|
|
67
|
-
if (!(e instanceof AgentRefResolutionError)) throw e;
|
|
68
|
-
return { diagnostic: err("agent_ref_unresolved", `agents.${id}: ${e.message}`, at) };
|
|
69
|
-
}
|
|
70
|
-
if (dir === void 0) {
|
|
71
|
-
return {
|
|
72
|
-
diagnostic: err(
|
|
73
|
-
"agent_ref_unresolved",
|
|
74
|
-
`agents.${id}: ref "${ref}" cannot be resolved \u2014 no ai-assets/ directory above the project`,
|
|
75
|
-
at
|
|
76
|
-
)
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
const manifestPath = path.join(dir, AGENT_MANIFEST_FILE);
|
|
80
|
-
let text;
|
|
81
|
-
try {
|
|
82
|
-
text = fs.readFileSync(manifestPath, "utf-8");
|
|
83
|
-
} catch {
|
|
84
|
-
return {
|
|
85
|
-
diagnostic: err(
|
|
86
|
-
"agent_ref_unresolved",
|
|
87
|
-
`agents.${id}: ref "${ref}" resolves to ${dir}, which has no ${AGENT_MANIFEST_FILE}`,
|
|
88
|
-
at
|
|
89
|
-
)
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
let manifest;
|
|
93
|
-
try {
|
|
94
|
-
manifest = parse(text);
|
|
95
|
-
} catch (e) {
|
|
96
|
-
return {
|
|
97
|
-
diagnostic: err(
|
|
98
|
-
"agent_manifest_invalid",
|
|
99
|
-
`agents.${id}: ${manifestPath} is not valid YAML: ${e instanceof Error ? e.message : String(e)}`,
|
|
100
|
-
at
|
|
101
|
-
)
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
if (!isRecord(manifest)) {
|
|
105
|
-
return {
|
|
106
|
-
diagnostic: err(
|
|
107
|
-
"agent_manifest_invalid",
|
|
108
|
-
`agents.${id}: ${manifestPath} is not a mapping`,
|
|
109
|
-
at
|
|
110
|
-
)
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
return { facts: readAssetFacts(manifest) };
|
|
114
|
-
}
|
|
115
|
-
function instanceRefProblem(projectDir, id, ref) {
|
|
116
|
-
const loaded = loadAsset(projectDir, id, ref);
|
|
117
|
-
return "diagnostic" in loaded && loaded.diagnostic.code === "agent_ref_unresolved" ? loaded.diagnostic.message : null;
|
|
118
|
-
}
|
|
119
|
-
function checkTriggers(id, triggers, assetTriggerIds) {
|
|
120
|
-
const out = [];
|
|
121
|
-
const seen = /* @__PURE__ */ new Set();
|
|
122
|
-
triggers.forEach((trigger, i) => {
|
|
123
|
-
const at = `agents.${id}.triggers[${i}]`;
|
|
124
|
-
if (seen.has(trigger.id)) {
|
|
125
|
-
out.push(
|
|
126
|
-
err(
|
|
127
|
-
"agent_trigger_duplicate",
|
|
128
|
-
`agents.${id}: trigger id "${trigger.id}" is declared twice`,
|
|
129
|
-
`${at}.id`
|
|
130
|
-
)
|
|
131
|
-
);
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
seen.add(trigger.id);
|
|
135
|
-
if (!assetTriggerIds || assetTriggerIds.includes(trigger.id)) return;
|
|
136
|
-
if (!trigger.kind) {
|
|
137
|
-
out.push(
|
|
138
|
-
err(
|
|
139
|
-
"agent_trigger_unknown",
|
|
140
|
-
`agents.${id}: trigger "${trigger.id}" is not declared by the agent asset (${assetTriggerIds.length > 0 ? `has: ${assetTriggerIds.join(", ")}` : "it declares no triggers"}) \u2014 add \`kind\` and the trigger's fields to declare a new one`,
|
|
141
|
-
`${at}.id`
|
|
142
|
-
)
|
|
143
|
-
);
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
const missing = TRIGGER_REQUIRED_FIELDS[trigger.kind].filter(
|
|
147
|
-
(field) => trigger[field] === void 0
|
|
148
|
-
);
|
|
149
|
-
if (missing.length > 0) {
|
|
150
|
-
out.push(
|
|
151
|
-
err(
|
|
152
|
-
"agent_trigger_incomplete",
|
|
153
|
-
`agents.${id}: trigger "${trigger.id}" (kind ${trigger.kind}) is not in the asset, so it must declare ${missing.join(", ")}`,
|
|
154
|
-
at
|
|
155
|
-
)
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
return out;
|
|
160
|
-
}
|
|
161
|
-
function checkConnectors(id, instance, facts, connectorIds) {
|
|
162
|
-
const out = [];
|
|
163
|
-
for (const [slot, connectorId] of Object.entries(instance.connectors ?? {})) {
|
|
164
|
-
const at = `agents.${id}.connectors.${slot}`;
|
|
165
|
-
if (!facts.connectorSlots.includes(slot)) {
|
|
166
|
-
const hint = facts.otherSlots.includes(slot) ? `"${slot}" is a slot of a non-connector item` : facts.connectorSlots.length > 0 ? `the asset's connector slots are: ${facts.connectorSlots.join(", ")}` : "the asset declares no connector slots";
|
|
167
|
-
out.push(
|
|
168
|
-
err(
|
|
169
|
-
"agent_connector_slot_unknown",
|
|
170
|
-
`agents.${id}: connectors.${slot} is not a connector slot id of the agent asset (${hint})`,
|
|
171
|
-
at
|
|
172
|
-
)
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
if (!connectorIds.includes(connectorId)) {
|
|
176
|
-
out.push(
|
|
177
|
-
err(
|
|
178
|
-
"agent_connector_unknown",
|
|
179
|
-
`agents.${id}: connectors.${slot} points at "${connectorId}", which is not in skaile.yaml connectors[]${connectorIds.length > 0 ? ` (has: ${connectorIds.join(", ")})` : ""}`,
|
|
180
|
-
at
|
|
181
|
-
)
|
|
182
|
-
);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
return out;
|
|
186
|
-
}
|
|
187
|
-
function checkAgentInstances(projectDir, parsed) {
|
|
188
|
-
const diagnostics = [];
|
|
189
|
-
const instances = normalizeAgentInstances(parsed.agents, diagnostics);
|
|
190
|
-
const agent = isRecord(parsed.agent) ? parsed.agent : void 0;
|
|
191
|
-
diagnostics.push(...agentBlockKeyDiagnostics(parsed.agent));
|
|
192
|
-
if (agent?.subagents !== void 0) {
|
|
193
|
-
diagnostics.push(
|
|
194
|
-
err(
|
|
195
|
-
"agent_subagents_removed",
|
|
196
|
-
"`agent.subagents` was removed \u2014 declare each subagent as an agent asset and bind it under `agents:` with `lifecycle: role`",
|
|
197
|
-
"agent.subagents"
|
|
198
|
-
)
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
if (agent?.instances !== void 0) {
|
|
202
|
-
diagnostics.push(
|
|
203
|
-
err(
|
|
204
|
-
"misplaced_agent_instances",
|
|
205
|
-
"`agent.instances` is not a skaile.yaml key \u2014 declare instances under root `agents:`",
|
|
206
|
-
"agent.instances"
|
|
207
|
-
)
|
|
208
|
-
);
|
|
209
|
-
}
|
|
210
|
-
diagnostics.push(
|
|
211
|
-
...agentInstanceDiagnostics({
|
|
212
|
-
agent: {
|
|
213
|
-
definition: typeof agent?.definition === "string" ? agent.definition : void 0,
|
|
214
|
-
instances
|
|
215
|
-
}
|
|
216
|
-
})
|
|
217
|
-
);
|
|
218
|
-
if (typeof agent?.definition === "string" && agent.definition !== "") {
|
|
219
|
-
const problem = agentDefinitionProblem(projectDir, agent.definition);
|
|
220
|
-
if (problem) diagnostics.push(err("agent_ref_unresolved", problem, "agent.definition"));
|
|
221
|
-
}
|
|
222
|
-
if (!instances) return diagnostics;
|
|
223
|
-
const connectorIds = (Array.isArray(parsed.connectors) ? parsed.connectors : []).flatMap(
|
|
224
|
-
(c) => isRecord(c) && typeof c.id === "string" ? [c.id] : []
|
|
225
|
-
);
|
|
226
|
-
for (const [id, instance] of Object.entries(instances)) {
|
|
227
|
-
const loaded = loadAsset(projectDir, id, instance.ref);
|
|
228
|
-
if ("diagnostic" in loaded) {
|
|
229
|
-
diagnostics.push(loaded.diagnostic, ...checkTriggers(id, instance.triggers ?? [], void 0));
|
|
230
|
-
continue;
|
|
231
|
-
}
|
|
232
|
-
const { facts } = loaded;
|
|
233
|
-
const lifecycle = instance.lifecycle ?? facts.lifecycle ?? "standing";
|
|
234
|
-
if (lifecycle === "role" && !facts.hasIo) {
|
|
235
|
-
diagnostics.push(
|
|
236
|
-
err(
|
|
237
|
-
"agent_role_missing_io",
|
|
238
|
-
`agents.${id}: lifecycle "role" needs the agent asset to declare \`io\` ({ input, output } JSON Schemas)`,
|
|
239
|
-
`agents.${id}.lifecycle`
|
|
240
|
-
)
|
|
241
|
-
);
|
|
242
|
-
}
|
|
243
|
-
diagnostics.push(...checkConnectors(id, instance, facts, connectorIds));
|
|
244
|
-
diagnostics.push(...checkTriggers(id, instance.triggers ?? [], facts.triggerIds));
|
|
245
|
-
}
|
|
246
|
-
return diagnostics;
|
|
247
|
-
}
|
|
248
|
-
function unknownKeyWarnings(diagnostics, label) {
|
|
249
|
-
return diagnostics.filter((d) => d.code === "unknown_config_key" || d.code === "unknown_profile_key").map((d) => `${label}: ${d.message}`);
|
|
250
|
-
}
|
|
251
|
-
var CONNECTOR_ERROR_CODES = [
|
|
252
|
-
"connector_missing_driver",
|
|
253
|
-
"connector_missing_id",
|
|
254
|
-
"connector_duplicate_id",
|
|
255
|
-
"connector_invalid_access"
|
|
256
|
-
];
|
|
257
|
-
var CONNECTOR_SERVE_REFUSAL_CODES = CONNECTOR_ERROR_CODES.filter(
|
|
258
|
-
(code) => code !== "connector_missing_driver"
|
|
259
|
-
);
|
|
260
|
-
function connectorErrorLines(diagnostics, label, codes = CONNECTOR_ERROR_CODES) {
|
|
261
|
-
return diagnostics.filter((d) => codes.includes(d.code)).map((d) => `${label} [connectors] \u2014 ${d.code}: ${d.path ? `${d.path}: ` : ""}${d.message}`);
|
|
262
|
-
}
|
|
263
|
-
var AGENT_CONFIG_KEY_CODES = ["deprecated_harness_key", "retired_agent_key"];
|
|
264
|
-
function agentConfigKeyWarnings(diagnostics, label) {
|
|
265
|
-
return diagnostics.filter((d) => AGENT_CONFIG_KEY_CODES.includes(d.code)).map((d) => `${label} [agent-config] \u2014 ${d.code}: ${d.message}`);
|
|
266
|
-
}
|
|
267
|
-
async function unknownHarnessErrors(projectDir, config, label) {
|
|
268
|
-
const profiles = Object.entries(config.agent_config ?? {}).filter(
|
|
269
|
-
(e) => typeof e[1]?.harness === "string"
|
|
270
|
-
);
|
|
271
|
-
if (profiles.every(([, p]) => unknownHarnessMessage(p.harness) === void 0)) return [];
|
|
272
|
-
await loadDeclaredPlugins(projectDir);
|
|
273
|
-
const errors = [];
|
|
274
|
-
for (const [name, p] of profiles) {
|
|
275
|
-
const refusal = unknownHarnessMessage(p.harness);
|
|
276
|
-
if (refusal) errors.push(`${label}: agent-config.${name}.harness: ${refusal}`);
|
|
277
|
-
}
|
|
278
|
-
return errors;
|
|
279
|
-
}
|
|
280
|
-
async function reportUnknownHarnesses(projectDir) {
|
|
281
|
-
let config;
|
|
282
|
-
try {
|
|
283
|
-
config = loadSkWorkspaceConfig(projectDir)?.config;
|
|
284
|
-
} catch {
|
|
285
|
-
return 0;
|
|
286
|
-
}
|
|
287
|
-
if (!config) return 0;
|
|
288
|
-
const errors = await unknownHarnessErrors(projectDir, config, "skaile.yaml");
|
|
289
|
-
for (const line of errors) logErr(line);
|
|
290
|
-
return errors.length;
|
|
291
|
-
}
|
|
292
|
-
function agentInstanceDiagnostics2(projectDir) {
|
|
293
|
-
let parsed;
|
|
294
|
-
try {
|
|
295
|
-
parsed = parse(fs.readFileSync(path.join(projectDir, SKAILE_YAML_DEFAULT), "utf-8"));
|
|
296
|
-
} catch {
|
|
297
|
-
return [];
|
|
298
|
-
}
|
|
299
|
-
if (typeof parsed !== "object" || parsed === null) return [];
|
|
300
|
-
return checkAgentInstances(projectDir, parsed);
|
|
301
|
-
}
|
|
302
|
-
function agentInstanceLine(d) {
|
|
303
|
-
return `${SKAILE_YAML_DEFAULT} [agents] \u2014 ${d.code}: ${d.path ? `${d.path}: ` : ""}${d.message}`;
|
|
304
|
-
}
|
|
305
|
-
function agentInstanceErrorLines(projectDir) {
|
|
306
|
-
return agentInstanceDiagnostics2(projectDir).filter((d) => d.severity === "error" && d.code !== "agent_ref_unresolved").map(agentInstanceLine);
|
|
307
|
-
}
|
|
308
|
-
function agentInstanceWarningLines(projectDir) {
|
|
309
|
-
return agentInstanceDiagnostics2(projectDir).filter(
|
|
310
|
-
(d) => d.severity === "warning" && (d.code === "unknown_agent_instance_key" || d.code === "unknown_agent_key")
|
|
311
|
-
).map(agentInstanceLine);
|
|
312
|
-
}
|
|
313
|
-
async function reportProjectConfig(projectDir, opts) {
|
|
314
|
-
let file;
|
|
315
|
-
try {
|
|
316
|
-
file = loadSkWorkspaceConfig(projectDir);
|
|
317
|
-
} catch {
|
|
318
|
-
return 0;
|
|
319
|
-
}
|
|
320
|
-
if (!file) return 0;
|
|
321
|
-
for (const line of unknownKeyWarnings(file.diagnostics ?? [], "skaile.yaml")) logWarn(line);
|
|
322
|
-
for (const line of agentConfigKeyWarnings(file.diagnostics ?? [], "skaile.yaml")) logWarn(line);
|
|
323
|
-
for (const line of agentInstanceWarningLines(projectDir)) logWarn(line);
|
|
324
|
-
const errors = [
|
|
325
|
-
...opts.harness ? await unknownHarnessErrors(projectDir, file.config, "skaile.yaml") : [],
|
|
326
|
-
...opts.instances ? agentInstanceErrorLines(projectDir) : []
|
|
327
|
-
];
|
|
328
|
-
for (const line of errors) logErr(line);
|
|
329
|
-
return errors.length;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
export { CONNECTOR_SERVE_REFUSAL_CODES, agentDefinitionProblem, agentInstanceErrorLines, agentInstanceWarningLines, checkAgentInstances, connectorErrorLines, instanceRefProblem, isRecord, reportProjectConfig, reportUnknownHarnesses, unknownHarnessErrors, unknownKeyWarnings };
|
|
333
|
-
//# sourceMappingURL=chunk-DJSGQW2Q.js.map
|
|
334
|
-
//# sourceMappingURL=chunk-DJSGQW2Q.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/type-guards.ts","../cli/src/commands/validate-instances.ts","../cli/src/config-checks.ts"],"names":["parseYaml","agentInstanceDiagnostics","fs","path"],"mappings":"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","file":"chunk-DJSGQW2Q.js","sourcesContent":["/** Narrow to a plain-object-shaped value (not `null`, not an array); fields stay `unknown`. */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n","/**\n * `skaile validate` rules for the root `agents:` map of one `skaile.yaml`.\n *\n * Normalisation errors, the `agent:` + `agents.default` conflict, and the\n * asset-dependent rules: every `ref` resolves to an `agent.yaml`, role\n * instances need the asset's `io`, `connectors` bind real connector slots to\n * real `connectors[]` ids, and trigger ids are unique and known.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport {\n AgentRefResolutionError,\n type AgentInstanceConfig,\n type AgentInstanceTrigger,\n agentBlockKeyDiagnostics,\n agentInstanceDiagnostics,\n type Diagnostic,\n normalizeAgentInstances,\n resolveAgentDefinitionDir,\n} from \"@skaile/workspaces/core\";\nimport { parse as parseYaml } from \"yaml\";\nimport { isRecord } from \"../type-guards.ts\";\n\nconst AGENT_MANIFEST_FILE = \"agent.yaml\";\n\n/** Fields a trigger needs when it declares itself in full (no asset trigger to override). */\nconst TRIGGER_REQUIRED_FIELDS: Record<NonNullable<AgentInstanceTrigger[\"kind\"]>, string[]> = {\n schedule: [\"cron\", \"prompt\"],\n webhook: [\"prompt\"],\n channel: [\"when\"],\n event: [\"event\"],\n};\n\nconst err = (code: string, message: string, at: string): Diagnostic => ({\n code,\n severity: \"error\",\n message,\n path: at,\n});\n\n/** The parts of an agent asset the instance rules read. */\ninterface AssetFacts {\n lifecycle: unknown;\n hasIo: boolean;\n /** `composes[].id` of `kind: connector` items. */\n connectorSlots: string[];\n /** `composes[].id` of every other item that has one. */\n otherSlots: string[];\n triggerIds: string[];\n}\n\nfunction readAssetFacts(manifest: Record<string, unknown>): AssetFacts {\n const facts: AssetFacts = {\n lifecycle: manifest.lifecycle,\n hasIo: manifest.io !== undefined && manifest.io !== null,\n connectorSlots: [],\n otherSlots: [],\n triggerIds: [],\n };\n for (const item of Array.isArray(manifest.composes) ? manifest.composes : []) {\n if (!isRecord(item) || typeof item.id !== \"string\") continue;\n (item.kind === \"connector\" ? facts.connectorSlots : facts.otherSlots).push(item.id);\n }\n for (const t of Array.isArray(manifest.triggers) ? manifest.triggers : []) {\n if (isRecord(t) && typeof t.id === \"string\") facts.triggerIds.push(t.id);\n }\n return facts;\n}\n\n/**\n * Why `agent.definition` does not resolve to an agent directory, or `null` when it does. One\n * rule for `validate` and `serve`, so the two print the same line (p1733): an `agent:` ref no\n * manifest declares, a path with no `agent.yaml`, an `ai-assets://` ref with no `ai-assets/`.\n */\nexport function agentDefinitionProblem(projectDir: string, definition: string): string | null {\n let dir: string | undefined;\n try {\n dir = resolveAgentDefinitionDir(projectDir, definition);\n } catch (e) {\n if (!(e instanceof AgentRefResolutionError)) throw e;\n return e.message;\n }\n if (dir === undefined) {\n return `agent.definition \"${definition}\": no ai-assets/ directory above the project`;\n }\n if (path.basename(dir) === AGENT_MANIFEST_FILE) dir = path.dirname(dir);\n if (!fs.existsSync(path.join(dir, AGENT_MANIFEST_FILE))) {\n return `agent.definition \"${definition}\": no ${AGENT_MANIFEST_FILE} in ${dir}`;\n }\n return null;\n}\n\n/** Resolve an instance `ref` to its parsed `agent.yaml`, or an error diagnostic. */\nfunction loadAsset(\n projectDir: string,\n id: string,\n ref: string,\n): { facts: AssetFacts } | { diagnostic: Diagnostic } {\n const at = `agents.${id}.ref`;\n let dir: string | undefined;\n try {\n dir = resolveAgentDefinitionDir(projectDir, ref);\n } catch (e) {\n if (!(e instanceof AgentRefResolutionError)) throw e;\n return { diagnostic: err(\"agent_ref_unresolved\", `agents.${id}: ${e.message}`, at) };\n }\n if (dir === undefined) {\n return {\n diagnostic: err(\n \"agent_ref_unresolved\",\n `agents.${id}: ref \"${ref}\" cannot be resolved — no ai-assets/ directory above the project`,\n at,\n ),\n };\n }\n const manifestPath = path.join(dir, AGENT_MANIFEST_FILE);\n let text: string;\n try {\n text = fs.readFileSync(manifestPath, \"utf-8\");\n } catch {\n return {\n diagnostic: err(\n \"agent_ref_unresolved\",\n `agents.${id}: ref \"${ref}\" resolves to ${dir}, which has no ${AGENT_MANIFEST_FILE}`,\n at,\n ),\n };\n }\n let manifest: unknown;\n try {\n manifest = parseYaml(text);\n } catch (e) {\n return {\n diagnostic: err(\n \"agent_manifest_invalid\",\n `agents.${id}: ${manifestPath} is not valid YAML: ${e instanceof Error ? e.message : String(e)}`,\n at,\n ),\n };\n }\n if (!isRecord(manifest)) {\n return {\n diagnostic: err(\n \"agent_manifest_invalid\",\n `agents.${id}: ${manifestPath} is not a mapping`,\n at,\n ),\n };\n }\n return { facts: readAssetFacts(manifest) };\n}\n\n/**\n * Why the `ref` of an `agents:` instance does not resolve, as the `agent_ref_unresolved` line\n * `validate` prints (`agents.<id>: …`), or `null` when it resolves. `serve` refuses a project\n * with such an instance like `validate` does.\n */\nexport function instanceRefProblem(projectDir: string, id: string, ref: string): string | null {\n const loaded = loadAsset(projectDir, id, ref);\n return \"diagnostic\" in loaded && loaded.diagnostic.code === \"agent_ref_unresolved\"\n ? loaded.diagnostic.message\n : null;\n}\n\n/**\n * Trigger rules. Duplicate ids are always an error; the asset-dependent rules\n * (known id, complete full declaration) run only when `assetTriggerIds` is\n * known — i.e. the instance's `ref` resolved.\n */\nfunction checkTriggers(\n id: string,\n triggers: AgentInstanceTrigger[],\n assetTriggerIds: string[] | undefined,\n): Diagnostic[] {\n const out: Diagnostic[] = [];\n const seen = new Set<string>();\n triggers.forEach((trigger, i) => {\n const at = `agents.${id}.triggers[${i}]`;\n if (seen.has(trigger.id)) {\n out.push(\n err(\n \"agent_trigger_duplicate\",\n `agents.${id}: trigger id \"${trigger.id}\" is declared twice`,\n `${at}.id`,\n ),\n );\n return;\n }\n seen.add(trigger.id);\n if (!assetTriggerIds || assetTriggerIds.includes(trigger.id)) return;\n if (!trigger.kind) {\n out.push(\n err(\n \"agent_trigger_unknown\",\n `agents.${id}: trigger \"${trigger.id}\" is not declared by the agent asset (${assetTriggerIds.length > 0 ? `has: ${assetTriggerIds.join(\", \")}` : \"it declares no triggers\"}) — add \\`kind\\` and the trigger's fields to declare a new one`,\n `${at}.id`,\n ),\n );\n return;\n }\n const missing = TRIGGER_REQUIRED_FIELDS[trigger.kind].filter(\n (field) => (trigger as unknown as Record<string, unknown>)[field] === undefined,\n );\n if (missing.length > 0) {\n out.push(\n err(\n \"agent_trigger_incomplete\",\n `agents.${id}: trigger \"${trigger.id}\" (kind ${trigger.kind}) is not in the asset, so it must declare ${missing.join(\", \")}`,\n at,\n ),\n );\n }\n });\n return out;\n}\n\nfunction checkConnectors(\n id: string,\n instance: AgentInstanceConfig,\n facts: AssetFacts,\n connectorIds: string[],\n): Diagnostic[] {\n const out: Diagnostic[] = [];\n for (const [slot, connectorId] of Object.entries(instance.connectors ?? {})) {\n const at = `agents.${id}.connectors.${slot}`;\n if (!facts.connectorSlots.includes(slot)) {\n const hint = facts.otherSlots.includes(slot)\n ? `\"${slot}\" is a slot of a non-connector item`\n : facts.connectorSlots.length > 0\n ? `the asset's connector slots are: ${facts.connectorSlots.join(\", \")}`\n : \"the asset declares no connector slots\";\n out.push(\n err(\n \"agent_connector_slot_unknown\",\n `agents.${id}: connectors.${slot} is not a connector slot id of the agent asset (${hint})`,\n at,\n ),\n );\n }\n if (!connectorIds.includes(connectorId)) {\n out.push(\n err(\n \"agent_connector_unknown\",\n `agents.${id}: connectors.${slot} points at \"${connectorId}\", which is not in skaile.yaml connectors[]${connectorIds.length > 0 ? ` (has: ${connectorIds.join(\", \")})` : \"\"}`,\n at,\n ),\n );\n }\n }\n return out;\n}\n\n/**\n * Diagnostics for the `agents:` map of a parsed `skaile.yaml`.\n *\n * @param projectDir - Directory of the `skaile.yaml`; local and catalog refs resolve against it.\n * @param parsed - The raw YAML document.\n */\nexport function checkAgentInstances(\n projectDir: string,\n parsed: Record<string, unknown>,\n): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n const instances = normalizeAgentInstances(parsed.agents, diagnostics);\n const agent = isRecord(parsed.agent) ? parsed.agent : undefined;\n diagnostics.push(...agentBlockKeyDiagnostics(parsed.agent));\n if (agent?.subagents !== undefined) {\n diagnostics.push(\n err(\n \"agent_subagents_removed\",\n \"`agent.subagents` was removed — declare each subagent as an agent asset and bind it under `agents:` with `lifecycle: role`\",\n \"agent.subagents\",\n ),\n );\n }\n if (agent?.instances !== undefined) {\n diagnostics.push(\n err(\n \"misplaced_agent_instances\",\n \"`agent.instances` is not a skaile.yaml key — declare instances under root `agents:`\",\n \"agent.instances\",\n ),\n );\n }\n diagnostics.push(\n ...agentInstanceDiagnostics({\n agent: {\n definition: typeof agent?.definition === \"string\" ? agent.definition : undefined,\n instances,\n },\n }),\n );\n // `serve` refuses an `agent.definition` that does not resolve, so `validate` must too (p1733).\n if (typeof agent?.definition === \"string\" && agent.definition !== \"\") {\n const problem = agentDefinitionProblem(projectDir, agent.definition);\n if (problem) diagnostics.push(err(\"agent_ref_unresolved\", problem, \"agent.definition\"));\n }\n if (!instances) return diagnostics;\n\n const connectorIds = (Array.isArray(parsed.connectors) ? parsed.connectors : []).flatMap((c) =>\n isRecord(c) && typeof c.id === \"string\" ? [c.id] : [],\n );\n\n for (const [id, instance] of Object.entries(instances)) {\n const loaded = loadAsset(projectDir, id, instance.ref);\n if (\"diagnostic\" in loaded) {\n // Asset-independent trigger rules still apply when the ref is broken.\n diagnostics.push(loaded.diagnostic, ...checkTriggers(id, instance.triggers ?? [], undefined));\n continue;\n }\n const { facts } = loaded;\n const lifecycle = instance.lifecycle ?? facts.lifecycle ?? \"standing\";\n if (lifecycle === \"role\" && !facts.hasIo) {\n diagnostics.push(\n err(\n \"agent_role_missing_io\",\n `agents.${id}: lifecycle \"role\" needs the agent asset to declare \\`io\\` ({ input, output } JSON Schemas)`,\n `agents.${id}.lifecycle`,\n ),\n );\n }\n diagnostics.push(...checkConnectors(id, instance, facts, connectorIds));\n diagnostics.push(...checkTriggers(id, instance.triggers ?? [], facts.triggerIds));\n }\n return diagnostics;\n}\n","/**\n * Checks of a project's `skaile.yaml` that `validate`, `check`, `doctor` and `run` share:\n * keys nothing reads (p1474) and a `harness:` no harness registers (p1022).\n */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport type { Diagnostic, SkWorkspaceConfig } from \"@skaile/workspaces/core\";\nimport { loadSkWorkspaceConfig, SKAILE_YAML_DEFAULT } from \"@skaile/workspaces/core\";\nimport { parse as parseYaml } from \"yaml\";\nimport { checkAgentInstances } from \"./commands/validate-instances.ts\";\nimport { unknownHarnessMessage } from \"./harness-error.ts\";\nimport { logErr, logWarn } from \"./helpers.ts\";\nimport { loadDeclaredPlugins } from \"./plugin-store/index.ts\";\n\n/** One warning line per key of the file that nothing reads. */\nexport function unknownKeyWarnings(diagnostics: readonly Diagnostic[], label: string): string[] {\n return diagnostics\n .filter((d) => d.code === \"unknown_config_key\" || d.code === \"unknown_profile_key\")\n .map((d) => `${label}: ${d.message}`);\n}\n\n/** `skaile.yaml` connector diagnostics that fail `validate` and refuse `serve` (the runner cannot mount it right). */\nexport const CONNECTOR_ERROR_CODES: readonly string[] = [\n \"connector_missing_driver\",\n \"connector_missing_id\",\n \"connector_duplicate_id\",\n \"connector_invalid_access\",\n];\n\n/**\n * The connector diagnostics that also refuse `serve`: an id the runner cannot address, one it\n * drops, an `access` it cannot read. A missing `driver` (or the old `adapter:` spelling) is not\n * among them: `serve` keeps starting and warns with the same text as a `validation_warning`.\n */\nexport const CONNECTOR_SERVE_REFUSAL_CODES: readonly string[] = CONNECTOR_ERROR_CODES.filter(\n (code) => code !== \"connector_missing_driver\",\n);\n\n/**\n * One error line per connector the runner cannot mount or mounts wrongly: no `driver`, no `id`, a\n * duplicate `id`, an unknown `access`. `codes` narrows it to the ones that apply (default: all).\n */\nexport function connectorErrorLines(\n diagnostics: readonly Diagnostic[],\n label: string,\n codes: readonly string[] = CONNECTOR_ERROR_CODES,\n): string[] {\n return diagnostics\n .filter((d) => codes.includes(d.code))\n .map((d) => `${label} [connectors] — ${d.code}: ${d.path ? `${d.path}: ` : \"\"}${d.message}`);\n}\n\n/** The `agent-config` key diagnostics that name a replacement: the old `driver` and the retired `agent`. */\nexport const AGENT_CONFIG_KEY_CODES = [\"deprecated_harness_key\", \"retired_agent_key\"] as const;\n\n/**\n * One warning line per `agent-config` key that is deprecated (`driver`, p1873) or retired\n * (`agent`, p1874): still read or ignored, and `skaile migrate harness` fixes it. `validate`,\n * `check`, `doctor`, `run` and `config show` print the same line.\n */\nexport function agentConfigKeyWarnings(\n diagnostics: readonly Diagnostic[],\n label: string,\n): string[] {\n return diagnostics\n .filter((d) => (AGENT_CONFIG_KEY_CODES as readonly string[]).includes(d.code))\n .map((d) => `${label} [agent-config] — ${d.code}: ${d.message}`);\n}\n\n/**\n * One error line per `agent-config` profile whose `harness:` nothing registers. The harnesses of\n * the plugins the project declares count, so they are loaded before the verdict, and only when\n * some profile names a harness the built-in ones do not.\n *\n * @param projectDir - Project whose `plugins:` are loaded.\n * @param config - The decoded config file.\n * @param label - File name for the line.\n */\nexport async function unknownHarnessErrors(\n projectDir: string,\n config: SkWorkspaceConfig,\n label: string,\n): Promise<string[]> {\n const profiles = Object.entries(config.agent_config ?? {}).filter(\n (e): e is [string, { harness: string }] => typeof e[1]?.harness === \"string\",\n );\n if (profiles.every(([, p]) => unknownHarnessMessage(p.harness) === undefined)) return [];\n await loadDeclaredPlugins(projectDir);\n const errors: string[] = [];\n for (const [name, p] of profiles) {\n const refusal = unknownHarnessMessage(p.harness);\n if (refusal) errors.push(`${label}: agent-config.${name}.harness: ${refusal}`);\n }\n return errors;\n}\n\n/**\n * Print the `✗` line for each `agent-config` profile whose `harness:` nothing registers and\n * return how many were printed. The harness check `install`, `list` and `config show` share with\n * `validate`, `check` and `run` (p1754); a file that does not load is not this function's to\n * report.\n */\nexport async function reportUnknownHarnesses(projectDir: string): Promise<number> {\n let config: SkWorkspaceConfig | undefined;\n try {\n config = loadSkWorkspaceConfig(projectDir)?.config;\n } catch {\n return 0;\n }\n if (!config) return 0;\n const errors = await unknownHarnessErrors(projectDir, config, \"skaile.yaml\");\n for (const line of errors) logErr(line);\n return errors.length;\n}\n\n/** The `agents:` / `agent:` diagnostics of the project's `skaile.yaml` as `validate` gives them. */\nfunction agentInstanceDiagnostics(projectDir: string): Diagnostic[] {\n let parsed: unknown;\n try {\n parsed = parseYaml(fs.readFileSync(path.join(projectDir, SKAILE_YAML_DEFAULT), \"utf-8\"));\n } catch {\n return [];\n }\n if (typeof parsed !== \"object\" || parsed === null) return [];\n return checkAgentInstances(projectDir, parsed as Record<string, unknown>);\n}\n\n/** One line the way `validate` prints a diagnostic of the `agents:` map. */\nfunction agentInstanceLine(d: Diagnostic): string {\n return `${SKAILE_YAML_DEFAULT} [agents] — ${d.code}: ${d.path ? `${d.path}: ` : \"\"}${d.message}`;\n}\n\n/**\n * The errors `skaile validate` gives the `agents:` map of the project's `skaile.yaml`, as the\n * lines `validate` prints (p1512): a lifecycle or memory scope that is none of the known ones, a\n * `role` instance whose agent declares no `io`, a connector or trigger the agent does not have.\n * `install`, `check`, `run`, `repl` and `rebuild` refuse the project with them, so they never\n * accept what `validate` rejects. A ref that does not resolve is left out: `install` resolves a\n * catalog ref itself and `check` reports an unbound ref as a gap.\n *\n * @param projectDir - Project directory.\n */\nexport function agentInstanceErrorLines(projectDir: string): string[] {\n return agentInstanceDiagnostics(projectDir)\n .filter((d) => d.severity === \"error\" && d.code !== \"agent_ref_unresolved\")\n .map(agentInstanceLine);\n}\n\n/**\n * The warnings `skaile validate` gives for keys of `agent:` and `agents:` that nothing reads\n * (p1712), as the lines `validate` prints: `agents.audit.colour`, `agent.modle`,\n * `agents.<id>.model.preffered`. Without them a typo leaves the default model or budget in\n * place and says nothing.\n *\n * @param projectDir - Project directory.\n */\nexport function agentInstanceWarningLines(projectDir: string): string[] {\n return agentInstanceDiagnostics(projectDir)\n .filter(\n (d) =>\n d.severity === \"warning\" &&\n (d.code === \"unknown_agent_instance_key\" || d.code === \"unknown_agent_key\"),\n )\n .map(agentInstanceLine);\n}\n\n/**\n * The checks of the project's own `skaile.yaml`, printed: `!` lines for unknown keys (also the\n * ones of `agent:` and `agents:`, p1712), `✗` lines for an unknown harness and for an `agents:`\n * map `validate` rejects. Returns the number of errors printed. A file that does not load is not\n * this function's to report: the command reads it again and says so.\n *\n * @param projectDir - Project directory.\n * @param opts.harness - Also refuse an unknown `harness:` (`check`, `doctor`).\n * @param opts.instances - Also refuse an `agents:` map `validate` rejects (p1512).\n */\nexport async function reportProjectConfig(\n projectDir: string,\n opts: { harness: boolean; instances?: boolean },\n): Promise<number> {\n let file: ReturnType<typeof loadSkWorkspaceConfig>;\n try {\n file = loadSkWorkspaceConfig(projectDir);\n } catch {\n return 0;\n }\n if (!file) return 0;\n for (const line of unknownKeyWarnings(file.diagnostics ?? [], \"skaile.yaml\")) logWarn(line);\n for (const line of agentConfigKeyWarnings(file.diagnostics ?? [], \"skaile.yaml\")) logWarn(line);\n for (const line of agentInstanceWarningLines(projectDir)) logWarn(line);\n const errors = [\n ...(opts.harness ? await unknownHarnessErrors(projectDir, file.config, \"skaile.yaml\") : []),\n ...(opts.instances ? agentInstanceErrorLines(projectDir) : []),\n ];\n for (const line of errors) logErr(line);\n return errors.length;\n}\n"]}
|