@snowlocked/dsh-k8s-console 0.3.1 → 0.4.0

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 CHANGED
@@ -5,73 +5,122 @@ 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 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 ot=e=>tt(de({},"__esModule",{value:!0}),e);var ft={};et(ft,{apply:()=>bt,inject:()=>kt});var oe=E("react");var nt=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 b=a.textContent?.trim().toLowerCase()??"",c=`${a.getAttribute("aria-label")??""} ${a.title??""}`.toLowerCase();return e==="k8s"?b==="k8s"||c.includes("k8s"):b==="chat"||b==="\u5BF9\u8BDD"||c.includes("chat")||c.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{}},X={open(){ee||(ee=!0,ue=Pe,Se(),Ne()),we("k8s")},close(){ee=!1,ue=Ee,Se(),Ne(),we("chat")},toggle(){Ce?X.close():X.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 $e(e={}){let{wide:t=!0,t:o=(c=>c)}=e,n=o,a=(0,oe.useSyncExternalStore)(X.subscribe,X.getSnapshot,X.getSnapshot),b=(0,oe.useCallback)(()=>{X.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:b,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 ne=E("react"),Ve=E("react-dom/client");var z=E("react");var Te="/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(`${Te}${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(`${Te}${e}`,{...Ke(t),...n?{signal:n}:{}})}catch(m){throw n?.aborted?m:new U(`\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF1A${m instanceof Error?m.message:String(m)}`,0)}if(!a.ok||!a.body){let m=`HTTP ${a.status}`;try{let k=await a.json();k?.error&&(m=k.error)}catch{}throw new U(m,a.status)}let b=a.body.getReader(),c=new TextDecoder("utf-8"),P="";for(;;){let m;try{m=await b.read()}catch(h){throw n?.aborted?h:new U(`\u8BFB\u53D6\u6D41\u5931\u8D25\uFF1A${h instanceof Error?h.message:String(h)}`,0)}if(m.done)break;P+=c.decode(m.value,{stream:!0});let k;for(;(k=P.indexOf(`
8
+ "use strict";var __dsh_k8s_module__=(()=>{var Ne=Object.defineProperty;var ft=Object.getOwnPropertyDescriptor;var gt=Object.getOwnPropertyNames;var vt=Object.prototype.hasOwnProperty;var A=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,a)=>(typeof require<"u"?require:r)[a]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var xt=(e,r)=>{for(var a in r)Ne(e,a,{get:r[a],enumerable:!0})},ht=(e,r,a,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of gt(r))!vt.call(e,s)&&s!==a&&Ne(e,s,{get:()=>r[s],enumerable:!(n=ft(r,s))||n.enumerable});return e};var yt=e=>ht(Ne({},"__esModule",{value:!0}),e);var Rt={};xt(Rt,{apply:()=>Mt,inject:()=>Kt});var ve=A("react");var wt=A("react");var Me="dsh-k8s-console.persist.v1";function Ce(){try{let e=window.localStorage.getItem(Me);if(!e)return{};let r=JSON.parse(e);return r&&typeof r=="object"?r:{}}catch{return{}}}function Re(e){try{let r={...Ce(),...e};window.localStorage.setItem(Me,JSON.stringify(r))}catch{}}var ge=Ce().panelOpen===!0,Pe=new Set,He=e=>{if(typeof document>"u")return;let r=0,a=()=>{let n=Array.from(document.querySelectorAll('[role="tab"]')).filter(s=>s.closest("#dsh-k8s-console")===null).filter(s=>s.closest("#dsh-database-console")===null).find(s=>{let k=s.textContent?.trim().toLowerCase()??"",i=`${s.getAttribute("aria-label")??""} ${s.title??""}`.toLowerCase();return e==="k8s"?k==="k8s"||i.includes("k8s"):k==="chat"||k==="\u5BF9\u8BDD"||i.includes("chat")||i.includes("\u5BF9\u8BDD")});if(n!==void 0){n.click();return}++r<8&&setTimeout(a,16)};a()},Ie=()=>{for(let e of Pe)e()},De=!1,Le=Object.freeze({panelOpen:!0}),Be=Object.freeze({panelOpen:!1}),Se=ge?Le:Be,Oe=()=>{try{Re({panelOpen:ge})}catch{}},Q={open(){ge||(ge=!0,Se=Le,Oe(),Ie()),He("k8s")},close(){ge=!1,Se=Be,Oe(),Ie(),He("chat")},toggle(){De?Q.close():Q.open()},setDocked(e){De=e},getSnapshot:()=>Se,subscribe(e){return Pe.add(e),()=>Pe.delete(e)}};var q=A("react/jsx-runtime"),Nt=(0,q.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,q.jsx)("circle",{cx:"8",cy:"8",r:"1.4",fill:"currentColor",stroke:"none"}),(0,q.jsx)("circle",{cx:"8",cy:"2.6",r:"1.05",fill:"currentColor",stroke:"none"}),(0,q.jsx)("circle",{cx:"8",cy:"13.4",r:"1.05",fill:"currentColor",stroke:"none"}),(0,q.jsx)("circle",{cx:"2.6",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),(0,q.jsx)("circle",{cx:"13.4",cy:"8",r:"1.05",fill:"currentColor",stroke:"none"}),(0,q.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 je(e={}){let{wide:r=!0,t:a=(i=>i)}=e,n=a,s=(0,ve.useSyncExternalStore)(Q.subscribe,Q.getSnapshot,Q.getSnapshot),k=(0,ve.useCallback)(()=>{Q.toggle()},[]);return(0,q.jsxs)("button",{type:"button","data-d-sh-plugin":"k8s-console","data-active":s.panelOpen||void 0,"aria-label":n("sidebar.aria"),title:n("sidebar.title"),onClick:k,className:"kc-sidebar-entry",children:[(0,q.jsx)("span",{className:"kc-sidebar-entry-icon","aria-hidden":"true",children:Nt}),r?(0,q.jsx)("span",{className:"kc-sidebar-entry-label",children:n("sidebar.label")}):null]})}var xe=A("react"),nt=A("react-dom/client");var O=A("react");var Je="/api/dsh-plugin-k8s",se=class extends Error{status;code;constructor(r,a,n){super(r),this.status=a,this.code=n}};async function V(e){return e instanceof se||e instanceof Error?e.message:typeof e=="string"?e:JSON.stringify(e)}function We(e){return{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e??{})}}async function Y(e,r){let a;try{a=await fetch(`${Je}${e}`,We(r))}catch(s){throw new se(`\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF1A${s instanceof Error?s.message:String(s)}`,0)}let n=null;try{n=await a.json()}catch{n=null}if(!a.ok){let s=n&&typeof n=="object"?n:{};throw new se(String(s.error??`HTTP ${a.status}`),a.status,String(s.code??""))}return n}async function Ve(e,r,a,n){let s;try{s=await fetch(`${Je}${e}`,{...We(r),...n?{signal:n}:{}})}catch(g){throw n?.aborted?g:new se(`\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF1A${g instanceof Error?g.message:String(g)}`,0)}if(!s.ok||!s.body){let g=`HTTP ${s.status}`;try{let b=await s.json();b?.error&&(g=b.error)}catch{}throw new se(g,s.status)}let k=s.body.getReader(),i=new TextDecoder("utf-8"),h="";for(;;){let g;try{g=await k.read()}catch(N){throw n?.aborted?N:new se(`\u8BFB\u53D6\u6D41\u5931\u8D25\uFF1A${N instanceof Error?N.message:String(N)}`,0)}if(g.done)break;h+=i.decode(g.value,{stream:!0});let b;for(;(b=h.indexOf(`
9
9
 
10
- `))>=0;){let h=P.slice(0,k);if(P=P.slice(k+2),h.startsWith("data: ")){let T=h.slice(6).trim();if(!T)continue;try{o(JSON.parse(T))}catch{}}}}if(P.startsWith("data: ")){let m=P.slice(6).trim();if(m)try{o(JSON.parse(m))}catch{}}}var j={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 Me(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 ze(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 Re(e){let{kubeconfigs:t,busyList:o,refresh:n,onOpenSession:a,onFlash:b}=e,[c,P]=(0,H.useState)(fe),[m,k]=(0,H.useState)(null),h=e.stateInfo?.kubectl,T=(0,H.useRef)(null);(0,H.useEffect)(()=>{c.open&&c.mode==="paste"&&T.current?.focus()},[c.open,c.mode]);let g=(0,H.useCallback)(s=>{P(w=>({...w,...s}))},[]),K=(0,H.useCallback)(()=>{P(fe)},[]),M=(0,H.useCallback)(async()=>{if(c.busy)return;let s=c.name.trim();if(!s){g({error:"\u8BF7\u586B\u5199 kubeconfig \u540D\u79F0\uFF08\u663E\u793A\u7528\uFF09"});return}if(c.mode==="paste"&&c.content.trim()===""){g({error:"\u8BF7\u7C98\u8D34 kubeconfig \u5185\u5BB9\uFF0C\u6216\u6539\u7528\u201C\u672C\u673A\u6587\u4EF6\u5BFC\u5165\u201D"});return}if(c.mode==="path"&&c.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 j.save({name:s,content:c.mode==="paste"?c.content:void 0,filePath:c.mode==="path"?c.filePath:void 0}),K(),b("ok",`\u5DF2\u4FDD\u5B58 kubeconfig\u300C${s}\u300D`),n()}catch(w){g({error:await W(w)})}finally{g({busy:!1})}},[c,g,K,b,n]),R=(0,H.useCallback)(async s=>{if(window.confirm(`\u5220\u9664 kubeconfig\u300C${s.name}\u300D\uFF1F
10
+ `))>=0;){let N=h.slice(0,b);if(h=h.slice(b+2),N.startsWith("data: ")){let $=N.slice(6).trim();if(!$)continue;try{a(JSON.parse($))}catch{}}}}if(h.startsWith("data: ")){let g=h.slice(6).trim();if(g)try{a(JSON.parse(g))}catch{}}}var D={state:e=>Y("/state",e?{refresh:!0}:{}),kubeconfigs:()=>Y("/kubeconfigs/list"),save:e=>Y("/kubeconfigs/save",e),remove:e=>Y("/kubeconfig/remove",{id:e}),raw:e=>Y("/kubeconfig/raw",{id:e}),check:e=>Y("/kubeconfigs/check",{id:e}),aiModels:()=>Y("/ai/models"),run:(e,r,a)=>Ve("/run",e,r,a),chat:(e,r,a)=>Ve("/ai/chat",e,r,a),historyAppend:e=>Y("/history/append",e),historyList:e=>Y("/history/list",e??{}),historyGet:e=>Y("/history/get",{sessionId:e}),historyDelete:e=>Y("/history/delete",{sessionId:e}),historyClear:()=>Y("/history/clear",{confirm:!0})};function Xe(e){let r=[];for(let a of e.providers)if(a.models.length===0)r.push({key:`p:${a.provider}`,provider:a.provider,label:a.label??a.provider});else for(let n of a.models)r.push({key:`m:${a.provider}/${n.id}`,provider:a.provider,model:n.id,label:n.label??`${a.provider} \xB7 ${n.id}`});return r}function Fe(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function de(e){if(!e)return"\u2014";let r=new Date(e);return Number.isNaN(r.getTime())?e:r.toLocaleString("zh-CN",{hour12:!1})}var X=A("react");var p=A("react/jsx-runtime"),Ae={open:!1,name:"",mode:"paste",content:"",filePath:"",busy:!1,error:null};function _e(e){let{kubeconfigs:r,busyList:a,refresh:n,onOpenSession:s,onFlash:k}=e,[i,h]=(0,X.useState)(Ae),[g,b]=(0,X.useState)(null),N=e.stateInfo?.kubectl,$=(0,X.useRef)(null);(0,X.useEffect)(()=>{i.open&&i.mode==="paste"&&$.current?.focus()},[i.open,i.mode]);let v=(0,X.useCallback)(c=>{h(C=>({...C,...c}))},[]),R=(0,X.useCallback)(()=>{h(Ae)},[]),H=(0,X.useCallback)(async()=>{if(i.busy)return;let c=i.name.trim();if(!c){v({error:"\u8BF7\u586B\u5199 kubeconfig \u540D\u79F0\uFF08\u663E\u793A\u7528\uFF09"});return}if(i.mode==="paste"&&i.content.trim()===""){v({error:"\u8BF7\u7C98\u8D34 kubeconfig \u5185\u5BB9\uFF0C\u6216\u6539\u7528\u201C\u672C\u673A\u6587\u4EF6\u5BFC\u5165\u201D"});return}if(i.mode==="path"&&i.filePath.trim()===""){v({error:"\u8BF7\u586B\u5199\u672C\u673A kubeconfig \u6587\u4EF6\u8DEF\u5F84\uFF08\u5982 D:\\path\\dev.yaml\uFF09"});return}v({busy:!0,error:null});try{await D.save({name:c,content:i.mode==="paste"?i.content:void 0,filePath:i.mode==="path"?i.filePath:void 0}),R(),k("ok",`\u5DF2\u4FDD\u5B58 kubeconfig\u300C${c}\u300D`),n()}catch(C){v({error:await V(C)})}finally{v({busy:!1})}},[i,v,R,k,n]),E=(0,X.useCallback)(async c=>{if(window.confirm(`\u5220\u9664 kubeconfig\u300C${c.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`)){k(`rm:${s.id}`);try{let{ok:I}=await j.remove(s.id);I?(b("info",`\u5DF2\u5220\u9664\u300C${s.name}\u300D`),n()):b("error","\u5220\u9664\u5931\u8D25\uFF1A\u670D\u52A1\u7AEF\u672A\u786E\u8BA4")}catch(I){b("error",`\u5220\u9664\u5931\u8D25\uFF1A${await W(I)}`)}finally{k(null)}}},[b,n]),B=(0,H.useCallback)(async s=>{k(`check:${s.id}`);try{let w=await j.check(s.id);b(w.ok?"ok":"error",`\u300C${s.name}\u300D${w.ok?"\u2705 \u96C6\u7FA4\u53EF\u8FBE":"\u274C \u4E0D\u53EF\u8FBE"}\uFF1A${w.message}`)}catch(w){b("error",`\u300C${s.name}\u300D\u68C0\u67E5\u5931\u8D25\uFF1A${await W(w)}`)}finally{k(null),n()}},[b,n]),O=(0,H.useCallback)(async s=>{k(`copy:${s.id}`);try{let{content:w}=await j.raw(s.id);await navigator.clipboard.writeText(w),b("ok",`\u5DF2\u590D\u5236\u300C${s.name}\u300D\u5B8C\u6574 kubeconfig \u5230\u526A\u8D34\u677F\uFF08\u542B\u51ED\u636E\uFF0C\u6CE8\u610F\u4FDD\u7BA1\uFF09`)}catch(w){b("error",`\u590D\u5236\u5931\u8D25\uFF1A${await W(w)}`)}finally{k(null)}},[b]);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"})]}),h&&!h.present?(0,p.jsxs)("div",{className:"kc-warnbox",title:h.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:h.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(s=>{let w=m===`rm:${s.id}`||m===`check:${s.id}`||m===`copy:${s.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(s),disabled:o,children:[(0,p.jsx)("span",{className:"kc-conn-name",children:s.name}),(0,p.jsxs)("span",{className:"kc-conn-sub",children:[s.currentContext??s.contextNames[0]??"\uFF08\u65E0 context\uFF09",s.contextNames.length>1?`\uFF08\u5171 ${s.contextNames.length} \u4E2A context\uFF09`:""]}),(0,p.jsx)("span",{className:"kc-conn-server",title:"API server",children:s.server??""}),s.lastCheckError?(0,p.jsx)("span",{className:"kc-conn-state kc-conn-state-bad",title:`\u4E0A\u6B21\u68C0\u67E5\u5931\u8D25\uFF1A${s.lastCheckError}`,children:"\u2715"}):s.lastCheckedAt?(0,p.jsx)("span",{className:"kc-conn-state kc-conn-state-ok",title:`\u4E0A\u6B21\u68C0\u67E5 ${be(s.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:w,onClick:()=>void B(s),children:w&&m===`check:${s.id}`?"\u2026":"\u6D4B"}),(0,p.jsx)("button",{className:"kc-icon-btn",title:"\u590D\u5236\u5B8C\u6574 kubeconfig\uFF08\u542B\u51ED\u636E\uFF09",disabled:w,onClick:()=>void O(s),children:w&&m===`copy:${s.id}`?"\u2026":"\u29C9"}),(0,p.jsx)("button",{className:"kc-icon-btn kc-icon-btn-danger",title:`\u5220\u9664\uFF08${ze(s.size)}\uFF0C\u66F4\u65B0\u4E8E ${be(s.updatedAt)}\uFF09`,disabled:w,onClick:()=>void R(s),children:"\u2715"})]})]},s.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",h?.present&&h.version?(0,p.jsxs)("div",{children:["kubectl ",h.version]}):null]})}),c.open?(0,p.jsx)("div",{className:"kc-modal-mask",onMouseDown:s=>{s.target===s.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:c.name,onChange:s=>g({name:s.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":c.mode==="paste",className:c.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":c.mode==="path",className:c.mode==="path"?"kc-seg-active":"",onClick:()=>g({mode:"path"}),children:"\u{1F4C1} \u5BFC\u5165\u672C\u673A\u6587\u4EF6"})]}),c.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:T,className:"kc-code-input",rows:10,value:c.content,onChange:s=>g({content:s.target.value,error:null}),placeholder:`apiVersion: v1
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:${c.id}`);try{let{ok:L}=await D.remove(c.id);L?(k("info",`\u5DF2\u5220\u9664\u300C${c.name}\u300D`),n()):k("error","\u5220\u9664\u5931\u8D25\uFF1A\u670D\u52A1\u7AEF\u672A\u786E\u8BA4")}catch(L){k("error",`\u5220\u9664\u5931\u8D25\uFF1A${await V(L)}`)}finally{b(null)}}},[k,n]),_=(0,X.useCallback)(async c=>{b(`check:${c.id}`);try{let C=await D.check(c.id);k(C.ok?"ok":"error",`\u300C${c.name}\u300D${C.ok?"\u2705 \u96C6\u7FA4\u53EF\u8FBE":"\u274C \u4E0D\u53EF\u8FBE"}\uFF1A${C.message}`)}catch(C){k("error",`\u300C${c.name}\u300D\u68C0\u67E5\u5931\u8D25\uFF1A${await V(C)}`)}finally{b(null),n()}},[k,n]),B=(0,X.useCallback)(async c=>{b(`copy:${c.id}`);try{let{content:C}=await D.raw(c.id);await navigator.clipboard.writeText(C),k("ok",`\u5DF2\u590D\u5236\u300C${c.name}\u300D\u5B8C\u6574 kubeconfig \u5230\u526A\u8D34\u677F\uFF08\u542B\u51ED\u636E\uFF0C\u6CE8\u610F\u4FDD\u7BA1\uFF09`)}catch(C){k("error",`\u590D\u5236\u5931\u8D25\uFF1A${await V(C)}`)}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:r.length}),(0,p.jsx)("span",{className:"kc-grow"}),(0,p.jsx)("button",{className:"kc-btn-sm",onClick:()=>{v({...Ae,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:a,title:"\u5237\u65B0\u5217\u8868",children:"\u21BB"})]}),N&&!N.present?(0,p.jsxs)("div",{className:"kc-warnbox",title:N.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:N.missingReason})]}):null,(0,p.jsxs)("div",{className:"kc-nav-list",children:[r.length===0?(0,p.jsx)("div",{className:"kc-nav-empty",children:a?"\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,r.map(c=>{let C=g===`rm:${c.id}`||g===`check:${c.id}`||g===`copy:${c.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:()=>s(c),disabled:a,children:[(0,p.jsx)("span",{className:"kc-conn-name",children:c.name}),(0,p.jsxs)("span",{className:"kc-conn-sub",children:[c.currentContext??c.contextNames[0]??"\uFF08\u65E0 context\uFF09",c.contextNames.length>1?`\uFF08\u5171 ${c.contextNames.length} \u4E2A context\uFF09`:""]}),(0,p.jsx)("span",{className:"kc-conn-server",title:"API server",children:c.server??""}),c.lastCheckError?(0,p.jsx)("span",{className:"kc-conn-state kc-conn-state-bad",title:`\u4E0A\u6B21\u68C0\u67E5\u5931\u8D25\uFF1A${c.lastCheckError}`,children:"\u2715"}):c.lastCheckedAt?(0,p.jsx)("span",{className:"kc-conn-state kc-conn-state-ok",title:`\u4E0A\u6B21\u68C0\u67E5 ${de(c.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:C,onClick:()=>void _(c),children:C&&g===`check:${c.id}`?"\u2026":"\u6D4B"}),(0,p.jsx)("button",{className:"kc-icon-btn",title:"\u590D\u5236\u5B8C\u6574 kubeconfig\uFF08\u542B\u51ED\u636E\uFF09",disabled:C,onClick:()=>void B(c),children:C&&g===`copy:${c.id}`?"\u2026":"\u29C9"}),(0,p.jsx)("button",{className:"kc-icon-btn kc-icon-btn-danger",title:`\u5220\u9664\uFF08${Fe(c.size)}\uFF0C\u66F4\u65B0\u4E8E ${de(c.updatedAt)}\uFF09`,disabled:C,onClick:()=>void E(c),children:"\u2715"})]})]},c.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",N?.present&&N.version?(0,p.jsxs)("div",{children:["kubectl ",N.version]}):null]})}),i.open?(0,p.jsx)("div",{className:"kc-modal-mask",onMouseDown:c=>{c.target===c.currentTarget&&R()},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:i.name,onChange:c=>v({name:c.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":i.mode==="paste",className:i.mode==="paste"?"kc-seg-active":"",onClick:()=>v({mode:"paste"}),children:"\u{1F4CB} \u7C98\u8D34\u5185\u5BB9"}),(0,p.jsx)("button",{type:"button",role:"tab","aria-selected":i.mode==="path",className:i.mode==="path"?"kc-seg-active":"",onClick:()=>v({mode:"path"}),children:"\u{1F4C1} \u5BFC\u5165\u672C\u673A\u6587\u4EF6"})]}),i.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:$,className:"kc-code-input",rows:10,value:i.content,onChange:c=>v({content:c.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:c.filePath,onChange:s=>g({filePath:s.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"})]}),c.error?(0,p.jsx)("div",{className:"kc-form-error",children:c.error}):null,(0,p.jsxs)("div",{className:"kc-modal-actions",children:[(0,p.jsx)("button",{onClick:K,disabled:c.busy,children:"\u53D6\u6D88"}),(0,p.jsx)("button",{className:"kc-btn-primary",onClick:()=>void M(),disabled:c.busy,children:c.busy?"\u4FDD\u5B58\u5E76\u89E3\u6790\u2026":"\u4FDD\u5B58"})]})]})}):null]})}var G=E("react");var N=E("react");var y=E("react/jsx-runtime"),Ie=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 Oe=(0,N.forwardRef)(function({kube:t},o){let[n,a]=(0,N.useState)(""),[b,c]=(0,N.useState)(""),[P,m]=(0,N.useState)(""),[k,h]=(0,N.useState)(!1),[T,g]=(0,N.useState)([]),[K,M]=(0,N.useState)(null),[R,B]=(0,N.useState)([]),[O,s]=(0,N.useState)(-1),[w,I]=(0,N.useState)(null),F=(0,N.useRef)(null),u=(0,N.useRef)(null),f=(0,N.useRef)(null),A=(0,N.useRef)(()=>{}),$=(0,N.useCallback)(r=>{g(l=>{let x=[...l,r];return x.length>Ie?x.slice(x.length-Ie):x})},[]);(0,N.useEffect)(()=>{let r=u.current;r&&(r.scrollTop=r.scrollHeight)},[T,k,K]);let V=(0,N.useCallback)(()=>{F.current?.abort()},[]),_=(0,N.useCallback)(async r=>{let l=r.trim();if(!l||k)return;let x=l.split(`
20
- `).filter(C=>C.trim()!==""&&!C.trim().startsWith("#")).join(`
21
- `).trim();if(!x)return;F.current=new AbortController;let L=F.current.signal;h(!0),M(null),s(-1),$({kind:"cmd",text:x}),B(C=>[...C.slice(-99),x]);let Ye=C=>{if(C.type==="start")$({kind:"sys",text:`\u25B6 ${String(C.command??`kubectl ${x}`)}`}),I(`\u6B63\u5728\u6267\u884C ${String(C.command??"")} \u2026\uFF08\u53EF\u968F\u65F6\u4E2D\u6B62\uFF09`);else if(C.type==="out"){let ie=C.channel==="stderr"?"stderr":"stdout",te=typeof C.text=="string"?C.text:"";te&&$({kind:"out",channel:ie,text:te})}else if(C.type==="exit"){let ie=typeof C.code=="number"?C.code:null,te=typeof C.signal=="string"?C.signal:null,Ue=typeof C.durationMs=="number"?C.durationMs:0,ve=C.truncated===!0,ce=typeof C.reason=="string"?C.reason:void 0;M({code:ie,signal:te,durationMs:Ue,truncated:ve,reason:ce});let le=st(ce);ve&&!le&&$({kind:"sys",text:"\u8F93\u51FA\u8D85\u8FC7\u4E0A\u9650\u5DF2\u622A\u65AD",tone:"err"}),le&&$({kind:"sys",text:le,tone:ce==="aborted"?"muted":"err"}),I(null)}else C.type==="error"&&($({kind:"err",text:String(C.message??"\u672A\u77E5\u9519\u8BEF")}),I(null))};try{await j.run({id:t.id,command:x,context:b,namespace:P},Ye,L),L.aborted&&($({kind:"sys",text:"\u5DF2\u4E2D\u6B62",tone:"muted"}),M(C=>C??{code:null,signal:null,durationMs:0,truncated:!1,reason:"aborted"}))}catch(C){L.aborted?$({kind:"sys",text:"\u5DF2\u4E2D\u6B62",tone:"muted"}):$({kind:"err",text:await W(C)}),I(null)}finally{h(!1),F.current=null}},[t.id,k,b,P,$]);A.current=_,(0,N.useImperativeHandle)(o,()=>({runText(r){a(r),f.current?.focus(),window.setTimeout(()=>{let l=A.current;l&&l(r)},0)}}),[]);let Y=(0,N.useCallback)(()=>{_(n)},[_,n]),q=(0,N.useCallback)(r=>{if(r.key==="Enter"&&!r.shiftKey&&!r.nativeEvent.isComposing){r.preventDefault(),Y();return}if(r.key==="ArrowUp"&&R.length>0){let l=O<0?R.length-1:Math.max(0,O-1);s(l),a(R[l]??""),r.preventDefault()}else if(r.key==="ArrowDown"&&O>=0){if(O>=R.length-1)s(-1),a("");else{let l=O+1;s(l),a(R[l]??"")}r.preventDefault()}},[R,O,Y]),ae=(0,N.useCallback)(()=>{g([]),M(null)},[]),se=(0,N.useCallback)(async()=>{let r=T.filter(l=>l.kind==="cmd"||l.kind==="out").map(l=>l.kind==="cmd"?`$ ${l.text}`:l.text).join("");try{await navigator.clipboard.writeText(r),I("\u5DF2\u590D\u5236\u8F93\u51FA"),window.setTimeout(()=>I(null),1500)}catch(l){I(`\u590D\u5236\u5931\u8D25\uFF1A${l instanceof Error?l.message:String(l)}`)}},[T]),i=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,y.jsxs)("div",{className:"kc-console",children:[(0,y.jsxs)("div",{className:"kc-console-toolbar",children:[(0,y.jsxs)("div",{className:"kc-console-env",children:[(0,y.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,y.jsxs)("select",{value:b,onChange:r=>c(r.target.value),disabled:k,children:[(0,y.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,y.jsx)("option",{value:r,children:r},r))]})]}),(0,y.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,y.jsx)("input",{value:P,onChange:r=>m(r.target.value),placeholder:"default",disabled:k,spellCheck:!1})]})]}),(0,y.jsx)("div",{className:"kc-grow"}),(0,y.jsx)("button",{className:"kc-btn-sm",onClick:ae,title:"\u6E05\u7A7A\u8F93\u51FA",children:"\u6E05\u7A7A"}),(0,y.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,y.jsx)("button",{className:"kc-btn-sm",onClick:()=>{a(at.join(`
22
- `)),f.current?.focus()},title:"\u586B\u5165\u5E38\u7528\u793A\u4F8B",children:"\u793A\u4F8B"})]}),(0,y.jsxs)("div",{className:"kc-console-input-row",children:[(0,y.jsx)("textarea",{ref:f,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
- \u4F8B\u5982\uFF1Aget pods -A
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:i.filePath,onChange:c=>v({filePath:c.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"})]}),i.error?(0,p.jsx)("div",{className:"kc-form-error",children:i.error}):null,(0,p.jsxs)("div",{className:"kc-modal-actions",children:[(0,p.jsx)("button",{onClick:R,disabled:i.busy,children:"\u53D6\u6D88"}),(0,p.jsx)("button",{className:"kc-btn-primary",onClick:()=>void H(),disabled:i.busy,children:i.busy?"\u4FDD\u5B58\u5E76\u89E3\u6790\u2026":"\u4FDD\u5B58"})]})]})}):null]})}var ie=A("react");var P=A("react");var S=A("react/jsx-runtime"),qe=800,Ct=["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"],Ye=e=>`dsh-k8s-console.cmdhist.v1.${e}`,Ee=100;function St(e){try{let r=window.localStorage.getItem(Ye(e)),a=r?JSON.parse(r):null;return Array.isArray(a)?a.filter(n=>typeof n=="string").slice(-Ee):[]}catch{return[]}}function Pt(e,r){try{window.localStorage.setItem(Ye(e),JSON.stringify(r.slice(-Ee)))}catch{}}function At(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 Ge=(0,P.forwardRef)(function({kube:r},a){let[n,s]=(0,P.useState)(""),[k,i]=(0,P.useState)(""),[h,g]=(0,P.useState)(""),[b,N]=(0,P.useState)(!1),[$,v]=(0,P.useState)([]),[R,H]=(0,P.useState)(null),[E,_]=(0,P.useState)(()=>St(r.id)),[B,c]=(0,P.useState)(-1),[C,L]=(0,P.useState)(null),oe=(0,P.useRef)(null),u=(0,P.useRef)(null),x=(0,P.useRef)(null),T=(0,P.useRef)(()=>{}),z=(0,P.useCallback)(l=>{v(f=>{let W=[...f,l];return W.length>qe?W.slice(W.length-qe):W})},[]);(0,P.useEffect)(()=>{let l=u.current;l&&(l.scrollTop=l.scrollHeight)},[$,b,R]);let K=(0,P.useCallback)(()=>{oe.current?.abort()},[]),Z=(0,P.useCallback)(async l=>{let f=l.trim();if(!f||b)return;let W=f.split(`
20
+ `).filter(w=>w.trim()!==""&&!w.trim().startsWith("#")).join(`
21
+ `).trim();if(!W)return;oe.current=new AbortController;let U=oe.current.signal;N(!0),H(null),c(-1),z({kind:"cmd",text:W}),_(w=>{let te=[...w.slice(-(Ee-1)),W];return Pt(r.id,te),te});let me=w=>{if(w.type==="start")z({kind:"sys",text:`\u25B6 ${String(w.command??`kubectl ${W}`)}`}),L(`\u6B63\u5728\u6267\u884C ${String(w.command??"")} \u2026\uFF08\u53EF\u968F\u65F6\u4E2D\u6B62\uFF09`);else if(w.type==="out"){let te=w.channel==="stderr"?"stderr":"stdout",pe=typeof w.text=="string"?w.text:"";pe&&z({kind:"out",channel:te,text:pe})}else if(w.type==="note")z({kind:"sys",text:String(w.text??""),tone:"muted"});else if(w.type==="exit"){let te=typeof w.code=="number"?w.code:null,pe=typeof w.signal=="string"?w.signal:null,ye=typeof w.durationMs=="number"?w.durationMs:0,re=w.truncated===!0,ue=typeof w.reason=="string"?w.reason:void 0;H({code:te,signal:pe,durationMs:ye,truncated:re,reason:ue});let ke=At(ue);re&&!ke&&z({kind:"sys",text:"\u8F93\u51FA\u8D85\u8FC7\u4E0A\u9650\u5DF2\u622A\u65AD",tone:"err"}),ke&&z({kind:"sys",text:ke,tone:ue==="aborted"?"muted":"err"}),L(null)}else w.type==="error"&&(z({kind:"err",text:String(w.message??"\u672A\u77E5\u9519\u8BEF")}),L(null))};try{await D.run({id:r.id,command:W,context:k,namespace:h},me,U),U.aborted&&(z({kind:"sys",text:"\u5DF2\u4E2D\u6B62",tone:"muted"}),H(w=>w??{code:null,signal:null,durationMs:0,truncated:!1,reason:"aborted"}))}catch(w){U.aborted?z({kind:"sys",text:"\u5DF2\u4E2D\u6B62",tone:"muted"}):z({kind:"err",text:await V(w)}),L(null)}finally{N(!1),oe.current=null}},[r.id,b,k,h,z]);T.current=Z,(0,P.useImperativeHandle)(a,()=>({runText(l){s(l),x.current?.focus(),window.setTimeout(()=>{let f=T.current;f&&f(l)},0)}}),[]);let ee=(0,P.useCallback)(()=>{Z(n)},[Z,n]),ne=(0,P.useCallback)(l=>{if(l.key==="Enter"&&!l.shiftKey&&!l.nativeEvent.isComposing){l.preventDefault(),ee();return}if(l.key==="ArrowUp"&&E.length>0){let f=B<0?E.length-1:Math.max(0,B-1);c(f),s(E[f]??""),l.preventDefault()}else if(l.key==="ArrowDown"&&B>=0){if(B>=E.length-1)c(-1),s("");else{let f=B+1;c(f),s(E[f]??"")}l.preventDefault()}},[E,B,ee]),G=(0,P.useCallback)(()=>{v([]),H(null)},[]),le=(0,P.useCallback)(async()=>{let l=$.filter(f=>f.kind==="cmd"||f.kind==="out").map(f=>f.kind==="cmd"?`$ ${f.text}`:f.text).join("");try{await navigator.clipboard.writeText(l),L("\u5DF2\u590D\u5236\u8F93\u51FA"),window.setTimeout(()=>L(null),1500)}catch(f){L(`\u590D\u5236\u5931\u8D25\uFF1A${f instanceof Error?f.message:String(f)}`)}},[$]),be=l=>{let f=[];return l.reason==="aborted"?f.push("\u5DF2\u4E2D\u6B62"):l.code===0?f.push("\u6210\u529F"):l.code!==null&&f.push(`\u9000\u51FA\u7801 ${l.code}`),l.signal&&f.push(`signal ${l.signal}`),f.push(`${(l.durationMs/1e3).toFixed(2)}s`),f.join(" \xB7 ")};return(0,S.jsxs)("div",{className:"kc-console",children:[(0,S.jsxs)("div",{className:"kc-console-toolbar",children:[(0,S.jsxs)("div",{className:"kc-console-env",children:[(0,S.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,S.jsxs)("select",{value:k,onChange:l=>i(l.target.value),disabled:b,children:[(0,S.jsx)("option",{value:"",children:r.currentContext?`${r.currentContext}\uFF08\u9ED8\u8BA4\uFF09`:"\uFF08\u9ED8\u8BA4\uFF09"}),r.contextNames.filter(l=>l!==r.currentContext).map(l=>(0,S.jsx)("option",{value:l,children:l},l))]})]}),(0,S.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,S.jsx)("input",{value:h,onChange:l=>g(l.target.value),placeholder:"default",disabled:b,spellCheck:!1})]})]}),(0,S.jsx)("div",{className:"kc-grow"}),(0,S.jsx)("button",{className:"kc-btn-sm",onClick:G,title:"\u6E05\u7A7A\u8F93\u51FA",children:"\u6E05\u7A7A"}),(0,S.jsx)("button",{className:"kc-btn-sm",onClick:()=>void le(),title:"\u590D\u5236\u5168\u90E8\u547D\u4EE4\u4E0E\u8F93\u51FA",children:"\u590D\u5236\u8F93\u51FA"}),(0,S.jsx)("button",{className:"kc-btn-sm",onClick:()=>{s(Ct.join(`
22
+ `)),x.current?.focus()},title:"\u586B\u5165\u5E38\u7528\u793A\u4F8B",children:"\u793A\u4F8B"})]}),(0,S.jsxs)("div",{className:"kc-console-input-row",children:[(0,S.jsx)("textarea",{ref:x,className:"kc-code-input kc-command-input",value:n,onChange:l=>s(l.target.value),onKeyDown:ne,placeholder:`kubectl \u547D\u4EE4\uFF08\u53EF\u7701\u7565\u524D\u7F00 kubectl\uFF09
23
+ \u4F8B\u5982\uFF1Aget pods -A\u3001get pods -A | grep <\u5173\u952E\u8BCD>
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}),k?(0,y.jsx)("button",{className:"kc-btn-primary kc-btn-stop",onClick:V,title:"\u4E2D\u6B62\u5F53\u524D\u547D\u4EE4",children:"\u25A0 \u4E2D\u6B62"}):(0,y.jsx)("button",{className:"kc-btn-primary",onClick:Y,disabled:n.trim()==="",title:"\u6267\u884C\uFF08Ctrl+Enter \u4EA6\u53EF\uFF09",children:"\u25B6 \u6267\u884C"})]}),w?(0,y.jsx)("div",{className:"kc-console-status",children:w}):null,(0,y.jsx)("div",{className:"kc-output",ref:u,children:T.length===0?(0,y.jsx)("div",{className:"kc-output-empty",children:(0,y.jsxs)("div",{className:"kc-muted",children:["\u8F93\u5165\u547D\u4EE4\u5F00\u59CB\uFF08",t.name,b?` \xB7 --context ${b}`:"",P?` \xB7 -n ${P}`:"","\uFF09\u3002",(0,y.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"]})}):T.map((r,l)=>r.kind==="cmd"?(0,y.jsxs)("div",{className:"kc-out-line kc-out-cmd",children:[(0,y.jsx)("span",{className:"kc-out-prompt",children:"$"})," ",r.text]},l):r.kind==="out"?(0,y.jsx)("pre",{className:`kc-out-line kc-out-${r.channel}${r.text.endsWith(`
26
- `),""}`,children:r.text},l):r.kind==="err"?(0,y.jsxs)("div",{className:"kc-out-line kc-out-err",children:["\u2715 ",r.text]},l):(0,y.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,y.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 ",i(K),K.truncated?" \xB7 \u26A0\uFE0F \u8F93\u51FA\u88AB\u622A\u65AD":"",k?" \xB7 \u8FD0\u884C\u4E2D":""]}):null]})});var S=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,S.useState)([]),[a,b]=(0,S.useState)(""),[c,P]=(0,S.useState)(!1),[m,k]=(0,S.useState)(null),[h,T]=(0,S.useState)(!1),[g,K]=(0,S.useState)(""),[M,R]=(0,S.useState)(null),B=(0,S.useRef)(null),O=(0,S.useRef)(null),s=(0,S.useRef)(null),w=(0,S.useCallback)(async()=>{T(!0);try{k(await j.aiModels())}catch(i){k(null),R(`\u6A21\u578B\u679A\u4E3E\u5931\u8D25\uFF1A${await W(i)}`)}finally{T(!1)}},[]);(0,S.useEffect)(()=>{w()},[w]);let I=(0,S.useMemo)(()=>m?Me(m):[],[m]),F=(0,S.useMemo)(()=>I.find(i=>i.key===g),[I,g]);(0,S.useEffect)(()=>{let i=O.current;i&&(i.scrollTop=i.scrollHeight)},[o]);let u=(0,S.useCallback)(i=>{n(r=>[...r,{...i,key:it()}])},[]),f=(0,S.useCallback)(i=>{n(r=>{if(r.length===0)return r;let l=r[r.length-1];if(l.role!=="assistant")return r;let x={...l,...i};i.content&&typeof i.content=="string"&&(x.content=l.content+i.content);let L=[...r];return L[L.length-1]=x,L})},[]),A=(0,S.useCallback)(()=>{B.current?.abort()},[]),$=(0,S.useCallback)(async()=>{let i=a.trim();if(!i||c)return;b(""),R(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:i}),u({role:"user",content:i}),u({role:"assistant",content:"",state:"streaming"}),P(!0),B.current=new AbortController;let l=B.current.signal;try{await j.chat({id:e.id,provider:F?.provider,model:F?.model,history:r.slice(-40)},x=>{x.type==="delta"&&typeof x.text=="string"?f({content:x.text}):x.type==="done"?f({state:"done",meta:{...typeof x.provider=="string"?{provider:x.provider}:{},...typeof x.model=="string"?{model:x.model}:{}}}):x.type==="aborted"?f({state:"done"}):x.type==="error"&&f({state:"error",content:`\u26A0\uFE0F ${String(x.message??"AI \u51FA\u9519")}`})},l)}catch(x){if(l.aborted)f({state:"done"});else{let L=await W(x);f({state:"error",content:`\u26A0\uFE0F ${L}`})}}finally{P(!1),B.current=null}},[a,c,o,F,e.id,u,f]),V=(0,S.useCallback)(i=>{i.key==="Enter"&&!i.shiftKey&&!i.nativeEvent.isComposing&&(i.preventDefault(),$())},[$]),_=(0,S.useCallback)(()=>{c&&A(),n([]),R(null)},[c,A]),Y=[...o].reverse().find(i=>i.role==="assistant"&&i.state==="done"),q=Y?ct(Y.content):null,ae=(0,S.useCallback)(async i=>{try{await navigator.clipboard.writeText(i)}catch{}},[]),se=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=lt(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,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)}),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:g,onChange:i=>K(i.target.value),disabled:c||h,children:[(0,d.jsx)("option",{value:"",children:"\u81EA\u52A8\uFF08\u7531 DSH \u9009\u62E9\uFF09"}),I.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 w(),disabled:h,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&&!c,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,"")}`:""]})]}),m&&!m.ok?(0,d.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",m.message??"\u6CA1\u6709\u53EF\u7528\u6A21\u578B","\uFF08\u914D\u7F6E\u597D\u540E\u70B9\u201C\u21BB \u6A21\u578B\u201D\u5237\u65B0\uFF09"]}):null,M?(0,d.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",M]}):null,(0,d.jsxs)("div",{className:"kc-chat-scroll",ref:O,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(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:[se(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)),q&&!c?(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:s,className:"kc-code-input kc-chat-input",value:a,onChange:i=>b(i.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}),c?(0,d.jsx)("button",{className:"kc-btn-primary kc-btn-stop",onClick:A,children:"\u25A0 \u505C\u6B62"}):(0,d.jsx)("button",{className:"kc-btn-primary",onClick:()=>void $(),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}),b=(0,G.useRef)(null),c=(0,G.useCallback)(k=>{o(k),a(h=>h[k]?h:{...h,[k]:!0})},[]),P=(0,G.useCallback)(k=>{c("console"),window.setTimeout(()=>{b.current?.runText(k)},0)},[c]),m=(k,h,T)=>(0,D.jsx)("button",{type:"button",role:"tab","aria-selected":t===k,title:T,className:t===k?"kc-seg-active":"",onClick:()=>c(k),children:h});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:[m("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"),m("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)(Oe,{ref:b,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:P})}):null]})]})}var v=E("react/jsx-runtime"),je=0;function dt(){return je+=1,`session_${Date.now().toString(36)}_${je}`}function ge(e={}){let[t,o]=(0,z.useState)([]),[n,a]=(0,z.useState)(null),[b,c]=(0,z.useState)(!1),[P,m]=(0,z.useState)(null),[k,h]=(0,z.useState)(null),T=(0,z.useRef)(!0),[g,K]=(0,z.useState)([]),[M,R]=(0,z.useState)(null),B=(0,z.useCallback)((u,f)=>{h({kind:u,text:f}),window.setTimeout(()=>h(A=>A?.text===f?null:A),u==="error"?6e3:2600)},[]),O=(0,z.useCallback)(async()=>{c(!0);try{let[u,{kubeconfigs:f}]=await Promise.all([j.state(!0),j.kubeconfigs()]);a(u),o(f),m(null)}catch(u){let f=await W(u);m(`\u65E0\u6CD5\u8FDE\u63A5\u63D2\u4EF6\u670D\u52A1\uFF1A${f}\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`),B("error",`\u52A0\u8F7D\u5931\u8D25\uFF1A${f}`)}finally{c(!1)}},[B]);(0,z.useEffect)(()=>{T.current&&(T.current=!1,O())},[O]),(0,z.useEffect)(()=>{let u=new Set(t.map(f=>f.id));K(f=>{let A=f.filter($=>u.has($.kube.id));return A.length===f.length?f:A})},[t]),(0,z.useEffect)(()=>{M!==null&&!g.some(u=>u.key===M)&&R(g.length>0?g[g.length-1].key:null)},[g,M]);let s=(0,z.useCallback)(u=>{let f={key:dt(),kube:u};K(A=>[...A,f]),R(f.key)},[]),w=(0,z.useCallback)(u=>{let f=g.findIndex(V=>V.key===u);if(K(V=>V.filter(_=>_.key!==u)),M!==u)return;let A=f>=0?g[f+1]:void 0,$=f>=0?g[f-1]:void 0;R((A??$)?.key??null)},[g,M]),I=(u,f)=>{let A=g.slice(0,f+1).filter(q=>q.kube.id===u.kube.id).length,$=g.filter(q=>q.kube.id===u.kube.id).length,V=u.kube.name,_=$>1?`${V} #${A}`:V,Y=u.kube.currentContext?` \xB7 ${u.kube.currentContext}`:"";return{title:_,sub:`${u.kube.name}${Y} \u2014 \u4F1A\u8BDD ${A}`}},F=u=>(0,v.jsx)(Le,{kube:u.kube},u.key);return(0,v.jsxs)("div",{className:"kc-app",children:[(0,v.jsxs)("div",{className:"kc-topbar",children:[(0,v.jsxs)("div",{className:"kc-title",children:[(0,v.jsx)("span",{className:"kc-logo",children:"K8s"})," K8s \u63A7\u5236\u53F0",(0,v.jsx)("span",{className:"kc-badge",children:"dsh-plugin-k8s"}),n?.kubectl.version?(0,v.jsxs)("span",{className:"kc-badge kc-badge-ok",children:["kubectl ",n.kubectl.version]}):null,n&&!n.kubectl.present?(0,v.jsx)("span",{className:"kc-badge kc-badge-bad",title:n.kubectl.missingReason,children:"kubectl \u672A\u627E\u5230"}):null]}),(0,v.jsx)("div",{className:"kc-grow"}),k?(0,v.jsx)("span",{className:`kc-notice kc-notice-${k.kind}`,title:k.text,children:k.text}):null,b?(0,v.jsx)("span",{className:"kc-muted",children:"\u2026"}):null,e.onClose?(0,v.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]}),P?(0,v.jsx)("div",{className:"kc-fatal",children:(0,v.jsxs)("div",{className:"kc-fatal-box",children:[(0,v.jsx)("div",{className:"kc-fatal-title",children:"\u26A0\uFE0F K8s \u63A7\u5236\u53F0\u6682\u65F6\u4E0D\u53EF\u7528"}),(0,v.jsx)("div",{className:"kc-fatal-text",children:P}),(0,v.jsx)("button",{onClick:()=>{m(null),O()},children:"\u91CD\u8BD5"})]})}):(0,v.jsxs)("div",{className:"kc-app-body",children:[(0,v.jsx)(Re,{kubeconfigs:t,busyList:b,refresh:O,onOpenSession:s,onFlash:B,stateInfo:n}),(0,v.jsxs)("div",{className:"kc-main",children:[(0,v.jsxs)("div",{className:"kc-tabbar",role:"tablist","aria-label":"\u5DF2\u6253\u5F00\u7684\u96C6\u7FA4\u4F1A\u8BDD",children:[g.length===0?(0,v.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,f)=>{let{title:A,sub:$}=I(u,f);return(0,v.jsxs)("div",{role:"tab","aria-selected":u.key===M,className:`kc-tab${u.key===M?" kc-tab-active":""}`,title:`${$} \u2014\u2014 \u70B9\u51FB\u5207\u6362\uFF0C\u2715 \u5173\u95ED`,onClick:()=>R(u.key),children:[(0,v.jsx)("span",{className:"kc-tab-icon",children:"\u2388"}),(0,v.jsx)("span",{className:"kc-tab-label",children:A}),(0,v.jsx)("span",{className:"kc-tab-close",title:"\u5173\u95ED",onClick:V=>{V.stopPropagation(),w(u.key)},children:"\u2715"})]},u.key)})]}),(0,v.jsx)("div",{className:"kc-tabpanes",children:g.length===0?(0,v.jsxs)("div",{className:"kc-empty",style:{flex:1},children:[(0,v.jsx)("div",{style:{fontSize:30,opacity:.5},children:"\u2388"}),(0,v.jsx)("div",{children:"\u8FD8\u6CA1\u6709\u6253\u5F00\u4EFB\u4F55\u96C6\u7FA4\u4F1A\u8BDD\u3002"}),(0,v.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,v.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,v.jsx)("div",{role:"tabpanel",className:"kc-pane","data-active":u.key===M?"true":void 0,style:u.key===M?void 0:{display:"none"},children:F(u)},u.key))})]})]})]})}var xe=E("react/jsx-runtime"),Q=null,Be=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),Be=(0,Ve.createRoot)(Q),Be.render((0,xe.jsx)(ge,{onClose:()=>X.close(),standalone:!1}))),Q}function Je(e){let t=(0,ne.useRef)(null);return(0,ne.useEffect)(()=>{let o=t.current;if(o===null)return;let n=pt(),a=o.closest("[data-phase]")??o.parentElement;return a!=null&&(X.setDocked(!0),n.style.display="flex",n.parentElement!==a&&a.appendChild(n)),()=>{X.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\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\uFF08\u5DF2\u6301\u4E45\u5316\uFF09
26
+ \u652F\u6301\u7BA1\u9053\u8FC7\u6EE4\uFF1A| grep / head / tail / sort / wc -l\uFF08\u8FDB\u7A0B\u5185\u5B9E\u73B0\uFF09\xB7 \u975E\u4EA4\u4E92`,spellCheck:!1,rows:3}),b?(0,S.jsx)("button",{className:"kc-btn-primary kc-btn-stop",onClick:K,title:"\u4E2D\u6B62\u5F53\u524D\u547D\u4EE4",children:"\u25A0 \u4E2D\u6B62"}):(0,S.jsx)("button",{className:"kc-btn-primary",onClick:ee,disabled:n.trim()==="",title:"\u6267\u884C\uFF08Ctrl+Enter \u4EA6\u53EF\uFF09",children:"\u25B6 \u6267\u884C"})]}),C?(0,S.jsx)("div",{className:"kc-console-status",children:C}):null,(0,S.jsx)("div",{className:"kc-output",ref:u,children:$.length===0?(0,S.jsx)("div",{className:"kc-output-empty",children:(0,S.jsxs)("div",{className:"kc-muted",children:["\u8F93\u5165\u547D\u4EE4\u5F00\u59CB\uFF08",r.name,k?` \xB7 --context ${k}`:"",h?` \xB7 -n ${h}`:"","\uFF09\u3002",(0,S.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"]})}):$.map((l,f)=>l.kind==="cmd"?(0,S.jsxs)("div",{className:"kc-out-line kc-out-cmd",children:[(0,S.jsx)("span",{className:"kc-out-prompt",children:"$"})," ",l.text]},f):l.kind==="out"?(0,S.jsx)("pre",{className:`kc-out-line kc-out-${l.channel}${l.text.endsWith(`
27
+ `),""}`,children:l.text},f):l.kind==="err"?(0,S.jsxs)("div",{className:"kc-out-line kc-out-err",children:["\u2715 ",l.text]},f):(0,S.jsx)("div",{className:`kc-out-line kc-out-sys${l.tone==="err"?" kc-out-err":""}${l.tone==="muted"?" kc-out-muted":""}`,children:l.text},f))}),R?(0,S.jsxs)("div",{className:`kc-exitbar${R.reason==="aborted"?" kc-exitbar-muted":R.code===0?"":" kc-exitbar-err"}`,children:[R.reason==="aborted"?"\u23F9 ":R.code===0?"\u2713 ":"\u2715 ",be(R),R.truncated?" \xB7 \u26A0\uFE0F \u8F93\u51FA\u88AB\u622A\u65AD":"",b?" \xB7 \u8FD0\u884C\u4E2D":""]}):null]})});var m=A("react");var o=A("react/jsx-runtime"),Ue=0,Qe=()=>(Ue+=1,Ue);function Et(e){let r=/```(?:bash|sh|shell|kubectl|console)?\s*\n([\s\S]*?)```/g,a;for(;(a=r.exec(e))!==null;){let n=a[1]??"",s=$e(n);if(s)return s}return $e(e)}function $e(e){for(let r of e.split(`
28
+ `)){let a=r.replace(/^\s*[$>]\s*/,"").trim();if(!(!a||a.startsWith("#"))&&/^kubectl\b/u.test(a))return a}return null}function Ze(e){let r=[],a=/```([\w+-]*)\s*\n([\s\S]*?)```/g,n=0,s;for(;(s=a.exec(e))!==null;)s.index>n&&r.push({kind:"text",text:e.slice(n,s.index)}),r.push({kind:"code",lang:s[1]||void 0,text:s[2]??""}),n=a.lastIndex;return n<e.length&&r.push({kind:"text",text:e.slice(n)}),r}function et({kube:e,onRunCommand:r}){let[a,n]=(0,m.useState)([]),[s,k]=(0,m.useState)(""),[i,h]=(0,m.useState)(!1),[g,b]=(0,m.useState)(null),[N,$]=(0,m.useState)(!1),[v,R]=(0,m.useState)(""),[H,E]=(0,m.useState)(null),_=(0,m.useRef)(null),B=(0,m.useRef)(null),c=(0,m.useRef)(null),C=(0,m.useRef)(null),[L,oe]=(0,m.useState)(!1),[u,x]=(0,m.useState)(!1),[T,z]=(0,m.useState)(!1),[K,Z]=(0,m.useState)(""),[ee,ne]=(0,m.useState)([]),[G,le]=(0,m.useState)(null),be=(0,m.useCallback)(async()=>{$(!0);try{b(await D.aiModels())}catch(t){b(null),E(`\u6A21\u578B\u679A\u4E3E\u5931\u8D25\uFF1A${await V(t)}`)}finally{$(!1)}},[]);(0,m.useEffect)(()=>{be()},[be]);let l=(0,m.useMemo)(()=>g?Xe(g):[],[g]),f=(0,m.useMemo)(()=>l.find(t=>t.key===v),[l,v]);(0,m.useEffect)(()=>{let t=B.current;t&&(t.scrollTop=t.scrollHeight)},[a]);let W=(0,m.useCallback)(t=>{n(d=>[...d,{...t,key:Qe()}])},[]),U=(0,m.useCallback)(t=>{n(d=>{if(d.length===0)return d;let I=d[d.length-1];if(I.role!=="assistant")return d;let F={...I,...t};t.content&&typeof t.content=="string"&&(F.content=I.content+t.content);let j=[...d];return j[j.length-1]=F,j})},[]),me=(0,m.useCallback)(()=>{_.current?.abort()},[]),w=(0,m.useCallback)(async t=>{try{let d=await D.historyAppend({...C.current?{sessionId:C.current}:{},kubeId:e.id,kubeName:e.name,context:e.currentContext,message:{role:t.role,content:t.content,at:new Date().toISOString(),...t.provider?{provider:t.provider}:{},...t.model?{model:t.model}:{},...t.error===!0?{error:!0}:{}}});C.current=d.sessionId}catch{}},[e.id,e.name,e.currentContext]),te=(0,m.useCallback)(async()=>{let t=s.trim();if(!t||i)return;k(""),E(null);let d=a.filter(M=>M.role==="user"||M.state==="done").map(M=>({role:M.role,content:M.content}));d.push({role:"user",content:t}),W({role:"user",content:t}),W({role:"assistant",content:"",state:"streaming"}),h(!0),_.current=new AbortController;let I=_.current.signal;w({role:"user",content:t});let F="",j,fe,ae=null;try{await D.chat({id:e.id,provider:f?.provider,model:f?.model,history:d.slice(-40)},M=>{M.type==="delta"&&typeof M.text=="string"?(F+=M.text,U({content:M.text})):M.type==="done"?(typeof M.provider=="string"&&(j=M.provider),typeof M.model=="string"&&(fe=M.model),U({state:"done",meta:{...j?{provider:j}:{},...fe?{model:fe}:{}}})):M.type==="aborted"?U({state:"done"}):M.type==="error"&&(ae=String(M.message??"AI \u51FA\u9519"),U({state:"error",content:`\u26A0\uFE0F ${ae}`}))},I)}catch(M){I.aborted?U({state:"done"}):(ae=await V(M),U({state:"error",content:`\u26A0\uFE0F ${ae}`}))}finally{h(!1),_.current=null,(F.trim()!==""||ae)&&w({role:"assistant",content:ae?`\u26A0\uFE0F ${ae}`:F,...j?{provider:j}:{},...fe?{model:fe}:{},...ae?{error:!0}:{}})}},[s,i,a,f,e.id,W,U,w]),pe=(0,m.useCallback)(t=>{t.key==="Enter"&&!t.shiftKey&&!t.nativeEvent.isComposing&&(t.preventDefault(),te())},[te]),ye=(0,m.useCallback)(()=>{i&&me(),n([]),E(null),C.current=null},[i,me]),re=(0,m.useCallback)(async t=>{x(!0);try{let d=await D.historyList({...t&&t.trim()!==""?{keyword:t.trim()}:{},...T?{}:{kubeId:e.id},limit:100});ne(d.sessions??[]),le(null)}catch(d){E(`\u5386\u53F2\u52A0\u8F7D\u5931\u8D25\uFF1A${await V(d)}`)}finally{x(!1)}},[T,e.id]),ue=(0,m.useCallback)(()=>{let t=!L;oe(t),t&&re(K)},[L,re,K]),ke=(0,m.useCallback)(async()=>{await re(K)},[re,K]),pt=(0,m.useCallback)(async t=>{if(G?.id===t){le(null);return}x(!0);try{let d=await D.historyGet(t);le(d.session)}catch(d){E(`\u5386\u53F2\u4F1A\u8BDD\u8BFB\u53D6\u5931\u8D25\uFF1A${await V(d)}`)}finally{x(!1)}},[G]),ut=(0,m.useCallback)(t=>{i||(n(t.messages.map(d=>({key:Qe(),role:d.role,content:d.content,state:d.error?"error":"done",...d.provider||d.model?{meta:{...d.provider?{provider:d.provider}:{},...d.model?{model:d.model}:{}}}:{}}))),C.current=t.id,oe(!1),E(null),c.current?.focus())},[i]),kt=(0,m.useCallback)(async t=>{if(window.confirm("\u786E\u5B9A\u5220\u9664\u8FD9\u6761\u5386\u53F2\u4F1A\u8BDD\uFF1F\u5220\u9664\u540E\u4E0D\u53EF\u6062\u590D\u3002"))try{await D.historyDelete(t),C.current===t&&(C.current=null),G?.id===t&&le(null),await re(K)}catch(d){E(`\u5386\u53F2\u4F1A\u8BDD\u5220\u9664\u5931\u8D25\uFF1A${await V(d)}`)}},[G,re,K]),Ke=[...a].reverse().find(t=>t.role==="assistant"&&t.state==="done"),we=Ke?Et(Ke.content):null,bt=(0,m.useCallback)(async t=>{try{await navigator.clipboard.writeText(t)}catch{}},[]),mt=t=>{if(t.role==="user")return(0,o.jsx)("div",{className:"kc-chat-user-text",children:t.content});if(t.state==="error")return(0,o.jsx)("div",{className:"kc-chat-error-text",children:t.content});let d=Ze(t.content);return(0,o.jsxs)("div",{className:"kc-chat-ai-text",children:[d.length===0?t.state==="streaming"?(0,o.jsx)("span",{className:"kc-chat-cursor",children:"\u258D"}):(0,o.jsx)("span",{className:"kc-muted",children:"\uFF08\u7A7A\u56DE\u590D\uFF09"}):d.map((I,F)=>{if(I.kind==="text")return(0,o.jsx)("span",{className:"kc-chat-text-span",children:I.text},F);let j=I.lang===void 0||/^(bash|sh|shell|kubectl|console)$/u.test(I.lang)?$e(I.text):null;return(0,o.jsxs)("div",{className:"kc-codebox",children:[(0,o.jsxs)("div",{className:"kc-codebox-head",children:[(0,o.jsx)("span",{className:"kc-codebox-lang",children:I.lang||"code"}),(0,o.jsx)("span",{className:"kc-grow"}),(0,o.jsx)("button",{className:"kc-btn-sm",onClick:()=>void bt(I.text),children:"\u590D\u5236"}),j?(0,o.jsx)("button",{className:"kc-btn-sm",onClick:()=>r(j),title:`\u53D1\u9001\u5230\u547D\u4EE4\u63A7\u5236\u53F0\u6267\u884C\uFF1A${j}`,children:"\u25B6 \u8FD0\u884C"}):null]}),(0,o.jsx)("pre",{className:"kc-codebox-body",children:I.text})]},F)}),t.state==="streaming"&&d.length>0?(0,o.jsx)("span",{className:"kc-chat-cursor",children:"\u258D"}):null]})};return(0,o.jsxs)("div",{className:"kc-chat",children:[(0,o.jsxs)("div",{className:"kc-chat-toolbar",children:[(0,o.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,o.jsxs)("select",{value:v,onChange:t=>R(t.target.value),disabled:i||N,children:[(0,o.jsx)("option",{value:"",children:"\u81EA\u52A8\uFF08\u7531 DSH \u9009\u62E9\uFF09"}),l.map(t=>(0,o.jsx)("option",{value:t.key,children:t.label??t.key},t.key))]})]}),(0,o.jsx)("button",{className:"kc-btn-sm",onClick:()=>void be(),disabled:N,title:"\u91CD\u65B0\u679A\u4E3E DSH \u6A21\u578B",children:"\u21BB \u6A21\u578B"}),(0,o.jsx)("button",{className:`kc-btn-sm${L?" kc-btn-sm-active":""}`,onClick:ue,title:"\u67E5\u770B / \u641C\u7D22\u5DF2\u4FDD\u5B58\u7684\u5386\u53F2\u5BF9\u8BDD\uFF08\u9010\u6761\u843D\u76D8\uFF0C\u5237\u65B0\u4E0E\u91CD\u542F\u540E\u4ECD\u53EF\u67E5\u8BE2\uFF09",children:"\u{1F558} \u5386\u53F2"}),(0,o.jsx)("button",{className:"kc-btn-sm",onClick:ye,disabled:a.length===0&&!i,title:"\u6E05\u7A7A\u672C\u4F1A\u8BDD\u5BF9\u8BDD\uFF08\u5F00\u542F\u65B0\u4E00\u8F6E\uFF0C\u5386\u53F2\u4ECD\u4FDD\u7559\uFF09",children:"\u6E05\u7A7A\u5BF9\u8BDD"}),(0,o.jsx)("span",{className:"kc-grow"}),(0,o.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,"")}`:""]})]}),g&&!g.ok?(0,o.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",g.message??"\u6CA1\u6709\u53EF\u7528\u6A21\u578B","\uFF08\u914D\u7F6E\u597D\u540E\u70B9\u201C\u21BB \u6A21\u578B\u201D\u5237\u65B0\uFF09"]}):null,H?(0,o.jsxs)("div",{className:"kc-chat-warn",children:["\u26A0\uFE0F ",H]}):null,L?(0,o.jsxs)("div",{className:"kc-history",children:[(0,o.jsxs)("div",{className:"kc-history-head",children:[(0,o.jsx)("b",{children:"\u{1F558} \u5BF9\u8BDD\u5386\u53F2"}),(0,o.jsxs)("label",{className:"kc-history-all",title:"\u53D6\u6D88\u52FE\u9009\u5219\u53EA\u770B\u5F53\u524D\u96C6\u7FA4\u7684\u5386\u53F2",children:[(0,o.jsx)("input",{type:"checkbox",checked:T,onChange:t=>{let d=t.target.checked;z(d),window.setTimeout(()=>{(async()=>{x(!0);try{let I=await D.historyList({...K.trim()!==""?{keyword:K.trim()}:{},...d?{}:{kubeId:e.id},limit:100});ne(I.sessions??[]),le(null)}catch{}finally{x(!1)}})()},0)}}),"\u5168\u90E8\u96C6\u7FA4"]}),(0,o.jsx)("span",{className:"kc-grow"}),(0,o.jsxs)("span",{className:"kc-muted",children:[ee.length," \u6761\u4F1A\u8BDD"]}),(0,o.jsx)("button",{className:"kc-btn-sm",onClick:ue,title:"\u5173\u95ED\u5386\u53F2\u9762\u677F",children:"\u2715"})]}),(0,o.jsxs)("div",{className:"kc-history-search",children:[(0,o.jsx)("input",{value:K,onChange:t=>Z(t.target.value),onKeyDown:t=>{t.key==="Enter"&&!t.shiftKey&&!t.nativeEvent.isComposing&&(t.preventDefault(),ke())},placeholder:"\u641C\u7D22\u5386\u53F2\u6D88\u606F\u5173\u952E\u8BCD\uFF08\u56DE\u8F66\u641C\u7D22\uFF09\u2026",spellCheck:!1}),(0,o.jsx)("button",{className:"kc-btn-sm",onClick:()=>void ke(),disabled:u,children:"\u641C\u7D22"}),(0,o.jsx)("button",{className:"kc-btn-sm",onClick:()=>{Z(""),re("")},disabled:u,title:"\u6E05\u7A7A\u5173\u952E\u8BCD\u5E76\u5237\u65B0",children:"\u91CD\u7F6E"})]}),(0,o.jsxs)("div",{className:"kc-history-list",children:[u&&ee.length===0?(0,o.jsx)("div",{className:"kc-muted",children:"\u52A0\u8F7D\u4E2D\u2026"}):null,!u&&ee.length===0?(0,o.jsx)("div",{className:"kc-muted",children:"\u6682\u65E0\u5386\u53F2\u4F1A\u8BDD\u3002\u53D1\u51FA\u7684\u5BF9\u8BDD\u4F1A\u81EA\u52A8\u9010\u6761\u4FDD\u5B58\uFF08\u670D\u52A1\u7AEF\u843D\u76D8\uFF09\uFF0C\u5237\u65B0 / \u91CD\u542F\u540E\u4ECD\u53EF\u5728\u6B64\u641C\u7D22\u67E5\u8BE2\u3002"}):null,ee.map(t=>(0,o.jsxs)("div",{className:`kc-history-item${G?.id===t.id?" kc-history-item-open":""}`,children:[(0,o.jsxs)("div",{className:"kc-history-item-main",onClick:()=>void pt(t.id),title:"\u70B9\u51FB\u5C55\u5F00\u5B8C\u6574\u8BB0\u5F55",children:[(0,o.jsx)("div",{className:"kc-history-item-title",children:t.preview||"\uFF08\u65E0\u6587\u5B57\u5185\u5BB9\uFF09"}),(0,o.jsxs)("div",{className:"kc-history-item-meta",children:["\u2388 ",t.kubeName," \xB7 ",t.messageCount," \u6761 \xB7 ",de(t.updatedAt)]}),t.snippet?(0,o.jsxs)("div",{className:"kc-history-item-snippet",children:["\u547D\u4E2D\uFF1A",t.snippet]}):null]}),(0,o.jsxs)("div",{className:"kc-history-item-actions",children:[(0,o.jsx)("button",{className:"kc-btn-sm",title:"\u8F7D\u5165\u5230\u5BF9\u8BDD\u533A\u5E76\u7EE7\u7EED\u8FFD\u95EE\uFF08\u65B0\u6D88\u606F\u4F1A\u7EE7\u7EED\u4FDD\u5B58\u5230\u8BE5\u4F1A\u8BDD\uFF09",disabled:i,onClick:()=>{(async()=>{try{let d=G?.id===t.id?G:(await D.historyGet(t.id)).session;ut(d)}catch(d){E(`\u5386\u53F2\u4F1A\u8BDD\u8BFB\u53D6\u5931\u8D25\uFF1A${await V(d)}`)}})()},children:"\u8F7D\u5165"}),(0,o.jsx)("button",{className:"kc-btn-sm kc-history-delete",onClick:()=>void kt(t.id),title:"\u5220\u9664\u8BE5\u5386\u53F2\u4F1A\u8BDD",children:"\u5220\u9664"})]}),G?.id===t.id?(0,o.jsx)("div",{className:"kc-history-detail",children:G.messages.map((d,I)=>(0,o.jsxs)("div",{className:`kc-history-msg kc-history-msg-${d.role}${d.error?" kc-history-msg-error":""}`,children:[(0,o.jsx)("span",{className:"kc-history-msg-role",children:d.role==="user"?"\u{1F9D1}":"\u{1F916}"}),(0,o.jsxs)("div",{className:"kc-history-msg-body",children:[Ze(d.content).map((F,j)=>F.kind==="code"?(0,o.jsx)("pre",{className:"kc-history-msg-code",children:F.text},j):(0,o.jsx)("span",{children:F.text},j)),d.provider||d.model?(0,o.jsxs)("div",{className:"kc-history-msg-meta",children:[d.provider??"",d.model?`/${d.model}`:""," \xB7 ",de(d.at)]}):(0,o.jsx)("div",{className:"kc-history-msg-meta",children:de(d.at)})]})]},I))}):null]},t.id))]})]}):null,(0,o.jsxs)("div",{className:"kc-chat-scroll",ref:B,children:[a.length===0?(0,o.jsx)("div",{className:"kc-chat-empty",children:(0,o.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,o.jsx)("br",{}),"\xB7 \u201C\u67E5\u770B default \u547D\u540D\u7A7A\u95F4\u4E0B\u6240\u6709 deployment \u53CA\u5176\u72B6\u6001\u201D",(0,o.jsx)("br",{}),"\xB7 \u201C\u627E\u51FA ImagePullBackOff \u7684 pod\uFF0C\u5E76\u89E3\u91CA\u600E\u4E48\u6392\u67E5\u201D",(0,o.jsx)("br",{}),"\xB7 \u201C\u751F\u6210\u628A myapp \u7F29\u5230 2 \u526F\u672C\u7684\u547D\u4EE4\u201D",(0,o.jsx)("br",{}),"\xB7 \u201C\u7C98\u8D34\u4E00\u6761 kubectl \u62A5\u9519\uFF0C\u5E2E\u6211\u89E3\u91CA\u539F\u56E0\u201D",(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),"AI \u751F\u6210\u7684\u53EF\u6267\u884C\u547D\u4EE4\u4F1A\u5728\u4EE3\u7801\u5757\u4E0B\u65B9\u63D0\u4F9B ",(0,o.jsx)("b",{children:"\u25B6 \u8FD0\u884C"}),"\uFF0C\u70B9\u51FB\u540E\u5207\u5230\u547D\u4EE4\u63A7\u5236\u53F0\u76F4\u63A5\u6267\u884C\u3002"]})}):a.map(t=>(0,o.jsxs)("div",{className:`kc-chat-row kc-chat-${t.role}`,children:[(0,o.jsx)("div",{className:"kc-chat-avatar",children:t.role==="user"?"\u{1F9D1}":"\u{1F916}"}),(0,o.jsxs)("div",{className:"kc-chat-bubble",children:[mt(t),t.state==="done"&&t.meta&&(t.meta.provider||t.meta.model)?(0,o.jsxs)("div",{className:"kc-chat-meta",children:[t.meta.provider,"/",t.meta.model]}):null]})]},t.key)),we&&!i?(0,o.jsxs)("div",{className:"kc-chat-quickrun",children:["\u{1F4A1} \u53EF\u7528\u547D\u4EE4\uFF1A",(0,o.jsx)("code",{children:we}),(0,o.jsx)("button",{className:"kc-btn-sm",onClick:()=>r(we),children:"\u25B6 \u53D1\u9001\u5230\u63A7\u5236\u53F0\u6267\u884C"})]}):null]}),(0,o.jsxs)("div",{className:"kc-chat-input-row",children:[(0,o.jsx)("textarea",{ref:c,className:"kc-code-input kc-chat-input",value:s,onChange:t=>k(t.target.value),onKeyDown:pe,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}),i?(0,o.jsx)("button",{className:"kc-btn-primary kc-btn-stop",onClick:me,children:"\u25A0 \u505C\u6B62"}):(0,o.jsx)("button",{className:"kc-btn-primary",onClick:()=>void te(),disabled:s.trim()==="",children:"\u53D1\u9001"})]})]})}var J=A("react/jsx-runtime");function tt({kube:e}){let[r,a]=(0,ie.useState)("console"),[n,s]=(0,ie.useState)({console:!0,chat:!1}),k=(0,ie.useRef)(null),i=(0,ie.useCallback)(b=>{a(b),s(N=>N[b]?N:{...N,[b]:!0})},[]),h=(0,ie.useCallback)(b=>{i("console"),window.setTimeout(()=>{k.current?.runText(b)},0)},[i]),g=(b,N,$)=>(0,J.jsx)("button",{type:"button",role:"tab","aria-selected":r===b,title:$,className:r===b?"kc-seg-active":"",onClick:()=>i(b),children:N});return(0,J.jsxs)("div",{className:"kc-workspace",children:[(0,J.jsxs)("div",{className:"kc-ws-meta",children:[(0,J.jsxs)("span",{className:"kc-ws-meta-name",title:`kubeconfig \u6587\u4EF6\uFF1A${e.fileName}`,children:["\u2388 ",e.name]}),(0,J.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,J.jsx)("span",{className:"kc-ws-meta-chip kc-ws-meta-server",title:"API server",children:e.server}):null,(0,J.jsx)("span",{className:"kc-grow"}),(0,J.jsxs)("div",{className:"kc-seg",role:"tablist","aria-label":"\u4F1A\u8BDD\u5B50\u9875",children:[g("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"),g("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,J.jsxs)("div",{className:"kc-ws-body",children:[n.console?(0,J.jsx)("div",{className:"kc-ws-pane","data-active":r==="console"?"true":void 0,style:r==="console"?void 0:{display:"none"},children:(0,J.jsx)(Ge,{ref:k,kube:e})}):null,n.chat?(0,J.jsx)("div",{className:"kc-ws-pane","data-active":r==="chat"?"true":void 0,style:r==="chat"?void 0:{display:"none"},children:(0,J.jsx)(et,{kube:e,onRunCommand:h})}):null]})]})}var y=A("react/jsx-runtime"),rt=0;function $t(){return rt+=1,`session_${Date.now().toString(36)}_${rt}`}function Te(e={}){let[r,a]=(0,O.useState)([]),[n,s]=(0,O.useState)(null),[k,i]=(0,O.useState)(!1),[h,g]=(0,O.useState)(null),[b,N]=(0,O.useState)(null),$=(0,O.useRef)(!0),[v,R]=(0,O.useState)([]),[H,E]=(0,O.useState)(null),_=(0,O.useCallback)((u,x)=>{N({kind:u,text:x}),window.setTimeout(()=>N(T=>T?.text===x?null:T),u==="error"?6e3:2600)},[]),B=(0,O.useCallback)(async()=>{i(!0);try{let[u,{kubeconfigs:x}]=await Promise.all([D.state(!0),D.kubeconfigs()]);s(u),a(x),g(null)}catch(u){let x=await V(u);g(`\u65E0\u6CD5\u8FDE\u63A5\u63D2\u4EF6\u670D\u52A1\uFF1A${x}\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`),_("error",`\u52A0\u8F7D\u5931\u8D25\uFF1A${x}`)}finally{i(!1)}},[_]);(0,O.useEffect)(()=>{$.current&&($.current=!1,B())},[B]),(0,O.useEffect)(()=>{let u=new Set(r.map(x=>x.id));R(x=>{let T=x.filter(z=>u.has(z.kube.id));return T.length===x.length?x:T})},[r]),(0,O.useEffect)(()=>{H!==null&&!v.some(u=>u.key===H)&&E(v.length>0?v[v.length-1].key:null)},[v,H]);let c=(0,O.useCallback)(u=>{let x={key:$t(),kube:u};R(T=>[...T,x]),E(x.key)},[]),C=(0,O.useCallback)(u=>{let x=v.findIndex(K=>K.key===u);if(R(K=>K.filter(Z=>Z.key!==u)),H!==u)return;let T=x>=0?v[x+1]:void 0,z=x>=0?v[x-1]:void 0;E((T??z)?.key??null)},[v,H]),L=(u,x)=>{let T=v.slice(0,x+1).filter(ne=>ne.kube.id===u.kube.id).length,z=v.filter(ne=>ne.kube.id===u.kube.id).length,K=u.kube.name,Z=z>1?`${K} #${T}`:K,ee=u.kube.currentContext?` \xB7 ${u.kube.currentContext}`:"";return{title:Z,sub:`${u.kube.name}${ee} \u2014 \u4F1A\u8BDD ${T}`}},oe=u=>(0,y.jsx)(tt,{kube:u.kube},u.key);return(0,y.jsxs)("div",{className:"kc-app",children:[(0,y.jsxs)("div",{className:"kc-topbar",children:[(0,y.jsxs)("div",{className:"kc-title",children:[(0,y.jsx)("span",{className:"kc-logo",children:"K8s"})," K8s \u63A7\u5236\u53F0",(0,y.jsx)("span",{className:"kc-badge",children:"dsh-plugin-k8s"}),n?.kubectl.version?(0,y.jsxs)("span",{className:"kc-badge kc-badge-ok",children:["kubectl ",n.kubectl.version]}):null,n&&!n.kubectl.present?(0,y.jsx)("span",{className:"kc-badge kc-badge-bad",title:n.kubectl.missingReason,children:"kubectl \u672A\u627E\u5230"}):null]}),(0,y.jsx)("div",{className:"kc-grow"}),b?(0,y.jsx)("span",{className:`kc-notice kc-notice-${b.kind}`,title:b.text,children:b.text}):null,k?(0,y.jsx)("span",{className:"kc-muted",children:"\u2026"}):null,e.onClose?(0,y.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]}),h?(0,y.jsx)("div",{className:"kc-fatal",children:(0,y.jsxs)("div",{className:"kc-fatal-box",children:[(0,y.jsx)("div",{className:"kc-fatal-title",children:"\u26A0\uFE0F K8s \u63A7\u5236\u53F0\u6682\u65F6\u4E0D\u53EF\u7528"}),(0,y.jsx)("div",{className:"kc-fatal-text",children:h}),(0,y.jsx)("button",{onClick:()=>{g(null),B()},children:"\u91CD\u8BD5"})]})}):(0,y.jsxs)("div",{className:"kc-app-body",children:[(0,y.jsx)(_e,{kubeconfigs:r,busyList:k,refresh:B,onOpenSession:c,onFlash:_,stateInfo:n}),(0,y.jsxs)("div",{className:"kc-main",children:[(0,y.jsxs)("div",{className:"kc-tabbar",role:"tablist","aria-label":"\u5DF2\u6253\u5F00\u7684\u96C6\u7FA4\u4F1A\u8BDD",children:[v.length===0?(0,y.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,v.map((u,x)=>{let{title:T,sub:z}=L(u,x);return(0,y.jsxs)("div",{role:"tab","aria-selected":u.key===H,className:`kc-tab${u.key===H?" kc-tab-active":""}`,title:`${z} \u2014\u2014 \u70B9\u51FB\u5207\u6362\uFF0C\u2715 \u5173\u95ED`,onClick:()=>E(u.key),children:[(0,y.jsx)("span",{className:"kc-tab-icon",children:"\u2388"}),(0,y.jsx)("span",{className:"kc-tab-label",children:T}),(0,y.jsx)("span",{className:"kc-tab-close",title:"\u5173\u95ED",onClick:K=>{K.stopPropagation(),C(u.key)},children:"\u2715"})]},u.key)})]}),(0,y.jsx)("div",{className:"kc-tabpanes",children:v.length===0?(0,y.jsxs)("div",{className:"kc-empty",style:{flex:1},children:[(0,y.jsx)("div",{style:{fontSize:30,opacity:.5},children:"\u2388"}),(0,y.jsx)("div",{children:"\u8FD8\u6CA1\u6709\u6253\u5F00\u4EFB\u4F55\u96C6\u7FA4\u4F1A\u8BDD\u3002"}),(0,y.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,y.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"]})]}):v.map(u=>(0,y.jsx)("div",{role:"tabpanel",className:"kc-pane","data-active":u.key===H?"true":void 0,style:u.key===H?void 0:{display:"none"},children:oe(u)},u.key))})]})]})]})}var ze=A("react/jsx-runtime"),ce=null,ot=null;function Tt(){return ce!==null||(ce=document.createElement("div"),ce.id="dsh-k8s-console",ce.style.cssText=["position:absolute","inset:0","z-index:30","display:none","flex-direction:column","overflow:hidden","background:var(--kc-bg)"].join(";"),document.body.appendChild(ce),ot=(0,nt.createRoot)(ce),ot.render((0,ze.jsx)(Te,{onClose:()=>Q.close(),standalone:!1}))),ce}function at(e){let r=(0,xe.useRef)(null);return(0,xe.useEffect)(()=>{let a=r.current;if(a===null)return;let n=Tt(),s=a.closest("[data-phase]")??a.parentElement,k,i=h=>{Number.isFinite(h)&&h>=32&&n.style.setProperty("--kc-shell-header-h",`${h}px`)};if(s!=null){let h=s.querySelector("header");h!==null&&(k=new ResizeObserver(g=>{for(let b of g){let N=b.borderBoxSize,$=Array.isArray(N)?N[0]?.blockSize:void 0;i($??h.getBoundingClientRect().height)}}),k.observe(h),i(h.getBoundingClientRect().height))}return s!=null&&(Q.setDocked(!0),n.style.display="flex",n.parentElement!==s&&s.appendChild(n)),()=>{k?.disconnect(),Q.setDocked(!1),n.parentElement!==document.body&&document.body.appendChild(n),n.style.display="none"}},[]),(0,ze.jsx)("div",{ref:r,style:{height:0,overflow:"hidden"}})}var st=`/* dsh-plugin-k8s \u5BA2\u6237\u7AEF\u6837\u5F0F\uFF08\u96F6\u5916\u90E8\u4F9D\u8D56\uFF0C\u5168\u90E8\u9650\u5B9A\u5728 #dsh-k8s-console\uFF09
29
+ *
30
+ * \u4E3B\u9898\u7B56\u7565\uFF08\u5BF9\u9F50\u756A\u8304\u5DE5\u4F5C\u53F0 / \u6570\u636E\u5E93\u5DE5\u4F5C\u53F0\uFF09\uFF1A
31
+ * \u989C\u8272\u4E00\u5F8B\u5F15\u7528 DSH Web \u7684\u4E3B\u9898 token\uFF08--dsw-alias-* / --ds-*\uFF09\uFF0C\u8DDF\u968F DSH
32
+ * \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
33
+ *
34
+ * \u5E03\u5C40\u7B56\u7565\uFF1A
35
+ * \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
36
+ * \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
37
+ * \u5BF9\u9F50\uFF08\u9AD8\u5EA6\u7531 overlay.tsx \u5B9E\u6D4B\u5199\u5165 --kc-shell-header-h\uFF09\u3002
38
+ */
28
39
  :root {
29
- --kc-bg: #0d1117;
30
- --kc-panel: #141a23;
31
- --kc-panel-2: #1b2230;
32
- --kc-border: #2a3345;
33
- --kc-border-strong: #3a4660;
34
- --kc-text: #e6e9ef;
35
- --kc-muted: #8b93a3;
36
- --kc-accent: #3fa7f7;
37
- --kc-accent-weak: rgba(63, 167, 247, 0.14);
38
- --kc-ok: #37c978;
39
- --kc-warn: #e0b341;
40
- --kc-err: #ff5f56;
41
- --kc-radius: 8px;
40
+ --kc-bg: var(--dsw-alias-bg-base, #12141a);
41
+ --kc-panel: var(--dsw-alias-bg-layer-1, #171a21);
42
+ --kc-panel-2: var(--dsw-alias-bg-layer-2, #1d212b);
43
+ --kc-border: var(--dsw-alias-border-l2, rgba(136, 148, 168, 0.24));
44
+ --kc-border-strong: var(--dsw-alias-border-l3, rgba(136, 148, 168, 0.38));
45
+ --kc-text: var(--dsw-alias-label-primary, #e6e9ef);
46
+ --kc-muted: var(--dsw-alias-label-secondary, #8b93a3);
47
+ --kc-faint: var(--dsw-alias-label-tertiary, #6b7383);
48
+ --kc-accent: var(--dsw-alias-state-business-primary, #3fa7f7);
49
+ --kc-accent-weak: color-mix(in srgb, var(--kc-accent) 12%, transparent);
50
+ --kc-ok: var(--dsw-alias-state-success-primary, #37c978);
51
+ --kc-warn: var(--dsw-alias-state-warn-primary, #e0b341);
52
+ --kc-err: var(--dsw-alias-state-error-primary, #ff5f56);
53
+ --kc-radius: 10px;
42
54
  --kc-mono: "Cascadia Code", "JetBrains Mono", Consolas, "Courier New", monospace;
55
+ --kc-ease: var(--ds-transition-duration-fast, 120ms) var(--ds-ease-in-out, ease);
56
+ /* \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
57
+ \u9876\u680F + TabBar \u9AD8\u5EA6\u4E4B\u548C\u8DDF\u968F\u5B83\uFF0C\u4E0E\u5BBF\u4E3B\u5934\u90E8\u5E95\u8FB9\u7CBE\u786E\u5BF9\u9F50\u3002 */
58
+ --kc-shell-header-h: 76px;
59
+ --kc-tabbar-h: 32px;
43
60
  }
44
61
 
45
- /* ---------- \u4FA7\u8FB9\u680F\u5165\u53E3\uFF08\u4F4D\u4E8E DSH \u4FA7\u680F\uFF0C\u4E0D\u5728\u9762\u677F\u5185\uFF0C\u9700\u5168\u5C40\u53EF\u89C1\uFF09 ---------- */
62
+ /* token \u91CD\u58F0\u660E\uFF1ADSH \u7684 --dsw-alias-* \u82E5\u4E0D\u662F\u6302\u5728 :root \u800C\u662F\u6302\u5728\u5E94\u7528\u5BB9\u5668\u4E0A\uFF0C
63
+ \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 */
64
+ #dsh-k8s-console {
65
+ --kc-bg: var(--dsw-alias-bg-base, #12141a);
66
+ --kc-panel: var(--dsw-alias-bg-layer-1, #171a21);
67
+ --kc-panel-2: var(--dsw-alias-bg-layer-2, #1d212b);
68
+ --kc-border: var(--dsw-alias-border-l2, rgba(136, 148, 168, 0.24));
69
+ --kc-border-strong: var(--dsw-alias-border-l3, rgba(136, 148, 168, 0.38));
70
+ --kc-text: var(--dsw-alias-label-primary, #e6e9ef);
71
+ --kc-muted: var(--dsw-alias-label-secondary, #8b93a3);
72
+ --kc-faint: var(--dsw-alias-label-tertiary, #6b7383);
73
+ --kc-accent: var(--dsw-alias-state-business-primary, #3fa7f7);
74
+ --kc-ok: var(--dsw-alias-state-success-primary, #37c978);
75
+ --kc-warn: var(--dsw-alias-state-warn-primary, #e0b341);
76
+ --kc-err: var(--dsw-alias-state-error-primary, #ff5f56);
77
+
78
+ color: var(--kc-text);
79
+ font-size: 13px;
80
+ line-height: 1.5;
81
+ font-family: var(--dsw-font-family, inherit);
82
+ box-sizing: border-box;
83
+ }
84
+ #dsh-k8s-console *,
85
+ #dsh-k8s-console *::before,
86
+ #dsh-k8s-console *::after {
87
+ box-sizing: border-box;
88
+ }
89
+
90
+ /* ---------- \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
91
  button.kc-sidebar-entry {
47
92
  display: flex;
48
93
  align-items: center;
49
94
  gap: 8px;
50
95
  width: 100%;
51
96
  min-width: 0;
52
- padding: 6px 10px;
53
- color: var(--kc-muted);
97
+ padding: 8px 12px;
98
+ margin: 0;
99
+ color: var(--dsw-alias-label-secondary);
54
100
  background: transparent;
55
101
  border: 0;
56
102
  border-radius: 8px;
57
103
  cursor: pointer;
58
104
  font: inherit;
59
105
  font-size: 13px;
106
+ line-height: 1;
60
107
  text-align: left;
61
- transition: background 0.12s, color 0.12s;
108
+ transition: background var(--kc-ease), color var(--kc-ease);
62
109
  }
63
110
  button.kc-sidebar-entry:hover {
64
- background: var(--kc-accent-weak);
65
- color: var(--kc-text);
111
+ background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
112
+ color: var(--dsw-alias-label-secondary);
66
113
  }
67
114
  button.kc-sidebar-entry[data-active='true'],
68
115
  button.kc-sidebar-entry[data-active='true']:hover {
69
- background: var(--kc-accent-weak);
70
- color: var(--kc-accent);
116
+ background: var(--dsw-alias-interactive-bg-active);
117
+ color: var(--dsw-alias-label-primary);
118
+ font-weight: 600;
71
119
  }
72
120
  .kc-sidebar-entry-icon {
73
121
  display: inline-flex;
74
122
  flex: 0 0 auto;
123
+ color: inherit;
75
124
  }
76
125
  .kc-sidebar-entry-icon svg {
77
126
  display: block;
@@ -86,35 +135,27 @@ button.kc-sidebar-entry[data-active='true']:hover {
86
135
  \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
87
136
  \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
88
137
  \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 */
89
- #dsh-k8s-console {
90
- color: var(--kc-text);
91
- font-size: 13px;
92
- line-height: 1.5;
93
- box-sizing: border-box;
94
- }
95
- #dsh-k8s-console *,
96
- #dsh-k8s-console *::before,
97
- #dsh-k8s-console *::after {
98
- box-sizing: border-box;
99
- }
100
138
  #dsh-k8s-console input,
101
139
  #dsh-k8s-console select,
102
140
  #dsh-k8s-console textarea,
103
141
  #dsh-k8s-console button {
104
142
  font: inherit;
105
143
  color: var(--kc-text);
106
- background: var(--kc-panel-2);
107
- border: 1px solid var(--kc-border);
108
- border-radius: 6px;
144
+ background: transparent;
145
+ border: 1px solid color-mix(in srgb, var(--kc-border) 72%, transparent);
146
+ border-radius: 8px;
109
147
  }
110
148
  #dsh-k8s-console button {
111
149
  padding: 5px 11px;
112
150
  cursor: pointer;
113
- transition: background 0.12s, border-color 0.12s;
151
+ transition: background var(--kc-ease), border-color var(--kc-ease), color var(--kc-ease);
114
152
  }
115
153
  #dsh-k8s-console button:hover:not(:disabled) {
116
- border-color: var(--kc-accent);
117
- background: var(--kc-accent-weak);
154
+ background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
155
+ }
156
+ #dsh-k8s-console button:focus-visible {
157
+ outline: 2px solid var(--kc-accent);
158
+ outline-offset: 1px;
118
159
  }
119
160
  #dsh-k8s-console button:disabled {
120
161
  opacity: 0.45;
@@ -122,30 +163,33 @@ button.kc-sidebar-entry[data-active='true']:hover {
122
163
  }
123
164
  #dsh-k8s-console button.kc-btn-primary {
124
165
  background: var(--kc-accent);
125
- border-color: var(--kc-accent);
126
- color: #fff;
166
+ border-color: transparent;
167
+ color: var(--dsw-alias-label-primary-inverted, #fff);
168
+ font-weight: 600;
127
169
  }
128
170
  #dsh-k8s-console button.kc-btn-primary:hover:not(:disabled) {
129
- background: #63b8ff;
130
- border-color: #63b8ff;
171
+ background: color-mix(in srgb, var(--kc-accent) 86%, #fff);
131
172
  }
132
173
  #dsh-k8s-console button.kc-btn-stop {
133
- background: #c0392b;
134
- border-color: #c0392b;
174
+ background: var(--kc-err);
175
+ border-color: transparent;
176
+ color: var(--dsw-alias-label-primary-inverted, #fff);
135
177
  }
136
178
  #dsh-k8s-console button.kc-btn-stop:hover:not(:disabled) {
137
- background: #d9534a;
138
- border-color: #d9534a;
179
+ background: color-mix(in srgb, var(--kc-err) 86%, #fff);
139
180
  }
140
181
  #dsh-k8s-console button.kc-btn-sm {
141
182
  padding: 2px 8px;
142
183
  font-size: 12px;
143
- border-radius: 5px;
184
+ border-radius: 6px;
144
185
  }
145
186
  #dsh-k8s-console input,
146
187
  #dsh-k8s-console select,
147
188
  #dsh-k8s-console textarea {
148
189
  padding: 5px 9px;
190
+ background: var(--kc-panel);
191
+ border: 1px solid var(--kc-border);
192
+ transition: border-color var(--kc-ease);
149
193
  }
150
194
  #dsh-k8s-console input:focus,
151
195
  #dsh-k8s-console select:focus,
@@ -155,7 +199,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
155
199
  }
156
200
  #dsh-k8s-console input::placeholder,
157
201
  #dsh-k8s-console textarea::placeholder {
158
- color: #5b6475;
202
+ color: var(--kc-faint);
159
203
  }
160
204
 
161
205
  .kc-grow { flex: 1 1 auto; }
@@ -168,16 +212,20 @@ button.kc-sidebar-entry[data-active='true']:hover {
168
212
  background: var(--kc-bg);
169
213
  }
170
214
 
171
- /* ---------- \u9876\u680F ---------- */
215
+ /* ---------- \u9876\u680F ----------
216
+ \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
217
+ \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 */
172
218
  .kc-topbar {
173
219
  display: flex;
174
220
  align-items: center;
175
221
  gap: 10px;
176
- padding: 10px 14px;
177
- background: linear-gradient(180deg, #182130, #121825);
178
- border: 1px solid var(--kc-border);
179
- border-radius: var(--kc-radius);
180
- margin: 10px 10px 0;
222
+ height: calc(var(--kc-shell-header-h, 76px) - var(--kc-tabbar-h, 32px));
223
+ min-height: 40px;
224
+ padding: 0 20px;
225
+ margin: 0;
226
+ border: 0;
227
+ border-bottom: 1px solid var(--kc-border);
228
+ background: transparent;
181
229
  }
182
230
  .kc-title {
183
231
  font-size: 14px;
@@ -188,29 +236,30 @@ button.kc-sidebar-entry[data-active='true']:hover {
188
236
  min-width: 0;
189
237
  }
190
238
  .kc-logo {
191
- width: 24px;
192
- height: 24px;
193
- border-radius: 6px;
194
- background: linear-gradient(135deg, #3fa7f7, #7b61ff);
239
+ width: 22px;
240
+ height: 22px;
241
+ border-radius: 7px;
242
+ background: var(--kc-accent);
195
243
  display: inline-flex;
196
244
  align-items: center;
197
245
  justify-content: center;
198
246
  font-size: 11px;
199
247
  font-weight: 800;
200
- color: #fff;
248
+ color: var(--dsw-alias-label-primary-inverted, #fff);
201
249
  letter-spacing: -0.5px;
202
250
  }
203
251
  .kc-badge {
204
252
  font-size: 11px;
205
253
  font-weight: 400;
206
254
  color: var(--kc-muted);
207
- border: 1px solid var(--kc-border);
255
+ border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
208
256
  border-radius: 999px;
209
257
  padding: 1px 8px;
258
+ background: transparent;
210
259
  white-space: nowrap;
211
260
  }
212
- .kc-badge-ok { color: var(--kc-ok); border-color: rgba(55, 201, 120, 0.4); }
213
- .kc-badge-bad { color: var(--kc-err); border-color: rgba(255, 95, 86, 0.4); }
261
+ .kc-badge-ok { color: var(--kc-ok); border-color: color-mix(in srgb, var(--kc-ok) 40%, transparent); }
262
+ .kc-badge-bad { color: var(--kc-err); border-color: color-mix(in srgb, var(--kc-err) 40%, transparent); }
214
263
  .kc-notice {
215
264
  font-size: 12px;
216
265
  padding: 2px 10px;
@@ -220,8 +269,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
220
269
  text-overflow: ellipsis;
221
270
  max-width: 46%;
222
271
  }
223
- .kc-notice-ok { color: var(--kc-ok); background: rgba(55, 201, 120, 0.12); }
224
- .kc-notice-error { color: var(--kc-err); background: rgba(255, 95, 86, 0.12); }
272
+ .kc-notice-ok { color: var(--kc-ok); background: var(--dsw-alias-state-success-secondary, rgba(55, 201, 120, 0.12)); }
273
+ .kc-notice-error { color: var(--kc-err); background: var(--dsw-alias-state-error-secondary, rgba(255, 95, 86, 0.12)); }
225
274
  .kc-notice-info { color: var(--kc-accent); background: var(--kc-accent-weak); }
226
275
 
227
276
  .kc-fatal {
@@ -234,18 +283,19 @@ button.kc-sidebar-entry[data-active='true']:hover {
234
283
  .kc-fatal-box {
235
284
  max-width: 560px;
236
285
  background: var(--kc-panel);
237
- border: 1px solid var(--kc-border-strong);
238
- border-radius: 10px;
286
+ border: 1px solid var(--kc-border);
287
+ border-radius: var(--kc-radius);
239
288
  padding: 20px 22px;
240
289
  }
241
290
  .kc-fatal-title { font-weight: 600; margin-bottom: 8px; color: var(--kc-err); }
242
291
  .kc-fatal-text { color: var(--kc-muted); margin-bottom: 14px; white-space: pre-wrap; }
243
292
 
244
- /* ---------- \u4E3B\u4F53\u5E03\u5C40 ---------- */
293
+ /* ---------- \u4E3B\u4F53\u5E03\u5C40 ----------
294
+ \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 */
245
295
  .kc-app-body {
246
296
  display: flex;
247
- gap: 10px;
248
- padding: 10px;
297
+ gap: 0;
298
+ padding: 0;
249
299
  flex: 1;
250
300
  min-height: 0;
251
301
  }
@@ -255,9 +305,10 @@ button.kc-sidebar-entry[data-active='true']:hover {
255
305
  display: flex;
256
306
  flex-direction: column;
257
307
  min-height: 0;
258
- background: var(--kc-panel);
259
- border: 1px solid var(--kc-border);
260
- border-radius: var(--kc-radius);
308
+ background: transparent;
309
+ border: 0;
310
+ border-right: 1px solid var(--kc-border);
311
+ border-radius: 0;
261
312
  overflow: hidden;
262
313
  }
263
314
  .kc-main {
@@ -265,48 +316,67 @@ button.kc-sidebar-entry[data-active='true']:hover {
265
316
  min-width: 0;
266
317
  display: flex;
267
318
  flex-direction: column;
268
- background: var(--kc-panel);
269
- border: 1px solid var(--kc-border);
270
- border-radius: var(--kc-radius);
319
+ background: transparent;
320
+ border: 0;
321
+ border-radius: 0;
271
322
  overflow: hidden;
272
323
  }
273
324
 
274
- /* ---------- TabBar\uFF08\u4F1A\u8BDD\uFF09 ---------- */
325
+ /* ---------- TabBar\uFF08\u4F1A\u8BDD\uFF09----------
326
+ \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 */
275
327
  .kc-tabbar {
276
328
  display: flex;
277
- align-items: center;
329
+ align-items: stretch;
278
330
  gap: 4px;
279
- padding: 8px 10px 0;
331
+ height: calc(var(--kc-tabbar-h, 32px) - 1px);
332
+ padding: 0 10px;
280
333
  overflow-x: auto;
334
+ overflow-y: hidden;
281
335
  scrollbar-width: thin;
336
+ scrollbar-color: var(--kc-border-strong) transparent;
282
337
  border-bottom: 1px solid var(--kc-border);
283
- background: linear-gradient(180deg, #1a2230, #151b28);
338
+ background: transparent;
284
339
  flex: 0 0 auto;
285
340
  }
286
341
  .kc-tab {
342
+ position: relative;
287
343
  display: inline-flex;
288
344
  align-items: center;
289
345
  gap: 6px;
290
346
  flex: 0 0 auto;
347
+ height: 100%;
291
348
  max-width: 240px;
292
- padding: 5px 10px;
293
- background: var(--kc-panel-2);
294
- border: 1px solid var(--kc-border);
295
- border-bottom: 0;
296
- border-radius: 8px 8px 0 0;
349
+ min-width: 0;
350
+ padding: 0 6px;
351
+ background: transparent;
352
+ border: 0;
353
+ border-radius: 0;
297
354
  color: var(--kc-muted);
298
355
  cursor: pointer;
299
- font-size: 12px;
356
+ font-size: 12.5px;
300
357
  user-select: none;
358
+ white-space: nowrap;
359
+ transition: color var(--kc-ease);
360
+ }
361
+ .kc-tab::after {
362
+ content: '';
363
+ position: absolute;
364
+ right: 2px;
365
+ bottom: -1px;
366
+ left: 2px;
367
+ height: 2px;
368
+ border-radius: 2px;
369
+ background: transparent;
301
370
  }
302
371
  .kc-tab:hover { color: var(--kc-text); }
303
372
  .kc-tab-active {
304
- background: var(--kc-panel);
305
- border-color: var(--kc-border-strong);
306
- border-bottom-color: var(--kc-panel);
307
- color: var(--kc-text);
308
- margin-bottom: -1px;
373
+ background: transparent;
374
+ border: 0;
375
+ color: var(--kc-accent);
376
+ font-weight: 600;
377
+ margin-bottom: 0;
309
378
  }
379
+ .kc-tab-active::after { background: var(--kc-accent); }
310
380
  .kc-tab-icon { opacity: 0.8; }
311
381
  .kc-tab-label {
312
382
  overflow: hidden;
@@ -315,11 +385,17 @@ button.kc-sidebar-entry[data-active='true']:hover {
315
385
  }
316
386
  .kc-tab-close {
317
387
  padding: 0 3px;
388
+ border: 0;
318
389
  border-radius: 4px;
319
390
  color: var(--kc-muted);
320
391
  font-size: 11px;
392
+ opacity: 0.55;
393
+ }
394
+ .kc-tab-close:hover {
395
+ color: var(--kc-err);
396
+ background: color-mix(in srgb, var(--kc-err) 18%, transparent);
397
+ opacity: 1;
321
398
  }
322
- .kc-tab-close:hover { color: var(--kc-err); background: rgba(255, 95, 86, 0.12); }
323
399
  .kc-tabpanes { flex: 1; min-height: 0; position: relative; }
324
400
  .kc-pane {
325
401
  position: absolute;
@@ -349,16 +425,16 @@ button.kc-sidebar-entry[data-active='true']:hover {
349
425
  .kc-nav-count {
350
426
  font-size: 11px;
351
427
  color: var(--kc-muted);
352
- border: 1px solid var(--kc-border);
428
+ border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
353
429
  border-radius: 999px;
354
430
  padding: 0 7px;
355
431
  }
356
432
  .kc-warnbox {
357
433
  margin: 0 10px 8px;
358
434
  padding: 8px 10px;
359
- border: 1px solid rgba(224, 179, 65, 0.4);
360
- background: rgba(224, 179, 65, 0.08);
361
- border-radius: 6px;
435
+ border: 0;
436
+ background: var(--dsw-alias-state-warn-secondary, rgba(224, 179, 65, 0.12));
437
+ border-radius: 8px;
362
438
  font-size: 12px;
363
439
  }
364
440
  .kc-warnbox-title { color: var(--kc-warn); font-weight: 600; margin-bottom: 2px; }
@@ -367,10 +443,12 @@ button.kc-sidebar-entry[data-active='true']:hover {
367
443
  flex: 1;
368
444
  min-height: 0;
369
445
  overflow-y: auto;
370
- padding: 0 6px 6px;
446
+ padding: 0 8px 8px;
371
447
  display: flex;
372
448
  flex-direction: column;
373
449
  gap: 4px;
450
+ scrollbar-width: thin;
451
+ scrollbar-color: var(--kc-border-strong) transparent;
374
452
  }
375
453
  .kc-nav-empty {
376
454
  color: var(--kc-muted);
@@ -379,13 +457,14 @@ button.kc-sidebar-entry[data-active='true']:hover {
379
457
  padding: 14px 10px;
380
458
  }
381
459
  .kc-conn {
382
- border: 1px solid var(--kc-border);
460
+ border: 1px solid transparent;
383
461
  border-radius: 8px;
384
462
  overflow: hidden;
385
463
  display: flex;
386
464
  align-items: stretch;
465
+ transition: background var(--kc-ease), border-color var(--kc-ease);
387
466
  }
388
- .kc-conn:hover { border-color: var(--kc-border-strong); }
467
+ .kc-conn:hover { border-color: color-mix(in srgb, var(--kc-border) 72%, transparent); }
389
468
  .kc-conn-main {
390
469
  flex: 1;
391
470
  min-width: 0;
@@ -395,11 +474,14 @@ button.kc-sidebar-entry[data-active='true']:hover {
395
474
  gap: 2px;
396
475
  padding: 7px 10px;
397
476
  text-align: left;
398
- background: var(--kc-panel-2);
477
+ background: transparent;
399
478
  border: 0;
400
479
  border-radius: 0;
401
480
  }
402
- .kc-conn-main:hover { background: var(--kc-accent-weak); border-color: transparent; }
481
+ .kc-conn-main:hover {
482
+ background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
483
+ border-color: transparent;
484
+ }
403
485
  .kc-conn-name {
404
486
  font-weight: 600;
405
487
  color: var(--kc-text);
@@ -416,7 +498,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
416
498
  }
417
499
  .kc-conn-server {
418
500
  font-size: 10px;
419
- color: #5b6475;
501
+ color: var(--kc-faint);
420
502
  font-family: var(--kc-mono);
421
503
  overflow: hidden;
422
504
  text-overflow: ellipsis;
@@ -434,8 +516,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
434
516
  justify-content: center;
435
517
  gap: 4px;
436
518
  padding: 4px 6px;
437
- background: var(--kc-panel-2);
438
- border-left: 1px solid var(--kc-border);
519
+ background: transparent;
520
+ border-left: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
439
521
  }
440
522
  .kc-icon-btn {
441
523
  width: 26px;
@@ -445,9 +527,15 @@ button.kc-sidebar-entry[data-active='true']:hover {
445
527
  align-items: center;
446
528
  justify-content: center;
447
529
  font-size: 12px;
448
- border-radius: 5px;
530
+ border-radius: 6px;
531
+ border-color: transparent;
532
+ color: var(--kc-muted);
533
+ }
534
+ .kc-icon-btn:hover:not(:disabled) {
535
+ color: var(--kc-accent);
536
+ background: var(--dsw-alias-interactive-bg-hover, var(--kc-accent-weak));
449
537
  }
450
- .kc-icon-btn-danger:hover:not(:disabled) { color: var(--kc-err); border-color: var(--kc-err); }
538
+ .kc-icon-btn-danger:hover:not(:disabled) { color: var(--kc-err); }
451
539
  .kc-nav-foot {
452
540
  padding: 8px 10px;
453
541
  border-top: 1px solid var(--kc-border);
@@ -463,7 +551,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
463
551
  display: flex;
464
552
  align-items: center;
465
553
  justify-content: center;
466
- background: rgba(4, 8, 14, 0.6);
554
+ background: var(--dsw-alias-bg-mask-1, rgba(4, 8, 14, 0.6));
467
555
  backdrop-filter: blur(2px);
468
556
  }
469
557
  .kc-modal {
@@ -471,10 +559,10 @@ button.kc-sidebar-entry[data-active='true']:hover {
471
559
  max-height: 88%;
472
560
  overflow-y: auto;
473
561
  background: var(--kc-panel);
474
- border: 1px solid var(--kc-border-strong);
562
+ border: 1px solid var(--kc-border);
475
563
  border-radius: 12px;
476
564
  padding: 16px 18px;
477
- box-shadow: 0 18px 48px rgba(0, 0, 0, 0.5);
565
+ box-shadow: var(--dsw-shadow-lv3, 0 18px 48px rgba(0, 0, 0, 0.5));
478
566
  display: flex;
479
567
  flex-direction: column;
480
568
  gap: 12px;
@@ -484,9 +572,9 @@ button.kc-sidebar-entry[data-active='true']:hover {
484
572
  .kc-field label { font-size: 12px; color: var(--kc-muted); }
485
573
  .kc-form-error {
486
574
  color: var(--kc-err);
487
- background: rgba(255, 95, 86, 0.1);
488
- border: 1px solid rgba(255, 95, 86, 0.3);
489
- border-radius: 6px;
575
+ background: var(--dsw-alias-state-error-secondary, rgba(255, 95, 86, 0.12));
576
+ border: 0;
577
+ border-radius: 8px;
490
578
  padding: 6px 9px;
491
579
  font-size: 12px;
492
580
  white-space: pre-wrap;
@@ -502,33 +590,34 @@ button.kc-sidebar-entry[data-active='true']:hover {
502
590
  display: inline-flex;
503
591
  align-items: center;
504
592
  gap: 2px;
505
- background: var(--kc-panel-2);
506
- border: 1px solid var(--kc-border);
507
- border-radius: 7px;
593
+ background: var(--kc-panel);
594
+ border: 1px solid color-mix(in srgb, var(--kc-border) 72%, transparent);
595
+ border-radius: 999px;
508
596
  padding: 2px;
509
597
  }
510
598
  .kc-seg button {
511
- padding: 4px 12px;
599
+ padding: 3px 11px;
512
600
  font-size: 12px;
513
601
  border: 0;
514
- border-radius: 5px;
602
+ border-radius: 999px;
515
603
  background: transparent;
516
604
  color: var(--kc-muted);
517
605
  white-space: nowrap;
518
606
  }
519
- .kc-seg button:hover:not(:disabled) { color: var(--kc-text); background: rgba(255, 255, 255, 0.05); border: 0; }
607
+ .kc-seg button:hover:not(:disabled) { color: var(--kc-text); background: transparent; border: 0; }
520
608
  .kc-seg button.kc-seg-active {
521
- background: var(--kc-accent);
522
- color: #fff;
609
+ background: var(--kc-accent-weak);
610
+ color: var(--kc-accent);
611
+ font-weight: 600;
523
612
  }
524
- .kc-seg button.kc-seg-active:hover:not(:disabled) { background: #63b8ff; color: #fff; }
613
+ .kc-seg button.kc-seg-active:hover:not(:disabled) { background: var(--kc-accent-weak); color: var(--kc-accent); }
525
614
 
526
615
  /* ---------- \u4EE3\u7801\u8F93\u5165/\u8F93\u51FA ---------- */
527
616
  .kc-code-input {
528
617
  font-family: var(--kc-mono);
529
618
  font-size: 12px;
530
619
  line-height: 1.55;
531
- background: #0b0f16;
620
+ background: var(--kc-panel);
532
621
  resize: vertical;
533
622
  tab-size: 2;
534
623
  }
@@ -539,16 +628,16 @@ button.kc-sidebar-entry[data-active='true']:hover {
539
628
  display: flex;
540
629
  align-items: center;
541
630
  gap: 8px;
542
- padding: 8px 12px;
631
+ padding: 6px 12px;
543
632
  border-bottom: 1px solid var(--kc-border);
544
- background: #121825;
633
+ background: transparent;
545
634
  flex: 0 0 auto;
546
635
  }
547
636
  .kc-ws-meta-name { font-weight: 600; font-size: 13px; }
548
637
  .kc-ws-meta-chip {
549
638
  font-size: 11px;
550
639
  color: var(--kc-muted);
551
- border: 1px solid var(--kc-border);
640
+ border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
552
641
  border-radius: 999px;
553
642
  padding: 1px 8px;
554
643
  max-width: 320px;
@@ -611,13 +700,15 @@ button.kc-sidebar-entry[data-active='true']:hover {
611
700
  flex: 1;
612
701
  min-height: 0;
613
702
  overflow-y: auto;
614
- background: #0a0e15;
615
- border: 1px solid var(--kc-border);
703
+ background: var(--kc-bg);
704
+ border: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
616
705
  border-radius: 8px;
617
706
  padding: 8px 0;
618
707
  font-family: var(--kc-mono);
619
708
  font-size: 12px;
620
709
  line-height: 1.5;
710
+ scrollbar-width: thin;
711
+ scrollbar-color: var(--kc-border-strong) transparent;
621
712
  }
622
713
  .kc-output-empty {
623
714
  padding: 10px 14px;
@@ -632,23 +723,23 @@ button.kc-sidebar-entry[data-active='true']:hover {
632
723
  font-family: var(--kc-mono);
633
724
  }
634
725
  .kc-out-cmd {
635
- color: #9ccbff;
636
- background: rgba(63, 167, 247, 0.07);
726
+ color: var(--kc-accent);
727
+ background: var(--kc-accent-weak);
637
728
  border-left: 2px solid var(--kc-accent);
638
729
  padding-top: 2px;
639
730
  padding-bottom: 2px;
640
731
  }
641
732
  .kc-out-prompt { color: var(--kc-accent); user-select: none; }
642
- .kc-out-stdout { color: #d6dde8; }
643
- .kc-out-stderr { color: #ffb3a8; }
733
+ .kc-out-stdout { color: var(--kc-text); }
734
+ .kc-out-stderr { color: color-mix(in srgb, var(--kc-err) 72%, var(--kc-text)); }
644
735
  .kc-out-err { color: var(--kc-err); }
645
736
  .kc-out-sys { color: var(--kc-muted); font-size: 11px; }
646
- .kc-out-muted { color: #6b7484; }
737
+ .kc-out-muted { color: var(--kc-faint); }
647
738
  .kc-exitbar {
648
739
  flex: 0 0 auto;
649
740
  font-size: 12px;
650
741
  color: var(--kc-ok);
651
- border-top: 1px solid var(--kc-border);
742
+ border-top: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
652
743
  padding: 5px 4px 0;
653
744
  }
654
745
  .kc-exitbar-err { color: var(--kc-err); }
@@ -689,9 +780,9 @@ button.kc-sidebar-entry[data-active='true']:hover {
689
780
  .kc-chat-warn {
690
781
  font-size: 12px;
691
782
  color: var(--kc-warn);
692
- background: rgba(224, 179, 65, 0.1);
693
- border: 1px solid rgba(224, 179, 65, 0.35);
694
- border-radius: 6px;
783
+ background: var(--dsw-alias-state-warn-secondary, rgba(224, 179, 65, 0.12));
784
+ border: 0;
785
+ border-radius: 8px;
695
786
  padding: 6px 9px;
696
787
  white-space: pre-wrap;
697
788
  }
@@ -703,6 +794,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
703
794
  flex-direction: column;
704
795
  gap: 10px;
705
796
  padding: 4px 2px;
797
+ scrollbar-width: thin;
798
+ scrollbar-color: var(--kc-border-strong) transparent;
706
799
  }
707
800
  .kc-chat-empty {
708
801
  flex: 1;
@@ -723,8 +816,8 @@ button.kc-sidebar-entry[data-active='true']:hover {
723
816
  align-items: center;
724
817
  justify-content: center;
725
818
  border-radius: 50%;
726
- background: var(--kc-panel-2);
727
- border: 1px solid var(--kc-border);
819
+ background: var(--kc-panel);
820
+ border: 1px solid color-mix(in srgb, var(--kc-border) 80%, transparent);
728
821
  font-size: 14px;
729
822
  user-select: none;
730
823
  }
@@ -737,11 +830,11 @@ button.kc-sidebar-entry[data-active='true']:hover {
737
830
  }
738
831
  .kc-chat-user .kc-chat-bubble {
739
832
  background: var(--kc-accent-weak);
740
- border: 1px solid rgba(63, 167, 247, 0.25);
833
+ border: 1px solid color-mix(in srgb, var(--kc-accent) 30%, transparent);
741
834
  }
742
835
  .kc-chat-assistant .kc-chat-bubble {
743
- background: var(--kc-panel-2);
744
- border: 1px solid var(--kc-border);
836
+ background: var(--kc-panel);
837
+ border: 1px solid color-mix(in srgb, var(--kc-border) 70%, transparent);
745
838
  }
746
839
  .kc-chat-user-text { white-space: pre-wrap; }
747
840
  .kc-chat-ai-text { white-space: normal; }
@@ -760,7 +853,7 @@ button.kc-sidebar-entry[data-active='true']:hover {
760
853
  .kc-chat-meta {
761
854
  margin-top: 6px;
762
855
  font-size: 10px;
763
- color: #5b6475;
856
+ color: var(--kc-faint);
764
857
  text-align: right;
765
858
  }
766
859
  .kc-chat-quickrun {
@@ -768,16 +861,16 @@ button.kc-sidebar-entry[data-active='true']:hover {
768
861
  align-items: center;
769
862
  gap: 8px;
770
863
  padding: 6px 10px;
771
- border: 1px dashed var(--kc-border-strong);
864
+ border: 1px dashed color-mix(in srgb, var(--kc-border-strong) 80%, transparent);
772
865
  border-radius: 8px;
773
866
  font-size: 12px;
774
867
  color: var(--kc-muted);
775
- background: #101623;
868
+ background: var(--kc-panel);
776
869
  }
777
870
  .kc-chat-quickrun code {
778
871
  font-family: var(--kc-mono);
779
872
  font-size: 11px;
780
- color: #9ccbff;
873
+ color: var(--kc-accent);
781
874
  overflow: hidden;
782
875
  text-overflow: ellipsis;
783
876
  white-space: nowrap;
@@ -790,18 +883,18 @@ button.kc-sidebar-entry[data-active='true']:hover {
790
883
  /* ---------- \u4EE3\u7801\u5757\uFF08AI \u56DE\u590D\u5185\uFF09 ---------- */
791
884
  .kc-codebox {
792
885
  margin: 6px 0;
793
- border: 1px solid var(--kc-border);
886
+ border: 1px solid color-mix(in srgb, var(--kc-border) 70%, transparent);
794
887
  border-radius: 8px;
795
888
  overflow: hidden;
796
- background: #0a0e15;
889
+ background: var(--kc-bg);
797
890
  }
798
891
  .kc-codebox-head {
799
892
  display: flex;
800
893
  align-items: center;
801
894
  gap: 6px;
802
895
  padding: 3px 6px 3px 10px;
803
- background: #111827;
804
- border-bottom: 1px solid var(--kc-border);
896
+ background: var(--kc-panel);
897
+ border-bottom: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
805
898
  }
806
899
  .kc-codebox-lang {
807
900
  font-size: 11px;
@@ -816,16 +909,155 @@ button.kc-sidebar-entry[data-active='true']:hover {
816
909
  line-height: 1.55;
817
910
  white-space: pre-wrap;
818
911
  word-break: break-word;
819
- color: #d6dde8;
912
+ color: var(--kc-text);
820
913
  max-height: 320px;
821
914
  overflow-y: auto;
915
+ scrollbar-width: thin;
916
+ scrollbar-color: var(--kc-border-strong) transparent;
822
917
  }
823
918
 
824
- /* ---------- \u6EDA\u52A8\u6761 ---------- */
919
+ /* ---------- \u6EDA\u52A8\u6761\uFF08WebKit \u56DE\u843D\uFF1B\u73B0\u4EE3\u6D4F\u89C8\u5668\u8D70 scrollbar-width/color\uFF09 ---------- */
825
920
  #dsh-k8s-console *::-webkit-scrollbar { width: 8px; height: 8px; }
826
- #dsh-k8s-console *::-webkit-scrollbar-thumb { background: #2f3a4e; border-radius: 4px; }
921
+ #dsh-k8s-console *::-webkit-scrollbar-thumb {
922
+ background: color-mix(in srgb, var(--kc-border-strong) 85%, transparent);
923
+ border-radius: 4px;
924
+ }
827
925
  #dsh-k8s-console *::-webkit-scrollbar-track { background: transparent; }
828
- `;var Xe="dsh-k8s-console-style";function Fe(){if(typeof document>"u")return()=>{};let e=document.getElementById(Xe);if(e!==null&&e.isConnected)return()=>{};let t=document.createElement("style");return t.id=Xe,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}),b=Fe(),c=t.inject("sidebar.footer.action",()=>t.register({name:"sidebar.footer.action",id:"k8s-console",order:-9,locale:"k8s",label:()=>n("sidebar.label")},$e)),P=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(),c(),P(),b()},"dsh-plugin-k8s: plugin teardown")}return ot(ft);})();
926
+
927
+ /* ---------- \u5BF9\u8BDD\u5386\u53F2\u62BD\u5C49\uFF08ChatView \u5185\uFF09 ---------- */
928
+ .kc-history {
929
+ margin: 0 10px 6px;
930
+ border: 1px solid var(--kc-border);
931
+ border-radius: 10px;
932
+ background: var(--kc-panel);
933
+ display: flex;
934
+ flex-direction: column;
935
+ max-height: 46%;
936
+ overflow: hidden;
937
+ flex-shrink: 0;
938
+ }
939
+ .kc-history-head {
940
+ display: flex;
941
+ align-items: center;
942
+ gap: 10px;
943
+ padding: 6px 10px;
944
+ border-bottom: 1px solid color-mix(in srgb, var(--kc-border) 60%, transparent);
945
+ font-size: 12px;
946
+ }
947
+ .kc-history-head b { font-size: 12px; }
948
+ .kc-history-all {
949
+ display: inline-flex;
950
+ align-items: center;
951
+ gap: 4px;
952
+ font-size: 12px;
953
+ color: var(--kc-muted);
954
+ cursor: pointer;
955
+ white-space: nowrap;
956
+ }
957
+ .kc-history-count { font-size: 12px; }
958
+ .kc-history-search {
959
+ display: flex;
960
+ gap: 6px;
961
+ padding: 6px 10px;
962
+ border-bottom: 1px solid color-mix(in srgb, var(--kc-border) 50%, transparent);
963
+ }
964
+ .kc-history-search input {
965
+ flex: 1;
966
+ min-width: 0;
967
+ padding: 4px 8px;
968
+ border: 1px solid var(--kc-border);
969
+ border-radius: 6px;
970
+ background: var(--kc-bg);
971
+ color: var(--kc-text);
972
+ font-size: 12px;
973
+ }
974
+ .kc-history-list {
975
+ flex: 1;
976
+ min-height: 60px;
977
+ overflow-y: auto;
978
+ padding: 6px 10px;
979
+ scrollbar-width: thin;
980
+ scrollbar-color: var(--kc-border-strong) transparent;
981
+ }
982
+ .kc-history-item {
983
+ border: 1px solid color-mix(in srgb, var(--kc-border) 70%, transparent);
984
+ border-radius: 8px;
985
+ margin-bottom: 6px;
986
+ background: var(--kc-bg);
987
+ overflow: hidden;
988
+ }
989
+ .kc-history-item-open { border-color: var(--kc-accent); }
990
+ .kc-history-item-main {
991
+ display: flex;
992
+ flex-direction: column;
993
+ gap: 2px;
994
+ padding: 6px 8px;
995
+ cursor: pointer;
996
+ }
997
+ .kc-history-item-main:hover { background: color-mix(in srgb, var(--kc-accent) 6%, transparent); }
998
+ .kc-history-item-title {
999
+ font-size: 12px;
1000
+ color: var(--kc-text);
1001
+ overflow: hidden;
1002
+ text-overflow: ellipsis;
1003
+ white-space: nowrap;
1004
+ }
1005
+ .kc-history-item-meta { font-size: 11px; color: var(--kc-muted); }
1006
+ .kc-history-item-snippet {
1007
+ font-size: 11px;
1008
+ color: var(--kc-accent);
1009
+ overflow: hidden;
1010
+ text-overflow: ellipsis;
1011
+ white-space: nowrap;
1012
+ }
1013
+ .kc-history-item-actions {
1014
+ display: flex;
1015
+ gap: 6px;
1016
+ padding: 0 8px 6px;
1017
+ }
1018
+ .kc-history-delete:hover { color: #e5484d; }
1019
+ .kc-history-detail {
1020
+ border-top: 1px dashed color-mix(in srgb, var(--kc-border) 70%, transparent);
1021
+ padding: 8px;
1022
+ max-height: 220px;
1023
+ overflow-y: auto;
1024
+ scrollbar-width: thin;
1025
+ scrollbar-color: var(--kc-border-strong) transparent;
1026
+ }
1027
+ .kc-history-msg {
1028
+ display: flex;
1029
+ gap: 8px;
1030
+ padding: 4px 0;
1031
+ font-size: 12px;
1032
+ line-height: 1.5;
1033
+ }
1034
+ .kc-history-msg-role { flex-shrink: 0; }
1035
+ .kc-history-msg-body {
1036
+ flex: 1;
1037
+ min-width: 0;
1038
+ white-space: pre-wrap;
1039
+ word-break: break-word;
1040
+ color: var(--kc-text);
1041
+ }
1042
+ .kc-history-msg-user .kc-history-msg-body { color: var(--kc-muted); }
1043
+ .kc-history-msg-error .kc-history-msg-body { color: #e5484d; }
1044
+ .kc-history-msg-code {
1045
+ margin: 4px 0;
1046
+ padding: 6px 10px;
1047
+ border: 1px solid var(--kc-border);
1048
+ border-radius: 6px;
1049
+ background: var(--kc-panel);
1050
+ font-family: var(--kc-mono);
1051
+ font-size: 11px;
1052
+ white-space: pre-wrap;
1053
+ word-break: break-word;
1054
+ }
1055
+ .kc-history-msg-meta { font-size: 10px; color: var(--kc-muted); margin-top: 2px; }
1056
+ .kc-btn-sm-active {
1057
+ border-color: var(--kc-accent);
1058
+ color: var(--kc-accent);
1059
+ }
1060
+ `;var it="dsh-k8s-console-style";function ct(){if(typeof document>"u")return()=>{};let e=document.getElementById(it);if(e!==null&&e.isConnected)return()=>{};let r=document.createElement("style");return r.id=it,r.setAttribute("data-plugin","dsh-plugin-k8s"),r.textContent=st,document.head.appendChild(r),()=>{r.isConnected&&r.remove()}}var lt={"sidebar.label":"K8s","sidebar.aria":"K8s \u63A7\u5236\u53F0","sidebar.title":"\u6253\u5F00 K8s \u63A7\u5236\u53F0","overlay.close":"\u56DE\u5230\u5BF9\u8BDD"},dt={"sidebar.label":"K8s","sidebar.aria":"K8s console","sidebar.title":"Open K8s console","overlay.close":"Back to conversation"};var Kt=["slots","locale"];function Mt(e){let r=e?.slots,a=e?.locale;if(!r||!a)return;let n=a.bind("k8s"),s=a.register("k8s",{zh:lt,en:dt}),k=ct(),i=r.inject("sidebar.footer.action",()=>r.register({name:"sidebar.footer.action",id:"k8s-console",order:-9,locale:"k8s",label:()=>n("sidebar.label")},je)),h=r.inject("conversation.view",()=>r.register({name:"conversation.view",id:"k8s",order:65,locale:"k8s",label:()=>n("sidebar.label")},at));e?.effect&&e.effect(()=>()=>{s(),i(),h(),k()},"dsh-plugin-k8s: plugin teardown")}return yt(Rt);})();
829
1061
  return __dsh_k8s_module__;
830
1062
  },
831
1063
  });