@@ -14,7 +14,6 @@ import {
1414 batch ,
1515 Show ,
1616 on ,
17- onCleanup ,
1817} from "solid-js"
1918import { win32DisableProcessedInput , win32InstallCtrlCGuard } from "./win32"
2019import { Flag } from "@/flag/flag"
@@ -23,6 +22,8 @@ import { DialogProvider, useDialog } from "@tui/ui/dialog"
2322import { DialogProvider as DialogProviderList } from "@tui/component/dialog-provider"
2423import { ErrorComponent } from "@tui/component/error-component"
2524import { PluginRouteMissing } from "@tui/component/plugin-route-missing"
25+ import { ProjectProvider } from "@tui/context/project"
26+ import { useEvent } from "@tui/context/event"
2627import { SDKProvider , useSDK } from "@tui/context/sdk"
2728import { StartupLoading } from "@tui/component/startup-loading"
2829import { SyncProvider , useSync } from "@tui/context/sync"
@@ -55,7 +56,6 @@ import { KVProvider, useKV } from "./context/kv"
5556import { Provider } from "@/provider/provider"
5657import { ArgsProvider , useArgs , type Args } from "./context/args"
5758import open from "open"
58- import { writeHeapSnapshot } from "v8"
5959import { PromptRefProvider , usePromptRef } from "./context/prompt"
6060import { TuiConfigProvider , useTuiConfig } from "./context/tui-config"
6161import { TuiConfig } from "@/config/tui"
@@ -217,27 +217,29 @@ export function tui(input: {
217217 headers = { input . headers }
218218 events = { input . events }
219219 >
220- < SyncProvider >
221- < ThemeProvider mode = { mode } >
222- < LocalProvider >
223- < KeybindProvider >
224- < PromptStashProvider >
225- < DialogProvider >
226- < CommandProvider >
227- < FrecencyProvider >
228- < PromptHistoryProvider >
229- < PromptRefProvider >
230- < App onSnapshot = { input . onSnapshot } />
231- </ PromptRefProvider >
232- </ PromptHistoryProvider >
233- </ FrecencyProvider >
234- </ CommandProvider >
235- </ DialogProvider >
236- </ PromptStashProvider >
237- </ KeybindProvider >
238- </ LocalProvider >
239- </ ThemeProvider >
240- </ SyncProvider >
220+ < ProjectProvider >
221+ < SyncProvider >
222+ < ThemeProvider mode = { mode } >
223+ < LocalProvider >
224+ < KeybindProvider >
225+ < PromptStashProvider >
226+ < DialogProvider >
227+ < CommandProvider >
228+ < FrecencyProvider >
229+ < PromptHistoryProvider >
230+ < PromptRefProvider >
231+ < App onSnapshot = { input . onSnapshot } />
232+ </ PromptRefProvider >
233+ </ PromptHistoryProvider >
234+ </ FrecencyProvider >
235+ </ CommandProvider >
236+ </ DialogProvider >
237+ </ PromptStashProvider >
238+ </ KeybindProvider >
239+ </ LocalProvider >
240+ </ ThemeProvider >
241+ </ SyncProvider >
242+ </ ProjectProvider >
241243 </ SDKProvider >
242244 </ TuiConfigProvider >
243245 </ RouteProvider >
@@ -261,6 +263,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
261263 const kv = useKV ( )
262264 const command = useCommandDialog ( )
263265 const keybind = useKeybind ( )
266+ const event = useEvent ( )
264267 const sdk = useSDK ( )
265268 const toast = useToast ( )
266269 const themeState = useTheme ( )
@@ -284,6 +287,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
284287 route,
285288 routes,
286289 bump : ( ) => setRouteRev ( ( x ) => x + 1 ) ,
290+ event,
287291 sdk,
288292 sync,
289293 theme : themeState ,
@@ -492,12 +496,9 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
492496 const current = promptRef . current
493497 // Don't require focus - if there's any text, preserve it
494498 const currentPrompt = current ?. current ?. input ? current . current : undefined
495- const workspaceID =
496- route . data . type === "session" ? sync . session . get ( route . data . sessionID ) ?. workspaceID : undefined
497499 route . navigate ( {
498500 type : "home" ,
499501 initialPrompt : currentPrompt ,
500- workspaceID,
501502 } )
502503 dialog . clear ( )
503504 } ,
@@ -836,11 +837,11 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
836837 } ,
837838 ] )
838839
839- sdk . event . on ( TuiEvent . CommandExecute . type , ( evt ) => {
840+ event . on ( TuiEvent . CommandExecute . type , ( evt ) => {
840841 command . trigger ( evt . properties . command )
841842 } )
842843
843- sdk . event . on ( TuiEvent . ToastShow . type , ( evt ) => {
844+ event . on ( TuiEvent . ToastShow . type , ( evt ) => {
844845 toast . show ( {
845846 title : evt . properties . title ,
846847 message : evt . properties . message ,
@@ -849,14 +850,14 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
849850 } )
850851 } )
851852
852- sdk . event . on ( TuiEvent . SessionSelect . type , ( evt ) => {
853+ event . on ( TuiEvent . SessionSelect . type , ( evt ) => {
853854 route . navigate ( {
854855 type : "session" ,
855856 sessionID : evt . properties . sessionID ,
856857 } )
857858 } )
858859
859- sdk . event . on ( "session.deleted" , ( evt ) => {
860+ event . on ( "session.deleted" , ( evt ) => {
860861 if ( route . data . type === "session" && route . data . sessionID === evt . properties . info . id ) {
861862 route . navigate ( { type : "home" } )
862863 toast . show ( {
@@ -866,7 +867,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
866867 }
867868 } )
868869
869- sdk . event . on ( "session.error" , ( evt ) => {
870+ event . on ( "session.error" , ( evt ) => {
870871 const error = evt . properties . error
871872 if ( error && typeof error === "object" && error . name === "MessageAbortedError" ) return
872873 const message = errorMessage ( error )
@@ -878,7 +879,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
878879 } )
879880 } )
880881
881- sdk . event . on ( "installation.update-available" , async ( evt ) => {
882+ event . on ( "installation.update-available" , async ( evt ) => {
882883 const version = evt . properties . version
883884
884885 const skipped = kv . get ( "skipped_version" )
0 commit comments