llms-py 2.0.29__py3-none-any.whl → 2.0.31__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/app.css CHANGED
@@ -347,6 +347,9 @@
347
347
  .top-2 {
348
348
  top: calc(var(--spacing) * 2);
349
349
  }
350
+ .top-4 {
351
+ top: calc(var(--spacing) * 4);
352
+ }
350
353
  .right-0 {
351
354
  right: calc(var(--spacing) * 0);
352
355
  }
@@ -371,9 +374,15 @@
371
374
  .z-20 {
372
375
  z-index: 20;
373
376
  }
377
+ .z-40 {
378
+ z-index: 40;
379
+ }
374
380
  .z-50 {
375
381
  z-index: 50;
376
382
  }
383
+ .col-span-2 {
384
+ grid-column: span 2 / span 2;
385
+ }
377
386
  .col-span-3 {
378
387
  grid-column: span 3 / span 3;
379
388
  }
@@ -673,6 +682,9 @@
673
682
  .w-48 {
674
683
  width: calc(var(--spacing) * 48);
675
684
  }
685
+ .w-68 {
686
+ width: calc(var(--spacing) * 68);
687
+ }
676
688
  .w-72 {
677
689
  width: calc(var(--spacing) * 72);
678
690
  }
@@ -697,6 +709,9 @@
697
709
  .max-w-48 {
698
710
  max-width: calc(var(--spacing) * 48);
699
711
  }
712
+ .max-w-68 {
713
+ max-width: calc(var(--spacing) * 68);
714
+ }
700
715
  .max-w-72 {
701
716
  max-width: calc(var(--spacing) * 72);
702
717
  }
@@ -715,6 +730,15 @@
715
730
  .min-w-0 {
716
731
  min-width: calc(var(--spacing) * 0);
717
732
  }
733
+ .min-w-6 {
734
+ min-width: calc(var(--spacing) * 6);
735
+ }
736
+ .min-w-\[120px\] {
737
+ min-width: 120px;
738
+ }
739
+ .min-w-\[140px\] {
740
+ min-width: 140px;
741
+ }
718
742
  .min-w-full {
719
743
  min-width: 100%;
720
744
  }
@@ -817,6 +841,9 @@
817
841
  .flex-col {
818
842
  flex-direction: column;
819
843
  }
844
+ .flex-row {
845
+ flex-direction: row;
846
+ }
820
847
  .flex-row-reverse {
821
848
  flex-direction: row-reverse;
822
849
  }
@@ -832,6 +859,9 @@
832
859
  .items-start {
833
860
  align-items: flex-start;
834
861
  }
862
+ .items-stretch {
863
+ align-items: stretch;
864
+ }
835
865
  .justify-between {
836
866
  justify-content: space-between;
837
867
  }
@@ -841,6 +871,9 @@
841
871
  .justify-end {
842
872
  justify-content: flex-end;
843
873
  }
874
+ .gap-1 {
875
+ gap: calc(var(--spacing) * 1);
876
+ }
844
877
  .gap-2 {
845
878
  gap: calc(var(--spacing) * 2);
846
879
  }
@@ -877,6 +910,9 @@
877
910
  margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
878
911
  }
879
912
  }
913
+ .gap-x-2 {
914
+ column-gap: calc(var(--spacing) * 2);
915
+ }
880
916
  .gap-x-4 {
881
917
  column-gap: calc(var(--spacing) * 4);
882
918
  }
@@ -916,6 +952,9 @@
916
952
  --tw-space-x-reverse: 1;
917
953
  }
918
954
  }
955
+ .gap-y-1 {
956
+ row-gap: calc(var(--spacing) * 1);
957
+ }
919
958
  .gap-y-5 {
920
959
  row-gap: calc(var(--spacing) * 5);
921
960
  }
@@ -1346,9 +1385,15 @@
1346
1385
  .pl-3 {
1347
1386
  padding-left: calc(var(--spacing) * 3);
1348
1387
  }
1388
+ .pl-4 {
1389
+ padding-left: calc(var(--spacing) * 4);
1390
+ }
1349
1391
  .pl-5 {
1350
1392
  padding-left: calc(var(--spacing) * 5);
1351
1393
  }
1394
+ .pl-6 {
1395
+ padding-left: calc(var(--spacing) * 6);
1396
+ }
1352
1397
  .pl-10 {
1353
1398
  padding-left: calc(var(--spacing) * 10);
1354
1399
  }
