llms-py 2.0.26__py3-none-any.whl → 2.0.28__py3-none-any.whl

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.
llms/ui/typography.css CHANGED
@@ -94,16 +94,18 @@
94
94
  border-left-style: solid;
95
95
  }
96
96
 
97
- .dark .prose :not(:where([class~="not-prose"] *)), .dark .prose :where(td):not(:where([class~="not-prose"] *)) {
97
+ .dark .prose :where(td):not(:where([class~="not-prose"] *)) {
98
98
  color: rgb(209 213 219); /*text-gray-300*/
99
99
  }
100
100
  .dark .prose :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~="not-prose"] *)) {
101
101
  color: rgb(243 244 246); /*text-gray-100*/
102
102
  }
103
- .dark .prose :where(code):not(:where([class~="not-prose"] *)) {
103
+ .dark .prose :where(code):not(:where([class~="not-prose"] *)),
104
+ .dark .message em {
104
105
  background-color: rgb(30 58 138); /*text-blue-900*/
105
106
  color: rgb(243 244 246); /*text-gray-100*/
106
107
  }
108
+
107
109
  .dark .prose :where(pre code):not(:where([class~="not-prose"] *)) {
108
110
  background-color: unset;
109
111
  }
@@ -130,10 +132,6 @@
130
132
  .not-prose { max-width: unset; }
131
133
  .prose-table { max-width: 56rem; width: 56rem; padding-left: 1px; overflow-x: auto; }
132
134
  .hide-h2+h2 { display:none }
133
- .hljs, .prose :where(pre):not(:where([class~="not-prose"] *)) .hljs {
134
- color: var(--tw-prose-pre-code) !important;
135
- background-color: var(--tw-prose-pre-bg) !important;
136
- }
137
135
  @media (min-width: 1024px) {
138
136
  .lg\:prose-xl {
139
137
  font-size: 1.25rem;
@@ -285,6 +283,12 @@
285
283
  .prose pre::-webkit-scrollbar-thumb, .prose code::-webkit-scrollbar-thumb {
286
284
  background-color: rgb(100 116 139);
287
285
  }
286
+ .dark .prose pre::-webkit-scrollbar, .dark .prose code::-webkit-scrollbar {
287
+ background: #111827;
288
+ }
289
+ .dark .prose pre::-webkit-scrollbar-thumb, .dark .prose code::-webkit-scrollbar-thumb {
290
+ background-color: rgb(71 85 105);
291
+ }
288
292
 
289
293
  .html-format {
290
294
  max-width: unset;
@@ -390,6 +394,33 @@ h1:hover .header-anchor, h1 .header-anchor:focus, h2:hover .header-anchor, h2 .h
390
394
  font-weight: 600;
391
395
  }
392
396
 
397
+ pre {
398
+ overflow-x: auto;
399
+ font-weight: 400;
400
+ font-size: .875em;
401
+ line-height: 1.7142857;
402
+ margin-top: 1.7142857em;
403
+ margin-bottom: 1.7142857em;
404
+ border-radius: .375rem;
405
+ padding: .8571429em 1.1428571em;
406
+ max-width: calc(100vw - 1rem);
407
+ min-width: fit-content;
408
+ background-color: #282c34;
409
+ }
410
+ pre code.hljs {
411
+ display: block;
412
+ overflow-x: auto;
413
+ padding: 1em;
414
+ }
415
+ .message pre {
416
+ max-width: 100%;
417
+ min-width: auto;
418
+ }
419
+ .message pre code.hljs {
420
+ overflow-x: unset;
421
+ width: 100%;
422
+ }
423
+
393
424
  /* highlight.js - vs.css */
394
425
  .hljs {background:white;color:black}
395
426
  .hljs-comment,.hljs-quote,.hljs-variable{color:#008000}
@@ -413,38 +444,25 @@ pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5p
413
444
  .hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
414
445
  .hljs-link{text-decoration:underline}
415
446
 
416
- /*highlightjs*/
417
- .hljs, .prose :where(pre):not(:where([class~="not-prose"] *)) .hljs {
418
- color: #e5e7eb !important;
419
- background-color: #282c34 !important;
447
+ /* Dark mode overrides for Chat-specific styles */
448
+ .dark .prose blockquote {
449
+ border-left-color: #374151;
450
+ color: #9ca3af;
420
451
  }
421
- .hljs-comment, .hljs-quote {
422
- color: rgb(148 163 184); /*text-slate-400*/
452
+ .dark .prose th,
453
+ .dark .prose td {
454
+ border-color: #374151;
423
455
  }
424
-
425
- pre {
426
- overflow-x: auto;
427
- font-weight: 400;
428
- font-size: .875em;
429
- line-height: 1.7142857;
430
- margin-top: 1.7142857em;
431
- margin-bottom: 1.7142857em;
432
- border-radius: .375rem;
433
- padding: .8571429em 1.1428571em;
434
- max-width: calc(100vw - 1rem);
435
- min-width: fit-content;
436
- background-color: #282c34 !important;
456
+ .dark .prose th {
457
+ background-color: #1f2937;
437
458
  }
438
- pre code.hljs {
439
- display: block;
440
- overflow-x: auto;
441
- padding: 1em;
459
+ .dark .prose td {
460
+ background-color: #111827;
442
461
  }
443
- .message pre {
444
- max-width: 100%;
445
- min-width: auto;
462
+ .hljs-comment, .hljs-quote {
463
+ color: rgb(148 163 184); /*text-slate-400*/
464
+ }
465
+ .dark .prose > pre, .dark .prose pre code.hljs {
466
+ background-color: #111827 !important;
467
+ color: #f3f4f6;
446
468
  }
447
- .message pre code.hljs {
448
- overflow-x: unset;
449
- width: 100%;
450
- }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 2.0.26
3
+ Version: 2.0.28
4
4
  Summary: A lightweight CLI tool and OpenAI-compatible server for querying multiple Large Language Model (LLM) providers
5
5
  Home-page: https://github.com/ServiceStack/llms
6
6
  Author: ServiceStack
@@ -50,7 +50,7 @@ Configure additional providers and models in [llms.json](llms/llms.json)
50
50
 
51
51
  ## Features
52
52
 
53
- - **Lightweight**: Single [llms.py](https://github.com/ServiceStack/llms/blob/main/llms/main.py) Python file with single `aiohttp` dependency
53
+ - **Lightweight**: Single [llms.py](https://github.com/ServiceStack/llms/blob/main/llms/main.py) Python file with single `aiohttp` dependency (Pillow optional)
54
54
  - **Multi-Provider Support**: OpenRouter, Ollama, Anthropic, Google, OpenAI, Grok, Groq, Qwen, Z.ai, Mistral
55
55
  - **OpenAI-Compatible API**: Works with any client that supports OpenAI's chat completion API
56
56
  - **Built-in Analytics**: Built-in analytics UI to visualize costs, requests, and token usage
@@ -58,6 +58,7 @@ Configure additional providers and models in [llms.json](llms/llms.json)
58
58
  - **CLI Interface**: Simple command-line interface for quick interactions
59
59
  - **Server Mode**: Run an OpenAI-compatible HTTP server at `http://localhost:{PORT}/v1/chat/completions`
60
60
  - **Image Support**: Process images through vision-capable models
61
+ - Auto resizes and converts to webp if exceeds configured limits
61
62
  - **Audio Support**: Process audio through audio-capable models
62
63
  - **Custom Chat Templates**: Configurable chat completion request templates for different modalities
63
64
  - **Auto-Discovery**: Automatically discover available Ollama models
@@ -68,23 +69,27 @@ Configure additional providers and models in [llms.json](llms/llms.json)
68
69
 
69
70
  Access all your local all remote LLMs with a single ChatGPT-like UI:
70
71
 
71
- [![](https://servicestack.net/img/posts/llms-py-ui/bg.webp?)](https://servicestack.net/posts/llms-py-ui)
72
+ [![](https://servicestack.net/img/posts/llms-py-ui/bg.webp)](https://servicestack.net/posts/llms-py-ui)
72
73
 
73
- **Monthly Costs Analysis**
74
+ #### Dark Mode Support
75
+
76
+ [![](https://servicestack.net/img/posts/llms-py-ui/dark-attach-image.webp)](https://servicestack.net/posts/llms-py-ui)
77
+
78
+ #### Monthly Costs Analysis
74
79
 
75
80
  [![](https://servicestack.net/img/posts/llms-py-ui/analytics-costs.webp)](https://servicestack.net/posts/llms-py-ui)
76
81
 
77
- **Monthly Token Usage**
82
+ #### Monthly Token Usage (Dark Mode)
78
83
 
79
- [![](https://servicestack.net/img/posts/llms-py-ui/analytics-tokens.webp)](https://servicestack.net/posts/llms-py-ui)
84
+ [![](https://servicestack.net/img/posts/llms-py-ui/dark-analytics-tokens.webp)](https://servicestack.net/posts/llms-py-ui)
80
85
 
81
- **Monthly Activity Log**
86
+ #### Monthly Activity Log
82
87
 
83
88
  [![](https://servicestack.net/img/posts/llms-py-ui/analytics-activity.webp)](https://servicestack.net/posts/llms-py-ui)
84
89
 
85
90
  [More Features and Screenshots](https://servicestack.net/posts/llms-py-ui).
86
91
 
87
- **Check Provider Reliability and Response Times**
92
+ #### Check Provider Reliability and Response Times
88
93
 
89
94
  Check the status of configured providers to test if they're configured correctly, reachable and what their response times is for the simplest `1+1=` request:
90
95
 
@@ -230,6 +235,22 @@ See [DOCKER.md](DOCKER.md) for detailed instructions on customizing configuratio
230
235
 
231
236
  llms.py supports optional GitHub OAuth authentication to secure your web UI and API endpoints. When enabled, users must sign in with their GitHub account before accessing the application.
232
237
 
238
+ ```json
239
+ {
240
+ "auth": {
241
+ "enabled": true,
242
+ "github": {
243
+ "client_id": "$GITHUB_CLIENT_ID",
244
+ "client_secret": "$GITHUB_CLIENT_SECRET",
245
+ "redirect_uri": "http://localhost:8000/auth/github/callback",
246
+ "restrict_to": "$GITHUB_USERS"
247
+ }
248
+ }
249
+ }
250
+ ```
251
+
252
+ `GITHUB_USERS` is optional but if set will only allow access to the specified users.
253
+
233
254
  See [GITHUB_OAUTH_SETUP.md](GITHUB_OAUTH_SETUP.md) for detailed setup instructions.
234
255
 
235
256
  ## Configuration
@@ -243,6 +264,8 @@ The configuration file [llms.json](llms/llms.json) is saved to `~/.llms/llms.jso
243
264
  - `audio`: Default chat completion request template for audio prompts
244
265
  - `file`: Default chat completion request template for file prompts
245
266
  - `check`: Check request template for testing provider connectivity
267
+ - `limits`: Override Request size limits
268
+ - `convert`: Max image size and length limits and auto conversion settings
246
269
 
247
270
  ### Providers
248
271
 
@@ -1211,7 +1234,7 @@ This shows:
1211
1234
  - `llms/main.py` - Main script with CLI and server functionality
1212
1235
  - `llms/llms.json` - Default configuration file
1213
1236
  - `llms/ui.json` - UI configuration file
1214
- - `requirements.txt` - Python dependencies (aiohttp)
1237
+ - `requirements.txt` - Python dependencies, required: `aiohttp`, optional: `Pillow`
1215
1238
 
1216
1239
  ### Provider Classes
1217
1240
 
@@ -0,0 +1,48 @@
1
+ llms/__init__.py,sha256=Mk6eHi13yoUxLlzhwfZ6A1IjsfSQt9ShhOdbLXTvffU,53
2
+ llms/__main__.py,sha256=hrBulHIt3lmPm1BCyAEVtB6DQ0Hvc3gnIddhHCmJasg,151
3
+ llms/index.html,sha256=_pkjdzCX95HTf19LgE4gMh6tLittcnf7M_jL2hSEbbM,3250
4
+ llms/llms.json,sha256=oTMlVM3nYeooQgsPbIGN2LQ-1aq0u1v38sjmxHPiGAc,41331
5
+ llms/main.py,sha256=yAnDzq4qPQ9QqMdK3jnj_2l5GaU6SdofQmfhX6zHRys,88018
6
+ llms/ui.json,sha256=iBOmpNeD5-o8AgUa51ymS-KemovJ7bm9J1fnL0nf8jk,134025
7
+ llms/ui/Analytics.mjs,sha256=r5il9Yvh2lje23e4zbGVUqDu2CG75mtyx84MeMVmHpU,72055
8
+ llms/ui/App.mjs,sha256=95pBXexTt3tgaX-Toh5oS0PdFxrVt3ZU8wu8Ywoz6FI,648
9
+ llms/ui/Avatar.mjs,sha256=TgouwV9bN-Ou1Tf2zCDtVaRiUB21TXZZPFCTlFL-xxQ,3387
10
+ llms/ui/Brand.mjs,sha256=kJn7O4Oo3tbZi87Ifbbcq7AZvhfUqbn_ZcXcyv_WI1A,2075
11
+ llms/ui/ChatPrompt.mjs,sha256=gVKBbxMmvIZWq70LWYBWUgWGemY_pnyMUelI9jRQbsI,25417
12
+ llms/ui/Main.mjs,sha256=pgJOi7Snllf4nHk95HxwFB38cce5jostwwSJyAvynHQ,42249
13
+ llms/ui/ModelSelector.mjs,sha256=iAFp6ZW2pFfS9L1fn07x8a0rJaqqh8w8Tkxej-10pPw,2520
14
+ llms/ui/OAuthSignIn.mjs,sha256=IdA9Tbswlh74a_-9e9YulOpqLfRpodRLGfCZ9sTZ5jU,4879
15
+ llms/ui/ProviderIcon.mjs,sha256=HTjlgtXEpekn8iNN_S0uswbbvL0iGb20N15-_lXdojk,9054
16
+ llms/ui/ProviderStatus.mjs,sha256=v5_Qx5kX-JbnJHD6Or5THiePzcX3Wf9ODcS4Q-kfQbM,6084
17
+ llms/ui/Recents.mjs,sha256=sRoesSktUvBZ7UjfFJwp0btCQj5eQvnTDjSUDzN8ySU,8864
18
+ llms/ui/SettingsDialog.mjs,sha256=vyqLOrACBICwT8qQ10oJAMOYeA1phrAyz93mZygn-9Y,19956
19
+ llms/ui/Sidebar.mjs,sha256=lVhVxC74UeQmBdhv_MxUmbdBJCfjWY0P6rtx1yJHywg,10932
20
+ llms/ui/SignIn.mjs,sha256=df3b-7L3ZIneDGbJWUk93K9RGo40gVeuR5StzT1ZH9g,2324
21
+ llms/ui/SystemPromptEditor.mjs,sha256=PffkNPV6hGbm1QZBKPI7yvWPZSBL7qla0d-JEJ4mxYo,1466
22
+ llms/ui/SystemPromptSelector.mjs,sha256=bxbJc_Ekqr2d7fO_4fOvMyjL3r60T5B-jQDEuwHBVVo,3151
23
+ llms/ui/Welcome.mjs,sha256=r9j7unF9CF3k7gEQBMRMVsa2oSjgHGNn46Oa5l5BwlY,950
24
+ llms/ui/ai.mjs,sha256=Gb72n4mBGdXWKac-thKsVo4gj71CYgmcCZCWWCppxgE,4768
25
+ llms/ui/app.css,sha256=agY_1rQHTaph-9YxlfC6zpQaC-HOI984URQH64hg6Ag,108008
26
+ llms/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
27
+ llms/ui/markdown.mjs,sha256=uWSyBZZ8a76Dkt53q6CJzxg7Gkx7uayX089td3Srv8w,6388
28
+ llms/ui/tailwind.input.css,sha256=QInTVDpCR89OTzRo9AePdAa-MX3i66RkhNOfa4_7UAg,12086
29
+ llms/ui/threadStore.mjs,sha256=VeGXAuUlA9-Ie9ZzOsay6InKBK_ewWFK6aTRmLTporg,16543
30
+ llms/ui/typography.css,sha256=6o7pbMIamRVlm2GfzSStpcOG4T5eFCK_WcQ3RIHKAsU,19587
31
+ llms/ui/utils.mjs,sha256=cYrP17JwpQk7lLqTWNgVTOD_ZZAovbWnx2QSvKzeB24,5333
32
+ llms/ui/lib/chart.js,sha256=dx8FdDX0Rv6OZtZjr9FQh5h-twFsKjfnb-FvFlQ--cU,196176
33
+ llms/ui/lib/charts.mjs,sha256=MNym9qE_2eoH6M7_8Gj9i6e6-Y3b7zw9UQWCUHRF6x0,1088
34
+ llms/ui/lib/color.js,sha256=DDG7Pr-qzJHTPISZNSqP_qJR8UflKHEc_56n6xrBugQ,8273
35
+ llms/ui/lib/highlight.min.mjs,sha256=sG7wq8bF-IKkfie7S4QSyh5DdHBRf0NqQxMOEH8-MT0,127458
36
+ llms/ui/lib/idb.min.mjs,sha256=CeTXyV4I_pB5vnibvJuyXdMs0iVF2ZL0Z7cdm3w_QaI,3853
37
+ llms/ui/lib/marked.min.mjs,sha256=QRHb_VZugcBJRD2EP6gYlVFEsJw5C2fQ8ImMf_pA2_s,39488
38
+ llms/ui/lib/servicestack-client.mjs,sha256=UVafVbzhJ_0N2lzv7rlzIbzwnWpoqXxGk3N3FSKgOOc,54534
39
+ llms/ui/lib/servicestack-vue.mjs,sha256=r_-khYokisXJAIPDLh8Wq6YtcLAY6HNjtJlCZJjLy74,215181
40
+ llms/ui/lib/vue-router.min.mjs,sha256=fR30GHoXI1u81zyZ26YEU105pZgbbAKSXbpnzFKIxls,30418
41
+ llms/ui/lib/vue.min.mjs,sha256=iXh97m5hotl0eFllb3aoasQTImvp7mQoRJ_0HoxmZkw,163811
42
+ llms/ui/lib/vue.mjs,sha256=dS8LKOG01t9CvZ04i0tbFXHqFXOO_Ha4NmM3BytjQAs,537071
43
+ llms_py-2.0.28.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
44
+ llms_py-2.0.28.dist-info/METADATA,sha256=kfED8zRRxV4mDAddg20-0rShqkz4wz5vpsTMmyfvlik,37074
45
+ llms_py-2.0.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
46
+ llms_py-2.0.28.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
47
+ llms_py-2.0.28.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
48
+ llms_py-2.0.28.dist-info/RECORD,,
@@ -1,48 +0,0 @@
1
- llms/__init__.py,sha256=Mk6eHi13yoUxLlzhwfZ6A1IjsfSQt9ShhOdbLXTvffU,53
2
- llms/__main__.py,sha256=hrBulHIt3lmPm1BCyAEVtB6DQ0Hvc3gnIddhHCmJasg,151
3
- llms/index.html,sha256=OA9mRmgh-dQrPqb0Z2Jv-cwEZ3YLPRxcWUN7ASjxO8s,2658
4
- llms/llms.json,sha256=AFGc5-6gWH_czvz0dvkIRPFxkiZluaOwZBBScCVd5HU,41103
5
- llms/main.py,sha256=yPY7xeVPhvPz3nHd34svZrqD5aOWEDRepotXTapwoAE,82441
6
- llms/ui.json,sha256=iBOmpNeD5-o8AgUa51ymS-KemovJ7bm9J1fnL0nf8jk,134025
7
- llms/ui/Analytics.mjs,sha256=mAS5AUQjpnEIMyzGzOGE6fZxwxoVyq5QCitYQSSCEpQ,69151
8
- llms/ui/App.mjs,sha256=fcDx0psdr4NFgkxotPVwC_uYbUHy1BoKxQWcOi3SMbM,631
9
- llms/ui/Avatar.mjs,sha256=TgouwV9bN-Ou1Tf2zCDtVaRiUB21TXZZPFCTlFL-xxQ,3387
10
- llms/ui/Brand.mjs,sha256=0NN2JBLUC0OWERuLz9myrimlcA7v7D5B_EMd0sQQVDo,1905
11
- llms/ui/ChatPrompt.mjs,sha256=85O_kLVKWbbUDOUlvkuAineam_jrd6lzrj4O00p1XOg,21172
12
- llms/ui/Main.mjs,sha256=8-LcEhAbB-HWDHtn0z1DFjgOsWvkcfEQqSUlhWozAVk,40745
13
- llms/ui/ModelSelector.mjs,sha256=ASLTUaqig3cDMiGup01rpubC2RrrZvPd8IFrYcK8GyQ,2565
14
- llms/ui/OAuthSignIn.mjs,sha256=4_j4IYzpw9P1ppzxn2QZJQksh9VB6Rfzg6Nf-TfXWSA,4701
15
- llms/ui/ProviderIcon.mjs,sha256=HTjlgtXEpekn8iNN_S0uswbbvL0iGb20N15-_lXdojk,9054
16
- llms/ui/ProviderStatus.mjs,sha256=qF_rPdhyt9GffKdPCJdU0yanrDJ3cw1HLPygFP_KjEs,5744
17
- llms/ui/Recents.mjs,sha256=hmj7V-RXVw-DqMXjUr3OhFHTYQTkvkEhuNEDTGBf3Qw,8448
18
- llms/ui/SettingsDialog.mjs,sha256=Jm21s5CcZT97ZEhPc7c1WgnLOLdfSiC1SDroYsh7zM4,18095
19
- llms/ui/Sidebar.mjs,sha256=XPdbJo87H1vgTG0R9Ssqo_8XNhn9umkGwbubLpIOWqY,10519
20
- llms/ui/SignIn.mjs,sha256=df3b-7L3ZIneDGbJWUk93K9RGo40gVeuR5StzT1ZH9g,2324
21
- llms/ui/SystemPromptEditor.mjs,sha256=2CyIUvkIubqYPyIp5zC6_I8CMxvYINuYNjDxvMz4VRU,1265
22
- llms/ui/SystemPromptSelector.mjs,sha256=AuEtRwUf_RkGgene3nVA9bw8AeMb-b5_6ZLJCTWA8KQ,3051
23
- llms/ui/Welcome.mjs,sha256=QFAxN7sjWlhMvOIJCmHjNFCQcvpM_T-b4ze1ld9Hj7I,912
24
- llms/ui/ai.mjs,sha256=oXfMQ7kCTm8PFq2bOs7flr5tn9PJa36mAyBg2L4SDIg,4768
25
- llms/ui/app.css,sha256=dYJ83FUYz_j31nxaKKT25xgrYFcoJ0h9ybLum9_VouA,100019
26
- llms/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
27
- llms/ui/markdown.mjs,sha256=O5UspOeD8-E23rxOLWcS4eyy2YejMbPwszCYteVtuoU,6221
28
- llms/ui/tailwind.input.css,sha256=yo_3A50uyiVSUHUWeqAMorXMhCWpZoE5lTO6OJIFlYg,11974
29
- llms/ui/threadStore.mjs,sha256=VeGXAuUlA9-Ie9ZzOsay6InKBK_ewWFK6aTRmLTporg,16543
30
- llms/ui/typography.css,sha256=Z5Fe2IQWnh7bu1CMXniYt0SkaN2fXOFlOuniXUW8oGM,19325
31
- llms/ui/utils.mjs,sha256=cYrP17JwpQk7lLqTWNgVTOD_ZZAovbWnx2QSvKzeB24,5333
32
- llms/ui/lib/chart.js,sha256=dx8FdDX0Rv6OZtZjr9FQh5h-twFsKjfnb-FvFlQ--cU,196176
33
- llms/ui/lib/charts.mjs,sha256=MNym9qE_2eoH6M7_8Gj9i6e6-Y3b7zw9UQWCUHRF6x0,1088
34
- llms/ui/lib/color.js,sha256=DDG7Pr-qzJHTPISZNSqP_qJR8UflKHEc_56n6xrBugQ,8273
35
- llms/ui/lib/highlight.min.mjs,sha256=sG7wq8bF-IKkfie7S4QSyh5DdHBRf0NqQxMOEH8-MT0,127458
36
- llms/ui/lib/idb.min.mjs,sha256=CeTXyV4I_pB5vnibvJuyXdMs0iVF2ZL0Z7cdm3w_QaI,3853
37
- llms/ui/lib/marked.min.mjs,sha256=QRHb_VZugcBJRD2EP6gYlVFEsJw5C2fQ8ImMf_pA2_s,39488
38
- llms/ui/lib/servicestack-client.mjs,sha256=UVafVbzhJ_0N2lzv7rlzIbzwnWpoqXxGk3N3FSKgOOc,54534
39
- llms/ui/lib/servicestack-vue.mjs,sha256=r_-khYokisXJAIPDLh8Wq6YtcLAY6HNjtJlCZJjLy74,215181
40
- llms/ui/lib/vue-router.min.mjs,sha256=fR30GHoXI1u81zyZ26YEU105pZgbbAKSXbpnzFKIxls,30418
41
- llms/ui/lib/vue.min.mjs,sha256=iXh97m5hotl0eFllb3aoasQTImvp7mQoRJ_0HoxmZkw,163811
42
- llms/ui/lib/vue.mjs,sha256=dS8LKOG01t9CvZ04i0tbFXHqFXOO_Ha4NmM3BytjQAs,537071
43
- llms_py-2.0.26.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
44
- llms_py-2.0.26.dist-info/METADATA,sha256=gKYhj_tL1Mw6HZLDKYYrQneBXoqlQy-aHp4ctWiIQYo,36283
45
- llms_py-2.0.26.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
46
- llms_py-2.0.26.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
47
- llms_py-2.0.26.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
48
- llms_py-2.0.26.dist-info/RECORD,,