fix(app): task agent title

This commit is contained in:
Adam
2026-03-07 06:03:30 -06:00
parent 06f60af1e9
commit 7dd6369952
18 changed files with 33 additions and 6 deletions

View File

@@ -19,7 +19,7 @@ import {
import { useData } from "../context"
import { useFileComponent } from "../context/file"
import { useDialog } from "../context/dialog"
import { useI18n } from "../context/i18n"
import { type UiI18n, useI18n } from "../context/i18n"
import { GenericTool, ToolCall } from "./basic-tool"
import { Accordion } from "./accordion"
import { StickyAccordionHeader } from "./sticky-accordion-header"
@@ -123,6 +123,11 @@ export type ToolInfo = {
subtitle?: string
}
function agentTitle(i18n: UiI18n, type?: string) {
if (!type) return i18n.t("ui.tool.agent.default")
return i18n.t("ui.tool.agent", { type })
}
export function getToolInfo(tool: string, input: any = {}): ToolInfo {
const i18n = useI18n()
switch (tool) {
@@ -168,12 +173,17 @@ export function getToolInfo(tool: string, input: any = {}): ToolInfo {
title: i18n.t("ui.tool.codesearch"),
subtitle: input.query,
}
case "task":
case "task": {
const type =
typeof input.subagent_type === "string" && input.subagent_type
? input.subagent_type[0]!.toUpperCase() + input.subagent_type.slice(1)
: undefined
return {
icon: "task",
title: i18n.t("ui.tool.agent"),
title: agentTitle(i18n, type),
subtitle: input.description,
}
}
case "bash":
return {
icon: "console",
@@ -1475,11 +1485,12 @@ ToolRegistry.register({
const data = useData()
const i18n = useI18n()
const childSessionId = () => props.metadata.sessionId as string | undefined
const agentType = createMemo(() => {
const type = createMemo(() => {
const raw = props.input.subagent_type
if (typeof raw !== "string" || !raw) return undefined
return raw[0]!.toUpperCase() + raw.slice(1)
})
const title = createMemo(() => agentTitle(i18n, type()))
const description = createMemo(() => {
const value = props.input.description
if (typeof value === "string") return value
@@ -1527,9 +1538,8 @@ ToolRegistry.register({
<div data-slot="basic-tool-tool-info-structured">
<div data-slot="basic-tool-tool-info-main">
<span data-slot="basic-tool-tool-title">
<TextShimmer text={i18n.t("ui.tool.agent")} active={running()} />
<TextShimmer text={title()} active={running()} />
</span>
<Show when={agentType()}>{(type) => <ToolText text={type()} animate={reveal()} />}</Show>
<Show when={description()}>
<Switch>
<Match when={href()}>