@cleocode/core 2026.6.13 → 2026.6.15
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/dist/admin/ops.d.ts +4 -0
- package/dist/admin/ops.d.ts.map +1 -1
- package/dist/check/index.d.ts +12 -0
- package/dist/check/index.d.ts.map +1 -0
- package/dist/check/index.js +12 -0
- package/dist/check/index.js.map +1 -0
- package/dist/check/pr-gate.d.ts +183 -0
- package/dist/check/pr-gate.d.ts.map +1 -0
- package/dist/check/pr-gate.js +348 -0
- package/dist/check/pr-gate.js.map +1 -0
- package/dist/conduit/delivery-router.d.ts +134 -0
- package/dist/conduit/delivery-router.d.ts.map +1 -0
- package/dist/conduit/delivery-router.js +0 -0
- package/dist/conduit/delivery-router.js.map +1 -0
- package/dist/conduit/index.d.ts +5 -2
- package/dist/conduit/index.d.ts.map +1 -1
- package/dist/conduit/index.js +5 -2
- package/dist/conduit/index.js.map +1 -1
- package/dist/conduit/local-tui-adapter.d.ts +89 -0
- package/dist/conduit/local-tui-adapter.d.ts.map +1 -0
- package/dist/conduit/local-tui-adapter.js +225 -0
- package/dist/conduit/local-tui-adapter.js.map +1 -0
- package/dist/config/config-repair.d.ts +70 -0
- package/dist/config/config-repair.d.ts.map +1 -0
- package/dist/config/config-repair.js +248 -0
- package/dist/config/config-repair.js.map +1 -0
- package/dist/config/registry.d.ts +54 -0
- package/dist/config/registry.d.ts.map +1 -1
- package/dist/config/registry.js +92 -0
- package/dist/config/registry.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +11 -10
- package/dist/config.js.map +1 -1
- package/dist/deriver/queue-manager.d.ts +30 -2
- package/dist/deriver/queue-manager.d.ts.map +1 -1
- package/dist/deriver/queue-manager.js +54 -9
- package/dist/deriver/queue-manager.js.map +1 -1
- package/dist/dispatch/config-domain-handler.d.ts +125 -0
- package/dist/dispatch/config-domain-handler.d.ts.map +1 -0
- package/dist/dispatch/config-domain-handler.js +160 -0
- package/dist/dispatch/config-domain-handler.js.map +1 -0
- package/dist/dispatch/contracts/input-contracts.d.ts.map +1 -1
- package/dist/dispatch/contracts/input-contracts.js +19 -1
- package/dist/dispatch/contracts/input-contracts.js.map +1 -1
- package/dist/docs/export-document.js +3721 -696
- package/dist/docs/export-document.js.map +3 -3
- package/dist/gateway-client/client.d.ts +123 -0
- package/dist/gateway-client/client.d.ts.map +1 -0
- package/dist/gateway-client/client.js +93 -0
- package/dist/gateway-client/client.js.map +1 -0
- package/dist/gateway-client/generated/client/client.gen.d.ts +3 -0
- package/dist/gateway-client/generated/client/client.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/client.gen.js +217 -0
- package/dist/gateway-client/generated/client/client.gen.js.map +1 -0
- package/dist/gateway-client/generated/client/index.d.ts +11 -0
- package/dist/gateway-client/generated/client/index.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/index.js +7 -0
- package/dist/gateway-client/generated/client/index.js.map +1 -0
- package/dist/gateway-client/generated/client/types.gen.d.ts +121 -0
- package/dist/gateway-client/generated/client/types.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/types.gen.js +3 -0
- package/dist/gateway-client/generated/client/types.gen.js.map +1 -0
- package/dist/gateway-client/generated/client/utils.gen.d.ts +38 -0
- package/dist/gateway-client/generated/client/utils.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client/utils.gen.js +229 -0
- package/dist/gateway-client/generated/client/utils.gen.js.map +1 -0
- package/dist/gateway-client/generated/client.gen.d.ts +13 -0
- package/dist/gateway-client/generated/client.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/client.gen.js +4 -0
- package/dist/gateway-client/generated/client.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/auth.gen.d.ts +26 -0
- package/dist/gateway-client/generated/core/auth.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/auth.gen.js +15 -0
- package/dist/gateway-client/generated/core/auth.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts +26 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.js +58 -0
- package/dist/gateway-client/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/params.gen.d.ts +44 -0
- package/dist/gateway-client/generated/core/params.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/params.gen.js +101 -0
- package/dist/gateway-client/generated/core/params.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts +34 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.js +107 -0
- package/dist/gateway-client/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts +19 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.js +93 -0
- package/dist/gateway-client/generated/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts +72 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.js +133 -0
- package/dist/gateway-client/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/types.gen.d.ts +84 -0
- package/dist/gateway-client/generated/core/types.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/types.gen.js +3 -0
- package/dist/gateway-client/generated/core/types.gen.js.map +1 -0
- package/dist/gateway-client/generated/core/utils.gen.d.ts +20 -0
- package/dist/gateway-client/generated/core/utils.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/core/utils.gen.js +88 -0
- package/dist/gateway-client/generated/core/utils.gen.js.map +1 -0
- package/dist/gateway-client/generated/index.d.ts +3 -0
- package/dist/gateway-client/generated/index.d.ts.map +1 -0
- package/dist/gateway-client/generated/index.js +3 -0
- package/dist/gateway-client/generated/index.js.map +1 -0
- package/dist/gateway-client/generated/namespaces.gen.d.ts +512 -0
- package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/namespaces.gen.js +521 -0
- package/dist/gateway-client/generated/namespaces.gen.js.map +1 -0
- package/dist/gateway-client/generated/sdk.gen.d.ts +1780 -0
- package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/sdk.gen.js +3811 -0
- package/dist/gateway-client/generated/sdk.gen.js.map +1 -0
- package/dist/gateway-client/generated/types.gen.d.ts +14681 -0
- package/dist/gateway-client/generated/types.gen.d.ts.map +1 -0
- package/dist/gateway-client/generated/types.gen.js +3 -0
- package/dist/gateway-client/generated/types.gen.js.map +1 -0
- package/dist/gateway-client/index.d.ts +27 -0
- package/dist/gateway-client/index.d.ts.map +1 -0
- package/dist/gateway-client/index.js +25 -0
- package/dist/gateway-client/index.js.map +1 -0
- package/dist/gc/cleanup.d.ts +23 -8
- package/dist/gc/cleanup.d.ts.map +1 -1
- package/dist/gc/cleanup.js +287 -22
- package/dist/gc/cleanup.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +28 -0
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +10 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +18 -1
- package/dist/internal.js.map +1 -1
- package/dist/llm/catalog-model-resolver.d.ts +19 -0
- package/dist/llm/catalog-model-resolver.d.ts.map +1 -1
- package/dist/llm/catalog-model-resolver.js +36 -0
- package/dist/llm/catalog-model-resolver.js.map +1 -1
- package/dist/llm/catalog-resolver.d.ts +112 -0
- package/dist/llm/catalog-resolver.d.ts.map +1 -0
- package/dist/llm/catalog-resolver.js +207 -0
- package/dist/llm/catalog-resolver.js.map +1 -0
- package/dist/llm/catalog-seeder.d.ts +96 -0
- package/dist/llm/catalog-seeder.d.ts.map +1 -0
- package/dist/llm/catalog-seeder.js +189 -0
- package/dist/llm/catalog-seeder.js.map +1 -0
- package/dist/llm/cli-ops.d.ts +16 -0
- package/dist/llm/cli-ops.d.ts.map +1 -1
- package/dist/llm/cli-ops.js +37 -10
- package/dist/llm/cli-ops.js.map +1 -1
- package/dist/llm/complexity-classifier.d.ts +208 -0
- package/dist/llm/complexity-classifier.d.ts.map +1 -0
- package/dist/llm/complexity-classifier.js +359 -0
- package/dist/llm/complexity-classifier.js.map +1 -0
- package/dist/llm/credential-pool.d.ts +2 -0
- package/dist/llm/credential-pool.d.ts.map +1 -1
- package/dist/llm/credential-pool.js +5 -2
- package/dist/llm/credential-pool.js.map +1 -1
- package/dist/llm/credentials-store.d.ts +10 -14
- package/dist/llm/credentials-store.d.ts.map +1 -1
- package/dist/llm/credentials-store.js.map +1 -1
- package/dist/llm/cross-provider-selector.d.ts +249 -0
- package/dist/llm/cross-provider-selector.d.ts.map +1 -0
- package/dist/llm/cross-provider-selector.js +572 -0
- package/dist/llm/cross-provider-selector.js.map +1 -0
- package/dist/llm/entity-ops.d.ts +299 -0
- package/dist/llm/entity-ops.d.ts.map +1 -0
- package/dist/llm/entity-ops.js +441 -0
- package/dist/llm/entity-ops.js.map +1 -0
- package/dist/llm/index.d.ts +17 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +9 -0
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/llm-queue-admit.d.ts +118 -0
- package/dist/llm/llm-queue-admit.d.ts.map +1 -0
- package/dist/llm/llm-queue-admit.js +275 -0
- package/dist/llm/llm-queue-admit.js.map +1 -0
- package/dist/llm/local-model-fit.d.ts +260 -0
- package/dist/llm/local-model-fit.d.ts.map +1 -0
- package/dist/llm/local-model-fit.js +563 -0
- package/dist/llm/local-model-fit.js.map +1 -0
- package/dist/llm/oauth/device-code.d.ts.map +1 -1
- package/dist/llm/oauth/device-code.js +2 -8
- package/dist/llm/oauth/device-code.js.map +1 -1
- package/dist/llm/oauth/google-pkce.d.ts.map +1 -1
- package/dist/llm/oauth/google-pkce.js +2 -18
- package/dist/llm/oauth/google-pkce.js.map +1 -1
- package/dist/llm/oauth/pkce.d.ts +70 -0
- package/dist/llm/oauth/pkce.d.ts.map +1 -1
- package/dist/llm/oauth/pkce.js +106 -29
- package/dist/llm/oauth/pkce.js.map +1 -1
- package/dist/llm/onboarding/front-door.d.ts +146 -0
- package/dist/llm/onboarding/front-door.d.ts.map +1 -0
- package/dist/llm/onboarding/front-door.js +153 -0
- package/dist/llm/onboarding/front-door.js.map +1 -0
- package/dist/llm/onboarding/login-engine.d.ts +175 -0
- package/dist/llm/onboarding/login-engine.d.ts.map +1 -0
- package/dist/llm/onboarding/login-engine.js +286 -0
- package/dist/llm/onboarding/login-engine.js.map +1 -0
- package/dist/llm/pi/pi-gondolin-env.d.ts +23 -0
- package/dist/llm/pi/pi-gondolin-env.d.ts.map +1 -1
- package/dist/llm/pi/pi-gondolin-env.js +2 -2
- package/dist/llm/pi/pi-gondolin-env.js.map +1 -1
- package/dist/llm/plugin-facade.js +4612 -1042
- package/dist/llm/plugin-facade.js.map +3 -3
- package/dist/llm/provider-registry/builtin/anthropic.d.ts.map +1 -1
- package/dist/llm/provider-registry/builtin/anthropic.js +23 -10
- package/dist/llm/provider-registry/builtin/anthropic.js.map +1 -1
- package/dist/llm/provider-registry/builtin/ollama.d.ts +18 -0
- package/dist/llm/provider-registry/builtin/ollama.d.ts.map +1 -1
- package/dist/llm/provider-registry/builtin/ollama.js +20 -2
- package/dist/llm/provider-registry/builtin/ollama.js.map +1 -1
- package/dist/llm/provider-registry/provider-alias.d.ts +62 -0
- package/dist/llm/provider-registry/provider-alias.d.ts.map +1 -0
- package/dist/llm/provider-registry/provider-alias.js +85 -0
- package/dist/llm/provider-registry/provider-alias.js.map +1 -0
- package/dist/llm/provider-registry/provider-defs.d.ts +45 -0
- package/dist/llm/provider-registry/provider-defs.d.ts.map +1 -0
- package/dist/llm/provider-registry/provider-defs.js +145 -0
- package/dist/llm/provider-registry/provider-defs.js.map +1 -0
- package/dist/llm/provider-registry/provider-seed.d.ts +78 -0
- package/dist/llm/provider-registry/provider-seed.d.ts.map +1 -0
- package/dist/llm/provider-registry/provider-seed.js +113 -0
- package/dist/llm/provider-registry/provider-seed.js.map +1 -0
- package/dist/llm/role-executor.d.ts.map +1 -1
- package/dist/llm/role-executor.js +36 -0
- package/dist/llm/role-executor.js.map +1 -1
- package/dist/llm/role-resolver.d.ts.map +1 -1
- package/dist/llm/role-resolver.js +52 -10
- package/dist/llm/role-resolver.js.map +1 -1
- package/dist/llm/system-resolver.d.ts.map +1 -1
- package/dist/llm/system-resolver.js +73 -22
- package/dist/llm/system-resolver.js.map +1 -1
- package/dist/llm/transports/codex-responses.d.ts +111 -88
- package/dist/llm/transports/codex-responses.d.ts.map +1 -1
- package/dist/llm/transports/codex-responses.js +456 -258
- package/dist/llm/transports/codex-responses.js.map +1 -1
- package/dist/memory/learnings.d.ts +4 -0
- package/dist/memory/learnings.d.ts.map +1 -1
- package/dist/memory/patterns.d.ts +4 -0
- package/dist/memory/patterns.d.ts.map +1 -1
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.d.ts.map +1 -1
- package/dist/metrics/index.js +1 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/orchestration/spawn.d.ts +89 -0
- package/dist/orchestration/spawn.d.ts.map +1 -1
- package/dist/orchestration/spawn.js +68 -0
- package/dist/orchestration/spawn.js.map +1 -1
- package/dist/playbooks/cantbook-profile.d.ts +96 -0
- package/dist/playbooks/cantbook-profile.d.ts.map +1 -0
- package/dist/playbooks/cantbook-profile.js +97 -0
- package/dist/playbooks/cantbook-profile.js.map +1 -0
- package/dist/playbooks/guarded-deterministic-runner.d.ts +153 -0
- package/dist/playbooks/guarded-deterministic-runner.d.ts.map +1 -0
- package/dist/playbooks/guarded-deterministic-runner.js +155 -0
- package/dist/playbooks/guarded-deterministic-runner.js.map +1 -0
- package/dist/playbooks/index.d.ts +2 -0
- package/dist/playbooks/index.d.ts.map +1 -1
- package/dist/playbooks/index.js +10 -0
- package/dist/playbooks/index.js.map +1 -1
- package/dist/playbooks/pi-runner-wiring.d.ts +75 -0
- package/dist/playbooks/pi-runner-wiring.d.ts.map +1 -0
- package/dist/playbooks/pi-runner-wiring.js +82 -0
- package/dist/playbooks/pi-runner-wiring.js.map +1 -0
- package/dist/release/index.d.ts +2 -2
- package/dist/release/index.d.ts.map +1 -1
- package/dist/release/index.js +1 -1
- package/dist/release/index.js.map +1 -1
- package/dist/release/reconcile.d.ts +97 -0
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +412 -5
- package/dist/release/reconcile.js.map +1 -1
- package/dist/resources/backend.d.ts +155 -0
- package/dist/resources/backend.d.ts.map +1 -0
- package/dist/resources/backend.js +23 -0
- package/dist/resources/backend.js.map +1 -0
- package/dist/resources/linux-backend.d.ts +167 -0
- package/dist/resources/linux-backend.d.ts.map +1 -0
- package/dist/resources/linux-backend.js +259 -0
- package/dist/resources/linux-backend.js.map +1 -0
- package/dist/resources/monitor.d.ts +230 -0
- package/dist/resources/monitor.d.ts.map +1 -0
- package/dist/resources/monitor.js +255 -0
- package/dist/resources/monitor.js.map +1 -0
- package/dist/resources/spawn-wrapper.d.ts +265 -0
- package/dist/resources/spawn-wrapper.d.ts.map +1 -0
- package/dist/resources/spawn-wrapper.js +304 -0
- package/dist/resources/spawn-wrapper.js.map +1 -0
- package/dist/runtime/openapi/generate-openapi.d.ts +211 -0
- package/dist/runtime/openapi/generate-openapi.d.ts.map +1 -0
- package/dist/runtime/openapi/generate-openapi.js +300 -0
- package/dist/runtime/openapi/generate-openapi.js.map +1 -0
- package/dist/runtime/openapi/index.d.ts +16 -0
- package/dist/runtime/openapi/index.d.ts.map +1 -0
- package/dist/runtime/openapi/index.js +16 -0
- package/dist/runtime/openapi/index.js.map +1 -0
- package/dist/selfimprove/budget.d.ts +11 -2
- package/dist/selfimprove/budget.d.ts.map +1 -1
- package/dist/selfimprove/budget.js +11 -2
- package/dist/selfimprove/budget.js.map +1 -1
- package/dist/selfimprove/fix-gen.d.ts +229 -0
- package/dist/selfimprove/fix-gen.d.ts.map +1 -0
- package/dist/selfimprove/fix-gen.js +266 -0
- package/dist/selfimprove/fix-gen.js.map +1 -0
- package/dist/selfimprove/run-loop.d.ts +44 -4
- package/dist/selfimprove/run-loop.d.ts.map +1 -1
- package/dist/selfimprove/run-loop.js +73 -6
- package/dist/selfimprove/run-loop.js.map +1 -1
- package/dist/selfimprove/scenarios/dhq-replay-find/golden.json +32 -0
- package/dist/selfimprove/scenarios/dhq-replay-find/scenario.json +18 -0
- package/dist/sentient/cross-project-hygiene.d.ts +11 -2
- package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
- package/dist/sentient/cross-project-hygiene.js +73 -10
- package/dist/sentient/cross-project-hygiene.js.map +1 -1
- package/dist/sentient/daemon.d.ts.map +1 -1
- package/dist/sentient/daemon.js +7 -2
- package/dist/sentient/daemon.js.map +1 -1
- package/dist/sentient/worktree-dispatch.d.ts.map +1 -1
- package/dist/sentient/worktree-dispatch.js +8 -1
- package/dist/sentient/worktree-dispatch.js.map +1 -1
- package/dist/setup/config-json-merge.d.ts.map +1 -1
- package/dist/setup/config-json-merge.js +14 -0
- package/dist/setup/config-json-merge.js.map +1 -1
- package/dist/setup/index.d.ts +23 -11
- package/dist/setup/index.d.ts.map +1 -1
- package/dist/setup/index.js +25 -12
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/sections/llm.d.ts +28 -1
- package/dist/setup/sections/llm.d.ts.map +1 -1
- package/dist/setup/sections/llm.js +27 -6
- package/dist/setup/sections/llm.js.map +1 -1
- package/dist/setup/sections/models-roles.d.ts +40 -0
- package/dist/setup/sections/models-roles.d.ts.map +1 -0
- package/dist/setup/sections/models-roles.js +219 -0
- package/dist/setup/sections/models-roles.js.map +1 -0
- package/dist/setup/wizard.d.ts +19 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.js.map +1 -1
- package/dist/spawn/branch-lock.d.ts.map +1 -1
- package/dist/spawn/branch-lock.js +7 -1
- package/dist/spawn/branch-lock.js.map +1 -1
- package/dist/store/attachment-repair.d.ts +110 -0
- package/dist/store/attachment-repair.d.ts.map +1 -0
- package/dist/store/attachment-repair.js +326 -0
- package/dist/store/attachment-repair.js.map +1 -0
- package/dist/store/attachment-store.d.ts.map +1 -1
- package/dist/store/attachment-store.js +24 -7
- package/dist/store/attachment-store.js.map +1 -1
- package/dist/store/schedule-schema.d.ts +195 -0
- package/dist/store/schedule-schema.d.ts.map +1 -0
- package/dist/store/schedule-schema.js +84 -0
- package/dist/store/schedule-schema.js.map +1 -0
- package/dist/store/schedule-store.d.ts +144 -0
- package/dist/store/schedule-store.d.ts.map +1 -0
- package/dist/store/schedule-store.js +162 -0
- package/dist/store/schedule-store.js.map +1 -0
- package/dist/store/schema/attachments.d.ts +1 -1
- package/dist/store/schema/cleo-global/index.d.ts +3 -0
- package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/index.js +5 -0
- package/dist/store/schema/cleo-global/index.js.map +1 -1
- package/dist/store/schema/cleo-global/models-catalog.d.ts +359 -0
- package/dist/store/schema/cleo-global/models-catalog.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/models-catalog.js +114 -0
- package/dist/store/schema/cleo-global/models-catalog.js.map +1 -0
- package/dist/store/schema/cleo-global/providers.d.ts +279 -0
- package/dist/store/schema/cleo-global/providers.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/providers.js +94 -0
- package/dist/store/schema/cleo-global/providers.js.map +1 -0
- package/dist/store/schema/cleo-global/services.d.ts +493 -0
- package/dist/store/schema/cleo-global/services.d.ts.map +1 -0
- package/dist/store/schema/cleo-global/services.js +200 -0
- package/dist/store/schema/cleo-global/services.js.map +1 -0
- package/dist/store/schema/cleo-project/docs.d.ts +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
- package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
- package/dist/store/schema/memory-schema.d.ts +182 -2
- package/dist/store/schema/memory-schema.d.ts.map +1 -1
- package/dist/store/schema/memory-schema.js +111 -2
- package/dist/store/schema/memory-schema.js.map +1 -1
- package/dist/store/schema/provenance/releases.d.ts +1 -1
- package/dist/store/service-connections-accessor.d.ts +313 -0
- package/dist/store/service-connections-accessor.d.ts.map +1 -0
- package/dist/store/service-connections-accessor.js +464 -0
- package/dist/store/service-connections-accessor.js.map +1 -0
- package/dist/store/service-host-matcher.d.ts +70 -0
- package/dist/store/service-host-matcher.d.ts.map +1 -0
- package/dist/store/service-host-matcher.js +127 -0
- package/dist/store/service-host-matcher.js.map +1 -0
- package/dist/store/service-injection.d.ts +152 -0
- package/dist/store/service-injection.d.ts.map +1 -0
- package/dist/store/service-injection.js +225 -0
- package/dist/store/service-injection.js.map +1 -0
- package/dist/store/service-oauth.d.ts +287 -0
- package/dist/store/service-oauth.d.ts.map +1 -0
- package/dist/store/service-oauth.js +524 -0
- package/dist/store/service-oauth.js.map +1 -0
- package/dist/store/service-trust-gate.d.ts +164 -0
- package/dist/store/service-trust-gate.d.ts.map +1 -0
- package/dist/store/service-trust-gate.js +122 -0
- package/dist/store/service-trust-gate.js.map +1 -0
- package/dist/store/validation-schemas.d.ts +4 -4
- package/dist/tasks/agent-lifecycle-lane.d.ts +175 -0
- package/dist/tasks/agent-lifecycle-lane.d.ts.map +1 -0
- package/dist/tasks/agent-lifecycle-lane.js +176 -0
- package/dist/tasks/agent-lifecycle-lane.js.map +1 -0
- package/dist/tasks/complete.d.ts +17 -0
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +53 -10
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/depends-waiver-audit.d.ts +52 -0
- package/dist/tasks/depends-waiver-audit.d.ts.map +1 -0
- package/dist/tasks/depends-waiver-audit.js +36 -0
- package/dist/tasks/depends-waiver-audit.js.map +1 -0
- package/dist/tasks/engine-wrap.d.ts +36 -2
- package/dist/tasks/engine-wrap.d.ts.map +1 -1
- package/dist/tasks/engine-wrap.js +44 -2
- package/dist/tasks/engine-wrap.js.map +1 -1
- package/dist/tasks/evidence.d.ts +34 -2
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +293 -35
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/index.d.ts +1 -0
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/index.js +1 -0
- package/dist/tasks/index.js.map +1 -1
- package/dist/tasks/ops.d.ts +3 -0
- package/dist/tasks/ops.d.ts.map +1 -1
- package/dist/tasks/task-ops.d.ts +1 -1
- package/dist/tasks/task-ops.d.ts.map +1 -1
- package/dist/tasks/task-ops.js +3 -1
- package/dist/tasks/task-ops.js.map +1 -1
- package/dist/tasks/task-reparent.d.ts +90 -0
- package/dist/tasks/task-reparent.d.ts.map +1 -1
- package/dist/tasks/task-reparent.js +171 -0
- package/dist/tasks/task-reparent.js.map +1 -1
- package/dist/tools/builtin-agent-tools.d.ts.map +1 -1
- package/dist/tools/builtin-agent-tools.js +41 -0
- package/dist/tools/builtin-agent-tools.js.map +1 -1
- package/dist/tools/exec-code-agent-tool.d.ts +179 -0
- package/dist/tools/exec-code-agent-tool.d.ts.map +1 -0
- package/dist/tools/exec-code-agent-tool.js +239 -0
- package/dist/tools/exec-code-agent-tool.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp-agent-tool.d.ts +189 -0
- package/dist/tools/mcp-agent-tool.d.ts.map +1 -0
- package/dist/tools/mcp-agent-tool.js +243 -0
- package/dist/tools/mcp-agent-tool.js.map +1 -0
- package/dist/tools/media-agent-tools.d.ts +105 -0
- package/dist/tools/media-agent-tools.d.ts.map +1 -0
- package/dist/tools/media-agent-tools.js +255 -0
- package/dist/tools/media-agent-tools.js.map +1 -0
- package/dist/tools/memory-agent-tools.d.ts +99 -0
- package/dist/tools/memory-agent-tools.d.ts.map +1 -0
- package/dist/tools/memory-agent-tools.js +190 -0
- package/dist/tools/memory-agent-tools.js.map +1 -0
- package/dist/tools/schedule-agent-tools.d.ts +151 -0
- package/dist/tools/schedule-agent-tools.d.ts.map +1 -0
- package/dist/tools/schedule-agent-tools.js +238 -0
- package/dist/tools/schedule-agent-tools.js.map +1 -0
- package/dist/tools/skill-agent-tool.d.ts +108 -0
- package/dist/tools/skill-agent-tool.d.ts.map +1 -0
- package/dist/tools/skill-agent-tool.js +135 -0
- package/dist/tools/skill-agent-tool.js.map +1 -0
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +17 -1
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/verification/verify-tools.d.ts.map +1 -1
- package/dist/verification/verify-tools.js +5 -6
- package/dist/verification/verify-tools.js.map +1 -1
- package/migrations/drizzle-brain/20260610000001_t10405-bitemporal-network-columns/migration.sql +71 -0
- package/migrations/drizzle-cleo-global/20260609000000_t11937-service-vault/migration.sql +93 -0
- package/migrations/drizzle-cleo-global/20260609010000_t11733-models-catalog/migration.sql +65 -0
- package/migrations/drizzle-cleo-global/20260609020000_t11703-providers/migration.sql +52 -0
- package/migrations/drizzle-cleo-global/20260610000000_t11962-schedules/migration.sql +48 -0
- package/migrations/drizzle-cleo-project/20260610000000_t11962-schedules/migration.sql +48 -0
- package/package.json +33 -13
- package/templates/workflows/release-prepare.yml.tmpl +48 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,yBAAyB,yCAAyC,CAAC;AAqDhF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,eAa9B,CAAC"}
|
|
@@ -37,28 +37,41 @@ function resolveAnthropicClientId() {
|
|
|
37
37
|
/**
|
|
38
38
|
* Anthropic OAuth PKCE configuration.
|
|
39
39
|
*
|
|
40
|
-
* Anthropic uses RFC 7636 PKCE (not device-code). Endpoints
|
|
41
|
-
*
|
|
42
|
-
* (
|
|
40
|
+
* Anthropic uses RFC 7636 PKCE (not device-code). Endpoints mirror the
|
|
41
|
+
* embedded Pi framework reference implementation
|
|
42
|
+
* (`@earendil-works/pi-ai` `dist/utils/oauth/anthropic.js`, also what
|
|
43
|
+
* OpenCode and Claude Code use):
|
|
43
44
|
* - authorizationEndpoint: https://claude.ai/oauth/authorize
|
|
44
|
-
* - tokenEndpoint: https://
|
|
45
|
-
* - redirectUri: https://
|
|
45
|
+
* - tokenEndpoint: https://platform.claude.com/v1/oauth/token
|
|
46
|
+
* - redirectUri: https://platform.claude.com/oauth/code/callback
|
|
47
|
+
*
|
|
48
|
+
* The `console.anthropic.com` endpoints were retired in the Anthropic →
|
|
49
|
+
* claude.com domain migration: the authorize server redirects to
|
|
50
|
+
* `platform.claude.com/oauth/code/callback` regardless of the requested
|
|
51
|
+
* redirect_uri, so exchanging against the old host fails with HTTP 400
|
|
52
|
+
* (T11958 / DHQ-075).
|
|
53
|
+
*
|
|
54
|
+
* Anthropic's token endpoint is non-RFC in two ways (mirrored from pi-ai):
|
|
55
|
+
* - it expects an `application/json` body (`tokenBodyFormat: 'json'`), and
|
|
56
|
+
* - it requires the authorize-time `state` echoed in the exchange body.
|
|
46
57
|
*
|
|
47
58
|
* The Anthropic-hosted redirect URI displays the authorization code on the
|
|
48
|
-
* post-redirect page
|
|
49
|
-
*
|
|
50
|
-
* HTTP listener is required.
|
|
59
|
+
* post-redirect page (`code=true` opts into that display) so the user can
|
|
60
|
+
* paste it back into the CLI prompt. No local HTTP listener is required.
|
|
51
61
|
*
|
|
52
62
|
* @task T9302
|
|
53
63
|
* @task T9344
|
|
64
|
+
* @task T11958
|
|
54
65
|
*/
|
|
55
66
|
const ANTHROPIC_OAUTH = {
|
|
56
67
|
mode: 'pkce',
|
|
57
68
|
clientId: resolveAnthropicClientId(),
|
|
58
69
|
authorizationEndpoint: 'https://claude.ai/oauth/authorize',
|
|
59
|
-
tokenEndpoint: 'https://
|
|
70
|
+
tokenEndpoint: 'https://platform.claude.com/v1/oauth/token',
|
|
60
71
|
scope: 'org:create_api_key user:profile user:inference',
|
|
61
|
-
redirectUri: 'https://
|
|
72
|
+
redirectUri: 'https://platform.claude.com/oauth/code/callback',
|
|
73
|
+
extraAuthParams: { code: 'true' },
|
|
74
|
+
tokenBodyFormat: 'json',
|
|
62
75
|
};
|
|
63
76
|
/**
|
|
64
77
|
* Anthropic Claude provider profile.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sCAAsC,CAAC;AAEhF;;;;;;GAMG;AACH,SAAS,wBAAwB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,yBAAyB,CAAC;AACpF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sCAAsC,CAAC;AAEhF;;;;;;GAMG;AACH,SAAS,wBAAwB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,yBAAyB,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,eAAe,GAAwB;IAC3C,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,wBAAwB,EAAE;IACpC,qBAAqB,EAAE,mCAAmC;IAC1D,aAAa,EAAE,4CAA4C;IAC3D,KAAK,EAAE,gDAAgD;IACvD,WAAW,EAAE,iDAAiD;IAC9D,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IACjC,eAAe,EAAE,MAAM;CACxB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,2BAA2B;IACpC,YAAY,EAAE,2BAA2B;IACzC,OAAO,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;IACpC,2EAA2E;IAC3E,IAAI,EAAE,UAAU;IAChB,eAAe,EAAE,2BAA2B;IAC5C,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE;IACrD,KAAK,EAAE,eAAe;CACvB,CAAC"}
|
|
@@ -30,6 +30,24 @@ import type { ProviderProfile } from '@cleocode/contracts';
|
|
|
30
30
|
* `authTypes: ['api_key']` is listed for compatibility with the credential
|
|
31
31
|
* store API, but local Ollama deployments do not require an actual key —
|
|
32
32
|
* users may leave it empty or store a token for remote/proxied deployments.
|
|
33
|
+
*
|
|
34
|
+
* ## Default model selection (DHQ-081 · T11978 · T11990)
|
|
35
|
+
*
|
|
36
|
+
* `defaultModel` is `gemma4:e4b` (standard/frontier tasks, requires ≥ 8 GB RAM).
|
|
37
|
+
* `defaultAuxModel` is `gemma4:e2b` (fast/aux tasks, requires ≥ 4 GB RAM).
|
|
38
|
+
*
|
|
39
|
+
* Tags live-verified on ollama.com/library/gemma4 2026-06-11:
|
|
40
|
+
* - gemma4:e2b = 7.2 GB download (Q4_K_M), edge 2B effective params
|
|
41
|
+
* - gemma4:e4b = 9.6 GB download (Q4_K_M), edge 4B effective params
|
|
42
|
+
* - gemma4:12b = 7.6 GB download (QAT), 12B params, 256k context
|
|
43
|
+
*
|
|
44
|
+
* The cross-provider selector (`cross-provider-selector.ts`) gates model selection
|
|
45
|
+
* on `os.totalmem()` and falls through to `qwen2:0.5b` only as a proof-of-life
|
|
46
|
+
* last resort when RAM is below 4 GB. These are the provider-registry SSoT
|
|
47
|
+
* constants; the selector reads them via `getProviderProfile('ollama')`.
|
|
48
|
+
*
|
|
49
|
+
* If the catalog does not yet have a `gemma4` family entry, the resolver logs a
|
|
50
|
+
* hint to run `cleo llm refresh-catalog`.
|
|
33
51
|
*/
|
|
34
52
|
export declare const ollamaProfile: ProviderProfile;
|
|
35
53
|
//# sourceMappingURL=ollama.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,aAAa,EAAE,eAa3B,CAAC"}
|
|
@@ -32,17 +32,35 @@
|
|
|
32
32
|
* `authTypes: ['api_key']` is listed for compatibility with the credential
|
|
33
33
|
* store API, but local Ollama deployments do not require an actual key —
|
|
34
34
|
* users may leave it empty or store a token for remote/proxied deployments.
|
|
35
|
+
*
|
|
36
|
+
* ## Default model selection (DHQ-081 · T11978 · T11990)
|
|
37
|
+
*
|
|
38
|
+
* `defaultModel` is `gemma4:e4b` (standard/frontier tasks, requires ≥ 8 GB RAM).
|
|
39
|
+
* `defaultAuxModel` is `gemma4:e2b` (fast/aux tasks, requires ≥ 4 GB RAM).
|
|
40
|
+
*
|
|
41
|
+
* Tags live-verified on ollama.com/library/gemma4 2026-06-11:
|
|
42
|
+
* - gemma4:e2b = 7.2 GB download (Q4_K_M), edge 2B effective params
|
|
43
|
+
* - gemma4:e4b = 9.6 GB download (Q4_K_M), edge 4B effective params
|
|
44
|
+
* - gemma4:12b = 7.6 GB download (QAT), 12B params, 256k context
|
|
45
|
+
*
|
|
46
|
+
* The cross-provider selector (`cross-provider-selector.ts`) gates model selection
|
|
47
|
+
* on `os.totalmem()` and falls through to `qwen2:0.5b` only as a proof-of-life
|
|
48
|
+
* last resort when RAM is below 4 GB. These are the provider-registry SSoT
|
|
49
|
+
* constants; the selector reads them via `getProviderProfile('ollama')`.
|
|
50
|
+
*
|
|
51
|
+
* If the catalog does not yet have a `gemma4` family entry, the resolver logs a
|
|
52
|
+
* hint to run `cleo llm refresh-catalog`.
|
|
35
53
|
*/
|
|
36
54
|
export const ollamaProfile = {
|
|
37
55
|
name: 'ollama',
|
|
38
56
|
displayName: 'Ollama (local)',
|
|
39
57
|
authTypes: ['api_key'],
|
|
40
58
|
baseUrl: 'http://localhost:11434',
|
|
41
|
-
defaultModel: '
|
|
59
|
+
defaultModel: 'gemma4:e4b',
|
|
42
60
|
aliases: ['ollama-local'],
|
|
43
61
|
// Hermes-parity routing/catalog fields (T11756). Local on-device tier.
|
|
44
62
|
tier: 'local',
|
|
45
|
-
defaultAuxModel: '
|
|
63
|
+
defaultAuxModel: 'gemma4:e2b',
|
|
46
64
|
defaultMaxTokens: 2048,
|
|
47
65
|
envVars: ['OLLAMA_API_KEY', 'OLLAMA_BASE_URL'],
|
|
48
66
|
supportsThinkingBudget: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../../src/llm/provider-registry/builtin/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,gBAAgB;IAC7B,SAAS,EAAE,CAAC,SAAS,CAAC;IACtB,OAAO,EAAE,wBAAwB;IACjC,YAAY,EAAE,YAAY;IAC1B,OAAO,EAAE,CAAC,cAAc,CAAC;IACzB,uEAAuE;IACvE,IAAI,EAAE,OAAO;IACb,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAC9C,sBAAsB,EAAE,KAAK;CAC9B,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure provider-alias resolution over {@link ProviderDef.aliases} (T11704).
|
|
3
|
+
*
|
|
4
|
+
* M3 Provider SSoT (epic T11667 · task T11704). {@link resolveProviderId} maps a name
|
|
5
|
+
* OR an alias to its canonical provider id, reading the {@link ProviderDef} set's
|
|
6
|
+
* `aliases` arrays as the SINGLE source — `codex`/`chatgpt` → `openai`,
|
|
7
|
+
* `claude` → `anthropic`, `google` → `gemini`, … It is the declarative replacement
|
|
8
|
+
* for the ad-hoc `_aliases` Map the in-process registry populates imperatively.
|
|
9
|
+
*
|
|
10
|
+
* ## Pure + deterministic + side-effect-free (AC2 · AC5)
|
|
11
|
+
*
|
|
12
|
+
* The resolver is a pure function of `(input, defs)`: no DB, no network, no module
|
|
13
|
+
* state. {@link buildAliasIndex} folds the provider set into an immutable
|
|
14
|
+
* `alias → id` index once; {@link resolveProviderId} is a single case-insensitive
|
|
15
|
+
* lookup. An alias that collides with ANOTHER provider's primary id is rejected at
|
|
16
|
+
* index-build time (a hard error) so a mis-declared alias can never silently
|
|
17
|
+
* mis-route. Unknown input returns `null`.
|
|
18
|
+
*
|
|
19
|
+
* @module llm/provider-registry/provider-alias
|
|
20
|
+
* @task T11704
|
|
21
|
+
* @epic T11667
|
|
22
|
+
* @see @cleocode/contracts — {@link ProviderDef} (the declarative contract, T11702)
|
|
23
|
+
* @see ./provider-defs.ts — {@link builtinProviderDefs} (the default provider set)
|
|
24
|
+
*/
|
|
25
|
+
import type { ProviderDef } from '@cleocode/contracts';
|
|
26
|
+
/**
|
|
27
|
+
* An immutable case-insensitive `alias-or-id → canonical-id` index built from a
|
|
28
|
+
* provider set. Every provider's own id maps to itself; every alias maps to its
|
|
29
|
+
* provider's id.
|
|
30
|
+
*
|
|
31
|
+
* @task T11704
|
|
32
|
+
*/
|
|
33
|
+
export type ProviderAliasIndex = ReadonlyMap<string, string>;
|
|
34
|
+
/**
|
|
35
|
+
* Build the immutable {@link ProviderAliasIndex} from a provider set.
|
|
36
|
+
*
|
|
37
|
+
* Every provider's lower-cased `id` maps to itself; every lower-cased alias maps to
|
|
38
|
+
* its provider's id. Pure + deterministic.
|
|
39
|
+
*
|
|
40
|
+
* @param defs - The provider definitions (defaults to {@link builtinProviderDefs}).
|
|
41
|
+
* @returns The case-insensitive alias index.
|
|
42
|
+
* @throws {Error} When an alias collides with ANOTHER provider's primary id, or two
|
|
43
|
+
* providers declare the SAME alias (ambiguous resolution — AC2).
|
|
44
|
+
* @task T11704
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildAliasIndex(defs?: ReadonlyArray<ProviderDef>): ProviderAliasIndex;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve a provider name or alias to its canonical provider id (case-insensitive).
|
|
49
|
+
*
|
|
50
|
+
* Pure + deterministic + side-effect-free. `codex`/`chatgpt` → `openai`,
|
|
51
|
+
* `claude` → `anthropic`, an exact provider id → itself. Returns `null` for an
|
|
52
|
+
* unknown name (callers handle the generic/fallback case).
|
|
53
|
+
*
|
|
54
|
+
* @param input - The provider name or alias to resolve.
|
|
55
|
+
* @param indexOrDefs - An already-built {@link ProviderAliasIndex}, OR the provider
|
|
56
|
+
* set to build one from (defaults to {@link builtinProviderDefs}). Pass the prebuilt
|
|
57
|
+
* index in a hot loop to avoid rebuilding per call.
|
|
58
|
+
* @returns The canonical provider id, or `null` when `input` matches no id/alias.
|
|
59
|
+
* @task T11704
|
|
60
|
+
*/
|
|
61
|
+
export declare function resolveProviderId(input: string, indexOrDefs?: ProviderAliasIndex | ReadonlyArray<ProviderDef>): string | null;
|
|
62
|
+
//# sourceMappingURL=provider-alias.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-alias.d.ts","sourceRoot":"","sources":["../../../src/llm/provider-registry/provider-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,IAAI,GAAE,aAAa,CAAC,WAAW,CAAyB,GACvD,kBAAkB,CA8BpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAyB,GACnF,MAAM,GAAG,IAAI,CAMf"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure provider-alias resolution over {@link ProviderDef.aliases} (T11704).
|
|
3
|
+
*
|
|
4
|
+
* M3 Provider SSoT (epic T11667 · task T11704). {@link resolveProviderId} maps a name
|
|
5
|
+
* OR an alias to its canonical provider id, reading the {@link ProviderDef} set's
|
|
6
|
+
* `aliases` arrays as the SINGLE source — `codex`/`chatgpt` → `openai`,
|
|
7
|
+
* `claude` → `anthropic`, `google` → `gemini`, … It is the declarative replacement
|
|
8
|
+
* for the ad-hoc `_aliases` Map the in-process registry populates imperatively.
|
|
9
|
+
*
|
|
10
|
+
* ## Pure + deterministic + side-effect-free (AC2 · AC5)
|
|
11
|
+
*
|
|
12
|
+
* The resolver is a pure function of `(input, defs)`: no DB, no network, no module
|
|
13
|
+
* state. {@link buildAliasIndex} folds the provider set into an immutable
|
|
14
|
+
* `alias → id` index once; {@link resolveProviderId} is a single case-insensitive
|
|
15
|
+
* lookup. An alias that collides with ANOTHER provider's primary id is rejected at
|
|
16
|
+
* index-build time (a hard error) so a mis-declared alias can never silently
|
|
17
|
+
* mis-route. Unknown input returns `null`.
|
|
18
|
+
*
|
|
19
|
+
* @module llm/provider-registry/provider-alias
|
|
20
|
+
* @task T11704
|
|
21
|
+
* @epic T11667
|
|
22
|
+
* @see @cleocode/contracts — {@link ProviderDef} (the declarative contract, T11702)
|
|
23
|
+
* @see ./provider-defs.ts — {@link builtinProviderDefs} (the default provider set)
|
|
24
|
+
*/
|
|
25
|
+
import { builtinProviderDefs } from './provider-defs.js';
|
|
26
|
+
/**
|
|
27
|
+
* Build the immutable {@link ProviderAliasIndex} from a provider set.
|
|
28
|
+
*
|
|
29
|
+
* Every provider's lower-cased `id` maps to itself; every lower-cased alias maps to
|
|
30
|
+
* its provider's id. Pure + deterministic.
|
|
31
|
+
*
|
|
32
|
+
* @param defs - The provider definitions (defaults to {@link builtinProviderDefs}).
|
|
33
|
+
* @returns The case-insensitive alias index.
|
|
34
|
+
* @throws {Error} When an alias collides with ANOTHER provider's primary id, or two
|
|
35
|
+
* providers declare the SAME alias (ambiguous resolution — AC2).
|
|
36
|
+
* @task T11704
|
|
37
|
+
*/
|
|
38
|
+
export function buildAliasIndex(defs = builtinProviderDefs()) {
|
|
39
|
+
const ids = new Set();
|
|
40
|
+
for (const def of defs)
|
|
41
|
+
ids.add(def.id.toLowerCase());
|
|
42
|
+
const index = new Map();
|
|
43
|
+
// Primary ids first — an id always resolves to itself.
|
|
44
|
+
for (const id of ids)
|
|
45
|
+
index.set(id, id);
|
|
46
|
+
for (const def of defs) {
|
|
47
|
+
const canonical = def.id.toLowerCase();
|
|
48
|
+
for (const alias of def.aliases) {
|
|
49
|
+
const key = alias.toLowerCase();
|
|
50
|
+
// An alias that IS another provider's primary id is a hard collision.
|
|
51
|
+
if (ids.has(key) && key !== canonical) {
|
|
52
|
+
throw new Error(`[provider-alias] Alias "${alias}" for provider "${def.id}" collides with the ` +
|
|
53
|
+
`primary id of another provider.`);
|
|
54
|
+
}
|
|
55
|
+
const existing = index.get(key);
|
|
56
|
+
if (existing !== undefined && existing !== canonical) {
|
|
57
|
+
throw new Error(`[provider-alias] Alias "${alias}" is declared by both "${existing}" and ` +
|
|
58
|
+
`"${def.id}" — ambiguous resolution.`);
|
|
59
|
+
}
|
|
60
|
+
index.set(key, canonical);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return index;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve a provider name or alias to its canonical provider id (case-insensitive).
|
|
67
|
+
*
|
|
68
|
+
* Pure + deterministic + side-effect-free. `codex`/`chatgpt` → `openai`,
|
|
69
|
+
* `claude` → `anthropic`, an exact provider id → itself. Returns `null` for an
|
|
70
|
+
* unknown name (callers handle the generic/fallback case).
|
|
71
|
+
*
|
|
72
|
+
* @param input - The provider name or alias to resolve.
|
|
73
|
+
* @param indexOrDefs - An already-built {@link ProviderAliasIndex}, OR the provider
|
|
74
|
+
* set to build one from (defaults to {@link builtinProviderDefs}). Pass the prebuilt
|
|
75
|
+
* index in a hot loop to avoid rebuilding per call.
|
|
76
|
+
* @returns The canonical provider id, or `null` when `input` matches no id/alias.
|
|
77
|
+
* @task T11704
|
|
78
|
+
*/
|
|
79
|
+
export function resolveProviderId(input, indexOrDefs = builtinProviderDefs()) {
|
|
80
|
+
// Discriminate on the Map's `get` method — an already-built ProviderAliasIndex
|
|
81
|
+
// (a ReadonlyMap) has it; a provider-set array does not (build the index from it).
|
|
82
|
+
const index = 'get' in indexOrDefs ? indexOrDefs : buildAliasIndex(indexOrDefs);
|
|
83
|
+
return index.get(input.trim().toLowerCase()) ?? null;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=provider-alias.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-alias.js","sourceRoot":"","sources":["../../../src/llm/provider-registry/provider-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAWzD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAmC,mBAAmB,EAAE;IAExD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAEtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,uDAAuD;IACvD,KAAK,MAAM,EAAE,IAAI,GAAG;QAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAChC,sEAAsE;YACtE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,mBAAmB,GAAG,CAAC,EAAE,sBAAsB;oBAC7E,iCAAiC,CACpC,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,0BAA0B,QAAQ,QAAQ;oBACxE,IAAI,GAAG,CAAC,EAAE,2BAA2B,CACxC,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,cAA+D,mBAAmB,EAAE;IAEpF,+EAA+E;IAC/E,mFAAmF;IACnF,MAAM,KAAK,GACT,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtin {@link ProviderDef} set — the SEED SOURCE for the `providers` table.
|
|
3
|
+
*
|
|
4
|
+
* M3 Provider SSoT (epic T11667 · task T11703). The DECLARATIVE provider definitions
|
|
5
|
+
* are DERIVED from the existing runtime {@link ProviderProfile} builtins (the in-process
|
|
6
|
+
* registry SSoT) rather than re-declared — so the two never drift and there is one
|
|
7
|
+
* place to add a provider (the profile). `toProviderDef` projects a `ProviderProfile`
|
|
8
|
+
* (which bundles non-serializable hook closures) down to the serializable `ProviderDef`
|
|
9
|
+
* shape (DATA only): identity + aliases + auth + endpoint(s) + catalog key + headers +
|
|
10
|
+
* env vars + OAuth placeholder + the declarative request quirks.
|
|
11
|
+
*
|
|
12
|
+
* ## Why this lives under `provider-registry/`
|
|
13
|
+
*
|
|
14
|
+
* The builtin profiles are model-data SSoT (the LLM-chokepoint lint exempts this
|
|
15
|
+
* directory for model-id literals). This module reads their declarative DATA and
|
|
16
|
+
* never constructs a transport/client — it carries no model-id literals of its own.
|
|
17
|
+
*
|
|
18
|
+
* @module llm/provider-registry/provider-defs
|
|
19
|
+
* @task T11703
|
|
20
|
+
* @epic T11667
|
|
21
|
+
* @see @cleocode/contracts — {@link ProviderDef} (the declarative contract, T11702)
|
|
22
|
+
* @see ./index.ts — the in-process {@link ProviderProfile} registry (runtime SSoT)
|
|
23
|
+
* @see ./provider-seed.ts — the seeder that upserts these rows into `providers`
|
|
24
|
+
*/
|
|
25
|
+
import type { ProviderDef, ProviderProfile } from '@cleocode/contracts';
|
|
26
|
+
/**
|
|
27
|
+
* Project a runtime {@link ProviderProfile} down to the serializable
|
|
28
|
+
* {@link ProviderDef} (DATA only — drops the hook closures, keeps their declarative
|
|
29
|
+
* {@link RequestQuirk} kinds). Pure + deterministic.
|
|
30
|
+
*
|
|
31
|
+
* @param profile - The runtime profile (in-process registry SSoT).
|
|
32
|
+
* @returns The declarative provider definition.
|
|
33
|
+
* @task T11703
|
|
34
|
+
*/
|
|
35
|
+
export declare function toProviderDef(profile: ProviderProfile): ProviderDef;
|
|
36
|
+
/**
|
|
37
|
+
* The builtin {@link ProviderDef} set — DERIVED from the runtime
|
|
38
|
+
* {@link ProviderProfile} builtins. The SSoT-seed source for the `providers`
|
|
39
|
+
* table (T11703) and the input to the pure alias resolver (T11704).
|
|
40
|
+
*
|
|
41
|
+
* @returns Builtin provider definitions (one per provider id; xai collapsed to one).
|
|
42
|
+
* @task T11703
|
|
43
|
+
*/
|
|
44
|
+
export declare function builtinProviderDefs(): ReadonlyArray<ProviderDef>;
|
|
45
|
+
//# sourceMappingURL=provider-defs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-defs.d.ts","sourceRoot":"","sources":["../../../src/llm/provider-registry/provider-defs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACV,WAAW,EAEX,eAAe,EAIhB,MAAM,qBAAqB,CAAC;AAmG7B;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CA2BnE;AAuBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAAC,WAAW,CAAC,CAEhE"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtin {@link ProviderDef} set — the SEED SOURCE for the `providers` table.
|
|
3
|
+
*
|
|
4
|
+
* M3 Provider SSoT (epic T11667 · task T11703). The DECLARATIVE provider definitions
|
|
5
|
+
* are DERIVED from the existing runtime {@link ProviderProfile} builtins (the in-process
|
|
6
|
+
* registry SSoT) rather than re-declared — so the two never drift and there is one
|
|
7
|
+
* place to add a provider (the profile). `toProviderDef` projects a `ProviderProfile`
|
|
8
|
+
* (which bundles non-serializable hook closures) down to the serializable `ProviderDef`
|
|
9
|
+
* shape (DATA only): identity + aliases + auth + endpoint(s) + catalog key + headers +
|
|
10
|
+
* env vars + OAuth placeholder + the declarative request quirks.
|
|
11
|
+
*
|
|
12
|
+
* ## Why this lives under `provider-registry/`
|
|
13
|
+
*
|
|
14
|
+
* The builtin profiles are model-data SSoT (the LLM-chokepoint lint exempts this
|
|
15
|
+
* directory for model-id literals). This module reads their declarative DATA and
|
|
16
|
+
* never constructs a transport/client — it carries no model-id literals of its own.
|
|
17
|
+
*
|
|
18
|
+
* @module llm/provider-registry/provider-defs
|
|
19
|
+
* @task T11703
|
|
20
|
+
* @epic T11667
|
|
21
|
+
* @see @cleocode/contracts — {@link ProviderDef} (the declarative contract, T11702)
|
|
22
|
+
* @see ./index.ts — the in-process {@link ProviderProfile} registry (runtime SSoT)
|
|
23
|
+
* @see ./provider-seed.ts — the seeder that upserts these rows into `providers`
|
|
24
|
+
*/
|
|
25
|
+
import { anthropicProfile } from './builtin/anthropic.js';
|
|
26
|
+
import { bedrockProfile } from './builtin/bedrock.js';
|
|
27
|
+
import { geminiProfile } from './builtin/gemini.js';
|
|
28
|
+
import { kimiCodeProfile } from './builtin/kimi-code.js';
|
|
29
|
+
import { moonshotProfile } from './builtin/moonshot.js';
|
|
30
|
+
import { ollamaProfile } from './builtin/ollama.js';
|
|
31
|
+
import { openaiProfile } from './builtin/openai.js';
|
|
32
|
+
import { openrouterProfile } from './builtin/openrouter.js';
|
|
33
|
+
import { xaiProfile } from './builtin/xai.js';
|
|
34
|
+
/**
|
|
35
|
+
* Per-builtin projection overlay (the non-`ProviderProfile` declarative DATA).
|
|
36
|
+
*
|
|
37
|
+
* Transport mapping mirrors `deriveApiMode` (api-mode.ts):
|
|
38
|
+
* - `anthropic` / `kimi-code` → `anthropic-messages` (kimi speaks Anthropic wire)
|
|
39
|
+
* - `openai` → `openai-completions` primary + `openai-responses` alt (Codex OAuth)
|
|
40
|
+
* - `gemini` / `bedrock` / `ollama` → `aisdk` (reached via AI-SDK provider factory)
|
|
41
|
+
* - `xai` → `openai-completions` primary + `openai-responses` alt (collapses the
|
|
42
|
+
* prior `xaiProfile` / `xaiResponsesProfile` duplication into ONE row — AC4)
|
|
43
|
+
* - `openrouter` / `moonshot` → `openai-completions`
|
|
44
|
+
*
|
|
45
|
+
* @task T11703
|
|
46
|
+
*/
|
|
47
|
+
const OVERLAYS = {
|
|
48
|
+
anthropic: { transport: 'anthropic-messages' },
|
|
49
|
+
openai: {
|
|
50
|
+
transport: 'openai-completions',
|
|
51
|
+
altTransports: [{ transport: 'openai-responses' }],
|
|
52
|
+
},
|
|
53
|
+
gemini: { transport: 'aisdk', aiSdkProvider: 'google' },
|
|
54
|
+
moonshot: { transport: 'openai-completions' },
|
|
55
|
+
'kimi-code': {
|
|
56
|
+
transport: 'anthropic-messages',
|
|
57
|
+
modelsDevId: 'moonshot',
|
|
58
|
+
quirks: ['kimi-reasoning-effort'],
|
|
59
|
+
},
|
|
60
|
+
openrouter: { transport: 'openai-completions', quirks: ['openrouter-pareto'] },
|
|
61
|
+
bedrock: { transport: 'aisdk', aiSdkProvider: 'bedrock' },
|
|
62
|
+
xai: {
|
|
63
|
+
transport: 'openai-completions',
|
|
64
|
+
altTransports: [{ transport: 'openai-responses' }],
|
|
65
|
+
quirks: ['grok-conv-id'],
|
|
66
|
+
},
|
|
67
|
+
ollama: { transport: 'aisdk', aiSdkProvider: 'openai-compatible' },
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Build a {@link ProviderEndpoint} from a transport + base URL (+ AI-SDK key).
|
|
71
|
+
*
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
function makeEndpoint(transport, baseUrl, aiSdkProvider) {
|
|
75
|
+
if (transport === 'aisdk') {
|
|
76
|
+
// The aisdk variant REQUIRES an aiSdkProvider; default to the OpenAI-compatible
|
|
77
|
+
// factory when an overlay omits it (the generic compat path).
|
|
78
|
+
return { transport: 'aisdk', baseUrl, aiSdkProvider: aiSdkProvider ?? 'openai-compatible' };
|
|
79
|
+
}
|
|
80
|
+
return { transport, baseUrl };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Project a runtime {@link ProviderProfile} down to the serializable
|
|
84
|
+
* {@link ProviderDef} (DATA only — drops the hook closures, keeps their declarative
|
|
85
|
+
* {@link RequestQuirk} kinds). Pure + deterministic.
|
|
86
|
+
*
|
|
87
|
+
* @param profile - The runtime profile (in-process registry SSoT).
|
|
88
|
+
* @returns The declarative provider definition.
|
|
89
|
+
* @task T11703
|
|
90
|
+
*/
|
|
91
|
+
export function toProviderDef(profile) {
|
|
92
|
+
const overlay = OVERLAYS[profile.name.toLowerCase()];
|
|
93
|
+
const transport = overlay?.transport ?? 'openai-completions';
|
|
94
|
+
const endpoint = makeEndpoint(transport, profile.baseUrl, overlay?.aiSdkProvider);
|
|
95
|
+
const altEndpoints = (overlay?.altTransports ?? []).map((alt) => makeEndpoint(alt.transport, alt.baseUrl ?? profile.baseUrl, alt.aiSdkProvider));
|
|
96
|
+
const requestQuirks = (overlay?.quirks ?? []).map((kind) => ({ kind }));
|
|
97
|
+
const def = {
|
|
98
|
+
id: profile.name,
|
|
99
|
+
displayName: profile.displayName,
|
|
100
|
+
aliases: [...(profile.aliases ?? [])],
|
|
101
|
+
authMethods: [...profile.authTypes],
|
|
102
|
+
endpoint,
|
|
103
|
+
...(altEndpoints.length > 0 ? { altEndpoints } : {}),
|
|
104
|
+
modelsDevId: overlay?.modelsDevId ?? profile.name,
|
|
105
|
+
...(profile.defaultHeaders !== undefined
|
|
106
|
+
? { defaultHeaders: { ...profile.defaultHeaders } }
|
|
107
|
+
: {}),
|
|
108
|
+
...(profile.envVars !== undefined ? { envVars: [...profile.envVars] } : {}),
|
|
109
|
+
...(profile.oauth !== undefined ? { oauth: profile.oauth } : {}),
|
|
110
|
+
...(requestQuirks.length > 0 ? { requestQuirks } : {}),
|
|
111
|
+
};
|
|
112
|
+
return def;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Runtime profiles that seed the builtin {@link ProviderDef} set.
|
|
116
|
+
*
|
|
117
|
+
* The `xai` Responses profile (`xaiResponsesProfile`) is intentionally OMITTED — its
|
|
118
|
+
* Responses endpoint is folded into the single `xai` row's `altEndpoints` (AC4). The
|
|
119
|
+
* dual-ApiMode duplication collapses to one declarative row per provider id.
|
|
120
|
+
*
|
|
121
|
+
* @task T11703
|
|
122
|
+
*/
|
|
123
|
+
const SEED_PROFILES = [
|
|
124
|
+
anthropicProfile,
|
|
125
|
+
openaiProfile,
|
|
126
|
+
geminiProfile,
|
|
127
|
+
moonshotProfile,
|
|
128
|
+
kimiCodeProfile,
|
|
129
|
+
openrouterProfile,
|
|
130
|
+
bedrockProfile,
|
|
131
|
+
xaiProfile,
|
|
132
|
+
ollamaProfile,
|
|
133
|
+
];
|
|
134
|
+
/**
|
|
135
|
+
* The builtin {@link ProviderDef} set — DERIVED from the runtime
|
|
136
|
+
* {@link ProviderProfile} builtins. The SSoT-seed source for the `providers`
|
|
137
|
+
* table (T11703) and the input to the pure alias resolver (T11704).
|
|
138
|
+
*
|
|
139
|
+
* @returns Builtin provider definitions (one per provider id; xai collapsed to one).
|
|
140
|
+
* @task T11703
|
|
141
|
+
*/
|
|
142
|
+
export function builtinProviderDefs() {
|
|
143
|
+
return SEED_PROFILES.map(toProviderDef);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=provider-defs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-defs.js","sourceRoot":"","sources":["../../../src/llm/provider-registry/provider-defs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider seeder — populates the `providers` table from the builtin ProviderDef set.
|
|
3
|
+
*
|
|
4
|
+
* M3 Provider SSoT (epic T11667 · task T11703). {@link seedProviders} takes the builtin
|
|
5
|
+
* {@link ProviderDef} set (derived from the runtime {@link ProviderProfile} builtins by
|
|
6
|
+
* {@link builtinProviderDefs}), serializes each declarative field to its TEXT column,
|
|
7
|
+
* and UPSERTS each row via {@link openDualScopeDb}`('global')`. Seeding is the offline
|
|
8
|
+
* bootstrap of the provider SSoT — NO network is touched.
|
|
9
|
+
*
|
|
10
|
+
* ## Idempotent (AC5) + does NOT clobber user plugin providers
|
|
11
|
+
*
|
|
12
|
+
* The upsert targets the `id` primary key, so re-running yields the same row count and
|
|
13
|
+
* never duplicates (running twice = same rows). Only BUILTIN ids are touched — a user
|
|
14
|
+
* plugin provider row (a different id) is never read or written, so a re-seed cannot
|
|
15
|
+
* clobber it. `source` is stamped `seed` for these rows; plugin rows carry their own
|
|
16
|
+
* `source`.
|
|
17
|
+
*
|
|
18
|
+
* @module llm/provider-registry/provider-seed
|
|
19
|
+
* @task T11703
|
|
20
|
+
* @epic T11667
|
|
21
|
+
* @see ./provider-defs.ts — the builtin ProviderDef set (seed source)
|
|
22
|
+
* @see ../../store/schema/cleo-global/providers.ts — the persisted table
|
|
23
|
+
* @see ../catalog-seeder.ts — the sibling seeder this mirrors
|
|
24
|
+
*/
|
|
25
|
+
import type { ProviderDef } from '@cleocode/contracts';
|
|
26
|
+
import { type CleoGlobalDb } from '../../store/dual-scope-db.js';
|
|
27
|
+
import { type NewProviderRow } from '../../store/schema/cleo-global/providers.js';
|
|
28
|
+
/** Result of a {@link seedProviders} run. */
|
|
29
|
+
export interface SeedProvidersResult {
|
|
30
|
+
/** Whether rows were written this run. */
|
|
31
|
+
readonly seeded: boolean;
|
|
32
|
+
/** Number of builtin provider rows upserted. */
|
|
33
|
+
readonly rowCount: number;
|
|
34
|
+
}
|
|
35
|
+
/** Injectable seam for {@link seedProviders} (tests pass a temp-DB handle + defs). */
|
|
36
|
+
export interface SeedProvidersDeps {
|
|
37
|
+
/**
|
|
38
|
+
* An already-open global Drizzle handle. When omitted the seeder opens via
|
|
39
|
+
* {@link openDualScopeDb}`('global')`. Tests pass a temp-DB handle (opened via
|
|
40
|
+
* {@link openProviderSeederAtPath}) to stay off `.cleo/*.db`.
|
|
41
|
+
*/
|
|
42
|
+
readonly db?: CleoGlobalDb;
|
|
43
|
+
/**
|
|
44
|
+
* The provider definitions to seed, bypassing {@link builtinProviderDefs} (tests
|
|
45
|
+
* pass a fixture). When omitted the builtin set is used.
|
|
46
|
+
*/
|
|
47
|
+
readonly defs?: ReadonlyArray<ProviderDef>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Open the global seeder handle at an EXPLICIT path (test seam).
|
|
51
|
+
*
|
|
52
|
+
* @param dbPath - Absolute path to the temp `cleo.db`.
|
|
53
|
+
* @task T11703
|
|
54
|
+
*/
|
|
55
|
+
export declare function openProviderSeederAtPath(dbPath: string): Promise<CleoGlobalDb>;
|
|
56
|
+
/**
|
|
57
|
+
* Serialize one {@link ProviderDef} into a `providers` INSERT row. JSON columns are
|
|
58
|
+
* `JSON.stringify`-serialized; `oauth` is NULL when the provider has no OAuth flow.
|
|
59
|
+
*
|
|
60
|
+
* @param def - The declarative provider definition.
|
|
61
|
+
* @returns The flattened `providers` row.
|
|
62
|
+
* @task T11703
|
|
63
|
+
*/
|
|
64
|
+
export declare function providerDefToRow(def: ProviderDef): NewProviderRow;
|
|
65
|
+
/**
|
|
66
|
+
* Seed the `providers` table from the builtin {@link ProviderDef} set — idempotent,
|
|
67
|
+
* offline-first, plugin-safe.
|
|
68
|
+
*
|
|
69
|
+
* Upserts on the `id` primary key, so running twice yields the same row count and
|
|
70
|
+
* never duplicates (AC5). Only builtin ids are written; user plugin provider rows
|
|
71
|
+
* (other ids) are never touched. NO network is touched.
|
|
72
|
+
*
|
|
73
|
+
* @param deps - Optional injected DB handle / fixture defs (tests).
|
|
74
|
+
* @returns A {@link SeedProvidersResult} describing what happened.
|
|
75
|
+
* @task T11703
|
|
76
|
+
*/
|
|
77
|
+
export declare function seedProviders(deps?: SeedProvidersDeps): Promise<SeedProvidersResult>;
|
|
78
|
+
//# sourceMappingURL=provider-seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-seed.d.ts","sourceRoot":"","sources":["../../../src/llm/provider-registry/provider-seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,6CAA6C,CAAC;AAK7F,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAGpF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAejE;AASD;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA8B1F"}
|