libre-webui 0.8.0 → 0.8.3

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.
Files changed (45) hide show
  1. package/README.md +197 -234
  2. package/backend/dist/db.d.ts.map +1 -1
  3. package/backend/dist/db.js +14 -0
  4. package/backend/dist/db.js.map +1 -1
  5. package/backend/dist/index.d.ts.map +1 -1
  6. package/backend/dist/index.js +100 -8
  7. package/backend/dist/index.js.map +1 -1
  8. package/backend/dist/routes/auth.d.ts.map +1 -1
  9. package/backend/dist/routes/auth.js +30 -1
  10. package/backend/dist/routes/auth.js.map +1 -1
  11. package/backend/dist/routes/ollama.d.ts.map +1 -1
  12. package/backend/dist/routes/ollama.js +67 -1
  13. package/backend/dist/routes/ollama.js.map +1 -1
  14. package/backend/dist/services/authService.d.ts +1 -0
  15. package/backend/dist/services/authService.d.ts.map +1 -1
  16. package/backend/dist/services/authService.js +2 -0
  17. package/backend/dist/services/authService.js.map +1 -1
  18. package/backend/dist/services/openclawSessionService.js +2 -2
  19. package/backend/dist/services/openclawSessionService.js.map +1 -1
  20. package/backend/dist/services/pluginService.d.ts.map +1 -1
  21. package/backend/dist/services/pluginService.js +15 -3
  22. package/backend/dist/services/pluginService.js.map +1 -1
  23. package/backend/dist/services/systemSettingsService.d.ts +12 -0
  24. package/backend/dist/services/systemSettingsService.d.ts.map +1 -0
  25. package/backend/dist/services/systemSettingsService.js +68 -0
  26. package/backend/dist/services/systemSettingsService.js.map +1 -0
  27. package/frontend/dist/assets/index-CT6_wIIb.js +51 -0
  28. package/frontend/dist/css/index-eoCzaqbg.css +1 -0
  29. package/frontend/dist/index.html +4 -4
  30. package/frontend/dist/js/{ArtifactContainer-CR_N0zJa.js → ArtifactContainer-BLwdP4Y4.js} +1 -1
  31. package/frontend/dist/js/{ArtifactDemoPage-B4i0y1r8.js → ArtifactDemoPage-CYKT3Mxr.js} +1 -1
  32. package/frontend/dist/js/ChatPage-5pmqke2e.js +281 -0
  33. package/frontend/dist/js/{GalleryPage-BwPcUdbX.js → GalleryPage-CeV6Xikm.js} +1 -1
  34. package/frontend/dist/js/ModelsPage-BEHsiMmV.js +1 -0
  35. package/frontend/dist/js/{PersonasPage-CZrFe-EX.js → PersonasPage-D92Q-9GN.js} +1 -1
  36. package/frontend/dist/js/{UserManagementPage-doHbL51e.js → UserManagementPage-ir6FoUIm.js} +1 -1
  37. package/frontend/dist/js/ui-vendor-DsBonqC3.js +177 -0
  38. package/frontend/dist/js/utils-vendor-3oAsqusP.js +6 -0
  39. package/package.json +1 -2
  40. package/frontend/dist/assets/index-BHPEXBOC.js +0 -51
  41. package/frontend/dist/css/index-D9uKnbHR.css +0 -1
  42. package/frontend/dist/js/ChatPage-CNZjHhUr.js +0 -281
  43. package/frontend/dist/js/ModelsPage-2EzbE4Sf.js +0 -1
  44. package/frontend/dist/js/ui-vendor-BxYipEVo.js +0 -177
  45. package/frontend/dist/js/utils-vendor-0Ymd3GFQ.js +0 -6
package/README.md CHANGED
@@ -1,32 +1,36 @@
1
1
  <div align="center">
2
2
 
3
- # Libre WebUI
3
+ <br>
4
4
 
5
- ### Privacy-First AI Chat Interface
5
+ # 🕊️ Libre WebUI
6
6
 
7
- <p align="center">
8
- <strong>Self-hosted • Open Source • Extensible</strong><br>
9
- <sub>Enterprise support by <a href="https://kroonen.ai">Kroonen AI</a></sub>
10
- </p>
7
+ ### Your AI, Your Rules.
8
+
9
+ **The privacy-first, open-source chat interface for local and cloud AI.**<br>
10
+ No telemetry. No tracking. No compromises.
11
+
12
+ <br>
11
13
 
12
14
  <p>
