"""
find_agent 工厂 — 组装 Agent 实例。

每个业务 Agent 都应提供 create_xxx_agent() 工厂函数，
统一注册本 Agent 的工具 + 共享基础设施工具。
"""
from __future__ import annotations

from pathlib import Path

from supply_agent import Agent
from supply_agent.config import Settings
from agents.demand_belong_category_agent.tools import register_all_tools
from supply_infra.agent_prompt_injection import compose_agent_system_prompt

_PROMPT_PATH = Path(__file__).parent / "prompt" / "system_prompt.md"
DEMAND_BELONG_CATEGORY_AGENT_SYSTEM_PROMPT = _PROMPT_PATH.read_text(encoding="utf-8")


def create_demand_belong_category_agent(
    settings: Settings | None = None,
    *,
    model: str | None = None,
) -> Agent:
    """创建 find_agent 实例，注册所有相关工具。"""
    agent = Agent(
        settings=settings,
        name="demand_belong_category_agent",
        model=model,
        system_prompt=compose_agent_system_prompt(
            DEMAND_BELONG_CATEGORY_AGENT_SYSTEM_PROMPT,
            "demand_belong_category_agent",
        ),
        max_iterations=50,
    )

    # 本 Agent 专属工具
    register_all_tools(agent.tools)

    return agent
