llms-py 3.0.7__py3-none-any.whl → 3.0.8__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.mjs CHANGED
@@ -31,7 +31,7 @@ const LeftBar = {
31
31
  const LeftPanel = {
32
32
  template: `
33
33
  <div v-if="component" class="flex flex-col h-full border-r border-gray-200 dark:border-gray-700">
34
- <button type="button" class="absolute top-2 right-2 p-1 rounded-md text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-700 lg:hidden z-20">
34
+ <button type="button" @click="$ctx.toggleLayout('left',false)" class="absolute top-2 right-2 p-1 rounded-md text-gray-500 hover:bg-gray-100 dark:hover:bg-gray-700 lg:hidden z-20">
35
35
  <svg class="size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
36
36
  </button>
37
37
  <component :is="component" />
llms/ui/ai.mjs CHANGED
@@ -6,7 +6,7 @@ const headers = { 'Accept': 'application/json' }
6
6
  const prefsKey = 'llms.prefs'
7
7
 
8
8
  export const o = {
9
- version: '3.0.7',
9
+ version: '3.0.8',
10
10
  base,
11
11
  prefsKey,
12
12
  welcome: 'Welcome to llms.py',
llms/ui/app.css CHANGED
@@ -20,8 +20,10 @@
20
20
  --color-red-900: oklch(39.6% 0.141 25.723);
21
21
  --color-orange-100: oklch(95.4% 0.038 75.164);
22
22
  --color-orange-200: oklch(90.1% 0.076 70.697);
23
+ --color-orange-300: oklch(83.7% 0.128 66.29);
23
24
  --color-orange-400: oklch(75% 0.183 55.934);
24
25
  --color-orange-600: oklch(64.6% 0.222 41.116);
26
+ --color-orange-700: oklch(55.3% 0.195 38.402);
25
27
  --color-orange-800: oklch(47% 0.157 37.304);
26
28
  --color-orange-900: oklch(40.8% 0.123 38.172);
27
29
  --color-yellow-50: oklch(98.7% 0.026 102.212);
@@ -91,6 +93,7 @@
91
93
  --color-purple-700: oklch(49.6% 0.265 301.924);
92
94
  --color-purple-800: oklch(43.8% 0.218 303.724);
93
95
  --color-purple-900: oklch(38.1% 0.176 304.987);
96
+ --color-fuchsia-50: oklch(97.7% 0.017 320.058);
94
97
  --color-fuchsia-100: oklch(95.2% 0.037 318.852);
95
98
  --color-fuchsia-200: oklch(90.3% 0.076 319.62);
96
99
  --color-fuchsia-300: oklch(83.3% 0.145 321.434);
@@ -484,12 +487,6 @@
484
487
  .z-100 {
485
488
  z-index: 100;
486
489
  }
487
- .z-\[100\] {
488
- z-index: 100;
489
- }
490
- .z-\[101\] {
491
- z-index: 101;
492
- }
493
490
  .col-span-2 {
494
491
  grid-column: span 2 / span 2;
495
492
  }
@@ -806,6 +803,9 @@
806
803
  .h-\[37px\] {
807
804
  height: 37px;
808
805
  }
806
+ .h-auto {
807
+ height: auto;
808
+ }
809
809
  .h-full {
810
810
  height: 100%;
811
811
  }
@@ -827,9 +827,15 @@
827
827
  .max-h-96 {
828
828
  max-height: calc(var(--spacing) * 96);
829
829
  }
830
+ .max-h-\[80vh\] {
831
+ max-height: 80vh;
832
+ }
830
833
  .max-h-\[90vh\] {
831
834
  max-height: 90vh;
832
835
  }
836
+ .max-h-\[200px\] {
837
+ max-height: 200px;
838
+ }
833
839
  .max-h-\[calc\(90vh-140px\)\] {
834
840
  max-height: calc(90vh - 140px);
835
841
  }
@@ -902,6 +908,9 @@
902
908
  .w-80 {
903
909
  width: calc(var(--spacing) * 80);
904
910
  }
911
+ .w-auto {
912
+ width: auto;
913
+ }
905
914
  .w-full {
906
915
  width: 100%;
907
916
  }
@@ -941,6 +950,9 @@
941
950
  .max-w-\[140px\] {
942
951
  max-width: 140px;
943
952
  }
953
+ .max-w-\[200px\] {
954
+ max-width: 200px;
955
+ }
944
956
  .max-w-\[400px\] {
945
957
  max-width: 400px;
946
958
  }
@@ -1087,6 +1099,9 @@
1087
1099
  .-rotate-12 {
1088
1100
  rotate: calc(12deg * -1);
1089
1101
  }
1102
+ .-rotate-90 {
1103
+ rotate: calc(90deg * -1);
1104
+ }
1090
1105
  .rotate-12 {
1091
1106
  rotate: 12deg;
1092
1107
  }
@@ -1123,6 +1138,9 @@
1123
1138
  .cursor-text {
1124
1139
  cursor: text;
1125
1140
  }
1141
+ .cursor-zoom-in {
1142
+ cursor: zoom-in;
1143
+ }
1126
1144
  .resize {
1127
1145
  resize: both;
1128
1146
  }
@@ -1445,6 +1463,9 @@
1445
1463
  --tw-border-style: none;
1446
1464
  border-style: none;
1447
1465
  }
1466
+ .border-blue-100 {
1467
+ border-color: var(--color-blue-100);
1468
+ }
1448
1469
  .border-blue-200 {
1449
1470
  border-color: var(--color-blue-200);
1450
1471
  }
@@ -1484,6 +1505,9 @@
1484
1505
  .border-green-200 {
1485
1506
  border-color: var(--color-green-200);
1486
1507
  }
1508
+ .border-green-300 {
1509
+ border-color: var(--color-green-300);
1510
+ }
1487
1511
  .border-green-400 {
1488
1512
  border-color: var(--color-green-400);
1489
1513
  }
@@ -1604,6 +1628,9 @@
1604
1628
  .bg-cyan-600 {
1605
1629
  background-color: var(--color-cyan-600);
1606
1630
  }
1631
+ .bg-fuchsia-50 {
1632
+ background-color: var(--color-fuchsia-50);
1633
+ }
1607
1634
  .bg-fuchsia-100 {
1608
1635
  background-color: var(--color-fuchsia-100);
1609
1636
  }
@@ -1622,6 +1649,12 @@
1622
1649
  background-color: color-mix(in oklab, var(--color-gray-50) 30%, transparent);
1623
1650
  }
1624
1651
  }
1652
+ .bg-gray-50\/50 {
1653
+ background-color: color-mix(in srgb, oklch(98.5% 0.002 247.839) 50%, transparent);
1654
+ @supports (color: color-mix(in lab, red, red)) {
1655
+ background-color: color-mix(in oklab, var(--color-gray-50) 50%, transparent);
1656
+ }
1657
+ }
1625
1658
  .bg-gray-100 {
1626
1659
  background-color: var(--color-gray-100);
1627
1660
  }
@@ -1811,6 +1844,10 @@
1811
1844
  --tw-gradient-from: transparent;
1812
1845
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
1813
1846
  }
1847
+ .from-white {
1848
+ --tw-gradient-from: var(--color-white);
1849
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
1850
+ }
1814
1851
  .from-yellow-200 {
1815
1852
  --tw-gradient-from: var(--color-yellow-200);
1816
1853
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
@@ -2093,6 +2130,12 @@
2093
2130
  .pl-5 {
2094
2131
  padding-left: calc(var(--spacing) * 5);
2095
2132
  }
2133
+ .pl-6 {
2134
+ padding-left: calc(var(--spacing) * 6);
2135
+ }
2136
+ .pl-7 {
2137
+ padding-left: calc(var(--spacing) * 7);
2138
+ }
2096
2139
  .pl-9 {
2097
2140
  padding-left: calc(var(--spacing) * 9);
2098
2141
  }
@@ -2291,6 +2334,9 @@
2291
2334
  .text-cyan-600 {
2292
2335
  color: var(--color-cyan-600);
2293
2336
  }
2337
+ .text-fuchsia-700 {
2338
+ color: var(--color-fuchsia-700);
2339
+ }
2294
2340
  .text-fuchsia-800 {
2295
2341
  color: var(--color-fuchsia-800);
2296
2342
  }
@@ -2351,6 +2397,12 @@
2351
2397
  .text-indigo-700 {
2352
2398
  color: var(--color-indigo-700);
2353
2399
  }
2400
+ .text-orange-600 {
2401
+ color: var(--color-orange-600);
2402
+ }
2403
+ .text-orange-700 {
2404
+ color: var(--color-orange-700);
2405
+ }
2354
2406
  .text-orange-800 {
2355
2407
  color: var(--color-orange-800);
2356
2408
  }
@@ -2399,12 +2451,6 @@
2399
2451
  .text-white {
2400
2452
  color: var(--color-white);
2401
2453
  }
2402
- .text-white\/70 {
2403
- color: color-mix(in srgb, #fff 70%, transparent);
2404
- @supports (color: color-mix(in lab, red, red)) {
2405
- color: color-mix(in oklab, var(--color-white) 70%, transparent);
2406
- }
2407
- }
2408
2454
  .text-yellow-100 {
2409
2455
  color: var(--color-yellow-100);
2410
2456
  }
@@ -2868,6 +2914,13 @@
2868
2914
  }
2869
2915
  }
2870
2916
  }
2917
+ .group-hover\:text-gray-900 {
2918
+ &:is(:where(.group):hover *) {
2919
+ @media (hover: hover) {
2920
+ color: var(--color-gray-900);
2921
+ }
2922
+ }
2923
+ }
2871
2924
  .group-hover\:opacity-75 {
2872
2925
  &:is(:where(.group):hover *) {
2873
2926
  @media (hover: hover) {
@@ -3222,6 +3275,13 @@
3222
3275
  }
3223
3276
  }
3224
3277
  }
3278
+ .hover\:bg-fuchsia-100 {
3279
+ &:hover {
3280
+ @media (hover: hover) {
3281
+ background-color: var(--color-fuchsia-100);
3282
+ }
3283
+ }
3284
+ }
3225
3285
  .hover\:bg-fuchsia-600 {
3226
3286
  &:hover {
3227
3287
  @media (hover: hover) {
@@ -3558,17 +3618,17 @@
3558
3618
  }
3559
3619
  }
3560
3620
  }
3561
- .hover\:text-white {
3621
+ .hover\:underline {
3562
3622
  &:hover {
3563
3623
  @media (hover: hover) {
3564
- color: var(--color-white);
3624
+ text-decoration-line: underline;
3565
3625
  }
3566
3626
  }
3567
3627
  }
3568
- .hover\:underline {
3628
+ .hover\:opacity-90 {
3569
3629
  &:hover {
3570
3630
  @media (hover: hover) {
3571
- text-decoration-line: underline;
3631
+ opacity: 90%;
3572
3632
  }
3573
3633
  }
3574
3634
  }
@@ -4253,6 +4313,11 @@
4253
4313
  flex-direction: row;
4254
4314
  }
4255
4315
  }
4316
+ .md\:items-center {
4317
+ @media (width >= 48rem) {
4318
+ align-items: center;
4319
+ }
4320
+ }
4256
4321
  .md\:gap-10 {
4257
4322
  @media (width >= 48rem) {
4258
4323
  gap: calc(var(--spacing) * 10);
@@ -4730,6 +4795,14 @@
4730
4795
  background-color: var(--color-cyan-600);
4731
4796
  }
4732
4797
  }
4798
+ .dark\:bg-fuchsia-900\/20 {
4799
+ &:where(.dark, .dark *) {
4800
+ background-color: color-mix(in srgb, oklch(40.1% 0.17 325.612) 20%, transparent);
4801
+ @supports (color: color-mix(in lab, red, red)) {
4802
+ background-color: color-mix(in oklab, var(--color-fuchsia-900) 20%, transparent);
4803
+ }
4804
+ }
4805
+ }
4733
4806
  .dark\:bg-fuchsia-900\/40 {
4734
4807
  &:where(.dark, .dark *) {
4735
4808
  background-color: color-mix(in srgb, oklch(40.1% 0.17 325.612) 40%, transparent);
@@ -4831,6 +4904,14 @@
4831
4904
  background-color: var(--color-green-900);
4832
4905
  }
4833
4906
  }
4907
+ .dark\:bg-green-900\/20 {
4908
+ &:where(.dark, .dark *) {
4909
+ background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent);
4910
+ @supports (color: color-mix(in lab, red, red)) {
4911
+ background-color: color-mix(in oklab, var(--color-green-900) 20%, transparent);
4912
+ }
4913
+ }
4914
+ }
4834
4915
  .dark\:bg-green-900\/30 {
4835
4916
  &:where(.dark, .dark *) {
4836
4917
  background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 30%, transparent);
@@ -4880,6 +4961,14 @@
4880
4961
  background-color: var(--color-orange-900);
4881
4962
  }
4882
4963
  }
4964
+ .dark\:bg-orange-900\/50 {
4965
+ &:where(.dark, .dark *) {
4966
+ background-color: color-mix(in srgb, oklch(40.8% 0.123 38.172) 50%, transparent);
4967
+ @supports (color: color-mix(in lab, red, red)) {
4968
+ background-color: color-mix(in oklab, var(--color-orange-900) 50%, transparent);
4969
+ }
4970
+ }
4971
+ }
4883
4972
  .dark\:bg-purple-600 {
4884
4973
  &:where(.dark, .dark *) {
4885
4974
  background-color: var(--color-purple-600);
@@ -4979,6 +5068,12 @@
4979
5068
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
4980
5069
  }
4981
5070
  }
5071
+ .dark\:from-gray-800 {
5072
+ &:where(.dark, .dark *) {
5073
+ --tw-gradient-from: var(--color-gray-800);
5074
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
5075
+ }
5076
+ }
4982
5077
  .dark\:from-green-900\/20 {
4983
5078
  &:where(.dark, .dark *) {
4984
5079
  --tw-gradient-from: color-mix(in srgb, oklch(39.3% 0.095 152.535) 20%, transparent);
@@ -5175,6 +5270,16 @@
5175
5270
  color: var(--color-orange-200);
5176
5271
  }
5177
5272
  }
5273
+ .dark\:text-orange-300 {
5274
+ &:where(.dark, .dark *) {
5275
+ color: var(--color-orange-300);
5276
+ }
5277
+ }
5278
+ .dark\:text-orange-400 {
5279
+ &:where(.dark, .dark *) {
5280
+ color: var(--color-orange-400);
5281
+ }
5282
+ }
5178
5283
  .dark\:text-purple-100 {
5179
5284
  &:where(.dark, .dark *) {
5180
5285
  color: var(--color-purple-100);
@@ -5225,6 +5330,11 @@
5225
5330
  color: var(--color-white);
5226
5331
  }
5227
5332
  }
5333
+ .dark\:text-yellow-400 {
5334
+ &:where(.dark, .dark *) {
5335
+ color: var(--color-yellow-400);
5336
+ }
5337
+ }
5228
5338
  .dark\:placeholder-gray-400 {
5229
5339
  &:where(.dark, .dark *) {
5230
5340
  &::placeholder {
@@ -5285,6 +5395,15 @@
5285
5395
  }
5286
5396
  }
5287
5397
  }
5398
+ .dark\:group-hover\:text-gray-100 {
5399
+ &:where(.dark, .dark *) {
5400
+ &:is(:where(.group):hover *) {
5401
+ @media (hover: hover) {
5402
+ color: var(--color-gray-100);
5403
+ }
5404
+ }
5405
+ }
5406
+ }
5288
5407
  .dark\:group-hover\:text-gray-500 {
5289
5408
  &:where(.dark, .dark *) {
5290
5409
  &:is(:where(.group):hover *) {
@@ -5445,6 +5564,18 @@
5445
5564
  }
5446
5565
  }
5447
5566
  }
5567
+ .dark\:hover\:bg-fuchsia-900\/40 {
5568
+ &:where(.dark, .dark *) {
5569
+ &:hover {
5570
+ @media (hover: hover) {
5571
+ background-color: color-mix(in srgb, oklch(40.1% 0.17 325.612) 40%, transparent);
5572
+ @supports (color: color-mix(in lab, red, red)) {
5573
+ background-color: color-mix(in oklab, var(--color-fuchsia-900) 40%, transparent);
5574
+ }
5575
+ }
5576
+ }
5577
+ }
5578
+ }
5448
5579
  .dark\:hover\:bg-gray-200 {
5449
5580
  &:where(.dark, .dark *) {
5450
5581
  &:hover {
@@ -5532,6 +5663,18 @@
5532
5663
  }
5533
5664
  }
5534
5665
  }
5666
+ .dark\:hover\:bg-green-900\/40 {
5667
+ &:where(.dark, .dark *) {
5668
+ &:hover {
5669
+ @media (hover: hover) {
5670
+ background-color: color-mix(in srgb, oklch(39.3% 0.095 152.535) 40%, transparent);
5671
+ @supports (color: color-mix(in lab, red, red)) {
5672
+ background-color: color-mix(in oklab, var(--color-green-900) 40%, transparent);
5673
+ }
5674
+ }
5675
+ }
5676
+ }
5677
+ }
5535
5678
  .dark\:hover\:bg-indigo-700 {
5536
5679
  &:where(.dark, .dark *) {
5537
5680
  &:hover {
@@ -6231,6 +6374,35 @@
6231
6374
  overflow-x: auto;
6232
6375
  padding: 1em;
6233
6376
  }
6377
+ .tool-description pre {
6378
+ background-color: #f8fafc !important;
6379
+ color: #1f2937 !important;
6380
+ border: 1px solid #e2e8f0;
6381
+ border-radius: 0.5rem;
6382
+ padding: 0.75rem 1rem;
6383
+ margin: 0.75rem 0;
6384
+ overflow-x: auto;
6385
+ }
6386
+ .tool-description code {
6387
+ color: inherit !important;
6388
+ }
6389
+ .tool-description code.hljs {
6390
+ background: transparent !important;
6391
+ padding: 0;
6392
+ font-size: 0.85em;
6393
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
6394
+ }
6395
+ .dark .tool-description pre {
6396
+ background-color: #1f2937 !important;
6397
+ border-color: #374151;
6398
+ color: #e5e7eb !important;
6399
+ }
6400
+ .dark .tool-description code {
6401
+ color: inherit !important;
6402
+ }
6403
+ .dark .tool-description code.hljs {
6404
+ color: #e5e7eb;
6405
+ }
6234
6406
  .message pre {
6235
6407
  max-width: 100%;
6236
6408
  min-width: auto;
@@ -6429,21 +6601,33 @@
6429
6601
  .message pre {
6430
6602
  max-width: 500px !important;
6431
6603
  }
6604
+ .has-iframes {
6605
+ min-width: 640px;
6606
+ }
6432
6607
  }
6433
6608
  @media (min-width: 768px) {
6434
6609
  .message pre {
6435
6610
  max-width: 600px !important;
6436
6611
  }
6612
+ .has-iframes {
6613
+ min-width: 640px;
6614
+ }
6437
6615
  }
6438
6616
  @media (min-width: 1024px) {
6439
6617
  .message pre, .message .prose pre {
6440
6618
  max-width: 700px !important;
6441
6619
  }
6620
+ .has-iframes {
6621
+ min-width: 740px;
6622
+ }
6442
6623
  }
6443
6624
  @media (min-width: 1280px) {
6444
6625
  .message pre, .message .prose pre {
6445
6626
  max-width: 800px !important;
6446
6627
  }
6628
+ .has-iframes {
6629
+ min-width: 840px;
6630
+ }
6447
6631
  }
6448
6632
  }
6449
6633
  @property --tw-border-spacing-x {
llms/ui/ctx.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { reactive, markRaw } from 'vue'
3
3
  import { EventBus, humanize, combinePaths } from "@servicestack/client"
4
- import { storageObject } from './utils.mjs'
4
+ import { storageObject, isHtml } from './utils.mjs'
5
5
 
6
6
  export class ExtensionScope {
7
7
  constructor(ctx, id) {
@@ -174,7 +174,8 @@ export class AppContext {
174
174
  async init() {
175
175
  Object.assign(this.state, await this.ai.init(this))
176
176
  Object.assign(this.fmt, {
177
- markdown: this.renderMarkdown.bind(this)
177
+ markdown: this.renderMarkdown.bind(this),
178
+ content: this.renderContent.bind(this),
178
179
  })
179
180
  }
180
181
  setGlobals(globals) {
@@ -334,6 +335,9 @@ export class AppContext {
334
335
  this.state.error = null
335
336
  }
336
337
 
338
+ resolveUrl(url) {
339
+ return this.ai.resolveUrl(url)
340
+ }
337
341
  async getJson(url, options) {
338
342
  return await this.ai.getJson(url, options)
339
343
  }
@@ -396,4 +400,13 @@ export class AppContext {
396
400
  // }
397
401
  return this.marked.parse(content || '')
398
402
  }
399
- }
403
+
404
+ renderContent(content) {
405
+ // Check for HTML tags to detect HTML content
406
+ if (isHtml(content)) {
407
+ // If this is HTML content, return it in an iframe so it doesn't break the page
408
+ return `<iframe src="data:text/html;charset=utf-8,${encodeURIComponent(content)}"></iframe>`
409
+ }
410
+ return this.renderMarkdown(content)
411
+ }
412
+ }
llms/ui/index.mjs CHANGED
@@ -9,7 +9,7 @@ import ChatModule from './modules/chat/index.mjs'
9
9
  import ModelSelectorModule from './modules/model-selector.mjs'
10
10
  import IconsModule from './modules/icons.mjs'
11
11
  import { utilsFunctions, utilsFormatters } from './utils.mjs'
12
- import { marked, markdownFormatters } from './markdown.mjs'
12
+ import { marked } from './markdown.mjs'
13
13
  import { AppContext } from './ctx.mjs'
14
14
 
15
15
  const Components = {