"""演示 Agent 调用工具前后的安全契约；不启动外部 MCP 服务。"""

from pathlib import Path
import argparse
import json
import sys

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "src"))

from learning_labs.agent_contract import TOOL_NAME, call_tool, tool_catalog


def main() -> None:
    parser = argparse.ArgumentParser(description="Agent / MCP 风格工具契约实验")
    parser.add_argument("--query", default="RAG 来源 评测", help="传给本地白名单工具的查询")
    args = parser.parse_args()
    transcript = {
        "tools_list": tool_catalog(),
        "tools_call": {"name": TOOL_NAME, "arguments": {"query": args.query}},
        "tool_result": call_tool(TOOL_NAME, {"query": args.query}),
        "lesson": "工具输出是不可信输入；外部写操作必须另行取得用户确认。",
    }
    target = ROOT / "artifacts" / "agent" / "tool_contract.json"
    target.parent.mkdir(parents=True, exist_ok=True)
    target.write_text(json.dumps(transcript, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(transcript, ensure_ascii=False, indent=2))


if __name__ == "__main__":
    main()
