ChainGuard-AI / app.py
Navya-Sree's picture
Create app.py
bde743f verified
Raw
History Blame Contribute Delete
1.58 kB
import streamlit as st
from src.main import app as graph_app
st.set_page_config(page_title="SupplyPulse-AI", page_icon="🚒", layout="wide")
st.title("🚒 SupplyPulse-AI: Autonomous Supply Chain Agent")
st.caption("Stateful Multi-Agent Orchestration with LangGraph & Deterministic Guardrails")
# Interactive Sidebar Inputs
st.sidebar.header("Logistics Disruption Event")
sku = st.sidebar.selectbox("Target SKU", ["SKU-9982", "SKU-4410", "SKU-1029"])
delay = st.sidebar.slider("Expected Delay (Days)", min_value=1, max_value=14, value=3)
disruption = st.sidebar.text_input("Event Details", "Port Strike at Gulf Terminals")
if st.sidebar.button("Run Mitigation Workflow", type="primary"):
initial_state = {
"disruption_event": f"{disruption} affecting {sku}",
"impact_analysis": {},
"alternative_routes": [],
"audit_passed": False,
"critique_feedback": "",
"final_mitigation_plan": "",
"messages": []
}
st.subheader("πŸ€– Live Agent Execution Stream")
with st.spinner("Executing Hierarchical Agent Graph..."):
final_state = graph_app.invoke(initial_state)
for msg in final_state["messages"]:
st.info(msg)
st.divider()
if final_state["audit_passed"]:
st.success("### βœ… Audit Passed: Approved Action Plan")
st.markdown(f"**Final Decision:** {final_state['final_mitigation_plan']}")
else:
st.error("### ❌ Plan Flagged by Audit Guardrails")
st.warning(f"**Feedback:** {final_state['critique_feedback']}")