hermes-web-ui 0.3.2 → 0.3.3

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 (66) hide show
  1. package/dist/client/assets/{Add-CYFVC6GK.js → Add-CIZmky1Q.js} +1 -1
  2. package/dist/client/assets/{Button-Bls2FkVh.js → Button-Cpfqx5bj.js} +1 -1
  3. package/dist/client/assets/{ChannelsView-hQeWN-ve.js → ChannelsView-CqgEMY6f.js} +1 -1
  4. package/dist/client/assets/{ChatView-C67INFi3.js → ChatView-o_KHRYai.js} +1 -1
  5. package/dist/client/assets/{Close-CkAmZwHA.js → Close-Dx71Ggz9.js} +1 -1
  6. package/dist/client/assets/{FormItem-CO8nEllS.js → FormItem-D0pABOgK.js} +1 -1
  7. package/dist/client/assets/{Input-CmTdqaW1.js → Input-DmGT4Mu3.js} +1 -1
  8. package/dist/client/assets/{InputNumber-BVqiFQ5W.js → InputNumber-CQVOZP6a.js} +1 -1
  9. package/dist/client/assets/{JobsView-B0LZ2Ep0.js → JobsView-BwxWBXo3.js} +2 -2
  10. package/dist/client/assets/{LoginView-BjqBXdDl.js → LoginView-C4Id2mSY.js} +1 -1
  11. package/dist/client/assets/{LogsView-CXiJ_mte.js → LogsView-H_gfkSSN.js} +1 -1
  12. package/dist/client/assets/{MarkdownRenderer-CtI0yse1.js → MarkdownRenderer-DJK1b6T2.js} +1 -1
  13. package/dist/client/assets/{MemoryView-CjPn1pVR.js → MemoryView-DO4Y2le5.js} +1 -1
  14. package/dist/client/assets/{Modal-apmj2qGK.js → Modal-fhZL63EZ.js} +1 -1
  15. package/dist/client/assets/ModelsView-9CSt8tCa.js +1 -0
  16. package/dist/client/assets/{ModelsView-BhNEZwC0.css → ModelsView-D1p_2trx.css} +1 -1
  17. package/dist/client/assets/{Popconfirm-B9XSMaYA.js → Popconfirm-CLvbZW3I.js} +1 -1
  18. package/dist/client/assets/{Popover-CjCb_fJl.js → Popover-Dwi5NArH.js} +1 -1
  19. package/dist/client/assets/{ProfilesView-CmMfNg5X.js → ProfilesView-R_u1mtsl.js} +1 -1
  20. package/dist/client/assets/{Scrollbar-v6Ok23iG.js → Scrollbar-zYdleApO.js} +1 -1
  21. package/dist/client/assets/{Select-CDF2CEro.js → Select-0jFWg4Lf.js} +1 -1
  22. package/dist/client/assets/{SettingRow-CSjwu__h.js → SettingRow-LTP_cMLl.js} +1 -1
  23. package/dist/client/assets/{SettingsView-BYedQhU5.js → SettingsView-5o2GfsQf.js} +1 -1
  24. package/dist/client/assets/{SkillsView-B_MA4How.js → SkillsView-Cez6jHIn.js} +1 -1
  25. package/dist/client/assets/{Spin-UqA8uGuf.js → Spin-CfKqXT5a.js} +1 -1
  26. package/dist/client/assets/{Suffix-iRME2DUp.js → Suffix-jKQO068E.js} +1 -1
  27. package/dist/client/assets/{Switch-B4za8e-x.js → Switch-tk7Pkw6L.js} +1 -1
  28. package/dist/client/assets/{TerminalView-C0xlWgsR.js → TerminalView-C-oFmyFh.js} +1 -1
  29. package/dist/client/assets/{Tooltip-C9kFaGpi.js → Tooltip-Dc4tc92D.js} +1 -1
  30. package/dist/client/assets/{UsageView-Df6TKjYG.js → UsageView-SSxSWAFO.js} +1 -1
  31. package/dist/client/assets/{Warning-C--exCXL.js → Warning-BPlnDrmx.js} +1 -1
  32. package/dist/client/assets/{_plugin-vue_export-helper-BPCSidQI.js → _plugin-vue_export-helper-CcX4e_Is.js} +1 -1
  33. package/dist/client/assets/{app-BEBfTlZP.js → app-CcLe99Xa.js} +1 -1
  34. package/dist/client/assets/app-ML9hRyDO.js +1 -0
  35. package/dist/client/assets/{browser-OtgUKGth.js → browser-BfJIjfY3.js} +1 -1
  36. package/dist/client/assets/{chat-B8_g1FhX.js → chat-CuVG21Hv.js} +2 -2
  37. package/dist/client/assets/composables-BTIEu8ZB.js +1 -0
  38. package/dist/client/assets/{fade-in-scale-up.cssr-BbYEGcju.js → fade-in-scale-up.cssr-e30I2JjN.js} +1 -1
  39. package/dist/client/assets/index-XufFb2mL.js +284 -0
  40. package/dist/client/assets/{jobs-BRLhuQpK.js → jobs-LBrAH2Mz.js} +1 -1
  41. package/dist/client/assets/{light-Bmu6b0jg.js → light-BF--Dz10.js} +1 -1
  42. package/dist/client/assets/{light-B3QvGN97.js → light-BJ4xZyd0.js} +1 -1
  43. package/dist/client/assets/{light-DDEUT7ek.js → light-BLbGAFtS.js} +1 -1
  44. package/dist/client/assets/{light-B83Z4vA9.js → light-CCZMDqco.js} +1 -1
  45. package/dist/client/assets/{light-BtLlDltU.js → light-CDuRPTUd.js} +1 -1
  46. package/dist/client/assets/{light-8G-BZ0JM.js → light-DTBcb4qq.js} +1 -1
  47. package/dist/client/assets/{pinia-F-uLzgMS.js → pinia-D2g49IcO.js} +1 -1
  48. package/dist/client/assets/{profiles-DIJT1P0i.js → profiles-DbCu_blp.js} +1 -1
  49. package/dist/client/assets/{router-Drg4uUER.js → router-0X4x3p8e.js} +2 -2
  50. package/dist/client/assets/{sessions-BwtYroiN.js → sessions-SzjWXR9A.js} +1 -1
  51. package/dist/client/assets/{skills-BLhNwqgu.js → skills-CsjvGVsY.js} +1 -1
  52. package/dist/client/assets/use-compitable-DY4l-k3U.js +1 -0
  53. package/dist/client/assets/{use-message-xhQoRXQV.js → use-message-4kASja7X.js} +1 -1
  54. package/dist/client/assets/{useTheme-Dd5YNF4O.js → useTheme-Dh7NTo_V.js} +1 -1
  55. package/dist/client/index.html +27 -27
  56. package/dist/server/routes/hermes/codex-auth.d.ts +2 -0
  57. package/dist/server/routes/hermes/codex-auth.js +302 -0
  58. package/dist/server/routes/hermes/filesystem.js +67 -13
  59. package/dist/server/routes/hermes/index.js +2 -0
  60. package/dist/server/shared/providers.js +62 -18
  61. package/package.json +1 -1
  62. package/dist/client/assets/ModelsView-DXvahVC_.js +0 -1
  63. package/dist/client/assets/app-DoAgSphx.js +0 -1
  64. package/dist/client/assets/composables-VZZHak9F.js +0 -1
  65. package/dist/client/assets/index-DY7SeRWD.js +0 -284
  66. package/dist/client/assets/use-compitable-BgSV79Sl.js +0 -1
