autostream-agent / demo.py
kaori02's picture
fix: audit fixes per assignment spec
897d4ed verified
"""Scripted demo — runs a full conversation automatically.
Useful for recording the required demo video.
Run: python demo.py
"""
from __future__ import annotations
import time
from dotenv import load_dotenv
load_dotenv()
from langchain_core.messages import HumanMessage, AIMessage
from agent.graph import get_app
from agent.state import AgentState
SCRIPT = [
"Hi there!",
"Tell me about your pricing plans.",
"What's included in the Pro plan specifically?",
"That sounds great — I want to sign up for the Pro plan for my YouTube channel.",
"My name is Alex Johnson",
"alex.johnson@gmail.com",
"YouTube",
]
def _initial_state() -> AgentState:
return {
"messages": [],
"intent": "unknown",
"collecting_lead": False,
"lead_name": None,
"lead_email": None,
"lead_platform": None,
"lead_captured": False,
"rag_context": "",
}
def run_demo() -> None:
print("\n" + "═" * 56)
print(" AutoStream Agent — Scripted Demo")
print("═" * 56 + "\n")
app = get_app()
state = _initial_state()
for user_msg in SCRIPT:
print(f"You: {user_msg}")
time.sleep(0.3)
invoke_state = {
**state,
"messages": list(state["messages"]) + [HumanMessage(content=user_msg)],
}
state = app.invoke(invoke_state)
for msg in reversed(state["messages"]):
if isinstance(msg, AIMessage):
print(f"Agent: {msg.content}\n")
break
time.sleep(0.3)
if state.get("lead_captured"):
print("═" * 56)
print(" Demo complete — lead captured successfully!")
print("═" * 56)
break
if __name__ == "__main__":
run_demo()