"""LangGraph Workflow Demo.

Demonstrates the multi-agent trading workflow using LangGraph.
"""

import asyncio
from datetime import datetime

from openclaw.workflow.trading_workflow import TradingWorkflow
from openclaw.workflow.state import create_initial_state


async def run_workflow_demo():
    """Run the workflow demonstration."""
    print("=" * 60)
    print("OpenClaw Trading - LangGraph Workflow Demo")
    print("=" * 60)

    # 1. Create workflow
    print("\n1. Creating trading workflow...")
    workflow = TradingWorkflow(
        symbol="AAPL",
        initial_capital=1000.0,
        enable_parallel=True
    )
    print(f"   Symbol: {workflow.symbol}")
    print(f"   Initial Capital: ${workflow.initial_capital:,.2f}")
    print(f"   Parallel Execution: {workflow.enable_parallel}")

    # 2. Show workflow graph
    print("\n2. Workflow Graph:")
    print("""
    START
      |
      +---> MarketAnalysis --------+
      |                            |
      +---> SentimentAnalysis -----+
      |                            |
      +---> FundamentalAnalysis ---+
                                   |
                         BullBearDebate
                                   |
                         DecisionFusion
                                   |
                         RiskAssessment
                                   |
                                END
    """)

    # 3. Create initial state
    print("\n3. Creating initial state...")
    state = create_initial_state(
        symbol="AAPL",
        initial_capital=1000.0
    )
    print(f"   Current Step: {state['current_step']}")
    print(f"   Symbol: {state['config']['symbol']}")

    # 4. Run workflow (simulated - without actual LLM calls)
    print("\n4. Running workflow...")
    print("   Note: This demo shows the workflow structure.")
    print("   In production, this would execute all 6 agents.")

    # Show what would happen
    steps = [
        "START",
        "MarketAnalysis (parallel)",
        "SentimentAnalysis (parallel)",
        "FundamentalAnalysis (parallel)",
        "BullBearDebate",
        "DecisionFusion",
        "RiskAssessment",
        "END"
    ]

    for i, step in enumerate(steps, 1):
        print(f"   Step {i}: {step}")

    # 5. Expected output
    print("\n5. Expected Workflow Output:")
    print("   {")
    print('     "action": "buy",  // or "sell", "hold"')
    print('     "confidence": 0.75,')
    print('     "position_size": 0.15,')
    print('     "approved": true,')
    print('     "risk_level": "medium"')
    print("   }")

    print("\n" + "=" * 60)
    print("Workflow demo complete!")
    print("=" * 60)


def main():
    """Main entry point."""
    asyncio.run(run_workflow_demo())


if __name__ == "__main__":
    main()
