summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-08-03 14:10:21 -0500
committerGitHub <[email protected]>2025-08-03 15:10:21 -0400
commitedda26ab33903099e66d1ecde7247b5a0d317e8d (patch)
tree761315ccfdaa72c3a5969181ef511cb8e09a65c4
parentea4e1913c00597c548845cee2ab3195676ebada9 (diff)
downloadopencode-edda26ab33903099e66d1ecde7247b5a0d317e8d.tar.gz
opencode-edda26ab33903099e66d1ecde7247b5a0d317e8d.zip
tweak: filter out duplicate instructions (#1567)
-rw-r--r--package.json2
-rw-r--r--packages/opencode/src/session/system.ts31
2 files changed, 14 insertions, 19 deletions
diff --git a/package.json b/package.json
index 0c89b4f1f..7054e2871 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"type": "module",
"packageManager": "[email protected]",
"scripts": {
- "dev": "bun run packages/opencode/src/index.ts",
+ "dev": "bun run --conditions=development packages/opencode/src/index.ts",
"typecheck": "bun run --filter='*' typecheck",
"stainless": "./scripts/stainless",
"postinstall": "./script/hooks"
diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts
index 0cf2685bb..a9b167be4 100644
--- a/packages/opencode/src/session/system.ts
+++ b/packages/opencode/src/session/system.ts
@@ -60,33 +60,28 @@ export namespace SystemPrompt {
export async function custom() {
const { cwd, root } = App.info().path
const config = await Config.get()
- const found = []
+ const paths = new Set<string>()
+
for (const item of CUSTOM_FILES) {
const matches = await Filesystem.findUp(item, cwd, root)
- found.push(...matches.map((x) => Bun.file(x).text()))
+ matches.forEach((path) => paths.add(path))
}
- found.push(
- Bun.file(path.join(Global.Path.config, "AGENTS.md"))
- .text()
- .catch(() => ""),
- )
- found.push(
- Bun.file(path.join(os.homedir(), ".claude", "CLAUDE.md"))
- .text()
- .catch(() => ""),
- )
+
+ paths.add(path.join(Global.Path.config, "AGENTS.md"))
+ paths.add(path.join(os.homedir(), ".claude", "CLAUDE.md"))
if (config.instructions) {
for (const instruction of config.instructions) {
- try {
- const matches = await Filesystem.globUp(instruction, cwd, root)
- found.push(...matches.map((x) => Bun.file(x).text()))
- } catch {
- continue // Skip invalid glob patterns
- }
+ const matches = await Filesystem.globUp(instruction, cwd, root).catch(() => [])
+ matches.forEach((path) => paths.add(path))
}
}
+ const found = Array.from(paths).map((p) =>
+ Bun.file(p)
+ .text()
+ .catch(() => ""),
+ )
return Promise.all(found).then((result) => result.filter(Boolean))
}