@@ -65,6 +65,39 @@ export function AIQueryInput({
6565 }
6666 } , [ mode , canEdit ] ) ;
6767
68+ const processStreamEvent = useCallback (
69+ ( event : StreamEventType ) => {
70+ switch ( event . type ) {
71+ case "thinking" :
72+ setThinking ( ( prev ) => prev + event . content ) ;
73+ break ;
74+ case "tool_call" :
75+ // Tool calls are handled silently — no UI text needed
76+ break ;
77+ case "time_filter" :
78+ // Apply time filter immediately when the AI sets it
79+ onTimeFilterChange ?.( event . filter ) ;
80+ break ;
81+ case "result" :
82+ if ( event . success ) {
83+ // Apply time filter if included in result (backup in case time_filter event was missed)
84+ if ( event . timeFilter ) {
85+ onTimeFilterChange ?.( event . timeFilter ) ;
86+ }
87+ onQueryGenerated ( event . query ) ;
88+ setPrompt ( "" ) ;
89+ setLastResult ( "success" ) ;
90+ // Keep thinking visible to show what happened
91+ } else {
92+ setError ( event . error ) ;
93+ setLastResult ( "error" ) ;
94+ }
95+ break ;
96+ }
97+ } ,
98+ [ onQueryGenerated , onTimeFilterChange ]
99+ ) ;
100+
68101 const submitQuery = useCallback (
69102 async ( queryPrompt : string , submitMode : AIQueryMode = mode ) => {
70103 if ( ! queryPrompt . trim ( ) || isLoading ) return ;
@@ -158,40 +191,7 @@ export function AIQueryInput({
158191 setIsLoading ( false ) ;
159192 }
160193 } ,
161- [ isLoading , resourcePath , mode , getCurrentQuery ]
162- ) ;
163-
164- const processStreamEvent = useCallback (
165- ( event : StreamEventType ) => {
166- switch ( event . type ) {
167- case "thinking" :
168- setThinking ( ( prev ) => prev + event . content ) ;
169- break ;
170- case "tool_call" :
171- // Tool calls are handled silently — no UI text needed
172- break ;
173- case "time_filter" :
174- // Apply time filter immediately when the AI sets it
175- onTimeFilterChange ?.( event . filter ) ;
176- break ;
177- case "result" :
178- if ( event . success ) {
179- // Apply time filter if included in result (backup in case time_filter event was missed)
180- if ( event . timeFilter ) {
181- onTimeFilterChange ?.( event . timeFilter ) ;
182- }
183- onQueryGenerated ( event . query ) ;
184- setPrompt ( "" ) ;
185- setLastResult ( "success" ) ;
186- // Keep thinking visible to show what happened
187- } else {
188- setError ( event . error ) ;
189- setLastResult ( "error" ) ;
190- }
191- break ;
192- }
193- } ,
194- [ onQueryGenerated , onTimeFilterChange ]
194+ [ getCurrentQuery , isLoading , mode , processStreamEvent , resourcePath ]
195195 ) ;
196196
197197 const handleSubmit = useCallback (
0 commit comments