@auto-ai/agent 2.1.120 → 2.1.122

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.
Files changed (85) hide show
  1. package/.env.example +2 -1
  2. package/dist/404/index.html +1 -1
  3. package/dist/404.html +1 -1
  4. package/dist/_next/static/chunks/19aa69c07b3642d5.js +1 -0
  5. package/dist/_next/static/chunks/24459c7365a2b28b.js +1 -0
  6. package/dist/_next/static/chunks/{d3e2070a86378cfb.js → 33eeef286c328da0.js} +1 -1
  7. package/dist/_next/static/chunks/3407244006d6a98a.js +1 -0
  8. package/dist/_next/static/chunks/566e152e480b267a.js +1 -0
  9. package/dist/_next/static/chunks/6ad4268160f361a6.js +1 -0
  10. package/dist/_next/static/chunks/{d9a278a2a26e8ee5.js → 6f9a48a7f83e669a.js} +1 -1
  11. package/dist/_next/static/chunks/7658b5b9c2865eb1.js +1 -0
  12. package/dist/_next/static/chunks/7a5fd448b280dd64.js +1 -0
  13. package/dist/_next/static/chunks/{fa677aa06f1c0539.js → 98f0c5604e839ba2.js} +1 -1
  14. package/dist/_next/static/chunks/a38eccf0bb5ca1e9.js +1 -0
  15. package/dist/_next/static/chunks/b29a354245bfc377.css +1 -0
  16. package/dist/_next/static/chunks/b76778c5811ef7a1.js +1 -0
  17. package/dist/_next/static/chunks/c2bed9d5fa7be4bd.js +1 -0
  18. package/dist/_next/static/chunks/c5a4977aae6a008c.js +1 -0
  19. package/dist/_next/static/chunks/e7bd145455a541af.css +4 -0
  20. package/dist/_next/static/chunks/f2bb685629307d4d.js +1 -0
  21. package/dist/_next/static/chunks/f7e71ce1c236f806.js +1 -0
  22. package/dist/_next/static/chunks/{67acc15b8a448e1a.js → fc4be3bcf72559a0.js} +1 -1
  23. package/dist/index.html +1 -1
  24. package/dist/index.txt +16 -16
  25. package/dist/manage/about/index.html +2 -2
  26. package/dist/manage/about/index.txt +19 -19
  27. package/dist/manage/add-account/basic/index.html +2 -2
  28. package/dist/manage/add-account/basic/index.txt +23 -22
  29. package/dist/manage/add-account/index.html +2 -2
  30. package/dist/manage/add-account/index.txt +22 -23
  31. package/dist/manage/agent-teams/index.html +2 -2
  32. package/dist/manage/agent-teams/index.txt +21 -21
  33. package/dist/manage/env/index.html +2 -2
  34. package/dist/manage/env/index.txt +21 -21
  35. package/dist/manage/general/index.html +2 -2
  36. package/dist/manage/general/index.txt +19 -19
  37. package/dist/manage/index.html +1 -1
  38. package/dist/manage/index.txt +16 -16
  39. package/dist/manage/mcp/index.html +2 -2
  40. package/dist/manage/mcp/index.txt +21 -21
  41. package/dist/manage/permissions/index.html +2 -2
  42. package/dist/manage/permissions/index.txt +19 -19
  43. package/dist/manage/skills/index.html +2 -2
  44. package/dist/manage/skills/index.txt +21 -21
  45. package/dist/manage/task/index.html +2 -2
  46. package/dist/manage/task/index.txt +19 -19
  47. package/dist/manage/teams/index.html +2 -2
  48. package/dist/manage/teams/index.txt +19 -19
  49. package/dist/manage/tools/index.html +2 -2
  50. package/dist/manage/tools/index.txt +21 -21
  51. package/dist/ws-test.html +129 -191
  52. package/mcps-runtime/claude-geelib-channel/.mcp.json +18 -0
  53. package/mcps-runtime/claude-geelib-channel/server/boot.mjs +32 -0
  54. package/mcps-runtime/claude-geelib-channel/server/geelib-api.mjs +192 -0
  55. package/mcps-runtime/claude-geelib-channel/server/geelib-auth.mjs +147 -0
  56. package/mcps-runtime/claude-geelib-channel/server/geelib-client.mjs +63 -0
  57. package/mcps-runtime/claude-geelib-channel/server/index.mjs +451 -0
  58. package/mcps-runtime/claude-geelib-channel/server/poll.mjs +457 -0
  59. package/mcps-runtime/claude-geelib-channel/server/state.mjs +216 -0
  60. package/package.json +6 -6
  61. package/tools-runtime/code-tool/index.cjs +1 -0
  62. package/tools-runtime/code-tool/src/index.ts +7 -1
  63. package/tools-runtime/git-tool/index.cjs +69 -5
  64. package/tools-runtime/git-tool/src/workspace.ts +101 -4
  65. package/tools-runtime/git-tool/src/wsInit.ts +26 -3
  66. package/dist/_next/static/chunks/249606605eed1993.js +0 -1
  67. package/dist/_next/static/chunks/424d3f3f176d43d7.js +0 -1
  68. package/dist/_next/static/chunks/4302af16b34bf750.js +0 -1
  69. package/dist/_next/static/chunks/4a073924e062c459.css +0 -1
  70. package/dist/_next/static/chunks/6209b42cbfcf288a.js +0 -1
  71. package/dist/_next/static/chunks/83bf6e4bc0aad48b.css +0 -4
  72. package/dist/_next/static/chunks/8b34d657c6bbb8df.js +0 -1
  73. package/dist/_next/static/chunks/904ad158fd721117.js +0 -1
  74. package/dist/_next/static/chunks/99063f8d79783308.js +0 -1
  75. package/dist/_next/static/chunks/9cd912a1967f10df.js +0 -1
  76. package/dist/_next/static/chunks/c52dcbe269bb02d0.js +0 -1
  77. package/dist/_next/static/chunks/d01957b1055b357a.js +0 -1
  78. package/dist/_next/static/chunks/dacc94cf10289334.js +0 -1
  79. package/dist/_next/static/chunks/fff9d250e482f00e.js +0 -1
  80. package/skills-runtime/geelib/SKILL.md +0 -229
  81. package/skills-runtime/geelib/geelib-poller-state.json +0 -17
  82. package/skills-runtime/geelib/geelib.mjs +0 -762
  83. /package/dist/_next/static/{fg4nA8liSSLEgWV4WTZDt → pVB1xZbEW09ksdJlV12Zn}/_buildManifest.js +0 -0
  84. /package/dist/_next/static/{fg4nA8liSSLEgWV4WTZDt → pVB1xZbEW09ksdJlV12Zn}/_clientMiddlewareManifest.json +0 -0
  85. /package/dist/_next/static/{fg4nA8liSSLEgWV4WTZDt → pVB1xZbEW09ksdJlV12Zn}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),a=e.i(71645),l=e.i(72064),s=e.i(75157),r=e.i(19455);function n(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:m=!1,method:p="POST",transport:f="xhr",fieldName:x="file",headers:b,extraFormData:h,autoRetryTimes:g=0,autoRetryDelayMs:v=800,selectionOnly:y=!1,className:j,emptyTitle:C="点击或拖拽文件到此处",emptyHint:w="支持上传文件",onFilesChange:k,onUploadSuccess:N,onUploadError:S,onValidationError:T}=e,A=a.useId(),R=a.useRef(null),E=a.useRef(new Map),M=a.useRef(new Map),P=a.useRef([]),[z,U]=a.useState(!1),[O,D]=a.useState([]),B=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{P.current=O,null==k||k(O)},[O,k]),a.useEffect(()=>()=>{for(let e of E.current.values())e.abort();for(let e of M.current.values())e.abort();for(let e of P.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let I=a.useCallback((e,t)=>{D(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),L=a.useCallback(async(e,t)=>{let a=P.current.find(t=>t.id===e);if(!a||c)return;I(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let l=new FormData;if(h)for(let[e,t]of Object.entries(h))l.append(e,t);l.append(x,a.file);try{let t="";if("fetch"===f){let a=new AbortController;M.current.set(e,a);let s=await fetch(i,{method:p,headers:b,body:l,signal:a.signal}),r=await s.text();try{t=r?JSON.parse(r):""}catch(e){t=r}if(!s.ok)throw Error("上传失败:".concat(s.status," ").concat(s.statusText))}else t=await new Promise((t,a)=>{let s=new XMLHttpRequest;if(E.current.set(e,s),s.open(p,i,!0),b)for(let[e,t]of Object.entries(b))s.setRequestHeader(e,t);s.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));I(e,{progress:a})},s.onerror=()=>a(Error("网络异常,上传失败")),s.onabort=()=>a(Error("__ABORTED__")),s.onload=()=>{s.status>=200&&s.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(s)):a(Error("上传失败:".concat(s.status," ").concat(s.statusText)))},s.send(l)});I(e,{status:"success",progress:100,error:""});let a=P.current.find(t=>t.id===e);a&&(null==N||N(a,t))}catch(s){let a=s instanceof Error?s.message:String(s);if("__ABORTED__"===a)return void I(e,{status:"selected",progress:0,error:""});if(t<g){I(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(g,")")}),await new Promise(e=>window.setTimeout(e,v)),await L(e,t+1);return}I(e,{status:"error",error:a});let l=P.current.find(t=>t.id===e);l&&(null==S||S(l,a))}finally{E.current.delete(e),M.current.delete(e)}},[v,g,c,h,x,b,p,S,N,f,I,i]),_=a.useCallback(e=>{L(e,0)},[L]),F=a.useCallback(e=>{var t,a;null==(t=E.current.get(e))||t.abort(),null==(a=M.current.get(e))||a.abort()},[]),V=a.useCallback(()=>{for(let e of P.current)("selected"===e.status||"error"===e.status)&&_(e.id)},[_]),K=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(P.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let l of e){let e="".concat(l.name,"::").concat(l.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),l=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?l.startsWith("".concat(e.slice(0,-1))):l===e)}(l,B)){null==T||T("文件类型不支持:".concat(l.name));continue}if(l.size>u){null==T||T("文件过大(最大 ".concat(n(u),"):").concat(l.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:l,status:"selected",progress:0,error:"",retryCount:0,previewUrl:l.type.startsWith("image/")?URL.createObjectURL(l):""})}}if(!a.length)return;let l=d?[...P.current,...a]:[a[a.length-1]];if(!d)for(let e of P.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(D(l),m&&!y)for(let e of a)_(e.id)},[B,m,c,u,d,T,y,_]),H=a.useCallback(e=>{let t=e.target.files;t&&(K(Array.from(t)),e.target.value="")},[K]),J=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),U(!1),c||K(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[K,c]);return(0,t.jsxs)("div",{className:(0,s.cn)("flex min-h-0 w-full flex-col gap-3",j),children:[(0,t.jsx)("input",{ref:R,id:A,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:H}),(0,t.jsxs)("label",{htmlFor:A,onDragOver:e=>{e.preventDefault(),c||U(!0)},onDragLeave:e=>{e.preventDefault(),U(!1)},onDrop:J,className:(0,s.cn)("flex min-h-[124px] cursor-pointer flex-col items-center justify-center gap-1 rounded-lg border border-dashed border-[var(--ds-border)] px-4 py-6 text-center transition-colors hover:border-[var(--ds-border-hover)] hover:bg-[var(--ds-main-tint)]",z&&"bg-[var(--ds-accent)]/5 border-[var(--ds-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(l.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-base text-[var(--ds-text)]",children:C}),(0,t.jsx)("div",{className:"text-sm text-[var(--ds-muted)]",children:w})]}),O.length?(0,t.jsx)("div",{className:"space-y-2",children:O.map(e=>(0,t.jsx)("div",{className:"rounded-md border border-[var(--ds-border)] 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-base text-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-sm text-[var(--ds-muted)]",children:n(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-main-tint)]",children:(0,t.jsx)("div",{className:"h-full bg-[var(--ds-accent)] transition-all",style:{width:"".concat(e.progress,"%")}})}):null,"error"===e.status?(0,t.jsx)("div",{className:"mt-1 text-sm 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)(l.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>_(e.id),children:["error"===e.status?(0,t.jsx)(l.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(r.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(l.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!y&&!m&&O.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(r.Button,{type:"button",size:"sm",onClick:V,disabled:c,children:"上传"})}):null]})}var o=e.i(76639),c=e.i(13354),d=e.i(29250);function u(e){let{open:l,onOpenChange:s,title:n,description:u,uploadUrl:m,resetKey:p}=e,[f,x]=(0,a.useState)(!1),[b,h]=(0,a.useState)(null),g=(0,a.useCallback)(()=>{s(!1),h(null)},[s]),v=(0,a.useCallback)(async()=>{if(!b)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",b),x(!0);try{let t=await (0,d.bridgeFetch)(m,{method:"POST",body:e}),a=Number(t.imported||0),l=Number(t.overwritten||0),s=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(l)+(s>0?",拒绝 ".concat(s):"")),g()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{x(!1)}},[g,b,m]);return(0,t.jsx)(o.Dialog,{open:l,onOpenChange:e=>{s(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:n}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:g,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:m,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:f,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;h(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(l?"open":"closed","-").concat(null!=p?p:m)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(r.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:g,children:"取消"}),(0,t.jsx)(r.Button,{type:"button",size:"lg",variant:"default",disabled:f||null==b,onClick:()=>void v(),children:f?"导入中…":"确定"})]})]})]})})}},94197,e=>{"use strict";e.s(["IconTooltipButton",()=>i]);var t=e.i(18050),a=e.i(72064),l=e.i(19455),s=e.i(46798),r=e.i(75157);let n={muted:"text-[var(--ds-muted)] hover:text-[var(--ds-text)]",danger:"text-red-600 hover:text-red-800 [&_svg]:!text-red-600 hover:[&_svg]:!text-red-800"};function i(e){let{icon:i,label:o,ariaLabel:c,tone:d="muted",disabled:u,className:m,iconClassName:p,onClick:f}=e;return(0,t.jsx)(s.TooltipProvider,{delayDuration:150,children:(0,t.jsxs)(s.Tooltip,{children:[(0,t.jsx)(s.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(l.Button,{type:"button",variant:"plain",size:"icon",className:(0,r.cn)("h-4 w-4",n[d],m),disabled:u,"aria-label":null!=c?c:o,onClick:f,children:(0,t.jsx)(a.default,{name:i,size:16,className:p})})}),(0,t.jsx)(s.TooltipContent,{side:"bottom",align:"center",className:"text-base",children:o})]})})}},56708,e=>{"use strict";e.s(["ManageChromeHeaderActions",()=>i,"ManageFeatureChrome",()=>n]);var t=e.i(18050),a=e.i(71645),l=e.i(74080),s=e.i(72064);let r=(0,a.createContext)(null);function n(e){let{title:l,description:n,children:i,showTitle:o=!0,headerIcon:c}=e,[d,u]=(0,a.useState)(null);return(0,t.jsxs)("div",{className:"manage-page-wrap flex min-h-0 flex-1 flex-col",children:[(0,t.jsxs)("div",{className:"manage-page-header flex shrink-0 items-start justify-between gap-[var(--space-4)] pb-[var(--space-4)]",children:[o?(0,t.jsxs)("div",{className:"manage-page-title-block flex items-center",children:[c&&(0,t.jsx)("div",{className:"mr-3 rounded-md bg-[var(--green-light)] px-4 py-3",children:(0,t.jsx)(s.default,{name:c,size:24,className:"text-[var(--green-dark)]",strokeWidth:1.5})}),(0,t.jsxs)("div",{className:"pt-3",children:[(0,t.jsx)("h1",{className:"manage-page-title",children:l}),(0,t.jsx)("p",{className:"manage-page-desc",children:n})]})]}):null,(0,t.jsx)("div",{ref:u,className:"manage-page-header-actions self-start"})]}),(0,t.jsx)("div",{className:"manage-page-body flex min-h-0 min-w-0 flex-1 flex-col",children:(0,t.jsx)(r.Provider,{value:d,children:i})})]})}function i(e){let{children:t}=e,s=(0,a.useContext)(r);return(0,a.useSyncExternalStore)(()=>()=>{},()=>!0,()=>!1)&&s?(0,l.createPortal)(t,s):null}},92715,85413,e=>{"use strict";e.s(["AppTable",()=>m],92715);var t=e.i(18050);e.s(["Empty",()=>s],85413);var a=e.i(75157),l=e.i(72064);function s(e){let{text:s="暂无数据",className:r}=e;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-base text-[var(--ds-muted)]",r),role:"status","aria-live":"polite",children:[(0,t.jsx)(l.default,{name:"NoData",size:80,color:"var(--ds-muted)",className:"opacity-90"}),(0,t.jsx)("span",{children:s})]})}var r=e.i(71645);let n=r.forwardRef((e,l)=>{let{className:s,...r}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:l,className:(0,a.cn)("w-full caption-bottom border-collapse text-sm",s),...r})})});n.displayName="Table";let i=r.forwardRef((e,l)=>{let{className:s,...r}=e;return(0,t.jsx)("thead",{ref:l,className:(0,a.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",s),...r})});i.displayName="TableHeader";let o=r.forwardRef((e,l)=>{let{className:s,viewportFit:n=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=r.useRef(null),m=r.useCallback(e=>{u.current=e,"function"==typeof l?l(e):l&&(l.current=e)},[l]),[p,f]=r.useState(void 0);return r.useLayoutEffect(()=>{var e,t;if(!n)return void f(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let l=a.getBoundingClientRect().top;f(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-l-(i+o))))};a();let l=new ResizeObserver(()=>{a()});try{l.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;l.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)}},[n,i,o]),(0,t.jsx)("tbody",{ref:m,className:(0,a.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",s),style:n&&void 0!==p?{...c,maxHeight:p}:c,...d})});o.displayName="TableBody";let c=r.forwardRef((e,l)=>{let{className:s,hoverable:r=!0,...n}=e;return(0,t.jsx)("tr",{ref:l,className:(0,a.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-item-active)]",r&&"group/table-row",s),...n})});c.displayName="TableRow";let d=r.forwardRef((e,l)=>{let{className:s,...r}=e;return(0,t.jsx)("th",{ref:l,className:(0,a.cn)("h-10 border-b border-[var(--border-subtle)] bg-[var(--surface-2)] px-3 text-left align-middle text-[14px] font-medium !text-[var(--ds-text)] text-muted-foreground",s),...r})});d.displayName="TableHead";let u=r.forwardRef((e,l)=>{let{className:s,...r}=e;return(0,t.jsx)("td",{ref:l,className:(0,a.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--border-subtle)] p-3 align-middle text-base transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-item-hover)]",s),...r})});function m(e){let{rows:l,columns:r,getRowKey:m,className:p,rowClassName:f,headerRowClassName:x,emptyText:b,emptyNode:h,bodyProps:g}=e;return(0,t.jsx)("div",{className:(0,a.cn)("overflow-hidden border border-[var(--ds-border)]",p),children:(0,t.jsxs)(n,{children:[(0,t.jsx)(i,{children:(0,t.jsx)(c,{className:(0,a.cn)("bg-[var(--ds-main-tint)] hover:bg-[var(--ds-main-tint)]",x),children:r.map(e=>(0,t.jsx)(d,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(o,{...g,children:l.length?l.map(e=>(0,t.jsx)(c,{className:"function"==typeof f?f(e):f,children:r.map(a=>(0,t.jsx)(u,{className:a.cellClassName,children:a.render(e)},a.key))},m(e))):(0,t.jsx)(c,{hoverable:!1,children:(0,t.jsx)(u,{colSpan:r.length,className:"py-6",children:null!=h?h:(0,t.jsx)(s,{text:b})})})})]})})}u.displayName="TableCell"},62427,e=>{"use strict";e.s(["deleteRuntimeMcp",()=>d,"deleteRuntimeSkill",()=>h,"deleteRuntimeTool",()=>c,"exportRuntimeMcpUrl",()=>m,"exportRuntimeSkillUrl",()=>g,"exportRuntimeToolUrl",()=>u,"importRuntimeMcp",()=>f,"importRuntimeTool",()=>p,"installCloudSkill",()=>y,"listAgentTeams",()=>n,"listCloudSkillCatalog",()=>v,"listMcpServers",()=>l,"listRuntimeMcpPackages",()=>o,"listRuntimeTools",()=>i,"listSkills",()=>r,"listTools",()=>s,"loadRemoteMcpJson",()=>x,"saveRemoteMcpJson",()=>b]);var t=e.i(29250),a=e.i(36845);async function l(e,l,s){let r=await (0,t.get)((0,a.buildMcpServersListUrl)(e,l,s));return{servers:Array.isArray(r.servers)?r.servers:[]}}async function s(e,l,s){let r=await (0,t.get)((0,a.buildToolsListUrl)(e,l,s));return{tools:Array.isArray(r.tools)?r.tools:[]}}async function r(e,l,s){let r=await (0,t.get)((0,a.getSkillsList)(e,l,s));return{skills:Array.isArray(r.skills)?r.skills:[]}}async function n(e,l,s){let r=await (0,t.get)((0,a.buildAgentTeamsListUrl)(e,l,s));return{teamAgentTypes:Array.isArray(r.teamAgentTypes)?r.teamAgentTypes:[],agentTeams:Array.isArray(r.agentTeams)?r.agentTeams:[]}}async function i(e,l,s){let r=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,l,s));return{runtimeToolsDir:"string"==typeof r.runtimeToolsDir?r.runtimeToolsDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function o(e,l,s){let r=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,l,s));return{mcpRuntimeDir:"string"==typeof r.mcpRuntimeDir?r.mcpRuntimeDir:"",items:Array.isArray(r.items)?r.items.filter(e=>!!(e&&e.id)):[]}}async function c(e,l,s,r){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,l,s,r))}async function d(e,l,s,r){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,l,s,r))}function u(e,t,l,s){return(0,a.buildToolsRuntimeExportUrl)(e,t,l,s)}function m(e,t,l,s){return(0,a.buildMcpRuntimeExportUrl)(e,t,l,s)}async function p(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function f(e,l,s,r){let n=new FormData;return n.append("file",r),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,l,s),n,{type:"file"})}async function x(e,l,s){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,l,s))}async function b(e,l,s,r){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,l,s),{content:r})}async function h(e,l,s,r){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,l,s,r))}function g(e,t,l,s){return(0,a.buildSkillsRuntimeExportUrl)(e,t,l,s)}async function v(e,l,s,r,n,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,l,s,r,n,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function y(e,l,s,r){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,l,s),{id:r})}},94055,e=>{"use strict";e.s(["AccentSwitch",()=>O],94055);var t=e.i(18050);e.s(["Root",()=>E,"Thumb",()=>M],39606),e.s([],37751),e.i(37751),e.i(47167);var a=e.i(71645),l=e.i(94349),s=e.i(76477),r=e.i(26292),n=e.i(977),i=e.i(62372),o=e.i(17514),c=e.i(27601),d=e.i(19805),u=e.i(89879),m=e.i(91730),p=e.i(67805);let f=a.createContext(void 0),x=function(e){return e.disabled="data-disabled",e.valid="data-valid",e.invalid="data-invalid",e.touched="data-touched",e.dirty="data-dirty",e.filled="data-filled",e.focused="data-focused",e}({}),b={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},h={disabled:!1,...b},g=function(e){return e.checked="data-checked",e.unchecked="data-unchecked",e.disabled="data-disabled",e.readonly="data-readonly",e.required="data-required",e.valid="data-valid",e.invalid="data-invalid",e.touched="data-touched",e.dirty="data-dirty",e.filled="data-filled",e.focused="data-focused",e}({}),v={valid:e=>null===e?null:e?{[x.valid]:""}:{[x.invalid]:""},checked:e=>e?{[g.checked]:""}:{[g.unchecked]:""}},y=a.createContext({invalid:void 0,name:void 0,validityData:{state:{badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},errors:[],error:"",value:"",initialValue:null},setValidityData:o.NOOP,disabled:void 0,touched:b.touched,setTouched:o.NOOP,dirty:b.dirty,setDirty:o.NOOP,filled:b.filled,setFilled:o.NOOP,focused:b.focused,setFocused:o.NOOP,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:h,markedDirtyRef:{current:!1},registerFieldControl:o.NOOP,validation:{getValidationProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.EMPTY_OBJECT;return e},getInputValidationProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.EMPTY_OBJECT;return e},inputRef:{current:null},commit:async()=>{}}});function j(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],t=a.useContext(y);if(t.setValidityData===o.NOOP&&!e)throw Error((0,p.default)(28));return t}let C=a.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:o.NOOP,validationMode:"onSubmit",submitAttemptedRef:{current:!1}}),w=a.createContext({controlId:void 0,registerControlId:o.NOOP,labelId:void 0,setLabelId:o.NOOP,messageIds:[],setMessageIds:o.NOOP,getDescriptionProps:e=>e});function k(){return a.useContext(w)}var N=e.i(30628),S=e.i(29315),T=e.i(5963),A=e.i(3404),R=e.i(19904);let E=a.forwardRef(function(e,p){let{checked:x,className:b,defaultChecked:h,"aria-labelledby":g,form:y,id:w,inputRef:E,name:M,nativeButton:P=!1,onCheckedChange:z,readOnly:U=!1,required:O=!1,disabled:D=!1,render:B,uncheckedValue:I,value:L,style:_,...F}=e,{clearErrors:V}=a.useContext(C),{state:K,setTouched:H,setDirty:J,validityData:W,setFilled:q,setFocused:Y,shouldValidateOnChange:Z,validationMode:X,disabled:$,name:G,validation:Q}=j(),{labelId:ee}=k(),et=$||D,ea=null!=G?G:M,el=(0,s.useStableCallback)(z),es=a.useRef(null),er=(0,r.useMergedRefs)(es,E,Q.inputRef),en=a.useRef(null),ei=(0,u.useBaseUiId)(),eo=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{id:t,implicit:l=!1,controlRef:r}=e,{controlId:i,registerControlId:c}=k(),d=(0,u.useBaseUiId)(t),m=l?i:void 0,p=(0,N.useRefWithInit)(()=>Symbol("labelable-control")),f=a.useRef(!1),x=a.useRef(null!=t),b=(0,s.useStableCallback)(()=>{f.current&&c!==o.NOOP&&(f.current=!1,c(p.current,void 0))});return(0,n.useIsoLayoutEffect)(()=>{let e;if(c!==o.NOOP){if(l){let a=null==r?void 0:r.current;e=(0,S.isElement)(a)&&null!=a.closest("label")?null!=t?t:null:null!=m?m:d}else if(null!=t)x.current=!0,e=t;else{if(!x.current)return void b();e=d}if(void 0===e)return void b();f.current=!0,c(p.current,e)}},[t,r,m,c,l,d,p,b]),a.useEffect(()=>b,[b]),null!=i?i:d}({id:w,implicit:!1,controlRef:en}),ec=P?void 0:eo,[ed,eu]=(0,l.useControlled)({controlled:x,default:!!h,name:"Switch",state:"checked"});!function(e,t){let{enabled:l=!0,getValue:s,id:r,value:i}=t,{registerFieldControl:o}=j(),c=a.useRef(null);c.current||(c.current=Symbol()),(0,n.useIsoLayoutEffect)(()=>{let t=c.current;if(t&&l)return o(t,{controlRef:e,getValue:s,id:r,value:i}),()=>{o(t,void 0)}},[e,l,s,r,o,i])}(en,{id:ei,value:ed}),(0,n.useIsoLayoutEffect)(()=>{es.current&&q(es.current.checked)},[es,q]),(0,R.useValueChanged)(ed,()=>{V(ea),J(ed!==W.initialValue),q(ed),Z()?Q.commit(ed):Q.commit(ed,!0)});let{getButtonProps:em,buttonRef:ep}=(0,m.useButton)({disabled:et,native:P}),ef=function(e,t,l){var s;let r=!(arguments.length>3)||void 0===arguments[3]||arguments[3],i=arguments.length>4?arguments[4]:void 0,[o,c]=a.useState(),d=(0,u.useBaseUiId)(i?"".concat(i,"-label"):void 0),m=null!=(s=null!=e?e:t)?s:o;return(0,n.useIsoLayoutEffect)(()=>{let a=e||t||!r?void 0:function(e,t){let a=function(e){if(!e)return;let t=e.parentElement;if(t&&"LABEL"===t.tagName)return t;let a=e.id;if(a){let t=e.nextElementSibling;if(t&&t.htmlFor===a)return t}let l=e.labels;return l&&l[0]}(e);if(a)return!a.id&&t&&(a.id=t),a.id||void 0}(l.current,d);o!==a&&c(a)}),m}(g,ee,es,!P,ec),ex=a.useMemo(()=>(0,d.mergeProps)({checked:ed,disabled:et,form:y,id:ec,name:ea,required:O,style:ea?i.visuallyHiddenInput:i.visuallyHidden,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:er,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(U)return void e.preventDefault();let t=e.currentTarget.checked,a=(0,T.createChangeEventDetails)(A.REASONS.none,e.nativeEvent);null==el||el(t,a),a.isCanceled||eu(t)},onFocus(){var e;null==(e=en.current)||e.focus()}},Q.getInputValidationProps,void 0!==L?{value:L}:o.EMPTY_OBJECT),[ed,et,y,er,ec,ea,el,U,O,eu,Q,L]),eb=a.useMemo(()=>({...K,checked:ed,disabled:et,readOnly:U,required:O}),[K,ed,et,U,O]),eh=(0,c.useRenderElement)("span",e,{state:eb,ref:[p,en,ep],props:[{id:P?eo:ei,role:"switch","aria-checked":ed,"aria-readonly":U||void 0,"aria-required":O||void 0,"aria-labelledby":ef,onFocus(){et||Y(!0)},onBlur(){let e=es.current;e&&!et&&(H(!0),Y(!1),"onBlur"===X&&Q.commit(e.checked))},onClick(e){var t;U||et||(e.preventDefault(),null==(t=es.current)||t.dispatchEvent(new PointerEvent("click",{bubbles:!0,shiftKey:e.shiftKey,ctrlKey:e.ctrlKey,altKey:e.altKey,metaKey:e.metaKey})))}},Q.getValidationProps,F,em],stateAttributesMapping:v});return(0,t.jsxs)(f.Provider,{value:eb,children:[eh,!ed&&ea&&void 0!==I&&(0,t.jsx)("input",{type:"hidden",form:y,name:ea,value:I}),(0,t.jsx)("input",{...ex,suppressHydrationWarning:!0})]})}),M=a.forwardRef(function(e,t){let{render:l,className:s,style:r,...n}=e,{state:i}=j(),o=function(){let e=a.useContext(f);if(void 0===e)throw Error((0,p.default)(63));return e}(),d={...i,...o};return(0,c.useRenderElement)("span",e,{state:d,ref:t,stateAttributesMapping:v,props:n})});var P=e.i(39606),P=P,z=e.i(75157);function U(e){let{className:a,thumbClassName:l,...s}=e;return(0,t.jsx)(P.Root,{"data-slot":"switch",className:(0,z.cn)("shadow-xs focus-visible:ring-ring/50 dark:data-[unchecked]:bg-input/80 peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent bg-input outline-none transition-colors focus-visible:border-ring focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[checked]:bg-primary",a),...s,children:(0,t.jsx)(P.Thumb,{className:(0,z.cn)("pointer-events-none block size-4 rounded-full bg-background ring-0 transition-transform will-change-transform data-[checked]:translate-x-4 data-[unchecked]:translate-x-0.5 data-[checked]:bg-primary-foreground",l)})})}function O(e){let{className:a,thumbClassName:l,...s}=e;return(0,t.jsx)(U,{className:(0,z.cn)("focus-visible:border-[var(--ds-accent)]/50 focus-visible:ring-[var(--ds-accent)]/35 data-[checked]:border-[var(--ds-accent)] data-[checked]:bg-[var(--ds-accent)]",a),thumbClassName:(0,z.cn)("data-[checked]:bg-white",l),...s})}},93479,e=>{"use strict";e.s(["Input",()=>l]);var t=e.i(18050),a=e.i(75157);function l(e){let{className:l,type:s="text",size:r="default",...n}=e;return(0,t.jsx)("input",{type:s,"data-slot":"input","data-size":r,className:(0,a.cn)("h-8 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-[#e0e0e0] 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-8 data-[size=lg]:h-10 data-[size=sm]:h-7",l),...n})}},20783,e=>{"use strict";e.s(["composeRefs",()=>l,"useComposedRefs",()=>s]);var t=e.i(71645);function a(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function l(){for(var e=arguments.length,t=Array(e),l=0;l<e;l++)t[l]=arguments[l];return e=>{let l=!1,s=t.map(t=>{let s=a(t,e);return l||"function"!=typeof s||(l=!0),s});if(l)return()=>{for(let e=0;e<s.length;e++){let l=s[e];"function"==typeof l?l():a(t[e],null)}}}}function s(){for(var e=arguments.length,a=Array(e),s=0;s<e;s++)a[s]=arguments[s];return t.useCallback(l(...a),a)}},57428,e=>{"use strict";e.s(["Checkbox",()=>r]);var t=e.i(18050),a=e.i(71645),l=e.i(72064),s=e.i(75157);let r=a.forwardRef(function(e,r){let{className:n,size:i="default",checked:o,defaultChecked:c,disabled:d,id:u,onChange:m,...p}=e,f=void 0!==o,[x,b]=a.useState(!!c),h=f?!!o:x;return(0,t.jsxs)("span",{"data-slot":"checkbox","data-size":i,"data-checked":h?"true":"false",className:(0,s.cn)("relative inline-flex shrink-0 items-center justify-center rounded-sm border border-solid border-border bg-transparent outline-none transition-[color,box-shadow,border-color,background-color] duration-150 ease-in-out","has-[:focus-visible]:border-[var(--border-focus)] has-[:focus-visible]:[box-shadow:var(--ring-focus-sm)]","has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50","data-[size=default]:size-4 data-[size=sm]:size-3.5",h?"border-[var(--ds-accent)] bg-[var(--ds-accent)]":"bg-transparent",n),children:[h?(0,t.jsx)(l.default,{name:"Check",className:(0,s.cn)("pointer-events-none text-[var(--surface-1)] [&_path]:!fill-none","sm"===i?"size-3":"size-3.5"),strokeWidth:2.25,"aria-hidden":"true"}):null,(0,t.jsx)("input",{ref:r,id:u,type:"checkbox",checked:f?o:void 0,defaultChecked:f?void 0:c,disabled:d,className:"absolute inset-0 m-0 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed",onChange:e=>{f||b(e.target.checked),null==m||m(e)},...p})]})})},51459,e=>{"use strict";e.s(["AgentTeamsManageView",()=>p],51459);var t=e.i(18050),a=e.i(71645),l=e.i(65934),s=e.i(87243),r=e.i(50711),n=e.i(94055),i=e.i(92715),o=e.i(85413),c=e.i(75157);function d(e){let{saveBusy:a,pickerFilteredRows:l,pickerLoading:s,pickerSelected:r,onPickerToggle:d}=e,u=[{key:"name",title:"名称",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"w-[140px] text-base text-[var(--ds-text)]",render:e=>{var t;return null!=(t=e.displayName)?t:e.id}},{key:"description",title:"详情",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"text-base text-[var(--ds-text)]",render:e=>{var t;return null!=(t=e.description)?t:"-"}},{key:"enabled",title:"启用/未启用",headerClassName:"w-64 text-right text-base text-[var(--ds-muted)]",cellClassName:"w-[72px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex justify-end",children:(0,t.jsx)(n.AccentSwitch,{checked:r.includes(e.id),onCheckedChange:t=>d(e.id,t),disabled:a,"aria-label":"启用 ".concat(e.label)})})}];return(0,t.jsx)("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col gap-4",children:(0,t.jsx)("div",{className:(0,c.cn)("flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border bg-[#fff] p-[24px] shadow-[var(--shadow-md)]","border-[var(--ds-border)]"),children:(0,t.jsx)("div",{className:"min-h-0 min-w-0 flex-1 overflow-y-auto",children:s?(0,t.jsx)("p",{className:"px-1 py-4 text-center text-base text-[var(--ds-muted)]",children:"加载中…"}):l.length?(0,t.jsx)(i.AppTable,{rows:l,columns:u,getRowKey:e=>e.id,className:"border-0",rowClassName:"border-[var(--ds-border)]",headerRowClassName:"border-[var(--ds-border)]"}):(0,t.jsx)("div",{className:"py-6",children:(0,t.jsx)(o.Empty,{})})})})})}var u=e.i(13354),m=e.i(62427);function p(){let e=(0,l.useAppStore)(e=>e.wsUrl),n=(0,l.useAppStore)(e=>e.apiBase),i=(0,l.useAppStore)(e=>e.agentId),o=(0,l.useAppStore)(e=>e.agentConfig),c=(0,l.useAppStore)(e=>e.setAgentConfig),{currentAgent:p,loadAgentConfig:f}=(0,s.useSession)(),x=(0,r.usePersistAgentConfigField)("agentTeams"),b=o.agentTeams,h=(0,a.useMemo)(()=>[...b].sort().join("\0"),[b]),[g,v]=(0,a.useState)([]),[y,j]=(0,a.useState)([]),[C,w]=(0,a.useState)(!1),[k,N]=(0,a.useState)(!1);(0,a.useEffect)(()=>{f()},[f]),(0,a.useEffect)(()=>{j([...b])},[h,b]),(0,a.useEffect)(()=>{w(!0),v([]),(0,m.listAgentTeams)(e,n,p()).then(e=>{var t,a;v((null!=(a=null!=(t=e.teamAgentTypes)?t:e.agentTeams)?a:[]).map(e=>{var t,a,l,s,r,n;return{id:null!=(a=null!=(t=e.agentType)?t:e.name)?a:"",label:null!=(s=null!=(l=e.agentType)?l:e.name)?s:"",displayName:null!=(n=null!=(r=e.name)?r:e.agentType)?n:"",description:e.description}}).filter(e=>e.id.length>0))}).catch(e=>{v([]),u.appToast.error("加载可选 Agent Team 失败:".concat(e instanceof Error?e.message:String(e)))}).finally(()=>{w(!1)})},[e,n,i,p]);let S=(0,a.useCallback)(async(e,t)=>{N(!0);try{await x(e,{silent:t})}finally{N(!1)}},[x]),T=(0,a.useCallback)((e,t)=>{let a=l.useAppStore.getState(),s=new Set(a.agentConfig.agentTeams);t?s.add(e):s.delete(e);let r=[...s].sort();j(r),c({...a.agentConfig,agentTeams:r}),S(r,!0)},[c,S]);return(0,t.jsx)(d,{saveBusy:k,pickerFilteredRows:g,pickerLoading:C,pickerSelected:y,onPickerToggle:T})}},28583,e=>{"use strict";e.s(["ToolsManageView",()=>j],28583);var t=e.i(18050),a=e.i(71645),l=e.i(65934),s=e.i(87243),r=e.i(13354),n=e.i(50711),i=e.i(19455),o=e.i(94055),c=e.i(94197),d=e.i(51419),u=e.i(92715);function m(e){let{items:a,saveBusy:l,onToggle:s,onExport:r,onRemove:n,className:i}=e,d=[{key:"name",title:"名称",headerClassName:"text-base",cellClassName:"text-base",render:e=>e.name},{key:"description",title:"详情",headerClassName:"text-base",cellClassName:"text-base",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"text-base",cellClassName:"whitespace-nowrap text-base text-[var(--ds-text)]",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)(o.AccentSwitch,{checked:!!e.enabled,disabled:l,onCheckedChange:t=>s(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] text-base",cellClassName:"w-[128px]",render:e=>(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(c.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:l,onClick:()=>r(e.name)}),(0,t.jsx)(c.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:l,onClick:()=>{n(e.name)}})]})}];return(0,t.jsx)(u.AppTable,{rows:a,columns:d,getRowKey:e=>"tools:".concat(e.name),className:i})}var p=e.i(36845),f=e.i(53925);function x(e){let{open:a,onOpenChange:l,wsUrl:s,apiBase:r,agent:n}=e;return(0,t.jsx)(f.ResourceImportDialog,{open:a,onOpenChange:l,title:"导入工具 zip",description:"选择一个 zip 文件并导入到 tools-runtime。",uploadUrl:(0,p.buildToolsRuntimeImportUrl)(s,r,n),resetKey:n})}var b=e.i(68499),h=e.i(72064),g=e.i(56708),v=e.i(62427);let y=[{value:"basic",label:"系统工具"},{value:"installed",label:"自定义工具"}];function j(){let e=(0,l.useAppStore)(e=>e.wsUrl),p=(0,l.useAppStore)(e=>e.apiBase),f=(0,l.useAppStore)(e=>e.agentConfig),j=(0,l.useAppStore)(e=>e.setAgentConfig),{currentAgent:C,loadAgentConfig:w}=(0,s.useSession)(),k=(0,n.usePersistAgentConfigField)("tools"),N=f.tools,S=(0,a.useMemo)(()=>[...N].sort().join("\0"),[N]),[T,A]=(0,a.useState)([]),[R,E]=(0,a.useState)([]),[M,P]=(0,a.useState)(!1),[z,U]=(0,a.useState)(!1),[O,D]=(0,a.useState)("basic"),[B,I]=(0,a.useState)(!1);(0,a.useEffect)(()=>{w()},[w]);let L=(0,a.useCallback)(async(e,t)=>{U(!0);try{await k(e,{silent:t})}finally{U(!1)}},[k]),_=(0,a.useCallback)(async()=>{A([]),P(!0);try{var t;let a=null!=(t=(await (0,v.listTools)(e,p,C())).tools)?t:[];A(a.map(e=>{var t,a;return{...e,id:e.name,label:(e.displayName&&e.displayName!==e.name?"".concat(e.displayName," · "):"")+e.name,description:null!=(a=null!=(t=e.description)?t:e.searchHint)?a:""}}))}catch(e){A([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{P(!1)}},[e,p,C]),F=(0,a.useCallback)(async t=>{if(await (0,b.confirmAlertDialog)({title:"确认删除工具包?",description:"工具名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,v.deleteRuntimeTool)(e,p,C(),t);let a=N.filter(e=>e!==t);E(e=>e.filter(e=>e!==t)),j({...f,tools:a}),await L(a,!0),await _()}catch(e){r.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[e,p,C,N,f,j,L,_]),V=(0,a.useCallback)(t=>{window.open((0,v.exportRuntimeToolUrl)(e,p,C(),t),"_blank","noopener")},[e,p,C]);(0,a.useEffect)(()=>{("basic"===O||"installed"===O)&&_()},[O,_]),(0,a.useEffect)(()=>{"basic"===O&&E([...N])},[O,N,S]);let K=(0,a.useCallback)(e=>{let t=[...new Set(e)].sort();j({...f,tools:t}),L(t,!0)},[f,j,L]),H=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...N,e])].sort():N.filter(t=>t!==e).sort();j({...f,tools:a}),L(a,!0)},[N,f,j,L]),J=(0,a.useMemo)(()=>T.filter(e=>!0===e.isRuntime).slice().sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({name:e.id,description:e.description||"",enabled:N.includes(e.id)})),[T,N]),W=[{key:"name",title:"名称",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"text-base text-[var(--ds-text)]",render:e=>e.label},{key:"description",title:"详情",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"text-base text-[var(--ds-text)]",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"w-14 w-[112px] text-base text-[var(--ds-muted)]",cellClassName:"w-[112px] align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex justify-end",children:(0,t.jsx)(o.AccentSwitch,{checked:R.includes(e.id),disabled:z,onCheckedChange:t=>{let a=t?[...new Set([...R,e.id])]:R.filter(t=>t!==e.id);E(a),K(a)},"aria-label":"选择 ".concat(e.label)})})},{key:"actions",title:"操作",headerClassName:"w-14 w-[72px] text-base text-[var(--ds-muted)]",cellClassName:"w-[72px] align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex justify-end",children:(0,t.jsx)(c.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",disabled:z,ariaLabel:"删除 ".concat(e.label),onClick:()=>F(e.id)})})}];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(g.ManageChromeHeaderActions,{children:(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:()=>I(!0),children:[(0,t.jsx)(h.default,{name:"Import",size:16,className:"align-middle"}),"导入自定义工具"]})}),(0,t.jsxs)(d.AppTabs,{tabs:y,value:O,listVariant:"line",onChange:e=>D(e),children:[(0,t.jsx)(d.AppTabsPanel,{value:"basic",children:(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:(0,t.jsx)("div",{className:"min-h-0",children:M?(0,t.jsx)("p",{className:"px-3 py-6 text-center text-base text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)(u.AppTable,{rows:T,columns:W,getRowKey:e=>e.id})})})}),(0,t.jsx)(d.AppTabsPanel,{value:"installed",children:(0,t.jsx)(m,{items:J,saveBusy:z,onToggle:H,onExport:V,onRemove:F})})]}),(0,t.jsx)(x,{open:B,onOpenChange:e=>{I(e),e||_()},wsUrl:e,apiBase:p,agent:C()})]})}},55242,e=>{"use strict";e.s(["AppDialog",()=>r]);var t=e.i(18050),a=e.i(71645),l=e.i(76639),s=e.i(75157);function r(e){let{open:r,onOpenChange:n,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u}=e,m=(0,a.useId)();return(0,t.jsx)(l.Dialog,{open:r,onOpenChange:n,children:(0,t.jsxs)(l.DialogContent,{"aria-labelledby":m,className:(0,s.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(l.DialogHeader,{children:[(0,t.jsx)(l.DialogTitle,{id:m,children:i}),(0,t.jsx)(l.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(l.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-border)] bg-[var(--ds-sidebar)] px-4 py-3",children:c}):null]})})}},89530,e=>{"use strict";e.s(["McpManageView",()=>C],89530);var t=e.i(18050),a=e.i(71645),l=e.i(65934),s=e.i(87243),r=e.i(13354),n=e.i(50711),i=e.i(51419),o=e.i(55242),c=e.i(92715),d=e.i(19455),u=e.i(94055),m=e.i(94197);function p(e){let{items:a,saveBusy:l,onToggleStatus:s,className:r}=e,n=[{key:"name",title:"名称",headerClassName:"text-base",cellClassName:"text-base",render:e=>e.label||e.name},{key:"description",title:"详情",headerClassName:"text-base",cellClassName:"text-base",render:e=>e.description||"-"},{key:"source",title:"来源",headerClassName:"text-base",cellClassName:"text-base",render:()=>"远程"},{key:"status",title:"状态",headerClassName:"text-base",cellClassName:"whitespace-nowrap py-2 align-middle",render:e=>s?(0,t.jsx)("span",{className:"inline-flex items-center justify-end gap-2 text-base text-[var(--ds-text)]",children:(0,t.jsx)(u.AccentSwitch,{checked:!e.disabled,disabled:l,onCheckedChange:t=>{s(e.name,t)},"aria-label":"".concat(e.disabled?"启用":"禁用"," ").concat(e.name)})}):(0,t.jsx)("span",{className:"text-base text-[var(--ds-text)]",children:e.installed?"已安装":"未安装"})}];return(0,t.jsx)(c.AppTable,{rows:a,columns:n,getRowKey:e=>"mcp:".concat(e.name),className:r})}var f=e.i(36845),x=e.i(53925);function b(e){let{open:a,onOpenChange:l,wsUrl:s,apiBase:r,agent:n}=e;return(0,t.jsx)(x.ResourceImportDialog,{open:a,onOpenChange:l,title:"导入 MCP zip",description:"选择一个 zip 文件并导入到 mcp-runtime。",uploadUrl:(0,f.buildMcpRuntimeImportUrl)(s,r,n),resetKey:n})}var h=e.i(68499),g=e.i(72064),v=e.i(56708),y=e.i(62427);let j=[{value:"basic",label:"本地MCP"},{value:"installed",label:"远程MCP"}];function C(){let e=(0,l.useAppStore)(e=>e.wsUrl),f=(0,l.useAppStore)(e=>e.apiBase),x=(0,l.useAppStore)(e=>e.agentConfig),C=(0,l.useAppStore)(e=>e.setAgentConfig),{currentAgent:w,loadAgentConfig:k}=(0,s.useSession)(),N=(0,n.usePersistAgentConfigField)("mcpServers"),S=x.mcpServers,T=(0,a.useMemo)(()=>[...S].sort().join("\0"),[S]),[A,R]=(0,a.useState)([]),[E,M]=(0,a.useState)([]),[P,z]=(0,a.useState)(!1),[U,O]=(0,a.useState)(!1),[D,B]=(0,a.useState)("basic"),[I,L]=(0,a.useState)(!1),[_,F]=(0,a.useState)(!1),[V,K]=(0,a.useState)(""),[H,J]=(0,a.useState)(!1);(0,a.useEffect)(()=>{k()},[k]);let W=(0,a.useCallback)(async(e,t)=>{O(!0);try{await N(e,{silent:t})}finally{O(!1)}},[N]),q=(0,a.useCallback)(async()=>{R([]),z(!0);try{var t;let a=null!=(t=(await (0,y.listMcpServers)(e,f,w())).servers)?t:[];R(a.map(e=>{var t,a,l;return{...e,id:e.name,label:e.name+(e.disabled?"(已禁用)":""),description:null!=(a=null!=(t=e.description)?t:e.source)?a:"",source:null!=(l=e.source)?l:"",installed:!!e.installed}}))}catch(e){R([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{z(!1)}},[e,f,w]),Y=(0,a.useCallback)(async t=>{var a;let l=A.find(e=>e.id===t),s=null!=(a=null==l?void 0:l.source)?a:"";if("runtime"!==s&&"remote"!==s)return void r.appToast.error("基础MCP不可删除");if(await (0,h.confirmAlertDialog)({title:"确认删除 MCP?",description:"服务器名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{if("remote"===s){let a=await (0,y.loadRemoteMcpJson)(e,f,w()),l={};try{l=JSON.parse(String(a.content||"{}"))}catch(e){l={mcpServers:{}}}(!l.mcpServers||Array.isArray(l.mcpServers)||"object"!=typeof l.mcpServers)&&(l.mcpServers={}),delete l.mcpServers[t],await (0,y.saveRemoteMcpJson)(e,f,w(),JSON.stringify(l,null,2))}else await (0,y.deleteRuntimeMcp)(e,f,w(),t);let a=S.filter(e=>e!==t);M(e=>e.filter(e=>e!==t)),C({...x,mcpServers:a}),await W(a,!0),await q()}catch(e){r.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[A,e,f,w,S,x,C,W,q]);(0,a.useEffect)(()=>{("basic"===D||"installed"===D)&&q()},[D,q]),(0,a.useEffect)(()=>{("basic"===D||"installed"===D)&&M([...S])},[D,S,T]);let Z=(0,a.useCallback)(async e=>{let t=[...new Set(e)].sort();C({...x,mcpServers:t}),await W(t,!0)},[x,C,W]),X=(0,a.useCallback)(async(e,t)=>{let a=t?[...new Set([...E,e])]:E.filter(t=>t!==e);M(a);try{await Z(a)}catch(e){M(E),r.appToast.error("切换启用状态失败: ".concat(e))}},[E,Z]),$=(0,a.useMemo)(()=>A.filter(e=>"remote"!==e.source).slice().sort((e,t)=>e.id.localeCompare(t.id)),[A]),G=(0,a.useMemo)(()=>A.filter(e=>"remote"===e.source).slice().sort((e,t)=>{let a=+!E.includes(e.id),l=+!E.includes(t.id);return a!==l?a-l:e.id.localeCompare(t.id)}).map(e=>({...e,name:e.id,label:e.label,description:e.description||"",installed:!0,source:e.source,disabled:!E.includes(e.id)})),[A,E]),Q=(0,a.useCallback)(t=>{window.open((0,y.exportRuntimeMcpUrl)(e,f,w(),t),"_blank","noopener")},[e,f,w]),ee=(0,a.useCallback)(async(e,t)=>{let a=t?[...new Set([...E,e])]:E.filter(t=>t!==e);M(a);try{await Z(a)}catch(e){M(E),r.appToast.error("切换启用状态失败: ".concat(e))}},[E,Z]),et=(0,a.useCallback)(()=>{F(!0),K(""),get(buildRemoteMcpJsonUrl(e,f,w())).then(e=>{K("string"==typeof e.content?e.content:"")}).catch(e=>{r.appToast.error("加载 mcp.json 失败:".concat(e instanceof Error?e.message:String(e))),F(!1)})},[e,f,w]),ea=(0,a.useCallback)(async()=>{J(!0);try{await post(buildRemoteMcpJsonUrl(e,f,w()),{content:V}),r.appToast.success("已保存全局 mcp.json。"),F(!1)}catch(e){r.appToast.error("保存 mcp.json 失败:".concat(e instanceof Error?e.message:String(e)))}finally{J(!1)}},[e,f,w,V]),el=[{key:"name",title:"名称",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"text-base text-[var(--ds-text)]",render:e=>e.label},{key:"description",title:"详情",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"text-base text-[var(--ds-text)]",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"w-14 w-[112px] text-right text-base 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)(u.AccentSwitch,{checked:E.includes(e.id),disabled:U,onCheckedChange:t=>{X(e.id,t)},"aria-label":"选择 ".concat(e.label)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] text-base text-[var(--ds-muted)]",cellClassName:"w-[128px]",render:e=>{var a;let l=null!=(a=e.source)?a:"",s="runtime"===l,r="runtime"===l||"remote"===l;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(m.IconTooltipButton,{icon:"Download",label:s?"导出":"仅 runtime MCP 支持导出",ariaLabel:"导出 ".concat(e.label),disabled:U||!s,onClick:()=>Q(e.id)}),(0,t.jsx)(m.IconTooltipButton,{icon:"Trash2",label:r?"删除":"基础MCP不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label),disabled:U||!r,onClick:()=>{Y(e.id)},iconClassName:"text-red-500"})]})}}];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center",children:[(0,t.jsxs)(d.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:et,className:"mr-[12px]",children:[(0,t.jsx)(g.default,{name:"Edit",size:16,className:"align-middle"}),"编辑全局MCP"]}),(0,t.jsxs)(d.Button,{id:"btnAgentImportMcp",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>L(!0),children:[(0,t.jsx)(g.default,{name:"Import",size:16,className:"align-middle"}),"导入MCP"]})]})}),(0,t.jsxs)(i.AppTabs,{tabs:j,value:D,listVariant:"line",onChange:e=>B(e),children:[(0,t.jsx)(i.AppTabsPanel,{value:"basic",children:(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:(0,t.jsx)("div",{className:"min-h-0",children:P?(0,t.jsx)("p",{className:"px-3 py-6 text-center text-base text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)(c.AppTable,{rows:$,columns:el,getRowKey:e=>e.id})})})}),(0,t.jsx)(i.AppTabsPanel,{value:"installed",children:(0,t.jsx)(p,{items:G,saveBusy:U,onToggleStatus:ee})})]}),(0,t.jsx)(b,{open:I,onOpenChange:e=>{L(e),e||q()},wsUrl:e,apiBase:f,agent:w()}),(0,t.jsx)(o.AppDialog,{open:_,onOpenChange:F,title:"编辑全局MCP",width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(d.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:H,onClick:()=>F(!1),children:"取消"}),(0,t.jsx)(d.Button,{type:"button",size:"lg",disabled:H,onClick:()=>void ea(),children:"保存"})]}),children:(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-border)] bg-[var(--ds-bg)] p-3 text-base leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:V,onChange:e=>K(e.target.value)})})]})}},18900,69051,e=>{"use strict";function t(e){let t=null==e?"":String(e);return""===t?'""':/[\s#"'\\\n]/.test(t)||t!==t.trim()?'"'.concat(t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t}function a(e){let t=String(e).split(/\r?\n/),a={},l=/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/;for(let e=0;e<t.length;e++){let s=t[e],r=l.exec(s);r&&(a[r[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}(r[2]))}return a}function l(e,a){let l=Array.isArray(e)?e:[],s=new Set;for(let e=0;e<l.length;e++){let t=l[e];t&&"object"==typeof t&&"string"==typeof t.key&&s.add(t.key)}let r=[];for(let e=0;e<l.length;e++){let s=l[e];if(!s||"object"!=typeof s||"string"!=typeof s.key)continue;let n=s.key;if(!Object.prototype.hasOwnProperty.call(a,n))continue;let i=a[n];null!=i&&""!==String(i).trim()&&r.push("".concat(n,"=").concat(t(String(i))))}let n=Object.keys(a).filter(e=>!s.has(e)).sort();for(let e=0;e<n.length;e++){let l=n[e],s=a[l];null!=s&&""!==String(s).trim()&&r.push("".concat(l,"=").concat(t(String(s))))}let i=r.join("\n");return i.length>0?"".concat(i,"\n"):""}e.s(["buildEnvFileContentFromForm",()=>l,"parseEnvContentToMap",()=>a],18900),e.s(["loadDemoSingleMessage",()=>c,"loadSystemEnv",()=>n,"saveSystemEnv",()=>i,"saveSystemMcpJson",()=>o],69051);var s=e.i(29250),r=e.i(36845);async function n(e,t,a){return(0,s.get)((0,r.buildSystemEnvApiUrl)(e,t,a))}async function i(e,t,a,l){await (0,s.patch)((0,r.buildSystemEnvApiUrl)(e,t,a),{content:l})}async function o(e,t,a,l){await (0,s.patch)((0,r.buildSystemMcpJsonApiUrl)(e,t,a),{content:l})}async function c(){return(0,s.get)("/api/demo/single-message")}},62849,e=>{"use strict";e.s(["EnvManageView",()=>j],62849);var t=e.i(18050),a=e.i(71645),l=e.i(65934),s=e.i(87243),r=e.i(19455),n=e.i(94197),i=e.i(93479),o=e.i(67489),c=e.i(67327);let d=["llm","git","geelib","tutui","system"],u={llm:"llm设置",git:"git设置",geelib:"geelib设置",tutui:"tutui设置",system:"系统设置"};function m(e){let t={...u};if(!e||"object"!=typeof e)return t;for(let a of d){let l=e[a];"string"==typeof l&&l.trim()&&(t[a]=l.trim())}return t}var p=e.i(18900),f=e.i(13354),x=e.i(82136),b=e.i(69051),h=e.i(75157);let g="__empty__",v=[{value:"anthropic",label:"anthropic"},{value:"openai",label:"openai"}];function y(){return"undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():"r-".concat(Date.now(),"-").concat(Math.random())}function j(){let e=(0,l.useAppStore)(e=>e.wsUrl),u=(0,l.useAppStore)(e=>e.apiBase),j=(0,l.useAppStore)(e=>e.agentConfig),C=(0,l.useAppStore)(e=>e.setAgentConfig),w=(0,l.useAppStore)(e=>e.bridgeReady),k=(0,l.useAppStore)(e=>e.setStatus),{currentAgent:N,loadAgentConfig:S}=(0,s.useSession)(),{sendReloadAgentConfig:T}=(0,c.useWebSocketSender)(),[A,R]=(0,a.useState)(!0),[E,M]=(0,a.useState)(!1),[P,z]=(0,a.useState)([]),[U,O]=(0,a.useState)(m(void 0)),[D,B]=(0,a.useState)({}),[I,L]=(0,a.useState)({}),[_,F]=(0,a.useState)([]),V=(0,a.useMemo)(()=>new Set(P.map(e=>e.key)),[P]),K=(0,a.useMemo)(()=>(function(e){let t={};for(let e of d)t[e]=[];for(let a of e)d.includes(a.group)&&t[a.group].push(a);return t})(P),[P]),H=(0,a.useCallback)(e=>{L(function(e,t,a){let l={};for(let s of t){let t=e[s.key];if("string"==typeof t&&t.length>0){l[s.key]=t;continue}let r=a[s.key];l[s.key]="string"==typeof r?r:""}return l}(e,P,D));let t={};for(let[a,l]of Object.entries(e))V.has(a)||(t[a]=l);F(Object.keys(t).sort().map(e=>{var a;return{id:y(),key:e,value:null!=(a=t[e])?a:""}}))},[P,D,V]),J=(0,a.useCallback)(async()=>{try{let t=await (0,b.loadSystemEnv)(e,u,N()),a="string"==typeof t.content?t.content:"",l=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():"",l="string"==typeof a.group?a.group.trim():"";e&&d.includes(l)&&t.push({key:e,group:l,label:"string"==typeof a.label&&a.label.trim()?a.label.trim():e,placeholder:"string"==typeof a.placeholder?a.placeholder:""})}return t}(t.schema),s=(0,p.parseEnvContentToMap)(a);z(l),O(m(t.groupLabels)),B(function(e,t){let a={};for(let s of e){var l;a[s.key]=null!=(l=t[s.key])?l:""}return a}(l,s))}catch(e){f.appToast.error("加载环境变量表单配置失败:".concat(e instanceof Error?e.message:String(e))),z([]),B({})}},[e,u,N]);(0,a.useEffect)(()=>{R(!0),Promise.all([S(),J()]).finally(()=>{R(!1)})},[S,J]),(0,a.useEffect)(()=>{H({...j.env})},[j.env,H]);let W=(0,a.useCallback)((e,t)=>{L(a=>({...a,[e]:t}))},[]),q=(0,a.useCallback)((e,t)=>{F(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),Y=(0,a.useCallback)(e=>{F(t=>t.filter(t=>t.id!==e))},[]),Z=(0,a.useCallback)(()=>{F(e=>[...e,{id:y(),key:"",value:""}])},[]),X=(0,a.useCallback)(()=>{H({...j.env})},[j.env,H]),$=(0,a.useCallback)(async()=>{let t=function(e,t){let a={};for(let l of t){let t=Object.prototype.hasOwnProperty.call(e,l.key)?e[l.key]:"",s=String(null!=t?t:"").trim();s&&(a[l.key]=s)}return a}(I,P),a=function(e,t){let a={},l=new Set;for(let r of e){var s;let e=String(r.key||"").trim(),n=String(null!=(s=r.value)?s:"");if(n.trim()||e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))return{ok:!1,message:"环境变量名不合法:".concat(e,"(仅允许字母/数字/下划线,且不能数字开头)")};if(t.has(e))return{ok:!1,message:"自定义变量不能与固定表单重复:".concat(e)};if(l.has(e))return{ok:!1,message:"存在重复环境变量名:".concat(e)};l.add(e),a[e]=n}}return{ok:!0,env:a}}(_,V);if(!a.ok)return void f.appToast.info(a.message);let s={...t,...a.env};M(!0);try{var r,n,i,o;let t=l.useAppStore.getState();await (0,x.saveAgentConfig)(e,u,N(),{tools:t.agentConfig.tools.slice(),disallowedTools:t.agentConfig.disallowedTools.slice(),mcpServers:t.agentConfig.mcpServers.slice(),skills:t.agentConfig.skills.slice(),agentTeams:t.agentConfig.agentTeams.slice(),model:t.agentConfig.model,rules:t.agentConfig.rules.slice(),effort:null!=(r=t.agentConfig.effort)?r:null,background:null!=(n=t.agentConfig.background)&&n,isolation:null!=(i=t.agentConfig.isolation)?i:"",whentouse:null!=(o=t.agentConfig.whentouse)?o:"",env:s}),C({...t.agentConfig,env:{...s}}),l.useAppStore.getState().wsConnected&&T(),k("环境变量已保存"+(l.useAppStore.getState().wsConnected?",已请求 worker 重新加载配置":""),w?"ready":""),f.appToast.success(l.useAppStore.getState().wsConnected?"已保存到 agent.json,并已请求 worker 重新加载配置。":"已保存到 agent.json。重连 WebSocket 后子进程环境将同步。")}catch(e){f.appToast.error("保存环境变量失败:".concat(e instanceof Error?e.message:String(e)))}finally{M(!1)}},[I,P,_,V,e,u,N,C,T,k,w]);return(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-[var(--ds-border)] bg-[#fff] shadow-[var(--shadow-md)]",children:[(0,t.jsx)("div",{className:"shrink-0 border-b border-[var(--ds-border)] px-4 py-4",children:(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--ds-muted)]",children:"仅影响当前 agent 的 session 子进程环境"})}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-4 py-4",children:A?(0,t.jsx)("div",{className:"py-8 text-center text-base text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsxs)(t.Fragment,{children:[P.length?(0,t.jsx)(t.Fragment,{children:d.map(e=>{let a=K[e];return a.length?(0,t.jsxs)("section",{className:"mt-6 first:mt-0",children:[(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:U[e]}),(0,t.jsx)("div",{className:"mt-1 divide-y divide-[var(--ds-border)]",children:a.map(e=>(e=>{let a="agent-env-field-".concat(e.key),l="string"==typeof I[e.key]?I[e.key]:"";if("LLM_PROVIDER"===e.key){let s="anthropic"===l||"openai"===l?l:"";return(0,t.jsxs)("div",{className:"grid items-center gap-3 py-3",style:{gridTemplateColumns:"240px 1fr"},children:[(0,t.jsx)("label",{className:"inline-flex h-10 items-center rounded-md border border-[var(--ds-border)] px-3 text-base text-[var(--ds-text)]",htmlFor:a,children:e.label}),(0,t.jsxs)(o.Select,{value:s||g,onValueChange:t=>W(e.key,t===g?"":t),children:[(0,t.jsx)(o.SelectTrigger,{id:a,className:(0,h.cn)("h-10 w-full border-[var(--ds-border)] bg-[var(--ds-bg)] text-base",!s&&"text-[var(--text-placeholder)]"),children:(0,t.jsx)(o.SelectValue,{placeholder:"请选择"})}),(0,t.jsxs)(o.SelectContent,{children:[(0,t.jsx)(o.SelectItem,{value:g,children:"请选择"}),v.map(e=>(0,t.jsx)(o.SelectItem,{value:e.value,children:e.label},e.value))]})]})]},e.key)}return(0,t.jsxs)("div",{className:"grid items-center gap-3 py-3",style:{gridTemplateColumns:"240px 1fr"},children:[(0,t.jsx)("label",{className:"inline-flex h-10 items-center rounded-md border border-[var(--ds-border)] px-3 text-base text-[var(--ds-text)]",htmlFor:a,children:e.label}),(0,t.jsx)(i.Input,{id:a,type:"text",spellCheck:!1,autoComplete:"off",placeholder:e.placeholder,className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] text-base placeholder:text-[var(--text-placeholder)]",value:l,onChange:t=>W(e.key,t.target.value)})]},e.key)})(e))})]},e):null})}):(0,t.jsx)("div",{className:"rounded-md border border-dashed border-[var(--ds-border)] py-8 text-center text-base text-[var(--ds-muted)]",children:"未加载到环境变量表单配置"}),(0,t.jsx)("h3",{className:"mb-4 mt-8 text-base font-semibold text-[var(--ds-text)]",children:"自定义设置"}),(0,t.jsx)("div",{className:"mt-5",children:(0,t.jsx)(r.Button,{type:"button",variant:"outline",size:"lg",disabled:A||E,onClick:Z,children:"新增变量"})}),(0,t.jsxs)("div",{className:"mb-2 mt-5 grid gap-2 text-sm text-[var(--ds-muted)]",style:{gridTemplateColumns:"1fr 1fr auto"},children:[(0,t.jsx)("span",{children:"KEY"}),(0,t.jsx)("span",{children:"VALUE"}),(0,t.jsx)("span",{children:"操作"})]}),(0,t.jsx)("div",{className:"flex flex-col gap-2",children:_.length?_.map(e=>(0,t.jsxs)("div",{className:"grid gap-2",style:{gridTemplateColumns:"1fr 1fr auto"},children:[(0,t.jsx)(i.Input,{type:"text",spellCheck:!1,autoComplete:"off",placeholder:"例如 API_KEY",className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] text-base placeholder:text-[var(--text-placeholder)]",value:e.key,onChange:t=>q(e.id,{key:t.target.value})}),(0,t.jsx)(i.Input,{type:"text",spellCheck:!1,autoComplete:"off",placeholder:"value",className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] text-base placeholder:text-[var(--text-placeholder)]",value:e.value,onChange:t=>q(e.id,{value:t.target.value})}),(0,t.jsx)(n.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.key),onClick:()=>Y(e.id)})]},e.id)):(0,t.jsx)("div",{className:"rounded-md border border-dashed border-[var(--ds-border)] py-8 text-center text-base text-[var(--ds-muted)]",children:"(暂无变量,点击「新增变量」)"})})]})}),(0,t.jsxs)("div",{className:"flex shrink-0 justify-end gap-[12px] border-t border-[var(--ds-border)] px-4 py-3",children:[(0,t.jsx)(r.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:A||E,onClick:X,children:"取消"}),(0,t.jsx)(r.Button,{type:"button",size:"lg",disabled:A||E,onClick:()=>void $(),children:"保存"})]})]})}},47079,e=>{"use strict";e.s(["SkillsManageView",()=>T],47079);var t=e.i(18050),a=e.i(71645),l=e.i(65934),s=e.i(87243),r=e.i(13354),n=e.i(50711),i=e.i(51419),o=e.i(92715),c=e.i(19455),d=e.i(94055),u=e.i(94197),m=e.i(72064),p=e.i(93479),f=e.i(75157);function x(e){let{className:a,...l}=e;return(0,t.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:(0,f.cn)("flex w-full justify-end",a),...l})}let b=a.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("ul",{ref:a,"data-slot":"pagination-content",className:(0,f.cn)("flex flex-row flex-wrap items-center justify-end gap-1",l),...s})});b.displayName="PaginationContent";let h=a.forwardRef((e,a)=>{let{className:l,...s}=e;return(0,t.jsx)("li",{ref:a,"data-slot":"pagination-item",className:(0,f.cn)("",l),...s})});h.displayName="PaginationItem",a.forwardRef((e,a)=>{let{className:l,isActive:s,size:r="icon",...n}=e;return(0,t.jsx)("a",{ref:a,"aria-current":s?"page":void 0,"data-slot":"pagination-link","data-active":s?"true":void 0,className:(0,f.cn)((0,c.buttonVariants)({variant:s?"outline":"ghost",size:r}),l),...n})}).displayName="PaginationLink";var g=e.i(62427);function v(e){let{active:l,wsUrl:s,apiBase:n,agent:i,onAfterInstall:d,className:u}=e,[f,v]=(0,a.useState)(""),[y,j]=(0,a.useState)(1),[C,w]=(0,a.useState)(0),[k,N]=(0,a.useState)([]),[S,T]=(0,a.useState)(!1),[A,R]=(0,a.useState)(""),[E,M]=(0,a.useState)({}),P=(0,a.useRef)(0),z=(0,a.useCallback)(async()=>{let e=++P.current;T(!0),R("");try{let t=await (0,g.listCloudSkillCatalog)(s,n,i,f,y,10);if(e!==P.current)return;let a=Array.isArray(t.items)?t.items:[],l=[];for(let e of a)e&&"object"==typeof e&&e.id&&l.push({id:String(e.id),title:String(e.title||""),skillName:String(e.skillName||""),description:"string"==typeof e.description?e.description:"",installed:!!e.installed});N(l),w(t.totalPages)}catch(t){if(e!==P.current)return;N([]),w(0),R(t instanceof Error?t.message:String(t))}finally{e===P.current&&T(!1)}},[s,n,i,f,y]);(0,a.useEffect)(()=>{if(!l){v(""),j(1),w(0),N([]),R(""),M({}),P.current+=1;return}z()},[l,z]);let U=(0,a.useMemo)(()=>{if(S)return"加载中…";if(A)return"加载失败:".concat(A);let e=k.reduce((e,t)=>e+ +!!t.installed,0);return"已安装 ".concat(e," 项")},[S,A,k]),O=(0,a.useCallback)(async(e,t)=>{M(t=>({...t,[e]:!0}));try{await (0,g.installCloudSkill)(s,n,i,e),r.appToast.success("云端技能已安装:".concat(t)),await z(),null==d||d()}catch(e){r.appToast.error("安装失败:".concat(e instanceof Error?e.message:String(e)))}finally{M(t=>{let a={...t};return delete a[e],a})}},[s,n,i,z,d]),D=(0,a.useCallback)(e=>{j(1),v(e)},[]);if(!l)return null;let B=C>0?"第 ".concat(y,"/").concat(C," 页"):"第 0/0 页",I=S||y<=1,L=S||C<=0||y>=C,_=[{key:"name",title:"名称",headerClassName:"text-base",cellClassName:"text-base text-[var(--ds-text)]",render:e=>e.skillName?"".concat(e.skillName):e.id},{key:"description",title:"详情",headerClassName:"text-base",cellClassName:"text-base text-[var(--ds-text)]",render:e=>(0,t.jsxs)(t.Fragment,{children:[e.title,e.description?" — ".concat(e.description):""]})},{key:"status",title:"状态",headerClassName:"text-base",cellClassName:"whitespace-nowrap text-base text-[var(--ds-text)]",render:e=>e.installed?"已安装":"未安装"},{key:"actions",title:"操作",headerClassName:"w-[96px] text-right text-base",cellClassName:"w-[116px] text-right",render:e=>{let a=!!E[e.id],l=!!e.installed;return!a&&l?"-":(0,t.jsx)(c.Button,{type:"button",size:"sm",variant:"outline",disabled:a||l,onClick:()=>void O(e.id,e.title||e.skillName||e.id),children:a?"安装中…":l?"已安装":"安装"})}}];return(0,t.jsx)("div",{className:u,children:(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsx)(p.Input,{type:"search",value:f,onChange:e=>D(e.target.value),placeholder:"搜索云端技能…",className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] text-base"}),(0,t.jsx)("div",{className:"text-sm text-[var(--ds-muted)]",children:U}),(0,t.jsx)(o.AppTable,{rows:k,columns:_,getRowKey:e=>e.id,className:"min-h-0 flex-1 rounded-md",bodyProps:{viewportPaginationReserve:64},emptyNode:S?(0,t.jsx)("p",{className:"text-center text-base",children:"加载中…"}):void 0}),(0,t.jsx)(x,{className:"mx-0 w-full",children:(0,t.jsxs)(b,{className:"w-full flex-wrap justify-end gap-2",children:[(0,t.jsx)(h,{children:(0,t.jsxs)(c.Button,{type:"button",variant:"outline",size:"sm",disabled:I,className:"gap-1",onClick:()=>j(e=>Math.max(1,e-1)),"aria-label":"上一页",children:[(0,t.jsx)(m.default,{name:"ChevronLeft",size:16,className:"shrink-0"}),"上一页"]})}),(0,t.jsx)(h,{children:(0,t.jsx)("span",{className:"flex h-9 min-w-[6.5rem] items-center justify-center text-sm text-[var(--ds-muted)]",children:B})}),(0,t.jsx)(h,{children:(0,t.jsxs)(c.Button,{type:"button",variant:"outline",size:"sm",disabled:L,className:"gap-1",onClick:()=>j(e=>e+1),"aria-label":"下一页",children:["下一页",(0,t.jsx)(m.default,{name:"ChevronRight",size:16,className:"shrink-0",strokeWidth:1})]})})]})})]})})}var y=e.i(36845),j=e.i(53925);function C(e){let{open:a,onOpenChange:l,wsUrl:s,apiBase:r,agent:n}=e;return(0,t.jsx)(j.ResourceImportDialog,{open:a,onOpenChange:l,title:"导入 Skill zip",description:"选择一个 zip 文件并导入到 skills-runtime。",uploadUrl:(0,y.buildSkillsRuntimeImportUrl)(s,r,n),resetKey:n})}function w(e){let{items:a,saveBusy:l,onToggleEnabled:s,onExport:r,onRemove:n,className:i}=e,c=[{key:"name",title:"名称",headerClassName:"text-base",cellClassName:"text-base",render:e=>e.name},{key:"description",title:"详情",headerClassName:"text-base",cellClassName:"text-base",render:e=>e.description||"-"},{key:"status",title:"状态",headerClassName:"w-[160px] text-base",cellClassName:"w-[160px] text-base text-[var(--ds-text)]",render:()=>"已安装"},{key:"enabled",title:"启用/未启用",headerClassName:"w-[160px] text-right text-base",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)(d.AccentSwitch,{checked:e.enabled,disabled:l,onCheckedChange:t=>s(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] text-base",cellClassName:"w-[128px]",render:e=>(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(u.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:l,onClick:()=>r(e.name)}),(0,t.jsx)(u.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:l,onClick:()=>{n(e.name)}})]})}];return(0,t.jsx)(o.AppTable,{rows:a,columns:c,getRowKey:e=>"skills:".concat(e.name),className:i})}var k=e.i(68499),N=e.i(56708);let S=[{value:"basic",label:"基础Skill"},{value:"installed",label:"已安装Skill"},{value:"cloud_catalog",label:"Skill商店"}];function T(){let e=(0,l.useAppStore)(e=>e.wsUrl),p=(0,l.useAppStore)(e=>e.apiBase),f=(0,l.useAppStore)(e=>e.agentConfig),x=(0,l.useAppStore)(e=>e.setAgentConfig),{currentAgent:b,loadAgentConfig:h}=(0,s.useSession)(),y=(0,n.usePersistAgentConfigField)("skills"),j=f.skills,T=(0,a.useMemo)(()=>[...j].sort().join("\0"),[j]),[A,R]=(0,a.useState)([]),[E,M]=(0,a.useState)([]),[P,z]=(0,a.useState)(!1),[U,O]=(0,a.useState)(!1),[D,B]=(0,a.useState)("basic"),[I,L]=(0,a.useState)(!1);(0,a.useEffect)(()=>{h()},[h]);let _=(0,a.useCallback)(async(e,t)=>{O(!0);try{await y(e,{silent:t})}finally{O(!1)}},[y]),F=(0,a.useCallback)(async()=>{R([]),z(!0);try{var t;let a=null!=(t=(await (0,g.listSkills)(e,p,b())).skills)?t:[];R(a.map(e=>{var t,a;return{...e,id:e.name,label:"".concat(e.name),description:null!=(a=null!=(t=e.description)?t:e.whenToUse)?a:"",isRuntime:!!e.isRuntime}}))}catch(e){R([]),r.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{z(!1)}},[e,p,b]),V=(0,a.useCallback)(async t=>{let a=A.find(e=>e.id===t);if(!(null==a?void 0:a.isRuntime))return void r.appToast.info("仅 skills-runtime 中的技能可删除");if(await (0,k.confirmAlertDialog)({title:"确认删除 Skill 包?",description:"Skill:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,g.deleteRuntimeSkill)(e,p,b(),t);let a=j.filter(e=>e!==t);M(e=>e.filter(e=>e!==t)),x({...f,skills:a}),await _(a,!0),await F()}catch(e){r.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[A,e,p,b,j,f,x,_,F]);(0,a.useEffect)(()=>{("basic"===D||"installed"===D)&&F()},[D,F]);let K=(0,a.useCallback)(()=>{F()},[F]);(0,a.useEffect)(()=>{"basic"===D&&M([...j])},[D,j,T]);let H=(0,a.useCallback)(e=>{let t=[...new Set(e)].sort();x({...f,skills:t}),_(t,!0)},[f,x,_]),J=(0,a.useMemo)(()=>A.filter(e=>!e.isRuntime),[A]),W=(0,a.useMemo)(()=>A.filter(e=>!0===e.isRuntime).slice().sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({name:e.id,installed:!0,description:e.description||"",enabled:j.includes(e.id)})),[A,j]),q=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...j,e])].sort():j.filter(t=>t!==e);x({...f,skills:a}),M(a),_(a,!0)},[j,f,x,_]),Y=(0,a.useCallback)(t=>{window.open((0,g.exportRuntimeSkillUrl)(e,p,b(),t),"_blank","noopener")},[e,p,b]),Z=[{key:"name",title:"名称",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"text-base text-[var(--ds-text)]",render:e=>e.label},{key:"description",title:"详情",headerClassName:"text-base text-[var(--ds-muted)]",cellClassName:"text-base text-[var(--ds-text)]",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"w-[72px] text-right text-base text-[var(--ds-muted)]",cellClassName:"w-[72px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex justify-end",children:(0,t.jsx)(d.AccentSwitch,{checked:E.includes(e.id),disabled:U,onCheckedChange:t=>{let a=t?[...new Set([...E,e.id])]:E.filter(t=>t!==e.id);M(a),H(a)},"aria-label":"选择 ".concat(e.label)})})},{key:"actions",title:"操作",headerClassName:"w-[72px] text-right text-base text-[var(--ds-muted)]",cellClassName:"w-[72px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex justify-end",children:(0,t.jsx)(u.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",disabled:U,ariaLabel:"删除 ".concat(e.label),onClick:()=>{V(e.id)}})})}];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(N.ManageChromeHeaderActions,{children:(0,t.jsxs)(c.Button,{id:"btnAgentImportSkill",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"}),"导入Skill"]})}),(0,t.jsxs)(i.AppTabs,{tabs:S,value:D,listVariant:"line",onChange:e=>B(e),children:[(0,t.jsx)(i.AppTabsPanel,{value:"basic",children:(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:(0,t.jsx)("div",{className:"min-h-0",children:P?(0,t.jsx)("p",{className:"px-3 py-6 text-center text-base text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)(o.AppTable,{rows:J,columns:Z,getRowKey:e=>e.id})})})}),(0,t.jsx)(i.AppTabsPanel,{value:"installed",children:(0,t.jsx)(w,{items:W,saveBusy:U,onToggleEnabled:q,onExport:Y,onRemove:V})}),(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:p,agent:b(),onAfterInstall:K,className:"min-h-0 flex-1"})})]}),(0,t.jsx)(C,{open:I,onOpenChange:e=>{L(e),e||F()},wsUrl:e,apiBase:p,agent:b()})]})}},69230,e=>{"use strict";e.s(["SettingsRouteBoundary",()=>i]);var t=e.i(18050),a=e.i(22016),l=e.i(18566),s=e.i(82787),r=e.i(97249),n=e.i(65934);function i(e){let{children:i}=e,o=(0,l.usePathname)(),c=(0,n.useAppStore)(e=>e.agentId),d=(0,r.buildAppNavHref)(s.MANAGE_DEFAULT_HREF,{ensureAgent:!0,agent:c});return o&&!(0,s.isManageRouteEnabled)((0,r.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-sm 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,31862,e=>{"use strict";let t;e.s(["TeamsView",()=>et],31862);var a=e.i(18050),s=e.i(71645),r=e.i(56708),l=e.i(19455),n=e.i(72064),i=e.i(53145),d=e.i(74080),o=e.i(94197),c=e.i(13354),m=e.i(24687),x=e.i(75157);let u={expand:!0,copy:!0};function p(e){let{value:t,onChange:r,minLines:l,placeholder:n,readOnly:i,className:d}=e,o=(0,s.useRef)(null),c=(0,s.useRef)(null),u=Math.max(t.split("\n").length,l),p=(0,s.useCallback)(()=>{o.current&&c.current&&(c.current.scrollTop=o.current.scrollTop)},[]);return(0,a.jsxs)("div",{className:(0,x.cn)("flex min-h-0 flex-1",d),children:[(0,a.jsx)("div",{ref:c,"aria-hidden":!0,className:"w-10 shrink-0 overflow-hidden border-r border-[var(--ds-border)] bg-[#fafafa] py-3 text-right font-mono text-xs leading-[1.5] text-[var(--ds-muted)]",children:Array.from({length:u},(e,t)=>(0,a.jsx)("div",{className:"px-2",children:t+1},t))}),(0,a.jsx)(m.Textarea,{ref:o,spellCheck:!1,readOnly:i,value:t,onChange:e=>r(e.target.value),onScroll:p,placeholder:n,className:"agent-md-editor min-h-0 flex-1 resize-none rounded-none border-0 bg-white px-4 py-3 shadow-none focus-visible:ring-0"})]})}function h(e){let{actions:t,copyDisabled:s,onCopy:r,className:l}=e;return t.copy?(0,a.jsx)("div",{className:(0,x.cn)("flex items-center gap-0.5",l),children:(0,a.jsx)(o.IconTooltipButton,{icon:"Copy",label:"复制内容",disabled:s,onClick:r})}):null}function b(e){let{show:t,expanded:s,onToggleExpand:r,className:l}=e;return t?(0,a.jsx)("div",{className:(0,x.cn)("flex items-center",l),children:(0,a.jsx)(o.IconTooltipButton,{icon:s?"Minimize2":"Maximize2",label:s?"收起编辑器":"展开编辑器",onClick:r})}):null}function f(e){let{value:t,onChange:r,minLines:l=20,className:n,placeholder:i="编辑 Markdown 内容",readOnly:o=!1,actions:m,expandTitle:f="编辑 Markdown",copySuccessMessage:v="已复制到剪贴板",copyEmptyMessage:g="暂无内容可复制"}=e,[j,N]=(0,s.useState)(!1),w=!1===m?{expand:!1,copy:!1}:{...u,...m},y=(0,s.useCallback)(()=>{if(!t.trim())return void c.appToast.error(g);("undefined"!=typeof navigator&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText?navigator.clipboard.writeText(t):"undefined"==typeof document?Promise.reject(Error("Clipboard unavailable")):new Promise((e,a)=>{let s=document.createElement("textarea");s.value=t,s.setAttribute("readonly",""),s.style.position="fixed",s.style.top="-9999px",s.style.opacity="0",document.body.appendChild(s),s.focus(),s.select();let r=document.execCommand("copy");if(document.body.removeChild(s),r)return void e();a(Error("Clipboard copy failed"))})).then(()=>{c.appToast.success(v)},()=>{c.appToast.error("复制失败,请手动选择复制")})},[t,v,g]),C=(0,s.useCallback)(()=>{N(e=>!e)},[]);(0,s.useEffect)(()=>{if(!j)return;let e=e=>{"Escape"===e.key&&N(!1)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[j]);let k=(0,x.cn)("relative flex min-h-[320px] flex-1 flex-col overflow-hidden rounded-lg border border-[var(--ds-border)] bg-white",n),T=!t.trim()||o,A=(0,a.jsxs)("div",{className:k,children:[(0,a.jsx)(h,{actions:w,copyDisabled:T,onCopy:y,className:"absolute right-2 top-2 z-[1]"}),(0,a.jsx)(p,{value:t,onChange:r,minLines:l,placeholder:i,readOnly:o}),(0,a.jsx)(b,{show:w.expand,expanded:!1,onToggleExpand:C,className:"absolute bottom-2 right-2 z-[1]"})]}),S=j&&"undefined"!=typeof document?(0,d.createPortal)((0,a.jsxs)("div",{className:"fixed inset-0 z-[100] flex flex-col bg-[var(--surface-2)]",role:"dialog","aria-modal":"true","aria-label":f,children:[(0,a.jsx)("header",{className:"flex shrink-0 items-center border-b border-[var(--ds-border)] px-5 py-4",children:(0,a.jsx)("h2",{className:"truncate text-lg font-semibold text-[var(--ds-text)]",children:f})}),(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col p-5",children:(0,a.jsxs)("div",{className:"relative flex min-h-0 flex-1 flex-col overflow-hidden rounded-lg border border-[var(--ds-border)] bg-white",children:[(0,a.jsx)(h,{actions:w,copyDisabled:T,onCopy:y,className:"absolute right-2 top-2 z-[1]"}),(0,a.jsx)(p,{value:t,onChange:r,minLines:l,placeholder:i,readOnly:o,className:"min-h-0 flex-1"}),(0,a.jsx)(b,{show:w.expand,expanded:!0,onToggleExpand:C,className:"absolute bottom-2 right-2 z-[1]"})]})})]}),document.body):null;return(0,a.jsxs)(a.Fragment,{children:[A,S]})}var v=e.i(51419),g=e.i(87676),j=e.i(93479),N=e.i(77572),w=e.i(65934),y=e.i(61196),C=e.i(52727);let k=/^[a-zA-Z0-9_-]{1,64}$/,T=[{id:"all",label:"全部"},{id:"available",label:"可用 Agent"},{id:"joined_other",label:"已加入其他团队"},{id:"recommended",label:"推荐"}];function A(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:80,a=String(e||"").replace(/\s+/g," ").trim();return a?a.length<=t?a:"".concat(a.slice(0,t-1),"…"):"暂无使用说明"}var S=e.i(8279);let z={sm:"h-7 w-7 text-xs",md:"h-9 w-9 text-sm"};function F(e){let{label:t,size:s="md",className:r}=e,l=(0,S.initialsFromLabel)(t);return(0,a.jsx)("span",{className:(0,x.cn)("inline-flex shrink-0 items-center justify-center rounded-full font-semibold text-white",z[s],r),style:{background:(0,S.avatarBgForLabel)(t)},"aria-hidden":!0,children:l})}let E=[{value:"basic",label:"基本信息"}],M=[{value:"agents",label:"AGENTS"}];function D(e){let{mode:t,editAgentId:r,onClose:d,onSaved:o}=e,u=(0,w.useAppStore)(e=>e.wsUrl),p=(0,w.useAppStore)(e=>e.apiBase),h=(0,y.useStageThreadFlyoutStore)(e=>e.setFlyoutDirty),b=(0,y.useStageThreadFlyoutStore)(e=>e.requestCloseFlyout),T="edit"===t,[A,S]=(0,s.useState)(!1),[z,D]=(0,s.useState)(T),[B,I]=(0,s.useState)(null),[R,_]=(0,s.useState)("basic"),L=(0,s.useRef)(null),O=(0,i.useForm)({defaultValues:{id:"",whentouse:"",prompt:""},mode:"onChange"}),{isDirty:U}=(0,i.useFormState)({control:O.control}),H=O.watch("id"),P=T?"编辑 Agent · ".concat(null!=r?r:H):"新建Agent",G=A?T?"保存中…":"创建中…":"保存",V=(0,s.useCallback)(async()=>{let e=null==r?void 0:r.trim();if(e){D(!0),I(null);try{let t=await (0,C.getAgentDetail)(u,p,e);L.current=t.config,O.reset({id:t.id,whentouse:t.whentouse,prompt:t.prompt})}catch(t){let e=t instanceof Error?t.message:String(t);I(e),c.appToast.error("加载失败:".concat(e))}finally{D(!1)}}},[r,u,p,O]);(0,s.useEffect)(()=>{T&&V()},[T,V]),(0,s.useEffect)(()=>(h(U),()=>h(!1)),[U,h]);let q=(0,s.useCallback)(()=>{b()},[b]),K=(0,s.useCallback)(async e=>{let t=(T&&null!=r?r:e.id).trim();if(t){if(!T&&!k.test(String(t||"").trim()))return void c.appToast.error("Agent ID 仅支持字母、数字、下划线和中划线,长度 1~64");S(!0);try{T?(await (0,C.updateAgent)(u,p,{id:t,prompt:e.prompt,whentouse:e.whentouse,baseConfig:L.current}),c.appToast.success("已保存")):(await (0,C.createAgent)(u,p,{id:t,whentouse:e.whentouse,prompt:e.prompt}),c.appToast.success("已创建")),await (null==o?void 0:o()),d()}catch(t){let e=T?"保存":"创建";c.appToast.error("".concat(e,"失败:").concat(t instanceof Error?t.message:String(t)))}finally{S(!1)}}},[T,r,u,p,d,o]);return(0,a.jsx)(g.Form,{...O,children:(0,a.jsxs)("form",{className:"flex h-full min-h-0 flex-col bg-[var(--surface-2)]",onSubmit:O.handleSubmit(K),children:[(0,a.jsxs)("header",{className:"shrink-0 border-b border-[var(--ds-border)] bg-[var(--surface-2)] px-5 pb-4 pt-5",children:[(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2",children:[(0,a.jsx)(l.Button,{type:"button",variant:"plain",size:"icon",onClick:q,disabled:A,className:"shrink-0 cursor-pointer px-2 text-[var(--ds-text)] hover:bg-transparent hover:text-[color:var(--ds-accent)] [&_svg_path]:!fill-current","aria-label":"返回",children:(0,a.jsx)(n.default,{name:"Back",size:16})}),(0,a.jsx)("h2",{className:"truncate text-lg font-semibold text-[var(--ds-text)]",children:P})]}),(0,a.jsx)(l.Button,{type:"submit",variant:"default",size:"lg",disabled:A||z||!!B,className:"shrink-0 cursor-pointer rounded-lg bg-[#111] px-5 hover:bg-[#333]",children:G})]}),(0,a.jsx)("div",{className:"mt-4 flex items-center gap-3",children:(0,a.jsx)(N.Tabs,{value:R,onValueChange:_,className:"min-w-0 flex-1",children:(0,a.jsx)(N.TabsList,{variant:"pill",className:"mx-auto w-fit",children:E.map(e=>(0,a.jsx)(N.TabsTrigger,{value:e.value,disabled:e.disabled,children:e.label},e.value))})})})]}),(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-y-auto px-5 py-4",children:z?(0,a.jsx)("div",{className:"flex min-h-[240px] flex-1 items-center justify-center text-sm text-[var(--ds-muted)]",role:"status","aria-live":"polite",children:"加载中…"}):B?(0,a.jsxs)("div",{className:"flex min-h-[240px] flex-1 flex-col items-center justify-center gap-3 text-sm text-destructive",role:"alert",children:[(0,a.jsxs)("span",{children:["加载失败:",B]}),(0,a.jsx)(l.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void V(),children:"重试"})]}):"basic"===R?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("section",{className:"rounded-xl border border-[var(--ds-border)] bg-white p-4",children:(0,a.jsxs)("div",{className:"flex gap-4",children:[(0,a.jsx)("div",{className:"flex shrink-0 flex-col items-center gap-2",children:(0,a.jsx)("div",{className:"relative",children:(0,a.jsx)(F,{label:H.trim()||"Agent",className:"h-16 w-16 text-lg"})})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1 space-y-3",children:[(0,a.jsx)(g.FormField,{control:O.control,name:"id",render:e=>{let{field:t}=e;return(0,a.jsxs)(g.FormItem,{children:[(0,a.jsx)(g.FormControl,{children:(0,a.jsx)(j.Input,{...t,readOnly:T,spellCheck:!1,placeholder:"例如 my-agent",autoComplete:"off",className:(0,x.cn)("h-10 rounded-md border-[var(--ds-border)] bg-[var(--ds-bg)] text-base",T&&"cursor-default text-[var(--ds-muted)]")})}),(0,a.jsx)(g.FormMessage,{})]})}}),(0,a.jsx)(g.FormField,{control:O.control,name:"whentouse",render:e=>{let{field:t}=e;return(0,a.jsxs)(g.FormItem,{children:[(0,a.jsx)(g.FormControl,{children:(0,a.jsx)(m.Textarea,{...t,spellCheck:!1,placeholder:"用一句话说明它的身份 + 它主要帮你做什么",className:"min-h-[88px] resize-none rounded-md border-[var(--ds-border)] bg-[var(--ds-bg)] text-base leading-relaxed"})}),(0,a.jsx)(g.FormMessage,{})]})}})]})]})}),(0,a.jsx)(v.AppTabs,{tabs:M,defaultValue:"agents",listVariant:"line",listClassName:"mt-4 h-auto gap-0 border-0 bg-transparent p-0",triggerClassName:"px-0 pb-2 text-base font-semibold uppercase tracking-wide text-[var(--ds-muted)] data-[active]:text-[var(--ds-text)] data-[active]:after:h-[3px] data-[active]:after:bg-[#111]",className:"min-h-0 flex-1",children:(0,a.jsxs)(v.AppTabsPanel,{value:"agents",className:"mt-0 flex min-h-0 flex-1 flex-col",children:[(0,a.jsx)("div",{className:"mb-3 mt-3",children:(0,a.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:"编辑 (agent.md)"})}),(0,a.jsx)(g.FormField,{control:O.control,name:"prompt",render:e=>{let{field:t}=e;return(0,a.jsxs)(g.FormItem,{className:"flex min-h-0 flex-1 flex-col",children:[(0,a.jsx)(g.FormControl,{children:(0,a.jsx)(f,{value:t.value,onChange:t.onChange,className:"min-h-[320px]",placeholder:"编辑 Agent 提示词(agent.md)",expandTitle:"编辑 (agent.md)"})}),(0,a.jsx)(g.FormMessage,{})]})}})]})})]}):(0,a.jsx)("div",{className:"flex flex-1 items-center justify-center text-sm text-[var(--ds-muted)]",children:"敬请期待"})})]})})}var B=e.i(68499),I=e.i(55146),R=e.i(97249);function _(e){let{label:t,hint:s,icon:r,onClick:l}=e,i=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.default,{name:r,size:14,className:"shrink-0 text-[var(--ds-muted)]"}),(0,a.jsx)("span",{children:s})]}),d=(0,x.cn)("inline-flex min-h-9 w-fit max-w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-[var(--ds-border)] !bg-transparent px-3 text-base text-[var(--ds-muted)]",l&&"cursor-pointer hover:border-[color:var(--ds-border-hover)] hover:bg-[var(--ds-main-tint)]");return l?(0,a.jsx)("button",{type:"button",className:d,onClick:l,"aria-label":t,children:i}):(0,a.jsx)("div",{className:d,"aria-label":t,children:i})}let L=(0,e.i(75254).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);var O=e.i(57428),U=e.i(76639);let H={captain:null,members:[]};function P(e){return{id:e.id,displayName:e.displayName.trim()||e.id}}function G(e,t,a,s){for(let l of a){var r;if(l.id===t)continue;let a=s(l.id);if((null==(r=a.captain)?void 0:r.id)===e||a.members.some(t=>t.id===e))return l.id}return null}function V(e){let{member:t,subtitle:s,onRemove:r,badge:l}=e;return(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-[var(--ds-border)] bg-[var(--ds-bg)] px-2.5 py-2",children:[(0,a.jsx)(F,{label:t.displayName,size:"sm"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"mb-0 truncate text-sm font-medium text-[var(--ds-text)]",children:t.displayName}),(0,a.jsx)("p",{className:"mb-0 truncate text-xs text-[var(--ds-muted)]",children:s})]}),l?(0,a.jsx)("span",{className:"shrink-0 rounded bg-[var(--green-light)] px-1.5 py-0.5 text-[10px] font-medium text-[var(--green-dark)]",children:l}):null,r?(0,a.jsx)(o.IconTooltipButton,{icon:"Close",label:"移除agent",className:"!h-7 !w-7 shrink-0 bg-transparent text-[var(--ds-muted)] hover:bg-transparent hover:text-[color:var(--ds-accent)]",iconClassName:"!size-3.5",onClick:r}):null]})}function q(e){let{open:t,onOpenChange:r,team:i,allAgents:d,rosters:o,onConfirm:m,onAgentsRefresh:u}=e,p=(0,w.useAppStore)(e=>e.wsUrl),h=(0,w.useAppStore)(e=>e.apiBase),b=i.id,f=o.getRoster,[v,g]=(0,s.useState)(""),[N,y]=(0,s.useState)("all"),[k,S]=(0,s.useState)([]),[z,E]=(0,s.useState)(!1),M=(0,s.useMemo)(()=>P(i),[i]);(0,s.useEffect)(()=>{if(!t)return;let e=f(b);g(""),y("all"),S(e.members.filter(e=>e.id!==b).map(e=>e.id))},[t,b,f]);let D=(0,s.useMemo)(()=>k.map(e=>d.find(t=>t.id===e)).filter(e=>null!=e).map(P),[k,d]);(0,s.useMemo)(()=>k.some(e=>null!=G(e,b,d,f)),[k,b,d,f]);let B=(0,s.useMemo)(()=>d.filter(e=>{if(!function(e,t){let a=t.trim().toLowerCase();return!a||"".concat(e.id," ").concat(e.displayName," ").concat(e.whentouse).toLowerCase().includes(a)}(e,v))return!1;let t=e.id===b,a=G(e.id,b,d,f);return"available"===N?!t:"joined_other"===N?!!a:"recommended"!==N||!a&&!t}),[d,v,N,b,f]),I=(0,s.useCallback)((e,t)=>{e!==b&&S(a=>t?a.includes(e)?a:[...a,e]:a.filter(t=>t!==e))},[b]),R=(0,s.useCallback)(()=>{S([])},[]),_=(0,s.useCallback)(()=>{r(!1)},[r]),H=(0,s.useCallback)(()=>{(async()=>{let e=b.trim();if(!e||z)return;let t=f(b).members.map(e=>e.id),a=k.filter(e=>!t.includes(e)),s=t.filter(e=>!k.includes(e));if(0===a.length&&0===s.length)return _();E(!0);try{for(let t of s)await (0,C.removeTeamMember)(p,h,e,t);for(let t of a)await (0,C.addTeamMember)(p,h,e,t);await (null==u?void 0:u()),m({captain:M,members:D}),a.length>0&&0===s.length?c.appToast.success(1===a.length?"已添加队员 ".concat(a[0]):"已添加 ".concat(a.length," 名队员")):c.appToast.success("已更新队员"),_()}catch(e){c.appToast.error("添加队员失败:".concat(e instanceof Error?e.message:String(e)))}finally{E(!1)}})()},[b,z,f,k,p,h,u,m,M,D,_]),q=A(i.whentouse,28);return(0,a.jsx)(U.Dialog,{open:t,onOpenChange:r,children:(0,a.jsxs)(U.DialogContent,{className:"max-w-[920px]","aria-labelledby":"add-team-members-title",children:[(0,a.jsxs)(U.DialogHeader,{className:"items-start gap-3",children:[(0,a.jsx)(U.DialogTitle,{id:"add-team-members-title",className:"text-lg",children:"添加队员"}),(0,a.jsx)(U.DialogClose,{"aria-label":"关闭"})]}),(0,a.jsx)(U.DialogBody,{className:"!p-0",children:(0,a.jsxs)("div",{className:"flex h-[min(68vh,520px)] min-h-0 flex-col px-[24px] md:flex-row",children:[(0,a.jsxs)("div",{className:"mr-[16px] flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden border-b border-[var(--ds-border)] md:border-b-0 md:border-r",children:[(0,a.jsxs)("div",{className:"shrink-0 space-y-3 border-b border-[var(--ds-border)] pb-4",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(L,{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,a.jsx)(j.Input,{value:v,onChange:e=>g(e.target.value),placeholder:"搜索成员名称 / 能力 / 标签",className:"h-8 pl-8"})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:T.map(e=>{let t=N===e.id;return(0,a.jsx)(l.Button,{type:"button",variant:"plain-outline",size:"sm",className:(0,x.cn)("cursor-pointer rounded-full px-3",t&&"border-[color:var(--ds-accent)] bg-[var(--green-light)] text-[var(--green-dark)] hover:bg-[var(--green-light)]"),onClick:()=>y(e.id),children:e.label},e.id)})})]}),(0,a.jsx)("ul",{className:"m-0 min-h-0 flex-1 list-none space-y-2 overflow-y-auto",role:"listbox","aria-label":"可选队员",children:B.map(e=>{let t=e.id===b,s=k.includes(e.id),r=G(e.id,b,d,f),l=function(e){let t=A(e,24);return"暂无使用说明"===t?[]:t.split(/[,,、\s]+/).filter(Boolean).slice(0,2)}(e.whentouse),i=A(e.whentouse,32);return(0,a.jsx)("li",{children:(0,a.jsxs)("label",{className:(0,x.cn)("flex cursor-pointer items-center gap-3 rounded-lg border border-solid bg-[var(--ds-bg)] px-2 py-2.5 transition-[border-color,background-color]","border-[color:var(--ds-border)]",t?"cursor-not-allowed opacity-60":"hover:border-[color:var(--ds-border-hover)] hover:bg-[var(--ds-main-tint)]",s&&!t&&"bg-[var(--green-light)]/40 border-[color:var(--ds-accent)]"),children:[(0,a.jsx)(O.Checkbox,{checked:!t&&s,disabled:t,onChange:t=>I(e.id,t.target.checked),"aria-label":"选择 ".concat(e.displayName)}),(0,a.jsx)(F,{label:e.displayName,size:"md"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("p",{className:"mb-0 truncate font-medium text-[var(--ds-text)]",children:[e.displayName,t?(0,a.jsx)("span",{className:"ml-1 text-xs font-normal text-[var(--ds-muted)]",children:"(当前团队)"}):null]}),(0,a.jsx)("p",{className:"mb-0 mt-0.5 truncate text-base text-[var(--ds-muted)]",children:i}),l.length>0?(0,a.jsx)("div",{className:"mt-1 flex flex-wrap gap-1",children:l.map(e=>(0,a.jsx)("span",{className:"rounded bg-[var(--surface-2)] px-1.5 py-0.5 text-[10px] text-[var(--ds-muted)]",children:e},e))}):null]}),(0,a.jsx)("div",{className:"shrink-0 text-right",children:t?(0,a.jsx)("span",{className:"text-xs text-[var(--ds-muted)]",children:"不可选"}):r?(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-amber-600",children:[(0,a.jsx)(n.default,{name:"Info",size:14}),"已加入其他团队"]}):(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-[var(--green-dark)]",children:[(0,a.jsx)("span",{className:"size-1.5 rounded-full bg-[var(--ds-accent)]"}),"可用 Agent"]})})]})},e.id)})}),(0,a.jsxs)("div",{className:"shrink-0 border-t border-[var(--ds-border)] px-4 py-2.5 text-sm text-[var(--ds-muted)]",children:["已选择 ",k.length," 名队员"]})]}),(0,a.jsx)("div",{className:"flex min-h-0 w-full shrink-0 flex-col overflow-hidden bg-[var(--ds-log-bg)] md:w-[300px]",children:(0,a.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden p-4",children:[(0,a.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[(0,a.jsxs)("div",{className:"mb-2 flex shrink-0 items-center justify-between gap-2",children:[(0,a.jsxs)("span",{className:"text-sm font-medium text-[var(--ds-text)]",children:["已选成员(",D.length,")"]}),(0,a.jsx)(l.Button,{type:"button",variant:"plain",size:"sm",disabled:0===D.length,className:"h-auto cursor-pointer !px-1 text-xs text-[var(--ds-accent)] hover:bg-transparent hover:text-[var(--ds-text)] disabled:cursor-not-allowed",onClick:R,children:"清空"})]}),(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:D.length>0?(0,a.jsx)("div",{className:"space-y-2",children:D.map(e=>{let t=d.find(t=>t.id===e.id),s=t?A(t.whentouse,28):e.id;return(0,a.jsx)(V,{member:e,subtitle:s,onRemove:()=>I(e.id,!1)},e.id)})}):(0,a.jsx)("p",{className:"mb-0 text-xs text-[var(--ds-muted)]",children:"请从左侧勾选队员"})})]}),(0,a.jsxs)("div",{className:"mt-4 shrink-0 border-t border-[var(--ds-border)] pt-4",children:[(0,a.jsx)("p",{className:"mb-1 text-sm font-medium text-[var(--ds-text)]",children:"队长"}),(0,a.jsx)("p",{className:"mb-2 text-xs text-[var(--ds-muted)]",children:"队长负责协作编排与成员管理。"}),(0,a.jsx)(V,{member:M,subtitle:q,badge:"队长"})]})]})})]})}),(0,a.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-5 py-3",children:[(0,a.jsx)(l.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:_,className:"cursor-pointer",children:"取消"}),(0,a.jsx)(l.Button,{type:"button",variant:"default",size:"lg",onClick:H,disabled:z,className:"cursor-pointer disabled:cursor-not-allowed",children:z?"添加中…":"确认添加"})]})]})})}function K(e){let{open:t,onOpenChange:r,title:n,description:i,candidates:d,onPick:o}=e,[c,m]=(0,s.useState)("");(0,s.useEffect)(()=>{t&&m("")},[t]);let u=(0,s.useCallback)(()=>{r(!1)},[r]),p=(0,s.useCallback)(()=>{let e=d.find(e=>e.id===c);e&&(o(e),u())},[d,c,o,u]),h=(0,s.useMemo)(()=>d.length>0?null:"暂无可选 Agent",[d.length]);return(0,a.jsx)(U.Dialog,{open:t,onOpenChange:r,children:(0,a.jsxs)(U.DialogContent,{className:"max-w-[480px]","aria-labelledby":"pick-team-member-title",children:[(0,a.jsxs)(U.DialogHeader,{className:"items-start gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)(U.DialogTitle,{id:"pick-team-member-title",children:n}),(0,a.jsx)(U.DialogDescription,{className:"mt-1",children:i})]}),(0,a.jsx)(U.DialogClose,{"aria-label":"关闭"})]}),(0,a.jsx)(U.DialogBody,{className:"max-h-[min(50vh,360px)] overflow-y-auto !px-5 !py-4",children:h?(0,a.jsx)("p",{className:"mb-0 text-center text-sm text-[var(--ds-muted)]",children:h}):(0,a.jsx)("ul",{className:"m-0 list-none space-y-1 p-0",role:"listbox",children:d.map(e=>{let t=c===e.id,s=P(e);return(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",role:"option","aria-selected":t,className:(0,x.cn)("flex w-full cursor-pointer items-center gap-3 rounded-lg border border-solid px-3 py-2.5 text-left transition-colors",t?"border-[color:var(--ds-accent)] bg-[var(--green-light)]":"border-[color:var(--ds-border)] bg-[var(--ds-bg)] hover:bg-[var(--ds-main-tint)]"),onClick:()=>m(e.id),children:[(0,a.jsx)(F,{label:s.displayName,size:"md"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"mb-0 truncate text-sm font-medium text-[var(--ds-text)]",children:s.displayName}),(0,a.jsx)("p",{className:"mb-0 mt-0.5 truncate text-xs text-[var(--ds-muted)]",children:e.id})]})]})},e.id)})})}),(0,a.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-5 py-3",children:[(0,a.jsx)(l.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:u,className:"cursor-pointer",children:"取消"}),(0,a.jsx)(l.Button,{type:"button",variant:"default",size:"lg",disabled:!c,onClick:p,className:"cursor-pointer",children:"确定"})]})]})})}function W(e){let{member:t,onRemove:s}=e;return(0,a.jsxs)("span",{className:"inline-flex w-fit items-center gap-1.5 rounded-full border border-[var(--ds-border)] bg-[var(--surface-2)] px-3 py-1",children:[(0,a.jsx)("span",{className:"whitespace-nowrap text-sm text-[var(--ds-text)]",children:t.displayName}),s?(0,a.jsx)(o.IconTooltipButton,{icon:"Close",label:"移除 ".concat(t.displayName),tone:"muted",className:"!h-4 !w-4 shrink-0",iconClassName:"!size-3.5",onClick:s}):null]})}function Y(e){let{members:t,onRemoveMember:r}=e,[l,n]=(0,s.useState)(!1),i=(0,s.useCallback)(e=>()=>{r(e)},[r]);return(0,a.jsxs)("div",{className:"relative shrink-0",onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[(0,a.jsxs)("span",{className:"inline-flex cursor-default items-center rounded-full border border-[var(--ds-border)] bg-[var(--surface-2)] px-2.5 py-1 text-sm font-medium text-[var(--ds-muted)]","aria-label":"还有 ".concat(t.length," 名队员"),children:["+",t.length]}),l?(0,a.jsx)("div",{className:"absolute left-0 top-full z-[60] pt-1.5",children:(0,a.jsxs)("div",{className:(0,x.cn)("min-w-[200px] max-w-[min(100vw-32px,320px)]","rounded-xl border border-[var(--ds-border)] bg-[var(--ds-bg)] p-2 shadow-[var(--shadow-float)]"),role:"tooltip",children:[(0,a.jsxs)("p",{className:"mb-2 px-1 text-xs text-[var(--ds-muted)]",children:["其余队员(",t.length,")"]}),(0,a.jsx)("div",{className:"flex max-h-[240px] flex-col gap-2 overflow-y-auto",children:t.map(e=>(0,a.jsx)(W,{member:e,onRemove:i(e.id)},e.id))})]})}):null]})}function $(e){let{leaderId:t,members:r,onAgentsRefresh:l}=e,n=(0,w.useAppStore)(e=>e.wsUrl),i=(0,w.useAppStore)(e=>e.apiBase),[d,o]=(0,s.useState)(null),m=(0,s.useCallback)(e=>{(async()=>{let a=e.trim(),s=t.trim();if(s&&a&&!d&&await (0,B.confirmAlertDialog)({title:"确定移除队员?",description:"确定移除队员「".concat(a,"」?"),confirmText:"移除",cancelText:"取消"})){o(a);try{await (0,C.removeTeamMember)(n,i,s,a),await (null==l?void 0:l()),c.appToast.success("已移除队员")}catch(e){c.appToast.error("移除队员失败:".concat(e instanceof Error?e.message:String(e)))}finally{o(null)}}})()},[t,d,n,i,l]),x=r.slice(0,8),u=r.slice(8);return(0,a.jsxs)("div",{className:"flex min-w-0 max-w-full flex-wrap items-center gap-2",children:[x.map(e=>(0,a.jsx)(W,{member:e,onRemove:d===e.id?void 0:()=>m(e.id)},e.id)),u.length>0?(0,a.jsx)(Y,{members:u,onRemoveMember:m}):null]})}function Z(e){let{onEdit:t,onDelete:r,deleting:l=!1}=e,[i,d]=(0,s.useState)(!1);return(0,a.jsxs)(I.DropdownMenu,{open:i,onOpenChange:d,children:[(0,a.jsx)(I.DropdownMenuTrigger,{type:"button",className:"inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 text-[var(--ds-muted)] hover:bg-transparent hover:text-[color:var(--ds-accent)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ds-accent)]","aria-label":"更多",onClick:e=>{e.stopPropagation()},children:(0,a.jsx)(n.default,{name:"More",size:20})}),(0,a.jsxs)(I.DropdownMenuContent,{align:"end",side:"bottom",sideOffset:6,className:"w-[172px] min-w-[172px] rounded-[var(--ds-radius-sm)] border border-[var(--ds-border)] bg-[var(--ds-bg)] p-1.5",children:[(0,a.jsxs)(I.DropdownMenuItem,{className:"h-9 rounded-xl px-2.5 text-base text-[var(--ds-text)] hover:bg-[var(--ds-item-active)] focus:bg-[var(--ds-item-hover)]",onClick:()=>{d(!1),t()},children:[(0,a.jsx)(n.default,{name:"Edit",size:16,className:"text-[var(--ds-muted)]"}),"编辑 Agent"]}),(0,a.jsx)(I.DropdownMenuSeparator,{className:"mx-1 my-1 bg-[var(--ds-border)]"}),(0,a.jsxs)(I.DropdownMenuItem,{variant:"destructive",disabled:l,className:"h-9 rounded-xl px-2.5 text-base hover:bg-[#fff1f1] focus:bg-[#fff1f1]",onClick:()=>{d(!1),r()},children:[(0,a.jsx)(n.default,{name:"Trash2",size:16}),"删除 Agent"]})]})]})}function J(e){let{team:r,allAgents:l,rosters:n,onAgentSaved:i}=e,d=(0,w.useAppStore)(e=>e.agentId),m=(0,w.useAppStore)(e=>e.wsUrl),u=(0,w.useAppStore)(e=>e.apiBase),p=d.trim()||"qihoo",h=r.id===p,b=n.getRoster(r.id),f=b.members.length>0?P(r):null,v=A(r.whentouse),g=(0,S.initialsFromLabel)(r.id).slice(0,1),[j,N]=(0,s.useState)(!1),[k,T]=(0,s.useState)(!1),[z,F]=(0,s.useState)(!1),E=n.getAvailableCandidates(r.id,l),M=(0,s.useCallback)(e=>{n.setCaptain(r.id,P(e))},[n,r.id]),I=(0,s.useCallback)(e=>{n.applyRoster(r.id,e)},[n,r.id]),L=(0,s.useCallback)(()=>{let e=r.id.trim();if(!e||e===p)return;let t=(0,R.buildAppNavHref)("/",{ensureAgent:!0,agent:e}),a=R.BASE_PATH.replace(/\/+$/,""),s="".concat(window.location.origin).concat(a).concat(t);window.open(s,"_blank","noopener")},[r.id,p]),O=(0,s.useCallback)(()=>{!function(e){var s;let r=e.agentId.trim();if(!r)return;let{openFlyout:l,closeFlyout:n}=y.useStageThreadFlyoutStore.getState(),i=null!=(s=e.onSaved)?s:t;l({width:y.CREATE_AGENT_FLYOUT_WIDTH,hideHeader:!0,bodyClassName:"!p-0 overflow-hidden",navigationGuard:!0,content:(0,a.jsx)(D,{mode:"edit",editAgentId:r,onClose:n,onSaved:i})})}({agentId:r.id,onSaved:i})},[r.id,i]),U=(0,s.useCallback)(async()=>{let e=r.id.trim();if(e&&await (0,B.confirmAlertDialog)({title:"确定删除 Agent?",description:"Agent「".concat(e,"」将被永久删除,此操作不可恢复。"),confirmText:"删除",cancelText:"取消"})){F(!0);try{await (0,C.deleteAgentItem)(m,u,e),c.appToast.success("已删除"),await (null==i?void 0:i())}catch(e){c.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}finally{F(!1)}}},[r.id,m,u,i]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:(0,x.cn)("flex w-full flex-wrap items-center gap-4 rounded-xl border border-solid bg-[var(--ds-bg)] px-4 py-3.5 lg:flex-nowrap","border-[color:var(--ds-border)] transition-[border-color,box-shadow]","hover:shadow-[0_2px_12px_rgba(0,0,0,0.06)]"),children:[(0,a.jsxs)("div",{className:"flex min-w-[200px] flex-1 items-center gap-3",children:[(0,a.jsx)("span",{className:"inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-lg text-lg font-semibold text-white",style:{background:(0,S.avatarBgForLabel)(r.id)},"aria-hidden":!0,children:g}),(0,a.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,a.jsx)("button",{type:"button",onClick:L,disabled:h,className:(0,x.cn)("mb-0 block w-full truncate border-0 bg-transparent p-0 text-left text-base font-semibold text-[var(--ds-text)]",h?"cursor-default":"cursor-pointer hover:text-[color:var(--ds-accent)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ds-accent)]"),"aria-current":h?"true":void 0,"aria-label":h?"当前 Agent:".concat(r.id):"在新标签页切换到 Agent ".concat(r.id),children:r.id}),(0,a.jsx)("p",{className:"mb-0 mt-1 truncate text-sm text-[var(--ds-muted)]",children:v})]})]}),(0,a.jsxs)("div",{className:"flex min-w-0 max-w-full shrink-0 flex-col gap-1.5 sm:min-w-[140px]",children:[(0,a.jsx)("span",{className:"text-base text-[var(--ds-muted)]",children:"队长"}),f?(0,a.jsx)(W,{member:f,badge:"队长"}):(0,a.jsx)(_,{label:"设置队长",hint:"暂无队长",icon:"User"})]}),(0,a.jsxs)("div",{className:"flex min-w-0 max-w-full flex-1 flex-col gap-1.5",children:[(0,a.jsx)("span",{className:"text-base text-[var(--ds-muted)]",children:"队员"}),(0,a.jsxs)("div",{className:"flex min-w-0 max-w-full flex-wrap items-center gap-2",children:[b.members.length>0?(0,a.jsx)($,{leaderId:r.id,members:b.members,onAgentsRefresh:i}):(0,a.jsx)(_,{label:"队员列表",hint:"暂无队员",icon:"Team"}),(0,a.jsx)(o.IconTooltipButton,{icon:"Create",label:"添加队员",disabled:l.length<=1,className:(0,x.cn)("h-8 w-8 shrink-0 border border-dashed border-[color:var(--ds-border)] hover:border-[color:var(--ds-accent)] hover:text-[color:var(--ds-accent)]",l.length>1&&"text-[var(--ds-accent)] hover:bg-[var(--green-light)]"),iconClassName:"!size-4",onClick:()=>T(!0)})]})]}),(0,a.jsx)(Z,{onEdit:O,onDelete:()=>void U(),deleting:z})]}),(0,a.jsx)(K,{open:j,onOpenChange:N,title:"设置队长",description:"从可选 Agent 中选择一名作为队长",candidates:E,onPick:M}),(0,a.jsx)(q,{open:k,onOpenChange:T,team:r,allAgents:l,rosters:n,onConfirm:I,onAgentsRefresh:i})]})}function Q(e){let{agentsState:t}=e,{agents:r,loading:l,error:n}=t,i=function(e){let[t,a]=(0,s.useState)({});(0,s.useEffect)(()=>{a(t=>{let a={...t};for(let r of e){var s;let l=null!=(s=t[r.id])?s:H;a[r.id]={captain:l.captain,members:function(e,t){return e.agentTeamMembers.map(e=>{let a=t.find(t=>t.id===e.agentType);return{id:e.agentType,displayName:(null==a?void 0:a.displayName.trim())||e.agentType}})}(r,e)}}return a})},[e]);let r=(0,s.useCallback)(e=>{var a;return null!=(a=t[e])?a:H},[t]),l=(0,s.useCallback)((e,t)=>{a(a=>{var s;let r=(null!=(s=a[e])?s:H).members.filter(e=>e.id!==t.id);return{...a,[e]:{captain:t,members:r}}})},[]),n=(0,s.useCallback)(e=>{a(t=>{var a;let s=null!=(a=t[e])?a:H;return{...t,[e]:{...s,captain:null}}})},[]),i=(0,s.useCallback)((e,t)=>{a(a=>{var s,r;let l=null!=(r=a[e])?r:H;return(null==(s=l.captain)?void 0:s.id)===t.id||l.members.some(e=>e.id===t.id)?a:{...a,[e]:{...l,members:[...l.members,t]}}})},[]),d=(0,s.useCallback)((e,t)=>{a(a=>{var s;let r=null!=(s=a[e])?s:H;return{...a,[e]:{...r,members:r.members.filter(e=>e.id!==t)}}})},[]);return{getRoster:r,setCaptain:l,removeCaptain:n,addMember:i,removeMember:d,applyRoster:(0,s.useCallback)((e,t)=>{let s=t.captain,r=t.members.filter(e=>e.id!==(null==s?void 0:s.id));a(t=>({...t,[e]:{captain:s,members:r}}))},[]),getAvailableCandidates:(0,s.useCallback)((e,a)=>{var s;let r=null!=(s=t[e])?s:H,l=new Set([e,...r.captain?[r.captain.id]:[],...r.members.map(e=>e.id)]);return a.filter(e=>!l.has(e.id))},[t])}}(r);return(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col rounded-xl border border-[var(--ds-border)] bg-[var(--ds-bg)] shadow-[var(--shadow-sm)]",children:(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-3",children:l?(0,a.jsx)("div",{className:"flex min-h-[200px] items-center justify-center text-sm text-[var(--ds-muted)]",children:"加载中…"}):n?(0,a.jsxs)("div",{className:"flex min-h-[200px] items-center justify-center px-4 text-center text-sm text-red-600",children:["加载失败:",n]}):0===r.length?(0,a.jsx)("div",{className:"flex min-h-[200px] items-center justify-center px-4 text-center text-sm text-[var(--ds-muted)]",children:"暂无 Agent,点击右上角「新建 Agent」创建"}):(0,a.jsx)("ul",{className:"m-0 list-none space-y-2 p-0",role:"list",children:r.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)(J,{team:e,allAgents:r,rosters:i,onAgentSaved:t.loadAgents})},e.id))})})})}function X(e){let{label:t,value:s,hint:r,icon:l}=e;return(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-3 rounded-xl border border-[var(--ds-border)] bg-white px-4 py-3.5 shadow-[var(--shadow-sm)]",children:[(0,a.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-full bg-[var(--ds-border)]","aria-hidden":!0,children:(0,a.jsx)(n.default,{name:l,size:20,className:"text-[var(--ds-text)]"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"block text-sm text-[var(--ds-muted)]",children:t}),(0,a.jsx)("span",{className:"mt-0.5 block text-2xl font-semibold leading-none text-[var(--ds-text)]",children:s}),(0,a.jsx)("span",{className:"mt-1 block text-xs text-[var(--ds-muted)]",children:r})]})]})}function ee(e){let{agents:t,className:r}=e,l=(0,s.useMemo)(()=>{let e=t.length;return console.log(t),[{label:"团队总数",value:t.filter(e=>e.agentTeamMembers.length>=1).length,icon:"Teams",hint:"队员数大于 1 的 Agent 编组"},{label:"成员总数",value:e,icon:"Agent",hint:"角色、能力和工具的智能执行体"}]},[t]);return(0,a.jsx)("div",{className:(0,x.cn)("flex flex-wrap gap-3",r),children:l.map(e=>(0,a.jsx)(X,{...e},e.label))})}function et(){let e=function(){let e=(0,w.useAppStore)(e=>e.wsUrl),t=(0,w.useAppStore)(e=>e.apiBase),[a,r]=(0,s.useState)([]),[l,n]=(0,s.useState)(!0),[i,d]=(0,s.useState)(null),o=(0,s.useCallback)(async()=>{n(!0),d(null);try{let a=await (0,C.listAgentsForManage)(e,t);r(a)}catch(t){let e=t instanceof Error?t.message:String(t);r([]),d(e),c.appToast.error("加载失败:".concat(e))}finally{n(!1)}},[e,t]);return(0,s.useEffect)(()=>{o()},[o]),{agents:a,loading:l,error:i,loadAgents:o}}();(0,s.useEffect)(()=>(t=e.loadAgents,()=>{t=void 0}),[e.loadAgents]);let i=(0,s.useCallback)(()=>{!function(){var e;let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{openFlyout:r,closeFlyout:l}=y.useStageThreadFlyoutStore.getState(),n=null!=(e=s.onSaved)?e:t;r({width:y.CREATE_AGENT_FLYOUT_WIDTH,hideHeader:!0,bodyClassName:"!p-0 overflow-hidden",navigationGuard:!0,content:(0,a.jsx)(D,{mode:"create",onClose:l,onSaved:n})})}()},[]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(r.ManageChromeHeaderActions,{children:(0,a.jsx)("div",{className:"flex flex-wrap items-center",children:(0,a.jsxs)(l.Button,{type:"button",variant:"default",size:"lg",onClick:i,className:"mr-[12px] cursor-pointer",children:[(0,a.jsx)(n.default,{name:"Create",size:16,className:"align-middle"}),"新建 Agent"]})})}),(0,a.jsx)(ee,{agents:e.agents,className:"mb-4"}),(0,a.jsx)(Q,{agentsState:e})]})}}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94197,e=>{"use strict";e.s(["IconTooltipButton",()=>o]);var t=e.i(18050),r=e.i(72064),l=e.i(19455),n=e.i(46798),a=e.i(75157);let s={muted:"text-[var(--ds-muted)] hover: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:i,ariaLabel:d,tone:c="muted",disabled:u,className:p,iconClassName:f,onClick:g}=e;return(0,t.jsx)(n.TooltipProvider,{delayDuration:150,children:(0,t.jsxs)(n.Tooltip,{children:[(0,t.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(l.Button,{type:"button",variant:"plain",size:"icon",className:(0,a.cn)("h-4 w-4",s[c],p),disabled:u,"aria-label":null!=d?d:i,onClick:g,children:(0,t.jsx)(r.default,{name:o,size:16,className:f})})}),(0,t.jsx)(n.TooltipContent,{side:"bottom",align:"center",className:"text-base",children:i})]})})}},93479,e=>{"use strict";e.s(["Input",()=>l]);var t=e.i(18050),r=e.i(75157);function l(e){let{className:l,type:n="text",size:a="default",...s}=e;return(0,t.jsx)("input",{type:n,"data-slot":"input","data-size":a,className:(0,r.cn)("h-8 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-[#e0e0e0] 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-8 data-[size=lg]:h-10 data-[size=sm]:h-7",l),...s})}},20783,e=>{"use strict";e.s(["composeRefs",()=>l,"useComposedRefs",()=>n]);var t=e.i(71645);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function l(){for(var e=arguments.length,t=Array(e),l=0;l<e;l++)t[l]=arguments[l];return e=>{let l=!1,n=t.map(t=>{let n=r(t,e);return l||"function"!=typeof n||(l=!0),n});if(l)return()=>{for(let e=0;e<n.length;e++){let l=n[e];"function"==typeof l?l():r(t[e],null)}}}}function n(){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];return t.useCallback(l(...r),r)}},18900,69051,e=>{"use strict";function t(e){let t=null==e?"":String(e);return""===t?'""':/[\s#"'\\\n]/.test(t)||t!==t.trim()?'"'.concat(t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t}function r(e){let t=String(e).split(/\r?\n/),r={},l=/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/;for(let e=0;e<t.length;e++){let n=t[e],a=l.exec(n);a&&(r[a[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}(a[2]))}return r}function l(e,r){let l=Array.isArray(e)?e:[],n=new Set;for(let e=0;e<l.length;e++){let t=l[e];t&&"object"==typeof t&&"string"==typeof t.key&&n.add(t.key)}let a=[];for(let e=0;e<l.length;e++){let n=l[e];if(!n||"object"!=typeof n||"string"!=typeof n.key)continue;let s=n.key;if(!Object.prototype.hasOwnProperty.call(r,s))continue;let o=r[s];null!=o&&""!==String(o).trim()&&a.push("".concat(s,"=").concat(t(String(o))))}let s=Object.keys(r).filter(e=>!n.has(e)).sort();for(let e=0;e<s.length;e++){let l=s[e],n=r[l];null!=n&&""!==String(n).trim()&&a.push("".concat(l,"=").concat(t(String(n))))}let o=a.join("\n");return o.length>0?"".concat(o,"\n"):""}e.s(["buildEnvFileContentFromForm",()=>l,"parseEnvContentToMap",()=>r],18900),e.s(["loadDemoSingleMessage",()=>d,"loadSystemEnv",()=>s,"saveSystemEnv",()=>o,"saveSystemMcpJson",()=>i],69051);var n=e.i(29250),a=e.i(36845);async function s(e,t,r){return(0,n.get)((0,a.buildSystemEnvApiUrl)(e,t,r))}async function o(e,t,r,l){await (0,n.patch)((0,a.buildSystemEnvApiUrl)(e,t,r),{content:l})}async function i(e,t,r,l){await (0,n.patch)((0,a.buildSystemMcpJsonApiUrl)(e,t,r),{content:l})}async function d(){return(0,n.get)("/api/demo/single-message")}},62849,e=>{"use strict";e.s(["EnvManageView",()=>k],62849);var t=e.i(18050),r=e.i(71645),l=e.i(65934),n=e.i(87243),a=e.i(19455),s=e.i(94197),o=e.i(93479),i=e.i(67489),d=e.i(67327);let c=["llm","git","geelib","tutui","system"],u={llm:"llm设置",git:"git设置",geelib:"geelib设置",tutui:"tutui设置",system:"系统设置"};function p(e){let t={...u};if(!e||"object"!=typeof e)return t;for(let r of c){let l=e[r];"string"==typeof l&&l.trim()&&(t[r]=l.trim())}return t}var f=e.i(18900),g=e.i(13354),m=e.i(82136),b=e.i(69051),h=e.i(75157);let v="__empty__",x=[{value:"anthropic",label:"anthropic"},{value:"openai",label:"openai"}];function y(){return"undefined"!=typeof crypto&&"randomUUID"in crypto?crypto.randomUUID():"r-".concat(Date.now(),"-").concat(Math.random())}function k(){let e=(0,l.useAppStore)(e=>e.wsUrl),u=(0,l.useAppStore)(e=>e.apiBase),k=(0,l.useAppStore)(e=>e.agentConfig),j=(0,l.useAppStore)(e=>e.setAgentConfig),S=(0,l.useAppStore)(e=>e.bridgeReady),C=(0,l.useAppStore)(e=>e.setStatus),{currentAgent:w,loadAgentConfig:A}=(0,n.useSession)(),{sendReloadAgentConfig:N}=(0,d.useWebSocketSender)(),[T,E]=(0,r.useState)(!0),[z,I]=(0,r.useState)(!1),[_,U]=(0,r.useState)([]),[M,O]=(0,r.useState)(p(void 0)),[B,P]=(0,r.useState)({}),[F,R]=(0,r.useState)({}),[D,L]=(0,r.useState)([]),V=(0,r.useMemo)(()=>new Set(_.map(e=>e.key)),[_]),K=(0,r.useMemo)(()=>(function(e){let t={};for(let e of c)t[e]=[];for(let r of e)c.includes(r.group)&&t[r.group].push(r);return t})(_),[_]),Z=(0,r.useCallback)(e=>{R(function(e,t,r){let l={};for(let n of t){let t=e[n.key];if("string"==typeof t&&t.length>0){l[n.key]=t;continue}let a=r[n.key];l[n.key]="string"==typeof a?a:""}return l}(e,_,B));let t={};for(let[r,l]of Object.entries(e))V.has(r)||(t[r]=l);L(Object.keys(t).sort().map(e=>{var r;return{id:y(),key:e,value:null!=(r=t[e])?r:""}}))},[_,B,V]),J=(0,r.useCallback)(async()=>{try{let t=await (0,b.loadSystemEnv)(e,u,w()),r="string"==typeof t.content?t.content:"",l=function(e){if(!Array.isArray(e))return[];let t=[];for(let r of e){if(!r||"object"!=typeof r)continue;let e="string"==typeof r.key?r.key.trim():"",l="string"==typeof r.group?r.group.trim():"";e&&c.includes(l)&&t.push({key:e,group:l,label:"string"==typeof r.label&&r.label.trim()?r.label.trim():e,placeholder:"string"==typeof r.placeholder?r.placeholder:""})}return t}(t.schema),n=(0,f.parseEnvContentToMap)(r);U(l),O(p(t.groupLabels)),P(function(e,t){let r={};for(let n of e){var l;r[n.key]=null!=(l=t[n.key])?l:""}return r}(l,n))}catch(e){g.appToast.error("加载环境变量表单配置失败:".concat(e instanceof Error?e.message:String(e))),U([]),P({})}},[e,u,w]);(0,r.useEffect)(()=>{E(!0),Promise.all([A(),J()]).finally(()=>{E(!1)})},[A,J]),(0,r.useEffect)(()=>{Z({...k.env})},[k.env,Z]);let W=(0,r.useCallback)((e,t)=>{R(r=>({...r,[e]:t}))},[]),Y=(0,r.useCallback)((e,t)=>{L(r=>r.map(r=>r.id===e?{...r,...t}:r))},[]),$=(0,r.useCallback)(e=>{L(t=>t.filter(t=>t.id!==e))},[]),q=(0,r.useCallback)(()=>{L(e=>[...e,{id:y(),key:"",value:""}])},[]),G=(0,r.useCallback)(()=>{Z({...k.env})},[k.env,Z]),H=(0,r.useCallback)(async()=>{let t=function(e,t){let r={};for(let l of t){let t=Object.prototype.hasOwnProperty.call(e,l.key)?e[l.key]:"",n=String(null!=t?t:"").trim();n&&(r[l.key]=n)}return r}(F,_),r=function(e,t){let r={},l=new Set;for(let a of e){var n;let e=String(a.key||"").trim(),s=String(null!=(n=a.value)?n:"");if(s.trim()||e){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))return{ok:!1,message:"环境变量名不合法:".concat(e,"(仅允许字母/数字/下划线,且不能数字开头)")};if(t.has(e))return{ok:!1,message:"自定义变量不能与固定表单重复:".concat(e)};if(l.has(e))return{ok:!1,message:"存在重复环境变量名:".concat(e)};l.add(e),r[e]=s}}return{ok:!0,env:r}}(D,V);if(!r.ok)return void g.appToast.info(r.message);let n={...t,...r.env};I(!0);try{var a,s,o,i;let t=l.useAppStore.getState();await (0,m.saveAgentConfig)(e,u,w(),{tools:t.agentConfig.tools.slice(),disallowedTools:t.agentConfig.disallowedTools.slice(),mcpServers:t.agentConfig.mcpServers.slice(),skills:t.agentConfig.skills.slice(),agentTeams:t.agentConfig.agentTeams.slice(),model:t.agentConfig.model,rules:t.agentConfig.rules.slice(),effort:null!=(a=t.agentConfig.effort)?a:null,background:null!=(s=t.agentConfig.background)&&s,isolation:null!=(o=t.agentConfig.isolation)?o:"",whentouse:null!=(i=t.agentConfig.whentouse)?i:"",env:n}),j({...t.agentConfig,env:{...n}}),l.useAppStore.getState().wsConnected&&N(),C("环境变量已保存"+(l.useAppStore.getState().wsConnected?",已请求 worker 重新加载配置":""),S?"ready":""),g.appToast.success(l.useAppStore.getState().wsConnected?"已保存到 agent.json,并已请求 worker 重新加载配置。":"已保存到 agent.json。重连 WebSocket 后子进程环境将同步。")}catch(e){g.appToast.error("保存环境变量失败:".concat(e instanceof Error?e.message:String(e)))}finally{I(!1)}},[F,_,D,V,e,u,w,j,N,C,S]);return(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-[var(--ds-border)] bg-[#fff] shadow-[var(--shadow-md)]",children:[(0,t.jsx)("div",{className:"shrink-0 border-b border-[var(--ds-border)] px-4 py-4",children:(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--ds-muted)]",children:"仅影响当前 agent 的 session 子进程环境"})}),(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto px-4 py-4",children:T?(0,t.jsx)("div",{className:"py-8 text-center text-base text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsxs)(t.Fragment,{children:[_.length?(0,t.jsx)(t.Fragment,{children:c.map(e=>{let r=K[e];return r.length?(0,t.jsxs)("section",{className:"mt-6 first:mt-0",children:[(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:M[e]}),(0,t.jsx)("div",{className:"mt-1 divide-y divide-[var(--ds-border)]",children:r.map(e=>(e=>{let r="agent-env-field-".concat(e.key),l="string"==typeof F[e.key]?F[e.key]:"";if("LLM_PROVIDER"===e.key){let n="anthropic"===l||"openai"===l?l:"";return(0,t.jsxs)("div",{className:"grid items-center gap-3 py-3",style:{gridTemplateColumns:"240px 1fr"},children:[(0,t.jsx)("label",{className:"inline-flex h-10 items-center rounded-md border border-[var(--ds-border)] px-3 text-base text-[var(--ds-text)]",htmlFor:r,children:e.label}),(0,t.jsxs)(i.Select,{value:n||v,onValueChange:t=>W(e.key,t===v?"":t),children:[(0,t.jsx)(i.SelectTrigger,{id:r,className:(0,h.cn)("h-10 w-full border-[var(--ds-border)] bg-[var(--ds-bg)] text-base",!n&&"text-[var(--text-placeholder)]"),children:(0,t.jsx)(i.SelectValue,{placeholder:"请选择"})}),(0,t.jsxs)(i.SelectContent,{children:[(0,t.jsx)(i.SelectItem,{value:v,children:"请选择"}),x.map(e=>(0,t.jsx)(i.SelectItem,{value:e.value,children:e.label},e.value))]})]})]},e.key)}return(0,t.jsxs)("div",{className:"grid items-center gap-3 py-3",style:{gridTemplateColumns:"240px 1fr"},children:[(0,t.jsx)("label",{className:"inline-flex h-10 items-center rounded-md border border-[var(--ds-border)] px-3 text-base text-[var(--ds-text)]",htmlFor:r,children:e.label}),(0,t.jsx)(o.Input,{id:r,type:"text",spellCheck:!1,autoComplete:"off",placeholder:e.placeholder,className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] text-base placeholder:text-[var(--text-placeholder)]",value:l,onChange:t=>W(e.key,t.target.value)})]},e.key)})(e))})]},e):null})}):(0,t.jsx)("div",{className:"rounded-md border border-dashed border-[var(--ds-border)] py-8 text-center text-base text-[var(--ds-muted)]",children:"未加载到环境变量表单配置"}),(0,t.jsx)("h3",{className:"mb-4 mt-8 text-base font-semibold text-[var(--ds-text)]",children:"自定义设置"}),(0,t.jsx)("div",{className:"mt-5",children:(0,t.jsx)(a.Button,{type:"button",variant:"outline",size:"lg",disabled:T||z,onClick:q,children:"新增变量"})}),(0,t.jsxs)("div",{className:"mb-2 mt-5 grid gap-2 text-sm text-[var(--ds-muted)]",style:{gridTemplateColumns:"1fr 1fr auto"},children:[(0,t.jsx)("span",{children:"KEY"}),(0,t.jsx)("span",{children:"VALUE"}),(0,t.jsx)("span",{children:"操作"})]}),(0,t.jsx)("div",{className:"flex flex-col gap-2",children:D.length?D.map(e=>(0,t.jsxs)("div",{className:"grid gap-2",style:{gridTemplateColumns:"1fr 1fr auto"},children:[(0,t.jsx)(o.Input,{type:"text",spellCheck:!1,autoComplete:"off",placeholder:"例如 API_KEY",className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] text-base placeholder:text-[var(--text-placeholder)]",value:e.key,onChange:t=>Y(e.id,{key:t.target.value})}),(0,t.jsx)(o.Input,{type:"text",spellCheck:!1,autoComplete:"off",placeholder:"value",className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] text-base placeholder:text-[var(--text-placeholder)]",value:e.value,onChange:t=>Y(e.id,{value:t.target.value})}),(0,t.jsx)(s.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.key),onClick:()=>$(e.id)})]},e.id)):(0,t.jsx)("div",{className:"rounded-md border border-dashed border-[var(--ds-border)] py-8 text-center text-base text-[var(--ds-muted)]",children:"(暂无变量,点击「新增变量」)"})})]})}),(0,t.jsxs)("div",{className:"flex shrink-0 justify-end gap-[12px] border-t border-[var(--ds-border)] px-4 py-3",children:[(0,t.jsx)(a.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:T||z,onClick:G,children:"取消"}),(0,t.jsx)(a.Button,{type:"button",size:"lg",disabled:T||z,onClick:()=>void H(),children:"保存"})]})]})}}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67327,20090,e=>{"use strict";e.s(["useWebSocketSender",()=>l],67327);var t=e.i(71645),n=e.i(65934);e.s(["clearActiveWebSocket",()=>i,"isWebSocketOpen",()=>r,"sendActiveWebSocketJson",()=>a,"setActiveWebSocket",()=>o],20090);let s=null;function r(e){return null!==e&&e.readyState===WebSocket.OPEN}function o(e){s=e}function i(e){s===e&&(s=null)}function a(e){let t=s;return!!r(t)&&(t.send(JSON.stringify(e)),!0)}function l(){let e=(0,t.useCallback)(e=>{let t=a(e);return t&&n.useAppStore.getState().appendLog("→",e),t},[]),s=(0,t.useCallback)(()=>e({type:"reloadAgentConfig"}),[e]),r=(0,t.useCallback)(()=>e({type:"reloadAgentPrompt"}),[e]),o=(0,t.useCallback)((t,n)=>{let s=String(t||"").trim();return!!s&&e({type:"permission.response",requestId:s,behavior:n})},[e]);return{sendJson:e,sendReloadAgentConfig:s,sendReloadAgentPrompt:r,sendPermissionResponse:o}}},43084,e=>{"use strict";e.s(["clamp",()=>c,"createCoords",()=>a,"evaluate",()=>u,"floor",()=>i,"getAlignment",()=>d,"getAlignmentAxis",()=>v,"getAlignmentSides",()=>h,"getAxisLength",()=>f,"getExpandedPlacements",()=>S,"getOppositeAlignmentPlacement",()=>A,"getOppositeAxis",()=>p,"getOppositeAxisPlacements",()=>k,"getOppositePlacement",()=>T,"getPaddingObject",()=>P,"getSide",()=>g,"getSideAxis",()=>m,"max",()=>r,"min",()=>s,"placements",()=>n,"rectToClientRect",()=>E,"round",()=>o,"sides",()=>t]);let t=["top","right","bottom","left"],n=t.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]),s=Math.min,r=Math.max,o=Math.round,i=Math.floor,a=e=>({x:e,y:e}),l={left:"right",right:"left",bottom:"top",top:"bottom"};function c(e,t,n){return r(e,s(t,n))}function u(e,t){return"function"==typeof e?e(t):e}function g(e){return e.split("-")[0]}function d(e){return e.split("-")[1]}function p(e){return"x"===e?"y":"x"}function f(e){return"y"===e?"height":"width"}function m(e){let t=e[0];return"t"===t||"b"===t?"y":"x"}function v(e){return p(m(e))}function h(e,t,n){void 0===n&&(n=!1);let s=d(e),r=v(e),o=f(r),i="x"===r?s===(n?"end":"start")?"right":"left":"start"===s?"bottom":"top";return t.reference[o]>t.floating[o]&&(i=T(i)),[i,T(i)]}function S(e){let t=T(e);return[A(e),t,A(t)]}function A(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}let y=["left","right"],b=["right","left"],w=["top","bottom"],C=["bottom","top"];function k(e,t,n,s){let r=d(e),o=function(e,t,n){switch(e){case"top":case"bottom":if(n)return t?b:y;return t?y:b;case"left":case"right":return t?w:C;default:return[]}}(g(e),"start"===n,s);return r&&(o=o.map(e=>e+"-"+r),t&&(o=o.concat(o.map(A)))),o}function T(e){let t=g(e);return l[t]+e.slice(t.length)}function P(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function E(e){let{x:t,y:n,width:s,height:r}=e;return{width:s,height:r,top:n,left:t,right:t+s,bottom:n+r,x:t,y:n}}},55227,e=>{"use strict";e.s(["deleteSession",()=>r,"listSessions",()=>s,"listWorkspaceFiles",()=>l,"loadSessionOverrides",()=>o,"loadSessionReplay",()=>i,"saveSessionOverrides",()=>a]);var t=e.i(29250),n=e.i(36845);async function s(e,s,r){return(0,t.get)((0,n.buildSessionsListUrl)(e,s,r))}async function r(e,s,r,o){return(0,t.del)((0,n.buildSessionDeleteUrl)(e,s,r,o))}async function o(e,s,r,o){return(0,t.get)((0,n.buildSessionOverridesUrl)(e,s,r,o))}async function i(e,s,r,o){let i=await (0,t.get)((0,n.buildSessionReplayUrl)(e,s,r,o));return{envelopes:Array.isArray(i.envelopes)?i.envelopes:[],messageCount:"number"==typeof i.messageCount?i.messageCount:void 0}}async function a(e,s,r,o,i){await (0,t.patch)((0,n.buildSessionOverridesUrl)(e,s,r,o),i)}async function l(e,s,r,o){return(0,t.get)((0,n.buildWorkspaceFilesListUrl)(e,s,r,o))}},82136,e=>{"use strict";e.s(["loadAgentConfig",()=>r,"saveAgentConfig",()=>o]);var t=e.i(29250),n=e.i(36845),s=e.i(75675);async function r(e,r,o){var i,a,l;let c=await (0,t.get)((0,n.buildAgentApiUrl)(e,r,o));return{agentType:"string"==typeof(null==(i=c.agent)?void 0:i.agentType)&&c.agent.agentType.trim()?c.agent.agentType.trim():"string"==typeof(null==(a=c.agent)?void 0:a.name)?c.agent.name.trim():"",config:function(e){var t;let n={},r=null==e?void 0:e.env;if(r&&"object"==typeof r&&!Array.isArray(r))for(let[e,t]of Object.entries(r))"string"==typeof e&&e.trim()&&(n[e]=null==t?"":String(t));return{tools:Array.isArray(null==e?void 0:e.tools)?e.tools.map(String):[...s.DEFAULT_AGENT_CONFIG.tools],disallowedTools:Array.isArray(null==e?void 0:e.disallowedTools)?e.disallowedTools.map(String):[...s.DEFAULT_AGENT_CONFIG.disallowedTools],mcpServers:Array.isArray(null==e?void 0:e.mcpServers)?e.mcpServers.map(String):[...s.DEFAULT_AGENT_CONFIG.mcpServers],skills:Array.isArray(null==e?void 0:e.skills)?e.skills.map(String):[...s.DEFAULT_AGENT_CONFIG.skills],model:"string"==typeof(null==e?void 0:e.model)?e.model:s.DEFAULT_AGENT_CONFIG.model,agentTeams:Array.isArray(null==e?void 0:e.agentTeams)?e.agentTeams.map(String):[...s.DEFAULT_AGENT_CONFIG.agentTeams],rules:Array.isArray(null==e?void 0:e.rules)?e.rules.map(String):[...s.DEFAULT_AGENT_CONFIG.rules],env:n,effort:"string"==typeof(t=null==e?void 0:e.effort)||"number"==typeof t||null==t?t:s.DEFAULT_AGENT_CONFIG.effort,background:(null==e?void 0:e.background)===!0||s.DEFAULT_AGENT_CONFIG.background,isolation:(null==e?void 0:e.isolation)==="worktree"||(null==e?void 0:e.isolation)==="remote"?e.isolation:"",whentouse:"string"==typeof(null==e?void 0:e.whentouse)?e.whentouse:s.DEFAULT_AGENT_CONFIG.whentouse}}(null==(l=c.agent)?void 0:l.config)}}async function o(e,s,r,o){await (0,t.patch)((0,n.buildAgentApiUrl)(e,s,r),{config:{...o,tools:o.tools.slice(),disallowedTools:o.disallowedTools.slice(),mcpServers:o.mcpServers.slice(),skills:o.skills.slice(),agentTeams:o.agentTeams.slice(),rules:o.rules.slice(),env:{...o.env}}})}},87243,e=>{"use strict";e.s(["useSession",()=>c]);var t=e.i(71645),n=e.i(29250),s=e.i(68499),r=e.i(13354),o=e.i(65934),i=e.i(82136),a=e.i(52727),l=e.i(55227);function c(){let e=(0,o.useAppStore)(e=>e.wsUrl),c=(0,o.useAppStore)(e=>e.apiBase),u=(0,o.useAppStore)(e=>e.agentId),g=(0,t.useCallback)(async t=>{let n=o.useAppStore.getState(),s=n.agentId.trim()||"qihoo";n.setSessionsMeta("加载中…");try{let u=await (0,l.listSessions)(e,c,s),g=u.sessions||[],d=null!=u.agent?String(u.agent):s;if(n.setBrandAgent(d),n.setLastSessions(g,"".concat(g.length,"个会话 · agent: ").concat(d)),(0,a.listAgents)(e,c).then(e=>{let t=(0,a.findAgentInList)(e,s);if(t)return void o.useAppStore.getState().setCurrentWorkspaceAgent(t);let n=o.useAppStore.getState().currentWorkspaceAgent;n&&n.id===s||o.useAppStore.getState().setCurrentWorkspaceAgent({id:s,displayName:s})}).catch(()=>{let e=o.useAppStore.getState().currentWorkspaceAgent;e&&e.id===s||o.useAppStore.getState().setCurrentWorkspaceAgent({id:s,displayName:s})}),(null==t?void 0:t.activateFirstIfEmpty)&&!o.useAppStore.getState().sessionId.trim()&&g.length>0){var r,i;let e=null==(i=g[0])||null==(r=i.sessionId)?void 0:r.trim();e&&o.useAppStore.getState().selectSession(e,"history")}}catch(e){n.resetSessions("加载失败: ".concat(e)),n.appendLog("sessions",String(e))}},[e,c]),d=(0,t.useCallback)(async()=>{let t=o.useAppStore.getState(),s=t.agentId.trim()||"qihoo";try{let n=await (0,i.loadAgentConfig)(e,c,s);t.setAgentConfig(n.config)}catch(e){t.resetAgentConfig(),t.appendLog("agent-config","load failed ".concat(e instanceof n.ApiError?e.message:String(e)))}},[e,c]),p=(0,t.useCallback)(async t=>{let s=String(t||"").trim();if(!s)return;let r=o.useAppStore.getState(),i=u.trim()||"qihoo";try{let t=await (0,l.loadSessionOverrides)(e,c,i,s),n=t.overrides&&"object"==typeof t.overrides?t.overrides:{};if("string"==typeof n.model){let e={...r.agentConfig,model:n.model};r.setAgentConfig(e)}}catch(e){r.appendLog("session-overrides","load failed ".concat(e instanceof n.ApiError?e.message||e.status:String(e)))}},[e,c,u]),f=(0,t.useCallback)(async t=>{if(!t||!await (0,s.confirmAlertDialog)({title:"确认删除会话?",description:"将删除磁盘上的 transcript 与相关目录,不可恢复。\n\n".concat(t),confirmText:"删除",cancelText:"取消"}))return!1;let i=o.useAppStore.getState().sessionId.trim()===t,a=u.trim()||"qihoo";try{let n=await (0,l.deleteSession)(e,c,a,t);if(o.useAppStore.getState().appendLog("sessions-delete",n),i){let e=o.useAppStore.getState();e.startDraftSession(),e.resetChat(),e.clearLog()}return await g(),i}catch(e){return e instanceof n.ApiError?(o.useAppStore.getState().appendLog("sessions-delete",{error:!0,status:e.status,body:e.body}),r.appToast.error("删除失败: ".concat(e.message))):(o.useAppStore.getState().appendLog("sessions-delete",String(e)),r.appToast.error("删除请求失败: ".concat(e))),!1}},[e,c,u,g]);return{loadSessions:g,loadAgentConfig:d,loadSessionOverrides:p,deleteSessionById:f,currentAgent:(0,t.useCallback)(()=>u.trim()||"qihoo",[u])}}},50711,e=>{"use strict";e.s(["usePersistAgentConfig",()=>i,"usePersistAgentConfigField",()=>a]);var t=e.i(71645),n=e.i(65934),s=e.i(67327),r=e.i(13354),o=e.i(82136);function i(){let e=(0,n.useAppStore)(e=>e.wsUrl),i=(0,n.useAppStore)(e=>e.apiBase),{sendReloadAgentConfig:a}=(0,s.useWebSocketSender)(),l=(0,t.useCallback)(()=>n.useAppStore.getState().agentId.trim()||"qihoo",[]);return(0,t.useCallback)(async t=>{let s=!!(null==t?void 0:t.silent),c=n.useAppStore.getState(),u={config:{tools:c.agentConfig.tools.slice(),mcpServers:c.agentConfig.mcpServers.slice(),skills:c.agentConfig.skills.slice(),model:c.agentConfig.model,agentTeams:c.agentConfig.agentTeams.slice(),rules:c.agentConfig.rules,env:{...c.agentConfig.env}}};try{await (0,o.saveAgentConfig)(e,i,l(),u.config);let t=n.useAppStore.getState();t.wsConnected&&a(),s?(t.appendLog("agent-config","已写入 agent.json"),t.setStatus("agent.json 已保存".concat(t.wsConnected?",已请求同步 worker":"(未连接 WS 则下次连上后 reload)"),t.bridgeReady?"ready":"")):r.appToast.success(t.wsConnected?"已保存并已请求 worker 重新加载 agent.md + agent.json。":"已保存。重连 WebSocket 后生效。")}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}},[e,i,a,l])}function a(e){let i=(0,n.useAppStore)(e=>e.wsUrl),a=(0,n.useAppStore)(e=>e.apiBase),{sendReloadAgentConfig:l}=(0,s.useWebSocketSender)(),c=(0,t.useCallback)(()=>n.useAppStore.getState().agentId.trim()||"qihoo",[]);return(0,t.useCallback)(async(t,s)=>{let u=!!(null==s?void 0:s.silent),g=n.useAppStore.getState(),d={config:{tools:g.agentConfig.tools.slice(),mcpServers:g.agentConfig.mcpServers.slice(),skills:g.agentConfig.skills.slice(),model:g.agentConfig.model,agentTeams:g.agentConfig.agentTeams.slice(),rules:g.agentConfig.rules.slice(),env:{...g.agentConfig.env},[e]:t}};try{await (0,o.saveAgentConfig)(i,a,c(),d.config);let e=n.useAppStore.getState();e.wsConnected&&l(),u?(e.appendLog("agent-config","已写入 agent.json"),e.setStatus("agent.json 已保存".concat(e.wsConnected?",已请求同步 worker":"(未连接 WS 则下次连上后 reload)"),e.bridgeReady?"ready":"")):r.appToast.success(e.wsConnected?"已保存并已请求 worker 重新加载 agent.md + agent.json。":"已保存。重连 WebSocket 后生效。")}catch(e){r.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}},[i,a,l,c,e])}},46798,e=>{"use strict";e.s(["Tooltip",()=>c,"TooltipContent",()=>g,"TooltipProvider",()=>l,"TooltipTrigger",()=>u]);var t=e.i(18050),n=e.i(71645),s=e.i(74080),r=e.i(75157);let o=n.createContext(null),i=n.createContext({delayDuration:0,side:"bottom",align:"center"});function a(){let e=n.useContext(o);if(!e)throw Error("Tooltip components must be used inside <Tooltip>.");return e}function l(e){let{delayDuration:n=0,side:s="bottom",align:r="center",children:o}=e;return(0,t.jsx)(i.Provider,{value:{delayDuration:n,side:s,align:r},children:o})}function c(e){let{children:s}=e,{delayDuration:r}=n.useContext(i),[a,l]=n.useState(!1),c=n.useRef(null),u=n.useRef(null),g=n.useId(),d=n.useCallback(()=>{null!==c.current&&(window.clearTimeout(c.current),c.current=null),l(!1)},[]),p=n.useCallback(()=>{if(null!==c.current&&(window.clearTimeout(c.current),c.current=null),r<=0)return void l(!0);c.current=window.setTimeout(()=>{l(!0),c.current=null},r)},[r]);return n.useEffect(()=>()=>{null!==c.current&&window.clearTimeout(c.current)},[]),(0,t.jsx)(o.Provider,{value:{open:a,delayDuration:r,contentId:g,triggerRef:u,openWithDelay:p,close:d},children:(0,t.jsx)("span",{ref:u,"data-slot":"tooltip",className:"relative inline-flex",children:s})})}function u(e){let{asChild:s,children:r,...o}=e,{open:i,contentId:l,openWithDelay:c,close:u}=a(),g={"aria-describedby":i?l:void 0};if(s&&n.isValidElement(r)){let e=r.props;return n.cloneElement(r,{...o,...e,...g,onMouseEnter:t=>{var n,s;null==(n=e.onMouseEnter)||n.call(e,t),null==(s=o.onMouseEnter)||s.call(o,t),t.defaultPrevented||c()},onMouseLeave:t=>{var n,s;null==(n=e.onMouseLeave)||n.call(e,t),null==(s=o.onMouseLeave)||s.call(o,t),t.defaultPrevented||u()},onFocus:t=>{var n,s;null==(n=e.onFocus)||n.call(e,t),null==(s=o.onFocus)||s.call(o,t),t.defaultPrevented||c()},onBlur:t=>{var n,s;null==(n=e.onBlur)||n.call(e,t),null==(s=o.onBlur)||s.call(o,t),t.defaultPrevented||u()}})}return(0,t.jsx)("span",{"data-slot":"tooltip-trigger",...o,...g,onMouseEnter:e=>{var t;null==(t=o.onMouseEnter)||t.call(o,e),e.defaultPrevented||c()},onMouseLeave:e=>{var t;null==(t=o.onMouseLeave)||t.call(o,e),e.defaultPrevented||u()},onFocus:e=>{var t;null==(t=o.onFocus)||t.call(o,e),e.defaultPrevented||c()},onBlur:e=>{var t;null==(t=o.onBlur)||t.call(o,e),e.defaultPrevented||u()},children:r})}function g(e){let{className:o,side:l,align:c,sideOffset:u=8,...g}=e,{open:d,contentId:p,triggerRef:f}=a(),{side:m,align:v}=n.useContext(i),h=null!=l?l:m,S=null!=c?c:v,[A,y]=n.useState({});return(n.useLayoutEffect(()=>{let e=()=>{let e=f.current;if(!e)return;let t=e.getBoundingClientRect(),n=0,s=0,r="",o="";"top"===h||"bottom"===h?("start"===S&&(s=t.left),"center"===S&&(s=t.left+t.width/2,r="-50%"),"end"===S&&(s=t.right)):("start"===S&&(n=t.top),"center"===S&&(n=t.top+t.height/2,o="-50%"),"end"===S&&(n=t.bottom)),"bottom"===h&&(n=t.bottom+u),"top"===h&&(n=t.top-u,o="-100%"),"right"===h&&(s=t.right+u),"left"===h&&(s=t.left-u,r="-100%"),y({position:"fixed",top:n,left:s,transform:[r&&"translateX(".concat(r,")"),o&&"translateY(".concat(o,")")].filter(Boolean).join(" ")||void 0})};return e(),window.addEventListener("resize",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0)}},[d,h,S,u,f]),d&&"undefined"!=typeof document)?(0,s.createPortal)((0,t.jsx)("div",{id:p,role:"tooltip","data-slot":"tooltip-content",className:(0,r.cn)("pointer-events-none z-[10050]","w-max max-w-[300px] rounded-md bg-black/70 px-3 py-1 text-xs text-white shadow-md","animate-in fade-in-0 zoom-in-95",o),style:A,...g}),document.body):null}},3404,e=>{"use strict";e.s(["REASONS",()=>_],3404),e.s(["cancelOpen",()=>L,"chipRemovePress",()=>u,"clearPress",()=>c,"closePress",()=>a,"closeWatcher",()=>b,"dayPress",()=>O,"decrementPress",()=>p,"disabled",()=>x,"drag",()=>T,"escapeKey",()=>y,"focusOut",()=>A,"imperativeAction",()=>I,"incrementPress",()=>d,"inputBlur",()=>v,"inputChange",()=>f,"inputClear",()=>m,"inputPaste",()=>h,"inputPress",()=>S,"itemPress",()=>i,"keyboard",()=>C,"linkPress",()=>l,"listNavigation",()=>w,"monthChange",()=>N,"none",()=>t,"outsidePress",()=>o,"pointer",()=>k,"scrub",()=>E,"siblingOpen",()=>j,"swipe",()=>F,"trackPress",()=>g,"triggerFocus",()=>r,"triggerHover",()=>s,"triggerPress",()=>n,"valuePropChange",()=>W,"wheel",()=>P,"windowResize",()=>U],16162);let t="none",n="trigger-press",s="trigger-hover",r="trigger-focus",o="outside-press",i="item-press",a="close-press",l="link-press",c="clear-press",u="chip-remove-press",g="track-press",d="increment-press",p="decrement-press",f="input-change",m="input-clear",v="input-blur",h="input-paste",S="input-press",A="focus-out",y="escape-key",b="close-watcher",w="list-navigation",C="keyboard",k="pointer",T="drag",P="wheel",E="scrub",L="cancel-open",j="sibling-open",x="disabled",I="imperative-action",F="swipe",U="window-resize",O="day-press",N="month-change",W="value-prop-change";var _=e.i(16162)},94349,83799,89879,5963,e=>{"use strict";e.s(["useControlled",()=>n],94349),e.i(47167);var t=e.i(71645);function n(e){let{controlled:n,default:s,name:r,state:o="value"}=e,{current:i}=t.useRef(void 0!==n),[a,l]=t.useState(s),c=t.useCallback(e=>{i||l(e)},[]);return[i?n:a,c]}e.s(["useBaseUiId",()=>a],89879),e.s(["useId",()=>i],83799);let s={...t},r=0,o=s.useId;function i(e,n){if(void 0!==o){let t=o();return null!=e?e:n?"".concat(n,"-").concat(t):t}return function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"mui",[s,o]=t.useState(e),i=e||s;return t.useEffect(()=>{null==s&&(r+=1,o("".concat(n,"-").concat(r)))},[s,n]),i}(e,n)}function a(e){return i(e,"base-ui")}e.s(["createChangeEventDetails",()=>c],5963);var l=e.i(17514);function c(e,t,n,s){let r=!1,o=!1,i=null!=s?s:l.EMPTY_OBJECT;return{reason:e,event:null!=t?t:new Event("base-ui"),cancel(){r=!0},allowPropagation(){o=!0},get isCanceled(){return r},get isPropagationAllowed(){return o},trigger:n,...i}}},62372,19904,e=>{"use strict";e.s(["visuallyHidden",()=>n,"visuallyHiddenInput",()=>s],62372);let t={clipPath:"inset(50%)",overflow:"hidden",whiteSpace:"nowrap",border:0,padding:0,width:1,height:1,margin:-1},n={...t,position:"fixed",top:0,left:0},s={...t,position:"absolute"};e.s(["useValueChanged",()=>a],19904);var r=e.i(71645),o=e.i(977),i=e.i(76477);function a(e,t){let n=r.useRef(e),s=(0,i.useStableCallback)(t);(0,o.useIsoLayoutEffect)(()=>{n.current!==e&&s(n.current)},[e,s]),(0,o.useIsoLayoutEffect)(()=>{n.current=e},[e])}},97249,e=>{"use strict";e.s(["BASE_PATH",()=>n,"buildAppNavHref",()=>c,"buildSettingsHref",()=>g,"getSettingsRouteByPathname",()=>f,"getSettingsSlugFromSegments",()=>p,"isAgentUrlStoreSyncPending",()=>o,"isSettingsRoutePath",()=>m,"normalizeAppPathname",()=>l,"syncRuntimeAgentWithUrl",()=>i],97249);var t=e.i(47167);let n=function(){var e;let n=null==(e=t.default.env.NEXT_PUBLIC_BASE_PATH)?void 0:e.trim();return n&&n.length>0?n.replace(/\/+$/,"")||"":"/app"}(),s="qihoo";function r(){var e,t;let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search;return null!=(t=null==(e=new URLSearchParams(n).get("agent"))?void 0:e.trim())?t:""}function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r(),n=t.trim();return!!n&&n!==(e.trim()||s)}function i(e,t){try{let n=r(),o=e.trim();if(n){n!==o&&t(n);return}let i=o||s,a=new URL(window.location.href);if(a.searchParams.get("agent")===i)return;a.searchParams.set("agent",i),window.history.replaceState(window.history.state,"","".concat(a.pathname).concat(a.search).concat(a.hash))}catch(e){}}let a="/index.html";function l(e){let t=function(e){let t=d(e);return t.endsWith(a)?t.slice(0,-a.length)||"/":t}(e);return"/"===t?"/":d(t.split("/").map((e,t)=>0!==t&&e&&e.replace(/\.[A-Za-z0-9]+$/,"")||e).join("/"))}function c(e,t,n){var s,r,o,i,a,l;let c=function(e){var t;if(!e||"/"===e)return e;let n="/manage";return!(e===n||e.startsWith("".concat(n,"/")))||e.endsWith("/")||(null!=(t=e.split("/").pop())?t:"").includes(".")?e:"".concat(e,"/")}(function(e,t){let n="/"===e?"/":e.startsWith("/")?e:"/".concat(e);return n}(e)),u=function(e){if(e instanceof URLSearchParams||"string"==typeof e)return new URLSearchParams(e);if(e){let t=new URLSearchParams;return Object.entries(e).forEach(e=>{let[n,s]=e;"string"==typeof s&&s?t.set(n,s):Array.isArray(s)&&s[0]&&t.set(n,s[0])}),t}return new URLSearchParams(window.location.search)}(n),g="/"===e||""===e;if(null==t?void 0:t.ensureAgent){let e=(null!=(r=null!=(s=t.agent)?s:u.get("agent"))?r:"").trim()||"qihoo";u.set("agent",e)}else{let e=(null!=(i=null!=(o=null==t?void 0:t.agent)?o:u.get("agent"))?i:"").trim();e?u.set("agent",e):u.delete("agent")}if(g&&(null==t?void 0:t.preserveSessionId)!==!1){let e=(null!=(l=null!=(a=null==t?void 0:t.sessionId)?a:u.get("sessionId"))?l:"").trim();e?u.set("sessionId",e):u.delete("sessionId")}else u.delete("sessionId");let d=u.toString();return d?"".concat(c,"?").concat(d):c}let u="/manage";function g(e){return"".concat(u,"/").concat(e)}function d(e){return e.replace(/\/+$/,"")||"/"}function p(e){if(!(null==e?void 0:e.length))return null;let t="index.html"===e.at(-1)?e.slice(0,-1):e;return t.length?t.join("/"):null}function f(e,t){let n=l(e);return t.find(e=>d(e.href)===n)}function m(e,t){if(!e)return!1;let n=l(e);return n===u||t.some(e=>{let t=d(e.href);return n===t||n.startsWith("".concat(t,"/"))})}},92413,e=>{"use strict";function t(e){return(e.summary||e.firstPrompt||e.sessionId||"(无标题)").slice(0,120)}function n(e){let t=new Map;for(let n of e){let e=function(e){let t=new Date(e.lastModified||e.createdAt||0);if(!Number.isFinite(t.getTime()))return"未知日期";let n=t.getFullYear(),s=String(t.getMonth()+1).padStart(2,"0");return"".concat(n,"-").concat(s)}(n),s=t.get(e);s?s.push(n):t.set(e,[n])}return[...t.keys()].sort((e,t)=>t.localeCompare(e)).map(e=>{var n;return{key:e,items:null!=(n=t.get(e))?n:[]}})}function s(e){let t=e.split("-"),n=t[0]&&/^[0-9a-fA-F]{8}$/.test(t[0])?t[0]:e.slice(0,8);return"".concat(n,"...")}function r(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}e.s(["escapeHtml",()=>r,"groupSessionsByMonth",()=>n,"sessionTitle",()=>t,"shortUuidTitle",()=>s])},2578,e=>{e.v(t=>Promise.all(["static/chunks/4302af16b34bf750.js","static/chunks/eba0719a42605421.js","static/chunks/904ad158fd721117.js"].map(t=>e.l(t))).then(()=>t(31862)))},94065,e=>{e.v(t=>Promise.all(["static/chunks/d3e2070a86378cfb.js","static/chunks/fa677aa06f1c0539.js","static/chunks/c1cfc60c17638a73.js","static/chunks/17e79ae7309781d6.js"].map(t=>e.l(t))).then(()=>t(20291)))},34116,e=>{e.v(t=>Promise.all(["static/chunks/9dc241c9b2aa0f91.js","static/chunks/c1cfc60c17638a73.js","static/chunks/a79654d570ac30eb.js","static/chunks/17e79ae7309781d6.js"].map(t=>e.l(t))).then(()=>t(86404)))},1861,e=>{e.v(t=>Promise.all(["static/chunks/99063f8d79783308.js","static/chunks/17e79ae7309781d6.js"].map(t=>e.l(t))).then(()=>t(62849)))},18963,e=>{e.v(t=>Promise.all(["static/chunks/424d3f3f176d43d7.js"].map(t=>e.l(t))).then(()=>t(89530)))},9803,e=>{e.v(t=>Promise.all(["static/chunks/dacc94cf10289334.js"].map(t=>e.l(t))).then(()=>t(28583)))},69496,e=>{e.v(t=>Promise.all(["static/chunks/d01957b1055b357a.js"].map(t=>e.l(t))).then(()=>t(47079)))},56149,e=>{e.v(t=>Promise.all(["static/chunks/6209b42cbfcf288a.js"].map(t=>e.l(t))).then(()=>t(51459)))}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,n)=>{t.exports=e.r(76562)},85570,e=>{"use strict";e.s(["WorkspaceRuntimeContext",()=>n,"useWorkspaceRuntime",()=>r]);var t=e.i(71645);let n=(0,t.createContext)(null);function r(){let e=(0,t.useContext)(n);if(!e)throw Error("useWorkspaceRuntime must be used within WorkspaceShell");return e}},18253,e=>{"use strict";e.s(["useGuardedAppNavigation",()=>s]);var t=e.i(71645),n=e.i(18566),r=e.i(61196);function s(){let e=(0,n.useRouter)(),s=(0,r.useStageThreadFlyoutStore)(e=>e.confirmNavigateAway);return{push:(0,t.useCallback)(async t=>{await s(t)&&e.push(t)},[s,e]),router:e}}},67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return s}});let r=e.r(32061);function s(e){let{reason:t,children:n}=e;if("undefined"==typeof window)throw Object.defineProperty(new r.BailoutToCSRError(t),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}},9885,(e,t,n)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return r}})},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return l}});let r=e.r(18050),s=e.r(74080),a=e.r(63599),i=e.r(9885);function l(e){let{moduleIds:t}=e;if("undefined"!=typeof window)return null;let n=a.workAsyncStorage.getStore();if(void 0===n)return null;let l=[];if(n.reactLoadableManifest&&t){let e=n.reactLoadableManifest;for(let n of t){if(!e[n])continue;let t=e[n].files;l.push(...t)}}return 0===l.length?null:(0,r.jsx)(r.Fragment,{children:l.map(e=>{let t=n.assetPrefix+"/_next/"+(0,i.encodeURIPath)(e);return e.endsWith(".css")?(0,r.jsx)("link",{precedence:"dynamic",href:t,rel:"stylesheet",as:"style"},e):((0,s.preload)(t,{as:"script",fetchPriority:"low"}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return u}});let r=e.r(18050),s=e.r(71645),a=e.r(67585),i=e.r(52157);function l(e){return{default:e&&"default"in e?e.default:e}}let o={loader:()=>Promise.resolve(l(()=>null)),loading:null,ssr:!0},u=function(e){let t={...o,...e},n=(0,s.lazy)(()=>t.loader().then(l)),u=t.loading;function d(e){let l=u?(0,r.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,o=!t.ssr||!!t.loading,d=o?s.Suspense:s.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:["undefined"==typeof window?(0,r.jsx)(i.PreloadChunks,{moduleIds:t.modules}):null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(a.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(d,{...o?{fallback:l}:{},children:c})}return d.displayName="LoadableComponent",d}},70703,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return s}});let r=e.r(55682)._(e.r(69093));function s(e,t){var n;let s={};"function"==typeof e&&(s.loader=e);let a={...s,...t};return(0,r.default)({...a,modules:null==(n=a.loadableGenerated)?void 0:n.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},82787,87968,e=>{"use strict";e.s(["MANAGE_DEFAULT_HREF",()=>m,"getBridgeSidebarManageRoutes",()=>g,"getManageRoute",()=>f,"isManageRouteEnabled",()=>h,"isManageSideNavPath",()=>v],82787);var t=e.i(70703),n=e.i(71645),r=e.i(18050);e.s(["Spinner",()=>i],87968);var s=e.i(72064),a=e.i(75157);function i(e){let{className:t}=e;return(0,r.jsx)(s.default,{name:"Loader2",size:16,className:(0,a.cn)("animate-spin text-muted-foreground",t)})}function l(e){let{className:t}=e;return(0,r.jsxs)("div",{className:(0,a.cn)("flex min-h-[40vh] flex-1 items-center justify-center gap-2 text-sm text-zinc-500",t),children:[(0,r.jsx)(i,{})," 加载中"]})}function o(){return(0,r.jsx)("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col items-center justify-center text-[var(--ds-muted)]",children:"即将上线"})}var u=e.i(97249);function d(e){return(0,t.default)(e,{loading:()=>(0,n.createElement)(l)})}let c=[{key:"teams",slug:"teams",label:"agent / teams",title:"agent / teams 管理",description:"管理 Agent 团队与协作编排。",chrome:"feature",icon:"Teams",enabled:!0,visibleInNav:!1,headerIcon:"Agent2",visibleInBridgeSidebar:!0,Component:d(()=>e.A(2578).then(e=>({default:e.TeamsView})))},{key:"task",slug:"task",label:"定时任务",title:"定时任务",description:"管理计划执行的任务与触发记录。",chrome:"feature",icon:"Task",enabled:!0,headerIcon:"Calendar",visibleInNav:!1,visibleInBridgeSidebar:!0,Component:d(()=>e.A(94065).then(e=>({default:e.TaskView})))},{key:"add-account",slug:"add-account",label:"账户",title:"账户",description:"",chrome:"side-nav",icon:"Account",enabled:!0,visibleInNav:!0,children:[{key:"basic",slug:"basic",label:"基本信息",title:"基本信息",description:"",chrome:"side-nav",tabVariant:"pill",showTitle:!1,Component:d(()=>e.A(34116).then(e=>({default:e.AddAccountView})))}]},{key:"env",slug:"env",label:"服务商",title:"服务商",description:"管理 API 服务商以访问模型。",chrome:"side-nav",icon:"Server",enabled:!0,visibleInNav:!0,Component:d(()=>e.A(1861).then(e=>({default:e.EnvManageView})))},{key:"permissions",slug:"permissions",label:"权限",title:"权限",description:"管理平台访问权限与角色策略。",chrome:"side-nav",enabled:!1,visibleInNav:!1,Component:o},{key:"general",slug:"general",label:"通用",title:"通用",description:"平台通用配置与偏好设置。",chrome:"side-nav",enabled:!1,visibleInNav:!1,Component:o},{key:"mcp",slug:"mcp",label:"MCP",title:"MCP管理",description:"管理外部工具与数据源。可以导入、编辑、移除或禁用 MCP 服务。",chrome:"side-nav",icon:"Mcp",enabled:!0,visibleInNav:!0,Component:d(()=>e.A(18963).then(e=>({default:e.McpManageView})))},{key:"tools",slug:"tools",label:"工具",title:"工具管理",description:"管理当前 Agent 已挂载的工具列表",chrome:"side-nav",icon:"Tool",enabled:!0,visibleInNav:!0,Component:d(()=>e.A(9803).then(e=>({default:e.ToolsManageView})))},{key:"skills",slug:"skills",label:"技能",title:"技能管理",description:"管理当前 Agent 已挂载的技能",chrome:"side-nav",icon:"Skill",enabled:!0,visibleInNav:!0,Component:d(()=>e.A(69496).then(e=>({default:e.SkillsManageView})))},{key:"agent-teams",slug:"agent-teams",label:"agents",title:"Agent 团队管理",description:"管理当前 Agent 可调度的子 Agent 团队",chrome:"side-nav",icon:"Agent",enabled:!0,visibleInNav:!0,Component:d(()=>e.A(56149).then(e=>({default:e.AgentTeamsManageView})))},{key:"about",slug:"about",label:"关于",title:"关于",description:"版本信息与平台说明。",chrome:"side-nav",enabled:!0,visibleInNav:!1,Component:o}].map(e=>{var t,n;let{children:r,...s}=e;return{...s,href:(0,u.buildSettingsHref)(e.slug),...r?{children:(t=e.slug,n=e.chrome,r.map(e=>{var r,s;let a="".concat(t,"/").concat(e.slug);return{...e,slug:a,href:(0,u.buildSettingsHref)(a),chrome:null!=(r=e.chrome)?r:n,enabled:null==(s=e.enabled)||s,visibleInNav:!1}}))}:{}}});function p(e){return e.Component}let m=function(){var e,t,n,r,s,a;let i=null!=(n=null!=(t=null!=(e=c.find(e=>e.enabled&&e.visibleInNav&&"side-nav"===e.chrome))?e:c.find(e=>e.enabled&&"side-nav"===e.chrome))?t:c.find(e=>"side-nav"===e.chrome))?n:c[0],l=null!=(a=null==(r=i.children)?void 0:r.find(e=>e.enabled))?a:null==(s=i.children)?void 0:s[0];if(l)return l;if(p(i))return i;let o=c.find(e=>p(e));return o||c.flatMap(e=>{var t;return null!=(t=e.children)?t:[]})[0]}().href;function f(e){return c.find(t=>t.key===e)}function g(){return c.filter(e=>e.enabled&&!0===e.visibleInBridgeSidebar&&void 0!==e.icon).map(e=>{let{key:t,label:n,href:r,icon:s,headerIcon:a}=e;return{key:t,label:n,href:r,icon:s,headerIcon:null!=a?a:s}})}function h(e){var t;return(null===(t=(0,u.getSettingsRouteByPathname)(e,function(){let e=[];for(let n of c){var t;p(n)&&e.push(n),(null==(t=n.children)?void 0:t.length)&&e.push(...n.children)}return e}()))||void 0===t?void 0:t.enabled)!==!1}function v(e){if(!e)return!1;let t=c.filter(e=>"side-nav"===e.chrome);return(0,u.isSettingsRoutePath)(e,t)}},21199,41143,e=>{"use strict";e.s(["WorkspaceShell",()=>X],21199);var t=e.i(18050),n=e.i(71645),r=e.i(18566),s=e.i(65934),a=e.i(36845),i=e.i(20090);let l={EVENT:{SESSION_META:"session.meta",SESSION_READY:"session.ready",SESSION_ERROR:"session.error",QUERY_PROGRESS:"query.progress",CONVERSATION_DELTA:"conversation.delta",RUN_LIFECYCLE:"run.lifecycle",HISTORY_REPLAY:"history.replay",TURN_TERMINAL:"turn.terminal",PERMISSION_REQUEST:"permission.request"}};e.s(["SCHEDULE_TOOL_NAME",()=>o,"buildScheduledTaskIndex",()=>m,"parseScheduleToolResult",()=>p,"partitionScheduledSegments",()=>f,"retainScheduledTriggerFlag",()=>d,"withScheduledTriggerMeta",()=>u],41143);let o="ScheduleTool";function u(e,t,n){return e&&"object"==typeof e&&(t||n)?{...e,...t?{__scheduledTrigger:!0}:{},...n?{__turnId:n}:{}}:e}function d(e,t){if(!e||"object"!=typeof e)return t;let n=e.data,r=!!n&&"object"==typeof n&&!0===n.scheduledTrigger,s=!0===e.scheduledTrigger||!0===e.__scheduledTrigger,a="string"==typeof e.turnId?e.turnId:"",i="string"==typeof e.__turnId?e.__turnId:"";return r||s||a||i?{...t,...r||s?{__scheduledTrigger:!0}:{},...a||i?{__turnId:a||i}:{}}:t}function c(e){return!!e&&"object"==typeof e&&!0===e.__scheduledTrigger}function p(e,t){if("string"==typeof e)try{let t=JSON.parse(e);if(t&&"object"==typeof t)return t}catch(e){}if(e&&"object"==typeof e)return e;if(t&&"object"==typeof t){let e=t.toolUseResult;if(e&&"object"==typeof e)return e}return null}function m(e){let t=new Map,n=new Map;for(let c of e){let e=v(c);for(let g of function(e){if(!e||"object"!=typeof e)return[];let t=e.message,n=null==t?void 0:t.content;return Array.isArray(n)?n.filter(e=>!!e&&"object"==typeof e):[]}(c)){var r,s,a,i,l,u,d,m,f,b;if("tool_use"===g.type&&g.name===o){let t="string"==typeof g.id?g.id:"";if(!t)continue;let r=(b=g.input)&&"object"==typeof b?b:{},s=function(e){if(null==e||""===e)return;let t=Number(e);return Number.isFinite(t)?t:void 0}(r.delayMinutes);n.set(t,{toolUseId:t,id:r.id,prompt:null!=(a=r.prompt)?a:"",delayMinutes:s,createdAt:e,status:"cancel"===r.action?"cancelled":"scheduled"});continue}if("tool_result"!==g.type||"string"!=typeof g.tool_use_id)continue;let h=n.get(g.tool_use_id);if(!h)continue;let v=p(g.content,c);if(!v){n.delete(g.tool_use_id);continue}let x=v.id||h.id||"pending-".concat(g.tool_use_id),y={id:x,prompt:null!=(i=h.prompt)?i:"",fireAt:null!=(u=null!=(l=null==(r=v.scheduleClock)?void 0:r.utcIso)?l:null==(s=v.scheduleClock)?void 0:s.localDateTime)?u:"",createdAt:null!=(d=h.createdAt)?d:"",delayMinutes:null!=(m=v.delayMinutes)?m:h.delayMinutes,cron:v.cron,recurring:v.recurring,status:v.error?"failed":null!=(f=h.status)?f:"scheduled"};t.set(x,y),n.delete(g.tool_use_id)}}for(let n of e){if(!c(n)||"user"!==g(n))continue;let e=h(n);if(e){for(let r of t.values())if(r.prompt===e&&"scheduled"===r.status){r.status="fired",r.firedTurnId=function(e){if(!e||"object"!=typeof e)return"";let t=e.__turnId;return"string"==typeof t?t:""}(n);break}}}return t}function f(e,t){let n=new Map,r=new Set,s=0;for(;s<e.length;){var a;if(!c(e[s])){s+=1;continue}let i=s,l=[];for(;s<e.length&&c(e[s]);)l.push(e[s]),s+=1;let o=s-1,u=null!=(a=l.filter(e=>"user"===g(e)).map(e=>h(e)).find(e=>e.trim().length>0))?a:"",d=v(l[0]),p=l.filter(e=>"user"!==g(e)),m=function(e,t){if(e&&t.trim()){for(let n of e.values())if(n.prompt===t)return n.id}}(t,u);n.set(i,{kind:"scheduledTurn",startIndex:i,endIndex:o,dispatchedPrompt:u,triggeredAt:d,taskId:m,assistantMessages:p});for(let e=i+1;e<=o;e+=1)r.add(e)}return{scheduledStarts:n,consumed:r}}function g(e){if(!e||"object"!=typeof e)return"";let t=e.type;if("string"==typeof t)return t;let n=e.message;return"string"==typeof(null==n?void 0:n.role)?n.role:""}function h(e){if(!e||"object"!=typeof e)return"";let t=e.message,n=null==t?void 0:t.content;return"string"==typeof n?n:Array.isArray(n)?n.map(e=>e&&"object"==typeof e?"text"===e.type&&"string"==typeof e.text?e.text:"markdown"===e.type&&"string"==typeof e.content?e.content:"":"").filter(Boolean).join("\n").trim():""}function v(e){var t;if(!e||"object"!=typeof e)return"";let n=e.message,r=n&&"object"==typeof n?n.timestamp:void 0,s=null!=(t=null!=r?r:e.timestamp)?t:e.ts;return"string"==typeof s?s:""}var b=e.i(55227);function x(e){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.floor(t)):0}function y(e){let t=e&&"object"==typeof e?Number(e.protocolVersion):NaN;return"object"==typeof e&&null!==e&&"protocolVersion"in e&&Number.isFinite(t)&&3===t&&"string"==typeof e.type}let S=new Map;function j(e){if(!e||"object"!=typeof e)return"";if(("string"==typeof e.type?e.type:"unknown")===l.EVENT.TURN_TERMINAL){let t="string"==typeof e.resultText?e.resultText:"",n="string"==typeof e.reason?e.reason:"";return"resolved"==("resolved"===e.status?"resolved":"failed")?t:"turn.terminal failed: ".concat(n||"unknown")}try{return"```json\n".concat(JSON.stringify(e,null,2).slice(0,8e3),"\n```")}catch(t){return String(e)}}var N=e.i(87243),A=e.i(50711);async function k(e,t,n){var r;let a=String(e||"").trim();if(!a)return!1;let i=s.useAppStore.getState();if(a===(i.agentId.trim()||"qihoo"))return!1;let l=(null==n||null==(r=n.displayName)?void 0:r.trim())||a;i.startDraftSession(),i.resetAgentConfig(),i.setAgentId(a),i.setCurrentWorkspaceAgent({id:a,displayName:l});try{await t.loadSessions()}catch(e){}t.loadAgentConfig();let o=s.useAppStore.getState().sessionId.trim();return t.preferReconnect?t.reconnect():t.switchSession(o,a),!0}var w=e.i(92413),I=e.i(55146),C=e.i(72064),E=e.i(46798);let T=(0,e.i(75254).default)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var R=e.i(85570),_=e.i(97249),M=e.i(75157),P=e.i(8279),L=e.i(52727),O=e.i(18253);function z(e){let{collapsed:r,onGoToSettings:a}=e,{push:i}=(0,O.useGuardedAppNavigation)(),l=(0,s.useAppStore)(e=>e.currentWorkspaceAgent),o=(0,s.useAppStore)(e=>e.agentId),u=(0,s.useAppStore)(e=>e.wsUrl),d=(0,s.useAppStore)(e=>e.apiBase),c=(0,s.useAppStore)(e=>e.setCurrentWorkspaceAgent),{switchWorkspaceAgent:p}=(0,R.useWorkspaceRuntime)(),m=o.trim()||"qihoo",f=(null==l?void 0:l.id)===m&&l.displayName.trim()||m,g=(0,P.initialsFromLabel)(f),[h,v]=(0,n.useState)(!1),[b,x]=(0,n.useState)(!1),[y,S]=(0,n.useState)([]),[j,N]=(0,n.useState)(!1),[A,k]=(0,n.useState)(null),w=(0,n.useRef)(null),I=(0,n.useRef)(null),E=(0,n.useCallback)(()=>{w.current&&(clearTimeout(w.current),w.current=null)},[]),z=(0,n.useCallback)(()=>{I.current&&(clearTimeout(I.current),I.current=null)},[]),D=(0,n.useCallback)(()=>{E(),v(!0)},[E]),W=(0,n.useCallback)(()=>{E(),w.current=setTimeout(()=>{v(!1),x(!1),w.current=null},120)},[E]),F=(0,n.useCallback)(()=>{z(),x(!0)},[z]),B=(0,n.useCallback)(()=>{z(),I.current=setTimeout(()=>{x(!1),I.current=null},120)},[z]),U=(0,n.useCallback)(()=>{v(!1),x(!1),null==a||a()},[a]),V=(0,n.useCallback)(async e=>{let t=e.id.trim();v(!1),x(!1),t&&t!==m&&await p(t,e.displayName)&&i((0,_.buildAppNavHref)("/",{ensureAgent:!0,agent:t,preserveSessionId:!1}))},[m,i,p]);return(0,n.useEffect)(()=>{if(!b)return;let e=!1;return N(!0),k(null),S([]),(0,L.listAgents)(u,d).then(t=>{e||S(t)}).catch(t=>{e||k(String(t))}).finally(()=>{e||N(!1)}),()=>{e=!0}},[b,u,d]),(0,n.useEffect)(()=>{if(!y.length)return;let e=y.find(e=>e.id===m);e&&((null==l?void 0:l.id)!==e.id||l.displayName!==e.displayName)&&c(e)},[y,m,l,c]),(0,n.useEffect)(()=>()=>{w.current&&clearTimeout(w.current),I.current&&clearTimeout(I.current)},[]),(0,t.jsx)("div",{className:(0,M.cn)("shrink-0 border-t border-solid border-[var(--ds-border)] transition",r?"flex w-full justify-center p-[1rem_.75rem]":"flex items-center gap-2 p-[1rem_.75rem]"),onClick:r?e=>e.stopPropagation():void 0,children:(0,t.jsxs)("div",{className:(0,M.cn)("relative min-w-0",!r&&"flex-1"),onMouseEnter:D,onMouseLeave:W,children:[(0,t.jsxs)("div",{className:(0,M.cn)("flex min-w-0 cursor-default cursor-pointer items-center gap-2 rounded-lg px-0.5 py-0.5",r&&"w-full justify-center"),children:[(0,t.jsx)("span",{className:"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full text-xs font-semibold text-white",style:{background:"var(--avatar-bg)"},children:g}),r?null:(0,t.jsx)("span",{className:"min-w-0 truncate text-base text-[var(--ds-text)]",children:f})]}),h?(0,t.jsx)("div",{className:"absolute bottom-full left-0 z-50 w-[288px] max-w-[min(100vw-24px,288px)] cursor-pointer pb-2 shadow-[var(--shadow-float)]",onMouseEnter:D,onMouseLeave:W,children:(0,t.jsxs)("div",{className:(0,M.cn)("rounded-[var(--ds-radius-sm)] border border-solid border-[var(--ds-border)] bg-[var(--ds-bg)]","shadow-[var(--shadow-float)]"),children:[(0,t.jsx)("div",{className:"px-1.5 pt-1.5",children:(0,t.jsxs)("div",{className:"relative w-full",onMouseLeave:()=>{b&&B()},children:[(0,t.jsxs)("div",{className:(0,M.cn)("flex cursor-pointer items-center gap-2 rounded-xl px-2 py-2 transition-colors",b?"bg-[var(--ds-item-hover)]":"hover:bg-[var(--ds-item-hover)]"),onMouseEnter:()=>{D(),F()},children:[(0,t.jsx)("span",{className:"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full text-sm font-semibold text-white",style:{background:"var(--avatar-bg)"},children:g}),(0,t.jsx)("div",{className:"min-w-0 flex-1 leading-tight",children:(0,t.jsx)("div",{className:"truncate text-base font-medium text-[var(--ds-text)]",children:f})}),(0,t.jsx)(C.default,{name:"ChevronRight",size:16,className:"shrink-0 text-[var(--ds-muted)]"})]}),b?(0,t.jsx)("div",{className:"absolute bottom-0 left-full z-[60] -ml-2 pl-2 shadow-[var(--shadow-float)]",onMouseEnter:()=>{D(),F()},onMouseLeave:B,children:(0,t.jsx)("div",{className:(0,M.cn)("flex max-h-[300px] w-[260px] max-w-[min(100vw-24px,260px)] flex-col overflow-hidden rounded-[var(--ds-radius-sm)] border border-solid border-[var(--ds-border)] bg-[var(--ds-bg)]","shadow-[var(--shadow-float)]"),children:(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-1.5",role:"listbox","aria-label":"切换 Agent",children:j?(0,t.jsx)("div",{className:"px-2 py-3 text-sm text-[var(--ds-muted)]",children:"加载中…"}):A?(0,t.jsxs)("div",{className:"px-2 py-3 text-sm text-red-600",children:["加载失败: ",A]}):0===y.length?(0,t.jsx)("div",{className:"px-2 py-3 text-sm text-[var(--ds-muted)]",children:"暂无 agent"}):y.map(e=>{let n=e.id===m,r=(0,P.initialsFromLabel)(e.displayName);return(0,t.jsxs)("button",{type:"button",role:"option",className:"flex w-full cursor-pointer items-center gap-2 rounded-xl border-0 bg-transparent px-2 py-2 text-left text-base hover:bg-[var(--ds-item-hover)] focus-visible:outline-none","aria-selected":n,onClick:()=>V(e),children:[(0,t.jsx)("span",{className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full text-xs font-semibold text-white",style:{background:"var(--avatar-bg)"},children:r}),(0,t.jsxs)("span",{className:"min-w-0 flex-1 leading-tight",children:[(0,t.jsx)("span",{className:"block truncate text-[var(--ds-text)]",children:e.displayName}),e.displayName!==e.id?(0,t.jsx)("span",{className:"block truncate text-xs text-[var(--ds-muted)]",children:e.id}):null]}),n?(0,t.jsx)("span",{className:"shrink-0","aria-label":"当前 Agent",children:(0,t.jsx)(C.default,{name:"Check",size:16,className:"text-[var(--ds-accent)]"})}):null]},e.id)})})})}):null]})}),(0,t.jsx)("div",{className:"mx-2 h-px bg-[var(--ds-border)]"}),(0,t.jsx)("div",{className:"p-1.5",children:(0,t.jsxs)("button",{type:"button",className:(0,M.cn)("flex h-9 w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-sm)] border-0 bg-transparent px-2.5 text-left text-base text-[var(--ds-text)]","hover:bg-[var(--ds-item-hover)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ds-accent)]"),onClick:U,children:[(0,t.jsx)(T,{size:16,className:"shrink-0 text-[var(--icon-color)]"}),"设置"]})})]})}):null]})})}var D=e.i(82787);let W="bridge-sidebar-collapsed";function F(e){let{onNewSession:a,onSelectSession:i,deleteSessionById:l}=e,{push:o,router:u}=(0,O.useGuardedAppNavigation)(),d=(0,r.usePathname)(),c=(0,s.useAppStore)(e=>e.lastSessions),p=(0,s.useAppStore)(e=>e.sessionId),m=(0,s.useAppStore)(e=>e.brand),f=(0,s.useAppStore)(e=>e.agentId),[g,h]=(0,n.useState)(!1),v=(0,n.useRef)(!1),[b,x]=(0,n.useState)(null),[y,S]=(0,n.useState)(!0),j=(0,n.useMemo)(()=>(0,D.getBridgeSidebarManageRoutes)(),[]),N=(0,n.useCallback)((e,t)=>(0,_.buildAppNavHref)(e,{ensureAgent:null==t?void 0:t.ensureAgent,agent:f,preserveSessionId:"/"===e&&!(null==t?void 0:t.clearSessionId),sessionId:null==t?void 0:t.sessionId}),[f]),A=(0,n.useCallback)(e=>{let t=(0,_.normalizeAppPathname)(d),n=(0,_.normalizeAppPathname)(e);return t===n||t.startsWith("".concat(n,"/"))},[d]),k=(0,n.useCallback)(e=>{o(N(e,{ensureAgent:!0}))},[o,N]);(0,n.useEffect)(()=>{let e,t,n=[...["env","add-account"].flatMap(e=>{var t;let n=null==(t=(0,D.getManageRoute)(e))?void 0:t.href;return n?[N(n,{ensureAgent:!0})]:[]}),...j.map(e=>N(e.href,{ensureAgent:!0}))],r=()=>{for(let e of n)try{u.prefetch(e)}catch(e){}};return"requestIdleCallback"in window?e=window.requestIdleCallback(r,{timeout:2500}):t=setTimeout(r,200),()=>{void 0!==e&&window.cancelIdleCallback(e),void 0!==t&&clearTimeout(t)}},[u,N,j]),(0,n.useEffect)(()=>{try{let e=window.localStorage.getItem(W);"true"===e&&h(!0)}catch(e){}finally{v.current=!0}},[]),(0,n.useEffect)(()=>{if(v.current)try{window.localStorage.setItem(W,String(g))}catch(e){}},[g]),(0,n.useEffect)(()=>{if(!b)return;let e=e=>{let t=e.target;!(!(t instanceof Element)||t.closest("[data-session-menu-wrap]"))&&(t.closest('[data-slot="dropdown-menu-content"]')||x(null))};return document.addEventListener("pointerdown",e,!0),()=>document.removeEventListener("pointerdown",e,!0)},[b]);let T=(0,n.useCallback)(()=>{o(N(D.MANAGE_DEFAULT_HREF,{ensureAgent:!0}))},[o,N]);return(0,t.jsx)("aside",{className:"sidebar ".concat(g?"is-collapsed h-dvh max-h-dvh min-h-0 self-start":""),"data-region":"sidebar-panels",onClick:()=>{g&&h(!1)},children:g?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col items-center gap-[10px] overflow-y-auto overscroll-contain pt-3",children:(0,t.jsxs)(E.TooltipProvider,{side:"right",children:[(0,t.jsx)("div",{className:"group relative flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center",onClick:e=>e.stopPropagation(),children:(0,t.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center transition-opacity group-hover:pointer-events-auto group-hover:opacity-100",children:(0,t.jsxs)(E.Tooltip,{children:[(0,t.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",className:"sidebar-collapsed-icon-btn",title:"展开侧边栏","aria-label":"展开侧边栏",onClick:e=>{e.preventDefault(),e.stopPropagation(),h(!1)},children:(0,t.jsx)(C.default,{name:"Layout",size:17,color:"#8f8f8f"})})}),(0,t.jsx)(E.TooltipContent,{children:(0,t.jsx)("p",{children:"展开侧边栏"})})]})})}),(0,t.jsxs)(E.Tooltip,{children:[(0,t.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",className:"sidebar-collapsed-icon-btn",title:"新聊天","aria-label":"新聊天",onClick:e=>{e.preventDefault(),e.stopPropagation(),a(),o(N("/",{clearSessionId:!0}))},children:(0,t.jsx)(C.default,{name:"Add",size:16,className:"text-zinc-700"})})}),(0,t.jsx)(E.TooltipContent,{children:(0,t.jsx)("p",{children:"新聊天"})})]}),j.map(e=>{let n=A(e.href);return(0,t.jsxs)(E.Tooltip,{children:[(0,t.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",className:"sidebar-collapsed-icon-btn ".concat(n?"bg-[var(--ds-item-active)] text-[var(--ds-accent)]":""),title:e.label,"aria-label":e.label,"aria-current":n?"page":void 0,onClick:t=>{t.preventDefault(),t.stopPropagation(),k(e.href)},children:(0,t.jsx)(C.default,{name:e.icon,size:16,className:n?"text-[var(--ds-accent)]":"text-zinc-700",strokeWidth:1.2})})}),(0,t.jsx)(E.TooltipContent,{children:(0,t.jsx)("p",{children:e.label})})]},e.key)})]})}),(0,t.jsx)("div",{className:"w-full shrink-0",onClick:e=>e.stopPropagation(),children:(0,t.jsx)(z,{collapsed:!0,onGoToSettings:T})})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"sidebar-brand",children:(0,t.jsxs)("div",{className:"sidebar-brand-title-row flex items-center justify-between",children:[(0,t.jsx)("div",{className:"logo flex min-w-0 items-center gap-2",children:(0,t.jsx)("span",{className:"truncate text-zinc-900",children:m})}),(0,t.jsx)(E.TooltipProvider,{side:"right",children:(0,t.jsxs)(E.Tooltip,{children:[(0,t.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("button",{type:"button",className:"sidebar-icon-btn",title:"收起侧边栏","aria-label":"收起侧边栏",onClick:e=>{e.preventDefault(),e.stopPropagation(),h(!0)},children:(0,t.jsx)(C.default,{name:"Layout",size:17,color:"#8f8f8f"})})}),(0,t.jsx)(E.TooltipContent,{children:(0,t.jsx)("p",{children:"收起侧边栏"})})]})})]})}),(0,t.jsx)("div",{className:"new-chat",children:(0,t.jsxs)("div",{className:"mb-4 ml-2 mr-2 mt-2 flex cursor-pointer items-center gap-2.5 rounded-2xl px-2 py-2 text-base text-zinc-700 transition-colors hover:bg-white/70",title:"开启新对话","aria-label":"开启新对话",onClick:e=>{e.preventDefault(),a(),o(N("/",{clearSessionId:!0}))},children:[(0,t.jsx)("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-[var(--ds-item-active)] text-[var(--ds-accent)]","aria-hidden":!0,children:(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:(0,t.jsx)("path",{d:"M12 5v14M5 12h14"})})}),(0,t.jsx)("span",{className:"min-w-0 font-medium",children:"新会话"})]})}),(0,t.jsx)("div",{className:"sidebar-drawers",children:j.map(e=>{let n=A(e.href);return(0,t.jsxs)("div",{className:"m-[.35rem_.35rem_0] flex cursor-pointer items-center rounded-[var(--ds-radius-sm)] p-[.45rem_.75rem] ".concat(n?"bg-[var(--ds-item-active)] text-[var(--ds-accent)]":"hover:bg-[var(--ds-item-active)] hover:text-zinc-900"),role:"button",tabIndex:0,"aria-current":n?"page":void 0,onClick:t=>{t.preventDefault(),t.stopPropagation(),k(e.href)},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&k(e.href)},children:[(0,t.jsx)(C.default,{name:e.icon,size:16,className:"mr-3 text-zinc-700",strokeWidth:1.2}),(0,t.jsx)("span",{className:"text-base text-zinc-900",children:e.label})]},e.key)})}),(0,t.jsx)("div",{className:"sidebar-drawers",children:(0,t.jsxs)("div",{className:"sidebar-drawer m-[.35rem_.35rem_0] mt-4",children:[(0,t.jsxs)("button",{type:"button",className:"flex w-full cursor-pointer items-center !border-none !bg-transparent p-[.45rem_.75rem] text-left text-[12px] font-[600] text-zinc-400 hover:text-zinc-600 focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ds-accent)] focus-visible:ring-offset-2","aria-expanded":y,"aria-controls":"sessionList","aria-label":y?"收起历史会话列表":"展开历史会话列表",onClick:()=>{S(e=>!e)},children:["历史会话",y?(0,t.jsx)(C.default,{name:"ChevronDown",size:12,strokeWidth:1,className:"ml-1 shrink-0 text-[var(--ds-muted)]"}):(0,t.jsx)(C.default,{name:"ChevronRight",size:12,strokeWidth:1,className:"ml-1 shrink-0 text-[var(--ds-muted)]"})]}),y?(0,t.jsx)("div",{className:"sidebar-drawer-body sidebar-drawer-body--sessions",children:(0,t.jsx)("div",{id:"sessionList",children:c.length?(0,w.groupSessionsByMonth)(c).map(e=>(0,t.jsx)("div",{children:e.items.map(e=>{let n=e.sessionId===p.trim();return(0,t.jsxs)("div",{className:"sidebar-drawer-item session-item ".concat(n?"active":""),children:[(0,t.jsx)("button",{type:"button",className:"session-item-main",onClick:t=>{t.stopPropagation(),i(e.sessionId),o(N("/",{sessionId:e.sessionId}))},children:(0,t.jsx)("div",{className:"session-item-title",children:(0,w.sessionTitle)(e)})}),(0,t.jsx)("div",{className:"session-menu-wrap","data-session-menu-wrap":"",onClick:t=>{t.stopPropagation(),t.target===t.currentTarget&&x(t=>t===e.sessionId?null:e.sessionId)},children:(0,t.jsxs)(I.DropdownMenu,{open:b===e.sessionId,onOpenChange:e=>{e||x(null)},children:[(0,t.jsx)(I.DropdownMenuTrigger,{type:"button",className:"session-menu-btn","aria-label":"更多",onClick:t=>{t.stopPropagation(),x(t=>t===e.sessionId?null:e.sessionId)},children:"···"}),(0,t.jsxs)(I.DropdownMenuContent,{align:"end",side:"bottom",sideOffset:6,className:"w-[172px] min-w-[172px] rounded-[var(--ds-radius-sm)] border border-[var(--ds-border)] bg-[var(--ds-bg)] p-1.5",children:[(0,t.jsxs)(I.DropdownMenuItem,{className:"h-9 rounded-xl px-2.5 text-base text-[var(--ds-text)] hover:bg-[var(--ds-item-active)] focus:bg-[var(--ds-item-hover)]",onClick:()=>{navigator.clipboard.writeText(e.sessionId)},children:[(0,t.jsx)(C.default,{name:"Clipboard",size:16,className:"text-[var(--ds-muted)]"}),"复制完整 ID"]}),(0,t.jsx)(I.DropdownMenuSeparator,{className:"mx-1 my-1 bg-[var(--ds-border)]"}),(0,t.jsxs)(I.DropdownMenuItem,{variant:"destructive",className:"h-9 rounded-xl px-2.5 text-base hover:bg-[#fff1f1] focus:bg-[#fff1f1]",onClick:()=>{(async()=>{let t=e.sessionId===p.trim(),n=await l(e.sessionId);t&&n&&o(N("/",{clearSessionId:!0}))})()},children:[(0,t.jsx)(C.default,{name:"Trash2",size:16}),"删除会话"]})]})]})})]},e.sessionId)})},e.key)):(0,t.jsx)("p",{className:"sidebar-drawer-empty",children:"(暂无会话)"})})}):null]})}),(0,t.jsx)(z,{collapsed:!1,onGoToSettings:T})]})})}var B=e.i(19455),U=e.i(61196);function V(){let e=(0,U.useStageThreadFlyoutStore)(e=>e.open),r=(0,U.useStageThreadFlyoutStore)(e=>e.title),s=(0,U.useStageThreadFlyoutStore)(e=>e.content),a=(0,U.useStageThreadFlyoutStore)(e=>e.width),i=(0,U.useStageThreadFlyoutStore)(e=>e.hideHeader),l=(0,U.useStageThreadFlyoutStore)(e=>e.bodyClassName),o=(0,U.useStageThreadFlyoutStore)(e=>e.requestCloseFlyout),[u,d]=(0,n.useState)(a),[c,p]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!e)return;let t=e=>{"Escape"===e.key&&o()};return window.addEventListener("keydown",t),()=>{window.removeEventListener("keydown",t)}},[e,o]),(0,n.useEffect)(()=>{e&&d((0,U.clampStageThreadFlyoutWidth)(a))},[e,a]);let m=(0,n.useCallback)(e=>{e.preventDefault();let t=e.currentTarget;t.setPointerCapture(e.pointerId),p(!0);let n=e.clientX,r=e=>{let t=n-e.clientX;d((0,U.clampStageThreadFlyoutWidth)(u+t))},s=()=>{p(!1),t.removeEventListener("pointermove",r),t.removeEventListener("pointerup",s),t.removeEventListener("pointercancel",s),document.body.style.cursor="",document.body.style.userSelect=""};document.body.style.cursor="col-resize",document.body.style.userSelect="none",t.addEventListener("pointermove",r),t.addEventListener("pointerup",s),t.addEventListener("pointercancel",s)},[u]);return(0,t.jsx)("aside",{className:(0,M.cn)("stage-thread-flyout",e&&"is-open",c&&"is-resizing"),"data-region":"stage-thread-flyout","aria-hidden":!e,style:{"--stage-flyout-width":"".concat(u,"px")},children:e?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"stage-thread-flyout-resize",role:"separator","aria-orientation":"vertical","aria-valuenow":u,"aria-valuemin":U.STAGE_THREAD_FLYOUT_MIN_WIDTH,"aria-valuemax":U.STAGE_THREAD_FLYOUT_MAX_WIDTH,"aria-label":"调整面板宽度",onPointerDown:m,children:(0,t.jsx)("span",{className:"stage-thread-flyout-resize-bar","aria-hidden":!0})}),(0,t.jsxs)("div",{className:"stage-thread-flyout-inner",children:[i?null:(0,t.jsxs)("header",{className:"stage-thread-flyout-header",children:[r?(0,t.jsx)("h2",{className:"stage-thread-flyout-title",children:r}):(0,t.jsx)("span",{className:"stage-thread-flyout-title","aria-hidden":!0}),(0,t.jsx)(B.Button,{type:"button",variant:"ghost",size:"icon-sm",className:"stage-thread-flyout-close","aria-label":"关闭",onClick:()=>void o(),children:(0,t.jsx)(C.default,{name:"X",size:16})})]}),(0,t.jsx)("div",{className:(0,M.cn)("stage-thread-flyout-body",l),children:s})]})]}):null})}var G=e.i(94606);function q(){let e=(0,r.usePathname)(),t=(0,r.useRouter)(),s=(0,n.useRef)(null),a=(0,n.useRef)(!1);return(0,n.useEffect)(()=>{if(a.current)return;let n=s.current;if(s.current=e,!n||n===e)return;let{open:r,guardRoute:i,isDirty:l,closeFlyout:o}=U.useStageThreadFlyoutStore.getState();if(r&&(0,G.isLeavingFlyoutGuardRoute)(i,n,e)){if(!(0,G.shouldConfirmFlyoutRouteChange)(i,n,e,l))return void o();a.current=!0,t.replace(n),(0,G.confirmDiscardFlyoutChanges)().then(r=>{a.current=!1,r?(o(),t.push(e),s.current=e):s.current=n})}},[e,t]),null}function H(e){let{children:n,mainClassName:r,mainRegion:s,sidebar:a}=e;return(0,t.jsxs)("div",{className:"app","data-ui-layer":"presentation","data-topology":"local-first",children:[(0,t.jsx)(F,{onNewSession:a.onNewSession,onSelectSession:a.onSelectSession,onSaveAgentConfig:a.onSaveAgentConfig,deleteSessionById:a.deleteSessionById}),(0,t.jsx)("main",{className:(0,M.cn)("main overflow-x-auto",r),"data-region":s,children:(0,t.jsx)("div",{className:"main-content",children:n})}),(0,t.jsx)(V,{}),(0,t.jsx)(q,{})]})}function Y(){let e=(0,s.useAppStore)(e=>e.wsUrl),t=(0,s.useAppStore)(e=>e.apiBase),r=(0,s.useAppStore)(e=>e.agentId),i=(0,s.useAppStore)(e=>e.setWsUrl),l=(0,s.useAppStore)(e=>e.setAgentId),{loadSessions:o,loadAgentConfig:u}=(0,N.useSession)();return(0,n.useLayoutEffect)(()=>{s.useAppStore.getState().wsUrl.trim()||i((0,a.defaultWsUrl)())},[i]),(0,n.useLayoutEffect)(()=>{(0,_.syncRuntimeAgentWithUrl)(s.useAppStore.getState().agentId,l)},[r,l]),(0,n.useEffect)(()=>{o(),u()},[r,e,t,o,u]),null}function Q(){let e=(0,r.useSearchParams)(),t=(0,s.useAppStore)(e=>e.setAgentId);return(0,n.useLayoutEffect)(()=>{var n;let r=null==(n=e.get("agent"))?void 0:n.trim();r&&r!==s.useAppStore.getState().agentId.trim()&&t(r)},[e,t]),null}function J(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(Y,{}),(0,t.jsx)(n.Suspense,{fallback:null,children:(0,t.jsx)(Q,{})})]})}function X(e){let{children:o}=e,d=(0,r.usePathname)(),c=function(e){if(!e)return!1;let t=(0,_.normalizeAppPathname)(e);return"/manage"===t||t.startsWith("/manage/")}(d),p=(0,D.isManageSideNavPath)(d),m=(0,s.useAppStore)(e=>e.wsUrl),f=(0,s.useAppStore)(e=>e.apiBase),g=(0,s.useAppStore)(e=>e.agentId),h=(0,s.useAppStore)(e=>e.sessionId),v=(0,s.useAppStore)(e=>e.sessionViewMode),w=(0,s.useAppStore)(e=>e.setSessionId),I=(0,s.useAppStore)(e=>e.setSessionViewMode),C=(0,s.useAppStore)(e=>e.setPendingHistoryRefresh),{loadSessions:E,loadAgentConfig:T,loadSessionOverrides:M,deleteSessionById:P}=(0,N.useSession)(),L=(0,A.usePersistAgentConfig)(),{reconnect:O,switchSession:z,sendPrompt:W,sendAbort:F,sendReloadAgentConfig:B,sendPermissionResponse:U}=function(e){let t=(0,n.useRef)(null),r=(0,n.useRef)(""),o=(0,n.useRef)(0),d=(0,n.useRef)(0),c=(0,n.useRef)(0),p=(0,n.useRef)(new Map),m=(0,n.useRef)(null==e?void 0:e.onSession);m.current=null==e?void 0:e.onSession;let f=(0,s.useAppStore)(e=>e.wsUrl),g=(0,n.useCallback)(()=>(o.current+=1,o.current),[]),h=(0,n.useCallback)(()=>{if(t.current){let e=t.current;t.current.close(),(0,i.clearActiveWebSocket)(e),t.current=null}let e=s.useAppStore.getState();e.setWsConnected(!1),e.setBridgeReady(!1),e.resetApiErrorState(),e.setAssistantGenerating(!1),p.current.clear()},[]),v=(0,n.useCallback)((e,t)=>{var n,a,i,o,c,f,h,b;let x=(null==t?void 0:t.httpReplay)===!0,y=s.useAppStore.getState(),N=(e.runId||"main").trim()||"main",A="string"==typeof e.agent_name?e.agent_name.trim():"";A&&p.current.set(N,A);let k=function(t,n){let r=!(arguments.length>2)||void 0===arguments[2]||arguments[2],s=r&&e.data&&"object"==typeof e.data&&"string"==typeof e.data.sourceAgent?e.data.sourceAgent.trim():"",a=p.current.get(N)||"";return t||s||a||n},w=String(null!=(n=e.sessionId)?n:"").trim()||r.current.trim()||y.sessionId.trim()||"unknown",I="".concat(d.current,":").concat(w);if(e.eventId&&function(e,t){var n;let r=t||"default",s=null!=(n=S.get(r))?n:new Set;if(s.has(e))return!0;if(s.add(e),s.size>4096)for(let e of Array.from(s).slice(0,2048))s.delete(e);return S.set(r,s),!1}(e.eventId,I))return void y.appendLog("dedup","eventId=".concat(e.eventId," 已忽略"));switch(!x&&y.appendLog("←",e),e.type){case l.EVENT.SESSION_META:{let t=e.data,n=String(null!=(i=null!=(a=t.sessionId)?a:e.sessionId)?i:""),s=y.sessionId.trim();if(r.current){if(n&&n!==s)return void y.appendLog("switchSession","忽略过期 session.meta incoming=".concat(n," current=").concat(s));r.current=""}t.agent&&y.setBrandAgent(String(t.agent)),n&&(y.setSessionId(n),null==(o=m.current)||o.call(m,n));break}case l.EVENT.SESSION_READY:{y.resetApiErrorState();let t=e.data;r.current&&y.sessionId.trim()===r.current&&(r.current=""),y.markReady(),t.agent&&y.setBrandAgent(String(t.agent));break}case l.EVENT.SESSION_ERROR:{let t=e.data,n=null!=(c=t.message)?c:JSON.stringify(t);y.setAssistantGenerating(!1),y.setStatus("错误: ".concat(String(n)),"err");break}case l.EVENT.QUERY_PROGRESS:{y.resetApiErrorState();let t=String(null!=(f=e.data.phase)?f:"");"idle"===t?(y.setQueryPhase(""),y.bridgeReady&&y.setStatus("已就绪","ready")):(y.setQueryPhase(t),y.setStatus("查询阶段: ".concat(t,"…"),""));break}case l.EVENT.CONVERSATION_DELTA:{y.resetApiErrorState();let t=e.data;if(!t.action)break;if("message_added"===t.action||"message_updated"===t.action||"message_removed"===t.action||"tool_call"===t.action||"tool_result"===t.action||"message_completed"===t.action){if(!x&&r.current){let t=String(null!=(h=e.sessionId)?h:"").trim(),n=r.current.trim(),s=y.sessionId.trim();if(t&&t!==n&&t!==s){y.appendLog("switchSession","忽略切换过程中的过期 conversation.delta incoming=".concat(t," pending=").concat(n," current=").concat(s));break}}let n={eventId:e.eventId,action:t.action,index:t.index,message:u(t.message,!0===t.scheduledTrigger||!0===e.scheduledTrigger,"string"==typeof e.turnId?e.turnId:"")},s=k("",N),a=g();y.applyRunMessageDelta({...n,runId:N,sourceAgent:s,ts:"string"==typeof e.ts?e.ts:"",arrivalSeq:a})}"message_completed"===t.action&&y.setStreamBuffer("");break}case l.EVENT.RUN_LIFECYCLE:{let t=e.data,n="string"==typeof t.event&&t.event||("string"==typeof t.state?t.state:"");if("replay.start"===n||"replay.end"===n)break;y.setRunLifecycleData({event:n,message:t.message});let r=k("string"==typeof t.sourceAgent?t.sourceAgent.trim():"","system",!1),s=j(t);s.trim()&&y.appendSourceAgentMessage({key:"string"==typeof e.eventId?e.eventId:"lc-".concat(Date.now()),source:r,runId:N,correlationId:"",status:"resolved",text:s,ts:"string"==typeof e.ts?e.ts:"",arrivalSeq:g()}),"configReloaded"===n&&y.setStatus("已重新加载 agent.md / agent.json",y.bridgeReady?"ready":"");break}case l.EVENT.HISTORY_REPLAY:{let n=e.data;if(Array.isArray(n.events))for(let e=0;e<n.events.length;e+=1){let r=n.events[e];r&&"object"==typeof r&&r.type!==l.EVENT.HISTORY_REPLAY&&v(r,t)}break}case l.EVENT.TURN_TERMINAL:{y.resetApiErrorState(),y.setStreamBuffer(""),y.setAssistantGenerating(!1),y.setQueryPhase("");let t=e.data;y.setTurnTerminalData({status:t.status,resultText:t.resultText,reason:t.reason});let n=s.useAppStore.getState();"resolved"===t.status?n.setStatus("本轮结束(可继续发送)",n.bridgeReady?"ready":""):"failed"===t.status?n.setStatus("本轮失败: ".concat(null!=(b=t.reason)?b:"未知错误"),"err"):"cancelled"===t.status?n.setStatus("本轮已取消",n.bridgeReady?"ready":""):n.setStatus("本轮结束(可继续发送)",n.bridgeReady?"ready":"");let r=k("string"==typeof t.sourceAgent?t.sourceAgent.trim():"","main"===N?"main":"unknown-agent",!1),a="string"==typeof t.correlationId?t.correlationId:"",i=j({type:l.EVENT.TURN_TERMINAL,status:t.status,reason:t.reason,resultText:t.resultText});n.appendSourceAgentMessage({key:"string"==typeof e.eventId?e.eventId:"terminal-".concat(Date.now()),source:r,runId:N,correlationId:a,status:"resolved"===t.status?"resolved":"failed",text:i,ts:"string"==typeof e.ts?e.ts:"",arrivalSeq:g()});break}case l.EVENT.PERMISSION_REQUEST:{let t=e.data,n="string"==typeof t.requestId?t.requestId.trim():"";if(!n)break;y.enqueuePermissionRequest({requestId:n,toolName:"string"==typeof t.toolName?t.toolName:"tool",description:"string"==typeof t.description?t.description:"",input:null!=t.input?t.input:{},runId:N})}}},[g]),N=(0,n.useCallback)(e=>{var t,n,a,i,l;let o=s.useAppStore.getState(),u=String(null!=(t=e.type)?t:"");if("system"===u&&"api_error"===e.subtype){let t=x(e.retryAttempt),n=x(e.maxRetries),r=x(e.retryInMs),s=Date.now()+r,a=n>0&&t>=n?"failed":r>=1e4?"retrying":"loading";o.setApiErrorState({phase:a,retryAttempt:t,maxRetries:n,retryInMs:r,retryUntilTs:s}),o.appendLog("api_error",{uuid:"string"==typeof e.uuid?e.uuid:"",retryAttempt:t,maxRetries:n,retryInMs:r});return}switch(u){case"messages":if(r.current)return void o.appendLog("switchSession","忽略切换过程中的 messages 回包");o.resetApiErrorState(),o.setMessages(Array.isArray(e.messages)?e.messages:[]),o.setStreamBuffer("");break;case"queryProgress":{o.resetApiErrorState();let t=String(null!=(n=e.phase)?n:"");"idle"===t?(o.setQueryPhase(""),o.bridgeReady&&o.setStatus("已就绪","ready")):(o.setQueryPhase(t),o.setStatus("查询阶段: ".concat(t,"…"),""));break}case"streamText":{o.resetApiErrorState();let t="string"==typeof e.text?e.text:"";o.setAssistantGenerating(!1),o.setStreamBuffer(t);let n=t.length>160?"".concat(t.slice(0,160),"…"):t;o.appendLog("←",{type:"streamText",len:t.length,preview:n||"(空)"});break}case"ready":o.resetApiErrorState(),r.current&&o.sessionId.trim()===r.current&&(r.current=""),o.markReady(),e.agent&&o.setBrandAgent(String(e.agent));break;case"session":{let t=String(null!=(a=e.sessionId)?a:""),n=o.sessionId.trim();if(r.current){if(t&&t!==n)return void o.appendLog("switchSession","忽略过期 session 回包 incoming=".concat(t," current=").concat(n));r.current=""}e.agent&&o.setBrandAgent(String(e.agent)),t&&(o.setSessionId(t),null==(i=m.current)||i.call(m,t));break}case"error":o.setAssistantGenerating(!1),o.setStatus("错误: ".concat(String(null!=(l=e.message)?l:JSON.stringify(e))),"err");break;case"turnComplete":{o.resetApiErrorState(),o.setStreamBuffer(""),o.setAssistantGenerating(!1),o.setQueryPhase("");let e=s.useAppStore.getState();e.setStatus("本轮结束(可继续发送)",e.bridgeReady?"ready":"");break}case"agentConfigReloaded":{let e=s.useAppStore.getState();e.setStatus("已重新加载 agent.md / agent.json",e.bridgeReady?"ready":"")}}},[]),A=(0,n.useCallback)(async(e,t)=>{let n=e.trim();if(!n)return;let r=s.useAppStore.getState(),a=r.agentId.trim()||"qihoo";try{let{envelopes:e,messageCount:s}=await (0,b.loadSessionReplay)(r.wsUrl,r.apiBase,a,n);if(t!==c.current)return;let i={httpReplay:!0};for(let t=0;t<e.length;t+=1){let n=e[t];n&&y(n)&&v(n,i)}r.appendLog("session-replay-http",{sessionId:n,messageCount:s,envelopeCount:e.length})}catch(e){if(t!==c.current)return;r.appendLog("session-replay-http",String(e)),r.setStatus("历史回放失败: ".concat(e),"err")}},[v]),k=(0,n.useCallback)(()=>{let e,n=s.useAppStore.getState();if(t.current&&(0,i.isWebSocketOpen)(t.current)&&n.bridgeReady)return;if(t.current){let e=t.current;try{e.close()}catch(e){}(0,i.clearActiveWebSocket)(e),t.current=null}n.markConnecting(),n.resetApiErrorState(),n.resetChat(),n.clearLog(),o.current=0,p.current.clear(),d.current+=1,S.clear();let r=n.agentId.trim()||"qihoo",l=n.sessionId.trim();l&&A(l,++c.current);let u=(0,a.buildWsUrlWithQuery)(n.wsUrl,n.sessionId,r);n.appendLog("connect",u);try{t.current=e=new WebSocket(u),(0,i.setActiveWebSocket)(e)}catch(e){n.markConnectionError("连接失败: ".concat(e)),n.appendLog("error",String(e));return}e.onopen=function(){t.current===this&&s.useAppStore.getState().markConnected()},e.onclose=function(){(null==t.current||t.current===this)&&(s.useAppStore.getState().markDisconnected(),(0,i.clearActiveWebSocket)(this),t.current===this&&(t.current=null))},e.onerror=function(){t.current===this&&(s.useAppStore.getState().markConnectionError("WebSocket 错误"),s.useAppStore.getState().appendLog("error","websocket error"))},e.onmessage=function(e){let n,r=s.useAppStore.getState();try{n=JSON.parse(e.data)}catch(t){r.appendLog("raw",e.data);return}this===t.current&&(y(n)?v(n):null!==n&&"object"==typeof n&&(r.appendLog("←",n),N(n)))}},[v,N,A]),w=(0,n.useCallback)(()=>{h(),k()},[h,k]),I=(0,n.useCallback)((e,n)=>{let a=s.useAppStore.getState(),l=String(e||"").trim(),u=String(n||a.agentId||"").trim()||"qihoo",m=t.current,f=(0,i.isWebSocketOpen)(m);if(a.resetChat(),a.clearLog(),o.current=0,a.setBridgeReady(!1),a.resetApiErrorState(),a.setStatus("正在切换 session…",""),p.current.clear(),d.current+=1,l&&f&&A(l,++c.current),r.current=l,!f)return void w();try{let e={type:"switchSession",sessionId:l,agent:u};m.send(JSON.stringify(e)),a.appendLog("→",e)}catch(e){a.appendLog("error","switchSession 发送失败: ".concat(String(e))),w()}},[w,A]);(0,n.useEffect)(()=>(k(),()=>{h()}),[f,k,h]);let C=(0,n.useCallback)(e=>{let n=t.current;(0,i.isWebSocketOpen)(n)&&(n.send(JSON.stringify(e)),s.useAppStore.getState().appendLog("→",e))},[]),E=(0,n.useCallback)(e=>{String(null!=e?e:"").trim()&&s.useAppStore.getState().setAssistantGenerating(!0),C({type:"prompt",text:e})},[C]),T=(0,n.useCallback)(()=>{C({type:"abort"})},[C]),R=(0,n.useCallback)(()=>{C({type:"reloadAgentConfig"})},[C]),_=(0,n.useCallback)(()=>{C({type:"reloadAgentPrompt"})},[C]);return{wsRef:t,disconnectIfOpen:h,connectWebSocket:k,reconnect:w,switchSession:I,sendPrompt:E,sendAbort:T,sendReloadAgentConfig:R,sendReloadAgentPrompt:_,sendPermissionResponse:(0,n.useCallback)((e,t)=>{let n=String(e||"").trim();n&&C({type:"permission.response",requestId:n,behavior:t})},[C]),sendInit:(0,n.useCallback)(e=>{C({type:"init",...e})},[C])}}({onSession:e=>{E(),M(e)}}),V=(0,n.useCallback)((e,t)=>k(e,{switchSession:z,reconnect:O,loadSessions:E,loadAgentConfig:T,preferReconnect:c},{displayName:t}),[z,O,E,T,c]),G=(0,n.useMemo)(()=>({reconnect:O,switchSession:z,switchWorkspaceAgent:V,sendPrompt:W,sendAbort:F,sendReloadAgentConfig:B,sendPermissionResponse:U}),[O,z,V,W,F,B,U]),q=p?"settings-main":c?"manage-main":"draft"===v?"is-draft-session":void 0;return(0,t.jsxs)(R.WorkspaceRuntimeContext.Provider,{value:G,children:[(0,t.jsx)(J,{}),(0,t.jsxs)("div",{className:"ws-config-hidden","aria-hidden":!0,children:[(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:m}),(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:f}),(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:h}),(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:g})]}),(0,t.jsx)(H,{mainClassName:q,mainRegion:p?"settings-shell":c?"manage-shell":"chat-shell",sidebar:{onNewSession:()=>{w(""),I("draft"),C(!1),c?O():z("",g)},onSelectSession:e=>{w(e),I("history"),C(!1),c?O():z(e,g)},onSaveAgentConfig:()=>void L({silent:!1}),deleteSessionById:async e=>{let t=await P(e);return t&&(c?O():z("",g)),t}},children:o})]})}},41796,e=>{"use strict";e.s(["SideNavShell",()=>d]);var t=e.i(18050),n=e.i(18566),r=e.i(72064),s=e.i(65934),a=e.i(75157),i=e.i(97249),l=e.i(51419),o=e.i(18253);function u(e,t){if(!t)return!1;let n=(0,i.normalizeAppPathname)(t),r=(0,i.normalizeAppPathname)(e);return n===r||n.startsWith("".concat(r,"/"))}function d(e){var d;let{title:c,navGroups:p,tabs:m,activeTabValue:f,tabVariant:g,bottomItems:h,children:v}=e,b=(0,n.usePathname)(),{push:x}=(0,o.useGuardedAppNavigation)(),y=(0,s.useAppStore)(e=>e.agentId),S=e=>{x((0,i.buildAppNavHref)(e,{ensureAgent:!0,agent:y}))},j=!!(g&&(null==m?void 0:m.length)),N=null!=f?f:null==m||null==(d=m[0])?void 0:d.value;return(0,t.jsxs)("div",{className:"side-nav-shell",children:[(0,t.jsxs)("nav",{className:"side-nav","aria-label":null!=c?c:"导航",children:[c?(0,t.jsx)("div",{className:"side-nav-title",children:c}):null,(0,t.jsx)("div",{className:"side-nav-groups",children:p.map((e,n)=>(0,t.jsx)("div",{className:"side-nav-group",children:e.items.map(e=>{let n=u(e.href,b);return(0,t.jsxs)("button",{type:"button",className:(0,a.cn)("side-nav-item",n&&"is-active"),"aria-current":n?"page":void 0,onClick:()=>S(e.href),children:[e.icon?(0,t.jsx)("span",{className:"side-nav-item-icon","aria-hidden":!0,children:(0,t.jsx)(r.default,{name:e.icon,size:16,className:"text-zinc-700",strokeWidth:1})}):null,(0,t.jsx)("span",{className:"side-nav-item-label",children:e.label})]},e.href)})},n))}),h&&h.length>0?(0,t.jsx)("div",{className:"side-nav-bottom",children:h.map(e=>{let n=u(e.href,b);return(0,t.jsxs)("button",{type:"button",className:(0,a.cn)("side-nav-item",n&&"is-active"),"aria-current":n?"page":void 0,onClick:()=>S(e.href),children:[e.icon?(0,t.jsx)("span",{className:"side-nav-item-icon","aria-hidden":!0,children:(0,t.jsx)(r.default,{name:e.icon,size:16,className:"text-zinc-700",strokeWidth:1})}):null,(0,t.jsx)("span",{className:"side-nav-item-label",children:e.label})]},e.href)})}):null]}),(0,t.jsx)("section",{className:"side-nav-content",children:j?(0,t.jsx)(l.AppTabs,{tabs:null!=m?m:[],value:N,onChange:S,listVariant:g,listClassName:"pill"===g?"mx-auto":void 0,contentClassName:"flex min-h-0 min-w-0 flex-1 flex-col",children:v}):v})]})}}]);