From e283957c8f4a325fbac57f8a4679c14a7df65272 Mon Sep 17 00:00:00 2001
From: Alex
Date: Fri, 22 Aug 2025 11:41:35 +0100
Subject: [PATCH 1/2] Fix source field retrieval in SharedAgent to handle DBRef
correctly
---
application/api/user/routes.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/application/api/user/routes.py b/application/api/user/routes.py
index 9a2febbc..486690fb 100644
--- a/application/api/user/routes.py
+++ b/application/api/user/routes.py
@@ -1984,7 +1984,12 @@ class SharedAgent(Resource):
else ""
),
"description": shared_agent.get("description", ""),
- "source": shared_agent.get("source", ""),
+ "source": (
+ str(source_doc["_id"])
+ if isinstance(shared_agent.get("source"), DBRef)
+ and (source_doc := db.dereference(shared_agent.get("source")))
+ else ""
+ ),
"chunks": shared_agent.get("chunks", "0"),
"retriever": shared_agent.get("retriever", "classic"),
"prompt_id": shared_agent.get("prompt_id", "default"),
From 44d21ab703516be663cf20cbbfb7bfb200c9a3d9 Mon Sep 17 00:00:00 2001
From: Alex
Date: Fri, 22 Aug 2025 13:36:31 +0100
Subject: [PATCH 2/2] fix: passing sources and chunk if agent is shared
---
.../api/answer/services/stream_processor.py | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/application/api/answer/services/stream_processor.py b/application/api/answer/services/stream_processor.py
index dfcfcdd2..648d24f5 100644
--- a/application/api/answer/services/stream_processor.py
+++ b/application/api/answer/services/stream_processor.py
@@ -85,8 +85,8 @@ class StreamProcessor:
def initialize(self):
"""Initialize all required components for processing"""
- self._configure_agent()
self._configure_retriever()
+ self._configure_agent()
self._load_conversation_history()
self._process_attachments()
@@ -173,8 +173,9 @@ class StreamProcessor:
source_doc = self.db.dereference(source)
data["source"] = str(source_doc["_id"])
data["retriever"] = source_doc.get("retriever", data.get("retriever"))
+ data["chunks"] = source_doc.get("chunks", data.get("chunks"))
else:
- data["source"] = {}
+ data["source"] = None
return data
def _configure_agent(self):
@@ -197,6 +198,12 @@ class StreamProcessor:
)
self.initial_user_id = data_key.get("user")
self.decoded_token = {"sub": data_key.get("user")}
+ if data_key.get("source"):
+ self.source = {"active_docs": data_key["source"]}
+ if data_key.get("retriever"):
+ self.retriever_config["retriever_name"] = data_key["retriever"]
+ if data_key.get("chunks") is not None:
+ self.retriever_config["chunks"] = data_key["chunks"]
elif self.agent_key:
data_key = self._get_data_from_api_key(self.agent_key)
self.agent_config.update(
@@ -212,6 +219,12 @@ class StreamProcessor:
if self.is_shared_usage
else {"sub": data_key.get("user")}
)
+ if data_key.get("source"):
+ self.source = {"active_docs": data_key["source"]}
+ if data_key.get("retriever"):
+ self.retriever_config["retriever_name"] = data_key["retriever"]
+ if data_key.get("chunks") is not None:
+ self.retriever_config["chunks"] = data_key["chunks"]
else:
self.agent_config.update(
{