@auto-ai/agent 2.1.210 → 2.1.212
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/16ee3f2be4586638.js +1 -0
- package/dist/safe-a/_next/static/chunks/{98a2db7a6b8d43c0.js → 42d0ae4192d72f8e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/5b4c1faefda9575b.js +1 -0
- package/dist/safe-a/_next/static/chunks/6a199e5f9da2ec4e.js +1 -0
- package/dist/safe-a/_next/static/chunks/846fd48826ed3d89.js +1 -0
- package/dist/safe-a/_next/static/chunks/{54ce15edde8ce98c.js → 9971428081f87b2e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{c9204488e115fc38.js → b31fde4b83862330.js} +1 -1
- package/dist/safe-a/_next/static/chunks/b744b1f1595cffb6.js +1 -0
- package/dist/safe-a/_next/static/chunks/c7ce2c0e40c62b6b.js +1 -0
- package/dist/safe-a/_next/static/chunks/dda0af99af0e0631.css +7 -0
- package/dist/safe-a/_next/static/chunks/ece085cc915ab5e5.js +1 -0
- package/dist/safe-a/_next/static/chunks/f37854d807ee41ac.css +1 -0
- package/dist/safe-a/_next/static/chunks/{31c93ba513dea5e7.js → fd9b8164ea743aa0.js} +1 -1
- package/dist/safe-a/index.html +2 -2
- package/dist/safe-a/index.txt +19 -19
- package/dist/safe-a/manage/about/index.html +2 -2
- package/dist/safe-a/manage/about/index.txt +19 -19
- package/dist/safe-a/manage/env/index.html +2 -2
- package/dist/safe-a/manage/env/index.txt +21 -21
- package/dist/safe-a/manage/geelib/index.html +2 -2
- package/dist/safe-a/manage/geelib/index.txt +21 -21
- package/dist/safe-a/manage/general/index.html +2 -2
- package/dist/safe-a/manage/general/index.txt +19 -19
- package/dist/safe-a/manage/git/index.html +2 -2
- package/dist/safe-a/manage/git/index.txt +21 -21
- package/dist/safe-a/manage/im/index.html +2 -2
- package/dist/safe-a/manage/im/index.txt +21 -21
- package/dist/safe-a/manage/index.html +2 -2
- package/dist/safe-a/manage/index.txt +16 -16
- package/dist/safe-a/manage/library/index.html +2 -2
- package/dist/safe-a/manage/library/index.txt +19 -19
- package/dist/safe-a/manage/mcp/index.html +2 -2
- package/dist/safe-a/manage/mcp/index.txt +19 -19
- package/dist/safe-a/manage/permissions/index.html +2 -2
- package/dist/safe-a/manage/permissions/index.txt +19 -19
- package/dist/safe-a/manage/skills/index.html +2 -2
- package/dist/safe-a/manage/skills/index.txt +19 -19
- package/dist/safe-a/manage/task/index.html +2 -2
- package/dist/safe-a/manage/task/index.txt +19 -19
- package/dist/safe-a/manage/teams/index.html +2 -2
- package/dist/safe-a/manage/teams/index.txt +19 -19
- package/dist/safe-a/manage/tools/index.html +2 -2
- package/dist/safe-a/manage/tools/index.txt +19 -19
- package/mcps-runtime/claude-geelib-channel/server/index.mjs +5 -0
- package/mcps-runtime/claude-ws-channel/server/gateway.bundle.mjs +37 -4
- package/package.json +6 -6
- package/dist/safe-a/_next/static/chunks/3efccd72f964d9d3.js +0 -1
- package/dist/safe-a/_next/static/chunks/4d97363bb1a6633d.js +0 -1
- package/dist/safe-a/_next/static/chunks/713b097e1a0b340b.js +0 -1
- package/dist/safe-a/_next/static/chunks/b08f1ee81b569c60.js +0 -1
- package/dist/safe-a/_next/static/chunks/bff0a34243e1f2c7.css +0 -7
- package/dist/safe-a/_next/static/chunks/d1e3d3d09ff4ed38.js +0 -1
- package/dist/safe-a/_next/static/chunks/d6c35821582ac6a8.js +0 -1
- package/dist/safe-a/_next/static/chunks/e048616a4731c6b2.js +0 -1
- package/dist/safe-a/_next/static/chunks/f0f534c89e005d26.css +0 -1
- /package/dist/safe-a/_next/static/{dNJkIrryvG5ItxyuCnnQF → AY06zpWQV0yfK_fQwZZ5t}/_buildManifest.js +0 -0
- /package/dist/safe-a/_next/static/{dNJkIrryvG5ItxyuCnnQF → AY06zpWQV0yfK_fQwZZ5t}/_clientMiddlewareManifest.json +0 -0
- /package/dist/safe-a/_next/static/{dNJkIrryvG5ItxyuCnnQF → AY06zpWQV0yfK_fQwZZ5t}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,75854,e=>{"use strict";e.s(["persistAgentEnv",()=>n]);var t=e.i(18805),a=e.i(15327),r=e.i(17655),l=e.i(49377);async function n(e,n,s,i,o,c){var d,u,p,m;let f=l.useAppStore.getState(),g={tools:f.agentConfig.tools.slice(),disallowedTools:f.agentConfig.disallowedTools.slice(),mcpServers:f.agentConfig.mcpServers.slice(),skills:f.agentConfig.skills.slice(),agentTeams:f.agentConfig.agentTeams.slice(),model:f.agentConfig.model,rules:f.agentConfig.rules.slice(),effort:null!=(d=f.agentConfig.effort)?d:null,background:null!=(u=f.agentConfig.background)&&u,isolation:null!=(p=f.agentConfig.isolation)?p:"",whentouse:null!=(m=f.agentConfig.whentouse)?m:"",env:i,llmProviders:f.agentConfig.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),...c},x=await (0,r.loadAgentPrompt)(e,n,s);await (0,r.saveAgentConfig)(e,n,s,g,{prompt:x}),f.setAgentConfig({...g,env:{...i}}),l.useAppStore.getState().wsConnected&&o();let h=l.useAppStore.getState();h.setStatus("环境变量已保存"+(h.wsConnected?",已请求 worker 重新加载配置":""),(0,a.resolveInfoStatusClass)(h.bridgeReady,h.wsConnected)),t.appToast.success(h.wsConnected?"已保存到 agent.json,并已请求 worker 重新加载配置。":"已保存到 agent.json。重连 WebSocket 后子进程环境将同步。")}},57100,e=>{"use strict";e.s(["composeRefs",()=>r,"useComposedRefs",()=>l]);var t=e.i(65765);function a(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,l=t.map(t=>{let l=a(t,e);return r||"function"!=typeof l||(r=!0),l});if(r)return()=>{for(let e=0;e<l.length;e++){let r=l[e];"function"==typeof r?r():a(t[e],null)}}}}function l(){for(var e=arguments.length,a=Array(e),l=0;l<e;l++)a[l]=arguments[l];return t.useCallback(r(...a),a)}},92371,e=>{"use strict";e.s(["Textarea",()=>r]);var t=e.i(59992),a=e.i(96745);function r(e){let{className:r,...l}=e;return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,a.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),...l})}},49091,35182,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 a(e){let t=String(e).split(/\r?\n/),a={},r=/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/;for(let e=0;e<t.length;e++){let l=t[e],n=r.exec(l);n&&(a[n[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}(n[2]))}return a}function r(e,a){let r=Array.isArray(e)?e:[],l=new Set;for(let e=0;e<r.length;e++){let t=r[e];t&&"object"==typeof t&&"string"==typeof t.key&&l.add(t.key)}let n=[];for(let e=0;e<r.length;e++){let l=r[e];if(!l||"object"!=typeof l||"string"!=typeof l.key)continue;let s=l.key;if(!Object.prototype.hasOwnProperty.call(a,s))continue;let i=a[s];null!=i&&""!==String(i).trim()&&n.push("".concat(s,"=").concat(t(String(i))))}let s=Object.keys(a).filter(e=>!l.has(e)).sort();for(let e=0;e<s.length;e++){let r=s[e],l=a[r];null!=l&&""!==String(l).trim()&&n.push("".concat(r,"=").concat(t(String(l))))}let i=n.join("\n");return i.length>0?"".concat(i,"\n"):""}e.s(["buildEnvFileContentFromForm",()=>r,"parseEnvContentToMap",()=>a],49091),e.s(["loadDemoSingleMessage",()=>c,"loadSystemEnv",()=>s,"saveSystemEnv",()=>i,"saveSystemMcpJson",()=>o],35182);var l=e.i(61293),n=e.i(10602);async function s(e,t,a){return(0,l.get)((0,n.buildSystemEnvApiUrl)(e,t,a))}async function i(e,t,a,r){await (0,l.patch)((0,n.buildSystemEnvApiUrl)(e,t,a),{content:r})}async function o(e,t,a,r){await (0,l.patch)((0,n.buildSystemMcpJsonApiUrl)(e,t,a),{content:r})}async function c(){return(0,l.get)("/api/demo/single-message")}},82735,e=>{"use strict";e.s(["AgentEnvGroupSettingsView",()=>S],82735);var t=e.i(59992),a=e.i(26162),r=e.i(84081),l=e.i(92369),n=e.i(55105),s=e.i(92371),i=e.i(72483),o=e.i(96745);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:a,fields:r,fieldValues:l,whentouseValue:p,onFieldChange:m,onWhentouseChange:f}=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"===a?(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=>f(e.target.value)})]}):null,r.map(e=>{let a="agent-env-field-".concat(e.key),r="string"==typeof l[e.key]?l[e.key]:"";if("LLM_PROVIDER"===e.key){let l="anthropic"===r||"openai"===r?r:"";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:a,children:e.label}),(0,t.jsxs)(i.Select,{value:l||c,onValueChange:t=>m(e.key,t===c?"":t),children:[(0,t.jsx)(i.SelectTrigger,{id:a,className:(0,o.cn)("h-10 w-full border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)]",!l&&"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 l="1"===r?"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:a,children:e.label}),(0,t.jsxs)(i.Select,{value:l,onValueChange:t=>m(e.key,t),children:[(0,t.jsx)(i.SelectTrigger,{id:a,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:a,children:e.label}),(0,t.jsx)(n.Input,{id:a,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:r,onChange:t=>m(e.key,t.target.value)})]},e.key)})]})}var m=e.i(65765),f=e.i(18805),g=e.i(36763),x=e.i(37566);let h=["llm","git","geelib","tutui","system"];var v=e.i(75854),b=e.i(49091),y=e.i(35182),j=e.i(49377);function S(e){let{group:n}=e,{loading:s,saving:i,groupFields:o,fieldValues:c,whentouseValue:d,setField:u,setWhentouseValue:S,reset:w,save:C}=function(e){let t=(0,j.useAppStore)(e=>e.wsUrl),a=(0,j.useAppStore)(e=>e.apiBase),r=(0,j.useAppStore)(e=>e.agentConfig),{currentAgent:l,loadAgentConfig:n}=(0,g.useSession)(),{sendReloadAgentConfig:s}=(0,x.useWebSocketSender)(),[i,o]=(0,m.useState)(!0),[c,d]=(0,m.useState)(!1),[u,p]=(0,m.useState)([]),[S,w]=(0,m.useState)({}),[C,N]=(0,m.useState)({}),[k,T]=(0,m.useState)(""),A=(0,m.useMemo)(()=>(function(e){let t={};for(let e of h)t[e]=[];for(let a of e)h.includes(a.group)&&t[a.group].push(a);return t})(u)[e],[u,e]),E=(0,m.useCallback)(e=>{N(function(e,t,a){let r={};for(let l of t){let t=e[l.key];if("string"==typeof t&&t.length>0){r[l.key]=t;continue}let n=a[l.key];r[l.key]="string"==typeof n?n:""}return r}(e,A,S))},[A,S]),M=(0,m.useCallback)(e=>{T("string"==typeof e?e:"")},[]),R=(0,m.useCallback)(async()=>{try{let e=await (0,y.loadSystemEnv)(t,a,l()),r="string"==typeof e.content?e.content:"",n=function(e){if(!Array.isArray(e))return[];let t=[];for(let a of e){if(!a||"object"!=typeof a)continue;let e="string"==typeof a.key?a.key.trim():"",r="string"==typeof a.group?a.group.trim():"";e&&h.includes(r)&&t.push({key:e,group:r,label:"string"==typeof a.label&&a.label.trim()?a.label.trim():e,placeholder:"string"==typeof a.placeholder?a.placeholder:""})}return t}(e.schema),s=(0,b.parseEnvContentToMap)(r);p(n),w(function(e,t){let a={};for(let l of e){var r;a[l.key]=null!=(r=t[l.key])?r:""}return a}(n,s))}catch(e){f.appToast.error("加载环境变量表单配置失败:".concat(e instanceof Error?e.message:String(e))),p([]),w({})}},[t,a,l]),I=(0,m.useCallback)(async()=>{o(!0);try{await Promise.all([n(),R()])}finally{o(!1)}},[n,R]);(0,m.useEffect)(()=>{I()},[I]),(0,m.useEffect)(()=>{!i&&A.length&&E({...r.env})},[r.env,E,i,A.length]),(0,m.useEffect)(()=>{i||"system"!==e||M(r.whentouse)},[r.whentouse,e,i,M]);let _=(0,m.useCallback)((e,t)=>{N(a=>({...a,[e]:t}))},[]),L=(0,m.useCallback)(()=>{E({...r.env}),"system"===e&&M(r.whentouse)},[r.env,r.whentouse,e,E,M]),P=(0,m.useCallback)(async()=>{let r=function(e,t,a){let r={...e};for(let e of t){var l;let t=String(null!=(l=a[e.key])?l:"").trim();t?r[e.key]=t:delete r[e.key]}return r}(j.useAppStore.getState().agentConfig.env,A,C);d(!0);try{if("system"===e){let e=j.useAppStore.getState().agentConfig;j.useAppStore.getState().setAgentConfig({...e,whentouse:k})}await (0,v.persistAgentEnv)(t,a,l(),r,s),await n()}catch(e){f.appToast.error("保存环境变量失败:".concat(e instanceof Error?e.message:String(e)))}finally{d(!1)}},[A,C,k,e,t,a,l,s,n]);return{loading:i,saving:c,groupFields:A,fieldValues:C,whentouseValue:k,setField:_,setWhentouseValue:T,reset:L,save:P}}(n),N="system"===n||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)(r.Loading,{className:"min-h-[240px]",text:"加载中…"}):N?(0,t.jsx)(p,{group:n,fields:o,fieldValues:c,whentouseValue:d,onFieldChange:u,onWhentouseChange:S}):(0,t.jsx)(a.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)(l.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:s||i||!N,onClick:()=>w(),className:"cursor-pointer",children:"取消"}),(0,t.jsx)(l.Button,{type:"button",size:"lg",disabled:s||i||!N,onClick:()=>void C(),className:"cursor-pointer",children:i?"保存中…":"保存"})]})]})}},40751,e=>{"use strict";e.s(["AppDialog",()=>n]);var t=e.i(59992),a=e.i(65765),r=e.i(65486),l=e.i(96745);function n(e){let{open:n,onOpenChange:s,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u}=e,p=(0,a.useId)();return(0,t.jsx)(r.Dialog,{open:n,onOpenChange:s,children:(0,t.jsxs)(r.DialogContent,{"aria-labelledby":p,className:(0,l.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(r.DialogHeader,{children:[(0,t.jsx)(r.DialogTitle,{id:p,children:i}),(0,t.jsx)(r.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(r.DialogBody,{className:"!px-4 !py-3",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]})})}},13014,e=>{"use strict";e.s(["AppTable",()=>u],13014);var t=e.i(59992),a=e.i(26162),r=e.i(65765),l=e.i(96745);let n=r.forwardRef((e,a)=>{let{className:r,...n}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:a,className:(0,l.cn)("w-full caption-bottom border-collapse",r),...n})})});n.displayName="Table";let s=r.forwardRef((e,a)=>{let{className:r,...n}=e;return(0,t.jsx)("thead",{ref:a,className:(0,l.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",r),...n})});s.displayName="TableHeader";let i=r.forwardRef((e,a)=>{let{className:n,viewportFit:s=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=r.useRef(null),p=r.useCallback(e=>{u.current=e,"function"==typeof a?a(e):a&&(a.current=e)},[a]),[m,f]=r.useState(void 0);return r.useLayoutEffect(()=>{var e,t;if(!s)return void f(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let r=a.getBoundingClientRect().top;f(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-r-(i+o))))};a();let r=new ResizeObserver(()=>{a()});try{r.observe(document.body)}catch(e){}return window.addEventListener("resize",a),null==(e=window.visualViewport)||e.addEventListener("resize",a),null==(t=window.visualViewport)||t.addEventListener("scroll",a),window.addEventListener("scroll",a,!0),()=>{var e,t;r.disconnect(),window.removeEventListener("resize",a),null==(e=window.visualViewport)||e.removeEventListener("resize",a),null==(t=window.visualViewport)||t.removeEventListener("scroll",a),window.removeEventListener("scroll",a,!0)}},[s,i,o]),(0,t.jsx)("tbody",{ref:p,className:(0,l.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",n),style:s&&void 0!==m?{...c,maxHeight:m}:c,...d})});i.displayName="TableBody";let o=r.forwardRef((e,a)=>{let{className:r,hoverable:n=!0,...s}=e;return(0,t.jsx)("tr",{ref:a,className:(0,l.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-color-surface-item-active)]",n&&"group/table-row",r),...s})});o.displayName="TableRow";let c=r.forwardRef((e,a)=>{let{className:r,...n}=e;return(0,t.jsx)("th",{ref:a,className:(0,l.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",r),...n})});c.displayName="TableHead";let d=r.forwardRef((e,a)=>{let{className:r,...n}=e;return(0,t.jsx)("td",{ref:a,className:(0,l.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)]",r),...n})});function u(e){let{rows:r,columns:u,getRowKey:p,className:m,rowClassName:f,headerRowClassName:g,emptyText:x,emptyNode:h,bodyProps:v}=e;return(0,t.jsx)("div",{className:(0,l.cn)("overflow-hidden border border-[var(--ds-color-border-default)]",m),children:(0,t.jsxs)(n,{children:[(0,t.jsx)(s,{children:(0,t.jsx)(o,{className:(0,l.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:r.length?r.map(e=>(0,t.jsx)(o,{className:"function"==typeof f?f(e):f,children:u.map(a=>(0,t.jsx)(d,{className:a.cellClassName,children:a.render(e)},a.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)(a.Empty,{text:x})})})})]})})}d.displayName="TableCell"},99329,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>j,"deleteRuntimeMcp",()=>p,"deleteRuntimeSkill",()=>S,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>f,"exportRuntimeSkillUrl",()=>w,"exportRuntimeToolUrl",()=>m,"importRuntimeMcp",()=>x,"importRuntimeTool",()=>g,"installCloudSkill",()=>N,"listBaseSkills",()=>n,"listCloudSkillCatalog",()=>C,"listInstalledSkills",()=>s,"listInstalledTools",()=>l,"listMcpServers",()=>r,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>c,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>h,"loadRuntimeMcpItemConfig",()=>b,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>v,"saveRuntimeMcpItemConfig",()=>y]);var t=e.i(61293),a=e.i(10602);async function r(e,r,l){let n=await (0,t.get)((0,a.buildMcpServersListUrl)(e,r,l));return{servers:Array.isArray(n.servers)?n.servers:[]}}async function l(e,r,l){let n=await (0,t.get)((0,a.buildToolInstalledListUrl)(e,r,l));return{tools:Array.isArray(n.tools)?n.tools:[]}}async function n(e,r,l){let n=await (0,t.get)((0,a.buildSkillBaseListUrl)(e,r,l));return{skills:Array.isArray(n.skills)?n.skills:[]}}async function s(e,r,l){let n=await (0,t.get)((0,a.buildSkillInstalledListUrl)(e,r,l));return{skills:Array.isArray(n.skills)?n.skills:[]}}async function i(e,r,l,n){return(0,t.get)((0,a.buildBaseSkillMdUrl)(e,r,l,n))}async function o(e,r,l,n,s){await (0,t.put)((0,a.buildBaseSkillMdUrl)(e,r,l,n),{content:s})}async function c(e,r,l){let n=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,r,l));return{runtimeToolsDir:"string"==typeof n.runtimeToolsDir?n.runtimeToolsDir:"",items:Array.isArray(n.items)?n.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,r,l){let n=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,r,l));return{mcpRuntimeDir:"string"==typeof n.mcpRuntimeDir?n.mcpRuntimeDir:"",items:Array.isArray(n.items)?n.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,r,l,n){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,r,l,n))}async function p(e,r,l,n){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,r,l,n))}function m(e,t,r,l){return(0,a.buildToolsRuntimeExportUrl)(e,t,r,l)}function f(e,t,r,l){return(0,a.buildMcpRuntimeExportUrl)(e,t,r,l)}async function g(e,r,l,n){let s=new FormData;return s.append("file",n),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,r,l),s,{type:"file"})}async function x(e,r,l,n){let s=new FormData;return s.append("file",n),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,r,l),s,{type:"file"})}async function h(e,r,l){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,r,l))}async function v(e,r,l,n){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,r,l),{content:n})}async function b(e,r,l,n,s){return(0,t.get)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,l,n,s))}async function y(e,r,l,n,s,i){await (0,t.put)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,l,n,s),{server:i})}async function j(e,r,l,n,s){await (0,t.del)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,l,n,s))}async function S(e,r,l,n){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,r,l,n))}function w(e,t,r,l){return(0,a.buildSkillsRuntimeExportUrl)(e,t,r,l)}async function C(e,r,l,n,s,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,r,l,n,s,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function N(e,r,l,n){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,r,l),{id:n})}},84919,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],84919);var t=e.i(59992),a=e.i(65765),r=e.i(87655),l=e.i(96745),n=e.i(92369);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:m="POST",transport:f="xhr",fieldName:g="file",headers:x,extraFormData:h,autoRetryTimes:v=0,autoRetryDelayMs:b=800,selectionOnly:y=!1,className:j,emptyTitle:S="点击或拖拽文件到此处",emptyHint:w="支持上传文件",onFilesChange:C,onUploadSuccess:N,onUploadError:k,onValidationError:T}=e,A=a.useId(),E=a.useRef(null),M=a.useRef(new Map),R=a.useRef(new Map),I=a.useRef([]),[_,L]=a.useState(!1),[P,O]=a.useState([]),D=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{I.current=P,null==C||C(P)},[P,C]),a.useEffect(()=>()=>{for(let e of M.current.values())e.abort();for(let e of R.current.values())e.abort();for(let e of I.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let U=a.useCallback((e,t)=>{O(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),z=a.useCallback(async(e,t)=>{let a=I.current.find(t=>t.id===e);if(!a||c)return;U(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let r=new FormData;if(h)for(let[e,t]of Object.entries(h))r.append(e,t);r.append(g,a.file);try{let t="";if("fetch"===f){let a=new AbortController;R.current.set(e,a);let l=await fetch(i,{method:m,headers:x,body:r,signal:a.signal}),n=await l.text();try{t=n?JSON.parse(n):""}catch(e){t=n}if(!l.ok)throw Error("上传失败:".concat(l.status," ").concat(l.statusText))}else t=await new Promise((t,a)=>{let l=new XMLHttpRequest;if(M.current.set(e,l),l.open(m,i,!0),x)for(let[e,t]of Object.entries(x))l.setRequestHeader(e,t);l.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));U(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(r)});U(e,{status:"success",progress:100,error:""});let a=I.current.find(t=>t.id===e);a&&(null==N||N(a,t))}catch(l){let a=l instanceof Error?l.message:String(l);if("__ABORTED__"===a)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 z(e,t+1);return}U(e,{status:"error",error:a});let r=I.current.find(t=>t.id===e);r&&(null==k||k(r,a))}finally{M.current.delete(e),R.current.delete(e)}},[b,v,c,h,g,x,m,k,N,f,U,i]),B=a.useCallback(e=>{z(e,0)},[z]),F=a.useCallback(e=>{var t,a;null==(t=M.current.get(e))||t.abort(),null==(a=R.current.get(e))||a.abort()},[]),K=a.useCallback(()=>{for(let e of I.current)("selected"===e.status||"error"===e.status)&&B(e.id)},[B]),V=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(I.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let r of e){let e="".concat(r.name,"::").concat(r.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),r=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?r.startsWith("".concat(e.slice(0,-1))):r===e)}(r,D)){null==T||T("文件类型不支持:".concat(r.name));continue}if(r.size>u){null==T||T("文件过大(最大 ".concat(s(u),"):").concat(r.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:r,status:"selected",progress:0,error:"",retryCount:0,previewUrl:r.type.startsWith("image/")?URL.createObjectURL(r):""})}}if(!a.length)return;let r=d?[...I.current,...a]:[a[a.length-1]];if(!d)for(let e of I.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(O(r),p&&!y)for(let e of a)B(e.id)},[D,p,c,u,d,T,y,B]),W=a.useCallback(e=>{let t=e.target.files;t&&(V(Array.from(t)),e.target.value="")},[V]),J=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),L(!1),c||V(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[V,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:A,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:W}),(0,t.jsxs)("label",{htmlFor:A,onDragOver:e=>{e.preventDefault(),c||L(!0)},onDragLeave:e=>{e.preventDefault(),L(!1)},onDrop:J,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)]",_&&"bg-[var(--ds-color-accent)]/5 border-[var(--ds-color-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(r.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:w})]}),P.length?(0,t.jsx)("div",{className:"space-y-2",children:P.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)(r.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-color-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(n.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>B(e.id),children:["error"===e.status?(0,t.jsx)(r.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(n.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(r.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!y&&!p&&P.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(n.Button,{type:"button",size:"sm",onClick:K,disabled:c,children:"上传"})}):null]})}var o=e.i(65486),c=e.i(18805),d=e.i(61293);function u(e){let{open:r,onOpenChange:l,title:s,description:u,uploadUrl:p,resetKey:m}=e,[f,g]=(0,a.useState)(!1),[x,h]=(0,a.useState)(null),v=(0,a.useCallback)(()=>{l(!1),h(null)},[l]),b=(0,a.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}),a=Number(t.imported||0),r=Number(t.overwritten||0),l=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(r)+(l>0?",拒绝 ".concat(l):"")),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:r,onOpenChange:e=>{l(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:f,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;h(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(r?"open":"closed","-").concat(null!=m?m:p)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(n.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:v,children:"取消"}),(0,t.jsx)(n.Button,{type:"button",size:"lg",variant:"default",disabled:f||null==x,onClick:()=>void b(),children:f?"导入中…":"确定"})]})]})]})})}},37549,(e,t,a)=>{"use strict";function r(e){let t={};for(let[a,r]of e.entries()){let e=t[a];void 0===e?t[a]=r:Array.isArray(e)?e.push(r):t[a]=[e,r]}return t}function l(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function n(e){let t=new URLSearchParams;for(let[a,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(a,l(e));else t.set(a,l(r));return t}function s(e){for(var t=arguments.length,a=Array(t>1?t-1:0),r=1;r<t;r++)a[r-1]=arguments[r];for(let t of a){for(let a of t.keys())e.delete(a);for(let[a,r]of t.entries())e.append(a,r)}return e}Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{assign:function(){return s},searchParamsToUrlQuery:function(){return r},urlQueryToSearchParams:function(){return n}})},58020,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{formatUrl:function(){return n},formatWithValidation:function(){return i},urlObjectKeys:function(){return s}});let r=e.r(98389)._(e.r(37549)),l=/https?|ftp|gopher|file/;function n(e){let{auth:t,hostname:a}=e,n=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:a&&(c=t+(~a.indexOf(":")?"["+a+"]":a),e.port&&(c+=":"+e.port)),o&&"object"==typeof o&&(o=String(r.urlQueryToSearchParams(o)));let d=e.search||o&&"?"+o||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||l.test(n))&&!1!==c?(c="//"+(c||""),s&&"/"!==s[0]&&(s="/"+s)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),d&&"?"!==d[0]&&(d="?"+d),""+n+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 n(e)}},6027,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{DecodeError:function(){return g},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return v},NormalizeError:function(){return x},PageNotFoundError:function(){return h},SP:function(){return m},ST:function(){return f},WEB_VITALS:function(){return r},execOnce:function(){return l},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 r=["CLS","FCP","FID","INP","LCP","TTFB"];function l(e){let t,a=!1;return function(){for(var r=arguments.length,l=Array(r),n=0;n<r;n++)l[n]=arguments[n];return a||(a=!0,t=e(...l)),t}}let n=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,s=e=>n.test(e);function i(){let{protocol:e,hostname:t,port:a}=window.location;return e+"//"+t+(a?":"+a:"")}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 a=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(a&&d(a))return r;if(!r)throw Object.defineProperty(Error('"'+c(e)+'.getInitialProps()" should resolve to an object. But found "'+r+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r}let m="undefined"!=typeof performance,f=m&&["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})}},74788,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"isLocalURL",{enumerable:!0,get:function(){return n}});let r=e.r(6027),l=e.r(16612);function n(e){if(!(0,r.isAbsoluteUrl)(e))return!0;try{let t=(0,r.getLocationOrigin)(),a=new URL(e,t);return a.origin===t&&(0,l.hasBasePath)(a.pathname)}catch(e){return!1}}},5763,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},48579,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{default:function(){return x},useLinkStatus:function(){return v}});let r=e.r(98389),l=e.r(59992),n=r._(e.r(65765)),s=e.r(58020),i=e.r(18858),o=e.r(30183),c=e.r(6027),d=e.r(1506);e.r(22751);let u=e.r(42831),p=e.r(74788),m=e.r(46150);e.r(5763);let f=e.r(73835);function g(e){return"string"==typeof e?e:(0,s.formatUrl)(e)}function x(e){var t;let a,r,s,[x,v]=(0,n.useOptimistic)(u.IDLE_LINK_STATUS),b=(0,n.useRef)(null),{href:y,as:j,children:S,prefetch:w=null,passHref:C,replace:N,shallow:k,scroll:T,onClick:A,onMouseEnter:E,onTouchStart:M,legacyBehavior:R=!1,onNavigate:I,ref:_,unstable_dynamicOnHover:L,...P}=e;a=S,R&&("string"==typeof a||"number"==typeof a)&&(a=(0,l.jsx)("a",{children:a}));let O=n.default.useContext(i.AppRouterContext),D=!1!==w,U=!1!==w?null===(t=w)||"auto"===t?f.FetchStrategy.PPR:f.FetchStrategy.Full:f.FetchStrategy.PPR,{href:z,as:B}=n.default.useMemo(()=>{let e=g(y);return{href:e,as:j?g(j):e}},[y,j]);R&&(r=n.default.Children.only(a));let F=R?r&&"object"==typeof r&&r.ref:_,K=n.default.useCallback(e=>(null!==O&&(b.current=(0,u.mountLinkInstance)(e,z,O,U,D,v)),()=>{b.current&&((0,u.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,u.unmountPrefetchableInstance)(e)}),[D,z,O,U,v]),V={ref:(0,o.useMergedRef)(K,F),onClick(e){R||"function"!=typeof A||A(e),R&&r.props&&"function"==typeof r.props.onClick&&r.props.onClick(e),O&&(e.defaultPrevented||function(e,t,a,r,l,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)){l&&(e.preventDefault(),location.replace(t));return}if(e.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}n.default.startTransition(()=>{(0,m.dispatchNavigateAction)(a||t,l?"replace":"push",null==s||s,r.current)})}}(e,z,B,b,N,T,I))},onMouseEnter(e){R||"function"!=typeof E||E(e),R&&r.props&&"function"==typeof r.props.onMouseEnter&&r.props.onMouseEnter(e),O&&D&&(0,u.onNavigationIntent)(e.currentTarget,!0===L)},onTouchStart:function(e){R||"function"!=typeof M||M(e),R&&r.props&&"function"==typeof r.props.onTouchStart&&r.props.onTouchStart(e),O&&D&&(0,u.onNavigationIntent)(e.currentTarget,!0===L)}};return(0,c.isAbsoluteUrl)(B)?V.href=B:R&&!C&&("a"!==r.type||"href"in r.props)||(V.href=(0,d.addBasePath)(B)),s=R?n.default.cloneElement(r,V):(0,l.jsx)("a",{...P,...V,children:a}),(0,l.jsx)(h.Provider,{value:x,children:s})}let h=(0,n.createContext)(u.IDLE_LINK_STATUS),v=()=>(0,n.useContext)(h);("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esModule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},96502,e=>{"use strict";e.s(["GitManageView",()=>r]);var t=e.i(59992),a=e.i(82735);function r(){return(0,t.jsx)(a.AgentEnvGroupSettingsView,{group:"git"})}},88435,e=>{"use strict";e.s(["GeelibManageView",()=>r]);var t=e.i(59992),a=e.i(82735);function r(){return(0,t.jsx)(a.AgentEnvGroupSettingsView,{group:"geelib"})}},22420,e=>{"use strict";e.s(["ImManageView",()=>r]);var t=e.i(59992),a=e.i(82735);function r(){return(0,t.jsx)(a.AgentEnvGroupSettingsView,{group:"tutui"})}},73052,e=>{"use strict";e.s(["McpManageView",()=>C],73052);var t=e.i(59992),a=e.i(65765),r=e.i(49377),l=e.i(36763),n=e.i(18805),s=e.i(41995),i=e.i(40751),o=e.i(13014),c=e.i(84081),d=e.i(78678),u=e.i(92369),p=e.i(55105),m=e.i(96214),f=e.i(85941),g=e.i(10602),x=e.i(84919);function h(e){let{open:a,onOpenChange:r,wsUrl:l,apiBase:n,agent:s}=e;return(0,t.jsx)(x.ResourceImportDialog,{open:a,onOpenChange:r,title:"导入 MCP zip",description:"选择一个 zip 文件并导入到 mcp-runtime。",uploadUrl:(0,g.buildMcpRuntimeImportUrl)(l,n,s),resetKey:s})}var v=e.i(99329);function b(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.id}function y(e){let{open:r,onOpenChange:l,itemId:s,source:o,wsUrl:c,apiBase:d,agent:p,onSaved:m}=e,[f,g]=(0,a.useState)(""),[x,h]=(0,a.useState)(!1),[b,y]=(0,a.useState)(!1),j="remote"===o?"remote":"runtime";(0,a.useEffect)(()=>{if(!r||!s.trim())return;let e=!1;return h(!0),g("加载中…"),(0,v.loadRuntimeMcpItemConfig)(c,d,p,s,j).then(t=>{if(e)return;let a=t.overlay;a&&"object"==typeof a&&!Array.isArray(a)?g(JSON.stringify(a,null,2)):g("{}")}).catch(t=>{e||(n.appToast.error("加载 MCP 配置失败:".concat(t instanceof Error?t.message:String(t))),l(!1))}).finally(()=>{e||h(!1)}),()=>{e=!0}},[r,s,c,d,p,j,l]);let S=(0,a.useCallback)(async()=>{let e;if(!s.trim())return;let t=f.trim();try{e=t?JSON.parse(t):{}}catch(e){n.appToast.error("JSON 解析失败:".concat(e instanceof Error?e.message:String(e)));return}if(!e||"object"!=typeof e||Array.isArray(e))return void n.appToast.error("配置必须是 JSON 对象");if("mcpServers"in e&&null!=e.mcpServers)return void n.appToast.error("请填写标准 server 配置(command/args/env),不要嵌套 mcpServers");let a=0===Object.keys(e).length;y(!0);try{a?await (0,v.clearRuntimeMcpItemConfig)(c,d,p,s,j):await (0,v.saveRuntimeMcpItemConfig)(c,d,p,s,j,e),n.appToast.success("MCP 配置已保存"),l(!1),null==m||m()}catch(e){n.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{y(!1)}},[s,f,c,d,p,j,l,m]);return(0,t.jsx)(i.AppDialog,{open:r,onOpenChange:l,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:()=>l(!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:f,disabled:x,onChange:e=>g(e.target.value)})})}var j=e.i(28661),S=e.i(87655),w=e.i(15692);function C(){let e=(0,r.useAppStore)(e=>e.wsUrl),g=(0,r.useAppStore)(e=>e.apiBase),x=(0,r.useAppStore)(e=>e.agentConfig),C=(0,r.useAppStore)(e=>e.setAgentConfig),{currentAgent:N,loadAgentConfig:k}=(0,l.useSession)(),T=(0,s.usePersistAgentConfigField)("mcpServers"),A=x.mcpServers,E=(0,a.useMemo)(()=>[...A].sort().join("\0"),[A]),[M,R]=(0,a.useState)([]),[I,_]=(0,a.useState)([]),[L,P]=(0,a.useState)(!1),[O,D]=(0,a.useState)(!1),[U,z]=(0,a.useState)(!1),[B,F]=(0,a.useState)(!1),[K,V]=(0,a.useState)(""),[W,J]=(0,a.useState)(!1),[H,Y]=(0,a.useState)(""),[G,q]=(0,a.useState)(),[Z,Q]=(0,a.useState)(!1),[X,$]=(0,a.useState)("");(0,a.useEffect)(()=>{k()},[k]);let ee=(0,a.useCallback)(async(e,t)=>{D(!0);try{await T(e,{silent:t})}finally{D(!1)}},[T]),et=(0,a.useCallback)(e=>M.find(t=>t.id===e),[M]),ea=(0,a.useCallback)(e=>{let t=et(e);Y(e),q(null==t?void 0:t.source),Q(!0)},[et]),er=(0,a.useCallback)(async()=>{R([]),P(!0);try{var t;let a=await (0,v.listMcpServers)(e,g,N());R((null!=(t=a.servers)?t:[]).map(e=>{var t,a,r;return{...e,id:e.name,label:e.name,description:null!=(a=null!=(t=e.description)?t:e.source)?a:"",source:null!=(r=e.source)?r:"",installed:!!e.installed,packageId:e.packageId}}))}catch(e){R([]),n.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{P(!1)}},[e,g,N]),el=(0,a.useCallback)(async t=>{var a;let r=et(t),l=null!=(a=null==r?void 0:r.source)?a:"";if("runtime"!==l&&"remote"!==l)return void n.appToast.error("基础MCP不可删除");if(await (0,j.confirmAlertDialog)({title:"确认删除 MCP?",description:"服务器名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{if("remote"===l){let a=await (0,v.loadRemoteMcpJson)(e,g,N()),r={};try{r=JSON.parse(String(a.content||"{}"))}catch(e){r={mcpServers:{}}}(!r.mcpServers||Array.isArray(r.mcpServers)||"object"!=typeof r.mcpServers)&&(r.mcpServers={}),delete r.mcpServers[t],await (0,v.saveRemoteMcpJson)(e,g,N(),JSON.stringify(r,null,2))}else{let a=r?b(r):t;await (0,v.deleteRuntimeMcp)(e,g,N(),a)}let a=A.filter(e=>e!==t);_(e=>e.filter(e=>e!==t)),C({...x,mcpServers:a}),await ee(a,!0),await er()}catch(e){n.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[et,e,g,N,A,x,C,ee,er]);(0,a.useEffect)(()=>{er()},[er]),(0,a.useEffect)(()=>{_([...A])},[A,E]);let en=(0,a.useCallback)(async e=>{let t=[...new Set(e)].sort();C({...x,mcpServers:t}),await ee(t,!0)},[x,C,ee]),es=(0,a.useCallback)(async(e,t)=>{let a=t?[...new Set([...I,e])]:I.filter(t=>t!==e);_(a);try{await en(a),await er()}catch(e){_(I),n.appToast.error("切换启用状态失败: ".concat(e))}},[I,en,er]),ei=(0,a.useMemo)(()=>M.slice().sort((e,t)=>{var a,r;let l=String(null!=(a=e.source)?a:"").localeCompare(String(null!=(r=t.source)?r:""));if(0!==l)return l;let n=+!I.includes(e.id),s=+!I.includes(t.id);return n!==s?n-s:e.id.localeCompare(t.id)}),[M,I]),eo=(0,a.useMemo)(()=>ei.filter(e=>(function(e,t){var a;let r=t.trim().toLowerCase();if(!r)return!0;let l="remote"===e.source?"远程":"本地";return"".concat(e.id," ").concat(e.label," ").concat(null!=(a=e.description)?a:""," ").concat(l).toLowerCase().includes(r)})(e,X)),[ei,X]),ec=(0,a.useCallback)(t=>{window.open((0,v.exportRuntimeMcpUrl)(e,g,N(),b(t)),"_blank","noopener")},[e,g,N]),ed=(0,a.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=>{n.appToast.error("加载 mcp.json 失败:".concat(e instanceof Error?e.message:String(e))),F(!1)})},[e,g,N]),eu=(0,a.useCallback)(async()=>{let t=function(e){let t,a=e.trim();if(!a)return"请输入 JSON 配置内容";try{t=JSON.parse(a)}catch(e){return"JSON 解析失败:".concat(e instanceof Error?e.message:String(e))}if(!t||"object"!=typeof t||Array.isArray(t))return"JSON 根节点必须是对象";let r=t.mcpServers;if(!r||"object"!=typeof r||Array.isArray(r))return"mcpServers 不能为空,且需包含至少一个 server";let l=Object.keys(r).filter(e=>e.trim());if(!l.length)return"mcpServers 不能为空,且需包含至少一个 server";let n=new Set;for(let e of l){let t=e.trim();!t||n.has(t)||n.add(t)}return n.size?null:"未解析到有效的 server 名称"}(K);if(t)return void n.appToast.error(t);J(!0);try{await (0,v.saveRemoteMcpJson)(e,g,N(),K.trim()),n.appToast.success("已保存全局 mcp.json。"),F(!1),await er()}catch(e){n.appToast.error("保存 mcp.json 失败:".concat(e instanceof Error?e.message:String(e)))}finally{J(!1)}},[e,g,N,K,er]),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)(m.AccentSwitch,{checked:I.includes(e.id),disabled:O,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 a;let r=null!=(a=e.source)?a:"",l="runtime"===r,n="runtime"===r||"remote"===r;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(f.IconTooltipButton,{icon:"Download",label:l?"导出":"仅 runtime MCP 支持导出",ariaLabel:"导出 ".concat(e.label),disabled:O||!l,onClick:()=>ec(e)}),(0,t.jsx)(f.IconTooltipButton,{icon:"Edit",label:"编辑 MCP 配置",ariaLabel:"编辑 ".concat(e.label),disabled:O,onClick:()=>ea(e.id)}),(0,t.jsx)(f.IconTooltipButton,{icon:"Trash2",label:n?"删除":"基础MCP不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label),disabled:O||!n,onClick:()=>{el(e.id)},iconClassName:"text-red-500"})]})}}],em=X.trim();return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(w.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:()=>z(!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:X,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:L?(0,t.jsx)(c.Loading,{text:"加载中",className:"min-h-[180px]"}):(0,t.jsx)(o.AppTable,{rows:eo,columns:ep,getRowKey:e=>e.id,emptyText:em?"未找到匹配 MCP":void 0})})]}),(0,t.jsx)(h,{open:U,onOpenChange:e=>{z(e),e||er()},wsUrl:e,apiBase:g,agent:N()}),(0,t.jsx)(y,{open:Z,onOpenChange:Q,itemId:H,source:G,wsUrl:e,apiBase:g,agent:N(),onSaved:()=>{er(),ee(x.mcpServers,!0)}}),(0,t.jsx)(i.AppDialog,{open:B,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:W,onClick:()=>F(!1),children:"取消"}),(0,t.jsx)(u.Button,{type:"button",size:"lg",disabled:W,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:K,onChange:e=>V(e.target.value)})})]})}},47284,e=>{"use strict";e.s(["ToolsManageView",()=>E],47284);var t=e.i(59992),a=e.i(65765),r=e.i(49377),l=e.i(36763),n=e.i(18805),s=e.i(41995),i=e.i(92369),o=e.i(84081),c=e.i(96214),d=e.i(85941),u=e.i(13014),p=e.i(78678),m=e.i(87655),f=e.i(55105);function g(e){let{items:r,saveBusy:l,onToggle:n,onExport:s,onRemove:i,className:o}=e,[g,x]=(0,a.useState)(""),h=(0,a.useMemo)(()=>r.filter(e=>(function(e,t){var a,r;let l=t.trim().toLowerCase();if(!l)return!0;let n="system"===e.layer?"系统":"agent"===e.layer?"Agent":"";return"".concat(e.name," ").concat(null!=(a=e.label)?a:""," ").concat(null!=(r=e.description)?r:""," ").concat(n).toLowerCase().includes(l)})(e,g)),[r,g]),v=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>{let a=e.label||e.name;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:a}),(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:l,onCheckedChange:t=>n(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;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(d.IconTooltipButton,{icon:"Download",label:a?"导出":"系统内置工具不可导出",ariaLabel:"导出 ".concat(e.label||e.name),disabled:l||!a,onClick:()=>s(e.name)}),(0,t.jsx)(d.IconTooltipButton,{icon:"Trash2",label:a?"删除":"系统内置工具不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label||e.name),disabled:l||!a,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)(f.Input,{type:"search",value:g,onChange:e=>x(e.target.value),placeholder:"搜索名称 / 详情 / 层级",className:"h-8 pl-8","aria-label":"搜索工具"}),(0,t.jsx)(m.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(10602),h=e.i(84919);function v(e){let{open:a,onOpenChange:r,wsUrl:l,apiBase:n,agent:s}=e;return(0,t.jsx)(h.ResourceImportDialog,{open:a,onOpenChange:r,title:"导入工具 zip",description:"选择一个 zip 文件并导入到 tools-runtime。",uploadUrl:(0,x.buildToolsRuntimeImportUrl)(l,n,s),resetKey:s})}var b=e.i(40751);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:a,title:r,children:l,className:n}=e;return(0,t.jsxs)("section",{className:"rounded-xl border border-[var(--ds-color-border-default)] bg-[var(--surface-1)] p-4 ".concat(null!=n?n:""),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:a}),(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:r})]}),l]})}function w(e){let{open:a,onOpenChange:r}=e;return(0,t.jsx)(b.AppDialog,{open:a,onOpenChange:r,title:"工具接入说明",width:"max-w-4xl",footer:(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>r(!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)(m.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[a,r]=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:a}),(0,t.jsx)("p",{className:"mt-1 text-base leading-5 text-[var(--ds-muted)]",children:r})]},a)})}),(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)(m.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 C=e.i(28661),N=e.i(15692),k=e.i(99329);function T(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.name}function A(e){let t=null!=e.packageId?String(e.packageId).trim():"";return!0===e.deletable&&t.length>0}function E(){let e=(0,r.useAppStore)(e=>e.wsUrl),c=(0,r.useAppStore)(e=>e.apiBase),d=(0,r.useAppStore)(e=>e.agentConfig),u=(0,r.useAppStore)(e=>e.patchAgentConfig),{currentAgent:p,loadAgentConfig:f}=(0,l.useSession)(),x=(0,s.usePersistAgentConfigField)("tools"),h=d.tools,[b,y]=(0,a.useState)([]),[j,S]=(0,a.useState)(!1),[E,M]=(0,a.useState)(!1),[R,I]=(0,a.useState)(!1),[_,L]=(0,a.useState)(!1);(0,a.useEffect)(()=>{f()},[f]);let P=(0,a.useCallback)(async(e,t)=>{M(!0);try{await x(e,{silent:t})}finally{M(!1)}},[x]),O=(0,a.useCallback)(async()=>{y([]),S(!0);try{var t;let a=await (0,k.listInstalledTools)(e,c,p());y(null!=(t=a.tools)?t:[])}catch(e){y([]),n.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{S(!1)}},[e,c,p]);(0,a.useEffect)(()=>{O()},[O]);let D=(0,a.useCallback)(e=>b.find(t=>t.name===e),[b]),U=(0,a.useMemo)(()=>b.slice().sort((e,t)=>e.name.localeCompare(t.name)).map(e=>(function(e,t){var a;let r=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!=(a=e.searchHint)?a:"",enabled:t,packageId:r,canManage:A({deletable:e.deletable,packageId:r}),layer:e.layer}})(e,h.includes(e.name))),[b,h]),z=(0,a.useCallback)(async t=>{let a=D(t);if(!a||!A({deletable:a.deletable,packageId:a.packageName}))return void n.appToast.error("系统内置工具不可删除");if(await (0,C.confirmAlertDialog)({title:"确认删除工具包?",description:"工具名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,k.deleteRuntimeTool)(e,c,p(),T({packageId:a.packageName,name:a.name}));let r=h.filter(e=>e!==t);u({tools:r}),await P(r,!0),await O()}catch(e){n.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[D,e,c,p,h,u,P,O]),B=(0,a.useCallback)(t=>{let a=D(t);if(!a||!A({deletable:a.deletable,packageId:a.packageName}))return void n.appToast.error("系统内置工具不可导出");window.open((0,k.exportRuntimeToolUrl)(e,c,p(),T({packageId:a.packageName,name:a.name})),"_blank","noopener")},[D,e,c,p]),F=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...h,e])].sort():h.filter(t=>t!==e).sort();u({tools:a}),P(a,!0)},[h,u,P]);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)(m.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:()=>L(!0),children:[(0,t.jsx)(m.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:E,onToggle:F,onExport:B,onRemove:z}),(0,t.jsx)(v,{open:_,onOpenChange:e=>{L(e),e||O()},wsUrl:e,apiBase:c,agent:p()}),(0,t.jsx)(w,{open:R,onOpenChange:I})]})}},29716,e=>{"use strict";e.s(["LLM_MODEL_KEY",()=>t,"LLM_PROVIDER_ID_KEY",()=>a,"PERMISSION_MODE_EMPTY_SENTINEL",()=>i,"WS_ALLOW_TOOL_ASK_ALLOWED",()=>s,"WS_ALLOW_TOOL_ASK_KEY",()=>l,"WS_PERMISSION_MODE_ALLOWED",()=>n,"WS_PERMISSION_MODE_KEY",()=>r]);let t="LLM_MODEL",a="LLM_PROVIDER_ID",r="WS_PERMISSION_MODE",l="WS_ALLOW_TOOL_ASK",n=["acceptEdits","plan","default","dontAsk","bypassPermissions"],s=new Set(["0","1"]),i="__empty__"},57757,e=>{"use strict";e.s(["EnvManageView",()=>_],57757);var t=e.i(59992),a=e.i(65765),r=e.i(15692),l=e.i(92369),n=e.i(87655),s=e.i(84081),i=e.i(65486),o=e.i(18805),c=e.i(36763),d=e.i(37566),u=e.i(75854),p=e.i(21637),m=e.i(49377);let f=[{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"}}],g=[{key:"provider",name:"服务商类型",required:!0,options:f.map(e=>({label:e.label,value:e.value}))},{key:"id",name:"名称",required:!0,placeholder:"例如 openai-main"},{key:"baseUrl",name:"API地址",required:!0,placeholder:"例如 https://api.openai.com/v1"},{key:"apiKey",name:"API秘钥",required:!0,inputType:"password"},{key:"modelId",name:"模型 ID",required:!0,placeholder:"例如 gpt-5.5"},{key:"authToken",name:"认证变量",inputType:"password",placeholder:"可选,例如 OPENAI_API_KEY"}];var x=e.i(55105),h=e.i(72483),v=e.i(96745);let b=new Map(f.map(e=>[e.value,e]));function y(e){let{titleId:a,values:r,onFieldChange:s,onProviderSelect:i}=e;return(0,t.jsx)("div",{className:"divide-y divide-[var(--ds-color-border-default)]",children:g.map(e=>{var o,c;let d="custom-env-field-".concat(e.key),u="new-provider-field-".concat(a,"-").concat(e.key),p="string"==typeof r[e.key]?r[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:d,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 a;let r="openai"===(a=e.value)||"anthropic"===a?b.get(a):void 0;if(!r)return null;let s=p===e.value;return(0,t.jsxs)(l.Button,{type:"button",variant:"plain",role:"radio","aria-checked":s,onClick:()=>i(r.value),className:(0,v.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,v.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:r.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:r.label}),(0,t.jsx)("span",{className:"mt-1 block text-sm leading-5 text-[var(--ds-muted)]",children:r.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)(n.default,{name:"Check",size:14,strokeWidth:2.5})}):null]},e.value)})}):e.options?(0,t.jsxs)(h.Select,{value:p,onValueChange:t=>s(e.key,t),children:[(0,t.jsx)(h.SelectTrigger,{id:d,className:(0,v.cn)("h-8 w-full max-w-none bg-[var(--ds-color-surface-default)] text-[var(--ds-text)]",e.className),children:(0,t.jsx)(h.SelectValue,{})}),(0,t.jsx)(h.SelectContent,{children:e.options.map(e=>(0,t.jsx)(h.SelectItem,{value:e.value,children:e.label},e.value))})]}):(0,t.jsx)(x.Input,{id:d,name:u,type:null!=(o=e.inputType)?o:"text",spellCheck:!1,autoComplete:"password"===e.inputType?"new-password":"off",placeholder:null!=(c=e.placeholder)?c:"请输入".concat(e.name),className:(0,v.cn)("border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] placeholder:text-[var(--text-placeholder)]",e.className),value:p,onChange:t=>s(e.key,t.target.value)})]},e.key)})})}let j=/^[A-Za-z0-9_-]+$/,S=new Map(f.map(e=>[e.value,e]));function w(){var e;return{...Object.fromEntries(g.map(e=>{var t,a,r;return[e.key,null!=(r=null==(a=e.options)||null==(t=a[0])?void 0:t.value)?r:""]})),...null==(e=f[0])?void 0:e.defaults}}function C(e){let{open:r,onOpenChange:n,onSaved:f}=e,x=(0,a.useId)(),h=(0,m.useAppStore)(e=>e.wsUrl),v=(0,m.useAppStore)(e=>e.apiBase),{currentAgent:b,loadAgentConfig:C}=(0,c.useSession)(),{sendReloadAgentConfig:N}=(0,d.useWebSocketSender)(),[k,T]=(0,a.useState)(!0),[A,E]=(0,a.useState)(!1),[M,R]=(0,a.useState)(!1),[I,_]=(0,a.useState)(w),L=(0,a.useCallback)(()=>{_(w()),R(!1)},[]);(0,a.useEffect)(()=>{r&&(T(!0),L(),C().finally(()=>{T(!1)}))},[r,C,L]);let P=(0,a.useCallback)((e,t)=>{R(!0),_(a=>({...a,[e]:t}))},[]),O=(0,a.useCallback)(e=>{let t=S.get(e);if(!t)return void P("provider",e);R(!0),_(e=>({...e,...t.defaults}))},[P]),D=(0,a.useCallback)(async e=>{if(e)return void n(!0);(!M||await (0,p.confirmDiscardFlyoutChanges)())&&n(!1)},[M,n]),U=(0,a.useCallback)(async()=>{let e=m.useAppStore.getState().agentConfig,t=function(e,t){var a,r;let l=new Set(g.map(e=>e.key));for(let t of g)if(t.required&&!String(null!=(a=e[t.key])?a:"").trim())return{ok:!1,message:"请填写".concat(t.name)};if(!l.has("id"))return{ok:!0};let n=String(null!=(r=e.id)?r:"").trim();return j.test(n)?t.some(e=>e.id===n)?{ok:!1,message:"服务商 ID 已存在:".concat(n)}:{ok:!0}:{ok:!1,message:"服务商 ID 仅允许字母、数字、下划线和中划线"}}(I,e.llmProviders);if(!t.ok)return void o.appToast.info(t.message);let a=function(e){var t,a,r,l,n,s;let i=String(null!=(t=e.id)?t:"").trim(),o=String(null!=(a=e.modelId)?a:"").trim(),c=String(null!=(r=e.modelLabel)?r:"").trim();return{id:i,name:i,baseUrl:String(null!=(l=e.baseUrl)?l:"").trim(),apiKey:String(null!=(n=e.apiKey)?n:"").trim(),authToken:String(null!=(s=e.authToken)?s:"").trim(),provider:"anthropic"===e.provider?"anthropic":"openai",models:[{id:o,label:c}],defaultModel:o}}(I),r=[...e.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),a];E(!0);try{await (0,u.persistAgentEnv)(h,v,b(),{...e.env},N,{llmProviders:r}),R(!1),await (null==f?void 0:f()),n(!1)}catch(e){o.appToast.error("保存服务商失败:".concat(e instanceof Error?e.message:String(e)))}finally{E(!1)}},[I,h,v,b,N,n,f]);return(0,t.jsx)(i.Dialog,{open:r,onOpenChange:e=>void D(e),children:(0,t.jsxs)(i.DialogContent,{"aria-labelledby":x,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:x,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:k?(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)(y,{titleId:x,values:I,onFieldChange:P,onProviderSelect:O})})}),(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)(l.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:k||A,onClick:()=>void D(!1),className:"cursor-pointer",children:"取消"}),(0,t.jsx)(l.Button,{type:"button",size:"lg",disabled:k||A,onClick:()=>void U(),className:"cursor-pointer",children:A?"保存中…":"保存"})]})]})})}var N=e.i(26162),k=e.i(29716),T=e.i(85941);function A(e){let{row:a,onSetDefault:r,settingDefault:n=!1,onTest:s,onEdit:i,onDelete:o}=e,c="".concat(a.baseUrl," · ").concat(a.model);return(0,t.jsxs)("article",{className:(0,v.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]",a.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,v.cn)("size-2 shrink-0 rounded-full",a.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:[a.name,a.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)(l.Button,{type:"button",variant:"plain",size:"sm",disabled:a.isDefault||n,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:()=>r(a.id),children:n?"设置中…":"设为默认"}),s?(0,t.jsx)(l.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(a.id),children:"测试"}):null,i?(0,t.jsx)(T.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(a.name),onClick:()=>i(a.id)}):null,(0,t.jsx)(T.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(a.name),onClick:()=>o(a.id)})]})]})}function E(e,t){var a,r;let l="string"==typeof t[k.LLM_PROVIDER_ID_KEY]?t[k.LLM_PROVIDER_ID_KEY].trim():"";return l&&e.some(e=>e.id===l)?l:null!=(r=null==(a=e[0])?void 0:a.id.trim())?r:""}function M(e,t){let a=E(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===a}})}function R(e){console.log("edit",e)}function I(){let e=(0,m.useAppStore)(e=>e.wsUrl),r=(0,m.useAppStore)(e=>e.apiBase),l=(0,m.useAppStore)(e=>e.agentConfig.llmProviders),n=(0,m.useAppStore)(e=>e.agentConfig.env),{currentAgent:s}=(0,c.useSession)(),{sendReloadAgentConfig:i}=(0,d.useWebSocketSender)(),[p,f]=(0,a.useState)(()=>M(l,n)),[g,x]=(0,a.useState)(null);(0,a.useEffect)(()=>{f(M(l,n))},[l,n]);let h=(0,a.useCallback)(async t=>{let a=m.useAppStore.getState();if(t!==E(a.agentConfig.llmProviders,a.agentConfig.env)){x(t);try{await (0,u.persistAgentEnv)(e,r,s(),{...a.agentConfig.env,[k.LLM_PROVIDER_ID_KEY]:t},i)}catch(e){o.appToast.error("设为默认失败:".concat(e instanceof Error?e.message:String(e)))}finally{x(null)}}},[e,r,s,i]),v=(0,a.useCallback)(async t=>{let a=m.useAppStore.getState(),l=a.agentConfig.llmProviders.filter(e=>e.id!==t).map(e=>({...e,models:e.models.map(e=>({...e}))}));if(l.length===a.agentConfig.llmProviders.length)return;let n={...a.agentConfig.env};if(t===E(a.agentConfig.llmProviders,a.agentConfig.env)){var c,d;let e=null!=(d=null==(c=l[0])?void 0:c.id.trim())?d:"";e?n[k.LLM_PROVIDER_ID_KEY]=e:delete n[k.LLM_PROVIDER_ID_KEY]}try{await (0,u.persistAgentEnv)(e,r,s(),n,i,{llmProviders:l})}catch(e){o.appToast.error("删除服务商失败:".concat(e instanceof Error?e.message:String(e)))}},[e,r,s,i]);return(0,t.jsx)("div",{className:"mt-4 flex flex-col gap-3",children:0===p.length?(0,t.jsx)(N.Empty,{text:"暂无服务商"}):p.map(e=>(0,t.jsx)(A,{row:e,onSetDefault:e=>void h(e),settingDefault:g===e.id,onEdit:R,onDelete:v},e.id))})}function _(){let[e,s]=(0,a.useState)(!1);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.ManageChromeHeaderActions,{children:(0,t.jsx)("div",{className:"flex flex-wrap items-center",children:(0,t.jsxs)(l.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>s(!0),className:"mr-[12px]",children:[(0,t.jsx)(n.default,{name:"Create",size:16,className:"align-middle"}),"添加服务商"]})})}),(0,t.jsx)(I,{}),(0,t.jsx)(C,{open:e,onOpenChange:s})]})}},57424,e=>{"use strict";e.s(["SkillsManageView",()=>I],57424);var t=e.i(59992),a=e.i(65765),r=e.i(49377),l=e.i(36763),n=e.i(18805),s=e.i(41995),i=e.i(72099),o=e.i(92369),c=e.i(87655),d=e.i(13014),u=e.i(55105),p=e.i(96745);function m(e){let{className:a,...r}=e;return(0,t.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:(0,p.cn)("flex w-full justify-end",a),...r})}let f=a.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("ul",{ref:a,"data-slot":"pagination-content",className:(0,p.cn)("flex flex-row flex-wrap items-center justify-end gap-1",r),...l})});f.displayName="PaginationContent";let g=a.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("li",{ref:a,"data-slot":"pagination-item",className:(0,p.cn)("",r),...l})});g.displayName="PaginationItem",a.forwardRef((e,a)=>{let{className:r,isActive:l,size:n="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,p.cn)((0,o.buttonVariants)({variant:l?"outline":"ghost",size:n}),r),...s})}).displayName="PaginationLink";var x=e.i(99329),h=e.i(84081);function v(e){let{active:r,wsUrl:l,apiBase:s,agent:i,onAfterInstall:p,className:v}=e,[b,y]=(0,a.useState)(""),[j,S]=(0,a.useState)(1),[w,C]=(0,a.useState)(0),[N,k]=(0,a.useState)([]),[T,A]=(0,a.useState)(!1),[E,M]=(0,a.useState)({}),R=(0,a.useRef)(0),I=(0,a.useCallback)(async()=>{let e=++R.current;A(!0);try{let t=await (0,x.listCloudSkillCatalog)(l,s,i,b,j,10);if(e!==R.current)return;let a=Array.isArray(t.items)?t.items:[],r=[];for(let e of a)e&&"object"==typeof e&&e.id&&r.push({id:String(e.id),title:String(e.title||""),skillName:String(e.skillName||""),description:"string"==typeof e.description?e.description:"",installed:!!e.installed});k(r),C(t.totalPages)}catch(t){if(e!==R.current)return;k([]),C(0)}finally{e===R.current&&A(!1)}},[l,s,i,b,j]);(0,a.useEffect)(()=>{if(!r){y(""),S(1),C(0),k([]),M({}),R.current+=1;return}I()},[r,I]);let _=(0,a.useCallback)(async(e,t)=>{M(t=>({...t,[e]:!0}));try{await (0,x.installCloudSkill)(l,s,i,e),n.appToast.success("云端技能已安装:".concat(t)),await I(),null==p||p()}catch(e){n.appToast.error("安装失败:".concat(e instanceof Error?e.message:String(e)))}finally{M(t=>{let a={...t};return delete a[e],a})}},[l,s,i,I,p]),L=(0,a.useCallback)(e=>{S(1),y(e)},[]);if(!r)return null;let P=w>0?"第 ".concat(j,"/").concat(w," 页"):"第 0/0 页",O=T||j<=1,D=T||w<=0||j>=w,U=[{key:"name",title:"名称",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>{let a=e.skillName||e.id;return(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)("span",{children:a})})}},{key:"description",title:"详情",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>(0,t.jsxs)(t.Fragment,{children:[e.title,e.description?" — ".concat(e.description):""]})},{key:"status",title:"状态",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>e.installed?"已安装":"未安装"},{key:"actions",title:"操作",headerClassName:"w-[96px] text-right ",cellClassName:"w-[116px] text-right",render:e=>{let a=!!E[e.id],r=!!e.installed;return!a&&r?"-":(0,t.jsx)(o.Button,{type:"button",size:"sm",variant:"outline",disabled:a||r,onClick:()=>void _(e.id,e.title||e.skillName||e.id),children:a?"安装中…":r?"已安装":"安装"})}}];return(0,t.jsx)("div",{className:v,children:(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(u.Input,{type:"search",value:b,onChange:e=>L(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})]}),(0,t.jsx)(d.AppTable,{rows:N,columns:U,getRowKey:e=>e.id,className:"min-h-0 flex-1 rounded-md",bodyProps:{viewportPaginationReserve:64},emptyNode:T?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):void 0}),(0,t.jsx)(m,{className:"mx-0 w-full",children:(0,t.jsxs)(f,{className:"w-full flex-wrap justify-end gap-2",children:[(0,t.jsx)(g,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:O,className:"gap-1",onClick:()=>S(e=>Math.max(1,e-1)),"aria-label":"上一页",children:[(0,t.jsx)(c.default,{name:"ChevronLeft",size:16,className:"shrink-0"}),"上一页"]})}),(0,t.jsx)(g,{children:(0,t.jsx)("span",{className:"flex h-9 min-w-[6.5rem] items-center justify-center text-[var(--ds-muted)]",children:P})}),(0,t.jsx)(g,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:D,className:"gap-1",onClick:()=>S(e=>e+1),"aria-label":"下一页",children:["下一页",(0,t.jsx)(c.default,{name:"ChevronRight",size:16,className:"shrink-0",strokeWidth:1})]})})]})})]})})}var b=e.i(10602),y=e.i(84919);function j(e){let{open:a,onOpenChange:r,wsUrl:l,apiBase:n,agent:s}=e;return(0,t.jsx)(y.ResourceImportDialog,{open:a,onOpenChange:r,title:"导入 Skill zip",description:"选择一个 zip 文件并导入到 skills-runtime。",uploadUrl:(0,b.buildSkillsRuntimeImportUrl)(l,n,s),resetKey:s})}var S=e.i(40751);function w(e){let{open:r,onOpenChange:l,skillName:s,wsUrl:i,apiBase:c,agent:d,onSaved:u}=e,[p,m]=(0,a.useState)(""),[f,g]=(0,a.useState)(!1),[h,v]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!r||!s.trim())return;let e=!1;return g(!0),m(""),(0,x.loadBaseSkillMd)(i,c,d,s).then(t=>{e||m("string"==typeof t.content?t.content:"")}).catch(t=>{e||(n.appToast.error("加载 SKILL.md 失败:".concat(t instanceof Error?t.message:String(t))),l(!1))}).finally(()=>{e||g(!1)}),()=>{e=!0}},[r,s,i,c,d,l]);let b=(0,a.useCallback)(async()=>{if(s.trim()){v(!0);try{await (0,x.saveBaseSkillMd)(i,c,d,s,p),n.appToast.success("SKILL.md 已保存"),l(!1),null==u||u()}catch(e){n.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{v(!1)}}},[s,i,c,d,p,l,u]);return(0,t.jsx)(S.AppDialog,{open:r,onOpenChange:l,title:"编辑 SKILL.md · /".concat(s),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:f||h,onClick:()=>l(!1),children:"取消"}),(0,t.jsx)(o.Button,{type:"button",size:"lg",disabled:f||h,onClick:()=>void b(),children:"保存"})]}),children:f?(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:p,placeholder:"Markdown 源码…",onChange:e=>m(e.target.value)})})}var C=e.i(96214),N=e.i(85941),k=e.i(78678);function T(e){let{items:r,saveBusy:l,onToggleEnabled:n,onEditBase:s,onExport:i,onRemove:o,className:p}=e,[m,f]=(0,a.useState)(""),g=(0,a.useMemo)(()=>r.filter(e=>(function(e,t){var a;let r=t.trim().toLowerCase();return!r||"".concat(e.name," ").concat(null!=(a=e.description)?a:"").toLowerCase().includes(r)})(e,m)),[r,m]),x=[{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)(k.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)(C.AccentSwitch,{checked:e.enabled,disabled:l,onCheckedChange:t=>n(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>(0,t.jsx)("div",{className:"inline-flex items-center justify-end gap-1",children:"base"===e.source?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(e.name),disabled:l,onClick:()=>s(e.name)}),(0,t.jsx)(N.IconTooltipButton,{icon:"Trash2",label:"系统技能不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:!0})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:l,onClick:()=>i(e.name)}),(0,t.jsx)(N.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:l,onClick:()=>{o(e.name)}})]})})}],h=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)(u.Input,{type:"search",value:m,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)(d.AppTable,{rows:g,columns:x,getRowKey:e=>"skills:".concat(e.name),className:p,emptyText:h?"无匹配的 Skill":void 0})]})}var A=e.i(28661),E=e.i(15692);function M(e,t){var a,r,l;let n=(l=null!=(r=null!=(a=e.description)?a:e.whenToUse)?r:"")?l.length>100?l.slice(0,100):l:"";return{...e,id:e.name,label:"/".concat(e.name),description:n,isRuntime:t,canManage:e.canManage}}let R=[{value:"installed",label:"已安装Skill"},{value:"cloud_catalog",label:"Skill商店"}];function I(){let e=(0,r.useAppStore)(e=>e.wsUrl),d=(0,r.useAppStore)(e=>e.apiBase),u=(0,r.useAppStore)(e=>e.agentConfig),p=(0,r.useAppStore)(e=>e.patchAgentConfig),{currentAgent:m,loadAgentConfig:f}=(0,l.useSession)(),g=(0,s.usePersistAgentConfigField)("skills"),b=u.skills,[y,S]=(0,a.useState)([]),[C,N]=(0,a.useState)([]),[k,I]=(0,a.useState)(!1),[_,L]=(0,a.useState)(!1),[P,O]=(0,a.useState)(!1),[D,U]=(0,a.useState)("installed"),[z,B]=(0,a.useState)(!1),[F,K]=(0,a.useState)(""),[V,W]=(0,a.useState)(!1);(0,a.useEffect)(()=>{f()},[f]);let J=(0,a.useCallback)(async(e,t)=>{O(!0);try{await g(e,{silent:t})}finally{O(!1)}},[g]),H=(0,a.useCallback)(async()=>{S([]),I(!0);try{var t;let a=await (0,x.listBaseSkills)(e,d,m());S((null!=(t=a.skills)?t:[]).map(e=>M(e,!1)))}catch(e){S([]),n.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{I(!1)}},[e,d,m]),Y=(0,a.useCallback)(async()=>{N([]),L(!0);try{var t;let a=await (0,x.listInstalledSkills)(e,d,m());N((null!=(t=a.skills)?t:[]).map(e=>M(e,!0)))}catch(e){N([]),n.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{L(!1)}},[e,d,m]),G=(0,a.useCallback)(async()=>{await Promise.all([H(),Y()])},[H,Y]),q=(0,a.useCallback)(async t=>{if(await (0,A.confirmAlertDialog)({title:"确认删除 Skill 包?",description:"Skill:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,x.deleteRuntimeSkill)(e,d,m(),t);let a=b.filter(e=>e!==t);p({skills:a}),await J(a,!0),await G()}catch(e){n.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[e,d,m,b,p,J,G]);(0,a.useEffect)(()=>{"installed"===D&&G()},[D,G]);let Z=(0,a.useCallback)(()=>{G()},[G]),Q=(0,a.useMemo)(()=>{let e=y.map(e=>({name:e.id,source:"base",description:e.description||"",enabled:b.includes(e.id)})),t=new Set(e.map(e=>e.name)),a=C.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:b.includes(e.id)}));return[...e.sort((e,t)=>e.name.localeCompare(t.name)),...a]},[y,C,b]),X=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...b,e])].sort():b.filter(t=>t!==e);p({skills:a}),J(a,!0)},[b,p,J]),$=(0,a.useCallback)(t=>{window.open((0,x.exportRuntimeSkillUrl)(e,d,m(),t),"_blank","noopener")},[e,d,m]),ee=(0,a.useCallback)(e=>{K(e),W(!0)},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(E.ManageChromeHeaderActions,{children:(0,t.jsxs)(o.Button,{id:"btnAgentImportSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>B(!0),children:[(0,t.jsx)(c.default,{name:"Import",size:16,className:"align-middle"}),"导入Skill"]})}),(0,t.jsxs)(i.AppTabs,{tabs:R,value:D,listVariant:"line",onChange:e=>U(e),children:[(0,t.jsx)(i.AppTabsPanel,{value:"installed",children:k||_?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(T,{items:Q,saveBusy:P,onToggleEnabled:X,onEditBase:ee,onExport:$,onRemove:q})}),(0,t.jsx)(i.AppTabsPanel,{value:"cloud_catalog",className:"flex min-h-0 flex-1 flex-col",children:(0,t.jsx)(v,{active:"cloud_catalog"===D,wsUrl:e,apiBase:d,agent:m(),enabledSkillNames:b,onAfterInstall:Z,className:"min-h-0 flex-1"})})]}),(0,t.jsx)(j,{open:z,onOpenChange:e=>{B(e),e||G()},wsUrl:e,apiBase:d,agent:m()}),(0,t.jsx)(w,{open:V,onOpenChange:W,skillName:F,wsUrl:e,apiBase:d,agent:m(),onSaved:()=>void G()})]})}},76302,e=>{"use strict";e.s(["SettingsRouteBoundary",()=>i]);var t=e.i(59992),a=e.i(48579),r=e.i(74548),l=e.i(28234),n=e.i(75733),s=e.i(49377);function i(e){let{children:i}=e,o=(0,r.usePathname)(),c=(0,s.useAppStore)(e=>e.agentId),d=(0,n.buildAppNavHref)(l.MANAGE_DEFAULT_HREF,{ensureAgent:!0,agent:c});return o&&!(0,l.isManageRouteEnabled)((0,n.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)(a.default,{className:"text-zinc-900 underline underline-offset-4",href:d,prefetch:!1,children:"返回默认设置页"})})]}):(0,t.jsx)(t.Fragment,{children:i})}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,84081,e=>{"use strict";e.s(["Loading",()=>l],84081);var t=e.i(59992),r=e.i(30164);let n={src:e.i(40706).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 i=e.i(14007),a=e.i(96745);function l(e){let{text:l="加载中",className:o,showImage:s=!0,imageSrc:d=n,imageAlt:c="加载中",imageSize:u=180,imageClassName:f}=e,p="string"==typeof d?{width:u,height:u}:{width:d.width,height:d.height};return(0,t.jsxs)("div",{className:(0,a.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:[s?(0,t.jsx)("span",{className:(0,a.cn)("block shrink-0",f),style:{width:u},children:(0,t.jsx)(r.default,{src:d,alt:c,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)(i.Spinner,{className:"mr-2"}),l]})]})}},66004,e=>{e.v("/app/_next/static/media/no-data.48c973b9.png")},40706,e=>{e.v("/app/_next/static/media/data-loading.be8d921a.png")},55105,e=>{"use strict";e.s(["Input",()=>n]);var t=e.i(59992),r=e.i(96745);function n(e){let{className:n,type:i="text",size:a="default",...l}=e;return(0,t.jsx)("input",{type:i,"data-slot":"input","data-size":a,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",n),...l})}},30183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return i}});let n=e.r(65765);function i(e,t){let r=(0,n.useRef)(null),i=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=i.current;t&&(i.current=null,t())}else e&&(r.current=a(e,n)),t&&(i.current=a(t,n))},[e,t])}function a(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)},6374,(e,t,r)=>{"use strict";function n(e){let{widthInt:t,heightInt:r,blurWidth:n,blurHeight:i,blurDataURL:a,objectFit:l}=e,o=n?40*n:t,s=i?40*i:r,d=o&&s?"viewBox='0 0 "+o+" "+s+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+d+"%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='"+(d?"none":"contain"===l?"xMidYMid":"cover"===l?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+a+"'/%3E%3C/svg%3E"}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return n}})},10336,(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 n},imageConfigDefault:function(){return i}});let n=["default","imgix","cloudinary","akamai","custom"],i={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}},75548,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return s}}),e.r(22751);let n=e.r(6374),i=e.r(10336),a=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function o(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 d,c,u,{src:f,sizes:p,unoptimized:m=!1,priority:g=!1,loading:h,className:v,quality:b,width:x,height:y,fill:A=!1,style:j,overrideSrc:_,onLoad:w,onLoadingComplete:C,placeholder:S="empty",blurDataURL:E,fetchPriority:O,decoding:k="async",layout:N,objectFit:P,objectPosition:I,lazyBoundary:R,lazyRoot:M,...D}=e,{imgConf:z,showAltText:L,blurComplete:T,defaultLoader:B}=t,U=z||i.imageConfigDefault;if("allSizes"in U)d=U;else{let e=[...U.deviceSizes,...U.imageSizes].sort((e,t)=>e-t),t=U.deviceSizes.sort((e,t)=>e-t),n=null==(r=U.qualities)?void 0:r.sort((e,t)=>e-t);d={...U,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===B)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 K=D.loader||B;delete D.loader,delete D.srcSet;let W="__next_img_default"in K;if(W){if("custom"===d.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=K;K=t=>{let{config:r,...n}=t;return e(n)}}if(N){"fill"===N&&(A=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[N];e&&(j={...j,...e});let t={responsive:"100vw",fill:"100vw"}[N];t&&!p&&(p=t)}let Y="",V=o(x),G=o(y);if((s=f)&&"object"==typeof s&&(l(s)||void 0!==s.src)){let e=l(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(c=e.blurWidth,u=e.blurHeight,E=E||e.blurDataURL,Y=e.src,!A)if(V||G){if(V&&!G){let t=V/e.width;G=Math.round(e.height*t)}else if(!V&&G){let t=G/e.height;V=Math.round(e.width*t)}}else V=e.width,G=e.height}let q=!g&&("lazy"===h||void 0===h);(!(f="string"==typeof f?f:Y)||f.startsWith("data:")||f.startsWith("blob:"))&&(m=!0,q=!1),d.unoptimized&&(m=!0),W&&!d.dangerouslyAllowSVG&&f.split("?",1)[0].endsWith(".svg")&&(m=!0);let F=o(b),H=Object.assign(A?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:P,objectPosition:I}:{},L?{}:{color:"transparent"},j),X=T||"empty"===S?null:"blur"===S?'url("data:image/svg+xml;charset=utf-8,'+(0,n.getImageBlurSvg)({widthInt:V,heightInt:G,blurWidth:c,blurHeight:u,blurDataURL:E||"",objectFit:H.objectFit})+'")':'url("'+S+'")',J=a.includes(H.objectFit)?"fill"===H.objectFit?"100% 100%":"cover":H.objectFit,Q=X?{backgroundSize:J,backgroundPosition:H.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:X}:{},$=function(e){let{config:t,src:r,unoptimized:n,width:i,quality:a,sizes:l,loader:o}=e;if(n)return{src:r,srcSet:void 0,sizes:void 0};let{widths:s,kind:d}=function(e,t,r){let{deviceSizes:n,allSizes:i}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let n;n=e.exec(r);)t.push(parseInt(n[2]));if(t.length){let e=.01*Math.min(...t);return{widths:i.filter(t=>t>=n[0]*e),kind:"w"}}return{widths:i,kind:"w"}}return"number"!=typeof t?{widths:n,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>i.find(t=>t>=e)||i[i.length-1]))],kind:"x"}}(t,i,l),c=s.length-1;return{sizes:l||"w"!==d?l:"100vw",srcSet:s.map((e,n)=>o({config:t,src:r,quality:a,width:e})+" "+("w"===d?e:n+1)+d).join(", "),src:o({config:t,src:r,quality:a,width:s[c]})}}({config:d,src:f,unoptimized:m,width:V,quality:F,sizes:p,loader:K});return{props:{...D,loading:q?"lazy":h,fetchPriority:O,width:V,height:G,decoding:k,className:v,style:{...H,...Q},sizes:$.sizes,srcSet:$.srcSet,src:_||$.src},meta:{unoptimized:m,priority:g,placeholder:S,fill:A}}}},46475,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let n=e.r(65765),i="undefined"==typeof window,a=i?()=>{}:n.useLayoutEffect,l=i?()=>{}:n.useEffect;function o(e){let{headManager:t,reduceComponentsToState:r}=e;function o(){if(t&&t.mountedInstances){let i=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(i,e))}}if(i){var s;null==t||null==(s=t.mountedInstances)||s.add(e.children),o()}return a(()=>{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)}}),a(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),l(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},4098,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"AmpStateContext",{enumerable:!0,get:function(){return n}});let n=e.r(20162)._(e.r(65765)).default.createContext({})},7553,(e,t,r)=>{"use strict";function n(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isInAmpMode",{enumerable:!0,get:function(){return n}})},11093,(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 u}});let n=e.r(20162),i=e.r(98389),a=e.r(59992),l=i._(e.r(65765)),o=n._(e.r(46475)),s=e.r(4098),d=e.r(69586),c=e.r(7553);function u(e){void 0===e&&(e=!1);let t=[(0,a.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,a.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(22751);let p=["name","httpEquiv","charSet","itemProp"];function m(e,t){let{inAmpMode:r}=t;return e.reduce(f,[]).reverse().concat(u(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return i=>{let a=!0,l=!1;if(i.key&&"number"!=typeof i.key&&i.key.indexOf("$")>0){l=!0;let t=i.key.slice(i.key.indexOf("$")+1);e.has(t)?a=!1:e.add(t)}switch(i.type){case"title":case"base":t.has(i.type)?a=!1:t.add(i.type);break;case"meta":for(let e=0,t=p.length;e<t;e++){let t=p[e];if(i.props.hasOwnProperty(t))if("charSet"===t)r.has(t)?a=!1:r.add(t);else{let e=i.props[t],r=n[t]||new Set;("name"!==t||!l)&&r.has(e)?a=!1:(r.add(e),n[t]=r)}}}return a}}()).reverse().map((e,t)=>{let r=e.key||t;return l.default.cloneElement(e,{key:r})})}let g=function(e){let{children:t}=e,r=(0,l.useContext)(s.AmpStateContext),n=(0,l.useContext)(d.HeadManagerContext);return(0,a.jsx)(o.default,{reduceComponentsToState:m,headManager:n,inAmpMode:(0,c.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)},45054,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let n=e.r(20162)._(e.r(65765)),i=e.r(10336),a=n.default.createContext(i.imageConfigDefault)},73026,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return n}});let n=e.r(20162)._(e.r(65765)).default.createContext(null)},64642,(e,t,r)=>{"use strict";function n(e){var t;let{config:r,src:n,width:i,quality:a}=e,l=a||(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(n)+"&w="+i+"&q="+l+(n.startsWith("/_next/static/media/"),"")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i}}),n.__next_img_default=!0;let i=n},89642,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return y}});let n=e.r(20162),i=e.r(98389),a=e.r(59992),l=i._(e.r(65765)),o=n._(e.r(33751)),s=n._(e.r(11093)),d=e.r(75548),c=e.r(10336),u=e.r(45054);e.r(22751);let f=e.r(73026),p=n._(e.r(64642)),m=e.r(30183),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 h(e,t,r,n,i,a,l){let o=null==e?void 0:e.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),null==r?void 0:r.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,i=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}(null==n?void 0:n.current)&&n.current(e)}}))}function v(e){return l.use?{fetchPriority:e}:{fetchpriority:e}}"undefined"==typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let b=(0,l.forwardRef)((e,t)=>{let{src:r,srcSet:n,sizes:i,height:o,width:s,decoding:d,className:c,style:u,fetchPriority:f,placeholder:p,loading:g,unoptimized:b,fill:x,onLoadRef:y,onLoadingCompleteRef:A,setBlurComplete:j,setShowAltText:_,sizesInput:w,onLoad:C,onError:S,...E}=e,O=(0,l.useCallback)(e=>{e&&(S&&(e.src=e.src),e.complete&&h(e,p,y,A,j,b,w))},[r,p,y,A,j,S,b,w]),k=(0,m.useMergedRef)(t,O);return(0,a.jsx)("img",{...E,...v(f),loading:g,width:s,height:o,decoding:d,"data-nimg":x?"fill":"1",className:c,style:u,sizes:i,srcSet:n,src:r,ref:k,onLoad:e=>{h(e.currentTarget,p,y,A,j,b,w)},onError:e=>{_(!0),"empty"!==p&&j(!0),S&&S(e)}})});function x(e){let{isAppRouter:t,imgAttributes:r}=e,n={as:"image",imageSrcSet:r.srcSet,imageSizes:r.sizes,crossOrigin:r.crossOrigin,referrerPolicy:r.referrerPolicy,...v(r.fetchPriority)};return t&&o.default.preload?(o.default.preload(r.src,n),null):(0,a.jsx)(s.default,{children:(0,a.jsx)("link",{rel:"preload",href:r.srcSet?void 0:r.src,...n},"__nimg-"+r.src+r.srcSet+r.sizes)})}let y=(0,l.forwardRef)((e,t)=>{let r=(0,l.useContext)(f.RouterContext),n=(0,l.useContext)(u.ImageConfigContext),i=(0,l.useMemo)(()=>{var e;let t=g||n||c.imageConfigDefault,r=[...t.deviceSizes,...t.imageSizes].sort((e,t)=>e-t),i=t.deviceSizes.sort((e,t)=>e-t),a=null==(e=t.qualities)?void 0:e.sort((e,t)=>e-t);return{...t,allSizes:r,deviceSizes:i,qualities:a}},[n]),{onLoad:o,onLoadingComplete:s}=e,m=(0,l.useRef)(o);(0,l.useEffect)(()=>{m.current=o},[o]);let h=(0,l.useRef)(s);(0,l.useEffect)(()=>{h.current=s},[s]);let[v,y]=(0,l.useState)(!1),[A,j]=(0,l.useState)(!1),{props:_,meta:w}=(0,d.getImgProps)(e,{defaultLoader:p.default,imgConf:i,blurComplete:v,showAltText:A});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(b,{..._,unoptimized:w.unoptimized,placeholder:w.placeholder,fill:w.fill,onLoadRef:m,onLoadingCompleteRef:h,setBlurComplete:y,setShowAltText:j,sizesInput:e.sizes,ref:t}),w.priority?(0,a.jsx)(x,{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)},728,(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 o}});let n=e.r(20162),i=e.r(75548),a=e.r(89642),l=n._(e.r(64642));function o(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:l.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=a.Image},30164,(e,t,r)=>{t.exports=e.r(728)},26162,e=>{"use strict";e.s(["Empty",()=>a],26162);var t=e.i(59992),r=e.i(30164);let n={src:e.i(66004).default,width:973,height:482,blurWidth:8,blurHeight:4,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAj0lEQVR42gGEAHv/AAAAAAATGRcXg4uIgcjJycORlJOKDxEQDAAAAAAAAAAAAAQEBANfa2Zj5fTu9ff9+/7q8u7uc3p3cgoLCwkAAAAAAEJGRELH1M/S4/jw/tD25v7U9ef+1ubf4jg8OjAAAAAAAHqBfmqxvLiisMG7rK7GvLKxxb2wpbKtoVNYVlADAwMC5U08HYgBOJwAAAAASUVORK5CYII="};var i=e.i(96745);function a(e){let{text:a="暂无数据",className:l,showImage:o=!0,imageSrc:s=n,imageAlt:d="暂无数据",imageSize:c=180,imageClassName:u}=e,f="string"==typeof s?{width:c,height:c}:{width:s.width,height:s.height};return(0,t.jsxs)("div",{className:(0,i.cn)("flex min-h-[180px] w-full flex-col items-center justify-center gap-2 py-4 text-[var(--ds-muted)]",l),role:"status","aria-live":"polite",children:[o?(0,t.jsx)("span",{className:(0,i.cn)("block shrink-0",u),style:{width:c},children:(0,t.jsx)(r.default,{src:s,alt:d,width:f.width,height:f.height,unoptimized:!0,draggable:!1,sizes:"".concat(c,"px"),className:"h-auto w-full object-contain"})}):null,(0,t.jsx)("span",{children:a})]})}},85941,e=>{"use strict";e.s(["IconTooltipButton",()=>o]);var t=e.i(59992),r=e.i(87655),n=e.i(92369),i=e.i(26995),a=e.i(96745);let l={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 o(e){let{icon:o,label:s,ariaLabel:d,tone:c="muted",disabled:u,className:f,iconClassName:p,href:m,download:g,onClick:h,iconSize:v=16,strokeWidth:b=1}=e,x=(0,a.cn)("icon-tooltip-btn","inline-flex h-4 w-4 items-center justify-center rounded border-none p-0 no-underline transition-colors",l[c],f);return(0,t.jsx)(i.TooltipProvider,{delayDuration:150,children:(0,t.jsxs)(i.Tooltip,{children:[(0,t.jsx)(i.TooltipTrigger,{asChild:!0,children:m?(0,t.jsx)("a",{href:u?void 0:m,download:g,className:x,"aria-label":null!=d?d:s,"aria-disabled":u||void 0,onClick:u?void 0:h,children:(0,t.jsx)(r.default,{name:o,size:v,className:p,strokeWidth:b})}):(0,t.jsx)(n.Button,{type:"button",variant:"plain",size:"icon",className:x,disabled:u,"aria-label":null!=d?d:s,onClick:h,children:(0,t.jsx)(r.default,{name:o,size:16,className:p})})}),(0,t.jsx)(i.TooltipContent,{side:"bottom",align:"center",className:"",children:s})]})})}},15692,e=>{"use strict";e.s(["ManageChromeHeaderActions",()=>o,"ManageFeatureChrome",()=>l]);var t=e.i(59992),r=e.i(65765),n=e.i(33751),i=e.i(87655);let a=(0,r.createContext)(null);function l(e){let{title:n,description:l,children:o,showTitle:s=!0,headerIcon:d}=e,[c,u]=(0,r.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:[s?(0,t.jsxs)("div",{className:"manage-page-title-block flex items-center",children:[d&&(0,t.jsx)("div",{className:"mr-[16px] rounded-md bg-[var(--ds-color-success-bg)] px-4 py-3",children:(0,t.jsx)(i.default,{name:d,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}),(0,t.jsx)("p",{className:"manage-page-desc",children:l})]})]}):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)(a.Provider,{value:c,children:o})})]})}function o(e){let{children:t}=e,i=(0,r.useContext)(a);return(0,r.useSyncExternalStore)(()=>()=>{},()=>!0,()=>!1)&&i?(0,n.createPortal)(t,i):null}},57100,e=>{"use strict";e.s(["composeRefs",()=>n,"useComposedRefs",()=>i]);var t=e.i(65765);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,i=t.map(t=>{let i=r(t,e);return n||"function"!=typeof i||(n=!0),i});if(n)return()=>{for(let e=0;e<i.length;e++){let n=i[e];"function"==typeof n?n():r(t[e],null)}}}}function i(){for(var e=arguments.length,r=Array(e),i=0;i<e;i++)r[i]=arguments[i];return t.useCallback(n(...r),r)}},75854,e=>{"use strict";e.s(["persistAgentEnv",()=>a]);var t=e.i(18805),r=e.i(15327),n=e.i(17655),i=e.i(49377);async function a(e,a,l,o,s,d){var c,u,f,p;let m=i.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!=(c=m.agentConfig.effort)?c:null,background:null!=(u=m.agentConfig.background)&&u,isolation:null!=(f=m.agentConfig.isolation)?f:"",whentouse:null!=(p=m.agentConfig.whentouse)?p:"",env:o,llmProviders:m.agentConfig.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),...d},h=await (0,n.loadAgentPrompt)(e,a,l);await (0,n.saveAgentConfig)(e,a,l,g,{prompt:h}),m.setAgentConfig({...g,env:{...o}}),i.useAppStore.getState().wsConnected&&s();let v=i.useAppStore.getState();v.setStatus("环境变量已保存"+(v.wsConnected?",已请求 worker 重新加载配置":""),(0,r.resolveInfoStatusClass)(v.bridgeReady,v.wsConnected)),t.appToast.success(v.wsConnected?"已保存到 agent.json,并已请求 worker 重新加载配置。":"已保存到 agent.json。重连 WebSocket 后子进程环境将同步。")}},29716,e=>{"use strict";e.s(["LLM_MODEL_KEY",()=>t,"LLM_PROVIDER_ID_KEY",()=>r,"PERMISSION_MODE_EMPTY_SENTINEL",()=>o,"WS_ALLOW_TOOL_ASK_ALLOWED",()=>l,"WS_ALLOW_TOOL_ASK_KEY",()=>i,"WS_PERMISSION_MODE_ALLOWED",()=>a,"WS_PERMISSION_MODE_KEY",()=>n]);let t="LLM_MODEL",r="LLM_PROVIDER_ID",n="WS_PERMISSION_MODE",i="WS_ALLOW_TOOL_ASK",a=["acceptEdits","plan","default","dontAsk","bypassPermissions"],l=new Set(["0","1"]),o="__empty__"},57757,e=>{"use strict";e.s(["EnvManageView",()=>R],57757);var t=e.i(59992),r=e.i(65765),n=e.i(15692),i=e.i(92369),a=e.i(87655),l=e.i(84081),o=e.i(65486),s=e.i(18805),d=e.i(36763),c=e.i(37566),u=e.i(75854),f=e.i(21637),p=e.i(49377);let m=[{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"}}],g=[{key:"provider",name:"服务商类型",required:!0,options:m.map(e=>({label:e.label,value:e.value}))},{key:"id",name:"名称",required:!0,placeholder:"例如 openai-main"},{key:"baseUrl",name:"API地址",required:!0,placeholder:"例如 https://api.openai.com/v1"},{key:"apiKey",name:"API秘钥",required:!0,inputType:"password"},{key:"modelId",name:"模型 ID",required:!0,placeholder:"例如 gpt-5.5"},{key:"authToken",name:"认证变量",inputType:"password",placeholder:"可选,例如 OPENAI_API_KEY"}];var h=e.i(55105),v=e.i(72483),b=e.i(96745);let x=new Map(m.map(e=>[e.value,e]));function y(e){let{titleId:r,values:n,onFieldChange:l,onProviderSelect:o}=e;return(0,t.jsx)("div",{className:"divide-y divide-[var(--ds-color-border-default)]",children:g.map(e=>{var s,d;let c="custom-env-field-".concat(e.key),u="new-provider-field-".concat(r,"-").concat(e.key),f="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:c,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?x.get(r):void 0;if(!n)return null;let l=f===e.value;return(0,t.jsxs)(i.Button,{type:"button",variant:"plain",role:"radio","aria-checked":l,onClick:()=>o(n.value),className:(0,b.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)]",l&&"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,b.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)]",l&&"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})]})]}),l?(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)(a.default,{name:"Check",size:14,strokeWidth:2.5})}):null]},e.value)})}):e.options?(0,t.jsxs)(v.Select,{value:f,onValueChange:t=>l(e.key,t),children:[(0,t.jsx)(v.SelectTrigger,{id:c,className:(0,b.cn)("h-8 w-full max-w-none bg-[var(--ds-color-surface-default)] text-[var(--ds-text)]",e.className),children:(0,t.jsx)(v.SelectValue,{})}),(0,t.jsx)(v.SelectContent,{children:e.options.map(e=>(0,t.jsx)(v.SelectItem,{value:e.value,children:e.label},e.value))})]}):(0,t.jsx)(h.Input,{id:c,name:u,type:null!=(s=e.inputType)?s:"text",spellCheck:!1,autoComplete:"password"===e.inputType?"new-password":"off",placeholder:null!=(d=e.placeholder)?d:"请输入".concat(e.name),className:(0,b.cn)("border-[var(--ds-color-border-default)] bg-[var(--ds-color-surface-default)] placeholder:text-[var(--text-placeholder)]",e.className),value:f,onChange:t=>l(e.key,t.target.value)})]},e.key)})})}let A=/^[A-Za-z0-9_-]+$/,j=new Map(m.map(e=>[e.value,e]));function _(){var e;return{...Object.fromEntries(g.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=m[0])?void 0:e.defaults}}function w(e){let{open:n,onOpenChange:a,onSaved:m}=e,h=(0,r.useId)(),v=(0,p.useAppStore)(e=>e.wsUrl),b=(0,p.useAppStore)(e=>e.apiBase),{currentAgent:x,loadAgentConfig:w}=(0,d.useSession)(),{sendReloadAgentConfig:C}=(0,c.useWebSocketSender)(),[S,E]=(0,r.useState)(!0),[O,k]=(0,r.useState)(!1),[N,P]=(0,r.useState)(!1),[I,R]=(0,r.useState)(_),M=(0,r.useCallback)(()=>{R(_()),P(!1)},[]);(0,r.useEffect)(()=>{n&&(E(!0),M(),w().finally(()=>{E(!1)}))},[n,w,M]);let D=(0,r.useCallback)((e,t)=>{P(!0),R(r=>({...r,[e]:t}))},[]),z=(0,r.useCallback)(e=>{let t=j.get(e);if(!t)return void D("provider",e);P(!0),R(e=>({...e,...t.defaults}))},[D]),L=(0,r.useCallback)(async e=>{if(e)return void a(!0);(!N||await (0,f.confirmDiscardFlyoutChanges)())&&a(!1)},[N,a]),T=(0,r.useCallback)(async()=>{let e=p.useAppStore.getState().agentConfig,t=function(e,t){var r,n;let i=new Set(g.map(e=>e.key));for(let t of g)if(t.required&&!String(null!=(r=e[t.key])?r:"").trim())return{ok:!1,message:"请填写".concat(t.name)};if(!i.has("id"))return{ok:!0};let a=String(null!=(n=e.id)?n:"").trim();return A.test(a)?t.some(e=>e.id===a)?{ok:!1,message:"服务商 ID 已存在:".concat(a)}:{ok:!0}:{ok:!1,message:"服务商 ID 仅允许字母、数字、下划线和中划线"}}(I,e.llmProviders);if(!t.ok)return void s.appToast.info(t.message);let r=function(e){var t,r,n,i,a,l;let o=String(null!=(t=e.id)?t:"").trim(),s=String(null!=(r=e.modelId)?r:"").trim(),d=String(null!=(n=e.modelLabel)?n:"").trim();return{id:o,name:o,baseUrl:String(null!=(i=e.baseUrl)?i:"").trim(),apiKey:String(null!=(a=e.apiKey)?a:"").trim(),authToken:String(null!=(l=e.authToken)?l:"").trim(),provider:"anthropic"===e.provider?"anthropic":"openai",models:[{id:s,label:d}],defaultModel:s}}(I),n=[...e.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),r];k(!0);try{await (0,u.persistAgentEnv)(v,b,x(),{...e.env},C,{llmProviders:n}),P(!1),await (null==m?void 0:m()),a(!1)}catch(e){s.appToast.error("保存服务商失败:".concat(e instanceof Error?e.message:String(e)))}finally{k(!1)}},[I,v,b,x,C,a,m]);return(0,t.jsx)(o.Dialog,{open:n,onOpenChange:e=>void L(e),children:(0,t.jsxs)(o.DialogContent,{"aria-labelledby":h,className:"max-w-4xl",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)(o.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)(o.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(o.DialogBody,{className:"flex min-h-[420px] flex-col overflow-hidden !py-4",children:S?(0,t.jsx)(l.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)(y,{titleId:h,values:I,onFieldChange:D,onProviderSelect:z})})}),(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)(i.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:S||O,onClick:()=>void L(!1),className:"cursor-pointer",children:"取消"}),(0,t.jsx)(i.Button,{type:"button",size:"lg",disabled:S||O,onClick:()=>void T(),className:"cursor-pointer",children:O?"保存中…":"保存"})]})]})})}var C=e.i(26162),S=e.i(29716),E=e.i(85941);function O(e){let{row:r,onSetDefault:n,settingDefault:a=!1,onTest:l,onEdit:o,onDelete:s}=e,d="".concat(r.baseUrl," · ").concat(r.model);return(0,t.jsxs)("article",{className:(0,b.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,b.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:d,children:d})]})]}),(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)(i.Button,{type:"button",variant:"plain",size:"sm",disabled:r.isDefault||a,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:a?"设置中…":"设为默认"}),l?(0,t.jsx)(i.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:()=>l(r.id),children:"测试"}):null,o?(0,t.jsx)(E.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(r.name),onClick:()=>o(r.id)}):null,(0,t.jsx)(E.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(r.name),onClick:()=>s(r.id)})]})]})}function k(e,t){var r,n;let i="string"==typeof t[S.LLM_PROVIDER_ID_KEY]?t[S.LLM_PROVIDER_ID_KEY].trim():"";return i&&e.some(e=>e.id===i)?i:null!=(n=null==(r=e[0])?void 0:r.id.trim())?n:""}function N(e,t){let r=k(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 P(e){console.log("edit",e)}function I(){let e=(0,p.useAppStore)(e=>e.wsUrl),n=(0,p.useAppStore)(e=>e.apiBase),i=(0,p.useAppStore)(e=>e.agentConfig.llmProviders),a=(0,p.useAppStore)(e=>e.agentConfig.env),{currentAgent:l}=(0,d.useSession)(),{sendReloadAgentConfig:o}=(0,c.useWebSocketSender)(),[f,m]=(0,r.useState)(()=>N(i,a)),[g,h]=(0,r.useState)(null);(0,r.useEffect)(()=>{m(N(i,a))},[i,a]);let v=(0,r.useCallback)(async t=>{let r=p.useAppStore.getState();if(t!==k(r.agentConfig.llmProviders,r.agentConfig.env)){h(t);try{await (0,u.persistAgentEnv)(e,n,l(),{...r.agentConfig.env,[S.LLM_PROVIDER_ID_KEY]:t},o)}catch(e){s.appToast.error("设为默认失败:".concat(e instanceof Error?e.message:String(e)))}finally{h(null)}}},[e,n,l,o]),b=(0,r.useCallback)(async t=>{let r=p.useAppStore.getState(),i=r.agentConfig.llmProviders.filter(e=>e.id!==t).map(e=>({...e,models:e.models.map(e=>({...e}))}));if(i.length===r.agentConfig.llmProviders.length)return;let a={...r.agentConfig.env};if(t===k(r.agentConfig.llmProviders,r.agentConfig.env)){var d,c;let e=null!=(c=null==(d=i[0])?void 0:d.id.trim())?c:"";e?a[S.LLM_PROVIDER_ID_KEY]=e:delete a[S.LLM_PROVIDER_ID_KEY]}try{await (0,u.persistAgentEnv)(e,n,l(),a,o,{llmProviders:i})}catch(e){s.appToast.error("删除服务商失败:".concat(e instanceof Error?e.message:String(e)))}},[e,n,l,o]);return(0,t.jsx)("div",{className:"mt-4 flex flex-col gap-3",children:0===f.length?(0,t.jsx)(C.Empty,{text:"暂无服务商"}):f.map(e=>(0,t.jsx)(O,{row:e,onSetDefault:e=>void v(e),settingDefault:g===e.id,onEdit:P,onDelete:b},e.id))})}function R(){let[e,l]=(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)(i.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>l(!0),className:"mr-[12px]",children:[(0,t.jsx)(a.default,{name:"Create",size:16,className:"align-middle"}),"添加服务商"]})})}),(0,t.jsx)(I,{}),(0,t.jsx)(w,{open:e,onOpenChange:l})]})}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,57100,e=>{"use strict";e.s(["composeRefs",()=>r,"useComposedRefs",()=>o]);var t=e.i(65765);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)}},92371,e=>{"use strict";e.s(["Textarea",()=>r]);var t=e.i(59992),n=e.i(96745);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})}},49091,35182,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],l=r.exec(o);l&&(n[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 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 l=[];for(let e=0;e<r.length;e++){let o=r[e];if(!o||"object"!=typeof o||"string"!=typeof o.key)continue;let s=o.key;if(!Object.prototype.hasOwnProperty.call(n,s))continue;let i=n[s];null!=i&&""!==String(i).trim()&&l.push("".concat(s,"=").concat(t(String(i))))}let s=Object.keys(n).filter(e=>!o.has(e)).sort();for(let e=0;e<s.length;e++){let r=s[e],o=n[r];null!=o&&""!==String(o).trim()&&l.push("".concat(r,"=").concat(t(String(o))))}let i=l.join("\n");return i.length>0?"".concat(i,"\n"):""}e.s(["buildEnvFileContentFromForm",()=>r,"parseEnvContentToMap",()=>n],49091),e.s(["loadDemoSingleMessage",()=>c,"loadSystemEnv",()=>s,"saveSystemEnv",()=>i,"saveSystemMcpJson",()=>a],35182);var o=e.i(61293),l=e.i(10602);async function s(e,t,n){return(0,o.get)((0,l.buildSystemEnvApiUrl)(e,t,n))}async function i(e,t,n,r){await (0,o.patch)((0,l.buildSystemEnvApiUrl)(e,t,n),{content:r})}async function a(e,t,n,r){await (0,o.patch)((0,l.buildSystemMcpJsonApiUrl)(e,t,n),{content:r})}async function c(){return(0,o.get)("/api/demo/single-message")}},29716,e=>{"use strict";e.s(["LLM_MODEL_KEY",()=>t,"LLM_PROVIDER_ID_KEY",()=>n,"PERMISSION_MODE_EMPTY_SENTINEL",()=>i,"WS_ALLOW_TOOL_ASK_ALLOWED",()=>s,"WS_ALLOW_TOOL_ASK_KEY",()=>o,"WS_PERMISSION_MODE_ALLOWED",()=>l,"WS_PERMISSION_MODE_KEY",()=>r]);let t="LLM_MODEL",n="LLM_PROVIDER_ID",r="WS_PERMISSION_MODE",o="WS_ALLOW_TOOL_ASK",l=["acceptEdits","plan","default","dontAsk","bypassPermissions"],s=new Set(["0","1"]),i="__empty__"},71331,e=>{e.v("/app/_next/static/media/upload-file.88541e18.png")}]);
|