| import type { Part as PartType, ToolPart } from "@opencode-ai/sdk/v2" | |
| function deletionOnly(part: ToolPart) { | |
| if (!("metadata" in part.state)) return false | |
| const metadata = part.state.metadata | |
| if (!metadata) return false | |
| const files = metadata.files | |
| if (Array.isArray(files) && files.length > 0) { | |
| return files.every((file) => !!file && typeof file === "object" && "type" in file && file.type === "delete") | |
| } | |
| const filediff = metadata.filediff | |
| if (!filediff || typeof filediff !== "object") return false | |
| if (!("additions" in filediff) || !("deletions" in filediff)) return false | |
| return filediff.additions === 0 && typeof filediff.deletions === "number" && filediff.deletions > 0 | |
| } | |
| export function partDefaultOpen(part: PartType, shell = false, edit = false) { | |
| if (part.type !== "tool") return | |
| if (part.tool === "bash" || part.tool === "shell") return shell | |
| if (part.tool === "edit" || part.tool === "write" || part.tool === "patch" || part.tool === "apply_patch") { | |
| if (!edit) return false | |
| return !deletionOnly(part) | |
| } | |
| } | |