@@ -21,6 +21,7 @@ import { Auth } from "../auth"
2121import { Flag } from "../flag/flag"
2222import { Command } from "../command"
2323import { Global } from "../global"
24+ import { WorkspaceContext } from "../control-plane/workspace-context"
2425import { ProjectRoutes } from "./routes/project"
2526import { SessionRoutes } from "./routes/session"
2627import { PtyRoutes } from "./routes/pty"
@@ -194,6 +195,7 @@ export namespace Server {
194195 )
195196 . use ( async ( c , next ) => {
196197 if ( c . req . path === "/log" ) return next ( )
198+ const workspaceID = c . req . query ( "workspace" ) || c . req . header ( "x-opencode-workspace" )
197199 const raw = c . req . query ( "directory" ) || c . req . header ( "x-opencode-directory" ) || process . cwd ( )
198200 const directory = ( ( ) => {
199201 try {
@@ -202,11 +204,17 @@ export namespace Server {
202204 return raw
203205 }
204206 } ) ( )
205- return Instance . provide ( {
206- directory ,
207- init : InstanceBootstrap ,
207+
208+ return WorkspaceContext . provide ( {
209+ workspaceID ,
208210 async fn ( ) {
209- return next ( )
211+ return Instance . provide ( {
212+ directory,
213+ init : InstanceBootstrap ,
214+ async fn ( ) {
215+ return next ( )
216+ } ,
217+ } )
210218 } ,
211219 } )
212220 } )
@@ -223,7 +231,15 @@ export namespace Server {
223231 } ,
224232 } ) ,
225233 )
226- . use ( validator ( "query" , z . object ( { directory : z . string ( ) . optional ( ) } ) ) )
234+ . use (
235+ validator (
236+ "query" ,
237+ z . object ( {
238+ directory : z . string ( ) . optional ( ) ,
239+ workspace : z . string ( ) . optional ( ) ,
240+ } ) ,
241+ ) ,
242+ )
227243 . route ( "/project" , ProjectRoutes ( ) )
228244 . route ( "/pty" , PtyRoutes ( ) )
229245 . route ( "/config" , ConfigRoutes ( ) )
0 commit comments