46 lines
1.4 KiB
Python
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,
|
|
)
|