diff --git a/packages/opencode/src/tool/edit.ts b/packages/opencode/src/tool/edit.ts index a8e6fc3b..7429c44b 100644 --- a/packages/opencode/src/tool/edit.ts +++ b/packages/opencode/src/tool/edit.ts @@ -7,7 +7,7 @@ import z from "zod" import * as path from "path" import { Tool } from "./tool" import { LSP } from "../lsp" -import { createTwoFilesPatch } from "diff" +import { createTwoFilesPatch, diffLines } from "diff" import { Permission } from "../permission" import DESCRIPTION from "./edit.txt" import { File } from "../file" @@ -16,6 +16,7 @@ import { FileTime } from "../file/time" import { Filesystem } from "../util/filesystem" import { Instance } from "../project/instance" import { Agent } from "../agent/agent" +import { Snapshot } from "@/snapshot" export const EditTool = Tool.define("edit", { description: DESCRIPTION, @@ -114,10 +115,23 @@ export const EditTool = Tool.define("edit", { } } + const filediff: Snapshot.FileDiff = { + file: filePath, + before: contentOld, + after: contentNew, + additions: 0, + deletions: 0, + } + for (const change of diffLines(contentOld, contentNew)) { + if (change.added) filediff.additions += change.count || 0 + if (change.removed) filediff.deletions += change.count || 0 + } + return { metadata: { diagnostics, diff, + filediff, }, title: `${path.relative(Instance.worktree, filePath)}`, output,