llms-py 3.0.0__py3-none-any.whl → 3.0.0b1__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/index.html +77 -35
- llms/llms.json +23 -72
- llms/main.py +732 -1786
- llms/providers.json +1 -1
- llms/{extensions/analytics/ui/index.mjs → ui/Analytics.mjs} +238 -154
- llms/ui/App.mjs +60 -151
- llms/ui/Avatar.mjs +85 -0
- llms/ui/Brand.mjs +52 -0
- llms/ui/ChatPrompt.mjs +606 -0
- llms/ui/Main.mjs +873 -0
- llms/ui/ModelSelector.mjs +693 -0
- llms/ui/OAuthSignIn.mjs +92 -0
- llms/ui/ProviderIcon.mjs +36 -0
- llms/ui/ProviderStatus.mjs +105 -0
- llms/{extensions/app/ui → ui}/Recents.mjs +65 -91
- llms/ui/{modules/chat/SettingsDialog.mjs → SettingsDialog.mjs} +9 -9
- llms/{extensions/app/ui/index.mjs → ui/Sidebar.mjs} +58 -124
- llms/ui/SignIn.mjs +64 -0
- llms/ui/SystemPromptEditor.mjs +31 -0
- llms/ui/SystemPromptSelector.mjs +56 -0
- llms/ui/Welcome.mjs +8 -0
- llms/ui/ai.mjs +53 -125
- llms/ui/app.css +111 -1837
- llms/ui/lib/charts.mjs +13 -9
- llms/ui/lib/servicestack-vue.mjs +3 -3
- llms/ui/lib/vue.min.mjs +9 -10
- llms/ui/lib/vue.mjs +1602 -1763
- llms/ui/markdown.mjs +2 -10
- llms/ui/tailwind.input.css +80 -496
- llms/ui/threadStore.mjs +572 -0
- llms/ui/utils.mjs +117 -113
- llms/ui.json +1069 -0
- {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/METADATA +1 -1
- llms_py-3.0.0b1.dist-info/RECORD +49 -0
- llms/__pycache__/__init__.cpython-312.pyc +0 -0
- llms/__pycache__/__init__.cpython-313.pyc +0 -0
- llms/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/__pycache__/__main__.cpython-312.pyc +0 -0
- llms/__pycache__/__main__.cpython-314.pyc +0 -0
- llms/__pycache__/llms.cpython-312.pyc +0 -0
- llms/__pycache__/main.cpython-312.pyc +0 -0
- llms/__pycache__/main.cpython-313.pyc +0 -0
- llms/__pycache__/main.cpython-314.pyc +0 -0
- llms/__pycache__/plugins.cpython-314.pyc +0 -0
- llms/extensions/app/README.md +0 -20
- llms/extensions/app/__init__.py +0 -530
- 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 +0 -644
- llms/extensions/app/db_manager.py +0 -195
- llms/extensions/app/requests.json +0 -9073
- llms/extensions/app/threads.json +0 -15290
- llms/extensions/app/ui/threadStore.mjs +0 -411
- llms/extensions/core_tools/CALCULATOR.md +0 -32
- llms/extensions/core_tools/__init__.py +0 -598
- llms/extensions/core_tools/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/core_tools/ui/codemirror/addon/edit/closebrackets.js +0 -201
- llms/extensions/core_tools/ui/codemirror/addon/edit/closetag.js +0 -185
- llms/extensions/core_tools/ui/codemirror/addon/edit/continuelist.js +0 -101
- llms/extensions/core_tools/ui/codemirror/addon/edit/matchbrackets.js +0 -160
- llms/extensions/core_tools/ui/codemirror/addon/edit/matchtags.js +0 -66
- llms/extensions/core_tools/ui/codemirror/addon/edit/trailingspace.js +0 -27
- llms/extensions/core_tools/ui/codemirror/addon/selection/active-line.js +0 -72
- llms/extensions/core_tools/ui/codemirror/addon/selection/mark-selection.js +0 -119
- llms/extensions/core_tools/ui/codemirror/addon/selection/selection-pointer.js +0 -98
- llms/extensions/core_tools/ui/codemirror/doc/docs.css +0 -225
- llms/extensions/core_tools/ui/codemirror/doc/source_sans.woff +0 -0
- llms/extensions/core_tools/ui/codemirror/lib/codemirror.css +0 -344
- llms/extensions/core_tools/ui/codemirror/lib/codemirror.js +0 -9884
- llms/extensions/core_tools/ui/codemirror/mode/clike/clike.js +0 -942
- llms/extensions/core_tools/ui/codemirror/mode/javascript/index.html +0 -118
- llms/extensions/core_tools/ui/codemirror/mode/javascript/javascript.js +0 -962
- llms/extensions/core_tools/ui/codemirror/mode/javascript/typescript.html +0 -62
- llms/extensions/core_tools/ui/codemirror/mode/python/python.js +0 -402
- llms/extensions/core_tools/ui/codemirror/theme/dracula.css +0 -40
- llms/extensions/core_tools/ui/codemirror/theme/mocha.css +0 -135
- llms/extensions/core_tools/ui/index.mjs +0 -650
- llms/extensions/gallery/README.md +0 -61
- llms/extensions/gallery/__init__.py +0 -61
- 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 +0 -298
- llms/extensions/gallery/ui/index.mjs +0 -482
- llms/extensions/katex/README.md +0 -39
- llms/extensions/katex/__init__.py +0 -6
- llms/extensions/katex/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/katex/ui/README.md +0 -125
- llms/extensions/katex/ui/contrib/auto-render.js +0 -338
- llms/extensions/katex/ui/contrib/auto-render.min.js +0 -1
- llms/extensions/katex/ui/contrib/auto-render.mjs +0 -244
- llms/extensions/katex/ui/contrib/copy-tex.js +0 -127
- llms/extensions/katex/ui/contrib/copy-tex.min.js +0 -1
- llms/extensions/katex/ui/contrib/copy-tex.mjs +0 -105
- llms/extensions/katex/ui/contrib/mathtex-script-type.js +0 -109
- llms/extensions/katex/ui/contrib/mathtex-script-type.min.js +0 -1
- llms/extensions/katex/ui/contrib/mathtex-script-type.mjs +0 -24
- llms/extensions/katex/ui/contrib/mhchem.js +0 -3213
- llms/extensions/katex/ui/contrib/mhchem.min.js +0 -1
- llms/extensions/katex/ui/contrib/mhchem.mjs +0 -3109
- llms/extensions/katex/ui/contrib/render-a11y-string.js +0 -887
- llms/extensions/katex/ui/contrib/render-a11y-string.min.js +0 -1
- llms/extensions/katex/ui/contrib/render-a11y-string.mjs +0 -800
- 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 +0 -92
- llms/extensions/katex/ui/katex-swap.css +0 -1230
- llms/extensions/katex/ui/katex-swap.min.css +0 -1
- llms/extensions/katex/ui/katex.css +0 -1230
- llms/extensions/katex/ui/katex.js +0 -19080
- llms/extensions/katex/ui/katex.min.css +0 -1
- llms/extensions/katex/ui/katex.min.js +0 -1
- llms/extensions/katex/ui/katex.min.mjs +0 -1
- llms/extensions/katex/ui/katex.mjs +0 -18547
- llms/extensions/providers/__init__.py +0 -18
- 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/extensions/providers/__pycache__/nvidia.cpython-314.pyc +0 -0
- llms/extensions/providers/__pycache__/openai.cpython-314.pyc +0 -0
- llms/extensions/providers/__pycache__/openrouter.cpython-314.pyc +0 -0
- llms/extensions/providers/anthropic.py +0 -229
- llms/extensions/providers/chutes.py +0 -155
- llms/extensions/providers/google.py +0 -378
- llms/extensions/providers/nvidia.py +0 -105
- llms/extensions/providers/openai.py +0 -156
- llms/extensions/providers/openrouter.py +0 -72
- llms/extensions/system_prompts/README.md +0 -22
- llms/extensions/system_prompts/__init__.py +0 -45
- llms/extensions/system_prompts/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/system_prompts/ui/index.mjs +0 -280
- llms/extensions/system_prompts/ui/prompts.json +0 -1067
- llms/extensions/tools/__init__.py +0 -5
- llms/extensions/tools/__pycache__/__init__.cpython-314.pyc +0 -0
- llms/extensions/tools/ui/index.mjs +0 -204
- llms/providers-extra.json +0 -356
- llms/ui/ctx.mjs +0 -365
- llms/ui/index.mjs +0 -129
- llms/ui/modules/chat/ChatBody.mjs +0 -691
- llms/ui/modules/chat/index.mjs +0 -828
- llms/ui/modules/layout.mjs +0 -243
- llms/ui/modules/model-selector.mjs +0 -851
- llms_py-3.0.0.dist-info/RECORD +0 -202
- {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/WHEEL +0 -0
- {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/entry_points.txt +0 -0
- {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/licenses/LICENSE +0 -0
- {llms_py-3.0.0.dist-info → llms_py-3.0.0b1.dist-info}/top_level.txt +0 -0
llms/ui/ai.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { reactive } from "vue"
|
|
2
|
-
import {
|
|
2
|
+
import { useThreadStore } from "./threadStore.mjs"
|
|
3
3
|
|
|
4
4
|
const base = ''
|
|
5
5
|
const headers = { 'Accept': 'application/json' }
|
|
6
6
|
const prefsKey = 'llms.prefs'
|
|
7
7
|
|
|
8
8
|
export const o = {
|
|
9
|
-
version: '3.0.
|
|
9
|
+
version: '3.0.0b1',
|
|
10
10
|
base,
|
|
11
11
|
prefsKey,
|
|
12
12
|
welcome: 'Welcome to llms.py',
|
|
@@ -15,11 +15,6 @@ export const o = {
|
|
|
15
15
|
authType: 'apikey', // 'oauth' or 'apikey' - controls which SignIn component to use
|
|
16
16
|
headers,
|
|
17
17
|
isSidebarOpen: true, // Shared sidebar state (default open for lg+ screens)
|
|
18
|
-
cacheUrlInfo: {},
|
|
19
|
-
|
|
20
|
-
get hasAccess() {
|
|
21
|
-
return !this.requiresAuth || this.auth
|
|
22
|
-
},
|
|
23
18
|
|
|
24
19
|
resolveUrl(url) {
|
|
25
20
|
return url.startsWith('http') || url.startsWith('/v1') ? url : base + url
|
|
@@ -30,73 +25,14 @@ export const o = {
|
|
|
30
25
|
headers: Object.assign({}, this.headers, options?.headers),
|
|
31
26
|
})
|
|
32
27
|
},
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return await this.createJsonResult(res, url)
|
|
36
|
-
},
|
|
37
|
-
async post(url, options) {
|
|
38
|
-
return await fetch(this.resolveUrl(url), {
|
|
28
|
+
post(url, options) {
|
|
29
|
+
return fetch(this.resolveUrl(url), {
|
|
39
30
|
method: 'POST',
|
|
40
31
|
...options,
|
|
41
32
|
headers: Object.assign({ 'Content-Type': 'application/json' }, this.headers, options?.headers),
|
|
42
33
|
})
|
|
43
34
|
},
|
|
44
|
-
|
|
45
|
-
return await fetch(this.resolveUrl(url), {
|
|
46
|
-
method: 'POST',
|
|
47
|
-
...options,
|
|
48
|
-
headers: Object.assign({}, options?.headers),
|
|
49
|
-
})
|
|
50
|
-
},
|
|
51
|
-
async postJson(url, options) {
|
|
52
|
-
const res = await this.post(url, options)
|
|
53
|
-
return await this.createJsonResult(res, url)
|
|
54
|
-
},
|
|
55
|
-
async createJsonResult(res, msg = null) {
|
|
56
|
-
let txt = ''
|
|
57
|
-
try {
|
|
58
|
-
txt = await res.text()
|
|
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 })
|
|
67
|
-
} catch (e) {
|
|
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 }
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
createErrorStatus({ message, errorCode, stackTrace, errors, meta }) {
|
|
78
|
-
const ret = {
|
|
79
|
-
errorCode: errorCode || 'Error',
|
|
80
|
-
message: message,
|
|
81
|
-
}
|
|
82
|
-
if (stackTrace) {
|
|
83
|
-
ret.stackTrace = stackTrace
|
|
84
|
-
}
|
|
85
|
-
if (errors && Array.isArray(errors)) {
|
|
86
|
-
ret.errors = errors
|
|
87
|
-
}
|
|
88
|
-
if (meta) {
|
|
89
|
-
ret.meta = meta
|
|
90
|
-
}
|
|
91
|
-
return ret
|
|
92
|
-
},
|
|
93
|
-
createErrorResult(e) {
|
|
94
|
-
return new ApiResult({
|
|
95
|
-
error: e.errorCode
|
|
96
|
-
? this.createErrorStatus(e)
|
|
97
|
-
: this.createErrorStatus({ message: `${e.message ?? e}` })
|
|
98
|
-
})
|
|
99
|
-
},
|
|
35
|
+
|
|
100
36
|
async getConfig() {
|
|
101
37
|
return this.get('/config')
|
|
102
38
|
},
|
|
@@ -116,33 +52,51 @@ export const o = {
|
|
|
116
52
|
this.auth = auth
|
|
117
53
|
if (auth?.apiKey) {
|
|
118
54
|
this.headers.Authorization = `Bearer ${auth.apiKey}`
|
|
55
|
+
//localStorage.setItem('llms:auth', JSON.stringify({ apiKey: auth.apiKey }))
|
|
56
|
+
} else if (auth?.sessionToken) {
|
|
57
|
+
this.headers['X-Session-Token'] = auth.sessionToken
|
|
58
|
+
localStorage.setItem('llms:auth', JSON.stringify({ sessionToken: auth.sessionToken }))
|
|
119
59
|
} else {
|
|
120
60
|
if (this.headers.Authorization) {
|
|
121
61
|
delete this.headers.Authorization
|
|
122
62
|
}
|
|
63
|
+
if (this.headers['X-Session-Token']) {
|
|
64
|
+
delete this.headers['X-Session-Token']
|
|
65
|
+
}
|
|
123
66
|
}
|
|
124
67
|
},
|
|
125
68
|
async signOut() {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
69
|
+
if (this.auth?.sessionToken) {
|
|
70
|
+
// Call logout endpoint for OAuth sessions
|
|
71
|
+
try {
|
|
72
|
+
await this.post('/auth/logout', {
|
|
73
|
+
headers: {
|
|
74
|
+
'X-Session-Token': this.auth.sessionToken
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
} catch (error) {
|
|
78
|
+
console.error('Logout error:', error)
|
|
79
|
+
}
|
|
130
80
|
}
|
|
131
81
|
this.auth = null
|
|
132
82
|
if (this.headers.Authorization) {
|
|
133
83
|
delete this.headers.Authorization
|
|
134
84
|
}
|
|
85
|
+
if (this.headers['X-Session-Token']) {
|
|
86
|
+
delete this.headers['X-Session-Token']
|
|
87
|
+
}
|
|
88
|
+
localStorage.removeItem('llms:auth')
|
|
135
89
|
},
|
|
136
|
-
async init(
|
|
90
|
+
async init() {
|
|
137
91
|
// Load models and prompts
|
|
138
|
-
const
|
|
92
|
+
const { initDB } = useThreadStore()
|
|
93
|
+
const [_, configRes, modelsRes] = await Promise.all([
|
|
94
|
+
initDB(),
|
|
139
95
|
this.getConfig(),
|
|
140
96
|
this.getModels(),
|
|
141
|
-
this.get('/ext'),
|
|
142
97
|
])
|
|
143
98
|
const config = await configRes.json()
|
|
144
99
|
const models = await modelsRes.json()
|
|
145
|
-
const extensions = await extensionsRes.json()
|
|
146
100
|
|
|
147
101
|
// Update auth settings from server config
|
|
148
102
|
if (config.requiresAuth != null) {
|
|
@@ -152,6 +106,25 @@ export const o = {
|
|
|
152
106
|
this.authType = config.authType
|
|
153
107
|
}
|
|
154
108
|
|
|
109
|
+
// Try to restore session from localStorage
|
|
110
|
+
if (this.requiresAuth) {
|
|
111
|
+
const storedAuth = localStorage.getItem('llms:auth')
|
|
112
|
+
if (storedAuth) {
|
|
113
|
+
try {
|
|
114
|
+
const authData = JSON.parse(storedAuth)
|
|
115
|
+
if (authData.sessionToken) {
|
|
116
|
+
this.headers['X-Session-Token'] = authData.sessionToken
|
|
117
|
+
}
|
|
118
|
+
// else if (authData.apiKey) {
|
|
119
|
+
// this.headers.Authorization = `Bearer ${authData.apiKey}`
|
|
120
|
+
// }
|
|
121
|
+
} catch (e) {
|
|
122
|
+
console.error('Failed to restore auth from localStorage:', e)
|
|
123
|
+
localStorage.removeItem('llms:auth')
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
155
128
|
// Get auth status
|
|
156
129
|
const authRes = await this.getAuth()
|
|
157
130
|
const auth = this.requiresAuth
|
|
@@ -159,59 +132,14 @@ export const o = {
|
|
|
159
132
|
: null
|
|
160
133
|
if (auth?.responseStatus?.errorCode) {
|
|
161
134
|
console.error(auth.responseStatus.errorCode, auth.responseStatus.message)
|
|
135
|
+
// Clear invalid session from localStorage
|
|
136
|
+
localStorage.removeItem('llms:auth')
|
|
162
137
|
} else {
|
|
163
138
|
this.signIn(auth)
|
|
164
139
|
}
|
|
165
|
-
return { config, models,
|
|
166
|
-
},
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
async uploadFile(file) {
|
|
170
|
-
const formData = new FormData()
|
|
171
|
-
formData.append('file', file)
|
|
172
|
-
const response = await fetch(this.resolveUrl('/upload'), {
|
|
173
|
-
method: 'POST',
|
|
174
|
-
body: formData
|
|
175
|
-
})
|
|
176
|
-
if (!response.ok) {
|
|
177
|
-
throw new Error(`Upload failed: ${response.statusText}`)
|
|
178
|
-
}
|
|
179
|
-
return response.json()
|
|
180
|
-
},
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
getCacheInfo(url) {
|
|
184
|
-
return this.cacheUrlInfo[url]
|
|
185
|
-
},
|
|
186
|
-
async fetchCacheInfos(urls) {
|
|
187
|
-
const infos = {}
|
|
188
|
-
const fetchInfos = []
|
|
189
|
-
for (const url of urls) {
|
|
190
|
-
const info = this.getCacheInfo(url)
|
|
191
|
-
if (info) {
|
|
192
|
-
infos[url] = info
|
|
193
|
-
} else {
|
|
194
|
-
fetchInfos.push(fetch(this.resolveUrl(url + "?info")))
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
const responses = await Promise.all(fetchInfos)
|
|
198
|
-
for (let i = 0; i < urls.length; i++) {
|
|
199
|
-
try {
|
|
200
|
-
const info = await responses[i].json()
|
|
201
|
-
this.setCacheInfo(urls[i], info)
|
|
202
|
-
infos[urls[i]] = info
|
|
203
|
-
} catch (e) {
|
|
204
|
-
console.error('Failed to fetch info for', urls[i], e)
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return infos
|
|
208
|
-
},
|
|
209
|
-
setCacheInfo(url, info) {
|
|
210
|
-
this.cacheUrlInfo[url] = info
|
|
140
|
+
return { config, models, auth }
|
|
211
141
|
}
|
|
212
|
-
|
|
213
142
|
}
|
|
214
143
|
|
|
215
|
-
|
|
216
144
|
let ai = reactive(o)
|
|
217
145
|
export default ai
|