Agent Steering Panel
실행 중인 봇에게 방향을 지시하는 스티어링 패널입니다.
@horon-ai/react
에이전트
Preview
Triage overnight email
Chief of staff · Step 2 of 5
- Read 41 new emails1.4s
- Sort the 6 that need you4.5s
- Draft replies for the investor thread
- Hold the board deck for your yes
- Send the morning brief
Queued for the next step1
next step⌘interrupt now
Usage
import { AgentSteeringPanel, type SteeringNote, type SteeringStep } from "@horon-ai/react";
import { useState } from "react";
const initialSteps: SteeringStep[] = [
{ id: "read", label: "Read 41 new emails", status: "done", time: "1.4s" },
{ id: "sort", label: "Sort the 6 that need you", status: "active", time: "4.5s" },
{ id: "draft", label: "Draft replies for the investor thread", status: "todo" },
{ id: "hold", label: "Hold the board deck for your yes", status: "todo" },
{ id: "send", label: "Send the morning brief", status: "todo" },
];
export default function AgentSteeringPanelDemo() {
const [paused, setPaused] = useState(false);
const [notes, setNotes] = useState<SteeringNote[]>([
{ id: "n1", text: "Keep replies under 120 words, the investors read on phones" },
]);
return (
<>
<AgentSteeringPanel
title="Triage overnight email"
subtitle="Chief of staff · Step 2 of 5"
status={paused ? "Paused · 2m 10s" : "Running · 2m 10s"}
paused={paused}
onPausedChange={setPaused}
steps={initialSteps}
notes={notes}
onApplyNow={(id) => setNotes((list) => list.map((note) => (note.id === id ? { ...note, applied: true } : note)))}
onRemoveNote={(id) => setNotes((list) => list.filter((note) => note.id !== id))}
onSteer={(text, interrupt) =>
setNotes((list) => [...list, { id: `n${list.length + 1}-${Date.now()}`, text, applied: interrupt }])
}
/>
</>
);
}