summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/cli/cmd/tui/app.tsx3
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/dialog-workspace-list.tsx2
-rw-r--r--packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx5
-rw-r--r--packages/opencode/src/cli/cmd/tui/context/route.tsx1
-rw-r--r--packages/opencode/src/cli/cmd/tui/routes/home.tsx1
-rw-r--r--packages/opencode/src/session/index.ts6
-rw-r--r--packages/sdk/js/src/v2/gen/sdk.gen.ts2
-rw-r--r--packages/sdk/js/src/v2/gen/types.gen.ts1
8 files changed, 18 insertions, 3 deletions
diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx
index d5aef34f6..4f7c94b1d 100644
--- a/packages/opencode/src/cli/cmd/tui/app.tsx
+++ b/packages/opencode/src/cli/cmd/tui/app.tsx
@@ -402,9 +402,12 @@ function App() {
const current = promptRef.current
// Don't require focus - if there's any text, preserve it
const currentPrompt = current?.current?.input ? current.current : undefined
+ const workspaceID =
+ route.data.type === "session" ? sync.session.get(route.data.sessionID)?.workspaceID : undefined
route.navigate({
type: "home",
initialPrompt: currentPrompt,
+ workspaceID,
})
dialog.clear()
},
diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-workspace-list.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-workspace-list.tsx
index a25b20505..b11ad6a73 100644
--- a/packages/opencode/src/cli/cmd/tui/component/dialog-workspace-list.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/dialog-workspace-list.tsx
@@ -47,7 +47,7 @@ async function openWorkspace(input: {
}
let created: Session | undefined
while (!created) {
- const result = await client.session.create({}).catch(() => undefined)
+ const result = await client.session.create({ workspaceID: input.workspaceID }).catch(() => undefined)
if (!result) {
input.toast.show({
message: "Failed to open workspace",
diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
index 77577b2a0..2d99051fb 100644
--- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
+++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx
@@ -37,6 +37,7 @@ import { DialogSkill } from "../dialog-skill"
export type PromptProps = {
sessionID?: string
+ workspaceID?: string
visible?: boolean
disabled?: boolean
onSubmit?: () => void
@@ -542,7 +543,9 @@ export function Prompt(props: PromptProps) {
let sessionID = props.sessionID
if (sessionID == null) {
- const res = await sdk.client.session.create({})
+ const res = await sdk.client.session.create({
+ workspaceID: props.workspaceID,
+ })
if (res.error) {
console.log("Creating a session failed:", res.error)
diff --git a/packages/opencode/src/cli/cmd/tui/context/route.tsx b/packages/opencode/src/cli/cmd/tui/context/route.tsx
index 358461921..e96cd2c3a 100644
--- a/packages/opencode/src/cli/cmd/tui/context/route.tsx
+++ b/packages/opencode/src/cli/cmd/tui/context/route.tsx
@@ -5,6 +5,7 @@ import type { PromptInfo } from "../component/prompt/history"
export type HomeRoute = {
type: "home"
initialPrompt?: PromptInfo
+ workspaceID?: string
}
export type SessionRoute = {
diff --git a/packages/opencode/src/cli/cmd/tui/routes/home.tsx b/packages/opencode/src/cli/cmd/tui/routes/home.tsx
index 24ea8f3b3..e76e165b2 100644
--- a/packages/opencode/src/cli/cmd/tui/routes/home.tsx
+++ b/packages/opencode/src/cli/cmd/tui/routes/home.tsx
@@ -121,6 +121,7 @@ export function Home() {
promptRef.set(r)
}}
hint={Hint}
+ workspaceID={route.workspaceID}
/>
</box>
<box height={4} minHeight={0} width="100%" maxWidth={75} alignItems="center" paddingTop={3} flexShrink={1}>
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index b11763205..5cc4d7da8 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -219,6 +219,7 @@ export namespace Session {
parentID: Identifier.schema("session").optional(),
title: z.string().optional(),
permission: Info.shape.permission,
+ workspaceID: Identifier.schema("workspace").optional(),
})
.optional(),
async (input) => {
@@ -227,6 +228,7 @@ export namespace Session {
directory: Instance.directory,
title: input?.title,
permission: input?.permission,
+ workspaceID: input?.workspaceID,
})
},
)
@@ -242,6 +244,7 @@ export namespace Session {
const title = getForkedTitle(original.title)
const session = await createNext({
directory: Instance.directory,
+ workspaceID: original.workspaceID,
title,
})
const msgs = await messages({ sessionID: input.sessionID })
@@ -292,6 +295,7 @@ export namespace Session {
id?: string
title?: string
parentID?: string
+ workspaceID?: string
directory: string
permission?: PermissionNext.Ruleset
}) {
@@ -301,7 +305,7 @@ export namespace Session {
version: Installation.VERSION,
projectID: Instance.project.id,
directory: input.directory,
- workspaceID: WorkspaceContext.workspaceID,
+ workspaceID: input.workspaceID,
parentID: input.parentID,
title: input.title ?? createDefaultTitle(!!input.parentID),
permission: input.permission,
diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts
index 22dcfec35..2bb2edcd1 100644
--- a/packages/sdk/js/src/v2/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts
@@ -1295,6 +1295,7 @@ export class Session2 extends HeyApiClient {
parentID?: string
title?: string
permission?: PermissionRuleset
+ workspaceID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1308,6 +1309,7 @@ export class Session2 extends HeyApiClient {
{ in: "body", key: "parentID" },
{ in: "body", key: "title" },
{ in: "body", key: "permission" },
+ { in: "body", key: "workspaceID" },
],
},
],
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index 71e075b39..e7ef9ae49 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -2764,6 +2764,7 @@ export type SessionCreateData = {
parentID?: string
title?: string
permission?: PermissionRuleset
+ workspaceID?: string
}
path?: never
query?: {