11/** @jsxImportSource @opentui /solid */
22import { createEffect , createMemo , createSignal , on , onCleanup , untrack } from "solid-js"
3- import type { TuiApi , TuiPluginInput } from "@opencode-ai/plugin/tui"
3+ import type { TuiSlotPlugin } from "@opencode-ai/plugin/tui"
44import { Logger } from "../../lib/logger"
55import {
66 createPlaceholderContextSnapshot ,
@@ -10,7 +10,7 @@ import {
1010} from "../data/context"
1111import { getPalette , toneColor , type DcpColor , type DcpPalette } from "../shared/theme"
1212import { LABEL , type DcpRouteNames } from "../shared/names"
13- import type { DcpActiveBlockInfo , DcpMessageStatus , DcpTuiClient } from "../shared/types"
13+ import type { DcpActiveBlockInfo , DcpMessageStatus , DcpTuiApi } from "../shared/types"
1414
1515const SINGLE_BORDER = { type : "single" } as any
1616const DIM_TEXT = { dim : true } as any
@@ -114,10 +114,7 @@ const SidebarContextBar = (props: {
114114}
115115
116116const SidebarContext = ( props : {
117- api : TuiApi
118- client : DcpTuiClient
119- event : TuiPluginInput [ "event" ]
120- renderer : TuiPluginInput [ "renderer" ]
117+ api : DcpTuiApi
121118 names : DcpRouteNames
122119 palette : DcpPalette
123120 sessionID : ( ) => string
@@ -137,7 +134,7 @@ const SidebarContext = (props: {
137134 renderTimeout = setTimeout ( ( ) => {
138135 renderTimeout = undefined
139136 try {
140- props . renderer . requestRender ( )
137+ props . api . renderer . requestRender ( )
141138 } catch ( error ) {
142139 props . logger . warn ( "Failed to request TUI render" , {
143140 error : error instanceof Error ? error . message : String ( error ) ,
@@ -180,7 +177,7 @@ const SidebarContext = (props: {
180177 const currentRequest = ++ requestVersion
181178
182179 try {
183- const value = await loadContextSnapshotCached ( props . client , props . logger , sessionID )
180+ const value = await loadContextSnapshotCached ( props . api . client , props . logger , sessionID )
184181 if ( currentRequest !== requestVersion || props . sessionID ( ) !== sessionID ) {
185182 return
186183 }
@@ -230,43 +227,43 @@ const SidebarContext = (props: {
230227 }
231228
232229 const unsubs = [
233- props . event . on ( "message.updated" , ( event ) => {
230+ props . api . event . on ( "message.updated" , ( event ) => {
234231 if ( event . properties . info . sessionID !== sessionID ) return
235232 scheduleRefresh ( )
236233 } ) ,
237- props . event . on ( "message.removed" , ( event ) => {
234+ props . api . event . on ( "message.removed" , ( event ) => {
238235 if ( event . properties . sessionID !== sessionID ) return
239236 scheduleRefresh ( )
240237 } ) ,
241- props . event . on ( "message.part.updated" , ( event ) => {
238+ props . api . event . on ( "message.part.updated" , ( event ) => {
242239 if ( event . properties . part . sessionID !== sessionID ) return
243240 scheduleRefresh ( )
244241 } ) ,
245- props . event . on ( "message.part.delta" , ( event ) => {
242+ props . api . event . on ( "message.part.delta" , ( event ) => {
246243 if ( event . properties . sessionID !== sessionID ) return
247244 scheduleRefresh ( )
248245 } ) ,
249- props . event . on ( "message.part.removed" , ( event ) => {
246+ props . api . event . on ( "message.part.removed" , ( event ) => {
250247 if ( event . properties . sessionID !== sessionID ) return
251248 scheduleRefresh ( )
252249 } ) ,
253- props . event . on ( "session.updated" , ( event ) => {
250+ props . api . event . on ( "session.updated" , ( event ) => {
254251 if ( event . properties . info . id !== sessionID ) return
255252 scheduleRefresh ( )
256253 } ) ,
257- props . event . on ( "session.deleted" , ( event ) => {
254+ props . api . event . on ( "session.deleted" , ( event ) => {
258255 if ( event . properties . info . id !== sessionID ) return
259256 scheduleRefresh ( )
260257 } ) ,
261- props . event . on ( "session.diff" , ( event ) => {
258+ props . api . event . on ( "session.diff" , ( event ) => {
262259 if ( event . properties . sessionID !== sessionID ) return
263260 scheduleRefresh ( )
264261 } ) ,
265- props . event . on ( "session.error" , ( event ) => {
262+ props . api . event . on ( "session.error" , ( event ) => {
266263 if ( event . properties . sessionID !== sessionID ) return
267264 scheduleRefresh ( )
268265 } ) ,
269- props . event . on ( "session.status" , ( event ) => {
266+ props . api . event . on ( "session.status" , ( event ) => {
270267 if ( event . properties . sessionID !== sessionID ) return
271268 scheduleRefresh ( )
272269 } ) ,
@@ -471,13 +468,10 @@ const SidebarContext = (props: {
471468}
472469
473470export const createSidebarTopSlot = (
474- api : TuiApi ,
475- client : DcpTuiClient ,
476- event : TuiPluginInput [ "event" ] ,
477- renderer : TuiPluginInput [ "renderer" ] ,
471+ api : DcpTuiApi ,
478472 names : DcpRouteNames ,
479473 logger : Logger ,
480- ) => ( {
474+ ) : TuiSlotPlugin => ( {
481475 id : names . slot ,
482476 slots : {
483477 sidebar_top (
@@ -490,9 +484,6 @@ export const createSidebarTopSlot = (
490484 return (
491485 < SidebarContext
492486 api = { api }
493- client = { client }
494- event = { event }
495- renderer = { renderer }
496487 names = { names }
497488 palette = { palette ( ) }
498489 sessionID = { ( ) => value . session_id }
0 commit comments