Przeglądaj źródła

feat: add createOpencodeTui() function to SDK for programmatic TUI launching (#2410)

Zack Jackson 5 miesięcy temu
rodzic
commit
e001af2709
1 zmienionych plików z 41 dodań i 0 usunięć
  1. 41 0
      packages/sdk/js/src/server.ts

+ 41 - 0
packages/sdk/js/src/server.ts

@@ -9,6 +9,15 @@ export type ServerOptions = {
   config?: Config
 }
 
+export type TuiOptions = {
+  project?: string
+  model?: string
+  session?: string
+  agent?: string
+  signal?: AbortSignal
+  config?: Config
+}
+
 export async function createOpencodeServer(options?: ServerOptions) {
   options = Object.assign(
     {
@@ -77,3 +86,35 @@ export async function createOpencodeServer(options?: ServerOptions) {
     },
   }
 }
+
+export function createOpencodeTui(options?: TuiOptions) {
+  const args = []
+
+  if (options?.project) {
+    args.push(`--project=${options.project}`)
+  }
+  if (options?.model) {
+    args.push(`--model=${options.model}`)
+  }
+  if (options?.session) {
+    args.push(`--session=${options.session}`)
+  }
+  if (options?.agent) {
+    args.push(`--agent=${options.agent}`)
+  }
+
+  const proc = spawn(`opencode`, args, {
+    signal: options?.signal,
+    stdio: 'inherit',
+    env: {
+      ...process.env,
+      OPENCODE_CONFIG_CONTENT: JSON.stringify(options?.config ?? {}),
+    },
+  })
+
+  return {
+    close() {
+      proc.kill()
+    },
+  }
+}