@skaile/workspaces 3.27.1 → 4.1.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 +482 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-QF7LGRUX.js → asset-feeds-VEPD5ZU7.js} +11 -9
- package/dist/asset-feeds-VEPD5ZU7.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +5 -3
- package/dist/asset-manager/index.js +11 -9
- package/dist/asset-manager/installer.js +8 -6
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/codex-app-server.js +15 -1
- package/dist/bridge/drivers/claude-sdk.js +102 -55
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +179 -23
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +199 -7
- package/dist/bridge/drivers/continue.js.map +1 -1
- package/dist/bridge/drivers/echo.js +10 -4
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +7 -4
- package/dist/bridge/drivers/goose.js +160 -7
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +321 -96
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +148 -13
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +41 -11
- package/dist/bridge/drivers/qwen.js.map +1 -1
- package/dist/bridge/index.js +12 -9
- package/dist/bridge/src/cloud.d.ts +62 -71
- package/dist/bridge/src/cloud.d.ts.map +1 -1
- package/dist/bridge/src/codex/config-toml.d.ts +128 -0
- package/dist/bridge/src/codex/config-toml.d.ts.map +1 -0
- package/dist/bridge/src/codex/credentials.d.ts +26 -0
- package/dist/bridge/src/codex/credentials.d.ts.map +1 -1
- package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
- package/dist/bridge/src/codex-app-server.d.ts.map +1 -1
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts +9 -4
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +19 -11
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts +26 -1
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/continue.d.ts +31 -5
- package/dist/bridge/src/drivers/continue.d.ts.map +1 -1
- package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
- package/dist/bridge/src/drivers/gemini.d.ts +34 -3
- package/dist/bridge/src/drivers/gemini.d.ts.map +1 -1
- package/dist/bridge/src/drivers/goose.d.ts +26 -2
- package/dist/bridge/src/drivers/goose.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts +216 -0
- package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -0
- package/dist/bridge/src/drivers/omp.d.ts +26 -23
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/drivers/opencode.d.ts +28 -3
- package/dist/bridge/src/drivers/opencode.d.ts.map +1 -1
- package/dist/bridge/src/drivers/qwen.d.ts +10 -4
- package/dist/bridge/src/drivers/qwen.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +3 -1
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/bridge/src/models.d.ts +118 -19
- package/dist/bridge/src/models.d.ts.map +1 -1
- package/dist/bridge/src/provider-catalog.d.ts +188 -0
- package/dist/bridge/src/provider-catalog.d.ts.map +1 -0
- package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts +117 -0
- package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts.map +1 -0
- package/dist/bridge/src/provider-materialize/credential-env.d.ts +103 -0
- package/dist/bridge/src/provider-materialize/credential-env.d.ts.map +1 -0
- package/dist/bridge/src/provider-materialize/env-drivers.d.ts +209 -0
- package/dist/bridge/src/provider-materialize/env-drivers.d.ts.map +1 -0
- package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts +127 -0
- package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts.map +1 -0
- package/dist/bridge/src/provider-materialize/opencode-config.d.ts +127 -0
- package/dist/bridge/src/provider-materialize/opencode-config.d.ts.map +1 -0
- package/dist/bridge/src/provider-materialize/session-config-home.d.ts +63 -0
- package/dist/bridge/src/provider-materialize/session-config-home.d.ts.map +1 -0
- package/dist/bridge/src/provider-registry-derive.d.ts +59 -0
- package/dist/bridge/src/provider-registry-derive.d.ts.map +1 -0
- package/dist/bridge/src/registry.d.ts +19 -7
- package/dist/bridge/src/registry.d.ts.map +1 -1
- package/dist/bridge/src/runtime.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +79 -60
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/bridge/src/validation.d.ts +2 -3
- package/dist/bridge/src/validation.d.ts.map +1 -1
- package/dist/{chunk-ZEXYTJ6Y.js → chunk-2GF42G2J.js} +6 -6
- package/dist/{chunk-ZEXYTJ6Y.js.map → chunk-2GF42G2J.js.map} +1 -1
- package/dist/{chunk-WWGU3REE.js → chunk-2K7NURDN.js} +7 -7
- package/dist/{chunk-WWGU3REE.js.map → chunk-2K7NURDN.js.map} +1 -1
- package/dist/{chunk-TCHEW3T2.js → chunk-2RO6N7DN.js} +6 -6
- package/dist/{chunk-TCHEW3T2.js.map → chunk-2RO6N7DN.js.map} +1 -1
- package/dist/{chunk-HSRHO7SK.js → chunk-3VSRJE3M.js} +155 -143
- package/dist/chunk-3VSRJE3M.js.map +1 -0
- package/dist/{chunk-T3YLZQS4.js → chunk-45LLHKQ2.js} +24 -3
- package/dist/chunk-45LLHKQ2.js.map +1 -0
- package/dist/chunk-5DQWB5TW.js +843 -0
- package/dist/chunk-5DQWB5TW.js.map +1 -0
- package/dist/{chunk-JMYOJ3PA.js → chunk-5HT5M5HX.js} +3 -3
- package/dist/{chunk-JMYOJ3PA.js.map → chunk-5HT5M5HX.js.map} +1 -1
- package/dist/{chunk-VN7DELUT.js → chunk-6AMTSRRO.js} +4 -4
- package/dist/{chunk-VN7DELUT.js.map → chunk-6AMTSRRO.js.map} +1 -1
- package/dist/{chunk-MX6TGDZ7.js → chunk-6DI4NTZN.js} +5 -5
- package/dist/{chunk-MX6TGDZ7.js.map → chunk-6DI4NTZN.js.map} +1 -1
- package/dist/{chunk-FFE7YLYO.js → chunk-AN7E2IL5.js} +7 -7
- package/dist/chunk-AN7E2IL5.js.map +1 -0
- package/dist/{chunk-A3HTL7XV.js → chunk-APDN5LW4.js} +3 -3
- package/dist/{chunk-A3HTL7XV.js.map → chunk-APDN5LW4.js.map} +1 -1
- package/dist/{chunk-FACPWN6P.js → chunk-ASU5IJZS.js} +9 -12
- package/dist/chunk-ASU5IJZS.js.map +1 -0
- package/dist/{chunk-J3IXRPZB.js → chunk-BTMDSMXF.js} +10 -10
- package/dist/{chunk-J3IXRPZB.js.map → chunk-BTMDSMXF.js.map} +1 -1
- package/dist/chunk-CTBUPYOQ.js +500 -0
- package/dist/chunk-CTBUPYOQ.js.map +1 -0
- package/dist/{chunk-K6VZQNTR.js → chunk-DKCFWSVW.js} +3 -3
- package/dist/{chunk-K6VZQNTR.js.map → chunk-DKCFWSVW.js.map} +1 -1
- package/dist/{chunk-MQASB52N.js → chunk-FEFTOV2Y.js} +3 -3
- package/dist/{chunk-MQASB52N.js.map → chunk-FEFTOV2Y.js.map} +1 -1
- package/dist/{chunk-XMULHVKX.js → chunk-FGTYTU6Q.js} +17 -15
- package/dist/chunk-FGTYTU6Q.js.map +1 -0
- package/dist/{chunk-WJVBJAM5.js → chunk-HHC2T7BM.js} +7 -7
- package/dist/{chunk-WJVBJAM5.js.map → chunk-HHC2T7BM.js.map} +1 -1
- package/dist/chunk-ILG4BXYE.js +936 -0
- package/dist/chunk-ILG4BXYE.js.map +1 -0
- package/dist/{chunk-E7HKNQTH.js → chunk-JXCUUZA3.js} +3 -4
- package/dist/chunk-JXCUUZA3.js.map +1 -0
- package/dist/{chunk-MBARHWMZ.js → chunk-K27T47OO.js} +79 -53
- package/dist/chunk-K27T47OO.js.map +1 -0
- package/dist/chunk-KSIRR5PL.js +142 -0
- package/dist/chunk-KSIRR5PL.js.map +1 -0
- package/dist/{chunk-SIREWRZE.js → chunk-KW7YIRYL.js} +3 -3
- package/dist/{chunk-SIREWRZE.js.map → chunk-KW7YIRYL.js.map} +1 -1
- package/dist/{chunk-3U3ZKYR7.js → chunk-LPF24MZA.js} +139 -29
- package/dist/chunk-LPF24MZA.js.map +1 -0
- package/dist/chunk-M2F5UXCX.js +187 -0
- package/dist/chunk-M2F5UXCX.js.map +1 -0
- package/dist/{chunk-DZ4UZOFB.js → chunk-M5H4DWIA.js} +3 -3
- package/dist/{chunk-DZ4UZOFB.js.map → chunk-M5H4DWIA.js.map} +1 -1
- package/dist/{chunk-PHBYB4XT.js → chunk-MLDJHV2U.js} +4 -8
- package/dist/chunk-MLDJHV2U.js.map +1 -0
- package/dist/{chunk-773WLEXL.js → chunk-MVBK4JUK.js} +3 -3
- package/dist/{chunk-773WLEXL.js.map → chunk-MVBK4JUK.js.map} +1 -1
- package/dist/{chunk-AN6NAFRT.js → chunk-N7B3LZ7V.js} +31 -6
- package/dist/chunk-N7B3LZ7V.js.map +1 -0
- package/dist/{chunk-EB72L5ZL.js → chunk-ORZBDXNS.js} +18 -30
- package/dist/chunk-ORZBDXNS.js.map +1 -0
- package/dist/{chunk-6H6HLMWG.js → chunk-OXTPH6HT.js} +3 -3
- package/dist/{chunk-6H6HLMWG.js.map → chunk-OXTPH6HT.js.map} +1 -1
- package/dist/{chunk-QSPCI4W2.js → chunk-PI244HAH.js} +175 -178
- package/dist/chunk-PI244HAH.js.map +1 -0
- package/dist/{chunk-NW65H5EV.js → chunk-PTETBRRC.js} +3 -3
- package/dist/{chunk-NW65H5EV.js.map → chunk-PTETBRRC.js.map} +1 -1
- package/dist/{chunk-UL4LD7KD.js → chunk-QQL3ET3J.js} +3 -3
- package/dist/{chunk-UL4LD7KD.js.map → chunk-QQL3ET3J.js.map} +1 -1
- package/dist/{chunk-GURXUF2J.js → chunk-R2GE2NXM.js} +95 -80
- package/dist/chunk-R2GE2NXM.js.map +1 -0
- package/dist/{chunk-IB4XKQMQ.js → chunk-REILIKVM.js} +3 -3
- package/dist/{chunk-IB4XKQMQ.js.map → chunk-REILIKVM.js.map} +1 -1
- package/dist/{chunk-3NCGSSCU.js → chunk-WLFRA5RM.js} +47 -45
- package/dist/chunk-WLFRA5RM.js.map +1 -0
- package/dist/{chunk-2BK4N3FS.js → chunk-WO65FA7W.js} +2 -7
- package/dist/chunk-WO65FA7W.js.map +1 -0
- package/dist/{chunk-72DG6GSB.js → chunk-YS4XBN7O.js} +4 -4
- package/dist/{chunk-72DG6GSB.js.map → chunk-YS4XBN7O.js.map} +1 -1
- package/dist/chunk-YSJKLJD4.js +32 -0
- package/dist/chunk-YSJKLJD4.js.map +1 -0
- package/dist/cli/index.js +765 -334
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/config.d.ts +17 -6
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-legacy-entry.d.ts +46 -0
- package/dist/cli/src/commands/migrate-legacy-entry.d.ts.map +1 -0
- package/dist/cli/src/commands/migrate-providers.d.ts +93 -0
- package/dist/cli/src/commands/migrate-providers.d.ts.map +1 -0
- package/dist/cli/src/commands/providers.d.ts +89 -0
- package/dist/cli/src/commands/providers.d.ts.map +1 -0
- package/dist/cli/src/commands/run.d.ts +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/setup.d.ts +46 -6
- package/dist/cli/src/setup.d.ts.map +1 -1
- package/dist/connectors/config.js +6 -4
- package/dist/connectors/index.js +15 -12
- package/dist/core/index.js +5 -3
- package/dist/core/provider-registry-credentials.d.ts +2 -0
- package/dist/core/provider-registry-credentials.js +5 -0
- package/dist/core/provider-registry-credentials.js.map +1 -0
- package/dist/core/provider-registry.d.ts +2 -0
- package/dist/core/provider-registry.js +4 -0
- package/dist/core/provider-registry.js.map +1 -0
- package/dist/core/runtime-assets.js +2 -2
- package/dist/core/src/index.d.ts +11 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/process-alive.d.ts +28 -0
- package/dist/core/src/process-alive.d.ts.map +1 -0
- package/dist/core/src/provider-registry-credentials.d.ts +50 -0
- package/dist/core/src/provider-registry-credentials.d.ts.map +1 -0
- package/dist/core/src/provider-registry-files.d.ts +97 -0
- package/dist/core/src/provider-registry-files.d.ts.map +1 -0
- package/dist/core/src/provider-registry.d.ts +450 -0
- package/dist/core/src/provider-registry.d.ts.map +1 -0
- package/dist/core/src/settings.d.ts +18 -78
- package/dist/core/src/settings.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +31 -47
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/workspace-config.js +1 -1
- package/dist/deploy/index.js +9 -16
- package/dist/deploy/index.js.map +1 -1
- package/dist/deploy/src/targets/local.d.ts.map +1 -1
- package/dist/deploy/src/targets/nix.d.ts.map +1 -1
- package/dist/deploy/src/targets/process-handle.d.ts +0 -2
- package/dist/deploy/src/targets/process-handle.d.ts.map +1 -1
- package/dist/discovery/index.js +2 -2
- package/dist/{ensure-sources-GEJGBQIP.js → ensure-sources-B3VWHD5M.js} +14 -12
- package/dist/ensure-sources-B3VWHD5M.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +15 -12
- package/dist/factory-assets/connectors/deploy.js +15 -12
- package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/devserver.js +15 -12
- package/dist/factory-assets/connectors/flow/adapter.js +15 -12
- package/dist/factory-assets/connectors/flow/engine.js +6 -4
- package/dist/factory-assets/connectors/flow/index.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.d.ts +0 -3
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +16 -13
- package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +31 -28
- package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow.js +15 -12
- package/dist/factory-assets/connectors/git.js +15 -12
- package/dist/factory-assets/connectors/gmail.js +15 -12
- package/dist/factory-assets/connectors/googledrive.js +15 -12
- package/dist/factory-assets/connectors/local.js +15 -12
- package/dist/factory-assets/connectors/mattermost.js +15 -12
- package/dist/factory-assets/connectors/memory.js +15 -12
- package/dist/factory-assets/connectors/minio.js +15 -12
- package/dist/factory-assets/connectors/postgres.js +15 -12
- package/dist/factory-assets/connectors/s3.js +15 -12
- package/dist/factory-assets/connectors/sharepoint.js +15 -12
- package/dist/factory-assets/connectors/sqlite.js +15 -12
- package/dist/factory-assets/connectors/static-server.js +15 -12
- package/dist/factory-assets/connectors/tunnel.js +15 -12
- package/dist/factory-assets/connectors/webdav.js +15 -12
- package/dist/factory-assets/connectors/xstate-store.js +15 -12
- package/dist/factory-assets/connectors/xstate.js +15 -12
- package/dist/{flows-MI2VM5JZ.js → flows-KIQH2VGA.js} +9 -7
- package/dist/{flows-MI2VM5JZ.js.map → flows-KIQH2VGA.js.map} +1 -1
- package/dist/{helpers-DXZOHX25.js → helpers-72W3NZ2L.js} +14 -12
- package/dist/{helpers-DXZOHX25.js.map → helpers-72W3NZ2L.js.map} +1 -1
- package/dist/library/index.js +8 -6
- package/dist/library/install.js +5 -3
- package/dist/{library-publish-CUPDG5NI.js → library-publish-YPHKEA6L.js} +18 -16
- package/dist/library-publish-YPHKEA6L.js.map +1 -0
- package/dist/{open-library-32XAI2LH.js → open-library-7OIUAGAH.js} +16 -14
- package/dist/{open-library-32XAI2LH.js.map → open-library-7OIUAGAH.js.map} +1 -1
- package/dist/paths-XLSP5K6C.js +18 -0
- package/dist/{paths-CZEH643M.js.map → paths-XLSP5K6C.js.map} +1 -1
- package/dist/plugin-registry/src/targets.d.ts +16 -2
- package/dist/plugin-registry/src/targets.d.ts.map +1 -1
- package/dist/{plugin-store-QJNBPIQK.js → plugin-store-V5BMOYGS.js} +7 -5
- package/dist/plugin-store-V5BMOYGS.js.map +1 -0
- package/dist/{project-RRHUCVXW.js → project-KNAZV4B3.js} +15 -13
- package/dist/{project-RRHUCVXW.js.map → project-KNAZV4B3.js.map} +1 -1
- package/dist/resolver/index.js +5 -3
- package/dist/runner/index.js +25 -22
- package/dist/runner/src/agent.d.ts +0 -2
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/codex-init.d.ts.map +1 -1
- package/dist/runner/src/codex-resource-tools.d.ts.map +1 -1
- package/dist/runner/src/managed-codex-bootstrap.d.ts.map +1 -1
- package/dist/runner/src/resources.d.ts +1 -2
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +31 -35
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/runner/src/session.d.ts +0 -2
- package/dist/runner/src/session.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +11 -9
- package/dist/sdk/bridge.js +12 -9
- package/dist/sdk/core.js +5 -3
- package/dist/sdk/flow.js +6 -4
- package/dist/sdk/index.js +25 -22
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +5 -3
- package/dist/sdk/runner.js +25 -22
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/types.js +1 -1
- package/dist/session/index.js +2 -2
- package/dist/setup-TG4KECRQ.js +435 -0
- package/dist/setup-TG4KECRQ.js.map +1 -0
- package/dist/{skills-IE3IWWB7.js → skills-KHBYF6AU.js} +7 -5
- package/dist/{skills-IE3IWWB7.js.map → skills-KHBYF6AU.js.map} +1 -1
- package/dist/{source-RHQLCTWA.js → source-7AFRUD3U.js} +17 -15
- package/dist/{source-RHQLCTWA.js.map → source-7AFRUD3U.js.map} +1 -1
- package/dist/{source-manifest-publish-DXMCSKU7.js → source-manifest-publish-JWOT7O3A.js} +19 -17
- package/dist/source-manifest-publish-JWOT7O3A.js.map +1 -0
- package/dist/tui/index.js +25 -23
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl.d.ts +0 -2
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/lifecycle.d.ts +35 -10
- package/dist/types/src/lifecycle.d.ts.map +1 -1
- package/dist/types/src/manifests/agent.d.ts +116 -22
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +2 -2
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +5 -5
- package/dist/types/src/runtime.d.ts +51 -5
- package/dist/types/src/runtime.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +18 -2
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/validator-P5ESKTW5.js +5 -0
- package/dist/{validator-RN64BKFW.js.map → validator-P5ESKTW5.js.map} +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +11 -9
- package/dist/workspace-plugin/adapters/omp.js +11 -11
- package/dist/workspace-plugin/adapters/omp.js.map +1 -1
- package/dist/workspace-plugin/index.js +1 -1
- package/dist/workspace-plugin/src/plugin.d.ts +1 -4
- package/dist/workspace-plugin/src/plugin.d.ts.map +1 -1
- package/dist/workspace-plugin/src/tools/validator.d.ts +4 -4
- package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
- package/package.json +13 -1
- package/dist/asset-feeds-QF7LGRUX.js.map +0 -1
- package/dist/bridge/src/provider-endpoints.d.ts +0 -55
- package/dist/bridge/src/provider-endpoints.d.ts.map +0 -1
- package/dist/chunk-2BK4N3FS.js.map +0 -1
- package/dist/chunk-3NCGSSCU.js.map +0 -1
- package/dist/chunk-3U3ZKYR7.js.map +0 -1
- package/dist/chunk-AN6NAFRT.js.map +0 -1
- package/dist/chunk-AQW4BWNR.js +0 -324
- package/dist/chunk-AQW4BWNR.js.map +0 -1
- package/dist/chunk-E7HKNQTH.js.map +0 -1
- package/dist/chunk-EB72L5ZL.js.map +0 -1
- package/dist/chunk-FACPWN6P.js.map +0 -1
- package/dist/chunk-FFE7YLYO.js.map +0 -1
- package/dist/chunk-FYIHH56K.js +0 -110
- package/dist/chunk-FYIHH56K.js.map +0 -1
- package/dist/chunk-GURXUF2J.js.map +0 -1
- package/dist/chunk-HSRHO7SK.js.map +0 -1
- package/dist/chunk-MBARHWMZ.js.map +0 -1
- package/dist/chunk-PHBYB4XT.js.map +0 -1
- package/dist/chunk-QSPCI4W2.js.map +0 -1
- package/dist/chunk-T3YLZQS4.js.map +0 -1
- package/dist/chunk-XMULHVKX.js.map +0 -1
- package/dist/ensure-sources-GEJGBQIP.js.map +0 -1
- package/dist/library-publish-CUPDG5NI.js.map +0 -1
- package/dist/paths-CZEH643M.js +0 -16
- package/dist/plugin-store-QJNBPIQK.js.map +0 -1
- package/dist/runner/src/cloud-bundle.d.ts +0 -36
- package/dist/runner/src/cloud-bundle.d.ts.map +0 -1
- package/dist/setup-CIRH5BYB.js +0 -517
- package/dist/setup-CIRH5BYB.js.map +0 -1
- package/dist/source-manifest-publish-DXMCSKU7.js.map +0 -1
- package/dist/validator-RN64BKFW.js +0 -5
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential resolution for registry entries (§1.4).
|
|
3
|
+
*
|
|
4
|
+
* Split from `provider-registry.ts` deliberately: resolving a `cmd:` reference
|
|
5
|
+
* spawns a process and `env:` reads `process.env`, so this module depends on
|
|
6
|
+
* Node. The schema module must stay dependency-free because browser bundles
|
|
7
|
+
* (`@skaile/workspace-bridge-react`) reach the registry *types* through
|
|
8
|
+
* `@skaile/workspaces/types`, and a `node:child_process` import in that graph
|
|
9
|
+
* breaks their typecheck.
|
|
10
|
+
*
|
|
11
|
+
* @see PROVIDER-CONFIG-PLAN.md §1.4
|
|
12
|
+
*/
|
|
13
|
+
import type { AIProviderCredentialKind, AIProviderEntry } from "./provider-registry.js";
|
|
14
|
+
/** Options for {@link resolveCredential}. */
|
|
15
|
+
export interface ResolveCredentialOptions {
|
|
16
|
+
/** Environment `env:` refs read from; defaults to `process.env`. */
|
|
17
|
+
env?: Record<string, string | undefined>;
|
|
18
|
+
/**
|
|
19
|
+
* Control-plane secrets, keyed by config id (a `platform:<configId>` ref) —
|
|
20
|
+
* the `secrets` map that rides alongside `session_init`.
|
|
21
|
+
*/
|
|
22
|
+
secrets?: Record<string, string>;
|
|
23
|
+
/** Run `cmd:` references. Default `true`; the platform sets it `false`. */
|
|
24
|
+
allowCommand?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Outcome of {@link resolveCredential}. Never carries the secret in `error`. */
|
|
27
|
+
export interface ResolvedAIProviderCredential {
|
|
28
|
+
kind: AIProviderCredentialKind;
|
|
29
|
+
/** The secret, when one was produced. */
|
|
30
|
+
value?: string;
|
|
31
|
+
/** Where the value came from; `ambient` means the transport's own chain signs. */
|
|
32
|
+
source: "env" | "cmd" | "platform" | "keyring" | "ambient" | "none";
|
|
33
|
+
/** Why there is no value. Secret-free. */
|
|
34
|
+
error?: string;
|
|
35
|
+
}
|
|
36
|
+
/** Test seam — drops the memoized `cmd:` results. */
|
|
37
|
+
export declare function __resetCredentialCommandCache(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve an entry's credential to a value (§1.4).
|
|
40
|
+
*
|
|
41
|
+
* `env:` reads the environment, `cmd:` runs a shell (10 s, trimmed stdout,
|
|
42
|
+
* cached per process), `platform:` reads the injected secrets map. `keyring:`
|
|
43
|
+
* is a reserved grammar slot: it validates but does not resolve, and says so.
|
|
44
|
+
*
|
|
45
|
+
* `sigv4`, `google_adc` and `azure_entra` entries without a ref resolve to
|
|
46
|
+
* `source: "ambient"` with no value — the AWS/Google/Azure SDK chain signs the
|
|
47
|
+
* request, there is nothing for this function to hand over.
|
|
48
|
+
*/
|
|
49
|
+
export declare function resolveCredential(entry: AIProviderEntry, options?: ResolveCredentialOptions): ResolvedAIProviderCredential;
|
|
50
|
+
//# sourceMappingURL=provider-registry-credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry-credentials.d.ts","sourceRoot":"","sources":["../../../core/src/provider-registry-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIxF,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,iFAAiF;AACjF,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,wBAAwB,CAAC;IAC/B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACpE,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,qDAAqD;AACrD,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,wBAA6B,GACrC,4BAA4B,CAqE9B"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading and writing `providers.yml` — the two on-disk layers of the AI
|
|
3
|
+
* provider registry (§1.5).
|
|
4
|
+
*
|
|
5
|
+
* `~/.skaile/providers.yml` is the default home for endpoint definitions;
|
|
6
|
+
* `<workspace>/.skaile/providers.yml` overrides it per project and is
|
|
7
|
+
* gitignored by `skaile init`. Higher layers (CLI/runtime overrides and the
|
|
8
|
+
* control-plane session layer) never touch disk — callers pass them to
|
|
9
|
+
* {@link loadProviderRegistry} as extra layers.
|
|
10
|
+
*
|
|
11
|
+
* @see PROVIDER-CONFIG-PLAN.md §1.5, §2.1
|
|
12
|
+
*/
|
|
13
|
+
import { type AIProviderDiagnostic, type AIProviderRegistryDocument, type AIProviderRegistryLayer, type AIProviderRegistryPatch, type MergedAIProviderRegistry } from "./provider-registry.js";
|
|
14
|
+
/** The registry filename in both layers. */
|
|
15
|
+
export declare const PROVIDERS_FILENAME = "providers.yml";
|
|
16
|
+
/** `~/.skaile/providers.yml` — honours `$SKAILE_HOME`. */
|
|
17
|
+
export declare function userProviderRegistryPath(): string;
|
|
18
|
+
/** `<projectDir>/.skaile/providers.yml`. */
|
|
19
|
+
export declare function workspaceProviderRegistryPath(projectDir: string): string;
|
|
20
|
+
/** One loaded registry file. */
|
|
21
|
+
export interface ProviderRegistryFile {
|
|
22
|
+
/** Layer the file feeds. */
|
|
23
|
+
layer: "user" | "workspace";
|
|
24
|
+
path: string;
|
|
25
|
+
exists: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The layer this file contributes. Entries may be partial: a file that names
|
|
28
|
+
* `base_url` alone overrides that one field (§1.5). Empty when the file is
|
|
29
|
+
* absent or every entry was malformed.
|
|
30
|
+
*/
|
|
31
|
+
document: AIProviderRegistryDocument;
|
|
32
|
+
diagnostics: AIProviderDiagnostic[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Read one registry file as **one layer** of the §1.5 stack. A missing file is
|
|
36
|
+
* not an error — it is an empty layer. A malformed one yields diagnostics,
|
|
37
|
+
* never an exception.
|
|
38
|
+
*
|
|
39
|
+
* Only the checks that stand on their own run here (types, URLs, the
|
|
40
|
+
* credential grammar, literal secrets); whether an entry is *complete* is
|
|
41
|
+
* decided on the merged registry by {@link loadProviderRegistry}, because the
|
|
42
|
+
* layer below may be the one that names its `kind`.
|
|
43
|
+
*/
|
|
44
|
+
export declare function loadProviderRegistryFile(filePath: string, layer: "user" | "workspace"): ProviderRegistryFile;
|
|
45
|
+
/**
|
|
46
|
+
* Write a registry document, creating `.skaile/` when needed.
|
|
47
|
+
*
|
|
48
|
+
* The document is serialized verbatim: the file holds references, never
|
|
49
|
+
* secrets, so there is nothing to redact — and {@link validateRegistry} is the
|
|
50
|
+
* gate that keeps it that way. Callers validate before writing.
|
|
51
|
+
*
|
|
52
|
+
* @returns the path written.
|
|
53
|
+
*/
|
|
54
|
+
export declare function saveProviderRegistryFile(filePath: string, document: AIProviderRegistryDocument): string;
|
|
55
|
+
/** Options for {@link loadProviderRegistry}. */
|
|
56
|
+
export interface LoadProviderRegistryOptions {
|
|
57
|
+
/** Workspace whose `.skaile/providers.yml` is layered on top of the user file. */
|
|
58
|
+
projectDir?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Layers that do not come from these two files — the catalog layer from
|
|
61
|
+
* `bridge/src/provider-catalog.ts`, CLI/runtime overrides, and the
|
|
62
|
+
* control-plane session layer. Precedence follows each layer's id, not this
|
|
63
|
+
* array's order.
|
|
64
|
+
*/
|
|
65
|
+
extraLayers?: AIProviderRegistryLayer[];
|
|
66
|
+
}
|
|
67
|
+
/** The merged registry plus the files it came from. */
|
|
68
|
+
export interface LoadedProviderRegistry {
|
|
69
|
+
/** Merged and gated: every entry here is complete. */
|
|
70
|
+
registry: MergedAIProviderRegistry;
|
|
71
|
+
/**
|
|
72
|
+
* The same merge **before** the gate: every configured entry, complete or
|
|
73
|
+
* not, as the layers left it. This is what a caller that has to see the
|
|
74
|
+
* configured entries in order to build another layer reads — the catalog
|
|
75
|
+
* layer expands the presets these entries name, and an entry whose `kind`
|
|
76
|
+
* comes from its preset is still incomplete here, so it is absent from
|
|
77
|
+
* `registry`.
|
|
78
|
+
*/
|
|
79
|
+
patches: AIProviderRegistryPatch;
|
|
80
|
+
files: ProviderRegistryFile[];
|
|
81
|
+
/**
|
|
82
|
+
* Every file's diagnostics in layer order, then the merge's own — an entry
|
|
83
|
+
* no layer completed is reported here, naming the files that fed it.
|
|
84
|
+
*/
|
|
85
|
+
diagnostics: AIProviderDiagnostic[];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Load `~/.skaile/providers.yml` and, when a project directory is given,
|
|
89
|
+
* `<projectDir>/.skaile/providers.yml`, then merge them with any extra layers
|
|
90
|
+
* per §1.5 and gate the result.
|
|
91
|
+
*
|
|
92
|
+
* Merge *then* validate: each file is read as a patch, so a workspace entry
|
|
93
|
+
* that sets one field of an entry the user file defines is applied over it
|
|
94
|
+
* rather than dropped for being incomplete on its own.
|
|
95
|
+
*/
|
|
96
|
+
export declare function loadProviderRegistry(options?: LoadProviderRegistryOptions): LoadedProviderRegistry;
|
|
97
|
+
//# sourceMappingURL=provider-registry-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry-files.d.ts","sourceRoot":"","sources":["../../../core/src/provider-registry-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAI9B,MAAM,wBAAwB,CAAC;AAEhC,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAIlD,0DAA0D;AAC1D,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,4CAA4C;AAC5C,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,QAAQ,EAAE,0BAA0B,CAAC;IACrC,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,WAAW,GAC1B,oBAAoB,CA2BtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,0BAA0B,GACnC,MAAM,CAKR;AAED,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACzC;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,QAAQ,EAAE,wBAAwB,CAAC;IACnC;;;;;;;OAOG;IACH,OAAO,EAAE,uBAAuB,CAAC;IACjC,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B;;;OAGG;IACH,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,sBAAsB,CA4BxB"}
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The AI provider registry — one keyed definition of every LLM / voice endpoint
|
|
3
|
+
* the runtime may talk to.
|
|
4
|
+
*
|
|
5
|
+
* This module is the **single canonical home** of the registry record: its
|
|
6
|
+
* types, its validation, the layered merge (§1.5), the `base_url` derivation
|
|
7
|
+
* (§1.3), the credential-reference grammar (§1.4) and the model-reference
|
|
8
|
+
* parser. Nothing here is duplicated in `bridge`, `runner` or `platform` — the
|
|
9
|
+
* structurally-identical-copy pattern that `CloudConfig` fell into is exactly
|
|
10
|
+
* what this module exists to avoid.
|
|
11
|
+
*
|
|
12
|
+
* Vocabulary: this is the **AI provider** registry. It is unrelated to the
|
|
13
|
+
* platform's connector `ProviderType` / `ProviderLink` (git, SharePoint,
|
|
14
|
+
* Drive…). Types are named `AIProvider*` throughout, never bare `Provider*`.
|
|
15
|
+
*
|
|
16
|
+
* The `surface` enum is omp's `api` vocabulary verbatim, so the omp adapter is
|
|
17
|
+
* a serializer rather than a translator.
|
|
18
|
+
*
|
|
19
|
+
* @see PROVIDER-CONFIG-PLAN.md §1
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* What an entry produces. `llm` and `embed` carry a wire `surface`; `stt` and
|
|
23
|
+
* `tts` use the reduced voice record (§1.7).
|
|
24
|
+
*/
|
|
25
|
+
export declare const AI_PROVIDER_KINDS: readonly ["llm", "stt", "tts", "embed"];
|
|
26
|
+
/** Union of {@link AI_PROVIDER_KINDS}. */
|
|
27
|
+
export type AIProviderKind = (typeof AI_PROVIDER_KINDS)[number];
|
|
28
|
+
/** Kinds that use the voice subset of the record (§1.7). */
|
|
29
|
+
export declare const AI_PROVIDER_VOICE_KINDS: readonly ["stt", "tts"];
|
|
30
|
+
/** Union of {@link AI_PROVIDER_VOICE_KINDS}. */
|
|
31
|
+
export type AIProviderVoiceKind = (typeof AI_PROVIDER_VOICE_KINDS)[number];
|
|
32
|
+
/**
|
|
33
|
+
* Wire protocol — the discriminator a driver adapter switches on. These are
|
|
34
|
+
* omp's `api` values verbatim (Codex CLI calls the same concept `wire_api`).
|
|
35
|
+
*/
|
|
36
|
+
export declare const AI_PROVIDER_SURFACES: readonly ["anthropic-messages", "openai-completions", "openai-responses", "openai-codex-responses", "azure-openai-responses", "bedrock-converse-stream", "google-generative-ai", "google-vertex"];
|
|
37
|
+
/** Union of {@link AI_PROVIDER_SURFACES}. */
|
|
38
|
+
export type AIProviderSurface = (typeof AI_PROVIDER_SURFACES)[number];
|
|
39
|
+
/** How the request reaches the surface — selects the `params` shape (§1.3). */
|
|
40
|
+
export declare const AI_PROVIDER_TRANSPORTS: readonly ["direct", "bedrock", "vertex", "foundry", "azure-openai"];
|
|
41
|
+
/** Union of {@link AI_PROVIDER_TRANSPORTS}. */
|
|
42
|
+
export type AIProviderTransport = (typeof AI_PROVIDER_TRANSPORTS)[number];
|
|
43
|
+
/**
|
|
44
|
+
* How the credential is presented (§1.4). `command` is a reserved grammar slot:
|
|
45
|
+
* the schema accepts it, no refresh loop ships yet.
|
|
46
|
+
*/
|
|
47
|
+
export declare const AI_PROVIDER_CREDENTIAL_KINDS: readonly ["api_key_header", "bearer", "sigv4", "google_adc", "azure_entra", "oauth", "none", "command"];
|
|
48
|
+
/** Union of {@link AI_PROVIDER_CREDENTIAL_KINDS}. */
|
|
49
|
+
export type AIProviderCredentialKind = (typeof AI_PROVIDER_CREDENTIAL_KINDS)[number];
|
|
50
|
+
/** omp-compatible model-discovery probes. Unknown values are tolerated with a warning. */
|
|
51
|
+
export declare const AI_PROVIDER_DISCOVERY_TYPES: readonly ["openai-models-list", "anthropic-models-list", "google-models-list", "none"];
|
|
52
|
+
/** Union of {@link AI_PROVIDER_DISCOVERY_TYPES}. */
|
|
53
|
+
export type AIProviderDiscoveryType = (typeof AI_PROVIDER_DISCOVERY_TYPES)[number];
|
|
54
|
+
/**
|
|
55
|
+
* Configuration layers, **lowest precedence first** (§1.5). `runtime` is the
|
|
56
|
+
* CLI/runtime override layer (`--model`, `--api-key`); `session` is the
|
|
57
|
+
* control-plane layer the platform injects into `session_init`.
|
|
58
|
+
*/
|
|
59
|
+
export declare const AI_PROVIDER_LAYERS: readonly ["catalog", "user", "workspace", "runtime", "session"];
|
|
60
|
+
/** Union of {@link AI_PROVIDER_LAYERS}. */
|
|
61
|
+
export type AIProviderLayerId = (typeof AI_PROVIDER_LAYERS)[number];
|
|
62
|
+
/** `transport: bedrock` routing parameters. */
|
|
63
|
+
export interface AIProviderBedrockParams {
|
|
64
|
+
/** AWS region, e.g. `us-east-1`. */
|
|
65
|
+
region: string;
|
|
66
|
+
}
|
|
67
|
+
/** `transport: vertex` routing parameters. */
|
|
68
|
+
export interface AIProviderVertexParams {
|
|
69
|
+
/** GCP project id. */
|
|
70
|
+
project: string;
|
|
71
|
+
/** Vertex location, e.g. `europe-west4`. */
|
|
72
|
+
location: string;
|
|
73
|
+
/** Model publisher; defaults to `google` (use `anthropic` for Claude on Vertex). */
|
|
74
|
+
publisher?: string;
|
|
75
|
+
}
|
|
76
|
+
/** `transport: foundry` routing parameters. */
|
|
77
|
+
export interface AIProviderFoundryParams {
|
|
78
|
+
/** Azure AI Foundry resource name (the `{resource}` in the endpoint host). */
|
|
79
|
+
resource: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `transport: azure-openai` routing parameters. `resource` is required even
|
|
83
|
+
* though the plan's §1.3 table lists only `deployment`/`api_version`: the
|
|
84
|
+
* derived `base_url` in that same row interpolates `{resource}`.
|
|
85
|
+
*/
|
|
86
|
+
export interface AIProviderAzureOpenAIParams {
|
|
87
|
+
/** Azure OpenAI resource name (the `{resource}` in the endpoint host). */
|
|
88
|
+
resource: string;
|
|
89
|
+
/** Deployment name the request is routed to. */
|
|
90
|
+
deployment: string;
|
|
91
|
+
/** `api-version` query value; mirrored into `query_params` by the adapter. */
|
|
92
|
+
api_version: string;
|
|
93
|
+
}
|
|
94
|
+
/** Free-form voice parameters, typed per preset (Deepgram, ElevenLabs, …). */
|
|
95
|
+
export type AIProviderVoiceParams = Record<string, string | number | boolean>;
|
|
96
|
+
/**
|
|
97
|
+
* The `transport` → `params` discriminated union (§1.3, decision §9.9). An open
|
|
98
|
+
* `Record<string, string>` would lose per-transport field rendering in the
|
|
99
|
+
* admin UI, so the pairing is encoded in the type.
|
|
100
|
+
*/
|
|
101
|
+
export type AIProviderTransportSlice = {
|
|
102
|
+
transport?: "direct";
|
|
103
|
+
params?: Record<string, never>;
|
|
104
|
+
} | {
|
|
105
|
+
transport: "bedrock";
|
|
106
|
+
params: AIProviderBedrockParams;
|
|
107
|
+
} | {
|
|
108
|
+
transport: "vertex";
|
|
109
|
+
params: AIProviderVertexParams;
|
|
110
|
+
} | {
|
|
111
|
+
transport: "foundry";
|
|
112
|
+
params: AIProviderFoundryParams;
|
|
113
|
+
} | {
|
|
114
|
+
transport: "azure-openai";
|
|
115
|
+
params: AIProviderAzureOpenAIParams;
|
|
116
|
+
};
|
|
117
|
+
/** Reference to a secret. Never the secret itself — see {@link parseCredentialRef}. */
|
|
118
|
+
export interface AIProviderCredential {
|
|
119
|
+
kind: AIProviderCredentialKind;
|
|
120
|
+
/**
|
|
121
|
+
* `env:NAME` · `cmd:<shell>` · `platform:<configId>` · `keyring:<service>/<account>`.
|
|
122
|
+
* A literal secret here is a validation error.
|
|
123
|
+
*/
|
|
124
|
+
ref?: string;
|
|
125
|
+
}
|
|
126
|
+
/** Per-model capability facts; unknown ids otherwise truncate silently. */
|
|
127
|
+
export interface AIProviderCapabilities {
|
|
128
|
+
context_window?: number;
|
|
129
|
+
tools?: boolean;
|
|
130
|
+
images?: boolean;
|
|
131
|
+
thinking_max?: number;
|
|
132
|
+
}
|
|
133
|
+
/** omp-compatible discovery descriptor. */
|
|
134
|
+
export interface AIProviderDiscovery {
|
|
135
|
+
type: AIProviderDiscoveryType | (string & {});
|
|
136
|
+
/** Path appended to `base_url` when the surface default does not apply. */
|
|
137
|
+
path?: string;
|
|
138
|
+
}
|
|
139
|
+
/** Fields every entry carries, whatever its `kind`. */
|
|
140
|
+
export interface AIProviderEntryCommon {
|
|
141
|
+
/** Display name. Never load-bearing. */
|
|
142
|
+
label?: string;
|
|
143
|
+
/** Catalog preset this entry inherits from (`bridge/src/provider-catalog.ts`). */
|
|
144
|
+
preset?: string;
|
|
145
|
+
/** Literal endpoint; wins over the preset value and the transport derivation. */
|
|
146
|
+
base_url?: string;
|
|
147
|
+
/** Static, non-secret request headers. */
|
|
148
|
+
headers?: Record<string, string>;
|
|
149
|
+
credential?: AIProviderCredential;
|
|
150
|
+
/** Default `true`; read it through {@link isEntryEnabled}. */
|
|
151
|
+
enabled?: boolean;
|
|
152
|
+
/** Set by the control plane: lower layers cannot override this entry (§1.5). */
|
|
153
|
+
locked?: boolean;
|
|
154
|
+
}
|
|
155
|
+
/** An `llm`/`embed` entry — the full record. */
|
|
156
|
+
export type AIProviderLlmEntry = AIProviderEntryCommon & AIProviderTransportSlice & {
|
|
157
|
+
kind: "llm" | "embed";
|
|
158
|
+
/** Required unless a `preset` supplies it. */
|
|
159
|
+
surface?: AIProviderSurface;
|
|
160
|
+
/** Azure's `api-version` lives here. */
|
|
161
|
+
query_params?: Record<string, string>;
|
|
162
|
+
/** Logical id → provider-side id. */
|
|
163
|
+
model_map?: Record<string, string>;
|
|
164
|
+
/** Keyed by the *logical* id, i.e. the `model_map` key. */
|
|
165
|
+
capabilities?: Record<string, AIProviderCapabilities>;
|
|
166
|
+
discovery?: AIProviderDiscovery;
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* An `stt`/`tts` entry — the reduced record (§1.7). `surface`, `transport`,
|
|
170
|
+
* `model_map`, `capabilities` and `discovery` are `llm`-only and rejected here:
|
|
171
|
+
* a TTS voice is not a wire protocol.
|
|
172
|
+
*/
|
|
173
|
+
export type AIProviderVoiceEntry = AIProviderEntryCommon & {
|
|
174
|
+
kind: AIProviderVoiceKind;
|
|
175
|
+
/** Preset-typed: Deepgram `{model, language}`, ElevenLabs `{voice_id, output_format}`. */
|
|
176
|
+
params?: AIProviderVoiceParams;
|
|
177
|
+
};
|
|
178
|
+
/** One registry entry. */
|
|
179
|
+
export type AIProviderEntry = AIProviderLlmEntry | AIProviderVoiceEntry;
|
|
180
|
+
/** Entry id → entry. Iteration order is registry order. */
|
|
181
|
+
export type AIProviderRegistry = Record<string, AIProviderEntry>;
|
|
182
|
+
/**
|
|
183
|
+
* Any entry's `params`: transport routing parameters (§1.3) or voice options
|
|
184
|
+
* (§1.7). Which of them applies is decided by `transport` and `kind`, and a
|
|
185
|
+
* layer may not carry either — so a patch holds the union and
|
|
186
|
+
* {@link validateMergedRegistry} narrows it.
|
|
187
|
+
*/
|
|
188
|
+
export type AIProviderParams = AIProviderBedrockParams | AIProviderVertexParams | AIProviderFoundryParams | AIProviderAzureOpenAIParams | AIProviderVoiceParams;
|
|
189
|
+
/**
|
|
190
|
+
* An entry as a single layer may write it (§1.5): any subset of the record,
|
|
191
|
+
* `kind` included. A `<workspace>/.skaile/providers.yml` that names `base_url`
|
|
192
|
+
* alone is an override of one field, not a redefinition — so a layer holds
|
|
193
|
+
* patches, and completeness is gated on the merged entry
|
|
194
|
+
* ({@link validateMergedRegistry}) rather than per layer.
|
|
195
|
+
*
|
|
196
|
+
* Every {@link AIProviderEntry} is a patch; the reverse needs the gate. The
|
|
197
|
+
* `transport`/`params` pairing is deliberately un-discriminated here, because
|
|
198
|
+
* the two halves may come from different layers.
|
|
199
|
+
*/
|
|
200
|
+
export type AIProviderEntryPatch = AIProviderEntryCommon & {
|
|
201
|
+
kind?: AIProviderKind;
|
|
202
|
+
surface?: AIProviderSurface;
|
|
203
|
+
transport?: AIProviderTransport;
|
|
204
|
+
params?: AIProviderParams;
|
|
205
|
+
query_params?: Record<string, string>;
|
|
206
|
+
model_map?: Record<string, string>;
|
|
207
|
+
capabilities?: Record<string, AIProviderCapabilities>;
|
|
208
|
+
discovery?: AIProviderDiscovery;
|
|
209
|
+
};
|
|
210
|
+
/** Entry id → partial entry: one layer's contribution to the registry. */
|
|
211
|
+
export type AIProviderRegistryPatch = Record<string, AIProviderEntryPatch>;
|
|
212
|
+
/** A parsed `providers.yml` document — one layer, so entries may be partial. */
|
|
213
|
+
export interface AIProviderRegistryDocument {
|
|
214
|
+
version: 1;
|
|
215
|
+
providers: AIProviderRegistryPatch;
|
|
216
|
+
}
|
|
217
|
+
/** One input to {@link mergeRegistries}. */
|
|
218
|
+
export interface AIProviderRegistryLayer {
|
|
219
|
+
layer: AIProviderLayerId;
|
|
220
|
+
providers: AIProviderRegistryPatch;
|
|
221
|
+
}
|
|
222
|
+
/** The merged view every consumer reads. */
|
|
223
|
+
export interface MergedAIProviderRegistry {
|
|
224
|
+
version: 1;
|
|
225
|
+
providers: AIProviderRegistry;
|
|
226
|
+
/**
|
|
227
|
+
* Registry order: highest-precedence layer first, document order within a
|
|
228
|
+
* layer. Bare model ids resolve down this list (§1.6).
|
|
229
|
+
*/
|
|
230
|
+
order: string[];
|
|
231
|
+
/** Highest-precedence layer that contributed to each entry. */
|
|
232
|
+
origin: Record<string, AIProviderLayerId>;
|
|
233
|
+
/** Entries frozen by `locked: true`; lower layers were ignored for these. */
|
|
234
|
+
locked: string[];
|
|
235
|
+
}
|
|
236
|
+
/** Severity of an {@link AIProviderDiagnostic}. */
|
|
237
|
+
export type AIProviderDiagnosticSeverity = "error" | "warning";
|
|
238
|
+
/**
|
|
239
|
+
* A structured note about a registry document. {@link validateRegistry} never
|
|
240
|
+
* throws: every problem is reported here with the offending key in `path`, and
|
|
241
|
+
* each caller (CLI, runner, platform) decides how loud to be.
|
|
242
|
+
*/
|
|
243
|
+
export interface AIProviderDiagnostic {
|
|
244
|
+
/** Stable machine code, e.g. `"literal_secret"` / `"unknown_surface"`. */
|
|
245
|
+
code: string;
|
|
246
|
+
severity: AIProviderDiagnosticSeverity;
|
|
247
|
+
/** Human-readable, actionable message. */
|
|
248
|
+
message: string;
|
|
249
|
+
/** Dotted path to the offending key, e.g. `providers.groq.headers.x-api-key`. */
|
|
250
|
+
path: string;
|
|
251
|
+
}
|
|
252
|
+
/** Result of {@link validateRegistry}: the surviving document plus every note. */
|
|
253
|
+
export interface RegistryValidation {
|
|
254
|
+
/** Entries that produced an error diagnostic are omitted. */
|
|
255
|
+
document: AIProviderRegistryDocument;
|
|
256
|
+
diagnostics: AIProviderDiagnostic[];
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* `transport` → `base_url` template (§1.3). Placeholders are `params` keys.
|
|
260
|
+
* `direct` has no template: it uses the preset literal or an explicit value.
|
|
261
|
+
*/
|
|
262
|
+
export declare const AI_PROVIDER_BASE_URL_TEMPLATES: Record<Exclude<AIProviderTransport, "direct">, string>;
|
|
263
|
+
/** True when `id` is usable as a registry key (`[a-z0-9][a-z0-9_-]*`). */
|
|
264
|
+
export declare function isSafeProviderId(id: string): boolean;
|
|
265
|
+
/**
|
|
266
|
+
* True when `value` must not appear literally under `key`.
|
|
267
|
+
*
|
|
268
|
+
* A value is acceptable when it is an indirection — a `${...}` interpolation or
|
|
269
|
+
* one of the four `credential.ref` forms. Otherwise a value is a literal secret
|
|
270
|
+
* when the key names a credential-bearing header (`authorization`, `x-api-key`,
|
|
271
|
+
* the bare `key` query param Google uses…) or when the value itself has the
|
|
272
|
+
* shape of a token (`sk-…`, `AIza…`, a 40-char opaque blob…).
|
|
273
|
+
*
|
|
274
|
+
* Non-secret literals stay legal: `anthropic-version: 2023-06-01`,
|
|
275
|
+
* `api-version: 2026-01-01`, `HTTP-Referer: https://skaile.ai`.
|
|
276
|
+
*/
|
|
277
|
+
export declare function looksLikeLiteralSecret(key: string, value: string): boolean;
|
|
278
|
+
/** Options for {@link validateRegistry}. */
|
|
279
|
+
export interface ValidateRegistryOptions {
|
|
280
|
+
/** Prefix for diagnostic paths — normally the file the document came from. */
|
|
281
|
+
source?: string;
|
|
282
|
+
/**
|
|
283
|
+
* The layer this document feeds. Given — and not `catalog` — the document is
|
|
284
|
+
* read as **one layer** of the §1.5 stack: an entry may be a partial
|
|
285
|
+
* override, so a `kind`, `surface` or transport `params` that another layer
|
|
286
|
+
* supplies is not an error here. {@link validateMergedRegistry} gates the
|
|
287
|
+
* merged entry instead.
|
|
288
|
+
*
|
|
289
|
+
* Omitted, the document has to stand on its own: every entry must be
|
|
290
|
+
* complete, which is what a writer (`skaile providers add`) checks the entry
|
|
291
|
+
* it just built against.
|
|
292
|
+
*/
|
|
293
|
+
layer?: AIProviderLayerId;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Validate a parsed `providers.yml` document (§1.1–§1.7).
|
|
297
|
+
*
|
|
298
|
+
* Total: never throws. Entries that produce an error are omitted from
|
|
299
|
+
* `document`, mirroring the resolver's per-entry skip semantics — one bad entry
|
|
300
|
+
* must not take the whole registry down. Every diagnostic names the offending
|
|
301
|
+
* key in `path`.
|
|
302
|
+
*
|
|
303
|
+
* Enforced here whatever the mode: safe entry ids, the `kind`/`surface`/
|
|
304
|
+
* `transport`/`credential.kind` enums, the value types, and the
|
|
305
|
+
* no-literal-secrets rule for `credential.ref`, `headers`, `query_params`,
|
|
306
|
+
* `params` and `base_url` userinfo — a secret must be caught in the file it
|
|
307
|
+
* was written into, not in an anonymous merged document.
|
|
308
|
+
*
|
|
309
|
+
* Enforced only when {@link ValidateRegistryOptions.layer} says this document
|
|
310
|
+
* is complete on its own: that an entry has a `kind`, that an `llm` entry has a
|
|
311
|
+
* `surface`, the voice subset (§1.7), and the per-transport `params` union
|
|
312
|
+
* (§1.3). Those depend on `kind`, which a layer may leave to a lower one.
|
|
313
|
+
*
|
|
314
|
+
* Defaults are deliberately **not** materialized: writing `enabled: true` or
|
|
315
|
+
* `transport: direct` into a layer would let that layer's implicit default
|
|
316
|
+
* override a lower layer's explicit value during the merge. Read them through
|
|
317
|
+
* {@link isEntryEnabled} / {@link entryTransport}.
|
|
318
|
+
*/
|
|
319
|
+
export declare function validateRegistry(raw: unknown, options?: ValidateRegistryOptions): RegistryValidation;
|
|
320
|
+
/** `enabled` defaults to `true`. */
|
|
321
|
+
export declare function isEntryEnabled(entry: AIProviderEntry): boolean;
|
|
322
|
+
/** `transport` defaults to `direct`; voice entries have none. */
|
|
323
|
+
export declare function entryTransport(entry: AIProviderEntry): AIProviderTransport | undefined;
|
|
324
|
+
/**
|
|
325
|
+
* Resolve an entry's endpoint (§1.3).
|
|
326
|
+
*
|
|
327
|
+
* An explicit `base_url` always wins. Otherwise the transport's template is
|
|
328
|
+
* interpolated from `params` (`publisher` defaults to `google` for Vertex).
|
|
329
|
+
* `transport: direct` has no derivation — an entry that reaches here without a
|
|
330
|
+
* `base_url` inherits one from its preset, which the catalog layer supplies
|
|
331
|
+
* during the merge.
|
|
332
|
+
*/
|
|
333
|
+
export declare function resolveEntryBaseUrl(entry: AIProviderEntry): string | undefined;
|
|
334
|
+
/**
|
|
335
|
+
* Merge registry layers into one view (§1.5).
|
|
336
|
+
*
|
|
337
|
+
* Precedence is taken from each layer's `layer` id, not from array position:
|
|
338
|
+
* `catalog` < `user` < `workspace` < `runtime` < `session`. Two layers with the
|
|
339
|
+
* same id are applied in array order, earliest winning. The merge is per key
|
|
340
|
+
* and deep — a workspace entry that sets only `base_url` keeps the user
|
|
341
|
+
* entry's credential, headers and model map.
|
|
342
|
+
*
|
|
343
|
+
* `locked: true` freezes an entry: every **lower** layer's contribution to that
|
|
344
|
+
* id is dropped silently, which is what makes a control-plane-pinned endpoint
|
|
345
|
+
* un-overridable from a checkout. (`skaile providers set` refuses loudly
|
|
346
|
+
* instead — silence is only correct for the merge.)
|
|
347
|
+
*
|
|
348
|
+
* This is a fold over layer *patches* and checks nothing: an entry no layer
|
|
349
|
+
* completed comes out of here incomplete. {@link validateMergedRegistry} is
|
|
350
|
+
* the gate — {@link loadProviderRegistry} runs it, and any other caller that
|
|
351
|
+
* merges hand-written layers has to as well.
|
|
352
|
+
*/
|
|
353
|
+
export declare function mergeRegistries(layers: AIProviderRegistryLayer[]): MergedAIProviderRegistry;
|
|
354
|
+
/** One labelled input to {@link validateMergedRegistry}. */
|
|
355
|
+
export interface AIProviderRegistrySource {
|
|
356
|
+
/** Where the layer came from — the file path, for the two on-disk layers. */
|
|
357
|
+
label: string;
|
|
358
|
+
providers: AIProviderRegistryPatch;
|
|
359
|
+
}
|
|
360
|
+
/** Options for {@link validateMergedRegistry}. */
|
|
361
|
+
export interface ValidateMergedRegistryOptions {
|
|
362
|
+
/**
|
|
363
|
+
* The layers that were merged, labelled. A merge-time diagnostic names the
|
|
364
|
+
* files that contributed the entry, because those are what the operator has
|
|
365
|
+
* to edit — collapsing the layers into one anonymous document would lose
|
|
366
|
+
* exactly the information the error is about.
|
|
367
|
+
*/
|
|
368
|
+
sources?: AIProviderRegistrySource[];
|
|
369
|
+
}
|
|
370
|
+
/** Result of {@link validateMergedRegistry}. */
|
|
371
|
+
export interface MergedRegistryValidation {
|
|
372
|
+
/** The merged view, with every entry no layer completed removed. */
|
|
373
|
+
registry: MergedAIProviderRegistry;
|
|
374
|
+
diagnostics: AIProviderDiagnostic[];
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Gate the **merged** registry (§1.5) — the completeness half of validation.
|
|
378
|
+
*
|
|
379
|
+
* {@link validateRegistry} in layer mode accepts a partial entry, because a
|
|
380
|
+
* workspace file that names `base_url` alone is an override, not a
|
|
381
|
+
* redefinition. This is where an entry has to be whole: only here has every
|
|
382
|
+
* layer folded in, so only here is `kind` known and with it which record
|
|
383
|
+
* applies (§1.7), whether a `surface` is missing, and which transport the
|
|
384
|
+
* `params` belong to (§1.3).
|
|
385
|
+
*
|
|
386
|
+
* Entries that fail are dropped, so a consumer never sees a half-defined
|
|
387
|
+
* endpoint. Every diagnostic names the entry id and — when `sources` are
|
|
388
|
+
* given — the layers that fed the entry, whatever the check that raised it.
|
|
389
|
+
*/
|
|
390
|
+
export declare function validateMergedRegistry(merged: MergedAIProviderRegistry, options?: ValidateMergedRegistryOptions): MergedRegistryValidation;
|
|
391
|
+
/** Entries of a registry in registry order, as `[id, entry]` pairs. */
|
|
392
|
+
export declare function registryEntries(registry: AIProviderRegistry | MergedAIProviderRegistry): Array<[string, AIProviderEntry]>;
|
|
393
|
+
/** A parsed `credential.ref` (§1.4). */
|
|
394
|
+
export type AIProviderCredentialRef = {
|
|
395
|
+
form: "env";
|
|
396
|
+
name: string;
|
|
397
|
+
} | {
|
|
398
|
+
form: "cmd";
|
|
399
|
+
command: string;
|
|
400
|
+
} | {
|
|
401
|
+
form: "platform";
|
|
402
|
+
configId: string;
|
|
403
|
+
} | {
|
|
404
|
+
form: "keyring";
|
|
405
|
+
service: string;
|
|
406
|
+
account: string;
|
|
407
|
+
};
|
|
408
|
+
/**
|
|
409
|
+
* Parse a `credential.ref`. Returns `undefined` for anything that is not one of
|
|
410
|
+
* the four reference forms — which, in a registry file, means a literal secret.
|
|
411
|
+
*/
|
|
412
|
+
export declare function parseCredentialRef(ref: string): AIProviderCredentialRef | undefined;
|
|
413
|
+
/** Render a parsed reference back to its `<form>:<body>` string. */
|
|
414
|
+
export declare function formatCredentialRef(ref: AIProviderCredentialRef): string;
|
|
415
|
+
/** A model selector resolved against a registry. */
|
|
416
|
+
export interface ResolvedModelRef {
|
|
417
|
+
/** Entry the model routes to. */
|
|
418
|
+
providerId: string;
|
|
419
|
+
/**
|
|
420
|
+
* Logical model id, after `@role` expansion and before `model_map`. Absent
|
|
421
|
+
* only when a dangling role left the provider without a named model — the
|
|
422
|
+
* driver then uses its own default.
|
|
423
|
+
*/
|
|
424
|
+
modelId?: string;
|
|
425
|
+
/** Provider-side id: `model_map[modelId] ?? modelId`. */
|
|
426
|
+
providerModelId?: string;
|
|
427
|
+
/** The role name, when the selector was `@role`. */
|
|
428
|
+
role?: string;
|
|
429
|
+
/** Non-fatal notes: a dangling role, a role pointing at an unknown provider. */
|
|
430
|
+
warnings: string[];
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Resolve a model selector against a registry (§1.6, §9.8).
|
|
434
|
+
*
|
|
435
|
+
* Three forms:
|
|
436
|
+
* - `"<providerId>/<modelId>"` — explicit. The leading segment is only treated
|
|
437
|
+
* as a provider when the registry actually has that entry, so vendor-scoped
|
|
438
|
+
* ids (`meta-llama/Llama-3.3-70B`, `openai/gpt-oss-120b`) still resolve as
|
|
439
|
+
* bare model ids.
|
|
440
|
+
* - `"<modelId>"` — bare; the first entry in registry order that maps the id
|
|
441
|
+
* wins, else the first entry in registry order.
|
|
442
|
+
* - `"@role"` — resolved through `roles` (which lives in `skaile.yaml`). A
|
|
443
|
+
* dangling role is **not** fatal: it falls back to registry order and reports
|
|
444
|
+
* a warning.
|
|
445
|
+
*
|
|
446
|
+
* Returns `undefined` when no entry can serve the reference at all (an empty or
|
|
447
|
+
* fully-disabled registry).
|
|
448
|
+
*/
|
|
449
|
+
export declare function parseModelRef(ref: string, registry: AIProviderRegistry | MergedAIProviderRegistry, roles?: Record<string, string>): ResolvedModelRef | undefined;
|
|
450
|
+
//# sourceMappingURL=provider-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../../core/src/provider-registry.ts"],"names":[],"mappings":"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"}
|