llms-py 3.0.0b6__py3-none-any.whl → 3.0.0b8__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.
Files changed (181) hide show
  1. llms/__pycache__/main.cpython-314.pyc +0 -0
  2. llms/{ui/modules/analytics.mjs → extensions/analytics/ui/index.mjs} +55 -164
  3. llms/extensions/app/__init__.py +519 -0
  4. llms/extensions/app/__pycache__/__init__.cpython-314.pyc +0 -0
  5. llms/extensions/app/__pycache__/db.cpython-314.pyc +0 -0
  6. llms/extensions/app/__pycache__/db_manager.cpython-314.pyc +0 -0
  7. llms/extensions/app/db.py +641 -0
  8. llms/extensions/app/db_manager.py +195 -0
  9. llms/extensions/app/requests.json +9073 -0
  10. llms/extensions/app/threads.json +15290 -0
  11. llms/{ui/modules/threads → extensions/app/ui}/Recents.mjs +82 -55
  12. llms/{ui/modules/threads → extensions/app/ui}/index.mjs +83 -20
  13. llms/extensions/app/ui/threadStore.mjs +407 -0
  14. llms/extensions/core_tools/__init__.py +598 -0
  15. llms/extensions/core_tools/__pycache__/__init__.cpython-314.pyc +0 -0
  16. llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +201 -0
  17. llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +185 -0
  18. llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +101 -0
  19. llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +160 -0
  20. llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +66 -0
  21. llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +27 -0
  22. llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +72 -0
  23. llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +119 -0
  24. llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +98 -0
  25. llms/extensions/core_tools/ui/codemirror/doc/docs.css +225 -0
  26. llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
  27. llms/extensions/core_tools/ui/codemirror/lib/codemirror.css +344 -0
  28. llms/extensions/core_tools/ui/codemirror/lib/codemirror.js +9884 -0
  29. llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +942 -0
  30. llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +118 -0
  31. llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +962 -0
  32. llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +62 -0
  33. llms/extensions/core_tools/ui/codemirror/mode/python/python.js +402 -0
  34. llms/extensions/core_tools/ui/codemirror/theme/dracula.css +40 -0
  35. llms/extensions/core_tools/ui/codemirror/theme/mocha.css +135 -0
  36. llms/extensions/core_tools/ui/index.mjs +650 -0
  37. llms/extensions/gallery/__init__.py +61 -0
  38. llms/extensions/gallery/__pycache__/__init__.cpython-314.pyc +0 -0
  39. llms/extensions/gallery/__pycache__/db.cpython-314.pyc +0 -0
  40. llms/extensions/gallery/db.py +298 -0
  41. llms/extensions/gallery/ui/index.mjs +481 -0
  42. llms/extensions/katex/__init__.py +6 -0
  43. llms/extensions/katex/__pycache__/__init__.cpython-314.pyc +0 -0
  44. llms/extensions/katex/ui/README.md +125 -0
  45. llms/extensions/katex/ui/contrib/auto-render.js +338 -0
  46. llms/extensions/katex/ui/contrib/auto-render.min.js +1 -0
  47. llms/extensions/katex/ui/contrib/auto-render.mjs +244 -0
  48. llms/extensions/katex/ui/contrib/copy-tex.js +127 -0
  49. llms/extensions/katex/ui/contrib/copy-tex.min.js +1 -0
  50. llms/extensions/katex/ui/contrib/copy-tex.mjs +105 -0
  51. llms/extensions/katex/ui/contrib/mathtex-script-type.js +109 -0
  52. llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +1 -0
  53. llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +24 -0
  54. llms/extensions/katex/ui/contrib/mhchem.js +3213 -0
  55. llms/extensions/katex/ui/contrib/mhchem.min.js +1 -0
  56. llms/extensions/katex/ui/contrib/mhchem.mjs +3109 -0
  57. llms/extensions/katex/ui/contrib/render-a11y-string.js +887 -0
  58. llms/extensions/katex/ui/contrib/render-a11y-string.min.js +1 -0
  59. llms/extensions/katex/ui/contrib/render-a11y-string.mjs +800 -0
  60. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
  61. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
  62. llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  63. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  64. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  65. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  66. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  67. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  68. llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  69. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  70. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  71. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  72. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  73. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  74. llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  75. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
  76. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
  77. llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
  78. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  79. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  80. llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  81. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
  82. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
  83. llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
  84. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
  85. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
  86. llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
  87. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  88. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  89. llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  90. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
  91. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
  92. llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
  93. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  94. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  95. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  96. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  97. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  98. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  99. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  100. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  101. llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  102. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
  103. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
  104. llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
  105. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
  106. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
  107. llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  108. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
  109. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
  110. llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  111. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
  112. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
  113. llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  114. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
  115. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
  116. llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  117. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  118. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  119. llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  120. llms/extensions/katex/ui/index.mjs +92 -0
  121. llms/extensions/katex/ui/katex-swap.css +1230 -0
  122. llms/extensions/katex/ui/katex-swap.min.css +1 -0
  123. llms/extensions/katex/ui/katex.css +1230 -0
  124. llms/extensions/katex/ui/katex.js +19080 -0
  125. llms/extensions/katex/ui/katex.min.css +1 -0
  126. llms/extensions/katex/ui/katex.min.js +1 -0
  127. llms/extensions/katex/ui/katex.min.mjs +1 -0
  128. llms/extensions/katex/ui/katex.mjs +18547 -0
  129. llms/extensions/providers/__init__.py +18 -0
  130. llms/extensions/providers/__pycache__/__init__.cpython-314.pyc +0 -0
  131. llms/extensions/providers/__pycache__/anthropic.cpython-314.pyc +0 -0
  132. llms/extensions/providers/__pycache__/chutes.cpython-314.pyc +0 -0
  133. llms/extensions/providers/__pycache__/google.cpython-314.pyc +0 -0
  134. llms/{providers → extensions/providers}/__pycache__/nvidia.cpython-314.pyc +0 -0
  135. llms/{providers → extensions/providers}/__pycache__/openai.cpython-314.pyc +0 -0
  136. llms/extensions/providers/__pycache__/openrouter.cpython-314.pyc +0 -0
  137. llms/{providers → extensions/providers}/anthropic.py +45 -5
  138. llms/{providers → extensions/providers}/chutes.py +21 -18
  139. llms/{providers → extensions/providers}/google.py +99 -27
  140. llms/{providers → extensions/providers}/nvidia.py +6 -8
  141. llms/{providers → extensions/providers}/openai.py +3 -6
  142. llms/{providers → extensions/providers}/openrouter.py +12 -10
  143. llms/extensions/system_prompts/__init__.py +45 -0
  144. llms/extensions/system_prompts/__pycache__/__init__.cpython-314.pyc +0 -0
  145. llms/extensions/system_prompts/ui/index.mjs +285 -0
  146. llms/extensions/system_prompts/ui/prompts.json +1067 -0
  147. llms/extensions/tools/__init__.py +5 -0
  148. llms/extensions/tools/__pycache__/__init__.cpython-314.pyc +0 -0
  149. llms/{ui/modules/tools.mjs → extensions/tools/ui/index.mjs} +12 -10
  150. llms/index.html +26 -38
  151. llms/llms.json +20 -1
  152. llms/main.py +845 -245
  153. llms/providers-extra.json +0 -32
  154. llms/ui/App.mjs +18 -20
  155. llms/ui/ai.mjs +38 -15
  156. llms/ui/app.css +1440 -59
  157. llms/ui/ctx.mjs +154 -18
  158. llms/ui/index.mjs +17 -14
  159. llms/ui/lib/vue.min.mjs +10 -9
  160. llms/ui/lib/vue.mjs +1796 -1635
  161. llms/ui/markdown.mjs +4 -2
  162. llms/ui/modules/chat/ChatBody.mjs +101 -334
  163. llms/ui/modules/chat/HomeTools.mjs +12 -0
  164. llms/ui/modules/chat/SettingsDialog.mjs +1 -1
  165. llms/ui/modules/chat/index.mjs +351 -314
  166. llms/ui/modules/layout.mjs +2 -26
  167. llms/ui/modules/model-selector.mjs +3 -3
  168. llms/ui/tailwind.input.css +35 -1
  169. llms/ui/utils.mjs +33 -3
  170. {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/METADATA +1 -1
  171. llms_py-3.0.0b8.dist-info/RECORD +198 -0
  172. llms/providers/__pycache__/anthropic.cpython-314.pyc +0 -0
  173. llms/providers/__pycache__/chutes.cpython-314.pyc +0 -0
  174. llms/providers/__pycache__/google.cpython-314.pyc +0 -0
  175. llms/providers/__pycache__/openrouter.cpython-314.pyc +0 -0
  176. llms/ui/modules/threads/threadStore.mjs +0 -586
  177. llms_py-3.0.0b6.dist-info/RECORD +0 -66
  178. {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/WHEEL +0 -0
  179. {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/entry_points.txt +0 -0
  180. {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/licenses/LICENSE +0 -0
  181. {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/top_level.txt +0 -0
@@ -1,44 +1,21 @@
1
1
  import { computed, inject, ref, onMounted, onUnmounted } from "vue"
2
2
  import { toJsonObject } from "../utils.mjs"
3
3
 
4
- const ToggleSidebarButton = {
5
- template: `
6
- <button type="button"
7
- @click="$emit('toggle-sidebar')"
8
- class="group relative text-gray-500 dark:text-gray-400 hover:text-blue-600 dark:hover:text-blue-400 focus:outline-none transition-colors"
9
- title="Collapse sidebar"
10
- >
11
- <div class="relative size-5">
12
- <!-- Default sidebar icon -->
13
- <svg class="absolute inset-0 group-hover:hidden" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
14
- <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
15
- <line x1="9" y1="3" x2="9" y2="21"></line>
16
- </svg>
17
- <!-- Hover state: |← icon -->
18
- <svg class="absolute inset-0 hidden group-hover:block" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="m10.071 4.929l1.414 1.414L6.828 11H16v2H6.828l4.657 4.657l-1.414 1.414L3 12zM18.001 19V5h2v14z"/></svg>
19
- </div>
20
- </button>
21
- `,
22
- emits: ['toggle-sidebar'],
23
- }
24
-
25
4
  const Brand = {
26
5
  template: `
27
6
  <div class="flex-shrink-0 p-2 border-b border-gray-200 dark:border-gray-700 select-none">
28
7
  <div class="flex items-center justify-between">
29
8
  <div class="flex items-center space-x-2">
30
9
  <button type="button"
31
- @click="$router.push('/')"
10
+ @click="$ctx.to('/')"
32
11
  class="text-lg font-semibold text-gray-900 dark:text-gray-200 hover:text-blue-600 dark:hover:text-blue-400 focus:outline-none transition-colors"
33
- title="Go back home"
34
- >
12
+ title="Go back home">
35
13
  {{ $state.title }}
36
14
  </button>
37
15
  </div>
38
16
  </div>
39
17
  </div>
40
18
  `,
41
- emits: ['home', 'toggle-sidebar'],
42
19
  }
43
20
 
44
21
  const Welcome = {
@@ -256,7 +233,6 @@ const SignIn = {
256
233
  export default {
257
234
  install(ctx) {
258
235
  ctx.components({
259
- ToggleSidebarButton,
260
236
  Brand,
261
237
  Welcome,
262
238
  Avatar,
@@ -148,7 +148,7 @@ const ProviderStatus = {
148
148
  const onToggle = async (provider, enable) => {
149
149
  pending.value = { ...pending.value, [provider]: true }
150
150
  try {
151
- const res = await ai.post(`/providers/${encodeURIComponent(provider)}`, {
151
+ const res = await ctx.post(`/providers/${encodeURIComponent(provider)}`, {
152
152
  body: JSON.stringify(enable ? { enable: true } : { disable: true })
153
153
  })
154
154
  if (!res.ok) throw new Error(`HTTP ${res.status} ${res.statusText}`)
@@ -350,7 +350,7 @@ const ModelSelectorModal = {
350
350
  @click="selectModel(model)"
351
351
  :class="[
352
352
  'relative text-left p-4 rounded-lg border transition-all group',
353
- modelValue === model.name
353
+ $state.selectedModel === model.name
354
354
  ? 'border-blue-500 bg-blue-50 dark:bg-blue-900/30 ring-2 ring-blue-500/50'
355
355
  : 'border-gray-200 dark:border-gray-700 hover:border-gray-300 dark:hover:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700/50'
356
356
  ]">
@@ -560,7 +560,7 @@ const ModelSelectorModal = {
560
560
  }
561
561
 
562
562
  // Filter by search query
563
- if (prefs.value.query.trim()) {
563
+ if (prefs.value.query?.trim()) {
564
564
  const query = prefs.value.query.toLowerCase()
565
565
  result = result.filter(m =>
566
566
  m.name?.toLowerCase().includes(query) ||
@@ -2,6 +2,7 @@
2
2
  @import "tailwindcss";
3
3
  @source "./lib/servicestack-vue.mjs";
4
4
  @source "../../extensions";
5
+ @source "../../llms-home/extensions";
5
6
 
6
7
  @custom-variant dark (&:where(.dark, .dark *));
7
8
 
@@ -162,6 +163,7 @@
162
163
  word-break: break-all !important;
163
164
  border: none !important;
164
165
  border-radius: 0 !important;
166
+ overflow: auto !important;
165
167
  }
166
168
 
167
169
  /* highlight.js - vs.css */
@@ -319,6 +321,10 @@
319
321
  background-color: #282c34 !important;
320
322
  }
321
323
 
324
+ .prose :where(h1):not(:where([class~="not-prose"] *)) {
325
+ font-weight: 700 !important;
326
+ }
327
+
322
328
  .hljs-comment,
323
329
  .hljs-quote {
324
330
  color: rgb(148 163 184);
@@ -336,7 +342,7 @@
336
342
  padding: .8571429em 1.1428571em;
337
343
  max-width: calc(100vw - 1rem);
338
344
  min-width: fit-content;
339
- background-color: #282c34 !important;
345
+ /* background-color: #282c34 !important; overrides CodeMirror */
340
346
  }
341
347
 
342
348
  pre code.hljs {
@@ -651,4 +657,32 @@
651
657
  left: 0;
652
658
  }
653
659
 
660
+
661
+ @media (min-width: 640px) {
662
+ .message pre {
663
+ max-width: 500px !important;
664
+ }
665
+ }
666
+
667
+ @media (min-width: 768px) {
668
+ .message pre {
669
+ max-width: 600px !important;
670
+ }
671
+ }
672
+
673
+ @media (min-width: 1024px) {
674
+
675
+ .message pre,
676
+ .message .prose pre {
677
+ max-width: 700px !important;
678
+ }
679
+ }
680
+
681
+ @media (min-width: 1280px) {
682
+
683
+ .message pre,
684
+ .message .prose pre {
685
+ max-width: 800px !important;
686
+ }
687
+ }
654
688
  }
llms/ui/utils.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { toRaw } from "vue"
1
2
  import { rightPart } from "@servicestack/client"
2
3
 
3
4
  export function toJsonArray(json) {
@@ -59,7 +60,6 @@ export function serializedClone(obj) {
59
60
  }
60
61
  }
61
62
 
62
-
63
63
  export function deepClone(o) {
64
64
  if (o === null || typeof o !== 'object') return o
65
65
 
@@ -73,7 +73,8 @@ export function deepClone(o) {
73
73
  return structuredClone(o)
74
74
  } catch (e) {
75
75
  console.warn('structuredClone failed, falling back to JSON:', e)
76
- console.log(JSON.stringify(o, undefined, 2))
76
+ console.log(o)
77
+ // console.log(JSON.stringify(o, undefined, 2))
77
78
  }
78
79
  }
79
80
 
@@ -81,6 +82,14 @@ export function deepClone(o) {
81
82
  return serializedClone(o)
82
83
  }
83
84
 
85
+ export function toModelInfo(model) {
86
+ if (!model) return undefined
87
+ const props = ['id', 'name', 'provider', 'cost', 'modalities']
88
+ const to = {}
89
+ props.forEach(k => to[k] = toRaw(model[k]))
90
+ return deepClone(to)
91
+ }
92
+
84
93
  export function pluralize(word, count) {
85
94
  return count === 1 ? word : word + 's'
86
95
  }
@@ -102,6 +111,17 @@ export function formatCost(cost) {
102
111
  if (!cost) return ''
103
112
  return currFmt2.format(parseFloat(cost))
104
113
  }
114
+ export function tokensTitle(usage) {
115
+ let title = []
116
+ if (usage.tokens && usage.price) {
117
+ const msg = parseFloat(usage.price) > 0
118
+ ? `${usage.tokens} tokens @ ${usage.price} = ${tokenCostLong(usage.price, usage.tokens)}`
119
+ : `${usage.tokens} tokens`
120
+ const duration = usage.duration ? ` in ${usage.duration}ms` : ''
121
+ title.push(msg + duration)
122
+ }
123
+ return title.join('\n')
124
+ }
105
125
 
106
126
  // Accessible in views via $fmt
107
127
  export function utilsFormatters() {
@@ -150,17 +170,27 @@ export function utilsFormatters() {
150
170
  })
151
171
  }
152
172
 
173
+ function shortDate(ts) {
174
+ if (!ts) return ''
175
+ const date = typeof ts === 'number' ? new Date(ts * 1000) : new Date(ts)
176
+ return date.toLocaleDateString(undefined, {
177
+ month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'
178
+ })
179
+ }
180
+
153
181
 
154
182
  return {
155
183
  currFmt: currFmt2,
156
184
  tokenCost,
157
185
  tokenCostLong,
186
+ tokensTitle,
158
187
  cost: formatCost,
159
188
  costLong,
160
189
  statsTitle,
161
190
  relativeTime,
162
191
  time,
163
192
  pluralize,
193
+ shortDate,
164
194
  }
165
195
  }
166
196
 
@@ -179,7 +209,6 @@ export const nextId = (() => {
179
209
  export function utilsFunctions() {
180
210
  return {
181
211
  nextId,
182
- deepClone,
183
212
  toJsonArray,
184
213
  toJsonObject,
185
214
  storageArray,
@@ -188,6 +217,7 @@ export function utilsFunctions() {
188
217
  fileToDataUri,
189
218
  serializedClone,
190
219
  deepClone,
220
+ toModelInfo,
191
221
  pluralize,
192
222
  }
193
223
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llms-py
3
- Version: 3.0.0b6
3
+ Version: 3.0.0b8
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
@@ -0,0 +1,198 @@
1
+ llms/__init__.py,sha256=DKwTZDsyYL_wHe7yvLw49Nf8PSgPSyWaeVdotUqSvrQ,84
2
+ llms/__main__.py,sha256=hrBulHIt3lmPm1BCyAEVtB6DQ0Hvc3gnIddhHCmJasg,151
3
+ llms/index.html,sha256=nGk1Djtn9p7l6LuKp4Kg0JIB9fCzxtTWXFfmDb4ggpc,1658
4
+ llms/llms.json,sha256=tONG9JJsEXSRaXp-L_q9ds-_5mnL9O4u1MJaqEoIXGo,11136
5
+ llms/main.py,sha256=ArVL2ZX0moS2FCr4Gh1T_KePcSAVwzY7fOpdwXejLZI,153533
6
+ llms/providers-extra.json,sha256=w7_5gB0YUPK0PJNeViM7vRDfNGChXUKMHfGHenVxEkM,10165
7
+ llms/providers.json,sha256=mP4vQ37LeRAZCpT3WPO2GZaZ3YsXodXBV5OVbVMBAmo,256222
8
+ llms/__pycache__/__init__.cpython-312.pyc,sha256=lg2oFc0aKgj536NOJxcIpbCpEWi47ptF8NufPphgUUk,204
9
+ llms/__pycache__/__init__.cpython-313.pyc,sha256=DvmykIYAjV4Xjv5NeC70BA0JIX8qtwEWP2dfzmOBrps,173
10
+ llms/__pycache__/__init__.cpython-314.pyc,sha256=9CxeBz41D_-ezno6pIOsnoMAFzdRX2uZjKkBLUm25RQ,206
11
+ llms/__pycache__/__main__.cpython-312.pyc,sha256=fcu9LVl5nfdSzg9HqoKyDGoDvENeIXKkjygN7FENEGE,321
12
+ llms/__pycache__/__main__.cpython-314.pyc,sha256=IFxtGVpJq_3whKuM5Ln7YMweKFNbHVp8M7VSrLK5h2A,324
13
+ llms/__pycache__/llms.cpython-312.pyc,sha256=S5dFI79JdUe2dQW4ogdB-CCNhudQeFaFGcfKxgJGBms,72080
14
+ llms/__pycache__/main.cpython-312.pyc,sha256=HrqApYAiiBmYN73HIx_Hl2-Xm1Gy7I_0zuR5j86qoRM,104940
15
+ llms/__pycache__/main.cpython-313.pyc,sha256=6NQ__SJ2rC9ItFLKLHL5ewb5RqxLzZabwgczA9wZd-w,74814
16
+ llms/__pycache__/main.cpython-314.pyc,sha256=wz3Kj4xsvzSXEAkiIDvdLQX2wy5I8s9W2OCGG65x3CA,198508
17
+ llms/__pycache__/plugins.cpython-314.pyc,sha256=fer8nTkidG_vQSx80tL2bAvMS0opDom93bewjseFcyg,3560
18
+ llms/extensions/analytics/ui/index.mjs,sha256=cr9dPmEJjha2xX6A_7xbJxkOolWFP1p6TgIoO8M8juI,69540
19
+ llms/extensions/app/__init__.py,sha256=X-UrI7kvGkWn7LCLDJTm1y5fW7ZlDjx_tZXlgEBts08,18977
20
+ llms/extensions/app/db.py,sha256=UClE37WjfGKc1JhF0TWNAF3TozD-RtgVEe-sRsJESTE,24161
21
+ llms/extensions/app/db_manager.py,sha256=yOSu8OXRovVWdSpEC03QHpJXB5PJJlsVnCLfw_VRPVA,7046
22
+ llms/extensions/app/requests.json,sha256=xMQ_FgMaBxbrCcTnsdkaBvufy40yFT7U1kR6nn_GaNE,264556
23
+ llms/extensions/app/threads.json,sha256=f_xPjkmY2OGbGnSXxVTcSGKRU-2rvfAXnHbf2pH1K5Q,741352
24
+ llms/extensions/app/__pycache__/__init__.cpython-314.pyc,sha256=xpU2rCIqsC19tihBMJcd41FTMq08Hhr3fTtuLwknMn0,26695
25
+ llms/extensions/app/__pycache__/db.cpython-314.pyc,sha256=vtd_bfssg_Vu3i8bqMk3EfJLZfQa2rwG4LJ1SC2EB_E,35538
26
+ llms/extensions/app/__pycache__/db_manager.cpython-314.pyc,sha256=sqEKnwYaWDHtDkMdZboLX7qaXtsmSzbBdnI8Do2Zi5c,11071
27
+ llms/extensions/app/ui/Recents.mjs,sha256=HT9R2IEus3dGEqtKPGrgX1eMp4EQ2j2jLwv-Fn1Us5E,9253
28
+ llms/extensions/app/ui/index.mjs,sha256=XAHNYiAYHo8dRbsA5Q-FwiNFI5wY6YNgRf6exVykQAA,13255
29
+ llms/extensions/app/ui/threadStore.mjs,sha256=oHsgiigafgT4j8XeF9taOSOL8dRCkrhBa-ZhcPUQtAs,11283
30
+ llms/extensions/core_tools/__init__.py,sha256=n899CEgys77Tq28bKtoT84fjPE8Fy8_bWeeNk9aLgbY,21448
31
+ llms/extensions/core_tools/__pycache__/__init__.cpython-314.pyc,sha256=zEgv3hINN2nZFzXTnugdr16k9_9MakduF34094fI0JQ,32394
32
+ llms/extensions/core_tools/ui/index.mjs,sha256=dwUzQAS0TnSgXOfoYBA6cIhJk3HZ8g6cefMy8zL78yE,31737
33
+ llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js,sha256=FDwwFMKSVPNTHMML5tkCBQhLz8Ns_6b5sqRv1CpAviA,7123
34
+ llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js,sha256=b74rk8wXRNnhStHWE0SffhbfTCqihC9ljvwXq_Zi-FA,8544
35
+ llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js,sha256=a6nNlSi3Tn929LnOntBne_7XBX0areAFAYU2jP0OouM,3989
36
+ llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js,sha256=nSOhd_Hk0H46zDfCEP--TBwutNVbvlTBbT5609BNBAE,6815
37
+ llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js,sha256=Jj11L4ULIIkPBQb8snewlLR0E4aSpYtF17m7A-IKoAw,2358
38
+ llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js,sha256=oNLAGW2PSZHNWPMgSY967Olx5QLkgR7PWMta-OgwB8Y,1006
39
+ llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js,sha256=OvvPeINcm9w0LjmSxT2bdChnImE7saitydFA7chzfug,2509
40
+ llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js,sha256=W5xqADH-iVZB8ushmN8lkux2mmaF1rsQ8_m5Kngi4oY,3849
41
+ llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js,sha256=_df_U9DKeWxeN5LOtQY8hNBzW8rxmKHAbHiIDxxmSiI,3295
42
+ llms/extensions/core_tools/ui/codemirror/doc/docs.css,sha256=apFfZ7aIURmhMA5bPWqPasrUeNQQbyIj3RQ8A5cwV94,3315
43
+ llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff,sha256=4ppXym_xSqFSK1sYxUPXogFs3Xu6YyHWBN-jUZ8Osec,29448
44
+ llms/extensions/core_tools/ui/codemirror/lib/codemirror.css,sha256=60lOqXLSZh74b39qxlbdZ4bXIeScnBtG4euWfktvm_M,8720
45
+ llms/extensions/core_tools/ui/codemirror/lib/codemirror.js,sha256=7cA89SlK249o7tVfiEWIiqDEA6ZEWxX4CoZmofVA14s,402008
46
+ llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js,sha256=BYoKZKIGseTbzBmm_6QBWoS7a_4T0LqFdovhHe9bTtI,37362
47
+ llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html,sha256=K5xIggY1lgSYrcM9UhLcniq6G5zM_4Jl29cb_1YvHFQ,4668
48
+ llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js,sha256=9do6jQ3GPCXs0-d8rPV89EMd8Lq_WU_TsZwrHT4imic,40636
49
+ llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html,sha256=38VEYk6oEcuTMvAP18XpxZmrcX5HOzewZGHZalYjt3E,1610
50
+ llms/extensions/core_tools/ui/codemirror/mode/python/python.js,sha256=GaWco4et2wTpUALJrb4rjCMUJ85JNprFNxB-MIimlHw,14984
51
+ llms/extensions/core_tools/ui/codemirror/theme/dracula.css,sha256=Av32BJYI3djQ189kA7blslEzB0Dfw5N3T2i7ZHJ7PG4,2042
52
+ llms/extensions/core_tools/ui/codemirror/theme/mocha.css,sha256=0Y1y9DUgzBSakbXep55HuqOYiPMC-YK3xjVQBiwUQ4g,2402
53
+ llms/extensions/gallery/__init__.py,sha256=6YrgWsrfQXviFsJETFJxDlaEf0DAaPPBzokPxeK6AvU,1583
54
+ llms/extensions/gallery/db.py,sha256=hMsy0NMSKudA4HPUMvffMhXhOmqgVD31Ej_UmPrlbEg,11436
55
+ llms/extensions/gallery/__pycache__/__init__.cpython-314.pyc,sha256=qVYj7_SMudEoxz7BJKsUN_BNEfm9COYKArAIrl30Ynw,3384
56
+ llms/extensions/gallery/__pycache__/db.cpython-314.pyc,sha256=Is7YTzoWVOp-2NnafjibWw7mbCnw2MejGZUrlcyCfeg,15708
57
+ llms/extensions/gallery/ui/index.mjs,sha256=Vfnqs1UJffnWEBuy1BoklsNXKgtcIVoNtDy7cVpS78M,28281
58
+ llms/extensions/katex/__init__.py,sha256=CvEe9CPtzoANc4AFuxZTbrJZdggoWLuKnENKfEdncPQ,206
59
+ llms/extensions/katex/__pycache__/__init__.cpython-314.pyc,sha256=0oIxzaTcTIWR7KuMF_Wkpj-nlxJjVKKv021xXb74hPk,594
60
+ llms/extensions/katex/ui/README.md,sha256=Xkjgncuvv4WT4TzNX4muWHYKJOwZ-kSpNnyveLlJDNU,7268
61
+ llms/extensions/katex/ui/index.mjs,sha256=K54EGfcnQwvqmPiJAMgNplnq1t9AaCHsXvTcVBdbl_4,2829
62
+ llms/extensions/katex/ui/katex-swap.css,sha256=TFnBXg_P8omwxMkHbFFw7jRpnB11EGzV-z2NdUVi_x4,31769
63
+ llms/extensions/katex/ui/katex-swap.min.css,sha256=Fsj_aVHG8yCYtx4Zifq8j5Vl73MhOT-jUFEzrwwr-pM,23712
64
+ llms/extensions/katex/ui/katex.css,sha256=4UJ6yBPVaG2svf0OK6NvOK-NnIhG4M3i3B7L7VvKgmQ,31789
65
+ llms/extensions/katex/ui/katex.js,sha256=PWy90_IeY834xVXGb85bYKRc5gvaKq6dgIBNwjEPmJE,622633
66
+ llms/extensions/katex/ui/katex.min.css,sha256=4Yn9AjiBGYnDZG3Ovai8DPsex5G3nmDPnRjwWknIoBY,23732
67
+ llms/extensions/katex/ui/katex.min.js,sha256=a5CUQ-bI9uXSTMSHL-kJpUdwdiBHrpXj809V7C5vbDo,276705
68
+ llms/extensions/katex/ui/katex.min.mjs,sha256=KmfOVfgFWMddI3U_-lA5BJP_E0D_tnol5rdQNbUlKho,267755
69
+ llms/extensions/katex/ui/katex.mjs,sha256=1qAo5SYTN8yq6uIYB1alXX-BYw_JDnTSdOsCRNxPuJ8,610115
70
+ llms/extensions/katex/ui/contrib/auto-render.js,sha256=H1SS5odSobH7zVAIQModAZHCYTH9w2OBtJOgLGuNS88,10508
71
+ llms/extensions/katex/ui/contrib/auto-render.min.js,sha256=u1PrlTOUUxquNv3VNwZcQkTrhUKQGjzpFGAdkyZ1uKw,3467
72
+ llms/extensions/katex/ui/contrib/auto-render.mjs,sha256=QtMkCZDUVDbW3U37Nud5JEjNwrYCxHrEJP0Jsek9vf4,6840
73
+ llms/extensions/katex/ui/contrib/copy-tex.js,sha256=Kgy7CBbqP6RViyyBD4M_2cLik3CImMSh5ZBhfJqyBOs,4507
74
+ llms/extensions/katex/ui/contrib/copy-tex.min.js,sha256=B3cK-QlDod4aEBB5S8eManNG1G1I-2PjXMdrp2uCdgQ,1673
75
+ llms/extensions/katex/ui/contrib/copy-tex.mjs,sha256=0De3xM3HNCAoWlgOW4-ctEGtZ-Zh_RrTHdRarc8Ee_U,3640
76
+ llms/extensions/katex/ui/contrib/mathtex-script-type.js,sha256=ZCkQ0MIYkiD02D9XnYxhHvDC10xDDFxfXQrKhhxcaxI,4207
77
+ llms/extensions/katex/ui/contrib/mathtex-script-type.min.js,sha256=B5myi4vIBiH8htnO5Fz9HKSZ9309bXGw7jBxWPw7ULk,1290
78
+ llms/extensions/katex/ui/contrib/mathtex-script-type.mjs,sha256=V_UZsiMDB8dNCAIPUshZyWn1Un60DSS7irPiFngI1cY,751
79
+ llms/extensions/katex/ui/contrib/mhchem.js,sha256=ra4CiB7OdQzkMKpbJQxU4j4OPRhUx_80jftes02vaHo,78705
80
+ llms/extensions/katex/ui/contrib/mhchem.min.js,sha256=n4fl6cOEoWBHLQBFA1qGQfYBM1jt2z7OcIY0pQ-UakA,33712
81
+ llms/extensions/katex/ui/contrib/mhchem.mjs,sha256=xdS2inkhwhj_3PTXwXkA14Ove0hDBROBDLFOeRpUq7Q,75577
82
+ llms/extensions/katex/ui/contrib/render-a11y-string.js,sha256=pfoN2Rsz0kzmtqstQTKCWEKqKGwUsED2aNzZJxdJc4c,23938
83
+ llms/extensions/katex/ui/contrib/render-a11y-string.min.js,sha256=eQIPbKYpwHvd8iccbQV-jlXo4lFCikk96DnIlPcTFg0,8454
84
+ llms/extensions/katex/ui/contrib/render-a11y-string.mjs,sha256=Xfgg3ZN2vSPvQk5c_EVQXVeuZG-wxVM3WOetUeBIiTs,20283
85
+ llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf,sha256=aFNIQLz90r_7bw6N60hoTdAefwTqKBMmdXevuQbeHRM,63632
86
+ llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff,sha256=MNqR6EyJP4deJSaJ-uvcWQsocRReitx_mp1NvYzgslE,33516
87
+ llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2,sha256=DN04fJWQoan5eUVgAi27WWVKfYbxh6oMgUla1C06cwg,28076
88
+ llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf,sha256=B9jjA85PwStLtU8QBBcN0ZCh89tF1AD-aAYN8-CJcmg,12368
89
+ llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff,sha256=Gua9dHVZDpfn8UWongnM3jIvemvAuRYHsci47igpD-0,7716
90
+ llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2,sha256=3ncB5Czx9M8LdmwD-yeXcgfu4vT9XXb6ghiEBtpD6kw,6912
91
+ llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf,sha256=7Qt0Ny_u_LucBmay4hDaN7fkn6f7vz7rEdtfaT2s-7c,12344
92
+ llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff,sha256=M5jdAjAlV6eT8oY_iOAtls4Q3yq_-gfI6fqQd1EW5lw,7656
93
+ llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2,sha256=XVPnCtYHwjUhYt7J4JI_tU7Nr6zL9gTNjc99APrLmJs,6908
94
+ llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf,sha256=kWPfnHEiQy5klbQin6kHHPmuhqdYrl78SSTsLhptvOE,19584
95
+ llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff,sha256=m-fOuIAEq4rRJAgiRvv8ykCR42OF1Oxu0d9nN12tUPs,13296
96
+ llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2,sha256=dERO_Vk8AF4_RXO0RSRwTArwqTf-kRzKnpQGjQ0UDT8,11348
97
+ llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf,sha256=Hm-VeekOLKw3-PYKWXxDbgdcEUOFZSt8vrDewEISkbM,19572
98
+ llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff,sha256=Xih1O-cX2sl_VZ9JvBC-nPPBJN3KvaZlnRHLaP68ZGM,13208
99
+ llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2,sha256=UYFNJw0G_wJV26B5mZT6TYyE0R8JlR1HWV9Kux82Atw,11316
100
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf,sha256=E4rCjRZjswN-nF9SNx-lxj2DJPSjjSLNVz5uo6P9DPg,51336
101
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff,sha256=x2xdaWKX1RucsWOcfaQzTw597IG0KxEhO14l72cbuCI,29912
102
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2,sha256=D2DRuJeTjskYyM4HMJJBG6-UOPZzlGVpP_GLD50gsCE,25324
103
+ llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf,sha256=cO4fZKIPIEjCGUDvRtAUT9IVuqlTymmv0eMemFRPcI8,32968
104
+ llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff,sha256=pvfsDYRqx62XWtuJWcN-1JuUrLxK5DbbnOniAofkpkw,19412
105
+ llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2,sha256=mc1Co8By2Rjy9EmEqAfPeqFuE1Rf0IdfwHxsZfmecVs,16780
106
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf,sha256=DYWufMMPI3kKfxpYxKES_cqKrnaba6EUKa8dmLG2yzo,33580
107
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff,sha256=8dbvhvOxGlKL1RhRmb0kQ-yysN6tltiGdLWiwSviS98,19676
108
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2,sha256=l0ecpszpBqvJYeyslvql-couYbjnZw1HWCa83umnwmc,16988
109
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf,sha256=0DMvUoaDcP2Drn-kZHD5DI8uqy_PErxPiAgLNAyVqDA,53580
110
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff,sha256=xjaNh-iho6XTN2I9g9jcS4aPJCqa1HYjfW-NHg8WjNw,30772
111
+ llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2,sha256=wjQs2Lhp4BdSqTIdwXIT_EDU0Ex5aIwdQ_LPMWq9eGY,26272
112
+ llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf,sha256=-Td6sCcc2lmvJLz_vUak0MijVy_6_bs43irV6nsNXuU,31196
113
+ llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff,sha256=hQwK9cIjhJf-uvXkYdiAv0WMNB9C9PMw8bGrVpixmY4,18668
114
+ llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2,sha256=3Ec0TbtstbZVyEYNVh9N9fUBuQyAStPGzsZf4yI1GrE,16400
115
+ llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf,sha256=CM6Y5RsE1YlFowHmOeAraZivKf39Yae4r90Hu_xHnUo,31308
116
+ llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff,sha256=io0kRYE3GRK48_WiPiQ3yypZzZvK67A0bnIsBXN6JXE,18748
117
+ llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2,sha256=evWMXsjxMqLd3pAnxteBTezOTTuCKhEZKkKiDi6XMmQ,16440
118
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf,sha256=Hs4D95-VJ31X3H9rQ1p04TebDUYQSoUwKGtg_0k2nqA,24504
119
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff,sha256=7OA8_YPiLCEs3vZv64RC0loIO-uYjbPxiD8_lzjXULo,14408
120
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2,sha256=6ZrlEUS_EjLvzBv-Wt02JixoZrD6qyT6dXQOG5hXemI,12216
121
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf,sha256=OTHdgfrthroCG7K73Db1vtmjjWtPQHespZsmWqGwIIM,22364
122
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff,sha256=ke5nUAzAEpqgrOOsXGH_FpIQLw8x0CtpNH-6Ndy3W_I,14112
123
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2,sha256=ALJqyCXiCVBWOW4FU7isJtP4rRWMOCbii0xFs4XEcUo,12028
124
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf,sha256=826ol-GfSi5XHR6QDk43EOQ43rBahCSGBFugo-YWpK0,19436
125
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff,sha256=EeTcimRx_21u5WHVPRD96PdInnmCV_9EnF03wZdDVgU,12316
126
+ llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2,sha256=aOjHPvQq_TzOxYvw-6MCzORIk45_wCCl4x-KlS7uE0I,10344
127
+ llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf,sha256=HGfwaP6ouwm_CZwIixz2S9J1Fqbgf0aENEhzVku2amc,16648
128
+ llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff,sha256=2WzfKzvdTWSo_V90pMRn8SOopzkxzUNYifCP-vm_lHo,10588
129
+ llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2,sha256=A21OlRSbaf-bzAzVV3Hv6yX_o5Ryk-aazXjVrDKMaEs,9644
130
+ llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf,sha256=lbbS8aUBc7_tuMY-HRyZsQQn0KTfQgHLRFE7ImlRois,12228
131
+ llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff,sha256=yUPMmGOE9Z6GvqX9fcUKnE3-Vnp8BetA1nkHIN6tl8k,6496
132
+ llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2,sha256=a0fEAWa22-IaXfyncYQT8hR_0jmb4bpgXYrTnO3yXf4,5468
133
+ llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf,sha256=prIJn7VVxg46DbOgiELr8dcyxutOS_RJE2E77U_E45s,11508
134
+ llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff,sha256=IBTFI8MhC8wWZkjE1MxX8Ft0ffB6JCd79xxR5n3Hnj0,6188
135
+ llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2,sha256=0ExUIZ-ersbU1P1C37KHhZdaR5TWsvxx5Wa5zW24Qt0,5208
136
+ llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf,sha256=UA4E1U8NUWZjMsnSCJqoA74iqoeOylOeWfpTxuUisII,7588
137
+ llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff,sha256=ara2Lpti2uLADdkPeRvRCVC-Dsw0kNfWBF9Rwuj-CUk,4420
138
+ llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2,sha256=c9WRJxsWBJYMsQu5D-4CFnCvcpcBfg6YSAszLRH1GZU,3624
139
+ llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf,sha256=xkc2fR3U4WJGhxfQIOH8Dx3Fwm6_3_vlUmFxO_iMWHc,10364
140
+ llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff,sha256=mfnGdQtInJRivwSQC9P5Od-bgpM52qqqme9Ulc3d6lg,5980
141
+ llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2,sha256=pK99QURAocF5CCXPtwDPnPQ7DyxLBPDrxSMBGtmFPsA,4928
142
+ llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf,sha256=8B8-h9nGphwMCBzrV3q9hk6wCmEvesFiDdaRX60u9ao,27556
143
+ llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff,sha256=4U_tArGrp86fWv1YRLXQMhsiNR_rxyDg3ouHI1J2Cfc,16028
144
+ llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2,sha256=cdUX1ngneHz6vfGGkUzDNY7aU543kxlB8rL9SiH2jAs,13568
145
+ llms/extensions/providers/__init__.py,sha256=b20NLETAlDFnKQfGj0YviUA0L0EvDpYJQFK_W-A2_WU,419
146
+ llms/extensions/providers/anthropic.py,sha256=znBBakNlNEHKe9wziCVnhJakUlMIOx_jhrKwN9L1E6M,10256
147
+ llms/extensions/providers/chutes.py,sha256=mdPFwPyK1j2k3HbD-44LD20XYicUZDdyG4RFI4DzmbM,6317
148
+ llms/extensions/providers/google.py,sha256=khH8F9uQueHdqMdMx9SvnD1AbBUp_KSZBVwH1up_E6o,19344
149
+ llms/extensions/providers/nvidia.py,sha256=AokVo18QBqB9xAbIWkcum4SefrwHflhtoIxGWuBycIM,4366
150
+ llms/extensions/providers/openai.py,sha256=qC5o-On3enNS_zSNNfGNHzDa0-Ca50Moz-7kilxd0q0,6234
151
+ llms/extensions/providers/openrouter.py,sha256=gVUIa1DhbrEG7S8_-Qkxa0kdtHT8Doj3El0DO-q_tcQ,3253
152
+ llms/extensions/providers/__pycache__/__init__.cpython-314.pyc,sha256=_V6L2wMvy-HQMmz7bvnegp4NjxmTgP7_AR-d9SUN3dc,797
153
+ llms/extensions/providers/__pycache__/anthropic.cpython-314.pyc,sha256=93ULyorNB8bBHRGOu-38HXy4BnkuDKJkOm_Vo6PP62g,10933
154
+ llms/extensions/providers/__pycache__/chutes.cpython-314.pyc,sha256=QH2fiGb6VueqWNjN0RwizVpPOeqdN78s2rp_WoR0DrA,7367
155
+ llms/extensions/providers/__pycache__/google.cpython-314.pyc,sha256=STxidyM6xp0vwkCLO29wDTIw1jXluDBIB4KLNKf4c14,17473
156
+ llms/extensions/providers/__pycache__/nvidia.cpython-314.pyc,sha256=UOsgdqA2-9E5jVo2CbytViJxrk5AEdXJvH9X0gmK_mA,6216
157
+ llms/extensions/providers/__pycache__/openai.cpython-314.pyc,sha256=mu8QC52_OUwtFX89FN_WXZgkgoFglvF1gDukN4ge8Rk,8735
158
+ llms/extensions/providers/__pycache__/openrouter.cpython-314.pyc,sha256=LknnfQPVrXB2-7GCKVHoXIk6mW2ghRlQmn8piwQCv3I,5335
159
+ llms/extensions/system_prompts/__init__.py,sha256=TZy1CS2dPkBNBA_Ovf9BlVetZqTt2NgnsrZi6Mtg_C0,1535
160
+ llms/extensions/system_prompts/__pycache__/__init__.cpython-314.pyc,sha256=mftPdTu1qDLxifGSy9TkAAYPXxOkuNv7dUmQoZBC5Uk,2168
161
+ llms/extensions/system_prompts/ui/index.mjs,sha256=uUUGSiBGOECzvHriqnAJIGXmlyB3JLKlg5F-PgjnBx8,12197
162
+ llms/extensions/system_prompts/ui/prompts.json,sha256=eu7h4i2XAEcrID2Zr2ma0pweg2WfFehDAvTPaToqcBk,128484
163
+ llms/extensions/tools/__init__.py,sha256=yfIK7dVqYiZGX5VeJ3x7HQWLPQfuPqeNYJsd0lpZUM4,120
164
+ llms/extensions/tools/__pycache__/__init__.cpython-314.pyc,sha256=3H5i6ooI1LCCdVjZPDBteU2Ov6nYSeLAk9kUl6F9pZg,641
165
+ llms/extensions/tools/ui/index.mjs,sha256=Nu69U6odCUh8uu1i8d5f8ryO4Lj_OFbPX2LnVyYu1fk,9602
166
+ llms/ui/App.mjs,sha256=zU-GtbcSMREizjUS9nWiMK6m_oT14MNJ-p_RCz2RVqA,7445
167
+ llms/ui/ai.mjs,sha256=osq_0N-2lXWAk8qgcjJLH_Clnbi5MTrq-4jxjQJWnsg,6087
168
+ llms/ui/app.css,sha256=6-TDhyxmgcMlDTZES8gPUIFFsNonAeW9z-S-xa1AyN0,170573
169
+ llms/ui/ctx.mjs,sha256=pygZxLcscWqRT54xDEcFDw-wIaS63E0OuMqDhJPrKLE,10568
170
+ llms/ui/fav.svg,sha256=_R6MFeXl6wBFT0lqcUxYQIDWgm246YH_3hSTW0oO8qw,734
171
+ llms/ui/index.mjs,sha256=j2rkXwpxPpBsurWLvvN6a25cVu7r9s9avP9ozKOpzMA,4253
172
+ llms/ui/markdown.mjs,sha256=ZeGXxX4_UEUCVkLZzmwXlqWBfReSFzBivdxNu8uSgFk,6648
173
+ llms/ui/tailwind.input.css,sha256=fJInSAoAoF-fhLiWFlocuP5i3b4eWp8grIfG6LyvtVw,15785
174
+ llms/ui/typography.css,sha256=6o7pbMIamRVlm2GfzSStpcOG4T5eFCK_WcQ3RIHKAsU,19587
175
+ llms/ui/utils.mjs,sha256=75Hsj04Zx-IJe4l682qaUTePAx5WT-hyjFUyW8pFwnU,6445
176
+ llms/ui/lib/chart.js,sha256=dx8FdDX0Rv6OZtZjr9FQh5h-twFsKjfnb-FvFlQ--cU,196176
177
+ llms/ui/lib/charts.mjs,sha256=OPFAifcA4MPRv8pw6I7glVh7Xccv8guio0k35zPBDIY,926
178
+ llms/ui/lib/color.js,sha256=DDG7Pr-qzJHTPISZNSqP_qJR8UflKHEc_56n6xrBugQ,8273
179
+ llms/ui/lib/highlight.min.mjs,sha256=sG7wq8bF-IKkfie7S4QSyh5DdHBRf0NqQxMOEH8-MT0,127458
180
+ llms/ui/lib/idb.min.mjs,sha256=CeTXyV4I_pB5vnibvJuyXdMs0iVF2ZL0Z7cdm3w_QaI,3853
181
+ llms/ui/lib/marked.min.mjs,sha256=QRHb_VZugcBJRD2EP6gYlVFEsJw5C2fQ8ImMf_pA2_s,39488
182
+ llms/ui/lib/servicestack-client.mjs,sha256=UVafVbzhJ_0N2lzv7rlzIbzwnWpoqXxGk3N3FSKgOOc,54534
183
+ llms/ui/lib/servicestack-vue.mjs,sha256=4XxQLaKm26aexbY7lYTSMRmjZmBRzZgq7F8GZquuGrs,216947
184
+ llms/ui/lib/vue-router.min.mjs,sha256=fR30GHoXI1u81zyZ26YEU105pZgbbAKSXbpnzFKIxls,30418
185
+ llms/ui/lib/vue.min.mjs,sha256=T1TVu9SFEoLArPLKKEp6gsj_eScmHl5TkUebxGK6ldk,166282
186
+ llms/ui/lib/vue.mjs,sha256=75FuLhUTPk19sncwNIrm0BGEL0_Qw298-_v01fPWYoI,542872
187
+ llms/ui/modules/layout.mjs,sha256=ft5dOT-fBegSmSPQKnktHKfpbmNFan8ZN44z25T8ig8,10892
188
+ llms/ui/modules/model-selector.mjs,sha256=TrXxOIeNgibNMu_6M-wROjQgmHJPrVxH404v1_kXF4c,67486
189
+ llms/ui/modules/chat/ChatBody.mjs,sha256=ISZy1D63gpd9PpJ0EiZQYFf10LC2uI5Xt0SS3qQSL-0,42167
190
+ llms/ui/modules/chat/HomeTools.mjs,sha256=Jak12OvR8DZ6CmrWMMxELoNS8864EtMrhmiQp4SFfoM,213
191
+ llms/ui/modules/chat/SettingsDialog.mjs,sha256=HMBJTwrapKrRIAstIIqp0QlJL5O-ho4hzgvfagPfsX8,19930
192
+ llms/ui/modules/chat/index.mjs,sha256=TFxdCN7qw8JW1OphkhZUX8KxKJdBIwsL7QkavKuYDwQ,34516
193
+ llms_py-3.0.0b8.dist-info/licenses/LICENSE,sha256=bus9cuAOWeYqBk2OuhSABVV1P4z7hgrEFISpyda_H5w,1532
194
+ llms_py-3.0.0b8.dist-info/METADATA,sha256=-ALKI6cNJfV5ZEuMki6K9UybHybvxDUOFspF7SbPboA,2193
195
+ llms_py-3.0.0b8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
196
+ llms_py-3.0.0b8.dist-info/entry_points.txt,sha256=WswyE7PfnkZMIxboC-MS6flBD6wm-CYU7JSUnMhqMfM,40
197
+ llms_py-3.0.0b8.dist-info/top_level.txt,sha256=gC7hk9BKSeog8gyg-EM_g2gxm1mKHwFRfK-10BxOsa4,5
198
+ llms_py-3.0.0b8.dist-info/RECORD,,