@@ -398,8 +398,18 @@ export function DocSearchModal({
398398
399399 const [ stoppedStream , setStoppedStream ] = React . useState ( false ) ;
400400
401- const { messages, status, setMessages, sendMessage, stopAskAiStreaming, askAiError, sendFeedback, conversations } =
402- useAskAi ( {
401+ const {
402+ messages,
403+ status,
404+ sendMessage,
405+ stopAskAiStreaming,
406+ askAiError,
407+ sendFeedback,
408+ conversations,
409+ clearError,
410+ resetAskAiAbortScope,
411+ resetAskAiChatSession,
412+ } = useAskAi ( {
403413 assistantId : askAiConfigurationId ,
404414 apiKey : askAiConfig ?. apiKey || apiKey ,
405415 appId : askAiConfig ?. appId || appId ,
@@ -423,9 +433,12 @@ export function DocSearchModal({
423433 } ;
424434 }
425435
426- for ( const part of messages [ 0 ] . parts ) {
427- if ( part . type === 'text' ) {
428- conversations . add ( buildDummyAskAiHit ( part . text , messages ) ) ;
436+ const first = messages [ 0 ] ;
437+ if ( first ?. parts ) {
438+ for ( const part of first . parts ) {
439+ if ( part . type === 'text' ) {
440+ conversations . add ( buildDummyAskAiHit ( part . text , messages ) ) ;
441+ }
429442 }
430443 }
431444 }
@@ -533,6 +546,8 @@ export function DocSearchModal({
533546 if ( isHybridModeSupported ) return ;
534547
535548 setStoppedStream ( false ) ;
549+ resetAskAiAbortScope ( ) ;
550+ clearError ( ) ;
536551
537552 const messageOptions : ChatRequestOptions = { } ;
538553
@@ -571,7 +586,16 @@ export function DocSearchModal({
571586 autocompleteRef . current . setQuery ( '' ) ;
572587 }
573588 } ,
574- [ onAskAiToggle , interceptAskAiEvent , sendMessage , askAiState , setAskAiState , isHybridModeSupported ] ,
589+ [
590+ onAskAiToggle ,
591+ interceptAskAiEvent ,
592+ askAiState ,
593+ setAskAiState ,
594+ isHybridModeSupported ,
595+ clearError ,
596+ resetAskAiAbortScope ,
597+ sendMessage ,
598+ ] ,
575599 ) ;
576600
577601 // feedback handler
@@ -623,7 +647,10 @@ export function DocSearchModal({
623647 } ,
624648 onSelect ( { item } ) : void {
625649 if ( item . messages ) {
626- setMessages ( item . messages as any ) ;
650+ resetAskAiChatSession ( {
651+ kind : 'setMessages' ,
652+ messages : item . messages as AIMessage [ ] ,
653+ } ) ;
627654 onAskAiToggle ( true ) ;
628655 }
629656 } ,
@@ -793,14 +820,18 @@ export function DocSearchModal({
793820 } ;
794821 } , [ ] ) ;
795822
796- // Refresh the autocomplete results when ask ai is toggled off
797- // helps return to the previous ac state and start screen
823+ // Refresh autocomplete and rotate the chat session only when Ask AI is turned off — not on every
824+ // mount while inactive. `clearError` from `useChat` can change when `chatSessionId` changes; listing
825+ // it (and re-running `resetAskAiChatSession` on that) caused an infinite update loop.
826+ const prevIsAskAiActiveRef = React . useRef ( isAskAiActive ) ;
798827 React . useEffect ( ( ) => {
799- if ( ! isAskAiActive ) {
828+ if ( prevIsAskAiActiveRef . current && ! isAskAiActive ) {
800829 autocomplete . refresh ( ) ;
801- setMessages ( [ ] ) ;
830+ clearError ( ) ;
831+ resetAskAiChatSession ( ) ;
802832 }
803- } , [ isAskAiActive , autocomplete , setMessages ] ) ;
833+ prevIsAskAiActiveRef . current = isAskAiActive ;
834+ } , [ isAskAiActive , autocomplete , clearError , resetAskAiChatSession ] ) ;
804835
805836 // Track external state in order to manage internal askAiState
806837 React . useEffect ( ( ) => {
@@ -814,7 +845,8 @@ export function DocSearchModal({
814845 } ;
815846
816847 const handleNewConversation = ( ) : void => {
817- setMessages ( [ ] ) ;
848+ clearError ( ) ;
849+ resetAskAiChatSession ( ) ;
818850 setAskAiState ( 'new-conversation' ) ;
819851 } ;
820852
@@ -913,7 +945,10 @@ export function DocSearchModal({
913945 if ( item . type === 'askAI' && item . query ) {
914946 // if the item is askAI and the anchor is stored
915947 if ( item . anchor === 'stored' && 'messages' in item ) {
916- setMessages ( item . messages as any ) ;
948+ resetAskAiChatSession ( {
949+ kind : 'setMessages' ,
950+ messages : item . messages as AIMessage [ ] ,
951+ } ) ;
917952 const initialMessage : InitialAskAiMessage = {
918953 query : item . query ,
919954 messageId : ( item . messages as StoredAskAiMessage [ ] ) [ 0 ] . id ,
0 commit comments