From d4281f1d9cd810ede69518f6875817e6e12537fb Mon Sep 17 00:00:00 2001 From: Shantur Rathore Date: Sun, 7 Dec 2025 20:15:39 +0000 Subject: [PATCH] feat: surface read bounds --- packages/ui/src/components/tool-call.tsx | 6 +++--- .../components/tool-call/renderers/read.tsx | 21 +++++++++++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/ui/src/components/tool-call.tsx b/packages/ui/src/components/tool-call.tsx index 35bc02db..8d352050 100644 --- a/packages/ui/src/components/tool-call.tsx +++ b/packages/ui/src/components/tool-call.tsx @@ -702,6 +702,9 @@ export default function ToolCall(props: ToolCallProps) { if (!state) return getRendererAction() if (state.status === "pending") return getRendererAction() + const customTitle = renderer().getTitle?.(rendererContext) + if (customTitle) return customTitle + if (isToolStateRunning(state) && state.title) { return state.title } @@ -710,9 +713,6 @@ export default function ToolCall(props: ToolCallProps) { return state.title } - const customTitle = renderer().getTitle?.(rendererContext) - if (customTitle) return customTitle - return getToolName(toolName()) } diff --git a/packages/ui/src/components/tool-call/renderers/read.tsx b/packages/ui/src/components/tool-call/renderers/read.tsx index 1c0913e9..fc75f7a5 100644 --- a/packages/ui/src/components/tool-call/renderers/read.tsx +++ b/packages/ui/src/components/tool-call/renderers/read.tsx @@ -9,8 +9,25 @@ export const readRenderer: ToolRenderer = { if (!state) return undefined const { input } = readToolStatePayload(state) const filePath = typeof input.filePath === "string" ? input.filePath : "" - if (!filePath) return getToolName("read") - return `${getToolName("read")} ${getRelativePath(filePath)}` + const offset = typeof input.offset === "number" ? input.offset : undefined + const limit = typeof input.limit === "number" ? input.limit : undefined + const relativePath = filePath ? getRelativePath(filePath) : "" + const detailParts: string[] = [] + + if (typeof offset === "number") { + detailParts.push(`Offset: ${offset}`) + } + + if (typeof limit === "number") { + detailParts.push(`Limit: ${limit}`) + } + + const baseTitle = relativePath ? `${getToolName("read")} ${relativePath}` : getToolName("read") + if (!detailParts.length) { + return baseTitle + } + + return `${baseTitle} · ${detailParts.join(" · ")}` }, renderBody({ toolState, renderMarkdown }) { const state = toolState()