From b4c560b98fbd9a2811376be6db78820259b65ddd Mon Sep 17 00:00:00 2001 From: Oussama Douhou Date: Tue, 30 Dec 2025 00:43:55 +0100 Subject: [PATCH] fix: pass --dir parameter from attach command to SDK client The --dir parameter was being ignored in attach command, causing sessions to use the client's current directory instead of the specified path. Wire the parameter through TUI to SDK client. Changes: - Parse and resolve --dir argument in attach command - Pass directory through TUI app to SDKProvider - SDK client sends x-opencode-directory header to server Fixes #5380 --- packages/opencode/src/cli/cmd/tui/app.tsx | 2 +- packages/opencode/src/cli/cmd/tui/attach.ts | 6 +++++- packages/opencode/src/cli/cmd/tui/context/args.tsx | 1 + packages/opencode/src/cli/cmd/tui/context/sdk.tsx | 3 ++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx index 5214b0c1a9a..28b5331bb26 100644 --- a/packages/opencode/src/cli/cmd/tui/app.tsx +++ b/packages/opencode/src/cli/cmd/tui/app.tsx @@ -116,7 +116,7 @@ export function tui(input: { url: string; args: Args; onExit?: () => Promise - + diff --git a/packages/opencode/src/cli/cmd/tui/attach.ts b/packages/opencode/src/cli/cmd/tui/attach.ts index 5d1a4ded206..5b522d1b0ea 100644 --- a/packages/opencode/src/cli/cmd/tui/attach.ts +++ b/packages/opencode/src/cli/cmd/tui/attach.ts @@ -1,3 +1,4 @@ +import path from "path" import { cmd } from "../cmd" import { tui } from "./app" @@ -24,7 +25,10 @@ export const AttachCommand = cmd({ if (args.dir) process.chdir(args.dir) await tui({ url: args.url, - args: { sessionID: args.session }, + args: { + sessionID: args.session, + directory: args.dir ? path.resolve(args.dir) : undefined + }, }) }, }) diff --git a/packages/opencode/src/cli/cmd/tui/context/args.tsx b/packages/opencode/src/cli/cmd/tui/context/args.tsx index ffd43009a41..069625297eb 100644 --- a/packages/opencode/src/cli/cmd/tui/context/args.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/args.tsx @@ -6,6 +6,7 @@ export interface Args { prompt?: string continue?: boolean sessionID?: string + directory?: string } export const { use: useArgs, provider: ArgsProvider } = createSimpleContext({ diff --git a/packages/opencode/src/cli/cmd/tui/context/sdk.tsx b/packages/opencode/src/cli/cmd/tui/context/sdk.tsx index 3ea7c90b700..929455e07c1 100644 --- a/packages/opencode/src/cli/cmd/tui/context/sdk.tsx +++ b/packages/opencode/src/cli/cmd/tui/context/sdk.tsx @@ -5,10 +5,11 @@ import { batch, onCleanup, onMount } from "solid-js" export const { use: useSDK, provider: SDKProvider } = createSimpleContext({ name: "SDK", - init: (props: { url: string }) => { + init: (props: { url: string; directory?: string }) => { const abort = new AbortController() const sdk = createOpencodeClient({ baseUrl: props.url, + directory: props.directory, signal: abort.signal, })