ソースを参照

npm run format

Taylor Wilsdon 4 ヶ月 前
コミット
366158ff04

+ 1 - 1
backend/open_webui/main.py

@@ -951,7 +951,7 @@ async def get_app_config(request: Request):
         },
         "google_drive": {
             "client_id": GOOGLE_DRIVE_CLIENT_ID.value,
-            "api_key": GOOGLE_DRIVE_API_KEY.value
+            "api_key": GOOGLE_DRIVE_API_KEY.value,
         },
         **(
             {

+ 19 - 16
backend/open_webui/routers/knowledge.py

@@ -11,7 +11,12 @@ from open_webui.models.knowledge import (
 )
 from open_webui.models.files import Files, FileModel
 from open_webui.retrieval.vector.connector import VECTOR_DB_CLIENT
-from open_webui.routers.retrieval import process_file, ProcessFileForm, process_files_batch, BatchProcessFilesForm
+from open_webui.routers.retrieval import (
+    process_file,
+    ProcessFileForm,
+    process_files_batch,
+    BatchProcessFilesForm,
+)
 
 
 from open_webui.constants import ERROR_MESSAGES
@@ -519,6 +524,7 @@ async def reset_knowledge_by_id(id: str, user=Depends(get_verified_user)):
 # AddFilesToKnowledge
 ############################
 
+
 @router.post("/{id}/files/batch/add", response_model=Optional[KnowledgeFilesResponse])
 def add_files_to_knowledge_batch(
     id: str,
@@ -555,27 +561,25 @@ def add_files_to_knowledge_batch(
 
     # Process files
     try:
-        result = process_files_batch(BatchProcessFilesForm(
-            files=files,
-            collection_name=id
-        ))
+        result = process_files_batch(
+            BatchProcessFilesForm(files=files, collection_name=id)
+        )
     except Exception as e:
-        log.error(f"add_files_to_knowledge_batch: Exception occurred: {e}", exc_info=True)
-        raise HTTPException(
-            status_code=status.HTTP_400_BAD_REQUEST,
-            detail=str(e)
+        log.error(
+            f"add_files_to_knowledge_batch: Exception occurred: {e}", exc_info=True
         )
-    
+        raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e))
+
     # Add successful files to knowledge base
     data = knowledge.data or {}
     existing_file_ids = data.get("file_ids", [])
-    
+
     # Only add files that were successfully processed
     successful_file_ids = [r.file_id for r in result.results if r.status == "completed"]
     for file_id in successful_file_ids:
         if file_id not in existing_file_ids:
             existing_file_ids.append(file_id)
-    
+
     data["file_ids"] = existing_file_ids
     knowledge = Knowledges.update_knowledge_data_by_id(id=id, data=data)
 
@@ -587,11 +591,10 @@ def add_files_to_knowledge_batch(
             files=Files.get_files_by_ids(existing_file_ids),
             warnings={
                 "message": "Some files failed to process",
-                "errors": error_details
-            }
+                "errors": error_details,
+            },
         )
 
     return KnowledgeFilesResponse(
-        **knowledge.model_dump(),
-        files=Files.get_files_by_ids(existing_file_ids)
+        **knowledge.model_dump(), files=Files.get_files_by_ids(existing_file_ids)
     )

+ 28 - 34
backend/open_webui/static/swagger-ui/swagger-ui-bundle.js

@@ -37007,16 +37007,14 @@
 								Pe.createElement('span', { className: 'brace-close' }, '}')
 							),
 							pe.size
-								? pe
-										.entrySeq()
-										.map(([s, o]) =>
-											Pe.createElement(xe, {
-												key: `${s}-${o}`,
-												propKey: s,
-												propVal: o,
-												propClass: 'property'
-											})
-										)
+								? pe.entrySeq().map(([s, o]) =>
+										Pe.createElement(xe, {
+											key: `${s}-${o}`,
+											propKey: s,
+											propVal: o,
+											propClass: 'property'
+										})
+									)
 								: null
 						);
 					}
@@ -37167,16 +37165,14 @@
 											)
 										: null,
 									C && z.size
