diff --git a/backend/app/gateway/deps.py b/backend/app/gateway/deps.py index f17c101d8..bed03d26e 100644 --- a/backend/app/gateway/deps.py +++ b/backend/app/gateway/deps.py @@ -149,6 +149,7 @@ def get_run_context(request: Request) -> RunContext: event_store=get_run_event_store(request), run_events_config=getattr(config, "run_events", None), thread_store=get_thread_store(request), + app_config=config, ) diff --git a/backend/packages/harness/deerflow/runtime/runs/worker.py b/backend/packages/harness/deerflow/runtime/runs/worker.py index d8dfa1c2f..8cdebd5f4 100644 --- a/backend/packages/harness/deerflow/runtime/runs/worker.py +++ b/backend/packages/harness/deerflow/runtime/runs/worker.py @@ -54,6 +54,9 @@ class RunContext: run_events_config: Any | None = field(default=None) thread_store: Any | None = field(default=None) follow_up_to_run_id: str | None = field(default=None) + # Phase 2: app-level config flows through RunContext so Worker can build + # DeerFlowContext without consulting the process-global. + app_config: Any | None = field(default=None) async def run_agent( @@ -169,7 +172,7 @@ async def run_agent( # LangGraph's astream(context=...) injects this into Runtime.context # so middleware/tools can access it via resolve_context(). deer_flow_context = DeerFlowContext( - app_config=AppConfig.current(), + app_config=ctx.app_config if ctx.app_config is not None else AppConfig.current(), thread_id=thread_id, )