@auto-ai/agent 2.1.183 → 2.1.187

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 (83) hide show
  1. package/dist/safe-a/404/index.html +1 -1
  2. package/dist/safe-a/404.html +1 -1
  3. package/dist/safe-a/_next/static/chunks/074a7a892d554827.js +1 -0
  4. package/dist/safe-a/_next/static/chunks/{e42498eec0c8d570.js → 0fde2a8866dd02fc.js} +1 -1
  5. package/dist/safe-a/_next/static/chunks/26f5809c84b263c0.css +7 -0
  6. package/dist/safe-a/_next/static/chunks/2ba468c7afb852bd.js +1 -0
  7. package/dist/safe-a/_next/static/chunks/{5434628aad5e5bc3.js → 2bac8f0a4e762326.js} +1 -1
  8. package/dist/safe-a/_next/static/chunks/{7f341bc0fb5ff708.js → 2d7f6aa6628bccd0.js} +1 -1
  9. package/dist/safe-a/_next/static/chunks/33678ff357855160.js +1 -0
  10. package/dist/safe-a/_next/static/chunks/5022180fa579a73a.js +1 -0
  11. package/dist/safe-a/_next/static/chunks/518d4c901787979a.js +1 -0
  12. package/dist/safe-a/_next/static/chunks/811897ffb3636359.js +1 -0
  13. package/dist/safe-a/_next/static/chunks/96feacf5b8cde310.js +1 -0
  14. package/dist/safe-a/_next/static/chunks/a56ab101155b1427.js +1 -0
  15. package/dist/safe-a/_next/static/chunks/a5b851b271052e89.js +1 -0
  16. package/dist/safe-a/_next/static/chunks/a6aafbc087d75717.js +1 -0
  17. package/dist/safe-a/_next/static/chunks/ceead8f438e931f7.js +1 -0
  18. package/dist/safe-a/_next/static/chunks/d16ae4f1eb111da5.js +1 -0
  19. package/dist/safe-a/_next/static/chunks/d47487bdc4a277fd.css +1 -0
  20. package/dist/safe-a/_next/static/chunks/e00679a7df05e016.js +1 -0
  21. package/dist/safe-a/_next/static/chunks/f1dde9052e8d1d3d.js +1 -0
  22. package/dist/safe-a/index.html +2 -2
  23. package/dist/safe-a/index.txt +26 -27
  24. package/dist/safe-a/manage/about/index.html +2 -2
  25. package/dist/safe-a/manage/about/index.txt +11 -11
  26. package/dist/safe-a/manage/env/index.html +2 -2
  27. package/dist/safe-a/manage/env/index.txt +13 -13
  28. package/dist/safe-a/manage/geelib/index.html +2 -2
  29. package/dist/safe-a/manage/geelib/index.txt +13 -13
  30. package/dist/safe-a/manage/general/index.html +2 -2
  31. package/dist/safe-a/manage/general/index.txt +11 -11
  32. package/dist/safe-a/manage/git/index.html +2 -2
  33. package/dist/safe-a/manage/git/index.txt +13 -13
  34. package/dist/safe-a/manage/im/index.html +2 -2
  35. package/dist/safe-a/manage/im/index.txt +13 -13
  36. package/dist/safe-a/manage/index.html +2 -2
  37. package/dist/safe-a/manage/index.txt +8 -8
  38. package/dist/safe-a/manage/library/index.html +2 -2
  39. package/dist/safe-a/manage/library/index.txt +11 -11
  40. package/dist/safe-a/manage/mcp/index.html +2 -2
  41. package/dist/safe-a/manage/mcp/index.txt +11 -11
  42. package/dist/safe-a/manage/permissions/index.html +2 -2
  43. package/dist/safe-a/manage/permissions/index.txt +11 -11
  44. package/dist/safe-a/manage/skills/index.html +2 -2
  45. package/dist/safe-a/manage/skills/index.txt +11 -11
  46. package/dist/safe-a/manage/system/index.html +2 -2
  47. package/dist/safe-a/manage/system/index.txt +13 -13
  48. package/dist/safe-a/manage/task/index.html +2 -2
  49. package/dist/safe-a/manage/task/index.txt +11 -11
  50. package/dist/safe-a/manage/teams/index.html +2 -2
  51. package/dist/safe-a/manage/teams/index.txt +11 -11
  52. package/dist/safe-a/manage/tools/index.html +2 -2
  53. package/dist/safe-a/manage/tools/index.txt +11 -11
  54. package/dist/ws-test/ws-test.css +89 -1
  55. package/dist/ws-test/ws-test.html +1 -0
  56. package/dist/ws-test/ws-test.js +276 -26
  57. package/mcps-runtime/claude-ws-channel/.mcp.json +18 -0
  58. package/mcps-runtime/claude-ws-channel/server/boot.mjs +30 -0
  59. package/mcps-runtime/claude-ws-channel/server/gateway.bundle.mjs +410306 -0
  60. package/mcps-runtime/claude-ws-channel/server/index.mjs +144 -0
  61. package/package.json +6 -6
  62. package/dist/safe-a/_next/static/chunks/044a195f3374d4b6.js +0 -1
  63. package/dist/safe-a/_next/static/chunks/0a7d5a51593d8c2f.js +0 -1
  64. package/dist/safe-a/_next/static/chunks/12fa90667e8fb0e3.js +0 -1
  65. package/dist/safe-a/_next/static/chunks/4682815462207a37.js +0 -1
  66. package/dist/safe-a/_next/static/chunks/5b44bdce5e5ebd06.js +0 -1
  67. package/dist/safe-a/_next/static/chunks/5b50a8c524507ee0.js +0 -1
  68. package/dist/safe-a/_next/static/chunks/66cdfa3e49dc50f3.js +0 -1
  69. package/dist/safe-a/_next/static/chunks/6b646b7144f0eb9e.js +0 -1
  70. package/dist/safe-a/_next/static/chunks/804376464cecbc36.css +0 -7
  71. package/dist/safe-a/_next/static/chunks/812fc979171f7ded.js +0 -1
  72. package/dist/safe-a/_next/static/chunks/8f31f818efd25c0f.js +0 -1
  73. package/dist/safe-a/_next/static/chunks/9edf76a11bf93bcc.js +0 -1
  74. package/dist/safe-a/_next/static/chunks/b63afdaa820ddad4.js +0 -1
  75. package/dist/safe-a/_next/static/chunks/b9590be9854a83fb.js +0 -1
  76. package/dist/safe-a/_next/static/chunks/dc7a9ce680ab0ce4.css +0 -1
  77. package/dist/safe-a/_next/static/chunks/dd98ccfeaf6ec72e.js +0 -1
  78. package/dist/safe-a/_next/static/chunks/e847138f5b487d3d.js +0 -1
  79. package/dist/safe-a/_next/static/chunks/f3c9f6b778f4cf1a.js +0 -1
  80. package/dist/safe-a/_next/static/chunks/fa686b4028e991a5.js +0 -1
  81. /package/dist/safe-a/_next/static/{yx70m3msfKAM3SckZNBAr → BDdAEI0K2Jg8YCxVKfY0_}/_buildManifest.js +0 -0
  82. /package/dist/safe-a/_next/static/{yx70m3msfKAM3SckZNBAr → BDdAEI0K2Jg8YCxVKfY0_}/_clientMiddlewareManifest.json +0 -0
  83. /package/dist/safe-a/_next/static/{yx70m3msfKAM3SckZNBAr → BDdAEI0K2Jg8YCxVKfY0_}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,36413,e=>{"use strict";e.s(["StatusBadge",()=>i],36413);var t=e.i(18050),a=e.i(25913),r=e.i(75157);let s=(0,a.cva)("inline-flex shrink-0 items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l(e){let{className:a,variant:l,...n}=e;return(0,t.jsx)("span",{"data-slot":"badge",className:(0,r.cn)(s({variant:l}),a),...n})}let n={success:{root:"border-transparent bg-[var(--green-light)] text-[var(--green-dark)]",dot:"bg-[var(--ds-ok)]"},danger:{root:"border-transparent bg-[#fef2f2] text-[var(--ds-danger)]",dot:"bg-[var(--ds-danger)]"},default:{root:"border-transparent bg-[var(--surface-2)] text-[var(--ds-muted)]",dot:"bg-[var(--ds-muted)]"},progress:{root:"border-transparent bg-[color-mix(in_srgb,var(--blue)_12%,var(--surface-1))] text-[var(--blue)]",dot:"bg-[var(--blue)]"},warning:{root:"border-transparent bg-[color-mix(in_srgb,var(--amber)_14%,var(--surface-1))] text-[var(--amber)]",dot:"bg-[var(--amber)]"}};function i(e){let{tone:a="default",showDot:s=!0,dotClassName:i,className:o,children:d,...c}=e,u=n[a];return(0,t.jsxs)(l,{variant:"outline",className:(0,r.cn)("gap-1.5",u.root,o),...c,children:[s?(0,t.jsx)("span",{className:(0,r.cn)("size-1.5 shrink-0 rounded-full",u.dot,i),"aria-hidden":!0}):null,d]})}},92715,e=>{"use strict";e.s(["AppTable",()=>u],92715);var t=e.i(18050),a=e.i(85413),r=e.i(71645),s=e.i(75157);let l=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:a,className:(0,s.cn)("w-full caption-bottom border-collapse",r),...l})})});l.displayName="Table";let n=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("thead",{ref:a,className:(0,s.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",r),...l})});n.displayName="TableHeader";let i=r.forwardRef((e,a)=>{let{className:l,viewportFit:n=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:d,...c}=e,u=r.useRef(null),m=r.useCallback(e=>{u.current=e,"function"==typeof a?a(e):a&&(a.current=e)},[a]),[p,x]=r.useState(void 0);return r.useLayoutEffect(()=>{var e,t;if(!n)return void x(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let r=a.getBoundingClientRect().top;x(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-r-(i+o))))};a();let r=new ResizeObserver(()=>{a()});try{r.observe(document.body)}catch(e){}return window.addEventListener("resize",a),null==(e=window.visualViewport)||e.addEventListener("resize",a),null==(t=window.visualViewport)||t.addEventListener("scroll",a),window.addEventListener("scroll",a,!0),()=>{var e,t;r.disconnect(),window.removeEventListener("resize",a),null==(e=window.visualViewport)||e.removeEventListener("resize",a),null==(t=window.visualViewport)||t.removeEventListener("scroll",a),window.removeEventListener("scroll",a,!0)}},[n,i,o]),(0,t.jsx)("tbody",{ref:m,className:(0,s.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",l),style:n&&void 0!==p?{...d,maxHeight:p}:d,...c})});i.displayName="TableBody";let o=r.forwardRef((e,a)=>{let{className:r,hoverable:l=!0,...n}=e;return(0,t.jsx)("tr",{ref:a,className:(0,s.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-item-active)]",l&&"group/table-row",r),...n})});o.displayName="TableRow";let d=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("th",{ref:a,className:(0,s.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",r),...l})});d.displayName="TableHead";let c=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("td",{ref:a,className:(0,s.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-item-hover)]",r),...l})});function u(e){let{rows:r,columns:u,getRowKey:m,className:p,rowClassName:x,headerRowClassName:f,emptyText:g,emptyNode:b,bodyProps:v}=e;return(0,t.jsx)("div",{className:(0,s.cn)("overflow-hidden border border-[var(--ds-border)]",p),children:(0,t.jsxs)(l,{children:[(0,t.jsx)(n,{children:(0,t.jsx)(o,{className:(0,s.cn)("bg-[var(--ds-main-tint)] hover:bg-[var(--ds-main-tint)]",f),children:u.map(e=>(0,t.jsx)(d,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(i,{...v,children:r.length?r.map(e=>(0,t.jsx)(o,{className:"function"==typeof x?x(e):x,children:u.map(a=>(0,t.jsx)(c,{className:a.cellClassName,children:a.render(e)},a.key))},m(e))):(0,t.jsx)(o,{hoverable:!1,children:(0,t.jsx)(c,{colSpan:u.length,className:"py-6",children:null!=b?b:(0,t.jsx)(a.Empty,{text:g})})})})]})})}c.displayName="TableCell"},55242,e=>{"use strict";e.s(["AppDialog",()=>l]);var t=e.i(18050),a=e.i(71645),r=e.i(76639),s=e.i(75157);function l(e){let{open:l,onOpenChange:n,title:i,children:o,footer:d,width:c="max-w-3xl",minHeight:u}=e,m=(0,a.useId)();return(0,t.jsx)(r.Dialog,{open:l,onOpenChange:n,children:(0,t.jsxs)(r.DialogContent,{"aria-labelledby":m,className:(0,s.cn)(c,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(r.DialogHeader,{children:[(0,t.jsx)(r.DialogTitle,{id:m,children:i}),(0,t.jsx)(r.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(r.DialogBody,{className:"!px-4 !py-3",children:o}),d?(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:d}):null]})})}},62427,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>y,"deleteRuntimeMcp",()=>m,"deleteRuntimeSkill",()=>w,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>x,"exportRuntimeSkillUrl",()=>N,"exportRuntimeToolUrl",()=>p,"importRuntimeMcp",()=>g,"importRuntimeTool",()=>f,"installCloudSkill",()=>C,"listBaseSkills",()=>l,"listCloudSkillCatalog",()=>k,"listInstalledSkills",()=>n,"listInstalledTools",()=>s,"listMcpServers",()=>r,"listRuntimeMcpPackages",()=>c,"listRuntimeTools",()=>d,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>b,"loadRuntimeMcpItemConfig",()=>h,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>v,"saveRuntimeMcpItemConfig",()=>j]);var t=e.i(29250),a=e.i(36845);async function r(e,r,s){let l=await (0,t.get)((0,a.buildMcpServersListUrl)(e,r,s));return{servers:Array.isArray(l.servers)?l.servers:[]}}async function s(e,r,s){let l=await (0,t.get)((0,a.buildToolInstalledListUrl)(e,r,s));return{tools:Array.isArray(l.tools)?l.tools:[]}}async function l(e,r,s){let l=await (0,t.get)((0,a.buildSkillBaseListUrl)(e,r,s));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function n(e,r,s){let l=await (0,t.get)((0,a.buildSkillInstalledListUrl)(e,r,s));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function i(e,r,s,l){return(0,t.get)((0,a.buildBaseSkillMdUrl)(e,r,s,l))}async function o(e,r,s,l,n){await (0,t.put)((0,a.buildBaseSkillMdUrl)(e,r,s,l),{content:n})}async function d(e,r,s){let l=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,r,s));return{runtimeToolsDir:"string"==typeof l.runtimeToolsDir?l.runtimeToolsDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function c(e,r,s){let l=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,r,s));return{mcpRuntimeDir:"string"==typeof l.mcpRuntimeDir?l.mcpRuntimeDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,r,s,l){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,r,s,l))}async function m(e,r,s,l){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,r,s,l))}function p(e,t,r,s){return(0,a.buildToolsRuntimeExportUrl)(e,t,r,s)}function x(e,t,r,s){return(0,a.buildMcpRuntimeExportUrl)(e,t,r,s)}async function f(e,r,s,l){let n=new FormData;return n.append("file",l),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,r,s),n,{type:"file"})}async function g(e,r,s,l){let n=new FormData;return n.append("file",l),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,r,s),n,{type:"file"})}async function b(e,r,s){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,r,s))}async function v(e,r,s,l){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,r,s),{content:l})}async function h(e,r,s,l,n){return(0,t.get)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,s,l,n))}async function j(e,r,s,l,n,i){await (0,t.put)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,s,l,n),{server:i})}async function y(e,r,s,l,n){await (0,t.del)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,s,l,n))}async function w(e,r,s,l){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,r,s,l))}function N(e,t,r,s){return(0,a.buildSkillsRuntimeExportUrl)(e,t,r,s)}async function k(e,r,s,l,n,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,r,s,l,n,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function C(e,r,s,l){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,r,s),{id:l})}},53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),a=e.i(71645),r=e.i(72064),s=e.i(75157),l=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:d=!1,multiple:c=!1,maxFileSize:u=0x3200000,autoUpload:m=!1,method:p="POST",transport:x="xhr",fieldName:f="file",headers:g,extraFormData:b,autoRetryTimes:v=0,autoRetryDelayMs:h=800,selectionOnly:j=!1,className:y,emptyTitle:w="点击或拖拽文件到此处",emptyHint:N="支持上传文件",onFilesChange:k,onUploadSuccess:C,onUploadError:T,onValidationError:R}=e,S=a.useId(),U=a.useRef(null),M=a.useRef(new Map),D=a.useRef(new Map),A=a.useRef([]),[z,E]=a.useState(!1),[L,B]=a.useState([]),I=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{A.current=L,null==k||k(L)},[L,k]),a.useEffect(()=>()=>{for(let e of M.current.values())e.abort();for(let e of D.current.values())e.abort();for(let e of A.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let _=a.useCallback((e,t)=>{B(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),O=a.useCallback(async(e,t)=>{let a=A.current.find(t=>t.id===e);if(!a||d)return;_(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let r=new FormData;if(b)for(let[e,t]of Object.entries(b))r.append(e,t);r.append(f,a.file);try{let t="";if("fetch"===x){let a=new AbortController;D.current.set(e,a);let s=await fetch(i,{method:p,headers:g,body:r,signal:a.signal}),l=await s.text();try{t=l?JSON.parse(l):""}catch(e){t=l}if(!s.ok)throw Error("上传失败:".concat(s.status," ").concat(s.statusText))}else t=await new Promise((t,a)=>{let s=new XMLHttpRequest;if(M.current.set(e,s),s.open(p,i,!0),g)for(let[e,t]of Object.entries(g))s.setRequestHeader(e,t);s.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));_(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(r)});_(e,{status:"success",progress:100,error:""});let a=A.current.find(t=>t.id===e);a&&(null==C||C(a,t))}catch(s){let a=s instanceof Error?s.message:String(s);if("__ABORTED__"===a)return void _(e,{status:"selected",progress:0,error:""});if(t<v){_(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(v,")")}),await new Promise(e=>window.setTimeout(e,h)),await O(e,t+1);return}_(e,{status:"error",error:a});let r=A.current.find(t=>t.id===e);r&&(null==T||T(r,a))}finally{M.current.delete(e),D.current.delete(e)}},[h,v,d,b,f,g,p,T,C,x,_,i]),P=a.useCallback(e=>{O(e,0)},[O]),F=a.useCallback(e=>{var t,a;null==(t=M.current.get(e))||t.abort(),null==(a=D.current.get(e))||a.abort()},[]),W=a.useCallback(()=>{for(let e of A.current)("selected"===e.status||"error"===e.status)&&P(e.id)},[P]),H=a.useCallback(e=>{if(d||!e.length)return;let t=new Set(A.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let r of e){let e="".concat(r.name,"::").concat(r.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),r=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?r.startsWith("".concat(e.slice(0,-1))):r===e)}(r,I)){null==R||R("文件类型不支持:".concat(r.name));continue}if(r.size>u){null==R||R("文件过大(最大 ".concat(n(u),"):").concat(r.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:r,status:"selected",progress:0,error:"",retryCount:0,previewUrl:r.type.startsWith("image/")?URL.createObjectURL(r):""})}}if(!a.length)return;let r=c?[...A.current,...a]:[a[a.length-1]];if(!c)for(let e of A.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(B(r),m&&!j)for(let e of a)P(e.id)},[I,m,d,u,c,R,j,P]),V=a.useCallback(e=>{let t=e.target.files;t&&(H(Array.from(t)),e.target.value="")},[H]),J=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),E(!1),d||H(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[H,d]);return(0,t.jsxs)("div",{className:(0,s.cn)("flex min-h-0 w-full flex-col gap-3",y),children:[(0,t.jsx)("input",{ref:U,id:S,type:"file",hidden:!0,accept:o,multiple:c,disabled:d,onChange:V}),(0,t.jsxs)("label",{htmlFor:S,onDragOver:e=>{e.preventDefault(),d||E(!0)},onDragLeave:e=>{e.preventDefault(),E(!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)]",d&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(r.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:w}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:N})]}),L.length?(0,t.jsx)("div",{className:"space-y-2",children:L.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-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"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-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),j?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(r.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(l.Button,{type:"button",size:"sm",variant:"outline",disabled:d,onClick:()=>P(e.id),children:["error"===e.status?(0,t.jsx)(r.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(l.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(r.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!j&&!m&&L.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(l.Button,{type:"button",size:"sm",onClick:W,disabled:d,children:"上传"})}):null]})}var o=e.i(76639),d=e.i(13354),c=e.i(29250);function u(e){let{open:r,onOpenChange:s,title:n,description:u,uploadUrl:m,resetKey:p}=e,[x,f]=(0,a.useState)(!1),[g,b]=(0,a.useState)(null),v=(0,a.useCallback)(()=>{s(!1),b(null)},[s]),h=(0,a.useCallback)(async()=>{if(!g)return void d.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",g),f(!0);try{let t=await (0,c.bridgeFetch)(m,{method:"POST",body:e}),a=Number(t.imported||0),r=Number(t.overwritten||0),s=Array.isArray(t.rejected)?t.rejected.length:0;d.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(r)+(s>0?",拒绝 ".concat(s):"")),v()}catch(e){d.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{f(!1)}},[v,g,m]);return(0,t.jsx)(o.Dialog,{open:r,onOpenChange:e=>{s(e),e||b(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:v,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:m,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:x,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;b(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{d.appToast.info(e)}},"".concat(r?"open":"closed","-").concat(null!=p?p:m)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(l.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:v,children:"取消"}),(0,t.jsx)(l.Button,{type:"button",size:"lg",variant:"default",disabled:x||null==g,onClick:()=>void h(),children:x?"导入中…":"确定"})]})]})]})})}},19573,e=>{"use strict";e.s(["ToolsManageView",()=>U],19573);var t=e.i(18050),a=e.i(71645),r=e.i(65934),s=e.i(87243),l=e.i(13354),n=e.i(50711),i=e.i(19455),o=e.i(2839),d=e.i(94055),c=e.i(94197),u=e.i(92715),m=e.i(36413),p=e.i(72064),x=e.i(93479);function f(e){let{items:r,saveBusy:s,onToggle:l,onExport:n,onRemove:i,className:o}=e,[f,g]=(0,a.useState)(""),b=(0,a.useMemo)(()=>r.filter(e=>(function(e,t){var a,r;let s=t.trim().toLowerCase();if(!s)return!0;let l="system"===e.layer?"系统":"agent"===e.layer?"Agent":"";return"".concat(e.name," ").concat(null!=(a=e.label)?a:""," ").concat(null!=(r=e.description)?r:""," ").concat(l).toLowerCase().includes(s)})(e,f)),[r,f]),v=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>{let a=e.label||e.name;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:a}),(0,t.jsx)(m.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})}},{key:"layer",title:"层级",headerClassName:"w-[88px]",cellClassName:"w-[88px] whitespace-nowrap text-[var(--ds-text)]",render:e=>"system"===e.layer?"系统":"agent"===e.layer?"Agent":"-"},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)(d.AccentSwitch,{checked:!!e.enabled,disabled:s,onCheckedChange:t=>l(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>{let a=!0===e.canManage;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(c.IconTooltipButton,{icon:"Download",label:a?"导出":"系统内置工具不可导出",ariaLabel:"导出 ".concat(e.label||e.name),disabled:s||!a,onClick:()=>n(e.name)}),(0,t.jsx)(c.IconTooltipButton,{icon:"Trash2",label:a?"删除":"系统内置工具不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label||e.name),disabled:s||!a,onClick:()=>{i(e.name)}})]})}}],h=f.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(x.Input,{type:"search",value:f,onChange:e=>g(e.target.value),placeholder:"搜索名称 / 详情 / 层级",className:"h-8 pl-8","aria-label":"搜索工具"}),(0,t.jsx)(p.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(u.AppTable,{rows:b,columns:v,getRowKey:e=>"tools:".concat(e.name),className:o,emptyText:h?"未找到匹配工具":void 0})]})}var g=e.i(36845),b=e.i(53925);function v(e){let{open:a,onOpenChange:r,wsUrl:s,apiBase:l,agent:n}=e;return(0,t.jsx)(b.ResourceImportDialog,{open:a,onOpenChange:r,title:"导入工具 zip",description:"选择一个 zip 文件并导入到 tools-runtime。",uploadUrl:(0,g.buildToolsRuntimeImportUrl)(s,l,n),resetKey:n})}var h=e.i(55242);let j=[["name","稳定工具名,与 agent.json.tools 白名单对应"],["call","工具执行入口"],["inputSchema","Zod schema,定义 LLM 入参"],["description","工具描述,可为 async 函数"],["prompt","返回给模型的使用说明,可为 async 函数"],["mapToolResultToToolResultBlockParam","将执行结果映射为 API tool_result 块"]],y=["包目录位于 tools-runtime/<package-name>/,包名使用 kebab-case","包根目录存在 index.js / index.cjs / index.mjs 之一,宿主不会加载源码 TS","入口导出 Tool 对象,工具 name 稳定且唯一","initWsSession 正确处理 ready / skipped / failed",'agent.json.tools 包含工具名或 "*",且未被 disallowedTools 禁用',"GET /api/tools?agent=<id> 中工具 enabled: true 且 readiness: ready"];function w(e){let{index:a,title:r,children:s,className:l}=e;return(0,t.jsxs)("section",{className:"rounded-xl border border-[var(--ds-border)] bg-[var(--surface-1)] p-4 ".concat(null!=l?l:""),children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex size-7 shrink-0 items-center justify-center rounded-full bg-[var(--ds-accent)] text-base font-semibold text-[var(--surface-1)]",children:a}),(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:r})]}),s]})}function N(e){let{open:a,onOpenChange:r}=e;return(0,t.jsx)(h.AppDialog,{open:a,onOpenChange:r,title:"工具接入说明",width:"max-w-4xl",footer:(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>r(!1),children:"我知道了"}),children:(0,t.jsxs)("div",{className:"flex max-h-[72vh] flex-col gap-4 overflow-y-auto pr-1 text-sm text-[var(--ds-text)]",children:[(0,t.jsx)(w,{index:1,title:"概念",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"bg-[var(--ds-accent)]/10 mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg text-[var(--ds-accent)]",children:(0,t.jsx)(p.default,{name:"Wrench",size:18})}),(0,t.jsxs)("p",{className:"min-w-0 leading-6 text-[var(--ds-muted)]",children:["Runtime Tool 是磁盘上的独立工具包,放在",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"tools-runtime/<package-name>/"}),"下。宿主与工具包只通过编译入口的导出契约通信,互不 import 对方源码。"]})]})}),(0,t.jsxs)(w,{index:2,title:"存放路径",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-sidebar)] p-3 text-xs leading-5 text-[var(--ds-text)]",children:"<WS_AGENTS_ROOT>/tools-runtime/<package-name>/\n index.cjs # 必选:编译后的单文件入口\n package.json # 可选\n build.ts # 可选\n src/ # 可选,宿主不加载"}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:["默认 WS_AGENTS_ROOT 为项目下的",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:".ws-agents"}),",宿主按",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:".js > .cjs > .mjs"}),"优先级加载入口。agent 层同名包会覆盖 system 层包。"]})]}),(0,t.jsx)(w,{index:3,title:"接入方式",children:(0,t.jsxs)("div",{className:"space-y-3 text-[var(--ds-muted)]",children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"手工放置:"}),"在 .ws-agents/tools-runtime/ 下创建包目录并完成构建,重启会话或触发 reloadDynamicTools。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"Zip 导入:"}),"zip 内必须是单根目录结构,例如 my-tool/index.cjs。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"内置 system 包:"}),"发布到 packages/agent/tools-runtime,用户可用 agent 层同名包覆盖。"]})]})}),(0,t.jsxs)(w,{index:4,title:"包内必须实现的契约",children:[(0,t.jsx)("p",{className:"mt-2 leading-6 text-[var(--ds-muted)]",children:"入口模块需导出至少一个 Tool 对象,可使用 default、tools 数组或命名导出。"}),(0,t.jsx)("div",{className:"mt-3 grid gap-2",children:j.map(e=>{let[a,r]=e;return(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--ds-border)] bg-[var(--surface-1)] px-3 py-2",children:[(0,t.jsx)("code",{className:"text-base font-semibold text-[var(--ds-accent)]",children:a}),(0,t.jsx)("p",{className:"mt-1 text-base leading-5 text-[var(--ds-muted)]",children:r})]},a)})}),(0,t.jsx)("div",{className:"mt-4 rounded-lg border border-[var(--ds-border)] bg-[var(--ds-sidebar)] p-3",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["生产包推荐实现",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--surface-1)] px-1.5 py-0.5",children:"initWsSession"}),",返回 ready 才会进入 LLM 工具列表;skipped 或 failed 不会暴露。未实现时默认 ready。"]})})]}),(0,t.jsx)(w,{index:5,title:"最小示例",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["最小包通常包含 package.json、build.ts 和 src/index.ts,构建后在包根目录产出",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"index.cjs"}),"。若 package.json 使用",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"type: module"}),",优先产出 index.cjs,避免 ESM/CJS 冲突。"]})}),(0,t.jsxs)(w,{index:6,title:"在 agent 中启用",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-sidebar)] p-3 text-base leading-5 text-[var(--ds-text)]",children:'{\n "tools": ["HelloTool"]\n}'}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:'"*"'}),"暴露全部已加载且 ready 的 runtime 工具;",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"[]"}),"不暴露任何 runtime 工具。MCP 工具由 mcpServers 单独控制。"]})]}),(0,t.jsxs)(w,{index:7,title:"宿主加载流程",children:[(0,t.jsx)("div",{className:"rounded-lg bg-[var(--ds-sidebar)] p-3 text-base leading-6 text-[var(--ds-muted)]",children:"discoverRuntimePackages → dynamic import index.* → initWsSession → extractToolsFromModule → agent.json.tools 白名单过滤 → LLM 可见工具列表"}),(0,t.jsx)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:"触发时机包括 WS 会话 init、reloadDynamicTools,以及带 agent 参数的 GET /api/tools。 可通过 CLAUDE_CODE_RUNTIME_TOOLS_ENABLED=0 关闭 runtime 工具。"})]}),(0,t.jsx)(w,{index:8,title:"参考实现",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"schedule-tool:会话级 init、agent 白名单、文件持久化。"}),(0,t.jsx)("p",{children:"git-tool:环境变量驱动、ready / skipped / failed 状态。"}),(0,t.jsx)("p",{children:"code-tool:通过 buildSessionAppend 追加会话上下文。"})]})}),(0,t.jsx)(w,{index:9,title:"验收清单",children:(0,t.jsx)("ul",{className:"grid gap-2",children:y.map(e=>(0,t.jsxs)("li",{className:"flex gap-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)(p.default,{name:"CheckCircle2",size:16,className:"mt-1 shrink-0 text-[var(--ds-accent)]"}),(0,t.jsx)("span",{children:e})]},e))})}),(0,t.jsx)(w,{index:10,title:"常见问题",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"放了包但工具不可见:确认已构建 index.*、initWsSession 返回 ready、白名单包含工具名。"}),(0,t.jsx)("p",{children:"installed-list 有但会话 disabled:通常是 init 返回 skipped/failed,或未通过 agent 白名单。"}),(0,t.jsx)("p",{children:"同名工具冲突:agent 层覆盖 system 层;同一层内工具 name 重复时后者会被去重丢弃。"})]})})]})})}var k=e.i(68499),C=e.i(56708),T=e.i(62427);function R(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.name}function S(e){let t=null!=e.packageId?String(e.packageId).trim():"";return!0===e.deletable&&t.length>0}function U(){let e=(0,r.useAppStore)(e=>e.wsUrl),d=(0,r.useAppStore)(e=>e.apiBase),c=(0,r.useAppStore)(e=>e.agentConfig),u=(0,r.useAppStore)(e=>e.patchAgentConfig),{currentAgent:m,loadAgentConfig:x}=(0,s.useSession)(),g=(0,n.usePersistAgentConfigField)("tools"),b=c.tools,[h,j]=(0,a.useState)([]),[y,w]=(0,a.useState)(!1),[U,M]=(0,a.useState)(!1),[D,A]=(0,a.useState)(!1),[z,E]=(0,a.useState)(!1);(0,a.useEffect)(()=>{x()},[x]);let L=(0,a.useCallback)(async(e,t)=>{M(!0);try{await g(e,{silent:t})}finally{M(!1)}},[g]),B=(0,a.useCallback)(async()=>{j([]),w(!0);try{var t;let a=await (0,T.listInstalledTools)(e,d,m());j(null!=(t=a.tools)?t:[])}catch(e){j([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{w(!1)}},[e,d,m]);(0,a.useEffect)(()=>{B()},[B]);let I=(0,a.useCallback)(e=>h.find(t=>t.name===e),[h]),_=(0,a.useMemo)(()=>h.slice().sort((e,t)=>e.name.localeCompare(t.name)).map(e=>(function(e,t){var a;let r=null!=e.packageName?String(e.packageName).trim():"";return{name:e.name,label:(e.displayName&&e.displayName!==e.name?"".concat(e.displayName," · "):"")+e.name,description:null!=(a=e.searchHint)?a:"",enabled:t,packageId:r,canManage:S({deletable:e.deletable,packageId:r}),layer:e.layer}})(e,b.includes(e.name))),[h,b]),O=(0,a.useCallback)(async t=>{let a=I(t);if(!a||!S({deletable:a.deletable,packageId:a.packageName}))return void l.appToast.error("系统内置工具不可删除");if(await (0,k.confirmAlertDialog)({title:"确认删除工具包?",description:"工具名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,T.deleteRuntimeTool)(e,d,m(),R({packageId:a.packageName,name:a.name}));let r=b.filter(e=>e!==t);u({tools:r}),await L(r,!0),await B()}catch(e){l.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[I,e,d,m,b,u,L,B]),P=(0,a.useCallback)(t=>{let a=I(t);if(!a||!S({deletable:a.deletable,packageId:a.packageName}))return void l.appToast.error("系统内置工具不可导出");window.open((0,T.exportRuntimeToolUrl)(e,d,m(),R({packageId:a.packageName,name:a.name})),"_blank","noopener")},[I,e,d,m]),F=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...b,e])].sort():b.filter(t=>t!==e).sort();u({tools:a}),L(a,!0)},[b,u,L]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(C.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)(i.Button,{type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>A(!0),children:[(0,t.jsx)(p.default,{name:"Info",size:16,className:"align-middle"}),"工具说明"]}),(0,t.jsxs)(i.Button,{id:"btnAgentPickerToolImport",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>E(!0),children:[(0,t.jsx)(p.default,{name:"Import",size:16,className:"align-middle"}),"导入自定义工具"]})]})}),y?(0,t.jsx)(o.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(f,{items:_,saveBusy:U,onToggle:F,onExport:P,onRemove:O}),(0,t.jsx)(v,{open:z,onOpenChange:e=>{E(e),e||B()},wsUrl:e,apiBase:d,agent:m()}),(0,t.jsx)(N,{open:D,onOpenChange:A})]})}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2839,e=>{"use strict";e.s(["Loading",()=>l],2839);var t=e.i(18050),r=e.i(57688);let i={src:e.i(51239).default,width:951,height:482,blurWidth:8,blurHeight:4,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAj0lEQVR42gGEAHv/AAAAAAANERAObXJwYaGko5N/gYBwDg8PCgAAAAAAAAAAAAMEBAJic2xp2+3m7fL8+P7l6ujjUlhWTAYGBgUAAAAAADM3NTG6x8LB7fr1/vD89/7f9+3+wNXNzycpKB4AAAAAAJ+qpozL2dO/0NvWx9Td2c6gzrzRpcq8u2FpZk8CAgIBCRI7kCfNfAcAAAAASUVORK5CYII="};var n=e.i(87968),a=e.i(75157);function l(e){let{text:l="加载中",className:o,showImage:s=!0,imageSrc:u=i,imageAlt:d="加载中",imageSize:c=180,imageClassName:f}=e,p="string"==typeof u?{width:c,height:c}:{width:u.width,height:u.height};return(0,t.jsxs)("div",{className:(0,a.cn)("flex min-h-[180px] w-full flex-col items-center justify-center gap-2 py-4 text-[var(--ds-muted)]",o),role:"status","aria-live":"polite",children:[s?(0,t.jsx)("span",{className:(0,a.cn)("block shrink-0",f),style:{width:c},children:(0,t.jsx)(r.default,{src:u,alt:d,width:p.width,height:p.height,unoptimized:!0,draggable:!1,sizes:"".concat(c,"px"),className:"h-auto w-full object-contain"})}):null,(0,t.jsxs)("span",{className:"flex items-center",children:[(0,t.jsx)(n.Spinner,{className:"mr-2"}),l]})]})}},96920,e=>{e.v("/app/_next/static/media/no-data.48c973b9.png")},51239,e=>{e.v("/app/_next/static/media/data-loading.be8d921a.png")},93479,e=>{"use strict";e.s(["Input",()=>i]);var t=e.i(18050),r=e.i(75157);function i(e){let{className:i,type:n="text",size:a="default",...l}=e;return(0,t.jsx)("input",{type:n,"data-slot":"input","data-size":a,className:(0,r.cn)("h-9 w-full appearance-none rounded-md border border-solid border-border bg-transparent px-3 text-base outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none] data-[size=default]:h-9 data-[size=lg]:h-10 data-[size=sm]:h-7",i),...l})}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return n}});let i=e.r(71645);function n(e,t){let r=(0,i.useRef)(null),n=(0,i.useRef)(null);return(0,i.useCallback)(i=>{if(null===i){let e=r.current;e&&(r.current=null,e());let t=n.current;t&&(n.current=null,t())}else e&&(r.current=a(e,i)),t&&(n.current=a(t,i))},[e,t])}function a(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},88143,(e,t,r)=>{"use strict";function i(e){let{widthInt:t,heightInt:r,blurWidth:i,blurHeight:n,blurDataURL:a,objectFit:l}=e,o=i?40*i:t,s=n?40*n:r,u=o&&s?"viewBox='0 0 "+o+" "+s+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+u+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(u?"none":"contain"===l?"xMidYMid":"cover"===l?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+a+"'/%3E%3C/svg%3E"}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return i}})},87690,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{VALID_LOADERS:function(){return i},imageConfigDefault:function(){return n}});let i=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],maximumDiskCacheSize:void 0,maximumResponseBody:5e7,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:void 0,unoptimized:!1}},8927,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return s}}),e.r(33525);let i=e.r(88143),n=e.r(87690),a=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function o(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function s(e,t){var r,s;let u,d,c,{src:f,sizes:p,unoptimized:g=!1,priority:m=!1,loading:h,className:b,quality:v,width:A,height:x,fill:y=!1,style:j,overrideSrc:w,onLoad:_,onLoadingComplete:C,placeholder:O="empty",blurDataURL:S,fetchPriority:E,decoding:P="async",layout:R,objectFit:z,objectPosition:M,lazyBoundary:N,lazyRoot:I,...k}=e,{imgConf:D,showAltText:T,blurComplete:U,defaultLoader:B}=t,L=D||n.imageConfigDefault;if("allSizes"in L)u=L;else{let e=[...L.deviceSizes,...L.imageSizes].sort((e,t)=>e-t),t=L.deviceSizes.sort((e,t)=>e-t),i=null==(r=L.qualities)?void 0:r.sort((e,t)=>e-t);u={...L,allSizes:e,deviceSizes:t,qualities:i}}if(void 0===B)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let G=k.loader||B;delete k.loader,delete k.srcSet;let F="__next_img_default"in G;if(F){if("custom"===u.loader)throw Object.defineProperty(Error('Image with src "'+f+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader'),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=G;G=t=>{let{config:r,...i}=t;return e(i)}}if(R){"fill"===R&&(y=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[R];e&&(j={...j,...e});let t={responsive:"100vw",fill:"100vw"}[R];t&&!p&&(p=t)}let V="",q=o(A),H=o(x);if((s=f)&&"object"==typeof s&&(l(s)||void 0!==s.src)){let e=l(f)?f.default:f;if(!e.src)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!e.height||!e.width)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(d=e.blurWidth,c=e.blurHeight,S=S||e.blurDataURL,V=e.src,!y)if(q||H){if(q&&!H){let t=q/e.width;H=Math.round(e.height*t)}else if(!q&&H){let t=H/e.height;q=Math.round(e.width*t)}}else q=e.width,H=e.height}let K=!m&&("lazy"===h||void 0===h);(!(f="string"==typeof f?f:V)||f.startsWith("data:")||f.startsWith("blob:"))&&(g=!0,K=!1),u.unoptimized&&(g=!0),F&&!u.dangerouslyAllowSVG&&f.split("?",1)[0].endsWith(".svg")&&(g=!0);let W=o(v),Y=Object.assign(y?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:z,objectPosition:M}:{},T?{}:{color:"transparent"},j),X=U||"empty"===O?null:"blur"===O?'url("data:image/svg+xml;charset=utf-8,'+(0,i.getImageBlurSvg)({widthInt:q,heightInt:H,blurWidth:d,blurHeight:c,blurDataURL:S||"",objectFit:Y.objectFit})+'")':'url("'+O+'")',J=a.includes(Y.objectFit)?"fill"===Y.objectFit?"100% 100%":"cover":Y.objectFit,Q=X?{backgroundSize:J,backgroundPosition:Y.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:X}:{},$=function(e){let{config:t,src:r,unoptimized:i,width:n,quality:a,sizes:l,loader:o}=e;if(i)return{src:r,srcSet:void 0,sizes:void 0};let{widths:s,kind:u}=function(e,t,r){let{deviceSizes:i,allSizes:n}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let i;i=e.exec(r);)t.push(parseInt(i[2]));if(t.length){let e=.01*Math.min(...t);return{widths:n.filter(t=>t>=i[0]*e),kind:"w"}}return{widths:n,kind:"w"}}return"number"!=typeof t?{widths:i,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>n.find(t=>t>=e)||n[n.length-1]))],kind:"x"}}(t,n,l),d=s.length-1;return{sizes:l||"w"!==u?l:"100vw",srcSet:s.map((e,i)=>o({config:t,src:r,quality:a,width:e})+" "+("w"===u?e:i+1)+u).join(", "),src:o({config:t,src:r,quality:a,width:s[d]})}}({config:u,src:f,unoptimized:g,width:q,quality:W,sizes:p,loader:G});return{props:{...k,loading:K?"lazy":h,fetchPriority:E,width:q,height:H,decoding:P,className:b,style:{...Y,...Q},sizes:$.sizes,srcSet:$.srcSet,src:w||$.src},meta:{unoptimized:g,priority:m,placeholder:O,fill:y}}}},98879,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let i=e.r(71645),n="undefined"==typeof window,a=n?()=>{}:i.useLayoutEffect,l=n?()=>{}:i.useEffect;function o(e){let{headManager:t,reduceComponentsToState:r}=e;function o(){if(t&&t.mountedInstances){let n=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(n,e))}}if(n){var s;null==t||null==(s=t.mountedInstances)||s.add(e.children),o()}return a(()=>{var r;return null==t||null==(r=t.mountedInstances)||r.add(e.children),()=>{var r;null==t||null==(r=t.mountedInstances)||r.delete(e.children)}}),a(()=>(t&&(t._pendingUpdate=o),()=>{t&&(t._pendingUpdate=o)})),l(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},58908,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"AmpStateContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext({})},15986,(e,t,r)=>{"use strict";function i(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:i=!1}=void 0===e?{}:e;return t||r&&i}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isInAmpMode",{enumerable:!0,get:function(){return i}})},25633,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{default:function(){return m},defaultHead:function(){return c}});let i=e.r(55682),n=e.r(90809),a=e.r(18050),l=n._(e.r(71645)),o=i._(e.r(98879)),s=e.r(58908),u=e.r(42732),d=e.r(15986);function c(e){void 0===e&&(e=!1);let t=[(0,a.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,a.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(33525);let p=["name","httpEquiv","charSet","itemProp"];function g(e,t){let{inAmpMode:r}=t;return e.reduce(f,[]).reverse().concat(c(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,i={};return n=>{let a=!0,l=!1;if(n.key&&"number"!=typeof n.key&&n.key.indexOf("$")>0){l=!0;let t=n.key.slice(n.key.indexOf("$")+1);e.has(t)?a=!1:e.add(t)}switch(n.type){case"title":case"base":t.has(n.type)?a=!1:t.add(n.type);break;case"meta":for(let e=0,t=p.length;e<t;e++){let t=p[e];if(n.props.hasOwnProperty(t))if("charSet"===t)r.has(t)?a=!1:r.add(t);else{let e=n.props[t],r=i[t]||new Set;("name"!==t||!l)&&r.has(e)?a=!1:(r.add(e),i[t]=r)}}}return a}}()).reverse().map((e,t)=>{let r=e.key||t;return l.default.cloneElement(e,{key:r})})}let m=function(e){let{children:t}=e,r=(0,l.useContext)(s.AmpStateContext),i=(0,l.useContext)(u.HeadManagerContext);return(0,a.jsx)(o.default,{reduceComponentsToState:g,headManager:i,inAmpMode:(0,d.isInAmpMode)(r),children:t})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18556,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let i=e.r(55682)._(e.r(71645)),n=e.r(87690),a=i.default.createContext(n.imageConfigDefault)},65856,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return i}});let i=e.r(55682)._(e.r(71645)).default.createContext(null)},1948,(e,t,r)=>{"use strict";function i(e){var t;let{config:r,src:i,width:n,quality:a}=e,l=a||(null==(t=r.qualities)?void 0:t.reduce((e,t)=>Math.abs(t-75)<Math.abs(e-75)?t:e))||75;return r.path+"?url="+encodeURIComponent(i)+"&w="+n+"&q="+l+(i.startsWith("/_next/static/media/"),"")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return n}}),i.__next_img_default=!0;let n=i},5500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return x}});let i=e.r(55682),n=e.r(90809),a=e.r(18050),l=n._(e.r(71645)),o=i._(e.r(74080)),s=i._(e.r(25633)),u=e.r(8927),d=e.r(87690),c=e.r(18556);e.r(33525);let f=e.r(65856),p=i._(e.r(1948)),g=e.r(18581),m={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/app/_next/image/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function h(e,t,r,i,n,a,l){let o=null==e?void 0:e.src;e&&e["data-loaded-src"]!==o&&(e["data-loaded-src"]=o,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&n(!0),null==r?void 0:r.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let i=!1,n=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>i,isPropagationStopped:()=>n,persist:()=>{},preventDefault:()=>{i=!0,t.preventDefault()},stopPropagation:()=>{n=!0,t.stopPropagation()}})}(null==i?void 0:i.current)&&i.current(e)}}))}function b(e){return l.use?{fetchPriority:e}:{fetchpriority:e}}"undefined"==typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let v=(0,l.forwardRef)((e,t)=>{let{src:r,srcSet:i,sizes:n,height:o,width:s,decoding:u,className:d,style:c,fetchPriority:f,placeholder:p,loading:m,unoptimized:v,fill:A,onLoadRef:x,onLoadingCompleteRef:y,setBlurComplete:j,setShowAltText:w,sizesInput:_,onLoad:C,onError:O,...S}=e,E=(0,l.useCallback)(e=>{e&&(O&&(e.src=e.src),e.complete&&h(e,p,x,y,j,v,_))},[r,p,x,y,j,O,v,_]),P=(0,g.useMergedRef)(t,E);return(0,a.jsx)("img",{...S,...b(f),loading:m,width:s,height:o,decoding:u,"data-nimg":A?"fill":"1",className:d,style:c,sizes:n,srcSet:i,src:r,ref:P,onLoad:e=>{h(e.currentTarget,p,x,y,j,v,_)},onError:e=>{w(!0),"empty"!==p&&j(!0),O&&O(e)}})});function A(e){let{isAppRouter:t,imgAttributes:r}=e,i={as:"image",imageSrcSet:r.srcSet,imageSizes:r.sizes,crossOrigin:r.crossOrigin,referrerPolicy:r.referrerPolicy,...b(r.fetchPriority)};return t&&o.default.preload?(o.default.preload(r.src,i),null):(0,a.jsx)(s.default,{children:(0,a.jsx)("link",{rel:"preload",href:r.srcSet?void 0:r.src,...i},"__nimg-"+r.src+r.srcSet+r.sizes)})}let x=(0,l.forwardRef)((e,t)=>{let r=(0,l.useContext)(f.RouterContext),i=(0,l.useContext)(c.ImageConfigContext),n=(0,l.useMemo)(()=>{var e;let t=m||i||d.imageConfigDefault,r=[...t.deviceSizes,...t.imageSizes].sort((e,t)=>e-t),n=t.deviceSizes.sort((e,t)=>e-t),a=null==(e=t.qualities)?void 0:e.sort((e,t)=>e-t);return{...t,allSizes:r,deviceSizes:n,qualities:a}},[i]),{onLoad:o,onLoadingComplete:s}=e,g=(0,l.useRef)(o);(0,l.useEffect)(()=>{g.current=o},[o]);let h=(0,l.useRef)(s);(0,l.useEffect)(()=>{h.current=s},[s]);let[b,x]=(0,l.useState)(!1),[y,j]=(0,l.useState)(!1),{props:w,meta:_}=(0,u.getImgProps)(e,{defaultLoader:p.default,imgConf:n,blurComplete:b,showAltText:y});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(v,{...w,unoptimized:_.unoptimized,placeholder:_.placeholder,fill:_.fill,onLoadRef:g,onLoadingCompleteRef:h,setBlurComplete:x,setShowAltText:j,sizesInput:e.sizes,ref:t}),_.priority?(0,a.jsx)(A,{isAppRouter:!r,imgAttributes:w}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94909,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{default:function(){return s},getImageProps:function(){return o}});let i=e.r(55682),n=e.r(8927),a=e.r(5500),l=i._(e.r(1948));function o(e){let{props:t}=(0,n.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/app/_next/image/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let s=a.Image},57688,(e,t,r)=>{t.exports=e.r(94909)},85413,e=>{"use strict";e.s(["Empty",()=>a],85413);var t=e.i(18050),r=e.i(57688);let i={src:e.i(96920).default,width:973,height:482,blurWidth:8,blurHeight:4,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAj0lEQVR42gGEAHv/AAAAAAATGRcXg4uIgcjJycORlJOKDxEQDAAAAAAAAAAAAAQEBANfa2Zj5fTu9ff9+/7q8u7uc3p3cgoLCwkAAAAAAEJGRELH1M/S4/jw/tD25v7U9ef+1ubf4jg8OjAAAAAAAHqBfmqxvLiisMG7rK7GvLKxxb2wpbKtoVNYVlADAwMC5U08HYgBOJwAAAAASUVORK5CYII="};var n=e.i(75157);function a(e){let{text:a="暂无数据",className:l,showImage:o=!0,imageSrc:s=i,imageAlt:u="暂无数据",imageSize:d=180,imageClassName:c}=e,f="string"==typeof s?{width:d,height:d}:{width:s.width,height:s.height};return(0,t.jsxs)("div",{className:(0,n.cn)("flex min-h-[180px] w-full flex-col items-center justify-center gap-2 py-4 text-[var(--ds-muted)]",l),role:"status","aria-live":"polite",children:[o?(0,t.jsx)("span",{className:(0,n.cn)("block shrink-0",c),style:{width:d},children:(0,t.jsx)(r.default,{src:s,alt:u,width:f.width,height:f.height,unoptimized:!0,draggable:!1,sizes:"".concat(d,"px"),className:"h-auto w-full object-contain"})}):null,(0,t.jsx)("span",{children:a})]})}},94197,e=>{"use strict";e.s(["IconTooltipButton",()=>o]);var t=e.i(18050),r=e.i(72064),i=e.i(19455),n=e.i(46798),a=e.i(75157);let l={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:s,ariaLabel:u,tone:d="muted",disabled:c,className:f,iconClassName:p,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)(i.Button,{type:"button",variant:"plain",size:"icon",className:(0,a.cn)("icon-tooltip-btn","h-4 w-4 border-none p-0",l[d],f),disabled:c,"aria-label":null!=u?u:s,onClick:g,children:(0,t.jsx)(r.default,{name:o,size:16,className:p})})}),(0,t.jsx)(n.TooltipContent,{side:"bottom",align:"center",className:"",children:s})]})})}},56708,e=>{"use strict";e.s(["ManageChromeHeaderActions",()=>o,"ManageFeatureChrome",()=>l]);var t=e.i(18050),r=e.i(71645),i=e.i(74080),n=e.i(72064);let a=(0,r.createContext)(null);function l(e){let{title:i,description:l,children:o,showTitle:s=!0,headerIcon:u}=e,[d,c]=(0,r.useState)(null);return(0,t.jsxs)("div",{className:"manage-page-wrap flex min-h-0 flex-1 flex-col",children:[(0,t.jsxs)("div",{className:"manage-page-header flex shrink-0 items-start justify-between gap-[var(--space-4)] pb-[var(--space-4)]",children:[s?(0,t.jsxs)("div",{className:"manage-page-title-block flex items-center",children:[u&&(0,t.jsx)("div",{className:"mr-[16px] rounded-md bg-[var(--green-light)] px-4 py-3",children:(0,t.jsx)(n.default,{name:u,size:24,className:"text-[var(--green-dark)]",strokeWidth:1.5})}),(0,t.jsxs)("div",{className:"pt-2",children:[(0,t.jsx)("h1",{className:"manage-page-title",children:i}),(0,t.jsx)("p",{className:"manage-page-desc",children:l})]})]}):null,(0,t.jsx)("div",{ref:c,className:"manage-page-header-actions self-start"})]}),(0,t.jsx)("div",{className:"manage-page-body flex min-h-0 min-w-0 flex-1 flex-col",children:(0,t.jsx)(a.Provider,{value:d,children:o})})]})}function o(e){let{children:t}=e,n=(0,r.useContext)(a);return(0,r.useSyncExternalStore)(()=>()=>{},()=>!0,()=>!1)&&n?(0,i.createPortal)(t,n):null}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94197,e=>{"use strict";e.s(["IconTooltipButton",()=>i]);var r=e.i(18050),o=e.i(72064),t=e.i(19455),a=e.i(46798),s=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:l,ariaLabel:d,tone:c="muted",disabled:u,className:b,iconClassName:x,onClick:f}=e;return(0,r.jsx)(a.TooltipProvider,{delayDuration:150,children:(0,r.jsxs)(a.Tooltip,{children:[(0,r.jsx)(a.TooltipTrigger,{asChild:!0,children:(0,r.jsx)(t.Button,{type:"button",variant:"plain",size:"icon",className:(0,s.cn)("icon-tooltip-btn","h-4 w-4 border-none p-0",n[c],b),disabled:u,"aria-label":null!=d?d:l,onClick:f,children:(0,r.jsx)(o.default,{name:i,size:16,className:x})})}),(0,r.jsx)(a.TooltipContent,{side:"bottom",align:"center",className:"",children:l})]})})}},56708,e=>{"use strict";e.s(["ManageChromeHeaderActions",()=>i,"ManageFeatureChrome",()=>n]);var r=e.i(18050),o=e.i(71645),t=e.i(74080),a=e.i(72064);let s=(0,o.createContext)(null);function n(e){let{title:t,description:n,children:i,showTitle:l=!0,headerIcon:d}=e,[c,u]=(0,o.useState)(null);return(0,r.jsxs)("div",{className:"manage-page-wrap flex min-h-0 flex-1 flex-col",children:[(0,r.jsxs)("div",{className:"manage-page-header flex shrink-0 items-start justify-between gap-[var(--space-4)] pb-[var(--space-4)]",children:[l?(0,r.jsxs)("div",{className:"manage-page-title-block flex items-center",children:[d&&(0,r.jsx)("div",{className:"mr-[16px] rounded-md bg-[var(--green-light)] px-4 py-3",children:(0,r.jsx)(a.default,{name:d,size:24,className:"text-[var(--green-dark)]",strokeWidth:1.5})}),(0,r.jsxs)("div",{className:"pt-2",children:[(0,r.jsx)("h1",{className:"manage-page-title",children:t}),(0,r.jsx)("p",{className:"manage-page-desc",children:n})]})]}):null,(0,r.jsx)("div",{ref:u,className:"manage-page-header-actions self-start"})]}),(0,r.jsx)("div",{className:"manage-page-body flex min-h-0 min-w-0 flex-1 flex-col",children:(0,r.jsx)(s.Provider,{value:c,children:i})})]})}function i(e){let{children:r}=e,a=(0,o.useContext)(s);return(0,o.useSyncExternalStore)(()=>()=>{},()=>!0,()=>!1)&&a?(0,t.createPortal)(r,a):null}},93479,e=>{"use strict";e.s(["Input",()=>t]);var r=e.i(18050),o=e.i(75157);function t(e){let{className:t,type:a="text",size:s="default",...n}=e;return(0,r.jsx)("input",{type:a,"data-slot":"input","data-size":s,className:(0,o.cn)("h-9 w-full appearance-none rounded-md border border-solid border-border bg-transparent px-3 text-base outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none] data-[size=default]:h-9 data-[size=lg]:h-10 data-[size=sm]:h-7",t),...n})}},20783,e=>{"use strict";e.s(["composeRefs",()=>t,"useComposedRefs",()=>a]);var r=e.i(71645);function o(e,r){if("function"==typeof e)return e(r);null!=e&&(e.current=r)}function t(){for(var e=arguments.length,r=Array(e),t=0;t<e;t++)r[t]=arguments[t];return e=>{let t=!1,a=r.map(r=>{let a=o(r,e);return t||"function"!=typeof a||(t=!0),a});if(t)return()=>{for(let e=0;e<a.length;e++){let t=a[e];"function"==typeof t?t():o(r[e],null)}}}}function a(){for(var e=arguments.length,o=Array(e),a=0;a<e;a++)o[a]=arguments[a];return r.useCallback(t(...o),o)}},24687,e=>{"use strict";e.s(["Textarea",()=>t]);var r=e.i(18050),o=e.i(75157);function t(e){let{className:t,...a}=e;return(0,r.jsx)("textarea",{"data-slot":"textarea",className:(0,o.cn)("flex min-h-20 w-full rounded-md border border-solid border-border bg-transparent px-3 py-2 text-sm outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none]",t),...a})}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,99650,e=>{"use strict";e.s(["persistAgentEnv",()=>l]);var t=e.i(13354),a=e.i(70074),r=e.i(82136),n=e.i(65934);async function l(e,l,s,i,o,c){var d,u,p,m;let f=n.useAppStore.getState(),g={tools:f.agentConfig.tools.slice(),disallowedTools:f.agentConfig.disallowedTools.slice(),mcpServers:f.agentConfig.mcpServers.slice(),skills:f.agentConfig.skills.slice(),agentTeams:f.agentConfig.agentTeams.slice(),model:f.agentConfig.model,rules:f.agentConfig.rules.slice(),effort:null!=(d=f.agentConfig.effort)?d:null,background:null!=(u=f.agentConfig.background)&&u,isolation:null!=(p=f.agentConfig.isolation)?p:"",whentouse:null!=(m=f.agentConfig.whentouse)?m:"",env:i,llmProviders:f.agentConfig.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),...c},x=await (0,r.loadAgentPrompt)(e,l,s);await (0,r.saveAgentConfig)(e,l,s,g,{prompt:x}),f.setAgentConfig({...g,env:{...i}}),n.useAppStore.getState().wsConnected&&o();let h=n.useAppStore.getState();h.setStatus("环境变量已保存"+(h.wsConnected?",已请求 worker 重新加载配置":""),(0,a.resolveInfoStatusClass)(h.bridgeReady,h.wsConnected)),t.appToast.success(h.wsConnected?"已保存到 agent.json,并已请求 worker 重新加载配置。":"已保存到 agent.json。重连 WebSocket 后子进程环境将同步。")}},20783,e=>{"use strict";e.s(["composeRefs",()=>r,"useComposedRefs",()=>n]);var t=e.i(71645);function a(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function r(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return e=>{let r=!1,n=t.map(t=>{let n=a(t,e);return r||"function"!=typeof n||(r=!0),n});if(r)return()=>{for(let e=0;e<n.length;e++){let r=n[e];"function"==typeof r?r():a(t[e],null)}}}}function n(){for(var e=arguments.length,a=Array(e),n=0;n<e;n++)a[n]=arguments[n];return t.useCallback(r(...a),a)}},24687,e=>{"use strict";e.s(["Textarea",()=>r]);var t=e.i(18050),a=e.i(75157);function r(e){let{className:r,...n}=e;return(0,t.jsx)("textarea",{"data-slot":"textarea",className:(0,a.cn)("flex min-h-20 w-full rounded-md border border-solid border-border bg-transparent px-3 py-2 text-sm outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none]",r),...n})}},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={},r=/^\s*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*(.*)$/;for(let e=0;e<t.length;e++){let n=t[e],l=r.exec(n);l&&(a[l[1]]=function(e){let t=e.trimEnd();return t.length>=2&&'"'===t[0]&&'"'===t[t.length-1]?t.slice(1,-1).replace(/\\(.)/g,(e,t)=>"n"===t?"\n":'"'===t?'"':"\\"===t?"\\":"\\".concat(t)):t.length>=2&&"'"===t[0]&&"'"===t[t.length-1]?t.slice(1,-1):e}(l[2]))}return a}function r(e,a){let r=Array.isArray(e)?e:[],n=new Set;for(let e=0;e<r.length;e++){let t=r[e];t&&"object"==typeof t&&"string"==typeof t.key&&n.add(t.key)}let l=[];for(let e=0;e<r.length;e++){let n=r[e];if(!n||"object"!=typeof n||"string"!=typeof n.key)continue;let s=n.key;if(!Object.prototype.hasOwnProperty.call(a,s))continue;let i=a[s];null!=i&&""!==String(i).trim()&&l.push("".concat(s,"=").concat(t(String(i))))}let s=Object.keys(a).filter(e=>!n.has(e)).sort();for(let e=0;e<s.length;e++){let r=s[e],n=a[r];null!=n&&""!==String(n).trim()&&l.push("".concat(r,"=").concat(t(String(n))))}let i=l.join("\n");return i.length>0?"".concat(i,"\n"):""}e.s(["buildEnvFileContentFromForm",()=>r,"parseEnvContentToMap",()=>a],18900),e.s(["loadDemoSingleMessage",()=>c,"loadSystemEnv",()=>s,"saveSystemEnv",()=>i,"saveSystemMcpJson",()=>o],69051);var n=e.i(29250),l=e.i(36845);async function s(e,t,a){return(0,n.get)((0,l.buildSystemEnvApiUrl)(e,t,a))}async function i(e,t,a,r){await (0,n.patch)((0,l.buildSystemEnvApiUrl)(e,t,a),{content:r})}async function o(e,t,a,r){await (0,n.patch)((0,l.buildSystemMcpJsonApiUrl)(e,t,a),{content:r})}async function c(){return(0,n.get)("/api/demo/single-message")}},28370,e=>{"use strict";e.s(["AgentEnvGroupSettingsView",()=>w],28370);var t=e.i(18050),a=e.i(85413),r=e.i(2839),n=e.i(19455),l=e.i(93479),s=e.i(24687),i=e.i(67489),o=e.i(75157);let c="__empty__",d=[{value:"anthropic",label:"anthropic"},{value:"openai",label:"openai"}],u=[{value:"1",label:"启用全部 MCP 常驻会话"},{value:"0",label:"禁用"}];function p(e){let{group:a,fields:r,fieldValues:n,whentouseValue:p,onFieldChange:m,onWhentouseChange:f}=e;return(0,t.jsxs)("div",{className:"divide-y divide-[var(--ds-border)]",children:["system"===a?(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-[var(--ds-text)]",htmlFor:"agent-env-whentouse",children:"使用时机(whentouse)"}),(0,t.jsx)(s.Textarea,{id:"agent-env-whentouse",rows:3,spellCheck:!1,autoComplete:"off",placeholder:"输入该 agent 的使用时机描述","aria-label":"agent.json whentouse",className:"min-h-[88px] resize-y border-[var(--ds-border)] bg-[var(--ds-bg)] placeholder:text-[var(--text-placeholder)]",value:p,onChange:e=>f(e.target.value)})]}):null,r.map(e=>{let a="agent-env-field-".concat(e.key),r="string"==typeof n[e.key]?n[e.key]:"";if("LLM_PROVIDER"===e.key){let n="anthropic"===r||"openai"===r?r:"";return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-basic text-[var(--ds-text)]",htmlFor:a,children:e.label}),(0,t.jsxs)(i.Select,{value:n||c,onValueChange:t=>m(e.key,t===c?"":t),children:[(0,t.jsx)(i.SelectTrigger,{id:a,className:(0,o.cn)("h-10 w-full border-[var(--ds-border)] bg-[var(--ds-bg)]",!n&&"text-[var(--text-placeholder)]"),children:(0,t.jsx)(i.SelectValue,{placeholder:"请选择"})}),(0,t.jsxs)(i.SelectContent,{children:[(0,t.jsx)(i.SelectItem,{value:c,children:"请选择"}),d.map(e=>(0,t.jsx)(i.SelectItem,{value:e.value,children:e.label},e.value))]})]})]},e.key)}if("TUITUI_CHANNEL_SESSION"===e.key){let n="1"===r?"1":"0";return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-basic text-[var(--ds-text)]",htmlFor:a,children:e.label}),(0,t.jsxs)(i.Select,{value:n,onValueChange:t=>m(e.key,t),children:[(0,t.jsx)(i.SelectTrigger,{id:a,className:"h-10 w-full border-[var(--ds-border)] bg-[var(--ds-bg)]",children:(0,t.jsx)(i.SelectValue,{placeholder:"请选择"})}),(0,t.jsx)(i.SelectContent,{children:u.map(e=>(0,t.jsx)(i.SelectItem,{value:e.value,children:e.label},e.value))})]})]},e.key)}return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsx)("label",{className:"text-[var(--ds-text)]",htmlFor:a,children:e.label}),(0,t.jsx)(l.Input,{id:a,type:"text",spellCheck:!1,autoComplete:"off",placeholder:e.placeholder,className:"h-10 border-[var(--ds-border)] bg-[var(--ds-bg)] placeholder:text-[var(--text-placeholder)]",value:r,onChange:t=>m(e.key,t.target.value)})]},e.key)})]})}var m=e.i(71645),f=e.i(13354),g=e.i(87243),x=e.i(67327);let h=["llm","git","geelib","tutui","system"];var v=e.i(99650),b=e.i(18900),y=e.i(69051),j=e.i(65934);function w(e){let{group:l}=e,{loading:s,saving:i,groupFields:o,fieldValues:c,whentouseValue:d,setField:u,setWhentouseValue:w,reset:S,save:C}=function(e){let t=(0,j.useAppStore)(e=>e.wsUrl),a=(0,j.useAppStore)(e=>e.apiBase),r=(0,j.useAppStore)(e=>e.agentConfig),{currentAgent:n,loadAgentConfig:l}=(0,g.useSession)(),{sendReloadAgentConfig:s}=(0,x.useWebSocketSender)(),[i,o]=(0,m.useState)(!0),[c,d]=(0,m.useState)(!1),[u,p]=(0,m.useState)([]),[w,S]=(0,m.useState)({}),[C,k]=(0,m.useState)({}),[N,T]=(0,m.useState)(""),A=(0,m.useMemo)(()=>(function(e){let t={};for(let e of h)t[e]=[];for(let a of e)h.includes(a.group)&&t[a.group].push(a);return t})(u)[e],[u,e]),E=(0,m.useCallback)(e=>{k(function(e,t,a){let r={};for(let n of t){let t=e[n.key];if("string"==typeof t&&t.length>0){r[n.key]=t;continue}let l=a[n.key];r[n.key]="string"==typeof l?l:""}return r}(e,A,w))},[A,w]),M=(0,m.useCallback)(e=>{T("string"==typeof e?e:"")},[]),R=(0,m.useCallback)(async()=>{try{let e=await (0,y.loadSystemEnv)(t,a,n()),r="string"==typeof e.content?e.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():"",r="string"==typeof a.group?a.group.trim():"";e&&h.includes(r)&&t.push({key:e,group:r,label:"string"==typeof a.label&&a.label.trim()?a.label.trim():e,placeholder:"string"==typeof a.placeholder?a.placeholder:""})}return t}(e.schema),s=(0,b.parseEnvContentToMap)(r);p(l),S(function(e,t){let a={};for(let n of e){var r;a[n.key]=null!=(r=t[n.key])?r:""}return a}(l,s))}catch(e){f.appToast.error("加载环境变量表单配置失败:".concat(e instanceof Error?e.message:String(e))),p([]),S({})}},[t,a,n]),I=(0,m.useCallback)(async()=>{o(!0);try{await Promise.all([l(),R()])}finally{o(!1)}},[l,R]);(0,m.useEffect)(()=>{I()},[I]),(0,m.useEffect)(()=>{!i&&A.length&&E({...r.env})},[r.env,E,i,A.length]),(0,m.useEffect)(()=>{i||"system"!==e||M(r.whentouse)},[r.whentouse,e,i,M]);let U=(0,m.useCallback)((e,t)=>{k(a=>({...a,[e]:t}))},[]),P=(0,m.useCallback)(()=>{E({...r.env}),"system"===e&&M(r.whentouse)},[r.env,r.whentouse,e,E,M]),L=(0,m.useCallback)(async()=>{let r=function(e,t,a){let r={...e};for(let e of t){var n;let t=String(null!=(n=a[e.key])?n:"").trim();t?r[e.key]=t:delete r[e.key]}return r}(j.useAppStore.getState().agentConfig.env,A,C);d(!0);try{if("system"===e){let e=j.useAppStore.getState().agentConfig;j.useAppStore.getState().setAgentConfig({...e,whentouse:N})}await (0,v.persistAgentEnv)(t,a,n(),r,s),await l()}catch(e){f.appToast.error("保存环境变量失败:".concat(e instanceof Error?e.message:String(e)))}finally{d(!1)}},[A,C,N,e,t,a,n,s,l]);return{loading:i,saving:c,groupFields:A,fieldValues:C,whentouseValue:N,setField:U,setWhentouseValue:T,reset:P,save:L}}(l),k="system"===l||o.length>0;return(0,t.jsxs)("div",{className:"manage-page-content flex min-h-0 flex-1 flex-col rounded-xl border bg-[#fff] shadow-[var(--shadow-md)]",children:[(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-y-auto p-4",children:s?(0,t.jsx)(r.Loading,{className:"min-h-[240px]",text:"加载中…"}):k?(0,t.jsx)(p,{group:l,fields:o,fieldValues:c,whentouseValue:d,onFieldChange:u,onWhentouseChange:w}):(0,t.jsx)(a.Empty,{className:"min-h-[240px]",text:"暂无可配置项"})}),(0,t.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] px-4 py-3",children:[(0,t.jsx)(n.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:s||i||!k,onClick:()=>S(),className:"cursor-pointer",children:"取消"}),(0,t.jsx)(n.Button,{type:"button",size:"lg",disabled:s||i||!k,onClick:()=>void C(),className:"cursor-pointer",children:i?"保存中…":"保存"})]})]})}},36413,e=>{"use strict";e.s(["StatusBadge",()=>i],36413);var t=e.i(18050),a=e.i(25913),r=e.i(75157);let n=(0,a.cva)("inline-flex shrink-0 items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l(e){let{className:a,variant:l,...s}=e;return(0,t.jsx)("span",{"data-slot":"badge",className:(0,r.cn)(n({variant:l}),a),...s})}let s={success:{root:"border-transparent bg-[var(--green-light)] text-[var(--green-dark)]",dot:"bg-[var(--ds-ok)]"},danger:{root:"border-transparent bg-[#fef2f2] text-[var(--ds-danger)]",dot:"bg-[var(--ds-danger)]"},default:{root:"border-transparent bg-[var(--surface-2)] text-[var(--ds-muted)]",dot:"bg-[var(--ds-muted)]"},progress:{root:"border-transparent bg-[color-mix(in_srgb,var(--blue)_12%,var(--surface-1))] text-[var(--blue)]",dot:"bg-[var(--blue)]"},warning:{root:"border-transparent bg-[color-mix(in_srgb,var(--amber)_14%,var(--surface-1))] text-[var(--amber)]",dot:"bg-[var(--amber)]"}};function i(e){let{tone:a="default",showDot:n=!0,dotClassName:i,className:o,children:c,...d}=e,u=s[a];return(0,t.jsxs)(l,{variant:"outline",className:(0,r.cn)("gap-1.5",u.root,o),...d,children:[n?(0,t.jsx)("span",{className:(0,r.cn)("size-1.5 shrink-0 rounded-full",u.dot,i),"aria-hidden":!0}):null,c]})}},55242,e=>{"use strict";e.s(["AppDialog",()=>l]);var t=e.i(18050),a=e.i(71645),r=e.i(76639),n=e.i(75157);function l(e){let{open:l,onOpenChange:s,title:i,children:o,footer:c,width:d="max-w-3xl",minHeight:u}=e,p=(0,a.useId)();return(0,t.jsx)(r.Dialog,{open:l,onOpenChange:s,children:(0,t.jsxs)(r.DialogContent,{"aria-labelledby":p,className:(0,n.cn)(d,u?"!min-h-[--min-h]":""),style:u?{"--min-h":u}:void 0,children:[(0,t.jsxs)(r.DialogHeader,{children:[(0,t.jsx)(r.DialogTitle,{id:p,children:i}),(0,t.jsx)(r.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(r.DialogBody,{className:"!px-4 !py-3",children:o}),c?(0,t.jsx)("div",{className:"flex flex-shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-4 py-3",children:c}):null]})})}},92715,e=>{"use strict";e.s(["AppTable",()=>u],92715);var t=e.i(18050),a=e.i(85413),r=e.i(71645),n=e.i(75157);let l=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("div",{className:"relative w-full overflow-auto",children:(0,t.jsx)("table",{ref:a,className:(0,n.cn)("w-full caption-bottom border-collapse",r),...l})})});l.displayName="Table";let s=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("thead",{ref:a,className:(0,n.cn)("[&_tr]:table [&_tr]:w-full [&_tr]:table-fixed [&_tr]:border-b",r),...l})});s.displayName="TableHeader";let i=r.forwardRef((e,a)=>{let{className:l,viewportFit:s=!0,viewportReserveBottom:i=16,viewportPaginationReserve:o=0,style:c,...d}=e,u=r.useRef(null),p=r.useCallback(e=>{u.current=e,"function"==typeof a?a(e):a&&(a.current=e)},[a]),[m,f]=r.useState(void 0);return r.useLayoutEffect(()=>{var e,t;if(!s)return void f(void 0);let a=()=>{var e,t;let a=u.current;if(!a)return;let r=a.getBoundingClientRect().top;f(Math.max(80,Math.floor((null!=(t=null==(e=window.visualViewport)?void 0:e.height)?t:window.innerHeight)-r-(i+o))))};a();let r=new ResizeObserver(()=>{a()});try{r.observe(document.body)}catch(e){}return window.addEventListener("resize",a),null==(e=window.visualViewport)||e.addEventListener("resize",a),null==(t=window.visualViewport)||t.addEventListener("scroll",a),window.addEventListener("scroll",a,!0),()=>{var e,t;r.disconnect(),window.removeEventListener("resize",a),null==(e=window.visualViewport)||e.removeEventListener("resize",a),null==(t=window.visualViewport)||t.removeEventListener("scroll",a),window.removeEventListener("scroll",a,!0)}},[s,i,o]),(0,t.jsx)("tbody",{ref:p,className:(0,n.cn)("block overflow-y-auto [&_tr:last-child]:border-b-0 [&_tr:last-child_td]:border-b-0 [&_tr]:table [&_tr]:w-full [&_tr]:table-fixed",l),style:s&&void 0!==m?{...c,maxHeight:m}:c,...d})});i.displayName="TableBody";let o=r.forwardRef((e,a)=>{let{className:r,hoverable:l=!0,...s}=e;return(0,t.jsx)("tr",{ref:a,className:(0,n.cn)("border-b transition-colors [&>td]:transition-colors data-[state=selected]:[&>td]:!bg-[var(--ds-item-active)]",l&&"group/table-row",r),...s})});o.displayName="TableRow";let c=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("th",{ref:a,className:(0,n.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",r),...l})});c.displayName="TableHead";let d=r.forwardRef((e,a)=>{let{className:r,...l}=e;return(0,t.jsx)("td",{ref:a,className:(0,n.cn)("border-x-0 border-b border-t-0 border-solid border-[var(--border-subtle)] p-3 align-middle transition-colors group-has-[td:hover]/table-row:!bg-[var(--ds-item-hover)]",r),...l})});function u(e){let{rows:r,columns:u,getRowKey:p,className:m,rowClassName:f,headerRowClassName:g,emptyText:x,emptyNode:h,bodyProps:v}=e;return(0,t.jsx)("div",{className:(0,n.cn)("overflow-hidden border border-[var(--ds-border)]",m),children:(0,t.jsxs)(l,{children:[(0,t.jsx)(s,{children:(0,t.jsx)(o,{className:(0,n.cn)("bg-[var(--ds-main-tint)] hover:bg-[var(--ds-main-tint)]",g),children:u.map(e=>(0,t.jsx)(c,{className:e.headerClassName,children:e.title},e.key))})}),(0,t.jsx)(i,{...v,children:r.length?r.map(e=>(0,t.jsx)(o,{className:"function"==typeof f?f(e):f,children:u.map(a=>(0,t.jsx)(d,{className:a.cellClassName,children:a.render(e)},a.key))},p(e))):(0,t.jsx)(o,{hoverable:!1,children:(0,t.jsx)(d,{colSpan:u.length,className:"py-6",children:null!=h?h:(0,t.jsx)(a.Empty,{text:x})})})})]})})}d.displayName="TableCell"},62427,e=>{"use strict";e.s(["clearRuntimeMcpItemConfig",()=>j,"deleteRuntimeMcp",()=>p,"deleteRuntimeSkill",()=>w,"deleteRuntimeTool",()=>u,"exportRuntimeMcpUrl",()=>f,"exportRuntimeSkillUrl",()=>S,"exportRuntimeToolUrl",()=>m,"importRuntimeMcp",()=>x,"importRuntimeTool",()=>g,"installCloudSkill",()=>k,"listBaseSkills",()=>l,"listCloudSkillCatalog",()=>C,"listInstalledSkills",()=>s,"listInstalledTools",()=>n,"listMcpServers",()=>r,"listRuntimeMcpPackages",()=>d,"listRuntimeTools",()=>c,"loadBaseSkillMd",()=>i,"loadRemoteMcpJson",()=>h,"loadRuntimeMcpItemConfig",()=>b,"saveBaseSkillMd",()=>o,"saveRemoteMcpJson",()=>v,"saveRuntimeMcpItemConfig",()=>y]);var t=e.i(29250),a=e.i(36845);async function r(e,r,n){let l=await (0,t.get)((0,a.buildMcpServersListUrl)(e,r,n));return{servers:Array.isArray(l.servers)?l.servers:[]}}async function n(e,r,n){let l=await (0,t.get)((0,a.buildToolInstalledListUrl)(e,r,n));return{tools:Array.isArray(l.tools)?l.tools:[]}}async function l(e,r,n){let l=await (0,t.get)((0,a.buildSkillBaseListUrl)(e,r,n));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function s(e,r,n){let l=await (0,t.get)((0,a.buildSkillInstalledListUrl)(e,r,n));return{skills:Array.isArray(l.skills)?l.skills:[]}}async function i(e,r,n,l){return(0,t.get)((0,a.buildBaseSkillMdUrl)(e,r,n,l))}async function o(e,r,n,l,s){await (0,t.put)((0,a.buildBaseSkillMdUrl)(e,r,n,l),{content:s})}async function c(e,r,n){let l=await (0,t.get)((0,a.buildToolsRuntimeFilesUrl)(e,r,n));return{runtimeToolsDir:"string"==typeof l.runtimeToolsDir?l.runtimeToolsDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function d(e,r,n){let l=await (0,t.get)((0,a.buildMcpRuntimeFilesUrl)(e,r,n));return{mcpRuntimeDir:"string"==typeof l.mcpRuntimeDir?l.mcpRuntimeDir:"",items:Array.isArray(l.items)?l.items.filter(e=>!!(e&&e.id)):[]}}async function u(e,r,n,l){return(0,t.del)((0,a.buildToolsRuntimeDeleteUrl)(e,r,n,l))}async function p(e,r,n,l){return(0,t.del)((0,a.buildMcpRuntimeDeleteUrl)(e,r,n,l))}function m(e,t,r,n){return(0,a.buildToolsRuntimeExportUrl)(e,t,r,n)}function f(e,t,r,n){return(0,a.buildMcpRuntimeExportUrl)(e,t,r,n)}async function g(e,r,n,l){let s=new FormData;return s.append("file",l),(0,t.post)((0,a.buildToolsRuntimeImportUrl)(e,r,n),s,{type:"file"})}async function x(e,r,n,l){let s=new FormData;return s.append("file",l),(0,t.post)((0,a.buildMcpRuntimeImportUrl)(e,r,n),s,{type:"file"})}async function h(e,r,n){return(0,t.get)((0,a.buildRemoteMcpJsonUrl)(e,r,n))}async function v(e,r,n,l){await (0,t.post)((0,a.buildRemoteMcpJsonUrl)(e,r,n),{content:l})}async function b(e,r,n,l,s){return(0,t.get)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,n,l,s))}async function y(e,r,n,l,s,i){await (0,t.put)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,n,l,s),{server:i})}async function j(e,r,n,l,s){await (0,t.del)((0,a.buildRuntimeMcpItemConfigUrl)(e,r,n,l,s))}async function w(e,r,n,l){return(0,t.del)((0,a.buildSkillsRuntimeDeleteUrl)(e,r,n,l))}function S(e,t,r,n){return(0,a.buildSkillsRuntimeExportUrl)(e,t,r,n)}async function C(e,r,n,l,s,i){let o=await (0,t.get)((0,a.buildCloudSkillCatalogUrl)(e,r,n,l,s,i));return{items:Array.isArray(o.items)?o.items:[],totalPages:Number(o.totalPages||0)}}async function k(e,r,n,l){await (0,t.post)((0,a.buildCloudSkillInstallUrl)(e,r,n),{id:l})}},53925,e=>{"use strict";e.s(["ResourceImportDialog",()=>u],53925);var t=e.i(18050),a=e.i(71645),r=e.i(72064),n=e.i(75157),l=e.i(19455);function s(e){return e<1024?"".concat(e," B"):e<1048576?"".concat((e/1024).toFixed(1)," KB"):"".concat((e/1048576).toFixed(1)," MB")}function i(e){let{uploadUrl:i,accept:o,disabled:c=!1,multiple:d=!1,maxFileSize:u=0x3200000,autoUpload:p=!1,method:m="POST",transport:f="xhr",fieldName:g="file",headers:x,extraFormData:h,autoRetryTimes:v=0,autoRetryDelayMs:b=800,selectionOnly:y=!1,className:j,emptyTitle:w="点击或拖拽文件到此处",emptyHint:S="支持上传文件",onFilesChange:C,onUploadSuccess:k,onUploadError:N,onValidationError:T}=e,A=a.useId(),E=a.useRef(null),M=a.useRef(new Map),R=a.useRef(new Map),I=a.useRef([]),[U,P]=a.useState(!1),[L,z]=a.useState([]),B=a.useMemo(()=>o?o.split(",").map(e=>e.trim().toLowerCase()).filter(Boolean):[],[o]);a.useEffect(()=>{I.current=L,null==C||C(L)},[L,C]),a.useEffect(()=>()=>{for(let e of M.current.values())e.abort();for(let e of R.current.values())e.abort();for(let e of I.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl)},[]);let O=a.useCallback((e,t)=>{z(a=>a.map(a=>a.id===e?{...a,...t}:a))},[]),D=a.useCallback(async(e,t)=>{let a=I.current.find(t=>t.id===e);if(!a||c)return;O(e,{status:t>0?"retrying":"uploading",progress:0,error:"",retryCount:t});let r=new FormData;if(h)for(let[e,t]of Object.entries(h))r.append(e,t);r.append(g,a.file);try{let t="";if("fetch"===f){let a=new AbortController;R.current.set(e,a);let n=await fetch(i,{method:m,headers:x,body:r,signal:a.signal}),l=await n.text();try{t=l?JSON.parse(l):""}catch(e){t=l}if(!n.ok)throw Error("上传失败:".concat(n.status," ").concat(n.statusText))}else t=await new Promise((t,a)=>{let n=new XMLHttpRequest;if(M.current.set(e,n),n.open(m,i,!0),x)for(let[e,t]of Object.entries(x))n.setRequestHeader(e,t);n.upload.onprogress=t=>{if(!t.lengthComputable)return;let a=Math.min(100,Math.round(t.loaded/t.total*100));O(e,{progress:a})},n.onerror=()=>a(Error("网络异常,上传失败")),n.onabort=()=>a(Error("__ABORTED__")),n.onload=()=>{n.status>=200&&n.status<300?t(function(e){let t=e.responseText||"";try{return JSON.parse(t)}catch(e){return t}}(n)):a(Error("上传失败:".concat(n.status," ").concat(n.statusText)))},n.send(r)});O(e,{status:"success",progress:100,error:""});let a=I.current.find(t=>t.id===e);a&&(null==k||k(a,t))}catch(n){let a=n instanceof Error?n.message:String(n);if("__ABORTED__"===a)return void O(e,{status:"selected",progress:0,error:""});if(t<v){O(e,{status:"retrying",error:"重试中(".concat(t+1,"/").concat(v,")")}),await new Promise(e=>window.setTimeout(e,b)),await D(e,t+1);return}O(e,{status:"error",error:a});let r=I.current.find(t=>t.id===e);r&&(null==N||N(r,a))}finally{M.current.delete(e),R.current.delete(e)}},[b,v,c,h,g,x,m,N,k,f,O,i]),_=a.useCallback(e=>{D(e,0)},[D]),F=a.useCallback(e=>{var t,a;null==(t=M.current.get(e))||t.abort(),null==(a=R.current.get(e))||a.abort()},[]),V=a.useCallback(()=>{for(let e of I.current)("selected"===e.status||"error"===e.status)&&_(e.id)},[_]),J=a.useCallback(e=>{if(c||!e.length)return;let t=new Set(I.current.map(e=>"".concat(e.file.name,"::").concat(e.file.size))),a=[];for(let r of e){let e="".concat(r.name,"::").concat(r.size);if(!t.has(e)){if(!function(e,t){if(!t.length)return!0;let a=e.name.toLowerCase(),r=(e.type||"").toLowerCase();return t.some(e=>e.startsWith(".")?a.endsWith(e):e.endsWith("/*")?r.startsWith("".concat(e.slice(0,-1))):r===e)}(r,B)){null==T||T("文件类型不支持:".concat(r.name));continue}if(r.size>u){null==T||T("文件过大(最大 ".concat(s(u),"):").concat(r.name));continue}t.add(e),a.push({id:"".concat(Date.now(),"-").concat(Math.random().toString(36).slice(2,8)),file:r,status:"selected",progress:0,error:"",retryCount:0,previewUrl:r.type.startsWith("image/")?URL.createObjectURL(r):""})}}if(!a.length)return;let r=d?[...I.current,...a]:[a[a.length-1]];if(!d)for(let e of I.current)e.previewUrl&&URL.revokeObjectURL(e.previewUrl);if(z(r),p&&!y)for(let e of a)_(e.id)},[B,p,c,u,d,T,y,_]),K=a.useCallback(e=>{let t=e.target.files;t&&(J(Array.from(t)),e.target.value="")},[J]),H=a.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation(),P(!1),c||J(Array.from(null!=(t=e.dataTransfer.files)?t:[]))},[J,c]);return(0,t.jsxs)("div",{className:(0,n.cn)("flex min-h-0 w-full flex-col gap-3",j),children:[(0,t.jsx)("input",{ref:E,id:A,type:"file",hidden:!0,accept:o,multiple:d,disabled:c,onChange:K}),(0,t.jsxs)("label",{htmlFor:A,onDragOver:e=>{e.preventDefault(),c||P(!0)},onDragLeave:e=>{e.preventDefault(),P(!1)},onDrop:H,className:(0,n.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)]",U&&"bg-[var(--ds-accent)]/5 border-[var(--ds-accent)]",c&&"cursor-not-allowed opacity-60"),children:[(0,t.jsx)(r.default,{name:"Upload",size:20,className:"text-[var(--ds-muted)]"}),(0,t.jsx)("div",{className:"text-[var(--ds-text)]",children:w}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:S})]}),L.length?(0,t.jsx)("div",{className:"space-y-2",children:L.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-[var(--ds-text)]",children:e.file.name}),(0,t.jsx)("div",{className:"text-[var(--ds-muted)]",children:s(e.file.size)}),e.previewUrl?(0,t.jsx)("img",{src:e.previewUrl,alt:e.file.name,className:"mt-2 h-14 w-14 rounded object-cover"}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsx)("div",{className:"mt-2 h-1.5 w-full overflow-hidden rounded bg-[var(--ds-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-[var(--ds-danger)]",children:e.error||"上传失败"}):null]}),y?null:(0,t.jsxs)("div",{className:"flex items-center gap-1",children:["success"===e.status?(0,t.jsx)(r.default,{name:"CheckCircle2",size:16,className:"text-[var(--ds-accent)]"}):null,"selected"===e.status||"error"===e.status?(0,t.jsxs)(l.Button,{type:"button",size:"sm",variant:"outline",disabled:c,onClick:()=>_(e.id),children:["error"===e.status?(0,t.jsx)(r.default,{name:"RefreshCw",size:14,className:"mr-1"}):null,"error"===e.status?"重试":"上传"]}):null,"uploading"===e.status||"retrying"===e.status?(0,t.jsxs)(l.Button,{type:"button",size:"sm",variant:"outline",onClick:()=>F(e.id),children:[(0,t.jsx)(r.default,{name:"XCircle",size:14,className:"mr-1"}),"取消"]}):null]})]})},e.id))}):null,!y&&!p&&L.some(e=>"selected"===e.status||"error"===e.status)?(0,t.jsx)("div",{className:"flex justify-end",children:(0,t.jsx)(l.Button,{type:"button",size:"sm",onClick:V,disabled:c,children:"上传"})}):null]})}var o=e.i(76639),c=e.i(13354),d=e.i(29250);function u(e){let{open:r,onOpenChange:n,title:s,description:u,uploadUrl:p,resetKey:m}=e,[f,g]=(0,a.useState)(!1),[x,h]=(0,a.useState)(null),v=(0,a.useCallback)(()=>{n(!1),h(null)},[n]),b=(0,a.useCallback)(async()=>{if(!x)return void c.appToast.info("请先选择 zip 文件");let e=new FormData;e.append("file",x),g(!0);try{let t=await (0,d.bridgeFetch)(p,{method:"POST",body:e}),a=Number(t.imported||0),r=Number(t.overwritten||0),n=Array.isArray(t.rejected)?t.rejected.length:0;c.appToast.success("导入完成:导入 ".concat(a,",覆盖 ").concat(r)+(n>0?",拒绝 ".concat(n):"")),v()}catch(e){c.appToast.error("导入失败:".concat(e instanceof Error?e.message:String(e)))}finally{g(!1)}},[v,x,p]);return(0,t.jsx)(o.Dialog,{open:r,onOpenChange:e=>{n(e),e||h(null)},children:(0,t.jsxs)(o.DialogContent,{className:"flex min-h-[320px] max-w-[560px] flex-col",children:[(0,t.jsxs)(o.DialogHeader,{children:[(0,t.jsxs)("div",{children:[(0,t.jsx)(o.DialogTitle,{children:s}),(0,t.jsx)(o.DialogDescription,{children:u})]}),(0,t.jsx)(o.DialogClose,{className:"sidebar-icon-btn","aria-label":"关闭",onClick:v,children:"✕"})]}),(0,t.jsxs)("div",{className:"m-3 flex flex-1 flex-col gap-3",children:[(0,t.jsx)(i,{uploadUrl:p,accept:".zip,application/zip",maxFileSize:0x3200000,multiple:!1,disabled:f,selectionOnly:!0,emptyTitle:"点击或拖拽 zip 文件到此处",emptyHint:"支持 .zip 格式,最大 50MB",onFilesChange:e=>{var t,a;h(null!=(a=null==(t=e[0])?void 0:t.file)?a:null)},onValidationError:e=>{c.appToast.info(e)}},"".concat(r?"open":"closed","-").concat(null!=m?m:p)),(0,t.jsxs)("div",{className:"mt-auto flex justify-end pt-2",children:[(0,t.jsx)(l.Button,{className:"mr-[12px]",type:"button",variant:"plain-outline",size:"lg",onClick:v,children:"取消"}),(0,t.jsx)(l.Button,{type:"button",size:"lg",variant:"default",disabled:f||null==x,onClick:()=>void b(),children:f?"导入中…":"确定"})]})]})]})})}},98183,(e,t,a)=>{"use strict";function r(e){let t={};for(let[a,r]of e.entries()){let e=t[a];void 0===e?t[a]=r:Array.isArray(e)?e.push(r):t[a]=[e,r]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function l(e){let t=new URLSearchParams;for(let[a,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(a,n(e));else t.set(a,n(r));return t}function s(e){for(var t=arguments.length,a=Array(t>1?t-1:0),r=1;r<t;r++)a[r-1]=arguments[r];for(let t of a){for(let a of t.keys())e.delete(a);for(let[a,r]of t.entries())e.append(a,r)}return e}Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{assign:function(){return s},searchParamsToUrlQuery:function(){return r},urlQueryToSearchParams:function(){return l}})},95057,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{formatUrl:function(){return l},formatWithValidation:function(){return i},urlObjectKeys:function(){return s}});let r=e.r(90809)._(e.r(98183)),n=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:a}=e,l=e.protocol||"",s=e.pathname||"",i=e.hash||"",o=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:a&&(c=t+(~a.indexOf(":")?"["+a+"]":a),e.port&&(c+=":"+e.port)),o&&"object"==typeof o&&(o=String(r.urlQueryToSearchParams(o)));let d=e.search||o&&"?"+o||"";return l&&!l.endsWith(":")&&(l+=":"),e.slashes||(!l||n.test(l))&&!1!==c?(c="//"+(c||""),s&&"/"!==s[0]&&(s="/"+s)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),d&&"?"!==d[0]&&(d="?"+d),""+l+c+(s=s.replace(/[?#]/g,encodeURIComponent))+(d=d.replace("#","%23"))+i}let s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function i(e){return l(e)}},18967,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{DecodeError:function(){return g},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return v},NormalizeError:function(){return x},PageNotFoundError:function(){return h},SP:function(){return m},ST:function(){return f},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return c},getLocationOrigin:function(){return i},getURL:function(){return o},isAbsoluteUrl:function(){return s},isResSent:function(){return d},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return u},stringifyError:function(){return y}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,a=!1;return function(){for(var r=arguments.length,n=Array(r),l=0;l<r;l++)n[l]=arguments[l];return a||(a=!0,t=e(...n)),t}}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,s=e=>l.test(e);function i(){let{protocol:e,hostname:t,port:a}=window.location;return e+"//"+t+(a?":"+a:"")}function o(){let{href:e}=window.location,t=i();return e.substring(t.length)}function c(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function d(e){return e.finished||e.headersSent}function u(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function p(e,t){let a=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(a&&d(a))return r;if(!r)throw Object.defineProperty(Error('"'+c(e)+'.getInitialProps()" should resolve to an object. But found "'+r+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r}let m="undefined"!=typeof performance,f=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class x extends Error{}class h extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class v extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function y(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"isLocalURL",{enumerable:!0,get:function(){return l}});let r=e.r(18967),n=e.r(52817);function l(e){if(!(0,r.isAbsoluteUrl)(e))return!0;try{let t=(0,r.getLocationOrigin)(),a=new URL(e,t);return a.origin===t&&(0,n.hasBasePath)(a.pathname)}catch(e){return!1}}},84508,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},22016,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(a,{default:function(){return x},useLinkStatus:function(){return v}});let r=e.r(90809),n=e.r(18050),l=r._(e.r(71645)),s=e.r(95057),i=e.r(8372),o=e.r(18581),c=e.r(18967),d=e.r(84395);e.r(33525);let u=e.r(91949),p=e.r(73668),m=e.r(99781);e.r(84508);let f=e.r(65165);function g(e){return"string"==typeof e?e:(0,s.formatUrl)(e)}function x(e){var t;let a,r,s,[x,v]=(0,l.useOptimistic)(u.IDLE_LINK_STATUS),b=(0,l.useRef)(null),{href:y,as:j,children:w,prefetch:S=null,passHref:C,replace:k,shallow:N,scroll:T,onClick:A,onMouseEnter:E,onTouchStart:M,legacyBehavior:R=!1,onNavigate:I,ref:U,unstable_dynamicOnHover:P,...L}=e;a=w,R&&("string"==typeof a||"number"==typeof a)&&(a=(0,n.jsx)("a",{children:a}));let z=l.default.useContext(i.AppRouterContext),B=!1!==S,O=!1!==S?null===(t=S)||"auto"===t?f.FetchStrategy.PPR:f.FetchStrategy.Full:f.FetchStrategy.PPR,{href:D,as:_}=l.default.useMemo(()=>{let e=g(y);return{href:e,as:j?g(j):e}},[y,j]);R&&(r=l.default.Children.only(a));let F=R?r&&"object"==typeof r&&r.ref:U,V=l.default.useCallback(e=>(null!==z&&(b.current=(0,u.mountLinkInstance)(e,D,z,O,B,v)),()=>{b.current&&((0,u.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,u.unmountPrefetchableInstance)(e)}),[B,D,z,O,v]),J={ref:(0,o.useMergedRef)(V,F),onClick(e){R||"function"!=typeof A||A(e),R&&r.props&&"function"==typeof r.props.onClick&&r.props.onClick(e),z&&(e.defaultPrevented||function(e,t,a,r,n,s,i){let{nodeName:o}=e.currentTarget;if(!("A"===o.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,p.isLocalURL)(t)){n&&(e.preventDefault(),location.replace(t));return}if(e.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}l.default.startTransition(()=>{(0,m.dispatchNavigateAction)(a||t,n?"replace":"push",null==s||s,r.current)})}}(e,D,_,b,k,T,I))},onMouseEnter(e){R||"function"!=typeof E||E(e),R&&r.props&&"function"==typeof r.props.onMouseEnter&&r.props.onMouseEnter(e),z&&B&&(0,u.onNavigationIntent)(e.currentTarget,!0===P)},onTouchStart:function(e){R||"function"!=typeof M||M(e),R&&r.props&&"function"==typeof r.props.onTouchStart&&r.props.onTouchStart(e),z&&B&&(0,u.onNavigationIntent)(e.currentTarget,!0===P)}};return(0,c.isAbsoluteUrl)(_)?J.href=_:R&&!C&&("a"!==r.type||"href"in r.props)||(J.href=(0,d.addBasePath)(_)),s=R?l.default.cloneElement(r,J):(0,n.jsx)("a",{...L,...J,children:a}),(0,n.jsx)(h.Provider,{value:x,children:s})}let h=(0,l.createContext)(u.IDLE_LINK_STATUS),v=()=>(0,l.useContext)(h);("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esModule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},20378,e=>{"use strict";e.s(["GitManageView",()=>r]);var t=e.i(18050),a=e.i(28370);function r(){return(0,t.jsx)(a.AgentEnvGroupSettingsView,{group:"git"})}},38962,e=>{"use strict";e.s(["SystemManageView",()=>r]);var t=e.i(18050),a=e.i(28370);function r(){return(0,t.jsx)(a.AgentEnvGroupSettingsView,{group:"system"})}},42307,e=>{"use strict";e.s(["GeelibManageView",()=>r]);var t=e.i(18050),a=e.i(28370);function r(){return(0,t.jsx)(a.AgentEnvGroupSettingsView,{group:"geelib"})}},3862,e=>{"use strict";e.s(["ImManageView",()=>r]);var t=e.i(18050),a=e.i(28370);function r(){return(0,t.jsx)(a.AgentEnvGroupSettingsView,{group:"tutui"})}},62849,e=>{"use strict";e.s(["EnvManageView",()=>N],62849);var t=e.i(18050),a=e.i(71645),r=e.i(56708),n=e.i(19455),l=e.i(72064),s=e.i(2839),i=e.i(76639),o=e.i(93479),c=e.i(67489),d=e.i(13354),u=e.i(87243),p=e.i(67327),m=e.i(99650),f=e.i(94606),g=e.i(75157),x=e.i(65934);let h=[{key:"id",name:"名称",required:!0,placeholder:"例如 openai-main"},{key:"provider",name:"协议类型",required:!0,options:[{label:"openai",value:"openai"},{label:"anthropic",value:"anthropic"}]},{key:"baseUrl",name:"接口地址",required:!0,placeholder:"例如 https://api.openai.com/v1"},{key:"apiKey",name:"API秘钥",required:!0,inputType:"password"},{key:"authToken",name:"认证变量",inputType:"password"},{key:"modelId",name:"模型 ID",required:!0,placeholder:"例如 gpt-4o"}],v=/^[A-Za-z0-9_-]+$/;function b(){return Object.fromEntries(h.map(e=>{var t,a,r;return[e.key,null!=(r=null==(a=e.options)||null==(t=a[0])?void 0:t.value)?r:""]}))}function y(e){let{open:r,onOpenChange:l,onSaved:y}=e,j=(0,a.useId)(),w=(0,x.useAppStore)(e=>e.wsUrl),S=(0,x.useAppStore)(e=>e.apiBase),{currentAgent:C,loadAgentConfig:k}=(0,u.useSession)(),{sendReloadAgentConfig:N}=(0,p.useWebSocketSender)(),[T,A]=(0,a.useState)(!0),[E,M]=(0,a.useState)(!1),[R,I]=(0,a.useState)(!1),[U,P]=(0,a.useState)(b),L=(0,a.useCallback)(()=>{P(b()),I(!1)},[]);(0,a.useEffect)(()=>{r&&(A(!0),L(),k().finally(()=>{A(!1)}))},[r,k,L]);let z=(0,a.useCallback)((e,t)=>{I(!0),P(a=>({...a,[e]:t}))},[]),B=(0,a.useCallback)(async e=>{if(e)return void l(!0);(!R||await (0,f.confirmDiscardFlyoutChanges)())&&l(!1)},[R,l]),O=(0,a.useCallback)(async()=>{let e=x.useAppStore.getState().agentConfig,t=function(e,t){var a,r;let n=new Set(h.map(e=>e.key));for(let t of h)if(t.required&&!String(null!=(a=e[t.key])?a:"").trim())return{ok:!1,message:"请填写".concat(t.name)};if(!n.has("id"))return{ok:!0};let l=String(null!=(r=e.id)?r:"").trim();return v.test(l)?t.some(e=>e.id===l)?{ok:!1,message:"服务商 ID 已存在:".concat(l)}:{ok:!0}:{ok:!1,message:"服务商 ID 仅允许字母、数字、下划线和中划线"}}(U,e.llmProviders);if(!t.ok)return void d.appToast.info(t.message);let a=function(e){var t,a,r,n,l,s;let i=String(null!=(t=e.id)?t:"").trim(),o=String(null!=(a=e.modelId)?a:"").trim(),c=String(null!=(r=e.modelLabel)?r:"").trim();return{id:i,name:i,baseUrl:String(null!=(n=e.baseUrl)?n:"").trim(),apiKey:String(null!=(l=e.apiKey)?l:"").trim(),authToken:String(null!=(s=e.authToken)?s:"").trim(),provider:"anthropic"===e.provider?"anthropic":"openai",models:[{id:o,label:c}],defaultModel:o}}(U),r=[...e.llmProviders.map(e=>({...e,models:e.models.map(e=>({...e}))})),a];M(!0);try{await (0,m.persistAgentEnv)(w,S,C(),{...e.env},N,{llmProviders:r}),I(!1),await (null==y?void 0:y()),l(!1)}catch(e){d.appToast.error("保存服务商失败:".concat(e instanceof Error?e.message:String(e)))}finally{M(!1)}},[U,w,S,C,N,l,y]);return(0,t.jsx)(i.Dialog,{open:r,onOpenChange:e=>void B(e),children:(0,t.jsxs)(i.DialogContent,{"aria-labelledby":j,className:"max-w-4xl",children:[(0,t.jsxs)(i.DialogHeader,{children:[(0,t.jsx)("div",{className:"min-w-0 flex-1",children:(0,t.jsx)(i.DialogTitle,{id:j,children:"添加服务商"})}),(0,t.jsx)(i.DialogClose,{"aria-label":"关闭"})]}),(0,t.jsx)(i.DialogBody,{className:"flex min-h-[420px] flex-col overflow-hidden !py-4",children:T?(0,t.jsx)(s.Loading,{text:"加载中",showImage:!1,className:"min-h-0 flex-1"}):(0,t.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,t.jsx)("div",{className:"divide-y divide-[var(--ds-border)]",children:h.map(e=>{var a,r;let n="custom-env-field-".concat(e.key),l="new-provider-field-".concat(j,"-").concat(e.key),s="string"==typeof U[e.key]?U[e.key]:"";return(0,t.jsxs)("div",{className:"flex flex-col gap-2 py-4 first:pt-0",children:[(0,t.jsxs)("label",{className:"text-[var(--ds-text)]",htmlFor:n,children:[e.name,e.required?(0,t.jsx)("span",{className:"ml-0.5 text-destructive",children:"*"}):null]}),e.options?(0,t.jsxs)(c.Select,{value:s,onValueChange:t=>z(e.key,t),children:[(0,t.jsx)(c.SelectTrigger,{id:n,className:(0,g.cn)("h-8 w-full max-w-none bg-[var(--ds-bg)] text-[var(--ds-text)]",e.className),children:(0,t.jsx)(c.SelectValue,{})}),(0,t.jsx)(c.SelectContent,{children:e.options.map(e=>(0,t.jsx)(c.SelectItem,{value:e.value,children:e.label},e.value))})]}):(0,t.jsx)(o.Input,{id:n,name:l,type:null!=(a=e.inputType)?a:"text",spellCheck:!1,autoComplete:"password"===e.inputType?"new-password":"off",placeholder:null!=(r=e.placeholder)?r:"请输入".concat(e.name),className:(0,g.cn)("border-[var(--ds-border)] bg-[var(--ds-bg)] placeholder:text-[var(--text-placeholder)]",e.className),value:s,onChange:t=>z(e.key,t.target.value)})]},e.key)})})})}),(0,t.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-4 py-3",children:[(0,t.jsx)(n.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:T||E,onClick:()=>void B(!1),className:"cursor-pointer",children:"取消"}),(0,t.jsx)(n.Button,{type:"button",size:"lg",disabled:T||E,onClick:()=>void O(),className:"cursor-pointer",children:E?"保存中…":"保存"})]})]})})}var j=e.i(85413),w=e.i(94197);function S(e){let{row:a,onSetDefault:r,onTest:l,onEdit:s,onDelete:i}=e,o="".concat(a.baseUrl," · ").concat(a.model);return(0,t.jsxs)("article",{className:(0,g.cn)("group flex w-full items-center gap-4 rounded-xl border border-solid bg-[var(--ds-bg)] px-4 py-3.5 transition-[border-color,box-shadow]",a.isDefault?"border-[color:var(--ds-ok)]":"border-[color:var(--ds-border)] hover:shadow-[0_2px_12px_rgba(0,0,0,0.06)]"),children:[(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[(0,t.jsx)("span",{className:(0,g.cn)("size-2 shrink-0 rounded-full",a.isDefault?"bg-[var(--ds-ok)]":"bg-[var(--ds-muted)]"),"aria-hidden":"true"}),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("h3",{className:"truncate text-base font-semibold text-[var(--ds-text)]",children:a.name}),(0,t.jsx)("p",{className:"mt-1 truncate text-[var(--ds-muted)]",title:o,children:o})]})]}),(0,t.jsxs)("div",{className:"pointer-events-none invisible flex shrink-0 items-center opacity-0 transition-opacity group-focus-within:pointer-events-auto group-focus-within:visible group-focus-within:opacity-100 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100",children:[(0,t.jsx)(n.Button,{type:"button",variant:"plain",size:"sm",disabled:a.isDefault,className:"h-8 cursor-pointer !px-0 text-[var(--ds-text)] hover:text-[var(--ds-accent)] disabled:cursor-not-allowed disabled:text-[var(--ds-muted)] disabled:opacity-60",onClick:()=>r(a.id),children:"设为默认"}),l?(0,t.jsx)(n.Button,{type:"button",variant:"plain",size:"sm",className:"h-8 cursor-pointer px-2 text-[var(--ds-text)] hover:text-[var(--ds-accent)]",onClick:()=>l(a.id),children:"测试"}):null,s?(0,t.jsx)(w.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(a.name),onClick:()=>s(a.id)}):null,(0,t.jsx)(w.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(a.name),onClick:()=>i(a.id)})]})]})}function C(e){return e.map((e,t)=>{let a=e.models[0];return{id:e.id,name:e.name||e.id,baseUrl:e.baseUrl,model:e.defaultModel||(null==a?void 0:a.label)||(null==a?void 0:a.id)||"",isDefault:0===t}})}function k(){let e=(0,x.useAppStore)(e=>e.agentConfig.llmProviders),[r,n]=(0,a.useState)(()=>C(e));(0,a.useEffect)(()=>{n(C(e))},[e]);let l=(0,a.useCallback)(e=>{n(t=>t.map(t=>({...t,isDefault:t.id===e}))),d.appToast.success("已设为默认服务商")},[]),s=(0,a.useCallback)(e=>{r.find(t=>t.id===e)&&(n(t=>t.filter(t=>t.id!==e).map((e,t)=>({...e,isDefault:0===t}))),d.appToast.success("已删除服务商"))},[r]);return(0,t.jsx)("div",{className:"mt-4 flex flex-col gap-3",children:0===r.length?(0,t.jsx)(j.Empty,{text:"暂无服务商"}):r.map(e=>(0,t.jsx)(S,{row:e,onSetDefault:l,onDelete:s},e.id))})}function N(){let[e,s]=(0,a.useState)(!1);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.ManageChromeHeaderActions,{children:(0,t.jsx)("div",{className:"flex flex-wrap items-center",children:(0,t.jsxs)(n.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>s(!0),className:"mr-[12px]",children:[(0,t.jsx)(l.default,{name:"Create",size:16,className:"align-middle"}),"添加服务商"]})})}),(0,t.jsx)(k,{}),(0,t.jsx)(y,{open:e,onOpenChange:s})]})}},37991,e=>{"use strict";e.s(["McpManageView",()=>C],37991);var t=e.i(18050),a=e.i(71645),r=e.i(65934),n=e.i(87243),l=e.i(13354),s=e.i(50711),i=e.i(55242),o=e.i(92715),c=e.i(2839),d=e.i(36413),u=e.i(19455),p=e.i(93479),m=e.i(94055),f=e.i(94197),g=e.i(36845),x=e.i(53925);function h(e){let{open:a,onOpenChange:r,wsUrl:n,apiBase:l,agent:s}=e;return(0,t.jsx)(x.ResourceImportDialog,{open:a,onOpenChange:r,title:"导入 MCP zip",description:"选择一个 zip 文件并导入到 mcp-runtime。",uploadUrl:(0,g.buildMcpRuntimeImportUrl)(n,l,s),resetKey:s})}var v=e.i(62427);function b(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.id}function y(e){let{open:r,onOpenChange:n,itemId:s,source:o,wsUrl:c,apiBase:d,agent:p,onSaved:m}=e,[f,g]=(0,a.useState)(""),[x,h]=(0,a.useState)(!1),[b,y]=(0,a.useState)(!1),j="remote"===o?"remote":"runtime";(0,a.useEffect)(()=>{if(!r||!s.trim())return;let e=!1;return h(!0),g("加载中…"),(0,v.loadRuntimeMcpItemConfig)(c,d,p,s,j).then(t=>{if(e)return;let a=t.overlay;a&&"object"==typeof a&&!Array.isArray(a)?g(JSON.stringify(a,null,2)):g("{}")}).catch(t=>{e||(l.appToast.error("加载 MCP 配置失败:".concat(t instanceof Error?t.message:String(t))),n(!1))}).finally(()=>{e||h(!1)}),()=>{e=!0}},[r,s,c,d,p,j,n]);let w=(0,a.useCallback)(async()=>{let e;if(!s.trim())return;let t=f.trim();try{e=t?JSON.parse(t):{}}catch(e){l.appToast.error("JSON 解析失败:".concat(e instanceof Error?e.message:String(e)));return}if(!e||"object"!=typeof e||Array.isArray(e))return void l.appToast.error("配置必须是 JSON 对象");if("mcpServers"in e&&null!=e.mcpServers)return void l.appToast.error("请填写标准 server 配置(command/args/env),不要嵌套 mcpServers");let a=0===Object.keys(e).length;y(!0);try{a?await (0,v.clearRuntimeMcpItemConfig)(c,d,p,s,j):await (0,v.saveRuntimeMcpItemConfig)(c,d,p,s,j,e),l.appToast.success("MCP 配置已保存"),n(!1),null==m||m()}catch(e){l.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{y(!1)}},[s,f,c,d,p,j,n,m]);return(0,t.jsx)(i.AppDialog,{open:r,onOpenChange:n,title:"编辑 MCP 配置 · ".concat(s),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:b,onClick:()=>n(!1),children:"取消"}),(0,t.jsx)(u.Button,{type:"button",size:"lg",disabled:b||x,onClick:()=>void w(),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 font-mono leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:f,disabled:x,onChange:e=>g(e.target.value)})})}var j=e.i(68499),w=e.i(72064),S=e.i(56708);function C(){let e=(0,r.useAppStore)(e=>e.wsUrl),g=(0,r.useAppStore)(e=>e.apiBase),x=(0,r.useAppStore)(e=>e.agentConfig),C=(0,r.useAppStore)(e=>e.setAgentConfig),{currentAgent:k,loadAgentConfig:N}=(0,n.useSession)(),T=(0,s.usePersistAgentConfigField)("mcpServers"),A=x.mcpServers,E=(0,a.useMemo)(()=>[...A].sort().join("\0"),[A]),[M,R]=(0,a.useState)([]),[I,U]=(0,a.useState)([]),[P,L]=(0,a.useState)(!1),[z,B]=(0,a.useState)(!1),[O,D]=(0,a.useState)(!1),[_,F]=(0,a.useState)(!1),[V,J]=(0,a.useState)(""),[K,H]=(0,a.useState)(!1),[W,G]=(0,a.useState)(""),[q,Z]=(0,a.useState)(),[Q,X]=(0,a.useState)(!1),[$,Y]=(0,a.useState)("");(0,a.useEffect)(()=>{N()},[N]);let ee=(0,a.useCallback)(async(e,t)=>{B(!0);try{await T(e,{silent:t})}finally{B(!1)}},[T]),et=(0,a.useCallback)(e=>M.find(t=>t.id===e),[M]),ea=(0,a.useCallback)(e=>{let t=et(e);G(e),Z(null==t?void 0:t.source),X(!0)},[et]),er=(0,a.useCallback)(async()=>{R([]),L(!0);try{var t;let a=await (0,v.listMcpServers)(e,g,k());R((null!=(t=a.servers)?t:[]).map(e=>{var t,a,r;return{...e,id:e.name,label:e.name,description:null!=(a=null!=(t=e.description)?t:e.source)?a:"",source:null!=(r=e.source)?r:"",installed:!!e.installed,packageId:e.packageId}}))}catch(e){R([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{L(!1)}},[e,g,k]),en=(0,a.useCallback)(async t=>{var a;let r=et(t),n=null!=(a=null==r?void 0:r.source)?a:"";if("runtime"!==n&&"remote"!==n)return void l.appToast.error("基础MCP不可删除");if(await (0,j.confirmAlertDialog)({title:"确认删除 MCP?",description:"服务器名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{if("remote"===n){let a=await (0,v.loadRemoteMcpJson)(e,g,k()),r={};try{r=JSON.parse(String(a.content||"{}"))}catch(e){r={mcpServers:{}}}(!r.mcpServers||Array.isArray(r.mcpServers)||"object"!=typeof r.mcpServers)&&(r.mcpServers={}),delete r.mcpServers[t],await (0,v.saveRemoteMcpJson)(e,g,k(),JSON.stringify(r,null,2))}else{let a=r?b(r):t;await (0,v.deleteRuntimeMcp)(e,g,k(),a)}let a=A.filter(e=>e!==t);U(e=>e.filter(e=>e!==t)),C({...x,mcpServers:a}),await ee(a,!0),await er()}catch(e){l.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[et,e,g,k,A,x,C,ee,er]);(0,a.useEffect)(()=>{er()},[er]),(0,a.useEffect)(()=>{U([...A])},[A,E]);let el=(0,a.useCallback)(async e=>{let t=[...new Set(e)].sort();C({...x,mcpServers:t}),await ee(t,!0)},[x,C,ee]),es=(0,a.useCallback)(async(e,t)=>{let a=t?[...new Set([...I,e])]:I.filter(t=>t!==e);U(a);try{await el(a),await er()}catch(e){U(I),l.appToast.error("切换启用状态失败: ".concat(e))}},[I,el,er]),ei=(0,a.useMemo)(()=>M.slice().sort((e,t)=>{var a,r;let n=String(null!=(a=e.source)?a:"").localeCompare(String(null!=(r=t.source)?r:""));if(0!==n)return n;let l=+!I.includes(e.id),s=+!I.includes(t.id);return l!==s?l-s:e.id.localeCompare(t.id)}),[M,I]),eo=(0,a.useMemo)(()=>ei.filter(e=>(function(e,t){var a;let r=t.trim().toLowerCase();if(!r)return!0;let n="remote"===e.source?"远程":"本地";return"".concat(e.id," ").concat(e.label," ").concat(null!=(a=e.description)?a:""," ").concat(n).toLowerCase().includes(r)})(e,$)),[ei,$]),ec=(0,a.useCallback)(t=>{window.open((0,v.exportRuntimeMcpUrl)(e,g,k(),b(t)),"_blank","noopener")},[e,g,k]),ed=(0,a.useCallback)(()=>{F(!0),J(""),(0,v.loadRemoteMcpJson)(e,g,k()).then(e=>{J("string"==typeof e.content?e.content:'{\n "mcpServers": {}\n}\n')}).catch(e=>{l.appToast.error("加载 mcp.json 失败:".concat(e instanceof Error?e.message:String(e))),F(!1)})},[e,g,k]),eu=(0,a.useCallback)(async()=>{let t=function(e){let t,a=e.trim();if(!a)return"请输入 JSON 配置内容";try{t=JSON.parse(a)}catch(e){return"JSON 解析失败:".concat(e instanceof Error?e.message:String(e))}if(!t||"object"!=typeof t||Array.isArray(t))return"JSON 根节点必须是对象";let r=t.mcpServers;if(!r||"object"!=typeof r||Array.isArray(r))return"mcpServers 不能为空,且需包含至少一个 server";let n=Object.keys(r).filter(e=>e.trim());if(!n.length)return"mcpServers 不能为空,且需包含至少一个 server";let l=new Set;for(let e of n){let t=e.trim();!t||l.has(t)||l.add(t)}return l.size?null:"未解析到有效的 server 名称"}(V);if(t)return void l.appToast.error(t);H(!0);try{await (0,v.saveRemoteMcpJson)(e,g,k(),V.trim()),l.appToast.success("已保存全局 mcp.json。"),F(!1),await er()}catch(e){l.appToast.error("保存 mcp.json 失败:".concat(e instanceof Error?e.message:String(e)))}finally{H(!1)}},[e,g,k,V,er]),ep=[{key:"name",title:"名称",headerClassName:" text-[var(--ds-muted)]",cellClassName:" text-[var(--ds-text)]",render:e=>(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsx)(d.StatusBadge,{tone:e.disabled?"default":"success",children:e.disabled?"未启用":"启用"})]})},{key:"description",title:"详情",headerClassName:" text-[var(--ds-muted)]",cellClassName:" text-[var(--ds-text)]",render:e=>e.description||"-"},{key:"source",title:"来源",headerClassName:"w-[96px] text-[var(--ds-muted)]",cellClassName:"w-[96px] text-[var(--ds-text)]",render:e=>"remote"===e.source?"远程":"本地"},{key:"enabled",title:"启用/未启用",headerClassName:"w-14 w-[112px] text-right text-[var(--ds-muted)]",cellClassName:"w-[112px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex justify-end",children:(0,t.jsx)(m.AccentSwitch,{checked:I.includes(e.id),disabled:z,onCheckedChange:t=>{es(e.id,t)},"aria-label":"选择 ".concat(e.label)})})},{key:"actions",title:"操作",headerClassName:"w-[168px] text-[var(--ds-muted)]",cellClassName:"w-[168px]",render:e=>{var a;let r=null!=(a=e.source)?a:"",n="runtime"===r,l="runtime"===r||"remote"===r;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(f.IconTooltipButton,{icon:"Download",label:n?"导出":"仅 runtime MCP 支持导出",ariaLabel:"导出 ".concat(e.label),disabled:z||!n,onClick:()=>ec(e)}),(0,t.jsx)(f.IconTooltipButton,{icon:"Edit",label:"编辑 MCP 配置",ariaLabel:"编辑 ".concat(e.label),disabled:z,onClick:()=>ea(e.id)}),(0,t.jsx)(f.IconTooltipButton,{icon:"Trash2",label:l?"删除":"基础MCP不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label),disabled:z||!l,onClick:()=>{en(e.id)},iconClassName:"text-red-500"})]})}}],em=$.trim();return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(S.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center",children:[(0,t.jsxs)(u.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:ed,className:"mr-[12px]",children:[(0,t.jsx)(w.default,{name:"Edit",size:16,className:"align-middle"}),"编辑远程MCP"]}),(0,t.jsxs)(u.Button,{id:"btnAgentImportMcp",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>D(!0),children:[(0,t.jsx)(w.default,{name:"Import",size:16,className:"align-middle"}),"导入本地MCP"]})]})}),(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(p.Input,{type:"search",value:$,onChange:e=>Y(e.target.value),placeholder:"搜索名称 / 详情 / 来源",className:"h-8 pl-8","aria-label":"搜索 MCP"}),(0,t.jsx)(w.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)("div",{className:"min-h-0",children:P?(0,t.jsx)(c.Loading,{text:"加载中",className:"min-h-[180px]"}):(0,t.jsx)(o.AppTable,{rows:eo,columns:ep,getRowKey:e=>e.id,emptyText:em?"未找到匹配 MCP":void 0})})]}),(0,t.jsx)(h,{open:O,onOpenChange:e=>{D(e),e||er()},wsUrl:e,apiBase:g,agent:k()}),(0,t.jsx)(y,{open:Q,onOpenChange:X,itemId:W,source:q,wsUrl:e,apiBase:g,agent:k(),onSaved:()=>{er(),ee(x.mcpServers,!0)}}),(0,t.jsx)(i.AppDialog,{open:_,onOpenChange:F,title:"编辑全局MCP",width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:K,onClick:()=>F(!1),children:"取消"}),(0,t.jsx)(u.Button,{type:"button",size:"lg",disabled:K,onClick:()=>void eu(),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 leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:V,onChange:e=>J(e.target.value)})})]})}},19573,e=>{"use strict";e.s(["ToolsManageView",()=>E],19573);var t=e.i(18050),a=e.i(71645),r=e.i(65934),n=e.i(87243),l=e.i(13354),s=e.i(50711),i=e.i(19455),o=e.i(2839),c=e.i(94055),d=e.i(94197),u=e.i(92715),p=e.i(36413),m=e.i(72064),f=e.i(93479);function g(e){let{items:r,saveBusy:n,onToggle:l,onExport:s,onRemove:i,className:o}=e,[g,x]=(0,a.useState)(""),h=(0,a.useMemo)(()=>r.filter(e=>(function(e,t){var a,r;let n=t.trim().toLowerCase();if(!n)return!0;let l="system"===e.layer?"系统":"agent"===e.layer?"Agent":"";return"".concat(e.name," ").concat(null!=(a=e.label)?a:""," ").concat(null!=(r=e.description)?r:""," ").concat(l).toLowerCase().includes(n)})(e,g)),[r,g]),v=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>{let a=e.label||e.name;return(0,t.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,t.jsx)("span",{children:a}),(0,t.jsx)(p.StatusBadge,{tone:e.enabled?"success":"default",children:e.enabled?"启用":"未启用"})]})}},{key:"layer",title:"层级",headerClassName:"w-[88px]",cellClassName:"w-[88px] whitespace-nowrap text-[var(--ds-text)]",render:e=>"system"===e.layer?"系统":"agent"===e.layer?"Agent":"-"},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"enabled",title:"启用/未启用",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center gap-2",children:(0,t.jsx)(c.AccentSwitch,{checked:!!e.enabled,disabled:n,onCheckedChange:t=>l(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>{let a=!0===e.canManage;return(0,t.jsxs)("div",{className:"inline-flex items-center justify-end gap-1",children:[(0,t.jsx)(d.IconTooltipButton,{icon:"Download",label:a?"导出":"系统内置工具不可导出",ariaLabel:"导出 ".concat(e.label||e.name),disabled:n||!a,onClick:()=>s(e.name)}),(0,t.jsx)(d.IconTooltipButton,{icon:"Trash2",label:a?"删除":"系统内置工具不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.label||e.name),disabled:n||!a,onClick:()=>{i(e.name)}})]})}}],b=g.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(f.Input,{type:"search",value:g,onChange:e=>x(e.target.value),placeholder:"搜索名称 / 详情 / 层级",className:"h-8 pl-8","aria-label":"搜索工具"}),(0,t.jsx)(m.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(u.AppTable,{rows:h,columns:v,getRowKey:e=>"tools:".concat(e.name),className:o,emptyText:b?"未找到匹配工具":void 0})]})}var x=e.i(36845),h=e.i(53925);function v(e){let{open:a,onOpenChange:r,wsUrl:n,apiBase:l,agent:s}=e;return(0,t.jsx)(h.ResourceImportDialog,{open:a,onOpenChange:r,title:"导入工具 zip",description:"选择一个 zip 文件并导入到 tools-runtime。",uploadUrl:(0,x.buildToolsRuntimeImportUrl)(n,l,s),resetKey:s})}var b=e.i(55242);let y=[["name","稳定工具名,与 agent.json.tools 白名单对应"],["call","工具执行入口"],["inputSchema","Zod schema,定义 LLM 入参"],["description","工具描述,可为 async 函数"],["prompt","返回给模型的使用说明,可为 async 函数"],["mapToolResultToToolResultBlockParam","将执行结果映射为 API tool_result 块"]],j=["包目录位于 tools-runtime/<package-name>/,包名使用 kebab-case","包根目录存在 index.js / index.cjs / index.mjs 之一,宿主不会加载源码 TS","入口导出 Tool 对象,工具 name 稳定且唯一","initWsSession 正确处理 ready / skipped / failed",'agent.json.tools 包含工具名或 "*",且未被 disallowedTools 禁用',"GET /api/tools?agent=<id> 中工具 enabled: true 且 readiness: ready"];function w(e){let{index:a,title:r,children:n,className:l}=e;return(0,t.jsxs)("section",{className:"rounded-xl border border-[var(--ds-border)] bg-[var(--surface-1)] p-4 ".concat(null!=l?l:""),children:[(0,t.jsxs)("div",{className:"mb-3 flex items-center gap-3",children:[(0,t.jsx)("span",{className:"flex size-7 shrink-0 items-center justify-center rounded-full bg-[var(--ds-accent)] text-base font-semibold text-[var(--surface-1)]",children:a}),(0,t.jsx)("h3",{className:"text-base font-semibold text-[var(--ds-text)]",children:r})]}),n]})}function S(e){let{open:a,onOpenChange:r}=e;return(0,t.jsx)(b.AppDialog,{open:a,onOpenChange:r,title:"工具接入说明",width:"max-w-4xl",footer:(0,t.jsx)(i.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:()=>r(!1),children:"我知道了"}),children:(0,t.jsxs)("div",{className:"flex max-h-[72vh] flex-col gap-4 overflow-y-auto pr-1 text-sm text-[var(--ds-text)]",children:[(0,t.jsx)(w,{index:1,title:"概念",children:(0,t.jsxs)("div",{className:"flex items-start gap-3",children:[(0,t.jsx)("span",{className:"bg-[var(--ds-accent)]/10 mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg text-[var(--ds-accent)]",children:(0,t.jsx)(m.default,{name:"Wrench",size:18})}),(0,t.jsxs)("p",{className:"min-w-0 leading-6 text-[var(--ds-muted)]",children:["Runtime Tool 是磁盘上的独立工具包,放在",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"tools-runtime/<package-name>/"}),"下。宿主与工具包只通过编译入口的导出契约通信,互不 import 对方源码。"]})]})}),(0,t.jsxs)(w,{index:2,title:"存放路径",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-sidebar)] p-3 text-xs leading-5 text-[var(--ds-text)]",children:"<WS_AGENTS_ROOT>/tools-runtime/<package-name>/\n index.cjs # 必选:编译后的单文件入口\n package.json # 可选\n build.ts # 可选\n src/ # 可选,宿主不加载"}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:["默认 WS_AGENTS_ROOT 为项目下的",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:".ws-agents"}),",宿主按",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:".js > .cjs > .mjs"}),"优先级加载入口。agent 层同名包会覆盖 system 层包。"]})]}),(0,t.jsx)(w,{index:3,title:"接入方式",children:(0,t.jsxs)("div",{className:"space-y-3 text-[var(--ds-muted)]",children:[(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"手工放置:"}),"在 .ws-agents/tools-runtime/ 下创建包目录并完成构建,重启会话或触发 reloadDynamicTools。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"Zip 导入:"}),"zip 内必须是单根目录结构,例如 my-tool/index.cjs。"]}),(0,t.jsxs)("p",{children:[(0,t.jsx)("span",{className:"font-medium text-[var(--ds-text)]",children:"内置 system 包:"}),"发布到 packages/agent/tools-runtime,用户可用 agent 层同名包覆盖。"]})]})}),(0,t.jsxs)(w,{index:4,title:"包内必须实现的契约",children:[(0,t.jsx)("p",{className:"mt-2 leading-6 text-[var(--ds-muted)]",children:"入口模块需导出至少一个 Tool 对象,可使用 default、tools 数组或命名导出。"}),(0,t.jsx)("div",{className:"mt-3 grid gap-2",children:y.map(e=>{let[a,r]=e;return(0,t.jsxs)("div",{className:"rounded-lg border border-[var(--ds-border)] bg-[var(--surface-1)] px-3 py-2",children:[(0,t.jsx)("code",{className:"text-base font-semibold text-[var(--ds-accent)]",children:a}),(0,t.jsx)("p",{className:"mt-1 text-base leading-5 text-[var(--ds-muted)]",children:r})]},a)})}),(0,t.jsx)("div",{className:"mt-4 rounded-lg border border-[var(--ds-border)] bg-[var(--ds-sidebar)] p-3",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["生产包推荐实现",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--surface-1)] px-1.5 py-0.5",children:"initWsSession"}),",返回 ready 才会进入 LLM 工具列表;skipped 或 failed 不会暴露。未实现时默认 ready。"]})})]}),(0,t.jsx)(w,{index:5,title:"最小示例",children:(0,t.jsxs)("p",{className:"leading-6 text-[var(--ds-muted)]",children:["最小包通常包含 package.json、build.ts 和 src/index.ts,构建后在包根目录产出",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"index.cjs"}),"。若 package.json 使用",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"type: module"}),",优先产出 index.cjs,避免 ESM/CJS 冲突。"]})}),(0,t.jsxs)(w,{index:6,title:"在 agent 中启用",children:[(0,t.jsx)("pre",{className:"overflow-x-auto rounded-lg bg-[var(--ds-sidebar)] p-3 text-base leading-5 text-[var(--ds-text)]",children:'{\n "tools": ["HelloTool"]\n}'}),(0,t.jsxs)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:'"*"'}),"暴露全部已加载且 ready 的 runtime 工具;",(0,t.jsx)("code",{className:"mx-1 rounded bg-[var(--ds-sidebar)] px-1.5 py-0.5",children:"[]"}),"不暴露任何 runtime 工具。MCP 工具由 mcpServers 单独控制。"]})]}),(0,t.jsxs)(w,{index:7,title:"宿主加载流程",children:[(0,t.jsx)("div",{className:"rounded-lg bg-[var(--ds-sidebar)] p-3 text-base leading-6 text-[var(--ds-muted)]",children:"discoverRuntimePackages → dynamic import index.* → initWsSession → extractToolsFromModule → agent.json.tools 白名单过滤 → LLM 可见工具列表"}),(0,t.jsx)("p",{className:"mt-3 leading-6 text-[var(--ds-muted)]",children:"触发时机包括 WS 会话 init、reloadDynamicTools,以及带 agent 参数的 GET /api/tools。 可通过 CLAUDE_CODE_RUNTIME_TOOLS_ENABLED=0 关闭 runtime 工具。"})]}),(0,t.jsx)(w,{index:8,title:"参考实现",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"schedule-tool:会话级 init、agent 白名单、文件持久化。"}),(0,t.jsx)("p",{children:"git-tool:环境变量驱动、ready / skipped / failed 状态。"}),(0,t.jsx)("p",{children:"code-tool:通过 buildSessionAppend 追加会话上下文。"})]})}),(0,t.jsx)(w,{index:9,title:"验收清单",children:(0,t.jsx)("ul",{className:"grid gap-2",children:j.map(e=>(0,t.jsxs)("li",{className:"flex gap-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)(m.default,{name:"CheckCircle2",size:16,className:"mt-1 shrink-0 text-[var(--ds-accent)]"}),(0,t.jsx)("span",{children:e})]},e))})}),(0,t.jsx)(w,{index:10,title:"常见问题",children:(0,t.jsxs)("div",{className:"space-y-2 leading-6 text-[var(--ds-muted)]",children:[(0,t.jsx)("p",{children:"放了包但工具不可见:确认已构建 index.*、initWsSession 返回 ready、白名单包含工具名。"}),(0,t.jsx)("p",{children:"installed-list 有但会话 disabled:通常是 init 返回 skipped/failed,或未通过 agent 白名单。"}),(0,t.jsx)("p",{children:"同名工具冲突:agent 层覆盖 system 层;同一层内工具 name 重复时后者会被去重丢弃。"})]})})]})})}var C=e.i(68499),k=e.i(56708),N=e.i(62427);function T(e){return(null!=e.packageId?String(e.packageId).trim():"")||e.name}function A(e){let t=null!=e.packageId?String(e.packageId).trim():"";return!0===e.deletable&&t.length>0}function E(){let e=(0,r.useAppStore)(e=>e.wsUrl),c=(0,r.useAppStore)(e=>e.apiBase),d=(0,r.useAppStore)(e=>e.agentConfig),u=(0,r.useAppStore)(e=>e.patchAgentConfig),{currentAgent:p,loadAgentConfig:f}=(0,n.useSession)(),x=(0,s.usePersistAgentConfigField)("tools"),h=d.tools,[b,y]=(0,a.useState)([]),[j,w]=(0,a.useState)(!1),[E,M]=(0,a.useState)(!1),[R,I]=(0,a.useState)(!1),[U,P]=(0,a.useState)(!1);(0,a.useEffect)(()=>{f()},[f]);let L=(0,a.useCallback)(async(e,t)=>{M(!0);try{await x(e,{silent:t})}finally{M(!1)}},[x]),z=(0,a.useCallback)(async()=>{y([]),w(!0);try{var t;let a=await (0,N.listInstalledTools)(e,c,p());y(null!=(t=a.tools)?t:[])}catch(e){y([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{w(!1)}},[e,c,p]);(0,a.useEffect)(()=>{z()},[z]);let B=(0,a.useCallback)(e=>b.find(t=>t.name===e),[b]),O=(0,a.useMemo)(()=>b.slice().sort((e,t)=>e.name.localeCompare(t.name)).map(e=>(function(e,t){var a;let r=null!=e.packageName?String(e.packageName).trim():"";return{name:e.name,label:(e.displayName&&e.displayName!==e.name?"".concat(e.displayName," · "):"")+e.name,description:null!=(a=e.searchHint)?a:"",enabled:t,packageId:r,canManage:A({deletable:e.deletable,packageId:r}),layer:e.layer}})(e,h.includes(e.name))),[b,h]),D=(0,a.useCallback)(async t=>{let a=B(t);if(!a||!A({deletable:a.deletable,packageId:a.packageName}))return void l.appToast.error("系统内置工具不可删除");if(await (0,C.confirmAlertDialog)({title:"确认删除工具包?",description:"工具名:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,N.deleteRuntimeTool)(e,c,p(),T({packageId:a.packageName,name:a.name}));let r=h.filter(e=>e!==t);u({tools:r}),await L(r,!0),await z()}catch(e){l.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[B,e,c,p,h,u,L,z]),_=(0,a.useCallback)(t=>{let a=B(t);if(!a||!A({deletable:a.deletable,packageId:a.packageName}))return void l.appToast.error("系统内置工具不可导出");window.open((0,N.exportRuntimeToolUrl)(e,c,p(),T({packageId:a.packageName,name:a.name})),"_blank","noopener")},[B,e,c,p]),F=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...h,e])].sort():h.filter(t=>t!==e).sort();u({tools:a}),L(a,!0)},[h,u,L]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(k.ManageChromeHeaderActions,{children:(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,t.jsxs)(i.Button,{type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>I(!0),children:[(0,t.jsx)(m.default,{name:"Info",size:16,className:"align-middle"}),"工具说明"]}),(0,t.jsxs)(i.Button,{id:"btnAgentPickerToolImport",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>P(!0),children:[(0,t.jsx)(m.default,{name:"Import",size:16,className:"align-middle"}),"导入自定义工具"]})]})}),j?(0,t.jsx)(o.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(g,{items:O,saveBusy:E,onToggle:F,onExport:_,onRemove:D}),(0,t.jsx)(v,{open:U,onOpenChange:e=>{P(e),e||z()},wsUrl:e,apiBase:c,agent:p()}),(0,t.jsx)(S,{open:R,onOpenChange:I})]})}},39721,e=>{"use strict";e.s(["SkillsManageView",()=>R],39721);var t=e.i(18050),a=e.i(71645),r=e.i(65934),n=e.i(87243),l=e.i(13354),s=e.i(50711),i=e.i(51419),o=e.i(19455),c=e.i(72064),d=e.i(92715),u=e.i(93479),p=e.i(75157);function m(e){let{className:a,...r}=e;return(0,t.jsx)("nav",{role:"navigation","aria-label":"pagination","data-slot":"pagination",className:(0,p.cn)("flex w-full justify-end",a),...r})}let f=a.forwardRef((e,a)=>{let{className:r,...n}=e;return(0,t.jsx)("ul",{ref:a,"data-slot":"pagination-content",className:(0,p.cn)("flex flex-row flex-wrap items-center justify-end gap-1",r),...n})});f.displayName="PaginationContent";let g=a.forwardRef((e,a)=>{let{className:r,...n}=e;return(0,t.jsx)("li",{ref:a,"data-slot":"pagination-item",className:(0,p.cn)("",r),...n})});g.displayName="PaginationItem",a.forwardRef((e,a)=>{let{className:r,isActive:n,size:l="icon",...s}=e;return(0,t.jsx)("a",{ref:a,"aria-current":n?"page":void 0,"data-slot":"pagination-link","data-active":n?"true":void 0,className:(0,p.cn)((0,o.buttonVariants)({variant:n?"outline":"ghost",size:l}),r),...s})}).displayName="PaginationLink";var x=e.i(62427),h=e.i(2839);function v(e){let{active:r,wsUrl:n,apiBase:s,agent:i,onAfterInstall:p,className:v}=e,[b,y]=(0,a.useState)(""),[j,w]=(0,a.useState)(1),[S,C]=(0,a.useState)(0),[k,N]=(0,a.useState)([]),[T,A]=(0,a.useState)(!1),[E,M]=(0,a.useState)(""),[R,I]=(0,a.useState)({}),U=(0,a.useRef)(0),P=(0,a.useCallback)(async()=>{let e=++U.current;A(!0),M("");try{let t=await (0,x.listCloudSkillCatalog)(n,s,i,b,j,10);if(e!==U.current)return;let a=Array.isArray(t.items)?t.items:[],r=[];for(let e of a)e&&"object"==typeof e&&e.id&&r.push({id:String(e.id),title:String(e.title||""),skillName:String(e.skillName||""),description:"string"==typeof e.description?e.description:"",installed:!!e.installed});N(r),C(t.totalPages)}catch(t){if(e!==U.current)return;N([]),C(0),M(t instanceof Error?t.message:String(t))}finally{e===U.current&&A(!1)}},[n,s,i,b,j]);(0,a.useEffect)(()=>{if(!r){y(""),w(1),C(0),N([]),M(""),I({}),U.current+=1;return}P()},[r,P]),(0,a.useMemo)(()=>{if(T)return"加载中…";if(E)return"加载失败:".concat(E);let e=k.reduce((e,t)=>e+ +!!t.installed,0);return"已安装 ".concat(e," 项")},[T,E,k]);let L=(0,a.useCallback)(async(e,t)=>{I(t=>({...t,[e]:!0}));try{await (0,x.installCloudSkill)(n,s,i,e),l.appToast.success("云端技能已安装:".concat(t)),await P(),null==p||p()}catch(e){l.appToast.error("安装失败:".concat(e instanceof Error?e.message:String(e)))}finally{I(t=>{let a={...t};return delete a[e],a})}},[n,s,i,P,p]);if((0,a.useCallback)(e=>{w(1),y(e)},[]),!r)return null;let z=S>0?"第 ".concat(j,"/").concat(S," 页"):"第 0/0 页",B=T||j<=1,O=T||S<=0||j>=S,D=[{key:"name",title:"名称",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>e.skillName?"".concat(e.skillName):e.id},{key:"description",title:"详情",headerClassName:"",cellClassName:" text-[var(--ds-text)]",render:e=>(0,t.jsxs)(t.Fragment,{children:[e.title,e.description?" — ".concat(e.description):""]})},{key:"status",title:"状态",headerClassName:"",cellClassName:"whitespace-nowrap text-[var(--ds-text)]",render:e=>e.installed?"已安装":"未安装"},{key:"actions",title:"操作",headerClassName:"w-[96px] text-right ",cellClassName:"w-[116px] text-right",render:e=>{let a=!!R[e.id],r=!!e.installed;return!a&&r?"-":(0,t.jsx)(o.Button,{type:"button",size:"sm",variant:"outline",disabled:a||r,onClick:()=>void L(e.id,e.title||e.skillName||e.id),children:a?"安装中…":r?"已安装":"安装"})}}];return(0,t.jsx)("div",{className:v,children:(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(u.Input,{type:"search",value:b,onChange:e=>y(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-[var(--ds-muted)]","aria-hidden":!0})]}),(0,t.jsx)(d.AppTable,{rows:k,columns:D,getRowKey:e=>e.id,className:"min-h-0 flex-1 rounded-md",bodyProps:{viewportPaginationReserve:64},emptyNode:T?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):void 0}),(0,t.jsx)(m,{className:"mx-0 w-full",children:(0,t.jsxs)(f,{className:"w-full flex-wrap justify-end gap-2",children:[(0,t.jsx)(g,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:B,className:"gap-1",onClick:()=>w(e=>Math.max(1,e-1)),"aria-label":"上一页",children:[(0,t.jsx)(c.default,{name:"ChevronLeft",size:16,className:"shrink-0"}),"上一页"]})}),(0,t.jsx)(g,{children:(0,t.jsx)("span",{className:"flex h-9 min-w-[6.5rem] items-center justify-center text-[var(--ds-muted)]",children:z})}),(0,t.jsx)(g,{children:(0,t.jsxs)(o.Button,{type:"button",variant:"outline",size:"sm",disabled:O,className:"gap-1",onClick:()=>w(e=>e+1),"aria-label":"下一页",children:["下一页",(0,t.jsx)(c.default,{name:"ChevronRight",size:16,className:"shrink-0",strokeWidth:1})]})})]})})]})})}var b=e.i(36845),y=e.i(53925);function j(e){let{open:a,onOpenChange:r,wsUrl:n,apiBase:l,agent:s}=e;return(0,t.jsx)(y.ResourceImportDialog,{open:a,onOpenChange:r,title:"导入 Skill zip",description:"选择一个 zip 文件并导入到 skills-runtime。",uploadUrl:(0,b.buildSkillsRuntimeImportUrl)(n,l,s),resetKey:s})}var w=e.i(55242);function S(e){let{open:r,onOpenChange:n,skillName:s,wsUrl:i,apiBase:c,agent:d,onSaved:u}=e,[p,m]=(0,a.useState)(""),[f,g]=(0,a.useState)(!1),[h,v]=(0,a.useState)(!1);(0,a.useEffect)(()=>{if(!r||!s.trim())return;let e=!1;return g(!0),m(""),(0,x.loadBaseSkillMd)(i,c,d,s).then(t=>{e||m("string"==typeof t.content?t.content:"")}).catch(t=>{e||(l.appToast.error("加载 SKILL.md 失败:".concat(t instanceof Error?t.message:String(t))),n(!1))}).finally(()=>{e||g(!1)}),()=>{e=!0}},[r,s,i,c,d,n]);let b=(0,a.useCallback)(async()=>{if(s.trim()){v(!0);try{await (0,x.saveBaseSkillMd)(i,c,d,s,p),l.appToast.success("SKILL.md 已保存"),n(!1),null==u||u()}catch(e){l.appToast.error("保存失败:".concat(e instanceof Error?e.message:String(e)))}finally{v(!1)}}},[s,i,c,d,p,n,u]);return(0,t.jsx)(w.AppDialog,{open:r,onOpenChange:n,title:"编辑 SKILL.md · /".concat(s),width:"max-w-4xl",minHeight:"420px",footer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.Button,{type:"button",variant:"plain-outline",size:"lg",disabled:f||h,onClick:()=>n(!1),children:"取消"}),(0,t.jsx)(o.Button,{type:"button",size:"lg",disabled:f||h,onClick:()=>void b(),children:"保存"})]}),children:f?(0,t.jsx)("p",{className:"py-6 text-center text-[var(--ds-muted)]",children:"加载中…"}):(0,t.jsx)("textarea",{className:"focus-visible:ring-[var(--ds-accent)]/30 min-h-[320px] w-full resize-y rounded-md border border-[var(--ds-border)] bg-[var(--ds-bg)] p-3 leading-6 text-[var(--ds-text)] outline-none focus-visible:ring-2",spellCheck:!1,value:p,placeholder:"Markdown 源码…",onChange:e=>m(e.target.value)})})}var C=e.i(94055),k=e.i(94197);function N(e){let{items:r,saveBusy:n,onToggleEnabled:l,onEditBase:s,onExport:i,onRemove:o,className:p}=e,[m,f]=(0,a.useState)(""),g=(0,a.useMemo)(()=>r.filter(e=>(function(e,t){var a;let r=t.trim().toLowerCase();return!r||"".concat(e.name," ").concat(null!=(a=e.description)?a:"").toLowerCase().includes(r)})(e,m)),[r,m]),x=[{key:"name",title:"名称",headerClassName:"",cellClassName:"",render:e=>"/".concat(e.name)},{key:"description",title:"详情",headerClassName:"",cellClassName:"",render:e=>e.description||"-"},{key:"status",title:"状态",headerClassName:"w-[160px] ",cellClassName:"w-[160px] text-[var(--ds-text)]",render:e=>"base"===e.source?"基础":"已安装"},{key:"enabled",title:"启用/未启用",headerClassName:"w-[160px] text-right ",cellClassName:"w-[160px] py-2 text-right align-middle",render:e=>(0,t.jsx)("span",{className:"inline-flex items-center justify-end gap-2",children:(0,t.jsx)(C.AccentSwitch,{checked:e.enabled,disabled:n,onCheckedChange:t=>l(e.name,t),"aria-label":"".concat(e.enabled?"禁用":"启用"," ").concat(e.name)})})},{key:"actions",title:"操作",headerClassName:"w-[128px] ",cellClassName:"w-[128px]",render:e=>(0,t.jsx)("div",{className:"inline-flex items-center justify-end gap-1",children:"base"===e.source?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(k.IconTooltipButton,{icon:"Edit",label:"编辑",ariaLabel:"编辑 ".concat(e.name),disabled:n,onClick:()=>s(e.name)}),(0,t.jsx)(k.IconTooltipButton,{icon:"Trash2",label:"系统技能不可删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:!0})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(k.IconTooltipButton,{icon:"Download",label:"导出",ariaLabel:"导出 ".concat(e.name),disabled:n,onClick:()=>i(e.name)}),(0,t.jsx)(k.IconTooltipButton,{icon:"Trash2",label:"删除",tone:"danger",ariaLabel:"删除 ".concat(e.name),disabled:n,onClick:()=>{o(e.name)}})]})})}],h=m.trim();return(0,t.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,t.jsxs)("div",{className:"relative max-w-md",children:[(0,t.jsx)(u.Input,{type:"search",value:m,onChange:e=>f(e.target.value),placeholder:"搜索名称 / 详情",className:"h-8 pl-8","aria-label":"搜索已安装 Skill"}),(0,t.jsx)(c.default,{name:"Search",size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[var(--ds-muted)]"})]}),(0,t.jsx)(d.AppTable,{rows:g,columns:x,getRowKey:e=>"skills:".concat(e.name),className:p,emptyText:h?"无匹配的 Skill":void 0})]})}var T=e.i(68499),A=e.i(56708);function E(e,t){var a,r,n;let l=(n=null!=(r=null!=(a=e.description)?a:e.whenToUse)?r:"")?n.length>100?n.slice(0,100):n:"";return{...e,id:e.name,label:"/".concat(e.name),description:l,isRuntime:t,canManage:e.canManage}}let M=[{value:"installed",label:"已安装Skill"},{value:"cloud_catalog",label:"Skill商店"}];function R(){let e=(0,r.useAppStore)(e=>e.wsUrl),d=(0,r.useAppStore)(e=>e.apiBase),u=(0,r.useAppStore)(e=>e.agentConfig),p=(0,r.useAppStore)(e=>e.patchAgentConfig),{currentAgent:m,loadAgentConfig:f}=(0,n.useSession)(),g=(0,s.usePersistAgentConfigField)("skills"),b=u.skills,[y,w]=(0,a.useState)([]),[C,k]=(0,a.useState)([]),[R,I]=(0,a.useState)(!1),[U,P]=(0,a.useState)(!1),[L,z]=(0,a.useState)(!1),[B,O]=(0,a.useState)("installed"),[D,_]=(0,a.useState)(!1),[F,V]=(0,a.useState)(""),[J,K]=(0,a.useState)(!1);(0,a.useEffect)(()=>{f()},[f]);let H=(0,a.useCallback)(async(e,t)=>{z(!0);try{await g(e,{silent:t})}finally{z(!1)}},[g]),W=(0,a.useCallback)(async()=>{w([]),I(!0);try{var t;let a=await (0,x.listBaseSkills)(e,d,m());w((null!=(t=a.skills)?t:[]).map(e=>E(e,!1)))}catch(e){w([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{I(!1)}},[e,d,m]),G=(0,a.useCallback)(async()=>{k([]),P(!0);try{var t;let a=await (0,x.listInstalledSkills)(e,d,m());k((null!=(t=a.skills)?t:[]).map(e=>E(e,!0)))}catch(e){k([]),l.appToast.error("加载失败:".concat(e instanceof Error?e.message:String(e)))}finally{P(!1)}},[e,d,m]),q=(0,a.useCallback)(async()=>{await Promise.all([W(),G()])},[W,G]),Z=(0,a.useCallback)(async t=>{if(await (0,T.confirmAlertDialog)({title:"确认删除 Skill 包?",description:"Skill:".concat(t),confirmText:"删除",cancelText:"取消"}))try{await (0,x.deleteRuntimeSkill)(e,d,m(),t);let a=b.filter(e=>e!==t);p({skills:a}),await H(a,!0),await q()}catch(e){l.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}},[e,d,m,b,p,H,q]);(0,a.useEffect)(()=>{"installed"===B&&q()},[B,q]);let Q=(0,a.useCallback)(()=>{q()},[q]),X=(0,a.useMemo)(()=>{let e=y.map(e=>({name:e.id,source:"base",description:e.description||"",enabled:b.includes(e.id)})),t=new Set(e.map(e=>e.name)),a=C.filter(e=>!t.has(e.id)).slice().sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({name:e.id,source:"runtime",description:e.description||"",enabled:b.includes(e.id)}));return[...e.sort((e,t)=>e.name.localeCompare(t.name)),...a]},[y,C,b]),$=(0,a.useCallback)((e,t)=>{let a=t?[...new Set([...b,e])].sort():b.filter(t=>t!==e);p({skills:a}),H(a,!0)},[b,p,H]),Y=(0,a.useCallback)(t=>{window.open((0,x.exportRuntimeSkillUrl)(e,d,m(),t),"_blank","noopener")},[e,d,m]),ee=(0,a.useCallback)(e=>{V(e),K(!0)},[]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(A.ManageChromeHeaderActions,{children:(0,t.jsxs)(o.Button,{id:"btnAgentImportSkill",type:"button",variant:"plain-outline",size:"lg",className:"inline-flex items-center justify-center gap-1.5",onClick:()=>_(!0),children:[(0,t.jsx)(c.default,{name:"Import",size:16,className:"align-middle"}),"导入Skill"]})}),(0,t.jsxs)(i.AppTabs,{tabs:M,value:B,listVariant:"line",onChange:e=>O(e),children:[(0,t.jsx)(i.AppTabsPanel,{value:"installed",children:R||U?(0,t.jsx)(h.Loading,{text:"加载中…",className:"min-h-[200px]"}):(0,t.jsx)(N,{items:X,saveBusy:L,onToggleEnabled:$,onEditBase:ee,onExport:Y,onRemove:Z})}),(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"===B,wsUrl:e,apiBase:d,agent:m(),onAfterInstall:Q,className:"min-h-0 flex-1"})})]}),(0,t.jsx)(j,{open:D,onOpenChange:e=>{_(e),e||q()},wsUrl:e,apiBase:d,agent:m()}),(0,t.jsx)(S,{open:J,onOpenChange:K,skillName:F,wsUrl:e,apiBase:d,agent:m(),onSaved:()=>void q()})]})}},69230,e=>{"use strict";e.s(["SettingsRouteBoundary",()=>i]);var t=e.i(18050),a=e.i(22016),r=e.i(18566),n=e.i(82787),l=e.i(97249),s=e.i(65934);function i(e){let{children:i}=e,o=(0,r.usePathname)(),c=(0,s.useAppStore)(e=>e.agentId),d=(0,l.buildAppNavHref)(n.MANAGE_DEFAULT_HREF,{ensureAgent:!0,agent:c});return o&&!(0,n.isManageRouteEnabled)((0,l.normalizeAppPathname)(o))?(0,t.jsxs)("div",{className:"manage-page-wrap flex min-h-0 flex-1 flex-col",children:[(0,t.jsx)("div",{className:"manage-page-header flex shrink-0 items-start justify-between gap-4 pb-4",children:(0,t.jsxs)("div",{className:"manage-page-title-block",children:[(0,t.jsx)("h1",{className:"manage-page-title",children:"页面不可用"}),(0,t.jsx)("p",{className:"manage-page-desc",children:"当前设置页未开放或已被禁用。"})]})}),(0,t.jsx)("div",{className:"manage-page-body flex min-h-0 min-w-0 flex-1 flex-col items-center justify-center gap-3 text-[var(--ds-muted)]",children:(0,t.jsx)(a.default,{className:"text-zinc-900 underline underline-offset-4",href:d,prefetch:!1,children:"返回默认设置页"})})]}):(0,t.jsx)(t.Fragment,{children:i})}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,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,e=>{"use strict";e.s(["MANAGE_DEFAULT_HREF",()=>p,"getBridgeSidebarManageRoutes",()=>g,"getManageRoute",()=>f,"isManageRouteEnabled",()=>m,"isManageSideNavPath",()=>h],82787);var t=e.i(70703),n=e.i(71645),r=e.i(18050),s=e.i(87968),a=e.i(75157);function i(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-zinc-500",t),children:[(0,r.jsx)(s.Spinner,{})," 加载中"]})}function l(){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 o=e.i(97249);function u(e){return(0,t.default)(e,{loading:()=>(0,n.createElement)(i)})}let d=[{key:"task",slug:"task",label:"定时任务",title:"定时任务",description:"管理计划执行的任务与触发记录。",chrome:"feature",icon:"Task",enabled:!0,headerIcon:"Calendar",visibleInNav:!1,visibleInBridgeSidebar:!0,Component:u(()=>e.A(94065).then(e=>({default:e.TaskView})))},{key:"mcp",slug:"mcp",label:"MCP",title:"MCP管理",description:"管理外部工具与数据源。可以导入、编辑、移除或禁用 MCP 服务。",chrome:"feature",icon:"Mcp",headerIcon:"Mcp",enabled:!0,visibleInNav:!1,visibleInBridgeSidebar:!0,Component:u(()=>e.A(72234).then(e=>({default:e.McpManageView})))},{key:"tools",slug:"tools",label:"Tools",title:"Tools管理",description:"管理当前 Agent 已挂载的Tools列表",chrome:"feature",icon:"Tool",headerIcon:"Tool",enabled:!0,visibleInNav:!1,visibleInBridgeSidebar:!0,Component:u(()=>e.A(58332).then(e=>({default:e.ToolsManageView})))},{key:"skills",slug:"skills",label:"Skills",title:"Skills管理",description:"管理当前 Agent 已挂载的Skill",chrome:"feature",icon:"Skill",enabled:!0,headerIcon:"Skill",visibleInNav:!1,visibleInBridgeSidebar:!0,Component:u(()=>e.A(48583).then(e=>({default:e.SkillsManageView})))},{key:"teams",slug:"teams",label:"Agent / Teams",title:"Agent / Teams 管理",description:"管理 Agent / Teams 团队与协作编排。",chrome:"feature",icon:"Teams",enabled:!0,visibleInNav:!1,headerIcon:"Agent2",visibleInBridgeSidebar:!0,Component:u(()=>e.A(2578).then(e=>({default:e.TeamsView})))},{key:"library",slug:"library",label:"资料库",title:"资料库",description:"管理当前 Agent 的资料库",chrome:"feature",icon:"Library",enabled:!0,visibleInNav:!1,headerIcon:"Library",visibleInBridgeSidebar:!0,Component:u(()=>e.A(14928).then(e=>({default:e.LibraryView})))},{key:"env",slug:"env",label:"服务商",title:"服务商",description:"管理 API 服务商以访问模型。",chrome:"side-nav",icon:"Server",enabled:!0,visibleInNav:!0,Component:u(()=>e.A(1861).then(e=>({default:e.EnvManageView})))},{key:"git",slug:"git",label:"Git 设置",title:"Git 设置",description:"管理 Git 仓库与版本控制配置。",chrome:"side-nav",icon:"Brackets",enabled:!0,visibleInNav:!0,Component:u(()=>e.A(83330).then(e=>({default:e.GitManageView})))},{key:"geelib",slug:"geelib",label:"Geelib 设置",title:"Geelib 设置",description:"管理极库云集成与任务同步配置。",chrome:"side-nav",icon:"Detail",enabled:!0,visibleInNav:!0,Component:u(()=>e.A(94540).then(e=>({default:e.GeelibManageView})))},{key:"im",slug:"im",label:"IM 设置",title:"IM 设置",description:"管理即时通讯与消息通知配置。",chrome:"side-nav",icon:"MessageCircleQuestion",enabled:!0,visibleInNav:!0,Component:u(()=>e.A(70287).then(e=>({default:e.ImManageView})))},{key:"system",slug:"system",label:"系统设置",title:"系统设置",description:"管理系统级参数与运行配置。",chrome:"side-nav",icon:"Settings",enabled:!0,visibleInNav:!0,Component:u(()=>e.A(21363).then(e=>({default:e.SystemManageView})))},{key:"permissions",slug:"permissions",label:"权限",title:"权限",description:"管理平台访问权限与角色策略。",chrome:"side-nav",enabled:!1,visibleInNav:!1,Component:l},{key:"general",slug:"general",label:"通用",title:"通用",description:"平台通用配置与偏好设置。",chrome:"side-nav",enabled:!1,visibleInNav:!1,Component:l},{key:"about",slug:"about",label:"关于",title:"关于",description:"版本信息与平台说明。",chrome:"side-nav",enabled:!0,visibleInNav:!1,Component:l}].map(e=>{var t,n;let{children:r,...s}=e;return{...s,href:(0,o.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,o.buildSettingsHref)(a),chrome:null!=(r=e.chrome)?r:n,enabled:null==(s=e.enabled)||s,visibleInNav:!1}}))}:{}}});function c(e){return e.Component}let p=function(){var e,t,n,r,s,a;let i=null!=(n=null!=(t=null!=(e=d.find(e=>e.enabled&&e.visibleInNav&&"side-nav"===e.chrome))?e:d.find(e=>e.enabled&&"side-nav"===e.chrome))?t:d.find(e=>"side-nav"===e.chrome))?n:d[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(c(i))return i;let o=d.find(e=>c(e));return o||d.flatMap(e=>{var t;return null!=(t=e.children)?t:[]})[0]}().href;function f(e){return d.find(t=>t.key===e)}function g(){return d.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 m(e){var t;return(null===(t=(0,o.getSettingsRouteByPathname)(e,function(){let e=[];for(let n of d){var t;c(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 h(e){if(!e)return!1;let t=d.filter(e=>"side-nav"===e.chrome);return(0,o.isSettingsRoutePath)(e,t)}},21199,41143,e=>{"use strict";e.s(["WorkspaceShell",()=>Z],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",()=>f,"parseScheduleToolResult",()=>p,"partitionScheduledSegments",()=>g,"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 f(e){let t=new Map,n=new Map;for(let c of e){let e=v(c);for(let m 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,f,g,b;if("tool_use"===m.type&&m.name===o){let t="string"==typeof m.id?m.id:"";if(!t)continue;let r=(b=m.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"!==m.type||"string"!=typeof m.tool_use_id)continue;let h=n.get(m.tool_use_id);if(!h)continue;let v=p(m.content,c);if(!v){n.delete(m.tool_use_id);continue}let S=v.id||h.id||"pending-".concat(m.tool_use_id),y={id:S,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!=(f=v.delayMinutes)?f:h.delayMinutes,cron:v.cron,recurring:v.recurring,status:v.error?"failed":null!=(g=h.status)?g:"scheduled"};t.set(S,y),n.delete(m.tool_use_id)}}for(let n of e){if(!c(n)||"user"!==m(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 g(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"===m(e)).map(e=>h(e)).find(e=>e.trim().length>0))?a:"",d=v(l[0]),p=l.filter(e=>"user"!==m(e)),f=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:f,assistantMessages:p});for(let e=i+1;e<=o;e+=1)r.add(e)}return{scheduledStarts:n,consumed:r}}function m(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(70074),S=e.i(55227);function y(e){let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.floor(t)):0}function x(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 A=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),k=e.i(50711);async function I(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),C=e.i(55146),T=e.i(72064),E=e.i(46798),R=e.i(19455),_=e.i(85570),M=e.i(97249),P=e.i(75157),L=e.i(8279),O=e.i(52727),D=e.i(18253),z=e.i(87968);function W(e){let{collapsed:r,onGoToSettings:a}=e,{push:i}=(0,D.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,_.useWorkspaceRuntime)(),f=o.trim()||"qihoo",g=(null==l?void 0:l.id)===f&&l.displayName.trim()||f,m=(0,L.initialsFromLabel)(g),[h,v]=(0,n.useState)(!1),[b,S]=(0,n.useState)([]),[y,x]=(0,n.useState)(!1),[A,j]=(0,n.useState)(null),N=(0,n.useRef)(null),k=(0,n.useCallback)(()=>{N.current&&(clearTimeout(N.current),N.current=null)},[]),I=(0,n.useCallback)(()=>{k(),v(!0)},[k]),w=(0,n.useCallback)(()=>{k(),N.current=setTimeout(()=>{v(!1),N.current=null},120)},[k]),C=(0,n.useCallback)(()=>{v(!1),null==a||a()},[a]),W=(0,n.useCallback)(async e=>{let t=e.id.trim();v(!1),t&&t!==f&&await p(t,e.displayName)&&i((0,M.buildAppNavHref)("/",{ensureAgent:!0,agent:t,preserveSessionId:!1}))},[f,i,p]);(0,n.useEffect)(()=>{if(!h)return;let e=!1;return x(!0),j(null),S([]),(0,O.listAgents)(u,d).then(t=>{e||S(t)}).catch(t=>{e||j(String(t))}).finally(()=>{e||x(!1)}),()=>{e=!0}},[h,u,d]),(0,n.useEffect)(()=>{if(!b.length)return;let e=b.find(e=>e.id===f);e&&((null==l?void 0:l.id)!==e.id||l.displayName!==e.displayName)&&c(e)},[b,f,l,c]),(0,n.useEffect)(()=>()=>{N.current&&clearTimeout(N.current)},[]);let B=(0,t.jsx)(E.TooltipProvider,{delayDuration:150,side:r?"right":void 0,children:(0,t.jsxs)(E.Tooltip,{children:[(0,t.jsx)(E.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(R.Button,{type:"button",variant:"plain",size:r?"icon":"icon-sm",className:(0,P.cn)(r?"sidebar-collapsed-icon-btn !rounded-[10px] text-zinc-700":"text-[var(--ds-muted)] hover:bg-[var(--ds-item-hover)] focus-visible:ring-2 focus-visible:ring-[var(--ds-accent)]"),"aria-label":"设置",onClick:C,children:(0,t.jsx)(T.default,{name:"Settings",size:16,strokeWidth:1.75,className:(0,P.cn)("shrink-0",r&&"text-zinc-700")})})}),(0,t.jsx)(E.TooltipContent,{side:r?"right":"top",children:(0,t.jsx)("p",{children:"设置"})})]})});return(0,t.jsxs)("div",{className:(0,P.cn)("shrink-0 border-t border-solid border-[var(--ds-border)] transition",r?"flex w-full flex-col items-center gap-1 p-[1rem_.75rem]":"flex items-center gap-2 p-[1rem_.75rem]"),onClick:r?e=>e.stopPropagation():void 0,children:[r?B:null,(0,t.jsxs)("div",{className:(0,P.cn)("relative min-w-0",!r&&"flex-1"),onMouseEnter:I,onMouseLeave:w,children:[(0,t.jsxs)("div",{className:(0,P.cn)("flex min-w-0 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:m}),r?null:(0,t.jsx)("span",{className:"min-w-0 truncate text-[var(--ds-text)]",children:g})]}),h?(0,t.jsx)("div",{className:"absolute bottom-full left-0 z-50 pb-2 shadow-[var(--shadow-float)]",onMouseEnter:I,onMouseLeave:w,children:(0,t.jsx)("div",{className:(0,P.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:y?(0,t.jsxs)("div",{className:"flex items-center justify-center gap-2 px-2 py-3 text-[var(--ds-muted)]",children:[(0,t.jsx)(z.Spinner,{}),"加载中…"]}):A?(0,t.jsxs)("div",{className:"px-2 py-3 text-red-600",children:["加载失败: ",A]}):0===b.length?(0,t.jsx)("div",{className:"px-2 py-3 text-[var(--ds-muted)]",children:"暂无 agent"}):b.map(e=>{let n=e.id===f,r=(0,L.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 hover:bg-[var(--ds-item-hover)] focus-visible:outline-none","aria-selected":n,onClick:()=>W(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)(T.default,{name:"Check",size:16,className:"text-[var(--ds-accent)]"})}):null]},e.id)})})})}):null]}),r?null:B]})}var B=e.i(82787);let F="bridge-sidebar-collapsed",U=[];function V(e){let{onNewSession:a,onSelectSession:i,deleteSessionById:l}=e,{push:o,router:u}=(0,D.useGuardedAppNavigation)(),d=(0,r.usePathname)(),c=(0,s.useAppStore)(e=>e.lastSessions),p=(0,s.useAppStore)(e=>e.sessionId),f=(0,s.useAppStore)(e=>{var t;return null!=(t=e.messagesByRun.main)?t:U}),g=(0,s.useAppStore)(e=>e.pendingPrompt),m=(0,n.useMemo)(()=>{var e;if(!p||c.some(e=>e.sessionId===p))return c;let t=f.find(e=>{var t;return(null==(t=e.message)?void 0:t.type)==="user"});if(!t&&!g)return c;let n="新对话";return g?n=g:"string"==typeof(null==t||null==(e=t.message)?void 0:e.message)&&(n=t.message.message),[{sessionId:p,summary:n,lastModified:Date.now(),createdAt:Date.now()},...c]},[c,p,f,g]),h=(0,s.useAppStore)(e=>e.brand),v=(0,s.useAppStore)(e=>e.agentId),[b,S]=(0,n.useState)(!1),y=(0,n.useRef)(!1),[x,A]=(0,n.useState)(null),[j,N]=(0,n.useState)(!0),k=(0,n.useMemo)(()=>(0,B.getBridgeSidebarManageRoutes)(),[]),I=(0,n.useCallback)((e,t)=>(0,M.buildAppNavHref)(e,{ensureAgent:null==t?void 0:t.ensureAgent,agent:v,preserveSessionId:"/"===e&&!(null==t?void 0:t.clearSessionId),sessionId:null==t?void 0:t.sessionId}),[v]),R=(0,n.useCallback)(e=>{let t=(0,M.normalizeAppPathname)(d),n=(0,M.normalizeAppPathname)(e);return t===n||t.startsWith("".concat(n,"/"))},[d]),_=(0,n.useCallback)(e=>{o(I(e,{ensureAgent:!0}))},[o,I]);(0,n.useEffect)(()=>{let e,t,n=[...["env","add-account"].flatMap(e=>{var t;let n=null==(t=(0,B.getManageRoute)(e))?void 0:t.href;return n?[I(n,{ensureAgent:!0})]:[]}),...k.map(e=>I(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,I,k]),(0,n.useEffect)(()=>{try{let e=window.localStorage.getItem(F);"true"===e&&S(!0)}catch(e){}finally{y.current=!0}},[]),(0,n.useEffect)(()=>{if(y.current)try{window.localStorage.setItem(F,String(b))}catch(e){}},[b]),(0,n.useEffect)(()=>{if(!x)return;let e=e=>{let t=e.target;!(!(t instanceof Element)||t.closest("[data-session-menu-wrap]"))&&(t.closest('[data-slot="dropdown-menu-content"]')||A(null))};return document.addEventListener("pointerdown",e,!0),()=>document.removeEventListener("pointerdown",e,!0)},[x]);let P=(0,n.useCallback)(()=>{o(I(B.MANAGE_DEFAULT_HREF,{ensureAgent:!0}))},[o,I]);return(0,t.jsx)("aside",{className:"sidebar h-dvh max-h-dvh min-h-0 self-start overflow-hidden ".concat(b?"is-collapsed":""),"data-region":"sidebar-panels",onClick:()=>{b&&S(!1)},children:b?(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(),S(!1)},children:(0,t.jsx)(T.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(I("/",{clearSessionId:!0}))},children:(0,t.jsx)(T.default,{name:"Add",size:16,className:"text-zinc-700"})})}),(0,t.jsx)(E.TooltipContent,{children:(0,t.jsx)("p",{children:"新聊天"})})]}),k.map(e=>{let n=R(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(),_(e.href)},children:(0,t.jsx)(T.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)(W,{collapsed:!0,onGoToSettings:P})})]}):(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:h})}),(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(),S(!0)},children:(0,t.jsx)(T.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-zinc-700 transition-colors hover:bg-white/70",title:"开启新对话","aria-label":"开启新对话",onClick:e=>{e.preventDefault(),a(),o(I("/",{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 sidebar-drawers--nav px-[10px]",children:k.map(e=>{let n=R(e.href);return(0,t.jsxs)("div",{className:"m-[.45rem_0_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(),_(e.href)},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&_(e.href)},children:[(0,t.jsx)(T.default,{name:e.icon,size:16,className:"mr-3 text-zinc-700",strokeWidth:1.2}),(0,t.jsx)("span",{className:"text-zinc-900",children:e.label})]},e.key)})}),(0,t.jsx)("div",{className:"sidebar-drawers sidebar-drawers--sessions ".concat(j?"is-open":"is-closed"),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":j,"aria-controls":"sessionList","aria-label":j?"收起历史会话列表":"展开历史会话列表",onClick:()=>{N(e=>!e)},children:["历史会话",j?(0,t.jsx)(T.default,{name:"ChevronDown",size:12,strokeWidth:1,className:"ml-1 shrink-0 text-[var(--ds-muted)]"}):(0,t.jsx)(T.default,{name:"ChevronRight",size:12,strokeWidth:1,className:"ml-1 shrink-0 text-[var(--ds-muted)]"})]}),j?(0,t.jsx)("div",{className:"sidebar-drawer-body sidebar-drawer-body--sessions",children:(0,t.jsx)("div",{id:"sessionList",children:m.length?(0,w.groupSessionsByMonth)(m).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(I("/",{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&&A(t=>t===e.sessionId?null:e.sessionId)},children:(0,t.jsxs)(C.DropdownMenu,{open:x===e.sessionId,onOpenChange:e=>{e||A(null)},children:[(0,t.jsx)(C.DropdownMenuTrigger,{type:"button",className:"session-menu-btn","aria-label":"更多",onClick:t=>{t.stopPropagation(),A(t=>t===e.sessionId?null:e.sessionId)},children:(0,t.jsx)(T.default,{name:"More",size:16,className:"text-[var(--ds-muted)]"})}),(0,t.jsxs)(C.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)(C.DropdownMenuItem,{className:"h-9 rounded-xl px-2.5 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)(T.default,{name:"Clipboard",size:16,className:"text-[var(--ds-muted)]"}),"复制完整 ID"]}),(0,t.jsx)(C.DropdownMenuSeparator,{className:"mx-1 my-1 bg-[var(--ds-border)]"}),(0,t.jsxs)(C.DropdownMenuItem,{variant:"destructive",className:"h-9 rounded-xl px-2.5 hover:bg-[#fff1f1] focus:bg-[#fff1f1]",onClick:()=>{(async()=>{let t=e.sessionId===p.trim(),n=await l(e.sessionId);t&&n&&o(I("/",{clearSessionId:!0}))})()},children:[(0,t.jsx)(T.default,{name:"Trash2",size:16}),"删除会话"]})]})]})})]},e.sessionId)})},e.key)):(0,t.jsx)("p",{className:"sidebar-drawer-empty",children:"(暂无会话)"})})}):null]})}),(0,t.jsx)(W,{collapsed:!1,onGoToSettings:P})]})})}var G=e.i(61196);function q(){let e=(0,G.useStageThreadFlyoutStore)(e=>e.open),r=(0,G.useStageThreadFlyoutStore)(e=>e.title),s=(0,G.useStageThreadFlyoutStore)(e=>e.content),a=(0,G.useStageThreadFlyoutStore)(e=>e.width),i=(0,G.useStageThreadFlyoutStore)(e=>e.hideHeader),l=(0,G.useStageThreadFlyoutStore)(e=>e.bodyClassName),o=(0,G.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,G.clampStageThreadFlyoutWidth)(a))},[e,a]);let f=(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,G.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,P.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":G.STAGE_THREAD_FLYOUT_MIN_WIDTH,"aria-valuemax":G.STAGE_THREAD_FLYOUT_MAX_WIDTH,"aria-label":"调整面板宽度",onPointerDown:f,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)(R.Button,{type:"button",variant:"plain-outline",size:"icon-sm",className:"stage-thread-flyout-close shrink-0 cursor-pointer !pl-0 !pr-0","aria-label":"关闭",onClick:()=>void o(),children:(0,t.jsx)(T.default,{name:"X",size:16})})]}),(0,t.jsx)("div",{className:(0,P.cn)("stage-thread-flyout-body",l),children:s})]})]}):null})}var H=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}=G.useStageThreadFlyoutStore.getState();if(r&&(0,H.isLeavingFlyoutGuardRoute)(i,n,e)){if(!(0,H.shouldConfirmFlyoutRouteChange)(i,n,e,l))return void o();a.current=!0,t.replace(n),(0,H.confirmDiscardFlyoutChanges)().then(r=>{a.current=!1,r?(o(),t.push(e),s.current=e):s.current=n})}},[e,t]),null}function Y(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)(V,{onNewSession:a.onNewSession,onSelectSession:a.onSelectSession,onSaveAgentConfig:a.onSaveAgentConfig,deleteSessionById:a.deleteSessionById}),(0,t.jsx)("main",{className:(0,P.cn)("main overflow-x-auto",r),"data-region":s,children:(0,t.jsx)("div",{className:"main-content",children:n})}),(0,t.jsx)(q,{}),(0,t.jsx)(Q,{})]})}function J(){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.agentSelectionResolved),l=(0,s.useAppStore)(e=>e.setWsUrl),o=(0,s.useAppStore)(e=>e.setAgentId),{loadSessions:u,loadAgentConfig:d}=(0,N.useSession)();return(0,n.useLayoutEffect)(()=>{s.useAppStore.getState().wsUrl.trim()||l((0,a.defaultWsUrl)())},[l]),(0,n.useLayoutEffect)(()=>{(0,M.syncRuntimeAgentWithUrl)(s.useAppStore.getState().agentId,o)},[r,o]),(0,n.useEffect)(()=>{if(!e.trim())return;let t=!1;return(async()=>{let e=s.useAppStore.getState();e.setAgentSelectionResolved(!1),e.setAgentSelectionError(null);let n=(0,M.readAgentFromLocationSearch)().trim()||e.agentId.trim();try{var r;let s=await (0,O.listAgents)(e.wsUrl,e.apiBase);if(t)return;if(!s.length){e.setAgentSelectionError("暂无可用 Agent"),e.setAgentSelectionResolved(!1);return}let a=null!=(r=s.find(e=>e.id===n))?r:s[0];if(!a){e.setAgentSelectionError("暂无可用 Agent"),e.setAgentSelectionResolved(!1);return}e.agentId.trim()!==a.id&&e.setAgentId(a.id),e.setCurrentWorkspaceAgent(a),(0,M.replaceRuntimeAgentInUrl)(a.id),e.setAgentSelectionResolved(!0)}catch(n){if(t)return;e.setAgentSelectionError(n instanceof Error?n.message:String(n)),e.setAgentSelectionResolved(!1)}})(),()=>{t=!0}},[e,t,r]),(0,n.useEffect)(()=>{i&&(u(),d())},[i,r,e,t,u,d]),null}function X(){let e=(0,r.useSearchParams)(),t=(0,s.useAppStore)(e=>e.setAgentId),a=(0,s.useAppStore)(e=>e.setAgentSelectionResolved);return(0,n.useLayoutEffect)(()=>{var n;let r=null==(n=e.get("agent"))?void 0:n.trim();r&&r!==s.useAppStore.getState().agentId.trim()&&(a(!1),t(r))},[e,t,a]),null}function K(){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(J,{}),(0,t.jsx)(n.Suspense,{fallback:null,children:(0,t.jsx)(X,{})})]})}function Z(e){let{children:o}=e,d=(0,r.usePathname)(),c=function(e){if(!e)return!1;let t=(0,M.normalizeAppPathname)(e);return"/manage"===t||t.startsWith("/manage/")}(d),p=(0,B.isManageSideNavPath)(d),f=(0,s.useAppStore)(e=>e.wsUrl),g=(0,s.useAppStore)(e=>e.apiBase),m=(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),C=(0,s.useAppStore)(e=>e.setSessionViewMode),T=(0,s.useAppStore)(e=>e.setPendingHistoryRefresh),{loadSessions:E,loadAgentConfig:R,deleteSessionById:P}=(0,N.useSession)(),L=(0,k.usePersistAgentConfig)(),{reconnect:O,switchSession:D,sendPrompt:z,sendAbort:W,sendReloadAgentConfig:F,sendRestartSubprocess:U,sendPermissionResponse:V}=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),f=(0,n.useRef)(null==e?void 0:e.onSession);f.current=null==e?void 0:e.onSession;let g=(0,n.useRef)(null==e?void 0:e.onQueryIdle);g.current=null==e?void 0:e.onQueryIdle;let m=(0,s.useAppStore)(e=>e.wsUrl),h=(0,s.useAppStore)(e=>e.agentSelectionResolved),v=(0,n.useCallback)(()=>(o.current+=1,o.current),[]),N=(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),e.setTurnRunning(!1),p.current.clear()},[]),k=(0,n.useCallback)((e,t)=>{var n,a,i,o,c,m,h,S,y;let x=(null==t?void 0:t.httpReplay)===!0,N=s.useAppStore.getState(),I=(e.runId||"main").trim()||"main",w="string"==typeof e.agent_name?e.agent_name.trim():"";w&&p.current.set(I,w);let C=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(I)||"";return t||s||a||n},T=String(null!=(n=e.sessionId)?n:"").trim()||r.current.trim()||N.sessionId.trim()||"unknown",E="".concat(d.current,":").concat(T);if(e.eventId&&function(e,t){var n;let r=t||"default",s=null!=(n=A.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 A.set(r,s),!1}(e.eventId,E))return void N.appendLog("dedup","eventId=".concat(e.eventId," 已忽略"));switch(N.appendLog(x?"← replay":"←",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=N.sessionId.trim();if(r.current){if(n&&n!==s)return void N.appendLog("switchSession","忽略过期 session.meta incoming=".concat(n," current=").concat(s));r.current=""}t.agent&&N.setBrandAgent(String(t.agent)),N.setSessionContextPercent(function(e){if(!e||"object"!=typeof e)return null;let t=Number(e.percentage);if(Number.isFinite(t))return Math.max(0,Math.round(10*t)/10);let n=Number(e.totalTokens),r=Number(e.rawMaxTokens);return Number.isFinite(n)&&Number.isFinite(r)&&r>0?Math.max(0,Math.round(n/r*1e3)/10):null}(t.contextUsage)),n&&(N.setSessionId(n),null==(o=f.current)||o.call(f,n));break}case l.EVENT.SESSION_READY:{N.resetApiErrorState();let t=e.data;r.current&&N.sessionId.trim()===r.current&&(r.current=""),N.markReady(),t.agent&&N.setBrandAgent(String(t.agent));break}case l.EVENT.SESSION_ERROR:{let t=e.data,n=null!=(c=t.message)?c:JSON.stringify(t);N.setAssistantGenerating(!1),N.setTurnRunning(!1),N.setStatus("错误: ".concat(String(n)),"err");break}case l.EVENT.QUERY_PROGRESS:{N.resetApiErrorState();let t=String(null!=(m=e.data.phase)?m:"");"idle"===t?(N.setQueryPhase(""),N.bridgeReady&&N.setStatus("已就绪","ready"),null==(h=g.current)||h.call(g)):(N.setQueryPhase(t),N.setStatus("查询阶段: ".concat(t,"…"),"working"));break}case l.EVENT.CONVERSATION_DELTA:{N.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!=(S=e.sessionId)?S:"").trim(),n=r.current.trim(),s=N.sessionId.trim();if(t&&t!==n&&t!==s){N.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=C("",I),a=v();N.applyRunMessageDelta({...n,runId:I,sourceAgent:s,ts:"string"==typeof e.ts?e.ts:"",arrivalSeq:a})}"message_completed"===t.action&&N.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;N.setRunLifecycleData({event:n,message:t.message});let r=C("string"==typeof t.sourceAgent?t.sourceAgent.trim():"","system",!1),s=j(t);s.trim()&&N.appendSourceAgentMessage({key:"string"==typeof e.eventId?e.eventId:"lc-".concat(Date.now()),source:r,runId:I,correlationId:"",status:"resolved",text:s,ts:"string"==typeof e.ts?e.ts:"",arrivalSeq:v()}),"configReloaded"===n&&N.setStatus("已重新加载 agent.md / agent.json",(0,b.resolveInfoStatusClass)(N.bridgeReady,N.wsConnected));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&&k(r,t)}break}case l.EVENT.TURN_TERMINAL:{N.resetApiErrorState(),N.setStreamBuffer(""),N.setAssistantGenerating(!1),N.setTurnRunning(!1),N.setQueryPhase("");let t=e.data;N.setTurnTerminalData({status:t.status,resultText:t.resultText,reason:t.reason});let n=s.useAppStore.getState();"resolved"===t.status?n.setStatus("本轮结束(可继续发送)",(0,b.resolveInfoStatusClass)(n.bridgeReady,n.wsConnected)):"failed"===t.status?n.setStatus("本轮失败: ".concat(null!=(y=t.reason)?y:"未知错误"),"err"):"cancelled"===t.status?n.setStatus("本轮已取消",(0,b.resolveInfoStatusClass)(n.bridgeReady,n.wsConnected)):n.setStatus("本轮结束(可继续发送)",(0,b.resolveInfoStatusClass)(n.bridgeReady,n.wsConnected));let r=C("string"==typeof t.sourceAgent?t.sourceAgent.trim():"","main"===I?"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:I,correlationId:a,status:"resolved"===t.status?"resolved":"failed",text:i,ts:"string"==typeof e.ts?e.ts:"",arrivalSeq:v()});break}case l.EVENT.PERMISSION_REQUEST:{let t=e.data,n="string"==typeof t.requestId?t.requestId.trim():"";if(!n)break;N.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:I})}}},[v]),I=(0,n.useCallback)(e=>{var t,n,a,i,l,o;let u=s.useAppStore.getState(),d=String(null!=(t=e.type)?t:"");if("system"===d&&"api_error"===e.subtype){let t=y(e.retryAttempt),n=y(e.maxRetries),r=y(e.retryInMs),s=Date.now()+r,a=n>0&&t>=n?"failed":r>=1e4?"retrying":"loading";u.setApiErrorState({phase:a,retryAttempt:t,maxRetries:n,retryInMs:r,retryUntilTs:s}),u.appendLog("api_error",{uuid:"string"==typeof e.uuid?e.uuid:"",retryAttempt:t,maxRetries:n,retryInMs:r});return}switch(d){case"messages":if(r.current)return void u.appendLog("switchSession","忽略切换过程中的 messages 回包");u.resetApiErrorState(),u.setMessages(Array.isArray(e.messages)?e.messages:[]),u.setStreamBuffer("");break;case"queryProgress":{u.resetApiErrorState();let t=String(null!=(n=e.phase)?n:"");"idle"===t?(u.setQueryPhase(""),u.bridgeReady&&u.setStatus("已就绪","ready"),null==(a=g.current)||a.call(g)):(u.setQueryPhase(t),u.setStatus("查询阶段: ".concat(t,"…"),"working"));break}case"streamText":{u.resetApiErrorState();let t="string"==typeof e.text?e.text:"";u.setAssistantGenerating(!1),u.setStreamBuffer(t);let n=t.length>160?"".concat(t.slice(0,160),"…"):t;u.appendLog("←",{type:"streamText",len:t.length,preview:n||"(空)"});break}case"ready":u.resetApiErrorState(),r.current&&u.sessionId.trim()===r.current&&(r.current=""),u.markReady(),e.agent&&u.setBrandAgent(String(e.agent));break;case"session":{let t=String(null!=(i=e.sessionId)?i:""),n=u.sessionId.trim();if(r.current){if(t&&t!==n)return void u.appendLog("switchSession","忽略过期 session 回包 incoming=".concat(t," current=").concat(n));r.current=""}e.agent&&u.setBrandAgent(String(e.agent)),t&&(u.setSessionId(t),null==(l=f.current)||l.call(f,t));break}case"error":u.setAssistantGenerating(!1),u.setTurnRunning(!1),u.setStatus("错误: ".concat(String(null!=(o=e.message)?o:JSON.stringify(e))),"err");break;case"turnComplete":{u.resetApiErrorState(),u.setStreamBuffer(""),u.setAssistantGenerating(!1),u.setTurnRunning(!1),u.setQueryPhase("");let e=s.useAppStore.getState();e.setStatus("本轮结束(可继续发送)",(0,b.resolveInfoStatusClass)(e.bridgeReady,e.wsConnected));break}case"agentConfigReloaded":{let e=s.useAppStore.getState();e.setStatus("已重新加载 agent.md / agent.json",(0,b.resolveInfoStatusClass)(e.bridgeReady,e.wsConnected))}}},[]),w=(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,S.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&&x(n)&&k(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")}},[k]),C=(0,n.useCallback)(()=>{let e,n=s.useAppStore.getState();if(!n.agentSelectionResolved||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,A.clear();let r=n.agentId.trim()||"qihoo",l=n.sessionId.trim();l&&w(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&&(x(n)?k(n):null!==n&&"object"==typeof n&&(r.appendLog("←",n),I(n)))}},[k,I,w]),T=(0,n.useCallback)(()=>{N(),C()},[N,C]),E=(0,n.useCallback)((e,n)=>{let a=s.useAppStore.getState(),l=String(e||"").trim(),u=String(n||a.agentId||"").trim()||"qihoo",f=t.current,g=(0,i.isWebSocketOpen)(f);if(a.resetChat(),a.clearLog(),a.setSessionContextPercent(null),o.current=0,a.setBridgeReady(!1),a.resetApiErrorState(),a.setStatus("正在切换 session…","working"),p.current.clear(),d.current+=1,l&&g&&w(l,++c.current),r.current=l,!g)return void T();try{let e={type:"switchSession",sessionId:l,agent:u};f.send(JSON.stringify(e)),a.appendLog("→",e)}catch(e){a.appendLog("error","switchSession 发送失败: ".concat(String(e))),T()}},[T,w]);(0,n.useEffect)(()=>h?(C(),()=>{N()}):void N(),[m,h,C,N]);let R=(0,n.useCallback)(e=>{let n=t.current;(0,i.isWebSocketOpen)(n)&&(n.send(JSON.stringify(e)),s.useAppStore.getState().appendLog("→",e))},[]),_=(0,n.useCallback)(e=>{let t=String(null!=e?e:"").trim();t&&(s.useAppStore.getState().setAssistantGenerating(!0),s.useAppStore.getState().setTurnRunning(!0),s.useAppStore.getState().setPendingPrompt(t)),R({type:"prompt",text:e})},[R]),M=(0,n.useCallback)(()=>{R({type:"abort"})},[R]),P=(0,n.useCallback)(()=>{R({type:"reloadAgentConfig"})},[R]),L=(0,n.useCallback)(e=>{R({type:"restartSubprocess",reason:null!=e?e:"persist-session-overrides"})},[R]),O=(0,n.useCallback)(()=>{R({type:"reloadAgentPrompt"})},[R]);return{wsRef:t,disconnectIfOpen:N,connectWebSocket:C,reconnect:T,switchSession:E,sendPrompt:_,sendAbort:M,sendReloadAgentConfig:P,sendRestartSubprocess:L,sendReloadAgentPrompt:O,sendPermissionResponse:(0,n.useCallback)((e,t)=>{let n=String(e||"").trim();n&&R({type:"permission.response",requestId:n,behavior:t})},[R]),sendInit:(0,n.useCallback)(e=>{R({type:"init",...e})},[R])}}({onSession:()=>{E()},onQueryIdle:()=>{E()}}),G=(0,n.useCallback)((e,t)=>I(e,{switchSession:D,reconnect:O,loadSessions:E,loadAgentConfig:R,preferReconnect:c},{displayName:t}),[D,O,E,R,c]),q=(0,n.useMemo)(()=>({reconnect:O,switchSession:D,switchWorkspaceAgent:G,sendPrompt:z,sendAbort:W,sendReloadAgentConfig:F,sendRestartSubprocess:U,sendPermissionResponse:V}),[O,D,G,z,W,F,U,V]),H=p?"settings-main":c?"manage-main":"draft"===v?"is-draft-session":void 0;return(0,t.jsxs)(_.WorkspaceRuntimeContext.Provider,{value:q,children:[(0,t.jsx)(K,{}),(0,t.jsxs)("div",{className:"ws-config-hidden","aria-hidden":!0,children:[(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:f}),(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:g}),(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:h}),(0,t.jsx)("input",{readOnly:!0,hidden:!0,value:m})]}),(0,t.jsx)(Y,{mainClassName:H,mainRegion:p?"settings-shell":c?"manage-shell":"chat-shell",sidebar:{onNewSession:()=>{w(""),C("draft"),T(!1),c?O():D("",m)},onSelectSession:e=>{w(e),C("history"),T(!1),c?O():D(e,m)},onSaveAgentConfig:()=>void L({silent:!1}),deleteSessionById:async e=>{let t=await P(e);return t&&(c?O():D("",m)),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:f,activeTabValue:g,tabVariant:m,bottomItems:h,children:v}=e,b=(0,n.usePathname)(),{push:S}=(0,o.useGuardedAppNavigation)(),y=(0,s.useAppStore)(e=>e.agentId),x=e=>{S((0,i.buildAppNavHref)(e,{ensureAgent:!0,agent:y}))},A=!!(m&&(null==f?void 0:f.length)),j=null!=g?g:null==f||null==(d=f[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:()=>x(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:()=>x(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:A?(0,t.jsx)(l.AppTabs,{tabs:null!=f?f:[],value:j,onChange:x,listVariant:m,listClassName:"pill"===m?"mx-auto":void 0,contentClassName:"flex min-h-0 min-w-0 flex-1 flex-col",children:v}):v})]})}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20783,e=>{"use strict";e.s(["composeRefs",()=>n,"useComposedRefs",()=>o]);var r=e.i(71645);function t(e,r){if("function"==typeof e)return e(r);null!=e&&(e.current=r)}function n(){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];return e=>{let n=!1,o=r.map(r=>{let o=t(r,e);return n||"function"!=typeof o||(n=!0),o});if(n)return()=>{for(let e=0;e<o.length;e++){let n=o[e];"function"==typeof n?n():t(r[e],null)}}}}function o(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return r.useCallback(n(...t),t)}},24687,e=>{"use strict";e.s(["Textarea",()=>n]);var r=e.i(18050),t=e.i(75157);function n(e){let{className:n,...o}=e;return(0,r.jsx)("textarea",{"data-slot":"textarea",className:(0,t.cn)("flex min-h-20 w-full rounded-md border border-solid border-border bg-transparent px-3 py-2 text-sm outline-none transition-[color,box-shadow,border-color] duration-150 ease-in-out placeholder:text-muted-foreground hover:border-[var(--border-hover)] focus-visible:border-[var(--border-focus)] focus-visible:[box-shadow:var(--ring-focus-sm)] read-only:focus-visible:border-border read-only:focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 disabled:focus-visible:border-border disabled:focus-visible:[box-shadow:none]",n),...o})}},36413,e=>{"use strict";e.s(["StatusBadge",()=>i],36413);var r=e.i(18050),t=e.i(25913),n=e.i(75157);let o=(0,t.cva)("inline-flex shrink-0 items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-colors focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-white",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function a(e){let{className:t,variant:a,...u}=e;return(0,r.jsx)("span",{"data-slot":"badge",className:(0,n.cn)(o({variant:a}),t),...u})}let u={success:{root:"border-transparent bg-[var(--green-light)] text-[var(--green-dark)]",dot:"bg-[var(--ds-ok)]"},danger:{root:"border-transparent bg-[#fef2f2] text-[var(--ds-danger)]",dot:"bg-[var(--ds-danger)]"},default:{root:"border-transparent bg-[var(--surface-2)] text-[var(--ds-muted)]",dot:"bg-[var(--ds-muted)]"},progress:{root:"border-transparent bg-[color-mix(in_srgb,var(--blue)_12%,var(--surface-1))] text-[var(--blue)]",dot:"bg-[var(--blue)]"},warning:{root:"border-transparent bg-[color-mix(in_srgb,var(--amber)_14%,var(--surface-1))] text-[var(--amber)]",dot:"bg-[var(--amber)]"}};function i(e){let{tone:t="default",showDot:o=!0,dotClassName:i,className:s,children:l,...c}=e,f=u[t];return(0,r.jsxs)(a,{variant:"outline",className:(0,n.cn)("gap-1.5",f.root,s),...c,children:[o?(0,r.jsx)("span",{className:(0,n.cn)("size-1.5 shrink-0 rounded-full",f.dot,i),"aria-hidden":!0}):null,l]})}},98183,(e,r,t)=>{"use strict";function n(e){let r={};for(let[t,n]of e.entries()){let e=r[t];void 0===e?r[t]=n:Array.isArray(e)?e.push(n):r[t]=[e,n]}return r}function o(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function a(e){let r=new URLSearchParams;for(let[t,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)r.append(t,o(e));else r.set(t,o(n));return r}function u(e){for(var r=arguments.length,t=Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(t,{assign:function(){return u},searchParamsToUrlQuery:function(){return n},urlQueryToSearchParams:function(){return a}})},95057,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(t,{formatUrl:function(){return a},formatWithValidation:function(){return i},urlObjectKeys:function(){return u}});let n=e.r(90809)._(e.r(98183)),o=/https?|ftp|gopher|file/;function a(e){let{auth:r,hostname:t}=e,a=e.protocol||"",u=e.pathname||"",i=e.hash||"",s=e.query||"",l=!1;r=r?encodeURIComponent(r).replace(/%3A/i,":")+"@":"",e.host?l=r+e.host:t&&(l=r+(~t.indexOf(":")?"["+t+"]":t),e.port&&(l+=":"+e.port)),s&&"object"==typeof s&&(s=String(n.urlQueryToSearchParams(s)));let c=e.search||s&&"?"+s||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==l?(l="//"+(l||""),u&&"/"!==u[0]&&(u="/"+u)):l||(l=""),i&&"#"!==i[0]&&(i="#"+i),c&&"?"!==c[0]&&(c="?"+c),""+a+l+(u=u.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+i}let u=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function i(e){return a(e)}},18967,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(t,{DecodeError:function(){return g},MiddlewareNotFoundError:function(){return m},MissingStaticPage:function(){return v},NormalizeError:function(){return h},PageNotFoundError:function(){return y},SP:function(){return p},ST:function(){return b},WEB_VITALS:function(){return n},execOnce:function(){return o},getDisplayName:function(){return l},getLocationOrigin:function(){return i},getURL:function(){return s},isAbsoluteUrl:function(){return u},isResSent:function(){return c},loadGetInitialProps:function(){return d},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return x}});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function o(e){let r,t=!1;return function(){for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return t||(t=!0,r=e(...o)),r}}let a=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,u=e=>a.test(e);function i(){let{protocol:e,hostname:r,port:t}=window.location;return e+"//"+r+(t?":"+t:"")}function s(){let{href:e}=window.location,r=i();return e.substring(r.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function c(e){return e.finished||e.headersSent}function f(e){let r=e.split("?");return r[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(r[1]?"?"+r.slice(1).join("?"):"")}async function d(e,r){let t=r.res||r.ctx&&r.ctx.res;if(!e.getInitialProps)return r.ctx&&r.Component?{pageProps:await d(r.Component,r.ctx)}:{};let n=await e.getInitialProps(r);if(t&&c(t))return n;if(!n)throw Object.defineProperty(Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let p="undefined"!=typeof performance,b=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class h extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class v extends Error{constructor(e,r){super(),this.message="Failed to load static file for page: "+e+" "+r}}class m extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function x(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=e.r(18967),o=e.r(52817);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let r=(0,n.getLocationOrigin)(),t=new URL(e,r);return t.origin===r&&(0,o.hasBasePath)(t.pathname)}catch(e){return!1}}},84508,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(t,{default:function(){return h},useLinkStatus:function(){return v}});let n=e.r(90809),o=e.r(18050),a=n._(e.r(71645)),u=e.r(95057),i=e.r(8372),s=e.r(18581),l=e.r(18967),c=e.r(84395);e.r(33525);let f=e.r(91949),d=e.r(73668),p=e.r(99781);e.r(84508);let b=e.r(65165);function g(e){return"string"==typeof e?e:(0,u.formatUrl)(e)}function h(e){var r;let t,n,u,[h,v]=(0,a.useOptimistic)(f.IDLE_LINK_STATUS),m=(0,a.useRef)(null),{href:x,as:P,children:_,prefetch:j=null,passHref:E,replace:O,shallow:T,scroll:S,onClick:N,onMouseEnter:C,onTouchStart:w,legacyBehavior:A=!1,onNavigate:R,ref:L,unstable_dynamicOnHover:U,...k}=e;t=_,A&&("string"==typeof t||"number"==typeof t)&&(t=(0,o.jsx)("a",{children:t}));let I=a.default.useContext(i.AppRouterContext),M=!1!==j,F=!1!==j?null===(r=j)||"auto"===r?b.FetchStrategy.PPR:b.FetchStrategy.Full:b.FetchStrategy.PPR,{href:B,as:D}=a.default.useMemo(()=>{let e=g(x);return{href:e,as:P?g(P):e}},[x,P]);A&&(n=a.default.Children.only(t));let K=A?n&&"object"==typeof n&&n.ref:L,z=a.default.useCallback(e=>(null!==I&&(m.current=(0,f.mountLinkInstance)(e,B,I,F,M,v)),()=>{m.current&&((0,f.unmountLinkForCurrentNavigation)(m.current),m.current=null),(0,f.unmountPrefetchableInstance)(e)}),[M,B,I,F,v]),Q={ref:(0,s.useMergedRef)(z,K),onClick(e){A||"function"!=typeof N||N(e),A&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),I&&(e.defaultPrevented||function(e,r,t,n,o,u,i){let{nodeName:s}=e.currentTarget;if(!("A"===s.toUpperCase()&&function(e){let r=e.currentTarget.getAttribute("target");return r&&"_self"!==r||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,d.isLocalURL)(r)){o&&(e.preventDefault(),location.replace(r));return}if(e.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}a.default.startTransition(()=>{(0,p.dispatchNavigateAction)(t||r,o?"replace":"push",null==u||u,n.current)})}}(e,B,D,m,O,S,R))},onMouseEnter(e){A||"function"!=typeof C||C(e),A&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),I&&M&&(0,f.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){A||"function"!=typeof w||w(e),A&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),I&&M&&(0,f.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,l.isAbsoluteUrl)(D)?Q.href=D:A&&!E&&("a"!==n.type||"href"in n.props)||(Q.href=(0,c.addBasePath)(D)),u=A?a.default.cloneElement(n,Q):(0,o.jsx)("a",{...k,...Q,children:t}),(0,o.jsx)(y.Provider,{value:h,children:u})}let y=(0,a.createContext)(f.IDLE_LINK_STATUS),v=()=>(0,a.useContext)(y);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),r.exports=t.default)}]);