@auto-ai/agent 2.1.194 → 2.1.196
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/safe-a/404/index.html +1 -1
- package/dist/safe-a/404.html +1 -1
- package/dist/safe-a/_next/static/chunks/136b0e67059516ec.js +1 -0
- package/dist/safe-a/_next/static/chunks/13f563091bb5e693.js +1 -0
- package/dist/safe-a/_next/static/chunks/1c058f8cbbecf3b6.css +1 -0
- package/dist/safe-a/_next/static/chunks/2fcf41242e56194f.js +1 -0
- package/dist/safe-a/_next/static/chunks/30ff9a37b9c6f0c2.js +1 -0
- package/dist/safe-a/_next/static/chunks/{5f0286b194e88c68.js → 38e41a7446bfb002.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{eca5690d7fb3d712.js → 4cea3dc4bc693bae.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{96feacf5b8cde310.js → 6ede5e68b521425a.js} +1 -1
- package/dist/safe-a/_next/static/chunks/7a86f14161d3d2d8.js +1 -0
- package/dist/safe-a/_next/static/chunks/7b2661b7ec3fa4f6.js +1 -0
- package/dist/safe-a/_next/static/chunks/89ac60ccbd69e7d0.js +1 -0
- package/dist/safe-a/_next/static/chunks/{e784a1fa0acaaaa0.css → 98bb493cc14b29b8.css} +1 -1
- package/dist/safe-a/_next/static/chunks/{518d4c901787979a.js → 9edfab69bc0e5607.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{760380631ca561e0.js → a7646d18f644b515.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{f1dde9052e8d1d3d.js → c987866e1b5e538e.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{9dcb662588dbf520.js → d36ccfb77a3b125c.js} +1 -1
- package/dist/safe-a/_next/static/chunks/{69aecc2a7893ba05.js → e300e51730b09886.js} +1 -1
- package/dist/safe-a/_next/static/chunks/e49f12b147341b78.js +1 -0
- package/dist/safe-a/_next/static/chunks/{1d5160bb440a1e1b.js → f31029be820cb46d.js} +1 -1
- package/dist/safe-a/_next/static/chunks/f660a559fce684d3.js +1 -0
- package/dist/safe-a/_next/static/chunks/fddc8491e9085327.js +1 -0
- package/dist/safe-a/index.html +2 -2
- package/dist/safe-a/index.txt +10 -10
- package/dist/safe-a/manage/about/index.html +2 -2
- package/dist/safe-a/manage/about/index.txt +11 -11
- package/dist/safe-a/manage/env/index.html +2 -2
- package/dist/safe-a/manage/env/index.txt +13 -13
- package/dist/safe-a/manage/geelib/index.html +2 -2
- package/dist/safe-a/manage/geelib/index.txt +13 -13
- package/dist/safe-a/manage/general/index.html +2 -2
- package/dist/safe-a/manage/general/index.txt +11 -11
- package/dist/safe-a/manage/git/index.html +2 -2
- package/dist/safe-a/manage/git/index.txt +13 -13
- package/dist/safe-a/manage/im/index.html +2 -2
- package/dist/safe-a/manage/im/index.txt +13 -13
- package/dist/safe-a/manage/index.html +2 -2
- package/dist/safe-a/manage/index.txt +8 -8
- package/dist/safe-a/manage/library/index.html +2 -2
- package/dist/safe-a/manage/library/index.txt +12 -12
- package/dist/safe-a/manage/mcp/index.html +2 -2
- package/dist/safe-a/manage/mcp/index.txt +11 -11
- package/dist/safe-a/manage/permissions/index.html +2 -2
- package/dist/safe-a/manage/permissions/index.txt +11 -11
- package/dist/safe-a/manage/skills/index.html +2 -2
- package/dist/safe-a/manage/skills/index.txt +11 -11
- package/dist/safe-a/manage/system/index.html +2 -2
- package/dist/safe-a/manage/system/index.txt +13 -13
- package/dist/safe-a/manage/task/index.html +2 -2
- package/dist/safe-a/manage/task/index.txt +11 -11
- package/dist/safe-a/manage/teams/index.html +2 -2
- package/dist/safe-a/manage/teams/index.txt +11 -11
- package/dist/safe-a/manage/tools/index.html +2 -2
- package/dist/safe-a/manage/tools/index.txt +11 -11
- package/package.json +6 -6
- package/dist/safe-a/_next/static/chunks/074a7a892d554827.js +0 -1
- package/dist/safe-a/_next/static/chunks/2ba468c7afb852bd.js +0 -1
- package/dist/safe-a/_next/static/chunks/33678ff357855160.js +0 -1
- package/dist/safe-a/_next/static/chunks/65982c1925fca4ab.js +0 -1
- package/dist/safe-a/_next/static/chunks/6ddf95b168bfbc36.js +0 -1
- package/dist/safe-a/_next/static/chunks/743bc613bbda46b4.css +0 -1
- package/dist/safe-a/_next/static/chunks/811897ffb3636359.js +0 -1
- package/dist/safe-a/_next/static/chunks/a56ab101155b1427.js +0 -1
- package/dist/safe-a/_next/static/chunks/cb85ccd601c65174.js +0 -1
- package/dist/safe-a/_next/static/chunks/ceead8f438e931f7.js +0 -1
- /package/dist/safe-a/_next/static/{fnecaAU1IOv7M644xhyOD → nwO0QCBdBfGqbYMxcUsla}/_buildManifest.js +0 -0
- /package/dist/safe-a/_next/static/{fnecaAU1IOv7M644xhyOD → nwO0QCBdBfGqbYMxcUsla}/_clientMiddlewareManifest.json +0 -0
- /package/dist/safe-a/_next/static/{fnecaAU1IOv7M644xhyOD → nwO0QCBdBfGqbYMxcUsla}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31862,e=>{"use strict";let t;e.s(["TeamsView",()=>X],31862);var a=e.i(18050),r=e.i(71645),s=e.i(56708),l=e.i(19455),n=e.i(72064),i=e.i(53145),o=e.i(74080),d=e.i(94197),c=e.i(13354),m=e.i(24687),u=e.i(75157);let x={expand:!0,copy:!0};function p(e){let{value:t,onChange:s,minLines:l,placeholder:n,readOnly:i,className:o}=e,d=(0,r.useRef)(null),c=(0,r.useRef)(null),x=Math.max(t.split("\n").length,l),p=(0,r.useCallback)(()=>{d.current&&c.current&&(c.current.scrollTop=d.current.scrollTop)},[]);return(0,a.jsxs)("div",{className:(0,u.cn)("flex min-h-0 flex-1",o),children:[(0,a.jsx)("div",{ref:c,"aria-hidden":!0,className:"w-10 shrink-0 overflow-hidden border-r border-[var(--ds-border)] bg-[#fafafa] py-3 text-right font-mono text-base leading-[1.5] text-[var(--ds-muted)]",children:Array.from({length:x},(e,t)=>(0,a.jsx)("div",{className:"px-2",children:t+1},t))}),(0,a.jsx)(m.Textarea,{ref:d,spellCheck:!1,readOnly:i,value:t,onChange:e=>s(e.target.value),onScroll:p,placeholder:n,className:"agent-md-editor min-h-0 flex-1 resize-none rounded-none border-0 bg-white px-4 py-3 shadow-none focus-visible:ring-0"})]})}function h(e){let{actions:t,copyDisabled:r,onCopy:s,className:l}=e;return t.copy?(0,a.jsx)("div",{className:(0,u.cn)("flex items-center gap-0.5",l),children:(0,a.jsx)(d.IconTooltipButton,{icon:"Copy",label:"复制内容",disabled:r,onClick:s})}):null}function b(e){let{show:t,expanded:r,onToggleExpand:s,className:l}=e;return t?(0,a.jsx)("div",{className:(0,u.cn)("flex items-center",l),children:(0,a.jsx)(d.IconTooltipButton,{icon:r?"Minimize2":"Maximize2",label:r?"收起编辑器":"展开编辑器",onClick:s})}):null}function f(e){let{value:t,onChange:s,minLines:l=20,className:n,placeholder:i="编辑 Markdown 内容",readOnly:d=!1,actions:m,expandTitle:f="编辑 Markdown",copySuccessMessage:v="已复制到剪贴板",copyEmptyMessage:g="暂无内容可复制"}=e,[j,N]=(0,r.useState)(!1),w=!1===m?{expand:!1,copy:!1}:{...x,...m},y=(0,r.useCallback)(()=>{if(!t.trim())return void c.appToast.error(g);("undefined"!=typeof navigator&&navigator.clipboard&&"function"==typeof navigator.clipboard.writeText?navigator.clipboard.writeText(t):"undefined"==typeof document?Promise.reject(Error("Clipboard unavailable")):new Promise((e,a)=>{let r=document.createElement("textarea");r.value=t,r.setAttribute("readonly",""),r.style.position="fixed",r.style.top="-9999px",r.style.opacity="0",document.body.appendChild(r),r.focus(),r.select();let s=document.execCommand("copy");if(document.body.removeChild(r),s)return void e();a(Error("Clipboard copy failed"))})).then(()=>{c.appToast.success(v)},()=>{c.appToast.error("复制失败,请手动选择复制")})},[t,v,g]),C=(0,r.useCallback)(()=>{N(e=>!e)},[]);(0,r.useEffect)(()=>{if(!j)return;let e=e=>{"Escape"===e.key&&N(!1)};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[j]);let k=(0,u.cn)("relative flex min-h-[320px] flex-1 flex-col overflow-hidden rounded-lg border border-[var(--ds-border)] bg-white",n),T=!t.trim()||d,S=(0,a.jsxs)("div",{className:k,children:[(0,a.jsx)(h,{actions:w,copyDisabled:T,onCopy:y,className:"absolute right-2 top-2 z-[1]"}),(0,a.jsx)(p,{value:t,onChange:s,minLines:l,placeholder:i,readOnly:d}),(0,a.jsx)(b,{show:w.expand,expanded:!1,onToggleExpand:C,className:"absolute bottom-2 right-2 z-[1]"})]}),A=j&&"undefined"!=typeof document?(0,o.createPortal)((0,a.jsxs)("div",{className:"fixed inset-0 z-[100] flex flex-col bg-[var(--surface-2)]",role:"dialog","aria-modal":"true","aria-label":f,children:[(0,a.jsx)("header",{className:"flex shrink-0 items-center border-b border-[var(--ds-border)] px-5 py-4",children:(0,a.jsx)("h2",{className:"truncate text-lg font-semibold text-[var(--ds-text)]",children:f})}),(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col p-5",children:(0,a.jsxs)("div",{className:"relative flex min-h-0 flex-1 flex-col overflow-hidden rounded-lg border border-[var(--ds-border)] bg-white",children:[(0,a.jsx)(h,{actions:w,copyDisabled:T,onCopy:y,className:"absolute right-2 top-2 z-[1]"}),(0,a.jsx)(p,{value:t,onChange:s,minLines:l,placeholder:i,readOnly:d,className:"min-h-0 flex-1"}),(0,a.jsx)(b,{show:w.expand,expanded:!0,onToggleExpand:C,className:"absolute bottom-2 right-2 z-[1]"})]})})]}),document.body):null;return(0,a.jsxs)(a.Fragment,{children:[S,A]})}var v=e.i(51419),g=e.i(87676),j=e.i(93479),N=e.i(65934),w=e.i(61196),y=e.i(52727);let C=/^[a-zA-Z0-9_-]{1,64}$/,k=[{id:"all",label:"全部"},{id:"joined_other",label:"已加入其他团队"}];function T(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:80,a=String(e||"").replace(/\s+/g," ").trim();return a?a.length<=t?a:"".concat(a.slice(0,t-1),"…"):"暂无使用说明"}var S=e.i(46798),A=e.i(8279);let z={sm:"h-7 w-7 text-xs",md:"h-9 w-9 "};function F(e){let{label:t,size:r="md",className:s}=e,l=(0,A.initialsFromLabel)(t);return(0,a.jsx)(S.TooltipProvider,{delayDuration:150,children:(0,a.jsxs)(S.Tooltip,{children:[(0,a.jsx)(S.TooltipTrigger,{asChild:!0,children:(0,a.jsx)("span",{className:(0,u.cn)("inline-flex shrink-0 cursor-default items-center justify-center rounded-full font-semibold text-white",z[r],s),style:{background:(0,A.avatarBgForLabel)(t)},"aria-label":t,children:l})}),(0,a.jsx)(S.TooltipContent,{side:"bottom",align:"center",className:"",children:t})]})})}let D=[{value:"agents",label:"AGENTS"}];function E(e){let{mode:t,editAgentId:s,onClose:o,onSaved:d}=e,x=(0,N.useAppStore)(e=>e.wsUrl),p=(0,N.useAppStore)(e=>e.apiBase),h=(0,w.useStageThreadFlyoutStore)(e=>e.setFlyoutDirty),b=(0,w.useStageThreadFlyoutStore)(e=>e.requestCloseFlyout),k="edit"===t,[T,S]=(0,r.useState)(!1),[A,z]=(0,r.useState)(k),[E,M]=(0,r.useState)(null),[B,I]=(0,r.useState)("basic"),_=(0,r.useRef)(null),O=(0,i.useForm)({defaultValues:{id:"",whentouse:"",prompt:""},mode:"onChange"}),{isDirty:R}=(0,i.useFormState)({control:O.control}),L=O.watch("id"),P=k?"编辑 Agent · ".concat(null!=s?s:L):"新建Agent",H=T?k?"保存中…":"创建中…":"保存",U=(0,r.useCallback)(async()=>{let e=null==s?void 0:s.trim();if(e){z(!0),M(null);try{let t=await (0,y.getAgentDetail)(x,p,e);_.current=t.config,O.reset({id:t.id,whentouse:t.whentouse,prompt:t.prompt})}catch(t){let e=t instanceof Error?t.message:String(t);M(e),c.appToast.error("加载失败:".concat(e))}finally{z(!1)}}},[s,x,p,O]);(0,r.useEffect)(()=>{k&&U()},[k,U]),(0,r.useEffect)(()=>(h(R),()=>h(!1)),[R,h]);let G=(0,r.useCallback)(()=>{b()},[b]),V=(0,r.useCallback)(async e=>{let t=(k&&null!=s?s:e.id).trim();if(t){if(!k&&!C.test(String(t||"").trim()))return void c.appToast.error("Agent ID 仅支持字母、数字、下划线和中划线,长度 1~64");S(!0);try{k?(await (0,y.updateAgent)(x,p,{id:t,prompt:e.prompt,whentouse:e.whentouse,baseConfig:_.current}),c.appToast.success("已保存")):(await (0,y.createAgent)(x,p,{id:t,whentouse:e.whentouse,prompt:e.prompt}),c.appToast.success("已创建")),await (null==d?void 0:d()),o()}catch(t){let e=k?"保存":"创建";c.appToast.error("".concat(e,"失败:").concat(t instanceof Error?t.message:String(t)))}finally{S(!1)}}},[k,s,x,p,o,d]);return(0,a.jsx)(g.Form,{...O,children:(0,a.jsxs)("form",{className:"flex h-full min-h-0 flex-col bg-[var(--surface-2)]",onSubmit:O.handleSubmit(V),children:[(0,a.jsx)("header",{className:"shrink-0 border-b border-[var(--ds-border)] bg-[var(--surface-2)] px-5 pb-4 pt-5",children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,a.jsxs)("div",{className:"flex min-w-0 flex-1 items-center",children:[(0,a.jsx)(l.Button,{type:"button",variant:"plain",size:"icon",onClick:G,disabled:T,className:"shrink-0 cursor-pointer px-2 text-[var(--ds-text)] hover:bg-transparent hover:text-[color:var(--ds-accent)] [&_svg_path]:!fill-current","aria-label":"返回",children:(0,a.jsx)(n.default,{name:"Back",size:16})}),(0,a.jsx)("h2",{className:"truncate text-lg font-semibold text-[var(--ds-text)]",children:P})]}),(0,a.jsx)(l.Button,{type:"submit",variant:"default",size:"lg",disabled:T||A||!!E,className:"shrink-0 cursor-pointer rounded-lg bg-[#111] px-5 hover:bg-[#333]",children:H})]})}),(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-y-auto px-5 py-4",children:A?(0,a.jsx)("div",{className:"flex min-h-[240px] flex-1 items-center justify-center text-[var(--ds-muted)]",role:"status","aria-live":"polite",children:"加载中…"}):E?(0,a.jsxs)("div",{className:"flex min-h-[240px] flex-1 flex-col items-center justify-center gap-3 text-destructive",role:"alert",children:[(0,a.jsxs)("span",{children:["加载失败:",E]}),(0,a.jsx)(l.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void U(),children:"重试"})]}):"basic"===B?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("section",{className:"rounded-xl border border-[var(--ds-border)] bg-white p-4",children:(0,a.jsxs)("div",{className:"flex gap-4",children:[(0,a.jsx)("div",{className:"flex shrink-0 flex-col items-center gap-2",children:(0,a.jsx)("div",{className:"relative",children:(0,a.jsx)(F,{label:L.trim()||"Agent",className:"h-16 w-16 text-lg"})})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1 space-y-3",children:[(0,a.jsx)(g.FormField,{control:O.control,name:"id",render:e=>{let{field:t}=e;return(0,a.jsxs)(g.FormItem,{children:[(0,a.jsx)(g.FormControl,{children:(0,a.jsx)(j.Input,{...t,readOnly:k,spellCheck:!1,placeholder:"例如 my-agent,agent名称是唯一标识",autoComplete:"off",className:(0,u.cn)("h-10 rounded-md border-[var(--ds-border)] bg-[var(--ds-bg)]",k&&"cursor-default text-[var(--ds-muted)]")})}),(0,a.jsx)(g.FormMessage,{})]})}}),(0,a.jsx)(g.FormField,{control:O.control,name:"whentouse",render:e=>{let{field:t}=e;return(0,a.jsxs)(g.FormItem,{children:[(0,a.jsx)(g.FormControl,{children:(0,a.jsx)(m.Textarea,{...t,spellCheck:!1,placeholder:"用一句话说明它的身份 + 它主要帮你做什么",className:"min-h-[88px] resize-none rounded-md border-[var(--ds-border)] bg-[var(--ds-bg)] leading-relaxed"})}),(0,a.jsx)(g.FormMessage,{})]})}})]})]})}),(0,a.jsx)(v.AppTabs,{tabs:D,defaultValue:"agents",listVariant:"line",listClassName:"mt-4",className:"min-h-0 flex-1",children:(0,a.jsx)(v.AppTabsPanel,{value:"agents",className:"mt-4 flex min-h-0 flex-1 flex-col",children:(0,a.jsx)(g.FormField,{control:O.control,name:"prompt",render:e=>{let{field:t}=e;return(0,a.jsxs)(g.FormItem,{className:"flex min-h-0 flex-1 flex-col",children:[(0,a.jsx)(g.FormControl,{children:(0,a.jsx)(f,{value:t.value,onChange:t.onChange,className:"min-h-[320px]",placeholder:"编辑 Agent 提示词(agent.md)",expandTitle:"编辑 (agent.md)"})}),(0,a.jsx)(g.FormMessage,{})]})}})})})]}):(0,a.jsx)("div",{className:"flex flex-1 items-center justify-center text-[var(--ds-muted)]",children:"敬请期待"})})]})})}var M=e.i(68499),B=e.i(55146),I=e.i(97249);function _(e){let{label:t,hint:r,icon:s,onClick:l}=e,i=(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.default,{name:s,size:14,className:"shrink-0 text-[var(--ds-muted)]"}),(0,a.jsx)("span",{children:r})]}),o=(0,u.cn)("inline-flex min-h-9 w-fit max-w-full items-center justify-center gap-1.5 rounded-lg border border-dashed border-[var(--ds-border)] !bg-transparent px-3 text-[var(--ds-muted)]",l&&"cursor-pointer hover:border-[color:var(--ds-border-hover)] hover:bg-[var(--ds-main-tint)]");return l?(0,a.jsx)("button",{type:"button",className:o,onClick:l,"aria-label":t,children:i}):(0,a.jsx)("div",{className:o,"aria-label":t,children:i})}let O=r.forwardRef(function(e,t){let{className:s,size:l="default",checked:i,defaultChecked:o,disabled:d,id:c,onChange:m,...x}=e,p=void 0!==i,[h,b]=r.useState(!!o),f=p?!!i:h;return(0,a.jsxs)("span",{"data-slot":"checkbox","data-size":l,"data-checked":f?"true":"false",className:(0,u.cn)("relative inline-flex shrink-0 items-center justify-center rounded-sm border border-solid border-border bg-transparent outline-none transition-[color,box-shadow,border-color,background-color] duration-150 ease-in-out","has-[:focus-visible]:border-[var(--border-focus)] has-[:focus-visible]:[box-shadow:var(--ring-focus-sm)]","has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50","data-[size=default]:size-4 data-[size=sm]:size-3.5",f?"border-[var(--ds-accent)] bg-[var(--ds-accent)]":"bg-transparent",s),children:[f?(0,a.jsx)(n.default,{name:"Check",className:(0,u.cn)("pointer-events-none text-[var(--surface-1)] [&_path]:!fill-none","sm"===l?"size-3":"size-3.5"),strokeWidth:2.25,"aria-hidden":"true"}):null,(0,a.jsx)("input",{ref:t,id:c,type:"checkbox",checked:p?i:void 0,defaultChecked:p?void 0:o,disabled:d,className:"absolute inset-0 m-0 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed",onChange:e=>{p||b(e.target.checked),null==m||m(e)},...x})]})});var R=e.i(76639);let L={captain:null,members:[]};function P(e){return{id:e.id,displayName:e.displayName.trim()||e.id}}function H(e,t,a,r){for(let l of a){var s;if(l.id===t)continue;let a=r(l.id);if((null==(s=a.captain)?void 0:s.id)===e||a.members.some(t=>t.id===e))return l.id}return null}function U(e){let{member:t,subtitle:r,onRemove:s,badge:l}=e;return(0,a.jsxs)("div",{className:"flex items-center gap-2 rounded-lg border border-[var(--ds-border)] bg-[var(--ds-bg)] p-2.5",children:[(0,a.jsx)(F,{label:t.displayName,size:"sm"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"mb-0 truncate text-base font-medium text-[var(--ds-text)]",children:t.displayName}),(0,a.jsx)("p",{className:"mb-0 truncate text-[12px] text-[var(--ds-muted)]",children:r})]}),l?(0,a.jsx)("span",{className:"shrink-0 rounded bg-[var(--green-light)] px-1.5 py-0.5 text-[10px] font-medium text-[var(--green-dark)]",children:l}):null,s?(0,a.jsx)(d.IconTooltipButton,{icon:"Close",label:"移除agent",className:"!h-7 !w-7 shrink-0 bg-transparent text-[var(--ds-muted)] hover:bg-transparent hover:text-[color:var(--ds-accent)]",iconClassName:"!size-3.5",onClick:s}):null]})}function G(e){let{open:t,onOpenChange:s,team:i,allAgents:o,rosters:d,onConfirm:m,onAgentsRefresh:x}=e,p=(0,N.useAppStore)(e=>e.wsUrl),h=(0,N.useAppStore)(e=>e.apiBase),b=i.id,f=d.getRoster,[v,g]=(0,r.useState)(""),[w,C]=(0,r.useState)("all"),[S,A]=(0,r.useState)([]),[z,D]=(0,r.useState)(!1),E=(0,r.useMemo)(()=>P(i),[i]);(0,r.useEffect)(()=>{if(!t)return;let e=f(b);g(""),C("all"),A(e.members.filter(e=>e.id!==b).map(e=>e.id))},[t,b,f]);let M=(0,r.useMemo)(()=>S.map(e=>o.find(t=>t.id===e)).filter(e=>null!=e).map(P),[S,o]),B=(0,r.useMemo)(()=>o.filter(e=>{if(!function(e,t){let a=t.trim().toLowerCase();return!a||"".concat(e.id," ").concat(e.displayName," ").concat(e.whentouse).toLowerCase().includes(a)}(e,v))return!1;let t=e.id===b,a=H(e.id,b,o,f);return"available"===w?!t:"joined_other"===w?!!a:"recommended"!==w||!a&&!t}),[o,v,w,b,f]),I=(0,r.useCallback)((e,t)=>{e!==b&&A(a=>t?a.includes(e)?a:[...a,e]:a.filter(t=>t!==e))},[b]),_=(0,r.useCallback)(()=>{A([])},[]),L=(0,r.useCallback)(()=>{s(!1)},[s]),G=(0,r.useCallback)(()=>{(async()=>{let e=b.trim();if(!e||z)return;let t=f(b).members.map(e=>e.id),a=S.filter(e=>!t.includes(e)),r=t.filter(e=>!S.includes(e));if(0===a.length&&0===r.length)return L();D(!0);try{for(let t of r)await (0,y.removeTeamMember)(p,h,e,t);for(let t of a)await (0,y.addTeamMember)(p,h,e,t);await (null==x?void 0:x()),m({captain:E,members:M}),a.length>0&&0===r.length?c.appToast.success(1===a.length?"已添加队员 ".concat(a[0]):"已添加 ".concat(a.length," 名队员")):c.appToast.success("已更新队员"),L()}catch(e){c.appToast.error("添加队员失败:".concat(e instanceof Error?e.message:String(e)))}finally{D(!1)}})()},[b,z,f,S,p,h,x,m,E,M,L]);return(0,a.jsx)(R.Dialog,{open:t,onOpenChange:s,children:(0,a.jsxs)(R.DialogContent,{className:"max-w-[920px]","aria-labelledby":"add-team-members-title",children:[(0,a.jsxs)(R.DialogHeader,{className:"items-start gap-3",children:[(0,a.jsx)(R.DialogTitle,{id:"add-team-members-title",className:"text-lg",children:"添加队员"}),(0,a.jsx)(R.DialogClose,{"aria-label":"关闭"})]}),(0,a.jsx)(R.DialogBody,{className:"!p-0",children:(0,a.jsxs)("div",{className:"flex h-[min(68vh,520px)] min-h-0 flex-col px-[24px] md:flex-row",children:[(0,a.jsxs)("div",{className:"mr-[16px] flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden border-b border-[var(--ds-border)] md:border-b-0 md:border-r",children:[(0,a.jsxs)("div",{className:"shrink-0 space-y-3 border-b border-[var(--ds-border)] pb-4",children:[(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(n.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,a.jsx)(j.Input,{value:v,onChange:e=>g(e.target.value),placeholder:"搜索成员名称 / 能力 / 标签",className:"h-8 pl-8"})]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:k.map(e=>{let t=w===e.id;return(0,a.jsx)(l.Button,{type:"button",variant:"plain-outline",size:"sm",className:(0,u.cn)("cursor-pointer rounded-full px-3",t&&"border-[color:var(--ds-accent)] bg-[var(--green-light)] text-[var(--green-dark)] hover:bg-[var(--green-light)]"),onClick:()=>C(e.id),children:e.label},e.id)})})]}),(0,a.jsx)("ul",{className:"m-0 min-h-0 flex-1 list-none space-y-4 overflow-y-auto",role:"listbox","aria-label":"可选队员",children:B.map(e=>{let t=e.id===b,r=S.includes(e.id),s=H(e.id,b,o,f),l=function(e){let t=T(e,24);return"暂无使用说明"===t?[]:t.split(/[,,、\s]+/).filter(Boolean).slice(0,2)}(e.whentouse),i=T(e.whentouse,32);return(0,a.jsx)("li",{children:(0,a.jsxs)("label",{className:(0,u.cn)("flex cursor-pointer items-center gap-3 rounded-lg border border-solid bg-[var(--ds-bg)] px-2 py-2.5 transition-[border-color,background-color]","border-[color:var(--ds-border)]",t?"cursor-not-allowed opacity-60":"hover:border-[color:var(--ds-border-hover)] hover:bg-[var(--ds-main-tint)]",r&&!t&&"bg-[var(--green-light)]/40 border-[color:var(--ds-accent)]"),children:[(0,a.jsx)(O,{checked:!t&&r,disabled:t,onChange:t=>I(e.id,t.target.checked),"aria-label":"选择 ".concat(e.displayName)}),(0,a.jsx)(F,{label:e.displayName,size:"md"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("p",{className:"mb-0 truncate font-medium text-[var(--ds-text)]",children:[e.displayName,t?(0,a.jsx)("span",{className:"ml-1 text-xs font-normal text-[var(--ds-muted)]",children:"(当前团队)"}):null]}),(0,a.jsx)("p",{className:"mb-0 mt-0.5 truncate text-[var(--ds-muted)]",children:i}),l.length>0?(0,a.jsx)("div",{className:"mt-1 flex flex-wrap gap-1",children:l.map(e=>(0,a.jsx)("span",{className:"rounded bg-[var(--surface-2)] px-1.5 py-0.5 text-[10px] text-[var(--ds-muted)]",children:e},e))}):null]}),(0,a.jsx)("div",{className:"shrink-0 text-right",children:t?(0,a.jsx)("span",{className:"text-xs text-[var(--ds-muted)]",children:"不可选"}):s?(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-amber-600",children:[(0,a.jsx)(n.default,{name:"Info",size:14}),"已加入其他团队"]}):(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 text-xs text-[var(--green-dark)]",children:[(0,a.jsx)("span",{className:"size-1.5 rounded-full bg-[var(--ds-accent)]"}),"可用 Agent"]})})]})},e.id)})}),(0,a.jsxs)("div",{className:"shrink-0 border-t border-[var(--ds-border)] px-4 py-2.5 text-[var(--ds-muted)]",children:["已选择 ",S.length," 名队员"]})]}),(0,a.jsx)("div",{className:"flex min-h-0 w-full shrink-0 flex-col overflow-hidden bg-[var(--ds-log-bg)] md:w-[300px]",children:(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden p-4",children:(0,a.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:[(0,a.jsxs)("div",{className:"mb-2 flex shrink-0 items-center justify-between gap-2",children:[(0,a.jsxs)("span",{className:"font-medium text-[var(--ds-text)]",children:["已选成员(",M.length,")"]}),(0,a.jsx)(l.Button,{type:"button",variant:"plain",size:"sm",disabled:0===M.length,className:"h-auto cursor-pointer !px-1 text-base text-[var(--ds-accent)] hover:bg-transparent hover:text-[var(--ds-text)] disabled:cursor-not-allowed",onClick:_,children:"清空"})]}),(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:M.length>0?(0,a.jsx)("div",{className:"space-y-4",children:M.map(e=>{let t=o.find(t=>t.id===e.id),r=t?T(t.whentouse,28):e.id;return(0,a.jsx)(U,{member:e,subtitle:r,onRemove:()=>I(e.id,!1)},e.id)})}):(0,a.jsx)("p",{className:"mb-0 text-xs text-[var(--ds-muted)]",children:"请从左侧勾选队员"})})]})})})]})}),(0,a.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-5 py-3",children:[(0,a.jsx)(l.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:L,className:"cursor-pointer",children:"取消"}),(0,a.jsx)(l.Button,{type:"button",variant:"default",size:"lg",onClick:G,disabled:z,className:"cursor-pointer disabled:cursor-not-allowed",children:z?"添加中…":"确认添加"})]})]})})}function V(e){let{open:t,onOpenChange:s,title:n,description:i,candidates:o,onPick:d}=e,[c,m]=(0,r.useState)("");(0,r.useEffect)(()=>{t&&m("")},[t]);let x=(0,r.useCallback)(()=>{s(!1)},[s]),p=(0,r.useCallback)(()=>{let e=o.find(e=>e.id===c);e&&(d(e),x())},[o,c,d,x]),h=(0,r.useMemo)(()=>o.length>0?null:"暂无可选 Agent",[o.length]);return(0,a.jsx)(R.Dialog,{open:t,onOpenChange:s,children:(0,a.jsxs)(R.DialogContent,{className:"max-w-[480px]","aria-labelledby":"pick-team-member-title",children:[(0,a.jsxs)(R.DialogHeader,{className:"items-start gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)(R.DialogTitle,{id:"pick-team-member-title",children:n}),(0,a.jsx)(R.DialogDescription,{className:"mt-1",children:i})]}),(0,a.jsx)(R.DialogClose,{"aria-label":"关闭"})]}),(0,a.jsx)(R.DialogBody,{className:"max-h-[min(50vh,360px)] overflow-y-auto !px-5 !py-4",children:h?(0,a.jsx)("p",{className:"mb-0 text-center text-[var(--ds-muted)]",children:h}):(0,a.jsx)("ul",{className:"m-0 list-none space-y-1 p-0",role:"listbox",children:o.map(e=>{let t=c===e.id,r=P(e);return(0,a.jsx)("li",{children:(0,a.jsxs)("button",{type:"button",role:"option","aria-selected":t,className:(0,u.cn)("flex w-full cursor-pointer items-center gap-3 rounded-lg border border-solid px-3 py-2.5 text-left transition-colors",t?"border-[color:var(--ds-accent)] bg-[var(--green-light)]":"border-[color:var(--ds-border)] bg-[var(--ds-bg)] hover:bg-[var(--ds-main-tint)]"),onClick:()=>m(e.id),children:[(0,a.jsx)(F,{label:r.displayName,size:"md"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"mb-0 truncate font-medium text-[var(--ds-text)]",children:r.displayName}),(0,a.jsx)("p",{className:"mb-0 mt-0.5 truncate text-xs text-[var(--ds-muted)]",children:e.id})]})]})},e.id)})})}),(0,a.jsxs)("div",{className:"flex shrink-0 justify-end gap-2 border-t border-[var(--ds-border)] bg-[var(--ds-sidebar)] px-5 py-3",children:[(0,a.jsx)(l.Button,{type:"button",variant:"plain-outline",size:"lg",onClick:x,className:"cursor-pointer",children:"取消"}),(0,a.jsx)(l.Button,{type:"button",variant:"default",size:"lg",disabled:!c,onClick:p,className:"cursor-pointer",children:"确定"})]})]})})}function W(e){let{member:t,displayName:r}=e;return(0,a.jsxs)("span",{className:"relative inline-flex w-fit items-center rounded-full",children:[(0,a.jsx)(F,{label:t.displayName,size:"sm"}),r?(0,a.jsx)("span",{className:"ml-2 whitespace-nowrap text-[var(--ds-text)]",children:r}):null]})}function q(e){let{members:t}=e,[s,l]=(0,r.useState)(!1),n=(0,r.useRef)(null),i=(0,r.useCallback)(()=>{n.current&&(clearTimeout(n.current),n.current=null),l(!0)},[]),o=(0,r.useCallback)(()=>{n.current&&clearTimeout(n.current),n.current=setTimeout(()=>l(!1),120)},[]);return(0,a.jsxs)(B.DropdownMenu,{open:s,onOpenChange:l,children:[(0,a.jsxs)(B.DropdownMenuTrigger,{type:"button",className:"inline-flex shrink-0 cursor-default items-center rounded-full border border-solid border-[color:var(--ds-border)] bg-[var(--surface-2)] px-2.5 py-1 font-medium text-[var(--ds-muted)] hover:bg-[var(--surface-2)]","aria-label":"还有 ".concat(t.length," 名队员"),onMouseEnter:i,onMouseLeave:o,children:["+",t.length]}),(0,a.jsxs)(B.DropdownMenuContent,{align:"start",side:"bottom",sideOffset:6,className:(0,u.cn)("min-w-[200px] max-w-[min(100vw-32px,320px)] p-3"),onMouseEnter:i,onMouseLeave:o,children:[(0,a.jsxs)("p",{className:"mb-2 px-1 text-xs text-[var(--ds-muted)]",children:["其余队员(",t.length,")"]}),(0,a.jsx)("div",{className:"flex max-h-[240px] flex-col gap-2 overflow-y-auto",children:t.map(e=>(0,a.jsx)(W,{member:e,displayName:e.displayName},e.id))})]})]})}function K(e){let{members:t,className:r}=e,s=t.slice(0,6),l=t.slice(6);return(0,a.jsxs)("div",{className:(0,u.cn)("flex min-w-0 max-w-full flex-wrap items-center gap-1",r),children:[s.map(e=>(0,a.jsx)(W,{member:e},e.id)),l.length>0?(0,a.jsx)(q,{members:l}):null]})}function Y(e){let{onEdit:t,onDelete:s,deleting:l=!1}=e,[i,o]=(0,r.useState)(!1);return(0,a.jsxs)(B.DropdownMenu,{open:i,onOpenChange:o,children:[(0,a.jsx)(B.DropdownMenuTrigger,{type:"button",className:"inline-flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-0 text-[var(--ds-muted)] hover:bg-transparent hover:text-[color:var(--ds-accent)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ds-accent)]","aria-label":"更多",onClick:e=>{e.stopPropagation()},children:(0,a.jsx)(n.default,{name:"More",size:20})}),(0,a.jsxs)(B.DropdownMenuContent,{align:"end",side:"bottom",sideOffset:6,className:"w-[172px] min-w-[172px] rounded-[var(--ds-radius-sm)] border border-[var(--ds-border)] bg-[var(--ds-bg)] p-1.5",children:[(0,a.jsxs)(B.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:()=>{o(!1),t()},children:[(0,a.jsx)(n.default,{name:"Edit",size:16,className:"text-[var(--ds-muted)]"}),"编辑 Agent"]}),(0,a.jsx)(B.DropdownMenuSeparator,{className:"mx-1 my-1 bg-[var(--ds-border)]"}),(0,a.jsxs)(B.DropdownMenuItem,{variant:"destructive",disabled:l,className:"h-9 rounded-xl px-2.5 hover:bg-[#fff1f1] focus:bg-[#fff1f1]",onClick:()=>{o(!1),s()},children:[(0,a.jsx)(n.default,{name:"Trash2",size:16}),"删除 Agent"]})]})]})}function $(e){let{team:s,allAgents:l,rosters:n,onAgentSaved:i}=e,o=(0,N.useAppStore)(e=>e.agentId),m=(0,N.useAppStore)(e=>e.wsUrl),x=(0,N.useAppStore)(e=>e.apiBase),p=o.trim()||"qihoo",h=s.id===p,b=n.getRoster(s.id),f=T(s.whentouse),v=(0,A.initialsFromLabel)(s.id).slice(0,1),[g,j]=(0,r.useState)(!1),[C,k]=(0,r.useState)(!1),[S,z]=(0,r.useState)(!1),F=n.getAvailableCandidates(s.id,l),D=(0,r.useCallback)(e=>{n.setCaptain(s.id,P(e))},[n,s.id]),B=(0,r.useCallback)(e=>{n.applyRoster(s.id,e)},[n,s.id]),O=(0,r.useCallback)(()=>{let e=s.id.trim();if(!e||e===p)return;let t=(0,I.buildAppNavHref)("/",{ensureAgent:!0,agent:e}),a=I.BASE_PATH.replace(/\/+$/,""),r="".concat(window.location.origin).concat(a).concat(t);window.open(r,"_blank","noopener")},[s.id,p]),R=(0,r.useCallback)(()=>{!function(e){var r;let s=e.agentId.trim();if(!s)return;let{openFlyout:l,closeFlyout:n}=w.useStageThreadFlyoutStore.getState(),i=null!=(r=e.onSaved)?r:t;l({width:w.CREATE_AGENT_FLYOUT_WIDTH,hideHeader:!0,bodyClassName:"!p-0 overflow-hidden",navigationGuard:!0,content:(0,a.jsx)(E,{mode:"edit",editAgentId:s,onClose:n,onSaved:i})})}({agentId:s.id,onSaved:i})},[s.id,i]),L=(0,r.useCallback)(async()=>{let e=s.id.trim();if(e&&await (0,M.confirmAlertDialog)({title:"确定删除 Agent?",description:"Agent「".concat(e,"」将被永久删除,此操作不可恢复。"),confirmText:"删除",cancelText:"取消"})){z(!0);try{await (0,y.deleteAgentItem)(m,x,e),c.appToast.success("已删除"),await (null==i?void 0:i())}catch(e){c.appToast.error("删除失败:".concat(e instanceof Error?e.message:String(e)))}finally{z(!1)}}},[s.id,m,x,i]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:(0,u.cn)("flex w-full flex-wrap items-center gap-4 rounded-xl border border-solid bg-[var(--ds-bg)] px-4 py-3 lg:flex-nowrap","border-[color:var(--ds-border)] transition-[border-color,box-shadow]","hover:shadow-[0_2px_12px_rgba(0,0,0,0.06)]"),children:[(0,a.jsxs)("div",{className:"flex min-w-[200px] flex-1 items-center gap-4",children:[(0,a.jsx)("span",{className:"inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-lg text-lg font-semibold text-white",style:{background:(0,A.avatarBgForLabel)(s.id)},"aria-hidden":!0,children:v}),(0,a.jsxs)("div",{className:"min-w-0 flex-1 text-left",children:[(0,a.jsx)("button",{type:"button",onClick:O,disabled:h,className:(0,u.cn)("mb-0 block w-full truncate border-0 bg-transparent p-0 text-left text-base font-semibold text-[var(--ds-text)]",h?"cursor-default":"cursor-pointer hover:text-[color:var(--ds-accent)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ds-accent)]"),"aria-current":h?"true":void 0,"aria-label":h?"当前 Agent:".concat(s.id):"在新标签页切换到 Agent ".concat(s.id),children:s.id}),(0,a.jsx)("p",{className:"mb-0 mt-1 truncate text-sm text-[var(--ds-muted)]",children:f})]})]}),(0,a.jsx)("div",{className:"flex min-w-0 max-w-full flex-1 flex-col gap-1.5",children:(0,a.jsx)("div",{className:(0,u.cn)("flex min-w-0 max-w-full flex-wrap items-center gap-2",""),children:(0,a.jsxs)("div",{className:"flex w-fit justify-end gap-2 rounded-xl border border-solid border-[color:var(--ds-border)] bg-[var(--ds-bg)] p-2",children:[b.members.length>0?(0,a.jsx)(K,{members:b.members,className:""}):(0,a.jsx)(_,{label:"队员列表",hint:"暂无队员",icon:"Team"}),(0,a.jsx)(d.IconTooltipButton,{icon:"Create",label:"添加队员",disabled:l.length<=1,className:(0,u.cn)("h-8 w-8 shrink-0 border border-dashed border-[color:var(--ds-border)] hover:border-[color:var(--ds-accent)] hover:text-[color:var(--ds-accent)]",l.length>1&&"text-[var(--ds-accent)] hover:bg-[var(--green-light)]"),iconClassName:"!size-4",onClick:()=>k(!0)})]})})}),(0,a.jsx)(Y,{onEdit:R,onDelete:()=>void L(),deleting:S})]}),(0,a.jsx)(V,{open:g,onOpenChange:j,title:"设置队长",description:"从可选 Agent 中选择一名作为队长",candidates:F,onPick:D}),(0,a.jsx)(G,{open:C,onOpenChange:k,team:s,allAgents:l,rosters:n,onConfirm:B,onAgentsRefresh:i})]})}function Z(e){let{agentsState:t}=e,{agents:s,loading:l,error:n}=t,i=function(e){let[t,a]=(0,r.useState)({});(0,r.useEffect)(()=>{a(t=>{let a={...t};for(let s of e){var r;let l=null!=(r=t[s.id])?r:L;a[s.id]={captain:l.captain,members:function(e,t){return e.agentTeamMembers.map(e=>{let a=t.find(t=>t.id===e.agentType);return{id:e.agentType,displayName:(null==a?void 0:a.displayName.trim())||e.agentType}})}(s,e)}}return a})},[e]);let s=(0,r.useCallback)(e=>{var a;return null!=(a=t[e])?a:L},[t]),l=(0,r.useCallback)((e,t)=>{a(a=>{var r;let s=(null!=(r=a[e])?r:L).members.filter(e=>e.id!==t.id);return{...a,[e]:{captain:t,members:s}}})},[]),n=(0,r.useCallback)(e=>{a(t=>{var a;let r=null!=(a=t[e])?a:L;return{...t,[e]:{...r,captain:null}}})},[]),i=(0,r.useCallback)((e,t)=>{a(a=>{var r,s;let l=null!=(s=a[e])?s:L;return(null==(r=l.captain)?void 0:r.id)===t.id||l.members.some(e=>e.id===t.id)?a:{...a,[e]:{...l,members:[...l.members,t]}}})},[]),o=(0,r.useCallback)((e,t)=>{a(a=>{var r;let s=null!=(r=a[e])?r:L;return{...a,[e]:{...s,members:s.members.filter(e=>e.id!==t)}}})},[]);return{getRoster:s,setCaptain:l,removeCaptain:n,addMember:i,removeMember:o,applyRoster:(0,r.useCallback)((e,t)=>{let r=t.captain,s=t.members.filter(e=>e.id!==(null==r?void 0:r.id));a(t=>({...t,[e]:{captain:r,members:s}}))},[]),getAvailableCandidates:(0,r.useCallback)((e,a)=>{var r;let s=null!=(r=t[e])?r:L,l=new Set([e,...s.captain?[s.captain.id]:[],...s.members.map(e=>e.id)]);return a.filter(e=>!l.has(e.id))},[t])}}(s);return(0,a.jsx)("div",{className:"flex min-h-0 flex-1 flex-col rounded-xl border border-[var(--ds-border)] bg-[var(--ds-bg)] shadow-[var(--shadow-sm)]",children:(0,a.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto p-[16px]",children:l?(0,a.jsx)("div",{className:"flex min-h-[200px] items-center justify-center text-[var(--ds-muted)]",children:"加载中…"}):n?(0,a.jsxs)("div",{className:"flex min-h-[200px] items-center justify-center px-4 text-center text-red-600",children:["加载失败:",n]}):0===s.length?(0,a.jsx)("div",{className:"flex min-h-[200px] items-center justify-center px-4 text-center text-[var(--ds-muted)]",children:"暂无 Agent,点击右上角「新建 Agent」创建"}):(0,a.jsx)("ul",{className:"m-0 list-none space-y-4 p-0",role:"list",children:s.map(e=>(0,a.jsx)("li",{children:(0,a.jsx)($,{team:e,allAgents:s,rosters:i,onAgentSaved:t.loadAgents})},e.id))})})})}function J(e){let{label:t,value:r,hint:s,icon:l}=e;return(0,a.jsxs)("div",{className:"mt-2 flex min-w-0 flex-1 items-center gap-4 rounded-xl border border-[var(--ds-border)] bg-white px-4 py-3.5 shadow-[var(--shadow-sm)]",children:[(0,a.jsx)("span",{className:"flex size-10 shrink-0 items-center justify-center rounded-full bg-[var(--ds-border)]","aria-hidden":!0,children:(0,a.jsx)(n.default,{name:l,size:20,className:"text-[var(--ds-text)]"})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("span",{className:"block text-[var(--ds-text)]",children:t}),(0,a.jsx)("span",{className:"mt-1 block text-2xl font-semibold leading-none text-[var(--ds-text)]",children:r}),(0,a.jsx)("span",{className:"mt-1 block text-sm text-[var(--ds-muted)]",children:s})]})]})}function Q(e){let{agents:t,className:s}=e,l=(0,r.useMemo)(()=>{let e=t.length;return[{label:"团队总数",value:t.filter(e=>e.agentTeamMembers.length>=1).length,icon:"Teams",hint:"队员数大于 1 的 Agent 编组"},{label:"成员总数",value:e,icon:"Agent",hint:"角色、能力和工具的智能执行体"}]},[t]);return(0,a.jsx)("div",{className:(0,u.cn)("flex flex-wrap gap-3",s),children:l.map(e=>(0,a.jsx)(J,{...e},e.label))})}function X(){let e=function(){let e=(0,N.useAppStore)(e=>e.wsUrl),t=(0,N.useAppStore)(e=>e.apiBase),[a,s]=(0,r.useState)([]),[l,n]=(0,r.useState)(!0),[i,o]=(0,r.useState)(null),d=(0,r.useCallback)(async()=>{n(!0),o(null);try{let a=await (0,y.listAgentsForManage)(e,t);s(a)}catch(t){let e=t instanceof Error?t.message:String(t);s([]),o(e),c.appToast.error("加载失败:".concat(e))}finally{n(!1)}},[e,t]);return(0,r.useEffect)(()=>{d()},[d]),{agents:a,loading:l,error:i,loadAgents:d}}();(0,r.useEffect)(()=>(t=e.loadAgents,()=>{t=void 0}),[e.loadAgents]);let i=(0,r.useCallback)(()=>{!function(){var e;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{openFlyout:s,closeFlyout:l}=w.useStageThreadFlyoutStore.getState(),n=null!=(e=r.onSaved)?e:t;s({width:w.CREATE_AGENT_FLYOUT_WIDTH,hideHeader:!0,bodyClassName:"!p-0 overflow-hidden",navigationGuard:!0,content:(0,a.jsx)(E,{mode:"create",onClose:l,onSaved:n})})}()},[]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.ManageChromeHeaderActions,{children:(0,a.jsx)("div",{className:"flex flex-wrap items-center",children:(0,a.jsxs)(l.Button,{type:"button",variant:"default",size:"lg",onClick:i,className:"mr-[12px] cursor-pointer",children:[(0,a.jsx)(n.default,{name:"Create",size:16,className:"align-middle"}),"新建 Agent"]})})}),(0,a.jsx)(Q,{agents:e.agents,className:"mb-4"}),(0,a.jsx)(Z,{agentsState:e})]})}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.theme{--font-heading:var(--font-display);--font-sans:var(--font-body);--font-mono:var(--font-mono)}:root{--background:#fff;--foreground:#0a0a0a;--card:#fff;--card-foreground:#0a0a0a;--popover:#fff;--popover-foreground:#0a0a0a;--primary:#171717;--primary-foreground:#fafafa;--secondary:#f5f5f5;--secondary-foreground:#171717;--muted:#f5f5f5;--muted-foreground:#737373;--accent:#f5f5f5;--accent-foreground:#171717;--destructive:#e40014;--destructive-foreground:#fafafa;--border:#e5e5e5;--input:#e5e5e5;--ring:#a1a1a1;--chart-1:#d4d4d4;--chart-2:#737373;--chart-3:#525252;--chart-4:#404040;--chart-5:#262626;--radius:.625rem;--sidebar:#fafafa;--sidebar-foreground:#0a0a0a;--sidebar-primary:#171717;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#f5f5f5;--sidebar-accent-foreground:#171717;--sidebar-border:#e5e5e5;--sidebar-ring:#a1a1a1}@supports (color:color(display-p3 0 0 0)){:root{--background:color(display-p3 1 1 1);--foreground:color(display-p3 .0393882 .0393882 .0393882);--card:color(display-p3 1 1 1);--card-foreground:color(display-p3 .0393882 .0393882 .0393882);--popover:color(display-p3 1 1 1);--popover-foreground:color(display-p3 .0393882 .0393882 .0393882);--primary:color(display-p3 .0905274 .0905274 .0905274);--primary-foreground:color(display-p3 .980256 .980256 .980256);--secondary:color(display-p3 .960587 .960587 .960587);--secondary-foreground:color(display-p3 .0905274 .0905274 .0905274);--muted:color(display-p3 .960587 .960587 .960587);--muted-foreground:color(display-p3 .451519 .451519 .451519);--accent:color(display-p3 .960587 .960587 .960587);--accent-foreground:color(display-p3 .0905274 .0905274 .0905274);--destructive:color(display-p3 .830323 .140383 .133196);--destructive-foreground:color(display-p3 .980256 .980256 .980256);--border:color(display-p3 .898161 .898161 .898161);--input:color(display-p3 .898161 .898161 .898161);--ring:color(display-p3 .630163 .630163 .630163);--chart-1:color(display-p3 .831444 .831444 .831444);--chart-2:color(display-p3 .451519 .451519 .451519);--chart-3:color(display-p3 .321993 .321993 .321993);--chart-4:color(display-p3 .250471 .250471 .250471);--chart-5:color(display-p3 .149382 .149382 .149382);--sidebar:color(display-p3 .980256 .980256 .980256);--sidebar-foreground:color(display-p3 .0393882 .0393882 .0393882);--sidebar-primary:color(display-p3 .0905274 .0905274 .0905274);--sidebar-primary-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-accent:color(display-p3 .960587 .960587 .960587);--sidebar-accent-foreground:color(display-p3 .0905274 .0905274 .0905274);--sidebar-border:color(display-p3 .898161 .898161 .898161);--sidebar-ring:color(display-p3 .630163 .630163 .630163)}}@supports (color:lab(0% 0 0)){:root{--background:lab(100% 0 0);--foreground:lab(2.75381% 0 0);--card:lab(100% 0 0);--card-foreground:lab(2.75381% 0 0);--popover:lab(100% 0 0);--popover-foreground:lab(2.75381% 0 0);--primary:lab(7.78201% -.0000149012 0);--primary-foreground:lab(98.26% 0 0);--secondary:lab(96.52% -.0000298023 .0000119209);--secondary-foreground:lab(7.78201% -.0000149012 0);--muted:lab(96.52% -.0000298023 .0000119209);--muted-foreground:lab(48.496% 0 0);--accent:lab(96.52% -.0000298023 .0000119209);--accent-foreground:lab(7.78201% -.0000149012 0);--destructive:lab(48.4493% 77.4328 61.5452);--destructive-foreground:lab(98.26% 0 0);--border:lab(90.952% 0 -.0000119209);--input:lab(90.952% 0 -.0000119209);--ring:lab(66.128% -.0000298023 .0000119209);--chart-1:lab(84.92% 0 -.0000119209);--chart-2:lab(48.496% 0 0);--chart-3:lab(34.924% 0 0);--chart-4:lab(27.036% 0 0);--chart-5:lab(15.204% 0 -.00000596046);--sidebar:lab(98.26% 0 0);--sidebar-foreground:lab(2.75381% 0 0);--sidebar-primary:lab(7.78201% -.0000149012 0);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(96.52% -.0000298023 .0000119209);--sidebar-accent-foreground:lab(7.78201% -.0000149012 0);--sidebar-border:lab(90.952% 0 -.0000119209);--sidebar-ring:lab(66.128% -.0000298023 .0000119209)}}.dark{--background:#0a0a0a;--foreground:#fafafa;--card:#171717;--card-foreground:#fafafa;--popover:#171717;--popover-foreground:#fafafa;--primary:#e5e5e5;--primary-foreground:#171717;--secondary:#262626;--secondary-foreground:#fafafa;--muted:#262626;--muted-foreground:#a1a1a1;--accent:#00c37b;--accent-foreground:#fafafa;--destructive:#ff6568;--destructive-foreground:#fafafa;--border:rgba(255,255,255,.1);--input:rgba(255,255,255,.15);--ring:#737373;--chart-1:#d4d4d4;--chart-2:#737373;--chart-3:#525252;--chart-4:#404040;--chart-5:#262626;--sidebar:#171717;--sidebar-foreground:#fafafa;--sidebar-primary:#1447e6;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#262626;--sidebar-accent-foreground:#fafafa;--sidebar-border:rgba(255,255,255,.1);--sidebar-ring:#737373}@supports (color:color(display-p3 0 0 0)){.dark{--background:color(display-p3 .0393882 .0393882 .0393882);--foreground:color(display-p3 .980256 .980256 .980256);--card:color(display-p3 .0905274 .0905274 .0905274);--card-foreground:color(display-p3 .980256 .980256 .980256);--popover:color(display-p3 .0905274 .0905274 .0905274);--popover-foreground:color(display-p3 .980256 .980256 .980256);--primary:color(display-p3 .898161 .898161 .898161);--primary-foreground:color(display-p3 .0905274 .0905274 .0905274);--secondary:color(display-p3 .149382 .149382 .149382);--secondary-foreground:color(display-p3 .980256 .980256 .980256);--muted:color(display-p3 .149382 .149382 .149382);--muted-foreground:color(display-p3 .630163 .630163 .630163);--accent:color(display-p3 .339841 .754462 .503519);--accent-foreground:color(display-p3 .980256 .980256 .980256);--destructive:color(display-p3 .933534 .431676 .423491);--destructive-foreground:color(display-p3 .980256 .980256 .980256);--border:color(display-p3 1 1 1/.1);--input:color(display-p3 1 1 1/.15);--ring:color(display-p3 .451519 .451519 .451519);--chart-1:color(display-p3 .831444 .831444 .831444);--chart-2:color(display-p3 .451519 .451519 .451519);--chart-3:color(display-p3 .321993 .321993 .321993);--chart-4:color(display-p3 .250471 .250471 .250471);--chart-5:color(display-p3 .149382 .149382 .149382);--sidebar:color(display-p3 .0905274 .0905274 .0905274);--sidebar-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-primary:color(display-p3 .1379 .274983 .867624);--sidebar-primary-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-accent:color(display-p3 .149382 .149382 .149382);--sidebar-accent-foreground:color(display-p3 .980256 .980256 .980256);--sidebar-border:color(display-p3 1 1 1/.1);--sidebar-ring:color(display-p3 .451519 .451519 .451519)}}@supports (color:lab(0% 0 0)){.dark{--background:lab(2.75381% 0 0);--foreground:lab(98.26% 0 0);--card:lab(7.78201% -.0000149012 0);--card-foreground:lab(98.26% 0 0);--popover:lab(7.78201% -.0000149012 0);--popover-foreground:lab(98.26% 0 0);--primary:lab(90.952% 0 -.0000119209);--primary-foreground:lab(7.78201% -.0000149012 0);--secondary:lab(15.204% 0 -.00000596046);--secondary-foreground:lab(98.26% 0 0);--muted:lab(15.204% 0 -.00000596046);--muted-foreground:lab(66.128% -.0000298023 .0000119209);--accent:lab(69.7395% -56.1647 24.7025);--accent-foreground:lab(98.26% 0 0);--destructive:lab(63.7053% 60.745 31.3109);--destructive-foreground:lab(98.26% 0 0);--border:lab(100% 0 0/.1);--input:lab(100% 0 0/.15);--ring:lab(48.496% 0 0);--chart-1:lab(84.92% 0 -.0000119209);--chart-2:lab(48.496% 0 0);--chart-3:lab(34.924% 0 0);--chart-4:lab(27.036% 0 0);--chart-5:lab(15.204% 0 -.00000596046);--sidebar:lab(7.78201% -.0000149012 0);--sidebar-foreground:lab(98.26% 0 0);--sidebar-primary:lab(36.9089% 35.0961 -85.6872);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(15.204% 0 -.00000596046);--sidebar-accent-foreground:lab(98.26% 0 0);--sidebar-border:lab(100% 0 0/.1);--sidebar-ring:lab(48.496% 0 0)}}*{border-color:var(--border)}html{font-family:var(--font-body),ui-sans-serif,system-ui,sans-serif;font-size:16px;line-height:1.5}body{background-color:var(--background);color:var(--foreground);font-size:var(--text-base);line-height:inherit}input,textarea,select,button{font-family:inherit;font-size:inherit}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;bottom:0;left:0;right:0}.inset-x-0{left:0;right:0}.-left-\[22px\]{left:-22px}.-left-\[24px\]{left:-24px}.-left-\[39px\]{left:-39px}.-left-\[40px\]{left:-40px}.-right-1\.5{right:-.375rem}.-top-0\.5{top:-.125rem}.-top-1\.5{top:-.375rem}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-full{bottom:100%}.left-0{left:0}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.right-2{right:.5rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-\[10000\]{z-index:10000}.z-\[10001\]{z-index:10001}.z-\[10050\]{z-index:10050}.z-\[100\]{z-index:100}.z-\[1\]{z-index:1}.m-0{margin:0}.m-3{margin:.75rem}.m-\[\.15rem_\.35rem_0\]{margin:.15rem .35rem 0}.m-\[\.35rem_\.35rem_0\]{margin:.35rem .35rem 0}.m-\[\.45rem_0_0\]{margin:.45rem 0 0}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.\!mr-1{margin-right:.25rem!important}.\!mt-\[1\.25rem\]{margin-top:1.25rem!important}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-\[-2px\]{margin-bottom:-2px}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-\[12px\]{margin-right:12px}.mr-\[16px\]{margin-right:16px}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-\[0\.75rem\]{margin-top:.75rem}.mt-\[24px\]{margin-top:24px}.mt-auto{margin-top:auto}.box-border{box-sizing:border-box}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.\!size-3\.5{width:.875rem!important;height:.875rem!important}.\!size-4{width:1rem!important;height:1rem!important}.size-1{width:.25rem;height:.25rem}.size-1\.5{width:.375rem;height:.375rem}.size-10{width:2.5rem;height:2.5rem}.size-12{width:3rem;height:3rem}.size-2{width:.5rem;height:.5rem}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-full{width:100%;height:100%}.\!h-7{height:1.75rem!important}.\!h-\[18px\]{height:18px!important}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[14px\]{height:14px}.h-\[18px\]{height:18px}.h-\[calc\(100\%-2px\)\]{height:calc(100% - 2px)}.h-\[min\(68vh\,520px\)\]{height:min(68vh,520px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-0{max-height:0}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-96{max-height:24rem}.max-h-\[2000px\]{max-height:2000px}.max-h-\[225px\]{max-height:225px}.max-h-\[240px\]{max-height:240px}.max-h-\[300px\]{max-height:300px}.max-h-\[6000px\]{max-height:6000px}.max-h-\[72vh\]{max-height:72vh}.max-h-\[92vh\]{max-height:92vh}.max-h-\[calc\(100vh-16px\)\]{max-height:calc(100vh - 16px)}.max-h-\[min\(50vh\,22rem\)\]{max-height:min(50vh,22rem)}.max-h-\[min\(50vh\,360px\)\]{max-height:min(50vh,360px)}.max-h-\[min\(68vh\,640px\)\]{max-height:min(68vh,640px)}.max-h-dvh{max-height:100dvh}.\!min-h-0{min-height:0!important}.\!min-h-\[--min-h\]{min-height:var(--min-h)!important}.min-h-0{min-height:0}.min-h-20{min-height:5rem}.min-h-5{min-height:1.25rem}.min-h-7{min-height:1.75rem}.min-h-9{min-height:2.25rem}.min-h-\[110px\]{min-height:110px}.min-h-\[120px\]{min-height:120px}.min-h-\[124px\]{min-height:124px}.min-h-\[180px\]{min-height:180px}.min-h-\[200px\]{min-height:200px}.min-h-\[220px\]{min-height:220px}.min-h-\[240px\]{min-height:240px}.min-h-\[320px\]{min-height:320px}.min-h-\[40vh\]{min-height:40vh}.min-h-\[420px\]{min-height:420px}.min-h-\[80px\]{min-height:80px}.min-h-\[88px\]{min-height:88px}.min-h-full{min-height:100%}.\!w-7{width:1.75rem!important}.\!w-\[18px\]{width:18px!important}.\!w-\[520px\]{width:520px!important}.\!w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[100px\]{width:100px}.w-\[112px\]{width:112px}.w-\[116px\]{width:116px}.w-\[128px\]{width:128px}.w-\[140px\]{width:140px}.w-\[14px\]{width:14px}.w-\[160px\]{width:160px}.w-\[168px\]{width:168px}.w-\[172px\]{width:172px}.w-\[180px\]{width:180px}.w-\[18px\]{width:18px}.w-\[220px\]{width:220px}.w-\[260px\]{width:260px}.w-\[300px\]{width:300px}.w-\[72px\]{width:72px}.w-\[88px\]{width:88px}.w-\[96px\]{width:96px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.\!min-w-0{min-width:0!important}.min-w-0{min-width:0}.min-w-24{min-width:6rem}.min-w-32{min-width:8rem}.min-w-9{min-width:2.25rem}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[148px\]{min-width:148px}.min-w-\[172px\]{min-width:172px}.min-w-\[180px\]{min-width:180px}.min-w-\[18px\]{min-width:18px}.min-w-\[200px\]{min-width:200px}.min-w-\[6\.5rem\]{min-width:6.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[96px\]{min-width:96px}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.\!max-w-\[400px\]{max-width:400px!important}.max-w-36{max-width:9rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[120px\]{max-width:120px}.max-w-\[160px\]{max-width:160px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[300px\]{max-width:300px}.max-w-\[460px\]{max-width:460px}.max-w-\[480px\]{max-width:480px}.max-w-\[520px\]{max-width:520px}.max-w-\[560px\]{max-width:560px}.max-w-\[720px\]{max-width:720px}.max-w-\[760px\]{max-width:760px}.max-w-\[840px\]{max-width:840px}.max-w-\[920px\]{max-width:920px}.max-w-\[min\(100vw-24px\,260px\)\]{max-width:min(100vw - 24px,260px)}.max-w-\[min\(100vw-32px\,320px\)\]{max-width:min(100vw - 32px,320px)}.max-w-\[min\(360px\,90vw\)\]{max-width:min(360px,90vw)}.max-w-\[min\(540px\,100\%\)\]{max-width:min(540px,100%)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.\!flex-none{flex:none!important}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.animate-\[backdropIn_0\.2s_ease-out\]{animation:.2s ease-out backdropIn}.animate-\[modalIn_0\.2s_ease-out\]{animation:.2s ease-out modalIn}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.\!cursor-pointer{cursor:pointer!important}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.\!justify-start{justify-content:flex-start!important}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-\[10px\]{gap:10px}.gap-\[var\(--space-4\)\]{gap:var(--space-4)}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-7{-moz-column-gap:1.75rem;column-gap:1.75rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-4{row-gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-\[var\(--ds-border\)\]>:not([hidden])~:not([hidden]){border-color:var(--ds-border)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-y-contain{overscroll-behavior-y:contain}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded{border-radius:.25rem!important}.\!rounded-\[10px\]{border-radius:10px!important}.\!rounded-md{border-radius:calc(var(--radius) - 2px)!important}.\!rounded-none{border-radius:0!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[4px\]{border-radius:4px}.rounded-\[8px\]{border-radius:8px}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-\[min\(var\(--radius-md\)\,14px\)\]{border-radius:min(var(--radius-md),14px)}.rounded-\[var\(--ds-radius-sm\)\]{border-radius:var(--ds-radius-sm)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.\!border{border-width:1px!important}.\!border-0{border-width:0!important}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-x-0{border-left-width:0;border-right-width:0}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.\!border-solid{border-style:solid!important}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.\!border-\[\#1677FF\]{--tw-border-opacity:1!important;border-color:rgba(22,119,255,var(--tw-border-opacity,1))!important}.\!border-\[\#52C51A\]{--tw-border-opacity:1!important;border-color:rgba(82,197,26,var(--tw-border-opacity,1))!important}.\!border-\[\#FAAD14\]{--tw-border-opacity:1!important;border-color:rgba(250,173,20,var(--tw-border-opacity,1))!important}.\!border-\[\#FF4D50\]{--tw-border-opacity:1!important;border-color:rgba(255,77,80,var(--tw-border-opacity,1))!important}.\!border-\[\#e5e5e5\]{--tw-border-opacity:1!important;border-color:rgba(229,229,229,var(--tw-border-opacity,1))!important}.\!border-\[var\(--border-default\)\]{border-color:var(--border-default)!important}.\!border-\[var\(--ds-accent\)\]{border-color:var(--ds-accent)!important}.border-\[\#223044\]{--tw-border-opacity:1;border-color:rgba(34,48,68,var(--tw-border-opacity,1))}.border-\[\#e2e6ee\]{--tw-border-opacity:1;border-color:rgba(226,230,238,var(--tw-border-opacity,1))}.border-\[\#e4dfc8\]{--tw-border-opacity:1;border-color:rgba(228,223,200,var(--tw-border-opacity,1))}.border-\[\#efefef\]{--tw-border-opacity:1;border-color:rgba(239,239,239,var(--tw-border-opacity,1))}.border-\[color\:var\(--ds-accent\)\]{border-color:var(--ds-accent)}.border-\[color\:var\(--ds-border\)\]{border-color:var(--ds-border)}.border-\[color\:var\(--ds-ok\)\]{border-color:var(--ds-ok)}.border-\[var\(--amber\)\]{border-color:var(--amber)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-\[var\(--calendar-day-today-border\)\]{border-color:var(--calendar-day-today-border)}.border-\[var\(--ds-accent\)\]{border-color:var(--ds-accent)}.border-\[var\(--ds-border\)\]{border-color:var(--ds-border)}.border-\[var\(--ds-border\,var\(--input\)\)\]{border-color:var(--ds-border,var(--input))}.border-\[var\(--green-dark\)\]{border-color:var(--green-dark)}.border-amber-500\/40{border-color:rgba(245,158,11,.4)}.border-black\/5{border-color:rgba(0,0,0,.05)}.border-black\/\[0\.06\]{border-color:rgba(0,0,0,.06)}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-emerald-500\/40{border-color:rgba(16,185,129,.4)}.border-red-200{--tw-border-opacity:1;border-color:rgba(254,202,202,var(--tw-border-opacity,1))}.border-red-500\/40{border-color:rgba(239,68,68,.4)}.border-transparent{border-color:transparent}.border-white\/5{border-color:rgba(255,255,255,.05)}.border-t-\[var\(--ds-border\)\]{border-top-color:var(--ds-border)}.\!bg-\[\#E7F4FF\]{--tw-bg-opacity:1!important;background-color:rgba(231,244,255,var(--tw-bg-opacity,1))!important}.\!bg-\[\#F6FFED\]{--tw-bg-opacity:1!important;background-color:rgba(246,255,237,var(--tw-bg-opacity,1))!important}.\!bg-\[\#FFF3F1\]{--tw-bg-opacity:1!important;background-color:rgba(255,243,241,var(--tw-bg-opacity,1))!important}.\!bg-\[\#FFFBE6\]{--tw-bg-opacity:1!important;background-color:rgba(255,251,230,var(--tw-bg-opacity,1))!important}.\!bg-\[\#fbfbfc\]{--tw-bg-opacity:1!important;background-color:rgba(251,251,252,var(--tw-bg-opacity,1))!important}.\!bg-\[var\(--green-light\)\]{background-color:var(--green-light)!important}.\!bg-transparent{background-color:transparent!important}.bg-\[\#111\]{--tw-bg-opacity:1;background-color:rgba(17,17,17,var(--tw-bg-opacity,1))}.bg-\[\#e9e9e9\]{--tw-bg-opacity:1;background-color:rgba(233,233,233,var(--tw-bg-opacity,1))}.bg-\[\#efefef\]{--tw-bg-opacity:1;background-color:rgba(239,239,239,var(--tw-bg-opacity,1))}.bg-\[\#f6f7fa\]{--tw-bg-opacity:1;background-color:rgba(246,247,250,var(--tw-bg-opacity,1))}.bg-\[\#f9f9f7\]{--tw-bg-opacity:1;background-color:rgba(249,249,247,var(--tw-bg-opacity,1))}.bg-\[\#f9f9f9\]{--tw-bg-opacity:1;background-color:rgba(249,249,249,var(--tw-bg-opacity,1))}.bg-\[\#fafafa\]{--tw-bg-opacity:1;background-color:rgba(250,250,250,var(--tw-bg-opacity,1))}.bg-\[\#fbfbfc\]{--tw-bg-opacity:1;background-color:rgba(251,251,252,var(--tw-bg-opacity,1))}.bg-\[\#fef2f2\]{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity,1))}.bg-\[\#fff\]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.bg-\[color-mix\(in_srgb\,var\(--amber\)_14\%\,var\(--surface-1\)\)\]{background-color:color-mix(in srgb,var(--amber)14%,var(--surface-1))}.bg-\[color-mix\(in_srgb\,var\(--blue\)_12\%\,var\(--surface-1\)\)\]{background-color:color-mix(in srgb,var(--blue)12%,var(--surface-1))}.bg-\[color-mix\(in_srgb\,var\(--ds-ok\)_12\%\,transparent\)\]{background-color:color-mix(in srgb,var(--ds-ok)12%,transparent)}.bg-\[rgba\(120\,30\,30\,\.07\)\]{background-color:rgba(120,30,30,.07)}.bg-\[rgba\(255\,255\,255\,0\.8\)\]{background-color:rgba(255,255,255,.8)}.bg-\[rgba\(50\,100\,180\,\.07\)\]{background-color:rgba(50,100,180,.07)}.bg-\[var\(--amber\)\]{background-color:var(--amber)}.bg-\[var\(--blue\)\]{background-color:var(--blue)}.bg-\[var\(--border-hover\)\]{background-color:var(--border-hover)}.bg-\[var\(--calendar-day-bg\)\]{background-color:var(--calendar-day-bg)}.bg-\[var\(--calendar-day-disabled-bg\)\]{background-color:var(--calendar-day-disabled-bg)}.bg-\[var\(--calendar-day-selected-bg\)\]{background-color:var(--calendar-day-selected-bg)}.bg-\[var\(--calendar-day-selected-text\)\]{background-color:var(--calendar-day-selected-text)}.bg-\[var\(--calendar-day-today-border\)\]{background-color:var(--calendar-day-today-border)}.bg-\[var\(--ds-accent\)\]{background-color:var(--ds-accent)}.bg-\[var\(--ds-bg\)\]{background-color:var(--ds-bg)}.bg-\[var\(--ds-border\)\]{background-color:var(--ds-border)}.bg-\[var\(--ds-danger\)\]{background-color:var(--ds-danger)}.bg-\[var\(--ds-item-active\)\]{background-color:var(--ds-item-active)}.bg-\[var\(--ds-item-bg-hover\)\]{background-color:var(--ds-item-bg-hover)}.bg-\[var\(--ds-item-hover\)\]{background-color:var(--ds-item-hover)}.bg-\[var\(--ds-log-bg\)\]{background-color:var(--ds-log-bg)}.bg-\[var\(--ds-main-tint\)\]{background-color:var(--ds-main-tint)}.bg-\[var\(--ds-muted\)\]{background-color:var(--ds-muted)}.bg-\[var\(--ds-ok\)\]{background-color:var(--ds-ok)}.bg-\[var\(--ds-sidebar\)\]{background-color:var(--ds-sidebar)}.bg-\[var\(--ds-surface\)\]{background-color:var(--ds-surface)}.bg-\[var\(--green-light\)\]{background-color:var(--green-light)}.bg-\[var\(--surface-1\)\]{background-color:var(--surface-1)}.bg-\[var\(--surface-2\)\]{background-color:var(--surface-2)}.bg-amber-500\/15{background-color:rgba(245,158,11,.15)}.bg-amber-500\/5{background-color:rgba(245,158,11,.05)}.bg-background{background-color:var(--background)}.bg-black\/45{background-color:rgba(0,0,0,.45)}.bg-black\/70{background-color:rgba(0,0,0,.7)}.bg-border{background-color:var(--border)}.bg-destructive{background-color:var(--destructive)}.bg-emerald-500\/10{background-color:rgba(16,185,129,.1)}.bg-emerald-500\/15{background-color:rgba(16,185,129,.15)}.bg-emerald-500\/5{background-color:rgba(16,185,129,.05)}.bg-gray-800{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity,1))}.bg-input{background-color:var(--input)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-red-50{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity,1))}.bg-red-500\/10{background-color:rgba(239,68,68,.1)}.bg-red-500\/15{background-color:rgba(239,68,68,.15)}.bg-red-500\/5{background-color:rgba(239,68,68,.05)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.bg-white\/\[\.012\]{background-color:rgba(255,255,255,.01)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.\!p-0{padding:0!important}.\!p-3{padding:.75rem!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-\[\.45rem_\.75rem\]{padding:.45rem .75rem}.p-\[16px\]{padding:16px}.p-\[1rem_\.75rem\]{padding:1rem .75rem}.p-\[24px\]{padding:24px}.p-\[var\(--space-1\)\]{padding:var(--space-1)}.\!px-0{padding-left:0!important;padding-right:0!important}.\!px-1{padding-left:.25rem!important;padding-right:.25rem!important}.\!px-4{padding-left:1rem!important;padding-right:1rem!important}.\!px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.\!px-\[8px\]{padding-left:8px!important;padding-right:8px!important}.\!py-0{padding-top:0!important;padding-bottom:0!important}.\!py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.\!py-3\.5{padding-top:.875rem!important;padding-bottom:.875rem!important}.\!py-4{padding-top:1rem!important;padding-bottom:1rem!important}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-16{padding-left:4rem;padding-right:4rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-\[10px\]{padding-left:10px;padding-right:10px}.px-\[16px\]{padding-left:16px;padding-right:16px}.px-\[24px\]{padding-left:24px;padding-right:24px}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-\[\.85rem\]{padding-top:.85rem;padding-bottom:.85rem}.py-\[6px\]{padding-top:6px;padding-bottom:6px}.\!pl-0{padding-left:0!important}.\!pl-\[16px\]{padding-left:16px!important}.\!pr-0{padding-right:0!important}.\!pr-\[16px\]{padding-right:16px!important}.\!pt-1{padding-top:.25rem!important}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-\[1px\]{padding-bottom:1px}.pb-\[var\(--space-4\)\]{padding-bottom:var(--space-4)}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pl-\[0\]{padding-left:0}.pr-1{padding-right:.25rem}.pr-3{padding-right:.75rem}.pr-5{padding-right:1.25rem}.pr-8{padding-right:2rem}.pr-\[0\]{padding-right:0}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-\[16px\]{padding-top:16px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono),ui-monospace,monospace}.font-sans{font-family:var(--font-body),ui-sans-serif,system-ui,sans-serif}.\!text-base{font-size:var(--text-base)!important;line-height:1.5!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.78rem\]{font-size:.78rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[9\.5px\]{font-size:9.5px}.text-base{font-size:var(--text-base);line-height:1.5}.text-lg{font-size:var(--text-lg);line-height:1.4}.text-sm{font-size:var(--text-sm);line-height:1.4}.text-xl{font-size:var(--text-xl);line-height:1.3}.text-xs{font-size:var(--text-xs);line-height:1.4}.\!font-normal{font-weight:400!important}.font-\[600\]{font-weight:600}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal)var(--tw-slashed-zero)var(--tw-numeric-figure)var(--tw-numeric-spacing)var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-\[1\.5\]{line-height:1.5}.leading-\[1\.6\]{line-height:1.6}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.\!text-\[\#1677FF\]{--tw-text-opacity:1!important;color:rgba(22,119,255,var(--tw-text-opacity,1))!important}.\!text-\[\#1C1E1F\]{--tw-text-opacity:1!important;color:rgba(28,30,31,var(--tw-text-opacity,1))!important}.\!text-\[\#52C51A\]{--tw-text-opacity:1!important;color:rgba(82,197,26,var(--tw-text-opacity,1))!important}.\!text-\[\#6e6e6e\]{--tw-text-opacity:1!important;color:rgba(110,110,110,var(--tw-text-opacity,1))!important}.\!text-\[\#A32D2D\]{--tw-text-opacity:1!important;color:rgba(163,45,45,var(--tw-text-opacity,1))!important}.\!text-\[\#FAAD14\]{--tw-text-opacity:1!important;color:rgba(250,173,20,var(--tw-text-opacity,1))!important}.\!text-\[\#FF4D50\]{--tw-text-opacity:1!important;color:rgba(255,77,80,var(--tw-text-opacity,1))!important}.\!text-\[\#e6e6e6\]{--tw-text-opacity:1!important;color:rgba(230,230,230,var(--tw-text-opacity,1))!important}.\!text-\[var\(--ds-text\)\]{color:var(--ds-text)!important}.\!text-zinc-700{--tw-text-opacity:1!important;color:rgba(63,63,70,var(--tw-text-opacity,1))!important}.text-\[\#252e3e\]{--tw-text-opacity:1;color:rgba(37,46,62,var(--tw-text-opacity,1))}.text-\[\#2e5a38\]{--tw-text-opacity:1;color:rgba(46,90,56,var(--tw-text-opacity,1))}.text-\[\#303a4a\]{--tw-text-opacity:1;color:rgba(48,58,74,var(--tw-text-opacity,1))}.text-\[\#343d52\]{--tw-text-opacity:1;color:rgba(52,61,82,var(--tw-text-opacity,1))}.text-\[\#353f52\]{--tw-text-opacity:1;color:rgba(53,63,82,var(--tw-text-opacity,1))}.text-\[\#3B6D11\]{--tw-text-opacity:1;color:rgba(59,109,17,var(--tw-text-opacity,1))}.text-\[\#4d80c4\]{--tw-text-opacity:1;color:rgba(77,128,196,var(--tw-text-opacity,1))}.text-\[\#535353\]{--tw-text-opacity:1;color:rgba(83,83,83,var(--tw-text-opacity,1))}.text-\[\#5a8ec4\]{--tw-text-opacity:1;color:rgba(90,142,196,var(--tw-text-opacity,1))}.text-\[\#626a77\]{--tw-text-opacity:1;color:rgba(98,106,119,var(--tw-text-opacity,1))}.text-\[\#6e2828\]{--tw-text-opacity:1;color:rgba(110,40,40,var(--tw-text-opacity,1))}.text-\[\#6e6e6e\]{--tw-text-opacity:1;color:rgba(110,110,110,var(--tw-text-opacity,1))}.text-\[\#8A8985\]{--tw-text-opacity:1;color:rgba(138,137,133,var(--tw-text-opacity,1))}.text-\[\#A32D2D\]{--tw-text-opacity:1;color:rgba(163,45,45,var(--tw-text-opacity,1))}.text-\[\#b0bac8\]{--tw-text-opacity:1;color:rgba(176,186,200,var(--tw-text-opacity,1))}.text-\[\#b4c4b9\]{--tw-text-opacity:1;color:rgba(180,196,185,var(--tw-text-opacity,1))}.text-\[var\(--amber\)\]{color:var(--amber)}.text-\[var\(--blue\)\]{color:var(--blue)}.text-\[var\(--calendar-day-disabled-text\)\]{color:var(--calendar-day-disabled-text)}.text-\[var\(--calendar-day-selected-text\)\]{color:var(--calendar-day-selected-text)}.text-\[var\(--calendar-day-text\)\]{color:var(--calendar-day-text)}.text-\[var\(--calendar-day-today-text\)\]{color:var(--calendar-day-today-text)}.text-\[var\(--ds-accent\)\]{color:var(--ds-accent)}.text-\[var\(--ds-accent\,hsl\(var\(--primary\)\)\)\]{color:var(--ds-accent,hsl(var(--primary)))}.text-\[var\(--ds-danger\)\]{color:var(--ds-danger)}.text-\[var\(--ds-muted\)\]{color:var(--ds-muted)}.text-\[var\(--ds-ok\)\]{color:var(--ds-ok)}.text-\[var\(--ds-text\)\]{color:var(--ds-text)}.text-\[var\(--green-dark\)\]{color:var(--green-dark)}.text-\[var\(--surface-1\)\]{color:var(--surface-1)}.text-\[var\(--text-placeholder\)\]{color:var(--text-placeholder)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--text-tertiary\)\]{color:var(--text-tertiary)}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-500{--tw-text-opacity:1;color:rgba(245,158,11,var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgba(217,119,6,var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgba(180,83,9,var(--tw-text-opacity,1))}.text-destructive{color:var(--destructive)}.text-emerald-600{--tw-text-opacity:1;color:rgba(5,150,105,var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgba(4,120,87,var(--tw-text-opacity,1))}.text-foreground{color:var(--foreground)}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity,1))}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{--tw-text-opacity:1;color:rgba(234,88,12,var(--tw-text-opacity,1))}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity,1))}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity,1))}.text-zinc-400{--tw-text-opacity:1;color:rgba(161,161,170,var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgba(113,113,122,var(--tw-text-opacity,1))}.text-zinc-700{--tw-text-opacity:1;color:rgba(63,63,70,var(--tw-text-opacity,1))}.text-zinc-900{--tw-text-opacity:1;color:rgba(24,24,27,var(--tw-text-opacity,1))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.\!no-underline{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.\!shadow-none{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-\[var\(--shadow-float\)\]{--tw-shadow-color:var(--shadow-float);--tw-shadow:var(--tw-shadow-colored)}.shadow-\[var\(--shadow-lg\)\]{--tw-shadow-color:var(--shadow-lg);--tw-shadow:var(--tw-shadow-colored)}.shadow-\[var\(--shadow-md\)\]{--tw-shadow-color:var(--shadow-md);--tw-shadow:var(--tw-shadow-colored)}.shadow-\[var\(--shadow-sm\)\]{--tw-shadow-color:var(--shadow-sm);--tw-shadow:var(--tw-shadow-colored)}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,-webkit-text-decoration-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[background-color\,opacity\]{transition-property:background-color,opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,background-color\]{transition-property:border-color,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,box-shadow\,background-color\]{transition-property:border-color,box-shadow,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,box-shadow\]{transition-property:border-color,box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[color\,box-shadow\,border-color\,background-color\]{transition-property:color,box-shadow,border-color,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[color\,box-shadow\,border-color\]{transition-property:color,box-shadow,border-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[stroke-dashoffset\]{transition-property:stroke-dashoffset;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,-webkit-text-decoration-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-property:box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-transform{will-change:transform}[data-slot=dropdown-menu-positioner]{border-radius:var(--radius);box-shadow:var(--shadow-float);overflow:visible}.ds-soft-shadow{box-shadow:var(--shadow-sm)}.ds-soft-shadow:hover,.ds-soft-shadow:focus-within{box-shadow:var(--shadow-composer)}.calendar-root.rdp-root{--rdp-accent-color:var(--calendar-day-selected-bg);--rdp-accent-background-color:var(--calendar-day-hover-bg);--rdp-day-height:36px;--rdp-day-width:36px;--rdp-day_button-border-radius:6px;--rdp-day_button-height:36px;--rdp-day_button-width:36px;--rdp-day_button-border:1px solid transparent;--rdp-selected-border:1px solid transparent;--rdp-today-color:var(--calendar-day-today-text);--rdp-disabled-opacity:1;--rdp-outside-opacity:1;--rdp-nav_button-height:2rem;--rdp-nav_button-width:2rem}.calendar-root .rdp-selected .rdp-day_button{background-color:var(--calendar-day-selected-bg);color:var(--calendar-day-selected-text);border-color:transparent}.calendar-root .rdp-today:not(.rdp-selected) .rdp-day_button{color:var(--calendar-day-today-text);border-color:var(--calendar-day-today-border)}.calendar-root .rdp-disabled .rdp-day_button{background-color:var(--calendar-day-disabled-bg);color:var(--calendar-day-disabled-text);opacity:1}:root{--font-body:"-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif";--font-sans:var(--font-body);--font-anthropic-sans:"Anthropic Sans",system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-anthropic-serif:"Anthropic Serif",Georgia,"Arial Hebrew","Noto Sans Hebrew","Times New Roman",Times,"Hiragino Sans","Yu Gothic",Meiryo,"Noto Sans CJK JP","PingFang TC","Microsoft JhengHei","Noto Sans CJK TC","PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Apple SD Gothic Neo","Malgun Gothic","Noto Sans CJK KR",serif;--font-anthropic-mono:"Anthropic Mono",ui-monospace,monospace;--font-open-dyslexic:"OpenDyslexic","Comic Sans MS",ui-serif,serif;--accent:#1db887}.outline-none{outline-offset:0;outline:none}p,h1,h2,h3,h4,h5,h6{margin:0;padding:0}ul,li{margin:0;padding:0;list-style:none}[data-slot=tabs-list][data-variant=line] [data-slot=tabs-trigger][data-state=active],[data-slot=tabs-list][data-variant=line] [data-slot=tabs-trigger][data-active]:not([data-active=false]),[data-slot=tabs-list][data-variant=line] [data-slot=tabs-trigger][aria-selected=true]{color:var(--ds-main,#1db887);border-bottom:2px solid var(--ds-main,#1db887)}.placeholder\:text-\[var\(--text-placeholder\)\]::placeholder{color:var(--text-placeholder)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.first\:pt-0:first-child{padding-top:0}.last\:border-0:last-child{border-width:0}.hover\:\!border-0:hover{border-width:0!important}.hover\:\!border-\[\#e5e5e5\]:hover{--tw-border-opacity:1!important;border-color:rgba(229,229,229,var(--tw-border-opacity,1))!important}.hover\:\!border-\[var\(--ds-accent\)\]:hover{border-color:var(--ds-accent)!important}.hover\:border-\[color\:var\(--ds-accent\)\]:hover{border-color:var(--ds-accent)}.hover\:border-\[color\:var\(--ds-border-hover\)\]:hover{border-color:var(--ds-border-hover)}.hover\:border-\[var\(--border-hover\)\]:hover{border-color:var(--border-hover)}.hover\:border-\[var\(--calendar-day-today-border\)\]:hover{border-color:var(--calendar-day-today-border)}.hover\:border-\[var\(--ds-accent-hover\)\]:hover{border-color:var(--ds-accent-hover)}.hover\:border-\[var\(--ds-border-hover\)\]:hover{border-color:var(--ds-border-hover)}.hover\:\!bg-\[var\(--ds-item-hover\)\]:hover{background-color:var(--ds-item-hover)!important}.hover\:\!bg-\[var\(--green-light\)\]:hover{background-color:var(--green-light)!important}.hover\:\!bg-transparent:hover{background-color:transparent!important}.hover\:bg-\[\#333\]:hover{--tw-bg-opacity:1;background-color:rgba(51,51,51,var(--tw-bg-opacity,1))}.hover\:bg-\[\#fff1f1\]:hover{--tw-bg-opacity:1;background-color:rgba(255,241,241,var(--tw-bg-opacity,1))}.hover\:bg-\[var\(--calendar-day-disabled-bg\)\]:hover{background-color:var(--calendar-day-disabled-bg)}.hover\:bg-\[var\(--calendar-day-hover-bg\)\]:hover{background-color:var(--calendar-day-hover-bg)}.hover\:bg-\[var\(--calendar-day-selected-bg\)\]:hover{background-color:var(--calendar-day-selected-bg)}.hover\:bg-\[var\(--ds-accent-hover\)\]:hover{background-color:var(--ds-accent-hover)}.hover\:bg-\[var\(--ds-item-active\)\]:hover{background-color:var(--ds-item-active)}.hover\:bg-\[var\(--ds-item-bg-hover\)\]:hover{background-color:var(--ds-item-bg-hover)}.hover\:bg-\[var\(--ds-item-hover\)\]:hover{background-color:var(--ds-item-hover)}.hover\:bg-\[var\(--ds-main-tint\)\]:hover{background-color:var(--ds-main-tint)}.hover\:bg-\[var\(--green-light\)\]:hover{background-color:var(--green-light)}.hover\:bg-\[var\(--surface-1\)\]:hover{background-color:var(--surface-1)}.hover\:bg-\[var\(--surface-2\)\]:hover{background-color:var(--surface-2)}.hover\:bg-\[var\(--surface-3\)\]:hover{background-color:var(--surface-3)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/70:hover{background-color:rgba(255,255,255,.7)}.hover\:\!text-\[\#cfcfcf\]:hover{--tw-text-opacity:1!important;color:rgba(207,207,207,var(--tw-text-opacity,1))!important}.hover\:\!text-\[var\(--green-dark\)\]:hover{color:var(--green-dark)!important}.hover\:text-\[\#343d52\]:hover{--tw-text-opacity:1;color:rgba(52,61,82,var(--tw-text-opacity,1))}.hover\:text-\[color\:var\(--ds-accent\)\]:hover{color:var(--ds-accent)}.hover\:text-\[var\(--calendar-day-disabled-text\)\]:hover{color:var(--calendar-day-disabled-text)}.hover\:text-\[var\(--calendar-day-hover-text\)\]:hover{color:var(--calendar-day-hover-text)}.hover\:text-\[var\(--calendar-day-selected-text\)\]:hover{color:var(--calendar-day-selected-text)}.hover\:text-\[var\(--ds-accent\)\]:hover{color:var(--ds-accent)}.hover\:text-\[var\(--ds-accent-hover\)\]:hover{color:var(--ds-accent-hover)}.hover\:text-\[var\(--ds-text\)\]:hover{color:var(--ds-text)}.hover\:text-\[var\(--green-dark\)\]:hover{color:var(--green-dark)}.hover\:text-\[var\(--surface-1\)\]:hover{color:var(--surface-1)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-red-800:hover{--tw-text-opacity:1;color:rgba(153,27,27,var(--tw-text-opacity,1))}.hover\:text-zinc-600:hover{--tw-text-opacity:1;color:rgba(82,82,91,var(--tw-text-opacity,1))}.hover\:text-zinc-700:hover{--tw-text-opacity:1;color:rgba(63,63,70,var(--tw-text-opacity,1))}.hover\:text-zinc-900:hover{--tw-text-opacity:1;color:rgba(24,24,27,var(--tw-text-opacity,1))}.hover\:underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hover\:\!no-underline:hover{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.hover\:\!shadow-none:hover{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.hover\:shadow-\[0_2px_12px_rgba\(0\,0\,0\,0\.06\)\]:hover{--tw-shadow:0 2px 12px rgba(0,0,0,.06);--tw-shadow-colored:0 2px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.hover\:shadow-\[var\(--shadow-sm\)\]:hover{--tw-shadow-color:var(--shadow-sm);--tw-shadow:var(--tw-shadow-colored)}.focus\:\!border-0:focus{border-width:0!important}.focus\:bg-\[\#fff1f1\]:focus{--tw-bg-opacity:1;background-color:rgba(255,241,241,var(--tw-bg-opacity,1))}.focus\:bg-\[var\(--ds-item-hover\)\]:focus{background-color:var(--ds-item-hover)}.focus\:bg-\[var\(--surface-2\)\]:focus{background-color:var(--surface-2)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-\[var\(--ds-text\)\]:focus{color:var(--ds-text)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:\!shadow-none:focus{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.focus\:\!outline-none:focus{outline-offset:2px!important;outline:2px solid transparent!important}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid transparent}.focus-visible\:\!border-0:focus-visible{border-width:0!important}.focus-visible\:\!border-\[\#e5e5e5\]:focus-visible{--tw-border-opacity:1!important;border-color:rgba(229,229,229,var(--tw-border-opacity,1))!important}.focus-visible\:border-\[var\(--amber\)\]:focus-visible{border-color:var(--amber)}.focus-visible\:border-\[var\(--border-focus\)\]:focus-visible{border-color:var(--border-focus)}.focus-visible\:border-\[var\(--green-dark\)\]:focus-visible{border-color:var(--green-dark)}.focus-visible\:border-destructive:focus-visible{border-color:var(--destructive)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:\!shadow-none:focus-visible{--tw-shadow:0 0 transparent!important;--tw-shadow-colored:0 0 transparent!important;box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)!important}.focus-visible\:\!outline-none:focus-visible{outline-offset:2px!important;outline:2px solid transparent!important}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid transparent}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus-visible\:ring-\[var\(--ds-accent\)\]:focus-visible{--tw-ring-color:var(--ds-accent)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:\[box-shadow\:0_0_0_2px_rgba\(220\,38\,38\,0\.18\)\]:focus-visible{box-shadow:0 0 0 2px rgba(220,38,38,.18)}.focus-visible\:\[box-shadow\:0_0_0_2px_rgba\(255\,181\,71\,0\.25\)\]:focus-visible{box-shadow:0 0 0 2px rgba(255,181,71,.25)}.focus-visible\:\!\[box-shadow\:none\]:focus-visible{box-shadow:none!important}.focus-visible\:\[box-shadow\:var\(--ring-focus-sm\)\]:focus-visible{box-shadow:var(--ring-focus-sm)}.read-only\:focus-visible\:border-border:focus-visible:-moz-read-only{border-color:var(--border)}.read-only\:focus-visible\:border-border:focus-visible:read-only{border-color:var(--border)}.read-only\:focus-visible\:\[box-shadow\:none\]:focus-visible:-moz-read-only{box-shadow:none}.read-only\:focus-visible\:\[box-shadow\:none\]:focus-visible:read-only{box-shadow:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-\[var\(--ds-muted\)\]:disabled{color:var(--ds-muted)}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:border-\[var\(--ds-border\,var\(--input\)\)\]:hover:disabled{border-color:var(--ds-border,var(--input))}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.disabled\:focus-visible\:border-\[var\(--ds-border\,var\(--input\)\)\]:focus-visible:disabled{border-color:var(--ds-border,var(--input))}.disabled\:focus-visible\:border-border:focus-visible:disabled{border-color:var(--border)}.disabled\:focus-visible\:\[box-shadow\:none\]:focus-visible:disabled{box-shadow:none}.group:focus-within .group-focus-within\:pointer-events-auto{pointer-events:auto}.group:focus-within .group-focus-within\:visible{visibility:visible}.group:focus-within .group-focus-within\:opacity-100{opacity:1}.group:hover .group-hover\:pointer-events-auto{pointer-events:auto}.group:hover .group-hover\:visible{visibility:visible}.group:hover .group-hover\:opacity-100{opacity:1}.group\/dropdown-menu-item:focus .group-focus\/dropdown-menu-item\:text-accent-foreground{color:var(--accent-foreground)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.has-\[\:disabled\]\:cursor-not-allowed:has(:disabled){cursor:not-allowed}.has-\[\:focus-visible\]\:border-\[var\(--border-focus\)\]:has(:focus-visible){border-color:var(--border-focus)}.has-\[\:disabled\]\:opacity-50:has(:disabled){opacity:.5}.has-\[\:focus-visible\]\:\[box-shadow\:var\(--ring-focus-sm\)\]:has(:focus-visible){box-shadow:var(--ring-focus-sm)}.group\/table-row:has(td:hover) .group-has-\[td\:hover\]\/table-row\:\!bg-\[var\(--ds-item-hover\)\]{background-color:var(--ds-item-hover)!important}.aria-expanded\:border-\[var\(--ds-accent-hover\)\][aria-expanded=true]{border-color:var(--ds-accent-hover)}.aria-expanded\:bg-\[var\(--surface-1\)\][aria-expanded=true]{background-color:var(--surface-1)}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-\[var\(--ds-accent-hover\)\][aria-expanded=true]{color:var(--ds-accent-hover)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[size\=default\]\:size-4[data-size=default]{width:1rem;height:1rem}.data-\[size\=sm\]\:size-3\.5[data-size=sm]{width:.875rem;height:.875rem}.data-\[size\=default\]\:h-9[data-size=default]{height:2.25rem}.data-\[size\=lg\]\:h-10[data-size=lg]{height:2.5rem}.data-\[size\=lg\]\:h-\[42px\][data-size=lg]{height:42px}.data-\[size\=sm\]\:h-7[data-size=sm]{height:1.75rem}.data-\[checked\]\:translate-x-4[data-checked]{--tw-translate-x:1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[unchecked\]\:translate-x-0\.5[data-unchecked]{--tw-translate-x:.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[checked\]\:border-\[var\(--ds-accent\)\][data-checked]{border-color:var(--ds-accent)}.data-\[popup-open\]\:border-\[var\(--border-focus\)\][data-popup-open],.data-\[state\=open\]\:border-\[var\(--border-focus\)\][data-state=open]{border-color:var(--border-focus)}.data-\[checked\]\:bg-\[var\(--ds-accent\)\][data-checked]{background-color:var(--ds-accent)}.data-\[checked\]\:bg-primary[data-checked]{background-color:var(--primary)}.data-\[checked\]\:bg-primary-foreground[data-checked]{background-color:var(--primary-foreground)}.data-\[checked\]\:bg-white[data-checked]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:bg-\[var\(--ds-green-light\)\][data-state=checked]{background-color:var(--ds-green-light)}.data-\[active\]\:font-medium[data-active]{font-weight:500}.data-\[active\]\:text-\[var\(--ds-accent\)\][data-active]{color:var(--ds-accent)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[popup-open\]\:\[box-shadow\:var\(--ring-focus-sm\)\][data-popup-open],.data-\[state\=open\]\:\[box-shadow\:var\(--ring-focus-sm\)\][data-state=open]{box-shadow:var(--ring-focus-sm)}.data-\[active\]\:after\:absolute[data-active]:after{content:var(--tw-content);position:absolute}.data-\[active\]\:after\:bottom-\[-1px\][data-active]:after{content:var(--tw-content);bottom:-1px}.data-\[active\]\:after\:left-0[data-active]:after{content:var(--tw-content);left:0}.data-\[active\]\:after\:right-0[data-active]:after{content:var(--tw-content);right:0}.data-\[active\]\:after\:h-\[2px\][data-active]:after{content:var(--tw-content);height:2px}.data-\[active\]\:after\:bg-\[var\(--ds-accent\)\][data-active]:after{content:var(--tw-content);background-color:var(--ds-accent)}.data-\[active\]\:after\:content-\[\"\"\][data-active]:after{--tw-content:"";content:var(--tw-content)}.data-\[variant\=destructive\]\:focus\:text-destructive:focus[data-variant=destructive]{color:var(--destructive)}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:mb-0{margin-bottom:0}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:mr-0{margin-right:0}.group\/tabs-list[data-variant=default] .group-data-\[variant\=default\]\/tabs-list\:h-8{height:2rem}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:h-9{height:2.25rem}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:rounded-full{border-radius:9999px}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:px-5{padding-left:1.25rem;padding-right:1.25rem}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:pb-0{padding-bottom:0}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:font-semibold{font-weight:600}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:text-\[\#828282\]{--tw-text-opacity:1;color:rgba(130,130,130,var(--tw-text-opacity,1))}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:bg-\[\#fff\][data-active]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity,1))}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:font-bold[data-active]{font-weight:700}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:text-\[\#333333\][data-active]{--tw-text-opacity:1;color:rgba(51,51,51,var(--tw-text-opacity,1))}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:shadow-\[0_2px_10px_rgba\(15\,23\,42\,0\.08\)\][data-active]{--tw-shadow:0 2px 10px rgba(15,23,42,.08);--tw-shadow-colored:0 2px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.group\/tabs-list[data-variant=pill] .group-data-\[variant\=pill\]\/tabs-list\:data-\[active\]\:after\:\[content\:none\][data-active]:after{content:none}@media (min-width:640px){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:inline{display:inline}.sm\:w-\[220px\]{width:220px}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:pl-2\.5{padding-left:.625rem}.sm\:pr-2\.5{padding-right:.625rem}}@media (min-width:768px){.md\:w-\[300px\]{width:300px}.md\:flex-row{flex-direction:row}.md\:border-b-0{border-bottom-width:0}.md\:border-r{border-right-width:1px}}@media (min-width:1024px){.lg\:flex-row{flex-direction:row}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}}@media (prefers-color-scheme:dark){.dark\:border-input{border-color:var(--input)}}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:.75rem;height:.75rem}.\[\&\>td\]\:transition-colors>td{transition-property:color,background-color,border-color,-webkit-text-decoration-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.data-\[state\=selected\]\:\[\&\>td\]\:\!bg-\[var\(--ds-item-active\)\]>td[data-state=selected]{background-color:var(--ds-item-active)!important}.\[\&_\[data-slot\=tooltip\]\]\:flex [data-slot=tooltip]{display:flex}.\[\&_\[data-slot\=tooltip\]\]\:w-full [data-slot=tooltip]{width:100%}.\[\&_\[data-slot\=tooltip\]\]\:min-w-0 [data-slot=tooltip]{min-width:0}.\[\&_\[data-slot\=tooltip\]\]\:max-w-full [data-slot=tooltip]{max-width:100%}.\[\&_path\]\:\!fill-none path{fill:none!important}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\:not\(\[fill\=none\]\)_path\]\:fill-current svg:not([fill=none]) path{fill:currentColor}.\[\&_svg\[fill\=none\]_path\]\:fill-none svg[fill=none] path{fill:none}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-5 svg{width:1.25rem;height:1.25rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:stroke-current svg{stroke:currentColor}.\[\&_svg\]\:align-middle svg{vertical-align:middle}.\[\&_svg\]\:\!text-red-600 svg{--tw-text-opacity:1!important;color:rgba(220,38,38,var(--tw-text-opacity,1))!important}.hover\:\[\&_svg\]\:\!text-red-800 svg:hover{--tw-text-opacity:1!important;color:rgba(153,27,27,var(--tw-text-opacity,1))!important}.\[\&_svg_path\]\:\!fill-current svg path{fill:currentColor!important}.\[\&_tr\:last-child\]\:border-b-0 tr:last-child,.\[\&_tr\:last-child_td\]\:border-b-0 tr:last-child td{border-bottom-width:0}.\[\&_tr\]\:table tr{display:table}.\[\&_tr\]\:w-full tr{width:100%}.\[\&_tr\]\:table-fixed tr{table-layout:fixed}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}
|
|
@@ -1 +0,0 @@
|
|
|
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})]})}}]);
|
|
@@ -1 +0,0 @@
|
|
|
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})}}]);
|