fix(config): handle $ character with {file:} pattern (#12390)

Co-authored-by: Hank Stoever <1109058+hstove@users.noreply.github.com>
This commit is contained in:
Hank Stoever
2026-02-05 18:10:35 -08:00
committed by GitHub
parent 154d0ebf53
commit 229cdafcc4
2 changed files with 20 additions and 1 deletions

View File

@@ -1267,7 +1267,7 @@ export namespace Config {
})
).trim()
// escape newlines/quotes, strip outer quotes
text = text.replace(match, JSON.stringify(fileContent).slice(1, -1))
text = text.replace(match, () => JSON.stringify(fileContent).slice(1, -1))
}
}

View File

@@ -193,6 +193,25 @@ test("handles file inclusion substitution", async () => {
})
})
test("handles file inclusion with replacement tokens", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
await Bun.write(path.join(dir, "included.md"), "const out = await Bun.$`echo hi`")
await writeConfig(dir, {
$schema: "https://opencode.ai/config.json",
theme: "{file:included.md}",
})
},
})
await Instance.provide({
directory: tmp.path,
fn: async () => {
const config = await Config.get()
expect(config.theme).toBe("const out = await Bun.$`echo hi`")
},
})
})
test("validates config schema and throws on invalid fields", async () => {
await using tmp = await tmpdir({
init: async (dir) => {