-										? z
-												.entrySeq()
-												.map(([s, o]) =>
-													Pe.createElement(le, {
-														key: `${s}-${o}`,
-														propKey: s,
-														propVal: o,
-														propClass: rs
-													})
-												)
+										? z.entrySeq().map(([s, o]) =>
+												Pe.createElement(le, {
+													key: `${s}-${o}`,
+													propKey: s,
+													propVal: o,
+													propClass: rs
+												})
+											)
 										: null,
 									U ? Pe.createElement(ie, { source: U }) : null,
 									Z &&
@@ -57290,20 +57286,18 @@
 										Pe.createElement(
 											'div',
 											{ className: 'modal-ux-content' },
-											x
-												.valueSeq()
-												.map((x, j) =>
-													Pe.createElement(C, {
-														key: j,
-														AST: w,
-														definitions: x,
-														getComponent: i,
-														errSelectors: u,
-														authSelectors: s,
-														authActions: o,
-														specSelectors: _
-													})
-												)
+											x.valueSeq().map((x, j) =>
+												Pe.createElement(C, {
+													key: j,
+													AST: w,
+													definitions: x,
+													getComponent: i,
+													errSelectors: u,
+													authSelectors: s,
+													authActions: o,
+													specSelectors: _
+												})
+											)
 										)
 									)
 								)

+ 0 - 1
src/lib/components/chat/MessageInput.svelte

@@ -630,7 +630,6 @@
 													);
 												}
 											}}
-											
 											onClose={async () => {
 												await tick();
 

+ 24 - 6
src/lib/components/chat/MessageInput/InputMenu.svelte

@@ -161,12 +161,30 @@
 				}}
 			>
 				<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 87.3 78" class="w-5 h-5">
-					<path d="m6.6 66.85 3.85 6.65c.8 1.4 1.95 2.5 3.3 3.3l13.75-23.8h-27.5c0 1.55.4 3.1 1.2 4.5z" fill="#0066da"/>
-					<path d="m43.65 25-13.75-23.8c-1.35.8-2.5 1.9-3.3 3.3l-25.4 44a9.06 9.06 0 0 0 -1.2 4.5h27.5z" fill="#00ac47"/>
-					<path d="m73.55 76.8c1.35-.8 2.5-1.9 3.3-3.3l1.6-2.75 7.65-13.25c.8-1.4 1.2-2.95 1.2-4.5h-27.502l5.852 11.5z" fill="#ea4335"/>
-					<path d="m43.65 25 13.75-23.8c-1.35-.8-2.9-1.2-4.5-1.2h-18.5c-1.6 0-3.15.45-4.5 1.2z" fill="#00832d"/>
-					<path d="m59.8 53h-32.3l-13.75 23.8c1.35.8 2.9 1.2 4.5 1.2h50.8c1.6 0 3.15-.45 4.5-1.2z" fill="#2684fc"/>
-					<path d="m73.4 26.5-12.7-22c-.8-1.4-1.95-2.5-3.3-3.3l-13.75 23.8 16.15 28h27.45c0-1.55-.4-3.1-1.2-4.5z" fill="#ffba00"/>
+					<path
+						d="m6.6 66.85 3.85 6.65c.8 1.4 1.95 2.5 3.3 3.3l13.75-23.8h-27.5c0 1.55.4 3.1 1.2 4.5z"
+						fill="#0066da"
+					/>
+					<path
+						d="m43.65 25-13.75-23.8c-1.35.8-2.5 1.9-3.3 3.3l-25.4 44a9.06 9.06 0 0 0 -1.2 4.5h27.5z"
+						fill="#00ac47"
+					/>
+					<path
+						d="m73.55 76.8c1.35-.8 2.5-1.9 3.3-3.3l1.6-2.75 7.65-13.25c.8-1.4 1.2-2.95 1.2-4.5h-27.502l5.852 11.5z"
+						fill="#ea4335"
+					/>
+					<path
+						d="m43.65 25 13.75-23.8c-1.35-.8-2.9-1.2-4.5-1.2h-18.5c-1.6 0-3.15.45-4.5 1.2z"
+						fill="#00832d"
+					/>
+					<path
+						d="m59.8 53h-32.3l-13.75 23.8c1.35.8 2.9 1.2 4.5 1.2h50.8c1.6 0 3.15-.45 4.5-1.2z"
+						fill="#2684fc"
+					/>
+					<path
+						d="m73.4 26.5-12.7-22c-.8-1.4-1.95-2.5-3.3-3.3l-13.75 23.8 16.15 28h27.45c0-1.55-.4-3.1-1.2-4.5z"
+						fill="#ffba00"
+					/>
 				</svg>
 				<div class="line-clamp-1">{$i18n.t('Google Drive')}</div>
 			</DropdownMenu.Item>

