libre-webui 0.11.0 → 0.12.1
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.
- package/README.md +24 -28
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +13 -0
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/routes/libreClaw.d.ts +3 -0
- package/backend/dist/routes/libreClaw.d.ts.map +1 -0
- package/backend/dist/routes/libreClaw.js +156 -0
- package/backend/dist/routes/libreClaw.js.map +1 -0
- package/backend/dist/services/libreClawService.d.ts +105 -0
- package/backend/dist/services/libreClawService.d.ts.map +1 -0
- package/backend/dist/services/libreClawService.js +169 -0
- package/backend/dist/services/libreClawService.js.map +1 -0
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +1 -3
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
- package/backend/dist/services/pluginTTSService.js.map +1 -1
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/utils/pluginValidation.d.ts +0 -1
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginValidation.js +1 -11
- package/backend/dist/utils/pluginValidation.js.map +1 -1
- package/backend/package.json +5 -7
- package/frontend/dist/assets/index-CdGZAiI5.js +5 -0
- package/frontend/dist/assets/index-Dc8Q4dJZ.css +1 -0
- package/frontend/dist/favicon-dark.png +0 -0
- package/frontend/dist/favicon-light.png +0 -0
- package/frontend/dist/index.html +10 -10
- package/frontend/dist/js/{ArtifactContainer-CA523BOS.js → ArtifactContainer-DK1FCylP.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-C0p2-ccP.js → ArtifactDemoPage-CMy7LH8t.js} +1 -1
- package/frontend/dist/js/ArtifactSlideOutPanel-DS1K3sQL.js +1 -0
- package/frontend/dist/js/{Button-BmZQkAPD.js → Button-BUjLpHmR.js} +1 -1
- package/frontend/dist/js/ChatPage-RYQ8mcOC.js +16 -0
- package/frontend/dist/js/{FirstTimeSetup-pi-S4VU-.js → FirstTimeSetup-Ckdm_Hpv.js} +1 -1
- package/frontend/dist/js/GalleryPage-sQc_lBme.js +1 -0
- package/frontend/dist/js/LibreClawPage-DsGFex9f.js +1 -0
- package/frontend/dist/js/ModelManagerModals-m5uCO3SS.js +1 -0
- package/frontend/dist/js/ModelsPage-CgtfQ2np.js +2 -0
- package/frontend/dist/js/{OptimizedSyntaxHighlighter-DlI4omE2.js → OptimizedSyntaxHighlighter-CNjLqj1Z.js} +1 -1
- package/frontend/dist/js/PersonasPage-D1Twd9rI.js +13 -0
- package/frontend/dist/js/{RichMessageContent-Darvuw8F.js → RichMessageContent-BOQDgLTR.js} +3 -3
- package/frontend/dist/js/SettingsModal-RU_GFjMK.js +1 -0
- package/frontend/dist/js/UserManagementPage-BAEOziZX.js +1 -0
- package/frontend/dist/js/api-BaWiKZy-.js +15 -0
- package/frontend/dist/js/{ar-BIL8U_dv.js → ar-BAOdgn6O.js} +2 -2
- package/frontend/dist/js/{artifactHtml-CRdkOCnz.js → artifactHtml-B7Oy2e__.js} +16 -16
- package/frontend/dist/js/{bn-BWQoWPn6.js → bn-Bp2KS5mx.js} +2 -2
- package/frontend/dist/js/{cs-DOD1vscE.js → cs-DOgJ0c5p.js} +2 -2
- package/frontend/dist/js/{da-DYPzSzX4.js → da-BCKTkC35.js} +2 -2
- package/frontend/dist/js/{de-CHd4b2Xf.js → de-BXyECph5.js} +2 -2
- package/frontend/dist/js/{es-BmDO6uNe.js → es-Db4bDYIF.js} +2 -2
- package/frontend/dist/js/fr-BPIkf6zH.js +2 -0
- package/frontend/dist/js/{hi-BRDq_y1B.js → hi-Bm8D_Aux.js} +2 -2
- package/frontend/dist/js/{id-I_F2nstV.js → id-DiWaH74_.js} +2 -2
- package/frontend/dist/js/{is-Boj7-J12.js → is-DLgJywtZ.js} +2 -2
- package/frontend/dist/js/{it-CNeHl9Fh.js → it-lldrM8pE.js} +2 -2
- package/frontend/dist/js/{ja-DrVG6G8s.js → ja-Cfe9uZmQ.js} +2 -2
- package/frontend/dist/js/{ko-BtKRwlHW.js → ko-BhChO3MQ.js} +2 -2
- package/frontend/dist/js/logger-BmpKNkls.js +1 -0
- package/frontend/dist/js/markdown-core-fkbHPd-g.js +16 -0
- package/frontend/dist/js/markdown-math-Ci4QOsf-.js +261 -0
- package/frontend/dist/js/{ms-Dp9MigoU.js → ms-SWtmetXo.js} +2 -2
- package/frontend/dist/js/{nl-Bk9pGoCF.js → nl-CUO6I3nO.js} +2 -2
- package/frontend/dist/js/{pl-seE8_lLS.js → pl-BUAu96P6.js} +2 -2
- package/frontend/dist/js/{pt-BAeBtldI.js → pt-DCHwoWiE.js} +2 -2
- package/frontend/dist/js/{react-vendor-DtQrJICq.js → react-vendor-Co1u1rWb.js} +2 -2
- package/frontend/dist/js/{ru-CkCpWFNb.js → ru-Ciz053N7.js} +2 -2
- package/frontend/dist/js/{sv-BM7nqxmA.js → sv-D38ZHjv-.js} +2 -2
- package/frontend/dist/js/{syntax-highlight-B758xPeo.js → syntax-highlight-D5wpTVgr.js} +2 -2
- package/frontend/dist/js/{th-vDIZbpa4.js → th-D2cAucvn.js} +2 -2
- package/frontend/dist/js/{tr-G2-XodhW.js → tr-Go355oDu.js} +2 -2
- package/frontend/dist/js/ui-vendor-njo77ljx.js +177 -0
- package/frontend/dist/js/{uk-DfVfZcBQ.js → uk-cdzjhgya.js} +2 -2
- package/frontend/dist/js/useBaseQuery-C03a5oZt.js +1 -0
- package/frontend/dist/js/useQuery-iKrQD3gp.js +1 -0
- package/frontend/dist/js/{utils-es0n-47H.js → utils-BaPYjs_z.js} +1 -1
- package/frontend/dist/js/utils-vendor-BX3ZwoIK.js +9 -0
- package/frontend/dist/js/{vi-Yp9yjb06.js → vi-BSOpE423.js} +2 -2
- package/frontend/dist/js/{zh-DtRb97we.js → zh-BFh6sHZG.js} +2 -2
- package/frontend/dist/logo-dark.png +0 -0
- package/frontend/dist/logo-light.png +0 -0
- package/frontend/dist/logo.svg +5 -3
- package/package.json +4 -11
- package/plugins/anthropic.json +7 -9
- package/plugins/elevenlabs.json +2 -0
- package/plugins/gemini.json +5 -41
- package/plugins/github.json +36 -11
- package/plugins/groq.json +12 -3
- package/plugins/huggingface.json +116 -22
- package/plugins/mistral.json +76 -42
- package/plugins/openai-tts.json +4 -8
- package/plugins/openai.json +6 -103
- package/plugins/openrouter.json +136 -138
- package/backend/dist/test-encryption.d.ts +0 -2
- package/backend/dist/test-encryption.d.ts.map +0 -1
- package/backend/dist/test-encryption.js +0 -66
- package/backend/dist/test-encryption.js.map +0 -1
- package/frontend/dist/assets/index-BxHDVIti.css +0 -1
- package/frontend/dist/assets/index-CDA2f43l.js +0 -5
- package/frontend/dist/js/ArtifactSlideOutPanel-BBYuYyr_.js +0 -1
- package/frontend/dist/js/ChatPage-QSOhIynr.js +0 -16
- package/frontend/dist/js/GalleryPage-BPXB-D4f.js +0 -1
- package/frontend/dist/js/ModelManagerModals-D3SZV7CU.js +0 -1
- package/frontend/dist/js/ModelsPage-Fmqc1Zxb.js +0 -2
- package/frontend/dist/js/PersonasPage-BuLOCG1Y.js +0 -13
- package/frontend/dist/js/SettingsModal-CQhAeaia.js +0 -1
- package/frontend/dist/js/UserManagementPage-yX9vOase.js +0 -1
- package/frontend/dist/js/api-d05r9G59.js +0 -15
- package/frontend/dist/js/fr-DW24sUV7.js +0 -2
- package/frontend/dist/js/logger-1THq8-96.js +0 -1
- package/frontend/dist/js/markdown-core-CEpaJrKd.js +0 -16
- package/frontend/dist/js/markdown-math-DAmpvM9y.js +0 -261
- package/frontend/dist/js/ui-vendor-MCs1MDmN.js +0 -177
- package/frontend/dist/js/useBaseQuery-CrdrLcmR.js +0 -1
- package/frontend/dist/js/useQuery-DaEnYfWR.js +0 -1
- package/frontend/dist/js/utils-vendor-B2ZBL57Y.js +0 -9
- package/plugins/openclaw-agent.json +0 -69
package/plugins/openrouter.json
CHANGED
|
@@ -9,210 +9,184 @@
|
|
|
9
9
|
"key_env": "OPENROUTER_API_KEY"
|
|
10
10
|
},
|
|
11
11
|
"model_map": [
|
|
12
|
+
"~anthropic/claude-fable-latest",
|
|
13
|
+
"~anthropic/claude-haiku-latest",
|
|
14
|
+
"~anthropic/claude-opus-latest",
|
|
15
|
+
"~anthropic/claude-sonnet-latest",
|
|
16
|
+
"~google/gemini-flash-latest",
|
|
17
|
+
"~google/gemini-pro-latest",
|
|
18
|
+
"~moonshotai/kimi-latest",
|
|
19
|
+
"~openai/gpt-latest",
|
|
20
|
+
"~openai/gpt-mini-latest",
|
|
12
21
|
"ai21/jamba-large-1.7",
|
|
13
|
-
"ai21/jamba-mini-1.7",
|
|
14
22
|
"aion-labs/aion-1.0",
|
|
15
23
|
"aion-labs/aion-1.0-mini",
|
|
24
|
+
"aion-labs/aion-2.0",
|
|
16
25
|
"aion-labs/aion-rp-llama-3.1-8b",
|
|
17
|
-
"
|
|
18
|
-
"alibaba/tongyi-deepresearch-30b-a3b",
|
|
19
|
-
"alibaba/tongyi-deepresearch-30b-a3b:free",
|
|
20
|
-
"allenai/olmo-2-0325-32b-instruct",
|
|
21
|
-
"allenai/olmo-3-32b-think:free",
|
|
22
|
-
"allenai/olmo-3-7b-instruct",
|
|
23
|
-
"allenai/olmo-3-7b-think",
|
|
24
|
-
"allenai/olmo-3.1-32b-think:free",
|
|
25
|
-
"alpindale/goliath-120b",
|
|
26
|
+
"allenai/olmo-3-32b-think",
|
|
26
27
|
"amazon/nova-2-lite-v1",
|
|
27
|
-
"amazon/nova-2-lite-v1:free",
|
|
28
28
|
"amazon/nova-lite-v1",
|
|
29
29
|
"amazon/nova-micro-v1",
|
|
30
30
|
"amazon/nova-premier-v1",
|
|
31
31
|
"amazon/nova-pro-v1",
|
|
32
32
|
"anthracite-org/magnum-v4-72b",
|
|
33
33
|
"anthropic/claude-3-haiku",
|
|
34
|
-
"anthropic/claude-
|
|
35
|
-
"anthropic/claude-3.5-haiku",
|
|
36
|
-
"anthropic/claude-3.5-haiku-20241022",
|
|
37
|
-
"anthropic/claude-3.5-sonnet",
|
|
38
|
-
"anthropic/claude-3.7-sonnet",
|
|
39
|
-
"anthropic/claude-3.7-sonnet:thinking",
|
|
34
|
+
"anthropic/claude-fable-5",
|
|
40
35
|
"anthropic/claude-haiku-4.5",
|
|
41
36
|
"anthropic/claude-opus-4",
|
|
42
37
|
"anthropic/claude-opus-4.1",
|
|
43
38
|
"anthropic/claude-opus-4.5",
|
|
39
|
+
"anthropic/claude-opus-4.6",
|
|
40
|
+
"anthropic/claude-opus-4.7",
|
|
41
|
+
"anthropic/claude-opus-4.7-fast",
|
|
42
|
+
"anthropic/claude-opus-4.8",
|
|
43
|
+
"anthropic/claude-opus-4.8-fast",
|
|
44
44
|
"anthropic/claude-sonnet-4",
|
|
45
45
|
"anthropic/claude-sonnet-4.5",
|
|
46
|
+
"anthropic/claude-sonnet-4.6",
|
|
47
|
+
"anthropic/claude-sonnet-5",
|
|
46
48
|
"arcee-ai/coder-large",
|
|
47
|
-
"arcee-ai/
|
|
48
|
-
"arcee-ai/spotlight",
|
|
49
|
+
"arcee-ai/trinity-large-thinking",
|
|
49
50
|
"arcee-ai/trinity-mini",
|
|
50
|
-
"arcee-ai/trinity-mini:free",
|
|
51
51
|
"arcee-ai/virtuoso-large",
|
|
52
|
-
"arliai/qwq-32b-arliai-rpr-v1",
|
|
53
|
-
"baidu/ernie-4.5-21b-a3b",
|
|
54
|
-
"baidu/ernie-4.5-21b-a3b-thinking",
|
|
55
|
-
"baidu/ernie-4.5-300b-a47b",
|
|
56
|
-
"baidu/ernie-4.5-vl-28b-a3b",
|
|
57
52
|
"baidu/ernie-4.5-vl-424b-a47b",
|
|
53
|
+
"bytedance-seed/seed-1.6",
|
|
54
|
+
"bytedance-seed/seed-1.6-flash",
|
|
55
|
+
"bytedance-seed/seed-2.0-lite",
|
|
56
|
+
"bytedance-seed/seed-2.0-mini",
|
|
58
57
|
"bytedance/ui-tars-1.5-7b",
|
|
59
58
|
"cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
|
|
60
59
|
"cohere/command-a",
|
|
61
60
|
"cohere/command-r-08-2024",
|
|
62
61
|
"cohere/command-r-plus-08-2024",
|
|
63
62
|
"cohere/command-r7b-12-2024",
|
|
64
|
-
"
|
|
65
|
-
"deepcogito/cogito-v2-preview-llama-405b",
|
|
66
|
-
"deepcogito/cogito-v2-preview-llama-70b",
|
|
63
|
+
"cohere/north-mini-code:free",
|
|
67
64
|
"deepcogito/cogito-v2.1-671b",
|
|
68
65
|
"deepseek/deepseek-chat",
|
|
69
66
|
"deepseek/deepseek-chat-v3-0324",
|
|
70
67
|
"deepseek/deepseek-chat-v3.1",
|
|
71
|
-
"deepseek/deepseek-prover-v2",
|
|
72
68
|
"deepseek/deepseek-r1",
|
|
73
69
|
"deepseek/deepseek-r1-0528",
|
|
74
|
-
"deepseek/deepseek-r1-0528-qwen3-8b",
|
|
75
70
|
"deepseek/deepseek-r1-distill-llama-70b",
|
|
76
|
-
"deepseek/deepseek-r1-distill-qwen-14b",
|
|
77
|
-
"deepseek/deepseek-r1-distill-qwen-32b",
|
|
78
71
|
"deepseek/deepseek-v3.1-terminus",
|
|
79
|
-
"deepseek/deepseek-v3.1-terminus:exacto",
|
|
80
72
|
"deepseek/deepseek-v3.2",
|
|
81
73
|
"deepseek/deepseek-v3.2-exp",
|
|
82
|
-
"deepseek/deepseek-
|
|
83
|
-
"
|
|
84
|
-
"essentialai/rnj-1-instruct",
|
|
85
|
-
"google/gemini-2.0-flash-001",
|
|
86
|
-
"google/gemini-2.0-flash-exp:free",
|
|
87
|
-
"google/gemini-2.0-flash-lite-001",
|
|
74
|
+
"deepseek/deepseek-v4-flash",
|
|
75
|
+
"deepseek/deepseek-v4-pro",
|
|
88
76
|
"google/gemini-2.5-flash",
|
|
77
|
+
"google/gemini-2.5-flash-image",
|
|
89
78
|
"google/gemini-2.5-flash-lite",
|
|
90
79
|
"google/gemini-2.5-flash-lite-preview-09-2025",
|
|
91
|
-
"google/gemini-2.5-flash-preview-09-2025",
|
|
92
80
|
"google/gemini-2.5-pro",
|
|
93
81
|
"google/gemini-2.5-pro-preview",
|
|
94
82
|
"google/gemini-2.5-pro-preview-05-06",
|
|
95
|
-
"google/gemini-3-
|
|
83
|
+
"google/gemini-3-flash-preview",
|
|
84
|
+
"google/gemini-3-pro-image",
|
|
85
|
+
"google/gemini-3-pro-image-preview",
|
|
86
|
+
"google/gemini-3.1-flash-image",
|
|
87
|
+
"google/gemini-3.1-flash-image-preview",
|
|
88
|
+
"google/gemini-3.1-flash-lite",
|
|
89
|
+
"google/gemini-3.1-flash-lite-image",
|
|
90
|
+
"google/gemini-3.1-flash-lite-preview",
|
|
91
|
+
"google/gemini-3.1-pro-preview",
|
|
92
|
+
"google/gemini-3.1-pro-preview-customtools",
|
|
93
|
+
"google/gemini-3.5-flash",
|
|
96
94
|
"google/gemma-2-27b-it",
|
|
97
|
-
"google/gemma-2-9b-it",
|
|
98
95
|
"google/gemma-3-12b-it",
|
|
99
|
-
"google/gemma-3-12b-it:free",
|
|
100
96
|
"google/gemma-3-27b-it",
|
|
101
|
-
"google/gemma-3-27b-it:free",
|
|
102
97
|
"google/gemma-3-4b-it",
|
|
103
|
-
"google/gemma-3-4b-it:free",
|
|
104
|
-
"google/gemma-3n-e2b-it:free",
|
|
105
98
|
"google/gemma-3n-e4b-it",
|
|
106
|
-
"google/gemma-
|
|
99
|
+
"google/gemma-4-26b-a4b-it",
|
|
100
|
+
"google/gemma-4-26b-a4b-it:free",
|
|
101
|
+
"google/gemma-4-31b-it",
|
|
102
|
+
"google/gemma-4-31b-it:free",
|
|
103
|
+
"google/lyria-3-clip-preview",
|
|
104
|
+
"google/lyria-3-pro-preview",
|
|
107
105
|
"gryphe/mythomax-l2-13b",
|
|
108
106
|
"ibm-granite/granite-4.0-h-micro",
|
|
109
|
-
"
|
|
110
|
-
"inception/mercury-
|
|
107
|
+
"ibm-granite/granite-4.1-8b",
|
|
108
|
+
"inception/mercury-2",
|
|
109
|
+
"inclusionai/ling-2.6-1t",
|
|
110
|
+
"inclusionai/ling-2.6-flash",
|
|
111
|
+
"inclusionai/ring-2.6-1t",
|
|
111
112
|
"inflection/inflection-3-pi",
|
|
112
113
|
"inflection/inflection-3-productivity",
|
|
113
|
-
"kwaipilot/kat-coder-pro
|
|
114
|
-
"liquid/lfm-2
|
|
115
|
-
"liquid/
|
|
114
|
+
"kwaipilot/kat-coder-pro-v2",
|
|
115
|
+
"liquid/lfm-2-24b-a2b",
|
|
116
|
+
"liquid/lfm-2.5-1.2b-instruct:free",
|
|
117
|
+
"liquid/lfm-2.5-1.2b-thinking:free",
|
|
116
118
|
"mancer/weaver",
|
|
117
|
-
"meituan/longcat-flash-chat",
|
|
118
|
-
"meta-llama/llama-3-70b-instruct",
|
|
119
119
|
"meta-llama/llama-3-8b-instruct",
|
|
120
|
-
"meta-llama/llama-3.1-405b",
|
|
121
|
-
"meta-llama/llama-3.1-405b-instruct",
|
|
122
120
|
"meta-llama/llama-3.1-70b-instruct",
|
|
123
121
|
"meta-llama/llama-3.1-8b-instruct",
|
|
124
122
|
"meta-llama/llama-3.2-11b-vision-instruct",
|
|
125
123
|
"meta-llama/llama-3.2-1b-instruct",
|
|
126
124
|
"meta-llama/llama-3.2-3b-instruct",
|
|
127
125
|
"meta-llama/llama-3.2-3b-instruct:free",
|
|
128
|
-
"meta-llama/llama-3.2-90b-vision-instruct",
|
|
129
126
|
"meta-llama/llama-3.3-70b-instruct",
|
|
130
127
|
"meta-llama/llama-3.3-70b-instruct:free",
|
|
131
128
|
"meta-llama/llama-4-maverick",
|
|
132
129
|
"meta-llama/llama-4-scout",
|
|
133
|
-
"meta-llama/llama-guard-2-8b",
|
|
134
|
-
"meta-llama/llama-guard-3-8b",
|
|
135
130
|
"meta-llama/llama-guard-4-12b",
|
|
136
|
-
"microsoft/phi-3-medium-128k-instruct",
|
|
137
|
-
"microsoft/phi-3-mini-128k-instruct",
|
|
138
|
-
"microsoft/phi-3.5-mini-128k-instruct",
|
|
139
131
|
"microsoft/phi-4",
|
|
140
|
-
"microsoft/phi-4-multimodal-instruct",
|
|
141
|
-
"microsoft/phi-4-reasoning-plus",
|
|
142
132
|
"microsoft/wizardlm-2-8x22b",
|
|
143
133
|
"minimax/minimax-01",
|
|
144
134
|
"minimax/minimax-m1",
|
|
145
135
|
"minimax/minimax-m2",
|
|
136
|
+
"minimax/minimax-m2-her",
|
|
137
|
+
"minimax/minimax-m2.1",
|
|
138
|
+
"minimax/minimax-m2.5",
|
|
139
|
+
"minimax/minimax-m2.7",
|
|
140
|
+
"minimax/minimax-m3",
|
|
146
141
|
"mistralai/codestral-2508",
|
|
147
142
|
"mistralai/devstral-2512",
|
|
148
|
-
"mistralai/devstral-2512:free",
|
|
149
|
-
"mistralai/devstral-medium",
|
|
150
|
-
"mistralai/devstral-small",
|
|
151
|
-
"mistralai/devstral-small-2505",
|
|
152
143
|
"mistralai/ministral-14b-2512",
|
|
153
|
-
"mistralai/ministral-3b",
|
|
154
144
|
"mistralai/ministral-3b-2512",
|
|
155
|
-
"mistralai/ministral-8b",
|
|
156
145
|
"mistralai/ministral-8b-2512",
|
|
157
|
-
"mistralai/mistral-7b-instruct",
|
|
158
|
-
"mistralai/mistral-7b-instruct-v0.1",
|
|
159
|
-
"mistralai/mistral-7b-instruct-v0.2",
|
|
160
|
-
"mistralai/mistral-7b-instruct-v0.3",
|
|
161
|
-
"mistralai/mistral-7b-instruct:free",
|
|
162
146
|
"mistralai/mistral-large",
|
|
163
147
|
"mistralai/mistral-large-2407",
|
|
164
|
-
"mistralai/mistral-large-2411",
|
|
165
148
|
"mistralai/mistral-large-2512",
|
|
166
149
|
"mistralai/mistral-medium-3",
|
|
150
|
+
"mistralai/mistral-medium-3-5",
|
|
167
151
|
"mistralai/mistral-medium-3.1",
|
|
168
152
|
"mistralai/mistral-nemo",
|
|
169
153
|
"mistralai/mistral-saba",
|
|
170
154
|
"mistralai/mistral-small-24b-instruct-2501",
|
|
155
|
+
"mistralai/mistral-small-2603",
|
|
171
156
|
"mistralai/mistral-small-3.1-24b-instruct",
|
|
172
|
-
"mistralai/mistral-small-3.1-24b-instruct:free",
|
|
173
157
|
"mistralai/mistral-small-3.2-24b-instruct",
|
|
174
|
-
"mistralai/mistral-small-creative",
|
|
175
|
-
"mistralai/mistral-tiny",
|
|
176
158
|
"mistralai/mixtral-8x22b-instruct",
|
|
177
|
-
"mistralai/mixtral-8x7b-instruct",
|
|
178
|
-
"mistralai/pixtral-12b",
|
|
179
|
-
"mistralai/pixtral-large-2411",
|
|
180
159
|
"mistralai/voxtral-small-24b-2507",
|
|
181
|
-
"moonshotai/kimi-dev-72b",
|
|
182
160
|
"moonshotai/kimi-k2",
|
|
183
161
|
"moonshotai/kimi-k2-0905",
|
|
184
|
-
"moonshotai/kimi-k2-0905:exacto",
|
|
185
162
|
"moonshotai/kimi-k2-thinking",
|
|
186
|
-
"moonshotai/kimi-k2
|
|
163
|
+
"moonshotai/kimi-k2.5",
|
|
164
|
+
"moonshotai/kimi-k2.6",
|
|
165
|
+
"moonshotai/kimi-k2.7-code",
|
|
187
166
|
"morph/morph-v3-fast",
|
|
188
167
|
"morph/morph-v3-large",
|
|
189
|
-
"
|
|
190
|
-
"neversleep/noromaid-20b",
|
|
191
|
-
"nex-agi/deepseek-v3.1-nex-n1:free",
|
|
192
|
-
"nousresearch/deephermes-3-mistral-24b-preview",
|
|
193
|
-
"nousresearch/hermes-2-pro-llama-3-8b",
|
|
168
|
+
"nex-agi/nex-n2-pro",
|
|
194
169
|
"nousresearch/hermes-3-llama-3.1-405b",
|
|
195
170
|
"nousresearch/hermes-3-llama-3.1-405b:free",
|
|
196
171
|
"nousresearch/hermes-3-llama-3.1-70b",
|
|
197
172
|
"nousresearch/hermes-4-405b",
|
|
198
173
|
"nousresearch/hermes-4-70b",
|
|
199
|
-
"nvidia/llama-3.1-nemotron-70b-instruct",
|
|
200
|
-
"nvidia/llama-3.1-nemotron-ultra-253b-v1",
|
|
201
174
|
"nvidia/llama-3.3-nemotron-super-49b-v1.5",
|
|
175
|
+
"nvidia/nemotron-3-nano-30b-a3b",
|
|
202
176
|
"nvidia/nemotron-3-nano-30b-a3b:free",
|
|
203
|
-
"nvidia/nemotron-nano-
|
|
177
|
+
"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
|
|
178
|
+
"nvidia/nemotron-3-super-120b-a12b",
|
|
179
|
+
"nvidia/nemotron-3-super-120b-a12b:free",
|
|
180
|
+
"nvidia/nemotron-3-ultra-550b-a55b",
|
|
181
|
+
"nvidia/nemotron-3-ultra-550b-a55b:free",
|
|
182
|
+
"nvidia/nemotron-3.5-content-safety:free",
|
|
204
183
|
"nvidia/nemotron-nano-12b-v2-vl:free",
|
|
205
|
-
"nvidia/nemotron-nano-9b-v2",
|
|
206
184
|
"nvidia/nemotron-nano-9b-v2:free",
|
|
207
|
-
"openai/chatgpt-4o-latest",
|
|
208
|
-
"openai/codex-mini",
|
|
209
185
|
"openai/gpt-3.5-turbo",
|
|
210
186
|
"openai/gpt-3.5-turbo-0613",
|
|
211
187
|
"openai/gpt-3.5-turbo-16k",
|
|
212
188
|
"openai/gpt-3.5-turbo-instruct",
|
|
213
189
|
"openai/gpt-4",
|
|
214
|
-
"openai/gpt-4-0314",
|
|
215
|
-
"openai/gpt-4-1106-preview",
|
|
216
190
|
"openai/gpt-4-turbo",
|
|
217
191
|
"openai/gpt-4-turbo-preview",
|
|
218
192
|
"openai/gpt-4.1",
|
|
@@ -222,15 +196,15 @@
|
|
|
222
196
|
"openai/gpt-4o-2024-05-13",
|
|
223
197
|
"openai/gpt-4o-2024-08-06",
|
|
224
198
|
"openai/gpt-4o-2024-11-20",
|
|
225
|
-
"openai/gpt-4o-audio-preview",
|
|
226
199
|
"openai/gpt-4o-mini",
|
|
227
200
|
"openai/gpt-4o-mini-2024-07-18",
|
|
228
201
|
"openai/gpt-4o-mini-search-preview",
|
|
229
202
|
"openai/gpt-4o-search-preview",
|
|
230
|
-
"openai/gpt-4o:extended",
|
|
231
203
|
"openai/gpt-5",
|
|
232
204
|
"openai/gpt-5-chat",
|
|
233
205
|
"openai/gpt-5-codex",
|
|
206
|
+
"openai/gpt-5-image",
|
|
207
|
+
"openai/gpt-5-image-mini",
|
|
234
208
|
"openai/gpt-5-mini",
|
|
235
209
|
"openai/gpt-5-nano",
|
|
236
210
|
"openai/gpt-5-pro",
|
|
@@ -241,9 +215,21 @@
|
|
|
241
215
|
"openai/gpt-5.1-codex-mini",
|
|
242
216
|
"openai/gpt-5.2",
|
|
243
217
|
"openai/gpt-5.2-chat",
|
|
218
|
+
"openai/gpt-5.2-codex",
|
|
244
219
|
"openai/gpt-5.2-pro",
|
|
220
|
+
"openai/gpt-5.3-chat",
|
|
221
|
+
"openai/gpt-5.3-codex",
|
|
222
|
+
"openai/gpt-5.4",
|
|
223
|
+
"openai/gpt-5.4-image-2",
|
|
224
|
+
"openai/gpt-5.4-mini",
|
|
225
|
+
"openai/gpt-5.4-nano",
|
|
226
|
+
"openai/gpt-5.4-pro",
|
|
227
|
+
"openai/gpt-5.5",
|
|
228
|
+
"openai/gpt-5.5-pro",
|
|
229
|
+
"openai/gpt-audio",
|
|
230
|
+
"openai/gpt-audio-mini",
|
|
231
|
+
"openai/gpt-chat-latest",
|
|
245
232
|
"openai/gpt-oss-120b",
|
|
246
|
-
"openai/gpt-oss-120b:exacto",
|
|
247
233
|
"openai/gpt-oss-120b:free",
|
|
248
234
|
"openai/gpt-oss-20b",
|
|
249
235
|
"openai/gpt-oss-20b:free",
|
|
@@ -258,97 +244,109 @@
|
|
|
258
244
|
"openai/o4-mini",
|
|
259
245
|
"openai/o4-mini-deep-research",
|
|
260
246
|
"openai/o4-mini-high",
|
|
261
|
-
"opengvlab/internvl3-78b",
|
|
262
247
|
"openrouter/auto",
|
|
263
248
|
"openrouter/bodybuilder",
|
|
249
|
+
"openrouter/free",
|
|
250
|
+
"openrouter/fusion",
|
|
251
|
+
"openrouter/pareto-code",
|
|
252
|
+
"perceptron/perceptron-mk1",
|
|
264
253
|
"perplexity/sonar",
|
|
265
254
|
"perplexity/sonar-deep-research",
|
|
266
255
|
"perplexity/sonar-pro",
|
|
267
256
|
"perplexity/sonar-pro-search",
|
|
268
|
-
"perplexity/sonar-reasoning",
|
|
269
257
|
"perplexity/sonar-reasoning-pro",
|
|
270
|
-
"
|
|
258
|
+
"poolside/laguna-m.1",
|
|
259
|
+
"poolside/laguna-m.1:free",
|
|
260
|
+
"poolside/laguna-xs.2",
|
|
261
|
+
"poolside/laguna-xs.2:free",
|
|
271
262
|
"qwen/qwen-2.5-72b-instruct",
|
|
272
263
|
"qwen/qwen-2.5-7b-instruct",
|
|
273
264
|
"qwen/qwen-2.5-coder-32b-instruct",
|
|
274
|
-
"qwen/qwen-2.5-vl-7b-instruct",
|
|
275
|
-
"qwen/qwen-max",
|
|
276
265
|
"qwen/qwen-plus",
|
|
277
266
|
"qwen/qwen-plus-2025-07-28",
|
|
278
267
|
"qwen/qwen-plus-2025-07-28:thinking",
|
|
279
|
-
"qwen/qwen-turbo",
|
|
280
|
-
"qwen/qwen-vl-max",
|
|
281
|
-
"qwen/qwen-vl-plus",
|
|
282
|
-
"qwen/qwen2.5-coder-7b-instruct",
|
|
283
|
-
"qwen/qwen2.5-vl-32b-instruct",
|
|
284
268
|
"qwen/qwen2.5-vl-72b-instruct",
|
|
285
269
|
"qwen/qwen3-14b",
|
|
286
270
|
"qwen/qwen3-235b-a22b",
|
|
287
271
|
"qwen/qwen3-235b-a22b-2507",
|
|
288
272
|
"qwen/qwen3-235b-a22b-thinking-2507",
|
|
289
|
-
"qwen/qwen3-235b-a22b:free",
|
|
290
273
|
"qwen/qwen3-30b-a3b",
|
|
291
274
|
"qwen/qwen3-30b-a3b-instruct-2507",
|
|
292
275
|
"qwen/qwen3-30b-a3b-thinking-2507",
|
|
293
276
|
"qwen/qwen3-32b",
|
|
294
|
-
"qwen/qwen3-4b:free",
|
|
295
277
|
"qwen/qwen3-8b",
|
|
296
278
|
"qwen/qwen3-coder",
|
|
297
279
|
"qwen/qwen3-coder-30b-a3b-instruct",
|
|
298
280
|
"qwen/qwen3-coder-flash",
|
|
281
|
+
"qwen/qwen3-coder-next",
|
|
299
282
|
"qwen/qwen3-coder-plus",
|
|
300
|
-
"qwen/qwen3-coder:exacto",
|
|
301
283
|
"qwen/qwen3-coder:free",
|
|
302
284
|
"qwen/qwen3-max",
|
|
285
|
+
"qwen/qwen3-max-thinking",
|
|
303
286
|
"qwen/qwen3-next-80b-a3b-instruct",
|
|
287
|
+
"qwen/qwen3-next-80b-a3b-instruct:free",
|
|
304
288
|
"qwen/qwen3-next-80b-a3b-thinking",
|
|
305
289
|
"qwen/qwen3-vl-235b-a22b-instruct",
|
|
306
290
|
"qwen/qwen3-vl-235b-a22b-thinking",
|
|
307
291
|
"qwen/qwen3-vl-30b-a3b-instruct",
|
|
308
292
|
"qwen/qwen3-vl-30b-a3b-thinking",
|
|
293
|
+
"qwen/qwen3-vl-32b-instruct",
|
|
309
294
|
"qwen/qwen3-vl-8b-instruct",
|
|
310
295
|
"qwen/qwen3-vl-8b-thinking",
|
|
311
|
-
"qwen/
|
|
312
|
-
"
|
|
296
|
+
"qwen/qwen3.5-122b-a10b",
|
|
297
|
+
"qwen/qwen3.5-27b",
|
|
298
|
+
"qwen/qwen3.5-35b-a3b",
|
|
299
|
+
"qwen/qwen3.5-397b-a17b",
|
|
300
|
+
"qwen/qwen3.5-9b",
|
|
301
|
+
"qwen/qwen3.5-flash-02-23",
|
|
302
|
+
"qwen/qwen3.5-plus-02-15",
|
|
303
|
+
"qwen/qwen3.5-plus-20260420",
|
|
304
|
+
"qwen/qwen3.6-27b",
|
|
305
|
+
"qwen/qwen3.6-35b-a3b",
|
|
306
|
+
"qwen/qwen3.6-flash",
|
|
307
|
+
"qwen/qwen3.6-max-preview",
|
|
308
|
+
"qwen/qwen3.6-plus",
|
|
309
|
+
"qwen/qwen3.7-max",
|
|
310
|
+
"qwen/qwen3.7-plus",
|
|
311
|
+
"rekaai/reka-edge",
|
|
312
|
+
"rekaai/reka-flash-3",
|
|
313
313
|
"relace/relace-apply-3",
|
|
314
314
|
"relace/relace-search",
|
|
315
|
-
"
|
|
315
|
+
"sakana/fugu-ultra",
|
|
316
316
|
"sao10k/l3-lunaris-8b",
|
|
317
317
|
"sao10k/l3.1-70b-hanami-x1",
|
|
318
318
|
"sao10k/l3.1-euryale-70b",
|
|
319
319
|
"sao10k/l3.3-euryale-70b",
|
|
320
|
-
"stepfun-
|
|
320
|
+
"stepfun/step-3.5-flash",
|
|
321
|
+
"stepfun/step-3.7-flash",
|
|
321
322
|
"switchpoint/router",
|
|
322
323
|
"tencent/hunyuan-a13b-instruct",
|
|
324
|
+
"tencent/hy3-preview",
|
|
323
325
|
"thedrummer/cydonia-24b-v4.1",
|
|
324
326
|
"thedrummer/rocinante-12b",
|
|
325
327
|
"thedrummer/skyfall-36b-v2",
|
|
326
328
|
"thedrummer/unslopnemo-12b",
|
|
327
|
-
"thudm/glm-4.1v-9b-thinking",
|
|
328
|
-
"tngtech/deepseek-r1t-chimera",
|
|
329
|
-
"tngtech/deepseek-r1t-chimera:free",
|
|
330
|
-
"tngtech/deepseek-r1t2-chimera",
|
|
331
|
-
"tngtech/deepseek-r1t2-chimera:free",
|
|
332
|
-
"tngtech/tng-r1t-chimera",
|
|
333
|
-
"tngtech/tng-r1t-chimera:free",
|
|
334
329
|
"undi95/remm-slerp-l2-13b",
|
|
335
|
-
"
|
|
336
|
-
"
|
|
337
|
-
"x-ai/grok-
|
|
338
|
-
"x-ai/grok-
|
|
339
|
-
"x-ai/grok-4",
|
|
340
|
-
"x-ai/grok-
|
|
341
|
-
"
|
|
342
|
-
"
|
|
343
|
-
"xiaomi/mimo-v2-flash:free",
|
|
344
|
-
"z-ai/glm-4-32b",
|
|
330
|
+
"upstage/solar-pro-3",
|
|
331
|
+
"writer/palmyra-x5",
|
|
332
|
+
"x-ai/grok-4.20",
|
|
333
|
+
"x-ai/grok-4.20-multi-agent",
|
|
334
|
+
"x-ai/grok-4.3",
|
|
335
|
+
"x-ai/grok-build-0.1",
|
|
336
|
+
"xiaomi/mimo-v2.5",
|
|
337
|
+
"xiaomi/mimo-v2.5-pro",
|
|
345
338
|
"z-ai/glm-4.5",
|
|
346
339
|
"z-ai/glm-4.5-air",
|
|
347
|
-
"z-ai/glm-4.5-air:free",
|
|
348
340
|
"z-ai/glm-4.5v",
|
|
349
341
|
"z-ai/glm-4.6",
|
|
350
|
-
"z-ai/glm-4.
|
|
351
|
-
"z-ai/glm-4.
|
|
342
|
+
"z-ai/glm-4.6v",
|
|
343
|
+
"z-ai/glm-4.7",
|
|
344
|
+
"z-ai/glm-4.7-flash",
|
|
345
|
+
"z-ai/glm-5",
|
|
346
|
+
"z-ai/glm-5-turbo",
|
|
347
|
+
"z-ai/glm-5.1",
|
|
348
|
+
"z-ai/glm-5.2",
|
|
349
|
+
"z-ai/glm-5v-turbo"
|
|
352
350
|
],
|
|
353
351
|
"variables": [
|
|
354
352
|
{
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-encryption.d.ts","sourceRoot":"","sources":["../src/test-encryption.ts"],"names":[],"mappings":""}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Libre WebUI
|
|
3
|
-
* Copyright (C) 2025 Kroonen AI, Inc.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at:
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { encryptionService } from './services/encryptionService.js';
|
|
18
|
-
import { createLogger } from './utils/logger.js';
|
|
19
|
-
const logger = createLogger('encryption-test');
|
|
20
|
-
try {
|
|
21
|
-
logger.info('Testing Database Encryption Service');
|
|
22
|
-
logger.info('=====================================');
|
|
23
|
-
// Test basic encryption/decryption
|
|
24
|
-
const testData = 'Hello, this is sensitive data!';
|
|
25
|
-
logger.info('Original:', testData);
|
|
26
|
-
const encrypted = encryptionService.encrypt(testData);
|
|
27
|
-
logger.info('Encrypted:', encrypted);
|
|
28
|
-
const decrypted = encryptionService.decrypt(encrypted);
|
|
29
|
-
logger.info('Decrypted:', decrypted);
|
|
30
|
-
logger.info('Basic encryption test:', testData === decrypted ? 'PASSED' : 'FAILED');
|
|
31
|
-
// Test object encryption
|
|
32
|
-
const testObject = {
|
|
33
|
-
message: 'Secret message',
|
|
34
|
-
artifacts: [{ type: 'code', content: 'logger.debug("secret");' }],
|
|
35
|
-
images: [
|
|
36
|
-
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==',
|
|
37
|
-
],
|
|
38
|
-
statistics: { tokens: 150, duration: 1200 },
|
|
39
|
-
};
|
|
40
|
-
logger.info('Testing object encryption');
|
|
41
|
-
logger.info('Original object:', JSON.stringify(testObject, null, 2));
|
|
42
|
-
const encryptedObject = encryptionService.encryptObject(testObject);
|
|
43
|
-
logger.info('Encrypted object:', encryptedObject);
|
|
44
|
-
const decryptedObject = encryptionService.decryptObject(encryptedObject);
|
|
45
|
-
logger.info('Decrypted object:', JSON.stringify(decryptedObject, null, 2));
|
|
46
|
-
logger.info('Object encryption test:', JSON.stringify(testObject) === JSON.stringify(decryptedObject)
|
|
47
|
-
? 'PASSED'
|
|
48
|
-
: 'FAILED');
|
|
49
|
-
// Test empty/null values
|
|
50
|
-
logger.info('Testing edge cases');
|
|
51
|
-
try {
|
|
52
|
-
const nullTest = encryptionService.encrypt('');
|
|
53
|
-
const nullDecrypted = encryptionService.decrypt(nullTest);
|
|
54
|
-
logger.info('Empty string test:', nullDecrypted === '' ? 'PASSED' : 'FAILED');
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
logger.error('Empty string test failed:', error.message);
|
|
58
|
-
}
|
|
59
|
-
logger.info('Encryption service is ready for production');
|
|
60
|
-
logger.info('All sensitive data will be encrypted before storage in the database.');
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
logger.error('Error running encryption tests:', error);
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=test-encryption.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-encryption.js","sourceRoot":"","sources":["../src/test-encryption.ts"],"names":[],"mappings":"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"}
|