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.
- llms/__pycache__/main.cpython-314.pyc +0 -0
- llms/{ui/modules/analytics.mjs → extensions/analytics/ui/index.mjs} +55 -164
- llms/extensions/app/__init__.py +519 -0
- llms/extensions/app/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/app/__pycache__/db.cpython-314.pyc +0 -0
- llms/extensions/app/__pycache__/db_manager.cpython-314.pyc +0 -0
- llms/extensions/app/db.py +641 -0
- llms/extensions/app/db_manager.py +195 -0
- llms/extensions/app/requests.json +9073 -0
- llms/extensions/app/threads.json +15290 -0
- llms/{ui/modules/threads → extensions/app/ui}/Recents.mjs +82 -55
- llms/{ui/modules/threads → extensions/app/ui}/index.mjs +83 -20
- llms/extensions/app/ui/threadStore.mjs +407 -0
- llms/extensions/core_tools/__init__.py +598 -0
- llms/extensions/core_tools/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +201 -0
- llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +185 -0
- llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +101 -0
- llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +160 -0
- llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +66 -0
- llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +27 -0
- llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +72 -0
- llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +119 -0
- llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +98 -0
- llms/extensions/core_tools/ui/codemirror/doc/docs.css +225 -0
- llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
- llms/extensions/core_tools/ui/codemirror/lib/codemirror.css +344 -0
- llms/extensions/core_tools/ui/codemirror/lib/codemirror.js +9884 -0
- llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +942 -0
- llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +118 -0
- llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +962 -0
- llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +62 -0
- llms/extensions/core_tools/ui/codemirror/mode/python/python.js +402 -0
- llms/extensions/core_tools/ui/codemirror/theme/dracula.css +40 -0
- llms/extensions/core_tools/ui/codemirror/theme/mocha.css +135 -0
- llms/extensions/core_tools/ui/index.mjs +650 -0
- llms/extensions/gallery/__init__.py +61 -0
- llms/extensions/gallery/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/gallery/__pycache__/db.cpython-314.pyc +0 -0
- llms/extensions/gallery/db.py +298 -0
- llms/extensions/gallery/ui/index.mjs +481 -0
- llms/extensions/katex/__init__.py +6 -0
- llms/extensions/katex/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/katex/ui/README.md +125 -0
- llms/extensions/katex/ui/contrib/auto-render.js +338 -0
- llms/extensions/katex/ui/contrib/auto-render.min.js +1 -0
- llms/extensions/katex/ui/contrib/auto-render.mjs +244 -0
- llms/extensions/katex/ui/contrib/copy-tex.js +127 -0
- llms/extensions/katex/ui/contrib/copy-tex.min.js +1 -0
- llms/extensions/katex/ui/contrib/copy-tex.mjs +105 -0
- llms/extensions/katex/ui/contrib/mathtex-script-type.js +109 -0
- llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +1 -0
- llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +24 -0
- llms/extensions/katex/ui/contrib/mhchem.js +3213 -0
- llms/extensions/katex/ui/contrib/mhchem.min.js +1 -0
- llms/extensions/katex/ui/contrib/mhchem.mjs +3109 -0
- llms/extensions/katex/ui/contrib/render-a11y-string.js +887 -0
- llms/extensions/katex/ui/contrib/render-a11y-string.min.js +1 -0
- llms/extensions/katex/ui/contrib/render-a11y-string.mjs +800 -0
- llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Bold.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Italic.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Main-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Math-Italic.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Script-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- llms/extensions/katex/ui/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- llms/extensions/katex/ui/index.mjs +92 -0
- llms/extensions/katex/ui/katex-swap.css +1230 -0
- llms/extensions/katex/ui/katex-swap.min.css +1 -0
- llms/extensions/katex/ui/katex.css +1230 -0
- llms/extensions/katex/ui/katex.js +19080 -0
- llms/extensions/katex/ui/katex.min.css +1 -0
- llms/extensions/katex/ui/katex.min.js +1 -0
- llms/extensions/katex/ui/katex.min.mjs +1 -0
- llms/extensions/katex/ui/katex.mjs +18547 -0
- llms/extensions/providers/__init__.py +18 -0
- llms/extensions/providers/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/providers/__pycache__/anthropic.cpython-314.pyc +0 -0
- llms/extensions/providers/__pycache__/chutes.cpython-314.pyc +0 -0
- llms/extensions/providers/__pycache__/google.cpython-314.pyc +0 -0
- llms/{providers → extensions/providers}/__pycache__/nvidia.cpython-314.pyc +0 -0
- llms/{providers → extensions/providers}/__pycache__/openai.cpython-314.pyc +0 -0
- llms/extensions/providers/__pycache__/openrouter.cpython-314.pyc +0 -0
- llms/{providers → extensions/providers}/anthropic.py +45 -5
- llms/{providers → extensions/providers}/chutes.py +21 -18
- llms/{providers → extensions/providers}/google.py +99 -27
- llms/{providers → extensions/providers}/nvidia.py +6 -8
- llms/{providers → extensions/providers}/openai.py +3 -6
- llms/{providers → extensions/providers}/openrouter.py +12 -10
- llms/extensions/system_prompts/__init__.py +45 -0
- llms/extensions/system_prompts/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/system_prompts/ui/index.mjs +285 -0
- llms/extensions/system_prompts/ui/prompts.json +1067 -0
- llms/extensions/tools/__init__.py +5 -0
- llms/extensions/tools/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/{ui/modules/tools.mjs → extensions/tools/ui/index.mjs} +12 -10
- llms/index.html +26 -38
- llms/llms.json +20 -1
- llms/main.py +845 -245
- llms/providers-extra.json +0 -32
- llms/ui/App.mjs +18 -20
- llms/ui/ai.mjs +38 -15
- llms/ui/app.css +1440 -59
- llms/ui/ctx.mjs +154 -18
- llms/ui/index.mjs +17 -14
- llms/ui/lib/vue.min.mjs +10 -9
- llms/ui/lib/vue.mjs +1796 -1635
- llms/ui/markdown.mjs +4 -2
- llms/ui/modules/chat/ChatBody.mjs +101 -334
- llms/ui/modules/chat/HomeTools.mjs +12 -0
- llms/ui/modules/chat/SettingsDialog.mjs +1 -1
- llms/ui/modules/chat/index.mjs +351 -314
- llms/ui/modules/layout.mjs +2 -26
- llms/ui/modules/model-selector.mjs +3 -3
- llms/ui/tailwind.input.css +35 -1
- llms/ui/utils.mjs +33 -3
- {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/METADATA +1 -1
- llms_py-3.0.0b8.dist-info/RECORD +198 -0
- llms/providers/__pycache__/anthropic.cpython-314.pyc +0 -0
- llms/providers/__pycache__/chutes.cpython-314.pyc +0 -0
- llms/providers/__pycache__/google.cpython-314.pyc +0 -0
- llms/providers/__pycache__/openrouter.cpython-314.pyc +0 -0
- llms/ui/modules/threads/threadStore.mjs +0 -586
- llms_py-3.0.0b6.dist-info/RECORD +0 -66
- {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/WHEEL +0 -0
- {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/entry_points.txt +0 -0
- {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/licenses/LICENSE +0 -0
- {llms_py-3.0.0b6.dist-info → llms_py-3.0.0b8.dist-info}/top_level.txt +0 -0
llms/providers-extra.json
CHANGED
|
@@ -1,36 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"minimax": {
|
|
3
|
-
"models": {
|
|
4
|
-
"MiniMax-M2.1": {
|
|
5
|
-
"id": "MiniMax-M2.1",
|
|
6
|
-
"name": "MiniMax M2.1",
|
|
7
|
-
"family": "minimax",
|
|
8
|
-
"attachment": false,
|
|
9
|
-
"reasoning": true,
|
|
10
|
-
"tool_call": true,
|
|
11
|
-
"temperature": true,
|
|
12
|
-
"release_date": "2025-12-23",
|
|
13
|
-
"last_updated": "2025-12-23",
|
|
14
|
-
"modalities": {
|
|
15
|
-
"input": [
|
|
16
|
-
"text"
|
|
17
|
-
],
|
|
18
|
-
"output": [
|
|
19
|
-
"text"
|
|
20
|
-
]
|
|
21
|
-
},
|
|
22
|
-
"open_weights": true,
|
|
23
|
-
"cost": {
|
|
24
|
-
"input": 0.3,
|
|
25
|
-
"output": 1.2
|
|
26
|
-
},
|
|
27
|
-
"limit": {
|
|
28
|
-
"context": 204800,
|
|
29
|
-
"output": 128000
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
2
|
"openrouter": {
|
|
35
3
|
"models": {
|
|
36
4
|
"google/gemini-2.5-flash-image": {
|
llms/ui/App.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { AppContext } from "./ctx.mjs"
|
|
|
5
5
|
// Vertical Sidebar Icons
|
|
6
6
|
const LeftBar = {
|
|
7
7
|
template: `
|
|
8
|
-
<div class="flex flex-col space-y-2 pt-2.5 px-1">
|
|
8
|
+
<div class="select-none flex flex-col space-y-2 pt-2.5 px-1">
|
|
9
9
|
<div v-for="(icon, id) in $ctx.left" :key="id" class="relative flex items-center justify-center">
|
|
10
10
|
<component :is="icon.component"
|
|
11
11
|
class="size-7 p-1 cursor-pointer text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 rounded block"
|
|
@@ -15,7 +15,7 @@ const LeftBar = {
|
|
|
15
15
|
/>
|
|
16
16
|
<div v-if="tooltip === icon.id && !icon.isActive({ ...$layout })"
|
|
17
17
|
class="absolute left-full top-1/2 -translate-y-1/2 ml-2 px-2 py-1 text-xs text-white bg-gray-900 dark:bg-gray-800 rounded shadow-md z-50 whitespace-nowrap pointer-events-none" style="z-index: 60">
|
|
18
|
-
{{icon.name}}
|
|
18
|
+
{{icon.title ?? icon.name}}
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
21
|
</div>
|
|
@@ -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"
|
|
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">
|
|
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" />
|
|
@@ -49,11 +49,11 @@ const LeftPanel = {
|
|
|
49
49
|
|
|
50
50
|
const TopBar = {
|
|
51
51
|
template: `
|
|
52
|
-
<div class="flex space-x-1">
|
|
52
|
+
<div class="select-none flex space-x-1">
|
|
53
53
|
<div v-for="(icon, id) in $ctx.top" :key="id" class="relative flex items-center justify-center">
|
|
54
54
|
<component :is="icon.component"
|
|
55
|
-
class="size-7 p-1 cursor-pointer text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 block"
|
|
56
|
-
:class="{ 'bg-gray-100 dark:bg-gray-800 border
|
|
55
|
+
class="size-7 p-1 cursor-pointer text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 block border border-transparent"
|
|
56
|
+
:class="{ 'bg-gray-100 dark:bg-gray-800 border-gray-300 dark:border-gray-600 rounded' : icon.isActive({ ...$layout }) }"
|
|
57
57
|
@mouseenter="tooltip = icon.id"
|
|
58
58
|
@mouseleave="tooltip = ''"
|
|
59
59
|
/>
|
|
@@ -147,15 +147,14 @@ export default {
|
|
|
147
147
|
template: `
|
|
148
148
|
<div class="flex h-screen">
|
|
149
149
|
<!-- Mobile Overlay -->
|
|
150
|
-
<div
|
|
151
|
-
v-if="isMobile && $ctx.layoutVisible('left') && $ai.hasAccess"
|
|
150
|
+
<div v-if="isMobile && $ctx.layoutVisible('left') && $ai.hasAccess"
|
|
152
151
|
@click="$ctx.toggleLayout('left')"
|
|
153
|
-
class="fixed inset-0 bg-black/50 z-40 lg:hidden"
|
|
152
|
+
:class="$ctx.cls('mobile-overlay', 'fixed inset-0 bg-black/50 z-40 lg:hidden')"
|
|
154
153
|
></div>
|
|
155
154
|
|
|
156
|
-
<div id="sidebar" class="z-100 relative flex bg-gray-50 dark:bg-gray-800">
|
|
157
|
-
<LeftBar />
|
|
158
|
-
<LeftPanel
|
|
155
|
+
<div v-if="$ai.hasAccess" id="sidebar" :class="$ctx.cls('sidebar', 'z-100 relative flex bg-gray-50 dark:bg-gray-800')">
|
|
156
|
+
<LeftBar id="left-bar" />
|
|
157
|
+
<LeftPanel id="left-panel"
|
|
159
158
|
v-if="$ai.hasAccess && $ctx.layoutVisible('left')"
|
|
160
159
|
:class="[
|
|
161
160
|
'transition-transform duration-300 ease-in-out z-50',
|
|
@@ -164,27 +163,26 @@ export default {
|
|
|
164
163
|
'fixed inset-y-0 left-[2.25rem] lg:left-0',
|
|
165
164
|
'bg-gray-50 dark:bg-gray-800'
|
|
166
165
|
]"
|
|
167
|
-
@thread-selected="$ctx.toggleLayout('left',false)" @toggle-sidebar="$ctx.toggleLayout('left')"
|
|
168
166
|
/>
|
|
169
167
|
</div>
|
|
170
168
|
|
|
171
169
|
<!-- Main Area -->
|
|
172
|
-
<div class="flex-1 flex flex-col">
|
|
173
|
-
<div class="flex flex-col h-full w-full overflow-hidden">
|
|
174
|
-
<div class="py-1 pr-1 flex items-center justify-between shrink-0">
|
|
170
|
+
<div id="main" :class="$ctx.cls('main', 'flex-1 flex flex-col')">
|
|
171
|
+
<div id="main-inner" :class="$ctx.cls('main-inner', 'flex flex-col h-full w-full overflow-hidden')">
|
|
172
|
+
<div v-if="$ai.hasAccess" id="header" :class="$ctx.cls('header', 'py-1 pr-1 flex items-center justify-between shrink-0')">
|
|
175
173
|
<div>
|
|
176
174
|
<ModelSelector :models="$state.models" v-model="$state.selectedModel" />
|
|
177
175
|
</div>
|
|
178
|
-
<TopBar />
|
|
176
|
+
<TopBar id="top-bar" />
|
|
179
177
|
</div>
|
|
180
|
-
<TopPanel class="shrink-0" />
|
|
181
|
-
<div class="flex-1 overflow-y-auto min-h-0 flex flex-col">
|
|
178
|
+
<TopPanel v-if="$ai.hasAccess" id="top-panel" :class="$ctx.cls('top-panel', 'shrink-0')" />
|
|
179
|
+
<div id="page" :class="$ctx.cls('page', 'flex-1 overflow-y-auto min-h-0 flex flex-col')">
|
|
182
180
|
<RouterView class="h-full" />
|
|
183
181
|
</div>
|
|
184
182
|
</div>
|
|
185
183
|
</div>
|
|
186
184
|
|
|
187
|
-
<component v-if="modal" :is="modal" class="!z-[200]" @done="closeModal" />
|
|
185
|
+
<component v-if="modal" :is="modal" :class="$ctx.cls('modal', '!z-[200]')" @done="closeModal" />
|
|
188
186
|
</div>
|
|
189
187
|
`,
|
|
190
188
|
}
|
llms/ui/ai.mjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { reactive } from "vue"
|
|
2
|
+
import { ApiResult } from "@servicestack/client"
|
|
2
3
|
|
|
3
4
|
const base = ''
|
|
4
5
|
const headers = { 'Accept': 'application/json' }
|
|
5
6
|
const prefsKey = 'llms.prefs'
|
|
6
7
|
|
|
7
8
|
export const o = {
|
|
8
|
-
version: '3.0.
|
|
9
|
+
version: '3.0.0b8',
|
|
9
10
|
base,
|
|
10
11
|
prefsKey,
|
|
11
12
|
welcome: 'Welcome to llms.py',
|
|
@@ -31,34 +32,56 @@ export const o = {
|
|
|
31
32
|
},
|
|
32
33
|
async getJson(url, options) {
|
|
33
34
|
const res = await this.get(url, options)
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
txt = await res.text()
|
|
37
|
-
return JSON.parse(txt)
|
|
38
|
-
} catch (e) {
|
|
39
|
-
console.error('Failed to parse JSON from GET', url, e, txt)
|
|
40
|
-
return { responseStatus: { errorCode: 'Error', message: `GET failed: ${e.message ?? e}` } }
|
|
41
|
-
}
|
|
35
|
+
return await this.createJsonResult(res, url)
|
|
42
36
|
},
|
|
43
|
-
post(url, options) {
|
|
44
|
-
return fetch(this.resolveUrl(url), {
|
|
37
|
+
async post(url, options) {
|
|
38
|
+
return await fetch(this.resolveUrl(url), {
|
|
45
39
|
method: 'POST',
|
|
46
40
|
...options,
|
|
47
41
|
headers: Object.assign({ 'Content-Type': 'application/json' }, this.headers, options?.headers),
|
|
48
42
|
})
|
|
49
43
|
},
|
|
44
|
+
async postForm(url, options) {
|
|
45
|
+
return await fetch(this.resolveUrl(url), {
|
|
46
|
+
method: 'POST',
|
|
47
|
+
...options,
|
|
48
|
+
headers: Object.assign({}, options?.headers),
|
|
49
|
+
})
|
|
50
|
+
},
|
|
50
51
|
async postJson(url, options) {
|
|
51
52
|
const res = await this.post(url, options)
|
|
53
|
+
return await this.createJsonResult(res, url)
|
|
54
|
+
},
|
|
55
|
+
async createJsonResult(res, msg = null) {
|
|
52
56
|
let txt = ''
|
|
53
57
|
try {
|
|
54
58
|
txt = await res.text()
|
|
55
|
-
|
|
59
|
+
const response = JSON.parse(txt)
|
|
60
|
+
if (response?.responseStatus?.errorCode) {
|
|
61
|
+
return new ApiResult({ error: response.responseStatus })
|
|
62
|
+
}
|
|
63
|
+
if (!res.ok) {
|
|
64
|
+
return new ApiResult({ error: { errorCode: 'Error', message: res.statusText } })
|
|
65
|
+
}
|
|
66
|
+
return new ApiResult({ response })
|
|
56
67
|
} catch (e) {
|
|
57
|
-
console.error('Failed to parse JSON
|
|
58
|
-
|
|
68
|
+
console.error('Failed to parse JSON', e, msg, txt)
|
|
69
|
+
const responseStatus = {
|
|
70
|
+
errorCode: 'Error',
|
|
71
|
+
message: `${e.message ?? e}`,
|
|
72
|
+
stackTrace: msg ? `${msg}\n${txt}` : txt,
|
|
73
|
+
}
|
|
74
|
+
return { responseStatus }
|
|
59
75
|
}
|
|
60
76
|
},
|
|
61
|
-
|
|
77
|
+
createErrorResult(e) {
|
|
78
|
+
return new ApiResult({
|
|
79
|
+
responseStatus: {
|
|
80
|
+
errorCode: 'Error',
|
|
81
|
+
message: `${e.message ?? e}`
|
|
82
|
+
}
|
|
83
|
+
})
|
|
84
|
+
},
|
|
62
85
|
async getConfig() {
|
|
63
86
|
return this.get('/config')
|
|
64
87
|
},
|