fix: clean up orchestrator chat UX
- Tool call names now show human-readable labels ("Dispatched agent"
instead of "spawn_agent"), deduped if called multiple times
- Model label only shown when a real value is returned; "unknown"
and null are suppressed; model names shortened (GLM-5, Gemini)
Made-with: Cursor
This commit is contained in:
@@ -37,6 +37,29 @@ interface OrchestratorChatProps {
|
||||
placeholder?: string;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Friendly labels for tool call names
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
const TOOL_LABELS: Record<string, string> = {
|
||||
spawn_agent: "Dispatched agent",
|
||||
get_job_status: "Checked job",
|
||||
list_repos: "Listed repos",
|
||||
list_all_issues: "Checked issues",
|
||||
list_all_apps: "Checked deployments",
|
||||
get_app_status: "Checked app status",
|
||||
read_repo_file: "Read file",
|
||||
deploy_app: "Triggered deploy",
|
||||
gitea_create_issue: "Created issue",
|
||||
gitea_list_issues: "Listed issues",
|
||||
gitea_close_issue: "Closed issue",
|
||||
gitea_comment_issue: "Added comment",
|
||||
};
|
||||
|
||||
function friendlyToolName(raw: string): string {
|
||||
return TOOL_LABELS[raw] ?? raw.replace(/_/g, " ");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Suggestion chips shown before the first message
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -88,13 +111,14 @@ function MessageBubble({ msg }: { msg: Message }) {
|
||||
<div className="flex flex-wrap items-center gap-1.5 px-1">
|
||||
{msg.toolCalls && msg.toolCalls.length > 0 && (
|
||||
<div className="flex flex-wrap gap-1">
|
||||
{msg.toolCalls.map((t, i) => (
|
||||
{/* Deduplicate tool calls before rendering */}
|
||||
{[...new Set(msg.toolCalls)].map((t, i) => (
|
||||
<span
|
||||
key={i}
|
||||
className="inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-muted border border-border text-muted-foreground font-mono"
|
||||
className="inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded bg-muted border border-border text-muted-foreground"
|
||||
>
|
||||
<Wrench className="h-2.5 w-2.5" />
|
||||
{t}
|
||||
<Wrench className="h-2.5 w-2.5 shrink-0" />
|
||||
{friendlyToolName(t)}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
@@ -109,8 +133,10 @@ function MessageBubble({ msg }: { msg: Message }) {
|
||||
{showReasoning ? <ChevronUp className="h-2.5 w-2.5" /> : <ChevronDown className="h-2.5 w-2.5" />}
|
||||
</button>
|
||||
)}
|
||||
{msg.model && (
|
||||
<span className="text-[10px] text-muted-foreground/60 ml-auto">{msg.model}</span>
|
||||
{msg.model && msg.model !== "unknown" && (
|
||||
<span className="text-[10px] text-muted-foreground/60 ml-auto">
|
||||
{msg.model.includes("glm") ? "GLM-5" : msg.model.includes("gemini") ? "Gemini" : msg.model}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user