Просмотр исходного кода

feat(plugin): expose server URL to plugins (#6373)

Eduardo Santos de Brito 1 месяц назад
Родитель
Сommit
4657fa823f

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

@@ -24,6 +24,7 @@ export namespace Plugin {
       project: Instance.project,
       worktree: Instance.worktree,
       directory: Instance.directory,
+      serverUrl: Server.url(),
       $: Bun.$,
     }
     const plugins = [...(config.plugin ?? [])]

+ 8 - 0
packages/opencode/src/server/server.ts

@@ -57,6 +57,12 @@ globalThis.AI_SDK_LOG_WARNINGS = false
 export namespace Server {
   const log = Log.create({ service: "server" })
 
+  let _url: URL | undefined
+
+  export function url(): URL {
+    return _url ?? new URL("http://localhost:4096")
+  }
+
   export const Event = {
     Connected: BusEvent.define("server.connected", z.object({})),
     Disposed: BusEvent.define("global.disposed", z.object({})),
@@ -2666,6 +2672,8 @@ export namespace Server {
     const server = opts.port === 0 ? (tryServe(4096) ?? tryServe(0)) : tryServe(opts.port)
     if (!server) throw new Error(`Failed to start server on port ${opts.port}`)
 
+    _url = server.url
+
     const shouldPublishMDNS =
       opts.mdns &&
       server.port &&

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

@@ -28,6 +28,7 @@ export type PluginInput = {
   project: Project
   directory: string
   worktree: string
+  serverUrl: URL
   $: BunShell
 }