13
- <img src="./screenshot.png" width="100%" alt="Dark Theme">
15
+ <a href="https://github.com/libre-webui/libre-webui/releases"><img src="https://img.shields.io/github/v/release/libre-webui/libre-webui?style=flat-square&label=version&color=blue" alt="Version"></a>
16
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache_2.0-green?style=flat-square" alt="License"></a>
17
+ <a href="https://github.com/libre-webui/libre-webui/actions"><img src="https://img.shields.io/github/actions/workflow/status/libre-webui/libre-webui/release.yml?style=flat-square&label=Build" alt="CI"></a>
18
+ <a href="https://huggingface.co/libre-webui"><img src="https://img.shields.io/badge/🤗_HuggingFace-models-yellow?style=flat-square" alt="HuggingFace"></a>
19
+ <a href="https://github.com/libre-webui/libre-webui"><img src="https://img.shields.io/github/stars/libre-webui/libre-webui?style=flat-square&label=Stars" alt="Stars"></a>
14
20
  </p>
15
21
 
16
- <p align="center">
17
- <img src="https://img.shields.io/github/package-json/v/libre-webui/libre-webui" alt="Version">
18
- <img src="https://img.shields.io/github/license/libre-webui/libre-webui" alt="License">
19
- <img src="https://img.shields.io/badge/languages-25-blue" alt="25 Languages">
20
- <a href="https://github.com/libre-webui/libre-webui"><img src="https://img.shields.io/github/stars/libre-webui/libre-webui?style=social" alt="Stars"></a>
22
+ <p>
23
+ <a href="https://librewebui.org">Website</a>
24
+ <a href="https://docs.librewebui.org">Docs</a>
25
+ <a href="https://github.com/libre-webui/libre-webui/releases">Download</a>
26
+ <a href="#quick-start">Quick Start</a>
21
27
  </p>
22
28
 
23
- <p align="center">
24
- <img src="https://img.shields.io/badge/GDPR-Ready-green" alt="GDPR Ready">
25
- <img src="https://img.shields.io/badge/HIPAA-Compatible-blue" alt="HIPAA Compatible">
26
- <img src="https://img.shields.io/badge/SOC_2-Ready-purple" alt="SOC 2 Ready">
27
- </p>
29
+ <br>
28
30
 
