@snowlocked/dsh-k8s-console 0.3.0 → 0.3.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/lib/client.js +263 -163
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -5,73 +5,121 @@ window.__ModuleLoader__.load({
|
|
|
5
5
|
var __dsh_k8s_internal = { exports: {} };
|
|
6
6
|
var __dsh_k8s_exports = __dsh_k8s_internal.exports;
|
|
7
7
|
Object.defineProperty(__dsh_k8s_exports, Symbol.toStringTag, { value: "Module" });
|
|
8
|
-
"use strict";var __dsh_k8s_module__=(()=>{var
|
|
8
|
+
"use strict";var __dsh_k8s_module__=(()=>{var de=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Qe=Object.getOwnPropertyNames;var Ze=Object.prototype.hasOwnProperty;var E=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,o)=>(typeof require<"u"?require:t)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var et=(e,t)=>{for(var o in t)de(e,o,{get:t[o],enumerable:!0})},tt=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Qe(t))!Ze.call(e,a)&&a!==o&&de(e,a,{get:()=>t[a],enumerable:!(n=Ge(t,a))||n.enumerable});return e};var nt=e=>tt(de({},"__esModule",{value:!0}),e);var ft={};et(ft,{apply:()=>bt,inject:()=>kt});var ne=E("react");var ot=E("react");var he="dsh-k8s-console.persist.v1";function pe(){try{let e=window.localStorage.getItem(he);if(!e)return{};let t=JSON.parse(e);return t&&typeof t=="object"?t:{}}catch{return{}}}function ye(e){try{let t={...pe(),...e};window.localStorage.setItem(he,JSON.stringify(t))}catch{}}var ee=pe().panelOpen===!0,ke=new Set,we=e=>{if(typeof document>"u")return;let t=0,o=()=>{let n=Array.from(document.querySelectorAll('[role="tab"]')).filter(a=>a.closest("#dsh-k8s-console")===null).filter(a=>a.closest("#dsh-database-console")===null).find(a=>{let k=a.textContent?.trim().toLowerCase()??"",s=`${a.getAttribute("aria-label")??""} ${a.title??""}`.toLowerCase();return e==="k8s"?k==="k8s"||s.includes("k8s"):k==="chat"||k==="\u5BF9\u8BDD"||s.includes("chat")||s.includes("\u5BF9\u8BDD")});if(n!==void 0){n.click();return}++t<8&&setTimeout(o,16)};o()},Ne=()=>{for(let e of ke)e()},Ce=!1,Pe=Object.freeze({panelOpen:!0}),Ee=Object.freeze({panelOpen:!1}),ue=ee?Pe:Ee,Se=()=>{try{ye({panelOpen:ee})}catch{}},F={open(){ee||(ee=!0,ue=Pe,Se(),Ne()),we("k8s")},close(){ee=!1,ue=Ee,Se(),Ne(),we("chat")},toggle(){Ce?F.close():F.open()},setDocked(e){Ce=e},getSnapshot:()=>ue,subscribe(e){return ke.add(e),()=>ke.delete(e)}};var J=E("react/jsx-runtime"),rt=(0,J.jsxs)("svg",{viewBox:"0 0 16 16",width:"16",height:"16",fill:"none",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,J.jsx)("circle",{cx:"8",cy:"8",r:"1.4",fill:"currentColor",stroke:"none"}),(0,J.jsx)("circle",{cx:"8",cy:"2.6",r:"1.05",fill:"currentColor",stroke:"none"}),(0,J.jsx)("circle",{cx:"8",cy:"13.4",r:"1.05",fill:"currentColor",stroke:"none"}),(0,J.jsx)("circle",{cx:"2.6",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),(0,J.jsx)("circle",{cx:"13.4",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),(0,J.jsx)("path",{d:"M8 4v2.6M8 9.4V12M4.6 6.6l2.2 1.4M9.2 8l2.2 1.4M4.6 9.4l2.2-1.4M9.2 8l2.2-1.4"})]});function Te(e={}){let{wide:t=!0,t:o=(s=>s)}=e,n=o,a=(0,ne.useSyncExternalStore)(F.subscribe,F.getSnapshot,F.getSnapshot),k=(0,ne.useCallback)(()=>{F.toggle()},[]);return(0,J.jsxs)("button",{type:"button","data-d-sh-plugin":"k8s-console","data-active":a.panelOpen||void 0,"aria-label":n("sidebar.aria"),title:n("sidebar.title"),onClick:k,className:"kc-sidebar-entry",children:[(0,J.jsx)("span",{className:"kc-sidebar-entry-icon","aria-hidden":"true",children:rt}),t?(0,J.jsx)("span",{className:"kc-sidebar-entry-label",children:n("sidebar.label")}):null]})}var oe=E("react"),Ve=E("react-dom/client");var R=E("react");var $e="/api/dsh-plugin-k8s",U=class extends Error{status;code;constructor(t,o,n){super(t),this.status=o,this.code=n}};async function W(e){return e instanceof U||e instanceof Error?e.message:typeof e=="string"?e:JSON.stringify(e)}function Ke(e){return{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e??{})}}async function Z(e,t){let o;try{o=await fetch(`${$e}${e}`,Ke(t))}catch(a){throw new U(`\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF1A${a instanceof Error?a.message:String(a)}`,0)}let n=null;try{n=await o.json()}catch{n=null}if(!o.ok){let a=n&&typeof n=="object"?n:{};throw new U(String(a.error??`HTTP ${o.status}`),o.status,String(a.code??""))}return n}async function Ae(e,t,o,n){let a;try{a=await fetch(`${$e}${e}`,{...Ke(t),...n?{signal:n}:{}})}catch(f){throw n?.aborted?f:new U(`\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF1A${f instanceof Error?f.message:String(f)}`,0)}if(!a.ok||!a.body){let f=`HTTP ${a.status}`;try{let b=await a.json();b?.error&&(f=b.error)}catch{}throw new U(f,a.status)}let k=a.body.getReader(),s=new TextDecoder("utf-8"),v="";for(;;){let f;try{f=await k.read()}catch(y){throw n?.aborted?y:new U(`\u8BFB\u53D6\u6D41\u5931\u8D25\uFF1A${y instanceof Error?y.message:String(y)}`,0)}if(f.done)break;v+=s.decode(f.value,{stream:!0});let b;for(;(b=v.indexOf(`
|
|
9
9
|
|
|
10
|
-
`))>=0;){let y=
|
|
10
|
+
`))>=0;){let y=v.slice(0,b);if(v=v.slice(b+2),y.startsWith("data: ")){let A=y.slice(6).trim();if(!A)continue;try{o(JSON.parse(A))}catch{}}}}if(v.startsWith("data: ")){let f=v.slice(6).trim();if(f)try{o(JSON.parse(f))}catch{}}}var B={state:e=>Z("/state",e?{refresh:!0}:{}),kubeconfigs:()=>Z("/kubeconfigs/list"),save:e=>Z("/kubeconfigs/save",e),remove:e=>Z("/kubeconfig/remove",{id:e}),raw:e=>Z("/kubeconfig/raw",{id:e}),check:e=>Z("/kubeconfigs/check",{id:e}),aiModels:()=>Z("/ai/models"),run:(e,t,o)=>Ae("/run",e,t,o),chat:(e,t,o)=>Ae("/ai/chat",e,t,o)};function ze(e){let t=[];for(let o of e.providers)if(o.models.length===0)t.push({key:`p:${o.provider}`,provider:o.provider,label:o.label??o.provider});else for(let n of o.models)t.push({key:`m:${o.provider}/${n.id}`,provider:o.provider,model:n.id,label:n.label??`${o.provider} \xB7 ${n.id}`});return t}function Re(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function be(e){if(!e)return"\u2014";let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString("zh-CN",{hour12:!1})}var H=E("react");var p=E("react/jsx-runtime"),fe={open:!1,name:"",mode:"paste",content:"",filePath:"",busy:!1,error:null};function Me(e){let{kubeconfigs:t,busyList:o,refresh:n,onOpenSession:a,onFlash:k}=e,[s,v]=(0,H.useState)(fe),[f,b]=(0,H.useState)(null),y=e.stateInfo?.kubectl,A=(0,H.useRef)(null);(0,H.useEffect)(()=>{s.open&&s.mode==="paste"&&A.current?.focus()},[s.open,s.mode]);let g=(0,H.useCallback)(i=>{v(N=>({...N,...i}))},[]),K=(0,H.useCallback)(()=>{v(fe)},[]),z=(0,H.useCallback)(async()=>{if(s.busy)return;let i=s.name.trim();if(!i){g({error:"\u8BF7\u586B\u5199 kubeconfig \u540D\u79F0\uFF08\u663E\u793A\u7528\uFF09"});return}if(s.mode==="paste"&&s.content.trim()===""){g({error:"\u8BF7\u7C98\u8D34 kubeconfig \u5185\u5BB9\uFF0C\u6216\u6539\u7528\u201C\u672C\u673A\u6587\u4EF6\u5BFC\u5165\u201D"});return}if(s.mode==="path"&&s.filePath.trim()===""){g({error:"\u8BF7\u586B\u5199\u672C\u673A kubeconfig \u6587\u4EF6\u8DEF\u5F84\uFF08\u5982 D:\\path\\dev.yaml\uFF09"});return}g({busy:!0,error:null});try{await B.save({name:i,content:s.mode==="paste"?s.content:void 0,filePath:s.mode==="path"?s.filePath:void 0}),K(),k("ok",`\u5DF2\u4FDD\u5B58 kubeconfig\u300C${i}\u300D`),n()}catch(N){g({error:await W(N)})}finally{g({busy:!1})}},[s,g,K,k,n]),M=(0,H.useCallback)(async i=>{if(window.confirm(`\u5220\u9664 kubeconfig\u300C${i.name}\u300D\uFF1F
|
|
11
11
|
|
|
12
|
-
\u8BE5\u64CD\u4F5C\u4F1A\u79FB\u9664\u672C\u5730\u4FDD\u5B58\u7684\u6587\u4EF6\u526F\u672C\uFF08\u542B\u8BBF\u95EE\u51ED\u636E\uFF09\uFF0C\u5E76\u5173\u95ED\u5B83\u7684\u6240\u6709\u4F1A\u8BDD Tab\u3002`)){
|
|
13
|
-
\u70B9\u53F3\u4E0A\u89D2 \u2795 \u6DFB\u52A0\uFF08\u7C98\u8D34\u5185\u5BB9\u6216\u5BFC\u5165\u672C\u673A\u6587\u4EF6\uFF09\u3002`}):null,t.map(
|
|
12
|
+
\u8BE5\u64CD\u4F5C\u4F1A\u79FB\u9664\u672C\u5730\u4FDD\u5B58\u7684\u6587\u4EF6\u526F\u672C\uFF08\u542B\u8BBF\u95EE\u51ED\u636E\uFF09\uFF0C\u5E76\u5173\u95ED\u5B83\u7684\u6240\u6709\u4F1A\u8BDD Tab\u3002`)){b(`rm:${i.id}`);try{let{ok:O}=await B.remove(i.id);O?(k("info",`\u5DF2\u5220\u9664\u300C${i.name}\u300D`),n()):k("error","\u5220\u9664\u5931\u8D25\uFF1A\u670D\u52A1\u7AEF\u672A\u786E\u8BA4")}catch(O){k("error",`\u5220\u9664\u5931\u8D25\uFF1A${await W(O)}`)}finally{b(null)}}},[k,n]),j=(0,H.useCallback)(async i=>{b(`check:${i.id}`);try{let N=await B.check(i.id);k(N.ok?"ok":"error",`\u300C${i.name}\u300D${N.ok?"\u2705 \u96C6\u7FA4\u53EF\u8FBE":"\u274C \u4E0D\u53EF\u8FBE"}\uFF1A${N.message}`)}catch(N){k("error",`\u300C${i.name}\u300D\u68C0\u67E5\u5931\u8D25\uFF1A${await W(N)}`)}finally{b(null),n()}},[k,n]),I=(0,H.useCallback)(async i=>{b(`copy:${i.id}`);try{let{content:N}=await B.raw(i.id);await navigator.clipboard.writeText(N),k("ok",`\u5DF2\u590D\u5236\u300C${i.name}\u300D\u5B8C\u6574 kubeconfig \u5230\u526A\u8D34\u677F\uFF08\u542B\u51ED\u636E\uFF0C\u6CE8\u610F\u4FDD\u7BA1\uFF09`)}catch(N){k("error",`\u590D\u5236\u5931\u8D25\uFF1A${await W(N)}`)}finally{b(null)}},[k]);return(0,p.jsxs)("div",{className:"kc-nav",children:[(0,p.jsxs)("div",{className:"kc-nav-head",children:[(0,p.jsx)("span",{className:"kc-nav-title",children:"kubeconfig"}),(0,p.jsx)("span",{className:"kc-nav-count",children:t.length}),(0,p.jsx)("span",{className:"kc-grow"}),(0,p.jsx)("button",{className:"kc-btn-sm",onClick:()=>{g({...fe,open:!0})},title:"\u6DFB\u52A0 kubeconfig\uFF08\u7C98\u8D34\u5185\u5BB9\u6216\u5BFC\u5165\u672C\u673A\u6587\u4EF6\uFF09",children:"\u2795 \u6DFB\u52A0"}),(0,p.jsx)("button",{className:"kc-btn-sm",onClick:()=>void n(),disabled:o,title:"\u5237\u65B0\u5217\u8868",children:"\u21BB"})]}),y&&!y.present?(0,p.jsxs)("div",{className:"kc-warnbox",title:y.missingReason,children:[(0,p.jsx)("div",{className:"kc-warnbox-title",children:"\u26A0\uFE0F kubectl \u4E0D\u53EF\u7528"}),(0,p.jsx)("div",{className:"kc-warnbox-text",children:y.missingReason})]}):null,(0,p.jsxs)("div",{className:"kc-nav-list",children:[t.length===0?(0,p.jsx)("div",{className:"kc-nav-empty",children:o?"\u52A0\u8F7D\u4E2D\u2026":`\u8FD8\u6CA1\u6709 kubeconfig\u3002
|
|
13
|
+
\u70B9\u53F3\u4E0A\u89D2 \u2795 \u6DFB\u52A0\uFF08\u7C98\u8D34\u5185\u5BB9\u6216\u5BFC\u5165\u672C\u673A\u6587\u4EF6\uFF09\u3002`}):null,t.map(i=>{let N=f===`rm:${i.id}`||f===`check:${i.id}`||f===`copy:${i.id}`;return(0,p.jsxs)("div",{className:"kc-conn",title:"\u70B9\u51FB\u65B0\u5EFA\u4F1A\u8BDD\uFF08\u540C\u4E00\u96C6\u7FA4\u53EF\u5F00\u591A\u4E2A\uFF09",children:[(0,p.jsxs)("button",{type:"button",className:"kc-conn-main",onClick:()=>a(i),disabled:o,children:[(0,p.jsx)("span",{className:"kc-conn-name",children:i.name}),(0,p.jsxs)("span",{className:"kc-conn-sub",children:[i.currentContext??i.contextNames[0]??"\uFF08\u65E0 context\uFF09",i.contextNames.length>1?`\uFF08\u5171 ${i.contextNames.length} \u4E2A context\uFF09`:""]}),(0,p.jsx)("span",{className:"kc-conn-server",title:"API server",children:i.server??""}),i.lastCheckError?(0,p.jsx)("span",{className:"kc-conn-state kc-conn-state-bad",title:`\u4E0A\u6B21\u68C0\u67E5\u5931\u8D25\uFF1A${i.lastCheckError}`,children:"\u2715"}):i.lastCheckedAt?(0,p.jsx)("span",{className:"kc-conn-state kc-conn-state-ok",title:`\u4E0A\u6B21\u68C0\u67E5 ${be(i.lastCheckedAt)}`,children:"\u2713"}):null]}),(0,p.jsxs)("span",{className:"kc-conn-actions",children:[(0,p.jsx)("button",{className:"kc-icon-btn",title:"\u6D4B\u8BD5\u8FDE\u901A\uFF08kubectl get --raw=/version\uFF09",disabled:N,onClick:()=>void j(i),children:N&&f===`check:${i.id}`?"\u2026":"\u6D4B"}),(0,p.jsx)("button",{className:"kc-icon-btn",title:"\u590D\u5236\u5B8C\u6574 kubeconfig\uFF08\u542B\u51ED\u636E\uFF09",disabled:N,onClick:()=>void I(i),children:N&&f===`copy:${i.id}`?"\u2026":"\u29C9"}),(0,p.jsx)("button",{className:"kc-icon-btn kc-icon-btn-danger",title:`\u5220\u9664\uFF08${Re(i.size)}\uFF0C\u66F4\u65B0\u4E8E ${be(i.updatedAt)}\uFF09`,disabled:N,onClick:()=>void M(i),children:"\u2715"})]})]},i.id)})]}),(0,p.jsx)("div",{className:"kc-nav-foot",children:(0,p.jsxs)("div",{className:"kc-muted",style:{fontSize:11,lineHeight:1.6},children:["\u6570\u636E\u76EE\u5F55\uFF1A",e.stateInfo?.dataDir??"\u2026",y?.present&&y.version?(0,p.jsxs)("div",{children:["kubectl ",y.version]}):null]})}),s.open?(0,p.jsx)("div",{className:"kc-modal-mask",onMouseDown:i=>{i.target===i.currentTarget&&K()},children:(0,p.jsxs)("div",{className:"kc-modal",children:[(0,p.jsx)("div",{className:"kc-modal-title",children:"\u2795 \u6DFB\u52A0 kubeconfig"}),(0,p.jsxs)("div",{className:"kc-field",children:[(0,p.jsx)("label",{children:"\u540D\u79F0\uFF08\u663E\u793A\u7528\uFF09"}),(0,p.jsx)("input",{value:s.name,onChange:i=>g({name:i.target.value,error:null}),placeholder:"\u4F8B\u5982\uFF1Adevelopment / dev",autoFocus:!0})]}),(0,p.jsxs)("div",{className:"kc-seg",role:"tablist",children:[(0,p.jsx)("button",{type:"button",role:"tab","aria-selected":s.mode==="paste",className:s.mode==="paste"?"kc-seg-active":"",onClick:()=>g({mode:"paste"}),children:"\u{1F4CB} \u7C98\u8D34\u5185\u5BB9"}),(0,p.jsx)("button",{type:"button",role:"tab","aria-selected":s.mode==="path",className:s.mode==="path"?"kc-seg-active":"",onClick:()=>g({mode:"path"}),children:"\u{1F4C1} \u5BFC\u5165\u672C\u673A\u6587\u4EF6"})]}),s.mode==="paste"?(0,p.jsxs)("div",{className:"kc-field",children:[(0,p.jsx)("label",{children:"kubeconfig \u5185\u5BB9\uFF08YAML\uFF09"}),(0,p.jsx)("textarea",{ref:A,className:"kc-code-input",rows:10,value:s.content,onChange:i=>g({content:i.target.value,error:null}),placeholder:`apiVersion: v1
|
|
14
14
|
kind: Config
|
|
15
15
|
clusters:
|
|
16
16
|
- name: "dev"
|
|
17
17
|
cluster:
|
|
18
18
|
server: "https://\u2026"
|
|
19
|
-
\u2026`,spellCheck:!1})]}):(0,p.jsxs)("div",{className:"kc-field",children:[(0,p.jsx)("label",{children:"\u672C\u673A\u6587\u4EF6\u8DEF\u5F84"}),(0,p.jsx)("input",{value:
|
|
19
|
+
\u2026`,spellCheck:!1})]}):(0,p.jsxs)("div",{className:"kc-field",children:[(0,p.jsx)("label",{children:"\u672C\u673A\u6587\u4EF6\u8DEF\u5F84"}),(0,p.jsx)("input",{value:s.filePath,onChange:i=>g({filePath:i.target.value,error:null}),placeholder:"D:\\Users\\wuzan\\.kube\\configs\\dev.yaml",spellCheck:!1}),(0,p.jsx)("div",{className:"kc-muted",style:{fontSize:11,marginTop:4},children:"\u8BFB\u53D6\u8BE5\u8DEF\u5F84\u7684\u5185\u5BB9\u5E76\u4FDD\u5B58\u526F\u672C\u5230\u63D2\u4EF6\u6570\u636E\u76EE\u5F55\uFF08\u652F\u6301 .yaml/.yml/.config\uFF09\u3002\u4FEE\u6539\u539F\u6587\u4EF6\u4E0D\u4F1A\u540C\u6B65 \u2014\u2014 \u60F3\u7528\u65B0\u7248\u8BF7\u5220\u9664\u540E\u91CD\u65B0\u5BFC\u5165\u3002"})]}),s.error?(0,p.jsx)("div",{className:"kc-form-error",children:s.error}):null,(0,p.jsxs)("div",{className:"kc-modal-actions",children:[(0,p.jsx)("button",{onClick:K,disabled:s.busy,children:"\u53D6\u6D88"}),(0,p.jsx)("button",{className:"kc-btn-primary",onClick:()=>void z(),disabled:s.busy,children:s.busy?"\u4FDD\u5B58\u5E76\u89E3\u6790\u2026":"\u4FDD\u5B58"})]})]})}):null]})}var G=E("react");var C=E("react");var w=E("react/jsx-runtime"),Oe=800,at=["get pods -A","get nodes -o wide","get all -n default","logs deploy/xxx -n <ns> --tail=100","describe pod <name> -n <ns>","get events -n <ns> --sort-by=.lastTimestamp"];function st(e){switch(e){case"timeout":return"\u5DF2\u8D85\u65F6\u88AB\u7EC8\u6B62";case"bytes":return"\u8F93\u51FA\u8D85\u8FC7\u4E0A\u9650\u5DF2\u88AB\u622A\u65AD";case"aborted":return"\u5DF2\u624B\u52A8\u4E2D\u6B62";default:return""}}var Ie=(0,C.forwardRef)(function({kube:t},o){let[n,a]=(0,C.useState)(""),[k,s]=(0,C.useState)(""),[v,f]=(0,C.useState)(""),[b,y]=(0,C.useState)(!1),[A,g]=(0,C.useState)([]),[K,z]=(0,C.useState)(null),[M,j]=(0,C.useState)([]),[I,i]=(0,C.useState)(-1),[N,O]=(0,C.useState)(null),X=(0,C.useRef)(null),u=(0,C.useRef)(null),m=(0,C.useRef)(null),$=(0,C.useRef)(()=>{}),T=(0,C.useCallback)(r=>{g(l=>{let x=[...l,r];return x.length>Oe?x.slice(x.length-Oe):x})},[]);(0,C.useEffect)(()=>{let r=u.current;r&&(r.scrollTop=r.scrollHeight)},[A,b,K]);let V=(0,C.useCallback)(()=>{X.current?.abort()},[]),_=(0,C.useCallback)(async r=>{let l=r.trim();if(!l||b)return;let x=l.split(`
|
|
20
20
|
`).filter(S=>S.trim()!==""&&!S.trim().startsWith("#")).join(`
|
|
21
|
-
`).trim();if(!
|
|
22
|
-
`)),
|
|
21
|
+
`).trim();if(!x)return;X.current=new AbortController;let L=X.current.signal;y(!0),z(null),i(-1),T({kind:"cmd",text:x}),j(S=>[...S.slice(-99),x]);let Ye=S=>{if(S.type==="start")T({kind:"sys",text:`\u25B6 ${String(S.command??`kubectl ${x}`)}`}),O(`\u6B63\u5728\u6267\u884C ${String(S.command??"")} \u2026\uFF08\u53EF\u968F\u65F6\u4E2D\u6B62\uFF09`);else if(S.type==="out"){let ie=S.channel==="stderr"?"stderr":"stdout",te=typeof S.text=="string"?S.text:"";te&&T({kind:"out",channel:ie,text:te})}else if(S.type==="exit"){let ie=typeof S.code=="number"?S.code:null,te=typeof S.signal=="string"?S.signal:null,Ue=typeof S.durationMs=="number"?S.durationMs:0,ve=S.truncated===!0,ce=typeof S.reason=="string"?S.reason:void 0;z({code:ie,signal:te,durationMs:Ue,truncated:ve,reason:ce});let le=st(ce);ve&&!le&&T({kind:"sys",text:"\u8F93\u51FA\u8D85\u8FC7\u4E0A\u9650\u5DF2\u622A\u65AD",tone:"err"}),le&&T({kind:"sys",text:le,tone:ce==="aborted"?"muted":"err"}),O(null)}else S.type==="error"&&(T({kind:"err",text:String(S.message??"\u672A\u77E5\u9519\u8BEF")}),O(null))};try{await B.run({id:t.id,command:x,context:k,namespace:v},Ye,L),L.aborted&&(T({kind:"sys",text:"\u5DF2\u4E2D\u6B62",tone:"muted"}),z(S=>S??{code:null,signal:null,durationMs:0,truncated:!1,reason:"aborted"}))}catch(S){L.aborted?T({kind:"sys",text:"\u5DF2\u4E2D\u6B62",tone:"muted"}):T({kind:"err",text:await W(S)}),O(null)}finally{y(!1),X.current=null}},[t.id,b,k,v,T]);$.current=_,(0,C.useImperativeHandle)(o,()=>({runText(r){a(r),m.current?.focus(),window.setTimeout(()=>{let l=$.current;l&&l(r)},0)}}),[]);let Y=(0,C.useCallback)(()=>{_(n)},[_,n]),q=(0,C.useCallback)(r=>{if(r.key==="Enter"&&!r.shiftKey&&!r.nativeEvent.isComposing){r.preventDefault(),Y();return}if(r.key==="ArrowUp"&&M.length>0){let l=I<0?M.length-1:Math.max(0,I-1);i(l),a(M[l]??""),r.preventDefault()}else if(r.key==="ArrowDown"&&I>=0){if(I>=M.length-1)i(-1),a("");else{let l=I+1;i(l),a(M[l]??"")}r.preventDefault()}},[M,I,Y]),ae=(0,C.useCallback)(()=>{g([]),z(null)},[]),se=(0,C.useCallback)(async()=>{let r=A.filter(l=>l.kind==="cmd"||l.kind==="out").map(l=>l.kind==="cmd"?`$ ${l.text}`:l.text).join("");try{await navigator.clipboard.writeText(r),O("\u5DF2\u590D\u5236\u8F93\u51FA"),window.setTimeout(()=>O(null),1500)}catch(l){O(`\u590D\u5236\u5931\u8D25\uFF1A${l instanceof Error?l.message:String(l)}`)}},[A]),c=r=>{let l=[];return r.reason==="aborted"?l.push("\u5DF2\u4E2D\u6B62"):r.code===0?l.push("\u6210\u529F"):r.code!==null&&l.push(`\u9000\u51FA\u7801 ${r.code}`),r.signal&&l.push(`signal ${r.signal}`),l.push(`${(r.durationMs/1e3).toFixed(2)}s`),l.join(" \xB7 ")};return(0,w.jsxs)("div",{className:"kc-console",children:[(0,w.jsxs)("div",{className:"kc-console-toolbar",children:[(0,w.jsxs)("div",{className:"kc-console-env",children:[(0,w.jsxs)("label",{title:"\u5728\u8BE5 kubeconfig \u7684\u54EA\u4E9B context \u4E0A\u6267\u884C\uFF08\u7A7A = \u4F7F\u7528\u6587\u4EF6\u5F53\u524D\u4E0A\u4E0B\u6587\uFF09",children:["context",(0,w.jsxs)("select",{value:k,onChange:r=>s(r.target.value),disabled:b,children:[(0,w.jsx)("option",{value:"",children:t.currentContext?`${t.currentContext}\uFF08\u9ED8\u8BA4\uFF09`:"\uFF08\u9ED8\u8BA4\uFF09"}),t.contextNames.filter(r=>r!==t.currentContext).map(r=>(0,w.jsx)("option",{value:r,children:r},r))]})]}),(0,w.jsxs)("label",{title:"\u7ED9\u547D\u4EE4\u9644\u52A0 -n <namespace>\uFF08\u547D\u4EE4\u91CC\u81EA\u5E26 -n \u65F6\u4EE5\u547D\u4EE4\u91CC\u7684\u4E3A\u51C6\uFF09",children:["namespace",(0,w.jsx)("input",{value:v,onChange:r=>f(r.target.value),placeholder:"default",disabled:b,spellCheck:!1})]})]}),(0,w.jsx)("div",{className:"kc-grow"}),(0,w.jsx)("button",{className:"kc-btn-sm",onClick:ae,title:"\u6E05\u7A7A\u8F93\u51FA",children:"\u6E05\u7A7A"}),(0,w.jsx)("button",{className:"kc-btn-sm",onClick:()=>void se(),title:"\u590D\u5236\u5168\u90E8\u547D\u4EE4\u4E0E\u8F93\u51FA",children:"\u590D\u5236\u8F93\u51FA"}),(0,w.jsx)("button",{className:"kc-btn-sm",onClick:()=>{a(at.join(`
|
|
22
|
+
`)),m.current?.focus()},title:"\u586B\u5165\u5E38\u7528\u793A\u4F8B",children:"\u793A\u4F8B"})]}),(0,w.jsxs)("div",{className:"kc-console-input-row",children:[(0,w.jsx)("textarea",{ref:m,className:"kc-code-input kc-command-input",value:n,onChange:r=>a(r.target.value),onKeyDown:q,placeholder:`kubectl \u547D\u4EE4\uFF08\u53EF\u7701\u7565\u524D\u7F00 kubectl\uFF09
|
|
23
23
|
\u4F8B\u5982\uFF1Aget pods -A
|
|
24
24
|
|
|
25
|
-
Enter \u6267\u884C \xB7 Shift+Enter \u6362\u884C \xB7 \u2191/\u2193 \u5386\u53F2 \xB7 \u975E\u4EA4\u4E92\uFF08logs -f \u7B49\u957F\u547D\u4EE4\u8BF7\u7528\u4E2D\u6B62\u6309\u94AE\uFF09`,spellCheck:!1,rows:3}),
|
|
26
|
-
`),""}`,children:r.text},l):r.kind==="err"?(0,w.jsxs)("div",{className:"kc-out-line kc-out-err",children:["\u2715 ",r.text]},l):(0,w.jsx)("div",{className:`kc-out-line kc-out-sys${r.tone==="err"?" kc-out-err":""}${r.tone==="muted"?" kc-out-muted":""}`,children:r.text},l))}),
|
|
27
|
-
`)){let n=t.replace(/^\s*[$>]\s*/,"").trim();if(!(!n||n.startsWith("#"))&&/^kubectl\b/u.test(n))return n}return null}function st(e){let t=[],n=/```([\w+-]*)\s*\n([\s\S]*?)```/g,o=0,c;for(;(c=n.exec(e))!==null;)c.index>o&&t.push({kind:"text",text:e.slice(o,c.index)}),t.push({kind:"code",lang:c[1]||void 0,text:c[2]??""}),o=n.lastIndex;return o<e.length&&t.push({kind:"text",text:e.slice(o)}),t}function He({kube:e,onRunCommand:t}){let[n,o]=(0,P.useState)([]),[c,x]=(0,P.useState)(""),[a,m]=(0,P.useState)(!1),[u,f]=(0,P.useState)(null),[y,$]=(0,P.useState)(!1),[b,E]=(0,P.useState)(""),[A,z]=(0,P.useState)(null),I=(0,P.useRef)(null),D=(0,P.useRef)(null),s=(0,P.useRef)(null),C=(0,P.useCallback)(async()=>{$(!0);try{f(await B.aiModels())}catch(i){f(null),z(`\u6A21\u578B\u679A\u4E3E\u5931\u8D25\uFF1A${await F(i)}`)}finally{$(!1)}},[]);(0,P.useEffect)(()=>{C()},[C]);let O=(0,P.useMemo)(()=>u?Me(u):[],[u]),W=(0,P.useMemo)(()=>O.find(i=>i.key===b),[O,b]);(0,P.useEffect)(()=>{let i=D.current;i&&(i.scrollTop=i.scrollHeight)},[n]);let k=(0,P.useCallback)(i=>{o(r=>[...r,{...i,key:rt()}])},[]),g=(0,P.useCallback)(i=>{o(r=>{if(r.length===0)return r;let l=r[r.length-1];if(l.role!=="assistant")return r;let v={...l,...i};i.content&&typeof i.content=="string"&&(v.content=l.content+i.content);let j=[...r];return j[j.length-1]=v,j})},[]),M=(0,P.useCallback)(()=>{I.current?.abort()},[]),K=(0,P.useCallback)(async()=>{let i=c.trim();if(!i||a)return;x(""),z(null);let r=n.filter(v=>v.role==="user"||v.state==="done").map(v=>({role:v.role,content:v.content}));r.push({role:"user",content:i}),k({role:"user",content:i}),k({role:"assistant",content:"",state:"streaming"}),m(!0),I.current=new AbortController;let l=I.current.signal;try{await B.chat({id:e.id,provider:W?.provider,model:W?.model,history:r.slice(-40)},v=>{v.type==="delta"&&typeof v.text=="string"?g({content:v.text}):v.type==="done"?g({state:"done",meta:{...typeof v.provider=="string"?{provider:v.provider}:{},...typeof v.model=="string"?{model:v.model}:{}}}):v.type==="aborted"?g({state:"done"}):v.type==="error"&&g({state:"error",content:`\u26A0\uFE0F ${String(v.message??"AI \u51FA\u9519")}`})},l)}catch(v){if(l.aborted)g({state:"done"});else{let j=await F(v);g({state:"error",content:`\u26A0\uFE0F ${j}`})}}finally{m(!1),I.current=null}},[c,a,n,W,e.id,k,g]),J=(0,P.useCallback)(i=>{i.key==="Enter"&&!i.shiftKey&&!i.nativeEvent.isComposing&&(i.preventDefault(),K())},[K]),q=(0,P.useCallback)(()=>{a&&M(),o([]),z(null)},[a,M]),G=[...n].reverse().find(i=>i.role==="assistant"&&i.state==="done"),_=G?at(G.content):null,se=(0,P.useCallback)(async i=>{try{await navigator.clipboard.writeText(i)}catch{}},[]),ie=i=>{if(i.role==="user")return(0,d.jsx)("div",{className:"kc-chat-user-text",children:i.content});if(i.state==="error")return(0,d.jsx)("div",{className:"kc-chat-error-text",children:i.content});let r=st(i.content);return(0,d.jsxs)("div",{className:"kc-chat-ai-text",children:[r.length===0?i.state==="streaming"?(0,d.jsx)("span",{className:"kc-chat-cursor",children:"\u258D"}):(0,d.jsx)("span",{className:"kc-muted",children:"\uFF08\u7A7A\u56DE\u590D\uFF09"}):r.map((l,v)=>{if(l.kind==="text")return(0,d.jsx)("span",{className:"kc-chat-text-span",children:l.text},v);let j=l.lang===void 0||/^(bash|sh|shell|kubectl|console)$/u.test(l.lang)?he(l.text):null;return(0,d.jsxs)("div",{className:"kc-codebox",children:[(0,d.jsxs)("div",{className:"kc-codebox-head",children:[(0,d.jsx)("span",{className:"kc-codebox-lang",children:l.lang||"code"}),(0,d.jsx)("span",{className:"kc-grow"}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>void se(l.text),children:"\u590D\u5236"}),j?(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>t(j),title:`\u53D1\u9001\u5230\u547D\u4EE4\u63A7\u5236\u53F0\u6267\u884C\uFF1A${j}`,children:"\u25B6 \u8FD0\u884C"}):null]}),(0,d.jsx)("pre",{className:"kc-codebox-body",children:l.text})]},v)}),i.state==="streaming"&&r.length>0?(0,d.jsx)("span",{className:"kc-chat-cursor",children:"\u258D"}):null]})};return(0,d.jsxs)("div",{className:"kc-chat",children:[(0,d.jsxs)("div",{className:"kc-chat-toolbar",children:[(0,d.jsxs)("label",{title:"\u590D\u7528 DSH \u5DF2\u914D\u7F6E\u7684\u6A21\u578B\uFF1B\u7A7A = \u8BA9 DSH \u81EA\u52A8\u9009\u62E9",children:["AI \u6A21\u578B",(0,d.jsxs)("select",{value:b,onChange:i=>E(i.target.value),disabled:a||y,children:[(0,d.jsx)("option",{value:"",children:"\u81EA\u52A8\uFF08\u7531 DSH \u9009\u62E9\uFF09"}),O.map(i=>(0,d.jsx)("option",{value:i.key,children:i.label??i.key},i.key))]})]}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>void C(),disabled:y,title:"\u91CD\u65B0\u679A\u4E3E DSH \u6A21\u578B",children:"\u21BB \u6A21\u578B"}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:q,disabled:n.length===0&&!a,title:"\u6E05\u7A7A\u672C\u4F1A\u8BDD\u5BF9\u8BDD",children:"\u6E05\u7A7A\u5BF9\u8BDD"}),(0,d.jsx)("span",{className:"kc-grow"}),(0,d.jsxs)("span",{className:"kc-chat-cluster",title:"AI \u7CFB\u7EDF\u63D0\u793A\u4E2D\u4F1A\u643A\u5E26\u8BE5\u96C6\u7FA4\u4FE1\u606F",children:["\u2388 ",e.name," \xB7 ",e.currentContext??"",e.server?` \xB7 ${e.server.replace(/^https?:\/\//u,"")}`:""]})]}),u&&!u.ok?(0,d.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",u.message??"\u6CA1\u6709\u53EF\u7528\u6A21\u578B","\uFF08\u914D\u7F6E\u597D\u540E\u70B9\u201C\u21BB \u6A21\u578B\u201D\u5237\u65B0\uFF09"]}):null,A?(0,d.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",A]}):null,(0,d.jsxs)("div",{className:"kc-chat-scroll",ref:D,children:[n.length===0?(0,d.jsx)("div",{className:"kc-chat-empty",children:(0,d.jsxs)("div",{className:"kc-muted",style:{maxWidth:460},children:["\u9488\u5BF9\u5F53\u524D\u96C6\u7FA4\uFF08",e.name,"\uFF09\u63D0\u95EE\uFF0C\u4F8B\u5982\uFF1A",(0,d.jsx)("br",{}),"\xB7 \u201C\u67E5\u770B default \u547D\u540D\u7A7A\u95F4\u4E0B\u6240\u6709 deployment \u53CA\u5176\u72B6\u6001\u201D",(0,d.jsx)("br",{}),"\xB7 \u201C\u627E\u51FA ImagePullBackOff \u7684 pod\uFF0C\u5E76\u89E3\u91CA\u600E\u4E48\u6392\u67E5\u201D",(0,d.jsx)("br",{}),"\xB7 \u201C\u751F\u6210\u628A myapp \u7F29\u5230 2 \u526F\u672C\u7684\u547D\u4EE4\u201D",(0,d.jsx)("br",{}),"\xB7 \u201C\u7C98\u8D34\u4E00\u6761 kubectl \u62A5\u9519\uFF0C\u5E2E\u6211\u89E3\u91CA\u539F\u56E0\u201D",(0,d.jsx)("br",{}),(0,d.jsx)("br",{}),"AI \u751F\u6210\u7684\u53EF\u6267\u884C\u547D\u4EE4\u4F1A\u5728\u4EE3\u7801\u5757\u4E0B\u65B9\u63D0\u4F9B ",(0,d.jsx)("b",{children:"\u25B6 \u8FD0\u884C"}),"\uFF0C\u70B9\u51FB\u540E\u5207\u5230\u547D\u4EE4\u63A7\u5236\u53F0\u76F4\u63A5\u6267\u884C\u3002"]})}):n.map(i=>(0,d.jsxs)("div",{className:`kc-chat-row kc-chat-${i.role}`,children:[(0,d.jsx)("div",{className:"kc-chat-avatar",children:i.role==="user"?"\u{1F9D1}":"\u{1F916}"}),(0,d.jsxs)("div",{className:"kc-chat-bubble",children:[ie(i),i.state==="done"&&i.meta&&(i.meta.provider||i.meta.model)?(0,d.jsxs)("div",{className:"kc-chat-meta",children:[i.meta.provider,"/",i.meta.model]}):null]})]},i.key)),_&&!a?(0,d.jsxs)("div",{className:"kc-chat-quickrun",children:["\u{1F4A1} \u53EF\u7528\u547D\u4EE4\uFF1A",(0,d.jsx)("code",{children:_}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>t(_),children:"\u25B6 \u53D1\u9001\u5230\u63A7\u5236\u53F0\u6267\u884C"})]}):null]}),(0,d.jsxs)("div",{className:"kc-chat-input-row",children:[(0,d.jsx)("textarea",{ref:s,className:"kc-code-input kc-chat-input",value:c,onChange:i=>x(i.target.value),onKeyDown:J,placeholder:"\u95EE AI\uFF1A\u751F\u6210 kubectl \u547D\u4EE4 / \u89E3\u91CA\u8F93\u51FA / \u6392\u67E5\u62A5\u9519\u2026\uFF08Enter \u53D1\u9001\uFF0CShift+Enter \u6362\u884C\uFF09",spellCheck:!1,rows:2}),a?(0,d.jsx)("button",{className:"kc-btn-primary kc-btn-stop",onClick:M,children:"\u25A0 \u505C\u6B62"}):(0,d.jsx)("button",{className:"kc-btn-primary",onClick:()=>void K(),disabled:c.trim()==="",children:"\u53D1\u9001"})]})]})}var H=T("react/jsx-runtime");function Le({kube:e}){let[t,n]=(0,Z.useState)("console"),[o,c]=(0,Z.useState)({console:!0,chat:!1}),x=(0,Z.useRef)(null),a=(0,Z.useCallback)(f=>{n(f),c(y=>y[f]?y:{...y,[f]:!0})},[]),m=(0,Z.useCallback)(f=>{a("console"),window.setTimeout(()=>{x.current?.runText(f)},0)},[a]),u=(f,y,$)=>(0,H.jsx)("button",{type:"button",role:"tab","aria-selected":t===f,title:$,className:t===f?"kc-seg-active":"",onClick:()=>a(f),children:y});return(0,H.jsxs)("div",{className:"kc-workspace",children:[(0,H.jsxs)("div",{className:"kc-ws-meta",children:[(0,H.jsxs)("span",{className:"kc-ws-meta-name",title:`kubeconfig \u6587\u4EF6\uFF1A${e.fileName}`,children:["\u2388 ",e.name]}),(0,H.jsx)("span",{className:"kc-ws-meta-chip",title:"\u5F53\u524D\u4E0A\u4E0B\u6587",children:e.currentContext??e.contextNames.join(", ")??"\uFF08\u65E0\uFF09"}),e.server?(0,H.jsx)("span",{className:"kc-ws-meta-chip kc-ws-meta-server",title:"API server",children:e.server}):null,(0,H.jsx)("span",{className:"kc-grow"}),(0,H.jsxs)("div",{className:"kc-seg",role:"tablist","aria-label":"\u4F1A\u8BDD\u5B50\u9875",children:[u("console","\u2328\uFE0F \u547D\u4EE4\u63A7\u5236\u53F0","\u76F4\u63A5\u6267\u884C kubectl \u547D\u4EE4\uFF08\u4F7F\u7528\u672C\u4F1A\u8BDD\u9009\u62E9\u7684 context / namespace\uFF09"),u("chat","\u{1F4AC} AI \u5BF9\u8BDD","\u591A\u8F6E\u5BF9\u8BDD\uFF1A\u751F\u6210 kubectl \u547D\u4EE4 / \u89E3\u91CA\u8F93\u51FA\u7ED3\u679C\uFF1B\u6A21\u578B\u8DDF\u968F DSH \u914D\u7F6E")]})]}),(0,H.jsxs)("div",{className:"kc-ws-body",children:[o.console?(0,H.jsx)("div",{className:"kc-ws-pane","data-active":t==="console"?"true":void 0,style:t==="console"?void 0:{display:"none"},children:(0,H.jsx)(Ie,{ref:x,kube:e})}):null,o.chat?(0,H.jsx)("div",{className:"kc-ws-pane","data-active":t==="chat"?"true":void 0,style:t==="chat"?void 0:{display:"none"},children:(0,H.jsx)(He,{kube:e,onRunCommand:m})}):null]})]})}var h=T("react/jsx-runtime"),je=0;function it(){return je+=1,`session_${Date.now().toString(36)}_${je}`}function ye(e={}){let[t,n]=(0,R.useState)([]),[o,c]=(0,R.useState)(null),[x,a]=(0,R.useState)(!1),[m,u]=(0,R.useState)(null),[f,y]=(0,R.useState)(null),$=(0,R.useRef)(!0),[b,E]=(0,R.useState)([]),[A,z]=(0,R.useState)(null),I=(0,R.useCallback)((k,g)=>{y({kind:k,text:g}),window.setTimeout(()=>y(M=>M?.text===g?null:M),k==="error"?6e3:2600)},[]),D=(0,R.useCallback)(async()=>{a(!0);try{let[k,{kubeconfigs:g}]=await Promise.all([B.state(!0),B.kubeconfigs()]);c(k),n(g),u(null)}catch(k){let g=await F(k);u(`\u65E0\u6CD5\u8FDE\u63A5\u63D2\u4EF6\u670D\u52A1\uFF1A${g}\u3002\u8BF7\u786E\u8BA4\u5DF2\u5728 DSH \u4E2D\u5B89\u88C5\u5E76\u542F\u7528 dsh-plugin-k8s\uFF08\u91CD\u542F dsh web \u540E\u751F\u6548\uFF09\u3002`),I("error",`\u52A0\u8F7D\u5931\u8D25\uFF1A${g}`)}finally{a(!1)}},[I]);(0,R.useEffect)(()=>{$.current&&($.current=!1,D())},[D]),(0,R.useEffect)(()=>{let k=new Set(t.map(g=>g.id));E(g=>{let M=g.filter(K=>k.has(K.kube.id));return M.length===g.length?g:M})},[t]),(0,R.useEffect)(()=>{A!==null&&!b.some(k=>k.key===A)&&z(b.length>0?b[b.length-1].key:null)},[b,A]);let s=(0,R.useCallback)(k=>{let g={key:it(),kube:k};E(M=>[...M,g]),z(g.key)},[]),C=(0,R.useCallback)(k=>{let g=b.findIndex(J=>J.key===k);if(E(J=>J.filter(q=>q.key!==k)),A!==k)return;let M=g>=0?b[g+1]:void 0,K=g>=0?b[g-1]:void 0;z((M??K)?.key??null)},[b,A]),O=(k,g)=>{let M=b.slice(0,g+1).filter(_=>_.kube.id===k.kube.id).length,K=b.filter(_=>_.kube.id===k.kube.id).length,J=k.kube.name,q=K>1?`${J} #${M}`:J,G=k.kube.currentContext?` \xB7 ${k.kube.currentContext}`:"";return{title:q,sub:`${k.kube.name}${G} \u2014 \u4F1A\u8BDD ${M}`}},W=k=>(0,h.jsx)(Le,{kube:k.kube},k.key);return(0,h.jsxs)("div",{className:"kc-app",children:[(0,h.jsxs)("div",{className:"kc-topbar",children:[(0,h.jsxs)("div",{className:"kc-title",children:[(0,h.jsx)("span",{className:"kc-logo",children:"K8s"})," K8s \u63A7\u5236\u53F0",(0,h.jsx)("span",{className:"kc-badge",children:"dsh-plugin-k8s"}),o?.kubectl.version?(0,h.jsxs)("span",{className:"kc-badge kc-badge-ok",children:["kubectl ",o.kubectl.version]}):null,o&&!o.kubectl.present?(0,h.jsx)("span",{className:"kc-badge kc-badge-bad",title:o.kubectl.missingReason,children:"kubectl \u672A\u627E\u5230"}):null]}),(0,h.jsx)("div",{className:"kc-grow"}),f?(0,h.jsx)("span",{className:`kc-notice kc-notice-${f.kind}`,title:f.text,children:f.text}):null,x?(0,h.jsx)("span",{className:"kc-muted",children:"\u2026"}):null,e.onClose?(0,h.jsx)("button",{onClick:e.onClose,title:"\u5173\u95ED\u9762\u677F\uFF0C\u56DE\u5230\u5BF9\u8BDD",children:e.standalone?"\u2715 \u5173\u95ED":"\u2715 \u56DE\u5230\u5BF9\u8BDD"}):null]}),m?(0,h.jsx)("div",{className:"kc-fatal",children:(0,h.jsxs)("div",{className:"kc-fatal-box",children:[(0,h.jsx)("div",{className:"kc-fatal-title",children:"\u26A0\uFE0F K8s \u63A7\u5236\u53F0\u6682\u65F6\u4E0D\u53EF\u7528"}),(0,h.jsx)("div",{className:"kc-fatal-text",children:m}),(0,h.jsx)("button",{onClick:()=>{u(null),D()},children:"\u91CD\u8BD5"})]})}):(0,h.jsxs)("div",{className:"kc-app-body",children:[(0,h.jsx)(Re,{kubeconfigs:t,busyList:x,refresh:D,onOpenSession:s,onFlash:I,stateInfo:o}),(0,h.jsxs)("div",{className:"kc-main",children:[(0,h.jsxs)("div",{className:"kc-tabbar",role:"tablist","aria-label":"\u5DF2\u6253\u5F00\u7684\u96C6\u7FA4\u4F1A\u8BDD",children:[b.length===0?(0,h.jsx)("span",{className:"kc-muted",style:{padding:"0 10px",whiteSpace:"nowrap"},children:"\u70B9\u51FB\u5DE6\u4FA7 kubeconfig \u65B0\u5EFA\u4F1A\u8BDD\uFF08\u540C\u4E00\u96C6\u7FA4\u53EF\u5F00\u591A\u4E2A\u72EC\u7ACB\u4F1A\u8BDD\uFF09\u3002"}):null,b.map((k,g)=>{let{title:M,sub:K}=O(k,g);return(0,h.jsxs)("div",{role:"tab","aria-selected":k.key===A,className:`kc-tab${k.key===A?" kc-tab-active":""}`,title:`${K} \u2014\u2014 \u70B9\u51FB\u5207\u6362\uFF0C\u2715 \u5173\u95ED`,onClick:()=>z(k.key),children:[(0,h.jsx)("span",{className:"kc-tab-icon",children:"\u2388"}),(0,h.jsx)("span",{className:"kc-tab-label",children:M}),(0,h.jsx)("span",{className:"kc-tab-close",title:"\u5173\u95ED",onClick:J=>{J.stopPropagation(),C(k.key)},children:"\u2715"})]},k.key)})]}),(0,h.jsx)("div",{className:"kc-tabpanes",children:b.length===0?(0,h.jsxs)("div",{className:"kc-empty",style:{flex:1},children:[(0,h.jsx)("div",{style:{fontSize:30,opacity:.5},children:"\u2388"}),(0,h.jsx)("div",{children:"\u8FD8\u6CA1\u6709\u6253\u5F00\u4EFB\u4F55\u96C6\u7FA4\u4F1A\u8BDD\u3002"}),(0,h.jsxs)("div",{style:{marginTop:6,fontSize:12},className:"kc-muted",children:["\u5DE6\u4FA7\u70B9\u51FB kubeconfig \u5373\u53EF\u65B0\u5EFA\u4F1A\u8BDD Tab\uFF08\u91CD\u590D\u70B9\u51FB\u540C\u4E00\u96C6\u7FA4\u4F1A\u518D\u5F00\u4E00\u4E2A\u72EC\u7ACB\u4F1A\u8BDD\uFF09\uFF1B",(0,h.jsx)("br",{}),"\u6BCF\u4E2A\u4F1A\u8BDD\u5185\u542B\u300C\u2328\uFE0F \u547D\u4EE4\u63A7\u5236\u53F0\u300D\u4E0E\u300C\u{1F4AC} AI \u5BF9\u8BDD\u300D\u4E24\u4E2A\u5B50\u9875\uFF0C\u5404\u81EA\u72EC\u7ACB\u4FDD\u6301\u72B6\u6001\u3002"]})]}):b.map(k=>(0,h.jsx)("div",{role:"tabpanel",className:"kc-pane","data-active":k.key===A?"true":void 0,style:k.key===A?void 0:{display:"none"},children:W(k)},k.key))})]})]})]})}var we=T("react/jsx-runtime");function Be(e){let[t,n]=(0,U.useState)({left:0,right:0}),o=(0,U.useRef)(null),c=(0,U.useRef)(e.onClose);c.current=e.onClose;let x=!e.hidden;return(0,U.useLayoutEffect)(()=>{if(typeof document>"u")return;let a=null,m=null,u=0,f=()=>{u===0&&(u=requestAnimationFrame(()=>{u=0,$()}))},y=()=>{(a===null||!a.isConnected)&&(a=document.querySelector('[class*="sidebarCol"]'),a!==null&&b.observe(a)),(m===null||!m.isConnected)&&(m=document.querySelector('[class*="detailsCol"]'),m!==null&&b.observe(m))},$=()=>{y();let A=a!==null?a.getBoundingClientRect().width:0,z=m!==null?m.getBoundingClientRect().width:0;n(I=>Math.abs(I.left-A)<.5&&Math.abs(I.right-z)<.5?I:{left:Math.max(0,A),right:Math.max(0,z)})},b=new ResizeObserver(f);$();let E=o.current?.closest('[class*="frame"]')??o.current?.parentElement;return E!=null&&b.observe(E),window.addEventListener("resize",f),()=>{window.removeEventListener("resize",f),b.disconnect(),u!==0&&cancelAnimationFrame(u)}},[]),(0,U.useEffect)(()=>{if(!x||e.standalone)return;let a=m=>{if(!(m.target instanceof Element))return;let u=o.current;u!==null&&(u.contains(m.target)||m.target.closest('[role="dialog"], [role="menu"], [role="listbox"]')||m.target.closest('[data-d-sh-plugin="k8s-console"]')||c.current())};return document.addEventListener("pointerdown",a,!0),()=>document.removeEventListener("pointerdown",a,!0)},[x,e.standalone]),(0,we.jsx)("div",{id:"dsh-k8s-console",ref:o,"data-hidden":e.hidden?"true":void 0,style:{position:"absolute",left:Math.max(0,Math.round(t.left)),top:0,right:Math.max(0,Math.round(t.right)),bottom:0,background:"var(--kc-bg)",display:e.hidden?"none":"flex",flexDirection:"column",overflow:"hidden",zIndex:1},children:(0,we.jsx)(ye,{onClose:e.onClose,standalone:e.standalone})})}var Je=`/* dsh-plugin-k8s \u5BA2\u6237\u7AEF\u6837\u5F0F\uFF08\u6697\u8272\u4E3B\u9898\uFF0C\u96F6\u5916\u90E8\u4F9D\u8D56\uFF0C\u5168\u90E8\u9650\u5B9A\u5728 #dsh-k8s-console\uFF09 */
|
|
25
|
+
Enter \u6267\u884C \xB7 Shift+Enter \u6362\u884C \xB7 \u2191/\u2193 \u5386\u53F2 \xB7 \u975E\u4EA4\u4E92\uFF08logs -f \u7B49\u957F\u547D\u4EE4\u8BF7\u7528\u4E2D\u6B62\u6309\u94AE\uFF09`,spellCheck:!1,rows:3}),b?(0,w.jsx)("button",{className:"kc-btn-primary kc-btn-stop",onClick:V,title:"\u4E2D\u6B62\u5F53\u524D\u547D\u4EE4",children:"\u25A0 \u4E2D\u6B62"}):(0,w.jsx)("button",{className:"kc-btn-primary",onClick:Y,disabled:n.trim()==="",title:"\u6267\u884C\uFF08Ctrl+Enter \u4EA6\u53EF\uFF09",children:"\u25B6 \u6267\u884C"})]}),N?(0,w.jsx)("div",{className:"kc-console-status",children:N}):null,(0,w.jsx)("div",{className:"kc-output",ref:u,children:A.length===0?(0,w.jsx)("div",{className:"kc-output-empty",children:(0,w.jsxs)("div",{className:"kc-muted",children:["\u8F93\u5165\u547D\u4EE4\u5F00\u59CB\uFF08",t.name,k?` \xB7 --context ${k}`:"",v?` \xB7 -n ${v}`:"","\uFF09\u3002",(0,w.jsx)("br",{}),"\u53EA\u8BFB\u5EFA\u8BAE\uFF1Aget / describe / logs / top / explain\u3002\u7834\u574F\u6027\u547D\u4EE4\u8BF7\u81EA\u884C\u786E\u8BA4\u5F71\u54CD\u3002"]})}):A.map((r,l)=>r.kind==="cmd"?(0,w.jsxs)("div",{className:"kc-out-line kc-out-cmd",children:[(0,w.jsx)("span",{className:"kc-out-prompt",children:"$"})," ",r.text]},l):r.kind==="out"?(0,w.jsx)("pre",{className:`kc-out-line kc-out-${r.channel}${r.text.endsWith(`
|
|
26
|
+
`),""}`,children:r.text},l):r.kind==="err"?(0,w.jsxs)("div",{className:"kc-out-line kc-out-err",children:["\u2715 ",r.text]},l):(0,w.jsx)("div",{className:`kc-out-line kc-out-sys${r.tone==="err"?" kc-out-err":""}${r.tone==="muted"?" kc-out-muted":""}`,children:r.text},l))}),K?(0,w.jsxs)("div",{className:`kc-exitbar${K.reason==="aborted"?" kc-exitbar-muted":K.code===0?"":" kc-exitbar-err"}`,children:[K.reason==="aborted"?"\u23F9 ":K.code===0?"\u2713 ":"\u2715 ",c(K),K.truncated?" \xB7 \u26A0\uFE0F \u8F93\u51FA\u88AB\u622A\u65AD":"",b?" \xB7 \u8FD0\u884C\u4E2D":""]}):null]})});var P=E("react");var d=E("react/jsx-runtime"),De=0,it=()=>(De+=1,De);function ct(e){let t=/```(?:bash|sh|shell|kubectl|console)?\s*\n([\s\S]*?)```/g,o;for(;(o=t.exec(e))!==null;){let n=o[1]??"",a=me(n);if(a)return a}return me(e)}function me(e){for(let t of e.split(`
|
|
27
|
+
`)){let o=t.replace(/^\s*[$>]\s*/,"").trim();if(!(!o||o.startsWith("#"))&&/^kubectl\b/u.test(o))return o}return null}function lt(e){let t=[],o=/```([\w+-]*)\s*\n([\s\S]*?)```/g,n=0,a;for(;(a=o.exec(e))!==null;)a.index>n&&t.push({kind:"text",text:e.slice(n,a.index)}),t.push({kind:"code",lang:a[1]||void 0,text:a[2]??""}),n=o.lastIndex;return n<e.length&&t.push({kind:"text",text:e.slice(n)}),t}function He({kube:e,onRunCommand:t}){let[o,n]=(0,P.useState)([]),[a,k]=(0,P.useState)(""),[s,v]=(0,P.useState)(!1),[f,b]=(0,P.useState)(null),[y,A]=(0,P.useState)(!1),[g,K]=(0,P.useState)(""),[z,M]=(0,P.useState)(null),j=(0,P.useRef)(null),I=(0,P.useRef)(null),i=(0,P.useRef)(null),N=(0,P.useCallback)(async()=>{A(!0);try{b(await B.aiModels())}catch(c){b(null),M(`\u6A21\u578B\u679A\u4E3E\u5931\u8D25\uFF1A${await W(c)}`)}finally{A(!1)}},[]);(0,P.useEffect)(()=>{N()},[N]);let O=(0,P.useMemo)(()=>f?ze(f):[],[f]),X=(0,P.useMemo)(()=>O.find(c=>c.key===g),[O,g]);(0,P.useEffect)(()=>{let c=I.current;c&&(c.scrollTop=c.scrollHeight)},[o]);let u=(0,P.useCallback)(c=>{n(r=>[...r,{...c,key:it()}])},[]),m=(0,P.useCallback)(c=>{n(r=>{if(r.length===0)return r;let l=r[r.length-1];if(l.role!=="assistant")return r;let x={...l,...c};c.content&&typeof c.content=="string"&&(x.content=l.content+c.content);let L=[...r];return L[L.length-1]=x,L})},[]),$=(0,P.useCallback)(()=>{j.current?.abort()},[]),T=(0,P.useCallback)(async()=>{let c=a.trim();if(!c||s)return;k(""),M(null);let r=o.filter(x=>x.role==="user"||x.state==="done").map(x=>({role:x.role,content:x.content}));r.push({role:"user",content:c}),u({role:"user",content:c}),u({role:"assistant",content:"",state:"streaming"}),v(!0),j.current=new AbortController;let l=j.current.signal;try{await B.chat({id:e.id,provider:X?.provider,model:X?.model,history:r.slice(-40)},x=>{x.type==="delta"&&typeof x.text=="string"?m({content:x.text}):x.type==="done"?m({state:"done",meta:{...typeof x.provider=="string"?{provider:x.provider}:{},...typeof x.model=="string"?{model:x.model}:{}}}):x.type==="aborted"?m({state:"done"}):x.type==="error"&&m({state:"error",content:`\u26A0\uFE0F ${String(x.message??"AI \u51FA\u9519")}`})},l)}catch(x){if(l.aborted)m({state:"done"});else{let L=await W(x);m({state:"error",content:`\u26A0\uFE0F ${L}`})}}finally{v(!1),j.current=null}},[a,s,o,X,e.id,u,m]),V=(0,P.useCallback)(c=>{c.key==="Enter"&&!c.shiftKey&&!c.nativeEvent.isComposing&&(c.preventDefault(),T())},[T]),_=(0,P.useCallback)(()=>{s&&$(),n([]),M(null)},[s,$]),Y=[...o].reverse().find(c=>c.role==="assistant"&&c.state==="done"),q=Y?ct(Y.content):null,ae=(0,P.useCallback)(async c=>{try{await navigator.clipboard.writeText(c)}catch{}},[]),se=c=>{if(c.role==="user")return(0,d.jsx)("div",{className:"kc-chat-user-text",children:c.content});if(c.state==="error")return(0,d.jsx)("div",{className:"kc-chat-error-text",children:c.content});let r=lt(c.content);return(0,d.jsxs)("div",{className:"kc-chat-ai-text",children:[r.length===0?c.state==="streaming"?(0,d.jsx)("span",{className:"kc-chat-cursor",children:"\u258D"}):(0,d.jsx)("span",{className:"kc-muted",children:"\uFF08\u7A7A\u56DE\u590D\uFF09"}):r.map((l,x)=>{if(l.kind==="text")return(0,d.jsx)("span",{className:"kc-chat-text-span",children:l.text},x);let L=l.lang===void 0||/^(bash|sh|shell|kubectl|console)$/u.test(l.lang)?me(l.text):null;return(0,d.jsxs)("div",{className:"kc-codebox",children:[(0,d.jsxs)("div",{className:"kc-codebox-head",children:[(0,d.jsx)("span",{className:"kc-codebox-lang",children:l.lang||"code"}),(0,d.jsx)("span",{className:"kc-grow"}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>void ae(l.text),children:"\u590D\u5236"}),L?(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>t(L),title:`\u53D1\u9001\u5230\u547D\u4EE4\u63A7\u5236\u53F0\u6267\u884C\uFF1A${L}`,children:"\u25B6 \u8FD0\u884C"}):null]}),(0,d.jsx)("pre",{className:"kc-codebox-body",children:l.text})]},x)}),c.state==="streaming"&&r.length>0?(0,d.jsx)("span",{className:"kc-chat-cursor",children:"\u258D"}):null]})};return(0,d.jsxs)("div",{className:"kc-chat",children:[(0,d.jsxs)("div",{className:"kc-chat-toolbar",children:[(0,d.jsxs)("label",{title:"\u590D\u7528 DSH \u5DF2\u914D\u7F6E\u7684\u6A21\u578B\uFF1B\u7A7A = \u8BA9 DSH \u81EA\u52A8\u9009\u62E9",children:["AI \u6A21\u578B",(0,d.jsxs)("select",{value:g,onChange:c=>K(c.target.value),disabled:s||y,children:[(0,d.jsx)("option",{value:"",children:"\u81EA\u52A8\uFF08\u7531 DSH \u9009\u62E9\uFF09"}),O.map(c=>(0,d.jsx)("option",{value:c.key,children:c.label??c.key},c.key))]})]}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>void N(),disabled:y,title:"\u91CD\u65B0\u679A\u4E3E DSH \u6A21\u578B",children:"\u21BB \u6A21\u578B"}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:_,disabled:o.length===0&&!s,title:"\u6E05\u7A7A\u672C\u4F1A\u8BDD\u5BF9\u8BDD",children:"\u6E05\u7A7A\u5BF9\u8BDD"}),(0,d.jsx)("span",{className:"kc-grow"}),(0,d.jsxs)("span",{className:"kc-chat-cluster",title:"AI \u7CFB\u7EDF\u63D0\u793A\u4E2D\u4F1A\u643A\u5E26\u8BE5\u96C6\u7FA4\u4FE1\u606F",children:["\u2388 ",e.name," \xB7 ",e.currentContext??"",e.server?` \xB7 ${e.server.replace(/^https?:\/\//u,"")}`:""]})]}),f&&!f.ok?(0,d.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",f.message??"\u6CA1\u6709\u53EF\u7528\u6A21\u578B","\uFF08\u914D\u7F6E\u597D\u540E\u70B9\u201C\u21BB \u6A21\u578B\u201D\u5237\u65B0\uFF09"]}):null,z?(0,d.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",z]}):null,(0,d.jsxs)("div",{className:"kc-chat-scroll",ref:I,children:[o.length===0?(0,d.jsx)("div",{className:"kc-chat-empty",children:(0,d.jsxs)("div",{className:"kc-muted",style:{maxWidth:460},children:["\u9488\u5BF9\u5F53\u524D\u96C6\u7FA4\uFF08",e.name,"\uFF09\u63D0\u95EE\uFF0C\u4F8B\u5982\uFF1A",(0,d.jsx)("br",{}),"\xB7 \u201C\u67E5\u770B default \u547D\u540D\u7A7A\u95F4\u4E0B\u6240\u6709 deployment \u53CA\u5176\u72B6\u6001\u201D",(0,d.jsx)("br",{}),"\xB7 \u201C\u627E\u51FA ImagePullBackOff \u7684 pod\uFF0C\u5E76\u89E3\u91CA\u600E\u4E48\u6392\u67E5\u201D",(0,d.jsx)("br",{}),"\xB7 \u201C\u751F\u6210\u628A myapp \u7F29\u5230 2 \u526F\u672C\u7684\u547D\u4EE4\u201D",(0,d.jsx)("br",{}),"\xB7 \u201C\u7C98\u8D34\u4E00\u6761 kubectl \u62A5\u9519\uFF0C\u5E2E\u6211\u89E3\u91CA\u539F\u56E0\u201D",(0,d.jsx)("br",{}),(0,d.jsx)("br",{}),"AI \u751F\u6210\u7684\u53EF\u6267\u884C\u547D\u4EE4\u4F1A\u5728\u4EE3\u7801\u5757\u4E0B\u65B9\u63D0\u4F9B ",(0,d.jsx)("b",{children:"\u25B6 \u8FD0\u884C"}),"\uFF0C\u70B9\u51FB\u540E\u5207\u5230\u547D\u4EE4\u63A7\u5236\u53F0\u76F4\u63A5\u6267\u884C\u3002"]})}):o.map(c=>(0,d.jsxs)("div",{className:`kc-chat-row kc-chat-${c.role}`,children:[(0,d.jsx)("div",{className:"kc-chat-avatar",children:c.role==="user"?"\u{1F9D1}":"\u{1F916}"}),(0,d.jsxs)("div",{className:"kc-chat-bubble",children:[se(c),c.state==="done"&&c.meta&&(c.meta.provider||c.meta.model)?(0,d.jsxs)("div",{className:"kc-chat-meta",children:[c.meta.provider,"/",c.meta.model]}):null]})]},c.key)),q&&!s?(0,d.jsxs)("div",{className:"kc-chat-quickrun",children:["\u{1F4A1} \u53EF\u7528\u547D\u4EE4\uFF1A",(0,d.jsx)("code",{children:q}),(0,d.jsx)("button",{className:"kc-btn-sm",onClick:()=>t(q),children:"\u25B6 \u53D1\u9001\u5230\u63A7\u5236\u53F0\u6267\u884C"})]}):null]}),(0,d.jsxs)("div",{className:"kc-chat-input-row",children:[(0,d.jsx)("textarea",{ref:i,className:"kc-code-input kc-chat-input",value:a,onChange:c=>k(c.target.value),onKeyDown:V,placeholder:"\u95EE AI\uFF1A\u751F\u6210 kubectl \u547D\u4EE4 / \u89E3\u91CA\u8F93\u51FA / \u6392\u67E5\u62A5\u9519\u2026\uFF08Enter \u53D1\u9001\uFF0CShift+Enter \u6362\u884C\uFF09",spellCheck:!1,rows:2}),s?(0,d.jsx)("button",{className:"kc-btn-primary kc-btn-stop",onClick:$,children:"\u25A0 \u505C\u6B62"}):(0,d.jsx)("button",{className:"kc-btn-primary",onClick:()=>void T(),disabled:a.trim()==="",children:"\u53D1\u9001"})]})]})}var D=E("react/jsx-runtime");function Le({kube:e}){let[t,o]=(0,G.useState)("console"),[n,a]=(0,G.useState)({console:!0,chat:!1}),k=(0,G.useRef)(null),s=(0,G.useCallback)(b=>{o(b),a(y=>y[b]?y:{...y,[b]:!0})},[]),v=(0,G.useCallback)(b=>{s("console"),window.setTimeout(()=>{k.current?.runText(b)},0)},[s]),f=(b,y,A)=>(0,D.jsx)("button",{type:"button",role:"tab","aria-selected":t===b,title:A,className:t===b?"kc-seg-active":"",onClick:()=>s(b),children:y});return(0,D.jsxs)("div",{className:"kc-workspace",children:[(0,D.jsxs)("div",{className:"kc-ws-meta",children:[(0,D.jsxs)("span",{className:"kc-ws-meta-name",title:`kubeconfig \u6587\u4EF6\uFF1A${e.fileName}`,children:["\u2388 ",e.name]}),(0,D.jsx)("span",{className:"kc-ws-meta-chip",title:"\u5F53\u524D\u4E0A\u4E0B\u6587",children:e.currentContext??e.contextNames.join(", ")??"\uFF08\u65E0\uFF09"}),e.server?(0,D.jsx)("span",{className:"kc-ws-meta-chip kc-ws-meta-server",title:"API server",children:e.server}):null,(0,D.jsx)("span",{className:"kc-grow"}),(0,D.jsxs)("div",{className:"kc-seg",role:"tablist","aria-label":"\u4F1A\u8BDD\u5B50\u9875",children:[f("console","\u2328\uFE0F \u547D\u4EE4\u63A7\u5236\u53F0","\u76F4\u63A5\u6267\u884C kubectl \u547D\u4EE4\uFF08\u4F7F\u7528\u672C\u4F1A\u8BDD\u9009\u62E9\u7684 context / namespace\uFF09"),f("chat","\u{1F4AC} AI \u5BF9\u8BDD","\u591A\u8F6E\u5BF9\u8BDD\uFF1A\u751F\u6210 kubectl \u547D\u4EE4 / \u89E3\u91CA\u8F93\u51FA\u7ED3\u679C\uFF1B\u6A21\u578B\u8DDF\u968F DSH \u914D\u7F6E")]})]}),(0,D.jsxs)("div",{className:"kc-ws-body",children:[n.console?(0,D.jsx)("div",{className:"kc-ws-pane","data-active":t==="console"?"true":void 0,style:t==="console"?void 0:{display:"none"},children:(0,D.jsx)(Ie,{ref:k,kube:e})}):null,n.chat?(0,D.jsx)("div",{className:"kc-ws-pane","data-active":t==="chat"?"true":void 0,style:t==="chat"?void 0:{display:"none"},children:(0,D.jsx)(He,{kube:e,onRunCommand:v})}):null]})]})}var h=E("react/jsx-runtime"),Be=0;function dt(){return Be+=1,`session_${Date.now().toString(36)}_${Be}`}function ge(e={}){let[t,o]=(0,R.useState)([]),[n,a]=(0,R.useState)(null),[k,s]=(0,R.useState)(!1),[v,f]=(0,R.useState)(null),[b,y]=(0,R.useState)(null),A=(0,R.useRef)(!0),[g,K]=(0,R.useState)([]),[z,M]=(0,R.useState)(null),j=(0,R.useCallback)((u,m)=>{y({kind:u,text:m}),window.setTimeout(()=>y($=>$?.text===m?null:$),u==="error"?6e3:2600)},[]),I=(0,R.useCallback)(async()=>{s(!0);try{let[u,{kubeconfigs:m}]=await Promise.all([B.state(!0),B.kubeconfigs()]);a(u),o(m),f(null)}catch(u){let m=await W(u);f(`\u65E0\u6CD5\u8FDE\u63A5\u63D2\u4EF6\u670D\u52A1\uFF1A${m}\u3002\u8BF7\u786E\u8BA4\u5DF2\u5728 DSH \u4E2D\u5B89\u88C5\u5E76\u542F\u7528 dsh-plugin-k8s\uFF08\u91CD\u542F dsh web \u540E\u751F\u6548\uFF09\u3002`),j("error",`\u52A0\u8F7D\u5931\u8D25\uFF1A${m}`)}finally{s(!1)}},[j]);(0,R.useEffect)(()=>{A.current&&(A.current=!1,I())},[I]),(0,R.useEffect)(()=>{let u=new Set(t.map(m=>m.id));K(m=>{let $=m.filter(T=>u.has(T.kube.id));return $.length===m.length?m:$})},[t]),(0,R.useEffect)(()=>{z!==null&&!g.some(u=>u.key===z)&&M(g.length>0?g[g.length-1].key:null)},[g,z]);let i=(0,R.useCallback)(u=>{let m={key:dt(),kube:u};K($=>[...$,m]),M(m.key)},[]),N=(0,R.useCallback)(u=>{let m=g.findIndex(V=>V.key===u);if(K(V=>V.filter(_=>_.key!==u)),z!==u)return;let $=m>=0?g[m+1]:void 0,T=m>=0?g[m-1]:void 0;M(($??T)?.key??null)},[g,z]),O=(u,m)=>{let $=g.slice(0,m+1).filter(q=>q.kube.id===u.kube.id).length,T=g.filter(q=>q.kube.id===u.kube.id).length,V=u.kube.name,_=T>1?`${V} #${$}`:V,Y=u.kube.currentContext?` \xB7 ${u.kube.currentContext}`:"";return{title:_,sub:`${u.kube.name}${Y} \u2014 \u4F1A\u8BDD ${$}`}},X=u=>(0,h.jsx)(Le,{kube:u.kube},u.key);return(0,h.jsxs)("div",{className:"kc-app",children:[(0,h.jsxs)("div",{className:"kc-topbar",children:[(0,h.jsxs)("div",{className:"kc-title",children:[(0,h.jsx)("span",{className:"kc-logo",children:"K8s"})," K8s \u63A7\u5236\u53F0",(0,h.jsx)("span",{className:"kc-badge",children:"dsh-plugin-k8s"}),n?.kubectl.version?(0,h.jsxs)("span",{className:"kc-badge kc-badge-ok",children:["kubectl ",n.kubectl.version]}):null,n&&!n.kubectl.present?(0,h.jsx)("span",{className:"kc-badge kc-badge-bad",title:n.kubectl.missingReason,children:"kubectl \u672A\u627E\u5230"}):null]}),(0,h.jsx)("div",{className:"kc-grow"}),b?(0,h.jsx)("span",{className:`kc-notice kc-notice-${b.kind}`,title:b.text,children:b.text}):null,k?(0,h.jsx)("span",{className:"kc-muted",children:"\u2026"}):null,e.onClose?(0,h.jsx)("button",{onClick:e.onClose,title:"\u5173\u95ED\u9762\u677F\uFF0C\u56DE\u5230\u5BF9\u8BDD",children:e.standalone?"\u2715 \u5173\u95ED":"\u2715 \u56DE\u5230\u5BF9\u8BDD"}):null]}),v?(0,h.jsx)("div",{className:"kc-fatal",children:(0,h.jsxs)("div",{className:"kc-fatal-box",children:[(0,h.jsx)("div",{className:"kc-fatal-title",children:"\u26A0\uFE0F K8s \u63A7\u5236\u53F0\u6682\u65F6\u4E0D\u53EF\u7528"}),(0,h.jsx)("div",{className:"kc-fatal-text",children:v}),(0,h.jsx)("button",{onClick:()=>{f(null),I()},children:"\u91CD\u8BD5"})]})}):(0,h.jsxs)("div",{className:"kc-app-body",children:[(0,h.jsx)(Me,{kubeconfigs:t,busyList:k,refresh:I,onOpenSession:i,onFlash:j,stateInfo:n}),(0,h.jsxs)("div",{className:"kc-main",children:[(0,h.jsxs)("div",{className:"kc-tabbar",role:"tablist","aria-label":"\u5DF2\u6253\u5F00\u7684\u96C6\u7FA4\u4F1A\u8BDD",children:[g.length===0?(0,h.jsx)("span",{className:"kc-muted",style:{padding:"0 10px",whiteSpace:"nowrap"},children:"\u70B9\u51FB\u5DE6\u4FA7 kubeconfig \u65B0\u5EFA\u4F1A\u8BDD\uFF08\u540C\u4E00\u96C6\u7FA4\u53EF\u5F00\u591A\u4E2A\u72EC\u7ACB\u4F1A\u8BDD\uFF09\u3002"}):null,g.map((u,m)=>{let{title:$,sub:T}=O(u,m);return(0,h.jsxs)("div",{role:"tab","aria-selected":u.key===z,className:`kc-tab${u.key===z?" kc-tab-active":""}`,title:`${T} \u2014\u2014 \u70B9\u51FB\u5207\u6362\uFF0C\u2715 \u5173\u95ED`,onClick:()=>M(u.key),children:[(0,h.jsx)("span",{className:"kc-tab-icon",children:"\u2388"}),(0,h.jsx)("span",{className:"kc-tab-label",children:$}),(0,h.jsx)("span",{className:"kc-tab-close",title:"\u5173\u95ED",onClick:V=>{V.stopPropagation(),N(u.key)},children:"\u2715"})]},u.key)})]}),(0,h.jsx)("div",{className:"kc-tabpanes",children:g.length===0?(0,h.jsxs)("div",{className:"kc-empty",style:{flex:1},children:[(0,h.jsx)("div",{style:{fontSize:30,opacity:.5},children:"\u2388"}),(0,h.jsx)("div",{children:"\u8FD8\u6CA1\u6709\u6253\u5F00\u4EFB\u4F55\u96C6\u7FA4\u4F1A\u8BDD\u3002"}),(0,h.jsxs)("div",{style:{marginTop:6,fontSize:12},className:"kc-muted",children:["\u5DE6\u4FA7\u70B9\u51FB kubeconfig \u5373\u53EF\u65B0\u5EFA\u4F1A\u8BDD Tab\uFF08\u91CD\u590D\u70B9\u51FB\u540C\u4E00\u96C6\u7FA4\u4F1A\u518D\u5F00\u4E00\u4E2A\u72EC\u7ACB\u4F1A\u8BDD\uFF09\uFF1B",(0,h.jsx)("br",{}),"\u6BCF\u4E2A\u4F1A\u8BDD\u5185\u542B\u300C\u2328\uFE0F \u547D\u4EE4\u63A7\u5236\u53F0\u300D\u4E0E\u300C\u{1F4AC} AI \u5BF9\u8BDD\u300D\u4E24\u4E2A\u5B50\u9875\uFF0C\u5404\u81EA\u72EC\u7ACB\u4FDD\u6301\u72B6\u6001\u3002"]})]}):g.map(u=>(0,h.jsx)("div",{role:"tabpanel",className:"kc-pane","data-active":u.key===z?"true":void 0,style:u.key===z?void 0:{display:"none"},children:X(u)},u.key))})]})]})]})}var xe=E("react/jsx-runtime"),Q=null,je=null;function pt(){return Q!==null||(Q=document.createElement("div"),Q.id="dsh-k8s-console",Q.style.cssText=["position:absolute","inset:0","z-index:30","display:none","flex-direction:column","overflow:hidden","background:var(--kc-bg)"].join(";"),document.body.appendChild(Q),je=(0,Ve.createRoot)(Q),je.render((0,xe.jsx)(ge,{onClose:()=>F.close(),standalone:!1}))),Q}function Je(e){let t=(0,oe.useRef)(null);return(0,oe.useEffect)(()=>{let o=t.current;if(o===null)return;let n=pt(),a=o.closest("[data-phase]")??o.parentElement,k,s=v=>{Number.isFinite(v)&&v>=32&&n.style.setProperty("--kc-shell-header-h",`${v}px`)};if(a!=null){let v=a.querySelector("header");v!==null&&(k=new ResizeObserver(f=>{for(let b of f){let y=b.borderBoxSize,A=Array.isArray(y)?y[0]?.blockSize:void 0;s(A??v.getBoundingClientRect().height)}}),k.observe(v),s(v.getBoundingClientRect().height))}return a!=null&&(F.setDocked(!0),n.style.display="flex",n.parentElement!==a&&a.appendChild(n)),()=>{k?.disconnect(),F.setDocked(!1),n.parentElement!==document.body&&document.body.appendChild(n),n.style.display="none"}},[]),(0,xe.jsx)("div",{ref:t,style:{height:0,overflow:"hidden"}})}var We=`/* dsh-plugin-k8s \u5BA2\u6237\u7AEF\u6837\u5F0F\uFF08\u96F6\u5916\u90E8\u4F9D\u8D56\uFF0C\u5168\u90E8\u9650\u5B9A\u5728 #dsh-k8s-console\uFF09
|
|
28
|
+
*
|
|
29
|
+
* \u4E3B\u9898\u7B56\u7565\uFF08\u5BF9\u9F50\u756A\u8304\u5DE5\u4F5C\u53F0 / \u6570\u636E\u5E93\u5DE5\u4F5C\u53F0\uFF09\uFF1A
|
|
30
|
+
* \u989C\u8272\u4E00\u5F8B\u5F15\u7528 DSH Web \u7684\u4E3B\u9898 token\uFF08--dsw-alias-* / --ds-*\uFF09\uFF0C\u8DDF\u968F DSH
|
|
31
|
+
* \u914D\u7F6E\u7684\u4E3B\u9898\uFF08\u660E\u6697 / \u6362\u80A4\uFF09\u81EA\u52A8\u53D8\u5316\uFF1Btoken \u62FF\u4E0D\u5230\u65F6\u56DE\u843D\u5230\u5185\u7F6E\u6697\u8272\u503C\u3002
|
|
32
|
+
*
|
|
33
|
+
* \u5E03\u5C40\u7B56\u7565\uFF1A
|
|
34
|
+
* \u5DE5\u4F5C\u53F0\u56DB\u8FB9\u4E0D\u7559 margin\uFF0C\u533A\u57DF\u4E4B\u95F4\u7528 1px hairline \u5206\u5272\u7EBF\uFF08--kc-border\uFF09\u5206\u5F00\uFF1B
|
|
35
|
+
* \u9762\u677F\u4E0D\u518D\u81EA\u5E26\u63CF\u8FB9\u4E0E\u5E95\u8272\uFF0C\u5C3D\u91CF\u5C11\u8FB9\u6846\uFF1B\u9876\u680F + TabBar \u603B\u9AD8\u4E0E\u5BBF\u4E3B\u5BF9\u8BDD\u5934\u90E8
|
|
36
|
+
* \u5BF9\u9F50\uFF08\u9AD8\u5EA6\u7531 overlay.tsx \u5B9E\u6D4B\u5199\u5165 --kc-shell-header-h\uFF09\u3002
|
|
37
|
+
*/
|
|
28
38
|
:root {
|
|
29
|
-
--kc-bg: #
|
|
30
|
-
--kc-panel: #
|
|
31
|
-
--kc-panel-2: #
|
|
32
|
-
--kc-border:
|
|
33
|
-
--kc-border-strong:
|
|
34
|
-
--kc-text: #e6e9ef;
|
|
35
|
-
--kc-muted: #8b93a3;
|
|
36
|
-
--kc-
|
|
37
|
-
--kc-accent
|
|
38
|
-
--kc-
|
|
39
|
-
--kc-
|
|
40
|
-
--kc-
|
|
41
|
-
--kc-
|
|
39
|
+
--kc-bg: var(--dsw-alias-bg-base, #12141a);
|
|
40
|
+
--kc-panel: var(--dsw-alias-bg-layer-1, #171a21);
|
|
41
|
+
--kc-panel-2: var(--dsw-alias-bg-layer-2, #1d212b);
|
|
42
|
+
--kc-border: var(--dsw-alias-border-l2, rgba(136, 148, 168, 0.24));
|
|
43
|
+
--kc-border-strong: var(--dsw-alias-border-l3, rgba(136, 148, 168, 0.38));
|
|
44
|
+
--kc-text: var(--dsw-alias-label-primary, #e6e9ef);
|
|
45
|
+
--kc-muted: var(--dsw-alias-label-secondary, #8b93a3);
|
|
46
|
+
--kc-faint: var(--dsw-alias-label-tertiary, #6b7383);
|
|
47
|
+
--kc-accent: var(--dsw-alias-state-business-primary, #3fa7f7);
|
|
48
|
+
--kc-accent-weak: color-mix(in srgb, var(--kc-accent) 12%, transparent);
|
|
49
|
+
--kc-ok: var(--dsw-alias-state-success-primary, #37c978);
|
|
50
|
+
--kc-warn: var(--dsw-alias-state-warn-primary, #e0b341);
|
|
51
|
+
--kc-err: var(--dsw-alias-state-error-primary, #ff5f56);
|
|
52
|
+
--kc-radius: 10px;
|
|
42
53
|
--kc-mono: "Cascadia Code", "JetBrains Mono", Consolas, "Courier New", monospace;
|
|
54
|
+
--kc-ease: var(--ds-transition-duration-fast, 120ms) var(--ds-ease-in-out, ease);
|
|
55
|
+
/* \u5BBF\u4E3B\u5BF9\u8BDD\u5934\u90E8\u5B9E\u6D4B\u9AD8\u5EA6\uFF08overlay.tsx \u7528 ResizeObserver \u5199\u5165\uFF09\uFF1B\u62FF\u4E0D\u5230\u65F6\u56DE\u843D 76px\u3002
|
|
56
|
+
\u9876\u680F + TabBar \u9AD8\u5EA6\u4E4B\u548C\u8DDF\u968F\u5B83\uFF0C\u4E0E\u5BBF\u4E3B\u5934\u90E8\u5E95\u8FB9\u7CBE\u786E\u5BF9\u9F50\u3002 */
|
|
57
|
+
--kc-shell-header-h: 76px;
|
|
58
|
+
--kc-tabbar-h: 32px;
|
|
43
59
|
}
|
|
44
60
|
|
|
45
|
-
/*
|
|
61
|
+
/* token \u91CD\u58F0\u660E\uFF1ADSH \u7684 --dsw-alias-* \u82E5\u4E0D\u662F\u6302\u5728 :root \u800C\u662F\u6302\u5728\u5E94\u7528\u5BB9\u5668\u4E0A\uFF0C
|
|
62
|
+
\u8FD9\u91CC\u5728\u5BB9\u5668\u81EA\u8EAB\u518D\u6C42\u503C\u4E00\u6B21\uFF0C\u4FDD\u8BC1\u63A7\u5236\u53F0\u53D6\u5230\u6B63\u786E\u4E3B\u9898\u8272\u3002 */
|
|
63
|
+
#dsh-k8s-console {
|
|
64
|
+
--kc-bg: var(--dsw-alias-bg-base, #12141a);
|
|
65
|
+
--kc-panel: var(--dsw-alias-bg-layer-1, #171a21);
|
|
66
|
+
--kc-panel-2: var(--dsw-alias-bg-layer-2, #1d212b);
|
|
67
|
+
--kc-border: var(--dsw-alias-border-l2, rgba(136, 148, 168, 0.24));
|
|
68
|
+
--kc-border-strong: var(--dsw-alias-border-l3, rgba(136, 148, 168, 0.38));
|
|
69
|
+
--kc-text: var(--dsw-alias-label-primary, #e6e9ef);
|
|
70
|
+
--kc-muted: var(--dsw-alias-label-secondary, #8b93a3);
|
|
71
|
+
--kc-faint: var(--dsw-alias-label-tertiary, #6b7383);
|
|
72
|
+
--kc-accent: var(--dsw-alias-state-business-primary, #3fa7f7);
|
|
73
|
+
--kc-ok: var(--dsw-alias-state-success-primary, #37c978);
|
|
74
|
+
--kc-warn: var(--dsw-alias-state-warn-primary, #e0b341);
|
|
75
|
+
--kc-err: var(--dsw-alias-state-error-primary, #ff5f56);
|
|
76
|
+
|
|
77
|
+
color: var(--kc-text);
|
|
78
|
+
font-size: 13px;
|
|
79
|
+
line-height: 1.5;
|
|
80
|
+
font-family: var(--dsw-font-family, inherit);
|
|
81
|
+
box-sizing: border-box;
|
|
82
|
+
}
|
|
83
|
+
#dsh-k8s-console *,
|
|
84
|
+
#dsh-k8s-console *::before,
|
|
85
|
+
#dsh-k8s-console *::after {
|
|
86
|
+
box-sizing: border-box;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* ---------- \u4FA7\u8FB9\u680F\u5165\u53E3\uFF08\u4F4D\u4E8E DSH \u4FA7\u680F\uFF0C\u4E0D\u5728\u9762\u677F\u5185\uFF0C\u76F4\u63A5\u7528 DSW token\uFF09 ---------- */
|
|
46
90
|
button.kc-sidebar-entry {
|
|
47
91
|
display: flex;
|
|
48
92
|
align-items: center;
|
|
49
93
|
gap: 8px;
|
|
50
94
|
width: 100%;
|
|
51
95
|
min-width: 0;
|
|
52
|
-
padding:
|
|
53
|
-
|
|
96
|
+
padding: 8px 12px;
|
|
97
|
+
margin: 0;
|
|
98
|
+
color: var(--dsw-alias-label-secondary);
|
|
54
99
|
background: transparent;
|
|
55
100
|
border: 0;
|
|
56
101
|
border-radius: 8px;
|
|
57
102
|
cursor: pointer;
|
|
58
103
|
font: inherit;
|
|
59
104
|
font-size: 13px;
|
|
105
|
+
line-height: 1;
|
|
60
106
|
text-align: left;
|
|
61
|
-
transition: background
|
|
107
|
+
transition: background var(--kc-ease), color var(--kc-ease);
|
|
62
108
|
}
|
|
63
109
|
button.kc-sidebar-entry:hover {
|
|
64
|
-
background: var(--kc-accent-weak);
|
|
65
|
-
color: var(--
|
|
110
|
+
background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
|
|
111
|
+
color: var(--dsw-alias-label-secondary);
|
|
66
112
|
}
|
|
67
113
|
button.kc-sidebar-entry[data-active='true'],
|
|
68
114
|
button.kc-sidebar-entry[data-active='true']:hover {
|
|
69
|
-
background: var(--
|
|
70
|
-
color: var(--
|
|
115
|
+
background: var(--dsw-alias-interactive-bg-active);
|
|
116
|
+
color: var(--dsw-alias-label-primary);
|
|
117
|
+
font-weight: 600;
|
|
71
118
|
}
|
|
72
119
|
.kc-sidebar-entry-icon {
|
|
73
120
|
display: inline-flex;
|
|
74
121
|
flex: 0 0 auto;
|
|
122
|
+
color: inherit;
|
|
75
123
|
}
|
|
76
124
|
.kc-sidebar-entry-icon svg {
|
|
77
125
|
display: block;
|
|
@@ -82,36 +130,31 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
82
130
|
white-space: nowrap;
|
|
83
131
|
}
|
|
84
132
|
|
|
85
|
-
/* ---------- \u9762\u677F\u6839 ----------
|
|
86
|
-
#dsh-k8s-console
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
line-height: 1.5;
|
|
90
|
-
box-sizing: border-box;
|
|
91
|
-
}
|
|
92
|
-
#dsh-k8s-console *,
|
|
93
|
-
#dsh-k8s-console *::before,
|
|
94
|
-
#dsh-k8s-console *::after {
|
|
95
|
-
box-sizing: border-box;
|
|
96
|
-
}
|
|
133
|
+
/* ---------- \u9762\u677F\u6839 ----------
|
|
134
|
+
\u4E2D\u680F\u63A5\u7BA1\u8BF4\u660E\uFF1A\u5DE5\u4F5C\u53F0\u6253\u5F00\u65F6\u7531 overlay.tsx \u628A\u6301\u4E45\u5BB9\u5668\uFF08#dsh-k8s-console\uFF09
|
|
135
|
+
\u4EE5 absolute inset:0 \u8986\u76D6\u5230 Conversation \u6839\u8282\u70B9\u4E0A\uFF08\u53C2\u8003\u756A\u8304\u5DE5\u4F5C\u53F0/\u6570\u636E\u5E93\u5DE5\u4F5C\u53F0\uFF09\uFF0C
|
|
136
|
+
\u4E0D\u9690\u85CF\u3001\u4E0D\u4FEE\u6539\u4EFB\u4F55\u5BBF\u4E3B\u5143\u7D20\uFF0C\u56E0\u6B64\u8FD9\u91CC\u6CA1\u6709\u4EFB\u4F55\u9488\u5BF9\u5BBF\u4E3B\uFF08\u5934\u90E8/composer\uFF09\u7684\u89C4\u5219\u3002 */
|
|
97
137
|
#dsh-k8s-console input,
|
|
98
138
|
#dsh-k8s-console select,
|
|
99
139
|
#dsh-k8s-console textarea,
|
|
100
140
|
#dsh-k8s-console button {
|
|
101
141
|
font: inherit;
|
|
102
142
|
color: var(--kc-text);
|
|
103
|
-
background:
|
|
104
|
-
border: 1px solid var(--kc-border);
|
|
105
|
-
border-radius:
|
|
143
|
+
background: transparent;
|
|
144
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 72%, transparent);
|
|
145
|
+
border-radius: 8px;
|
|
106
146
|
}
|
|
107
147
|
#dsh-k8s-console button {
|
|
108
148
|
padding: 5px 11px;
|
|
109
149
|
cursor: pointer;
|
|
110
|
-
transition: background
|
|
150
|
+
transition: background var(--kc-ease), border-color var(--kc-ease), color var(--kc-ease);
|
|
111
151
|
}
|
|
112
152
|
#dsh-k8s-console button:hover:not(:disabled) {
|
|
113
|
-
|
|
114
|
-
|
|
153
|
+
background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
|
|
154
|
+
}
|
|
155
|
+
#dsh-k8s-console button:focus-visible {
|
|
156
|
+
outline: 2px solid var(--kc-accent);
|
|
157
|
+
outline-offset: 1px;
|
|
115
158
|
}
|
|
116
159
|
#dsh-k8s-console button:disabled {
|
|
117
160
|
opacity: 0.45;
|
|
@@ -119,30 +162,33 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
119
162
|
}
|
|
120
163
|
#dsh-k8s-console button.kc-btn-primary {
|
|
121
164
|
background: var(--kc-accent);
|
|
122
|
-
border-color:
|
|
123
|
-
color: #fff;
|
|
165
|
+
border-color: transparent;
|
|
166
|
+
color: var(--dsw-alias-label-primary-inverted, #fff);
|
|
167
|
+
font-weight: 600;
|
|
124
168
|
}
|
|
125
169
|
#dsh-k8s-console button.kc-btn-primary:hover:not(:disabled) {
|
|
126
|
-
background: #
|
|
127
|
-
border-color: #63b8ff;
|
|
170
|
+
background: color-mix(in srgb, var(--kc-accent) 86%, #fff);
|
|
128
171
|
}
|
|
129
172
|
#dsh-k8s-console button.kc-btn-stop {
|
|
130
|
-
background:
|
|
131
|
-
border-color:
|
|
173
|
+
background: var(--kc-err);
|
|
174
|
+
border-color: transparent;
|
|
175
|
+
color: var(--dsw-alias-label-primary-inverted, #fff);
|
|
132
176
|
}
|
|
133
177
|
#dsh-k8s-console button.kc-btn-stop:hover:not(:disabled) {
|
|
134
|
-
background: #
|
|
135
|
-
border-color: #d9534a;
|
|
178
|
+
background: color-mix(in srgb, var(--kc-err) 86%, #fff);
|
|
136
179
|
}
|
|
137
180
|
#dsh-k8s-console button.kc-btn-sm {
|
|
138
181
|
padding: 2px 8px;
|
|
139
182
|
font-size: 12px;
|
|
140
|
-
border-radius:
|
|
183
|
+
border-radius: 6px;
|
|
141
184
|
}
|
|
142
185
|
#dsh-k8s-console input,
|
|
143
186
|
#dsh-k8s-console select,
|
|
144
187
|
#dsh-k8s-console textarea {
|
|
145
188
|
padding: 5px 9px;
|
|
189
|
+
background: var(--kc-panel);
|
|
190
|
+
border: 1px solid var(--kc-border);
|
|
191
|
+
transition: border-color var(--kc-ease);
|
|
146
192
|
}
|
|
147
193
|
#dsh-k8s-console input:focus,
|
|
148
194
|
#dsh-k8s-console select:focus,
|
|
@@ -152,7 +198,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
152
198
|
}
|
|
153
199
|
#dsh-k8s-console input::placeholder,
|
|
154
200
|
#dsh-k8s-console textarea::placeholder {
|
|
155
|
-
color:
|
|
201
|
+
color: var(--kc-faint);
|
|
156
202
|
}
|
|
157
203
|
|
|
158
204
|
.kc-grow { flex: 1 1 auto; }
|
|
@@ -165,16 +211,20 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
165
211
|
background: var(--kc-bg);
|
|
166
212
|
}
|
|
167
213
|
|
|
168
|
-
/* ---------- \u9876\u680F ----------
|
|
214
|
+
/* ---------- \u9876\u680F ----------
|
|
215
|
+
\u9AD8\u5EA6 = \u5BBF\u4E3B\u5BF9\u8BDD\u5934\u90E8\u9AD8\u5EA6 - TabBar \u9AD8\u5EA6\uFF0C\u4F7F\u300C\u9876\u680F+TabBar\u300D\u5E95\u90E8\u5206\u5272\u7EBF\u4E0E
|
|
216
|
+
\u5BBF\u4E3B\u5934\u90E8\u5E95\u8FB9\u7CBE\u786E\u5BF9\u9F50\u3002\u65E0\u5916\u8FB9\u8DDD\u3001\u65E0\u5706\u89D2\u63CF\u8FB9\uFF0C\u4EC5\u4E00\u6761\u5E95\u90E8\u5206\u5272\u7EBF\u3002 */
|
|
169
217
|
.kc-topbar {
|
|
170
218
|
display: flex;
|
|
171
219
|
align-items: center;
|
|
172
220
|
gap: 10px;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
221
|
+
height: calc(var(--kc-shell-header-h, 76px) - var(--kc-tabbar-h, 32px));
|
|
222
|
+
min-height: 40px;
|
|
223
|
+
padding: 0 20px;
|
|
224
|
+
margin: 0;
|
|
225
|
+
border: 0;
|
|
226
|
+
border-bottom: 1px solid var(--kc-border);
|
|
227
|
+
background: transparent;
|
|
178
228
|
}
|
|
179
229
|
.kc-title {
|
|
180
230
|
font-size: 14px;
|
|
@@ -185,29 +235,30 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
185
235
|
min-width: 0;
|
|
186
236
|
}
|
|
187
237
|
.kc-logo {
|
|
188
|
-
width:
|
|
189
|
-
height:
|
|
190
|
-
border-radius:
|
|
191
|
-
background:
|
|
238
|
+
width: 22px;
|
|
239
|
+
height: 22px;
|
|
240
|
+
border-radius: 7px;
|
|
241
|
+
background: var(--kc-accent);
|
|
192
242
|
display: inline-flex;
|
|
193
243
|
align-items: center;
|
|
194
244
|
justify-content: center;
|
|
195
245
|
font-size: 11px;
|
|
196
246
|
font-weight: 800;
|
|
197
|
-
color: #fff;
|
|
247
|
+
color: var(--dsw-alias-label-primary-inverted, #fff);
|
|
198
248
|
letter-spacing: -0.5px;
|
|
199
249
|
}
|
|
200
250
|
.kc-badge {
|
|
201
251
|
font-size: 11px;
|
|
202
252
|
font-weight: 400;
|
|
203
253
|
color: var(--kc-muted);
|
|
204
|
-
border: 1px solid var(--kc-border);
|
|
254
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
|
|
205
255
|
border-radius: 999px;
|
|
206
256
|
padding: 1px 8px;
|
|
257
|
+
background: transparent;
|
|
207
258
|
white-space: nowrap;
|
|
208
259
|
}
|
|
209
|
-
.kc-badge-ok { color: var(--kc-ok); border-color:
|
|
210
|
-
.kc-badge-bad { color: var(--kc-err); border-color:
|
|
260
|
+
.kc-badge-ok { color: var(--kc-ok); border-color: color-mix(in srgb, var(--kc-ok) 40%, transparent); }
|
|
261
|
+
.kc-badge-bad { color: var(--kc-err); border-color: color-mix(in srgb, var(--kc-err) 40%, transparent); }
|
|
211
262
|
.kc-notice {
|
|
212
263
|
font-size: 12px;
|
|
213
264
|
padding: 2px 10px;
|
|
@@ -217,8 +268,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
217
268
|
text-overflow: ellipsis;
|
|
218
269
|
max-width: 46%;
|
|
219
270
|
}
|
|
220
|
-
.kc-notice-ok { color: var(--kc-ok); background: rgba(55, 201, 120, 0.12); }
|
|
221
|
-
.kc-notice-error { color: var(--kc-err); background: rgba(255, 95, 86, 0.12); }
|
|
271
|
+
.kc-notice-ok { color: var(--kc-ok); background: var(--dsw-alias-state-success-secondary, rgba(55, 201, 120, 0.12)); }
|
|
272
|
+
.kc-notice-error { color: var(--kc-err); background: var(--dsw-alias-state-error-secondary, rgba(255, 95, 86, 0.12)); }
|
|
222
273
|
.kc-notice-info { color: var(--kc-accent); background: var(--kc-accent-weak); }
|
|
223
274
|
|
|
224
275
|
.kc-fatal {
|
|
@@ -231,18 +282,19 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
231
282
|
.kc-fatal-box {
|
|
232
283
|
max-width: 560px;
|
|
233
284
|
background: var(--kc-panel);
|
|
234
|
-
border: 1px solid var(--kc-border
|
|
235
|
-
border-radius:
|
|
285
|
+
border: 1px solid var(--kc-border);
|
|
286
|
+
border-radius: var(--kc-radius);
|
|
236
287
|
padding: 20px 22px;
|
|
237
288
|
}
|
|
238
289
|
.kc-fatal-title { font-weight: 600; margin-bottom: 8px; color: var(--kc-err); }
|
|
239
290
|
.kc-fatal-text { color: var(--kc-muted); margin-bottom: 14px; white-space: pre-wrap; }
|
|
240
291
|
|
|
241
|
-
/* ---------- \u4E3B\u4F53\u5E03\u5C40 ----------
|
|
292
|
+
/* ---------- \u4E3B\u4F53\u5E03\u5C40 ----------
|
|
293
|
+
\u533A\u57DF\u95F4\u53EA\u9760\u5206\u5272\u7EBF\uFF1A\u5DE6\u5BFC\u822A\u53F3\u4FA7\u4E00\u6761 hairline\uFF0C\u65E0 margin\u3001\u65E0 gap\u3001\u65E0\u9762\u677F\u63CF\u8FB9\u3002 */
|
|
242
294
|
.kc-app-body {
|
|
243
295
|
display: flex;
|
|
244
|
-
gap:
|
|
245
|
-
padding:
|
|
296
|
+
gap: 0;
|
|
297
|
+
padding: 0;
|
|
246
298
|
flex: 1;
|
|
247
299
|
min-height: 0;
|
|
248
300
|
}
|
|
@@ -252,9 +304,10 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
252
304
|
display: flex;
|
|
253
305
|
flex-direction: column;
|
|
254
306
|
min-height: 0;
|
|
255
|
-
background:
|
|
256
|
-
border:
|
|
257
|
-
border-
|
|
307
|
+
background: transparent;
|
|
308
|
+
border: 0;
|
|
309
|
+
border-right: 1px solid var(--kc-border);
|
|
310
|
+
border-radius: 0;
|
|
258
311
|
overflow: hidden;
|
|
259
312
|
}
|
|
260
313
|
.kc-main {
|
|
@@ -262,48 +315,67 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
262
315
|
min-width: 0;
|
|
263
316
|
display: flex;
|
|
264
317
|
flex-direction: column;
|
|
265
|
-
background:
|
|
266
|
-
border:
|
|
267
|
-
border-radius:
|
|
318
|
+
background: transparent;
|
|
319
|
+
border: 0;
|
|
320
|
+
border-radius: 0;
|
|
268
321
|
overflow: hidden;
|
|
269
322
|
}
|
|
270
323
|
|
|
271
|
-
/* ---------- TabBar\uFF08\u4F1A\u8BDD\uFF09
|
|
324
|
+
/* ---------- TabBar\uFF08\u4F1A\u8BDD\uFF09----------
|
|
325
|
+
\u756A\u8304\u5DE5\u4F5C\u53F0 pageTabs \u540C\u6B3E\uFF1A\u6587\u5B57 Tab + \u4E3B\u9898\u8272\u4E0B\u5212\u7EBF\u6307\u793A\uFF1B\u5E95\u90E8\u4E00\u6761\u5206\u5272\u7EBF\u3002 */
|
|
272
326
|
.kc-tabbar {
|
|
273
327
|
display: flex;
|
|
274
|
-
align-items:
|
|
328
|
+
align-items: stretch;
|
|
275
329
|
gap: 4px;
|
|
276
|
-
|
|
330
|
+
height: calc(var(--kc-tabbar-h, 32px) - 1px);
|
|
331
|
+
padding: 0 10px;
|
|
277
332
|
overflow-x: auto;
|
|
333
|
+
overflow-y: hidden;
|
|
278
334
|
scrollbar-width: thin;
|
|
335
|
+
scrollbar-color: var(--kc-border-strong) transparent;
|
|
279
336
|
border-bottom: 1px solid var(--kc-border);
|
|
280
|
-
background:
|
|
337
|
+
background: transparent;
|
|
281
338
|
flex: 0 0 auto;
|
|
282
339
|
}
|
|
283
340
|
.kc-tab {
|
|
341
|
+
position: relative;
|
|
284
342
|
display: inline-flex;
|
|
285
343
|
align-items: center;
|
|
286
344
|
gap: 6px;
|
|
287
345
|
flex: 0 0 auto;
|
|
346
|
+
height: 100%;
|
|
288
347
|
max-width: 240px;
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
border
|
|
293
|
-
border-radius:
|
|
348
|
+
min-width: 0;
|
|
349
|
+
padding: 0 6px;
|
|
350
|
+
background: transparent;
|
|
351
|
+
border: 0;
|
|
352
|
+
border-radius: 0;
|
|
294
353
|
color: var(--kc-muted);
|
|
295
354
|
cursor: pointer;
|
|
296
|
-
font-size:
|
|
355
|
+
font-size: 12.5px;
|
|
297
356
|
user-select: none;
|
|
357
|
+
white-space: nowrap;
|
|
358
|
+
transition: color var(--kc-ease);
|
|
359
|
+
}
|
|
360
|
+
.kc-tab::after {
|
|
361
|
+
content: '';
|
|
362
|
+
position: absolute;
|
|
363
|
+
right: 2px;
|
|
364
|
+
bottom: -1px;
|
|
365
|
+
left: 2px;
|
|
366
|
+
height: 2px;
|
|
367
|
+
border-radius: 2px;
|
|
368
|
+
background: transparent;
|
|
298
369
|
}
|
|
299
370
|
.kc-tab:hover { color: var(--kc-text); }
|
|
300
371
|
.kc-tab-active {
|
|
301
|
-
background:
|
|
302
|
-
border
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
margin-bottom:
|
|
372
|
+
background: transparent;
|
|
373
|
+
border: 0;
|
|
374
|
+
color: var(--kc-accent);
|
|
375
|
+
font-weight: 600;
|
|
376
|
+
margin-bottom: 0;
|
|
306
377
|
}
|
|
378
|
+
.kc-tab-active::after { background: var(--kc-accent); }
|
|
307
379
|
.kc-tab-icon { opacity: 0.8; }
|
|
308
380
|
.kc-tab-label {
|
|
309
381
|
overflow: hidden;
|
|
@@ -312,11 +384,17 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
312
384
|
}
|
|
313
385
|
.kc-tab-close {
|
|
314
386
|
padding: 0 3px;
|
|
387
|
+
border: 0;
|
|
315
388
|
border-radius: 4px;
|
|
316
389
|
color: var(--kc-muted);
|
|
317
390
|
font-size: 11px;
|
|
391
|
+
opacity: 0.55;
|
|
392
|
+
}
|
|
393
|
+
.kc-tab-close:hover {
|
|
394
|
+
color: var(--kc-err);
|
|
395
|
+
background: color-mix(in srgb, var(--kc-err) 18%, transparent);
|
|
396
|
+
opacity: 1;
|
|
318
397
|
}
|
|
319
|
-
.kc-tab-close:hover { color: var(--kc-err); background: rgba(255, 95, 86, 0.12); }
|
|
320
398
|
.kc-tabpanes { flex: 1; min-height: 0; position: relative; }
|
|
321
399
|
.kc-pane {
|
|
322
400
|
position: absolute;
|
|
@@ -346,16 +424,16 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
346
424
|
.kc-nav-count {
|
|
347
425
|
font-size: 11px;
|
|
348
426
|
color: var(--kc-muted);
|
|
349
|
-
border: 1px solid var(--kc-border);
|
|
427
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
|
|
350
428
|
border-radius: 999px;
|
|
351
429
|
padding: 0 7px;
|
|
352
430
|
}
|
|
353
431
|
.kc-warnbox {
|
|
354
432
|
margin: 0 10px 8px;
|
|
355
433
|
padding: 8px 10px;
|
|
356
|
-
border:
|
|
357
|
-
background: rgba(224, 179, 65, 0.
|
|
358
|
-
border-radius:
|
|
434
|
+
border: 0;
|
|
435
|
+
background: var(--dsw-alias-state-warn-secondary, rgba(224, 179, 65, 0.12));
|
|
436
|
+
border-radius: 8px;
|
|
359
437
|
font-size: 12px;
|
|
360
438
|
}
|
|
361
439
|
.kc-warnbox-title { color: var(--kc-warn); font-weight: 600; margin-bottom: 2px; }
|
|
@@ -364,10 +442,12 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
364
442
|
flex: 1;
|
|
365
443
|
min-height: 0;
|
|
366
444
|
overflow-y: auto;
|
|
367
|
-
padding: 0
|
|
445
|
+
padding: 0 8px 8px;
|
|
368
446
|
display: flex;
|
|
369
447
|
flex-direction: column;
|
|
370
448
|
gap: 4px;
|
|
449
|
+
scrollbar-width: thin;
|
|
450
|
+
scrollbar-color: var(--kc-border-strong) transparent;
|
|
371
451
|
}
|
|
372
452
|
.kc-nav-empty {
|
|
373
453
|
color: var(--kc-muted);
|
|
@@ -376,13 +456,14 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
376
456
|
padding: 14px 10px;
|
|
377
457
|
}
|
|
378
458
|
.kc-conn {
|
|
379
|
-
border: 1px solid
|
|
459
|
+
border: 1px solid transparent;
|
|
380
460
|
border-radius: 8px;
|
|
381
461
|
overflow: hidden;
|
|
382
462
|
display: flex;
|
|
383
463
|
align-items: stretch;
|
|
464
|
+
transition: background var(--kc-ease), border-color var(--kc-ease);
|
|
384
465
|
}
|
|
385
|
-
.kc-conn:hover { border-color: var(--kc-border
|
|
466
|
+
.kc-conn:hover { border-color: color-mix(in srgb, var(--kc-border) 72%, transparent); }
|
|
386
467
|
.kc-conn-main {
|
|
387
468
|
flex: 1;
|
|
388
469
|
min-width: 0;
|
|
@@ -392,11 +473,14 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
392
473
|
gap: 2px;
|
|
393
474
|
padding: 7px 10px;
|
|
394
475
|
text-align: left;
|
|
395
|
-
background:
|
|
476
|
+
background: transparent;
|
|
396
477
|
border: 0;
|
|
397
478
|
border-radius: 0;
|
|
398
479
|
}
|
|
399
|
-
.kc-conn-main:hover {
|
|
480
|
+
.kc-conn-main:hover {
|
|
481
|
+
background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
|
|
482
|
+
border-color: transparent;
|
|
483
|
+
}
|
|
400
484
|
.kc-conn-name {
|
|
401
485
|
font-weight: 600;
|
|
402
486
|
color: var(--kc-text);
|
|
@@ -413,7 +497,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
413
497
|
}
|
|
414
498
|
.kc-conn-server {
|
|
415
499
|
font-size: 10px;
|
|
416
|
-
color:
|
|
500
|
+
color: var(--kc-faint);
|
|
417
501
|
font-family: var(--kc-mono);
|
|
418
502
|
overflow: hidden;
|
|
419
503
|
text-overflow: ellipsis;
|
|
@@ -431,8 +515,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
431
515
|
justify-content: center;
|
|
432
516
|
gap: 4px;
|
|
433
517
|
padding: 4px 6px;
|
|
434
|
-
background:
|
|
435
|
-
border-left: 1px solid var(--kc-border);
|
|
518
|
+
background: transparent;
|
|
519
|
+
border-left: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
|
|
436
520
|
}
|
|
437
521
|
.kc-icon-btn {
|
|
438
522
|
width: 26px;
|
|
@@ -442,9 +526,15 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
442
526
|
align-items: center;
|
|
443
527
|
justify-content: center;
|
|
444
528
|
font-size: 12px;
|
|
445
|
-
border-radius:
|
|
529
|
+
border-radius: 6px;
|
|
530
|
+
border-color: transparent;
|
|
531
|
+
color: var(--kc-muted);
|
|
446
532
|
}
|
|
447
|
-
.kc-icon-btn
|
|
533
|
+
.kc-icon-btn:hover:not(:disabled) {
|
|
534
|
+
color: var(--kc-accent);
|
|
535
|
+
background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
|
|
536
|
+
}
|
|
537
|
+
.kc-icon-btn-danger:hover:not(:disabled) { color: var(--kc-err); }
|
|
448
538
|
.kc-nav-foot {
|
|
449
539
|
padding: 8px 10px;
|
|
450
540
|
border-top: 1px solid var(--kc-border);
|
|
@@ -460,7 +550,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
460
550
|
display: flex;
|
|
461
551
|
align-items: center;
|
|
462
552
|
justify-content: center;
|
|
463
|
-
background: rgba(4, 8, 14, 0.6);
|
|
553
|
+
background: var(--dsw-alias-bg-mask-1, rgba(4, 8, 14, 0.6));
|
|
464
554
|
backdrop-filter: blur(2px);
|
|
465
555
|
}
|
|
466
556
|
.kc-modal {
|
|
@@ -468,10 +558,10 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
468
558
|
max-height: 88%;
|
|
469
559
|
overflow-y: auto;
|
|
470
560
|
background: var(--kc-panel);
|
|
471
|
-
border: 1px solid var(--kc-border
|
|
561
|
+
border: 1px solid var(--kc-border);
|
|
472
562
|
border-radius: 12px;
|
|
473
563
|
padding: 16px 18px;
|
|
474
|
-
box-shadow: 0 18px 48px rgba(0, 0, 0, 0.5);
|
|
564
|
+
box-shadow: var(--dsw-shadow-lv3, 0 18px 48px rgba(0, 0, 0, 0.5));
|
|
475
565
|
display: flex;
|
|
476
566
|
flex-direction: column;
|
|
477
567
|
gap: 12px;
|
|
@@ -481,9 +571,9 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
481
571
|
.kc-field label { font-size: 12px; color: var(--kc-muted); }
|
|
482
572
|
.kc-form-error {
|
|
483
573
|
color: var(--kc-err);
|
|
484
|
-
background: rgba(255, 95, 86, 0.
|
|
485
|
-
border:
|
|
486
|
-
border-radius:
|
|
574
|
+
background: var(--dsw-alias-state-error-secondary, rgba(255, 95, 86, 0.12));
|
|
575
|
+
border: 0;
|
|
576
|
+
border-radius: 8px;
|
|
487
577
|
padding: 6px 9px;
|
|
488
578
|
font-size: 12px;
|
|
489
579
|
white-space: pre-wrap;
|
|
@@ -499,33 +589,34 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
499
589
|
display: inline-flex;
|
|
500
590
|
align-items: center;
|
|
501
591
|
gap: 2px;
|
|
502
|
-
background: var(--kc-panel
|
|
503
|
-
border: 1px solid var(--kc-border);
|
|
504
|
-
border-radius:
|
|
592
|
+
background: var(--kc-panel);
|
|
593
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 72%, transparent);
|
|
594
|
+
border-radius: 999px;
|
|
505
595
|
padding: 2px;
|
|
506
596
|
}
|
|
507
597
|
.kc-seg button {
|
|
508
|
-
padding:
|
|
598
|
+
padding: 3px 11px;
|
|
509
599
|
font-size: 12px;
|
|
510
600
|
border: 0;
|
|
511
|
-
border-radius:
|
|
601
|
+
border-radius: 999px;
|
|
512
602
|
background: transparent;
|
|
513
603
|
color: var(--kc-muted);
|
|
514
604
|
white-space: nowrap;
|
|
515
605
|
}
|
|
516
|
-
.kc-seg button:hover:not(:disabled) { color: var(--kc-text); background:
|
|
606
|
+
.kc-seg button:hover:not(:disabled) { color: var(--kc-text); background: transparent; border: 0; }
|
|
517
607
|
.kc-seg button.kc-seg-active {
|
|
518
|
-
background: var(--kc-accent);
|
|
519
|
-
color:
|
|
608
|
+
background: var(--kc-accent-weak);
|
|
609
|
+
color: var(--kc-accent);
|
|
610
|
+
font-weight: 600;
|
|
520
611
|
}
|
|
521
|
-
.kc-seg button.kc-seg-active:hover:not(:disabled) { background:
|
|
612
|
+
.kc-seg button.kc-seg-active:hover:not(:disabled) { background: var(--kc-accent-weak); color: var(--kc-accent); }
|
|
522
613
|
|
|
523
614
|
/* ---------- \u4EE3\u7801\u8F93\u5165/\u8F93\u51FA ---------- */
|
|
524
615
|
.kc-code-input {
|
|
525
616
|
font-family: var(--kc-mono);
|
|
526
617
|
font-size: 12px;
|
|
527
618
|
line-height: 1.55;
|
|
528
|
-
background:
|
|
619
|
+
background: var(--kc-panel);
|
|
529
620
|
resize: vertical;
|
|
530
621
|
tab-size: 2;
|
|
531
622
|
}
|
|
@@ -536,16 +627,16 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
536
627
|
display: flex;
|
|
537
628
|
align-items: center;
|
|
538
629
|
gap: 8px;
|
|
539
|
-
padding:
|
|
630
|
+
padding: 6px 12px;
|
|
540
631
|
border-bottom: 1px solid var(--kc-border);
|
|
541
|
-
background:
|
|
632
|
+
background: transparent;
|
|
542
633
|
flex: 0 0 auto;
|
|
543
634
|
}
|
|
544
635
|
.kc-ws-meta-name { font-weight: 600; font-size: 13px; }
|
|
545
636
|
.kc-ws-meta-chip {
|
|
546
637
|
font-size: 11px;
|
|
547
638
|
color: var(--kc-muted);
|
|
548
|
-
border: 1px solid var(--kc-border);
|
|
639
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
|
|
549
640
|
border-radius: 999px;
|
|
550
641
|
padding: 1px 8px;
|
|
551
642
|
max-width: 320px;
|
|
@@ -608,13 +699,15 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
608
699
|
flex: 1;
|
|
609
700
|
min-height: 0;
|
|
610
701
|
overflow-y: auto;
|
|
611
|
-
background:
|
|
612
|
-
border: 1px solid var(--kc-border);
|
|
702
|
+
background: var(--kc-bg);
|
|
703
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
|
|
613
704
|
border-radius: 8px;
|
|
614
705
|
padding: 8px 0;
|
|
615
706
|
font-family: var(--kc-mono);
|
|
616
707
|
font-size: 12px;
|
|
617
708
|
line-height: 1.5;
|
|
709
|
+
scrollbar-width: thin;
|
|
710
|
+
scrollbar-color: var(--kc-border-strong) transparent;
|
|
618
711
|
}
|
|
619
712
|
.kc-output-empty {
|
|
620
713
|
padding: 10px 14px;
|
|
@@ -629,23 +722,23 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
629
722
|
font-family: var(--kc-mono);
|
|
630
723
|
}
|
|
631
724
|
.kc-out-cmd {
|
|
632
|
-
color:
|
|
633
|
-
background:
|
|
725
|
+
color: var(--kc-accent);
|
|
726
|
+
background: var(--kc-accent-weak);
|
|
634
727
|
border-left: 2px solid var(--kc-accent);
|
|
635
728
|
padding-top: 2px;
|
|
636
729
|
padding-bottom: 2px;
|
|
637
730
|
}
|
|
638
731
|
.kc-out-prompt { color: var(--kc-accent); user-select: none; }
|
|
639
|
-
.kc-out-stdout { color:
|
|
640
|
-
.kc-out-stderr { color:
|
|
732
|
+
.kc-out-stdout { color: var(--kc-text); }
|
|
733
|
+
.kc-out-stderr { color: color-mix(in srgb, var(--kc-err) 72%, var(--kc-text)); }
|
|
641
734
|
.kc-out-err { color: var(--kc-err); }
|
|
642
735
|
.kc-out-sys { color: var(--kc-muted); font-size: 11px; }
|
|
643
|
-
.kc-out-muted { color:
|
|
736
|
+
.kc-out-muted { color: var(--kc-faint); }
|
|
644
737
|
.kc-exitbar {
|
|
645
738
|
flex: 0 0 auto;
|
|
646
739
|
font-size: 12px;
|
|
647
740
|
color: var(--kc-ok);
|
|
648
|
-
border-top: 1px solid var(--kc-border);
|
|
741
|
+
border-top: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
|
|
649
742
|
padding: 5px 4px 0;
|
|
650
743
|
}
|
|
651
744
|
.kc-exitbar-err { color: var(--kc-err); }
|
|
@@ -686,9 +779,9 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
686
779
|
.kc-chat-warn {
|
|
687
780
|
font-size: 12px;
|
|
688
781
|
color: var(--kc-warn);
|
|
689
|
-
background: rgba(224, 179, 65, 0.
|
|
690
|
-
border:
|
|
691
|
-
border-radius:
|
|
782
|
+
background: var(--dsw-alias-state-warn-secondary, rgba(224, 179, 65, 0.12));
|
|
783
|
+
border: 0;
|
|
784
|
+
border-radius: 8px;
|
|
692
785
|
padding: 6px 9px;
|
|
693
786
|
white-space: pre-wrap;
|
|
694
787
|
}
|
|
@@ -700,6 +793,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
700
793
|
flex-direction: column;
|
|
701
794
|
gap: 10px;
|
|
702
795
|
padding: 4px 2px;
|
|
796
|
+
scrollbar-width: thin;
|
|
797
|
+
scrollbar-color: var(--kc-border-strong) transparent;
|
|
703
798
|
}
|
|
704
799
|
.kc-chat-empty {
|
|
705
800
|
flex: 1;
|
|
@@ -720,8 +815,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
720
815
|
align-items: center;
|
|
721
816
|
justify-content: center;
|
|
722
817
|
border-radius: 50%;
|
|
723
|
-
background: var(--kc-panel
|
|
724
|
-
border: 1px solid var(--kc-border);
|
|
818
|
+
background: var(--kc-panel);
|
|
819
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
|
|
725
820
|
font-size: 14px;
|
|
726
821
|
user-select: none;
|
|
727
822
|
}
|
|
@@ -734,11 +829,11 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
734
829
|
}
|
|
735
830
|
.kc-chat-user .kc-chat-bubble {
|
|
736
831
|
background: var(--kc-accent-weak);
|
|
737
|
-
border: 1px solid
|
|
832
|
+
border: 1px solid color-mix(in srgb, var(--kc-accent) 30%, transparent);
|
|
738
833
|
}
|
|
739
834
|
.kc-chat-assistant .kc-chat-bubble {
|
|
740
|
-
background: var(--kc-panel
|
|
741
|
-
border: 1px solid var(--kc-border);
|
|
835
|
+
background: var(--kc-panel);
|
|
836
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 70%, transparent);
|
|
742
837
|
}
|
|
743
838
|
.kc-chat-user-text { white-space: pre-wrap; }
|
|
744
839
|
.kc-chat-ai-text { white-space: normal; }
|
|
@@ -757,7 +852,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
757
852
|
.kc-chat-meta {
|
|
758
853
|
margin-top: 6px;
|
|
759
854
|
font-size: 10px;
|
|
760
|
-
color:
|
|
855
|
+
color: var(--kc-faint);
|
|
761
856
|
text-align: right;
|
|
762
857
|
}
|
|
763
858
|
.kc-chat-quickrun {
|
|
@@ -765,16 +860,16 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
765
860
|
align-items: center;
|
|
766
861
|
gap: 8px;
|
|
767
862
|
padding: 6px 10px;
|
|
768
|
-
border: 1px dashed var(--kc-border-strong);
|
|
863
|
+
border: 1px dashed color-mix(in srgb, var(--kc-border-strong) 80%, transparent);
|
|
769
864
|
border-radius: 8px;
|
|
770
865
|
font-size: 12px;
|
|
771
866
|
color: var(--kc-muted);
|
|
772
|
-
background:
|
|
867
|
+
background: var(--kc-panel);
|
|
773
868
|
}
|
|
774
869
|
.kc-chat-quickrun code {
|
|
775
870
|
font-family: var(--kc-mono);
|
|
776
871
|
font-size: 11px;
|
|
777
|
-
color:
|
|
872
|
+
color: var(--kc-accent);
|
|
778
873
|
overflow: hidden;
|
|
779
874
|
text-overflow: ellipsis;
|
|
780
875
|
white-space: nowrap;
|
|
@@ -787,18 +882,18 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
787
882
|
/* ---------- \u4EE3\u7801\u5757\uFF08AI \u56DE\u590D\u5185\uFF09 ---------- */
|
|
788
883
|
.kc-codebox {
|
|
789
884
|
margin: 6px 0;
|
|
790
|
-
border: 1px solid var(--kc-border);
|
|
885
|
+
border: 1px solid color-mix(in srgb, var(--kc-border) 70%, transparent);
|
|
791
886
|
border-radius: 8px;
|
|
792
887
|
overflow: hidden;
|
|
793
|
-
background:
|
|
888
|
+
background: var(--kc-bg);
|
|
794
889
|
}
|
|
795
890
|
.kc-codebox-head {
|
|
796
891
|
display: flex;
|
|
797
892
|
align-items: center;
|
|
798
893
|
gap: 6px;
|
|
799
894
|
padding: 3px 6px 3px 10px;
|
|
800
|
-
background:
|
|
801
|
-
border-bottom: 1px solid var(--kc-border);
|
|
895
|
+
background: var(--kc-panel);
|
|
896
|
+
border-bottom: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
|
|
802
897
|
}
|
|
803
898
|
.kc-codebox-lang {
|
|
804
899
|
font-size: 11px;
|
|
@@ -813,16 +908,21 @@ button.kc-sidebar-entry[data-active='true']:hover {
|
|
|
813
908
|
line-height: 1.55;
|
|
814
909
|
white-space: pre-wrap;
|
|
815
910
|
word-break: break-word;
|
|
816
|
-
color:
|
|
911
|
+
color: var(--kc-text);
|
|
817
912
|
max-height: 320px;
|
|
818
913
|
overflow-y: auto;
|
|
914
|
+
scrollbar-width: thin;
|
|
915
|
+
scrollbar-color: var(--kc-border-strong) transparent;
|
|
819
916
|
}
|
|
820
917
|
|
|
821
|
-
/* ---------- \u6EDA\u52A8\u6761 ---------- */
|
|
918
|
+
/* ---------- \u6EDA\u52A8\u6761\uFF08WebKit \u56DE\u843D\uFF1B\u73B0\u4EE3\u6D4F\u89C8\u5668\u8D70 scrollbar-width/color\uFF09 ---------- */
|
|
822
919
|
#dsh-k8s-console *::-webkit-scrollbar { width: 8px; height: 8px; }
|
|
823
|
-
#dsh-k8s-console *::-webkit-scrollbar-thumb {
|
|
920
|
+
#dsh-k8s-console *::-webkit-scrollbar-thumb {
|
|
921
|
+
background: color-mix(in srgb, var(--kc-border-strong) 85%, transparent);
|
|
922
|
+
border-radius: 4px;
|
|
923
|
+
}
|
|
824
924
|
#dsh-k8s-console *::-webkit-scrollbar-track { background: transparent; }
|
|
825
|
-
`;var
|
|
925
|
+
`;var Fe="dsh-k8s-console-style";function Xe(){if(typeof document>"u")return()=>{};let e=document.getElementById(Fe);if(e!==null&&e.isConnected)return()=>{};let t=document.createElement("style");return t.id=Fe,t.setAttribute("data-plugin","dsh-plugin-k8s"),t.textContent=We,document.head.appendChild(t),()=>{t.isConnected&&t.remove()}}var _e={"sidebar.label":"K8s","sidebar.aria":"K8s \u63A7\u5236\u53F0","sidebar.title":"\u6253\u5F00 K8s \u63A7\u5236\u53F0","overlay.close":"\u56DE\u5230\u5BF9\u8BDD"},qe={"sidebar.label":"K8s","sidebar.aria":"K8s console","sidebar.title":"Open K8s console","overlay.close":"Back to conversation"};var kt=["slots","locale"];function bt(e){let t=e?.slots,o=e?.locale;if(!t||!o)return;let n=o.bind("k8s"),a=o.register("k8s",{zh:_e,en:qe}),k=Xe(),s=t.inject("sidebar.footer.action",()=>t.register({name:"sidebar.footer.action",id:"k8s-console",order:-9,locale:"k8s",label:()=>n("sidebar.label")},Te)),v=t.inject("conversation.view",()=>t.register({name:"conversation.view",id:"k8s",order:65,locale:"k8s",label:()=>n("sidebar.label")},Je));e?.effect&&e.effect(()=>()=>{a(),s(),v(),k()},"dsh-plugin-k8s: plugin teardown")}return nt(ft);})();
|
|
826
926
|
return __dsh_k8s_module__;
|
|
827
927
|
},
|
|
828
928
|
});
|
package/package.json
CHANGED