@@ -12,6 +12,7 @@ exports.PROVIDER_PRESETS = [
12
12
  value: 'anthropic',
13
13
  base_url: 'https://api.anthropic.com',
14
14
  models: [
15
+ 'claude-opus-4-7',
15
16
  'claude-opus-4-6',
16
17
  'claude-sonnet-4-6',
17
18
  'claude-opus-4-5-20251101',
@@ -46,11 +47,11 @@ exports.PROVIDER_PRESETS = [
46
47
  label: 'Z.AI / GLM',
47
48
  value: 'zai',
48
49
  base_url: 'https://api.z.ai/api/paas/v4',
49
- models: ['glm-5', 'glm-5-turbo', 'glm-4.7', 'glm-4.5', 'glm-4.5-flash'],
50
+ models: ['glm-5.1', 'glm-5', 'glm-5v-turbo', 'glm-5-turbo', 'glm-4.7', 'glm-4.5', 'glm-4.5-flash'],
50
51
  },
51
52
  {
52
53
  label: 'Kimi for Coding',
53
- value: 'kimi-for-coding',
54
+ value: 'kimi-coding',
54
55
  base_url: 'https://api.kimi.com/coding/v1',
55
56
  models: [
56
57
  'kimi-for-coding',
@@ -61,22 +62,33 @@ exports.PROVIDER_PRESETS = [
61
62
  'kimi-k2-0905-preview',
62
63
  ],
63
64
  },
65
+ {
66
+ label: 'Kimi for Coding (CN)',
67
+ value: 'kimi-coding-cn',
68
+ base_url: 'https://api.kimi.com/coding/v1',
69
+ models: [
70
+ 'kimi-k2.5',
71
+ 'kimi-k2-thinking',
72
+ 'kimi-k2-turbo-preview',
73
+ 'kimi-k2-0905-preview',
74
+ ],
75
+ },
76
+ {
77
+ label: 'Moonshot',
78
+ value: 'moonshot',
79
+ base_url: 'https://api.moonshot.cn/v1',
80
+ models: [
81
+ 'kimi-k2.5',
82
+ 'kimi-k2-thinking',
83
+ 'kimi-k2-turbo-preview',
84
+ 'kimi-k2-0905-preview',
85
+ ],
86
+ },
64
87
  {
65
88
  label: 'xAI',
66
89
  value: 'xai',
67
90
  base_url: 'https://api.x.ai/v1',
68
- models: [
69
- 'grok-4.20-0309-reasoning',
70
- 'grok-4.20-0309-non-reasoning',
71
- 'grok-4-1-fast-reasoning',
72
- 'grok-4-1-fast-non-reasoning',
73
- 'grok-4-fast-reasoning',
74
- 'grok-4-fast-non-reasoning',
75
- 'grok-4-0709',
76
- 'grok-code-fast-1',
77
- 'grok-3',
78
- 'grok-3-mini',
79
- ],
91
+ models: ['grok-4.20-reasoning', 'grok-4-1-fast-reasoning'],
80
92
  },
81
93
  {
82
94
  label: 'MiniMax',
@@ -127,7 +139,7 @@ exports.PROVIDER_PRESETS = [
127
139
  },
128
140
  {
129
141
  label: 'Kilo Code',
130
- value: 'kilo',
142
+ value: 'kilocode',
131
143
  base_url: 'https://api.kilo.ai/api/gateway',
132
144
  models: [
133
145
  'anthropic/claude-opus-4.6',
@@ -139,7 +151,7 @@ exports.PROVIDER_PRESETS = [
139
151
  },
140
152
  {
141
153
  label: 'Vercel AI Gateway',
142
- value: 'vercel',
154
+ value: 'ai-gateway',
143
155
  base_url: 'https://ai-gateway.vercel.sh/v1',
144
156
  models: [
145
157
  'anthropic/claude-opus-4.6',
@@ -158,32 +170,64 @@ exports.PROVIDER_PRESETS = [
158
170
  },
159
171
  {
160
172
  label: 'OpenCode Zen',
161
- value: 'opencode',
173
+ value: 'opencode-zen',
162
174
  base_url: 'https://opencode.ai/zen/v1',
163
175
  models: [
164
176
  'gpt-5.4-pro',
165
177
  'gpt-5.4',
166
178
  'gpt-5.3-codex',
179
+ 'gpt-5.3-codex-spark',
167
180
  'gpt-5.2',
181
+ 'gpt-5.2-codex',
168
182
  'gpt-5.1',
183
+ 'gpt-5.1-codex',
184
+ 'gpt-5.1-codex-max',
185
+ 'gpt-5.1-codex-mini',
186
+ 'gpt-5',
187
+ 'gpt-5-codex',
188
+ 'gpt-5-nano',
169
189
  'claude-opus-4-6',
190
+ 'claude-opus-4-5',
191
+ 'claude-opus-4-1',
170
192
  'claude-sonnet-4-6',
193
+ 'claude-sonnet-4-5',
194
+ 'claude-sonnet-4',
171
195
  'claude-haiku-4-5',
196
+ 'claude-3-5-haiku',
172
197
  'gemini-3.1-pro',
173
198
  'gemini-3-pro',
174
199
  'gemini-3-flash',
175
200
  'minimax-m2.7',
176
201
  'minimax-m2.5',
202
+ 'minimax-m2.5-free',
203
+ 'minimax-m2.1',
177
204
  'glm-5',
178
205
  'glm-4.7',
206
+ 'glm-4.6',
179
207
  'kimi-k2.5',
208
+ 'kimi-k2-thinking',
209
+ 'kimi-k2',
210
+ 'qwen3-coder',
211
+ 'big-pickle',
180
212
  ],
181
213
  },
182
214
  {
183
215
  label: 'OpenCode Go',
184
216
  value: 'opencode-go',
185
217
  base_url: 'https://opencode.ai/zen/go/v1',
186
- models: ['glm-5', 'kimi-k2.5', 'mimo-v2-pro', 'mimo-v2-omni', 'minimax-m2.7', 'minimax-m2.5'],
218
+ models: ['glm-5.1', 'glm-5', 'kimi-k2.5', 'mimo-v2-pro', 'mimo-v2-omni', 'minimax-m2.7', 'minimax-m2.5'],
219
+ },
220
+ {
221
+ label: 'OpenAI Codex',
222
+ value: 'openai-codex',
223
+ base_url: 'https://chatgpt.com/backend-api/codex',
224
+ models: ['gpt-5.4-mini', 'gpt-5.4', 'gpt-5.3-codex', 'gpt-5.2-codex', 'gpt-5.1-codex-max', 'gpt-5.1-codex-mini'],
225
+ },
226
+ {
227
+ label: 'Arcee AI',
228
+ value: 'arcee',
229
+ base_url: 'https://api.arcee.ai/v1',
230
+ models: ['trinity-large-thinking', 'trinity-large-preview', 'trinity-mini'],
187
231
  },
188
232
  {
189
233
  label: 'OpenRouter',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hermes-web-ui",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Web dashboard for Hermes Agent — multi-platform AI chat, session management, scheduled jobs, usage analytics & channel configuration (Telegram, Discord, Slack, WhatsApp)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1 +0,0 @@
1
- import{A as e,C as t,D as n,E as r,G as i,Q as a,T as o,U as s,X as c,ct as l,gt as u,j as d,k as f,mt as p,pt as m,q as h,w as g,y as _}from"./router-Drg4uUER.js";import{n as v}from"./pinia-F-uLzgMS.js";import{r as y,t as b}from"./_plugin-vue_export-helper-BPCSidQI.js";import{t as x}from"./Modal-apmj2qGK.js";import{n as S,t as C}from"./FormItem-CO8nEllS.js";import{t as w}from"./Select-CDF2CEro.js";import{t as T}from"./Button-Bls2FkVh.js";import{t as E}from"./Input-CmTdqaW1.js";import{t as D}from"./composables-VZZHak9F.js";import{t as O}from"./use-message-xhQoRXQV.js";import{t as k}from"./Spin-UqA8uGuf.js";import{a as A,i as j,n as M,r as N,t as P}from"./app-BEBfTlZP.js";var F=v(`models`,()=>{let e=l([]),n=l(``),r=l(!1),i=t(()=>e.value.filter(e=>e.provider.startsWith(`custom:`))),a=t(()=>e.value.filter(e=>!e.provider.startsWith(`custom:`))),o=t(()=>e.value.flatMap(e=>e.models.map(t=>({id:t,provider:e.provider,label:e.label,base_url:e.base_url,isDefault:t===n.value}))));async function s(){r.value=!0;try{let t=await N();e.value=t.groups,n.value=t.default}catch(e){console.error(`Failed to fetch providers:`,e)}finally{r.value=!1}}async function c(e,t){await A({default:e,provider:t}),n.value=e,P().loadModels()}async function u(e){await M(e),await s(),P().loadModels()}async function d(e){await j(e),await s(),P().loadModels()}return{providers:e,defaultModel:n,loading:r,customProviders:i,builtinProviders:a,allModels:o,fetchProviders:s,setDefaultModel:c,addProvider:u,removeProvider:d}}),I={class:`provider-card`},L={class:`card-header`},R={class:`provider-name`},z={class:`card-body`},B={class:`info-row`},V={class:`info-label`},H={class:`info-value mono`},U={class:`info-row`},W={class:`info-label`},G={class:`info-value mono`},K={class:`card-actions`},q=b(d({__name:`ProviderCard`,props:{provider:{}},setup(r){let o=r,{t:s}=y(),c=F(),l=O(),d=D(),h=t(()=>o.provider.provider.startsWith(`custom:`)),_=t(()=>o.provider.label);async function v(){d.warning({title:s(`models.deleteProvider`),content:s(`models.deleteConfirm`,{name:_.value}),positiveText:s(`common.delete`),negativeText:s(`common.cancel`),onPositiveClick:async()=>{try{await c.removeProvider(o.provider.provider),l.success(s(`models.providerDeleted`))}catch(e){l.error(e.message)}}})}return(t,o)=>(i(),n(`div`,I,[g(`div`,L,[g(`h3`,R,u(_.value),1),g(`span`,{class:p([`type-badge`,h.value?`custom`:`builtin`])},u(h.value?m(s)(`models.customType`):m(s)(`models.builtIn`)),3)]),g(`div`,z,[g(`div`,B,[g(`span`,V,u(m(s)(`models.provider`)),1),g(`code`,H,u(r.provider.provider),1)]),g(`div`,U,[g(`span`,W,u(m(s)(`models.baseUrl`)),1),g(`code`,G,u(r.provider.base_url),1)])]),g(`div`,K,[e(m(T),{size:`tiny`,quaternary:``,type:`error`,onClick:v},{default:a(()=>[f(u(m(s)(`common.delete`)),1)]),_:1})])]))}}),[[`__scopeId`,`data-v-31916e31`]]),J={key:0,class:`empty-state`},Y={key:1,class:`providers-grid`},X=b(d({__name:`ProvidersPanel`,setup(e){let{t}=y(),r=F();return(e,a)=>m(r).providers.length===0?(i(),n(`div`,J,[a[0]||=g(`svg`,{width:`48`,height:`48`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1`,class:`empty-icon`},[g(`path`,{d:`M12 2L2 7l10 5 10-5-10-5z`}),g(`path`,{d:`M2 17l10 5 10-5`}),g(`path`,{d:`M2 12l10 5 10-5`})],-1),g(`p`,null,u(m(t)(`models.noProviders`)),1)])):(i(),n(`div`,Y,[(i(!0),n(_,null,h(m(r).providers,e=>(i(),o(q,{key:e.provider,provider:e},null,8,[`provider`]))),128))]))}}),[[`__scopeId`,`data-v-76eec30b`]]),Z=[{label:`Anthropic`,value:`anthropic`,base_url:`https://api.anthropic.com`,models:[`claude-opus-4-6`,`claude-sonnet-4-6`,`claude-opus-4-5-20251101`,`claude-sonnet-4-5-20250929`,`claude-opus-4-20250514`,`claude-sonnet-4-20250514`,`claude-haiku-4-5-20251001`]},{label:`Google AI Studio`,value:`gemini`,base_url:`https://generativelanguage.googleapis.com/v1beta/openai`,models:[`gemini-3.1-pro-preview`,`gemini-3-flash-preview`,`gemini-3.1-flash-lite-preview`,`gemini-2.5-pro`,`gemini-2.5-flash`,`gemini-2.5-flash-lite`,`gemma-4-31b-it`,`gemma-4-26b-it`]},{label:`DeepSeek`,value:`deepseek`,base_url:`https://api.deepseek.com`,models:[`deepseek-chat`,`deepseek-reasoner`]},{label:`Z.AI / GLM`,value:`zai`,base_url:`https://api.z.ai/api/paas/v4`,models:[`glm-5`,`glm-5-turbo`,`glm-4.7`,`glm-4.5`,`glm-4.5-flash`]},{label:`Kimi for Coding`,value:`kimi-for-coding`,base_url:`https://api.kimi.com/coding/v1`,models:[`kimi-for-coding`,`kimi-k2.5`,`kimi-k2-thinking`,`kimi-k2-thinking-turbo`,`kimi-k2-turbo-preview`,`kimi-k2-0905-preview`]},{label:`xAI`,value:`xai`,base_url:`https://api.x.ai/v1`,models:[`grok-4.20-0309-reasoning`,`grok-4.20-0309-non-reasoning`,`grok-4-1-fast-reasoning`,`grok-4-1-fast-non-reasoning`,`grok-4-fast-reasoning`,`grok-4-fast-non-reasoning`,`grok-4-0709`,`grok-code-fast-1`,`grok-3`,`grok-3-mini`]},{label:`MiniMax`,value:`minimax`,base_url:`https://api.minimax.io/anthropic/v1`,models:[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`,`MiniMax-M2.5`,`MiniMax-M2.5-highspeed`,`MiniMax-M2.1`,`MiniMax-M2.1-highspeed`,`MiniMax-M2`,`MiniMax-M2-highspeed`]},{label:`MiniMax (China)`,value:`minimax-cn`,base_url:`https://api.minimaxi.com/v1`,models:[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`,`MiniMax-M2.5`,`MiniMax-M2.5-highspeed`,`MiniMax-M2.1`,`MiniMax-M2.1-highspeed`,`MiniMax-M2`,`MiniMax-M2-highspeed`]},{label:`Alibaba Cloud`,value:`alibaba`,base_url:`https://dashscope-intl.aliyuncs.com/compatible-mode/v1`,models:[`qwen3.5-plus`,`qwen3-coder-plus`,`qwen3-coder-next`,`glm-5`,`glm-4.7`,`kimi-k2.5`,`MiniMax-M2.5`]},{label:`Hugging Face`,value:`huggingface`,base_url:`https://router.huggingface.co/v1`,models:[`Qwen/Qwen3.5-397B-A17B`,`Qwen/Qwen3.5-35B-A3B`,`deepseek-ai/DeepSeek-V3.2`,`moonshotai/Kimi-K2.5`,`MiniMaxAI/MiniMax-M2.5`,`zai-org/GLM-5`,`XiaomiMiMo/MiMo-V2-Flash`,`moonshotai/Kimi-K2-Thinking`]},{label:`Xiaomi MiMo`,value:`xiaomi`,base_url:`https://api.xiaomimimo.com/v1`,models:[`mimo-v2-pro`,`mimo-v2-omni`,`mimo-v2-flash`]},{label:`Kilo Code`,value:`kilo`,base_url:`https://api.kilo.ai/api/gateway`,models:[`anthropic/claude-opus-4.6`,`anthropic/claude-sonnet-4.6`,`openai/gpt-5.4`,`google/gemini-3-pro-preview`,`google/gemini-3-flash-preview`]},{label:`Vercel AI Gateway`,value:`vercel`,base_url:`https://ai-gateway.vercel.sh/v1`,models:[`anthropic/claude-opus-4.6`,`anthropic/claude-sonnet-4.6`,`anthropic/claude-sonnet-4.5`,`anthropic/claude-haiku-4.5`,`openai/gpt-5`,`openai/gpt-4.1`,`openai/gpt-4.1-mini`,`google/gemini-3-pro-preview`,`google/gemini-3-flash`,`google/gemini-2.5-pro`,`google/gemini-2.5-flash`,`deepseek/deepseek-v3.2`]},{label:`OpenCode Zen`,value:`opencode`,base_url:`https://opencode.ai/zen/v1`,models:[`gpt-5.4-pro`,`gpt-5.4`,`gpt-5.3-codex`,`gpt-5.2`,`gpt-5.1`,`claude-opus-4-6`,`claude-sonnet-4-6`,`claude-haiku-4-5`,`gemini-3.1-pro`,`gemini-3-pro`,`gemini-3-flash`,`minimax-m2.7`,`minimax-m2.5`,`glm-5`,`glm-4.7`,`kimi-k2.5`]},{label:`OpenCode Go`,value:`opencode-go`,base_url:`https://opencode.ai/zen/go/v1`,models:[`glm-5`,`kimi-k2.5`,`mimo-v2-pro`,`mimo-v2-omni`,`minimax-m2.7`,`minimax-m2.5`]},{label:`OpenRouter`,value:`openrouter`,base_url:`https://openrouter.ai/api/v1`,models:[]}],Q={style:{display:`flex`,gap:`12px`}},$={style:{display:`flex`,gap:`8px`,width:`100%`}},ee={class:`modal-footer`},te=b(d({__name:`ProviderFormModal`,emits:[`close`,`saved`],setup(t,{emit:n}){let{t:s}=y(),d=n,p=F(),h=O(),_=l(!0),v=l(!1),b=l(!1),D=l(`preset`),k=l(null),A=l({name:``,base_url:``,api_key:``,model:``}),j=l([]),M=Z;function N(e){let t=e.replace(/^https?:\/\//,``).replace(/\/v1\/?$/,``).split(`/`)[0];return t.includes(`localhost`)||t.includes(`127.0.0.1`)?s(`models.local`,{host:t}):t.charAt(0).toUpperCase()+t.slice(1)}c(k,e=>{if(A.value.model=``,e){let t=M.find(t=>t.value===e);t&&(A.value.name=t.label,A.value.base_url=t.base_url,j.value=t.models.map(e=>({label:e,value:e})),t.models.length>0&&(A.value.model=t.models[0]))}}),c(()=>A.value.base_url,e=>{D.value===`custom`&&e.trim()&&(A.value.name=N(e.trim()))}),c(D,()=>{j.value=[],A.value={name:``,base_url:``,api_key:``,model:``},k.value=null});async function P(){let{base_url:e}=A.value;if(!e.trim()){h.warning(s(`models.enterBaseUrl`));return}b.value=!0;try{let t=e.replace(/\/+$/,``)+`/models`,n={};A.value.api_key.trim()&&(n.Authorization=`Bearer ${A.value.api_key.trim()}`);let r=await fetch(t,{headers:n,signal:AbortSignal.timeout(8e3)});if(!r.ok)throw Error(`HTTP ${r.status}`);let i=await r.json();if(!Array.isArray(i.data))throw Error(s(`models.unexpectedFormat`));j.value=i.data.map(e=>({label:e.id,value:e.id})),j.value.length>0&&!A.value.model&&(A.value.model=j.value[0].value),h.success(s(`models.foundModels`,{count:j.value.length}))}catch(e){h.error(s(`models.fetchFailed`)+`: `+e.message)}finally{b.value=!1}}async function I(){if(D.value===`preset`&&!k.value){h.warning(s(`models.selectProviderRequired`));return}if(!A.value.base_url.trim()){h.warning(s(`models.baseUrlRequired`));return}if(!A.value.api_key.trim()){h.warning(s(`models.apiKeyRequired`));return}if(!A.value.model){h.warning(s(`models.modelRequired`));return}v.value=!0;try{let e=D.value===`preset`&&M.find(e=>e.value===k.value)?.value||null;await p.addProvider({name:A.value.name.trim(),base_url:A.value.base_url.trim(),api_key:A.value.api_key.trim(),model:A.value.model,providerKey:e}),h.success(s(`models.providerAdded`)),d(`saved`)}catch(e){h.error(e.message)}finally{v.value=!1}}function L(){_.value=!1,setTimeout(()=>d(`close`),200)}return(t,n)=>(i(),o(m(x),{show:_.value,"onUpdate:show":n[7]||=e=>_.value=e,preset:`card`,title:m(s)(`models.addProvider`),style:{width:`min(520px, calc(100vw - 32px))`},"mask-closable":!v.value,onAfterLeave:n[8]||=e=>d(`close`)},{footer:a(()=>[g(`div`,ee,[e(m(T),{onClick:L},{default:a(()=>[f(u(m(s)(`common.cancel`)),1)]),_:1}),e(m(T),{type:`primary`,loading:v.value,onClick:I},{default:a(()=>[f(u(m(s)(`common.add`)),1)]),_:1},8,[`loading`])])]),default:a(()=>[e(m(S),{"label-placement":`top`},{default:a(()=>[e(m(C),{label:m(s)(`models.providerType`)},{default:a(()=>[g(`div`,Q,[e(m(T),{type:D.value===`preset`?`primary`:`default`,size:`small`,onClick:n[0]||=e=>D.value=`preset`},{default:a(()=>[f(u(m(s)(`models.preset`)),1)]),_:1},8,[`type`]),e(m(T),{type:D.value===`custom`?`primary`:`default`,size:`small`,onClick:n[1]||=e=>D.value=`custom`},{default:a(()=>[f(u(m(s)(`models.custom`)),1)]),_:1},8,[`type`])])]),_:1},8,[`label`]),D.value===`preset`?(i(),o(m(C),{key:0,label:m(s)(`models.selectProvider`),required:``},{default:a(()=>[e(m(w),{value:k.value,"onUpdate:value":n[2]||=e=>k.value=e,options:m(M),placeholder:m(s)(`models.chooseProvider`),filterable:``},null,8,[`value`,`options`,`placeholder`])]),_:1},8,[`label`])):r(``,!0),D.value===`custom`?(i(),o(m(C),{key:1,label:m(s)(`models.name`)},{default:a(()=>[e(m(E),{value:A.value.name,"onUpdate:value":n[3]||=e=>A.value.name=e,placeholder:m(s)(`models.autoGeneratedName`),disabled:``},null,8,[`value`,`placeholder`])]),_:1},8,[`label`])):r(``,!0),e(m(C),{label:m(s)(`models.baseUrl`),required:``},{default:a(()=>[e(m(E),{value:A.value.base_url,"onUpdate:value":n[4]||=e=>A.value.base_url=e,placeholder:m(s)(`models.baseUrlPlaceholder`),disabled:D.value===`preset`},null,8,[`value`,`placeholder`,`disabled`])]),_:1},8,[`label`]),e(m(C),{label:m(s)(`models.apiKey`),required:``},{default:a(()=>[e(m(E),{value:A.value.api_key,"onUpdate:value":n[5]||=e=>A.value.api_key=e,type:`password`,"show-password-on":`click`,placeholder:m(s)(`models.apiKeyPlaceholder`)},null,8,[`value`,`placeholder`])]),_:1},8,[`label`]),e(m(C),{label:m(s)(`models.defaultModel`),required:``},{default:a(()=>[g(`div`,$,[e(m(w),{value:A.value.model,"onUpdate:value":n[6]||=e=>A.value.model=e,options:j.value,filterable:``,placeholder:m(s)(`models.selectModel`),style:{flex:`1`}},null,8,[`value`,`options`,`placeholder`]),D.value===`custom`||D.value===`preset`&&j.value.length===0?(i(),o(m(T),{key:0,loading:b.value,onClick:P},{default:a(()=>[f(u(m(s)(`common.fetch`)),1)]),_:1},8,[`loading`])):r(``,!0)])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`show`,`title`,`mask-closable`]))}}),[[`__scopeId`,`data-v-c6cd4f75`]]),ne={class:`models-view`},re={class:`page-header`},ie={class:`header-title`},ae={class:`models-content`},oe=b(d({__name:`ModelsView`,setup(t){let{t:c}=y(),d=F(),p=l(!1);s(()=>{d.fetchProviders()});function h(){p.value=!0}function _(){p.value=!1}async function v(){await d.fetchProviders(),_()}return(t,s)=>(i(),n(`div`,ne,[g(`header`,re,[g(`h2`,ie,u(m(c)(`models.title`)),1),e(m(T),{type:`primary`,size:`small`,onClick:h},{icon:a(()=>[...s[0]||=[g(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[g(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),g(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),default:a(()=>[f(` `+u(m(c)(`models.addProvider`)),1)]),_:1})]),g(`div`,ae,[e(m(k),{show:m(d).loading&&m(d).providers.length===0},{default:a(()=>[e(X)]),_:1},8,[`show`])]),p.value?(i(),o(te,{key:0,onClose:_,onSaved:v})):r(``,!0)]))}}),[[`__scopeId`,`data-v-f120758c`]]);export{oe as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./app-BEBfTlZP.js";export{e as useAppStore};
@@ -1 +0,0 @@
1
- import{F as e}from"./router-Drg4uUER.js";import{Y as t}from"./browser-OtgUKGth.js";import{s as n}from"./Modal-apmj2qGK.js";function r(){let r=e(n,null);return r===null&&t(`use-dialog`,`No outer <n-dialog-provider /> founded.`),r}export{r as t};