@@ -88,6 +88,7 @@ interface KnowledgeStore {
8888 loadingDocuments : Set < string >
8989 loadingChunks : Set < string >
9090 loadingKnowledgeBasesList : boolean
91+ knowledgeBasesListLoaded : boolean
9192
9293 // Actions
9394 getKnowledgeBase : ( id : string ) => Promise < KnowledgeBaseData | null >
@@ -138,6 +139,7 @@ export const useKnowledgeStore = create<KnowledgeStore>((set, get) => ({
138139 loadingDocuments : new Set ( ) ,
139140 loadingChunks : new Set ( ) ,
140141 loadingKnowledgeBasesList : false ,
142+ knowledgeBasesListLoaded : false ,
141143
142144 getCachedKnowledgeBase : ( id : string ) => {
143145 return get ( ) . knowledgeBases [ id ] || null
@@ -363,8 +365,8 @@ export const useKnowledgeStore = create<KnowledgeStore>((set, get) => ({
363365 getKnowledgeBasesList : async ( ) => {
364366 const state = get ( )
365367
366- // Return cached list if it exists
367- if ( state . knowledgeBasesList . length > 0 ) {
368+ // Return cached list if we have already loaded it before (prevents infinite loops when empty)
369+ if ( state . knowledgeBasesListLoaded ) {
368370 return state . knowledgeBasesList
369371 }
370372
@@ -409,6 +411,7 @@ export const useKnowledgeStore = create<KnowledgeStore>((set, get) => ({
409411 set ( {
410412 knowledgeBasesList,
411413 loadingKnowledgeBasesList : false ,
414+ knowledgeBasesListLoaded : true , // Mark as loaded regardless of result to prevent infinite loops
412415 } )
413416
414417 logger . info ( `Knowledge bases list loaded: ${ knowledgeBasesList . length } items` )
@@ -420,7 +423,10 @@ export const useKnowledgeStore = create<KnowledgeStore>((set, get) => ({
420423 logger . error ( 'Error fetching knowledge bases list:' , error )
421424
422425 // Always set loading to false, even on error
423- set ( { loadingKnowledgeBasesList : false } )
426+ set ( {
427+ loadingKnowledgeBasesList : false ,
428+ knowledgeBasesListLoaded : true , // Mark as loaded even on error to prevent infinite retries
429+ } )
424430
425431 // Don't throw on AbortError (timeout or cancellation)
426432 if ( error instanceof Error && error . name === 'AbortError' ) {
@@ -748,7 +754,10 @@ export const useKnowledgeStore = create<KnowledgeStore>((set, get) => ({
748754 } ,
749755
750756 clearKnowledgeBasesList : ( ) => {
751- set ( { knowledgeBasesList : [ ] } )
757+ set ( {
758+ knowledgeBasesList : [ ] ,
759+ knowledgeBasesListLoaded : false , // Reset loaded state to allow reloading
760+ } )
752761 logger . info ( 'Knowledge bases list cleared' )
753762 } ,
754763} ) )
0 commit comments