scope filetimes to session

This commit is contained in:
Dax Raad
2025-06-02 20:24:32 -04:00
parent 786db364d2
commit 54b99cd88a
4 changed files with 24 additions and 23 deletions

View File

@@ -269,7 +269,7 @@ export const PatchTool = Tool.define({
id: "opencode.patch",
description: DESCRIPTION,
parameters: PatchParams,
execute: async (params) => {
execute: async (params, ctx) => {
if (!params.patchText) {
throw new Error("patchText is required")
}
@@ -282,7 +282,7 @@ export const PatchTool = Tool.define({
absPath = path.resolve(process.cwd(), absPath)
}
if (!FileTimes.get(absPath)) {
if (!FileTimes.get(ctx.sessionID, absPath)) {
throw new Error(
`you must read the file ${filePath} before patching it. Use the FileRead tool first`,
)
@@ -294,7 +294,7 @@ export const PatchTool = Tool.define({
throw new Error(`path is a directory, not a file: ${absPath}`)
}
const lastRead = FileTimes.get(absPath)
const lastRead = FileTimes.get(ctx.sessionID, absPath)
if (lastRead && stats.mtime > lastRead) {
throw new Error(
`file ${absPath} has been modified since it was last read (mod time: ${stats.mtime.toISOString()}, last read: ${lastRead.toISOString()})`,
@@ -400,9 +400,7 @@ export const PatchTool = Tool.define({
totalAdditions += additions
totalRemovals += removals
// Record file operations
FileTimes.write(absPath)
FileTimes.read(absPath)
FileTimes.read(ctx.sessionID, absPath)
}
const result = `Patch applied successfully. ${changedFiles.length} files changed, ${totalAdditions} additions, ${totalRemovals} removals`