#!/usr/bin/env python3
"""
Generated test file for Conversation ID Agent Test
Framework: langgraph
Execution mode: async
Streaming: no"""

import os
import sentry_sdk
import asyncio

from langgraph.prebuilt import create_react_agent
from langchain_anthropic import ChatAnthropic
from langchain_core.messages import HumanMessage, SystemMessage


sentry_sdk.init(
    dsn=os.environ.get("SENTRY_DSN"),
    traces_sample_rate=1.0,
    send_default_pii=True,
    stream_gen_ai_spans=True,
)

# Initialize ChatAnthropic for LangGraph
llm = ChatAnthropic(
    model="claude-haiku-4-5",
    api_key=os.environ.get("ANTHROPIC_API_KEY"),
)

tools = []

# Create react agent
agent = create_react_agent(llm, tools=tools, name="helpful_assistant")

async def main():
    # Turn 1: Run agent
    sentry_sdk.ai.set_conversation_id("conv-a")
    messages = [
        HumanMessage(content="What is the capital of France?"),
    ]

    result = await agent.ainvoke({"messages": messages})

    # Extract the AI's response from the result
    response_text = result["messages"][-1].content

    # Print response
    print(f"Turn 1 Response: {response_text}")
    print()  # Blank line between turns
    # Turn 2: Run agent
    sentry_sdk.ai.set_conversation_id("conv-b")
    messages = [
        HumanMessage(content="What is 2 + 2?"),
    ]

    result = await agent.ainvoke({"messages": messages})

    # Extract the AI's response from the result
    response_text = result["messages"][-1].content

    # Print response
    print(f"Turn 2 Response: {response_text}")
    print()  # Blank line between turns
    # Turn 3: Run agent
    sentry_sdk.ai.set_conversation_id("conv-a")
    messages = [
        HumanMessage(content="What about Germany?"),
    ]

    result = await agent.ainvoke({"messages": messages})

    # Extract the AI's response from the result
    response_text = result["messages"][-1].content

    # Print response
    print(f"Turn 3 Response: {response_text}")
    print()  # Blank line between turns
    # Turn 4: Run agent
    sentry_sdk.ai.set_conversation_id("conv-b")
    messages = [
        HumanMessage(content="What about 3 + 3?"),
    ]

    result = await agent.ainvoke({"messages": messages})

    # Extract the AI's response from the result
    response_text = result["messages"][-1].content

    # Print response
    print(f"Turn 4 Response: {response_text}")

if __name__ == "__main__":
    with sentry_sdk.start_transaction(op="test", name="Conversation ID Agent Test"):
        asyncio.run(main())
    sentry_sdk.flush(timeout=5)