@@ -1766,6 +1811,20 @@
1766
1811
  -webkit-user-select: none;
1767
1812
  user-select: none;
1768
1813
  }
1814
+ .group-hover\:block {
1815
+ &:is(:where(.group):hover *) {
1816
+ @media (hover: hover) {
1817
+ display: block;
1818
+ }
1819
+ }
1820
+ }
1821
+ .group-hover\:hidden {
1822
+ &:is(:where(.group):hover *) {
1823
+ @media (hover: hover) {
1824
+ display: none;
1825
+ }
1826
+ }
1827
+ }
1769
1828
  .group-hover\:inline {
1770
1829
  &:is(:where(.group):hover *) {
1771
1830
  @media (hover: hover) {
@@ -2536,6 +2595,11 @@
2536
2595
  outline-width: 2px;
2537
2596
  }
2538
2597
  }
2598
+ .sm\:col-span-1 {
2599
+ @media (width >= 40rem) {
2600
+ grid-column: span 1 / span 1;
2601
+ }
2602
+ }
2539
2603
  .sm\:col-span-3 {
2540
2604
  @media (width >= 40rem) {
2541
2605
  grid-column: span 3 / span 3;
@@ -2581,11 +2645,21 @@
2581
2645
  display: none;
2582
2646
  }
2583
2647
  }
2648
+ .sm\:inline {
2649
+ @media (width >= 40rem) {
2650
+ display: inline;
2651
+ }
2652
+ }
2584
2653
  .sm\:table-cell {
2585
2654
  @media (width >= 40rem) {
2586
2655
  display: table-cell;
2587
2656
  }
2588
2657
  }
2658
+ .sm\:w-auto {
2659
+ @media (width >= 40rem) {
2660
+ width: auto;
2661
+ }
2662
+ }
2589
2663
  .sm\:w-full {
2590
2664
  @media (width >= 40rem) {
2591
2665
  width: 100%;
@@ -2601,6 +2675,11 @@
2601
2675
  max-width: 65ch;
2602
2676
  }
2603
2677
  }
2678
+ .sm\:flex-initial {
2679
+ @media (width >= 40rem) {
2680
+ flex: 0 auto;
2681
+ }
2682
+ }
2604
2683
  .sm\:translate-y-0 {
2605
2684
  @media (width >= 40rem) {
2606
2685
  --tw-translate-y: calc(var(--spacing) * 0);
@@ -2623,6 +2702,16 @@
2623
2702
  scale: var(--tw-scale-x) var(--tw-scale-y);
2624
2703
  }
2625
2704
  }
2705
+ .sm\:grid-cols-3 {
2706
+ @media (width >= 40rem) {
2707
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2708
+ }
2709
+ }
2710
+ .sm\:flex-row {
2711
+ @media (width >= 40rem) {
2712
+ flex-direction: row;
2713
+ }
2714
+ }
2626
2715
  .sm\:flex-row-reverse {
2627
2716
  @media (width >= 40rem) {
2628
2717
  flex-direction: row-reverse;
@@ -2633,6 +2722,16 @@
2633
2722
  align-items: center;
2634
2723
  }
2635
2724
  }
2725
+ .sm\:gap-2 {
2726
+ @media (width >= 40rem) {
2727
+ gap: calc(var(--spacing) * 2);
2728
+ }
2729
+ }
2730
+ .sm\:gap-4 {
2731
+ @media (width >= 40rem) {
2732
+ gap: calc(var(--spacing) * 4);
2733
+ }
2734
+ }
2636
2735
  .sm\:rounded-lg {
2637
2736
  @media (width >= 40rem) {
2638
2737
  border-radius: var(--radius-lg);
@@ -2653,6 +2752,16 @@
2653
2752
  padding: calc(var(--spacing) * 6);
2654
2753
  }
2655
2754
  }
2755
+ .sm\:px-3 {
2756
+ @media (width >= 40rem) {
2757
+ padding-inline: calc(var(--spacing) * 3);
2758
+ }
2759
+ }
2760
+ .sm\:px-4 {
2761
+ @media (width >= 40rem) {
2762
+ padding-inline: calc(var(--spacing) * 4);
2763
+ }
2764
+ }
2656
2765
  .sm\:px-6 {
2657
2766
  @media (width >= 40rem) {
2658
2767
  padding-inline: calc(var(--spacing) * 6);
@@ -2683,6 +2792,18 @@
2683
2792
  text-align: left;
2684
2793
  }
2685
2794
  }
2795
+ .sm\:text-base {
2796
+ @media (width >= 40rem) {
2797
+ font-size: var(--text-base);
2798
+ line-height: var(--tw-leading, var(--text-base--line-height));
2799
+ }
2800
+ }
2801
+ .sm\:text-lg {
2802
+ @media (width >= 40rem) {
2803
+ font-size: var(--text-lg);
2804
+ line-height: var(--tw-leading, var(--text-lg--line-height));
2805
+ }
2806
+ }
2686
2807
  .sm\:text-sm {
2687
2808
  @media (width >= 40rem) {
2688
2809
  font-size: var(--text-sm);
@@ -2695,6 +2816,11 @@
2695
2816
  transition-duration: 700ms;
2696
2817
  }
2697
2818
  }
2819
+ .md\:flex {
2820
+ @media (width >= 48rem) {
2821
+ display: flex;
2822
+ }
2823
+ }
2698
2824
  .md\:inline {
2699
2825
  @media (width >= 48rem) {
2700
2826
  display: inline;
@@ -2720,11 +2846,6 @@
2720
2846
  grid-template-columns: repeat(4, minmax(0, 1fr));
2721
2847
  }
2722
2848
  }
2723
- .md\:grid-cols-5 {
2724
- @media (width >= 48rem) {
2725
- grid-template-columns: repeat(5, minmax(0, 1fr));
2726
- }
2727
- }
2728
2849
  .md\:rounded-lg {
2729
2850
  @media (width >= 48rem) {
2730
2851
  border-radius: var(--radius-lg);
@@ -2740,6 +2861,11 @@
2740
2861
  position: fixed;
2741
2862
  }
2742
2863
  }
2864
+ .lg\:relative {
2865
+ @media (width >= 64rem) {
2866
+ position: relative;
2867
+ }
2868
+ }
2743
2869
  .lg\:inset-y-0 {
2744
2870
  @media (width >= 64rem) {
2745
2871
  inset-block: calc(var(--spacing) * 0);
@@ -2760,11 +2886,6 @@
2760
2886
  display: none;
2761
2887
  }
2762
2888
  }
2763
- .lg\:inline {
2764
- @media (width >= 64rem) {
2765
- display: inline;
2766
- }
2767
- }
2768
2889
  .lg\:table-cell {
2769
2890
  @media (width >= 64rem) {
2770
2891
  display: table-cell;
@@ -2775,21 +2896,41 @@
2775
2896
  width: calc(var(--spacing) * 72);
2776
2897
  }
2777
2898
  }
2899
+ .lg\:w-auto {
2900
+ @media (width >= 64rem) {
2901
+ width: auto;
2902
+ }
2903
+ }
2778
2904
  .lg\:max-w-screen-md {
2779
2905
  @media (width >= 64rem) {
2780
2906
  max-width: var(--breakpoint-md);
2781
2907
  }
2782
2908
  }
2909
+ .lg\:flex-initial {
2910
+ @media (width >= 64rem) {
2911
+ flex: 0 auto;
2912
+ }
2913
+ }
2783
2914
  .lg\:grid-cols-2 {
2784
2915
  @media (width >= 64rem) {
2785
2916
  grid-template-columns: repeat(2, minmax(0, 1fr));
2786
2917
  }
2787
2918
  }
2919
+ .lg\:grid-cols-5 {
2920
+ @media (width >= 64rem) {
2921
+ grid-template-columns: repeat(5, minmax(0, 1fr));
2922
+ }
2923
+ }
2788
2924
  .lg\:flex-col {
2789
2925
  @media (width >= 64rem) {
2790
2926
  flex-direction: column;
2791
2927
  }
2792
2928
  }
2929
+ .lg\:flex-row {
2930
+ @media (width >= 64rem) {
2931
+ flex-direction: row;
2932
+ }
2933
+ }
2793
2934
  .lg\:px-8 {
2794
2935
  @media (width >= 64rem) {
2795
2936
  padding-inline: calc(var(--spacing) * 8);
@@ -2830,6 +2971,11 @@
2830
2971
  max-width: var(--container-3xl);
2831
2972
  }
2832
2973
  }
2974
+ .xl\:max-w-72 {
2975
+ @media (width >= 80rem) {
2976
+ max-width: calc(var(--spacing) * 72);
2977
+ }
2978
+ }
2833
2979
  .xl\:max-w-screen-lg {
2834
2980
  @media (width >= 80rem) {
2835
2981
  max-width: var(--breakpoint-lg);
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 2.0.29
3
+ Version: 2.0.31
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
@@ -108,6 +108,26 @@ As they're a good indicator for the reliability and speed you can expect from di
108
108
  test the response times for all configured providers and models, the results of which will be frequently published to
109
109
  [/checks/latest.txt](https://github.com/ServiceStack/llms/blob/main/docs/checks/latest.txt)
110
110
 
111
+ ## Change Log
112
+
113
+ #### v2.0.30 (2025-11-01)
114
+ - Improved Responsive Layout with collapsible Sidebar
115
+ - Watching config files for changes and auto-reloading
116
+ - Add cancel button to cancel pending request
117
+ - Return focus to textarea after request completes
118
+ - Clicking outside model or system prompt selector will collapse it
119
+ - Clicking on selected item no longer deselects it
120
+ - Support `VERBOSE=1` for enabling `--verbose` mode (useful in Docker)
121
+
122
+ #### v2.0.28 (2025-10-31)
123
+ - Dark Mode
124
+ - Drag n' Drop files in Message prompt
125
+ - Copy & Paste files in Message prompt
126
+ - Support for GitHub OAuth and optional restrict access to specified Users
127
+ - Support for Docker and Docker Compose
128
+
129
+ [llms.py Releases](https://github.com/ServiceStack/llms/releases)
130
+
111
131
  ## Installation
112
132
 
113
133
  ### Using pip
@@ -1,28 +1,28 @@
1
1
  llms/__init__.py,sha256=Mk6eHi13yoUxLlzhwfZ6A1IjsfSQt9ShhOdbLXTvffU,53
2
2
  llms/__main__.py,sha256=hrBulHIt3lmPm1BCyAEVtB6DQ0Hvc3gnIddhHCmJasg,151
3
3
  llms/index.html,sha256=_pkjdzCX95HTf19LgE4gMh6tLittcnf7M_jL2hSEbbM,3250
4
- llms/llms.json,sha256=oTMlVM3nYeooQgsPbIGN2LQ-1aq0u1v38sjmxHPiGAc,41331
5
- llms/main.py,sha256=BLS3wUocCGDMUxraahVBXYbFwLnr0WmeFUqhwk-MtVE,90456
4
+ llms/llms.json,sha256=4y4BbQcwul4HdUU9LfZOJWyUjTt0nFzGkT_Mlyd7dVU,31945
5
+ llms/main.py,sha256=6a1xJVL5eS8V0Ndns4o771CYxFfjj8JPByUnT8s60qg,90865
6
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
7
+ llms/ui/Analytics.mjs,sha256=LfWbUlpb__0EEYtHu6e4r8AeyhsNQeAxrg44RuNSR0M,73261
8
+ llms/ui/App.mjs,sha256=L8Zn7b7YVqR5jgVQKvo_txijSd1T7jq6QOQEt7Q0eB0,3811
9
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=9VXtXz4vHKLujZOC_yRk0XRNP0L1OTtBNOXeEOTmI-M,26941
12
- llms/ui/Main.mjs,sha256=T_5CmGGDAMc-9tk2hmX6UTUWZ7sDt-A_G22utLndB0Y,42926
13
- llms/ui/ModelSelector.mjs,sha256=MignHFpyeF1_K6tcHqLLCmQgNGQf60gyiP6lzApQzJs,3112
10
+ llms/ui/Brand.mjs,sha256=JLN_lPirNXqS332g0B_WVOlFRVg3lNe1Q56TRnpj0zQ,3411
11
+ llms/ui/ChatPrompt.mjs,sha256=7Bx2-ossJPm8F2n9M82vNt8J-ayHEXft3qctd9TeSdw,27147
12
+ llms/ui/Main.mjs,sha256=SxItBoxJXf5vEVzfUYY6F7imJuwdm0By3EhrCfo4a1M,43016
13
+ llms/ui/ModelSelector.mjs,sha256=0YuNXlyEeiD4YKyXtxtHu0rT7zIv_lnfljvB3hm7YE8,3198
14
14
  llms/ui/OAuthSignIn.mjs,sha256=IdA9Tbswlh74a_-9e9YulOpqLfRpodRLGfCZ9sTZ5jU,4879
15
15
  llms/ui/ProviderIcon.mjs,sha256=HTjlgtXEpekn8iNN_S0uswbbvL0iGb20N15-_lXdojk,9054
16
16
  llms/ui/ProviderStatus.mjs,sha256=v5_Qx5kX-JbnJHD6Or5THiePzcX3Wf9ODcS4Q-kfQbM,6084
17
17
  llms/ui/Recents.mjs,sha256=sRoesSktUvBZ7UjfFJwp0btCQj5eQvnTDjSUDzN8ySU,8864
18
18
  llms/ui/SettingsDialog.mjs,sha256=vyqLOrACBICwT8qQ10oJAMOYeA1phrAyz93mZygn-9Y,19956
19
- llms/ui/Sidebar.mjs,sha256=lVhVxC74UeQmBdhv_MxUmbdBJCfjWY0P6rtx1yJHywg,10932
19
+ llms/ui/Sidebar.mjs,sha256=93wCzrbY4F9VBFGiWujNIj5ynxP_9bmv5pJQOGdybIc,11183
20
20
  llms/ui/SignIn.mjs,sha256=df3b-7L3ZIneDGbJWUk93K9RGo40gVeuR5StzT1ZH9g,2324
21
21
  llms/ui/SystemPromptEditor.mjs,sha256=PffkNPV6hGbm1QZBKPI7yvWPZSBL7qla0d-JEJ4mxYo,1466
22
- llms/ui/SystemPromptSelector.mjs,sha256=A0qZHJGNwsX53X-DVn8ddBGdgn32Gd7wf1rRc1LL0v8,3769
22
+ llms/ui/SystemPromptSelector.mjs,sha256=UgoeuscFes0B1oFkx74dFwC0JgRib37VM4Gy3-kCVDQ,3769
23
23
  llms/ui/Welcome.mjs,sha256=r9j7unF9CF3k7gEQBMRMVsa2oSjgHGNn46Oa5l5BwlY,950
24
- llms/ui/ai.mjs,sha256=XroCFHkmtsthJ5LtR5EY2ZoVekRzAEuWMYEEIzcTRFs,4768
25
- llms/ui/app.css,sha256=0QcB6usfv9o5UieT27lPEBami38akKjhanL3hudnMH8,108326
24
+ llms/ui/ai.mjs,sha256=KYxbKkcdyJZuaSfzgAPqsC81CiviAtbXZwyzmKYoIk4,4849
25
+ llms/ui/app.css,sha256=m6wR6XCzJWbUs0K_MDyGbcnxsWOu2Q58nGpAL646kio,111026
26
26
  llms/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
27
27
  llms/ui/markdown.mjs,sha256=uWSyBZZ8a76Dkt53q6CJzxg7Gkx7uayX089td3Srv8w,6388
28
28
  llms/ui/tailwind.input.css,sha256=QInTVDpCR89OTzRo9AePdAa-MX3i66RkhNOfa4_7UAg,12086
@@ -40,9 +40,9 @@ llms/ui/lib/servicestack-vue.mjs,sha256=EU3cnlQuTzsmPvoK50JFN98t4AO80vVNA-CS2kaS
40
40
  llms/ui/lib/vue-router.min.mjs,sha256=fR30GHoXI1u81zyZ26YEU105pZgbbAKSXbpnzFKIxls,30418
41
41
  llms/ui/lib/vue.min.mjs,sha256=iXh97m5hotl0eFllb3aoasQTImvp7mQoRJ_0HoxmZkw,163811
42
42
  llms/ui/lib/vue.mjs,sha256=dS8LKOG01t9CvZ04i0tbFXHqFXOO_Ha4NmM3BytjQAs,537071
43
- llms_py-2.0.29.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
44
- llms_py-2.0.29.dist-info/METADATA,sha256=5fJrs4oI-YvVi3yA9Bx34j5K3e2cPXiqxiKnhsyBJ7E,37076
45
- llms_py-2.0.29.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
46
- llms_py-2.0.29.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
47
- llms_py-2.0.29.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
48
- llms_py-2.0.29.dist-info/RECORD,,
43
+ llms_py-2.0.31.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
44
+ llms_py-2.0.31.dist-info/METADATA,sha256=gKqXFGqKGvYDYKOwgGlysr6CtNTPNudzCJOOjZ2LpMs,37813
45
+ llms_py-2.0.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
46
+ llms_py-2.0.31.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
47
+ llms_py-2.0.31.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
48
+ llms_py-2.0.31.dist-info/RECORD,,