deerflow-code/offline-backend-20260512/backend/packages/harness/deerflow/integrations/weknora/runtime.py
2026-09-07 18:24:55 +08:00

46 lines
1.4 KiB
Python

"""Runtime composition shared by Gateway routes and the read-only agent tool."""
from __future__ import annotations
import httpx
from deerflow.config import get_app_config
from deerflow.config.app_config import AppConfig
from deerflow.config.llmwiki_config import ResolvedLlmWikiRuntime, resolve_llmwiki_runtime
from deerflow.config.system_settings import load_system_settings
from deerflow.integrations.weknora.client import WeKnoraClient
from deerflow.persistence.llmwiki import LlmWikiStore
_default_store: LlmWikiStore | None = None
def register_llmwiki_store(store: LlmWikiStore | None) -> None:
global _default_store
_default_store = store
def get_llmwiki_store() -> LlmWikiStore:
if _default_store is None:
raise RuntimeError("LLMWiki store is not initialized")
return _default_store
def get_resolved_llmwiki_runtime(config: AppConfig | None = None) -> ResolvedLlmWikiRuntime:
current = config or get_app_config()
return resolve_llmwiki_runtime(current.llmwiki, load_system_settings().llmwiki)
def build_weknora_client(
runtime: ResolvedLlmWikiRuntime,
*,
http_client: httpx.AsyncClient | None = None,
) -> WeKnoraClient:
if not runtime.weknora_enabled:
raise RuntimeError("WeKnora mode is not enabled")
return WeKnoraClient(
base_url=runtime.api_base_url,
http_client=http_client,
admin_email=runtime.admin_email,
admin_password=runtime.admin_password,
)