29
- [Website](https://librewebui.org) • [Documentation](https://docs.librewebui.org) • [GitLab](https://git.kroonen.ai/libre-webui/libre-webui) • [𝕏](https://x.com/librewebui) • [Sponsor](https://github.com/sponsors/libre-webui) • [Get Started](#quick-start)
31
+ <p>
32
+ <img src="./screenshot.png" width="100%" alt="Libre WebUI — Privacy-first AI chat interface">
33
+ </p>
30
34
 
31
35
  </div>
32
36
 
@@ -34,196 +38,145 @@
34
38
 
35
39
  ## Why Libre WebUI?
36
40
 
37
- A simple, self-hosted interface for AI chat. Run it locally with Ollama, connect to OpenAI, Anthropic, HuggingFace, or 10+ providers—all from one UI.
38
-
39
- - **Your data stays yours** — Zero telemetry, fully self-hosted
40
- - **Extensible plugin system** — Ollama, OpenAI, Anthropic, and any OpenAI-compatible API
41
- - **Simple & focused** — Keyboard shortcuts, dark mode, responsive design
42
-
43
- ---
44
-
45
- ## Features
41
+ Most AI chat tools either **lock you into a cloud**, **harvest your data**, or **pull the rug on their open-source license** (looking at you, BSD-3 + CLA combos 👀). We think you deserve better.
46
42
 
47
- <table>
48
- <tr>
49
- <td width="50%">
43
+ Libre WebUI is a **self-hosted AI chat interface** that connects to [Ollama](https://ollama.ai) for fully local AI, or to OpenAI, Anthropic, Google, and 10+ cloud providers — all from one clean, fast UI. Your conversations never leave your machine unless _you_ choose to send them.
50
44
 
51
- ### Core Experience
45
+ > **Built by [Kroonen AI](https://kroonen.ai) and the open-source community.** Apache 2.0 forever — [we put it in our charter](./CHARTER.md).
52
46
 
53
- - Real-time streaming chat
54
- - Dark/light themes
55
- - VS Code-style keyboard shortcuts
56
- - Mobile-responsive design
57
- - **Native Desktop App** — macOS (Windows & Linux coming soon)
58
-
59
- ### AI Providers
60
-
61
- - **Local**: Ollama (full integration)
62
- - **Cloud**: OpenAI, Anthropic, Google, Groq, Mistral, OpenRouter, HuggingFace, and more
63
- - **HuggingFace Hub** — 1M+ models for chat, TTS, image gen, embeddings, STT
64
- - **Image Generation** — ComfyUI with Flux models
65
- - **Plugin System** — Add any OpenAI-compatible API via JSON config
66
- - **Plugin Variables** — Per-plugin configurable settings (temperature, endpoint, etc.)
67
-
68
- </td>
69
- <td width="50%">
70
-
71
- ### Advanced Capabilities
72
-
73
- - **Document Chat (RAG)** — Upload PDFs, chat with your docs
74
- - **Custom Personas** — AI personalities with memory
75
- - **Interactive Artifacts** — Live HTML, SVG, code preview
76
- - **Text-to-Speech** — Multiple voices and providers
77
- - **SSO Authentication** — GitHub, Hugging Face OAuth
78
-
79
- ### Security
80
-
81
- - AES-256-GCM encryption
82
- - Role-based access control
83
- - Enterprise compliance ready
47
+ ---
84
48
 
85
- </td>
86
- </tr>
87
- </table>
49
+ ## ✨ Features at a Glance
50
+
51
+ | | Feature | What it does |
52
+ | --- | ----------------------- | ---------------------------------------------------------------- |
53
+ | 💬 | **Streaming Chat** | Real-time responses with dark/light themes and mobile support |
54
+ | 🔌 | **Plugin System** | Connect any OpenAI-compatible API via simple JSON config |
55
+ | 📄 | **Document Chat (RAG)** | Upload PDFs and chat with your documents |
56
+ | 🎭 | **Personas** | Custom AI personalities with persistent memory |
57
+ | 🎨 | **Artifacts** | Live HTML, SVG, and code preview right in chat |
58
+ | 🖼️ | **Image Generation** | ComfyUI + Flux, DALL·E, and more |
59
+ | 🔊 | **Text-to-Speech** | Qwen3-TTS, Kyutai, OpenAI voices — local or cloud |
60
+ | 🤗 | **HuggingFace Hub** | Browse and use 1M+ models for chat, TTS, images, embeddings, STT |
61
+ | 🔐 | **SSO & Auth** | GitHub, HuggingFace OAuth/OIDC, role-based access |
62
+ | 🌍 | **25+ Languages** | Full i18n — Arabic to Vietnamese |
63
+ | 🖥️ | **Desktop App** | Native app for macOS, Windows, Linux (Electron) |
64
+ | 🤖 | **AI Agent Support** | OpenClaw integration — persistent agents with memory and tools |
65
+ | 🏢 | **Enterprise Ready** | GDPR, HIPAA, SOC 2 compatible • AES-256-GCM encryption |
88
66
 
89
67
  ---
90
68
 
91
- ## Quick Start
69
+ ## 🚀 Quick Start
92
70
 
93
- **Requirements:** [Ollama](https://ollama.ai) (for local AI) or API keys for cloud providers
94
-
95
- ### One Command Install
71
+ ### One command that's it
96
72
 
97
73
  ```bash
98
74
  npx libre-webui
99
75
  ```
100
76
 
101
- That's it. Opens at `http://localhost:8080`
77
+ Opens at `http://localhost:8080`. Add [Ollama](https://ollama.ai) for local AI, or plug in your API keys.
102
78
 
103
- ### Homebrew (macOS)
79
+ ### 🐳 Docker
104
80
 
105
81
  ```bash
106
- # CLI version (includes backend server)
107
- brew tap libre-webui/tap
108
- brew install libre-webui
109
- libre-webui
82
+ # With bundled Ollama
83
+ docker-compose up -d
110
84
 
111
- # Or desktop app
112
- brew install --cask libre-webui
113
- ```
114
-
115
- Run as a background service:
85
+ # With your existing Ollama
86
+ docker-compose -f docker-compose.external-ollama.yml up -d
116
87
 
117
- ```bash
118
- brew services start libre-webui
88
+ # GPU support (NVIDIA)
89
+ docker-compose -f docker-compose.gpu.yml up -d
119
90
  ```
120
91
 
121
- ### Docker
122
-
123
- | Setup | Command |
124
- | ----------------------------------------- | ------------------------------------------------------------ |
125
- | Bundled Ollama (CPU) | `docker-compose up -d` |
126
- | Bundled Ollama (NVIDIA GPU) | `docker-compose -f docker-compose.gpu.yml up -d` |
127
- | External Ollama (already running on host) | `docker-compose -f docker-compose.external-ollama.yml up -d` |
128
-
129
- Access at `http://localhost:8080`
130
-
131
- <details>
132
- <summary><strong>Development builds (unstable)</strong></summary>
133
-
134
- > **Warning:** Development builds are automatically generated from the `dev` branch and may contain experimental features, breaking changes, or bugs. Use at your own risk and do not use in production environments.
135
-
136
- | Setup | Command |
137
- | --------------------------------- | ---------------------------------------------------------------- |
138
- | Dev + Bundled Ollama (CPU) | `docker-compose -f docker-compose.dev.yml up -d` |
139
- | Dev + Bundled Ollama (NVIDIA GPU) | `docker-compose -f docker-compose.dev.gpu.yml up -d` |
140
- | Dev + External Ollama | `docker-compose -f docker-compose.dev.external-ollama.yml up -d` |
141
-
142
- Development builds use separate data volumes (`libre_webui_dev_data`) to prevent conflicts with stable installations.
143
-
144
- To pull the latest dev image manually:
92
+ ### 🍺 Homebrew (macOS)
145
93
 
146
94
  ```bash
147
- docker pull librewebui/libre-webui:dev
148
- ```
149
-
150
- </details>
151
-
152
- ### Kubernetes (Helm)
95
+ brew tap libre-webui/tap && brew install libre-webui
96
+ libre-webui
153
97
 
154
- ```bash
155
- helm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui
98
+ # Or install the desktop app
99
+ brew install --cask libre-webui
156
100
  ```
157
101
 
158
- <details>
159
- <summary><strong>Helm configuration options</strong></summary>
102
+ ### ☸️ Kubernetes
160
103
 
161
104
  ```bash
162
- # With external Ollama
163
- helm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui \
164
- --set ollama.bundled.enabled=false \
165
- --set ollama.external.enabled=true \
166
- --set ollama.external.url=http://my-ollama:11434
167
-
168
- # With NVIDIA GPU support
169
- helm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui \
170
- --set ollama.bundled.gpu.enabled=true
171
-
172
- # With Ingress
173
- helm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui \
174
- --set ingress.enabled=true \
175
- --set ingress.hosts[0].host=chat.example.com
105
+ helm install libre-webui oci://ghcr.io/libre-webui/charts/libre-webui
176
106
  ```
177
107
 
178
- See [helm/libre-webui/values.yaml](helm/libre-webui/values.yaml) for all configuration options.
108
+ ### 🖥️ Desktop App
179
109
 
180
- </details>
110
+ Download from [GitHub Releases](https://github.com/libre-webui/libre-webui/releases) — available for **macOS**, **Windows**, and **Linux**.
181
111
 
182
- ### Development Setup
112
+ ### 🛠️ From Source
183
113
 
184
114
  ```bash
185
- # 1. Clone the repo
186
115
  git clone https://github.com/libre-webui/libre-webui
187
116
  cd libre-webui
188
-
189
- # 2. Configure environment
190
117
  cp backend/.env.example backend/.env
191
-
192
- # 3. Install and run
193
118
  npm install && npm run dev
194
119
  ```
195
120
 
196
- ### Configuration
121
+ <details>
122
+ <summary><strong>⚙️ Configuration</strong></summary>
197
123
 
198
- Edit `backend/.env` to add your API keys:
124
+ Edit `backend/.env`:
199
125
 
200
126
  ```env
201
- # Local AI (Ollama)
127
+ # Local AI (default — just install Ollama)
202
128
  OLLAMA_BASE_URL=http://localhost:11434
203
129
 
204
- # Cloud AI Providers (add the ones you need)
130
+ # Cloud providers (optional add what you need)
205
131
  OPENAI_API_KEY=sk-...
206
132
  ANTHROPIC_API_KEY=sk-ant-...
207
133
  HUGGINGFACE_API_KEY=hf_...
208
134
  ```
209
135
 
136
+ </details>
137
+
138
+ <details>
139
+ <summary><strong>🧪 Development builds (unstable)</strong></summary>
140
+
141
+ Dev builds are auto-generated from the `dev` branch. **Not for production.**
142
+
143
+ ```bash
144
+ docker-compose -f docker-compose.dev.yml up -d
145
+ ```
146
+
147
+ Uses separate data volumes (`libre_webui_dev_data`) so your stable install stays safe.
148
+
149
+ </details>
150
+
210
151
  ---
211
152
 
212
- ## Plugin System
153
+ ## 🏗️ Architecture
213
154
 
214
- Plugins let you connect any OpenAI-compatible (or custom) API to Libre WebUI using a simple JSON file. Built-in plugins are included for OpenAI, Anthropic, Google Gemini, Groq, Mistral, OpenRouter, HuggingFace, and more.
155
+ ```
156
+ ┌─────────────────────────────────────────────┐
157
+ │ Libre WebUI │
158
+ ├──────────────────┬──────────────────────────┤
159
+ │ React + TS │ Express + SQLite │
160
+ │ Frontend │ Backend │
161
+ │ (Vite) │ (AES-256 encryption) │
162
+ ├──────────────────┴──────────────────────────┤
163
+ │ Plugin Layer │
164
+ │ Ollama │ OpenAI │ Anthropic │ Google │ … │
165
+ ├─────────────────────────────────────────────┤
166
+ │ Electron (Desktop) │ Docker │ Kubernetes │
167
+ └─────────────────────────────────────────────┘
168
+ ```
215
169
 
216
- ### How It Works
170
+ - **Frontend:** React 18 + TypeScript, Vite, responsive with keyboard shortcuts
171
+ - **Backend:** Express 5, SQLite with AES-256-GCM encryption, WebSocket streaming
172
+ - **Plugins:** JSON config files — add any provider without touching code
173
+ - **Desktop:** Electron with native macOS/Windows/Linux builds
217
174
 
218
- A plugin is a JSON config file stored in the `plugins/` directory. Each plugin defines:
175
+ ---
219
176
 
220
- - **Endpoint** The API URL to send requests to
221
- - **Auth** — How to authenticate (header name, prefix, env variable fallback)
222
- - **Model map** — Which models the plugin supports
223
- - **Capabilities** — Optional multi-capability support (chat, TTS, image generation, embeddings, STT)
224
- - **Variables** — Per-plugin configurable settings users can adjust from the UI
177
+ ## 🔌 Plugin System
225
178
 
226
- ### Example Plugin
179
+ Add any AI provider with a JSON file — no code changes needed:
227
180
 
228
181
  ```json
229
182
  {
@@ -234,125 +187,135 @@ A plugin is a JSON config file stored in the `plugins/` directory. Each plugin d
234
187
  "auth": {
235
188
  "header": "Authorization",
236
189
  "prefix": "Bearer ",
237
- "key_env": "MY_PROVIDER_API_KEY"
190
+ "key_env": "MY_API_KEY"
238
191
  },
239
- "model_map": ["model-a", "model-b"],
240
- "variables": [
241
- {
242
- "name": "temperature",
243
- "type": "number",
244
- "label": "Temperature",
245
- "description": "Controls randomness.",
246
- "default": 0.7,
247
- "min": 0,
248
- "max": 2
249
- }
250
- ]
192
+ "model_map": ["model-a", "model-b"]
251
193
  }
252
194
  ```
253
195
 
254
- ### Plugin Management
196
+ Built-in plugins: **OpenAI, Anthropic, Google Gemini, Groq, Mistral, OpenRouter, HuggingFace**, and more.
255
197
 
256
- Plugins are managed from **Settings > Plugins** in the UI where you can:
198
+ Plugins support **multi-capability** (chat + TTS + image gen in one config), **per-user variables**, and **encrypted credential storage**.
257
199
 
258
- - **Upload** a JSON plugin file or paste JSON directly
259
- - **Browse HuggingFace** to discover and import models
260
- - **Activate/deactivate** plugins
261
- - **Set API keys** per plugin (encrypted at rest with AES-256-GCM, with env variable fallback)
262
- - **Configure variables** — override endpoint, temperature, max tokens, and other settings per plugin
263
- - **Export** plugins as JSON
200
+ 📖 [Full plugin docs →](./docs/08-PLUGIN_ARCHITECTURE.md)
201
+
202
+ ---
264
203
 
265
- ### Plugin Variables
204
+ ## 🤖 AI Agent Support (OpenClaw)
266
205
 
267
- Variables are typed settings defined in the plugin JSON that users can configure from the UI. Supported types: `string`, `number`, `boolean`, `select`. Sensitive variables (like API keys) are encrypted in the database. Variable values are stored per-user.
206
+ Libre WebUI natively supports **AI agents** via the [OpenClaw](https://openclaw.ai) plugin turning your chat interface into a full agent platform.
268
207
 
269
- ### Multi-Capability Plugins
208
+ **What agents can do:**
270
209
 
271
- A single plugin can support multiple capabilities. For example, OpenAI's plugin handles both chat completions and TTS:
210
+ - 🧠 **Persistent memory** agents remember across sessions
211
+ - 🔧 **Tool use** — file access, web search, code execution, device control
212
+ - 📅 **Proactive actions** — scheduled tasks, reminders, heartbeat monitoring
213
+ - 🎙️ **Voice messages** — agents generate and send audio using local TTS
214
+ - 🖼️ **Image generation** — agents create images via ComfyUI, DALL·E, etc.
215
+ - 💬 **Multi-channel** — same agent across Telegram, Discord, Signal, Nextcloud Talk
216
+ - 🔌 **Plugin-powered** — configure via JSON, no code required
272
217
 
273
218
  ```json
274
219
  {
275
- "id": "openai",
220
+ "id": "openclaw-agent",
221
+ "name": "OpenClaw Agent",
276
222
  "type": "completion",
277
- "endpoint": "https://api.openai.com/v1/chat/completions",
278
- "capabilities": {
279
- "tts": {
280
- "endpoint": "https://api.openai.com/v1/audio/speech",
281
- "model_map": ["tts-1", "tts-1-hd"],
282
- "config": {
283
- "voices": ["alloy", "echo", "nova", "shimmer"],
284
- "default_voice": "alloy"
285
- }
286
- }
287
- }
223
+ "endpoint": "http://localhost:3000/v1/chat/completions",
224
+ "auth": {
225
+ "header": "Authorization",
226
+ "prefix": "Bearer ",
227
+ "key_env": "OPENCLAW_API_KEY"
228
+ },
229
+ "model_map": ["agent:main"]
288
230
  }
289
231
  ```
290
232
 
291
- ### Creating Custom Plugins
292
-
293
- To add a new provider, create a JSON file in the `plugins/` directory following the schema above, or upload one through the UI. Any OpenAI-compatible API works out of the box — just set the correct endpoint and auth config.
233
+ > **Your agent, your hardware, your data.** No cloud dependency. Run Claude, GPT, Gemini, or local models as the agent's brain — all through the same self-hosted interface.
294
234
 
295
- For the full plugin reference (variables, credentials, security, API endpoints), see the [Plugin Architecture docs](./docs/08-PLUGIN_ARCHITECTURE.md).
235
+ 📖 [OpenClaw integration docs](./docs/31-OPENCLAW_INTEGRATION.md)
296
236
 
297
237
  ---
298
238
 
299
- ### Desktop App (In Development)
239
+ ## 🤝 Contributing
240
+
241
+ We'd love your help! Libre WebUI is built by people who care about privacy and AI freedom.
300
242
 
301
- > **Note:** The desktop app is currently in active development. The macOS build is pending Apple notarization, which may cause security warnings or installation issues on some systems. We're working to resolve this. Feedback and bug reports are welcome!
243
+ **Getting started is easy:**
302
244
 
303
- Download the native desktop app from [GitHub Releases](https://github.com/libre-webui/libre-webui/releases):
245
+ 1. Fork the repo and clone it
246
+ 2. `npm install && npm run dev`
247
+ 3. Make your changes on a branch off `dev`
248
+ 4. Open a PR — one approving review from the TSC and you're in
304
249
 
305
- | Platform | Status |
306
- | --------------------- | ----------------------- |
307
- | macOS (Apple Silicon) | Beta (`.dmg` or `.zip`) |
308
- | Windows | Coming soon |
309
- | Linux | Coming soon |
250
+ **Ways to contribute:**
251
+
252
+ - 🐛 **Bug reports** [open an issue](https://github.com/libre-webui/libre-webui/issues)
253
+ - 💡 **Feature ideas** — start a discussion
254
+ - 🌍 **Translations** — help us reach more languages
255
+ - 📖 **Documentation** — every improvement helps
256
+ - 🔌 **Plugins** — share your provider configs
257
+
258
+ All contributors follow our [Code of Conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) and [Community Charter](./CHARTER.md).
259
+
260
+ Security issues? Email **security@kroonen.ai** — we follow a 30-day coordinated disclosure.
310
261
 
311
262
  ---
312
263
 
313
- > [!NOTE]
314
- >
315
- > ## Enterprise Services
316
- >
317
- > **Need a custom deployment?** [Kroonen AI](https://kroonen.ai) provides professional services for Libre WebUI deployments.
318
- >
319
- > | Service | Use Case |
320
- > | ----------------------------- | ------------------------------------- |
321
- > | On-premise & cloud deployment | HIPAA, SOC 2, air-gapped environments |
322
- > | SSO integration | Okta, Azure AD, SAML, LDAP |
323
- > | Custom development | Integrations, white-labeling, plugins |
324
- > | SLA-backed support | Priority response, dedicated channel |
325
- >
326
- > **Contact:** enterprise@kroonen.ai | **[Learn more →](https://kroonen.ai/services)**
327
-
328
- > [!TIP]
329
- >
330
- > ## Support Development
331
- >
332
- > Libre WebUI is built and maintained independently. Your support keeps it free and open source.
333
- >
334
- > [![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/libre-webui)
335
- >
336
- > **[Become a Sponsor](https://github.com/sponsors/libre-webui)** — Help fund active development
264
+ ## 📜 Our Promise
265
+
266
+ Libre WebUI has an [Ethical Charter](./CHARTER.md) that guarantees:
267
+
268
+ - 🔓 **Apache 2.0 forever** no bait-and-switch relicensing
269
+ - 🚫 **Zero telemetry** — no analytics, no tracking, no phone-home. Ever.
270
+ - 🏛️ **Community governance** — transparent decisions, public roadmap
271
+ - 🤝 **No VC capture** — funded by the community, for the community
272
+ - **Ethical use** we actively oppose surveillance and weapons applications
337
273
 
338
274
  ---
339
275
 
340
- ## Community
276
+ ## 🏢 Enterprise
341
277
 
342
- - [Ethical Charter](./CHARTER.md) Our commitment to privacy, freedom & transparency
343
- - [Contributing](https://github.com/libre-webui/libre-webui/contribute) — Help improve Libre WebUI
344
- - [𝕏 @librewebui](https://x.com/librewebui) — Follow for updates
345
- - [Mastodon](https://fosstodon.org/@librewebui) Fediverse updates
346
- - [GitLab](https://git.kroonen.ai/libre-webui/libre-webui) Self-hosted mirror
347
- - [GitHub Issues](https://github.com/libre-webui/libre-webui/issues) Bug reports & feature requests
348
- - [Documentation](https://docs.librewebui.org) Guides & API reference
278
+ Need to deploy at scale? [Kroonen AI](https://kroonen.ai) provides professional services:
279
+
280
+ | Service | Description |
281
+ | ---------------------- | -------------------------------------- |
282
+ | **Custom Deployment** | On-prem, cloud, air-gapped, Kubernetes |
283
+ | **SSO Integration** | Okta, Azure AD, SAML, LDAP |
284
+ | **Custom Development** | Integrations, white-labeling, plugins |
285
+ | **Compliance** | GDPR, HIPAA, SOC 2, FedRAMP |
286
+ | **SLA Support** | Priority response, dedicated channel |
287
+
288
+ 📧 **enterprise@kroonen.ai** • [Learn more →](https://kroonen.ai/services)
289
+
290
+ ---
291
+
292
+ ## 🔗 Links
293
+
294
+ | | |
295
+ | -------------------- | -------------------------------------------------------------------------------- |
296
+ | 🌐 **Website** | [librewebui.org](https://librewebui.org) |
297
+ | 📖 **Documentation** | [docs.librewebui.org](https://docs.librewebui.org) |
298
+ | 🐙 **GitHub** | [github.com/libre-webui/libre-webui](https://github.com/libre-webui/libre-webui) |
299
+ | 🦊 **GitLab** | [git.kroonen.ai/libre-webui](https://git.kroonen.ai/libre-webui/libre-webui) |
300
+ | 🤗 **HuggingFace** | [huggingface.co/libre-webui](https://huggingface.co/libre-webui) |
301
+ | 𝕏 **Twitter** | [@librewebui](https://x.com/librewebui) |
302
+ | 🐘 **Mastodon** | [@librewebui@fosstodon.org](https://fosstodon.org/@librewebui) |
303
+ | ❤️ **Sponsor** | [github.com/sponsors/libre-webui](https://github.com/sponsors/libre-webui) |
349
304
 
350
305
  ---
351
306
 
352
307
  <div align="center">
353
308
 
309
+ ### ⭐ If Libre WebUI helps you, give us a star!
310
+
311
+ It helps others discover the project and keeps us motivated.
312
+
313
+ <a href="https://github.com/libre-webui/libre-webui"><img src="https://img.shields.io/github/stars/libre-webui/libre-webui?style=for-the-badge&label=Star%20on%20GitHub&color=gold" alt="Star on GitHub"></a>
314
+
315
+ <br><br>
316
+
354
317
  **Apache 2.0 License** • Copyright © 2025–present Libre WebUI™
355
318
 
356
- Built & maintained by [Kroonen AI](https://kroonen.ai) [Enterprise Support](https://kroonen.ai/services)
319
+ Built with ❤️ by [Kroonen AI](https://kroonen.ai) and the open-source community
357
320
 
358
321
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAiBA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAuBtC;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CA0D/C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAO1D;AAoVD;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAa/C;AAGD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAiBA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAuBtC;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CA0D/C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAO1D;AAsWD;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAa/C;AAGD,eAAe,WAAW,CAAC"}
@@ -199,6 +199,20 @@ function initializeTables() {
199
199
  UNIQUE(user_id, key)
200
200
  )
201
201
  `);
202
+ // Global system settings table
203
+ db.exec(`
204
+ CREATE TABLE IF NOT EXISTS system_settings (
205
+ key TEXT PRIMARY KEY,
206
+ value TEXT NOT NULL,
207
+ updated_at INTEGER NOT NULL
208
+ )
209
+ `);
210
+ // Seed default system settings
211
+ const systemSettingsNow = Date.now();
212
+ db.prepare(`
213
+ INSERT OR IGNORE INTO system_settings (key, value, updated_at)
214
+ VALUES (?, ?, ?)
215
+ `).run('allow_user_model_pull', 'true', systemSettingsNow);
202
216
  // Personas table - for AI personas/characters
203
217
  db.exec(`
204
218
  CREATE TABLE IF NOT EXISTS personas (
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,oBAAoB;AACpB,IAAI,EAAE,GAA6B,IAAI,CAAC;AACxC,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC;;GAEG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,+EAA+E;QAC/E,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,qCAAqC;QACrC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CACX,4EAA4E,CAC7E,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,sBAAsB,GAAG,IAAI,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,wEAAwE;YACxE,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAEjD,8BAA8B;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YAED,sBAAsB;YACtB,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE1B,sBAAsB;YACtB,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAE/B,kCAAkC;YAClC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAChC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACjC,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ;YAE5C,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YAExE,oCAAoC;YACpC,gBAAgB,EAAE,CAAC;YAEnB,iBAAiB;YACjB,aAAa,EAAE,CAAC;YAEhB,OAAO,CAAC,GAAG,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,sBAAsB,GAAG,IAAI,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB;IACvB,IAAI,CAAC,EAAE;QAAE,OAAO;IAEhB,2CAA2C;IAC3C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;GAWP,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAEzD,CAAC;QACJ,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,EAAE,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;IAED,+CAA+C;IAC/C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAC;IAEH,yDAAyD;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;GAcP,CAAC,CAAC;IAEH,iDAAiD;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;GAaP,CAAC,CAAC;IAEH,6DAA6D;IAC7D,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAC;IAEH,0DAA0D;IAC1D,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;GAWP,CAAC,CAAC;IAEH,+BAA+B;IAC/B,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,EAAE,CAAC,OAAO,CACR;;;KAGC,CACF,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAE1D,8CAA8C;IAC9C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;GAcP,CAAC,CAAC;IAEH,mDAAmD;IACnD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;GAWP,CAAC,CAAC;IAEH,sEAAsE;IACtE,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;GAaP,CAAC,CAAC;IAEH,6CAA6C;IAC7C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAC;IAEH,wCAAwC;IACxC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;GAmBP,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,wCAAwC;IACxC,yBAAyB,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB;IAChC,IAAI,CAAC,EAAE;QAAE,OAAO;IAEhB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,EAAE;aACjB,OAAO,CAAC,qCAAqC,CAAC;aAC9C,GAAG,EAAuB,CAAC;QAE9B,IAAI,SAAS,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,6CAA6C;YAC7C,EAAE,CAAC,OAAO,CACR;;;OAGD,CACA,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAE9D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,CAAC,EAAE;QAAE,OAAO;IAEhB,IAAI,CAAC;QACH,0DAA0D;QAC1D,MAAM,wBAAwB,GAAG,EAAE;aAChC,OAAO,CAAC,qCAAqC,CAAC;aAC9C,GAAG,EAOJ,CAAC;QAEH,MAAM,8BAA8B,GAAG,wBAAwB,CAAC,GAAG,CACjE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAChB,CAAC;QAEF,gDAAgD;QAChD,MAAM,yBAAyB,GAAG;YAChC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;YAChC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;YACpC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;YACnC,4BAA4B;YAC5B,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,kDAAkD;YACvF,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,2CAA2C;YAChG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,gDAAgD;SACnG,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,yBAAyB,EAAE,CAAC;YAC/C,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,IAAI,4BAA4B,CAAC,CAAC;gBACtE,EAAE,CAAC,IAAI,CACL,2CAA2C,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CACxE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,EAAE,CAAC,IAAI,CACL,0FAA0F,CAC3F,CAAC;QAEF,8DAA8D;QAC9D,MAAM,iBAAiB,GAAG,EAAE;aACzB,OAAO,CAAC,6BAA6B,CAAC;aACtC,GAAG,EAOJ,CAAC;QAEH,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvE,8DAA8D;QAC9D,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,EAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAE3D,kCAAkC;YAClC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,EAAE,CAAC,IAAI,CACL,4EAA4E,CAC7E,CAAC;QACJ,CAAC;QAED,0FAA0F;QAC1F,MAAM,iBAAiB,GAAG,EAAE;aACzB,OAAO,CAAC,6BAA6B,CAAC;aACtC,GAAG,EAOJ,CAAC;QAEH,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvE,wCAAwC;QACxC,MAAM,kBAAkB,GAAG;YACzB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE;YACzC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc;YACzD,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,cAAc;SAC5D,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;YACxC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,IAAI,oBAAoB,CAAC,CAAC;gBAC9D,EAAE,CAAC,IAAI,CACL,mCAAmC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,EAAE;aACd,OAAO,CACN,uEAAuE,CACxE;aACA,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,eAAe,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,UAAU,CAAC;AAkFlB,QAAA,MAAM,GAAG,6CAAY,CAAC;AAkgDtB,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,OAAO,UAAU,CAAC;AAkFlB,QAAA,MAAM,GAAG,6CAAY,CAAC;AAinDtB,eAAe,GAAG,CAAC"}