ensure @opencode-ai/plugin is available in .opencode folder

This commit is contained in:
Dax Raad
2025-10-09 21:18:29 -04:00
parent 50bb201187
commit 096710a8cc

View File

@@ -15,6 +15,8 @@ import { Auth } from "../auth"
import { type ParseError as JsoncParseError, parse as parseJsonc, printParseErrorCode } from "jsonc-parser"
import { Instance } from "../project/instance"
import { LSPServer } from "../lsp/server"
import { BunProc } from "@/bun"
import { Installation } from "@/installation"
export namespace Config {
const log = Log.create({ service: "config" })
@@ -61,6 +63,7 @@ export namespace Config {
for (const dir of directories) {
await assertValid(dir).catch(() => {})
installDependencies(dir)
result.command = mergeDeep(result.command ?? {}, await loadCommand(dir))
result.agent = mergeDeep(result.agent, await loadAgent(dir))
result.agent = mergeDeep(result.agent, await loadMode(dir))
@@ -137,6 +140,17 @@ export namespace Config {
}
}
async function installDependencies(dir: string) {
await Bun.write(path.join(dir, "package.json"), "{}")
await Bun.write(path.join(dir, ".gitignore"), ["node_modules", "package.json", "bun.lock", ".gitignore"].join("\n"))
await BunProc.run(
["add", "@opencode-ai/plugin@" + (Installation.isDev() ? "latest" : Installation.VERSION), "--exact"],
{
cwd: dir,
},
)
}
const COMMAND_GLOB = new Bun.Glob("command/**/*.md")
async function loadCommand(dir: string) {
const result: Record<string, Command> = {}