diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts index 2f767c12..7e5c75e6 100644 --- a/packages/opencode/src/session/system.ts +++ b/packages/opencode/src/session/system.ts @@ -74,8 +74,22 @@ export namespace SystemPrompt { paths.add(path.join(os.homedir(), ".claude", "CLAUDE.md")) if (config.instructions) { - for (const instruction of config.instructions) { - const matches = await Filesystem.globUp(instruction, cwd, root).catch(() => []) + for (let instruction of config.instructions) { + if (instruction.startsWith("~/")) { + instruction = path.join(os.homedir(), instruction.slice(2)) + } + let matches: string[] = [] + if (path.isAbsolute(instruction)) { + matches = await Array.fromAsync( + new Bun.Glob(path.basename(instruction)).scan({ + cwd: path.dirname(instruction), + absolute: true, + onlyFiles: true, + }), + ).catch(() => []) + } else { + matches = await Filesystem.globUp(instruction, cwd, root).catch(() => []) + } matches.forEach((path) => paths.add(path)) } }