File size: 1,178 Bytes
b85de73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from __future__ import annotations

from typing import Any

from .registry import get_agent


def agent_config_map(agent_configs: list[dict[str, Any]]) -> dict[str, dict[str, Any]]:
    return {config.get("agent_key", ""): config for config in agent_configs}


def resolve_agent_config(
    global_config: dict[str, Any],
    agent_configs: list[dict[str, Any]],
    agent_key: str,
) -> dict[str, Any]:
    merged = dict(global_config)
    per_agent = agent_config_map(agent_configs).get(agent_key, {})
    provider = per_agent.get("provider_strategy")
    if provider and provider != "global":
        merged["provider"] = provider
    for field in ("model_id", "model_override", "timeout_seconds"):
        value = per_agent.get(field)
        if value not in (None, ""):
            merged["model_id" if field == "model_override" else field] = value
    default_directives = get_agent(agent_key).default_directives
    user_directives = per_agent.get("directives") or ""
    merged["directives"] = f"{default_directives}\n\nAdditional directives:\n{user_directives}".strip()
    merged["execution_mode"] = per_agent.get("execution_mode", "Service-backed")
    return merged