mirror of
https://github.com/anomalyco/opencode.git
synced 2026-02-01 22:48:16 +00:00
fix: prevent duplicate AGENTS.md injection when reading instruction files
When reading an AGENTS.md file directly, InstructionPrompt.resolve() would re-inject the same file as a system-reminder, causing duplicate 'Read/Loaded' log entries. Skip instruction files that match the file being read to prevent this duplication.
This commit is contained in:
@@ -75,7 +75,9 @@ export namespace InstructionPrompt {
|
||||
for (const file of FILES) {
|
||||
const matches = await Filesystem.findUp(file, Instance.directory, Instance.worktree)
|
||||
if (matches.length > 0) {
|
||||
matches.forEach((p) => paths.add(path.resolve(p)))
|
||||
matches.forEach((p) => {
|
||||
paths.add(path.resolve(p))
|
||||
})
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -103,7 +105,9 @@ export namespace InstructionPrompt {
|
||||
}),
|
||||
).catch(() => [])
|
||||
: await resolveRelative(instruction)
|
||||
matches.forEach((p) => paths.add(path.resolve(p)))
|
||||
matches.forEach((p) => {
|
||||
paths.add(path.resolve(p))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,11 +172,17 @@ export namespace InstructionPrompt {
|
||||
const already = loaded(messages)
|
||||
const results: { filepath: string; content: string }[] = []
|
||||
|
||||
let current = path.dirname(path.resolve(filepath))
|
||||
const target = path.resolve(filepath)
|
||||
let current = path.dirname(target)
|
||||
const root = path.resolve(Instance.directory)
|
||||
|
||||
while (current.startsWith(root)) {
|
||||
const found = await find(current)
|
||||
if (found === target) {
|
||||
if (current === root) break
|
||||
current = path.dirname(current)
|
||||
continue
|
||||
}
|
||||
if (found && !system.has(found) && !already.has(found) && !isClaimed(messageID, found)) {
|
||||
claim(messageID, found)
|
||||
const content = await Bun.file(found)
|
||||
|
||||
Reference in New Issue
Block a user