@auto-ai/agent 2.1.228 → 2.1.229
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/dist/safe-a/404/index.html +1 -1
- package/dist/safe-a/404.html +1 -1
- package/dist/safe-a/_next/static/chunks/09d02e9591b61315.js +1 -0
- package/dist/safe-a/_next/static/chunks/25dc1245911d9a8a.js +1 -0
- package/dist/safe-a/_next/static/chunks/2bca283f9a748f53.js +1 -0
- package/dist/safe-a/_next/static/chunks/34a220844c501fc9.js +1 -0
- package/dist/safe-a/_next/static/chunks/34ca8b17795bb784.js +1 -0
- package/dist/safe-a/_next/static/chunks/370739935030a6e1.js +1 -0
- package/dist/safe-a/_next/static/chunks/370edfe0c220e606.js +1 -0
- package/dist/safe-a/_next/static/chunks/3f2b00198d41e6bb.js +1 -0
- package/dist/safe-a/_next/static/chunks/4d8b306a3d3b6c49.js +1 -0
- package/dist/safe-a/_next/static/chunks/51267b470c3fec4b.js +1 -0
- package/dist/safe-a/_next/static/chunks/64260aa198e73a1f.css +1 -0
- package/dist/safe-a/_next/static/chunks/75b53b9a769f6739.js +1 -0
- package/dist/safe-a/_next/static/chunks/7bd6740fa10b5d49.js +1 -0
- package/dist/safe-a/_next/static/chunks/7eb1acc2520f374d.js +1 -0
- package/dist/safe-a/_next/static/chunks/8bfafed734ac3365.js +1 -0
- package/dist/safe-a/_next/static/chunks/8e50ce83132a32a8.js +1 -0
- package/dist/safe-a/_next/static/chunks/{5d79b7f202080232.js → b9531f00083cfcb1.js} +1 -1
- package/dist/safe-a/_next/static/chunks/b9646113d4c78d60.css +1 -0
- package/dist/safe-a/_next/static/chunks/c4ab65e8db4b41d4.js +1 -0
- package/dist/safe-a/_next/static/chunks/c96b9add562114cd.js +1 -0
- package/dist/safe-a/_next/static/chunks/cfd955c69ad0cb7c.js +1 -0
- package/dist/safe-a/_next/static/chunks/d16ce4066ef83fac.js +1 -0
- package/dist/safe-a/_next/static/chunks/da2337885d85abe7.js +1 -0
- package/dist/safe-a/_next/static/chunks/dbad72dfa476b9a0.js +1 -0
- package/dist/safe-a/_next/static/chunks/e8eefc9e3b46e99c.js +1 -0
- package/dist/safe-a/_next/static/chunks/ec3213604182c7c5.js +1 -0
- package/dist/safe-a/_next/static/chunks/f625496d56b8b411.js +1 -0
- package/dist/safe-a/_next/static/chunks/fec7e4e35f80ab99.js +1 -0
- package/dist/safe-a/_next/static/chunks/ff1a16fafef87110.js +1 -0
- package/dist/safe-a/index.html +2 -2
- package/dist/safe-a/index.txt +30 -28
- package/dist/safe-a/manage/about/index.html +2 -2
- package/dist/safe-a/manage/about/index.txt +30 -28
- package/dist/safe-a/manage/env/index.html +2 -2
- package/dist/safe-a/manage/env/index.txt +33 -31
- package/dist/safe-a/manage/geelib/index.html +2 -2
- package/dist/safe-a/manage/geelib/index.txt +33 -31
- package/dist/safe-a/manage/general/index.html +2 -2
- package/dist/safe-a/manage/general/index.txt +30 -28
- package/dist/safe-a/manage/git/index.html +2 -2
- package/dist/safe-a/manage/git/index.txt +33 -31
- package/dist/safe-a/manage/im/index.html +2 -2
- package/dist/safe-a/manage/im/index.txt +33 -31
- package/dist/safe-a/manage/index.html +2 -2
- package/dist/safe-a/manage/index.txt +27 -25
- package/dist/safe-a/manage/library/index.html +2 -2
- package/dist/safe-a/manage/library/index.txt +31 -29
- package/dist/safe-a/manage/mcp/index.html +2 -2
- package/dist/safe-a/manage/mcp/index.txt +31 -29
- package/dist/safe-a/manage/permissions/index.html +2 -2
- package/dist/safe-a/manage/permissions/index.txt +30 -28
- package/dist/safe-a/manage/skills/index.html +2 -2
- package/dist/safe-a/manage/skills/index.txt +31 -29
- package/dist/safe-a/manage/task/index.html +2 -2
- package/dist/safe-a/manage/task/index.txt +31 -29
- package/dist/safe-a/manage/teams/index.html +2 -2
- package/dist/safe-a/manage/teams/index.txt +31 -29
- package/dist/safe-a/manage/terminal/index.html +2 -0
- package/dist/safe-a/manage/terminal/index.txt +38 -0
- package/dist/safe-a/manage/tools/index.html +2 -2
- package/dist/safe-a/manage/tools/index.txt +31 -29
- package/package.json +6 -6
- package/dist/safe-a/_next/static/chunks/1289fc2bb1119e18.js +0 -1
- package/dist/safe-a/_next/static/chunks/27069b3f310e0a86.js +0 -1
- package/dist/safe-a/_next/static/chunks/291c07da1c127dc1.js +0 -1
- package/dist/safe-a/_next/static/chunks/3acf5ab47f7ac8fe.js +0 -1
- package/dist/safe-a/_next/static/chunks/43c4ed555aa7688a.js +0 -1
- package/dist/safe-a/_next/static/chunks/4a426c156537f974.js +0 -1
- package/dist/safe-a/_next/static/chunks/5208bff6c40e7fd0.js +0 -1
- package/dist/safe-a/_next/static/chunks/6677c64fd587e78c.js +0 -1
- package/dist/safe-a/_next/static/chunks/71668b2d16d048d8.js +0 -1
- package/dist/safe-a/_next/static/chunks/7defa1cc0271dd01.css +0 -1
- package/dist/safe-a/_next/static/chunks/91e0df5a4c9d0bcd.js +0 -1
- package/dist/safe-a/_next/static/chunks/9e37e70d0f4b69de.js +0 -1
- package/dist/safe-a/_next/static/chunks/9ee8d3b992ef970c.js +0 -1
- package/dist/safe-a/_next/static/chunks/a437ab944fe911da.js +0 -1
- package/dist/safe-a/_next/static/chunks/aab87c3b5c253757.js +0 -1
- package/dist/safe-a/_next/static/chunks/abdf99ba76e0f571.js +0 -1
- package/dist/safe-a/_next/static/chunks/b30ee3cb6af32088.js +0 -1
- package/dist/safe-a/_next/static/chunks/bbcb68bcca448018.js +0 -1
- package/dist/safe-a/_next/static/chunks/bf2c1c402dbcccdf.js +0 -1
- package/dist/safe-a/_next/static/chunks/da9d2b7d381c1953.js +0 -1
- package/dist/safe-a/_next/static/chunks/e8575bc1450f83ef.js +0 -1
- package/dist/safe-a/_next/static/chunks/e96518d9cb5cbe1e.js +0 -1
- /package/dist/safe-a/_next/static/{6V1592_KuRHKu2MxCBymu → CKN4dmqX3cDLLtdKmTIzy}/_buildManifest.js +0 -0
- /package/dist/safe-a/_next/static/{6V1592_KuRHKu2MxCBymu → CKN4dmqX3cDLLtdKmTIzy}/_clientMiddlewareManifest.json +0 -0
- /package/dist/safe-a/_next/static/{6V1592_KuRHKu2MxCBymu → CKN4dmqX3cDLLtdKmTIzy}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,93309,t=>{"use strict";t.s(["FitAddon",()=>e]);var e=class{activate(t){this._terminal=t}dispose(){}fit(){let t=this.proposeDimensions();if(!t||!this._terminal||isNaN(t.cols)||isNaN(t.rows))return;let e=this._terminal._core;(this._terminal.rows!==t.rows||this._terminal.cols!==t.cols)&&(e._renderService.clear(),this._terminal.resize(t.cols,t.rows))}proposeDimensions(){var t;if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(0===e.css.cell.width||0===e.css.cell.height)return;let r=0===this._terminal.options.scrollback?0:(null==(t=this._terminal.options.overviewRuler)?void 0:t.width)||14,i=window.getComputedStyle(this._terminal.element.parentElement),s=parseInt(i.getPropertyValue("height")),l=Math.max(0,parseInt(i.getPropertyValue("width"))),o=window.getComputedStyle(this._terminal.element),n={top:parseInt(o.getPropertyValue("padding-top")),bottom:parseInt(o.getPropertyValue("padding-bottom")),right:parseInt(o.getPropertyValue("padding-right")),left:parseInt(o.getPropertyValue("padding-left"))},a=n.top+n.bottom;return{cols:Math.max(2,Math.floor((l-(n.right+n.left)-r)/e.css.cell.width)),rows:Math.max(1,Math.floor((s-a)/e.css.cell.height))}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,99650,e=>{"use strict";e.s(["persistAgentEnv",()=>l]);var t=e.i(13354),r=e.i(70074),n=e.i(82136),a=e.i(65934);async function l(e,l,s,i,o,c){var d,u,p,f;let m=a.useAppStore.getState(),g={tools:m.agentConfig.tools.slice(),disallowedTools:m.agentConfig.disallowedTools.slice(),mcpServers:m.agentConfig.mcpServers.slice(),skills:m.agentConfig.skills.slice(),agentTeams:m.agentConfig.agentTeams.slice(),model:m.agentConfig.model,rules:m.agentConfig.rules.slice(),effort:null!=(d=m.agentConfig.effort)?d:null,background:null!=(u=m.agentConfig.background)&&u,isolation:null!=(p=m.agentConfig.isolation)?p:"",whentouse:null!=(f=m.agentConfig.whentouse)?f:"",env:i,llmProviders:m.agentConfig.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),...c},x=await (0,n.loadAgentPrompt)(e,l,s);await (0,n.saveAgentConfig)(e,l,s,g,{prompt:x}),m.setAgentConfig({...g,env:{...i}}),a.useAppStore.getState().wsConnected&&o();let h=a.useAppStore.getState();h.setStatus("环境变量已保存"+(h.wsConnected?",已请求 worker 重新加载配置":""),(0,r.resolveInfoStatusClass)(h.bridgeReady,h.wsConnected)),t.appToast.success(h.wsConnected?"已保存到 agent.json,并已请求 worker 重新加载配置。":"已保存到 agent.json。重连 WebSocket 后子进程环境将同步。")}},20783,e=>{"use strict";e.s(["composeRefs",()=>n,"useComposedRefs",()=>a]);var t=e.i(71645);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return e=>{let n=!1,a=t.map(t=>{let a=r(t,e);return n||"function"!=typeof a||(n=!0),a});if(n)return()=>{for(let e=0;e<a.length;e++){let n=a[e];"function"==typeof n?n():r(t[e],null)}}}}function a(){for(var e=arguments.length,r=Array(e),a=0;a<e;a++)r[a]=arguments[a];return t.useCallback(n(...r),r)}},24687,e=>{"use strict";e.s(["Textarea",()=>n]);var t=e.i(18050),r=e.i(75157);function n(e){let{className:n,...a}=e;return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,r.cn)("flex min-h-20 w-full rounded-md border border-solid border-border bg-transparent px-3 py-2 text-base outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--ds-color-border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none]",n),...a})}},18900,69051,e=>{"use strict";function t(e){let t=null==e?"":String(e);return""===t?'""':/[\s#"'\\\n]/.test(t)||t!==t.trim()?'"'.concat(t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t}function r(e){let t=String(e).split(/\r?\n/),r={},n=/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/;for(let e=0;e<t.length;e++){let a=t[e],l=n.exec(a);l&&(r[l[1]]=function(e){let t=e.trimEnd();return t.length>=2&&'"'===t[0]&&'"'===t[t.length-1]?t.slice(1,-1).replace(/\\(.)/g,(e,t)=>"n"===t?"\n":'"'===t?'"':"\\"===t?"\\":"\\".concat(t)):t.length>=2&&"'"===t[0]&&"'"===t[t.length-1]?t.slice(1,-1):e}(l[2]))}return r}function n(e,r){let n=Array.isArray(e)?e:[],a=new Set;for(let e=0;e<n.length;e++){let t=n[e];t&&"object"==typeof t&&"string"==typeof t.key&&a.add(t.key)}let l=[];for(let e=0;e<n.length;e++){let a=n[e];if(!a||"object"!=typeof a||"string"!=typeof a.key)continue;let s=a.key;if(!Object.prototype.hasOwnProperty.call(r,s))continue;let i=r[s];null!=i&&""!==String(i).trim()&&l.push("".concat(s,"=").concat(t(String(i))))}let s=Object.keys(r).filter(e=>!a.has(e)).sort();for(let e=0;e<s.length;e++){let n=s[e],a=r[n];null!=a&&""!==String(a).trim()&&l.push("".concat(n,"=").concat(t(String(a))))}let i=l.join("\n");return i.length>0?"".concat(i,"\n"):""}e.s(["buildEnvFileContentFromForm",()=>n,"parseEnvContentToMap",()=>r],18900),e.s(["loadDemoSingleMessage",()=>c,"loadSystemEnv",()=>s,"saveSystemEnv",()=>i,"saveSystemMcpJson",()=>o],69051);var a=e.i(29250),l=e.i(36845);async function s(e,t,r){return(0,a.get)((0,l.buildSystemEnvApiUrl)(e,t,r))}async function i(e,t,r,n){await (0,a.patch)((0,l.buildSystemEnvApiUrl)(e,t,r),{content:n})}async function o(e,t,r,n){await (0,a.patch)((0,l.buildSystemMcpJsonApiUrl)(e,t,r),{content:n})}async function c(){return(0,a.get)("/api/demo/single-message")}},28370,e=>{"use strict";e.s(["AgentEnvGroupSettingsView",()=>S],28370);var t=e.i(18050),r=e.i(85413),n=e.i(2839),a=e.i(19455),l=e.i(93479),s=e.i(24687),i=e.i(67489),o=e.i(75157);let c="__empty__",d=[{value:"anthropic",label:"anthropic"},{value:"openai",label:"openai"}],u=[{value:"1",label:"启用全部 MCP 常驻会话"},{value:"0",label:"禁用"}];function p(e){let{group:r,fields:n,fieldValues:a,whentouseValue:p,onFieldChange:f,onWhentouseChange:m}=e;return(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col divide-y divide-[var(--ds-color-border-default)]",children:["system"===r?(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-[var(--ds-text)]",htmlFor:"agent-env-whentouse",children:"使用时机(whentouse)"}),(0,t.jsx)(s.Textarea,{id:"agent-env-whentouse",rows:3,spellCheck:!1,autoComplete:"off",placeholder:"输入该 agent 的使用时机描述","aria-label":"agent.json whentouse",className:"min-h-[88px] flex-1 resize-none border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] placeholder:text-[var(--text-placeholder)]",value:p,onChange:e=>m(e.target.value)})]}):null,n.map(e=>{let r="agent-env-field-".concat(e.key),n="string"==typeof a[e.key]?a[e.key]:"";if("LLM_PROVIDER"===e.key){let a="anthropic"===n||"openai"===n?n:"";return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-basic text-[var(--ds-text)]",htmlFor:r,children:e.label}),(0,t.jsxs)(i.Select,{value:a||c,onValueChange:t=>f(e.key,t===c?"":t),children:[(0,t.jsx)(i.SelectTrigger,{id:r,className:(0,o.cn)("h-10 w-full border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)]",!a&&"text-[var(--text-placeholder)]"),children:(0,t.jsx)(i.SelectValue,{placeholder:"请选择"})}),(0,t.jsxs)(i.SelectContent,{children:[(0,t.jsx)(i.SelectItem,{value:c,children:"请选择"}),d.map(e=>(0,t.jsx)(i.SelectItem,{value:e.value,children:e.label},e.value))]})]})]},e.key)}if("TUITUI_CHANNEL_SESSION"===e.key){let a="1"===n?"1":"0";return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-basic text-[var(--ds-text)]",htmlFor:r,children:e.label}),(0,t.jsxs)(i.Select,{value:a,onValueChange:t=>f(e.key,t),children:[(0,t.jsx)(i.SelectTrigger,{id:r,className:"h-10 w-full border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)]",children:(0,t.jsx)(i.SelectValue,{placeholder:"请选择"})}),(0,t.jsx)(i.SelectContent,{children:u.map(e=>(0,t.jsx)(i.SelectItem,{value:e.value,children:e.label},e.value))})]})]},e.key)}return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-[var(--ds-text)]",htmlFor:r,children:e.label}),(0,t.jsx)(l.Input,{id:r,type:"text",spellCheck:!1,autoComplete:"off",placeholder:e.placeholder,className:"h-10 border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] placeholder:text-[var(--text-placeholder)]",value:n,onChange:t=>f(e.key,t.target.value)})]},e.key)})]})}var f=e.i(71645),m=e.i(13354),g=e.i(87243),x=e.i(67327);let h=["llm","git","geelib","tutui","system"];var v=e.i(99650),b=e.i(18900),y=e.i(69051),j=e.i(65934);function S(e){let{group:l}=e,{loading:s,saving:i,groupFields:o,fieldValues:c,whentouseValue:d,setField:u,setWhentouseValue:S,reset:C,save:w}=function(e){let t=(0,j.useAppStore)(e=>e.wsUrl),r=(0,j.useAppStore)(e=>e.apiBase),n=(0,j.useAppStore)(e=>e.agentConfig),{currentAgent:a,loadAgentConfig:l}=(0,g.useSession)(),{sendReloadAgentConfig:s}=(0,x.useWebSocketSender)(),[i,o]=(0,f.useState)(!0),[c,d]=(0,f.useState)(!1),[u,p]=(0,f.useState)([]),[S,C]=(0,f.useState)({}),[w,N]=(0,f.useState)({}),[k,T]=(0,f.useState)(""),E=(0,f.useMemo)(()=>(function(e){let t={};for(let e of h)t[e]=[];for(let r of e)h.includes(r.group)&&t[r.group].push(r);return t})(u)[e],[u,e]),R=(0,f.useCallback)(e=>{N(function(e,t,r){let n={};for(let a of t){let t=e[a.key];if("string"==typeof t&&t.length>0){n[a.key]=t;continue}let l=r[a.key];n[a.key]="string"==typeof l?l:""}return n}(e,E,S))},[E,S]),A=(0,f.useCallback)(e=>{T("string"==typeof e?e:"")},[]),M=(0,f.useCallback)(async()=>{try{let e=await (0,y.loadSystemEnv)(t,r,a()),n="string"==typeof e.content?e.content:"",l=function(e){if(!Array.isArray(e))return[];let t=[];for(let r of e){if(!r||"object"!=typeof r)continue;let e="string"==typeof r.key?r.key.trim():"",n="string"==typeof r.group?r.group.trim():"";e&&h.includes(n)&&t.push({key:e,group:n,label:"string"==typeof r.label&&r.label.trim()?r.label.trim():e,placeholder:"string"==typeof r.placeholder?r.placeholder:""})}return t}(e.schema),s=(0,b.parseEnvContentToMap)(n);p(l),C(function(e,t){let r={};for(let a of e){var n;r[a.key]=null!=(n=t[a.key])?n:""}return r}(l,s))}catch(e){m.appToast.error("加载环境变量表单配置失败:".concat(e instanceof Error?e.message:String(e))),p([]),C({})}},[t,r,a]),I=(0,f.useCallback)(async()=>{o(!0);try{await Promise.all([l(),M()])}finally{o(!1)}},[l,M]);(0,f.useEffect)(()=>{I()},[I]),(0,f.useEffect)(()=>{!i&&E.length&&R({...n.env})},[n.env,R,i,E.length]),(0,f.useEffect)(()=>{i||"system"!==e||A(n.whentouse)},[n.whentouse,e,i,A]);let O=(0,f.useCallback)((e,t)=>{N(r=>({...r,[e]:t}))},[]),P=(0,f.useCallback)(()=>{R({...n.env}),"system"===e&&A(n.whentouse)},[n.env,n.whentouse,e,R,A]),_=(0,f.useCallback)(async()=>{let n=function(e,t,r){let n={...e};for(let e of t){var a;let t=String(null!=(a=r[e.key])?a:"").trim();t?n[e.key]=t:delete n[e.key]}return n}(j.useAppStore.getState().agentConfig.env,E,w);d(!0);try{if("system"===e){let e=j.useAppStore.getState().agentConfig;j.useAppStore.getState().setAgentConfig({...e,whentouse:k})}await (0,v.persistAgentEnv)(t,r,a(),n,s),await l()}catch(e){m.appToast.error("保存环境变量失败:".concat(e instanceof Error?e.message:String(e)))}finally{d(!1)}},[E,w,k,e,t,r,a,s,l]);return{loading:i,saving:c,groupFields:E,fieldValues:w,whentouseValue:k,setField:O,setWhentouseValue:T,reset:P,save:_}}(l),N="system"===l||o.length>0;return(0,t.jsxs)("div",{className:"manage-page-content flex min-h-0 flex-1 flex-col rounded-xl border bg-[#fff] shadow-[var(--shadow-md)]",children:[(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-y-auto p-4",children:s?(0,t.jsx)(n.Loading,{className:"min-h-[240px]",text:"加载中…"}):N?(0,t.jsx)(p,{group:l,fields:o,fieldValues:c,whentouseValue:d,onFieldChange:u,onWhentouseChange:S}):(0,t.jsx)(r.Empty,{className:"min-h-[240px]",text:"暂无可配置项"})}),(0,t.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-color-border-default)] px-4 py-3",children:[(0,t.jsx)(a.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:s||i||!N,onClick:()=>C(),className:"cursor-pointer",children:"取消"}),(0,t.jsx)(a.Button,{type:"button",size:"lg",disabled:s||i||!N,onClick:()=>void w(),className:"cursor-pointer",children:i?"保存中…":"保存"})]})]})}},55242,e=>{"use strict";e.s(["AppDialog",()=>l]);var t=e.i(18050),r=e.i(71645),n=e.i(76639),a=e.i(75157);function l(e){let{open:l,onOpenChange:s,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u,bodyClassName:p}=e,f=(0,r.useId)();return(0,t.jsx)(n.Dialog,{open:l,onOpenChange:s,children:(0,t.jsxs)(n.DialogContent,{"aria-labelledby":f,className:(0,a.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(n.DialogHeader,{children:[(0,t.jsx)(n.DialogTitle,{id:f,children:i}),(0,t.jsx)(n.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(n.DialogBody,{className:(0,a.cn)("!px-4 !py-3",p),children:o}),c?(0,t.jsx)("div",{className:"flex flex-shrink-0 justify-end gap-2 border-t border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] px-4 py-3",children:c}):null]})})}},92715,e=>{"use strict";e.s(["AppTable",()=>u],92715);var t=e.i(18050),r=e.i(85413),n=e.i(71645),a=e.i(75157);let l=n.forwardRef((e,r)=>{let{className:n,...l}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:r,className:(0,a.cn)("w-full caption-bottom border-collapse",n),...l})})});l.displayName="Table";let s=n.forwardRef((e,r)=>{let{className:n,...l}=e;return(0,t.jsx)("thead",{ref:r,className:(0,a.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",n),...l})});s.displayName="TableHeader";let i=n.forwardRef((e,r)=>{let{className:l,viewportFit:s=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=n.useRef(null),p=n.useCallback(e=>{u.current=e,"function"==typeof r?r(e):r&&(r.current=e)},[r]),[f,m]=n.useState(void 0);return n.useLayoutEffect(()=>{var e,t;if(!s)return void m(void 0);let r=()=>{var e,t;let r=u.current;if(!r)return;let n=r.getBoundingClientRect().top;m(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-n-(i+o))))};r();let n=new ResizeObserver(()=>{r()});try{n.observe(document.body)}catch(e){}return window.addEventListener("resize",r),null==(e=window.visualViewport)||e.addEventListener("resize",r),null==(t=window.visualViewport)||t.addEventListener("scroll",r),window.addEventListener("scroll",r,!0),()=>{var e,t;n.disconnect(),window.removeEventListener("resize",r),null==(e=window.visualViewport)||e.removeEventListener("resize",r),null==(t=window.visualViewport)||t.removeEventListener("scroll",r),window.removeEventListener("scroll",r,!0)}},[s,i,o]),(0,t.jsx)("tbody",{ref:p,className:(0,a.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",l),style:s&&void 0!==f?{...c,maxHeight:f}:c,...d})});i.displayName="TableBody";let o=n.forwardRef((e,r)=>{let{className:n,hoverable:l=!0,...s}=e;return(0,t.jsx)("tr",{ref:r,className:(0,a.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-color-surface-item-active)]",l&&"group/table-row",n),...s})});o.displayName="TableRow";let c=n.forwardRef((e,r)=>{let{className:n,...l}=e;return(0,t.jsx)("th",{ref:r,className:(0,a.cn)("h-10 border-b border-[var(--ds-color-border-subtle)] bg-[var(--surface-2)] px-3 text-left align-middle text-[14px] font-medium !text-[var(--ds-text)] text-muted-foreground",n),...l})});c.displayName="TableHead";let d=n.forwardRef((e,r)=>{let{className:n,...l}=e;return(0,t.jsx)("td",{ref:r,className:(0,a.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--ds-color-border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-color-surface-item-hover)]",n),...l})});function u(e){let{rows:n,columns:u,getRowKey:p,className:f,rowClassName:m,headerRowClassName:g,emptyText:x,emptyNode:h,bodyProps:v}=e;return(0,t.jsx)("div",{className:(0,a.cn)("overflow-hidden border border-[var(--ds-color-border-default)]",f),children:(0,t.jsxs)(l,{children:[(0,t.jsx)(s,{children:(0,t.jsx)(o,{className:(0,a.cn)("bg-[var(--ds-color-surface-main-tint)] hover:bg-[var(--ds-color-surface-main-tint)]",g),children:u.map(e=>(0,t.jsx)(c,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(i,{...v,children:n.length?n.map(e=>(0,t.jsx)(o,{className:"function"==typeof m?m(e):m,children:u.map(r=>(0,t.jsx)(d,{className:r.cellClassName,children:r.render(e)},r.key))},p(e))):(0,t.jsx)(o,{hoverable:!1,children:(0,t.jsx)(d,{colSpan:u.length,className:"py-6",children:null!=h?h:(0,t.jsx)(r.Empty,{text:x})})})})]})})}d.displayName="TableCell"},62427,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>j,"deleteRuntimeMcp",()=>p,"deleteRuntimeSkill",()=>S,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>m,"exportRuntimeSkillUrl",()=>C,"exportRuntimeToolUrl",()=>f,"importRuntimeMcp",()=>x,"importRuntimeTool",()=>g,"installCloudSkill",()=>N,"listBaseSkills",()=>l,"listCloudSkillCatalog",()=>w,"listInstalledSkills",()=>s,"listInstalledTools",()=>a,"listMcpServers",()=>n,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>c,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>h,"loadRuntimeMcpItemConfig",()=>b,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>v,"saveRuntimeMcpItemConfig",()=>y]);var t=e.i(29250),r=e.i(36845);async function n(e,n,a){let l=await (0,t.get)((0,r.buildMcpServersListUrl)(e,n,a));return{servers:Array.isArray(l.servers)?l.servers:[]}}async function a(e,n,a){let l=await (0,t.get)((0,r.buildToolInstalledListUrl)(e,n,a));return{tools:Array.isArray(l.tools)?l.tools:[]}}async function l(e,n,a){let l=await (0,t.get)((0,r.buildSkillBaseListUrl)(e,n,a));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function s(e,n,a){let l=await (0,t.get)((0,r.buildSkillInstalledListUrl)(e,n,a));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function i(e,n,a,l){return(0,t.get)((0,r.buildBaseSkillMdUrl)(e,n,a,l))}async function o(e,n,a,l,s){await (0,t.put)((0,r.buildBaseSkillMdUrl)(e,n,a,l),{content:s})}async function c(e,n,a){let l=await (0,t.get)((0,r.buildToolsRuntimeFilesUrl)(e,n,a));return{runtimeToolsDir:"string"==typeof l.runtimeToolsDir?l.runtimeToolsDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,n,a){let l=await (0,t.get)((0,r.buildMcpRuntimeFilesUrl)(e,n,a));return{mcpRuntimeDir:"string"==typeof l.mcpRuntimeDir?l.mcpRuntimeDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,n,a,l){return(0,t.del)((0,r.buildToolsRuntimeDeleteUrl)(e,n,a,l))}async function p(e,n,a,l){return(0,t.del)((0,r.buildMcpRuntimeDeleteUrl)(e,n,a,l))}function f(e,t,n,a){return(0,r.buildToolsRuntimeExportUrl)(e,t,n,a)}function m(e,t,n,a){return(0,r.buildMcpRuntimeExportUrl)(e,t,n,a)}async function g(e,n,a,l){let s=new FormData;return s.append("file",l),(0,t.post)((0,r.buildToolsRuntimeImportUrl)(e,n,a),s,{type:"file"})}async function x(e,n,a,l){let s=new FormData;return s.append("file",l),(0,t.post)((0,r.buildMcpRuntimeImportUrl)(e,n,a),s,{type:"file"})}async function h(e,n,a){return(0,t.get)((0,r.buildRemoteMcpJsonUrl)(e,n,a))}async function v(e,n,a,l){await (0,t.post)((0,r.buildRemoteMcpJsonUrl)(e,n,a),{content:l})}async function b(e,n,a,l,s){return(0,t.get)((0,r.buildRuntimeMcpItemConfigUrl)(e,n,a,l,s))}async function y(e,n,a,l,s,i){await (0,t.put)((0,r.buildRuntimeMcpItemConfigUrl)(e,n,a,l,s),{server:i})}async function j(e,n,a,l,s){await (0,t.del)((0,r.buildRuntimeMcpItemConfigUrl)(e,n,a,l,s))}async function S(e,n,a,l){return(0,t.del)((0,r.buildSkillsRuntimeDeleteUrl)(e,n,a,l))}function C(e,t,n,a){return(0,r.buildSkillsRuntimeExportUrl)(e,t,n,a)}async function w(e,n,a,l,s,i){let o=await (0,t.get)((0,r.buildCloudSkillCatalogUrl)(e,n,a,l,s,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function N(e,n,a,l){await (0,t.post)((0,r.buildCloudSkillInstallUrl)(e,n,a),{id:l})}},53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),r=e.i(71645),n=e.i(72064),a=e.i(75157),l=e.i(19455);function s(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:p=!1,method:f="POST",transport:m="xhr",fieldName:g="file",headers:x,extraFormData:h,autoRetryTimes:v=0,autoRetryDelayMs:b=800,selectionOnly:y=!1,className:j,emptyTitle:S="点击或拖拽文件到此处",emptyHint:C="支持上传文件",onFilesChange:w,onUploadSuccess:N,onUploadError:k,onValidationError:T}=e,E=r.useId(),R=r.useRef(null),A=r.useRef(new Map),M=r.useRef(new Map),I=r.useRef([]),[O,P]=r.useState(!1),[_,L]=r.useState([]),D=r.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);r.useEffect(()=>{I.current=_,null==w||w(_)},[_,w]),r.useEffect(()=>()=>{for(let e of A.current.values())e.abort();for(let e of M.current.values())e.abort();for(let e of I.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let U=r.useCallback((e,t)=>{L(r=>r.map(r=>r.id===e?{...r,...t}:r))},[]),B=r.useCallback(async(e,t)=>{let r=I.current.find(t=>t.id===e);if(!r||c)return;U(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let n=new FormData;if(h)for(let[e,t]of Object.entries(h))n.append(e,t);n.append(g,r.file);try{let t="";if("fetch"===m){let r=new AbortController;M.current.set(e,r);let a=await fetch(i,{method:f,headers:x,body:n,signal:r.signal}),l=await a.text();try{t=l?JSON.parse(l):""}catch(e){t=l}if(!a.ok)throw Error("上传失败:".concat(a.status," ").concat(a.statusText))}else t=await new Promise((t,r)=>{let a=new XMLHttpRequest;if(A.current.set(e,a),a.open(f,i,!0),x)for(let[e,t]of Object.entries(x))a.setRequestHeader(e,t);a.upload.onprogress=t=>{if(!t.lengthComputable)return;let r=Math.min(100,Math.round(t.loaded/t.total*100));U(e,{progress:r})},a.onerror=()=>r(Error("网络异常,上传失败")),a.onabort=()=>r(Error("__ABORTED__")),a.onload=()=>{a.status>=200&&a.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(a)):r(Error("上传失败:".concat(a.status," ").concat(a.statusText)))},a.send(n)});U(e,{status:"success",progress:100,error:""});let r=I.current.find(t=>t.id===e);r&&(null==N||N(r,t))}catch(a){let r=a instanceof Error?a.message:String(a);if("__ABORTED__"===r)return void U(e,{status:"selected",progress:0,error:""});if(t<v){U(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(v,")")}),await new Promise(e=>window.setTimeout(e,b)),await B(e,t+1);return}U(e,{status:"error",error:r});let n=I.current.find(t=>t.id===e);n&&(null==k||k(n,r))}finally{A.current.delete(e),M.current.delete(e)}},[b,v,c,h,g,x,f,k,N,m,U,i]),z=r.useCallback(e=>{B(e,0)},[B]),F=r.useCallback(e=>{var t,r;null==(t=A.current.get(e))||t.abort(),null==(r=M.current.get(e))||r.abort()},[]),W=r.useCallback(()=>{for(let e of I.current)("selected"===e.status||"error"===e.status)&&z(e.id)},[z]),V=r.useCallback(e=>{if(c||!e.length)return;let t=new Set(I.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),r=[];for(let n of e){let e="".concat(n.name,"::").concat(n.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let r=e.name.toLowerCase(),n=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?r.endsWith(e):e.endsWith("/*")?n.startsWith("".concat(e.slice(0,-1))):n===e)}(n,D)){null==T||T("文件类型不支持:".concat(n.name));continue}if(n.size>u){null==T||T("文件过大(最大 ".concat(s(u),"):").concat(n.name));continue}t.add(e),r.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:n,status:"selected",progress:0,error:"",retryCount:0,previewUrl:n.type.startsWith("image/")?URL.createObjectURL(n):""})}}if(!r.length)return;let n=d?[...I.current,...r]:[r[r.length-1]];if(!d)for(let e of I.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(L(n),p&&!y)for(let e of r)z(e.id)},[D,p,c,u,d,T,y,z]),H=r.useCallback(e=>{let t=e.target.files;t&&(V(Array.from(t)),e.target.value="")},[V]),K=r.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),P(!1),c||V(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[V,c]);return(0,t.jsxs)("div",{className:(0,a.cn)("flex min-h-0 w-full flex-col gap-3",j),children:[(0,t.jsx)("input",{ref:R,id:E,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:H}),(0,t.jsxs)("label",{htmlFor:E,onDragOver:e=>{e.preventDefault(),c||P(!0)},onDragLeave:e=>{e.preventDefault(),P(!1)},onDrop:K,className:(0,a.cn)("flex min-h-[124px] cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-[var(--ds-color-border-default)] px-4 py-6 text-center transition-colors hover:border-[var(--ds-color-border-hover)] hover:bg-[var(--ds-color-surface-main-tint)]",O&&"bg-[var(--ds-color-accent)]/5 border-[var(--ds-color-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(n.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:S}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:C})]}),_.length?(0,t.jsx)("div",{className:"space-y-2",children:_.map(e=>(0,t.jsx)("div",{className:"rounded-md border border-[var(--ds-color-border-default)] p-2.5",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:s(e.file.size)}),e.previewUrl?(0,t.jsx)("img",{src:e.previewUrl,alt:e.file.name,className:"mt-2 h-14 w-14 rounded object-cover"}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsx)("div",{className:"mt-2 h-1.5 w-full overflow-hidden rounded bg-[var(--ds-color-surface-main-tint)]",children:(0,t.jsx)("div",{className:"h-full bg-[var(--ds-color-accent)] transition-all",style:{width:"".concat(e.progress,"%")}})}):null,"error"===e.status?(0,t.jsx)("div",{className:"mt-1 text-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),y?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(n.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-color-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(l.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>z(e.id),children:["error"===e.status?(0,t.jsx)(n.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(l.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(n.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!y&&!p&&_.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(l.Button,{type:"button",size:"sm",onClick:W,disabled:c,children:"上传"})}):null]})}var o=e.i(76639),c=e.i(13354),d=e.i(29250);function u(e){let{open:n,onOpenChange:a,title:s,description:u,uploadUrl:p,resetKey:f}=e,[m,g]=(0,r.useState)(!1),[x,h]=(0,r.useState)(null),v=(0,r.useCallback)(()=>{a(!1),h(null)},[a]),b=(0,r.useCallback)(async()=>{if(!x)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",x),g(!0);try{let t=await (0,d.bridgeFetch)(p,{method:"POST",body:e}),r=Number(t.imported||0),n=Number(t.overwritten||0),a=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(r,",覆盖 ").concat(n)+(a>0?",拒绝 ".concat(a):"")),v()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{g(!1)}},[v,x,p]);return(0,t.jsx)(o.Dialog,{open:n,onOpenChange:e=>{a(e),e||h(null)},children:(0,t.jsxs)(o.DialogContent,{className:"flex min-h-[320px] max-w-[560px] flex-col",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(o.DialogTitle,{children:s}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:v,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:p,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:m,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,r;h(null!=(r=null==(t=e[0])?void 0:t.file)?r:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(n?"open":"closed","-").concat(null!=f?f:p)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(l.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:v,children:"取消"}),(0,t.jsx)(l.Button,{type:"button",size:"lg",variant:"default",disabled:m||null==x,onClick:()=>void b(),children:m?"导入中…":"确定"})]})]})]})})}},98183,(e,t,r)=>{"use strict";function n(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function a(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function l(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,a(e));else t.set(r,a(n));return t}function s(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];for(let t of r){for(let r of t.keys())e.delete(r);for(let[r,n]of t.entries())e.append(r,n)}return e}Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{assign:function(){return s},searchParamsToUrlQuery:function(){return n},urlQueryToSearchParams:function(){return l}})},95057,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{formatUrl:function(){return l},formatWithValidation:function(){return i},urlObjectKeys:function(){return s}});let n=e.r(90809)._(e.r(98183)),a=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,l=e.protocol||"",s=e.pathname||"",i=e.hash||"",o=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(c+=":"+e.port)),o&&"object"==typeof o&&(o=String(n.urlQueryToSearchParams(o)));let d=e.search||o&&"?"+o||"";return l&&!l.endsWith(":")&&(l+=":"),e.slashes||(!l||a.test(l))&&!1!==c?(c="//"+(c||""),s&&"/"!==s[0]&&(s="/"+s)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),d&&"?"!==d[0]&&(d="?"+d),""+l+c+(s=s.replace(/[?#]/g,encodeURIComponent))+(d=d.replace("#","%23"))+i}let s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function i(e){return l(e)}},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{DecodeError:function(){return g},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return v},NormalizeError:function(){return x},PageNotFoundError:function(){return h},SP:function(){return f},ST:function(){return m},WEB_VITALS:function(){return n},execOnce:function(){return a},getDisplayName:function(){return c},getLocationOrigin:function(){return i},getURL:function(){return o},isAbsoluteUrl:function(){return s},isResSent:function(){return d},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return u},stringifyError:function(){return y}});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function a(e){let t,r=!1;return function(){for(var n=arguments.length,a=Array(n),l=0;l<n;l++)a[l]=arguments[l];return r||(r=!0,t=e(...a)),t}}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,s=e=>l.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function o(){let{href:e}=window.location,t=i();return e.substring(t.length)}function c(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function d(e){return e.finished||e.headersSent}function u(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&d(r))return n;if(!n)throw Object.defineProperty(Error('"'+c(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let f="undefined"!=typeof performance,m=f&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class x extends Error{}class h extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class v extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function y(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return l}});let n=e.r(18967),a=e.r(52817);function l(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{default:function(){return x},useLinkStatus:function(){return v}});let n=e.r(90809),a=e.r(18050),l=n._(e.r(71645)),s=e.r(95057),i=e.r(8372),o=e.r(18581),c=e.r(18967),d=e.r(84395);e.r(33525);let u=e.r(91949),p=e.r(73668),f=e.r(99781);e.r(84508);let m=e.r(65165);function g(e){return"string"==typeof e?e:(0,s.formatUrl)(e)}function x(e){var t;let r,n,s,[x,v]=(0,l.useOptimistic)(u.IDLE_LINK_STATUS),b=(0,l.useRef)(null),{href:y,as:j,children:S,prefetch:C=null,passHref:w,replace:N,shallow:k,scroll:T,onClick:E,onMouseEnter:R,onTouchStart:A,legacyBehavior:M=!1,onNavigate:I,ref:O,unstable_dynamicOnHover:P,..._}=e;r=S,M&&("string"==typeof r||"number"==typeof r)&&(r=(0,a.jsx)("a",{children:r}));let L=l.default.useContext(i.AppRouterContext),D=!1!==C,U=!1!==C?null===(t=C)||"auto"===t?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,{href:B,as:z}=l.default.useMemo(()=>{let e=g(y);return{href:e,as:j?g(j):e}},[y,j]);M&&(n=l.default.Children.only(r));let F=M?n&&"object"==typeof n&&n.ref:O,W=l.default.useCallback(e=>(null!==L&&(b.current=(0,u.mountLinkInstance)(e,B,L,U,D,v)),()=>{b.current&&((0,u.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,u.unmountPrefetchableInstance)(e)}),[D,B,L,U,v]),V={ref:(0,o.useMergedRef)(W,F),onClick(e){M||"function"!=typeof E||E(e),M&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),L&&(e.defaultPrevented||function(e,t,r,n,a,s,i){let{nodeName:o}=e.currentTarget;if(!("A"===o.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,p.isLocalURL)(t)){a&&(e.preventDefault(),location.replace(t));return}if(e.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}l.default.startTransition(()=>{(0,f.dispatchNavigateAction)(r||t,a?"replace":"push",null==s||s,n.current)})}}(e,B,z,b,N,T,I))},onMouseEnter(e){M||"function"!=typeof R||R(e),M&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),L&&D&&(0,u.onNavigationIntent)(e.currentTarget,!0===P)},onTouchStart:function(e){M||"function"!=typeof A||A(e),M&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),L&&D&&(0,u.onNavigationIntent)(e.currentTarget,!0===P)}};return(0,c.isAbsoluteUrl)(z)?V.href=z:M&&!w&&("a"!==n.type||"href"in n.props)||(V.href=(0,d.addBasePath)(z)),s=M?l.default.cloneElement(n,V):(0,a.jsx)("a",{..._,...V,children:r}),(0,a.jsx)(h.Provider,{value:x,children:s})}let h=(0,l.createContext)(u.IDLE_LINK_STATUS),v=()=>(0,l.useContext)(h);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},36589,e=>{"use strict";e.s(["HoverCard",()=>eg,"HoverCardContent",()=>eh,"HoverCardTrigger",()=>ex],36589);var t=e.i(18050);e.s(["Arrow",()=>ea,"Backdrop",()=>es,"Handle",()=>eu,"Popup",()=>en,"Portal",()=>L,"Positioner",()=>X,"Root",()=>I,"Trigger",()=>V,"Viewport",()=>ed,"createHandle",()=>ep],44475),e.s([],38208),e.i(38208),e.i(47167);var r=e.i(71645),n=e.i(3851),a=e.i(17514),l=e.i(977),s=e.i(58509),i=e.i(33605),o=e.i(51665),c=e.i(67805);let d=r.createContext(void 0);function u(e){let t=r.useContext(d);if(void 0===t&&!e)throw Error((0,c.default)(50));return t}var p=e.i(31888),f=e.i(71403),m=e.i(99749),g=e.i(74080),x=e.i(83921),h=e.i(98263),v=e.i(628),b=e.i(69375),y=e.i(58642),j=e.i(29315);function S(e,t,r,n){return{left:e,top:t,right:r,bottom:n,x:e,y:t,width:r-e,height:n-t}}function C(e){let t,r=[],n=1/0,a=1/0,l=-1/0,s=-1/0;for(let i of Array.from(e).sort((e,t)=>e.top-t.top)){if(n=Math.min(n,i.left),a=Math.min(a,i.top),l=Math.max(l,i.right),s=Math.max(s,i.bottom),!t||i.top-t.top>t.height/2)r.push({left:i.left,top:i.top,right:i.right,bottom:i.bottom,width:i.width,height:i.height});else{let e=r[r.length-1];e.left=Math.min(e.left,i.left),e.right=Math.max(e.right,i.right),e.bottom=Math.max(e.bottom,i.bottom),e.width=e.right-e.left,e.height=e.bottom-e.top}t=i}return{lines:r,fallback:S(n,a,l,s)}}function w(e,t,r){return e.findIndex(e=>t>e.left-2&&t<e.right+2&&r>e.top-2&&r<e.bottom+2)}function N(e){return S(e.left,e.top,e.right,e.bottom)}function k(e,t,r,n){let a=function(e,t,r){let{lines:n}=C(e.getClientRects());if(n.length<2)return;let a=w(n,t,r);return{x:t,y:r,lineIndex:-1===a?void 0:a,element:e}}(t,r,n);return e.current=a,a}let T={...v.popupStoreSelectors,instantType:(0,x.createSelector)(e=>e.instantType),hasViewport:(0,x.createSelector)(e=>e.hasViewport)};class E extends h.ReactStore{static useStore(e,t){return(0,y.usePopupStore)(e,(e,r)=>new E(t,e,r)).store}constructor(e,t,n=!1){let a=new b.PopupTriggerMap,l={...(0,v.createInitialPopupStoreState)(),instantType:void 0,hasViewport:!1,...e};l.floatingRootContext=(0,v.createPopupFloatingRootContext)(a,t,n),super(l,{popupRef:r.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:a,closeDelayRef:{current:300},inlineRectCoordsRef:{current:void 0}},T),(0,m._)(this,"setOpen",(e,t)=>{var r,n,a;let l=t.reason,s=l===f.REASONS.triggerHover,i=e&&l===f.REASONS.triggerFocus,o=!e&&(l===f.REASONS.triggerPress||l===f.REASONS.escapeKey);if(t.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},null==(r=(n=this.context).onOpenChange)||r.call(n,e,t),t.isCanceled)return;let c=t.event;e&&s&&t.trigger&&"clientX"in c&&"clientY"in c&&(null==(a=this.context.inlineRectCoordsRef.current)?void 0:a.element)!==t.trigger&&k(this.context.inlineRectCoordsRef,t.trigger,c.clientX,c.clientY),this.state.floatingRootContext.dispatchOpenChange(e,t);let d=()=>{let r={open:e};i?r.instantType="focus":o?r.instantType="dismiss":l===f.REASONS.triggerHover&&(r.instantType=void 0),(0,y.setOpenTriggerState)(r,e,t.trigger),this.update(r)};s?g.flushSync(d):d()})}}var R=e.i(19805);function A(e){let{open:n,defaultOpen:a=!1,onOpenChange:i,onOpenChangeComplete:o,actionsRef:c,handle:u,triggerId:m,defaultTriggerId:g=null,children:x}=e,h=E.useStore(null==u?void 0:u.store,{open:a,openProp:n,activeTriggerId:g,triggerIdProp:m});(0,s.useOnFirstRender)(()=>{void 0===n&&!1===h.state.open&&!0===a&&h.update({open:!0,activeTriggerId:g})}),h.useControlledProp("openProp",n),h.useControlledProp("triggerIdProp",m),h.useContextCallback("onOpenChange",i),h.useContextCallback("onOpenChangeComplete",o);let v=h.useState("open"),b=h.useState("activeTriggerId"),j=h.useState("mounted"),S=h.useState("payload");(0,y.useImplicitActiveTrigger)(h);let{forceUnmount:C}=(0,y.useOpenStateTransitions)(v,h,()=>{h.context.inlineRectCoordsRef.current=void 0});(0,l.useIsoLayoutEffect)(()=>{v&&null==b&&h.set("payload",void 0)},[h,b,v]);let w=r.useCallback(()=>{h.setOpen(!1,(0,p.createChangeEventDetails)(f.REASONS.imperativeAction))},[h]);r.useImperativeHandle(c,()=>({unmount:C,close:w}),[C,w]);let N=v||j;return(0,t.jsxs)(d.Provider,{value:h,children:[N&&(0,t.jsx)(M,{store:h}),"function"==typeof x?x({payload:S}):x]})}function M(e){var t,n;let{store:l}=e,s=l.useState("floatingRootContext"),o=(0,i.useDismiss)(s),c=null!=(t=o.reference)?t:a.EMPTY_OBJECT,d=null!=(n=o.trigger)?n:a.EMPTY_OBJECT,u=r.useMemo(()=>(0,R.mergeProps)(y.FOCUSABLE_POPUP_PROPS,o.floating),[o.floating]);return(0,y.usePopupInteractionProps)(l,{activeTriggerProps:c,inactiveTriggerProps:d,popupProps:u}),null}let I=(0,n.fastComponent)(function(e){return u(!0)?(0,t.jsx)(A,{...e}):(0,t.jsx)(o.FloatingTree,{children:(0,t.jsx)(A,{...e})})}),O=r.createContext(void 0);var P=e.i(37692);let _=r.forwardRef(function(e,n){let{children:a,container:l,className:s,render:i,style:o,...c}=e,{portalNode:d,portalSubtree:u}=(0,P.useFloatingPortalNode)({container:l,ref:n,componentProps:e,elementProps:c});return u||d?(0,t.jsxs)(r.Fragment,{children:[u,d&&g.createPortal(a,d)]}):null}),L=r.forwardRef(function(e,r){let{keepMounted:n=!1,...a}=e;return u().useState("mounted")||n?(0,t.jsx)(O.Provider,{value:n,children:(0,t.jsx)(_,{ref:r,...a})}):null});var D=e.i(83590),U=e.i(69095),B=e.i(86790),z=e.i(37287),F=e.i(25708),W=e.i(97254);let V=(0,n.fastComponentRef)(function(e,t){var n;let{render:a,className:s,delay:i,closeDelay:o,id:d,payload:p,handle:f,style:m,...g}=e,x=u(!0),h=null!=(n=null==f?void 0:f.store)?n:x;if(!h)throw Error((0,c.default)(89));let v=(0,B.useBaseUiId)(d),b=h.useState("isTriggerActive",v),j=h.useState("isOpenedByTrigger",v),S=h.useState("floatingRootContext"),C=h.context.inlineRectCoordsRef,w=r.useRef(null),N=null!=i?i:600,T=null!=o?o:300,{registerTrigger:E,isMountedByThisTrigger:R}=(0,y.useTriggerDataForwarding)(v,w,h,{payload:p});(0,l.useIsoLayoutEffect)(()=>{R&&(h.context.closeDelayRef.current=T)},[h,R,T]);let A=(0,W.useHoverReferenceInteraction)(S,{mouseOnly:!0,move:!1,handleClose:(0,z.safePolygon)(),delay:()=>({open:N,close:T}),triggerElementRef:w,isActiveTrigger:b,isClosing:()=>"ending"===h.select("transitionStatus")}),M=(0,F.useFocus)(S,{delay:N}),I=h.useState("triggerProps",R),O=function(e,t){function r(t){k(e,t.currentTarget,t.clientX,t.clientY)}return{onFocus(){e.current=void 0},onMouseEnter:r,onMouseMove:function(e){t||r(e)}}}(C,j);return(0,U.useRenderElement)("a",e,{state:{open:j},ref:[t,E,w],props:[A,M.reference,I,O,{id:v},g],stateAttributesMapping:D.triggerOpenStateMapping})}),H=r.createContext(void 0);function K(){let e=r.useContext(H);if(void 0===e)throw Error((0,c.default)(49));return e}var J=e.i(56590),Y=e.i(5066),G=e.i(67569),q=e.i(44380);let X=r.forwardRef(function(e,n){let{render:a,className:s,anchor:i,positionMethod:d="absolute",side:p="bottom",align:f="center",sideOffset:m=0,alignOffset:g=0,collisionBoundary:x="clipping-ancestors",collisionPadding:h=5,arrowPadding:v=5,sticky:b=!1,disableAnchorTracking:y=!1,collisionAvoidance:k=Y.POPUP_COLLISION_AVOIDANCE,style:T,...E}=e,R=u(),A=function(){let e=r.useContext(O);if(void 0===e)throw Error((0,c.default)(48));return e}(),M=(0,o.useFloatingNodeId)(),I=R.useState("open"),P=R.useState("mounted"),_=R.useState("floatingRootContext"),L=R.useState("instantType"),D=R.useState("transitionStatus"),U=R.useState("hasViewport"),B=R.context.inlineRectCoordsRef,z=(0,J.useAnchorPositioning)({anchor:i,floatingRootContext:_,positionMethod:d,mounted:P,side:p,sideOffset:m,align:f,alignOffset:g,arrowPadding:v,collisionBoundary:x,collisionPadding:h,sticky:b,disableAnchorTracking:y,keepMounted:A,nodeId:M,collisionAvoidance:k,adaptiveOrigin:U?G.adaptiveOrigin:void 0,inline:{name:"inline",async fn(e){let t=e.elements.reference;if("function"!=typeof(null==t?void 0:t.getClientRects))return{};let r="contextElement"in t&&t.contextElement?t.contextElement:(0,j.isElement)(t)?t:void 0,n=B.current,a=(null==n?void 0:n.element)===t||(null==n?void 0:n.element)===r?n:void 0,l=function(e,t,r){let{lines:n,fallback:a}=C(e.getClientRects());if(n.length<2)return null;let l=null==r?void 0:r.x,s=null==r?void 0:r.y,i=t[0];if((null==r?void 0:r.lineIndex)!=null&&n[r.lineIndex])return N(n[r.lineIndex]);if(null!=l&&null!=s){let e=w(n,l,s);if(-1!==e)return N(n[e])}if(2===n.length&&n[0].left>n[1].right&&null!=l&&null!=s)return a;if("t"===i||"b"===i){let e=n[0],t=n[n.length-1],r="t"===i?e:t;return S(r.left,e.top,r.right,t.bottom)}let o="l"===i,c=n[0].left,d=n[0].right,u=o?1/0:-1/0,p=n[0],f=n[0];for(let e of n){c=Math.min(c,e.left),d=Math.max(d,e.right);let t=o?e.left:e.right;o&&t<u||!o&&t>u?(u=t,p=e,f=e):t===u&&(f=e)}return S(c,p.top,d,f.bottom)}(t,e.placement,a);if(!l||"function"!=typeof e.platform.getElementRects)return{};let s=await e.platform.getElementRects({reference:{contextElement:r,getBoundingClientRect:()=>l},floating:e.elements.floating,strategy:e.strategy});return e.rects.reference.x===s.reference.x&&e.rects.reference.y===s.reference.y&&e.rects.reference.width===s.reference.width&&e.rects.reference.height===s.reference.height?{}:{reset:{rects:s}}}}}),F=z.update;(0,l.useIsoLayoutEffect)(()=>{I&&P&&F()},[I,P,F]);let W={open:I,side:z.side,align:z.align,anchorHidden:z.anchorHidden,instant:L},V=(0,q.usePositioner)(e,W,{styles:z.positionerStyles,transitionStatus:D,props:E,refs:[n,R.useStateSetter("positionerElement")],hidden:!P,inert:!I});return(0,t.jsx)(H.Provider,{value:z,children:(0,t.jsx)(o.FloatingNode,{id:M,children:V})})});var Z=e.i(76477),Q=e.i(14060),$=e.i(23715),ee=e.i(18847),et=e.i(61896);let er={...D.popupStateMapping,...Q.transitionStatusMapping},en=r.forwardRef(function(e,t){let{className:r,render:n,style:a,...l}=e,s=u(),{side:i,align:o}=K(),c=s.useState("open"),d=s.useState("instantType"),p=s.useState("transitionStatus"),f=s.useState("popupProps"),m=s.useState("floatingRootContext");(0,$.useOpenChangeComplete)({open:c,ref:s.context.popupRef,onComplete(){if(c){var e,t;null==(e=(t=s.context).onOpenChangeComplete)||e.call(t,!0)}}});let g=(0,Z.useStableCallback)(()=>s.context.closeDelayRef.current);return(0,et.useHoverFloatingInteraction)(m,{closeDelay:g}),(0,U.useRenderElement)("div",e,{state:{open:c,side:i,align:o,instant:d,transitionStatus:p},ref:[t,s.context.popupRef,s.useStateSetter("popupElement")],props:[f,(0,ee.getDisabledMountTransitionStyles)(p),l],stateAttributesMapping:er})}),ea=r.forwardRef(function(e,t){let{render:r,className:n,style:a,...l}=e,s=u(),{arrowRef:i,side:o,align:c,arrowUncentered:d,arrowStyles:p}=K(),f=s.useState("open");return(0,U.useRenderElement)("div",e,{state:{open:f,side:o,align:c,uncentered:d},ref:[i,t],props:[{style:p,"aria-hidden":!0},l],stateAttributesMapping:D.popupStateMapping})}),el={...D.popupStateMapping,...Q.transitionStatusMapping},es=r.forwardRef(function(e,t){let{render:r,className:n,style:a,...l}=e,s=u(),i=s.useState("open"),o=s.useState("mounted"),c=s.useState("transitionStatus");return(0,U.useRenderElement)("div",e,{state:{open:i,transitionStatus:c},ref:[t],props:[{role:"presentation",hidden:!o,style:{pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none"}},l],stateAttributesMapping:el})}),ei=function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e}({});var eo=e.i(12666);let ec={activationDirection:e=>e?{"data-activation-direction":e}:null},ed=r.forwardRef(function(e,t){let{render:r,className:n,style:a,children:l,...s}=e,i=u(),o=K(),c=i.useState("instantType"),{children:d,state:p}=(0,eo.usePopupViewport)({store:i,side:o.side,cssVars:ei,children:l}),f={activationDirection:p.activationDirection,transitioning:p.transitioning,instant:c};return(0,U.useRenderElement)("div",e,{state:f,ref:t,props:[s,{children:d}],stateAttributesMapping:ec})});class eu{open(e){let t=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!t)throw Error((0,c.default)(88,e));this.store.setOpen(!0,(0,p.createChangeEventDetails)(f.REASONS.imperativeAction,void 0,t))}close(){this.store.setOpen(!1,(0,p.createChangeEventDetails)(f.REASONS.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}constructor(){this.store=new E}}function ep(){return new eu}var ef=e.i(44475),ef=ef,em=e.i(75157);function eg(e){let{...r}=e;return(0,t.jsx)(ef.Root,{"data-slot":"hover-card",...r})}function ex(e){let{...r}=e;return(0,t.jsx)(ef.Trigger,{"data-slot":"hover-card-trigger",...r})}function eh(e){let{className:r,side:n="bottom",sideOffset:a=8,align:l="center",alignOffset:s=0,style:i,...o}=e;return(0,t.jsx)(ef.Portal,{"data-slot":"hover-card-portal",children:(0,t.jsx)(ef.Positioner,{align:l,alignOffset:s,side:n,sideOffset:a,positionMethod:"fixed",className:"isolate z-[10050]",children:(0,t.jsx)(ef.Popup,{"data-slot":"hover-card-content",style:{boxShadow:"var(--shadow-md)",...i},className:(0,em.cn)("z-[10050] box-border w-[220px] rounded-lg border border-solid border-[var(--ds-color-border-default)] bg-[var(--surface-1)] p-[16px] text-[var(--ds-text)] outline-none duration-100","origin-(--transform-origin) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",r),...o})})})}},42307,e=>{"use strict";e.s(["GeelibManageView",()=>n]);var t=e.i(18050),r=e.i(28370);function n(){return(0,t.jsx)(r.AgentEnvGroupSettingsView,{group:"geelib"})}},20378,e=>{"use strict";e.s(["GitManageView",()=>n]);var t=e.i(18050),r=e.i(28370);function n(){return(0,t.jsx)(r.AgentEnvGroupSettingsView,{group:"git"})}},3862,e=>{"use strict";e.s(["ImManageView",()=>n]);var t=e.i(18050),r=e.i(28370);function n(){return(0,t.jsx)(r.AgentEnvGroupSettingsView,{group:"tutui"})}},21081,e=>{"use strict";e.s(["TerminalManageView",()=>i],21081);var t=e.i(18050),r=e.i(71645),n=e.i(65934),a=e.i(2839),l=e.i(36845),s=e.i(75157);function i(){let[i,o]=(0,r.useState)(null),c=(0,n.useAppStore)(e=>e.wsUrl),d=(0,n.useAppStore)(e=>e.apiBase),u=(0,n.useAppStore)(e=>e.agentId),p=(0,n.useAppStore)(e=>e.agentSelectionResolved)&&!!u.trim(),{status:f,message:m}=function(t){let{mountEl:n,wsUrl:a,apiBase:s,agentId:i,enabled:o}=t,[c,d]=(0,r.useState)({status:"idle",message:""});return(0,r.useEffect)(()=>{if(!o||!i.trim()||!n)return void d({status:"idle",message:""});let t=!1,r=null,c=null,u=null,p=null,f=null,m=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";t||d({status:e,message:r})},g=()=>{r&&r.readyState===WebSocket.OPEN&&p&&r.send(JSON.stringify({type:"resize",cols:p.cols,rows:p.rows}))},x=()=>{if(c&&(c.disconnect(),c=null),u){try{u.dispose()}catch(e){}u=null}if(r){try{r.close()}catch(e){}r=null}if(p){try{p.dispose()}catch(e){}p=null}f=null,n.innerHTML=""};return(async()=>{m("connecting","连接中…");try{let[{Terminal:o},{FitAddon:d}]=await Promise.all([e.A(37138),e.A(59439)]);if(t)return;x();let h=new o({cursorBlink:!0,fontSize:14,fontFamily:'Menlo, Monaco, "Courier New", monospace',theme:{background:"#1a1a1c",foreground:"#e8e8ea",cursor:"#0a84ff",selectionBackground:"rgba(10, 132, 255, 0.28)"}}),v=new d;h.loadAddon(v),h.open(n),v.fit(),p=h,f=v;let b=new WebSocket((0,l.buildTerminalWsUrl)(a,s,i));b.binaryType="arraybuffer",r=b,b.onopen=()=>{t||(m("connected",""),v.fit(),g(),h.focus())},b.onmessage=e=>{if(!t){if("string"==typeof e.data){try{let t=JSON.parse(e.data);if("exit"===t.type){var r;h.writeln("\r\n[shell 已退出,退出码: ".concat(String(null!=(r=t.code)?r:""),"]")),m("exited","shell 已退出")}else"error"===t.type&&m("error",t.message||"终端错误")}catch(e){}return}e.data instanceof ArrayBuffer&&h.write(new Uint8Array(e.data))}},b.onerror=()=>{t||m("error","WebSocket 连接失败")},b.onclose=()=>{t||m("disconnected","连接已断开")},u=h.onData(e=>{r&&r.readyState===WebSocket.OPEN&&r.send(new TextEncoder().encode(e))}),"undefined"!=typeof ResizeObserver&&(c=new ResizeObserver(()=>{f&&p&&(f.fit(),g())})).observe(n)}catch(e){if(t)return;m("error",e instanceof Error?e.message:"终端组件加载失败")}})(),()=>{t=!0,x()}},[n,a,s,i,o]),c}({mountEl:i,wsUrl:c,apiBase:d,agentId:u,enabled:p}),g=m.trim().length>0;return(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl",style:{backgroundColor:"#1a1a1c"},children:(0,t.jsx)("div",{ref:o,className:"terminal-mount min-h-0 flex-1 overflow-hidden p-2 [&_.xterm]:h-full","aria-label":"命令行终端"})}),g?(0,t.jsx)("p",{className:(0,s.cn)("mt-2 shrink-0 px-1 text-sm","error"===f?"text-red-600":"text-[var(--ds-muted)]"),role:"status",children:m}):null]}):(0,t.jsx)(a.Loading,{text:"连接中…",className:"min-h-[240px]"})})}},67585,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"BailoutToCSR",{enumerable:!0,get:function(){return a}});let n=e.r(32061);function a(e){let{reason:t,children:r}=e;if("undefined"==typeof window)throw Object.defineProperty(new n.BailoutToCSRError(t),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r}},9885,(e,t,r)=>{"use strict";function n(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"encodeURIPath",{enumerable:!0,get:function(){return n}})},52157,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"PreloadChunks",{enumerable:!0,get:function(){return i}});let n=e.r(18050),a=e.r(74080),l=e.r(63599),s=e.r(9885);function i(e){let{moduleIds:t}=e;if("undefined"!=typeof window)return null;let r=l.workAsyncStorage.getStore();if(void 0===r)return null;let i=[];if(r.reactLoadableManifest&&t){let e=r.reactLoadableManifest;for(let r of t){if(!e[r])continue;let t=e[r].files;i.push(...t)}}return 0===i.length?null:(0,n.jsx)(n.Fragment,{children:i.map(e=>{let t=r.assetPrefix+"/_next/"+(0,s.encodeURIPath)(e);return e.endsWith(".css")?(0,n.jsx)("link",{precedence:"dynamic",href:t,rel:"stylesheet",as:"style"},e):((0,a.preload)(t,{as:"script",fetchPriority:"low"}),null)})})}},69093,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return c}});let n=e.r(18050),a=e.r(71645),l=e.r(67585),s=e.r(52157);function i(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},c=function(e){let t={...o,...e},r=(0,a.lazy)(()=>t.loader().then(i)),c=t.loading;function d(e){let i=c?(0,n.jsx)(c,{isLoading:!0,pastDelay:!0,error:null}):null,o=!t.ssr||!!t.loading,d=o?a.Suspense:a.Fragment,u=t.ssr?(0,n.jsxs)(n.Fragment,{children:["undefined"==typeof window?(0,n.jsx)(s.PreloadChunks,{moduleIds:t.modules}):null,(0,n.jsx)(r,{...e})]}):(0,n.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,n.jsx)(r,{...e})});return(0,n.jsx)(d,{...o?{fallback:i}:{},children:u})}return d.displayName="LoadableComponent",d}},70703,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return a}});let n=e.r(55682)._(e.r(69093));function a(e,t){var r;let a={};"function"==typeof e&&(a.loader=e);let l={...a,...t};return(0,n.default)({...l,modules:null==(r=l.loadableGenerated)?void 0:r.modules})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},82787,e=>{"use strict";e.s(["getManageRoute",()=>r],82787);var t=e.i(35064);function r(e){return(0,t.getManageRouteMeta)(e)}e.i(97249),e.i(70703),e.i(71645),e.i(68665),e.i(18050)},19573,e=>{"use strict";e.s(["ToolsManageView",()=>R],19573);var t=e.i(18050),r=e.i(71645),n=e.i(65934),a=e.i(87243),l=e.i(13354),s=e.i(50711),i=e.i(19455),o=e.i(2839),c=e.i(94055),d=e.i(94197),u=e.i(92715),p=e.i(36413),f=e.i(72064),m=e.i(93479);function g(e){let{items:n,saveBusy:a,onToggle:l,onExport:s,onRemove:i,className:o}=e,[g,x]=(0,r.useState)(""),h=(0,r.useMemo)(()=>n.filter(e=>(function(e,t){var r,n;let a=t.trim().toLowerCase();if(!a)return!0;let l="system"===e.layer?"系统":"agent"===e.layer?"Agent":"";return"".concat(e.name," ").concat(null!=(r=e.label)?r:""," ").concat(null!=(n=e.description)?n:""," ").concat(l).toLowerCase().includes(a)})(e,g)),[n,g]),v=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>{let r=e.label||e.name;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:r}),(0,t.jsx)(p.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})}},{key:"layer",title:"层级",headerClassName:"w-[88px]",cellClassName:"w-[88px] whitespace-nowrap text-[var(--ds-text)]",render:e=>"system"===e.layer?"系统":"agent"===e.layer?"Agent":"-"},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)(c.AccentSwitch,{checked:!!e.enabled,disabled:a,onCheckedChange:t=>l(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>{let r=!0===e.canManage;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(d.IconTooltipButton,{icon:"Download",label:r?"导出":"系统内置工具不可导出",ariaLabel:"导出 ".concat(e.label||e.name),disabled:a||!r,onClick:()=>s(e.name)}),(0,t.jsx)(d.IconTooltipButton,{icon:"Trash2",label:r?"删除":"系统内置工具不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label||e.name),disabled:a||!r,onClick:()=>{i(e.name)}})]})}}],b=g.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(m.Input,{type:"search",value:g,onChange:e=>x(e.target.value),placeholder:"搜索名称 / 详情 / 层级",className:"h-8 pl-8","aria-label":"搜索工具"}),(0,t.jsx)(f.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(u.AppTable,{rows:h,columns:v,getRowKey:e=>"tools:".concat(e.name),className:o,emptyText:b?"未找到匹配工具":void 0})]})}var x=e.i(36845),h=e.i(53925);function v(e){let{open:r,onOpenChange:n,wsUrl:a,apiBase:l,agent:s}=e;return(0,t.jsx)(h.ResourceImportDialog,{open:r,onOpenChange:n,title:"导入工具 zip",description:"选择一个 zip 文件并导入到 tools-runtime。",uploadUrl:(0,x.buildToolsRuntimeImportUrl)(a,l,s),resetKey:s})}var b=e.i(55242);let y=[["name","稳定工具名,与 agent.json.tools 白名单对应"],["call","工具执行入口"],["inputSchema","Zod schema,定义 LLM 入参"],["description","工具描述,可为 async 函数"],["prompt","返回给模型的使用说明,可为 async 函数"],["mapToolResultToToolResultBlockParam","将执行结果映射为 API tool_result 块"]],j=["包目录位于 tools-runtime/<package-name>/,包名使用 kebab-case","包根目录存在 index.js / index.cjs / index.mjs 之一,宿主不会加载源码 TS","入口导出 Tool 对象,工具 name 稳定且唯一","initWsSession 正确处理 ready / skipped / failed",'agent.json.tools 包含工具名或 "*",且未被 disallowedTools 禁用',"GET /api/tools?agent=<id> 中工具 enabled: true 且 readiness: ready"];function S(e){let{index:r,title:n,children:a,className:l}=e;return(0,t.jsxs)("section",{className:"rounded-xl border border-[var(--ds-color-border-default)] bg-[var(--surface-1)] p-4 ".concat(null!=l?l:""),children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex size-7 shrink-0 items-center justify-center rounded-full bg-[var(--ds-color-accent)] text-base font-semibold text-[var(--surface-1)]",children:r}),(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:n})]}),a]})}function C(e){let{open:r,onOpenChange:n}=e;return(0,t.jsx)(b.AppDialog,{open:r,onOpenChange:n,title:"工具接入说明",width:"max-w-4xl",footer:(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>n(!1),children:"我知道了"}),children:(0,t.jsxs)("div",{className:"flex max-h-[72vh] flex-col gap-4 overflow-y-auto pr-1 text-sm text-[var(--ds-text)]",children:[(0,t.jsx)(S,{index:1,title:"概念",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"bg-[var(--ds-color-accent)]/10 mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg text-[var(--ds-color-accent)]",children:(0,t.jsx)(f.default,{name:"Wrench",size:18})}),(0,t.jsxs)("p",{className:"min-w-0 leading-6 text-[var(--ds-muted)]",children:["Runtime Tool 是磁盘上的独立工具包,放在",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"tools-runtime/<package-name>/"}),"下。宿主与工具包只通过编译入口的导出契约通信,互不 import 对方源码。"]})]})}),(0,t.jsxs)(S,{index:2,title:"存放路径",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-xs leading-5 text-[var(--ds-text)]",children:"<WS_AGENTS_ROOT>/tools-runtime/<package-name>/\n index.cjs # 必选:编译后的单文件入口\n package.json # 可选\n build.ts # 可选\n src/ # 可选,宿主不加载"}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:["默认 WS_AGENTS_ROOT 为项目下的",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:".ws-agents"}),",宿主按",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:".js > .cjs > .mjs"}),"优先级加载入口。agent 层同名包会覆盖 system 层包。"]})]}),(0,t.jsx)(S,{index:3,title:"接入方式",children:(0,t.jsxs)("div",{className:"space-y-3 text-[var(--ds-muted)]",children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"手工放置:"}),"在 .ws-agents/tools-runtime/ 下创建包目录并完成构建,重启会话或触发 reloadDynamicTools。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"Zip 导入:"}),"zip 内必须是单根目录结构,例如 my-tool/index.cjs。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"内置 system 包:"}),"发布到 packages/agent/tools-runtime,用户可用 agent 层同名包覆盖。"]})]})}),(0,t.jsxs)(S,{index:4,title:"包内必须实现的契约",children:[(0,t.jsx)("p",{className:"mt-2 leading-6 text-[var(--ds-muted)]",children:"入口模块需导出至少一个 Tool 对象,可使用 default、tools 数组或命名导出。"}),(0,t.jsx)("div",{className:"mt-3 grid gap-2",children:y.map(e=>{let[r,n]=e;return(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--ds-color-border-default)] bg-[var(--surface-1)] px-3 py-2",children:[(0,t.jsx)("code",{className:"text-base font-semibold text-[var(--ds-color-accent)]",children:r}),(0,t.jsx)("p",{className:"mt-1 text-base leading-5 text-[var(--ds-muted)]",children:n})]},r)})}),(0,t.jsx)("div",{className:"mt-4 rounded-lg border border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] p-3",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["生产包推荐实现",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--surface-1)] px-1.5 py-0.5",children:"initWsSession"}),",返回 ready 才会进入 LLM 工具列表;skipped 或 failed 不会暴露。未实现时默认 ready。"]})})]}),(0,t.jsx)(S,{index:5,title:"最小示例",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["最小包通常包含 package.json、build.ts 和 src/index.ts,构建后在包根目录产出",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"index.cjs"}),"。若 package.json 使用",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"type: module"}),",优先产出 index.cjs,避免 ESM/CJS 冲突。"]})}),(0,t.jsxs)(S,{index:6,title:"在 agent 中启用",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-base leading-5 text-[var(--ds-text)]",children:'{\n "tools": ["HelloTool"]\n}'}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:'"*"'}),"暴露全部已加载且 ready 的 runtime 工具;",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-color-surface-sidebar)] px-1.5 py-0.5",children:"[]"}),"不暴露任何 runtime 工具。MCP 工具由 mcpServers 单独控制。"]})]}),(0,t.jsxs)(S,{index:7,title:"宿主加载流程",children:[(0,t.jsx)("div",{className:"rounded-lg bg-[var(--ds-color-surface-sidebar)] p-3 text-base leading-6 text-[var(--ds-muted)]",children:"discoverRuntimePackages → dynamic import index.* → initWsSession → extractToolsFromModule → agent.json.tools 白名单过滤 → LLM 可见工具列表"}),(0,t.jsx)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:"触发时机包括 WS 会话 init、reloadDynamicTools,以及带 agent 参数的 GET /api/tools。 可通过 CLAUDE_CODE_RUNTIME_TOOLS_ENABLED=0 关闭 runtime 工具。"})]}),(0,t.jsx)(S,{index:8,title:"参考实现",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"schedule-tool:会话级 init、agent 白名单、文件持久化。"}),(0,t.jsx)("p",{children:"git-tool:环境变量驱动、ready / skipped / failed 状态。"}),(0,t.jsx)("p",{children:"code-tool:通过 buildSessionAppend 追加会话上下文。"})]})}),(0,t.jsx)(S,{index:9,title:"验收清单",children:(0,t.jsx)("ul",{className:"grid gap-2",children:j.map(e=>(0,t.jsxs)("li",{className:"flex gap-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)(f.default,{name:"CheckCircle2",size:16,className:"mt-1 shrink-0 text-[var(--ds-color-accent)]"}),(0,t.jsx)("span",{children:e})]},e))})}),(0,t.jsx)(S,{index:10,title:"常见问题",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"放了包但工具不可见:确认已构建 index.*、initWsSession 返回 ready、白名单包含工具名。"}),(0,t.jsx)("p",{children:"installed-list 有但会话 disabled:通常是 init 返回 skipped/failed,或未通过 agent 白名单。"}),(0,t.jsx)("p",{children:"同名工具冲突:agent 层覆盖 system 层;同一层内工具 name 重复时后者会被去重丢弃。"})]})})]})})}var w=e.i(68499),N=e.i(56708),k=e.i(62427);function T(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.name}function E(e){let t=null!=e.packageId?String(e.packageId).trim():"";return!0===e.deletable&&t.length>0}function R(){let e=(0,n.useAppStore)(e=>e.wsUrl),c=(0,n.useAppStore)(e=>e.apiBase),d=(0,n.useAppStore)(e=>e.agentConfig),u=(0,n.useAppStore)(e=>e.patchAgentConfig),{currentAgent:p,loadAgentConfig:m}=(0,a.useSession)(),x=(0,s.usePersistAgentConfigField)("tools"),h=d.tools,[b,y]=(0,r.useState)([]),[j,S]=(0,r.useState)(!1),[R,A]=(0,r.useState)(!1),[M,I]=(0,r.useState)(!1),[O,P]=(0,r.useState)(!1);(0,r.useEffect)(()=>{m()},[m]);let _=(0,r.useCallback)(async(e,t)=>{A(!0);try{await x(e,{silent:t})}finally{A(!1)}},[x]),L=(0,r.useCallback)(async()=>{y([]),S(!0);try{var t;let r=await (0,k.listInstalledTools)(e,c,p());y(null!=(t=r.tools)?t:[])}catch(e){y([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{S(!1)}},[e,c,p]);(0,r.useEffect)(()=>{L()},[L]);let D=(0,r.useCallback)(e=>b.find(t=>t.name===e),[b]),U=(0,r.useMemo)(()=>b.slice().sort((e,t)=>e.name.localeCompare(t.name)).map(e=>(function(e,t){var r;let n=null!=e.packageName?String(e.packageName).trim():"";return{name:e.name,label:(e.displayName&&e.displayName!==e.name?"".concat(e.displayName," · "):"")+e.name,description:null!=(r=e.searchHint)?r:"",enabled:t,packageId:n,canManage:E({deletable:e.deletable,packageId:n}),layer:e.layer}})(e,h.includes(e.name))),[b,h]),B=(0,r.useCallback)(async t=>{let r=D(t);if(!r||!E({deletable:r.deletable,packageId:r.packageName}))return void l.appToast.error("系统内置工具不可删除");if(await (0,w.confirmAlertDialog)({title:"确认删除工具包?",description:"工具名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,k.deleteRuntimeTool)(e,c,p(),T({packageId:r.packageName,name:r.name}));let n=h.filter(e=>e!==t);u({tools:n}),await _(n,!0),await L()}catch(e){l.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[D,e,c,p,h,u,_,L]),z=(0,r.useCallback)(t=>{let r=D(t);if(!r||!E({deletable:r.deletable,packageId:r.packageName}))return void l.appToast.error("系统内置工具不可导出");window.open((0,k.exportRuntimeToolUrl)(e,c,p(),T({packageId:r.packageName,name:r.name})),"_blank","noopener")},[D,e,c,p]),F=(0,r.useCallback)((e,t)=>{let r=t?[...new Set([...h,e])].sort():h.filter(t=>t!==e).sort();u({tools:r}),_(r,!0)},[h,u,_]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)(i.Button,{type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>I(!0),children:[(0,t.jsx)(f.default,{name:"Info",size:16,className:"align-middle"}),"工具说明"]}),(0,t.jsxs)(i.Button,{id:"btnAgentPickerToolImport",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>P(!0),children:[(0,t.jsx)(f.default,{name:"Import",size:16,className:"align-middle"}),"导入自定义工具"]})]})}),j?(0,t.jsx)(o.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(g,{items:U,saveBusy:R,onToggle:F,onExport:z,onRemove:B}),(0,t.jsx)(v,{open:O,onOpenChange:e=>{P(e),e||L()},wsUrl:e,apiBase:c,agent:p()}),(0,t.jsx)(C,{open:M,onOpenChange:I})]})}},37991,e=>{"use strict";e.s(["McpManageView",()=>w],37991);var t=e.i(18050),r=e.i(71645),n=e.i(65934),a=e.i(87243),l=e.i(13354),s=e.i(50711),i=e.i(55242),o=e.i(92715),c=e.i(2839),d=e.i(36413),u=e.i(19455),p=e.i(93479),f=e.i(94055),m=e.i(94197),g=e.i(36845),x=e.i(53925);function h(e){let{open:r,onOpenChange:n,wsUrl:a,apiBase:l,agent:s}=e;return(0,t.jsx)(x.ResourceImportDialog,{open:r,onOpenChange:n,title:"导入 MCP zip",description:"选择一个 zip 文件并导入到 mcp-runtime。",uploadUrl:(0,g.buildMcpRuntimeImportUrl)(a,l,s),resetKey:s})}var v=e.i(62427);function b(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.id}function y(e){let{open:n,onOpenChange:a,itemId:s,source:o,wsUrl:c,apiBase:d,agent:p,onSaved:f}=e,[m,g]=(0,r.useState)(""),[x,h]=(0,r.useState)(!1),[b,y]=(0,r.useState)(!1),j="remote"===o?"remote":"runtime";(0,r.useEffect)(()=>{if(!n||!s.trim())return;let e=!1;return h(!0),g("加载中…"),(0,v.loadRuntimeMcpItemConfig)(c,d,p,s,j).then(t=>{if(e)return;let r=t.overlay;r&&"object"==typeof r&&!Array.isArray(r)?g(JSON.stringify(r,null,2)):g("{}")}).catch(t=>{e||(l.appToast.error("加载 MCP 配置失败:".concat(t instanceof Error?t.message:String(t))),a(!1))}).finally(()=>{e||h(!1)}),()=>{e=!0}},[n,s,c,d,p,j,a]);let S=(0,r.useCallback)(async()=>{let e;if(!s.trim())return;let t=m.trim();try{e=t?JSON.parse(t):{}}catch(e){l.appToast.error("JSON 解析失败:".concat(e instanceof Error?e.message:String(e)));return}if(!e||"object"!=typeof e||Array.isArray(e))return void l.appToast.error("配置必须是 JSON 对象");if("mcpServers"in e&&null!=e.mcpServers)return void l.appToast.error("请填写标准 server 配置(command/args/env),不要嵌套 mcpServers");let r=0===Object.keys(e).length;y(!0);try{r?await (0,v.clearRuntimeMcpItemConfig)(c,d,p,s,j):await (0,v.saveRuntimeMcpItemConfig)(c,d,p,s,j,e),l.appToast.success("MCP 配置已保存"),a(!1),null==f||f()}catch(e){l.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{y(!1)}},[s,m,c,d,p,j,a,f]);return(0,t.jsx)(i.AppDialog,{open:n,onOpenChange:a,title:"编辑 MCP 配置 · ".concat(s),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:b,onClick:()=>a(!1),children:"取消"}),(0,t.jsx)(u.Button,{type:"button",size:"lg",disabled:b||x,onClick:()=>void S(),children:"保存"})]}),children:(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-color-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] p-3 font-mono leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:m,disabled:x,onChange:e=>g(e.target.value)})})}var j=e.i(68499),S=e.i(72064),C=e.i(56708);function w(){let e=(0,n.useAppStore)(e=>e.wsUrl),g=(0,n.useAppStore)(e=>e.apiBase),x=(0,n.useAppStore)(e=>e.agentConfig),w=(0,n.useAppStore)(e=>e.setAgentConfig),{currentAgent:N,loadAgentConfig:k}=(0,a.useSession)(),T=(0,s.usePersistAgentConfigField)("mcpServers"),E=x.mcpServers,R=(0,r.useMemo)(()=>[...E].sort().join("\0"),[E]),[A,M]=(0,r.useState)([]),[I,O]=(0,r.useState)([]),[P,_]=(0,r.useState)(!1),[L,D]=(0,r.useState)(!1),[U,B]=(0,r.useState)(!1),[z,F]=(0,r.useState)(!1),[W,V]=(0,r.useState)(""),[H,K]=(0,r.useState)(!1),[J,Y]=(0,r.useState)(""),[G,q]=(0,r.useState)(),[X,Z]=(0,r.useState)(!1),[Q,$]=(0,r.useState)("");(0,r.useEffect)(()=>{k()},[k]);let ee=(0,r.useCallback)(async(e,t)=>{D(!0);try{await T(e,{silent:t})}finally{D(!1)}},[T]),et=(0,r.useCallback)(e=>A.find(t=>t.id===e),[A]),er=(0,r.useCallback)(e=>{let t=et(e);Y(e),q(null==t?void 0:t.source),Z(!0)},[et]),en=(0,r.useCallback)(async()=>{M([]),_(!0);try{var t;let r=await (0,v.listMcpServers)(e,g,N());M((null!=(t=r.servers)?t:[]).map(e=>{var t,r,n;return{...e,id:e.name,label:e.name,description:null!=(r=null!=(t=e.description)?t:e.source)?r:"",source:null!=(n=e.source)?n:"",installed:!!e.installed,packageId:e.packageId}}))}catch(e){M([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{_(!1)}},[e,g,N]),ea=(0,r.useCallback)(async t=>{var r;let n=et(t),a=null!=(r=null==n?void 0:n.source)?r:"";if("runtime"!==a&&"remote"!==a)return void l.appToast.error("基础MCP不可删除");if(await (0,j.confirmAlertDialog)({title:"确认删除 MCP?",description:"服务器名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{if("remote"===a){let r=await (0,v.loadRemoteMcpJson)(e,g,N()),n={};try{n=JSON.parse(String(r.content||"{}"))}catch(e){n={mcpServers:{}}}(!n.mcpServers||Array.isArray(n.mcpServers)||"object"!=typeof n.mcpServers)&&(n.mcpServers={}),delete n.mcpServers[t],await (0,v.saveRemoteMcpJson)(e,g,N(),JSON.stringify(n,null,2))}else{let r=n?b(n):t;await (0,v.deleteRuntimeMcp)(e,g,N(),r)}let r=E.filter(e=>e!==t);O(e=>e.filter(e=>e!==t)),w({...x,mcpServers:r}),await ee(r,!0),await en()}catch(e){l.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[et,e,g,N,E,x,w,ee,en]);(0,r.useEffect)(()=>{en()},[en]),(0,r.useEffect)(()=>{O([...E])},[E,R]);let el=(0,r.useCallback)(async e=>{let t=[...new Set(e)].sort();w({...x,mcpServers:t}),await ee(t,!0)},[x,w,ee]),es=(0,r.useCallback)(async(e,t)=>{let r=t?[...new Set([...I,e])]:I.filter(t=>t!==e);O(r);try{await el(r),await en()}catch(e){O(I),l.appToast.error("切换启用状态失败: ".concat(e))}},[I,el,en]),ei=(0,r.useMemo)(()=>A.slice().sort((e,t)=>{var r,n;let a=String(null!=(r=e.source)?r:"").localeCompare(String(null!=(n=t.source)?n:""));if(0!==a)return a;let l=+!I.includes(e.id),s=+!I.includes(t.id);return l!==s?l-s:e.id.localeCompare(t.id)}),[A,I]),eo=(0,r.useMemo)(()=>ei.filter(e=>(function(e,t){var r;let n=t.trim().toLowerCase();if(!n)return!0;let a="remote"===e.source?"远程":"本地";return"".concat(e.id," ").concat(e.label," ").concat(null!=(r=e.description)?r:""," ").concat(a).toLowerCase().includes(n)})(e,Q)),[ei,Q]),ec=(0,r.useCallback)(t=>{window.open((0,v.exportRuntimeMcpUrl)(e,g,N(),b(t)),"_blank","noopener")},[e,g,N]),ed=(0,r.useCallback)(()=>{F(!0),V(""),(0,v.loadRemoteMcpJson)(e,g,N()).then(e=>{V("string"==typeof e.content?e.content:'{\n "mcpServers": {}\n}\n')}).catch(e=>{l.appToast.error("加载 mcp.json 失败:".concat(e instanceof Error?e.message:String(e))),F(!1)})},[e,g,N]),eu=(0,r.useCallback)(async()=>{let t=function(e){let t,r=e.trim();if(!r)return"请输入 JSON 配置内容";try{t=JSON.parse(r)}catch(e){return"JSON 解析失败:".concat(e instanceof Error?e.message:String(e))}if(!t||"object"!=typeof t||Array.isArray(t))return"JSON 根节点必须是对象";let n=t.mcpServers;if(!n||"object"!=typeof n||Array.isArray(n))return"mcpServers 不能为空,且需包含至少一个 server";let a=Object.keys(n).filter(e=>e.trim());if(!a.length)return"mcpServers 不能为空,且需包含至少一个 server";let l=new Set;for(let e of a){let t=e.trim();!t||l.has(t)||l.add(t)}return l.size?null:"未解析到有效的 server 名称"}(W);if(t)return void l.appToast.error(t);K(!0);try{await (0,v.saveRemoteMcpJson)(e,g,N(),W.trim()),l.appToast.success("已保存全局 mcp.json。"),F(!1),await en()}catch(e){l.appToast.error("保存 mcp.json 失败:".concat(e instanceof Error?e.message:String(e)))}finally{K(!1)}},[e,g,N,W,en]),ep=[{key:"name",title:"名称",headerClassName:" text-[var(--ds-muted)]",cellClassName:" text-[var(--ds-text)]",render:e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)(d.StatusBadge,{tone:e.disabled?"default":"success",children:e.disabled?"未启用":"启用"})]})},{key:"description",title:"详情",headerClassName:" text-[var(--ds-muted)]",cellClassName:" text-[var(--ds-text)]",render:e=>e.description||"-"},{key:"source",title:"来源",headerClassName:"w-[96px] text-[var(--ds-muted)]",cellClassName:"w-[96px] text-[var(--ds-text)]",render:e=>"remote"===e.source?"远程":"本地"},{key:"enabled",title:"启用/未启用",headerClassName:"w-14 w-[112px] text-right text-[var(--ds-muted)]",cellClassName:"w-[112px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex justify-end",children:(0,t.jsx)(f.AccentSwitch,{checked:I.includes(e.id),disabled:L,onCheckedChange:t=>{es(e.id,t)},"aria-label":"选择 ".concat(e.label)})})},{key:"actions",title:"操作",headerClassName:"w-[168px] text-[var(--ds-muted)]",cellClassName:"w-[168px]",render:e=>{var r;let n=null!=(r=e.source)?r:"",a="runtime"===n,l="runtime"===n||"remote"===n;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(m.IconTooltipButton,{icon:"Download",label:a?"导出":"仅 runtime MCP 支持导出",ariaLabel:"导出 ".concat(e.label),disabled:L||!a,onClick:()=>ec(e)}),(0,t.jsx)(m.IconTooltipButton,{icon:"Edit",label:"编辑 MCP 配置",ariaLabel:"编辑 ".concat(e.label),disabled:L,onClick:()=>er(e.id)}),(0,t.jsx)(m.IconTooltipButton,{icon:"Trash2",label:l?"删除":"基础MCP不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label),disabled:L||!l,onClick:()=>{ea(e.id)},iconClassName:"text-red-500"})]})}}],ef=Q.trim();return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(C.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center",children:[(0,t.jsxs)(u.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:ed,className:"mr-[12px]",children:[(0,t.jsx)(S.default,{name:"Edit",size:16,className:"align-middle"}),"编辑远程MCP"]}),(0,t.jsxs)(u.Button,{id:"btnAgentImportMcp",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>B(!0),children:[(0,t.jsx)(S.default,{name:"Import",size:16,className:"align-middle"}),"导入本地MCP"]})]})}),(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(p.Input,{type:"search",value:Q,onChange:e=>$(e.target.value),placeholder:"搜索名称 / 详情 / 来源",className:"h-8 pl-8","aria-label":"搜索 MCP"}),(0,t.jsx)(S.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)("div",{className:"min-h-0",children:P?(0,t.jsx)(c.Loading,{text:"加载中",className:"min-h-[180px]"}):(0,t.jsx)(o.AppTable,{rows:eo,columns:ep,getRowKey:e=>e.id,emptyText:ef?"未找到匹配 MCP":void 0})})]}),(0,t.jsx)(h,{open:U,onOpenChange:e=>{B(e),e||en()},wsUrl:e,apiBase:g,agent:N()}),(0,t.jsx)(y,{open:X,onOpenChange:Z,itemId:J,source:G,wsUrl:e,apiBase:g,agent:N(),onSaved:()=>{en(),ee(x.mcpServers,!0)}}),(0,t.jsx)(i.AppDialog,{open:z,onOpenChange:F,title:"编辑全局MCP",width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:H,onClick:()=>F(!1),children:"取消"}),(0,t.jsx)(u.Button,{type:"button",size:"lg",disabled:H,onClick:()=>void eu(),children:"保存"})]}),children:(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-color-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] p-3 leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:W,onChange:e=>V(e.target.value)})})]})}},39721,e=>{"use strict";e.s(["SkillsManageView",()=>P],39721);var t=e.i(18050),r=e.i(71645),n=e.i(65934),a=e.i(87243),l=e.i(13354),s=e.i(50711),i=e.i(19455),o=e.i(55242),c=e.i(72064),d=e.i(93479),u=e.i(75157);function p(e){let{className:r,...n}=e;return(0,t.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:(0,u.cn)("flex w-full justify-end",r),...n})}let f=r.forwardRef((e,r)=>{let{className:n,...a}=e;return(0,t.jsx)("ul",{ref:r,"data-slot":"pagination-content",className:(0,u.cn)("flex flex-row flex-wrap items-center justify-end gap-1",n),...a})});f.displayName="PaginationContent";let m=r.forwardRef((e,r)=>{let{className:n,...a}=e;return(0,t.jsx)("li",{ref:r,"data-slot":"pagination-item",className:(0,u.cn)("",n),...a})});m.displayName="PaginationItem",r.forwardRef((e,r)=>{let{className:n,isActive:a,size:l="icon",...s}=e;return(0,t.jsx)("a",{ref:r,"aria-current":a?"page":void 0,"data-slot":"pagination-link","data-active":a?"true":void 0,className:(0,u.cn)((0,i.buttonVariants)({variant:a?"outline":"ghost",size:l}),n),...s})}).displayName="PaginationLink";var g=e.i(62427),x=e.i(2839),h=e.i(85413),v=e.i(36413);function b(e,t){var r,n,a;let l=(a=null!=(n=null!=(r=e.description)?r:e.whenToUse)?n:"")?a.length>100?a.slice(0,100):a:"";return{...e,id:e.name,label:"/".concat(e.name),description:l,isRuntime:t,canManage:e.canManage}}function y(e){let{item:r,installing:n,removing:a,canRemove:l,onInstall:s,onRemove:o}=e,d=r.skillName||r.id,p=r.description||r.title||"",f=!!r.installed,m=!f,g=n||a;return(0,t.jsxs)("article",{className:(0,u.cn)("group relative rounded-md border border-solid border-[var(--border)] bg-[var(--surface-1)] p-5 transition-[border-color,box-shadow]","hover:border-[var(--ds-color-border-hover)] hover:shadow-[var(--shadow-lg)]"),children:[m||f&&l?(0,t.jsx)("div",{className:(0,u.cn)("absolute right-2 top-2 transition-opacity",g?"pointer-events-auto opacity-100":"pointer-events-none invisible opacity-0 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100"),children:m?(0,t.jsxs)(i.Button,{type:"button",size:"sm",variant:"plain-outline",disabled:n,className:"inline-flex h-7 items-center gap-1 !rounded-full !px-2 !text-sm leading-none",onClick:()=>s(r.id,d),children:[(0,t.jsx)(c.default,{name:"CloudDownload",size:14,className:"shrink-0"}),(0,t.jsx)("span",{children:n?"添加中…":"添加"})]}):(0,t.jsxs)(i.Button,{type:"button",size:"sm",variant:"plain-outline",disabled:a,className:"inline-flex h-7 items-center gap-1 !rounded-full border-[var(--ds-danger)] !px-2 !text-sm leading-none text-red-600 hover:text-red-700",onClick:()=>o(d),children:[(0,t.jsx)(c.default,{name:"Trash2",size:14,className:"shrink-0"}),(0,t.jsx)("span",{children:a?"移除中…":"移除"})]})}):null,(0,t.jsxs)("div",{className:"flex min-w-0 items-start gap-3",children:[(0,t.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-full bg-[var(--ds-color-success-bg)] text-base font-semibold text-[var(--ds-color-success-text)]","aria-hidden":!0,children:function(e){let t=e.trim();return t?t.charAt(0).toUpperCase():"?"}(d)}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("p",{className:"flex min-w-0 items-center gap-2",children:[(0,t.jsx)("span",{className:"truncate text-base font-medium text-[var(--ds-text)]",children:d}),f?(0,t.jsx)(v.StatusBadge,{tone:"success",className:"shrink-0",children:"已添加"}):null]}),p?(0,t.jsx)("p",{className:"mt-1 line-clamp-2 text-sm leading-relaxed text-[var(--ds-muted)]",children:p}):null]})]})]})}function j(e){let{active:n,wsUrl:a,apiBase:s,agent:o,baseSkillNames:u,onAfterInstall:v,onRemove:b,className:j}=e,[S,C]=(0,r.useState)(""),[w,N]=(0,r.useState)(1),[k,T]=(0,r.useState)(0),[E,R]=(0,r.useState)([]),[A,M]=(0,r.useState)(!1),[I,O]=(0,r.useState)({}),[P,_]=(0,r.useState)({}),L=(0,r.useRef)(0),D=(0,r.useCallback)(async()=>{let e=++L.current;M(!0);try{let t=await (0,g.listCloudSkillCatalog)(a,s,o,S,w,12);if(e!==L.current)return;let r=Array.isArray(t.items)?t.items:[],n=[];for(let e of r)e&&"object"==typeof e&&e.id&&n.push({id:String(e.id),title:String(e.title||""),skillName:String(e.skillName||""),description:"string"==typeof e.description?e.description:"",installed:!!e.installed});R(n),T(t.totalPages)}catch(t){if(e!==L.current)return;R([]),T(0)}finally{e===L.current&&M(!1)}},[a,s,o,S,w]);(0,r.useEffect)(()=>{if(!n){C(""),N(1),T(0),R([]),O({}),_({}),L.current+=1;return}D()},[n,D]);let U=(0,r.useCallback)(async(e,t)=>{O(t=>({...t,[e]:!0}));try{await (0,g.installCloudSkill)(a,s,o,e),l.appToast.success("云端技能已安装:".concat(t)),await D(),null==v||v()}catch(e){l.appToast.error("安装失败:".concat(e instanceof Error?e.message:String(e)))}finally{O(t=>{let r={...t};return delete r[e],r})}},[a,s,o,D,v]),B=(0,r.useCallback)(async e=>{if(b){_(t=>({...t,[e]:!0}));try{await b(e),await D(),null==v||v()}finally{_(t=>{let r={...t};return delete r[e],r})}}},[b,D,v]),z=(0,r.useCallback)(e=>{N(1),C(e)},[]);if(!n)return null;let F=k>0?"第 ".concat(w,"/").concat(k," 页"):"第 0/0 页",W=A||w<=1,V=A||k<=0||w>=k;return(0,t.jsx)("div",{className:j,children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(d.Input,{type:"search",value:S,onChange:e=>z(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[var(--ds-muted)]","aria-hidden":!0})]}),A?(0,t.jsx)(x.Loading,{text:"加载中…",className:"min-h-[240px]"}):0===E.length?(0,t.jsx)(h.Empty,{text:"暂无 Skill",className:"min-h-[240px]",showImage:!1}):(0,t.jsx)("div",{className:"grid grid-cols-2 gap-3",children:E.map(e=>{let r=e.skillName||e.id,n=!!e.installed&&!(null==u?void 0:u.has(r));return(0,t.jsx)(y,{item:e,installing:!!I[e.id],removing:!!P[r],canRemove:n,onInstall:(e,t)=>void U(e,t),onRemove:e=>void B(e)},e.id)})}),(0,t.jsx)(p,{className:"mx-0 w-full",children:(0,t.jsxs)(f,{className:"w-full flex-wrap justify-end gap-2",children:[(0,t.jsx)(m,{children:(0,t.jsxs)(i.Button,{type:"button",variant:"outline",size:"sm",disabled:W,className:"gap-1",onClick:()=>N(e=>Math.max(1,e-1)),"aria-label":"上一页",children:[(0,t.jsx)(c.default,{name:"ChevronLeft",size:16,className:"shrink-0"}),"上一页"]})}),(0,t.jsx)(m,{children:(0,t.jsx)("span",{className:"flex h-9 min-w-[6.5rem] items-center justify-center text-[var(--ds-muted)]",children:F})}),(0,t.jsx)(m,{children:(0,t.jsxs)(i.Button,{type:"button",variant:"outline",size:"sm",disabled:V,className:"gap-1",onClick:()=>N(e=>e+1),"aria-label":"下一页",children:["下一页",(0,t.jsx)(c.default,{name:"ChevronRight",size:16,className:"shrink-0",strokeWidth:1})]})})]})})]})})}function S(e){let{open:r,onOpenChange:n,wsUrl:a,apiBase:l,agent:s,baseSkillNames:i,onAfterInstall:c,onRemove:d}=e;return(0,t.jsx)(o.AppDialog,{open:r,onOpenChange:n,title:"Skill商店",width:"max-w-5xl",minHeight:"520px",bodyClassName:"overflow-y-auto",children:(0,t.jsx)(j,{active:r,wsUrl:a,apiBase:l,agent:s,enabledSkillNames:[],baseSkillNames:i,onAfterInstall:c,onRemove:d,className:"min-h-0"})})}var C=e.i(36845),w=e.i(53925);function N(e){let{open:r,onOpenChange:n,wsUrl:a,apiBase:l,agent:s}=e;return(0,t.jsx)(w.ResourceImportDialog,{open:r,onOpenChange:n,title:"导入 Skill zip",description:"选择一个 zip 文件并导入到 skills-runtime。",uploadUrl:(0,C.buildSkillsRuntimeImportUrl)(a,l,s),resetKey:s})}var k=e.i(67327);function T(e){let{open:a,onOpenChange:s,skillName:c,wsUrl:d,apiBase:u,agent:p,onSaved:f}=e,m=(0,n.useAppStore)(e=>e.wsConnected),{sendRestartSubprocess:x}=(0,k.useWebSocketSender)(),[h,v]=(0,r.useState)(""),[b,y]=(0,r.useState)(!1),[j,S]=(0,r.useState)(!1);(0,r.useEffect)(()=>{if(!a||!c.trim())return;let e=!1;return y(!0),v(""),(0,g.loadBaseSkillMd)(d,u,p,c).then(t=>{e||v("string"==typeof t.content?t.content:"")}).catch(t=>{e||(l.appToast.error("加载 SKILL.md 失败:".concat(t instanceof Error?t.message:String(t))),s(!1))}).finally(()=>{e||y(!1)}),()=>{e=!0}},[a,c,d,u,p,s]);let C=(0,r.useCallback)(async()=>{if(c.trim()){S(!0);try{await (0,g.saveBaseSkillMd)(d,u,p,c,h),m&&x("save-base-skill-md"),l.appToast.success(m?"SKILL.md 已保存,并已重启当前 session 子进程。":"SKILL.md 已保存。重连 WebSocket 后生效。"),s(!1),null==f||f()}catch(e){l.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{S(!1)}}},[c,d,u,p,h,m,x,s,f]);return(0,t.jsx)(o.AppDialog,{open:a,onOpenChange:s,title:"编辑 SKILL.md · /".concat(c),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:b||j,onClick:()=>s(!1),children:"取消"}),(0,t.jsx)(i.Button,{type:"button",size:"lg",disabled:b||j,onClick:()=>void C(),children:"保存"})]}),children:b?(0,t.jsx)("p",{className:"py-6 text-center text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-color-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] p-3 leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:h,placeholder:"Markdown 源码…",onChange:e=>v(e.target.value)})})}var E=e.i(94055),R=e.i(94197),A=e.i(92715);function M(e){let{items:n,saveBusy:a,onToggleEnabled:l,onEditBase:s,onExport:i,onRemove:o,className:u}=e,[p,f]=(0,r.useState)(""),m=(0,r.useMemo)(()=>n.filter(e=>(function(e,t){var r;let n=t.trim().toLowerCase();return!n||"".concat(e.name," ").concat(null!=(r=e.description)?r:"").toLowerCase().includes(n)})(e,p)),[n,p]),g=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:"/".concat(e.name)}),(0,t.jsx)(v.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"status",title:"状态",headerClassName:"w-[160px] ",cellClassName:"w-[160px] text-[var(--ds-text)]",render:e=>"base"===e.source?"基础":"已安装"},{key:"enabled",title:"启用/未启用",headerClassName:"w-[160px] text-right ",cellClassName:"w-[160px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center justify-end gap-2",children:(0,t.jsx)(E.AccentSwitch,{checked:e.enabled,disabled:a,onCheckedChange:t=>l(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>{let r=!0===e.canManage||"agent"===e.runtimeLayer;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(R.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(e.name),disabled:a,onClick:()=>s(e.name)}),r?(0,t.jsx)(R.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:a,onClick:()=>i(e.name)}):null,(0,t.jsx)(R.IconTooltipButton,{icon:"Trash2",label:r?"删除":"系统技能不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:a||!r,onClick:()=>{r&&o(e.name)}})]})}}],x=p.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(d.Input,{type:"search",value:p,onChange:e=>f(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(A.AppTable,{rows:m,columns:g,getRowKey:e=>"skills:".concat(e.name),className:u,emptyText:x?"无匹配的 Skill":void 0})]})}var I=e.i(68499),O=e.i(56708);function P(){let e=(0,n.useAppStore)(e=>e.wsUrl),o=(0,n.useAppStore)(e=>e.apiBase),d=(0,n.useAppStore)(e=>e.agentConfig),u=(0,n.useAppStore)(e=>e.patchAgentConfig),{currentAgent:p,loadAgentConfig:f}=(0,a.useSession)(),m=(0,s.usePersistAgentConfigField)("skills"),h=d.skills,[v,y]=(0,r.useState)([]),[j,C]=(0,r.useState)([]),[w,k]=(0,r.useState)(!1),[E,R]=(0,r.useState)(!1),[A,P]=(0,r.useState)(!1),[_,L]=(0,r.useState)(!1),[D,U]=(0,r.useState)(!1),[B,z]=(0,r.useState)(""),[F,W]=(0,r.useState)(!1);(0,r.useEffect)(()=>{f()},[f]);let V=(0,r.useCallback)(async(e,t)=>{P(!0);try{await m(e,{silent:t})}finally{P(!1)}},[m]),H=(0,r.useCallback)(async()=>{y([]),k(!0);try{var t;let r=await (0,g.listBaseSkills)(e,o,p());y((null!=(t=r.skills)?t:[]).map(e=>b(e,!1)))}catch(e){y([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{k(!1)}},[e,o,p]),K=(0,r.useCallback)(async()=>{C([]),R(!0);try{var t;let r=await (0,g.listInstalledSkills)(e,o,p());C((null!=(t=r.skills)?t:[]).map(e=>b(e,!0)))}catch(e){C([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{R(!1)}},[e,o,p]),J=(0,r.useCallback)(async()=>{await Promise.all([H(),K()])},[H,K]),Y=(0,r.useCallback)(async t=>{if(await (0,I.confirmAlertDialog)({title:"确认删除 Skill 包?",description:"Skill:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,g.deleteRuntimeSkill)(e,o,p(),t);let r=h.filter(e=>e!==t);u({skills:r}),await V(r,!0),await J()}catch(e){l.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[e,o,p,h,u,V,J]);(0,r.useEffect)(()=>{J()},[J]);let G=(0,r.useCallback)(()=>{J()},[J]),q=(0,r.useMemo)(()=>new Set(v.map(e=>e.id)),[v]),X=(0,r.useMemo)(()=>{let e=v.map(e=>({name:e.id,source:"base",description:e.description||"",enabled:h.includes(e.id),canManage:e.canManage,runtimeLayer:e.runtimeLayer})),t=new Set(e.map(e=>e.name)),r=j.filter(e=>!t.has(e.id)).slice().sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({name:e.id,source:"runtime",description:e.description||"",enabled:h.includes(e.id),canManage:e.canManage,runtimeLayer:e.runtimeLayer}));return[...e.sort((e,t)=>e.name.localeCompare(t.name)),...r]},[v,j,h]),Z=(0,r.useCallback)((e,t)=>{let r=t?[...new Set([...h,e])].sort():h.filter(t=>t!==e);u({skills:r}),V(r,!0)},[h,u,V]),Q=(0,r.useCallback)(t=>{window.open((0,g.exportRuntimeSkillUrl)(e,o,p(),t),"_blank","noopener")},[e,o,p]),$=(0,r.useCallback)(e=>{z(e),W(!0)},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(O.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)(i.Button,{id:"btnAgentImportSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>U(!0),children:[(0,t.jsx)(c.default,{name:"Import",size:16,className:"align-middle"}),"导入Skill"]}),(0,t.jsxs)(i.Button,{id:"btnAgentAddSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>L(!0),children:[(0,t.jsx)(c.default,{name:"Plus",size:16,className:"align-middle"}),"添加Skill"]})]})}),w||E?(0,t.jsx)(x.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(M,{items:X,saveBusy:A,onToggleEnabled:Z,onEditBase:$,onExport:Q,onRemove:Y}),(0,t.jsx)(S,{open:_,onOpenChange:L,wsUrl:e,apiBase:o,agent:p(),baseSkillNames:q,onAfterInstall:G,onRemove:Y}),(0,t.jsx)(N,{open:D,onOpenChange:e=>{U(e),e||J()},wsUrl:e,apiBase:o,agent:p()}),(0,t.jsx)(T,{open:F,onOpenChange:W,skillName:B,wsUrl:e,apiBase:o,agent:p(),onSaved:()=>void J()})]})}},96188,e=>{"use strict";e.s(["LLM_MODEL_KEY",()=>t,"LLM_PROVIDER_ID_KEY",()=>r,"PERMISSION_MODE_EMPTY_SENTINEL",()=>i,"WS_ALLOW_TOOL_ASK_ALLOWED",()=>s,"WS_ALLOW_TOOL_ASK_KEY",()=>a,"WS_PERMISSION_MODE_ALLOWED",()=>l,"WS_PERMISSION_MODE_KEY",()=>n]);let t="LLM_MODEL",r="LLM_PROVIDER_ID",n="WS_PERMISSION_MODE",a="WS_ALLOW_TOOL_ASK",l=["acceptEdits","plan","default","dontAsk","bypassPermissions"],s=new Set(["0","1"]),i="__empty__"},62849,e=>{"use strict";e.s(["EnvManageView",()=>P],62849);var t=e.i(18050),r=e.i(71645),n=e.i(56708),a=e.i(19455),l=e.i(72064),s=e.i(2839),i=e.i(76639),o=e.i(13354),c=e.i(87243),d=e.i(67327),u=e.i(99650),p=e.i(94606),f=e.i(65934);function m(){var e,t;let r=null!=(t=null==(e=g[0])?void 0:e.defaults.modelId)?t:"";return r?[r]:[""]}let g=[{value:"anthropic",label:"Anthropic Claude",description:"适用于 Claude 官方接口,自动使用 anthropic 协议。",badge:"C",defaults:{provider:"anthropic",id:"anthropic",baseUrl:"https://api.anthropic.com",modelId:"claude-sonnet-4-5",authToken:"ANTHROPIC_API_KEY"}},{value:"openai",label:"OpenAI",description:"适用于 api.openai.com,自动使用 openai 协议。",badge:"AI",defaults:{provider:"openai",id:"openai",baseUrl:"https://api.openai.com/v1",modelId:"gpt-5.5",authToken:"OPENAI_API_KEY"}}],x=[{key:"provider",name:"服务商类型",required:!0,options:g.map(e=>({label:e.label,value:e.value}))},{key:"id",name:"名称",required:!0,placeholder:"例如 openai-main"},{key:"modelId",name:"模型 ID",required:!0,inputType:"modelIdList",placeholder:"例如 gpt-5.5"},{key:"baseUrl",name:"API地址",required:!0,placeholder:"例如 https://api.openai.com/v1"},{key:"apiKey",name:"API秘钥",required:!0,inputType:"password"},{key:"authToken",name:"authToken",inputType:"password",placeholder:"可选,例如 ANTHROPIC_API_KEY",showWhen:{field:"provider",values:["anthropic"]}}];var h=e.i(94197),v=e.i(93479),b=e.i(67489),y=e.i(75157);let j=new Map(g.map(e=>[e.value,e]));function S(e){let{titleId:r,values:n,modelIds:s,onFieldChange:i,onModelIdChange:o,onAddModelId:c,onRemoveModelId:d,onProviderSelect:u}=e,p=x.filter(e=>(function(e,t){var r;if(!e.showWhen)return!0;let n=String(null!=(r=t[e.showWhen.field])?r:"").trim();return e.showWhen.values.includes(n)})(e,n)),f=s.length>=2;return(0,t.jsx)("div",{className:"divide-y divide-[var(--ds-color-border-default)]",children:p.map(e=>{var p,m;let g="custom-env-field-".concat(e.key),x="new-provider-field-".concat(r,"-").concat(e.key),S="string"==typeof n[e.key]?n[e.key]:"";return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsxs)("label",{className:"text-[var(--ds-text)]",htmlFor:g,children:[e.name,e.required?(0,t.jsx)("span",{className:"ml-0.5 text-destructive",children:"*"}):null]}),"provider"===e.key&&e.options?(0,t.jsx)("div",{className:"grid gap-3 sm:grid-cols-2",role:"radiogroup","aria-label":e.name,children:e.options.map(e=>{var r;let n="openai"===(r=e.value)||"anthropic"===r?j.get(r):void 0;if(!n)return null;let s=S===e.value;return(0,t.jsxs)(a.Button,{type:"button",variant:"plain",role:"radio","aria-checked":s,onClick:()=>u(n.value),className:(0,y.cn)("relative h-auto w-full items-start justify-start rounded-xl !border !border-solid border-[var(--ds-color-border-log)] bg-[var(--surface-1)] !p-4 text-left shadow-none transition-[border-color,background-color,box-shadow] hover:border-[var(--ds-color-accent-light)] hover:bg-[var(--ds-color-success-bg)] focus-visible:border-[var(--ds-color-accent-light)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color-mix(in_srgb,var(--ds-color-accent-strong)_24%,transparent)]",s&&"border-[var(--ds-color-accent-strong)] bg-[var(--ds-color-success-bg-subtle)] text-[var(--ds-text)] shadow-[0_0_0_3px_rgba(34,185,129,.12)] hover:border-[var(--ds-color-accent-strong)] hover:bg-[var(--ds-color-success-bg-subtle)]"),children:[(0,t.jsxs)("span",{className:"flex w-full min-w-0 gap-3 pr-6",children:[(0,t.jsx)("span",{className:(0,y.cn)("flex size-8 shrink-0 items-center justify-center rounded-lg bg-[var(--ds-color-surface-default)] text-sm font-semibold text-[var(--ds-muted)]",s&&"bg-[var(--ds-color-surface-default)] text-[var(--ds-color-accent)]"),children:n.badge}),(0,t.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,t.jsx)("span",{className:"block truncate text-base font-semibold text-[var(--ds-text)]",children:n.label}),(0,t.jsx)("span",{className:"mt-1 block text-sm leading-5 text-[var(--ds-muted)]",children:n.description})]})]}),s?(0,t.jsx)("span",{className:"absolute right-4 top-4 flex size-5 items-center justify-center rounded-full bg-[var(--ds-color-accent-strong)] text-white",children:(0,t.jsx)(l.default,{name:"Check",size:14,strokeWidth:2.5})}):null]},e.value)})}):e.options?(0,t.jsxs)(b.Select,{value:S,onValueChange:t=>i(e.key,t),children:[(0,t.jsx)(b.SelectTrigger,{id:g,className:(0,y.cn)("h-8 w-full max-w-none bg-[var(--ds-color-surface-default)] text-[var(--ds-text)]",e.className),children:(0,t.jsx)(b.SelectValue,{})}),(0,t.jsx)(b.SelectContent,{children:e.options.map(e=>(0,t.jsx)(b.SelectItem,{value:e.value,children:e.label},e.value))})]}):"modelIdList"===e.inputType?(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsx)("div",{children:(0,t.jsxs)(a.Button,{type:"button",variant:"plain-outline",size:"sm",className:"cursor-pointer",onClick:c,children:[(0,t.jsx)(l.default,{name:"Plus",size:14,className:"mr-1"}),"添加"]})}),s.map((r,n)=>{var a;let l="".concat(g,"-").concat(n),s="".concat(x,"-").concat(n);return(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(v.Input,{id:l,name:s,type:"text",spellCheck:!1,autoComplete:"off",placeholder:null!=(a=e.placeholder)?a:"请输入".concat(e.name),className:(0,y.cn)("border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] placeholder:text-[var(--text-placeholder)]",e.className),value:r,onChange:e=>o(n,e.target.value)}),(0,t.jsx)(h.IconTooltipButton,{icon:"CircleMinus",label:"删除模型 ID",tone:"danger",disabled:!f,onClick:()=>d(n)})]},l)})]}):(0,t.jsx)(v.Input,{id:g,name:x,type:null!=(p=e.inputType)?p:"text",spellCheck:!1,autoComplete:"password"===e.inputType?"new-password":"off",placeholder:null!=(m=e.placeholder)?m:"请输入".concat(e.name),className:(0,y.cn)("border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] placeholder:text-[var(--text-placeholder)]",e.className),value:S,onChange:t=>i(e.key,t.target.value)})]},e.key)})})}let C=/^[A-Za-z0-9_-]+$/,w=new Map(g.map(e=>[e.value,e]));function N(){var e;return{...Object.fromEntries(x.map(e=>{var t,r,n;return[e.key,null!=(n=null==(r=e.options)||null==(t=r[0])?void 0:t.value)?n:""]})),...null==(e=g[0])?void 0:e.defaults}}function k(e){let{open:n,onOpenChange:l,onSaved:g}=e,h=(0,r.useId)(),v=(0,f.useAppStore)(e=>e.wsUrl),b=(0,f.useAppStore)(e=>e.apiBase),{currentAgent:y,loadAgentConfig:j}=(0,c.useSession)(),{sendReloadAgentConfig:k}=(0,d.useWebSocketSender)(),[T,E]=(0,r.useState)(!0),[R,A]=(0,r.useState)(!1),[M,I]=(0,r.useState)(!1),[O,P]=(0,r.useState)(N),[_,L]=(0,r.useState)(m),D=(0,r.useCallback)(()=>{P(N()),L(m()),I(!1)},[]);(0,r.useEffect)(()=>{n&&(E(!0),D(),j().finally(()=>{E(!1)}))},[n,j,D]);let U=(0,r.useCallback)((e,t)=>{I(!0),P(r=>({...r,[e]:t}))},[]),B=(0,r.useCallback)((e,t)=>{I(!0),L(r=>r.map((r,n)=>n===e?t:r))},[]),z=(0,r.useCallback)(()=>{I(!0),L(e=>[...e,""])},[]),F=(0,r.useCallback)(e=>{I(!0),L(t=>t.length<2?t:t.filter((t,r)=>r!==e))},[]),W=(0,r.useCallback)(e=>{var t;let r=w.get(e);if(!r)return void U("provider",e);I(!0),P(e=>({...e,...r.defaults}));let n=null!=(t=r.defaults.modelId)?t:"";L(n?[n]:[""])},[U]),V=(0,r.useCallback)(async e=>{if(e)return void l(!0);(!M||await (0,p.confirmDiscardFlyoutChanges)())&&l(!1)},[M,l]),H=(0,r.useCallback)(async()=>{let e=f.useAppStore.getState().agentConfig,t=function(e,t,r){var n,a;let l=new Set(x.map(e=>e.key));for(let r of x)if(r.required){if("modelIdList"===r.inputType){if(t.some(e=>!e.trim()))return{ok:!1,message:"请填写".concat(r.name)};continue}if(!String(null!=(n=e[r.key])?n:"").trim())return{ok:!1,message:"请填写".concat(r.name)}}if(!l.has("id"))return{ok:!0};let s=String(null!=(a=e.id)?a:"").trim();return C.test(s)?r.some(e=>e.id===s)?{ok:!1,message:"服务商 ID 已存在:".concat(s)}:{ok:!0}:{ok:!1,message:"服务商 ID 仅允许字母、数字、下划线和中划线"}}(O,_,e.llmProviders);if(!t.ok)return void o.appToast.info(t.message);let r=function(e,t){var r,n,a,l,s;let i=String(null!=(r=e.id)?r:"").trim(),o=t.map(e=>e.trim()).filter(Boolean),c=null!=(n=o[0])?n:"";return{id:i,name:i,baseUrl:String(null!=(a=e.baseUrl)?a:"").trim(),apiKey:String(null!=(l=e.apiKey)?l:"").trim(),authToken:String(null!=(s=e.authToken)?s:"").trim(),provider:"anthropic"===e.provider?"anthropic":"openai",models:o.map(e=>({id:e,label:""})),defaultModel:c}}(O,_),n=[...e.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),r];A(!0);try{await (0,u.persistAgentEnv)(v,b,y(),{...e.env},k,{llmProviders:n}),I(!1),await (null==g?void 0:g()),l(!1)}catch(e){o.appToast.error("保存服务商失败:".concat(e instanceof Error?e.message:String(e)))}finally{A(!1)}},[O,_,v,b,y,k,l,g]);return(0,t.jsx)(i.Dialog,{open:n,onOpenChange:e=>void V(e),children:(0,t.jsxs)(i.DialogContent,{"aria-labelledby":h,className:"max-w-4xl",children:[(0,t.jsxs)(i.DialogHeader,{children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)(i.DialogTitle,{id:h,children:"添加模型服务商"}),(0,t.jsx)("p",{className:"m-0 ml-1 mt-2 text-sm font-normal text-[var(--ds-muted)]",children:"选择服务商类型后,系统自动匹配协议、鉴权方式和默认地址"})]}),(0,t.jsx)(i.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(i.DialogBody,{className:"flex min-h-[420px] flex-col overflow-hidden !py-4",children:T?(0,t.jsx)(s.Loading,{text:"加载中",showImage:!1,className:"min-h-0 flex-1"}):(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,t.jsx)(S,{titleId:h,values:O,modelIds:_,onFieldChange:U,onModelIdChange:B,onAddModelId:z,onRemoveModelId:F,onProviderSelect:W})})}),(0,t.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] px-4 py-3",children:[(0,t.jsx)(a.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:T||R,onClick:()=>void V(!1),className:"cursor-pointer",children:"取消"}),(0,t.jsx)(a.Button,{type:"button",size:"lg",disabled:T||R,onClick:()=>void H(),className:"cursor-pointer",children:R?"保存中…":"保存"})]})]})})}var T=e.i(85413),E=e.i(96188);function R(e){let{row:r,onSetDefault:n,settingDefault:l=!1,onTest:s,onEdit:i,onDelete:o}=e,c="".concat(r.baseUrl," · ").concat(r.model);return(0,t.jsxs)("article",{className:(0,y.cn)("group flex w-full items-center gap-4 rounded-xl border border-solid bg-[var(--ds-color-surface-default)] px-4 py-3.5 transition-[border-color,box-shadow]",r.isDefault?"border-[color:var(--ds-color-success)]":"border-[color:var(--ds-color-border-default)] hover:shadow-[0_2px_12px_rgba(0,0,0,0.06)]"),children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[(0,t.jsx)("span",{className:(0,y.cn)("size-2 shrink-0 rounded-full",r.isDefault?"bg-[var(--ds-color-success)]":"bg-[var(--ds-muted)]"),"aria-hidden":"true"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("h3",{className:"truncate text-base font-semibold text-[var(--ds-text)]",children:[r.name,r.isDefault?(0,t.jsx)("span",{className:"ml-2 inline-flex rounded-md bg-[color-mix(in_srgb,var(--ds-color-success)_12%,transparent)] px-1.5 py-0.5 text-xs font-medium text-[var(--ds-color-success)]",children:"默认"}):null]}),(0,t.jsx)("p",{className:"mt-1 truncate text-[var(--ds-muted)]",title:c,children:c})]})]}),(0,t.jsxs)("div",{className:"pointer-events-none invisible flex shrink-0 items-center opacity-0 transition-opacity group-focus-within:pointer-events-auto group-focus-within:visible group-focus-within:opacity-100 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100",children:[(0,t.jsx)(a.Button,{type:"button",variant:"plain",size:"sm",disabled:r.isDefault||l,className:"h-8 cursor-pointer !px-0 text-[var(--ds-text)] hover:text-[var(--ds-color-accent)] disabled:cursor-not-allowed disabled:text-[var(--ds-muted)] disabled:opacity-60",onClick:()=>n(r.id),children:l?"设置中…":"设为默认"}),s?(0,t.jsx)(a.Button,{type:"button",variant:"plain",size:"sm",className:"h-8 cursor-pointer px-2 text-[var(--ds-text)] hover:text-[var(--ds-color-accent)]",onClick:()=>s(r.id),children:"测试"}):null,i?(0,t.jsx)(h.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(r.name),onClick:()=>i(r.id)}):null,(0,t.jsx)(h.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(r.name),onClick:()=>o(r.id)})]})]})}function A(e,t){var r,n;let a="string"==typeof t[E.LLM_PROVIDER_ID_KEY]?t[E.LLM_PROVIDER_ID_KEY].trim():"";return a&&e.some(e=>e.id===a)?a:null!=(n=null==(r=e[0])?void 0:r.id.trim())?n:""}function M(e,t){let r=A(e,t);return e.map(e=>{let t=e.models[0];return{id:e.id,name:e.name||e.id,baseUrl:e.baseUrl,model:e.defaultModel||(null==t?void 0:t.label)||(null==t?void 0:t.id)||"",isDefault:e.id===r}})}function I(e){console.log("edit",e)}function O(){let e=(0,f.useAppStore)(e=>e.wsUrl),n=(0,f.useAppStore)(e=>e.apiBase),a=(0,f.useAppStore)(e=>e.agentConfig.llmProviders),l=(0,f.useAppStore)(e=>e.agentConfig.env),{currentAgent:s}=(0,c.useSession)(),{sendReloadAgentConfig:i}=(0,d.useWebSocketSender)(),[p,m]=(0,r.useState)(()=>M(a,l)),[g,x]=(0,r.useState)(null);(0,r.useEffect)(()=>{m(M(a,l))},[a,l]);let h=(0,r.useCallback)(async t=>{let r=f.useAppStore.getState();if(t!==A(r.agentConfig.llmProviders,r.agentConfig.env)){x(t);try{await (0,u.persistAgentEnv)(e,n,s(),{...r.agentConfig.env,[E.LLM_PROVIDER_ID_KEY]:t},i)}catch(e){o.appToast.error("设为默认失败:".concat(e instanceof Error?e.message:String(e)))}finally{x(null)}}},[e,n,s,i]),v=(0,r.useCallback)(async t=>{let r=f.useAppStore.getState(),a=r.agentConfig.llmProviders.filter(e=>e.id!==t).map(e=>({...e,models:e.models.map(e=>({...e}))}));if(a.length===r.agentConfig.llmProviders.length)return;let l={...r.agentConfig.env};if(t===A(r.agentConfig.llmProviders,r.agentConfig.env)){var c,d;let e=null!=(d=null==(c=a[0])?void 0:c.id.trim())?d:"";e?l[E.LLM_PROVIDER_ID_KEY]=e:delete l[E.LLM_PROVIDER_ID_KEY]}try{await (0,u.persistAgentEnv)(e,n,s(),l,i,{llmProviders:a})}catch(e){o.appToast.error("删除服务商失败:".concat(e instanceof Error?e.message:String(e)))}},[e,n,s,i]);return(0,t.jsx)("div",{className:"mt-4 flex flex-col gap-3",children:0===p.length?(0,t.jsx)(T.Empty,{text:"暂无服务商"}):p.map(e=>(0,t.jsx)(R,{row:e,onSetDefault:e=>void h(e),settingDefault:g===e.id,onEdit:I,onDelete:v},e.id))})}function P(){let[e,s]=(0,r.useState)(!1);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.ManageChromeHeaderActions,{children:(0,t.jsx)("div",{className:"flex flex-wrap items-center",children:(0,t.jsxs)(a.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>s(!0),className:"mr-[12px]",children:[(0,t.jsx)(l.default,{name:"Create",size:16,className:"align-middle"}),"添加服务商"]})})}),(0,t.jsx)(O,{}),(0,t.jsx)(k,{open:e,onOpenChange:s})]})}},69230,e=>{"use strict";e.s(["SettingsRouteBoundary",()=>i]);var t=e.i(18050),r=e.i(22016),n=e.i(18566);e.i(82787);var a=e.i(35064),l=e.i(97249),s=e.i(65934);function i(e){let{children:i}=e,o=(0,n.usePathname)(),c=(0,s.useAppStore)(e=>e.agentId),d=(0,l.buildAppNavHref)(a.MANAGE_DEFAULT_HREF,{ensureAgent:!0,agent:c});return o&&!(0,a.isManageRouteEnabled)((0,l.normalizeAppPathname)(o))?(0,t.jsxs)("div",{className:"manage-page-wrap flex min-h-0 flex-1 flex-col",children:[(0,t.jsx)("div",{className:"manage-page-header flex shrink-0 items-start justify-between gap-4 pb-4",children:(0,t.jsxs)("div",{className:"manage-page-title-block",children:[(0,t.jsx)("h1",{className:"manage-page-title",children:"页面不可用"}),(0,t.jsx)("p",{className:"manage-page-desc",children:"当前设置页未开放或已被禁用。"})]})}),(0,t.jsx)("div",{className:"manage-page-body flex min-h-0 min-w-0 flex-1 flex-col items-center justify-center gap-3 text-[var(--ds-muted)]",children:(0,t.jsx)(r.default,{className:"text-zinc-900 underline underline-offset-4",href:d,prefetch:!1,children:"返回默认设置页"})})]}):(0,t.jsx)(t.Fragment,{children:i})}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,96920,e=>{e.v("/app/_next/static/media/no-data.48c973b9.png")},85413,e=>{"use strict";e.s(["Empty",()=>l],85413);var t=e.i(18050),r=e.i(57688);let i={src:e.i(96920).default,width:973,height:482,blurWidth:8,blurHeight:4,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAj0lEQVR42gGEAHv/AAAAAAATGRcXg4uIgcjJycORlJOKDxEQDAAAAAAAAAAAAAQEBANfa2Zj5fTu9ff9+/7q8u7uc3p3cgoLCwkAAAAAAEJGRELH1M/S4/jw/tD25v7U9ef+1ubf4jg8OjAAAAAAAHqBfmqxvLiisMG7rK7GvLKxxb2wpbKtoVNYVlADAwMC5U08HYgBOJwAAAAASUVORK5CYII="};var n=e.i(75157);function l(e){let{text:l="暂无数据",className:o,showImage:a=!0,imageSrc:s=i,imageAlt:u="暂无数据",imageSize:d=180,imageClassName:c}=e,f="string"==typeof s?{width:d,height:d}:{width:s.width,height:s.height};return(0,t.jsxs)("div",{className:(0,n.cn)("flex min-h-[180px] w-full flex-col items-center justify-center gap-2 py-4 text-[var(--ds-muted)]",o),role:"status","aria-live":"polite",children:[a?(0,t.jsx)("span",{className:(0,n.cn)("block shrink-0",c),style:{width:d},children:(0,t.jsx)(r.default,{src:s,alt:u,width:f.width,height:f.height,unoptimized:!0,draggable:!1,sizes:"".concat(d,"px"),className:"h-auto w-full object-contain"})}):null,(0,t.jsx)("span",{children:l})]})}},93479,e=>{"use strict";e.s(["Input",()=>i]);var t=e.i(18050),r=e.i(75157);function i(e){let{className:i,type:n="text",size:l="default",...o}=e;return(0,t.jsx)("input",{type:n,"data-slot":"input","data-size":l,className:(0,r.cn)("h-9 w-full appearance-none rounded-md border border-solid border-border bg-transparent px-3 text-base outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--ds-color-border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none] data-[size=default]:h-9 data-[size=lg]:h-10 data-[size=sm]:h-7",i),...o})}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let i=e.r(71645);function n(e,t){let r=(0,i.useRef)(null),n=(0,i.useRef)(null);return(0,i.useCallback)(i=>{if(null===i){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=l(e,i)),t&&(n.current=l(t,i))},[e,t])}function l(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},88143,(e,t,r)=>{"use strict";function i(e){let{widthInt:t,heightInt:r,blurWidth:i,blurHeight:n,blurDataURL:l,objectFit:o}=e,a=i?40*i:t,s=n?40*n:r,u=a&&s?"viewBox='0 0 "+a+" "+s+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+u+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(u?"none":"contain"===o?"xMidYMid":"cover"===o?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+l+"'/%3E%3C/svg%3E"}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{VALID_LOADERS:function(){return i},imageConfigDefault:function(){return n}});let i=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumResponseBody:5e7,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:void 0,unoptimized:!1}},8927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return s}}),e.r(33525);let i=e.r(88143),n=e.r(87690),l=["-moz-initial","fill","none","scale-down",void 0];function o(e){return void 0!==e.default}function a(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function s(e,t){var r,s;let u,d,c,{src:f,sizes:p,unoptimized:m=!1,priority:g=!1,loading:b,className:h,quality:v,width:y,height:x,fill:w=!1,style:j,overrideSrc:_,onLoad:A,onLoadingComplete:R,placeholder:C="empty",blurDataURL:S,fetchPriority:M,decoding:E="async",layout:O,objectFit:P,objectPosition:k,lazyBoundary:N,lazyRoot:z,...I}=e,{imgConf:T,showAltText:U,blurComplete:D,defaultLoader:L}=t,B=T||n.imageConfigDefault;if("allSizes"in B)u=B;else{let e=[...B.deviceSizes,...B.imageSizes].sort((e,t)=>e-t),t=B.deviceSizes.sort((e,t)=>e-t),i=null==(r=B.qualities)?void 0:r.sort((e,t)=>e-t);u={...B,allSizes:e,deviceSizes:t,qualities:i}}if(void 0===L)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let F=I.loader||L;delete I.loader,delete I.srcSet;let G="__next_img_default"in F;if(G){if("custom"===u.loader)throw Object.defineProperty(Error('Image with src "'+f+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader'),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=F;F=t=>{let{config:r,...i}=t;return e(i)}}if(O){"fill"===O&&(w=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[O];e&&(j={...j,...e});let t={responsive:"100vw",fill:"100vw"}[O];t&&!p&&(p=t)}let V="",H=a(y),q=a(x);if((s=f)&&"object"==typeof s&&(o(s)||void 0!==s.src)){let e=o(f)?f.default:f;if(!e.src)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!e.height||!e.width)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(d=e.blurWidth,c=e.blurHeight,S=S||e.blurDataURL,V=e.src,!w)if(H||q){if(H&&!q){let t=H/e.width;q=Math.round(e.height*t)}else if(!H&&q){let t=q/e.height;H=Math.round(e.width*t)}}else H=e.width,q=e.height}let J=!g&&("lazy"===b||void 0===b);(!(f="string"==typeof f?f:V)||f.startsWith("data:")||f.startsWith("blob:"))&&(m=!0,J=!1),u.unoptimized&&(m=!0),G&&!u.dangerouslyAllowSVG&&f.split("?",1)[0].endsWith(".svg")&&(m=!0);let K=a(v),W=Object.assign(w?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:P,objectPosition:k}:{},U?{}:{color:"transparent"},j),X=D||"empty"===C?null:"blur"===C?'url("data:image/svg+xml;charset=utf-8,'+(0,i.getImageBlurSvg)({widthInt:H,heightInt:q,blurWidth:d,blurHeight:c,blurDataURL:S||"",objectFit:W.objectFit})+'")':'url("'+C+'")',Y=l.includes(W.objectFit)?"fill"===W.objectFit?"100% 100%":"cover":W.objectFit,Q=X?{backgroundSize:Y,backgroundPosition:W.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:X}:{},$=function(e){let{config:t,src:r,unoptimized:i,width:n,quality:l,sizes:o,loader:a}=e;if(i)return{src:r,srcSet:void 0,sizes:void 0};let{widths:s,kind:u}=function(e,t,r){let{deviceSizes:i,allSizes:n}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let i;i=e.exec(r);)t.push(parseInt(i[2]));if(t.length){let e=.01*Math.min(...t);return{widths:n.filter(t=>t>=i[0]*e),kind:"w"}}return{widths:n,kind:"w"}}return"number"!=typeof t?{widths:i,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>n.find(t=>t>=e)||n[n.length-1]))],kind:"x"}}(t,n,o),d=s.length-1;return{sizes:o||"w"!==u?o:"100vw",srcSet:s.map((e,i)=>a({config:t,src:r,quality:l,width:e})+" "+("w"===u?e:i+1)+u).join(", "),src:a({config:t,src:r,quality:l,width:s[d]})}}({config:u,src:f,unoptimized:m,width:H,quality:K,sizes:p,loader:F});return{props:{...I,loading:J?"lazy":b,fetchPriority:M,width:H,height:q,decoding:E,className:h,style:{...W,...Q},sizes:$.sizes,srcSet:$.srcSet,src:_||$.src},meta:{unoptimized:m,priority:g,placeholder:C,fill:w}}}},98879,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return a}});let i=e.r(71645),n="undefined"==typeof window,l=n?()=>{}:i.useLayoutEffect,o=n?()=>{}:i.useEffect;function a(e){let{headManager:t,reduceComponentsToState:r}=e;function a(){if(t&&t.mountedInstances){let n=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(n,e))}}if(n){var s;null==t||null==(s=t.mountedInstances)||s.add(e.children),a()}return l(()=>{var r;return null==t||null==(r=t.mountedInstances)||r.add(e.children),()=>{var r;null==t||null==(r=t.mountedInstances)||r.delete(e.children)}}),l(()=>(t&&(t._pendingUpdate=a),()=>{t&&(t._pendingUpdate=a)})),o(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},58908,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"AmpStateContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext({})},15986,(e,t,r)=>{"use strict";function i(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:i=!1}=void 0===e?{}:e;return t||r&&i}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isInAmpMode",{enumerable:!0,get:function(){return i}})},25633,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{default:function(){return g},defaultHead:function(){return c}});let i=e.r(55682),n=e.r(90809),l=e.r(18050),o=n._(e.r(71645)),a=i._(e.r(98879)),s=e.r(58908),u=e.r(42732),d=e.r(15986);function c(e){void 0===e&&(e=!1);let t=[(0,l.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===o.default.Fragment?e.concat(o.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let p=["name","httpEquiv","charSet","itemProp"];function m(e,t){let{inAmpMode:r}=t;return e.reduce(f,[]).reverse().concat(c(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,i={};return n=>{let l=!0,o=!1;if(n.key&&"number"!=typeof n.key&&n.key.indexOf("$")>0){o=!0;let t=n.key.slice(n.key.indexOf("$")+1);e.has(t)?l=!1:e.add(t)}switch(n.type){case"title":case"base":t.has(n.type)?l=!1:t.add(n.type);break;case"meta":for(let e=0,t=p.length;e<t;e++){let t=p[e];if(n.props.hasOwnProperty(t))if("charSet"===t)r.has(t)?l=!1:r.add(t);else{let e=n.props[t],r=i[t]||new Set;("name"!==t||!o)&&r.has(e)?l=!1:(r.add(e),i[t]=r)}}}return l}}()).reverse().map((e,t)=>{let r=e.key||t;return o.default.cloneElement(e,{key:r})})}let g=function(e){let{children:t}=e,r=(0,o.useContext)(s.AmpStateContext),i=(0,o.useContext)(u.HeadManagerContext);return(0,l.jsx)(a.default,{reduceComponentsToState:m,headManager:i,inAmpMode:(0,d.isInAmpMode)(r),children:t})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18556,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return l}});let i=e.r(55682)._(e.r(71645)),n=e.r(87690),l=i.default.createContext(n.imageConfigDefault)},65856,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext(null)},1948,(e,t,r)=>{"use strict";function i(e){var t;let{config:r,src:i,width:n,quality:l}=e,o=l||(null==(t=r.qualities)?void 0:t.reduce((e,t)=>Math.abs(t-75)<Math.abs(e-75)?t:e))||75;return r.path+"?url="+encodeURIComponent(i)+"&w="+n+"&q="+o+(i.startsWith("/_next/static/media/"),"")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return n}}),i.__next_img_default=!0;let n=i},5500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return x}});let i=e.r(55682),n=e.r(90809),l=e.r(18050),o=n._(e.r(71645)),a=i._(e.r(74080)),s=i._(e.r(25633)),u=e.r(8927),d=e.r(87690),c=e.r(18556);e.r(33525);let f=e.r(65856),p=i._(e.r(1948)),m=e.r(18581),g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/app/_next/image/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function b(e,t,r,i,n,l,o){let a=null==e?void 0:e.src;e&&e["data-loaded-src"]!==a&&(e["data-loaded-src"]=a,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&n(!0),null==r?void 0:r.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,n=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{n=!0,t.stopPropagation()}})}(null==i?void 0:i.current)&&i.current(e)}}))}function h(e){return o.use?{fetchPriority:e}:{fetchpriority:e}}"undefined"==typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let v=(0,o.forwardRef)((e,t)=>{let{src:r,srcSet:i,sizes:n,height:a,width:s,decoding:u,className:d,style:c,fetchPriority:f,placeholder:p,loading:g,unoptimized:v,fill:y,onLoadRef:x,onLoadingCompleteRef:w,setBlurComplete:j,setShowAltText:_,sizesInput:A,onLoad:R,onError:C,...S}=e,M=(0,o.useCallback)(e=>{e&&(C&&(e.src=e.src),e.complete&&b(e,p,x,w,j,v,A))},[r,p,x,w,j,C,v,A]),E=(0,m.useMergedRef)(t,M);return(0,l.jsx)("img",{...S,...h(f),loading:g,width:s,height:a,decoding:u,"data-nimg":y?"fill":"1",className:d,style:c,sizes:n,srcSet:i,src:r,ref:E,onLoad:e=>{b(e.currentTarget,p,x,w,j,v,A)},onError:e=>{_(!0),"empty"!==p&&j(!0),C&&C(e)}})});function y(e){let{isAppRouter:t,imgAttributes:r}=e,i={as:"image",imageSrcSet:r.srcSet,imageSizes:r.sizes,crossOrigin:r.crossOrigin,referrerPolicy:r.referrerPolicy,...h(r.fetchPriority)};return t&&a.default.preload?(a.default.preload(r.src,i),null):(0,l.jsx)(s.default,{children:(0,l.jsx)("link",{rel:"preload",href:r.srcSet?void 0:r.src,...i},"__nimg-"+r.src+r.srcSet+r.sizes)})}let x=(0,o.forwardRef)((e,t)=>{let r=(0,o.useContext)(f.RouterContext),i=(0,o.useContext)(c.ImageConfigContext),n=(0,o.useMemo)(()=>{var e;let t=g||i||d.imageConfigDefault,r=[...t.deviceSizes,...t.imageSizes].sort((e,t)=>e-t),n=t.deviceSizes.sort((e,t)=>e-t),l=null==(e=t.qualities)?void 0:e.sort((e,t)=>e-t);return{...t,allSizes:r,deviceSizes:n,qualities:l}},[i]),{onLoad:a,onLoadingComplete:s}=e,m=(0,o.useRef)(a);(0,o.useEffect)(()=>{m.current=a},[a]);let b=(0,o.useRef)(s);(0,o.useEffect)(()=>{b.current=s},[s]);let[h,x]=(0,o.useState)(!1),[w,j]=(0,o.useState)(!1),{props:_,meta:A}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:n,blurComplete:h,showAltText:w});return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(v,{..._,unoptimized:A.unoptimized,placeholder:A.placeholder,fill:A.fill,onLoadRef:m,onLoadingCompleteRef:b,setBlurComplete:x,setShowAltText:j,sizesInput:e.sizes,ref:t}),A.priority?(0,l.jsx)(y,{isAppRouter:!r,imgAttributes:_}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94909,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{default:function(){return s},getImageProps:function(){return a}});let i=e.r(55682),n=e.r(8927),l=e.r(5500),o=i._(e.r(1948));function a(e){let{props:t}=(0,n.getImgProps)(e,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/app/_next/image/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let s=l.Image},57688,(e,t,r)=>{t.exports=e.r(94909)},94197,e=>{"use strict";e.s(["IconTooltipButton",()=>a]);var t=e.i(18050),r=e.i(72064),i=e.i(19455),n=e.i(46798),l=e.i(75157);let o={muted:"!text-[var(--icon-color)] hover:!text-[var(--ds-text)] [&_svg]:!text-[var(--icon-color)] hover:[&_svg]:!text-[var(--ds-text)]",danger:"!text-red-600 hover:!text-red-800 [&_svg]:!text-red-600 hover:[&_svg]:!text-red-800"};function a(e){let{icon:a,label:s,ariaLabel:u,tone:d="muted",disabled:c,className:f,iconClassName:p,href:m,download:g,onClick:b,iconSize:h=16,strokeWidth:v=1}=e,y=(0,l.cn)("icon-tooltip-btn","inline-flex h-4 w-4 items-center justify-center rounded border-none p-0 no-underline transition-colors",o[d],f);return(0,t.jsx)(n.TooltipProvider,{delayDuration:150,children:(0,t.jsxs)(n.Tooltip,{children:[(0,t.jsx)(n.TooltipTrigger,{asChild:!0,children:m?(0,t.jsx)("a",{href:c?void 0:m,download:g,className:y,"aria-label":null!=u?u:s,"aria-disabled":c||void 0,onClick:c?void 0:b,children:(0,t.jsx)(r.default,{name:a,size:h,className:p,strokeWidth:v})}):(0,t.jsx)(i.Button,{type:"button",variant:"plain",size:"icon",className:y,disabled:c,"aria-label":null!=u?u:s,onClick:b,children:(0,t.jsx)(r.default,{name:a,size:16,className:p})})}),(0,t.jsx)(n.TooltipContent,{side:"bottom",align:"center",className:"",children:s})]})})}},55242,e=>{"use strict";e.s(["AppDialog",()=>l]);var t=e.i(18050),r=e.i(71645),i=e.i(76639),n=e.i(75157);function l(e){let{open:l,onOpenChange:o,title:a,children:s,footer:u,width:d="max-w-3xl",minHeight:c,bodyClassName:f}=e,p=(0,r.useId)();return(0,t.jsx)(i.Dialog,{open:l,onOpenChange:o,children:(0,t.jsxs)(i.DialogContent,{"aria-labelledby":p,className:(0,n.cn)(d,c?"!min-h-[--min-h]":""),style:c?{"--min-h":c}:void 0,children:[(0,t.jsxs)(i.DialogHeader,{children:[(0,t.jsx)(i.DialogTitle,{id:p,children:a}),(0,t.jsx)(i.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(i.DialogBody,{className:(0,n.cn)("!px-4 !py-3",f),children:s}),u?(0,t.jsx)("div",{className:"flex flex-shrink-0 justify-end gap-2 border-t border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-sidebar)] px-4 py-3",children:u}):null]})})}},62427,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>w,"deleteRuntimeMcp",()=>f,"deleteRuntimeSkill",()=>j,"deleteRuntimeTool",()=>c,"exportRuntimeMcpUrl",()=>m,"exportRuntimeSkillUrl",()=>_,"exportRuntimeToolUrl",()=>p,"importRuntimeMcp",()=>b,"importRuntimeTool",()=>g,"installCloudSkill",()=>R,"listBaseSkills",()=>l,"listCloudSkillCatalog",()=>A,"listInstalledSkills",()=>o,"listInstalledTools",()=>n,"listMcpServers",()=>i,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>u,"loadBaseSkillMd",()=>a,"loadRemoteMcpJson",()=>h,"loadRuntimeMcpItemConfig",()=>y,"saveBaseSkillMd",()=>s,"saveRemoteMcpJson",()=>v,"saveRuntimeMcpItemConfig",()=>x]);var t=e.i(29250),r=e.i(36845);async function i(e,i,n){let l=await (0,t.get)((0,r.buildMcpServersListUrl)(e,i,n));return{servers:Array.isArray(l.servers)?l.servers:[]}}async function n(e,i,n){let l=await (0,t.get)((0,r.buildToolInstalledListUrl)(e,i,n));return{tools:Array.isArray(l.tools)?l.tools:[]}}async function l(e,i,n){let l=await (0,t.get)((0,r.buildSkillBaseListUrl)(e,i,n));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function o(e,i,n){let l=await (0,t.get)((0,r.buildSkillInstalledListUrl)(e,i,n));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function a(e,i,n,l){return(0,t.get)((0,r.buildBaseSkillMdUrl)(e,i,n,l))}async function s(e,i,n,l,o){await (0,t.put)((0,r.buildBaseSkillMdUrl)(e,i,n,l),{content:o})}async function u(e,i,n){let l=await (0,t.get)((0,r.buildToolsRuntimeFilesUrl)(e,i,n));return{runtimeToolsDir:"string"==typeof l.runtimeToolsDir?l.runtimeToolsDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,i,n){let l=await (0,t.get)((0,r.buildMcpRuntimeFilesUrl)(e,i,n));return{mcpRuntimeDir:"string"==typeof l.mcpRuntimeDir?l.mcpRuntimeDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function c(e,i,n,l){return(0,t.del)((0,r.buildToolsRuntimeDeleteUrl)(e,i,n,l))}async function f(e,i,n,l){return(0,t.del)((0,r.buildMcpRuntimeDeleteUrl)(e,i,n,l))}function p(e,t,i,n){return(0,r.buildToolsRuntimeExportUrl)(e,t,i,n)}function m(e,t,i,n){return(0,r.buildMcpRuntimeExportUrl)(e,t,i,n)}async function g(e,i,n,l){let o=new FormData;return o.append("file",l),(0,t.post)((0,r.buildToolsRuntimeImportUrl)(e,i,n),o,{type:"file"})}async function b(e,i,n,l){let o=new FormData;return o.append("file",l),(0,t.post)((0,r.buildMcpRuntimeImportUrl)(e,i,n),o,{type:"file"})}async function h(e,i,n){return(0,t.get)((0,r.buildRemoteMcpJsonUrl)(e,i,n))}async function v(e,i,n,l){await (0,t.post)((0,r.buildRemoteMcpJsonUrl)(e,i,n),{content:l})}async function y(e,i,n,l,o){return(0,t.get)((0,r.buildRuntimeMcpItemConfigUrl)(e,i,n,l,o))}async function x(e,i,n,l,o,a){await (0,t.put)((0,r.buildRuntimeMcpItemConfigUrl)(e,i,n,l,o),{server:a})}async function w(e,i,n,l,o){await (0,t.del)((0,r.buildRuntimeMcpItemConfigUrl)(e,i,n,l,o))}async function j(e,i,n,l){return(0,t.del)((0,r.buildSkillsRuntimeDeleteUrl)(e,i,n,l))}function _(e,t,i,n){return(0,r.buildSkillsRuntimeExportUrl)(e,t,i,n)}async function A(e,i,n,l,o,a){let s=await (0,t.get)((0,r.buildCloudSkillCatalogUrl)(e,i,n,l,o,a));return{items:Array.isArray(s.items)?s.items:[],totalPages:Number(s.totalPages||0)}}async function R(e,i,n,l){await (0,t.post)((0,r.buildCloudSkillInstallUrl)(e,i,n),{id:l})}},92715,e=>{"use strict";e.s(["AppTable",()=>c],92715);var t=e.i(18050),r=e.i(85413),i=e.i(71645),n=e.i(75157);let l=i.forwardRef((e,r)=>{let{className:i,...l}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:r,className:(0,n.cn)("w-full caption-bottom border-collapse",i),...l})})});l.displayName="Table";let o=i.forwardRef((e,r)=>{let{className:i,...l}=e;return(0,t.jsx)("thead",{ref:r,className:(0,n.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",i),...l})});o.displayName="TableHeader";let a=i.forwardRef((e,r)=>{let{className:l,viewportFit:o=!0,viewportReserveBottom:a=16,viewportPaginationReserve:s=0,style:u,...d}=e,c=i.useRef(null),f=i.useCallback(e=>{c.current=e,"function"==typeof r?r(e):r&&(r.current=e)},[r]),[p,m]=i.useState(void 0);return i.useLayoutEffect(()=>{var e,t;if(!o)return void m(void 0);let r=()=>{var e,t;let r=c.current;if(!r)return;let i=r.getBoundingClientRect().top;m(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-i-(a+s))))};r();let i=new ResizeObserver(()=>{r()});try{i.observe(document.body)}catch(e){}return window.addEventListener("resize",r),null==(e=window.visualViewport)||e.addEventListener("resize",r),null==(t=window.visualViewport)||t.addEventListener("scroll",r),window.addEventListener("scroll",r,!0),()=>{var e,t;i.disconnect(),window.removeEventListener("resize",r),null==(e=window.visualViewport)||e.removeEventListener("resize",r),null==(t=window.visualViewport)||t.removeEventListener("scroll",r),window.removeEventListener("scroll",r,!0)}},[o,a,s]),(0,t.jsx)("tbody",{ref:f,className:(0,n.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",l),style:o&&void 0!==p?{...u,maxHeight:p}:u,...d})});a.displayName="TableBody";let s=i.forwardRef((e,r)=>{let{className:i,hoverable:l=!0,...o}=e;return(0,t.jsx)("tr",{ref:r,className:(0,n.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-color-surface-item-active)]",l&&"group/table-row",i),...o})});s.displayName="TableRow";let u=i.forwardRef((e,r)=>{let{className:i,...l}=e;return(0,t.jsx)("th",{ref:r,className:(0,n.cn)("h-10 border-b border-[var(--ds-color-border-subtle)] bg-[var(--surface-2)] px-3 text-left align-middle text-[14px] font-medium !text-[var(--ds-text)] text-muted-foreground",i),...l})});u.displayName="TableHead";let d=i.forwardRef((e,r)=>{let{className:i,...l}=e;return(0,t.jsx)("td",{ref:r,className:(0,n.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--ds-color-border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-color-surface-item-hover)]",i),...l})});function c(e){let{rows:i,columns:c,getRowKey:f,className:p,rowClassName:m,headerRowClassName:g,emptyText:b,emptyNode:h,bodyProps:v}=e;return(0,t.jsx)("div",{className:(0,n.cn)("overflow-hidden border border-[var(--ds-color-border-default)]",p),children:(0,t.jsxs)(l,{children:[(0,t.jsx)(o,{children:(0,t.jsx)(s,{className:(0,n.cn)("bg-[var(--ds-color-surface-main-tint)] hover:bg-[var(--ds-color-surface-main-tint)]",g),children:c.map(e=>(0,t.jsx)(u,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(a,{...v,children:i.length?i.map(e=>(0,t.jsx)(s,{className:"function"==typeof m?m(e):m,children:c.map(r=>(0,t.jsx)(d,{className:r.cellClassName,children:r.render(e)},r.key))},f(e))):(0,t.jsx)(s,{hoverable:!1,children:(0,t.jsx)(d,{colSpan:c.length,className:"py-6",children:null!=h?h:(0,t.jsx)(r.Empty,{text:b})})})})]})})}d.displayName="TableCell"}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20783,e=>{"use strict";e.s(["composeRefs",()=>r,"useComposedRefs",()=>o]);var t=e.i(71645);function n(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function r(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return e=>{let r=!1,o=t.map(t=>{let o=n(t,e);return r||"function"!=typeof o||(r=!0),o});if(r)return()=>{for(let e=0;e<o.length;e++){let r=o[e];"function"==typeof r?r():n(t[e],null)}}}}function o(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];return t.useCallback(r(...n),n)}},24687,e=>{"use strict";e.s(["Textarea",()=>r]);var t=e.i(18050),n=e.i(75157);function r(e){let{className:r,...o}=e;return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,n.cn)("flex min-h-20 w-full rounded-md border border-solid border-border bg-transparent px-3 py-2 text-base outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--ds-color-border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none]",r),...o})}},18900,69051,e=>{"use strict";function t(e){let t=null==e?"":String(e);return""===t?'""':/[\s#"'\\\n]/.test(t)||t!==t.trim()?'"'.concat(t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t}function n(e){let t=String(e).split(/\r?\n/),n={},r=/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/;for(let e=0;e<t.length;e++){let o=t[e],i=r.exec(o);i&&(n[i[1]]=function(e){let t=e.trimEnd();return t.length>=2&&'"'===t[0]&&'"'===t[t.length-1]?t.slice(1,-1).replace(/\\(.)/g,(e,t)=>"n"===t?"\n":'"'===t?'"':"\\"===t?"\\":"\\".concat(t)):t.length>=2&&"'"===t[0]&&"'"===t[t.length-1]?t.slice(1,-1):e}(i[2]))}return n}function r(e,n){let r=Array.isArray(e)?e:[],o=new Set;for(let e=0;e<r.length;e++){let t=r[e];t&&"object"==typeof t&&"string"==typeof t.key&&o.add(t.key)}let i=[];for(let e=0;e<r.length;e++){let o=r[e];if(!o||"object"!=typeof o||"string"!=typeof o.key)continue;let l=o.key;if(!Object.prototype.hasOwnProperty.call(n,l))continue;let a=n[l];null!=a&&""!==String(a).trim()&&i.push("".concat(l,"=").concat(t(String(a))))}let l=Object.keys(n).filter(e=>!o.has(e)).sort();for(let e=0;e<l.length;e++){let r=l[e],o=n[r];null!=o&&""!==String(o).trim()&&i.push("".concat(r,"=").concat(t(String(o))))}let a=i.join("\n");return a.length>0?"".concat(a,"\n"):""}e.s(["buildEnvFileContentFromForm",()=>r,"parseEnvContentToMap",()=>n],18900),e.s(["loadDemoSingleMessage",()=>u,"loadSystemEnv",()=>l,"saveSystemEnv",()=>a,"saveSystemMcpJson",()=>s],69051);var o=e.i(29250),i=e.i(36845);async function l(e,t,n){return(0,o.get)((0,i.buildSystemEnvApiUrl)(e,t,n))}async function a(e,t,n,r){await (0,o.patch)((0,i.buildSystemEnvApiUrl)(e,t,n),{content:r})}async function s(e,t,n,r){await (0,o.patch)((0,i.buildSystemMcpJsonApiUrl)(e,t,n),{content:r})}async function u(){return(0,o.get)("/api/demo/single-message")}},96188,e=>{"use strict";e.s(["LLM_MODEL_KEY",()=>t,"LLM_PROVIDER_ID_KEY",()=>n,"PERMISSION_MODE_EMPTY_SENTINEL",()=>a,"WS_ALLOW_TOOL_ASK_ALLOWED",()=>l,"WS_ALLOW_TOOL_ASK_KEY",()=>o,"WS_PERMISSION_MODE_ALLOWED",()=>i,"WS_PERMISSION_MODE_KEY",()=>r]);let t="LLM_MODEL",n="LLM_PROVIDER_ID",r="WS_PERMISSION_MODE",o="WS_ALLOW_TOOL_ASK",i=["acceptEdits","plan","default","dontAsk","bypassPermissions"],l=new Set(["0","1"]),a="__empty__"},36589,e=>{"use strict";e.s(["HoverCard",()=>eh,"HoverCardContent",()=>ev,"HoverCardTrigger",()=>em],36589);var t=e.i(18050);e.s(["Arrow",()=>eo,"Backdrop",()=>el,"Handle",()=>ec,"Popup",()=>er,"Portal",()=>N,"Positioner",()=>G,"Root",()=>A,"Trigger",()=>K,"Viewport",()=>ed,"createHandle",()=>ef],44475),e.s([],38208),e.i(38208),e.i(47167);var n=e.i(71645),r=e.i(3851),o=e.i(17514),i=e.i(977),l=e.i(58509),a=e.i(33605),s=e.i(51665),u=e.i(67805);let d=n.createContext(void 0);function c(e){let t=n.useContext(d);if(void 0===t&&!e)throw Error((0,u.default)(50));return t}var f=e.i(31888),p=e.i(71403),g=e.i(99749),h=e.i(74080),m=e.i(83921),v=e.i(98263),S=e.i(628),y=e.i(69375),b=e.i(58642),x=e.i(29315);function O(e,t,n,r){return{left:e,top:t,right:n,bottom:r,x:e,y:t,width:n-e,height:r-t}}function R(e){let t,n=[],r=1/0,o=1/0,i=-1/0,l=-1/0;for(let a of Array.from(e).sort((e,t)=>e.top-t.top)){if(r=Math.min(r,a.left),o=Math.min(o,a.top),i=Math.max(i,a.right),l=Math.max(l,a.bottom),!t||a.top-t.top>t.height/2)n.push({left:a.left,top:a.top,right:a.right,bottom:a.bottom,width:a.width,height:a.height});else{let e=n[n.length-1];e.left=Math.min(e.left,a.left),e.right=Math.max(e.right,a.right),e.bottom=Math.max(e.bottom,a.bottom),e.width=e.right-e.left,e.height=e.bottom-e.top}t=a}return{lines:n,fallback:O(r,o,i,l)}}function C(e,t,n){return e.findIndex(e=>t>e.left-2&&t<e.right+2&&n>e.top-2&&n<e.bottom+2)}function E(e){return O(e.left,e.top,e.right,e.bottom)}function P(e,t,n,r){let o=function(e,t,n){let{lines:r}=R(e.getClientRects());if(r.length<2)return;let o=C(r,t,n);return{x:t,y:n,lineIndex:-1===o?void 0:o,element:e}}(t,n,r);return e.current=o,o}let _={...S.popupStoreSelectors,instantType:(0,m.createSelector)(e=>e.instantType),hasViewport:(0,m.createSelector)(e=>e.hasViewport)};class M extends v.ReactStore{static useStore(e,t){return(0,b.usePopupStore)(e,(e,n)=>new M(t,e,n)).store}constructor(e,t,r=!1){let o=new y.PopupTriggerMap,i={...(0,S.createInitialPopupStoreState)(),instantType:void 0,hasViewport:!1,...e};i.floatingRootContext=(0,S.createPopupFloatingRootContext)(o,t,r),super(i,{popupRef:n.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:o,closeDelayRef:{current:300},inlineRectCoordsRef:{current:void 0}},_),(0,g._)(this,"setOpen",(e,t)=>{var n,r,o;let i=t.reason,l=i===p.REASONS.triggerHover,a=e&&i===p.REASONS.triggerFocus,s=!e&&(i===p.REASONS.triggerPress||i===p.REASONS.escapeKey);if(t.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},null==(n=(r=this.context).onOpenChange)||n.call(r,e,t),t.isCanceled)return;let u=t.event;e&&l&&t.trigger&&"clientX"in u&&"clientY"in u&&(null==(o=this.context.inlineRectCoordsRef.current)?void 0:o.element)!==t.trigger&&P(this.context.inlineRectCoordsRef,t.trigger,u.clientX,u.clientY),this.state.floatingRootContext.dispatchOpenChange(e,t);let d=()=>{let n={open:e};a?n.instantType="focus":s?n.instantType="dismiss":i===p.REASONS.triggerHover&&(n.instantType=void 0),(0,b.setOpenTriggerState)(n,e,t.trigger),this.update(n)};l?h.flushSync(d):d()})}}var w=e.i(19805);function j(e){let{open:r,defaultOpen:o=!1,onOpenChange:a,onOpenChangeComplete:s,actionsRef:u,handle:c,triggerId:g,defaultTriggerId:h=null,children:m}=e,v=M.useStore(null==c?void 0:c.store,{open:o,openProp:r,activeTriggerId:h,triggerIdProp:g});(0,l.useOnFirstRender)(()=>{void 0===r&&!1===v.state.open&&!0===o&&v.update({open:!0,activeTriggerId:h})}),v.useControlledProp("openProp",r),v.useControlledProp("triggerIdProp",g),v.useContextCallback("onOpenChange",a),v.useContextCallback("onOpenChangeComplete",s);let S=v.useState("open"),y=v.useState("activeTriggerId"),x=v.useState("mounted"),O=v.useState("payload");(0,b.useImplicitActiveTrigger)(v);let{forceUnmount:R}=(0,b.useOpenStateTransitions)(S,v,()=>{v.context.inlineRectCoordsRef.current=void 0});(0,i.useIsoLayoutEffect)(()=>{S&&null==y&&v.set("payload",void 0)},[v,y,S]);let C=n.useCallback(()=>{v.setOpen(!1,(0,f.createChangeEventDetails)(p.REASONS.imperativeAction))},[v]);n.useImperativeHandle(u,()=>({unmount:R,close:C}),[R,C]);let E=S||x;return(0,t.jsxs)(d.Provider,{value:v,children:[E&&(0,t.jsx)(T,{store:v}),"function"==typeof m?m({payload:O}):m]})}function T(e){var t,r;let{store:i}=e,l=i.useState("floatingRootContext"),s=(0,a.useDismiss)(l),u=null!=(t=s.reference)?t:o.EMPTY_OBJECT,d=null!=(r=s.trigger)?r:o.EMPTY_OBJECT,c=n.useMemo(()=>(0,w.mergeProps)(b.FOCUSABLE_POPUP_PROPS,s.floating),[s.floating]);return(0,b.usePopupInteractionProps)(i,{activeTriggerProps:u,inactiveTriggerProps:d,popupProps:c}),null}let A=(0,r.fastComponent)(function(e){return c(!0)?(0,t.jsx)(j,{...e}):(0,t.jsx)(s.FloatingTree,{children:(0,t.jsx)(j,{...e})})}),I=n.createContext(void 0);var L=e.i(37692);let D=n.forwardRef(function(e,r){let{children:o,container:i,className:l,render:a,style:s,...u}=e,{portalNode:d,portalSubtree:c}=(0,L.useFloatingPortalNode)({container:i,ref:r,componentProps:e,elementProps:u});return c||d?(0,t.jsxs)(n.Fragment,{children:[c,d&&h.createPortal(o,d)]}):null}),N=n.forwardRef(function(e,n){let{keepMounted:r=!1,...o}=e;return c().useState("mounted")||r?(0,t.jsx)(I.Provider,{value:r,children:(0,t.jsx)(D,{ref:n,...o})}):null});var k=e.i(83590),F=e.i(69095),U=e.i(86790),W=e.i(37287),B=e.i(25708),H=e.i(97254);let K=(0,r.fastComponentRef)(function(e,t){var r;let{render:o,className:l,delay:a,closeDelay:s,id:d,payload:f,handle:p,style:g,...h}=e,m=c(!0),v=null!=(r=null==p?void 0:p.store)?r:m;if(!v)throw Error((0,u.default)(89));let S=(0,U.useBaseUiId)(d),y=v.useState("isTriggerActive",S),x=v.useState("isOpenedByTrigger",S),O=v.useState("floatingRootContext"),R=v.context.inlineRectCoordsRef,C=n.useRef(null),E=null!=a?a:600,_=null!=s?s:300,{registerTrigger:M,isMountedByThisTrigger:w}=(0,b.useTriggerDataForwarding)(S,C,v,{payload:f});(0,i.useIsoLayoutEffect)(()=>{w&&(v.context.closeDelayRef.current=_)},[v,w,_]);let j=(0,H.useHoverReferenceInteraction)(O,{mouseOnly:!0,move:!1,handleClose:(0,W.safePolygon)(),delay:()=>({open:E,close:_}),triggerElementRef:C,isActiveTrigger:y,isClosing:()=>"ending"===v.select("transitionStatus")}),T=(0,B.useFocus)(O,{delay:E}),A=v.useState("triggerProps",w),I=function(e,t){function n(t){P(e,t.currentTarget,t.clientX,t.clientY)}return{onFocus(){e.current=void 0},onMouseEnter:n,onMouseMove:function(e){t||n(e)}}}(R,x);return(0,F.useRenderElement)("a",e,{state:{open:x},ref:[t,M,C],props:[j,T.reference,A,I,{id:S},h],stateAttributesMapping:k.triggerOpenStateMapping})}),V=n.createContext(void 0);function Y(){let e=n.useContext(V);if(void 0===e)throw Error((0,u.default)(49));return e}var z=e.i(56590),J=e.i(5066),X=e.i(67569),Z=e.i(44380);let G=n.forwardRef(function(e,r){let{render:o,className:l,anchor:a,positionMethod:d="absolute",side:f="bottom",align:p="center",sideOffset:g=0,alignOffset:h=0,collisionBoundary:m="clipping-ancestors",collisionPadding:v=5,arrowPadding:S=5,sticky:y=!1,disableAnchorTracking:b=!1,collisionAvoidance:P=J.POPUP_COLLISION_AVOIDANCE,style:_,...M}=e,w=c(),j=function(){let e=n.useContext(I);if(void 0===e)throw Error((0,u.default)(48));return e}(),T=(0,s.useFloatingNodeId)(),A=w.useState("open"),L=w.useState("mounted"),D=w.useState("floatingRootContext"),N=w.useState("instantType"),k=w.useState("transitionStatus"),F=w.useState("hasViewport"),U=w.context.inlineRectCoordsRef,W=(0,z.useAnchorPositioning)({anchor:a,floatingRootContext:D,positionMethod:d,mounted:L,side:f,sideOffset:g,align:p,alignOffset:h,arrowPadding:S,collisionBoundary:m,collisionPadding:v,sticky:y,disableAnchorTracking:b,keepMounted:j,nodeId:T,collisionAvoidance:P,adaptiveOrigin:F?X.adaptiveOrigin:void 0,inline:{name:"inline",async fn(e){let t=e.elements.reference;if("function"!=typeof(null==t?void 0:t.getClientRects))return{};let n="contextElement"in t&&t.contextElement?t.contextElement:(0,x.isElement)(t)?t:void 0,r=U.current,o=(null==r?void 0:r.element)===t||(null==r?void 0:r.element)===n?r:void 0,i=function(e,t,n){let{lines:r,fallback:o}=R(e.getClientRects());if(r.length<2)return null;let i=null==n?void 0:n.x,l=null==n?void 0:n.y,a=t[0];if((null==n?void 0:n.lineIndex)!=null&&r[n.lineIndex])return E(r[n.lineIndex]);if(null!=i&&null!=l){let e=C(r,i,l);if(-1!==e)return E(r[e])}if(2===r.length&&r[0].left>r[1].right&&null!=i&&null!=l)return o;if("t"===a||"b"===a){let e=r[0],t=r[r.length-1],n="t"===a?e:t;return O(n.left,e.top,n.right,t.bottom)}let s="l"===a,u=r[0].left,d=r[0].right,c=s?1/0:-1/0,f=r[0],p=r[0];for(let e of r){u=Math.min(u,e.left),d=Math.max(d,e.right);let t=s?e.left:e.right;s&&t<c||!s&&t>c?(c=t,f=e,p=e):t===c&&(p=e)}return O(u,f.top,d,p.bottom)}(t,e.placement,o);if(!i||"function"!=typeof e.platform.getElementRects)return{};let l=await e.platform.getElementRects({reference:{contextElement:n,getBoundingClientRect:()=>i},floating:e.elements.floating,strategy:e.strategy});return e.rects.reference.x===l.reference.x&&e.rects.reference.y===l.reference.y&&e.rects.reference.width===l.reference.width&&e.rects.reference.height===l.reference.height?{}:{reset:{rects:l}}}}}),B=W.update;(0,i.useIsoLayoutEffect)(()=>{A&&L&&B()},[A,L,B]);let H={open:A,side:W.side,align:W.align,anchorHidden:W.anchorHidden,instant:N},K=(0,Z.usePositioner)(e,H,{styles:W.positionerStyles,transitionStatus:k,props:M,refs:[r,w.useStateSetter("positionerElement")],hidden:!L,inert:!A});return(0,t.jsx)(V.Provider,{value:W,children:(0,t.jsx)(s.FloatingNode,{id:T,children:K})})});var $=e.i(76477),q=e.i(14060),Q=e.i(23715),ee=e.i(18847),et=e.i(61896);let en={...k.popupStateMapping,...q.transitionStatusMapping},er=n.forwardRef(function(e,t){let{className:n,render:r,style:o,...i}=e,l=c(),{side:a,align:s}=Y(),u=l.useState("open"),d=l.useState("instantType"),f=l.useState("transitionStatus"),p=l.useState("popupProps"),g=l.useState("floatingRootContext");(0,Q.useOpenChangeComplete)({open:u,ref:l.context.popupRef,onComplete(){if(u){var e,t;null==(e=(t=l.context).onOpenChangeComplete)||e.call(t,!0)}}});let h=(0,$.useStableCallback)(()=>l.context.closeDelayRef.current);return(0,et.useHoverFloatingInteraction)(g,{closeDelay:h}),(0,F.useRenderElement)("div",e,{state:{open:u,side:a,align:s,instant:d,transitionStatus:f},ref:[t,l.context.popupRef,l.useStateSetter("popupElement")],props:[p,(0,ee.getDisabledMountTransitionStyles)(f),i],stateAttributesMapping:en})}),eo=n.forwardRef(function(e,t){let{render:n,className:r,style:o,...i}=e,l=c(),{arrowRef:a,side:s,align:u,arrowUncentered:d,arrowStyles:f}=Y(),p=l.useState("open");return(0,F.useRenderElement)("div",e,{state:{open:p,side:s,align:u,uncentered:d},ref:[a,t],props:[{style:f,"aria-hidden":!0},i],stateAttributesMapping:k.popupStateMapping})}),ei={...k.popupStateMapping,...q.transitionStatusMapping},el=n.forwardRef(function(e,t){let{render:n,className:r,style:o,...i}=e,l=c(),a=l.useState("open"),s=l.useState("mounted"),u=l.useState("transitionStatus");return(0,F.useRenderElement)("div",e,{state:{open:a,transitionStatus:u},ref:[t],props:[{role:"presentation",hidden:!s,style:{pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none"}},i],stateAttributesMapping:ei})}),ea=function(e){return e.popupWidth="--popup-width",e.popupHeight="--popup-height",e}({});var es=e.i(12666);let eu={activationDirection:e=>e?{"data-activation-direction":e}:null},ed=n.forwardRef(function(e,t){let{render:n,className:r,style:o,children:i,...l}=e,a=c(),s=Y(),u=a.useState("instantType"),{children:d,state:f}=(0,es.usePopupViewport)({store:a,side:s.side,cssVars:ea,children:i}),p={activationDirection:f.activationDirection,transitioning:f.transitioning,instant:u};return(0,F.useRenderElement)("div",e,{state:p,ref:t,props:[l,{children:d}],stateAttributesMapping:eu})});class ec{open(e){let t=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!t)throw Error((0,u.default)(88,e));this.store.setOpen(!0,(0,f.createChangeEventDetails)(p.REASONS.imperativeAction,void 0,t))}close(){this.store.setOpen(!1,(0,f.createChangeEventDetails)(p.REASONS.imperativeAction,void 0,void 0))}get isOpen(){return this.store.select("open")}constructor(){this.store=new M}}function ef(){return new ec}var ep=e.i(44475),ep=ep,eg=e.i(75157);function eh(e){let{...n}=e;return(0,t.jsx)(ep.Root,{"data-slot":"hover-card",...n})}function em(e){let{...n}=e;return(0,t.jsx)(ep.Trigger,{"data-slot":"hover-card-trigger",...n})}function ev(e){let{className:n,side:r="bottom",sideOffset:o=8,align:i="center",alignOffset:l=0,style:a,...s}=e;return(0,t.jsx)(ep.Portal,{"data-slot":"hover-card-portal",children:(0,t.jsx)(ep.Positioner,{align:i,alignOffset:l,side:r,sideOffset:o,positionMethod:"fixed",className:"isolate z-[10050]",children:(0,t.jsx)(ep.Popup,{"data-slot":"hover-card-content",style:{boxShadow:"var(--shadow-md)",...a},className:(0,eg.cn)("z-[10050] box-border w-[220px] rounded-lg border border-solid border-[var(--ds-color-border-default)] bg-[var(--surface-1)] p-[16px] text-[var(--ds-text)] outline-none duration-100","origin-(--transform-origin) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",n),...s})})})}},51996,e=>{e.v("/app/_next/static/media/upload-file.88541e18.png")},67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return o}});let r=e.r(32061);function o(e){let{reason:t,children:n}=e;if("undefined"==typeof window)throw Object.defineProperty(new r.BailoutToCSRError(t),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}},9885,(e,t,n)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return r}})},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return a}});let r=e.r(18050),o=e.r(74080),i=e.r(63599),l=e.r(9885);function a(e){let{moduleIds:t}=e;if("undefined"!=typeof window)return null;let n=i.workAsyncStorage.getStore();if(void 0===n)return null;let a=[];if(n.reactLoadableManifest&&t){let e=n.reactLoadableManifest;for(let n of t){if(!e[n])continue;let t=e[n].files;a.push(...t)}}return 0===a.length?null:(0,r.jsx)(r.Fragment,{children:a.map(e=>{let t=n.assetPrefix+"/_next/"+(0,l.encodeURIPath)(e);return e.endsWith(".css")?(0,r.jsx)("link",{precedence:"dynamic",href:t,rel:"stylesheet",as:"style"},e):((0,o.preload)(t,{as:"script",fetchPriority:"low"}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return u}});let r=e.r(18050),o=e.r(71645),i=e.r(67585),l=e.r(52157);function a(e){return{default:e&&"default"in e?e.default:e}}let s={loader:()=>Promise.resolve(a(()=>null)),loading:null,ssr:!0},u=function(e){let t={...s,...e},n=(0,o.lazy)(()=>t.loader().then(a)),u=t.loading;function d(e){let a=u?(0,r.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,s=!t.ssr||!!t.loading,d=s?o.Suspense:o.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:["undefined"==typeof window?(0,r.jsx)(l.PreloadChunks,{moduleIds:t.modules}):null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(i.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(d,{...s?{fallback:a}:{},children:c})}return d.displayName="LoadableComponent",d}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return o}});let r=e.r(55682)._(e.r(69093));function o(e,t){var n;let o={};"function"==typeof e&&(o.loader=e);let i={...o,...t};return(0,r.default)({...i,modules:null==(n=i.loadableGenerated)?void 0:n.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},82787,e=>{"use strict";e.s(["getManageRoute",()=>n],82787);var t=e.i(35064);function n(e){return(0,t.getManageRouteMeta)(e)}e.i(97249),e.i(70703),e.i(71645),e.i(68665),e.i(18050)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,51239,e=>{e.v("/app/_next/static/media/data-loading.be8d921a.png")},2839,e=>{"use strict";e.s(["Loading",()=>s],2839);var t=e.i(18050),a=e.i(57688);let n={src:e.i(51239).default,width:951,height:482,blurWidth:8,blurHeight:4,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAj0lEQVR42gGEAHv/AAAAAAANERAObXJwYaGko5N/gYBwDg8PCgAAAAAAAAAAAAMEBAJic2xp2+3m7fL8+P7l6ujjUlhWTAYGBgUAAAAAADM3NTG6x8LB7fr1/vD89/7f9+3+wNXNzycpKB4AAAAAAJ+qpozL2dO/0NvWx9Td2c6gzrzRpcq8u2FpZk8CAgIBCRI7kCfNfAcAAAAASUVORK5CYII="};var l=e.i(87968),r=e.i(75157);function s(e){let{text:s="加载中",className:i,showImage:o=!0,imageSrc:c=n,imageAlt:d="加载中",imageSize:u=180,imageClassName:m}=e,p="string"==typeof c?{width:u,height:u}:{width:c.width,height:c.height};return(0,t.jsxs)("div",{className:(0,r.cn)("flex min-h-[180px] w-full flex-col items-center justify-center gap-2 py-4 text-[var(--ds-muted)]",i),role:"status","aria-live":"polite",children:[o?(0,t.jsx)("span",{className:(0,r.cn)("block shrink-0",m),style:{width:u},children:(0,t.jsx)(a.default,{src:c,alt:d,width:p.width,height:p.height,unoptimized:!0,draggable:!1,sizes:"".concat(u,"px"),className:"h-auto w-full object-contain"})}):null,(0,t.jsxs)("span",{className:"flex items-center",children:[(0,t.jsx)(l.Spinner,{className:"mr-2"}),s]})]})}},56708,e=>{"use strict";e.s(["ManageChromeHeaderActions",()=>i,"ManageFeatureChrome",()=>s]);var t=e.i(18050),a=e.i(71645),n=e.i(74080),l=e.i(72064);let r=(0,a.createContext)(null);function s(e){let{title:n,description:s,children:i,showTitle:o=!0,headerIcon:c}=e,[d,u]=(0,a.useState)(null);return(0,t.jsxs)("div",{className:"manage-page-wrap flex min-h-0 flex-1 flex-col",children:[(0,t.jsxs)("div",{className:"manage-page-header flex shrink-0 items-start justify-between gap-[var(--space-4)] pb-[var(--space-4)]",children:[o?(0,t.jsxs)("div",{className:"manage-page-title-block flex items-center",children:[c&&(0,t.jsx)("div",{className:"mr-[16px] rounded-md bg-[var(--ds-color-success-bg)] px-4 py-3",children:(0,t.jsx)(l.default,{name:c,size:24,className:"text-[var(--ds-color-success-text)]",strokeWidth:1.5})}),(0,t.jsxs)("div",{className:"pt-2",children:[(0,t.jsx)("h1",{className:"manage-page-title",children:n}),s.trim()?(0,t.jsx)("p",{className:"manage-page-desc",children:s}):null]})]}):null,(0,t.jsx)("div",{ref:u,className:"manage-page-header-actions self-start"})]}),(0,t.jsx)("div",{className:"manage-page-body flex min-h-0 min-w-0 flex-1 flex-col",children:(0,t.jsx)(r.Provider,{value:d,children:i})})]})}function i(e){let{children:t}=e,l=(0,a.useContext)(r);return(0,a.useSyncExternalStore)(()=>()=>{},()=>!0,()=>!1)&&l?(0,n.createPortal)(t,l):null}},36413,e=>{"use strict";e.s(["StatusBadge",()=>i],36413);var t=e.i(18050),a=e.i(25913),n=e.i(75157);let l=(0,a.cva)("inline-flex shrink-0 items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function r(e){let{className:a,variant:r,...s}=e;return(0,t.jsx)("span",{"data-slot":"badge",className:(0,n.cn)(l({variant:r}),a),...s})}let s={success:{root:"border-transparent bg-[var(--ds-color-success-bg)] text-[var(--ds-color-success-text)]",dot:"bg-[var(--ds-color-success)]"},danger:{root:"border-transparent bg-[#fef2f2] text-[var(--ds-danger)]",dot:"bg-[var(--ds-danger)]"},default:{root:"border-transparent bg-[var(--surface-2)] text-[var(--ds-muted)]",dot:"bg-[var(--ds-muted)]"},progress:{root:"border-transparent bg-[color-mix(in_srgb,var(--blue)_12%,var(--surface-1))] text-[var(--blue)]",dot:"bg-[var(--blue)]"},warning:{root:"border-transparent bg-[color-mix(in_srgb,var(--amber)_14%,var(--surface-1))] text-[var(--amber)]",dot:"bg-[var(--amber)]"}};function i(e){let{tone:a="default",showDot:l=!0,dotClassName:i,className:o,children:c,...d}=e,u=s[a];return(0,t.jsxs)(r,{variant:"outline",className:(0,n.cn)("gap-1.5",u.root,o),...d,children:[l?(0,t.jsx)("span",{className:(0,n.cn)("size-1.5 shrink-0 rounded-full",u.dot,i),"aria-hidden":!0}):null,c]})}},94055,e=>{"use strict";e.s(["AccentSwitch",()=>P],94055);var t=e.i(18050);e.s(["Root",()=>z,"Thumb",()=>T],39606),e.s([],37751),e.i(37751),e.i(47167);var a=e.i(71645),n=e.i(94349),l=e.i(26292),r=e.i(977),s=e.i(62372),i=e.i(17514),o=e.i(33848),c=e.i(69095),d=e.i(19805),u=e.i(86790),m=e.i(53402),p=e.i(67805);let f=a.createContext(void 0),h=function(e){return e.disabled="data-disabled",e.valid="data-valid",e.invalid="data-invalid",e.touched="data-touched",e.dirty="data-dirty",e.filled="data-filled",e.focused="data-focused",e}({}),g={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},x={disabled:!1,...g},v=function(e){return e.checked="data-checked",e.unchecked="data-unchecked",e.disabled="data-disabled",e.readonly="data-readonly",e.required="data-required",e.valid="data-valid",e.invalid="data-invalid",e.touched="data-touched",e.dirty="data-dirty",e.filled="data-filled",e.focused="data-focused",e}({}),b={valid:e=>null===e?null:e?{[h.valid]:""}:{[h.invalid]:""},checked:e=>e?{[v.checked]:""}:{[v.unchecked]:""}},y={invalid:void 0,name:void 0,validityData:{state:{badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},errors:[],error:"",value:"",initialValue:null},setValidityData:i.NOOP,disabled:void 0,touched:g.touched,setTouched:i.NOOP,dirty:g.dirty,setDirty:i.NOOP,filled:g.filled,setFilled:i.NOOP,focused:g.focused,setFocused:i.NOOP,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:x,markedDirtyRef:{current:!1},registerFieldControl:i.NOOP,validation:{getValidationProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.EMPTY_OBJECT;return e},getInputValidationProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.EMPTY_OBJECT;return e},inputRef:{current:null},commit:async()=>{}}},j=a.createContext(y);function w(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],t=a.useContext(j);if(t.setValidityData===i.NOOP&&!e)throw Error((0,p.default)(28));return t}let k=a.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:i.NOOP,validationMode:"onSubmit",submitAttemptedRef:{current:!1}}),N=a.createContext({controlId:void 0,registerControlId:i.NOOP,labelId:void 0,setLabelId:i.NOOP,messageIds:[],setMessageIds:i.NOOP,getDescriptionProps:e=>e});function C(){return a.useContext(N)}var S=e.i(76477),A=e.i(30628),R=e.i(29315),E=e.i(31888),O=e.i(71403),B=e.i(73577);let z=a.forwardRef(function(e,p){let{checked:h,className:g,defaultChecked:x,"aria-labelledby":v,form:y,id:j,inputRef:N,name:z,nativeButton:T=!1,onCheckedChange:L,readOnly:I=!1,required:M=!1,disabled:P=!1,render:D,uncheckedValue:U,value:K,style:F,...V}=e,{clearErrors:_}=a.useContext(k),{state:W,setTouched:H,setDirty:J,validityData:Y,setFilled:q,setFocused:G,shouldValidateOnChange:X,validationMode:Q,disabled:Z,name:$,validation:ee}=w(),{labelId:et}=C(),ea=Z||P,en=null!=$?$:z,el=a.useRef(null),er=(0,l.useMergedRefs)(el,N,ee.inputRef),es=a.useRef(null),ei=(0,u.useBaseUiId)(),eo=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{id:t,implicit:n=!1,controlRef:l}=e,{controlId:s,registerControlId:o}=C(),c=(0,u.useBaseUiId)(t),d=n?s:void 0,m=(0,A.useRefWithInit)(()=>Symbol("labelable-control")),p=a.useRef(!1),f=a.useRef(null!=t),h=(0,S.useStableCallback)(()=>{p.current&&o!==i.NOOP&&(p.current=!1,o(m.current,void 0))});return(0,r.useIsoLayoutEffect)(()=>{let e;if(o!==i.NOOP){if(n){let a=null==l?void 0:l.current;e=(0,R.isElement)(a)&&null!=a.closest("label")?null!=t?t:null:null!=d?d:c}else if(null!=t)f.current=!0,e=t;else{if(!f.current)return void h();e=c}if(void 0===e)return void h();p.current=!0,o(m.current,e)}},[t,l,d,o,n,c,m,h]),a.useEffect(()=>h,[h]),null!=s?s:c}({id:j,implicit:!1,controlRef:es}),ec=T?void 0:eo,[ed,eu]=(0,n.useControlled)({controlled:h,default:!!x,name:"Switch",state:"checked"});!function(e,t,n,l){let s=!(arguments.length>4)||void 0===arguments[4]||arguments[4],{registerFieldControl:i}=w(),o=a.useRef(null);o.current||(o.current=Symbol()),(0,r.useIsoLayoutEffect)(()=>{let a=o.current;if(a&&s)return i(a,{controlRef:e,getValue:l,id:t,value:n}),()=>{i(a,void 0)}},[e,s,l,t,i,n])}(es,ei,ed),(0,r.useIsoLayoutEffect)(()=>{el.current&&q(el.current.checked)},[el,q]),(0,B.useValueChanged)(ed,()=>{_(en),J(ed!==Y.initialValue),q(ed),X()?ee.commit(ed):ee.commit(ed,!0)});let{getButtonProps:em,buttonRef:ep}=(0,m.useButton)({disabled:ea,native:T}),ef=function(e,t,n){var l;let s=!(arguments.length>3)||void 0===arguments[3]||arguments[3],i=arguments.length>4?arguments[4]:void 0,[o,c]=a.useState(),d=(0,u.useBaseUiId)(i?"".concat(i,"-label"):void 0),m=null!=(l=null!=e?e:t)?l:o;return(0,r.useIsoLayoutEffect)(()=>{let a=e||t||!s?void 0:function(e,t){let a=function(e){if(!e)return;let t=e.parentElement;if(t&&"LABEL"===t.tagName)return t;let a=e.id;if(a){let t=e.nextElementSibling;if(t&&t.htmlFor===a)return t}let n=e.labels;return n&&n[0]}(e);if(a)return!a.id&&t&&(a.id=t),a.id||void 0}(n.current,d);o!==a&&c(a)}),m}(v,et,el,!T,ec),eh=(0,d.mergeProps)({checked:ed,disabled:ea,form:y,id:ec,name:en,required:M,style:en?s.visuallyHiddenInput:s.visuallyHidden,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:er,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(I)return void e.preventDefault();let t=e.currentTarget.checked,a=(0,E.createChangeEventDetails)(O.REASONS.none,e.nativeEvent);null==L||L(t,a),a.isCanceled||eu(t)},onFocus(){var e;null==(e=es.current)||e.focus()}},ee.getInputValidationProps,void 0!==K?{value:K}:i.EMPTY_OBJECT),eg=a.useMemo(()=>({...W,checked:ed,disabled:ea,readOnly:I,required:M}),[W,ed,ea,I,M]),ex=(0,c.useRenderElement)("span",e,{state:eg,ref:[p,es,ep],props:[{id:T?eo:ei,role:"switch","aria-checked":ed,"aria-readonly":I||void 0,"aria-required":M||void 0,"aria-labelledby":ef,onFocus(){ea||G(!0)},onBlur(){let e=el.current;e&&!ea&&(H(!0),G(!1),"onBlur"===Q&&ee.commit(e.checked))},onClick(e){if(I||ea)return;e.preventDefault();let t=el.current;t&&t.dispatchEvent(new((0,o.ownerWindow)(t)).PointerEvent("click",{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey}))}},ee.getValidationProps,V,em],stateAttributesMapping:b});return(0,t.jsxs)(f.Provider,{value:eg,children:[ex,!ed&&en&&void 0!==U&&(0,t.jsx)("input",{type:"hidden",form:y,name:en,value:U}),(0,t.jsx)("input",{...eh,suppressHydrationWarning:!0})]})}),T=a.forwardRef(function(e,t){let{render:n,className:l,style:r,...s}=e,i=function(){let e=a.useContext(f);if(void 0===e)throw Error((0,p.default)(63));return e}();return(0,c.useRenderElement)("span",e,{state:i,ref:t,stateAttributesMapping:b,props:s})});var L=e.i(39606),L=L,I=e.i(75157);function M(e){let{className:a,thumbClassName:n,...l}=e;return(0,t.jsx)(L.Root,{"data-slot":"switch",className:(0,I.cn)("shadow-xs focus-visible:ring-ring/50 dark:data-[unchecked]:bg-input/80 peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent bg-input outline-none transition-colors focus-visible:border-ring focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[checked]:bg-primary",a),...l,children:(0,t.jsx)(L.Thumb,{className:(0,I.cn)("pointer-events-none block size-4 rounded-full bg-background ring-0 transition-transform will-change-transform data-[checked]:translate-x-4 data-[unchecked]:translate-x-0.5 data-[checked]:bg-primary-foreground",n)})})}function P(e){let{className:a,thumbClassName:n,...l}=e;return(0,t.jsx)(M,{className:(0,I.cn)("focus-visible:border-[var(--ds-color-accent)]/50 focus-visible:ring-[var(--ds-color-accent)]/35 data-[checked]:border-[var(--ds-color-accent)] data-[checked]:bg-[var(--ds-color-accent)]",a),thumbClassName:(0,I.cn)("data-[checked]:bg-white",n),...l})}},53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),a=e.i(71645),n=e.i(72064),l=e.i(75157),r=e.i(19455);function s(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:m=!1,method:p="POST",transport:f="xhr",fieldName:h="file",headers:g,extraFormData:x,autoRetryTimes:v=0,autoRetryDelayMs:b=800,selectionOnly:y=!1,className:j,emptyTitle:w="点击或拖拽文件到此处",emptyHint:k="支持上传文件",onFilesChange:N,onUploadSuccess:C,onUploadError:S,onValidationError:A}=e,R=a.useId(),E=a.useRef(null),O=a.useRef(new Map),B=a.useRef(new Map),z=a.useRef([]),[T,L]=a.useState(!1),[I,M]=a.useState([]),P=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{z.current=I,null==N||N(I)},[I,N]),a.useEffect(()=>()=>{for(let e of O.current.values())e.abort();for(let e of B.current.values())e.abort();for(let e of z.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let D=a.useCallback((e,t)=>{M(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),U=a.useCallback(async(e,t)=>{let a=z.current.find(t=>t.id===e);if(!a||c)return;D(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let n=new FormData;if(x)for(let[e,t]of Object.entries(x))n.append(e,t);n.append(h,a.file);try{let t="";if("fetch"===f){let a=new AbortController;B.current.set(e,a);let l=await fetch(i,{method:p,headers:g,body:n,signal:a.signal}),r=await l.text();try{t=r?JSON.parse(r):""}catch(e){t=r}if(!l.ok)throw Error("上传失败:".concat(l.status," ").concat(l.statusText))}else t=await new Promise((t,a)=>{let l=new XMLHttpRequest;if(O.current.set(e,l),l.open(p,i,!0),g)for(let[e,t]of Object.entries(g))l.setRequestHeader(e,t);l.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));D(e,{progress:a})},l.onerror=()=>a(Error("网络异常,上传失败")),l.onabort=()=>a(Error("__ABORTED__")),l.onload=()=>{l.status>=200&&l.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(l)):a(Error("上传失败:".concat(l.status," ").concat(l.statusText)))},l.send(n)});D(e,{status:"success",progress:100,error:""});let a=z.current.find(t=>t.id===e);a&&(null==C||C(a,t))}catch(l){let a=l instanceof Error?l.message:String(l);if("__ABORTED__"===a)return void D(e,{status:"selected",progress:0,error:""});if(t<v){D(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(v,")")}),await new Promise(e=>window.setTimeout(e,b)),await U(e,t+1);return}D(e,{status:"error",error:a});let n=z.current.find(t=>t.id===e);n&&(null==S||S(n,a))}finally{O.current.delete(e),B.current.delete(e)}},[b,v,c,x,h,g,p,S,C,f,D,i]),K=a.useCallback(e=>{U(e,0)},[U]),F=a.useCallback(e=>{var t,a;null==(t=O.current.get(e))||t.abort(),null==(a=B.current.get(e))||a.abort()},[]),V=a.useCallback(()=>{for(let e of z.current)("selected"===e.status||"error"===e.status)&&K(e.id)},[K]),_=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(z.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let n of e){let e="".concat(n.name,"::").concat(n.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),n=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?n.startsWith("".concat(e.slice(0,-1))):n===e)}(n,P)){null==A||A("文件类型不支持:".concat(n.name));continue}if(n.size>u){null==A||A("文件过大(最大 ".concat(s(u),"):").concat(n.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:n,status:"selected",progress:0,error:"",retryCount:0,previewUrl:n.type.startsWith("image/")?URL.createObjectURL(n):""})}}if(!a.length)return;let n=d?[...z.current,...a]:[a[a.length-1]];if(!d)for(let e of z.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(M(n),m&&!y)for(let e of a)K(e.id)},[P,m,c,u,d,A,y,K]),W=a.useCallback(e=>{let t=e.target.files;t&&(_(Array.from(t)),e.target.value="")},[_]),H=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),L(!1),c||_(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[_,c]);return(0,t.jsxs)("div",{className:(0,l.cn)("flex min-h-0 w-full flex-col gap-3",j),children:[(0,t.jsx)("input",{ref:E,id:R,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:W}),(0,t.jsxs)("label",{htmlFor:R,onDragOver:e=>{e.preventDefault(),c||L(!0)},onDragLeave:e=>{e.preventDefault(),L(!1)},onDrop:H,className:(0,l.cn)("flex min-h-[124px] cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-[var(--ds-color-border-default)] px-4 py-6 text-center transition-colors hover:border-[var(--ds-color-border-hover)] hover:bg-[var(--ds-color-surface-main-tint)]",T&&"bg-[var(--ds-color-accent)]/5 border-[var(--ds-color-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(n.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:w}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:k})]}),I.length?(0,t.jsx)("div",{className:"space-y-2",children:I.map(e=>(0,t.jsx)("div",{className:"rounded-md border border-[var(--ds-color-border-default)] p-2.5",children:(0,t.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"truncate text-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:s(e.file.size)}),e.previewUrl?(0,t.jsx)("img",{src:e.previewUrl,alt:e.file.name,className:"mt-2 h-14 w-14 rounded object-cover"}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsx)("div",{className:"mt-2 h-1.5 w-full overflow-hidden rounded bg-[var(--ds-color-surface-main-tint)]",children:(0,t.jsx)("div",{className:"h-full bg-[var(--ds-color-accent)] transition-all",style:{width:"".concat(e.progress,"%")}})}):null,"error"===e.status?(0,t.jsx)("div",{className:"mt-1 text-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),y?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(n.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-color-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>K(e.id),children:["error"===e.status?(0,t.jsx)(n.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(n.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!y&&!m&&I.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(r.Button,{type:"button",size:"sm",onClick:V,disabled:c,children:"上传"})}):null]})}var o=e.i(76639),c=e.i(13354),d=e.i(29250);function u(e){let{open:n,onOpenChange:l,title:s,description:u,uploadUrl:m,resetKey:p}=e,[f,h]=(0,a.useState)(!1),[g,x]=(0,a.useState)(null),v=(0,a.useCallback)(()=>{l(!1),x(null)},[l]),b=(0,a.useCallback)(async()=>{if(!g)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",g),h(!0);try{let t=await (0,d.bridgeFetch)(m,{method:"POST",body:e}),a=Number(t.imported||0),n=Number(t.overwritten||0),l=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(n)+(l>0?",拒绝 ".concat(l):"")),v()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{h(!1)}},[v,g,m]);return(0,t.jsx)(o.Dialog,{open:n,onOpenChange:e=>{l(e),e||x(null)},children:(0,t.jsxs)(o.DialogContent,{className:"flex min-h-[320px] max-w-[560px] flex-col",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(o.DialogTitle,{children:s}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:v,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:m,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:f,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;x(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(n?"open":"closed","-").concat(null!=p?p:m)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(r.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:v,children:"取消"}),(0,t.jsx)(r.Button,{type:"button",size:"lg",variant:"default",disabled:f||null==g,onClick:()=>void b(),children:f?"导入中…":"确定"})]})]})]})})}},39721,e=>{"use strict";e.s(["SkillsManageView",()=>L],39721);var t=e.i(18050),a=e.i(71645),n=e.i(65934),l=e.i(87243),r=e.i(13354),s=e.i(50711),i=e.i(19455),o=e.i(55242),c=e.i(72064),d=e.i(93479),u=e.i(75157);function m(e){let{className:a,...n}=e;return(0,t.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:(0,u.cn)("flex w-full justify-end",a),...n})}let p=a.forwardRef((e,a)=>{let{className:n,...l}=e;return(0,t.jsx)("ul",{ref:a,"data-slot":"pagination-content",className:(0,u.cn)("flex flex-row flex-wrap items-center justify-end gap-1",n),...l})});p.displayName="PaginationContent";let f=a.forwardRef((e,a)=>{let{className:n,...l}=e;return(0,t.jsx)("li",{ref:a,"data-slot":"pagination-item",className:(0,u.cn)("",n),...l})});f.displayName="PaginationItem",a.forwardRef((e,a)=>{let{className:n,isActive:l,size:r="icon",...s}=e;return(0,t.jsx)("a",{ref:a,"aria-current":l?"page":void 0,"data-slot":"pagination-link","data-active":l?"true":void 0,className:(0,u.cn)((0,i.buttonVariants)({variant:l?"outline":"ghost",size:r}),n),...s})}).displayName="PaginationLink";var h=e.i(62427),g=e.i(2839),x=e.i(85413),v=e.i(36413);function b(e,t){var a,n,l;let r=(l=null!=(n=null!=(a=e.description)?a:e.whenToUse)?n:"")?l.length>100?l.slice(0,100):l:"";return{...e,id:e.name,label:"/".concat(e.name),description:r,isRuntime:t,canManage:e.canManage}}function y(e){let{item:a,installing:n,removing:l,canRemove:r,onInstall:s,onRemove:o}=e,d=a.skillName||a.id,m=a.description||a.title||"",p=!!a.installed,f=!p,h=n||l;return(0,t.jsxs)("article",{className:(0,u.cn)("group relative rounded-md border border-solid border-[var(--border)] bg-[var(--surface-1)] p-5 transition-[border-color,box-shadow]","hover:border-[var(--ds-color-border-hover)] hover:shadow-[var(--shadow-lg)]"),children:[f||p&&r?(0,t.jsx)("div",{className:(0,u.cn)("absolute right-2 top-2 transition-opacity",h?"pointer-events-auto opacity-100":"pointer-events-none invisible opacity-0 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100"),children:f?(0,t.jsxs)(i.Button,{type:"button",size:"sm",variant:"plain-outline",disabled:n,className:"inline-flex h-7 items-center gap-1 !rounded-full !px-2 !text-sm leading-none",onClick:()=>s(a.id,d),children:[(0,t.jsx)(c.default,{name:"CloudDownload",size:14,className:"shrink-0"}),(0,t.jsx)("span",{children:n?"添加中…":"添加"})]}):(0,t.jsxs)(i.Button,{type:"button",size:"sm",variant:"plain-outline",disabled:l,className:"inline-flex h-7 items-center gap-1 !rounded-full border-[var(--ds-danger)] !px-2 !text-sm leading-none text-red-600 hover:text-red-700",onClick:()=>o(d),children:[(0,t.jsx)(c.default,{name:"Trash2",size:14,className:"shrink-0"}),(0,t.jsx)("span",{children:l?"移除中…":"移除"})]})}):null,(0,t.jsxs)("div",{className:"flex min-w-0 items-start gap-3",children:[(0,t.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-full bg-[var(--ds-color-success-bg)] text-base font-semibold text-[var(--ds-color-success-text)]","aria-hidden":!0,children:function(e){let t=e.trim();return t?t.charAt(0).toUpperCase():"?"}(d)}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsxs)("p",{className:"flex min-w-0 items-center gap-2",children:[(0,t.jsx)("span",{className:"truncate text-base font-medium text-[var(--ds-text)]",children:d}),p?(0,t.jsx)(v.StatusBadge,{tone:"success",className:"shrink-0",children:"已添加"}):null]}),m?(0,t.jsx)("p",{className:"mt-1 line-clamp-2 text-sm leading-relaxed text-[var(--ds-muted)]",children:m}):null]})]})]})}function j(e){let{active:n,wsUrl:l,apiBase:s,agent:o,baseSkillNames:u,onAfterInstall:v,onRemove:b,className:j}=e,[w,k]=(0,a.useState)(""),[N,C]=(0,a.useState)(1),[S,A]=(0,a.useState)(0),[R,E]=(0,a.useState)([]),[O,B]=(0,a.useState)(!1),[z,T]=(0,a.useState)({}),[L,I]=(0,a.useState)({}),M=(0,a.useRef)(0),P=(0,a.useCallback)(async()=>{let e=++M.current;B(!0);try{let t=await (0,h.listCloudSkillCatalog)(l,s,o,w,N,12);if(e!==M.current)return;let a=Array.isArray(t.items)?t.items:[],n=[];for(let e of a)e&&"object"==typeof e&&e.id&&n.push({id:String(e.id),title:String(e.title||""),skillName:String(e.skillName||""),description:"string"==typeof e.description?e.description:"",installed:!!e.installed});E(n),A(t.totalPages)}catch(t){if(e!==M.current)return;E([]),A(0)}finally{e===M.current&&B(!1)}},[l,s,o,w,N]);(0,a.useEffect)(()=>{if(!n){k(""),C(1),A(0),E([]),T({}),I({}),M.current+=1;return}P()},[n,P]);let D=(0,a.useCallback)(async(e,t)=>{T(t=>({...t,[e]:!0}));try{await (0,h.installCloudSkill)(l,s,o,e),r.appToast.success("云端技能已安装:".concat(t)),await P(),null==v||v()}catch(e){r.appToast.error("安装失败:".concat(e instanceof Error?e.message:String(e)))}finally{T(t=>{let a={...t};return delete a[e],a})}},[l,s,o,P,v]),U=(0,a.useCallback)(async e=>{if(b){I(t=>({...t,[e]:!0}));try{await b(e),await P(),null==v||v()}finally{I(t=>{let a={...t};return delete a[e],a})}}},[b,P,v]),K=(0,a.useCallback)(e=>{C(1),k(e)},[]);if(!n)return null;let F=S>0?"第 ".concat(N,"/").concat(S," 页"):"第 0/0 页",V=O||N<=1,_=O||S<=0||N>=S;return(0,t.jsx)("div",{className:j,children:(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(d.Input,{type:"search",value:w,onChange:e=>K(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[var(--ds-muted)]","aria-hidden":!0})]}),O?(0,t.jsx)(g.Loading,{text:"加载中…",className:"min-h-[240px]"}):0===R.length?(0,t.jsx)(x.Empty,{text:"暂无 Skill",className:"min-h-[240px]",showImage:!1}):(0,t.jsx)("div",{className:"grid grid-cols-2 gap-3",children:R.map(e=>{let a=e.skillName||e.id,n=!!e.installed&&!(null==u?void 0:u.has(a));return(0,t.jsx)(y,{item:e,installing:!!z[e.id],removing:!!L[a],canRemove:n,onInstall:(e,t)=>void D(e,t),onRemove:e=>void U(e)},e.id)})}),(0,t.jsx)(m,{className:"mx-0 w-full",children:(0,t.jsxs)(p,{className:"w-full flex-wrap justify-end gap-2",children:[(0,t.jsx)(f,{children:(0,t.jsxs)(i.Button,{type:"button",variant:"outline",size:"sm",disabled:V,className:"gap-1",onClick:()=>C(e=>Math.max(1,e-1)),"aria-label":"上一页",children:[(0,t.jsx)(c.default,{name:"ChevronLeft",size:16,className:"shrink-0"}),"上一页"]})}),(0,t.jsx)(f,{children:(0,t.jsx)("span",{className:"flex h-9 min-w-[6.5rem] items-center justify-center text-[var(--ds-muted)]",children:F})}),(0,t.jsx)(f,{children:(0,t.jsxs)(i.Button,{type:"button",variant:"outline",size:"sm",disabled:_,className:"gap-1",onClick:()=>C(e=>e+1),"aria-label":"下一页",children:["下一页",(0,t.jsx)(c.default,{name:"ChevronRight",size:16,className:"shrink-0",strokeWidth:1})]})})]})})]})})}function w(e){let{open:a,onOpenChange:n,wsUrl:l,apiBase:r,agent:s,baseSkillNames:i,onAfterInstall:c,onRemove:d}=e;return(0,t.jsx)(o.AppDialog,{open:a,onOpenChange:n,title:"Skill商店",width:"max-w-5xl",minHeight:"520px",bodyClassName:"overflow-y-auto",children:(0,t.jsx)(j,{active:a,wsUrl:l,apiBase:r,agent:s,enabledSkillNames:[],baseSkillNames:i,onAfterInstall:c,onRemove:d,className:"min-h-0"})})}var k=e.i(36845),N=e.i(53925);function C(e){let{open:a,onOpenChange:n,wsUrl:l,apiBase:r,agent:s}=e;return(0,t.jsx)(N.ResourceImportDialog,{open:a,onOpenChange:n,title:"导入 Skill zip",description:"选择一个 zip 文件并导入到 skills-runtime。",uploadUrl:(0,k.buildSkillsRuntimeImportUrl)(l,r,s),resetKey:s})}var S=e.i(67327);function A(e){let{open:l,onOpenChange:s,skillName:c,wsUrl:d,apiBase:u,agent:m,onSaved:p}=e,f=(0,n.useAppStore)(e=>e.wsConnected),{sendRestartSubprocess:g}=(0,S.useWebSocketSender)(),[x,v]=(0,a.useState)(""),[b,y]=(0,a.useState)(!1),[j,w]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!l||!c.trim())return;let e=!1;return y(!0),v(""),(0,h.loadBaseSkillMd)(d,u,m,c).then(t=>{e||v("string"==typeof t.content?t.content:"")}).catch(t=>{e||(r.appToast.error("加载 SKILL.md 失败:".concat(t instanceof Error?t.message:String(t))),s(!1))}).finally(()=>{e||y(!1)}),()=>{e=!0}},[l,c,d,u,m,s]);let k=(0,a.useCallback)(async()=>{if(c.trim()){w(!0);try{await (0,h.saveBaseSkillMd)(d,u,m,c,x),f&&g("save-base-skill-md"),r.appToast.success(f?"SKILL.md 已保存,并已重启当前 session 子进程。":"SKILL.md 已保存。重连 WebSocket 后生效。"),s(!1),null==p||p()}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{w(!1)}}},[c,d,u,m,x,f,g,s,p]);return(0,t.jsx)(o.AppDialog,{open:l,onOpenChange:s,title:"编辑 SKILL.md · /".concat(c),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:b||j,onClick:()=>s(!1),children:"取消"}),(0,t.jsx)(i.Button,{type:"button",size:"lg",disabled:b||j,onClick:()=>void k(),children:"保存"})]}),children:b?(0,t.jsx)("p",{className:"py-6 text-center text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-color-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] p-3 leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:x,placeholder:"Markdown 源码…",onChange:e=>v(e.target.value)})})}var R=e.i(94055),E=e.i(94197),O=e.i(92715);function B(e){let{items:n,saveBusy:l,onToggleEnabled:r,onEditBase:s,onExport:i,onRemove:o,className:u}=e,[m,p]=(0,a.useState)(""),f=(0,a.useMemo)(()=>n.filter(e=>(function(e,t){var a;let n=t.trim().toLowerCase();return!n||"".concat(e.name," ").concat(null!=(a=e.description)?a:"").toLowerCase().includes(n)})(e,m)),[n,m]),h=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:"/".concat(e.name)}),(0,t.jsx)(v.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"status",title:"状态",headerClassName:"w-[160px] ",cellClassName:"w-[160px] text-[var(--ds-text)]",render:e=>"base"===e.source?"基础":"已安装"},{key:"enabled",title:"启用/未启用",headerClassName:"w-[160px] text-right ",cellClassName:"w-[160px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center justify-end gap-2",children:(0,t.jsx)(R.AccentSwitch,{checked:e.enabled,disabled:l,onCheckedChange:t=>r(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>{let a=!0===e.canManage||"agent"===e.runtimeLayer;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(E.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(e.name),disabled:l,onClick:()=>s(e.name)}),a?(0,t.jsx)(E.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:l,onClick:()=>i(e.name)}):null,(0,t.jsx)(E.IconTooltipButton,{icon:"Trash2",label:a?"删除":"系统技能不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:l||!a,onClick:()=>{a&&o(e.name)}})]})}}],g=m.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(d.Input,{type:"search",value:m,onChange:e=>p(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(O.AppTable,{rows:f,columns:h,getRowKey:e=>"skills:".concat(e.name),className:u,emptyText:g?"无匹配的 Skill":void 0})]})}var z=e.i(68499),T=e.i(56708);function L(){let e=(0,n.useAppStore)(e=>e.wsUrl),o=(0,n.useAppStore)(e=>e.apiBase),d=(0,n.useAppStore)(e=>e.agentConfig),u=(0,n.useAppStore)(e=>e.patchAgentConfig),{currentAgent:m,loadAgentConfig:p}=(0,l.useSession)(),f=(0,s.usePersistAgentConfigField)("skills"),x=d.skills,[v,y]=(0,a.useState)([]),[j,k]=(0,a.useState)([]),[N,S]=(0,a.useState)(!1),[R,E]=(0,a.useState)(!1),[O,L]=(0,a.useState)(!1),[I,M]=(0,a.useState)(!1),[P,D]=(0,a.useState)(!1),[U,K]=(0,a.useState)(""),[F,V]=(0,a.useState)(!1);(0,a.useEffect)(()=>{p()},[p]);let _=(0,a.useCallback)(async(e,t)=>{L(!0);try{await f(e,{silent:t})}finally{L(!1)}},[f]),W=(0,a.useCallback)(async()=>{y([]),S(!0);try{var t;let a=await (0,h.listBaseSkills)(e,o,m());y((null!=(t=a.skills)?t:[]).map(e=>b(e,!1)))}catch(e){y([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{S(!1)}},[e,o,m]),H=(0,a.useCallback)(async()=>{k([]),E(!0);try{var t;let a=await (0,h.listInstalledSkills)(e,o,m());k((null!=(t=a.skills)?t:[]).map(e=>b(e,!0)))}catch(e){k([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{E(!1)}},[e,o,m]),J=(0,a.useCallback)(async()=>{await Promise.all([W(),H()])},[W,H]),Y=(0,a.useCallback)(async t=>{if(await (0,z.confirmAlertDialog)({title:"确认删除 Skill 包?",description:"Skill:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,h.deleteRuntimeSkill)(e,o,m(),t);let a=x.filter(e=>e!==t);u({skills:a}),await _(a,!0),await J()}catch(e){r.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[e,o,m,x,u,_,J]);(0,a.useEffect)(()=>{J()},[J]);let q=(0,a.useCallback)(()=>{J()},[J]),G=(0,a.useMemo)(()=>new Set(v.map(e=>e.id)),[v]),X=(0,a.useMemo)(()=>{let e=v.map(e=>({name:e.id,source:"base",description:e.description||"",enabled:x.includes(e.id),canManage:e.canManage,runtimeLayer:e.runtimeLayer})),t=new Set(e.map(e=>e.name)),a=j.filter(e=>!t.has(e.id)).slice().sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({name:e.id,source:"runtime",description:e.description||"",enabled:x.includes(e.id),canManage:e.canManage,runtimeLayer:e.runtimeLayer}));return[...e.sort((e,t)=>e.name.localeCompare(t.name)),...a]},[v,j,x]),Q=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...x,e])].sort():x.filter(t=>t!==e);u({skills:a}),_(a,!0)},[x,u,_]),Z=(0,a.useCallback)(t=>{window.open((0,h.exportRuntimeSkillUrl)(e,o,m(),t),"_blank","noopener")},[e,o,m]),$=(0,a.useCallback)(e=>{K(e),V(!0)},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(T.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)(i.Button,{id:"btnAgentImportSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>D(!0),children:[(0,t.jsx)(c.default,{name:"Import",size:16,className:"align-middle"}),"导入Skill"]}),(0,t.jsxs)(i.Button,{id:"btnAgentAddSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>M(!0),children:[(0,t.jsx)(c.default,{name:"Plus",size:16,className:"align-middle"}),"添加Skill"]})]})}),N||R?(0,t.jsx)(g.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(B,{items:X,saveBusy:O,onToggleEnabled:Q,onEditBase:$,onExport:Z,onRemove:Y}),(0,t.jsx)(w,{open:I,onOpenChange:M,wsUrl:e,apiBase:o,agent:m(),baseSkillNames:G,onAfterInstall:q,onRemove:Y}),(0,t.jsx)(C,{open:P,onOpenChange:e=>{D(e),e||J()},wsUrl:e,apiBase:o,agent:m()}),(0,t.jsx)(A,{open:F,onOpenChange:V,skillName:U,wsUrl:e,apiBase:o,agent:m(),onSaved:()=>void J()})]})}}]);
|