jishushell 0.0.1 → 0.4.2
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/LICENSE +202 -0
- package/README.md +36 -0
- package/THIRD-PARTY-NOTICES +387 -0
- package/dist/auth.d.ts +6 -0
- package/dist/auth.js +88 -0
- package/dist/auth.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +290 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +24 -0
- package/dist/config.js +226 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.js +15 -0
- package/dist/constants.js.map +1 -0
- package/dist/control.d.ts +44 -0
- package/dist/control.js +1359 -0
- package/dist/control.js.map +1 -0
- package/dist/crypto-shim.d.ts +1 -0
- package/dist/crypto-shim.js +2 -0
- package/dist/crypto-shim.js.map +1 -0
- package/dist/doctor.d.ts +46 -0
- package/dist/doctor.js +937 -0
- package/dist/doctor.js.map +1 -0
- package/dist/install.d.ts +27 -0
- package/dist/install.js +570 -0
- package/dist/install.js.map +1 -0
- package/dist/routes/auth.d.ts +4 -0
- package/dist/routes/auth.js +151 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/instances.d.ts +2 -0
- package/dist/routes/instances.js +1303 -0
- package/dist/routes/instances.js.map +1 -0
- package/dist/routes/setup.d.ts +2 -0
- package/dist/routes/setup.js +139 -0
- package/dist/routes/setup.js.map +1 -0
- package/dist/routes/system.d.ts +2 -0
- package/dist/routes/system.js +102 -0
- package/dist/routes/system.js.map +1 -0
- package/dist/server.d.ts +6 -0
- package/dist/server.js +392 -0
- package/dist/server.js.map +1 -0
- package/dist/services/instance-manager.d.ts +67 -0
- package/dist/services/instance-manager.js +1319 -0
- package/dist/services/instance-manager.js.map +1 -0
- package/dist/services/llm-proxy/adapters.d.ts +3 -0
- package/dist/services/llm-proxy/adapters.js +309 -0
- package/dist/services/llm-proxy/adapters.js.map +1 -0
- package/dist/services/llm-proxy/circuit-breaker.d.ts +9 -0
- package/dist/services/llm-proxy/circuit-breaker.js +73 -0
- package/dist/services/llm-proxy/circuit-breaker.js.map +1 -0
- package/dist/services/llm-proxy/encryption.d.ts +6 -0
- package/dist/services/llm-proxy/encryption.js +61 -0
- package/dist/services/llm-proxy/encryption.js.map +1 -0
- package/dist/services/llm-proxy/index.d.ts +24 -0
- package/dist/services/llm-proxy/index.js +708 -0
- package/dist/services/llm-proxy/index.js.map +1 -0
- package/dist/services/llm-proxy/rate-limiter.d.ts +1 -0
- package/dist/services/llm-proxy/rate-limiter.js +39 -0
- package/dist/services/llm-proxy/rate-limiter.js.map +1 -0
- package/dist/services/llm-proxy/sse.d.ts +10 -0
- package/dist/services/llm-proxy/sse.js +378 -0
- package/dist/services/llm-proxy/sse.js.map +1 -0
- package/dist/services/llm-proxy/ssrf.d.ts +16 -0
- package/dist/services/llm-proxy/ssrf.js +185 -0
- package/dist/services/llm-proxy/ssrf.js.map +1 -0
- package/dist/services/llm-proxy/types.d.ts +52 -0
- package/dist/services/llm-proxy/types.js +2 -0
- package/dist/services/llm-proxy/types.js.map +1 -0
- package/dist/services/llm-proxy/usage.d.ts +12 -0
- package/dist/services/llm-proxy/usage.js +108 -0
- package/dist/services/llm-proxy/usage.js.map +1 -0
- package/dist/services/nomad-manager.d.ts +22 -0
- package/dist/services/nomad-manager.js +828 -0
- package/dist/services/nomad-manager.js.map +1 -0
- package/dist/services/plugin-installer.d.ts +22 -0
- package/dist/services/plugin-installer.js +102 -0
- package/dist/services/plugin-installer.js.map +1 -0
- package/dist/services/process-manager.d.ts +25 -0
- package/dist/services/process-manager.js +531 -0
- package/dist/services/process-manager.js.map +1 -0
- package/dist/services/setup-manager.d.ts +93 -0
- package/dist/services/setup-manager.js +1922 -0
- package/dist/services/setup-manager.js.map +1 -0
- package/dist/services/system-monitor.d.ts +1 -0
- package/dist/services/system-monitor.js +79 -0
- package/dist/services/system-monitor.js.map +1 -0
- package/dist/services/telemetry/activation.d.ts +12 -0
- package/dist/services/telemetry/activation.js +75 -0
- package/dist/services/telemetry/activation.js.map +1 -0
- package/dist/services/telemetry/client.d.ts +21 -0
- package/dist/services/telemetry/client.js +47 -0
- package/dist/services/telemetry/client.js.map +1 -0
- package/dist/services/telemetry/device-fingerprint.d.ts +18 -0
- package/dist/services/telemetry/device-fingerprint.js +123 -0
- package/dist/services/telemetry/device-fingerprint.js.map +1 -0
- package/dist/services/telemetry/heartbeat.d.ts +13 -0
- package/dist/services/telemetry/heartbeat.js +81 -0
- package/dist/services/telemetry/heartbeat.js.map +1 -0
- package/dist/services/telemetry/index.d.ts +3 -0
- package/dist/services/telemetry/index.js +4 -0
- package/dist/services/telemetry/index.js.map +1 -0
- package/dist/types.d.ts +51 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/safe-json.d.ts +2 -0
- package/dist/utils/safe-json.js +80 -0
- package/dist/utils/safe-json.js.map +1 -0
- package/dist/utils/ttl-cache.d.ts +29 -0
- package/dist/utils/ttl-cache.js +77 -0
- package/dist/utils/ttl-cache.js.map +1 -0
- package/install/jishu-install.sh +2920 -0
- package/install/jishu-uninstall.sh +811 -0
- package/install/post-install.sh +110 -0
- package/install/post-uninstall.sh +46 -0
- package/package.json +57 -8
- package/public/assets/Dashboard-CAOQDYDR.js +1 -0
- package/public/assets/InitPassword-CkehIkJG.js +1 -0
- package/public/assets/InstanceDetail-CzW2S95J.js +14 -0
- package/public/assets/Login-RkjzTNWg.js +1 -0
- package/public/assets/NewInstance-DdbErdjA.js +1 -0
- package/public/assets/Settings-BUD7zwv9.js +1 -0
- package/public/assets/Setup-RRTIERGG.js +1 -0
- package/public/assets/index-77Ug7feY.css +1 -0
- package/public/assets/index-DfRnVUQR.js +16 -0
- package/public/assets/providers-lBSOjUWy.js +1 -0
- package/public/assets/usePolling-CqQ8hrNc.js +1 -0
- package/public/assets/vendor-i18n-Bvxxh8Di.js +9 -0
- package/public/assets/vendor-react-DONn7uBV.js +59 -0
- package/public/index.html +15 -0
- package/scripts/build-image.sh +55 -0
- package/scripts/run.sh +310 -0
- package/scripts/setup-pi.sh +80 -0
- package/scripts/start-feishu1.js +46 -0
- package/index.js +0 -0
- package/jishushell-0.0.1.tgz +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,T as h,I as g,a as f,b as j,s as v}from"./index-DfRnVUQR.js";import{r as t,u as w}from"./vendor-react-DONn7uBV.js";import{u as N}from"./vendor-i18n-Bvxxh8Di.js";function k({onLogin:a}={}){const{t:s}=N("auth"),[r,m]=t.useState(""),[o,x]=t.useState(!1),[d,i]=t.useState(""),[c,u]=t.useState(!1),b=w(),p=async l=>{l.preventDefault(),i(""),u(!0);try{const n=await j(r);v(n.token),a==null||a(),b("/",{replace:!0})}catch(n){i(n.message||s("login.failed"))}finally{u(!1)}};return e.jsxs("div",{className:"min-h-screen flex items-center justify-center p-4 bg-background relative overflow-hidden",children:[e.jsx("div",{className:"absolute inset-0 grid-bg"}),e.jsx("div",{className:"absolute inset-0 pointer-events-none",children:e.jsx("div",{className:"absolute top-1/4 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[600px] rounded-full bg-[radial-gradient(circle,rgba(0,102,255,0.08)_0%,transparent_70%)]"})}),e.jsxs("div",{className:"w-full max-w-sm relative z-10",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx(h,{className:"w-40 h-40 mx-auto mb-4 object-contain"}),e.jsx("p",{className:"text-sm text-muted mt-1",children:s("login.title")})]}),e.jsx("div",{className:"bg-card border border-[var(--border)] rounded-xl backdrop-blur-xl p-6 shadow-2xl",children:e.jsxs("form",{onSubmit:p,className:"space-y-4",children:[d&&e.jsx("div",{className:"bg-red-500/10 border border-red-500/20 text-red-400 text-sm rounded-lg px-3 py-2.5",children:d}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:s("login.password")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:o?"text":"password",value:r,onChange:l=>m(l.target.value),placeholder:s("login.placeholder"),className:"w-full bg-[var(--input-bg)] border border-[var(--border)] rounded-md px-3 py-2.5 text-sm text-foreground placeholder-[var(--muted)] focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60 focus:border-[#0066FF]/60 pr-10 transition-colors duration-200",autoFocus:!0}),e.jsx("button",{type:"button",onClick:()=>x(!o),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted hover:text-foreground transition-colors",children:o?e.jsx(g,{}):e.jsx(f,{})})]})]}),e.jsx("button",{type:"submit",disabled:c||!r,className:"w-full bg-[#0066FF] text-white rounded-md py-2.5 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)]",children:c?e.jsxs("span",{className:"inline-flex items-center gap-2",children:[e.jsx("span",{className:"w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin"}),s("login.loading")]}):s("login.submit")})]})}),e.jsxs("p",{className:"text-xs text-muted mt-6 text-center",children:[s("login.forgotPassword")," ",e.jsx("code",{className:"text-foreground bg-card px-1 py-0.5 rounded text-[11px]",children:"jishushell onboard --force"})]})]})]})}export{k as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as S,j as e,a2 as I}from"./index-DfRnVUQR.js";import{r as a,u as C}from"./vendor-react-DONn7uBV.js";import{u as E}from"./vendor-i18n-Bvxxh8Di.js";function _(t){return t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").slice(0,63)}const o="w-full bg-[var(--input-bg)] border border-[var(--border)] rounded-md px-3 py-2 text-sm text-foreground placeholder-[var(--muted)] focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60 focus:border-[#0066FF]/60 transition-colors duration-200";function L(){const{t}=E("newInstance"),[r,h]=a.useState(""),[n,d]=a.useState(""),[g,f]=a.useState(!1),[i,v]=a.useState(""),[c,j]=a.useState(""),[m,N]=a.useState([]),[u,x]=a.useState(""),[b,p]=a.useState(!1),w=C();a.useEffect(()=>{S().then(N).catch(()=>{})},[]);const y=s=>{h(s),g||d(_(s))},F=async s=>{if(s.preventDefault(),!(!n||!r)){x(""),p(!0);try{const l=await I({id:n,name:r,description:i,clone_from:c||void 0});w(l!=null&&l.autoStarted?`/instances/${n}`:`/instances/${n}/config`)}catch(l){x(l.message||t("failed"))}finally{p(!1)}}};return e.jsxs("div",{className:"p-6 max-w-lg mx-auto",children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h1",{className:"text-lg font-semibold text-foreground",children:t("title")}),e.jsx("p",{className:"text-sm text-muted mt-0.5",children:t("subtitle")})]}),e.jsxs("form",{onSubmit:F,className:"space-y-4",children:[u&&e.jsx("div",{className:"bg-red-500/10 border border-red-500/20 text-red-400 text-sm rounded-lg px-3 py-2.5",children:u}),e.jsxs("div",{className:"bg-card border border-[var(--border)] rounded-xl p-5 space-y-4",children:[e.jsx("div",{className:"text-xs text-muted bg-card border border-[var(--border)] rounded-md p-3",children:t("info")}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:t("name.label")}),e.jsx("input",{type:"text",value:r,onChange:s=>y(s.target.value),placeholder:t("name.placeholder"),className:o,autoFocus:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:t("id.label")}),e.jsx("input",{type:"text",value:n,onChange:s=>{d(s.target.value),f(!0)},placeholder:t("id.placeholder"),className:`${o} font-mono text-[13px]`}),e.jsx("p",{className:"text-xs text-muted mt-1",children:r&&!n?e.jsx("span",{className:"text-amber-400",children:t("id.invalid")}):t("id.hint")})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:t("description.label")}),e.jsx("input",{type:"text",value:i,onChange:s=>v(s.target.value),placeholder:t("description.placeholder"),className:o})]}),m.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:t("clone.label")}),e.jsxs("select",{value:c,onChange:s=>j(s.target.value),className:`${o} appearance-none`,children:[e.jsx("option",{value:"",className:"bg-background text-foreground",children:t("clone.none")}),m.map(s=>e.jsx("option",{value:s.id,className:"bg-background text-foreground",children:s.name},s.id))]})]})]}),e.jsx("button",{type:"submit",disabled:b||!n||!r,className:"w-full bg-[#0066FF] text-white rounded-md py-2.5 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)] hover:shadow-[0_0_28px_rgba(0,102,255,0.45)]",children:b?e.jsxs("span",{className:"inline-flex items-center gap-2",children:[e.jsx("span",{className:"w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin"}),t("loading")]}):t("submit")})]})]})}export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a3 as L,a4 as R,j as e,I as K,a as E,e as G,a5 as H,s as O}from"./index-DfRnVUQR.js";import{r as d}from"./vendor-react-DONn7uBV.js";import{P as p}from"./providers-lBSOjUWy.js";import{u as U}from"./vendor-i18n-Bvxxh8Di.js";function z(){const{t:s}=U(["settings","setup","instance"]),{system:a,showToast:m}=L(),[x,y]=d.useState(""),[h,N]=d.useState(""),[u,M]=d.useState(!1),[o,w]=d.useState(""),[v,b]=d.useState(""),[f,_]=d.useState(!1),[S,g]=d.useState(""),[P,F]=d.useState(!1),[A,k]=d.useState(!1),[$,j]=d.useState(!1);d.useEffect(()=>{R().then(t=>{t.configured&&t.providerId&&(w(t.providerId),g(t.selectedModelId||""),j(!!t.hasApiKey)),k(!0)}).catch(()=>k(!0))},[]);const D=async()=>{var l;if(!o)return;const t=p.find(n=>n.id===o);if(t){F(!0);try{await G({providerId:t.id,baseUrl:t.baseUrl,api:t.api,authHeader:t.authHeader||!1,models:t.models,selectedModelId:S||((l=t.models[0])==null?void 0:l.id)||"",apiKey:v||""}),m(s("setup:provider.saved"),"success"),b(""),j(!0)}catch(n){m(n.message||s("setup:provider.saveFailed"),"error")}finally{F(!1)}}},T=async t=>{t.preventDefault();try{const l=await H(x,h);l.token&&O(l.token),m(s("password.updated"),"success"),y(""),N("")}catch(l){m(l.message||s("password.failed"),"error")}},c="w-full bg-[var(--input-bg)] border border-[var(--border)] rounded-md px-3 py-2 text-sm text-foreground placeholder-[var(--muted)] focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60 focus:border-[#0066FF]/60 transition-colors duration-200";return e.jsxs("div",{className:"p-6 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"mb-5",children:[e.jsx("h1",{className:"text-lg font-semibold text-foreground",children:s("title")}),e.jsx("p",{className:"text-sm text-muted mt-0.5",children:s("subtitle")})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-[var(--card)] border border-[var(--border)] rounded-xl p-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-medium text-foreground",children:s("proxy.title")}),e.jsx("p",{className:"text-sm text-muted mt-1",children:s("proxy.desc")})]}),e.jsx("div",{className:"mt-3 bg-red-500/10 border border-red-500/20 text-red-400 text-sm rounded-lg px-4 py-3",children:s("proxy.status")})]}),A&&(()=>{var I;const t=p.find(r=>r.id===o),l=[...new Set(p.map(r=>r.group))],n=(t==null?void 0:t.models)||[],C=["ollama","vllm","sglang"].includes(o),B=o&&(C||v.trim()||$);return e.jsxs("div",{className:"bg-[var(--card)] border border-[var(--border)] rounded-xl p-4",children:[e.jsx("h2",{className:"text-sm font-medium text-foreground mb-1",children:s("setup:provider.title")}),e.jsx("p",{className:"text-sm text-muted mb-3",children:s("setup:provider.desc")}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:s("setup:provider.label")}),e.jsxs("select",{value:o,onChange:r=>{w(r.target.value),g(""),b(""),j(!1)},className:c,children:[e.jsx("option",{value:"",children:s("setup:provider.placeholder")}),l.map(r=>e.jsx("optgroup",{label:s(`instance:configForm.providerGroup.${r}`,{defaultValue:r}),children:p.filter(i=>i.group===r).map(i=>e.jsx("option",{value:i.id,children:s(`instance:configForm.providerLabel.${i.id}`,{defaultValue:i.label})},i.id))},r))]})]}),o&&!C&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:s("setup:provider.apiKey")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:f?"text":"password",value:v,onChange:r=>b(r.target.value),placeholder:s($?"setup:provider.apiKeyConfigured":"setup:provider.apiKeyPlaceholder"),className:`${c} pr-9 font-mono`}),e.jsx("button",{type:"button",onClick:()=>_(!f),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted hover:text-foreground transition-colors",children:f?e.jsx(K,{className:"w-3.5 h-3.5"}):e.jsx(E,{className:"w-3.5 h-3.5"})})]})]}),t&&n.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:s("setup:provider.defaultModel")}),e.jsx("select",{value:S||((I=n[0])==null?void 0:I.id)||"",onChange:r=>g(r.target.value),className:c,children:n.map(r=>e.jsxs("option",{value:r.id,children:[r.name," (",Math.round(r.contextWindow/1e3),"K)"]},r.id))})]}),e.jsx("button",{onClick:D,disabled:!B||P,className:"px-4 py-2 bg-[#0066FF] text-white rounded-md text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200",children:s(P?"setup:provider.saving":"setup:provider.save")})]})]})})(),e.jsxs("div",{className:"bg-[var(--card)] border border-[var(--border)] rounded-xl p-4",children:[e.jsx("h2",{className:"text-sm font-medium text-foreground mb-3",children:s("password.title")}),e.jsxs("form",{onSubmit:T,className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm text-muted mb-1.5",children:s("password.current")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:u?"text":"password",value:x,onChange:t=>y(t.target.value),placeholder:s("password.currentPlaceholder"),className:`${c} pr-9`}),e.jsx("button",{type:"button",onClick:()=>M(!u),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted hover:text-foreground transition-colors",children:u?e.jsx(K,{className:"w-3.5 h-3.5"}):e.jsx(E,{className:"w-3.5 h-3.5"})})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm text-muted mb-1.5",children:s("password.new")}),e.jsx("input",{type:u?"text":"password",value:h,onChange:t=>N(t.target.value),placeholder:s("password.newPlaceholder"),className:c})]}),e.jsx("button",{type:"submit",disabled:!x||h.length<8,className:"px-4 py-2 bg-[#0066FF] text-white rounded-md text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200",children:s("password.submit")})]})]}),a&&e.jsxs("div",{className:"bg-[var(--card)] border border-[var(--border)] rounded-xl p-4",children:[e.jsx("h2",{className:"text-sm font-medium text-foreground mb-3",children:s("system.title")}),e.jsxs("div",{className:"space-y-3",children:[[{label:s("system.cpuUsage"),value:`${a.cpu_percent}%`,percent:a.cpu_percent,warn:a.cpu_percent>90,color:"bg-[#0066FF]"},{label:s("system.memory"),value:`${a.memory.used_mb}MB / ${a.memory.total_mb}MB (${a.memory.percent}%)`,percent:a.memory.percent,warn:!1,color:"bg-[#00D4AA]"},{label:s("system.disk"),value:`${a.disk.used_gb}GB / ${a.disk.total_gb}GB (${a.disk.percent}%)`,percent:a.disk.percent,warn:a.disk.percent>90,color:"bg-[#0066FF]"}].map(t=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex justify-between text-sm mb-1.5",children:[e.jsx("span",{className:"text-muted",children:t.label}),e.jsx("span",{className:`font-medium font-mono text-[13px] ${t.warn?"text-red-400":"text-foreground"}`,children:t.value})]}),e.jsx("div",{className:"w-full bg-[var(--input-bg)] rounded-full h-1.5",children:e.jsx("div",{className:`h-1.5 rounded-full transition-all duration-500 ${t.warn?"bg-red-500":t.color}`,style:{width:`${t.percent}%`}})})]},t.label)),a.temperature&&e.jsxs("div",{className:"flex justify-between text-sm pt-2 border-t border-[var(--border)]",children:[e.jsx("span",{className:"text-muted",children:s("system.cpuTemp")}),e.jsxs("span",{className:"font-medium font-mono text-[13px] text-foreground",children:[a.temperature,"°C"]})]})]})]}),e.jsxs("div",{className:"bg-[var(--card)] border border-[var(--border)] rounded-xl p-4",children:[e.jsx("h2",{className:"text-sm font-medium text-foreground mb-2",children:s("about.title")}),e.jsx("div",{className:"text-sm text-muted space-y-1",children:e.jsxs("p",{children:["JishuShell ","0.4.2"]})})]})]})]})}export{z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as Z,d as pe,j as e,T as be,e as ee,i as N,f as he,r as ge,u as fe}from"./index-DfRnVUQR.js";import{r as c}from"./vendor-react-DONn7uBV.js";import{P as T}from"./providers-lBSOjUWy.js";import{u as te}from"./vendor-i18n-Bvxxh8Di.js";const F=[{id:"check",label:"环境检测"},{id:"node",label:"Node.js"},{id:"docker",label:"Docker"},{id:"nomad",label:"Nomad"},{id:"openclaw",label:"OpenClaw"},{id:"provider",label:"模型配置"},{id:"done",label:"完成"}];function ve({ok:l}){return l?e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-emerald-500 shadow-[0_0_6px_rgba(16,185,129,0.7)]"}):e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-[var(--border)]"})}function D({dep:l,label:s,required:t,extra:S}){const{t:i}=te("setup"),f=l.needsUpgrade;return e.jsxs("div",{className:"flex items-center justify-between py-2.5 border-b border-[var(--border)] last:border-0",children:[e.jsxs("div",{className:"flex items-center gap-2.5",children:[f?e.jsx("span",{className:"inline-block w-2 h-2 rounded-full bg-amber-400 shadow-[0_0_6px_rgba(251,191,36,0.6)]"}):e.jsx(ve,{ok:l.installed}),e.jsx("span",{className:"text-sm text-foreground",children:s||l.name}),f&&e.jsx("span",{className:"text-xs text-amber-400",children:i("versionTooOld")}),t&&!l.installed&&!f&&e.jsx("span",{className:"text-xs text-red-400",children:i("required")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[S,e.jsx("span",{className:"text-xs text-muted font-mono",children:l.installed?l.version||"installed":"not installed"})]})]})}function y(){return e.jsx("span",{className:"w-3.5 h-3.5 border-2 border-white/30 border-t-white rounded-full animate-spin"})}function se(l){return/失败|error|denied|forbidden|unauthorized/i.test(l)?"error":/完成|已就绪|已启动|已存在|成功|built|installed/i.test(l)?"success":/正在|等待|下载|安装|构建|启动|升级|progress|exporting|transferring/i.test(l)?"progress":"info"}function je(l){switch(l){case"progress":return{dot:"bg-sky-400 shadow-[0_0_8px_rgba(56,189,248,0.55)]",text:"text-sky-100"};case"success":return{dot:"bg-emerald-400 shadow-[0_0_8px_rgba(52,211,153,0.55)]",text:"text-emerald-100"};case"error":return{dot:"bg-red-400 shadow-[0_0_8px_rgba(248,113,113,0.55)]",text:"text-red-200"};default:return{dot:"bg-slate-500 shadow-[0_0_8px_rgba(148,163,184,0.35)]",text:"text-slate-200/90"}}}function Fe({onDone:l}){var J,Q,X,Y;const{t:s}=te(["setup","common","instance"]),[t,S]=c.useState(null),[i,f]=c.useState("check"),[u,k]=c.useState(null),[R,M]=c.useState([]),[_,v]=c.useState(""),[O,B]=c.useState(!1),[g,re]=c.useState(""),[E,ne]=c.useState(""),[P,ae]=c.useState(!1),[$,A]=c.useState(""),[q,z]=c.useState(!1),K=c.useRef(new Set),W=c.useCallback((n,r)=>{if(K.current.has(n))return;K.current.add(n);const a=r==="openclaw-docker"?s("setup:dockerImageBuild"):r==="docker"?s("setup:dockerInstall"):r==="openclaw"?s("setup:openclawInstall"):r;k(r),p(s("setup:resumeTask",{label:a}),"progress"),U(n,a).then(()=>{x(!0)}).catch(o=>{v(o.message||s("setup:taskFailed"))}).finally(()=>{k(null)})},[]),x=c.useCallback((n=!1)=>{Z().then(r=>{var a;if(S(r),(a=r.runningTasks)!=null&&a.length)for(const o of r.runningTasks)W(o.id,o.name);if(!n&&r.ready){f("provider");return}}).catch(()=>{})},[l,W]);c.useEffect(()=>{x()},[x]),c.useEffect(()=>{var r,a;if(i!=="nomad"||!((r=t==null?void 0:t.nomad)!=null&&r.installed)||(a=t==null?void 0:t.nomad)!=null&&a.running)return;const n=setInterval(()=>{x(!0)},3e3);return()=>clearInterval(n)},[i,(J=t==null?void 0:t.nomad)==null?void 0:J.installed,(Q=t==null?void 0:t.nomad)==null?void 0:Q.running,x]);const p=(n,r=se(n))=>M(a=>[...a,{message:n,tone:r}].slice(-200)),de=(n,r)=>r.type==="progress"&&typeof r.progress=="number"?`${n}: ${r.message} [${r.progress}%]`:r.type==="done"?`${n}: ${r.message}`:r.type==="error"?s("setup:taskErrorPrefix",{label:n,message:r.message}):r.message,U=async(n,r)=>{let a=0,o=0,d=s("setup:taskCompleted",{label:r});const b=Date.now()+30*60*1e3;for(;Date.now()<b;){try{const m=await pe(n);o=0;const h=m.events.slice(a);a=m.events.length;for(const j of h){const xe=j.type==="done"?"success":j.type==="error"?"error":j.type==="progress"?"progress":se(j.message);p(de(r,j),xe),j.message&&(d=j.message)}if(m.status==="done")return d;if(m.status==="error")throw new Error(d)}catch(m){if(o+=1,o>=5)throw new Error((m==null?void 0:m.message)||s("setup:taskStatusFailed",{label:r}))}const L=Math.min(1e3+a*200,3e3);await new Promise(m=>setTimeout(m,L))}throw new Error(s("setup:taskTimeout",{label:r}))},w=async(n,r,a)=>{k(n),v(""),p(s("setup:installing",{label:r}),"progress");try{const o=await a();let d=o.message||s("setup:taskStarted",{label:r});return o!=null&&o.taskId?d=await U(o.taskId,r):p(`${r}: ${d}`,"success"),x(!0),!0}catch(o){const d=o.message||s("setup:defaultInstallFailed");return p(s("setup:installFailed",{label:r,error:d}),"error"),v(d),!1}finally{k(null)}},V=async()=>{await w("node","Node.js",()=>fe())},oe=async()=>{await w("docker","Docker",()=>N("docker"))},[H,G]=c.useState(!1),le=async()=>{if(await w("openclaw","OpenClaw",()=>N("openclaw"))){const r=await w("openclaw-docker",s("setup:dockerImageBuild"),()=>N("openclaw-docker"));G(r),x(!0)}},ie=async()=>{const n=await w("openclaw-docker",s("setup:dockerImageBuild"),()=>N("openclaw-docker"));G(n),x(!0)},ce=async()=>{var r;if(await w("nomad","Nomad",()=>N("nomad"))){p(s("setup:configuringNomadSystemd"),"progress"),k("nomad-systemd");try{await N("nomad-systemd"),p(s("setup:nomadServiceStarted"),"success")}catch{try{await he("nomad"),p(s("setup:nomadStarted"),"success")}catch(a){p(s("setup:nomadStartFailed",{error:a.message}),"error"),v(a.message)}}k(null),p(s("setup:waitingNomad"),"progress");for(let a=0;a<10;a++){await new Promise(d=>setTimeout(d,2e3));const o=await Z();if((r=o.nomad)!=null&&r.running){S(o),p(s("setup:nomadReady"),"success");return}}x(!0)}},I=!!((X=t==null?void 0:t.node)!=null&&X.installed)&&!((Y=t==null?void 0:t.node)!=null&&Y.needsUpgrade),C=async()=>{var o,d,b,L,m;const n=F.findIndex(h=>h.id===i);if(n>=F.length-1)return;let r=n+1;for(;r<F.length-1;){const h=F[r].id;if(h==="node"&&I){r++;continue}if(h==="docker"&&((o=t==null?void 0:t.docker)!=null&&o.installed)&&((d=t==null?void 0:t.docker)!=null&&d.running)){r++;continue}if(h==="nomad"&&((b=t==null?void 0:t.nomad)!=null&&b.installed)&&((L=t==null?void 0:t.nomad)!=null&&L.running)){r++;continue}if(h==="openclaw"&&((m=t==null?void 0:t.openclaw)!=null&&m.installed)&&(t!=null&&t.dockerImageReady)){r++;continue}break}const a=F[r].id;if(v(""),M([]),a==="done"){f("done"),B(!0);try{await ge({installNomad:!1,installOpenclaw:!1,buildDockerImage:!1})}catch(h){v(h.message||s("setup:configWriteFailed"))}finally{B(!1)}}else f(a)},ue=n=>{if(!t)return!1;switch(n){case"check":return I;case"node":return I;case"docker":return t.docker.installed&&t.docker.running;case"nomad":return t.nomad.installed&&t.nomad.running;case"openclaw":return t.openclaw.installed&&(H||t.dockerImageReady);case"provider":return!0;case"done":return!0;default:return!1}},me=async()=>{var r;if(!g)return!1;const n=T.find(a=>a.id===g);if(!n)return!1;z(!0);try{return await ee({providerId:n.id,baseUrl:n.baseUrl,api:n.api,authHeader:n.authHeader||!1,models:n.models,selectedModelId:$||((r=n.models[0])==null?void 0:r.id)||"",apiKey:E||""}),!0}catch(a){return v(a.message||s("setup:saveFailed")),!1}finally{z(!1)}};return t?e.jsxs("div",{className:"min-h-screen flex items-center justify-center p-4 bg-background relative overflow-hidden",children:[e.jsx("div",{className:"grid-bg absolute inset-0 pointer-events-none"}),e.jsx("div",{className:"absolute top-1/3 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[600px] h-[400px] rounded-full bg-[#0066FF]/[0.06] blur-[100px] pointer-events-none"}),e.jsxs("div",{className:"w-full max-w-lg relative z-10",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx(be,{className:"w-48 h-48 mx-auto mb-4 object-contain"}),e.jsx("p",{className:"text-sm text-muted mt-1",children:s("setup:title")})]}),e.jsxs("div",{className:"bg-card border border-[var(--border)] rounded-xl p-6 backdrop-blur-sm",children:[i==="check"&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:check.title")}),e.jsx("p",{className:"text-sm text-muted mb-4",children:s("setup:check.desc")}),e.jsx("p",{className:"text-xs text-muted mb-1.5 font-medium",children:s("setup:check.requiredComponents")}),e.jsxs("div",{className:"bg-card rounded-md border border-[var(--border)] px-4",children:[e.jsx(D,{dep:t.node,label:"Node.js",required:!0,extra:t.node.needsUpgrade?e.jsx("button",{onClick:V,disabled:!!u,className:"text-xs bg-amber-500/20 text-amber-400 border border-amber-500/30 rounded px-2 py-0.5 hover:bg-amber-500/30 disabled:opacity-40 transition-colors duration-200",children:s(u==="node"?"setup:check.upgrading":"setup:check.upgrade")}):void 0}),e.jsx(D,{dep:t.docker,label:"Docker",required:!0}),e.jsx(D,{dep:t.nomad,label:"Nomad",required:!0}),e.jsx(D,{dep:t.openclaw,label:"OpenClaw",required:!0})]})]}),i==="node"&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:node.title")}),e.jsx("p",{className:"text-sm text-muted mb-4",children:s("setup:node.desc")}),I?e.jsx("div",{className:"bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm rounded-md px-3 py-2.5",children:s("setup:node.ready",{version:t.node.version})}):t.hasSudo?e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5",children:s("setup:node.currentVersion",{version:t.node.version})}),e.jsx("button",{onClick:V,disabled:!!u,className:"bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200",children:u?e.jsxs("span",{className:"inline-flex items-center gap-2",children:[e.jsx(y,{}),s("setup:node.upgrading")]}):s("setup:node.upgradeBtn")}),e.jsx("p",{className:"text-xs text-muted",children:s("setup:node.sudoRequired")})]}):e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5",children:s("setup:node.noSudo",{version:t.node.version})}),e.jsxs("div",{className:"bg-card border border-[var(--border)] rounded-md p-3",children:[e.jsx("p",{className:"text-xs text-muted mb-1.5",children:s("setup:node.contactAdmin")}),e.jsx("code",{className:"text-xs text-foreground font-mono block whitespace-pre-wrap",children:"curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs"})]}),e.jsx("button",{onClick:()=>x(!0),className:"text-xs text-muted hover:text-foreground underline transition-colors duration-200",children:s("setup:node.refreshAfterInstall")})]})]}),i==="docker"&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:docker.title")}),e.jsx("p",{className:"text-sm text-muted mb-4",children:s("setup:docker.desc")}),t.docker.installed&&t.docker.running?e.jsx("div",{className:"bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm rounded-md px-3 py-2.5",children:s("setup:docker.running",{version:t.docker.version})}):t.docker.installed&&!t.docker.running?e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5",children:s("setup:docker.notRunning")}),e.jsx("div",{className:"bg-card border border-[var(--border)] rounded-md p-3",children:e.jsx("code",{className:"text-xs text-foreground font-mono block",children:"sudo systemctl start docker"})}),e.jsx("button",{onClick:()=>x(!0),className:"text-xs text-muted hover:text-foreground underline transition-colors duration-200",children:s("setup:docker.refreshAfterStart")})]}):t.hasSudo?e.jsxs("div",{className:"space-y-3",children:[e.jsx("button",{onClick:oe,disabled:!!u,className:"bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200",children:u?e.jsxs("span",{className:"inline-flex items-center gap-2",children:[e.jsx(y,{}),s("setup:docker.installing")]}):s("setup:docker.installBtn")}),e.jsx("p",{className:"text-xs text-muted",children:s("setup:docker.sudoRequired")})]}):e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5",children:s("setup:docker.noSudo")}),e.jsxs("div",{className:"bg-card border border-[var(--border)] rounded-md p-3",children:[e.jsx("p",{className:"text-xs text-muted mb-1.5",children:s("setup:docker.contactAdmin")}),e.jsx("code",{className:"text-xs text-foreground font-mono block",children:"curl -fsSL https://get.docker.com | sh"})]}),e.jsx("button",{onClick:()=>x(!0),className:"text-xs text-muted hover:text-foreground underline transition-colors duration-200",children:s("setup:docker.refreshAfterInstall")})]})]}),i==="nomad"&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:nomad.title")}),e.jsx("p",{className:"text-sm text-muted mb-4",children:s("setup:nomad.desc")}),t.nomad.installed&&t.nomad.running?e.jsx("div",{className:"bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm rounded-md px-3 py-2.5",children:s("setup:nomad.running",{version:t.nomad.version})}):t.nomad.installed?e.jsx("div",{className:"space-y-3",children:e.jsxs("div",{className:"flex items-center gap-2 bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5",children:[e.jsx(y,{}),e.jsx("span",{children:s("setup:nomad.starting")})]})}):e.jsx("button",{onClick:ce,disabled:!!u,className:"bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200",children:u?e.jsxs("span",{className:"inline-flex items-center gap-2",children:[e.jsx(y,{}),s("setup:nomad.installing")]}):s("setup:nomad.installBtn")})]}),i==="openclaw"&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:openclaw.title")}),e.jsx("p",{className:"text-sm text-muted mb-4",children:s("setup:openclaw.desc")}),t.openclaw.installed?e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm rounded-md px-3 py-2.5",children:s("setup:openclaw.installed",{version:t.openclaw.version})}),u==="openclaw-docker"?e.jsxs("div",{className:"flex items-center gap-2 bg-amber-500/10 border border-amber-500/20 text-amber-400 text-sm rounded-md px-3 py-2.5",children:[e.jsx(y,{}),e.jsx("span",{children:s("setup:openclaw.buildingImage")})]}):!H&&!t.dockerImageReady?e.jsx("button",{onClick:ie,disabled:!!u,className:"bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200",children:s("setup:openclaw.buildImageBtn")}):null]}):e.jsxs("div",{className:"space-y-3",children:[e.jsx("button",{onClick:le,disabled:!!u,className:"bg-[#0066FF] text-white rounded-md px-4 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 transition-all duration-200",children:u?e.jsxs("span",{className:"inline-flex items-center gap-2",children:[e.jsx(y,{}),s("setup:openclaw.installing")]}):s("setup:openclaw.installBtn")}),e.jsx("p",{className:"text-xs text-muted",children:s("setup:openclaw.npmHint")})]})]}),i==="done"&&e.jsx("div",{className:"text-center py-4",children:O?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-12 h-12 mx-auto mb-3 flex items-center justify-center",children:e.jsx("div",{className:"w-8 h-8 border-2 border-white/10 border-t-[#0066FF] rounded-full animate-spin"})}),e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:done.finalizing")}),e.jsx("p",{className:"text-sm text-muted",children:s("setup:done.finalizingDesc")})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"w-12 h-12 mx-auto mb-3 rounded-full bg-emerald-500/10 border border-emerald-500/20 flex items-center justify-center",children:e.jsx("svg",{className:"w-6 h-6 text-emerald-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})}),e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:done.complete")}),e.jsx("p",{className:"text-sm text-muted",children:s("setup:done.completeDesc")})]})}),i==="provider"&&(()=>{var o;const n=T.find(d=>d.id===g),r=[...new Set(T.map(d=>d.group))],a=(n==null?void 0:n.models)||[];return e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-medium text-foreground mb-1",children:s("setup:provider.title")}),e.jsx("p",{className:"text-sm text-muted mb-4",children:s("setup:provider.desc")}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:s("setup:provider.label")}),e.jsxs("select",{value:g,onChange:d=>{re(d.target.value),A("")},className:"w-full bg-background border border-[var(--border)] rounded-md px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60",children:[e.jsx("option",{value:"",children:s("setup:provider.placeholder")}),r.map(d=>e.jsx("optgroup",{label:s(`instance:configForm.providerGroup.${d}`,{defaultValue:d}),children:T.filter(b=>b.group===d).map(b=>e.jsx("option",{value:b.id,children:s(`instance:configForm.providerLabel.${b.id}`,{defaultValue:b.label})},b.id))},d))]})]}),g&&!["ollama","vllm","sglang"].includes(g)&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:s("setup:provider.apiKey")}),e.jsxs("div",{className:"relative",children:[e.jsx("input",{type:P?"text":"password",value:E,onChange:d=>ne(d.target.value),placeholder:s("setup:provider.apiKeyPlaceholder"),className:"w-full bg-[var(--input-bg)] border border-[var(--border)] rounded-md px-3 py-2 pr-9 text-sm text-foreground font-mono placeholder-[var(--muted)] focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60"}),e.jsx("button",{type:"button",onClick:()=>ae(!P),className:"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted hover:text-foreground",children:e.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:P?e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.878 9.878L3 3m6.878 6.878L21 21"}):e.jsxs(e.Fragment,{children:[e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})]})})})]})]}),n&&a.length>0&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-muted mb-1.5",children:s("setup:provider.defaultModel")}),e.jsx("select",{value:$||((o=a[0])==null?void 0:o.id)||"",onChange:d=>A(d.target.value),className:"w-full bg-background border border-[var(--border)] rounded-md px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-1 focus:ring-[#0066FF]/60",children:a.map(d=>e.jsxs("option",{value:d.id,children:[d.name," (",Math.round(d.contextWindow/1e3),"K)"]},d.id))})]})]})]})})(),R.length>0&&i!=="done"&&e.jsxs("div",{className:"mt-4 rounded-lg border border-[var(--border)] bg-[linear-gradient(180deg,rgba(2,6,23,0.96),rgba(15,23,42,0.92))] p-3 shadow-[inset_0_1px_0_rgba(255,255,255,0.04)] max-h-40 overflow-y-auto",children:[R.map((n,r)=>{const a=je(n.tone);return e.jsxs("div",{className:"flex items-start gap-2 py-0.5",children:[e.jsx("span",{className:`mt-1.5 h-1.5 w-1.5 shrink-0 rounded-full ${a.dot}`}),e.jsx("div",{className:`min-w-0 whitespace-pre-wrap break-words text-xs font-mono leading-5 ${a.text}`,children:n.message})]},r)}),e.jsx("div",{className:"pointer-events-none sticky bottom-0 h-4 bg-gradient-to-t from-slate-950/85 to-transparent"})]}),_&&e.jsx("div",{className:"mt-4 bg-red-500/10 border border-red-500/20 text-red-400 text-sm rounded-md px-3 py-2.5",children:_})]}),e.jsx("div",{className:"flex justify-between mt-6",children:i==="provider"?(()=>{const n=["ollama","vllm","sglang"].includes(g),r=g&&(n||E.trim());return e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:async()=>{await ee({skipped:!0}).catch(()=>{}),C()},className:"bg-[var(--card)] border border-[var(--border)] text-foreground rounded-md px-6 py-2 text-sm font-medium hover:bg-[var(--card-hover)] transition-all duration-200",children:s("setup:provider.skip")}),e.jsx("button",{onClick:async()=>{await me()&&C()},disabled:!r||q,className:"bg-[#0066FF] text-white rounded-md px-6 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)]",children:s(q?"setup:provider.saving":"setup:provider.saveAndContinue")})]})})():i!=="done"?e.jsxs(e.Fragment,{children:[e.jsx("div",{}),e.jsx("button",{onClick:C,disabled:!ue(i)||!!u,className:"bg-[#0066FF] text-white rounded-md px-6 py-2 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)] hover:shadow-[0_0_28px_rgba(0,102,255,0.45)]",children:s("setup:nav.next")})]}):e.jsx("button",{onClick:_?()=>C():l,disabled:O,className:"w-full bg-[#0066FF] text-white rounded-md py-2.5 text-sm font-medium hover:bg-[#0066FF]/90 disabled:opacity-40 disabled:cursor-not-allowed transition-all duration-200 shadow-[0_0_20px_rgba(0,102,255,0.3)]",children:s(_?"setup:nav.retry":"setup:nav.enterPanel")})})]})]}):e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background",children:e.jsx("div",{className:"w-5 h-5 border-2 border-[var(--border)] border-t-foreground rounded-full animate-spin"})})}export{Fe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Geist,Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:Geist Mono,JetBrains Mono,SF Mono,Fira Code,ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: #F8FAFC;--foreground: #0F172A;--muted: #64748B;--card: rgba(0,0,0,.03);--card-hover: rgba(0,0,0,.055);--border: rgba(0,0,0,.09);--border-hover: rgba(0, 102, 255, .35);--primary: #0066FF;--primary-hover: #0052CC;--accent: #00D4AA;--sidebar-bg: #F1F5F9;--input-bg: rgba(0,0,0,.04)}@media (prefers-color-scheme: dark){:root{--background: #0A0A0F;--foreground: #FAFAFA;--muted: rgba(255,255,255,.5);--card: rgba(255,255,255,.04);--card-hover: rgba(255,255,255,.07);--border: rgba(255,255,255,.08);--border-hover: rgba(0, 102, 255, .5);--primary: #0066FF;--primary-hover: #3385FF;--accent: #00D4AA;--sidebar-bg: rgba(255,255,255,.025);--input-bg: rgba(255,255,255,.06)}}html{font-family:Geist,Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-color:var(--background);color:var(--foreground)}.font-mono{font-family:Geist Mono,JetBrains Mono,SF Mono,Fira Code,ui-monospace,monospace}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-right-0\.5{right:-.125rem}.-top-0\.5{top:-.125rem}.bottom-0{bottom:0}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.left-\[18px\]{left:18px}.left-\[3px\]{left:3px}.right-0{right:0}.right-2\.5{right:.625rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-1\/3{top:33.333333%}.top-1\/4{top:25%}.top-3{top:.75rem}.top-4{top:1rem}.top-\[3px\]{top:3px}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-8{height:2rem}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[600px\]{height:600px}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-\[480px\]{max-height:480px}.max-h-\[70vh\]{max-height:70vh}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[200px\]{min-width:200px}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-\[var\(--border\)\]>:not([hidden])~:not([hidden]){border-color:var(--border)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[22px\]{border-radius:22px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[\#0066FF\]{--tw-border-opacity: 1;border-color:rgb(0 102 255 / var(--tw-border-opacity, 1))}.border-\[\#0066FF\]\/20{border-color:#06f3}.border-\[\#0066FF\]\/30{border-color:#0066ff4d}.border-\[\#07C160\]\/30{border-color:#07c1604d}.border-\[\#3370FF\]\/20{border-color:#3370ff33}.border-\[\#3370FF\]\/30{border-color:#3370ff4d}.border-\[\#3370FF\]\/40{border-color:#3370ff66}.border-\[var\(--border\)\]{border-color:var(--border)}.border-\[var\(--primary\)\]{border-color:var(--primary)}.border-amber-500\/20{border-color:#f59e0b33}.border-amber-500\/30{border-color:#f59e0b4d}.border-emerald-500\/20{border-color:#10b98133}.border-emerald-500\/30{border-color:#10b9814d}.border-red-500\/20{border-color:#ef444433}.border-transparent{border-color:transparent}.border-white\/10{border-color:#ffffff1a}.border-white\/30{border-color:#ffffff4d}.border-l-\[\#0066FF\]{--tw-border-opacity: 1;border-left-color:rgb(0 102 255 / var(--tw-border-opacity, 1))}.border-l-\[\#00D4AA\]{--tw-border-opacity: 1;border-left-color:rgb(0 212 170 / var(--tw-border-opacity, 1))}.border-l-red-400{--tw-border-opacity: 1;border-left-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.border-t-\[\#0066FF\]{--tw-border-opacity: 1;border-top-color:rgb(0 102 255 / var(--tw-border-opacity, 1))}.border-t-\[\#07C160\]{--tw-border-opacity: 1;border-top-color:rgb(7 193 96 / var(--tw-border-opacity, 1))}.border-t-\[\#3370FF\]{--tw-border-opacity: 1;border-top-color:rgb(51 112 255 / var(--tw-border-opacity, 1))}.border-t-foreground{border-top-color:var(--foreground)}.border-t-muted{border-top-color:var(--muted)}.border-t-white{--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.bg-\[\#0066FF\]{--tw-bg-opacity: 1;background-color:rgb(0 102 255 / var(--tw-bg-opacity, 1))}.bg-\[\#0066FF\]\/10{background-color:#0066ff1a}.bg-\[\#0066FF\]\/5{background-color:#0066ff0d}.bg-\[\#0066FF\]\/\[0\.06\]{background-color:#0066ff0f}.bg-\[\#0066FF\]\/\[0\.07\]{background-color:#0066ff12}.bg-\[\#00D4AA\]{--tw-bg-opacity: 1;background-color:rgb(0 212 170 / var(--tw-bg-opacity, 1))}.bg-\[\#07C160\]{--tw-bg-opacity: 1;background-color:rgb(7 193 96 / var(--tw-bg-opacity, 1))}.bg-\[\#07C160\]\/5{background-color:#07c1600d}.bg-\[\#3370FF\]{--tw-bg-opacity: 1;background-color:rgb(51 112 255 / var(--tw-bg-opacity, 1))}.bg-\[\#3370FF\]\/10{background-color:#3370ff1a}.bg-\[\#3370FF\]\/5{background-color:#3370ff0d}.bg-\[var\(--bg\)\]{background-color:var(--bg)}.bg-\[var\(--border\)\]{background-color:var(--border)}.bg-\[var\(--card\)\]{background-color:var(--card)}.bg-\[var\(--card-hover\)\]{background-color:var(--card-hover)}.bg-\[var\(--input-bg\)\]{background-color:var(--input-bg)}.bg-\[var\(--muted\)\]{background-color:var(--muted)}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/15{background-color:#f59e0b26}.bg-amber-500\/20{background-color:#f59e0b33}.bg-background{background-color:var(--background)}.bg-black\/60{background-color:#0009}.bg-card{background-color:var(--card)}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/15{background-color:#10b98126}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/15{background-color:#ef444426}.bg-red-500\/5{background-color:#ef44440d}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-950\/20{background-color:#450a0a33}.bg-sky-400{--tw-bg-opacity: 1;background-color:rgb(56 189 248 / var(--tw-bg-opacity, 1))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-\[linear-gradient\(180deg\,rgba\(2\,6\,23\,0\.96\)\,rgba\(15\,23\,42\,0\.92\)\)\]{background-image:linear-gradient(180deg,#020617f5,#0f172aeb)}.bg-\[radial-gradient\(circle\,rgba\(0\,102\,255\,0\.08\)_0\%\,transparent_70\%\)\]{background-image:radial-gradient(circle,rgba(0,102,255,.08) 0%,transparent 70%)}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-slate-950\/85{--tw-gradient-from: rgb(2 6 23 / .85) var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-0\.5{padding-bottom:.125rem}.pb-4{padding-bottom:1rem}.pl-9{padding-left:2.25rem}.pl-\[6px\]{padding-left:6px}.pr-10{padding-right:2.5rem}.pr-3{padding-right:.75rem}.pr-9{padding-right:2.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:Geist Mono,JetBrains Mono,SF Mono,Fira Code,ui-monospace,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-\[\#0066FF\]{--tw-text-opacity: 1;color:rgb(0 102 255 / var(--tw-text-opacity, 1))}.text-\[\#0066FF\]\/80{color:#06fc}.text-\[\#0066FF\]\/90{color:#0066ffe6}.text-\[\#00D4AA\]{--tw-text-opacity: 1;color:rgb(0 212 170 / var(--tw-text-opacity, 1))}.text-\[\#07C160\]{--tw-text-opacity: 1;color:rgb(7 193 96 / var(--tw-text-opacity, 1))}.text-\[\#3370FF\]{--tw-text-opacity: 1;color:rgb(51 112 255 / var(--tw-text-opacity, 1))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-current{color:currentColor}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-foreground{color:var(--foreground)}.text-muted{color:var(--muted)}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-sky-100{--tw-text-opacity: 1;color:rgb(224 242 254 / var(--tw-text-opacity, 1))}.text-slate-200\/90{color:#e2e8f0e6}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.placeholder-\[var\(--muted\)\]::-moz-placeholder{color:var(--muted)}.placeholder-\[var\(--muted\)\]::placeholder{color:var(--muted)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(0\,102\,255\,0\.3\)\]{--tw-shadow: 0 0 12px rgba(0,102,255,.3);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_20px_rgba\(0\,102\,255\,0\.3\)\]{--tw-shadow: 0 0 20px rgba(0,102,255,.3);--tw-shadow-colored: 0 0 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(16\,185\,129\,0\.6\)\]{--tw-shadow: 0 0 6px rgba(16,185,129,.6);--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(16\,185\,129\,0\.7\)\]{--tw-shadow: 0 0 6px rgba(16,185,129,.7);--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(239\,68\,68\,0\.6\)\]{--tw-shadow: 0 0 6px rgba(239,68,68,.6);--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(251\,191\,36\,0\.5\)\]{--tw-shadow: 0 0 6px rgba(251,191,36,.5);--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(251\,191\,36\,0\.6\)\]{--tw-shadow: 0 0 6px rgba(251,191,36,.6);--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(148\,163\,184\,0\.35\)\]{--tw-shadow: 0 0 8px rgba(148,163,184,.35);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(248\,113\,113\,0\.55\)\]{--tw-shadow: 0 0 8px rgba(248,113,113,.55);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(52\,211\,153\,0\.55\)\]{--tw-shadow: 0 0 8px rgba(52,211,153,.55);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(56\,189\,248\,0\.55\)\]{--tw-shadow: 0 0 8px rgba(56,189,248,.55);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_18px_48px_rgba\(15\,23\,42\,0\.06\)\]{--tw-shadow: 0 18px 48px rgba(15,23,42,.06);--tw-shadow-colored: 0 18px 48px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_1px_0_rgba\(255\,255\,255\,0\.04\)\]{--tw-shadow: inset 0 1px 0 rgba(255,255,255,.04);--tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[90px\]{--tw-blur: blur(90px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8080804d}.sidebar-scroll::-webkit-scrollbar{width:4px}.sidebar-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.grid-bg{background-image:linear-gradient(to right,var(--border) 1px,transparent 1px),linear-gradient(to bottom,var(--border) 1px,transparent 1px);background-size:40px 40px}.glow-blue{background:radial-gradient(circle,rgba(0,102,255,.08) 0%,transparent 70%)}.placeholder\:text-muted::-moz-placeholder{color:var(--muted)}.placeholder\:text-muted::placeholder{color:var(--muted)}.last\:border-0:last-child{border-width:0px}.hover\:border-\[var\(--border-hover\)\]:hover{border-color:var(--border-hover)}.hover\:bg-\[\#0066FF\]\/10:hover{background-color:#0066ff1a}.hover\:bg-\[\#0066FF\]\/15:hover{background-color:#0066ff26}.hover\:bg-\[\#0066FF\]\/20:hover{background-color:#06f3}.hover\:bg-\[\#0066FF\]\/90:hover{background-color:#0066ffe6}.hover\:bg-\[\#07C160\]\/10:hover{background-color:#07c1601a}.hover\:bg-\[\#07C160\]\/90:hover{background-color:#07c160e6}.hover\:bg-\[\#3370FF\]\/10:hover{background-color:#3370ff1a}.hover\:bg-\[\#3370FF\]\/20:hover{background-color:#3370ff33}.hover\:bg-\[\#3370FF\]\/90:hover{background-color:#3370ffe6}.hover\:bg-\[var\(--card\)\]:hover{background-color:var(--card)}.hover\:bg-\[var\(--card-hover\)\]:hover{background-color:var(--card-hover)}.hover\:bg-amber-400:hover{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.hover\:bg-amber-500\/30:hover{background-color:#f59e0b4d}.hover\:bg-emerald-500\/10:hover{background-color:#10b9811a}.hover\:bg-emerald-500\/20:hover{background-color:#10b98133}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-500\/15:hover{background-color:#ef444426}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-red-500\/90:hover{background-color:#ef4444e6}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:text-\[\#0066FF\]:hover{--tw-text-opacity: 1;color:rgb(0 102 255 / var(--tw-text-opacity, 1))}.hover\:text-\[\#0066FF\]\/80:hover{color:#06fc}.hover\:text-emerald-400:hover{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-red-300:hover{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-\[0_0_28px_rgba\(0\,102\,255\,0\.45\)\]:hover{--tw-shadow: 0 0 28px rgba(0,102,255,.45);--tw-shadow-colored: 0 0 28px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-\[\#0066FF\]\/60:focus{border-color:#06f9}.focus\:border-red-500\/60:focus{border-color:#ef444499}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-\[\#0066FF\]\/60:focus{--tw-ring-color: rgb(0 102 255 / .6)}.focus\:ring-red-500\/60:focus{--tw-ring-color: rgb(239 68 68 / .6)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (min-width: 640px){.sm\:inline{display:inline}.sm\:table-cell{display:table-cell}}@media (min-width: 768px){.md\:table-cell{display:table-cell}}@media (min-width: 1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:min-h-\[500px\]{min-height:500px}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Login-RkjzTNWg.js","assets/vendor-react-DONn7uBV.js","assets/vendor-i18n-Bvxxh8Di.js","assets/InitPassword-CkehIkJG.js","assets/Setup-RRTIERGG.js","assets/providers-lBSOjUWy.js","assets/Dashboard-CAOQDYDR.js","assets/usePolling-CqQ8hrNc.js","assets/InstanceDetail-CzW2S95J.js","assets/NewInstance-DdbErdjA.js","assets/Settings-BUD7zwv9.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
var ee=Object.defineProperty;var ne=(n,t,o)=>t in n?ee(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o;var R=(n,t,o)=>ne(n,typeof t!="symbol"?t+"":t,o);import{r as l,a as te,u as U,b as oe,L as j,R as ie,c as h,N as P,d as se,e as ae,B as re}from"./vendor-react-DONn7uBV.js";import{i as le,a as ce,u as T}from"./vendor-i18n-Bvxxh8Di.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))c(s);new MutationObserver(s=>{for(const a of s)if(a.type==="childList")for(const r of a.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&c(r)}).observe(document,{childList:!0,subtree:!0});function o(s){const a={};return s.integrity&&(a.integrity=s.integrity),s.referrerPolicy&&(a.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?a.credentials="include":s.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function c(s){if(s.ep)return;s.ep=!0;const a=o(s);fetch(s.href,a)}})();var W={exports:{}},L={};/**
|
|
3
|
+
* @license React
|
|
4
|
+
* react-jsx-runtime.production.min.js
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the MIT license found in the
|
|
9
|
+
* LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/var de=l,ue=Symbol.for("react.element"),ge=Symbol.for("react.fragment"),pe=Object.prototype.hasOwnProperty,me=de.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,fe={key:!0,ref:!0,__self:!0,__source:!0};function H(n,t,o){var c,s={},a=null,r=null;o!==void 0&&(a=""+o),t.key!==void 0&&(a=""+t.key),t.ref!==void 0&&(r=t.ref);for(c in t)pe.call(t,c)&&!fe.hasOwnProperty(c)&&(s[c]=t[c]);if(n&&n.defaultProps)for(c in t=n.defaultProps,t)s[c]===void 0&&(s[c]=t[c]);return{$$typeof:ue,type:n,key:a,ref:r,props:s,_owner:me.current}}L.Fragment=ge;L.jsx=H;L.jsxs=H;W.exports=L;var e=W.exports,O={},M=te;O.createRoot=M.createRoot,O.hydrateRoot=M.hydrateRoot;const he={"status.running":"运行中","status.starting":"启动中","status.failed":"失败","status.crashed":"已崩溃","status.stopped":"已停止","action.start":"启动","action.stop":"停止","action.restart":"重启","action.retry":"重试","action.save":"保存","action.cancel":"取消","action.delete":"删除","action.close":"关闭","action.confirm":"确认","action.refresh":"刷新","action.copyAll":"复制全部","action.startDone":"已启动","action.stopDone":"已停止","action.restartDone":"已重启","error.loadFailed":"加载失败","error.operationFailed":"操作失败","error.saveFailed":"保存失败","error.deleteFailed":"删除失败","error.connectionFailed":"无法连接服务器","error.checkBackend":"请检查 JishuShell 后端是否正在运行","nav.overview":"概览","nav.settings":"设置","nav.logout":"退出","nav.instances":"实例","nav.navigation":"导航","nav.newInstance":"新建实例","label.password":"密码","label.enabled":"启用","label.disabled":"禁用","nav.switchLanguage":"切换语言"},ke="概览",ve="系统状态和实例管理",xe={title:ke,subtitle:ve,"stats.runningInstances":"运行实例","stats.engineRunning":"引擎运行中","stats.engineStopped":"引擎未启动","stats.cpu":"CPU","stats.memory":"内存","stats.disk":"磁盘","instances.title":"实例","instances.new":"+ 新建","instances.restartEngine":"重启引擎","instances.restartEngineTitle":"重启 Nomad 引擎(会中断运行中的实例)","instances.restarting":"重启中...","instances.empty":"还没有实例","instances.emptyHint":"创建第一个 OpenClaw 实例开始使用","instances.loadError":"加载失败: {{error}}","table.name":"名称","table.status":"状态","table.uptime":"运行时间","table.memory":"内存","table.actions":"操作","update.found":"发现新版本:","update.upgradeNow":"立即升级","update.upgrading":"升级中…","update.confirm":`升级 JishuShell {{currentVersion}} → {{latestVersion}}?
|
|
11
|
+
面板将自动重启,页面需手动刷新。`,"update.started":"升级已启动,面板即将重启,请稍后刷新页面","update.failed":"升级失败","engine.restarted":"引擎已重启","engine.restartFailed":"引擎重启失败","engine.restartConfirm":"重启引擎将中断所有运行中的实例,确认继续?","openclawUpdate.found":"发现 OpenClaw 新版本:","openclawUpdate.noRebuild":"无需重建镜像","openclawUpdate.upgradeNow":"立即升级","openclawUpdate.upgrading":"升级中…","openclawUpdate.confirm":`升级 OpenClaw {{currentVersion}} → {{latestVersion}}?
|
|
12
|
+
运行中的实例将自动重启以使用新版本,无需重建 Docker 镜像。`,"openclawUpdate.started":"OpenClaw 升级完成,运行中的实例已重启","openclawUpdate.failed":"OpenClaw 升级失败"},we={"login.title":"登录管理面板","login.password":"密码","login.placeholder":"输入密码","login.submit":"登 录","login.loading":"登录中","login.failed":"登录失败","login.forgotPassword":"忘记密码?请在终端执行","init.title":"首次使用,请设置管理密码","init.password":"密码","init.passwordPlaceholder":"至少 8 位","init.confirm":"确认密码","init.confirmPlaceholder":"再次输入密码","init.mismatch":"两次密码不一致","init.submit":"完成设置","init.loading":"设置中","init.failed":"设置失败"},be="设置",ye="系统配置和安全",Fe={title:be,subtitle:ye,"proxy.title":"内置代理","proxy.desc":"内置代理始终运行,由系统自动管理。用户只需在设置页面或实例页填写真实上游 API Key,保存后由代理转发。","proxy.status":"请勿在 OpenClaw 配置页面自行修改 API Key","password.title":"修改密码","password.current":"当前密码","password.currentPlaceholder":"当前密码","password.new":"新密码","password.newPlaceholder":"至少 8 位","password.submit":"更新密码","password.updated":"密码已更新","password.failed":"修改失败","system.title":"系统信息","system.cpuUsage":"CPU 使用率","system.memory":"内存","system.disk":"磁盘","system.cpuTemp":"CPU 温度","about.title":"关于"},Se="新建实例",Ce="创建新的 OpenClaw 实例",Pe="新实例会自动分配独立的 OpenClaw 数据目录和端口。选择复制只会复制配置,不共用运行目录。",Ie="创建实例",je="创建中",Le="创建失败",Ne={title:Se,subtitle:Ce,info:Pe,"name.label":"实例名称","name.placeholder":"例:极术龙虾","id.label":"实例 ID","id.placeholder":"jishu-claw","id.invalid":"名称无法生成有效 ID,请手动填写","id.hint":"小写字母、数字和连字符,创建后不可修改","description.label":"说明","description.placeholder":"可选","clone.label":"从已有实例复制配置","clone.none":"不复制",submit:Ie,loading:je,failed:Le},Ae="← 概览",Oe="← 返回对话",Te="端口 {{port}}",qe="实例运行失败,请查看日志排查原因。",De="查看日志",Ee="独立窗口",Re="重新加载",Me="快捷技能",$e="获取 gateway launch URL 失败",Be={"uptime.days":"{{d}}天{{h}}小时","uptime.hours":"{{h}}小时{{m}}分钟","uptime.minutes":"{{m}}分钟","tab.chat":"对话","tab.config":"配置","tab.logs":"日志","tab.usage":"使用情况","action.restarting":"重启中...","action.stopping":"停止中...","action.starting":"启动中...","action.startHint":"启动中...","action.stopDone":"已停止","action.restartHint":"重启中...","action.loadInstanceFailed":"加载实例失败","action.loadConfigFailed":"加载配置失败","action.loadUsageFailed":"加载用量失败","action.operationFailed":"操作失败",backToOverview:Ae,backToChat:Oe,port:Te,failedHint:qe,viewLogs:De,openInWindow:Ee,reload:Re,quickSkill:Me,"quickSkill.im":"即时通讯","quickSkill.skills":"技能","quickSkill.mcp":"MCP","quickSkill.slash":"命令","quickSkill.installed":"已安装","quickSkill.installing":"安装中…","quickSkill.install":"安装","quickSkill.allInstalled":"全部已安装","quickSkill.noInstalled":"暂无已安装的 Skill","quickSkill.noSkills":"该分类暂无技能,敬请期待","quickSkill.loading":"加载中…","quickSkill.customSkillPlaceholder":"自定义 Skill 链接 (clawhub.ai/...)","quickSkill.visit":"访问 →","quickSkill.bound":"已绑定","quickSkill.scanToBind":"扫码绑定","quickSkill.pluginInstalling":"插件安装中...","quickSkill.clickToInstall":"点击安装插件","quickSkill.moreImConfig":"更多渠道配置","quickSkill.configured":"已配置","quickSkill.oneClickConfig":"一键配置","quickSkill.detecting":"检测中…","quickSkill.mcporterDesc":"MCP 服务安装与管理工具","quickSkill.mcpJsonLabel":"填入 MCP 配置(JSON)","quickSkill.addToConfig":"添加到配置","quickSkill.mcpJsonNotObject":'JSON 格式错误,应为对象({ "serverName": {...} })',"quickSkill.mcpJsonEmpty":"未检测到有效的 MCP server 条目","quickSkill.mcpJsonParseFailed":"JSON 解析失败:{{error}}","quickSkill.mcpJsonValueNotObject":'"{{name}}" 的值必须是对象',"quickSkill.mcpJsonMissingField":'"{{name}}" 缺少 command 或 baseUrl 字段',"quickSkill.mcpWritten":"已写入 MCPorter 配置","quickSkill.mcpAdded":"已添加 {{label}} 到 MCPorter 配置","quickSkill.mcpWriteFailed":"写入失败","quickSkill.mcpAddFailed":"添加失败","quickSkill.mcporterConfigured":"MCPorter 已配置","quickSkill.statusNormal":"正常","quickSkill.statusNormalWithTools":"正常 · {{count}}工具","pairing.title":"DM 配对审批","pairing.refresh":"查看待审批","pairing.noPending":"暂无待审批请求","pairing.approve":"审批","pairing.approving":"审批中…","pairing.approveOk":"配对码 {{code}} 审批成功","pairing.approveFail":"审批失败","pairing.fetchFail":"获取列表失败","feishu.pluginInstalled":"飞书插件安装完成,实例将自动重启加载插件","feishu.pluginFailed":"飞书插件安装失败","weixin.pluginInstalled":"微信插件安装完成,实例将自动重启加载插件","weixin.pluginFailed":"微信插件安装失败","feishu.installing":"正在安装飞书插件...","weixin.installing":"正在安装微信插件...","feishu.waitingInstall":"飞书插件安装中,请稍候","weixin.waitingInstall":"微信插件安装中,请稍候","qr.gettingQr":"正在获取二维码...","qr.getFailed":"获取二维码失败","qr.scanFeishu":"请使用飞书或 Lark 扫描二维码","qr.scanWeixin":"请使用微信扫描二维码","qr.loginSuccess":"登录成功!","qr.expired":"二维码已过期","qr.refreshed":"二维码已刷新,请重新扫描","qr.scaned":"已扫码,请在手机上确认...","qr.credSaved":"凭证已自动保存,重启实例后生效。","qr.feishuTitle":"飞书 / Lark 登录","qr.weixinTitle":"微信 ClawBot 登录","qr.retry":"重新获取","config.modified":"配置已修改,需保存后生效","config.discard":"放弃修改","config.form":"表单","config.json":"JSON","config.jsonHelp":"JSON 编辑说明","config.jsonHelp1":'API Key 配置位于 <code class="bg-[#0066FF]/10 px-1 rounded">x-jishushell.proxy.upstream.apiKey</code>,已保存的 Key 不会回显,留空即保持不变',"config.jsonHelp2":'<code class="bg-[#0066FF]/10 px-1 rounded">models.providers</code> 会在保存时自动重写为内置代理配置,请勿手动修改',"config.jsonHelp3":"模型/厂商切换建议使用表单模式,JSON 模式适合微调 channels、plugins 等高级配置","config.saving":"保存中...","config.save":"保存","config.processing":"处理中...","config.saveAndRestart":"保存并重启","config.savedAndRestarted":"配置已保存并重启","config.savedButRestartFailed":"配置已保存,但重启失败: {{error}}","config.restartFailed":"重启失败: {{error}}","config.saved":"配置已保存","config.jsonError":"JSON 格式错误","config.jsonParseError":"JSON 格式错误: {{error}}","config.unsavedWarning":"配置尚未保存,确定离开?","config.presetAdded":"预设已添加,请填写必要字段后保存","config.navigatingToConfig":"正在跳转到配置页,预设将自动填入","delete.title":"删除实例","delete.warning":'此操作将删除实例 <strong class="text-foreground">{{name}}</strong> 的所有配置和数据,不可恢复。',"delete.warningBefore":"此操作将删除实例 ","delete.warningAfter":" 的所有配置和数据,不可恢复。","delete.confirmHint":"请输入实例名称确认:","delete.confirm":"确认删除","delete.failed":"删除失败","delete.skillConfirm":'确定删除 Skill "{{name}}"?',"delete.mcpConfirm":'确定删除 MCP "{{name}}"?',"logs.searchPlaceholder":"搜索日志...","logs.empty":"暂无日志","logs.copied":"已复制","logs.copyFailed":"复制失败","usage.noTokenData":"当前模型提供商未返回 Token 用量数据,消息计数仍然有效。","usage.messages":"消息数","usage.totalTokens":"总 Tokens","usage.totalCost":"总费用","usage.sessions":"会话","usage.noSessions":"暂无会话数据","usage.time":"时间","usage.model":"模型","usage.source":"来源","usage.messagesShort":"消息","usage.input":"输入","usage.output":"输出","usage.tokens":"总 Tokens","usage.cost":"费用","chat.notReady":"对话服务未就绪","chat.startHint":"请先启动实例,启动后对话界面将自动加载","chat.startInstance":"启动实例","chat.waitingGateway":"正在等待网关就绪...","chat.loadingChat":"正在加载对话界面...","update.confirm":`升级 JishuShell {{currentVersion}} → {{latestVersion}}?
|
|
13
|
+
面板将自动重启,页面需手动刷新。`,"update.started":"升级已启动,面板即将重启,请稍后刷新页面","update.failed":"升级失败","update.found":"发现新版本:","update.upgrading":"升级中…","update.upgradeNow":"立即升级",gatewayLaunchFailed:$e,"configForm.modelConfig":"模型配置","configForm.imChannelConfig":"IM 通道配置","configForm.proxyChain":"内置代理链路","configForm.proxyChainDesc":"OpenClaw 固定使用 `jsproxy/default`,真实上游 API Key 只会保存在代理侧。","configForm.proxyAddress":"代理地址:","configForm.notConfigured":"未配置","configForm.proxyStatus":"代理状态:","configForm.running":"运行中","configForm.notRunning":"未运行","configForm.virtualKeyLabel":"实例虚拟 Key:","configForm.generated":"已生成","configForm.notGenerated":"未生成","configForm.editModelConfig":"修改模型配置","configForm.upstreamProvider":"上游模型提供商","configForm.upstreamProviderHint":"这里配置的是内置代理背后的真实 provider,而不是 OpenClaw 直接连接的 provider","configForm.selectProvider":"选择上游 provider","configForm.custom":"(自定义)","configForm.switchProviderConfirm":"切换 Provider 将清空已输入的 API Key,确定继续?","configForm.upstreamApiKey":"上游 API Key","configForm.apiKeyHintSaved":"已保存在代理侧,留空则保持不变","configForm.apiKeyHintNew":"从真实 provider 平台获取","configForm.enterApiKey":"输入 API Key","configForm.markedForClear":"已标记为清空","configForm.clearSavedApiKey":"清空已保存 API Key","configForm.upstreamModel":"上游默认模型","configForm.upstreamModelHint":"已自动选择推荐模型,如需切换可在此更改","configForm.modelId":"模型 ID","configForm.modelIdHint":"必填,如 llama3、qwen2.5:7b","configForm.modelName":"模型名称","configForm.modelNamePlaceholder":"可选,留空同模型 ID","configForm.contextWindow":"上下文窗口","configForm.collapseAdvanced":"收起高级选项","configForm.advancedOptions":"高级选项","configForm.upstreamBaseUrl":"上游 Base URL","configForm.baseUrlPlaceholder":"API 地址","configForm.upstreamApiProtocol":"上游 API 协议","configForm.localServiceAddress":"本地服务地址","configForm.providerGroup.国内厂商":"国内厂商","configForm.providerGroup.国际厂商":"国际厂商","configForm.providerGroup.推理加速":"推理加速","configForm.providerGroup.聚合平台":"聚合平台","configForm.providerGroup.本地部署":"本地部署","configForm.providerLabel.minimax":"MiniMax (国内)","configForm.providerLabel.minimax-intl":"MiniMax (国际)","configForm.providerLabel.moonshot-coding":"Kimi (编码计划)","configForm.providerLabel.moonshot-intl":"Kimi (国际)","configForm.providerLabel.zhipu":"智谱AI (GLM)","configForm.providerLabel.zhipu-intl":"Z.AI (GLM)","configForm.providerLabel.volcengine":"火山引擎 (豆包)","configForm.providerLabel.qianfan":"百度千帆 (ERNIE)","configForm.providerLabel.dashscope":"阿里云百炼","configForm.providerLabel.modelstudio":"阿里云百炼 (国际/Coding)","configForm.providerLabel.tencent":"腾讯混元","configForm.providerLabel.stepfun":"阶跃星辰","configForm.providerLabel.baichuan":"百川智能","configForm.providerLabel.xiaomi":"MiMo (小米)","configForm.providerLabel.byteplus":"火山引擎国际版 (Doubao)","configForm.providerLabel.spark":"讯飞星火","configForm.providerLabel.siliconflow":"SiliconFlow","configForm.providerLabel.infini":"Infini-AI","configForm.providerLabel.ollama":"Ollama (本地)","configForm.providerLabel.vllm":"vLLM (本地)","configForm.providerLabel.sglang":"SGLang (本地)","channel.feishu":"飞书 / Lark","channel.weixin":"微信","configForm.channel.feishu":"飞书 / Lark","configForm.channel.openclaw-weixin":"微信","configForm.channel.telegram":"Telegram","configForm.channel.discord":"Discord","configForm.channel.slack":"Slack","configForm.channel.whatsapp":"WhatsApp","configForm.channel.msteams":"Microsoft Teams","configForm.channel.signal":"Signal","configForm.channel.line":"LINE","configForm.channel.googlechat":"Google Chat","configForm.apiProtocol":"API 协议","configForm.proxyNote":"OpenClaw 的实际 provider 会在保存时自动改写为 `jsproxy/default`。这里的高级参数只影响内置代理背后的真实上游连接。","configForm.hint.moonshot-coding":"使用 Anthropic 兼容接口对接 Kimi K2 系列模型,专为 Coding/Agent 场景优化。推荐模型:kimi-k2-thinking-turbo(高速思考)或 kimi-k2.5(全能多模态)。","configForm.hint.volcengine":"火山引擎需要先在控制台创建「推理接入点」,然后将接入点 ID 填入下方模型 ID 中。","configForm.hint.byteplus":"BytePlus 需要先在控制台创建 Endpoint,然后将 Endpoint ID 填入下方模型 ID 中。","configForm.hint.openrouter":"OpenRouter 聚合了多家模型,选择 Auto 会自动路由到最优模型。API Key 从 openrouter.ai/keys 获取。","configForm.hint.ollama":"请确保 Ollama 服务已启动,并在下方填写实际部署的模型名称。","configForm.hint.vllm":"请确保 vLLM 服务已启动,并在下方填写实际加载的模型名称。","configForm.hint.sglang":"请确保 SGLang 服务已启动,并在下方填写实际加载的模型名称。","configForm.sessionIsolation":"对话隔离模式","configForm.sessionIsolationHint":"控制不同用户、不同通道的对话是否共享上下文","configForm.sessionMain":"所有人共享对话","configForm.sessionPerPeer":"每人独立对话","configForm.sessionPerChannelPeer":"每人每通道独立对话","configForm.sessionPerAccountChannelPeer":"每人每账号独立对话","configForm.pluginInstalling":"{{label}}插件安装中...","configForm.installPlugin":"安装{{label}}插件","configForm.installPluginHint":"安装插件后即可配置{{label}}通道","configForm.remove":"移除","configForm.addImChannel":"添加 IM 通道","configForm.whatsappTitle":"WhatsApp 通过二维码配对","configForm.whatsappHint":"启用后启动实例,在「日志」Tab 中查看 QR 码,用手机 WhatsApp 扫描即可。首次配对后凭证会自动保存,后续无需重复扫码。","configForm.feishu.platform":"平台: {{platform}}。凭证已自动保存,重启实例后生效。","configForm.feishu.platformLark":"Lark (国际版)","configForm.feishu.platformFeishu":"飞书","configForm.feishu.added":"已添加","configForm.feishu.addBot":"添加飞书 / Lark 机器人","configForm.feishu.addBotHint":"使用飞书或 Lark APP 扫码,自动创建并配置机器人。系统自动识别平台。","configForm.feishu.gettingQr":"正在获取二维码...","configForm.feishu.scanHint":"请使用飞书或 Lark 扫描二维码","configForm.feishu.cancel":"取消","configForm.feishu.refresh":"刷新","configForm.weixin.accountId":"账号 ID:","configForm.weixin.restartHint":"保存并重启实例后生效。可再次扫码添加更多微信号。","configForm.weixin.addAnother":"添加另一个微信号","configForm.weixin.added":"已添加","configForm.weixin.addClawBot":"添加微信 ClawBot","configForm.weixin.addClawBotHint":"点击后显示二维码,用手机微信扫码即可。{{extra}}","configForm.weixin.addClawBotHintRestart":"保存并重启后生效。","configForm.weixin.addClawBotHintMulti":"支持多账号。","configForm.weixin.gettingQr":"正在获取二维码...","configForm.weixin.scanHint":"请使用微信扫描二维码","configForm.weixin.cancel":"取消","configForm.weixin.refresh":"刷新","config.clickToEdit":"点击输入新值"},Ue="配置运行环境",We="版本过低",He="必需",_e="恢复任务: {{label}}...",Ke="任务失败",Je="{{label}} 已完成",ze="{{label}} 任务状态获取失败",Ve="{{label}} 超时(超过 10 分钟),请检查后端日志",Ge="正在安装 {{label}}...",Qe="{{label}} 已开始",Xe="{{label}} 安装失败: {{error}}",Ye="安装失败",Ze="Docker 镜像构建",en="Docker 安装",nn="OpenClaw 安装",tn="正在配置 Nomad systemd 服务...",on="Nomad 服务已启动",sn="Nomad 已启动",an="Nomad 启动失败: {{error}}",rn="等待 Nomad 就绪...",ln="Nomad 已就绪",cn="配置写入失败",dn="保存失败",un="{{label}} 失败: {{message}}",gn={title:Ue,"steps.check":"环境检测","steps.modelConfig":"模型配置","steps.done":"完成",versionTooOld:We,required:He,resumeTask:_e,taskFailed:Ke,taskCompleted:Je,taskStatusFailed:ze,taskTimeout:Ve,installing:Ge,taskStarted:Qe,installFailed:Xe,defaultInstallFailed:Ye,dockerImageBuild:Ze,dockerInstall:en,openclawInstall:nn,configuringNomadSystemd:tn,nomadServiceStarted:on,nomadStarted:sn,nomadStartFailed:an,waitingNomad:rn,nomadReady:ln,configWriteFailed:cn,saveFailed:dn,"check.title":"环境检测","check.desc":"检查系统已安装的组件","check.requiredComponents":"必需组件","check.upgrading":"升级中...","check.upgrade":"升级","node.title":"升级 Node.js","node.desc":"OpenClaw 需要 Node.js 22+,当前版本过低","node.ready":"Node.js 已就绪 ({{version}})","node.currentVersion":"当前版本 {{version}},需升级到 22+","node.noSudo":"当前版本 {{version}},需升级到 22+,但当前用户没有 sudo 权限","node.upgrading":"升级中...","node.upgradeBtn":"升级 Node.js","node.sudoRequired":"需要 sudo 权限,通过 NodeSource 安装","node.contactAdmin":"请联系管理员执行以下命令:","node.refreshAfterInstall":"安装完成后点此刷新","docker.title":"安装 Docker","docker.desc":"容器运行时,用于隔离运行 OpenClaw 实例","docker.running":"Docker 运行中 ({{version}})","docker.notRunning":"Docker 已安装但服务未运行,请启动 Docker 服务","docker.refreshAfterStart":"启动后点此刷新","docker.installing":"安装中,请稍候...","docker.installBtn":"安装 Docker","docker.sudoRequired":"需要 sudo 权限,可能需要几分钟","docker.noSudo":"当前用户没有 sudo 权限,无法自动安装","docker.contactAdmin":"请联系管理员执行以下命令:","docker.refreshAfterInstall":"安装完成后点此刷新","nomad.title":"安装 Nomad","nomad.desc":"编排引擎,管理 OpenClaw 容器的生命周期","nomad.running":"Nomad 运行中 ({{version}})","nomad.starting":"Nomad 已安装,正在启动...","nomad.installing":"安装中...","nomad.installBtn":"安装 Nomad","openclaw.title":"安装 OpenClaw","openclaw.desc":"AI 智能体运行时,JishuShell 的核心组件","openclaw.installed":"OpenClaw 已安装 ({{version}})","openclaw.buildingImage":"正在构建 Docker 镜像,首次构建需要几分钟...","openclaw.buildImageBtn":"构建 Docker 镜像","openclaw.installing":"安装中,请稍候...","openclaw.installBtn":"安装 OpenClaw","openclaw.npmHint":"通过 npm 安装,需要网络连接","done.finalizing":"正在完成配置...","done.finalizingDesc":"写入系统配置,请稍候","done.complete":"环境配置完成","done.completeDesc":"基础环境已就绪","provider.title":"配置默认模型","provider.desc":"新建实例时将自动使用此配置,可随时在实例详情中修改","provider.label":"模型提供商","provider.placeholder":"选择提供商","provider.apiKey":"API Key","provider.apiKeyPlaceholder":"输入 API Key","provider.defaultModel":"默认模型","provider.skip":"跳过","provider.saving":"保存中...","provider.save":"保存","provider.saved":"模型配置已保存","provider.saveFailed":"保存失败","provider.apiKeyConfigured":"••••••••(已配置)","provider.saveAndContinue":"保存并继续","nav.next":"下一步","nav.retry":"重试","nav.enterPanel":"进入面板",taskErrorPrefix:un},pn={"im.feishu.desc":"飞书机器人(WebSocket 模式)","im.openclaw-weixin.desc":"微信扫码接入","skills.group.hubs":"热门Hub","skills.group.general":"通用基础","skills.group.productivity":"工作效率","skills.group.life":"生活辅助","skills.group.dev":"开发工具","skills.clawhub.desc":"OpenClaw 官方 Skill 市场","skills.skillhub-tencent.label":"腾讯 SkillHub","skills.skillhub-tencent.desc":"腾讯技能中心,官方出品","skills.skills-sh.desc":"第三方 Skill 聚合社区","skills.skill-vetter.desc":"安全审计 Skill,安装前建议先审查","skills.self-improving-agent.desc":"自我优化的 Agent,持续改进任务执行","skills.proactive-agent.desc":"主动式 Agent,自动感知并提前完成任务","skills.multi-search-engine.desc":"多搜索引擎聚合搜索","skills.exa-web-search-free.desc":"免费 Exa 网页语义搜索","skills.lobehub-skills.label":"LobeHub Skills","skills.lobehub-skills.desc":"LobeHub 社区 Skill 市场","skills.findskills.label":"FindSkills.org","skills.findskills.desc":"开源 Skill 搜索与聚合平台","skills.playbooks-skills.label":"Playbooks Skills","skills.playbooks-skills.desc":"Playbooks 社区 Skill 目录","skills.pdf-reader.label":"PDF Reader","skills.pdf-reader.desc":"PDF 文档读取与分析","skills.powerpoint-pptx.label":"PowerPoint / PPTX","skills.powerpoint-pptx.desc":"PPT 演示文稿生成与编辑","skills.word-docx.label":"Word / DOCX","skills.word-docx.desc":"Word 文档生成与编辑","skills.excel-xlsx.label":"Excel / XLSX","skills.excel-xlsx.desc":"Excel 表格生成与数据处理","skills.todo-manager.label":"Todo Manager","skills.todo-manager.desc":"任务与待办事项管理","skills.12306.label":"12306 火车票","skills.12306.desc":"查询与购买 12306 火车票","skills.youtube-watcher.label":"YouTube Watcher","skills.youtube-watcher.desc":"YouTube 视频摘要与内容分析","skills.cli-developer.label":"CLI Developer","skills.cli-developer.desc":"命令行工具开发辅助","skills.home-assistant.label":"Home Assistant","skills.home-assistant.desc":"Home Assistant 智能家居集成","mcp.12306-mcp.label":"12306-MCP车票查询工具","mcp.12306-mcp.desc":"12306-MCP车票查询工具","slash.group.会话":"会话","slash.group.模型":"模型","slash.group.工具":"工具","slash.slash-new.desc":"开启新会话","slash.slash-reset.desc":"重置当前会话","slash.slash-compact.desc":"压缩会话上下文","slash.slash-stop.desc":"停止当前运行","slash.slash-clear.desc":"清空聊天记录","slash.slash-focus.desc":"切换专注模式","slash.slash-model.desc":"查看或切换模型","slash.slash-think.desc":"设置思考深度","slash.slash-verbose.desc":"切换详细输出模式","slash.slash-fast.desc":"切换快速模式","slash.slash-help.desc":"查看可用命令","slash.slash-status.desc":"显示会话状态(agent)","slash.slash-export.desc":"导出会话为 Markdown","slash.slash-usage.desc":"显示 Token 用量"},mn={"status.running":"Running","status.starting":"Starting","status.failed":"Failed","status.crashed":"Crashed","status.stopped":"Stopped","action.start":"Start","action.stop":"Stop","action.restart":"Restart","action.retry":"Retry","action.save":"Save","action.cancel":"Cancel","action.delete":"Delete","action.close":"Close","action.confirm":"Confirm","action.refresh":"Refresh","action.copyAll":"Copy All","action.startDone":"Started","action.stopDone":"Stopped","action.restartDone":"Restarted","error.loadFailed":"Failed to load","error.operationFailed":"Operation failed","error.saveFailed":"Save failed","error.deleteFailed":"Delete failed","error.connectionFailed":"Cannot connect to server","error.checkBackend":"Please check if JishuShell backend is running","nav.overview":"Overview","nav.settings":"Settings","nav.logout":"Logout","nav.instances":"Instances","nav.navigation":"Navigation","nav.newInstance":"New Instance","label.password":"Password","label.enabled":"Enabled","label.disabled":"Disabled","nav.switchLanguage":"Switch language"},fn="Overview",hn="System status and instance management",kn={title:fn,subtitle:hn,"stats.runningInstances":"Running","stats.engineRunning":"Engine running","stats.engineStopped":"Engine not running","stats.cpu":"CPU","stats.memory":"Memory","stats.disk":"Disk","instances.title":"Instances","instances.new":"+ New","instances.restartEngine":"Restart Engine","instances.restartEngineTitle":"Restart Nomad engine (will interrupt running instances)","instances.restarting":"Restarting...","instances.empty":"No instances yet","instances.emptyHint":"Create your first OpenClaw instance to get started","instances.loadError":"Failed to load: {{error}}","table.name":"Name","table.status":"Status","table.uptime":"Uptime","table.memory":"Memory","table.actions":"Actions","update.found":"New version available:","update.upgradeNow":"Upgrade Now","update.upgrading":"Upgrading…","update.confirm":`Upgrade JishuShell {{currentVersion}} → {{latestVersion}}?
|
|
14
|
+
The panel will restart automatically. Please refresh the page manually.`,"update.started":"Upgrade started. The panel will restart shortly. Please refresh later.","update.failed":"Upgrade failed","engine.restarted":"Engine restarted","engine.restartFailed":"Engine restart failed","engine.restartConfirm":"Restarting the engine will interrupt all running instances. Continue?","openclawUpdate.found":"OpenClaw update available:","openclawUpdate.noRebuild":"No image rebuild needed","openclawUpdate.upgradeNow":"Upgrade Now","openclawUpdate.upgrading":"Upgrading…","openclawUpdate.confirm":`Upgrade OpenClaw {{currentVersion}} → {{latestVersion}}?
|
|
15
|
+
Running instances will be restarted automatically. No Docker image rebuild required.`,"openclawUpdate.started":"OpenClaw upgraded. Running instances have been restarted.","openclawUpdate.failed":"OpenClaw upgrade failed"},vn={"login.title":"Login to Admin Panel","login.password":"Password","login.placeholder":"Enter password","login.submit":"Login","login.loading":"Logging in","login.failed":"Login failed","login.forgotPassword":"Forgot password? Run in terminal:","init.title":"First time setup — set your admin password","init.password":"Password","init.passwordPlaceholder":"At least 8 characters","init.confirm":"Confirm Password","init.confirmPlaceholder":"Enter password again","init.mismatch":"Passwords do not match","init.submit":"Complete Setup","init.loading":"Setting up","init.failed":"Setup failed"},xn="Settings",wn="System configuration and security",bn={title:xn,subtitle:wn,"proxy.title":"Built-in Proxy","proxy.desc":"The built-in proxy is always running and managed automatically by the system. Simply fill in the real upstream API Key on the Settings page or instance page, and the proxy will handle forwarding.","proxy.status":"Do not manually modify the API Key in the OpenClaw configuration page.","password.title":"Change Password","password.current":"Current Password","password.currentPlaceholder":"Current password","password.new":"New Password","password.newPlaceholder":"At least 8 characters","password.submit":"Update Password","password.updated":"Password updated","password.failed":"Update failed","system.title":"System Info","system.cpuUsage":"CPU Usage","system.memory":"Memory","system.disk":"Disk","system.cpuTemp":"CPU Temperature","about.title":"About"},yn="New Instance",Fn="Create a new OpenClaw instance",Sn="A new instance gets its own OpenClaw data directory and port. Cloning only copies the configuration, not the runtime directory.",Cn="Create Instance",Pn="Creating",In="Creation failed",jn={title:yn,subtitle:Fn,info:Sn,"name.label":"Instance Name","name.placeholder":"e.g. My Claw","id.label":"Instance ID","id.placeholder":"my-claw","id.invalid":"Name cannot generate a valid ID. Please enter manually.","id.hint":"Lowercase letters, numbers, and hyphens. Cannot be changed after creation.","description.label":"Description","description.placeholder":"Optional","clone.label":"Clone config from existing instance","clone.none":"Don't clone",submit:Cn,loading:Pn,failed:In},Ln="← Overview",Nn="← Back to Chat",An="Port {{port}}",On="Instance failed. Check logs for details.",Tn="View Logs",qn="Open in Window",Dn="Reload",En="Quick Skills",Rn="Failed to get gateway launch URL",Mn={"uptime.days":"{{d}}d {{h}}h","uptime.hours":"{{h}}h {{m}}m","uptime.minutes":"{{m}}m","tab.chat":"Chat","tab.config":"Config","tab.logs":"Logs","tab.usage":"Usage","action.restarting":"Restarting...","action.stopping":"Stopping...","action.starting":"Starting...","action.startHint":"Starting...","action.stopDone":"Stopped","action.restartHint":"Restarting...","action.loadInstanceFailed":"Failed to load instance","action.loadConfigFailed":"Failed to load config","action.loadUsageFailed":"Failed to load usage","action.operationFailed":"Operation failed",backToOverview:Ln,backToChat:Nn,port:An,failedHint:On,viewLogs:Tn,openInWindow:qn,reload:Dn,quickSkill:En,"quickSkill.im":"IM","quickSkill.skills":"Skills","quickSkill.mcp":"MCP","quickSkill.slash":"Commands","quickSkill.installed":"Installed","quickSkill.installing":"Installing…","quickSkill.install":"Install","quickSkill.allInstalled":"All Installed","quickSkill.noInstalled":"No skills installed yet","quickSkill.noSkills":"No skills in this category yet","quickSkill.loading":"Loading…","quickSkill.customSkillPlaceholder":"Custom skill URL (clawhub.ai/...)","quickSkill.visit":"Visit →","quickSkill.bound":"Bound","quickSkill.scanToBind":"Scan to bind","quickSkill.pluginInstalling":"Plugin installing...","quickSkill.clickToInstall":"Click to install plugin","quickSkill.moreImConfig":"More channel settings","quickSkill.configured":"Configured","quickSkill.oneClickConfig":"One-click setup","quickSkill.detecting":"Detecting…","quickSkill.mcporterDesc":"MCP service installer and manager","quickSkill.mcpJsonLabel":"Paste MCP config (JSON)","quickSkill.addToConfig":"Add to config","quickSkill.mcpJsonNotObject":'Invalid JSON format. Expected an object ({ "serverName": {...} })',"quickSkill.mcpJsonEmpty":"No valid MCP server entries detected","quickSkill.mcpJsonParseFailed":"JSON parse failed: {{error}}","quickSkill.mcpJsonValueNotObject":'"{{name}}" value must be an object',"quickSkill.mcpJsonMissingField":'"{{name}}" is missing command or baseUrl field',"quickSkill.mcpWritten":"MCPorter config saved","quickSkill.mcpAdded":"Added {{label}} to MCPorter config","quickSkill.mcpWriteFailed":"Write failed","quickSkill.mcpAddFailed":"Add failed","quickSkill.mcporterConfigured":"MCPorter Configured","quickSkill.statusNormal":"OK","quickSkill.statusNormalWithTools":"OK · {{count}} tools","pairing.title":"DM Pairing Approval","pairing.refresh":"View Pending","pairing.noPending":"No pending requests","pairing.approve":"Approve","pairing.approving":"Approving…","pairing.approveOk":"Code {{code}} approved","pairing.approveFail":"Approval failed","pairing.fetchFail":"Failed to fetch list","feishu.pluginInstalled":"Feishu plugin installed. Instance will restart to load it.","feishu.pluginFailed":"Feishu plugin installation failed","weixin.pluginInstalled":"WeChat plugin installed. Instance will restart to load it.","weixin.pluginFailed":"WeChat plugin installation failed","feishu.installing":"Installing Feishu plugin...","weixin.installing":"Installing WeChat plugin...","feishu.waitingInstall":"Feishu plugin is installing, please wait","weixin.waitingInstall":"WeChat plugin is installing, please wait","qr.gettingQr":"Getting QR code...","qr.getFailed":"Failed to get QR code","qr.scanFeishu":"Scan with Feishu or Lark","qr.scanWeixin":"Scan with WeChat","qr.loginSuccess":"Login successful!","qr.expired":"QR code expired","qr.refreshed":"QR code refreshed. Please scan again.","qr.scaned":"Scanned. Please confirm on your phone...","qr.credSaved":"Credentials saved. Restart instance to apply.","qr.feishuTitle":"Feishu / Lark Login","qr.weixinTitle":"WeChat ClawBot Login","qr.retry":"Retry","config.modified":"Config modified. Save to apply.","config.discard":"Discard changes","config.form":"Form","config.json":"JSON","config.jsonHelp":"JSON Editing Notes","config.jsonHelp1":'API Key is at <code class="bg-[#0066FF]/10 px-1 rounded">x-jishushell.proxy.upstream.apiKey</code>. Saved keys are hidden; leave empty to keep current.',"config.jsonHelp2":'<code class="bg-[#0066FF]/10 px-1 rounded">models.providers</code> is auto-rewritten to built-in proxy config on save. Do not edit manually.',"config.jsonHelp3":"Use Form mode for model/provider changes. JSON mode is for fine-tuning channels, plugins, etc.","config.saving":"Saving...","config.save":"Save","config.processing":"Processing...","config.saveAndRestart":"Save & Restart","config.savedAndRestarted":"Config saved and restarted","config.savedButRestartFailed":"Config saved, but restart failed: {{error}}","config.restartFailed":"Restart failed: {{error}}","config.saved":"Config saved","config.jsonError":"Invalid JSON","config.jsonParseError":"Invalid JSON: {{error}}","config.unsavedWarning":"Config has unsaved changes. Leave anyway?","config.presetAdded":"Preset added. Fill in required fields and save.","config.navigatingToConfig":"Navigating to config. Preset will be auto-filled.","delete.title":"Delete Instance","delete.warning":'This will delete all config and data for <strong class="text-foreground">{{name}}</strong>. This cannot be undone.',"delete.warningBefore":"This will delete all config and data for ","delete.warningAfter":". This cannot be undone.","delete.confirmHint":"Type the instance name to confirm:","delete.confirm":"Delete","delete.failed":"Delete failed","delete.skillConfirm":'Delete Skill "{{name}}"?',"delete.mcpConfirm":'Delete MCP "{{name}}"?',"logs.searchPlaceholder":"Search logs...","logs.empty":"No logs yet","logs.copied":"Copied","logs.copyFailed":"Copy failed","usage.noTokenData":"The current model provider does not return token usage data. Message counts are still valid.","usage.messages":"Messages","usage.totalTokens":"Total Tokens","usage.totalCost":"Total Cost","usage.sessions":"Sessions","usage.noSessions":"No session data","usage.time":"Time","usage.model":"Model","usage.source":"Source","usage.messagesShort":"Messages","usage.input":"Input","usage.output":"Output","usage.tokens":"Total Tokens","usage.cost":"Cost","chat.notReady":"Chat service not ready","chat.startHint":"Start the instance first. Chat will load automatically.","chat.startInstance":"Start Instance","chat.waitingGateway":"Waiting for gateway...","chat.loadingChat":"Loading chat interface...","update.confirm":`Upgrade JishuShell {{currentVersion}} → {{latestVersion}}?
|
|
16
|
+
The panel will restart automatically. Please refresh manually.`,"update.started":"Upgrade started. Panel will restart shortly.","update.failed":"Upgrade failed","update.found":"New version available:","update.upgrading":"Upgrading…","update.upgradeNow":"Upgrade Now",gatewayLaunchFailed:Rn,"configForm.modelConfig":"Model Config","configForm.imChannelConfig":"IM Channel Config","configForm.proxyChain":"Built-in Proxy Chain","configForm.proxyChainDesc":"OpenClaw uses `jsproxy/default`. The real upstream API Key is only stored on the proxy side.","configForm.proxyAddress":"Proxy address:","configForm.notConfigured":"Not configured","configForm.proxyStatus":"Proxy status:","configForm.running":"Running","configForm.notRunning":"Not running","configForm.virtualKeyLabel":"Instance virtual key:","configForm.generated":"Generated","configForm.notGenerated":"Not generated","configForm.editModelConfig":"Edit Model Config","configForm.upstreamProvider":"Upstream Provider","configForm.upstreamProviderHint":"This configures the real provider behind the built-in proxy, not the provider OpenClaw connects to directly","configForm.selectProvider":"Select upstream provider","configForm.custom":"(custom)","configForm.switchProviderConfirm":"Switching provider will clear the entered API Key. Continue?","configForm.upstreamApiKey":"Upstream API Key","configForm.apiKeyHintSaved":"Saved on proxy side. Leave empty to keep current.","configForm.apiKeyHintNew":"Get from the real provider platform","configForm.enterApiKey":"Enter API Key","configForm.markedForClear":"Marked for clearing","configForm.clearSavedApiKey":"Clear saved API Key","configForm.upstreamModel":"Upstream Default Model","configForm.upstreamModelHint":"Recommended model auto-selected. Change here if needed.","configForm.modelId":"Model ID","configForm.modelIdHint":"Required, e.g. llama3, qwen2.5:7b","configForm.modelName":"Model Name","configForm.modelNamePlaceholder":"Optional, defaults to Model ID","configForm.contextWindow":"Context Window","configForm.collapseAdvanced":"Collapse advanced","configForm.advancedOptions":"Advanced Options","configForm.upstreamBaseUrl":"Upstream Base URL","configForm.baseUrlPlaceholder":"API address","configForm.upstreamApiProtocol":"Upstream API Protocol","configForm.localServiceAddress":"Local service address","configForm.providerGroup.国内厂商":"China Providers","configForm.providerGroup.国际厂商":"International","configForm.providerGroup.推理加速":"Inference Acceleration","configForm.providerGroup.聚合平台":"Aggregation Platforms","configForm.providerGroup.本地部署":"Local Deployment","configForm.providerLabel.minimax":"MiniMax (China)","configForm.providerLabel.minimax-intl":"MiniMax (Intl)","configForm.providerLabel.moonshot-coding":"Kimi (Coding Plan)","configForm.providerLabel.moonshot-intl":"Kimi (Intl)","configForm.providerLabel.zhipu":"ZhipuAI (GLM)","configForm.providerLabel.zhipu-intl":"Z.AI (GLM)","configForm.providerLabel.volcengine":"Volcengine (Doubao)","configForm.providerLabel.qianfan":"Baidu Qianfan (ERNIE)","configForm.providerLabel.dashscope":"Alibaba Bailian","configForm.providerLabel.modelstudio":"Alibaba Bailian (Intl/Coding)","configForm.providerLabel.tencent":"Tencent Hunyuan","configForm.providerLabel.stepfun":"StepFun","configForm.providerLabel.baichuan":"Baichuan","configForm.providerLabel.xiaomi":"MiMo (Xiaomi)","configForm.providerLabel.byteplus":"Volcengine Intl (Doubao)","configForm.providerLabel.spark":"iFlytek Spark","configForm.providerLabel.siliconflow":"SiliconFlow","configForm.providerLabel.infini":"Infini-AI","configForm.providerLabel.ollama":"Ollama (Local)","configForm.providerLabel.vllm":"vLLM (Local)","configForm.providerLabel.sglang":"SGLang (Local)","channel.feishu":"Feishu / Lark","channel.weixin":"WeChat","configForm.channel.feishu":"Feishu / Lark","configForm.channel.openclaw-weixin":"WeChat","configForm.channel.telegram":"Telegram","configForm.channel.discord":"Discord","configForm.channel.slack":"Slack","configForm.channel.whatsapp":"WhatsApp","configForm.channel.msteams":"Microsoft Teams","configForm.channel.signal":"Signal","configForm.channel.line":"LINE","configForm.channel.googlechat":"Google Chat","configForm.apiProtocol":"API Protocol","configForm.proxyNote":"OpenClaw's actual provider is auto-rewritten to `jsproxy/default` on save. These advanced settings only affect the real upstream connection behind the built-in proxy.","configForm.hint.moonshot-coding":"Uses Anthropic-compatible API for Kimi K2 series models, optimized for Coding/Agent scenarios. Recommended: kimi-k2-thinking-turbo (fast thinking) or kimi-k2.5 (all-round multimodal).","configForm.hint.volcengine":"Volcengine requires creating an inference endpoint in the console first. Enter the endpoint ID in the Model ID field below.","configForm.hint.byteplus":"BytePlus requires creating an Endpoint in the console first. Enter the Endpoint ID in the Model ID field below.","configForm.hint.openrouter":"OpenRouter aggregates multiple models. Auto routes to the best model. Get API Key from openrouter.ai/keys.","configForm.hint.ollama":"Make sure Ollama is running and enter the actual model name below.","configForm.hint.vllm":"Make sure vLLM is running and enter the actual model name below.","configForm.hint.sglang":"Make sure SGLang is running and enter the actual model name below.","configForm.sessionIsolation":"Session Isolation","configForm.sessionIsolationHint":"Controls whether different users and channels share conversation context","configForm.sessionMain":"Shared conversation for all","configForm.sessionPerPeer":"Separate conversation per user","configForm.sessionPerChannelPeer":"Separate per user per channel","configForm.sessionPerAccountChannelPeer":"Separate per user per account per channel","configForm.pluginInstalling":"{{label}} plugin installing...","configForm.installPlugin":"Install {{label}} plugin","configForm.installPluginHint":"Install plugin to configure {{label}} channel","configForm.remove":"Remove","configForm.addImChannel":"Add IM Channel","configForm.whatsappTitle":"WhatsApp pairs via QR code","configForm.whatsappHint":"After enabling and starting the instance, check the Logs tab for the QR code. Scan with your phone's WhatsApp. Credentials are auto-saved after first pairing.","configForm.feishu.platform":"Platform: {{platform}}. Credentials saved. Restart instance to apply.","configForm.feishu.platformLark":"Lark (International)","configForm.feishu.platformFeishu":"Feishu","configForm.feishu.added":"Added","configForm.feishu.addBot":"Add Feishu / Lark Bot","configForm.feishu.addBotHint":"Scan with Feishu or Lark app to auto-create and configure a bot. Platform is auto-detected.","configForm.feishu.gettingQr":"Getting QR code...","configForm.feishu.scanHint":"Scan with Feishu or Lark","configForm.feishu.cancel":"Cancel","configForm.feishu.refresh":"Refresh","configForm.weixin.accountId":"Account ID:","configForm.weixin.restartHint":"Save and restart instance to apply. Scan again to add more accounts.","configForm.weixin.addAnother":"Add another WeChat account","configForm.weixin.added":"Added","configForm.weixin.addClawBot":"Add WeChat ClawBot","configForm.weixin.addClawBotHint":"Click to show QR code, scan with WeChat. {{extra}}","configForm.weixin.addClawBotHintRestart":"Save and restart to apply.","configForm.weixin.addClawBotHintMulti":"Supports multiple accounts.","configForm.weixin.gettingQr":"Getting QR code...","configForm.weixin.scanHint":"Scan with WeChat","configForm.weixin.cancel":"Cancel","configForm.weixin.refresh":"Refresh","config.clickToEdit":"Click to enter new value"},$n="Configure Environment",Bn="Version too old",Un="Required",Wn="Resuming task: {{label}}...",Hn="Task failed",_n="{{label}} completed",Kn="Failed to get {{label}} task status",Jn="{{label}} timed out (over 10 minutes), please check backend logs",zn="Installing {{label}}...",Vn="{{label}} started",Gn="{{label}} installation failed: {{error}}",Qn="Installation failed",Xn="Docker image build",Yn="Docker installation",Zn="OpenClaw installation",et="Configuring Nomad systemd service...",nt="Nomad service started",tt="Nomad started",ot="Nomad start failed: {{error}}",it="Waiting for Nomad to be ready...",st="Nomad is ready",at="Config write failed",rt="Save failed",lt="{{label}} failed: {{message}}",ct={title:$n,"steps.check":"Check","steps.modelConfig":"Model Config","steps.done":"Done",versionTooOld:Bn,required:Un,resumeTask:Wn,taskFailed:Hn,taskCompleted:_n,taskStatusFailed:Kn,taskTimeout:Jn,installing:zn,taskStarted:Vn,installFailed:Gn,defaultInstallFailed:Qn,dockerImageBuild:Xn,dockerInstall:Yn,openclawInstall:Zn,configuringNomadSystemd:et,nomadServiceStarted:nt,nomadStarted:tt,nomadStartFailed:ot,waitingNomad:it,nomadReady:st,configWriteFailed:at,saveFailed:rt,"check.title":"Environment Check","check.desc":"Check installed system components","check.requiredComponents":"Required Components","check.upgrading":"Upgrading...","check.upgrade":"Upgrade","node.title":"Upgrade Node.js","node.desc":"OpenClaw requires Node.js 22+, current version is too old","node.ready":"Node.js is ready ({{version}})","node.currentVersion":"Current version {{version}}, needs upgrade to 22+","node.noSudo":"Current version {{version}}, needs upgrade to 22+, but current user lacks sudo privileges","node.upgrading":"Upgrading...","node.upgradeBtn":"Upgrade Node.js","node.sudoRequired":"Requires sudo privileges, installs via NodeSource","node.contactAdmin":"Please ask an administrator to run the following command:","node.refreshAfterInstall":"Click to refresh after installation","docker.title":"Install Docker","docker.desc":"Container runtime for running OpenClaw instances in isolation","docker.running":"Docker is running ({{version}})","docker.notRunning":"Docker is installed but the service is not running, please start the Docker service","docker.refreshAfterStart":"Click to refresh after starting","docker.installing":"Installing, please wait...","docker.installBtn":"Install Docker","docker.sudoRequired":"Requires sudo privileges, may take a few minutes","docker.noSudo":"Current user lacks sudo privileges, cannot install automatically","docker.contactAdmin":"Please ask an administrator to run the following command:","docker.refreshAfterInstall":"Click to refresh after installation","nomad.title":"Install Nomad","nomad.desc":"Orchestration engine for managing OpenClaw container lifecycle","nomad.running":"Nomad is running ({{version}})","nomad.starting":"Nomad is installed, starting...","nomad.installing":"Installing...","nomad.installBtn":"Install Nomad","openclaw.title":"Install OpenClaw","openclaw.desc":"AI agent runtime, the core component of JishuShell","openclaw.installed":"OpenClaw is installed ({{version}})","openclaw.buildingImage":"Building Docker image, first build may take a few minutes...","openclaw.buildImageBtn":"Build Docker Image","openclaw.installing":"Installing, please wait...","openclaw.installBtn":"Install OpenClaw","openclaw.npmHint":"Installs via npm, requires network connection","done.finalizing":"Finalizing configuration...","done.finalizingDesc":"Writing system configuration, please wait","done.complete":"Environment setup complete","done.completeDesc":"Base environment is ready","provider.title":"Configure Default Model","provider.desc":"New instances will use this configuration by default, can be changed in instance details anytime","provider.label":"Model Provider","provider.placeholder":"Select a provider","provider.apiKey":"API Key","provider.apiKeyPlaceholder":"Enter API Key","provider.defaultModel":"Default Model","provider.skip":"Skip","provider.saving":"Saving...","provider.save":"Save","provider.saved":"Model configuration saved","provider.saveFailed":"Save failed","provider.apiKeyConfigured":"•••••••• (Configured)","provider.saveAndContinue":"Save & Continue","nav.next":"Next","nav.retry":"Retry","nav.enterPanel":"Enter Panel",taskErrorPrefix:lt},dt={"im.feishu.desc":"Feishu bot (WebSocket mode)","im.openclaw-weixin.desc":"WeChat QR code login","skills.group.hubs":"Popular Hubs","skills.group.general":"General","skills.group.productivity":"Productivity","skills.group.life":"Life Assistant","skills.group.dev":"Dev Tools","skills.clawhub.desc":"Official OpenClaw Skill marketplace","skills.skillhub-tencent.label":"Tencent SkillHub","skills.skillhub-tencent.desc":"Tencent's official skill center","skills.skills-sh.desc":"Community skill aggregator","skills.skill-vetter.desc":"Security audit skill — review before installing","skills.self-improving-agent.desc":"Self-improving agent for continuous task optimization","skills.proactive-agent.desc":"Proactive agent that anticipates and completes tasks","skills.multi-search-engine.desc":"Multi search engine aggregation","skills.exa-web-search-free.desc":"Free Exa semantic web search","skills.lobehub-skills.label":"LobeHub Skills","skills.lobehub-skills.desc":"LobeHub community Skill marketplace","skills.findskills.label":"FindSkills.org","skills.findskills.desc":"Open-source skill search and aggregation platform","skills.playbooks-skills.label":"Playbooks Skills","skills.playbooks-skills.desc":"Playbooks community Skill directory","skills.pdf-reader.label":"PDF Reader","skills.pdf-reader.desc":"PDF document reading and analysis","skills.powerpoint-pptx.label":"PowerPoint / PPTX","skills.powerpoint-pptx.desc":"PowerPoint presentation generation and editing","skills.word-docx.label":"Word / DOCX","skills.word-docx.desc":"Word document generation and editing","skills.excel-xlsx.label":"Excel / XLSX","skills.excel-xlsx.desc":"Excel spreadsheet generation and data processing","skills.todo-manager.label":"Todo Manager","skills.todo-manager.desc":"Task and todo list management","skills.12306.label":"12306 Train Tickets","skills.12306.desc":"Search and book 12306 train tickets","skills.youtube-watcher.label":"YouTube Watcher","skills.youtube-watcher.desc":"YouTube video summaries and content analysis","skills.cli-developer.label":"CLI Developer","skills.cli-developer.desc":"Command-line tool development assistant","skills.home-assistant.label":"Home Assistant","skills.home-assistant.desc":"Home Assistant smart home integration","mcp.12306-mcp.label":"12306 Train Ticket MCP","mcp.12306-mcp.desc":"12306 train ticket search tool","slash.group.会话":"Sessions","slash.group.模型":"Models","slash.group.工具":"Tools","slash.slash-new.desc":"Start new session","slash.slash-reset.desc":"Reset current session","slash.slash-compact.desc":"Compress session context","slash.slash-stop.desc":"Stop current execution","slash.slash-clear.desc":"Clear chat history","slash.slash-focus.desc":"Toggle focus mode","slash.slash-model.desc":"View or switch model","slash.slash-think.desc":"Set thinking depth","slash.slash-verbose.desc":"Toggle verbose output","slash.slash-fast.desc":"Toggle fast mode","slash.slash-help.desc":"Show available commands","slash.slash-status.desc":"Show session status (agent)","slash.slash-export.desc":"Export session as Markdown","slash.slash-usage.desc":"Show token usage"},ut=localStorage.getItem("jishushell-lang")||(navigator.language.startsWith("zh")?"zh":"en");le.use(ce).init({resources:{zh:{common:he,dashboard:xe,auth:we,settings:Fe,newInstance:Ne,instance:Be,setup:gn,data:pn},en:{common:mn,dashboard:kn,auth:vn,settings:bn,newInstance:jn,instance:Mn,setup:ct,data:dt}},lng:ut,fallbackLng:"zh",defaultNS:"common",interpolation:{escapeValue:!1}});const gt="modulepreload",pt=function(n){return"/"+n},$={},v=function(t,o,c){let s=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),d=(r==null?void 0:r.nonce)||(r==null?void 0:r.getAttribute("nonce"));s=Promise.allSettled(o.map(g=>{if(g=pt(g),g in $)return;$[g]=!0;const m=g.endsWith(".css"),x=m?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${x}`))return;const u=document.createElement("link");if(u.rel=m?"stylesheet":gt,m||(u.as="script"),u.crossOrigin="",u.href=g,d&&u.setAttribute("nonce",d),document.head.appendChild(u),m)return new Promise((w,f)=>{u.addEventListener("load",w),u.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${g}`)))})}))}function a(r){const d=new Event("vite:preloadError",{cancelable:!0});if(d.payload=r,window.dispatchEvent(d),!d.defaultPrevented)throw r}return s.then(r=>{for(const d of r||[])d.status==="rejected"&&a(d.reason);return t().catch(a)})},N="/api";let y=null;function _(){return y}function mt(n){y=n}function K(){y=null,fetch(`${N}/auth/logout`,{method:"POST",credentials:"same-origin"}).catch(()=>{})}async function i(n,t={}){const o=_(),c={...t.headers||{}};t.body&&(c["Content-Type"]="application/json"),o&&(c.Authorization=`Bearer ${o}`);const s=new AbortController,a=setTimeout(()=>s.abort(),3e4);let r;try{r=await fetch(`${N}${n}`,{...t,headers:c,credentials:"same-origin",signal:s.signal})}catch(d){throw clearTimeout(a),d.name==="AbortError"?new Error("Request timeout"):d}if(clearTimeout(a),r.status===401)throw y=null,window.location.pathname!=="/login"&&(window.dispatchEvent(new CustomEvent("jishushell:auth-expired")),window.location.replace("/login")),new Error("Unauthorized");if(!r.ok){const d=await r.json().catch(()=>({}));throw new Error(d.message||d.error||d.detail||`HTTP ${r.status}`)}return r.status===204||r.headers.get("content-length")==="0"?null:r.json()}async function J(){try{const n={};return y&&(n.Authorization=`Bearer ${y}`),(await fetch(`${N}/instances`,{headers:n,credentials:"same-origin"})).ok}catch{return!1}}const z=()=>i("/auth/status"),ft=n=>i("/auth/init",{method:"POST",body:JSON.stringify({password:n})}),ht=n=>i("/auth/login",{method:"POST",body:JSON.stringify({password:n})}),kt=(n,t)=>i("/auth/change-password",{method:"POST",body:JSON.stringify({old_password:n,new_password:t})}),V=()=>i("/instances"),vt=n=>i(`/instances/${n}`),xt=n=>i(`/instances/${n}/gateway-launch`),wt=n=>i("/instances",{method:"POST",body:JSON.stringify(n)}),bt=n=>i(`/instances/${n}`,{method:"DELETE"}),yt=n=>i(`/instances/${n}/config`),Ft=(n,t)=>i(`/instances/${n}/config`,{method:"PUT",body:JSON.stringify(t)}),St=n=>i(`/instances/${n}/plugins/status`),Ct=(n,t)=>i(`/instances/${n}/plugins/install`,{method:"POST",body:JSON.stringify({channelId:t})}),Pt=(n,t)=>i(`/instances/${n}/feishu/login`,{method:"POST",body:JSON.stringify({channelKey:t||"feishu"})}),It=(n,t)=>i(`/instances/${n}/feishu/login/${t}`),jt=n=>i(`/instances/${n}/pairing/list`),Lt=(n,t,o,c)=>i(`/instances/${n}/pairing/approve`,{method:"POST",body:JSON.stringify({channel:t,code:o,notify:!1})}),Nt=n=>i(`/instances/${n}/weixin/accounts`),At=n=>i(`/instances/${n}/weixin/login`,{method:"POST"}),Ot=(n,t)=>i(`/instances/${n}/weixin/login/${t}`),Tt=n=>i(`/instances/${n}/service/start`,{method:"POST"}),qt=n=>i(`/instances/${n}/service/stop`,{method:"POST"}),Dt=n=>i(`/instances/${n}/service/restart`,{method:"POST"}),Et=n=>i(`/instances/${n}/quick-status`),Rt=n=>i(`/instances/${n}/mcporter/list`),Mt=(n,t)=>i(`/instances/${n}/mcporter/add`,{method:"POST",body:JSON.stringify({servers:t})}),$t=(n,t)=>i(`/instances/${n}/mcporter/${encodeURIComponent(t)}`,{method:"DELETE"}),Bt=(n,t)=>i(`/instances/${n}/skills/${encodeURIComponent(t)}`,{method:"DELETE"}),Ut=(n,t=200,o="stderr")=>i(`/instances/${n}/logs?lines=${t}&log_type=${o}`),Wt=n=>i(`/instances/${n}/usage`),G=()=>i("/system/status"),Ht=()=>i("/system/restart-nomad",{method:"POST"}),_t=()=>i("/system/update-check"),Kt=()=>i("/system/update",{method:"POST"}),Q=()=>{const n={},t=_();return t&&(n.Authorization=`Bearer ${t}`),fetch(`${N}/setup/status`,{headers:n,credentials:"same-origin"}).then(o=>o.json())},Jt=n=>i(`/setup/install/${n}`,{method:"POST"}),zt=n=>i(`/setup/start/${n}`,{method:"POST"}),Vt=()=>i("/setup/upgrade/node",{method:"POST"}),Gt=n=>i("/setup/install/all",{method:"POST",body:JSON.stringify(n||{})}),Qt=()=>i("/setup/default-provider"),Xt=n=>i("/setup/default-provider",{method:"POST",body:JSON.stringify(n)}),Yt=n=>i(`/setup/tasks/${n}`),So=Object.freeze(Object.defineProperty({__proto__:null,addMcporterServers:Mt,approvePairing:Lt,authChangePassword:kt,authInit:ft,authLogin:ht,authStatus:z,checkSession:J,checkUpdate:_t,clearToken:K,createInstance:wt,deleteInstance:bt,deleteMcporterServer:$t,deleteSkill:Bt,getConfig:yt,getDefaultProvider:Qt,getGatewayLaunch:xt,getInstance:vt,getLogs:Ut,getMcporterList:Rt,getPairingList:jt,getPluginStatuses:St,getQuickStatus:Et,getSetupStatus:Q,getSetupTask:Yt,getSystemStatus:G,getUsage:Wt,getWeixinAccounts:Nt,installDep:Jt,installPlugin:Ct,listInstances:V,pollFeishuLogin:It,pollWeixinLogin:Ot,restartNomad:Ht,restartService:Dt,runFullSetup:Gt,runUpdate:Kt,saveConfig:Ft,saveDefaultProvider:Xt,setToken:mt,startDep:zt,startFeishuLogin:Pt,startService:Tt,startWeixinLogin:At,stopService:qt,upgradeNode:Vt},Symbol.toStringTag,{value:"Module"}));function Co({className:n="w-4 h-4"}){return e.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M6 9l6 6 6-6"})})}function Po({className:n="w-4 h-4"}){return e.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M9 18l6-6-6-6"})})}function Zt({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})}function eo({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),e.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function no({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),e.jsx("polyline",{points:"16 17 21 12 16 7"}),e.jsx("line",{x1:"21",y1:"12",x2:"9",y2:"12"})]})}function to({className:n="w-5 h-5"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"4",y1:"6",x2:"20",y2:"6"}),e.jsx("line",{x1:"4",y1:"12",x2:"20",y2:"12"}),e.jsx("line",{x1:"4",y1:"18",x2:"20",y2:"18"})]})}function oo({className:n="w-5 h-5"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function Io({className:n="w-4 h-4"}){return e.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("polygon",{points:"5 3 19 12 5 21 5 3"})})}function jo({className:n="w-4 h-4"}){return e.jsx("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:e.jsx("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"})})}function Lo({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("polyline",{points:"23 4 23 10 17 10"}),e.jsx("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})]})}function No({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),e.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})}function Ao({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"11",cy:"11",r:"8"}),e.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]})}function Oo({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),e.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function To({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),e.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]})}function qo({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"currentColor",children:[e.jsx("circle",{cx:"12",cy:"5",r:"1.5"}),e.jsx("circle",{cx:"12",cy:"12",r:"1.5"}),e.jsx("circle",{cx:"12",cy:"19",r:"1.5"})]})}function Do({className:n="w-4 h-4"}){return e.jsxs("svg",{className:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})}function io({className:n=""}){const{i18n:t,t:o}=T(),c=t.language==="en",s=()=>{const a=c?"zh":"en";t.changeLanguage(a),localStorage.setItem("jishushell-lang",a)};return e.jsxs("button",{onClick:s,title:o("nav.switchLanguage"),className:`inline-flex items-center justify-center gap-1 px-2 py-1 rounded-md text-xs font-medium text-muted hover:bg-[var(--card)] hover:text-foreground border border-[var(--border)] transition-all duration-200 ${n}`,children:[e.jsxs("svg",{className:"w-3 h-3",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("path",{d:"M2 12h20"}),e.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),e.jsx("span",{children:c?"中":"EN"})]})}function so({className:n="",alt:t="JishuShell"}){const[o,c]=l.useState(()=>window.matchMedia("(prefers-color-scheme: dark)").matches);return l.useEffect(()=>{const s=window.matchMedia("(prefers-color-scheme: dark)"),a=r=>c(r.matches);return s.addEventListener("change",a),()=>s.removeEventListener("change",a)},[]),e.jsx("img",{src:o?"/logo-black-theme.png":"/logo-white-theme.png",alt:t,className:n})}const q=l.createContext({showToast:()=>{},instances:[],system:null,refreshInstances:()=>{}});function Eo(){return l.useContext(q)}function Ro(){return l.useContext(q)}function ao({toasts:n,onDismiss:t}){return e.jsx("div",{className:"fixed top-4 right-4 z-50 flex flex-col gap-2 pointer-events-none",children:n.map(o=>e.jsxs("div",{className:`pointer-events-auto flex items-center gap-2 px-4 py-2.5 rounded-lg text-sm shadow-xl border backdrop-blur-sm animate-in slide-in-from-right ${o.type==="error"?"bg-red-500/10 border-red-500/20 text-red-400":o.type==="success"?"bg-emerald-500/10 border-emerald-500/20 text-emerald-400":"bg-amber-500/10 border-amber-500/20 text-amber-400"}`,children:[e.jsx("span",{className:"flex-1",children:o.message}),e.jsx("button",{onClick:()=>t(o.id),className:"text-current opacity-50 hover:opacity-100 ml-2",children:"×"})]},o.id))})}function ro(n){return n==="running"?"bg-emerald-500 shadow-[0_0_6px_rgba(16,185,129,0.6)]":n==="pending"?"bg-amber-400 animate-pulse shadow-[0_0_6px_rgba(251,191,36,0.5)]":n==="failed"||n==="dead"?"bg-red-500 shadow-[0_0_6px_rgba(239,68,68,0.6)]":"bg-[var(--muted)] opacity-40"}function lo({children:n}){var E;const{t}=T(),[o,c]=l.useState([]),[s,a]=l.useState(null),[r,d]=l.useState(!1),[g,m]=l.useState([]),x=U(),u=oe(),w=l.useRef(0),f=l.useCallback(()=>{V().then(c).catch(()=>{}),G().then(a).catch(()=>{})},[]);l.useEffect(()=>{f();const p=setInterval(f,1e4);return()=>clearInterval(p)},[f]),l.useEffect(()=>{d(!1)},[u.pathname]);const F=l.useCallback((p,b="info")=>{const k=++w.current;m(A=>[...A,{id:k,message:p,type:b}]),setTimeout(()=>m(A=>A.filter(Z=>Z.id!==k)),b==="error"?1e4:4e3)},[]),S=p=>{m(b=>b.filter(k=>k.id!==p))},I=()=>{K(),x("/login")},X=(E=u.pathname.match(/^\/instances\/([^/]+)/))==null?void 0:E[1],D=e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("div",{className:"flex items-center gap-2.5 px-4 h-12 border-b border-[var(--border)] shrink-0",children:e.jsx(so,{className:"w-20 h-20 object-contain"})}),e.jsxs("div",{className:"flex-1 overflow-y-auto sidebar-scroll py-1.5",children:[e.jsx("div",{className:"px-3 mb-1 mt-1",children:e.jsx("span",{className:"text-[10px] font-medium text-muted uppercase tracking-wider opacity-70",children:t("nav.instances")})}),o.map(p=>{var k;const b=p.id===X;return e.jsxs(j,{to:`/instances/${p.id}`,className:`flex items-center gap-2 mx-2 px-2 py-1.5 rounded-md text-sm transition-all duration-200 ${b?"bg-[var(--card-hover)] text-foreground font-medium border-l-2 border-[var(--primary)] pl-[6px]":"text-muted hover:bg-[var(--card)] hover:text-foreground"}`,children:[e.jsx("span",{className:`w-1.5 h-1.5 rounded-full shrink-0 ${ro((k=p.service)==null?void 0:k.status)}`}),e.jsx("span",{className:"truncate",children:p.name})]},p.id)}),e.jsxs(j,{to:"/instances/new",className:"flex items-center gap-2 mx-2 px-2 py-1.5 rounded-md text-sm text-muted hover:bg-[var(--card)] hover:text-foreground transition-all duration-200 mt-0.5",children:[e.jsx(Zt,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:t("nav.newInstance")})]})]}),e.jsxs("div",{className:"border-t border-[var(--border)] py-1.5 shrink-0",children:[e.jsx("div",{className:"px-3 mb-1",children:e.jsx("span",{className:"text-[10px] font-medium text-muted uppercase tracking-wider opacity-70",children:t("nav.navigation")})}),e.jsxs(j,{to:"/",className:`flex items-center gap-2 mx-2 px-2 py-1.5 rounded-md text-sm transition-all duration-200 ${u.pathname==="/"?"bg-[var(--card-hover)] text-foreground font-medium border-l-2 border-[var(--primary)] pl-[6px]":"text-muted hover:bg-[var(--card)] hover:text-foreground"}`,children:[e.jsxs("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"3",y:"3",width:"7",height:"7"}),e.jsx("rect",{x:"14",y:"3",width:"7",height:"7"}),e.jsx("rect",{x:"3",y:"14",width:"7",height:"7"}),e.jsx("rect",{x:"14",y:"14",width:"7",height:"7"})]}),e.jsx("span",{children:t("nav.overview")})]}),e.jsxs(j,{to:"/settings",className:`flex items-center gap-2 mx-2 px-2 py-1.5 rounded-md text-sm transition-all duration-200 ${u.pathname==="/settings"?"bg-[var(--card-hover)] text-foreground font-medium border-l-2 border-[var(--primary)] pl-[6px]":"text-muted hover:bg-[var(--card)] hover:text-foreground"}`,children:[e.jsx(eo,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:t("nav.settings")})]}),e.jsxs("button",{onClick:I,className:"flex items-center gap-2 mx-2 px-2 py-1.5 rounded-md text-sm text-muted hover:bg-[var(--card)] hover:text-foreground transition-all duration-200 w-full text-left",children:[e.jsx(no,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:t("nav.logout")})]}),e.jsx("div",{className:"mx-2 mt-1",children:e.jsx(io,{className:"w-full"})})]})]}),Y=l.useMemo(()=>({showToast:F,instances:o,system:s,refreshInstances:f}),[F,o,s,f]);return e.jsxs(q.Provider,{value:Y,children:[e.jsxs("div",{className:"flex h-screen overflow-hidden bg-background",children:[e.jsx("aside",{className:"hidden lg:flex w-52 border-r border-[var(--border)] flex-col shrink-0",style:{background:"var(--sidebar-bg)"},children:D}),r&&e.jsxs("div",{className:"fixed inset-0 z-40 lg:hidden",onClick:()=>d(!1),children:[e.jsx("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm"}),e.jsxs("aside",{className:"absolute left-0 top-0 bottom-0 w-60 border-r border-[var(--border)] shadow-2xl",style:{background:"var(--sidebar-bg)"},onClick:p=>p.stopPropagation(),children:[e.jsx("button",{onClick:()=>d(!1),className:"absolute top-3 right-3 p-1 text-muted hover:text-foreground transition-colors",children:e.jsx(oo,{})}),D]})]}),e.jsxs("main",{className:"flex-1 overflow-y-auto bg-background",children:[e.jsxs("div",{className:"lg:hidden flex items-center gap-3 px-4 h-11 border-b border-[var(--border)] bg-background sticky top-0 z-10",children:[e.jsx("button",{onClick:()=>d(!0),className:"text-muted hover:text-foreground transition-colors",children:e.jsx(to,{})}),e.jsx("span",{className:"font-semibold text-sm text-foreground",children:"JishuShell"})]}),n]})]}),e.jsx(ao,{toasts:g,onDismiss:S})]})}const co=l.lazy(()=>v(()=>import("./Login-RkjzTNWg.js"),__vite__mapDeps([0,1,2]))),uo=l.lazy(()=>v(()=>import("./InitPassword-CkehIkJG.js"),__vite__mapDeps([3,1,2]))),go=l.lazy(()=>v(()=>import("./Setup-RRTIERGG.js"),__vite__mapDeps([4,1,5,2]))),po=l.lazy(()=>v(()=>import("./Dashboard-CAOQDYDR.js"),__vite__mapDeps([6,1,7,2]))),mo=l.lazy(()=>v(()=>import("./InstanceDetail-CzW2S95J.js"),__vite__mapDeps([8,1,7,5,2]))),fo=l.lazy(()=>v(()=>import("./NewInstance-DdbErdjA.js"),__vite__mapDeps([9,1,2]))),ho=l.lazy(()=>v(()=>import("./Settings-BUD7zwv9.js"),__vite__mapDeps([10,1,5,2])));class ko extends l.Component{constructor(){super(...arguments);R(this,"state",{hasError:!1,error:null})}static getDerivedStateFromError(o){return{hasError:!0,error:o}}componentDidCatch(o,c){console.error("[ErrorBoundary]",o,c.componentStack)}render(){var o;return this.state.hasError?e.jsx("div",{className:"flex items-center justify-center min-h-screen bg-background",children:e.jsxs("div",{className:"text-center space-y-4",children:[e.jsx("div",{className:"text-red-400 text-lg font-medium",children:"UI Error"}),e.jsx("p",{className:"text-muted text-sm max-w-md",children:(o=this.state.error)==null?void 0:o.message}),e.jsx("button",{onClick:()=>{this.setState({hasError:!1,error:null}),window.location.reload()},className:"px-4 py-2 bg-[#0066FF] text-white text-sm rounded-md hover:bg-[#0066FF]/90 transition-colors",children:"Reload"})]})}):this.props.children}}function B(){const{id:n}=se();return e.jsx(mo,{},n)}function vo({authed:n,children:t}){return n?e.jsx(e.Fragment,{children:t}):e.jsx(P,{to:"/login",replace:!0})}function C({authed:n,setupDone:t,children:o}){return n?t?e.jsx(lo,{children:o}):e.jsx(P,{to:"/setup",replace:!0}):e.jsx(P,{to:"/login",replace:!0})}function xo(){const{t:n}=T(),[t,o]=l.useState(!0),[c,s]=l.useState(!0),[a,r]=l.useState(!0),[d,g]=l.useState(!1),[m,x]=l.useState(!1),u=U(),w=()=>{x(!1),o(!0),Promise.all([z(),Q().catch(()=>({ready:!0,providerConfigured:!0}))]).then(async([F,S])=>{if(s(F.initialized),r(S.ready&&S.providerConfigured!==!1),!F.initialized)u("/init",{replace:!0});else{const I=await J();g(I),I&&!S.ready&&u("/setup",{replace:!0})}o(!1)}).catch(()=>{x(!0),o(!1)})};if(l.useEffect(()=>{w()},[]),t)return e.jsx("div",{className:"flex items-center justify-center min-h-screen bg-background",children:e.jsx("div",{className:"w-5 h-5 border-2 border-[var(--border)] border-t-foreground rounded-full animate-spin"})});if(m)return e.jsx("div",{className:"flex items-center justify-center min-h-screen bg-background",children:e.jsxs("div",{className:"text-center space-y-4",children:[e.jsx("div",{className:"text-red-400 text-lg font-medium",children:n("error.connectionFailed")}),e.jsx("p",{className:"text-muted text-sm",children:n("error.checkBackend")}),e.jsx("button",{onClick:w,className:"px-4 py-2 bg-[#0066FF] text-white text-sm rounded-md hover:bg-[#0066FF]/90 transition-colors",children:n("action.retry")})]})});const f=e.jsx("div",{className:"flex items-center justify-center min-h-screen bg-background",children:e.jsx("div",{className:"w-5 h-5 border-2 border-[var(--border)] border-t-foreground rounded-full animate-spin"})});return e.jsx(ko,{children:e.jsx(l.Suspense,{fallback:f,children:e.jsxs(ie,{children:[e.jsx(h,{path:"/init",element:e.jsx(uo,{onDone:()=>{s(!0),g(!0),r(!1),u("/setup",{replace:!0})}})}),e.jsx(h,{path:"/setup",element:e.jsx(vo,{authed:d,children:e.jsx(go,{onDone:()=>{r(!0),u("/",{replace:!0})}})})}),e.jsx(h,{path:"/login",element:c?e.jsx(co,{onLogin:()=>g(!0)}):e.jsx(P,{to:"/init",replace:!0})}),e.jsx(h,{path:"/",element:e.jsx(C,{authed:d,setupDone:a,children:e.jsx(po,{})})}),e.jsx(h,{path:"/instances/new",element:e.jsx(C,{authed:d,setupDone:a,children:e.jsx(fo,{})})}),e.jsx(h,{path:"/instances/:id",element:e.jsx(C,{authed:d,setupDone:a,children:e.jsx(B,{})})}),e.jsx(h,{path:"/instances/:id/:tab",element:e.jsx(C,{authed:d,setupDone:a,children:e.jsx(B,{})})}),e.jsx(h,{path:"/settings",element:e.jsx(C,{authed:d,setupDone:a,children:e.jsx(ho,{})})}),e.jsx(h,{path:"*",element:e.jsx(P,{to:"/",replace:!0})})]})})})}O.createRoot(document.getElementById("root")).render(e.jsx(ae.StrictMode,{children:e.jsx(re,{children:e.jsx(xo,{})})}));export{Ut as $,Nt as A,Pt as B,At as C,It as D,Ot as E,Ao as F,No as G,Et as H,To as I,Rt as J,vt as K,io as L,xt as M,St as N,yt as O,Wt as P,Do as Q,eo as R,jt as S,so as T,Lt as U,Bt as V,Mt as W,$t as X,qo as Y,Ct as Z,v as _,Oo as a,Ft as a0,bt as a1,wt as a2,Ro as a3,Qt as a4,kt as a5,So as a6,ht as b,ft as c,Yt as d,Xt as e,zt as f,Q as g,Eo as h,Jt as i,e as j,_t as k,Lo as l,jo as m,Io as n,V as o,G as p,Kt as q,Gt as r,mt as s,Ht as t,Vt as u,Tt as v,qt as w,Dt as x,Co as y,Po as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=[{id:"minimax",label:"MiniMax (国内)",group:"国内厂商",baseUrl:"https://api.minimaxi.com/v1",api:"openai-completions",models:[{id:"MiniMax-M2.7",name:"MiniMax M2.7",contextWindow:204800},{id:"MiniMax-M2.7-highspeed",name:"MiniMax M2.7 Highspeed",contextWindow:204800}]},{id:"minimax-intl",label:"MiniMax (国际)",group:"国际厂商",baseUrl:"https://api.minimax.io/anthropic",api:"anthropic-messages",authHeader:!0,models:[{id:"MiniMax-M2.7",name:"MiniMax M2.7",contextWindow:204800},{id:"MiniMax-M2.7-highspeed",name:"MiniMax M2.7 Highspeed",contextWindow:204800}]},{id:"moonshot",label:"Kimi (Moonshot)",group:"国内厂商",baseUrl:"https://api.moonshot.cn/v1",api:"openai-completions",models:[{id:"kimi-k2.5",name:"Kimi K2.5",contextWindow:256e3},{id:"moonshot-v1-128k",name:"Moonshot V1 128K",contextWindow:128e3},{id:"moonshot-v1-32k",name:"Moonshot V1 32K",contextWindow:32e3},{id:"moonshot-v1-8k",name:"Moonshot V1 8K",contextWindow:8e3}]},{id:"moonshot-coding",label:"Kimi (编码计划)",group:"国内厂商",baseUrl:"https://api.moonshot.cn/anthropic",api:"anthropic-messages",authHeader:!0,models:[{id:"kimi-k2.5",name:"Kimi K2.5",contextWindow:256e3},{id:"kimi-k2-thinking-turbo",name:"Kimi K2 Thinking Turbo",contextWindow:256e3},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking",contextWindow:256e3},{id:"kimi-k2-0905-preview",name:"Kimi K2 0905 Preview",contextWindow:256e3},{id:"kimi-k2-turbo-preview",name:"Kimi K2 Turbo Preview",contextWindow:256e3}]},{id:"moonshot-intl",label:"Kimi (国际)",group:"国际厂商",baseUrl:"https://api.moonshot.ai/v1",api:"openai-completions",models:[{id:"kimi-k2.5",name:"Kimi K2.5",contextWindow:256e3},{id:"moonshot-v1-128k",name:"Moonshot V1 128K",contextWindow:128e3}]},{id:"zhipu",label:"智谱AI (GLM)",group:"国内厂商",baseUrl:"https://open.bigmodel.cn/api/paas/v4",api:"openai-completions",models:[{id:"glm-5.1",name:"GLM-5.1",contextWindow:2e5},{id:"glm-5",name:"GLM-5",contextWindow:2e5},{id:"glm-5-turbo",name:"GLM-5 Turbo",contextWindow:2e5},{id:"glm-4.7",name:"GLM-4.7",contextWindow:2e5},{id:"glm-4.7-flashx",name:"GLM-4.7 FlashX",contextWindow:2e5},{id:"glm-4.7-flash",name:"GLM-4.7 Flash (免费)",contextWindow:2e5},{id:"glm-4-plus",name:"GLM-4 Plus",contextWindow:128e3},{id:"glm-4-long",name:"GLM-4 Long",contextWindow:1e6}]},{id:"zhipu-intl",label:"Z.AI (GLM)",group:"国际厂商",baseUrl:"https://api.z.ai/api/paas/v4",api:"openai-completions",models:[{id:"glm-5.1",name:"GLM-5.1",contextWindow:2e5},{id:"glm-5",name:"GLM-5",contextWindow:2e5},{id:"glm-5-turbo",name:"GLM-5 Turbo",contextWindow:2e5},{id:"glm-4.7",name:"GLM-4.7",contextWindow:2e5},{id:"glm-4.7-flash",name:"GLM-4.7 Flash",contextWindow:2e5},{id:"glm-4-plus",name:"GLM-4 Plus",contextWindow:128e3}]},{id:"byteplus",label:"火山引擎国际版 (Doubao)",group:"国际厂商",baseUrl:"https://ark.ap-southeast.bytepluses.com/api/v3",api:"openai-completions",models:[{id:"seed-2-0-lite-260228",name:"Seed 2.0 Lite",contextWindow:256e3},{id:"seed-2-0-mini-260215",name:"Seed 2.0 Mini",contextWindow:256e3},{id:"seed-1-8-251228",name:"Seed 1.8",contextWindow:256e3}]},{id:"deepseek",label:"DeepSeek",group:"国内厂商",baseUrl:"https://api.deepseek.com/v1",api:"openai-completions",models:[{id:"deepseek-chat",name:"DeepSeek V3.2",contextWindow:128e3},{id:"deepseek-reasoner",name:"DeepSeek V3.2 (推理)",contextWindow:128e3}]},{id:"dashscope",label:"阿里云百炼",group:"国内厂商",baseUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1",api:"openai-completions",models:[{id:"qwen3.5-plus",name:"Qwen 3.5 Plus",contextWindow:1e6},{id:"qwen3.5-flash",name:"Qwen 3.5 Flash",contextWindow:1e6},{id:"qwen3-max",name:"Qwen 3 Max",contextWindow:262144},{id:"qwen3-coder-plus",name:"Qwen 3 Coder Plus",contextWindow:1e6},{id:"qwen3-coder-next",name:"Qwen 3 Coder Next",contextWindow:262144},{id:"qwen3-coder-flash",name:"Qwen 3 Coder Flash",contextWindow:1e6},{id:"qwen-plus",name:"Qwen Plus",contextWindow:1e6},{id:"qwen-long",name:"Qwen Long (10M)",contextWindow:1e7}]},{id:"modelstudio",label:"阿里云百炼 (国际/Coding)",group:"国内厂商",baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1",api:"openai-completions",models:[{id:"qwen3.5-plus",name:"Qwen 3.5 Plus",contextWindow:1e6},{id:"qwen3-coder-plus",name:"Qwen 3 Coder Plus",contextWindow:1e6},{id:"qwen3-coder-next",name:"Qwen 3 Coder Next",contextWindow:262144}]},{id:"volcengine",label:"火山引擎 (豆包)",group:"国内厂商",baseUrl:"https://ark.cn-beijing.volces.com/api/v3",api:"openai-completions",models:[{id:"doubao-seed-2-0-pro-260215",name:"Doubao Seed 2.0 Pro (需替换为接入点ID)",contextWindow:256e3},{id:"doubao-seed-2-0-lite-260228",name:"Doubao Seed 2.0 Lite (需替换为接入点ID)",contextWindow:256e3},{id:"doubao-seed-2-0-code-preview-260215",name:"Doubao Seed 2.0 Code (需替换为接入点ID)",contextWindow:256e3},{id:"doubao-seed-2-0-mini-260215",name:"Doubao Seed 2.0 Mini (需替换为接入点ID)",contextWindow:256e3},{id:"doubao-seed-1-8-251228",name:"Doubao Seed 1.8 (需替换为接入点ID)",contextWindow:256e3}]},{id:"qianfan",label:"百度千帆 (ERNIE)",group:"国内厂商",baseUrl:"https://qianfan.baidubce.com/v2",api:"openai-completions",models:[{id:"ernie-5.0",name:"ERNIE 5.0",contextWindow:128e3},{id:"ernie-5.0-thinking-preview",name:"ERNIE 5.0 Thinking",contextWindow:128e3},{id:"ernie-4.5-turbo-128k",name:"ERNIE 4.5 Turbo (MoE)",contextWindow:128e3},{id:"ernie-x1.1",name:"ERNIE X1.1 (推理)",contextWindow:64e3},{id:"deepseek-v3.2",name:"DeepSeek V3.2 (千帆)",contextWindow:128e3}]},{id:"tencent",label:"腾讯混元",group:"国内厂商",baseUrl:"https://api.hunyuan.cloud.tencent.com/v1",api:"openai-completions",models:[{id:"hunyuan-2.0-thinking-20251109",name:"Hunyuan 2.0 Think (推理)",contextWindow:128e3},{id:"hunyuan-2.0-instruct-20251111",name:"Hunyuan 2.0 Instruct",contextWindow:128e3},{id:"hunyuan-t1-latest",name:"Hunyuan T1 (推理)",contextWindow:32e3},{id:"hunyuan-turbos-latest",name:"Hunyuan TurboS",contextWindow:32e3},{id:"hunyuan-a13b",name:"Hunyuan A13B (MoE)",contextWindow:224e3},{id:"hunyuan-lite",name:"Hunyuan Lite (免费)",contextWindow:25e4}]},{id:"xiaomi",label:"MiMo (小米)",group:"国内厂商",baseUrl:"https://api.xiaomimimo.com/v1",api:"openai-completions",models:[{id:"mimo-v2-pro",name:"MiMo V2 Pro (推理)",contextWindow:1048576},{id:"mimo-v2-omni",name:"MiMo V2 Omni (多模)",contextWindow:262144},{id:"mimo-v2-flash",name:"MiMo V2 Flash",contextWindow:262144}]},{id:"spark",label:"讯飞星火",group:"国内厂商",baseUrl:"https://spark-api-open.xf-yun.com/v1",api:"openai-completions",models:[{id:"spark-x",name:"Spark X1.5 (推理)",contextWindow:32768},{id:"4.0Ultra",name:"Spark 4.0 Ultra",contextWindow:32768},{id:"pro-128k",name:"Spark Pro 128K",contextWindow:131072},{id:"lite",name:"Spark Lite (免费)",contextWindow:8192}]},{id:"stepfun",label:"阶跃星辰",group:"国内厂商",baseUrl:"https://api.stepfun.com/v1",api:"openai-completions",models:[{id:"step-3.5-flash",name:"Step 3.5 Flash (推理)",contextWindow:262144},{id:"step-3",name:"Step 3 (多模推理)",contextWindow:65536},{id:"step-2-mini",name:"Step 2 Mini",contextWindow:32e3},{id:"step-1o-turbo-vision",name:"Step 1o Turbo Vision",contextWindow:32e3},{id:"step-1-256k",name:"Step 1 256K",contextWindow:256e3}]},{id:"openai",label:"OpenAI",group:"国际厂商",baseUrl:"https://api.openai.com/v1",api:"openai-completions",models:[{id:"gpt-5.4",name:"GPT-5.4",contextWindow:105e4},{id:"gpt-5.4-pro",name:"GPT-5.4 Pro",contextWindow:105e4},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextWindow:4e5},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano",contextWindow:4e5},{id:"o3-pro",name:"o3-pro (推理)",contextWindow:2e5},{id:"o3",name:"o3 (推理)",contextWindow:2e5},{id:"o4-mini",name:"o4-mini (推理)",contextWindow:2e5},{id:"gpt-4.1",name:"GPT-4.1",contextWindow:1e6},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini",contextWindow:1e6}]},{id:"anthropic",label:"Anthropic (Claude)",group:"国际厂商",baseUrl:"https://api.anthropic.com",api:"anthropic-messages",models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6",contextWindow:1e6},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindow:1e6},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindow:2e5}]},{id:"google",label:"Google Gemini",group:"国际厂商",baseUrl:"https://generativelanguage.googleapis.com",api:"google-generative-ai",models:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro (Preview)",contextWindow:1048576},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash (Preview)",contextWindow:1048576},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite (Preview)",contextWindow:1048576},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",contextWindow:1048576},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro",contextWindow:1048576}]},{id:"mistral",label:"Mistral AI",group:"国际厂商",baseUrl:"https://api.mistral.ai/v1",api:"openai-completions",models:[{id:"mistral-large-latest",name:"Mistral Large 3",contextWindow:262144},{id:"mistral-small-latest",name:"Mistral Small 4",contextWindow:256e3},{id:"codestral-latest",name:"Codestral (代码)",contextWindow:256e3},{id:"devstral-latest",name:"Devstral 2 (代码Agent)",contextWindow:256e3},{id:"devstral-2-latest",name:"Devstral 2 123B (代码)",contextWindow:256e3},{id:"magistral-medium-latest",name:"Magistral Medium (推理)",contextWindow:4e4}]},{id:"xai",label:"xAI (Grok)",group:"国际厂商",baseUrl:"https://api.x.ai/v1",api:"openai-completions",models:[{id:"grok-4.20-0309-reasoning",name:"Grok 4.20 (推理)",contextWindow:2e6},{id:"grok-4-1-fast-reasoning",name:"Grok 4 Fast (推理)",contextWindow:2e6},{id:"grok-4-1-fast-non-reasoning",name:"Grok 4 Fast",contextWindow:2e6},{id:"grok-4",name:"Grok 4",contextWindow:256e3},{id:"grok-code-fast-1",name:"Grok Code Fast 1 (代码)",contextWindow:256e3},{id:"grok-3",name:"Grok 3",contextWindow:131072},{id:"grok-3-mini",name:"Grok 3 Mini",contextWindow:131072}]},{id:"cohere",label:"Cohere",group:"国际厂商",baseUrl:"https://api.cohere.com/compatibility/v1",api:"openai-completions",models:[{id:"command-a-03-2025",name:"Command A",contextWindow:256e3},{id:"command-a-reasoning-08-2025",name:"Command A (推理)",contextWindow:256e3},{id:"command-a-vision-07-2025",name:"Command A (视觉)",contextWindow:128e3},{id:"command-r-plus-08-2024",name:"Command R+",contextWindow:128e3},{id:"command-r-08-2024",name:"Command R",contextWindow:128e3}]},{id:"groq",label:"Groq",group:"推理加速",baseUrl:"https://api.groq.com/openai/v1",api:"openai-completions",models:[{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B",contextWindow:131072},{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B",contextWindow:131072},{id:"meta-llama/llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout 17B",contextWindow:128e3},{id:"qwen/qwen3-32b",name:"Qwen 3 32B",contextWindow:128e3},{id:"llama-3.1-8b-instant",name:"Llama 3.1 8B",contextWindow:131072}]},{id:"fireworks",label:"Fireworks AI",group:"推理加速",baseUrl:"https://api.fireworks.ai/inference/v1",api:"openai-completions",models:[{id:"accounts/fireworks/models/deepseek-v3",name:"DeepSeek V3",contextWindow:131072},{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1",contextWindow:163840},{id:"accounts/fireworks/models/deepseek-v3p2",name:"DeepSeek V3.2",contextWindow:163840},{id:"accounts/fireworks/models/deepseek-r1",name:"DeepSeek R1",contextWindow:163840},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B",contextWindow:131072},{id:"accounts/fireworks/models/qwen2.5-coder-32b-instruct",name:"Qwen 2.5 Coder 32B",contextWindow:32768}]},{id:"sambanova",label:"SambaNova",group:"推理加速",baseUrl:"https://api.sambanova.ai/v1",api:"openai-completions",models:[{id:"gpt-oss-120b",name:"GPT-OSS 120B",contextWindow:131072},{id:"DeepSeek-R1-0528",name:"DeepSeek R1",contextWindow:65536},{id:"DeepSeek-V3-0324",name:"DeepSeek V3",contextWindow:65536},{id:"DeepSeek-V3.1",name:"DeepSeek V3.1",contextWindow:65536},{id:"DeepSeek-V3.2",name:"DeepSeek V3.2",contextWindow:65536},{id:"Meta-Llama-3.3-70B-Instruct",name:"Llama 3.3 70B",contextWindow:131072},{id:"Qwen3-235B",name:"Qwen 3 235B",contextWindow:65536}]},{id:"cerebras",label:"Cerebras",group:"推理加速",baseUrl:"https://api.cerebras.ai/v1",api:"openai-completions",models:[{id:"gpt-oss-120b",name:"GPT-OSS 120B",contextWindow:131072},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen 3 235B (MoE)",contextWindow:131072},{id:"zai-glm-4.7",name:"Z.AI GLM 4.7",contextWindow:131072},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout 17B",contextWindow:131072}]},{id:"hyperbolic",label:"Hyperbolic",group:"推理加速",baseUrl:"https://api.hyperbolic.xyz/v1",api:"openai-completions",models:[{id:"gpt-oss-120b",name:"GPT-OSS 120B",contextWindow:131072},{id:"deepseek-ai/DeepSeek-V3-0324",name:"DeepSeek V3",contextWindow:131072},{id:"deepseek-ai/DeepSeek-R1-0528",name:"DeepSeek R1",contextWindow:131072},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B",contextWindow:131072}]},{id:"openrouter",label:"OpenRouter",group:"聚合平台",baseUrl:"https://openrouter.ai/api/v1",api:"openai-completions",models:[{id:"openrouter/auto",name:"Auto (自动选择)",contextWindow:2e6},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6",contextWindow:1e6},{id:"openai/gpt-4.1",name:"GPT-4.1",contextWindow:1e6},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash",contextWindow:1048576},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1",contextWindow:128e3},{id:"deepseek/deepseek-r1-0528",name:"DeepSeek R1",contextWindow:163840}]},{id:"together",label:"Together AI",group:"聚合平台",baseUrl:"https://api.together.xyz/v1",api:"openai-completions",models:[{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1",contextWindow:131072},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1",contextWindow:163840},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5",contextWindow:262144},{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo",contextWindow:131072},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",name:"Qwen 3 Coder 480B",contextWindow:131072}]},{id:"siliconflow",label:"SiliconFlow",group:"聚合平台",baseUrl:"https://api.siliconflow.cn/v1",api:"openai-completions",models:[{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3",contextWindow:128e3},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1",contextWindow:128e3},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B (MoE)",contextWindow:131072},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5",contextWindow:262144},{id:"Pro/deepseek-ai/DeepSeek-V3",name:"DeepSeek V3 (Pro)",contextWindow:128e3}]},{id:"perplexity",label:"Perplexity",group:"聚合平台",baseUrl:"https://api.perplexity.ai",api:"openai-completions",models:[{id:"sonar-pro",name:"Sonar Pro (联网)",contextWindow:2e5},{id:"sonar",name:"Sonar (联网)",contextWindow:127072},{id:"sonar-reasoning-pro",name:"Sonar Reasoning Pro (联网推理)",contextWindow:128e3},{id:"sonar-deep-research",name:"Sonar Deep Research (深度研究)",contextWindow:128e3}]},{id:"deepinfra",label:"DeepInfra",group:"聚合平台",baseUrl:"https://api.deepinfra.com/v1/openai",api:"openai-completions",models:[{id:"deepseek-ai/DeepSeek-V3-0324",name:"DeepSeek V3",contextWindow:131072},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1",contextWindow:131072},{id:"deepseek-ai/DeepSeek-R1-0528-Turbo",name:"DeepSeek R1 Turbo",contextWindow:131072},{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo",contextWindow:131072},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen 3 235B",contextWindow:131072},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B",contextWindow:32768}]},{id:"nvidia",label:"NVIDIA NIM",group:"聚合平台",baseUrl:"https://integrate.api.nvidia.com/v1",api:"openai-completions",models:[{id:"meta/llama-3.3-70b-instruct",name:"Llama 3.3 70B",contextWindow:131072},{id:"deepseek-ai/deepseek-r1",name:"DeepSeek R1",contextWindow:131072}]},{id:"huggingface",label:"Hugging Face",group:"聚合平台",baseUrl:"https://router.huggingface.co/v1",api:"openai-completions",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B",contextWindow:131072},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B",contextWindow:32768}]},{id:"novita",label:"Novita AI",group:"聚合平台",baseUrl:"https://api.novita.ai/v3/openai",api:"openai-completions",models:[{id:"deepseek/deepseek-chat-v3-0324",name:"DeepSeek V3",contextWindow:131072},{id:"deepseek/deepseek-r1",name:"DeepSeek R1",contextWindow:131072},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B",contextWindow:131072}]},{id:"infini",label:"Infini-AI",group:"聚合平台",baseUrl:"https://cloud.infini-ai.com/maas/v1",api:"openai-completions",models:[{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3",contextWindow:128e3},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1",contextWindow:128e3}]},{id:"venice",label:"Venice AI",group:"聚合平台",baseUrl:"https://api.venice.ai/api/v1",api:"openai-completions",models:[{id:"kimi-k2-5",name:"Kimi K2.5",contextWindow:262144}]},{id:"vercel-ai-gateway",label:"Vercel AI Gateway",group:"聚合平台",baseUrl:"https://ai-gateway.vercel.sh",api:"anthropic-messages",models:[{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6",contextWindow:2e5}]},{id:"synthetic",label:"Synthetic",group:"聚合平台",baseUrl:"https://api.synthetic.new/anthropic",api:"anthropic-messages",models:[{id:"hf:MiniMaxAI/MiniMax-M2.7",name:"MiniMax M2.7",contextWindow:204800},{id:"hf:MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5",contextWindow:204800}]},{id:"opencode",label:"OpenCode Zen",group:"聚合平台",baseUrl:"https://opencode.ai/zen/v1",api:"openai-completions",models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6",contextWindow:2e5}]},{id:"ollama",label:"Ollama (本地)",group:"本地部署",baseUrl:"http://127.0.0.1:11434",api:"ollama",models:[]},{id:"vllm",label:"vLLM (本地)",group:"本地部署",baseUrl:"http://127.0.0.1:8000/v1",api:"openai-completions",models:[]},{id:"sglang",label:"SGLang (本地)",group:"本地部署",baseUrl:"http://127.0.0.1:30000/v1",api:"openai-completions",models:[]}];export{e as P};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r}from"./vendor-react-DONn7uBV.js";function i(n,u,c=!0){const s=r.useRef(n);s.current=n;const t=r.useRef(!1),e=r.useCallback(async()=>{if(!t.current){t.current=!0;try{await s.current()}finally{t.current=!1}}},[]);r.useEffect(()=>{if(!c)return;e();const f=setInterval(e,u);return()=>clearInterval(f)},[u,c,e])}export{i as u};
|