Problem
oclite TUI hangs after bootstrap - no prompt appears.
Symptom: Process hangs after snapshot cleanup log, TUI never renders.
Root Cause:useSDKEvents.ts creates SDK client connecting to http://localhost:4096, but no server is started in entry.ts.
Blocking code:useSDKEvents.ts:23
constevents=awaitsdk.event.subscribe()// Hangs forever - no server
Solution
Use in-process SDK connection (like worker.ts does) instead of HTTP.
Modify useSDKEvents.ts:
import{Server}from"@/server/server"// In-process fetch functionconstfetchFn=async(input: RequestInfo|URL,init?: RequestInit)=>{constrequest=newRequest(input,init)returnServer.App().fetch(request)}constsdk=createOpencodeClient({baseUrl: "http://opencode.internal",fetch: fetchFn,signal: abortController.signal,})Files
packages/opencode/src/cli/ink/hooks/useSDKEvents.ts (lines 14-16, 23)
Reference
packages/opencode/src/cli/cmd/tui/worker.ts - shows correct in-process pattern
Acceptance Criteria
Problem
oclite TUI hangs after bootstrap - no prompt appears.
Symptom: Process hangs after
snapshot cleanuplog, TUI never renders.Root Cause:
useSDKEvents.tscreates SDK client connecting tohttp://localhost:4096, but no server is started inentry.ts.Blocking code:
useSDKEvents.ts:23Solution
Use in-process SDK connection (like worker.ts does) instead of HTTP.
Modify
useSDKEvents.ts:Files
packages/opencode/src/cli/ink/hooks/useSDKEvents.ts(lines 14-16, 23)Reference
packages/opencode/src/cli/cmd/tui/worker.ts- shows correct in-process patternAcceptance Criteria