diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index dfb86dbe2..ed1b15500 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -249,29 +249,22 @@ export namespace Config { export async function installDependencies(dir: string) { const pkg = path.join(dir, "package.json") - const targetVersion = Installation.isLocal() ? "latest" : Installation.VERSION + const targetVersion = Installation.isLocal() ? "*" : Installation.VERSION - if (!(await Bun.file(pkg).exists())) { - await Bun.write(pkg, "{}") + const json = await Bun.file(pkg) + .json() + .catch(() => ({})) + json.dependencies = { + ...json.dependencies, + "@opencode-ai/plugin": targetVersion, } + await Bun.write(pkg, JSON.stringify(json, null, 2)) + await new Promise((resolve) => setTimeout(resolve, 3000)) const gitignore = path.join(dir, ".gitignore") const hasGitIgnore = await Bun.file(gitignore).exists() if (!hasGitIgnore) await Bun.write(gitignore, ["node_modules", "package.json", "bun.lock", ".gitignore"].join("\n")) - await BunProc.run( - [ - "add", - `@opencode-ai/plugin@${targetVersion}`, - "--exact", - // TODO: get rid of this case (see: https://github.com/oven-sh/bun/issues/19936) - ...(proxied() ? ["--no-cache"] : []), - ], - { - cwd: dir, - }, - ).catch(() => {}) - // Install any additional dependencies defined in the package.json // This allows local plugins and custom tools to use external packages await BunProc.run(