@@ -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"
@@ -54,7 +55,6 @@ import { KVProvider, useKV } from "./context/kv"
5455import { Provider } from "@/provider/provider"
5556import { ArgsProvider , useArgs , type Args } from "./context/args"
5657import open from "open"
57- import { writeHeapSnapshot } from "v8"
5858import { PromptRefProvider , usePromptRef } from "./context/prompt"
5959import { TuiConfigProvider , useTuiConfig } from "./context/tui-config"
6060import { TuiConfig } from "@/config/tui"
@@ -216,27 +216,29 @@ export function tui(input: {
216216 headers = { input . headers }
217217 events = { input . events }
218218 >
219- < SyncProvider >
220- < ThemeProvider mode = { mode } >
221- < LocalProvider >
222- < KeybindProvider >
223- < PromptStashProvider >
224- < DialogProvider >
225- < CommandProvider >
226- < FrecencyProvider >
227- < PromptHistoryProvider >
228- < PromptRefProvider >
229- < App onSnapshot = { input . onSnapshot } />
230- </ PromptRefProvider >
231- </ PromptHistoryProvider >
232- </ FrecencyProvider >
233- </ CommandProvider >
234- </ DialogProvider >
235- </ PromptStashProvider >
236- </ KeybindProvider >
237- </ LocalProvider >
238- </ ThemeProvider >
239- </ SyncProvider >
219+ < ProjectProvider >
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 >
241+ </ ProjectProvider >
240242 </ SDKProvider >
241243 </ TuiConfigProvider >
242244 </ RouteProvider >
@@ -260,6 +262,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
260262 const kv = useKV ( )
261263 const command = useCommandDialog ( )
262264 const keybind = useKeybind ( )
265+ const event = useEvent ( )
263266 const sdk = useSDK ( )
264267 const toast = useToast ( )
265268 const themeState = useTheme ( )
@@ -283,6 +286,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
283286 route,
284287 routes,
285288 bump : ( ) => setRouteRev ( ( x ) => x + 1 ) ,
289+ event,
286290 sdk,
287291 sync,
288292 theme : themeState ,
@@ -491,12 +495,9 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
491495 const current = promptRef . current
492496 // Don't require focus - if there's any text, preserve it
493497 const currentPrompt = current ?. current ?. input ? current . current : undefined
494- const workspaceID =
495- route . data . type === "session" ? sync . session . get ( route . data . sessionID ) ?. workspaceID : undefined
496498 route . navigate ( {
497499 type : "home" ,
498500 initialPrompt : currentPrompt ,
499- workspaceID,
500501 } )
501502 dialog . clear ( )
502503 } ,
@@ -806,11 +807,11 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
806807 } ,
807808 ] )
808809
809- sdk . event . on ( TuiEvent . CommandExecute . type , ( evt ) => {
810+ event . on ( TuiEvent . CommandExecute . type , ( evt ) => {
810811 command . trigger ( evt . properties . command )
811812 } )
812813
813- sdk . event . on ( TuiEvent . ToastShow . type , ( evt ) => {
814+ event . on ( TuiEvent . ToastShow . type , ( evt ) => {
814815 toast . show ( {
815816 title : evt . properties . title ,
816817 message : evt . properties . message ,
@@ -819,14 +820,14 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
819820 } )
820821 } )
821822
822- sdk . event . on ( TuiEvent . SessionSelect . type , ( evt ) => {
823+ event . on ( TuiEvent . SessionSelect . type , ( evt ) => {
823824 route . navigate ( {
824825 type : "session" ,
825826 sessionID : evt . properties . sessionID ,
826827 } )
827828 } )
828829
829- sdk . event . on ( "session.deleted" , ( evt ) => {
830+ event . on ( "session.deleted" , ( evt ) => {
830831 if ( route . data . type === "session" && route . data . sessionID === evt . properties . info . id ) {
831832 route . navigate ( { type : "home" } )
832833 toast . show ( {
@@ -836,7 +837,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
836837 }
837838 } )
838839
839- sdk . event . on ( "session.error" , ( evt ) => {
840+ event . on ( "session.error" , ( evt ) => {
840841 const error = evt . properties . error
841842 if ( error && typeof error === "object" && error . name === "MessageAbortedError" ) return
842843 const message = errorMessage ( error )
@@ -848,7 +849,7 @@ function App(props: { onSnapshot?: () => Promise<string[]> }) {
848849 } )
849850 } )
850851
851- sdk . event . on ( "installation.update-available" , async ( evt ) => {
852+ event . on ( "installation.update-available" , async ( evt ) => {
852853 const version = evt . properties . version
853854
854855 const skipped = kv . get ( "skipped_version" )
0 commit comments