@@ -106,19 +106,29 @@ export function buildSearchPayload(cfg, prompt, ctx) {
106106 let filterObj = cfg . filter ? JSON . parse ( JSON . stringify ( cfg . filter ) ) : null ;
107107 const agentId = getEffectiveAgentId ( cfg , ctx ) ;
108108
109+ // Check if the filter is already in the categorized format (filter1)
110+ const isCategorized = filterObj && ( filterObj . user !== undefined || filterObj . knowledgebase !== undefined || filterObj . public !== undefined ) ;
111+ let userFilter = isCategorized ? ( filterObj . user || null ) : filterObj ;
112+
109113 if ( agentId ) {
110- if ( filterObj ) {
111- if ( Array . isArray ( filterObj . and ) ) {
112- filterObj . and . push ( { agent_id : agentId } ) ;
114+ if ( userFilter && Object . keys ( userFilter ) . length > 0 ) {
115+ if ( Array . isArray ( userFilter . and ) ) {
116+ userFilter . and . push ( { agent_id : agentId } ) ;
113117 } else {
114- filterObj = { and : [ filterObj , { agent_id : agentId } ] } ;
118+ userFilter = { and : [ userFilter , { agent_id : agentId } ] } ;
115119 }
116120 } else {
117- filterObj = { agent_id : agentId } ;
121+ userFilter = { and : [ { agent_id : agentId } ] } ;
118122 }
119123 }
120124
121- if ( filterObj ) payload . filter = filterObj ;
125+ if ( isCategorized ) {
126+ if ( userFilter && Object . keys ( userFilter ) . length > 0 ) filterObj . user = userFilter ;
127+ if ( Object . keys ( filterObj ) . length > 0 ) payload . filter = filterObj ;
128+ } else if ( userFilter && Object . keys ( userFilter ) . length > 0 ) {
129+ // If not categorized, wrap it in 'user' so knowledgebase is not filtered
130+ payload . filter = { user : userFilter } ;
131+ }
122132
123133 if ( cfg . knowledgebaseIds ?. length ) payload . knowledgebase_ids = cfg . knowledgebaseIds ;
124134
0 commit comments