@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/README.md +5 -1
- package/lib/client.js +396 -164
- package/lib/index.js +19 -16
- package/package.json +1 -1
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
|
|
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
|
|
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`)){
|
|
13
|
-
\u70B9\u53F3\u4E0A\u89D2 \u2795 \u6DFB\u52A0\uFF08\u7C98\u8D34\u5185\u5BB9\u6216\u5BFC\u5165\u672C\u673A\u6587\u4EF6\uFF09\u3002`}):null,
|
|
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:
|
|
20
|
-
`).filter(
|
|
21
|
-
`).trim();if(!
|
|
22
|
-
`)),
|
|
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
|
|
26
|
-
|
|
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: #
|
|
30
|
-
--kc-panel: #
|
|
31
|
-
--kc-panel-2: #
|
|
32
|
-
--kc-border:
|
|
33
|
-
--kc-border-strong:
|
|
34
|
-
--kc-text: #e6e9ef;
|
|
35
|
-
--kc-muted: #8b93a3;
|
|
36
|
-
--kc-
|
|
37
|
-
--kc-accent
|
|
38
|
-
--kc-
|
|
39
|
-
--kc-
|
|
40
|
-
--kc-
|
|
41
|
-
--kc-
|
|
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
|
-
/*
|
|
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:
|
|
53
|
-
|
|
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
|
|
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(--
|
|
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(--
|
|
70
|
-
color: var(--
|
|
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:
|
|
107
|
-
border: 1px solid var(--kc-border);
|
|
108
|
-
border-radius:
|
|
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
|
|
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
|
-
|
|
117
|
-
|
|
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:
|
|
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: #
|
|
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:
|
|
134
|
-
border-color:
|
|
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: #
|
|
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:
|
|
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:
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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:
|
|
192
|
-
height:
|
|
193
|
-
border-radius:
|
|
194
|
-
background:
|
|
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:
|
|
213
|
-
.kc-badge-bad { color: var(--kc-err); border-color:
|
|
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
|
|
238
|
-
border-radius:
|
|
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:
|
|
248
|
-
padding:
|
|
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:
|
|
259
|
-
border:
|
|
260
|
-
border-
|
|
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:
|
|
269
|
-
border:
|
|
270
|
-
border-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:
|
|
329
|
+
align-items: stretch;
|
|
278
330
|
gap: 4px;
|
|
279
|
-
|
|
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:
|
|
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
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
border
|
|
296
|
-
border-radius:
|
|
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:
|
|
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:
|
|
305
|
-
border
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
margin-bottom:
|
|
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:
|
|
360
|
-
background: rgba(224, 179, 65, 0.
|
|
361
|
-
border-radius:
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
477
|
+
background: transparent;
|
|
399
478
|
border: 0;
|
|
400
479
|
border-radius: 0;
|
|
401
480
|
}
|
|
402
|
-
.kc-conn-main:hover {
|
|
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:
|
|
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:
|
|
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:
|
|
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);
|
|
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
|
|
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.
|
|
488
|
-
border:
|
|
489
|
-
border-radius:
|
|
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
|
|
506
|
-
border: 1px solid var(--kc-border);
|
|
507
|
-
border-radius:
|
|
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:
|
|
599
|
+
padding: 3px 11px;
|
|
512
600
|
font-size: 12px;
|
|
513
601
|
border: 0;
|
|
514
|
-
border-radius:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
631
|
+
padding: 6px 12px;
|
|
543
632
|
border-bottom: 1px solid var(--kc-border);
|
|
544
|
-
background:
|
|
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:
|
|
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:
|
|
636
|
-
background:
|
|
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:
|
|
643
|
-
.kc-out-stderr { color:
|
|
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:
|
|
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.
|
|
693
|
-
border:
|
|
694
|
-
border-radius:
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 {
|
|
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
|
-
|
|
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
|
});
|