Przeglądaj źródła

add plugin hook for config

Dax Raad 6 miesięcy temu
rodzic
commit
4518f96e3d

+ 1 - 1
packages/opencode/src/cli/bootstrap.ts

@@ -8,9 +8,9 @@ import { Snapshot } from "../snapshot"
 
 export async function bootstrap<T>(input: App.Input, cb: (app: App.Info) => Promise<T>) {
   return App.provide(input, async (app) => {
+    await Plugin.init()
     Share.init()
     Format.init()
-    Plugin.init()
     ConfigHooks.init()
     LSP.init()
     Snapshot.init()

+ 6 - 1
packages/opencode/src/plugin/index.ts

@@ -68,7 +68,12 @@ export namespace Plugin {
     return state().then((x) => x.hooks)
   }
 
-  export function init() {
+  export async function init() {
+    const hooks = await state().then((x) => x.hooks)
+    const config = await Config.get()
+    for (const hook of hooks) {
+      hook.config?.(config)
+    }
     Bus.subscribeAll(async (input) => {
       const hooks = await state().then((x) => x.hooks)
       for (const hook of hooks) {

+ 2 - 0
packages/plugin/src/index.ts

@@ -8,6 +8,7 @@ import type {
   UserMessage,
   Part,
   Auth,
+  Config,
 } from "@opencode-ai/sdk"
 import type { BunShell } from "./shell"
 
@@ -20,6 +21,7 @@ export type Plugin = (input: PluginInput) => Promise<Hooks>
 
 export interface Hooks {
   event?: (input: { event: Event }) => Promise<void>
+  config?: (input: Config) => Promise<void>
   auth?: {
     provider: string
     loader?: (auth: () => Promise<Auth>, provider: Provider) => Promise<Record<string, any>>