Repository Analysis

open-webui/open-webui

User-friendly AI Interface (Supports Ollama, OpenAI API, ...)

7.2 Low AI signal View on GitHub
7.2
Adjusted Score
7.2
Raw Score
100%
Time Factor
2026-05-28
Last Push
139,224
Stars
Python
Language
413,502
Lines of Code
979
Files
2311
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 58HIGH 16MEDIUM 141LOW 2096

Pattern Findings

2311 matches across 17 categories. Click a row to expand file-level details.

Excessive Try-Catch Wrapping954 hits · 879 pts
SeverityFileLineSnippet
LOWcontribution_stats.py16 except Exception:
MEDIUMcontribution_stats.py38 print('Error: Are you in a git repository?')
LOWcontribution_stats.py59 except Exception:
MEDIUMbackend/open_webui/functions.py297def stream_content():
LOWbackend/open_webui/functions.py68 except Exception as e:
LOWbackend/open_webui/functions.py102 except Exception as e:
LOWbackend/open_webui/functions.py146 except Exception as e:
LOWbackend/open_webui/functions.py177 except Exception:
LOWbackend/open_webui/functions.py206 except Exception as e:
LOWbackend/open_webui/functions.py255 except Exception as e:
LOWbackend/open_webui/functions.py310 except Exception as e:
LOWbackend/open_webui/functions.py338 except Exception as e:
LOWbackend/open_webui/tasks.py40 except Exception as e:
LOWbackend/open_webui/config.py924 except Exception as e:
LOWbackend/open_webui/config.py926except Exception as e:
LOWbackend/open_webui/config.py935 except Exception as e:
LOWbackend/open_webui/config.py943 except Exception as e:
LOWbackend/open_webui/config.py951 except Exception as e:
LOWbackend/open_webui/config.py959 except Exception as e:
LOWbackend/open_webui/config.py2368 except Exception:
LOWbackend/open_webui/config.py2378 except Exception:
LOWbackend/open_webui/config.py2388 except Exception:
LOWbackend/open_webui/config.py2398 except Exception:
LOWbackend/open_webui/config.py2497 except Exception:
LOWbackend/open_webui/config.py2507 except Exception:
LOWbackend/open_webui/config.py2517 except Exception:
LOWbackend/open_webui/config.py2527 except Exception:
LOWbackend/open_webui/config.py2541 except Exception:
LOWbackend/open_webui/config.py2551 except Exception:
LOWbackend/open_webui/config.py2561 except Exception:
LOWbackend/open_webui/config.py2574 except Exception:
LOWbackend/open_webui/config.py2584 except Exception:
LOWbackend/open_webui/config.py2594 except Exception:
LOWbackend/open_webui/config.py2604 except Exception:
LOWbackend/open_webui/config.py70 except Exception as e:
LOWbackend/open_webui/config.py186 except Exception as e:
LOWbackend/open_webui/config.py203 except Exception as e:
LOWbackend/open_webui/config.py328 except Exception as e:
LOWbackend/open_webui/config.py339 except Exception as e:
LOWbackend/open_webui/config.py995 except Exception as e:
LOWbackend/open_webui/config.py1178except Exception:
LOWbackend/open_webui/config.py1200except Exception as e:
LOWbackend/open_webui/config.py1231except Exception:
LOWbackend/open_webui/config.py1278except Exception as e:
LOWbackend/open_webui/config.py1326except Exception as e:
LOWbackend/open_webui/config.py1338except Exception as e:
LOWbackend/open_webui/config.py1823except Exception as e:
LOWbackend/open_webui/config.py2412 except Exception:
LOWbackend/open_webui/config.py3247except Exception as e:
LOWbackend/open_webui/env.py366 except Exception:
LOWbackend/open_webui/env.py376 except Exception:
LOWbackend/open_webui/env.py386 except Exception:
LOWbackend/open_webui/env.py396 except Exception:
LOWbackend/open_webui/env.py56 except Exception as e:
LOWbackend/open_webui/env.py70 except Exception:
LOWbackend/open_webui/env.py151 except Exception:
LOWbackend/open_webui/env.py187except Exception:
LOWbackend/open_webui/env.py433 except Exception:
LOWbackend/open_webui/env.py508 except Exception:
LOWbackend/open_webui/env.py566except Exception as e:
894 more matches not shown…
Hallucination Indicators58 hits · 575 pts
SeverityFileLineSnippet
CRITICALbackend/open_webui/main.py1560 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/main.py1562 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}),
CRITICALbackend/open_webui/main.py1603 api_config = request.app.state.config.OPENAI_API_CONFIGS.get(str(idx), {})
CRITICALbackend/open_webui/routers/users.py258 'workspace': WorkspacePermissions(**request.app.state.config.USER_PERMISSIONS.get('workspace', {})),
CRITICALbackend/open_webui/routers/users.py259 'sharing': SharingPermissions(**request.app.state.config.USER_PERMISSIONS.get('sharing', {})),
CRITICALbackend/open_webui/routers/users.py260 'access_grants': AccessGrantsPermissions(**request.app.state.config.USER_PERMISSIONS.get('access_grants', {})),
CRITICALbackend/open_webui/routers/users.py261 'chat': ChatPermissions(**request.app.state.config.USER_PERMISSIONS.get('chat', {})),
CRITICALbackend/open_webui/routers/users.py262 'features': FeaturesPermissions(**request.app.state.config.USER_PERMISSIONS.get('features', {})),
CRITICALbackend/open_webui/routers/users.py263 'settings': SettingsPermissions(**request.app.state.config.USER_PERMISSIONS.get('settings', {})),
CRITICALbackend/open_webui/routers/openai.py302 idx = request.app.state.config.OPENAI_API_BASE_URLS.index('https://api.openai.com/v1')
CRITICALbackend/open_webui/routers/openai.py318 api_config = request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/openai.py320 request.app.state.config.OPENAI_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/openai.py1334 api_config = request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/openai.py1336 request.app.state.config.OPENAI_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/openai.py287 key: value for key, value in request.app.state.config.OPENAI_API_CONFIGS.items() if key in keys
CRITICALbackend/open_webui/routers/openai.py621 api_config = request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/openai.py623 request.app.state.config.OPENAI_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/openai.py1144 api_config = request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/openai.py1146 request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/openai.py1436 api_config = request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/openai.py1438 request.app.state.config.OPENAI_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/openai.py1545 api_config = request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/openai.py1547 request.app.state.config.OPENAI_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/images.py313 auth1111_byte_string = request.app.state.config.AUTOMATIC1111_API_AUTH.encode('utf-8')
CRITICALbackend/open_webui/routers/audio.py541 locale = '-'.join(request.app.state.config.TTS_VOICE.split('-')[:2])
CRITICALbackend/open_webui/routers/audio.py1376 if not request.app.state.config.TTS_OPENAI_API_BASE_URL.startswith('https://api.openai.com'):
CRITICALbackend/open_webui/routers/audio.py1437 if not request.app.state.config.TTS_OPENAI_API_BASE_URL.startswith('https://api.openai.com'):
CRITICALbackend/open_webui/routers/ollama.py297 key: value for key, value in request.app.state.config.OLLAMA_API_CONFIGS.items() if key in keys
CRITICALbackend/open_webui/routers/ollama.py338 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py340 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py356 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py358 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py472 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py474 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py490 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py492 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py524 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py526 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py594 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py595 str(idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {})
CRITICALbackend/open_webui/routers/ollama.py889 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py891 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py948 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py950 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py1010 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py1012 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py1137 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py1139 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py1226 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py1228 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py1292 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py1294 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py1344 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py1346 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/routers/ollama.py1402 api_config = request.app.state.config.OLLAMA_API_CONFIGS.get(
CRITICALbackend/open_webui/routers/ollama.py1404 request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support
CRITICALbackend/open_webui/storage/provider.py35from azure.core.exceptions import ResourceNotFoundError
CRITICALbackend/open_webui/retrieval/vector/dbs/weaviate.py115 vector_config=weaviate.classes.config.Configure.Vectors.self_provided(),
Hyper-Verbose Identifiers422 hits · 408 pts
SeverityFileLineSnippet
LOWbackend/open_webui/functions.py58async def get_function_module_by_id(request: Request, pipe_id: str):
LOWbackend/open_webui/functions.py153async def generate_function_chat_completion(request, form_data, user, models: dict = {}):
LOWbackend/open_webui/tasks.py25async def redis_task_command_listener(app):
LOWbackend/open_webui/main.py2279async def list_tasks_by_chat_id_endpoint(request: Request, chat_id: str, user=Depends(get_verified_user)):
LOWbackend/open_webui/main.py2297async def stop_tasks_by_chat_id_endpoint(request: Request, chat_id: str, user=Depends(get_verified_user)):
LOWbackend/open_webui/main.py2515async def get_app_latest_release_version(user=Depends(get_verified_user)):
LOWbackend/open_webui/routers/functions.py378async def get_function_valves_by_id(
LOWbackend/open_webui/routers/functions.py404async def get_function_valves_spec_by_id(
LOWbackend/open_webui/routers/functions.py434async def update_function_valves_by_id(
LOWbackend/open_webui/routers/functions.py480async def get_function_user_valves_by_id(
LOWbackend/open_webui/routers/functions.py501async def get_function_user_valves_spec_by_id(
LOWbackend/open_webui/routers/functions.py526async def update_function_user_valves_by_id(
LOWbackend/open_webui/routers/files.py522async def get_file_data_content_by_id(
LOWbackend/open_webui/routers/files.py552async def update_file_data_content_by_id(
LOWbackend/open_webui/routers/files.py675async def get_html_file_content_by_id(
LOWbackend/open_webui/routers/terminals.py191async def _resolve_authenticated_connection(ws: WebSocket, server_id: str):
LOWbackend/open_webui/routers/configs.py254async def get_terminal_servers_config(request: Request, user=Depends(get_admin_user)):
LOWbackend/open_webui/routers/configs.py261async def set_terminal_servers_config(
LOWbackend/open_webui/routers/configs.py278async def verify_terminal_server_connection(
LOWbackend/open_webui/routers/configs.py335async def put_terminal_server_policy(
LOWbackend/open_webui/routers/configs.py370async def verify_tool_servers_config(request: Request, form_data: ToolServerConnection, user=Depends(get_admin_user)):
LOWbackend/open_webui/routers/configs.py523async def get_code_execution_config(request: Request, user=Depends(get_admin_user)):
LOWbackend/open_webui/routers/configs.py544async def set_code_execution_config(
LOWbackend/open_webui/routers/models.py49def _safe_static_redirect_path(url: str) -> Optional[str]:
LOWbackend/open_webui/routers/models.py635async def update_model_access_by_id(
LOWbackend/open_webui/routers/skills.py336async def update_skill_access_by_id(
LOWbackend/open_webui/routers/users.py256async def get_default_user_permissions(request: Request, user=Depends(get_admin_user)):
LOWbackend/open_webui/routers/users.py268async def update_default_user_permissions(request: Request, form_data: UserPermissions, user=Depends(get_admin_user)):
LOWbackend/open_webui/routers/users.py279async def get_user_settings_by_session_user(
LOWbackend/open_webui/routers/users.py292async def update_user_settings_by_session_user(
LOWbackend/open_webui/routers/users.py329async def get_user_status_by_session_user(
LOWbackend/open_webui/routers/users.py349async def update_user_status_by_session_user(
LOWbackend/open_webui/routers/users.py376async def get_user_info_by_session_user(user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)):
LOWbackend/open_webui/routers/users.py387async def update_user_info_by_session_user(
LOWbackend/open_webui/routers/users.py460async def get_user_oauth_sessions_by_id(
LOWbackend/open_webui/routers/users.py479async def get_user_profile_image_by_id(user_id: str, user=Depends(get_verified_user)):
LOWbackend/open_webui/routers/users.py526async def get_user_active_status_by_id(
LOWbackend/open_webui/routers/tools.py680async def get_tools_valves_spec_by_id(
LOWbackend/open_webui/routers/tools.py730async def update_tools_valves_by_id(
LOWbackend/open_webui/routers/tools.py793async def get_tools_user_valves_by_id(
LOWbackend/open_webui/routers/tools.py830async def get_tools_user_valves_spec_by_id(
LOWbackend/open_webui/routers/tools.py875async def update_tools_user_valves_by_id(
LOWbackend/open_webui/routers/prompts.py451async def update_prompt_access_by_id(
LOWbackend/open_webui/routers/prompts.py661async def delete_prompt_history_entry(
LOWbackend/open_webui/routers/auths.py882async def delete_oauth_session_by_provider(
LOWbackend/open_webui/routers/calendar.py36async def check_calendar_permission(request: Request, user):
LOWbackend/open_webui/routers/openai.py137def openai_reasoning_model_handler(payload):
LOWbackend/open_webui/routers/openai.py224def get_microsoft_entra_id_access_token():
LOWbackend/open_webui/routers/openai.py552 def is_supported_openai_models(model_id):
LOWbackend/open_webui/routers/openai.py903def convert_to_responses_payload(payload: dict) -> dict:
LOWbackend/open_webui/routers/scim.py412async def get_service_provider_config():
LOWbackend/open_webui/routers/automations.py41async def check_automations_permission(request, user):
LOWbackend/open_webui/routers/retrieval.py2341async def _validate_collection_access(collection_names: list[str], user, access_type: str = 'read') -> None:
LOWbackend/open_webui/routers/retrieval.py1276def merge_docs_to_target_size(
LOWbackend/open_webui/routers/retrieval.py2212 async def search_query_with_semaphore(query):
LOWbackend/open_webui/routers/retrieval.py2501async def delete_entries_from_collection(
LOWbackend/open_webui/routers/chats.py55async def get_session_user_chat_list(
LOWbackend/open_webui/routers/chats.py94async def get_session_user_chat_usage_stats(
LOWbackend/open_webui/routers/chats.py216 def get_message_content_length(message):
LOWbackend/open_webui/routers/chats.py358async def generate_chat_stats_jsonl_generator(user_id, filter):
362 more matches not shown…
Decorative Section Separators88 hits · 260 pts
SeverityFileLineSnippet
MEDIUMbackend/open_webui/tasks.py44### ------------------------------
MEDIUMbackend/open_webui/tasks.py46### ------------------------------
MEDIUMbackend/open_webui/routers/terminals.py186# ---------------------------------------------------------------------------
MEDIUMbackend/open_webui/routers/terminals.py188# ---------------------------------------------------------------------------
MEDIUMbackend/open_webui/tools/builtin.py179# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py181# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py255# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py257# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py392# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py394# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2532# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2534# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2862# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2864# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py47# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py49# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py565# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py567# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py747# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py749# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py1025# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py1027# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py1176# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py1178# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py1458# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py1460# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2324# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2326# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2384# =============================================================================
MEDIUMbackend/open_webui/tools/builtin.py2386# =============================================================================
MEDIUMbackend/open_webui/internal/db.py50# ─────────────────────────────────────────────────────────────────────
MEDIUMbackend/open_webui/internal/db.py211# ============================================================
MEDIUMbackend/open_webui/internal/db.py214# ============================================================
MEDIUMbackend/open_webui/internal/db.py327# ============================================================
MEDIUMbackend/open_webui/internal/db.py329# ============================================================
MEDIUMbackend/open_webui/utils/telemetry/metrics.py58# ---------------------------------------------------------------------------
MEDIUMbackend/open_webui/utils/telemetry/metrics.py68# ---------------------------------------------------------------------------
MEDIUMsrc/lib/apis/calendar/index.ts72// ── Calendars ─────────────────────────────────
MEDIUMsrc/lib/apis/calendar/index.ts223// ── Events ─────────────────────────────────
MEDIUMsrc/lib/utils/pptxToHtml.ts34 // ── Read slide dimensions from presentation.xml ──────────────────
MEDIUMsrc/lib/utils/pptxToHtml.ts48 // ── Collect media files (images) as base64 data URIs ─────────────
MEDIUMsrc/lib/utils/pptxToHtml.ts71 // ── Discover slide files ─────────────────────────────────────────
MEDIUMsrc/lib/utils/pptxToHtml.ts107 // ── Create canvas and render slide ───────────────────────────
MEDIUMsrc/lib/utils/pptxToHtml.ts144 // ── Picture ──────────────────────────────────────────────
MEDIUMsrc/lib/utils/pptxToHtml.ts164 // ── Text shape ───────────────────────────────────────────
MEDIUMsrc/lib/utils/connections.ts10// ─── OpenAI Connections ─────────────────────────────────
MEDIUMsrc/lib/utils/connections.ts77// ─── Terminal Server Connections ────────────────────────
MEDIUMsrc/lib/components/chat/PyodideFileNav.svelte23 // ── State ─────────────────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/PyodideFileNav.svelte47 // ── Navigation history ──────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/PyodideFileNav.svelte98 // ── Worker management ─────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/PyodideFileNav.svelte130 // ── Breadcrumbs ───────────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/PyodideFileNav.svelte146 // ── Operations ────────────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/PyodideFileNav.svelte312 // ── Drag and drop ─────────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/PyodideFileNav.svelte331 // ── Lifecycle ─────────────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/FileNav.svelte214 // ── Upload / folder creation ─────────────────────────────────────────
MEDIUMsrc/lib/components/chat/FileNav.svelte224 // ── Delete confirmation ──────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/FileNav.svelte229 // ── Terminal resolution ──────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/FileNav.svelte54 // ── Terminal panel state ────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/FileNav.svelte89 // ── Directory state ──────────────────────────────────────────────────
MEDIUMsrc/lib/components/chat/FileNav.svelte95 // ── Sort state ──────────────────────────────────────────────────────
28 more matches not shown…
Unused Imports318 hits · 253 pts
SeverityFileLineSnippet
LOWbackend/open_webui/functions.py9
LOWbackend/open_webui/functions.py9
LOWbackend/open_webui/functions.py9
LOWbackend/open_webui/functions.py9
LOWbackend/open_webui/functions.py9
LOWbackend/open_webui/functions.py9
LOWbackend/open_webui/functions.py9
LOWbackend/open_webui/functions.py19
LOWbackend/open_webui/functions.py22
LOWbackend/open_webui/functions.py33
LOWbackend/open_webui/functions.py42
LOWbackend/open_webui/functions.py42
LOWbackend/open_webui/functions.py42
LOWbackend/open_webui/tasks.py8
LOWbackend/open_webui/config.py7
LOWbackend/open_webui/config.py22
LOWbackend/open_webui/config.py22
LOWbackend/open_webui/config.py22
LOWbackend/open_webui/config.py22
LOWbackend/open_webui/__init__.py69
LOWbackend/open_webui/main.py2
LOWbackend/open_webui/main.py7
LOWbackend/open_webui/main.py10
LOWbackend/open_webui/main.py11
LOWbackend/open_webui/main.py16
LOWbackend/open_webui/main.py16
LOWbackend/open_webui/main.py16
LOWbackend/open_webui/main.py20
LOWbackend/open_webui/main.py21
LOWbackend/open_webui/main.py25
LOWbackend/open_webui/main.py28
LOWbackend/open_webui/main.py28
LOWbackend/open_webui/main.py28
LOWbackend/open_webui/main.py28
LOWbackend/open_webui/main.py43
LOWbackend/open_webui/main.py124
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/main.py127
LOWbackend/open_webui/routers/functions.py1
LOWbackend/open_webui/routers/functions.py6
LOWbackend/open_webui/routers/files.py39
LOWbackend/open_webui/routers/files.py41
LOWbackend/open_webui/routers/files.py42
LOWbackend/open_webui/routers/tasks.py1
LOWbackend/open_webui/routers/tasks.py2
LOWbackend/open_webui/routers/tasks.py7
LOWbackend/open_webui/routers/tasks.py27
LOWbackend/open_webui/routers/configs.py2
LOWbackend/open_webui/routers/configs.py12
258 more matches not shown…
Deep Nesting261 hits · 190 pts
SeverityFileLineSnippet
LOWcontribution_stats.py42
LOWbackend/open_webui/functions.py77
LOWbackend/open_webui/config.py342
LOWbackend/open_webui/main.py1545
LOWbackend/open_webui/main.py1674
LOWbackend/open_webui/main.py2617
LOWbackend/open_webui/main.py1974
LOWbackend/open_webui/routers/functions.py146
LOWbackend/open_webui/routers/files.py105
LOWbackend/open_webui/routers/files.py458
LOWbackend/open_webui/routers/files.py612
LOWbackend/open_webui/routers/files.py782
LOWbackend/open_webui/routers/files.py114
LOWbackend/open_webui/routers/files.py476
LOWbackend/open_webui/routers/terminals.py74
LOWbackend/open_webui/routers/terminals.py244
LOWbackend/open_webui/routers/terminals.py297
LOWbackend/open_webui/routers/terminals.py311
LOWbackend/open_webui/routers/configs.py179
LOWbackend/open_webui/routers/configs.py370
LOWbackend/open_webui/routers/models.py280
LOWbackend/open_webui/routers/models.py466
LOWbackend/open_webui/routers/users.py479
LOWbackend/open_webui/routers/users.py540
LOWbackend/open_webui/routers/tools.py65
LOWbackend/open_webui/routers/auths.py319
LOWbackend/open_webui/routers/auths.py571
LOWbackend/open_webui/routers/auths.py789
LOWbackend/open_webui/routers/calendar.py135
LOWbackend/open_webui/routers/openai.py158
LOWbackend/open_webui/routers/openai.py299
LOWbackend/open_webui/routers/openai.py370
LOWbackend/open_webui/routers/openai.py496
LOWbackend/open_webui/routers/openai.py533
LOWbackend/open_webui/routers/openai.py607
LOWbackend/open_webui/routers/openai.py703
LOWbackend/open_webui/routers/openai.py903
LOWbackend/open_webui/routers/openai.py1045
LOWbackend/open_webui/routers/openai.py1080
LOWbackend/open_webui/routers/openai.py1307
LOWbackend/open_webui/routers/openai.py1407
LOWbackend/open_webui/routers/openai.py1511
LOWbackend/open_webui/routers/openai.py567
LOWbackend/open_webui/routers/scim.py51
LOWbackend/open_webui/routers/scim.py647
LOWbackend/open_webui/routers/scim.py702
LOWbackend/open_webui/routers/scim.py936
LOWbackend/open_webui/routers/retrieval.py163
LOWbackend/open_webui/routers/retrieval.py1340
LOWbackend/open_webui/routers/retrieval.py1547
LOWbackend/open_webui/routers/retrieval.py1868
LOWbackend/open_webui/routers/retrieval.py2182
LOWbackend/open_webui/routers/retrieval.py2559
LOWbackend/open_webui/routers/images.py84
LOWbackend/open_webui/routers/images.py353
LOWbackend/open_webui/routers/images.py528
LOWbackend/open_webui/routers/images.py787
LOWbackend/open_webui/routers/chats.py94
LOWbackend/open_webui/routers/chats.py213
LOWbackend/open_webui/routers/chats.py358
201 more matches not shown…
Redundant / Tautological Comments94 hits · 145 pts
SeverityFileLineSnippet
LOWbackend/start.sh48# Check if SPACE_ID is set, if so, configure for space
LOWbackend/open_webui/functions.py89 # Check if function is a manifold
LOWbackend/open_webui/functions.py219 # Check if tool_ids is None
LOWbackend/open_webui/config.py1778 # Check if the scheme is either http or https, or a custom scheme
LOWbackend/open_webui/env.py288 # Check if the data directory exists in the package directory
LOWbackend/open_webui/env.py319# Check if the file exists
LOWbackend/open_webui/main.py1696 # Check if user has access to the model
LOWbackend/open_webui/routers/files.py631 # Check if the file already exists in the cache
LOWbackend/open_webui/routers/files.py698 # Check if the file already exists in the cache
LOWbackend/open_webui/routers/files.py747 # Check if the file already exists in the cache
LOWbackend/open_webui/routers/tasks.py179 # Check if the user has a custom task model
LOWbackend/open_webui/routers/tasks.py257 # Check if the user has a custom task model
LOWbackend/open_webui/routers/tasks.py326 # Check if the user has a custom task model
LOWbackend/open_webui/routers/tasks.py389 # Check if the user has a custom task model
LOWbackend/open_webui/routers/tasks.py470 # Check if the user has a custom task model
LOWbackend/open_webui/routers/tasks.py549 # Check if the user has a custom task model
LOWbackend/open_webui/routers/tasks.py612 # Check if the user has a custom task model
LOWbackend/open_webui/routers/auths.py1095 # Check if the input string matches the pattern
LOWbackend/open_webui/routers/auths.py1312 # Check if provider is configured
LOWbackend/open_webui/routers/openai.py312 # Check if the file already exists in the cache
LOWbackend/open_webui/routers/openai.py1324 # Check if model is already in app state cache to avoid expensive get_all_models() call
LOWbackend/open_webui/routers/openai.py271 # Check if API KEYS length is same than API URLS length
LOWbackend/open_webui/routers/openai.py381 # Check if API KEYS length is same than API URLS length
LOWbackend/open_webui/routers/openai.py1128 # Check if model is already in app state cache to avoid expensive get_all_models() call
LOWbackend/open_webui/routers/openai.py1167 # Check if model is a reasoning model that needs special handling
LOWbackend/open_webui/routers/openai.py1250 # Check if response is SSE
LOWbackend/open_webui/routers/openai.py1475 # Check if response is SSE
LOWbackend/open_webui/routers/openai.py1592 # Check if response is SSE
LOWbackend/open_webui/routers/scim.py262 # Check if SCIM is enabled
LOWbackend/open_webui/routers/retrieval.py2562 # Check if the directory exists
LOWbackend/open_webui/routers/retrieval.py1368 # Check if entries with the same hash (metadata.hash) already exist
LOWbackend/open_webui/routers/retrieval.py1378 # Check if the existing document belongs to the same file
LOWbackend/open_webui/routers/retrieval.py1599 # Check if the file has already been processed and save the content
LOWbackend/open_webui/routers/chats.py403 # Check if the user has permission to share/export chats
LOWbackend/open_webui/routers/chats.py452 # Check if the user has permission to share/export chats
LOWbackend/open_webui/routers/chats.py936 # Check if user has access via access grants (shared_chat grants)
LOWbackend/open_webui/routers/audio.py405 # Check if the file already exists in the cache
LOWbackend/open_webui/routers/channels.py1643 # Check if it's url or base64
LOWbackend/open_webui/routers/folders.py155 # Check if folder with same name exists
LOWbackend/open_webui/routers/ollama.py874 # Check if model is already in app state cache to avoid expensive get_all_models() call
LOWbackend/open_webui/routers/ollama.py933 # Check if model is already in app state cache to avoid expensive get_all_models() call
LOWbackend/open_webui/routers/pipelines.py222 # Check if the uploaded file is a python file
LOWbackend/open_webui/tools/builtin.py1343 # Check if user has access to the channel
LOWbackend/open_webui/internal/wrappers.py45 # Check if using SQLCipher protocol
LOWbackend/open_webui/utils/misc.py1031 # Check if buffer exceeds limit
LOWbackend/open_webui/utils/files.py210 # Check if the file already exists in the cache
LOWbackend/open_webui/utils/task.py21 # Check if the user has a custom task model and use that model
LOWbackend/open_webui/utils/tools.py1212 # Check if URL ends with .yaml or .yml to determine format
LOWbackend/open_webui/utils/payload.py216 # Check if the content is a string (just a simple message)
LOWbackend/open_webui/utils/payload.py248 # Iterate through the list of content items
LOWbackend/open_webui/utils/payload.py250 # Check if it's a text type
LOWbackend/open_webui/utils/payload.py254 # Check if it's an image URL type
LOWbackend/open_webui/utils/chat.py208 # Check if user has access to the model
LOWbackend/open_webui/utils/rate_limit.py109 # Increment bucket
LOWbackend/open_webui/utils/filter.py81 # Check if the function has a file_handler variable
LOWbackend/open_webui/utils/middleware.py1561 # Check if generated queries are empty
LOWbackend/open_webui/utils/middleware.py1565 # Check if queries are not found
LOWbackend/open_webui/utils/middleware.py2880 # Check if file context extraction is enabled for this model (default True)
LOWbackend/open_webui/utils/middleware.py1958 # Check if all files are in full context mode
LOWbackend/open_webui/utils/middleware.py2393 # Check if the request has chat_id and is inside of a folder
34 more matches not shown…
Cross-File Repetition14 hits · 70 pts
SeverityFileLineSnippet
HIGHbackend/open_webui/config.py0async save — used for all runtime config persistence.
HIGHbackend/open_webui/config.py0async save — used for all runtime config persistence.
HIGHbackend/open_webui/config.py0async save — used for all runtime config persistence.
HIGH…ckend/open_webui/retrieval/vector/dbs/elasticsearch.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGH…open_webui/retrieval/vector/dbs/qdrant_multitenancy.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGHbackend/open_webui/retrieval/vector/dbs/milvus.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGHbackend/open_webui/retrieval/vector/dbs/pinecone.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGHbackend/open_webui/retrieval/vector/dbs/opensearch.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGHbackend/open_webui/retrieval/vector/dbs/qdrant.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGHbackend/open_webui/retrieval/vector/dbs/s3vector.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGHbackend/open_webui/retrieval/vector/dbs/opengauss.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGHbackend/open_webui/retrieval/vector/dbs/weaviate.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGH…open_webui/retrieval/vector/dbs/milvus_multitenancy.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
HIGH…kend/open_webui/retrieval/vector/dbs/mariadb_vector.py0note: this vector database integration is community-supported and maintained on a best-effort basis.
Verbosity Indicators28 hits · 58 pts
SeverityFileLineSnippet
LOWbackend/open_webui/retrieval/loaders/mineru.py184 # Step 1: Request presigned upload URL
LOWbackend/open_webui/retrieval/loaders/mineru.py187 # Step 2: Upload file to presigned URL
LOWbackend/open_webui/retrieval/loaders/mineru.py190 # Step 3: Poll for results
LOWbackend/open_webui/retrieval/loaders/mineru.py193 # Step 4: Download and extract markdown from ZIP
LOWsrc/lib/apis/index.ts790 // Step 1: Safely extract the response string
LOWsrc/lib/apis/index.ts793 // Step 2: Attempt to fix common JSON format issues like single quotes
LOWsrc/lib/apis/index.ts796 // Step 3: Find the relevant JSON block within the response
LOWsrc/lib/apis/index.ts800 // Step 4: Check if we found a valid JSON block (with both `{` and `}`)
LOWsrc/lib/apis/index.ts804 // Step 5: Parse the JSON block
LOWsrc/lib/apis/index.ts807 // Step 6: If there's a "tags" key, return the tags array; otherwise, return an empty array
LOWsrc/lib/apis/index.ts862 // Step 1: Safely extract the response string
LOWsrc/lib/apis/index.ts865 // Step 2: Attempt to fix common JSON format issues like single quotes
LOWsrc/lib/apis/index.ts868 // Step 3: Find the relevant JSON block within the response
LOWsrc/lib/apis/index.ts872 // Step 4: Check if we found a valid JSON block (with both `{` and `}`)
LOWsrc/lib/apis/index.ts876 // Step 5: Parse the JSON block
LOWsrc/lib/apis/index.ts879 // Step 6: If there's a "follow_ups" key, return the follow_ups array; otherwise, return an empty array
LOWsrc/lib/apis/index.ts934 // Step 1: Safely extract the response string
LOWsrc/lib/apis/index.ts937 // Step 2: Attempt to fix common JSON format issues like single quotes
LOWsrc/lib/apis/index.ts940 // Step 3: Find the relevant JSON block within the response
LOWsrc/lib/apis/index.ts944 // Step 4: Check if we found a valid JSON block (with both `{` and `}`)
LOWsrc/lib/apis/index.ts948 // Step 5: Parse the JSON block
LOWsrc/lib/apis/index.ts951 // Step 6: If there's a "tags" key, return the tags array; otherwise, return an empty array
LOWsrc/lib/apis/index.ts1057 // Step 1: Safely extract the response string
LOWsrc/lib/apis/index.ts1067 // Step 5: Parse the JSON block
LOWsrc/lib/apis/index.ts1070 // Step 6: If there's a "queries" key, return the queries array; otherwise, return an empty array
LOWsrc/lib/apis/index.ts1140 // Step 5: Parse the JSON block
LOWsrc/lib/apis/index.ts1143 // Step 6: If there's a "queries" key, return the queries array; otherwise, return an empty array
LOWsrc/lib/components/notes/NoteEditor.svelte298 // Step 1: Safely extract the response string
Self-Referential Comments23 hits · 54 pts
SeverityFileLineSnippet
MEDIUMbackend/open_webui/tasks.py109 task = asyncio.create_task(coroutine) # Create the task
MEDIUMbackend/open_webui/main.py693 # Creating a mock request object to pass to get_all_models
MEDIUMbackend/open_webui/routers/files.py760 # Create a generator that encodes the file content
MEDIUMbackend/open_webui/routers/retrieval.py2311 # Create a single collection for all documents
MEDIUMbackend/open_webui/internal/db.py225 # Create a custom creator function that uses sqlcipher3
MEDIUMbackend/open_webui/utils/misc.py561 # Create a SHA256 hash of the final string
MEDIUMbackend/open_webui/utils/misc.py583 # Create a new SHA-256 hash object
MEDIUMbackend/open_webui/utils/chat.py113 # Define a generator to stream responses
MEDIUMbackend/open_webui/utils/chat.py133 # Define a background task to run the event generator
MEDIUMbackend/open_webui/utils/plugin.py221 # Create a temporary file and use it to define `__file__` so
MEDIUMbackend/open_webui/utils/plugin.py265 # Create a temporary file and use it to define `__file__` so
MEDIUMbackend/open_webui/utils/middleware.py3582 task_id = str(uuid4()) # Create a unique task ID.
MEDIUMbackend/open_webui/models/functions.py213 # Create a dict for O(1) lookup
MEDIUMbackend/open_webui/retrieval/utils.py457 # Create the output dictionary
MEDIUMbackend/open_webui/retrieval/vector/dbs/pinecone.py414 # Create a zero vector for the dimension as Pinecone requires a vector
MEDIUMbackend/open_webui/retrieval/vector/dbs/pgvector.py150 # Create the tables if they do not exist
MEDIUMbackend/open_webui/retrieval/vector/dbs/pgvector.py416 # Create the values for query vectors
MEDIUMbackend/open_webui/retrieval/vector/dbs/oracle23ai.py90 # Create the appropriate connection pool based on DB type
MEDIUMbackend/open_webui/socket/main.py220 # Creating a list of sids to remove if they have timed out
MEDIUM…c/lib/components/admin/Functions/FunctionEditor.svelte85 # This function is the pre-processor for the API where various checks on the input can be performed.
MEDIUM…c/lib/components/admin/Functions/FunctionEditor.svelte104 # This function is the post-processor for the API, which can be used to modify the response
MEDIUM…c/lib/components/admin/Functions/FunctionEditor.svelte142 # This function is the pre-processor for the API where various checks on the input can be performed.
MEDIUM…c/lib/components/admin/Functions/FunctionEditor.svelte159 # This function is the post-processor for the API, which can be used to modify the response
Fake / Example Data18 hits · 22 pts
SeverityFileLineSnippet
LOWcypress/support/e2e.ts7 email: 'admin@example.com',
LOWcypress/data/example-doc.txt1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq
LOWcypress/data/example-doc.txt1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliq
LOWcypress/data/example-doc.txt3Enim nulla aliquet porttitor lacus luctus accumsan tortor posuere ac. Viverra nibh cras pulvinar mattis nunc. Lacinia at
LOWcypress/data/example-doc.txt9Facilisis gravida neque convallis a cras. Nisl rhoncus mattis rhoncus urna neque viverra justo. Faucibus purus in massa
LOWcypress/data/example-doc.txt9Facilisis gravida neque convallis a cras. Nisl rhoncus mattis rhoncus urna neque viverra justo. Faucibus purus in massa
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py22 'name': 'John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py34 name='John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py55 name='John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py78 name='John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py89 assert data['name'] == 'John Doe'
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py100 'name': 'John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py108 assert data['name'] == 'John Doe'
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py140 name='John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py149 'name': 'John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py157 name='John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py172 name='John Doe',
LOW…ckend/open_webui/test/apps/webui/routers/test_auths.py188 name='John Doe',
AI Slop Vocabulary9 hits · 21 pts
SeverityFileLineSnippet
MEDIUMpackage-lock.json12810 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
MEDIUMrun-compose.sh23 # This is a simplified list, and in a real-world scenario, you'd want a more comprehensive one
MEDIUMbackend/open_webui/test/util/test_redis.py715 """Test all factory methods in async mode - comprehensive test"""
MEDIUMbackend/open_webui/utils/oauth.py719 # TODO: Replace this logic with a more robust OAuth client registration validation
LOWbackend/open_webui/utils/mcp/client.py164 # We simply call aclose() directly. If the task is cancelled, the
MEDIUM…kend/open_webui/retrieval/web/testdata/google_pse.json405 "htmlSnippet": "The Sam Fox School's Spring 2024 Public \u003cb\u003eLecture\u003c/b\u003e Series highlights desi
MEDIUMbackend/open_webui/retrieval/loaders/mistral.py709 # MONITORING: Log comprehensive batch processing statistics
MEDIUMsrc/lib/components/common/Textarea.svelte40 // and it makes the fix 100% robust without relying on hardcoded CSS classes.
MEDIUMsrc/lib/components/common/DropdownSub.svelte56 // Vertical positioning with robust bounds clamping (shift method)
Over-Commented Block16 hits · 16 pts
SeverityFileLineSnippet
LOWcypress/e2e/documents.cy.ts1// eslint-disable-next-line @typescript-eslint/triple-slash-reference
LOWbackend/open_webui/env.py401# SQLite PRAGMA tuning — these defaults are optimised for WAL-mode web-server
LOWbackend/open_webui/alembic.ini1# A generic, single database configuration.
LOWbackend/open_webui/alembic.ini21# timezone =
LOWbackend/open_webui/alembic.ini41
LOWbackend/open_webui/alembic.ini61# sqlalchemy.url = REPLACE_WITH_DATABASE_URL
LOWbackend/open_webui/main.py841########################################
LOWbackend/open_webui/main.py1381# WEBUI
LOWbackend/open_webui/main.py2041 else:
LOWbackend/open_webui/routers/evaluations.py41# 3. The Elo formula: new_rating = old_rating + K * (actual - expected)
LOWbackend/open_webui/routers/ollama.py81##########################################
LOWscripts/generate-sbom.sh1#!/usr/bin/env bash
LOWsrc/lib/apis/ollama/index.ts541
LOW…/lib/components/common/RichTextInput/AutoCompletion.js141
LOW…/lib/components/common/RichTextInput/AutoCompletion.js241 // const { state, dispatch } = view;
LOWsrc/routes/+layout.js1// if you want to generate a static html file
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippet
HIGHbackend/open_webui/retrieval/vector/dbs/oracle23ai.py356 Handle Decimal objects for JSON serialization. Args: obj: Object to serialize Ret
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippet
HIGHsrc/lib/workers/pyodide.worker.ts217 print(f"data:image/png;base64,{img_str}")
Slop Phrases4 hits · 4 pts
SeverityFileLineSnippet
LOW…kend/open_webui/retrieval/web/testdata/google_pse.json238 "og:description": "Welcome to Control Systems Lectures! This collection of videos is intended to supplement a fir
LOW…kend/open_webui/retrieval/web/testdata/google_pse.json254 "twitter:description": "Welcome to Control Systems Lectures! This collection of videos is intended to supplement
LOWsrc/lib/components/workspace/Tools/ToolkitEditor.svelte62 # Add your custom tools using pure Python code here, make sure to add type hints and descriptions
MEDIUM…c/lib/components/admin/Functions/FunctionEditor.svelte226 # This is where you can add your custom pipelines like RAG.
Example Usage Blocks2 hits · 3 pts
SeverityFileLineSnippet
LOWscripts/generate-sbom.sh13# Usage:
LOWsrc/lib/components/common/RichTextInput.svelte727 // Usage example