from typing import TypedDict
from langgraph.graph import StateGraph, END
from reminix_langgraph import wrap_agent
from reminix_runtime import serve
class ResearchState(TypedDict):
query: str
search_results: list
analysis: str
summary: str
def search(state):
results = web_search(state["query"])
return {"search_results": results}
def analyze(state):
analysis = analyze_results(state["search_results"])
return {"analysis": analysis}
def summarize(state):
summary = create_summary(state["analysis"])
return {"summary": summary}
graph = StateGraph(ResearchState)
graph.add_node("search", search)
graph.add_node("analyze", analyze)
graph.add_node("summarize", summarize)
graph.add_edge("search", "analyze")
graph.add_edge("analyze", "summarize")
graph.add_edge("summarize", END)
graph.set_entry_point("search")
workflow = graph.compile()
agent = wrap_agent(workflow, name="research-agent")
if __name__ == "__main__":
serve(agents=[agent], port=8080)