diff --git a/src/agents/tool-display-common.ts b/src/agents/tool-display-common.ts index 28fcb00451..e629b9910b 100644 --- a/src/agents/tool-display-common.ts +++ b/src/agents/tool-display-common.ts @@ -220,6 +220,26 @@ export function resolveWriteDetail(toolKey: string, args: unknown): string | und return `${destinationPrefix} ${path}`; } +export function resolveToolSpecificDetail(key: string, args: unknown): string | undefined { + if (key === "exec") { + return resolveExecDetail(args); + } + if (key === "read") { + return resolveReadDetail(args); + } + if (key === "write" || key === "edit" || key === "attach") { + return resolveWriteDetail(key, args); + } + if (key === "web_search") { + return resolveWebSearchDetail(args); + } + if (key === "web_fetch") { + return resolveWebFetchDetail(args); + } + + return undefined; +} + export function resolveWebSearchDetail(args: unknown): string | undefined { const record = asRecord(args); if (!record) { diff --git a/src/agents/tool-display.ts b/src/agents/tool-display.ts index 4e67a4fb6d..759281d39a 100644 --- a/src/agents/tool-display.ts +++ b/src/agents/tool-display.ts @@ -7,11 +7,7 @@ import { normalizeVerb, resolveActionSpec, resolveDetailFromKeys, - resolveExecDetail, - resolveReadDetail, - resolveWebFetchDetail, - resolveWebSearchDetail, - resolveWriteDetail, + resolveToolSpecificDetail, type ToolDisplaySpec as ToolDisplaySpecBase, } from "./tool-display-common.js"; import TOOL_DISPLAY_JSON from "./tool-display.json" with { type: "json" }; @@ -83,24 +79,7 @@ export function resolveToolDisplay(params: { : key.replace(/_/g, " ").replace(/\./g, " "); const verb = normalizeVerb(actionSpec?.label ?? action ?? fallbackVerb); - let detail: string | undefined; - if (key === "exec") { - detail = resolveExecDetail(params.args); - } - if (!detail && key === "read") { - detail = resolveReadDetail(params.args); - } - if (!detail && (key === "write" || key === "edit" || key === "attach")) { - detail = resolveWriteDetail(key, params.args); - } - - if (!detail && key === "web_search") { - detail = resolveWebSearchDetail(params.args); - } - - if (!detail && key === "web_fetch") { - detail = resolveWebFetchDetail(params.args); - } + let detail: string | undefined = resolveToolSpecificDetail(key, params.args); const detailKeys = actionSpec?.detailKeys ?? spec?.detailKeys ?? FALLBACK.detailKeys ?? []; if (!detail && detailKeys.length > 0) { diff --git a/ui/src/ui/tool-display.ts b/ui/src/ui/tool-display.ts index 6d05026cb6..a8fb8fbd48 100644 --- a/ui/src/ui/tool-display.ts +++ b/ui/src/ui/tool-display.ts @@ -1,17 +1,13 @@ +import type { IconName } from "./icons.ts"; import { defaultTitle, normalizeToolName, normalizeVerb, resolveActionSpec, resolveDetailFromKeys, - resolveExecDetail, - resolveReadDetail, - resolveWebFetchDetail, - resolveWebSearchDetail, - resolveWriteDetail, + resolveToolSpecificDetail, type ToolDisplaySpec as ToolDisplaySpecBase, } from "../../../src/agents/tool-display-common.js"; -import type { IconName } from "./icons.ts"; import rawConfig from "./tool-display.json" with { type: "json" }; type ToolDisplaySpec = ToolDisplaySpecBase & { @@ -83,24 +79,7 @@ export function resolveToolDisplay(params: { : key.replace(/_/g, " ").replace(/\./g, " "); const verb = normalizeVerb(actionSpec?.label ?? action ?? fallbackVerb); - let detail: string | undefined; - if (key === "exec") { - detail = resolveExecDetail(params.args); - } - if (!detail && key === "read") { - detail = resolveReadDetail(params.args); - } - if (!detail && (key === "write" || key === "edit" || key === "attach")) { - detail = resolveWriteDetail(key, params.args); - } - - if (!detail && key === "web_search") { - detail = resolveWebSearchDetail(params.args); - } - - if (!detail && key === "web_fetch") { - detail = resolveWebFetchDetail(params.args); - } + let detail: string | undefined = resolveToolSpecificDetail(key, params.args); const detailKeys = actionSpec?.detailKeys ?? spec?.detailKeys ?? FALLBACK.detailKeys ?? []; if (!detail && detailKeys.length > 0) {