feat(cloud): manage LLM providers in database
Tests / Test passed: 664

This commit is contained in:
2026-07-14 00:31:47 +08:00
parent b613a315ff
commit a166ffd8a4
35 changed files with 2432 additions and 204 deletions
+18
View File
@@ -31,6 +31,7 @@ from cloud.control_config import (
)
from cloud.database import CloudDatabase
from cloud.internal_api.api import create_internal_router
from cloud.llm_providers import LlmProviderService
from cloud.plugins import PluginRegistry
from cloud.observability import (
CORRELATION_HEADER,
@@ -44,6 +45,7 @@ from cloud.scheduler import TaskScheduler
from cloud.schema import require_current_schema
from cloud.sdk.api import create_cloud_router
from cloud.sdk.governance_api import create_governance_router
from cloud.sdk.llm_provider_api import create_llm_provider_router
from cloud.sdk.user_api import create_user_auth_router
from cloud.user_auth import USER_CSRF_COOKIE, USER_SESSION_COOKIE, UserAuthService, UserAuthSettings
from core.models import utc_now
@@ -77,6 +79,7 @@ class CloudApplicationServices:
plugin_registry: PluginRegistry
auth_provider: Any
user_auth_service: UserAuthService
llm_provider_service: LlmProviderService
class SpaStaticFiles(StaticFiles):
@@ -126,6 +129,7 @@ def create_app(
cookie_secure=control_config.session_cookie_secure,
),
)
llm_provider_service = LlmProviderService(repository)
auth_provider = ChainedAuthProvider(
(
configured_auth_provider,
@@ -146,6 +150,7 @@ def create_app(
plugin_registry=plugin_registry,
auth_provider=auth_provider,
user_auth_service=user_auth_service,
llm_provider_service=llm_provider_service,
)
@asynccontextmanager
@@ -295,6 +300,18 @@ def create_app(
auth_provider=auth_provider,
)
)
app.include_router(
create_llm_provider_router(
service=llm_provider_service,
repository=repository,
auth_provider=auth_provider,
csrf_validator=lambda request, principal: _valid_csrf_request(
request,
principal,
user_auth_service,
),
)
)
app.include_router(
create_internal_router(
pool=pool,
@@ -307,6 +324,7 @@ def create_app(
planner_token_reservation_ttl_seconds=(
control_config.planner_token_reservation_ttl_seconds
),
planner_provider_service=llm_provider_service,
)
)