open-webui 0.3.27.dev2__tar.gz → 0.3.27.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/PKG-INFO +1 -1
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/socket/main.py +0 -5
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/main.py +5 -2
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/package-lock.json +2 -2
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/package.json +1 -1
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/utils/index.ts +0 -18
- open_webui-0.3.27.dev3/src/lib/utils/marked/katex-extension.ts +153 -0
- open_webui-0.3.27.dev2/src/lib/utils/marked/katex-extension.ts +0 -138
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.dockerignore +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.env.example +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.eslintignore +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.eslintrc.cjs +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.gitattributes +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/FUNDING.yml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/dependabot.yml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/pull_request_template.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/build-release.yml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/deploy-to-hf-spaces.yml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/docker-build.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/format-backend.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/format-build-frontend.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/integration-test.yml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/lint-backend.disabled +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/lint-frontend.disabled +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/release-pypi.yml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.gitignore +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.npmrc +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.prettierignore +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.prettierrc +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/CHANGELOG.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/CODE_OF_CONDUCT.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/Caddyfile.localhost +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/Dockerfile +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/INSTALLATION.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/LICENSE +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/Makefile +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/README.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/TROUBLESHOOTING.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/.dockerignore +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/.gitignore +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/data/readme.txt +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/dev.sh +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/__init__.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/alembic.ini +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/audio/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/images/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/images/utils/comfyui.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/ollama/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/openai/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/brave.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/duckduckgo.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/google_pse.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/jina_search.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/searchapi.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/searxng.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/serper.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/serply.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/serpstack.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/tavily.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/testdata/brave.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/testdata/google_pse.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/testdata/searchapi.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/testdata/searxng.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/testdata/serper.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/testdata/serply.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/testdata/serpstack.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/utils.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/connector.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/dbs/chroma.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/dbs/milvus.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/socket/utils.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/db.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/001_initial_schema.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/002_add_local_sharing.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/003_add_auth_api_key.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/004_add_archived.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/005_add_updated_at.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/006_migrate_timestamps_and_charfields.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/007_add_user_last_active_at.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/008_add_memory.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/009_add_models.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/010_migrate_modelfiles_to_models.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/011_add_user_settings.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/012_add_tools.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/013_add_user_info.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/014_add_files.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/015_add_functions.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/016_add_valves_and_is_active.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/017_add_user_oauth_sub.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/migrations/018_add_function_is_global.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/wrappers.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/main.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/auths.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/chats.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/documents.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/files.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/functions.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/memories.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/models.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/prompts.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/tags.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/tools.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/users.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/auths.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/chats.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/configs.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/documents.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/files.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/functions.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/memories.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/models.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/prompts.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/tools.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/users.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/routers/utils.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/utils.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/config.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/constants.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/data/readme.txt +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/env.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/migrations/README +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/migrations/env.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/migrations/script.py.mako +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/migrations/scripts/revision.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/migrations/util.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/migrations/versions/ca81bd47c050_add_config_table.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/favicon.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/fonts/NotoSans-Bold.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/fonts/NotoSans-Italic.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/fonts/NotoSans-Regular.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/fonts/NotoSansJP-Regular.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/fonts/NotoSansKR-Regular.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/fonts/NotoSansSC-Regular.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/logo.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/splash.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/static/user-import.csv +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/__init__.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/apps/webui/routers/test_auths.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/apps/webui/routers/test_chats.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/apps/webui/routers/test_documents.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/apps/webui/routers/test_models.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/apps/webui/routers/test_prompts.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/apps/webui/routers/test_users.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/util/abstract_integration_test.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/test/util/mock_user.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/logo.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/misc.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/payload.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/response.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/schemas.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/security_headers.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/task.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/tools.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/utils.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/utils/webhook.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/requirements.txt +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/start.sh +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/start_windows.bat +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/bun.lockb +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/confirm_remove.sh +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/data/example-doc.txt +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/e2e/chat.cy.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/e2e/documents.cy.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/e2e/registration.cy.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/e2e/settings.cy.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/support/e2e.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/support/index.d.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress/tsconfig.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/cypress.config.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/demo.gif +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docker-compose.a1111-test.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docker-compose.amdgpu.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docker-compose.api.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docker-compose.data.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docker-compose.gpu.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docker-compose.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docs/CONTRIBUTING.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docs/README.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docs/SECURITY.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/docs/apache.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/hatch_build.py +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/i18next-parser.config.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/helm/README.md +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/kustomization.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/ollama-service.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/ollama-statefulset.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/open-webui.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/webui-deployment.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/webui-ingress.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/webui-pvc.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/base/webui-service.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/gpu/kustomization.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/kubernetes/manifest/gpu/ollama-statefulset-gpu.yaml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/postcss.config.js +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/pyproject.toml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/run-compose.sh +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/run-ollama-docker.sh +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/run.sh +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/scripts/prepare-pyodide.js +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/app.css +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/app.d.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/app.html +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/audio/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/auths/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/chats/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/configs/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/documents/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/files/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/functions/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/images/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/memories/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/models/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/ollama/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/openai/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/prompts/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/rag/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/streaming/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/tools/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/users/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/apis/utils/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/AddFilesPlaceholder.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/ChangelogModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/AddUserModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/EditUserModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Audio.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Connections.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Database.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Documents.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/General.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Images.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Interface.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Models.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Pipelines.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/Users.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings/WebSearch.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/Settings.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/admin/UserChatsModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Chat.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/ChatControls.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Controls/Controls.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Controls/Valves.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/CallOverlay/VideoInputMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/CallOverlay.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/Commands/Documents.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/Commands/Models.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/Commands/Prompts.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/Commands.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/FilesOverlay.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/InputMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/Suggestions.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput/VoiceRecording.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/MessageInput.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Citations.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/CitationsModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/CodeBlock.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Error.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Markdown/KatexRenderer.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Markdown.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Message.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/MultiResponseMessages.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Name.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Placeholder.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/ProfileImage.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/ProfileImageBase.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/RateComment.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/ResponseMessage/WebSearchResults.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/ResponseMessage.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/Skeleton.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages/UserMessage.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Messages.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/ModelSelector/Selector.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/ModelSelector.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Overview/Flow.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Overview/Node.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Overview.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/About.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Account/UpdatePassword.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Account.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Audio.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Chats.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/General.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Interface.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Models.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Personalization/AddMemoryModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Personalization/EditMemoryModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Personalization/ManageModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Settings/Personalization.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/SettingsModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/ShareChatModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/ShortcutsModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/TagChatModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/chat/Tags.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Banner.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Checkbox.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/CodeEditor.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Collapsible.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/ConfirmDialog.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Drawer.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Dropdown.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/FileItem.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Image.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/ImagePreview.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Loader.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Modal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Overlay.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Pagination.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Selector.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/SensitiveInput.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Spinner.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Switch.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Tags/TagInput.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Tags/TagList.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Tags.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Tooltip.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/common/Valves.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/documents/AddDocModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/documents/EditDocModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/AdjustmentsHorizontal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ArchiveBox.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ArrowDownTray.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ArrowUpCircle.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Bolt.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Bookmark.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/BookmarkSlash.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChatBubble.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChatBubbleOval.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChatBubbles.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChatMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Check.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChevronDown.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChevronLeft.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChevronRight.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChevronUp.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/ChevronUpDown.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Clipboard.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/DocumentArrowUpSolid.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/DocumentDuplicate.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/EllipsisHorizontal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/EllipsisVertical.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/EyeSlash.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/GarbageBin.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/GlobeAlt.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/GlobeAltSolid.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Headphone.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Heart.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Keyboard.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Lifebuoy.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Link.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/MagnifyingGlass.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Map.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/MenuLines.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Merge.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Pencil.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Plus.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/QuestionMarkCircle.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Search.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Share.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Sparkles.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/Star.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/User.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/WrenchSolid.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/icons/XMark.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Help/HelpMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Help.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Navbar/Menu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Navbar.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Overlay/AccountPending.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Sidebar/ArchivedChatsModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Sidebar/ChatItem.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Sidebar/ChatMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Sidebar/UserMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/Sidebar.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/layout/UpdateInfoToast.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/playground/ChatCompletion.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/playground/Playground.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/playground/TextCompletion.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Documents.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Functions/FunctionEditor.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Functions/FunctionMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Functions.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models/ActionsSelector.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models/Capabilities.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models/FiltersSelector.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models/Knowledge/Selector.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models/Knowledge.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models/ModelMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models/ToolsSelector.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Models.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Prompts/PromptMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Prompts.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Tools/ToolMenu.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Tools/ToolkitEditor.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/Tools.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/common/ManifestModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/components/workspace/common/ValvesModal.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/constants.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ar-BH/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/bg-BG/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/bn-BD/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ca-ES/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ceb-PH/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/de-DE/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/dg-DG/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/en-GB/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/en-US/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/es-ES/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/fa-IR/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/fi-FI/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/fr-CA/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/fr-FR/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/he-IL/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/hi-IN/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/hr-HR/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/id-ID/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/it-IT/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ja-JP/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ka-GE/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ko-KR/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/languages.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/lt-LT/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ms-MY/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/nb-NO/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/nl-NL/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/pa-IN/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/pl-PL/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/pt-BR/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/pt-PT/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ro-RO/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/ru-RU/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/sr-RS/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/sv-SE/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/th-TH/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/tk-TM/transaltion.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/tk-TW/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/tr-TR/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/uk-UA/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/vi-VN/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/zh-CN/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/i18n/locales/zh-TW/translation.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/stores/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/types/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/utils/_template_old.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/utils/characters/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/utils/rag/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/utils/transitions/index.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/lib/workers/pyodide.worker.ts +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/+layout.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/admin/+layout.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/admin/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/admin/settings/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/c/[id]/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/playground/+layout.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/playground/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/+layout.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/documents/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/functions/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/functions/create/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/functions/edit/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/models/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/models/create/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/models/edit/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/prompts/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/prompts/create/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/prompts/edit/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/tools/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/tools/create/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/(app)/workspace/tools/edit/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/+error.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/+layout.js +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/+layout.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/auth/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/error/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/routes/s/[id]/+page.svelte +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/src/tailwind.css +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/assets/fonts/Archivo-Variable.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/assets/fonts/Inter-Variable.ttf +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/assets/fonts/Mona-Sans.woff2 +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/audio/greeting.mp3 +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/doge.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/favicon.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/manifest.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/opensearch.xml +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/pyodide/pyodide-lock.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/robots.txt +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/static/favicon.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/static/splash-dark.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/static/splash.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/themes/rosepine-dawn.css +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/themes/rosepine.css +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/static/user.png +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/svelte.config.js +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/tailwind.config.js +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/test/test_files/image_gen/sd-empty.pt +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/tsconfig.json +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/update_ollama_models.sh +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/uv.lock +0 -0
- {open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/vite.config.ts +0 -0
|
@@ -90,14 +90,9 @@ async def periodic_usage_pool_cleanup():
|
|
|
90
90
|
await asyncio.sleep(TIMEOUT_DURATION)
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
async def on_startup():
|
|
94
|
-
asyncio.create_task(periodic_usage_pool_cleanup())
|
|
95
|
-
|
|
96
|
-
|
|
97
93
|
app = socketio.ASGIApp(
|
|
98
94
|
sio,
|
|
99
95
|
socketio_path="/ws/socket.io",
|
|
100
|
-
on_startup=on_startup(),
|
|
101
96
|
)
|
|
102
97
|
|
|
103
98
|
|
|
@@ -8,6 +8,8 @@ import shutil
|
|
|
8
8
|
import sys
|
|
9
9
|
import time
|
|
10
10
|
import uuid
|
|
11
|
+
import asyncio
|
|
12
|
+
|
|
11
13
|
from contextlib import asynccontextmanager
|
|
12
14
|
from typing import Optional
|
|
13
15
|
|
|
@@ -31,7 +33,7 @@ from open_webui.apps.openai.main import (
|
|
|
31
33
|
from open_webui.apps.openai.main import get_all_models as get_openai_models
|
|
32
34
|
from open_webui.apps.rag.main import app as rag_app
|
|
33
35
|
from open_webui.apps.rag.utils import get_rag_context, rag_template
|
|
34
|
-
from open_webui.apps.socket.main import app as socket_app
|
|
36
|
+
from open_webui.apps.socket.main import app as socket_app, periodic_usage_pool_cleanup
|
|
35
37
|
from open_webui.apps.socket.main import get_event_call, get_event_emitter
|
|
36
38
|
from open_webui.apps.webui.internal.db import Session
|
|
37
39
|
from open_webui.apps.webui.main import app as webui_app
|
|
@@ -184,6 +186,8 @@ https://github.com/open-webui/open-webui
|
|
|
184
186
|
@asynccontextmanager
|
|
185
187
|
async def lifespan(app: FastAPI):
|
|
186
188
|
run_migrations()
|
|
189
|
+
|
|
190
|
+
asyncio.create_task(periodic_usage_pool_cleanup())
|
|
187
191
|
yield
|
|
188
192
|
|
|
189
193
|
|
|
@@ -851,7 +855,6 @@ async def inspect_websocket(request: Request, call_next):
|
|
|
851
855
|
|
|
852
856
|
|
|
853
857
|
app.mount("/ws", socket_app)
|
|
854
|
-
|
|
855
858
|
app.mount("/ollama", ollama_app)
|
|
856
859
|
app.mount("/openai", openai_app)
|
|
857
860
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "open-webui",
|
|
3
|
-
"version": "0.3.27.
|
|
3
|
+
"version": "0.3.27.dev3",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "open-webui",
|
|
9
|
-
"version": "0.3.27.
|
|
9
|
+
"version": "0.3.27.dev3",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@codemirror/lang-javascript": "^6.2.2",
|
|
12
12
|
"@codemirror/lang-python": "^6.1.6",
|
|
@@ -8,23 +8,6 @@ import { TTS_RESPONSE_SPLIT } from '$lib/types';
|
|
|
8
8
|
// Helper functions
|
|
9
9
|
//////////////////////////
|
|
10
10
|
|
|
11
|
-
const convertLatexToSingleLine = (content) => {
|
|
12
|
-
// Patterns to match multiline LaTeX blocks
|
|
13
|
-
const patterns = [
|
|
14
|
-
/(\$\$\s[\s\S]*?\s\$\$)/g, // Match $$ ... $$
|
|
15
|
-
/(\\\[[\s\S]*?\\\])/g, // Match \[ ... \]
|
|
16
|
-
/(\\begin\{[a-z]+\}[\s\S]*?\\end\{[a-z]+\})/g // Match \begin{...} ... \end{...}
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
patterns.forEach((pattern) => {
|
|
20
|
-
content = content.replace(pattern, (match) => {
|
|
21
|
-
return match.replace(/\s*\n\s*/g, ' ').trim();
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
return content;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
11
|
export const replaceTokens = (content, char, user) => {
|
|
29
12
|
const charToken = /{{char}}/gi;
|
|
30
13
|
const userToken = /{{user}}/gi;
|
|
@@ -68,7 +51,6 @@ export const sanitizeResponseContent = (content: string) => {
|
|
|
68
51
|
};
|
|
69
52
|
|
|
70
53
|
export const processResponseContent = (content: string) => {
|
|
71
|
-
content = convertLatexToSingleLine(content);
|
|
72
54
|
return content.trim();
|
|
73
55
|
};
|
|
74
56
|
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import katex from 'katex';
|
|
2
|
+
|
|
3
|
+
const DELIMITER_LIST = [
|
|
4
|
+
{ left: '$$\n', right: '\n$$', display: true },
|
|
5
|
+
{ left: '$$', right: '$$', display: false }, // This should be on top to prevent conflict with $ delimiter
|
|
6
|
+
{ left: '$', right: '$', display: false },
|
|
7
|
+
{ left: '\\pu{', right: '}', display: false },
|
|
8
|
+
{ left: '\\ce{', right: '}', display: false },
|
|
9
|
+
{ left: '\\(', right: '\\)', display: false },
|
|
10
|
+
{ left: '\\[\n', right: '\n\\]', display: true },
|
|
11
|
+
{ left: '\\[', right: '\\]', display: false },
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
// const DELIMITER_LIST = [
|
|
15
|
+
// { left: '$$', right: '$$', display: false },
|
|
16
|
+
// { left: '$', right: '$', display: false },
|
|
17
|
+
// ];
|
|
18
|
+
|
|
19
|
+
// const inlineRule = /^(\${1,2})(?!\$)((?:\\.|[^\\\n])*?(?:\\.|[^\\\n\$]))\1(?=[\s?!\.,:?!。,:]|$)/;
|
|
20
|
+
// const blockRule = /^(\${1,2})\n((?:\\[^]|[^\\])+?)\n\1(?:\n|$)/;
|
|
21
|
+
|
|
22
|
+
let inlinePatterns = [];
|
|
23
|
+
let blockPatterns = [];
|
|
24
|
+
|
|
25
|
+
function escapeRegex(string) {
|
|
26
|
+
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function generateRegexRules(delimiters) {
|
|
30
|
+
delimiters.forEach((delimiter) => {
|
|
31
|
+
const { left, right, display } = delimiter;
|
|
32
|
+
// Ensure regex-safe delimiters
|
|
33
|
+
const escapedLeft = escapeRegex(left);
|
|
34
|
+
const escapedRight = escapeRegex(right);
|
|
35
|
+
|
|
36
|
+
if (!display) {
|
|
37
|
+
inlinePatterns.push(
|
|
38
|
+
`${escapedLeft}((?:\\\\[^]|[^\\\\])+?)${escapedRight}`
|
|
39
|
+
);
|
|
40
|
+
} else {
|
|
41
|
+
blockPatterns.push(
|
|
42
|
+
`${escapedLeft}((?:\\\\[^]|[^\\\\])+?)${escapedRight}`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
const inlineRule = new RegExp(`^(${inlinePatterns.join('|')})(?=[\\s?!.,:?!。,:]|$)`, 'u');
|
|
48
|
+
const blockRule = new RegExp(`^(${blockPatterns.join('|')})(?=[\\s?!.,:?!。,:]|$)`, 'u');
|
|
49
|
+
|
|
50
|
+
return { inlineRule, blockRule };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const { inlineRule, blockRule } = generateRegexRules(DELIMITER_LIST);
|
|
54
|
+
|
|
55
|
+
export default function (options = {}) {
|
|
56
|
+
return {
|
|
57
|
+
extensions: [
|
|
58
|
+
blockKatex(options), // This should be on top to prevent conflict with inline delimiters.
|
|
59
|
+
inlineKatex(options),
|
|
60
|
+
]
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function katexStart(src, displayMode: boolean) {
|
|
65
|
+
let ruleReg = displayMode ? blockRule : inlineRule;
|
|
66
|
+
|
|
67
|
+
let indexSrc = src;
|
|
68
|
+
|
|
69
|
+
while (indexSrc) {
|
|
70
|
+
let index = -1;
|
|
71
|
+
let startIndex = -1;
|
|
72
|
+
let startDelimiter = '';
|
|
73
|
+
let endDelimiter = '';
|
|
74
|
+
for (let delimiter of DELIMITER_LIST) {
|
|
75
|
+
if (delimiter.display !== displayMode) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
startIndex = indexSrc.indexOf(delimiter.left);
|
|
80
|
+
if (startIndex === -1) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
index = startIndex;
|
|
85
|
+
startDelimiter = delimiter.left;
|
|
86
|
+
endDelimiter = delimiter.right;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (index === -1) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const f = index === 0 || indexSrc.charAt(index - 1) === ' ';
|
|
94
|
+
if (f) {
|
|
95
|
+
const possibleKatex = indexSrc.substring(index);
|
|
96
|
+
|
|
97
|
+
if (possibleKatex.match(ruleReg)) {
|
|
98
|
+
return index;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
indexSrc = indexSrc.substring(index + startDelimiter.length).replace(endDelimiter, '');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function katexTokenizer(src, tokens, displayMode: boolean) {
|
|
107
|
+
let ruleReg = displayMode ? blockRule : inlineRule;
|
|
108
|
+
let type = displayMode ? 'blockKatex' : 'inlineKatex';
|
|
109
|
+
|
|
110
|
+
const match = src.match(ruleReg);
|
|
111
|
+
|
|
112
|
+
if (match) {
|
|
113
|
+
const text = match
|
|
114
|
+
.slice(2)
|
|
115
|
+
.filter((item) => item)
|
|
116
|
+
.find((item) => item.trim());
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
type,
|
|
120
|
+
raw: match[0],
|
|
121
|
+
text: text,
|
|
122
|
+
displayMode,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
function inlineKatex(options) {
|
|
130
|
+
return {
|
|
131
|
+
name: 'inlineKatex',
|
|
132
|
+
level: 'inline',
|
|
133
|
+
start(src) {
|
|
134
|
+
return katexStart(src, false);
|
|
135
|
+
},
|
|
136
|
+
tokenizer(src, tokens) {
|
|
137
|
+
return katexTokenizer(src, tokens, false);
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function blockKatex(options) {
|
|
143
|
+
return {
|
|
144
|
+
name: 'blockKatex',
|
|
145
|
+
level: 'block',
|
|
146
|
+
start(src) {
|
|
147
|
+
return katexStart(src, true);
|
|
148
|
+
},
|
|
149
|
+
tokenizer(src, tokens) {
|
|
150
|
+
return katexTokenizer(src, tokens, true);
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import katex from 'katex';
|
|
2
|
-
|
|
3
|
-
const DELIMITER_LIST = [
|
|
4
|
-
{ left: '$$', right: '$$', display: false },
|
|
5
|
-
{ left: '$', right: '$', display: false },
|
|
6
|
-
{ left: '\\pu{', right: '}', display: false },
|
|
7
|
-
{ left: '\\ce{', right: '}', display: false },
|
|
8
|
-
{ left: '\\(', right: '\\)', display: false },
|
|
9
|
-
{ left: '( ', right: ' )', display: false },
|
|
10
|
-
{ left: '\\[', right: '\\]', display: true },
|
|
11
|
-
{ left: '[ ', right: ' ]', display: true }
|
|
12
|
-
];
|
|
13
|
-
|
|
14
|
-
// const DELIMITER_LIST = [
|
|
15
|
-
// { left: '$$', right: '$$', display: false },
|
|
16
|
-
// { left: '$', right: '$', display: false },
|
|
17
|
-
// ];
|
|
18
|
-
|
|
19
|
-
// const inlineRule = /^(\${1,2})(?!\$)((?:\\.|[^\\\n])*?(?:\\.|[^\\\n\$]))\1(?=[\s?!\.,:?!。,:]|$)/;
|
|
20
|
-
// const blockRule = /^(\${1,2})\n((?:\\[^]|[^\\])+?)\n\1(?:\n|$)/;
|
|
21
|
-
|
|
22
|
-
let inlinePatterns = [];
|
|
23
|
-
let blockPatterns = [];
|
|
24
|
-
|
|
25
|
-
function escapeRegex(string) {
|
|
26
|
-
return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function generateRegexRules(delimiters) {
|
|
30
|
-
delimiters.forEach((delimiter) => {
|
|
31
|
-
const { left, right } = delimiter;
|
|
32
|
-
// Ensure regex-safe delimiters
|
|
33
|
-
const escapedLeft = escapeRegex(left);
|
|
34
|
-
const escapedRight = escapeRegex(right);
|
|
35
|
-
|
|
36
|
-
// Inline pattern - Capture group $1, token content, followed by end delimiter and normal punctuation marks.
|
|
37
|
-
// Example: $text$
|
|
38
|
-
inlinePatterns.push(
|
|
39
|
-
`${escapedLeft}((?:\\\\.|[^\\\\\\n])*?(?:\\\\.|[^\\\\\\n${escapedRight}]))${escapedRight}`
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
// Block pattern - Starts and ends with the delimiter on new lines. Example:
|
|
43
|
-
// $$\ncontent here\n$$
|
|
44
|
-
blockPatterns.push(`${escapedLeft}\n((?:\\\\[^]|[^\\\\])+?)\n${escapedRight}`);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
const inlineRule = new RegExp(`^(${inlinePatterns.join('|')})(?=[\\s?!.,:?!。,:]|$)`, 'u');
|
|
48
|
-
const blockRule = new RegExp(`^(${blockPatterns.join('|')})(?:\n|$)`, 'u');
|
|
49
|
-
|
|
50
|
-
return { inlineRule, blockRule };
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const { inlineRule, blockRule } = generateRegexRules(DELIMITER_LIST);
|
|
54
|
-
|
|
55
|
-
export default function (options = {}) {
|
|
56
|
-
return {
|
|
57
|
-
extensions: [
|
|
58
|
-
inlineKatex(options, createRenderer(options, false)),
|
|
59
|
-
blockKatex(options, createRenderer(options, true))
|
|
60
|
-
]
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
function createRenderer(options, newlineAfter) {
|
|
65
|
-
return (token) =>
|
|
66
|
-
katex.renderToString(token.text, { ...options, displayMode: token.displayMode }) +
|
|
67
|
-
(newlineAfter ? '\n' : '');
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function inlineKatex(options, renderer) {
|
|
71
|
-
const ruleReg = inlineRule;
|
|
72
|
-
return {
|
|
73
|
-
name: 'inlineKatex',
|
|
74
|
-
level: 'inline',
|
|
75
|
-
start(src) {
|
|
76
|
-
let index;
|
|
77
|
-
let indexSrc = src;
|
|
78
|
-
|
|
79
|
-
while (indexSrc) {
|
|
80
|
-
index = indexSrc.indexOf('$');
|
|
81
|
-
if (index === -1) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const f = index === 0 || indexSrc.charAt(index - 1) === ' ';
|
|
85
|
-
if (f) {
|
|
86
|
-
const possibleKatex = indexSrc.substring(index);
|
|
87
|
-
|
|
88
|
-
if (possibleKatex.match(ruleReg)) {
|
|
89
|
-
return index;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
indexSrc = indexSrc.substring(index + 1).replace(/^\$+/, '');
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
tokenizer(src, tokens) {
|
|
97
|
-
const match = src.match(ruleReg);
|
|
98
|
-
|
|
99
|
-
if (match) {
|
|
100
|
-
const text = match
|
|
101
|
-
.slice(2)
|
|
102
|
-
.filter((item) => item)
|
|
103
|
-
.find((item) => item.trim());
|
|
104
|
-
|
|
105
|
-
return {
|
|
106
|
-
type: 'inlineKatex',
|
|
107
|
-
raw: match[0],
|
|
108
|
-
text: text
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
renderer
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
function blockKatex(options, renderer) {
|
|
117
|
-
return {
|
|
118
|
-
name: 'blockKatex',
|
|
119
|
-
level: 'block',
|
|
120
|
-
tokenizer(src, tokens) {
|
|
121
|
-
const match = src.match(blockRule);
|
|
122
|
-
|
|
123
|
-
if (match) {
|
|
124
|
-
const text = match
|
|
125
|
-
.slice(2)
|
|
126
|
-
.filter((item) => item)
|
|
127
|
-
.find((item) => item.trim());
|
|
128
|
-
|
|
129
|
-
return {
|
|
130
|
-
type: 'blockKatex',
|
|
131
|
-
raw: match[0],
|
|
132
|
-
text: text
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
renderer
|
|
137
|
-
};
|
|
138
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/.github/workflows/format-build-frontend.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/images/utils/comfyui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/brave.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/duckduckgo.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/google_pse.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/jina_search.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/main.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/searchapi.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/searxng.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/serper.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/serply.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/serpstack.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/search/tavily.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/connector.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/dbs/chroma.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/dbs/milvus.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/rag/vector/main.py
RENAMED
|
File without changes
|
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/db.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/internal/wrappers.py
RENAMED
|
File without changes
|
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/auths.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/chats.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/documents.py
RENAMED
|
File without changes
|
{open_webui-0.3.27.dev2 → open_webui-0.3.27.dev3}/backend/open_webui/apps/webui/models/files.py
RENAMED
|
File without changes
|