Skip to content

Commit 03aacc6

Browse files
authored
Merge pull request #142 from MODSetter/dev
feat: Document Selector in Chat.
2 parents e8a19c4 + d7bb31f commit 03aacc6

File tree

12 files changed

+599
-67
lines changed

12 files changed

+599
-67
lines changed

surfsense_backend/app/agents/researcher/configuration.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class Configuration:
3333
search_space_id: int
3434
search_mode: SearchMode
3535
research_mode: ResearchMode
36+
document_ids_to_add_in_context: List[int]
3637

3738
@classmethod
3839
def from_runnable_config(

surfsense_backend/app/agents/researcher/nodes.py

Lines changed: 307 additions & 8 deletions
Large diffs are not rendered by default.

surfsense_backend/app/routes/chats_routes.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ async def handle_chat_data(
3030
search_space_id = request.data.get('search_space_id')
3131
research_mode: str = request.data.get('research_mode')
3232
selected_connectors: List[str] = request.data.get('selected_connectors')
33+
document_ids_to_add_in_context: List[int] = request.data.get('document_ids_to_add_in_context')
3334

3435
search_mode_str = request.data.get('search_mode', "CHUNKS")
3536

@@ -71,7 +72,8 @@ async def handle_chat_data(
7172
research_mode,
7273
selected_connectors,
7374
langchain_chat_history,
74-
search_mode_str
75+
search_mode_str,
76+
document_ids_to_add_in_context
7577
))
7678
response.headers['x-vercel-ai-data-stream'] = 'v1'
7779
return response

surfsense_backend/app/tasks/stream_connector_search_results.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ async def stream_connector_search_results(
1717
research_mode: str,
1818
selected_connectors: List[str],
1919
langchain_chat_history: List[Any],
20-
search_mode_str: str
20+
search_mode_str: str,
21+
document_ids_to_add_in_context: List[int]
2122
) -> AsyncGenerator[str, None]:
2223
"""
2324
Stream connector search results to the client
@@ -62,7 +63,8 @@ async def stream_connector_search_results(
6263
"user_id": user_id_str,
6364
"search_space_id": search_space_id,
6465
"search_mode": search_mode,
65-
"research_mode": research_mode
66+
"research_mode": research_mode,
67+
"document_ids_to_add_in_context": document_ids_to_add_in_context
6668
}
6769
}
6870
# Initialize state with database session and streaming service

surfsense_backend/app/utils/connector_service.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from sqlalchemy.future import select
55
from app.retriver.chunks_hybrid_search import ChucksHybridSearchRetriever
66
from app.retriver.documents_hybrid_search import DocumentHybridSearchRetriever
7-
from app.db import SearchSourceConnector, SearchSourceConnectorType, Chunk, Document
7+
from app.db import SearchSourceConnector, SearchSourceConnectorType, Chunk, Document, SearchSpace
88
from tavily import TavilyClient
99
from linkup import LinkupClient
1010
from sqlalchemy import func
@@ -33,7 +33,8 @@ async def initialize_counter(self):
3333
result = await self.session.execute(
3434
select(func.count(Chunk.id))
3535
.join(Document)
36-
.filter(Document.user_id == self.user_id)
36+
.join(SearchSpace)
37+
.filter(SearchSpace.user_id == self.user_id)
3738
)
3839
chunk_count = result.scalar() or 0
3940
self.source_id_counter = chunk_count + 1

surfsense_web/app/dashboard/[search_space_id]/connectors/[connector_id]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export default function EditConnectorPage() {
7272
const [connector, setConnector] = useState<SearchSourceConnector | null>(null);
7373
const [isLoading, setIsLoading] = useState(true);
7474
const [isSubmitting, setIsSubmitting] = useState(false);
75-
console.log("connector", connector);
75+
// console.log("connector", connector);
7676
// Initialize the form
7777
const form = useForm<ApiConnectorFormValues>({
7878
resolver: zodResolver(apiConnectorFormSchema),

surfsense_web/app/dashboard/[search_space_id]/documents/(manage)/page.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,8 @@ export default function DocumentsTable() {
283283
const searchSpaceId = Number(params.search_space_id);
284284
const { documents, loading, error, refreshDocuments, deleteDocument } = useDocuments(searchSpaceId);
285285

286-
console.log("Search Space ID:", searchSpaceId);
287-
console.log("Documents loaded:", documents?.length);
286+
// console.log("Search Space ID:", searchSpaceId);
287+
// console.log("Documents loaded:", documents?.length);
288288

289289
useEffect(() => {
290290
console.log("Delete document function available:", !!deleteDocument);
@@ -315,7 +315,7 @@ export default function DocumentsTable() {
315315

316316
const handleDeleteRows = async () => {
317317
const selectedRows = table.getSelectedRowModel().rows;
318-
console.log("Deleting selected rows:", selectedRows.length);
318+
// console.log("Deleting selected rows:", selectedRows.length);
319319

320320
if (selectedRows.length === 0) {
321321
toast.error("No rows selected");
@@ -324,14 +324,14 @@ export default function DocumentsTable() {
324324

325325
// Create an array of promises for each delete operation
326326
const deletePromises = selectedRows.map(row => {
327-
console.log("Deleting row with ID:", row.original.id);
327+
// console.log("Deleting row with ID:", row.original.id);
328328
return deleteDocument(row.original.id);
329329
});
330330

331331
try {
332332
// Execute all delete operations
333333
const results = await Promise.all(deletePromises);
334-
console.log("Delete results:", results);
334+
// console.log("Delete results:", results);
335335

336336
// Check if all deletions were successful
337337
const allSuccessful = results.every(result => result === true);

0 commit comments

Comments
 (0)