فهرست منبع

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

Dax Raad 4 ماه پیش
والد
کامیت
096710a8cc
1فایلهای تغییر یافته به همراه14 افزوده شده و 0 حذف شده
  1. 14 0
      packages/opencode/src/config/config.ts

+ 14 - 0
packages/opencode/src/config/config.ts

@@ -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> = {}