fix(acp): clean read tool display content (#30569)

This commit is contained in:
Shoubhit Dash
2026-06-03 19:36:27 +05:30
committed by GitHub
parent e707e416ed
commit 8851e4de2b
5 changed files with 179 additions and 7 deletions
+15 -1
View File
@@ -98,12 +98,14 @@ export function toLocations(toolName: string, input: ToolInput): ToolCallLocatio
}
export function completedToolContent(toolName: string, state: CompletedToolState): ToolCallContent[] {
const text =
toolName.toLocaleLowerCase() === "read" ? (readDisplayText(state.metadata) ?? state.output) : state.output
const content: ToolCallContent[] = [
{
type: "content",
content: {
type: "text",
text: state.output,
text,
},
},
]
@@ -288,6 +290,18 @@ function diffContent(input: ToolInput): ToolCallContent[] {
]
}
function readDisplayText(metadata: unknown) {
if (!metadata || typeof metadata !== "object") return undefined
const display = (metadata as Record<string, unknown>).display
if (!display || typeof display !== "object") return undefined
const info = display as Record<string, unknown>
if (info.type === "file") return stringValue(info.text)
if (info.type === "directory" && Array.isArray(info.entries)) {
return info.entries.filter((item): item is string => typeof item === "string").join("\n")
}
return undefined
}
function dataUrlImage(attachment: ToolAttachment) {
const match = stringValue(attachment.url)?.match(/^data:([^;,]+)(?:;[^,]*)*;base64,(.*)$/)
const mime = match?.[1] ?? stringValue(attachment.mime)