+ 27 - 25
src/lib/utils/index.ts

@@ -552,31 +552,33 @@ export const removeEmojis = (str: string) => {
 };
 
 export const removeFormattings = (str: string) => {
-	return str
-        // Block elements (remove completely)
-        .replace(/(```[\s\S]*?```)/g, '')                    // Code blocks
-        .replace(/^\|.*\|$/gm, '')                          // Tables
-	// Inline elements (preserve content)
-        .replace(/(?:\*\*|__)(.*?)(?:\*\*|__)/g, '$1')      // Bold
-        .replace(/(?:[*_])(.*?)(?:[*_])/g, '$1')            // Italic
-        .replace(/~~(.*?)~~/g, '$1')                        // Strikethrough
-        .replace(/`([^`]+)`/g, '$1')                        // Inline code
-        
-        // Links and images
-        .replace(/!?\[([^\]]*)\](?:\([^)]+\)|\[[^\]]*\])/g, '$1') // Links & images
-        .replace(/^\[[^\]]+\]:\s*.*$/gm, '')               // Reference definitions
-        
-        // Block formatting
-        .replace(/^#{1,6}\s+/gm, '')                       // Headers
-        .replace(/^\s*[-*+]\s+/gm, '')                     // Lists
-        .replace(/^\s*(?:\d+\.)\s+/gm, '')                 // Numbered lists
-        .replace(/^\s*>[> ]*/gm, '')                       // Blockquotes
-        .replace(/^\s*:\s+/gm, '')                         // Definition lists
-        
-        // Cleanup
-        .replace(/\[\^[^\]]*\]/g, '')                      // Footnotes
-        .replace(/[-*_~]/g, '')                            // Remaining markers
-        .replace(/\n{2,}/g, '\n')                          // Multiple newlines
+	return (
+		str
+			// Block elements (remove completely)
+			.replace(/(```[\s\S]*?```)/g, '') // Code blocks
+			.replace(/^\|.*\|$/gm, '') // Tables
+			// Inline elements (preserve content)
+			.replace(/(?:\*\*|__)(.*?)(?:\*\*|__)/g, '$1') // Bold
+			.replace(/(?:[*_])(.*?)(?:[*_])/g, '$1') // Italic
+			.replace(/~~(.*?)~~/g, '$1') // Strikethrough
+			.replace(/`([^`]+)`/g, '$1') // Inline code
+
+			// Links and images
+			.replace(/!?\[([^\]]*)\](?:\([^)]+\)|\[[^\]]*\])/g, '$1') // Links & images
+			.replace(/^\[[^\]]+\]:\s*.*$/gm, '') // Reference definitions
+
+			// Block formatting
+			.replace(/^#{1,6}\s+/gm, '') // Headers
+			.replace(/^\s*[-*+]\s+/gm, '') // Lists
+			.replace(/^\s*(?:\d+\.)\s+/gm, '') // Numbered lists
+			.replace(/^\s*>[> ]*/gm, '') // Blockquotes
+			.replace(/^\s*:\s+/gm, '') // Definition lists
+
+			// Cleanup
+			.replace(/\[\^[^\]]*\]/g, '') // Footnotes
+			.replace(/[-*_~]/g, '') // Remaining markers
+			.replace(/\n{2,}/g, '\n')
+	); // Multiple newlines
 };
 
 export const cleanText = (content: string) => {