diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index 8929fdbdc4..db55fcc7b8 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1710,8 +1710,8 @@ function Read(props: ToolProps) { if (props.part.state.status !== "completed") return [] if (props.part.state.time.compacted) return [] const value = props.metadata.loaded - if (!value) return [] - return Array.isArray(value) ? value : [value] + if (!value || !Array.isArray(value)) return [] + return value.filter((p): p is string => typeof p === "string") }) return ( <> diff --git a/packages/opencode/src/session/instruction.ts b/packages/opencode/src/session/instruction.ts index 7ea65e86c2..d413e80f69 100644 --- a/packages/opencode/src/session/instruction.ts +++ b/packages/opencode/src/session/instruction.ts @@ -120,11 +120,9 @@ export namespace InstructionPrompt { if (part.type === "tool" && part.tool === "read" && part.state.status === "completed") { if (part.state.time.compacted) continue const loaded = part.state.metadata?.loaded - if (!loaded) continue - if (Array.isArray(loaded)) { - loaded.forEach((p) => paths.add(p)) - } else { - paths.add(loaded) + if (!loaded || !Array.isArray(loaded)) continue + for (const p of loaded) { + if (typeof p === "string") paths.add(p) } } }