0&&n.push({type:`text`,value:`
+`}),n}function NN(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function PN(e,t){let n=ON(e,t),r=n.one(e,void 0),i=pN(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:`
+`},i)),a}function FN(e,t){return e&&`run`in e?async function(n,r){let i=PN(n,{file:r,...t});await e.run(i,r)}:function(n,r){return PN(n,{file:r,...e||t})}}function IN(e){if(e)throw e}var LN=n(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=function(e){return typeof Array.isArray==`function`?Array.isArray(e):r.call(e)===`[object Array]`},s=function(e){if(!e||r.call(e)!==`[object Object]`)return!1;var t=n.call(e,`constructor`),i=e.constructor&&e.constructor.prototype&&n.call(e.constructor.prototype,`isPrototypeOf`);if(e.constructor&&!t&&!i)return!1;for(var a in e);return a===void 0||n.call(e,a)},c=function(e,t){i&&t.name===`__proto__`?i(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if(t===`__proto__`){if(!n.call(e,t))return;if(a)return a(e,t).value}return e[t]};t.exports=function e(){var t,n,r,i,a,u,d=arguments[0],f=1,p=arguments.length,m=!1;for(typeof d==`boolean`&&(m=d,d=arguments[1]||{},f=2),(d==null||typeof d!=`object`&&typeof d!=`function`)&&(d={});ft.length,o;r&&t.push(i);try{o=e.apply(this,t)}catch(e){let t=e;if(r&&n)throw t;return i(t)}r||(o&&o.then&&typeof o.then==`function`?o.then(a,i):o instanceof Error?i(o):a(o))}function i(e,...r){n||(n=!0,t(e,...r))}function a(e){i(null,e)}}var VN={basename:HN,dirname:UN,extname:WN,join:GN,sep:`/`};function HN(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);JN(e);let n=0,r=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else r<0&&(a=!0,r=i+1);return r<0?``:e.slice(n,r)}if(t===e)return``;let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){n=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(r=i):(s=-1,r=o));return n===r?r=o:r<0&&(r=e.length),e.slice(n,r)}function UN(e){if(JN(e),e.length===0)return`.`;let t=-1,n=e.length,r;for(;--n;)if(e.codePointAt(n)===47){if(r){t=n;break}}else r||=!0;return t<0?e.codePointAt(0)===47?`/`:`.`:t===1&&e.codePointAt(0)===47?`//`:e.slice(0,t)}function WN(e){JN(e);let t=e.length,n=-1,r=0,i=-1,a=0,o;for(;t--;){let s=e.codePointAt(t);if(s===47){if(o){r=t+1;break}continue}n<0&&(o=!0,n=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||n<0||a===0||a===1&&i===n-1&&i===r+1?``:e.slice(i,n)}function GN(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function qN(e,t){let n=``,r=0,i=-1,a=0,o=-1,s,c;for(;++o<=e.length;){if(o2){if(c=n.lastIndexOf(`/`),c!==n.length-1){c<0?(n=``,r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf(`/`)),i=o,a=0;continue}}else if(n.length>0){n=``,r=0,i=o,a=0;continue}}t&&(n=n.length>0?n+`/..`:`..`,r=2)}else n.length>0?n+=`/`+e.slice(i+1,o):n=e.slice(i+1,o),r=o-i-1}i=o,a=0}else s===46&&a>-1?a++:a=-1}return n}function JN(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var YN={cwd:XN};function XN(){return`/`}function ZN(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function QN(e){if(typeof e==`string`)e=new URL(e);else if(!ZN(e)){let t=TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code=`ERR_INVALID_ARG_TYPE`,t}if(e.protocol!==`file:`){let e=TypeError(`The URL must be of scheme file`);throw e.code=`ERR_INVALID_URL_SCHEME`,e}return $N(e)}function $N(e){if(e.hostname!==``){let e=TypeError(`File URL host must be "localhost" or empty on darwin`);throw e.code=`ERR_INVALID_FILE_URL_HOST`,e}let t=e.pathname,n=-1;for(;++n0){let[r,...a]=t,o=n[i][1];RN(o)&&RN(r)&&(r=(0,sP.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function uP(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function dP(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function fP(e,t){if(t)throw Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function pP(e){if(!RN(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function mP(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function hP(e){return gP(e)?e:new tP(e)}function gP(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function _P(e){return typeof e==`string`||vP(e)}function vP(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var yP=[],bP={allowDangerousHtml:!0},xP=/^(https?|ircs?|mailto|xmpp)$/i,SP=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function CP(e){let t=wP(e),n=TP(e);return EP(t.runSync(t.parse(n),n),e)}function wP(e){let t=e.rehypePlugins||yP,n=e.remarkPlugins||yP,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...bP}:bP;return lP().use(bM).use(n).use(FN,r).use(t)}function TP(e){let t=e.children||``,n=new tP;return typeof t==`string`?n.value=t:``+t,n}function EP(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||DP;for(let e of SP)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return TN(e,l),XO(e,{Fragment:G.Fragment,components:i,ignoreInvalidStyle:!0,jsx:G.jsx,jsxs:G.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in vk)if(Object.hasOwn(vk,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=vk[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function DP(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||xP.test(e.slice(0,t))?e:``}function OP(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}function kP(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function AP(e,t,n){let r=mN((n||{}).ignore||[]),i=jP(t),a=-1;for(;++a0?{type:`text`,value:a}:void 0),a===!1?r.lastIndex=n+1:(s!==n&&u.push({type:`text`,value:e.value.slice(s,n)}),Array.isArray(a)?u.push(...a):a&&u.push(a),s=n+d[0].length,l=!0),!r.global)break;d=r.exec(e.value)}return l?(s?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let n=t[0],r=n.indexOf(`)`),i=OP(e,`(`),a=OP(e,`)`);for(;r!==-1&&i>a;)e+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(`)`),a++;return[e,n]}function YP(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||Gk(n)||Wk(n))&&(!t||n!==47)}aF.peek=iF;function XP(){this.buffer()}function ZP(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function QP(){this.buffer()}function $P(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function eF(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Nk(this.sliceSerialize(e)).toLowerCase(),n.label=t}function tF(e){this.exit(e)}function nF(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Nk(this.sliceSerialize(e)).toLowerCase(),n.label=t}function rF(e){this.exit(e)}function iF(){return`[`}function aF(e,t,n,r){let i=n.createTracker(r),a=i.move(`[^`),o=n.enter(`footnoteReference`),s=n.enter(`reference`);return a+=i.move(n.safe(n.associationId(e),{after:`]`,before:a})),s(),o(),a+=i.move(`]`),a}function oF(){return{enter:{gfmFootnoteCallString:XP,gfmFootnoteCall:ZP,gfmFootnoteDefinitionLabelString:QP,gfmFootnoteDefinition:$P},exit:{gfmFootnoteCallString:eF,gfmFootnoteCall:tF,gfmFootnoteDefinitionLabelString:nF,gfmFootnoteDefinition:rF}}}function sF(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:aF},unsafe:[{character:`[`,inConstruct:[`label`,`phrasing`,`reference`]}]};function n(e,n,r,i){let a=r.createTracker(i),o=a.move(`[^`),s=r.enter(`footnoteDefinition`),c=r.enter(`label`);return o+=a.move(r.safe(r.associationId(e),{before:o,after:`]`})),c(),o+=a.move(`]:`),e.children&&e.children.length>0&&(a.shift(4),o+=a.move((t?`
+`:` `)+r.indentLines(r.containerFlow(e,a.current()),t?lF:cF))),s(),o}}function cF(e,t,n){return t===0?e:lF(e,t,n)}function lF(e,t,n){return(n?``:` `)+e}var uF=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];hF.peek=gF;function dF(){return{canContainEols:[`delete`],enter:{strikethrough:pF},exit:{strikethrough:mF}}}function fF(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:uF}],handlers:{delete:hF}}}function pF(e){this.enter({type:`delete`,children:[]},e)}function mF(e){this.exit(e)}function hF(e,t,n,r){let i=n.createTracker(r),a=n.enter(`strikethrough`),o=i.move(`~~`);return o+=n.containerPhrasing(e,{...i.current(),before:o,after:`~`}),o+=i.move(`~~`),a(),o}function gF(){return`~`}function _F(e){return e.length}function vF(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||_F,a=[],o=[],s=[],c=[],l=0,u=-1;for(;++ul&&(l=e[u].length);++ac[a])&&(c[a]=e)}t.push(o)}o[u]=t,s[u]=r}let d=-1;if(typeof r==`object`&&`length`in r)for(;++dc[d]&&(c[d]=i),p[d]=i),f[d]=o}o.splice(1,0,f),s.splice(1,0,p),u=-1;let m=[];for(;++u `),a.shift(2);let o=n.indentLines(n.containerFlow(e,a.current()),SF);return i(),o}function SF(e,t,n){return`>`+(n?``:` `)+e}function CF(e,t){return wF(e,t.inConstruct,!0)&&!wF(e,t.notInConstruct,!1)}function wF(e,t,n){if(typeof t==`string`&&(t=[t]),!t||t.length===0)return n;let r=-1;for(;++ro&&(o=a):a=1,i=r+t.length,r=n.indexOf(t,i);return o}function DF(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function OF(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function kF(e,t,n,r){let i=OF(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(DF(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,AF);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(EF(a,i)+1,3)),l=n.enter(`codeFenced`),u=s.move(c);if(e.lang){let t=n.enter(`codeFencedLang${o}`);u+=s.move(n.safe(e.lang,{before:u,after:` `,encode:["`"],...s.current()})),t()}if(e.lang&&e.meta){let t=n.enter(`codeFencedMeta${o}`);u+=s.move(` `),u+=s.move(n.safe(e.meta,{before:u,after:`
+`,encode:["`"],...s.current()})),t()}return u+=s.move(`
+`),a&&(u+=s.move(a+`
+`)),u+=s.move(c),l(),u}function AF(e,t,n){return(n?``:` `)+e}function jF(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function MF(e,t,n,r){let i=jF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`definition`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`[`);return l+=c.move(n.safe(n.associationId(e),{before:l,after:`]`,...c.current()})),l+=c.move(`]: `),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`
+`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),o(),l}function NF(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function PF(e){return``+e.toString(16).toUpperCase()+`;`}function FF(e,t,n){let r=tA(e),i=tA(t);return r===void 0?i===void 0?n===`_`?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}IF.peek=LF;function IF(e,t,n,r){let i=NF(n),a=n.enter(`emphasis`),o=n.createTracker(r),s=o.move(i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=FF(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=PF(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=FF(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+PF(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function LF(e,t,n){return n.options.emphasis||`*`}function RF(e,t){let n=!1;return TN(e,function(e){if(`value`in e&&/\r?\n|\r/.test(e.value)||e.type===`break`)return n=!0,!1}),!!((!e.depth||e.depth<3)&&bk(e)&&(t.options.setext||n))}function zF(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(RF(e,n)){let t=n.enter(`headingSetext`),r=n.enter(`phrasing`),o=n.containerPhrasing(e,{...a.current(),before:`
+`,after:`
+`});return r(),t(),o+`
+`+(i===1?`=`:`-`).repeat(o.length-(Math.max(o.lastIndexOf(`\r`),o.lastIndexOf(`
+`))+1))}let o=`#`.repeat(i),s=n.enter(`headingAtx`),c=n.enter(`phrasing`);a.move(o+` `);let l=n.containerPhrasing(e,{before:`# `,after:`
+`,...a.current()});return/^[\t ]/.test(l)&&(l=PF(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}BF.peek=VF;function BF(e){return e.value||``}function VF(){return`<`}HF.peek=UF;function HF(e,t,n,r){let i=jF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.enter(`image`),s=n.enter(`label`),c=n.createTracker(r),l=c.move(`![`);return l+=c.move(n.safe(e.alt,{before:l,after:`]`,...c.current()})),l+=c.move(`](`),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=n.enter(`destinationLiteral`),l+=c.move(`<`),l+=c.move(n.safe(e.url,{before:l,after:`>`,...c.current()})),l+=c.move(`>`)):(s=n.enter(`destinationRaw`),l+=c.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...c.current()}))),s(),e.title&&(s=n.enter(`title${a}`),l+=c.move(` `+i),l+=c.move(n.safe(e.title,{before:l,after:i,...c.current()})),l+=c.move(i),s()),l+=c.move(`)`),o(),l}function UF(){return`!`}WF.peek=GF;function WF(e,t,n,r){let i=e.referenceType,a=n.enter(`imageReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`![`),l=n.safe(e.alt,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function GF(){return`!`}KF.peek=qF;function KF(e,t,n){let r=e.value||``,i="`",a=-1;for(;RegExp("(^|[^`])"+i+"([^`]|$)").test(r);)i+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=` `+r+` `);++a\u007F]/.test(e.url))}YF.peek=XF;function YF(e,t,n,r){let i=jF(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(JF(e,n)){let t=n.stack;n.stack=[],s=n.enter(`autolink`);let r=o.move(`<`);return r+=o.move(n.containerPhrasing(e,{before:r,after:`>`,...o.current()})),r+=o.move(`>`),s(),n.stack=t,r}s=n.enter(`link`),c=n.enter(`label`);let l=o.move(`[`);return l+=o.move(n.containerPhrasing(e,{before:l,after:`](`,...o.current()})),l+=o.move(`](`),c(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(c=n.enter(`destinationLiteral`),l+=o.move(`<`),l+=o.move(n.safe(e.url,{before:l,after:`>`,...o.current()})),l+=o.move(`>`)):(c=n.enter(`destinationRaw`),l+=o.move(n.safe(e.url,{before:l,after:e.title?` `:`)`,...o.current()}))),c(),e.title&&(c=n.enter(`title${a}`),l+=o.move(` `+i),l+=o.move(n.safe(e.title,{before:l,after:i,...o.current()})),l+=o.move(i),c()),l+=o.move(`)`),s(),l}function XF(e,t,n){return JF(e,n)?`<`:`[`}ZF.peek=QF;function ZF(e,t,n,r){let i=e.referenceType,a=n.enter(`linkReference`),o=n.enter(`label`),s=n.createTracker(r),c=s.move(`[`),l=n.containerPhrasing(e,{before:c,after:`]`,...s.current()});c+=s.move(l+`][`),o();let u=n.stack;n.stack=[],o=n.enter(`reference`);let d=n.safe(n.associationId(e),{before:c,after:`]`,...s.current()});return o(),n.stack=u,a(),i===`full`||!l||l!==d?c+=s.move(d+`]`):i===`shortcut`?c=c.slice(0,-1):c+=s.move(`]`),c}function QF(){return`[`}function $F(e){let t=e.options.bullet||`*`;if(t!==`*`&&t!==`+`&&t!==`-`)throw Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function eI(e){let t=$F(e),n=e.options.bulletOther;if(!n)return t===`*`?`-`:`*`;if(n!==`*`&&n!==`+`&&n!==`-`)throw Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===t)throw Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+n+"`) to be different");return n}function tI(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function nI(e){let t=e.options.rule||`*`;if(t!==`*`&&t!==`-`&&t!==`_`)throw Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function rI(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?tI(n):$F(n),s=e.ordered?o===`.`?`)`:`.`:eI(n),c=t&&n.bulletLastUsed?o===n.bulletLastUsed:!1;if(!e.ordered){let t=e.children?e.children[0]:void 0;if((o===`*`||o===`-`)&&t&&(!t.children||!t.children[0])&&n.stack[n.stack.length-1]===`list`&&n.stack[n.stack.length-2]===`listItem`&&n.stack[n.stack.length-3]===`list`&&n.stack[n.stack.length-4]===`listItem`&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),nI(n)===o&&t){let t=-1;for(;++t-1?t.start:1)+(n.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let o=a.length+1;(i===`tab`||i===`mixed`&&(t&&t.type===`list`&&t.spread||e.spread))&&(o=Math.ceil(o/4)*4);let s=n.createTracker(r);s.move(a+` `.repeat(o-a.length)),s.shift(o);let c=n.enter(`listItem`),l=n.indentLines(n.containerFlow(e,s.current()),u);return c(),l;function u(e,t,n){return t?(n?``:` `.repeat(o))+e:(n?a:a+` `.repeat(o-a.length))+e}}function oI(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var sI=mN([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function cI(e,t,n,r){return(e.children.some(function(e){return sI(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function lI(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}uI.peek=dI;function uI(e,t,n,r){let i=lI(n),a=n.enter(`strong`),o=n.createTracker(r),s=o.move(i+i),c=o.move(n.containerPhrasing(e,{after:i,before:s,...o.current()})),l=c.charCodeAt(0),u=FF(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=PF(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=FF(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+PF(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function dI(e,t,n){return n.options.strong||`*`}function fI(e,t,n,r){return n.safe(e.value,r)}function pI(e){let t=e.options.ruleRepetition||3;if(t<3)throw Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function mI(e,t,n){let r=(nI(n)+(n.options.ruleSpaces?` `:``)).repeat(pI(n));return n.options.ruleSpaces?r.slice(0,-1):r}var hI={blockquote:xF,break:TF,code:kF,definition:MF,emphasis:IF,hardBreak:TF,heading:zF,html:BF,image:HF,imageReference:WF,inlineCode:KF,link:YF,linkReference:ZF,list:rI,listItem:aI,paragraph:oI,root:cI,strong:uI,text:fI,thematicBreak:mI};function gI(){return{enter:{table:_I,tableData:xI,tableHeader:xI,tableRow:yI},exit:{codeText:SI,table:vI,tableData:bI,tableHeader:bI,tableRow:bI}}}function _I(e){let t=e._align;this.enter({type:`table`,align:t.map(function(e){return e===`none`?null:e}),children:[]},e),this.data.inTable=!0}function vI(e){this.exit(e),this.data.inTable=void 0}function yI(e){this.enter({type:`tableRow`,children:[]},e)}function bI(e){this.exit(e)}function xI(e){this.enter({type:`tableCell`,children:[]},e)}function SI(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,CI));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function CI(e,t){return t===`|`?t:e}function wI(e){let t=e||{},n=t.tableCellPadding,r=t.tablePipeAlign,i=t.stringLength,a=n?` `:`|`;return{unsafe:[{character:`\r`,inConstruct:`tableCell`},{character:`
+`,inConstruct:`tableCell`},{atBreak:!0,character:`|`,after:`[ :-]`},{character:`|`,inConstruct:`tableCell`},{atBreak:!0,character:`:`,after:`-`},{atBreak:!0,character:`-`,after:`[:|-]`}],handlers:{inlineCode:f,table:o,tableCell:c,tableRow:s}};function o(e,t,n,r){return l(u(e,n,r),e.align)}function s(e,t,n,r){let i=l([d(e,n,r)]);return i.slice(0,i.indexOf(`
+`))}function c(e,t,n,r){let i=n.enter(`tableCell`),o=n.enter(`phrasing`),s=n.containerPhrasing(e,{...r,before:a,after:a});return o(),i(),s}function l(e,t){return vF(e,{align:t,alignDelimiters:r,padding:n,stringLength:i})}function u(e,t,n){let r=e.children,i=-1,a=[],o=t.enter(`table`);for(;++i0&&!n&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var nL={tokenize:uL,partial:!0};function rL(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:sL,continuation:{tokenize:cL},exit:lL}},text:{91:{name:`gfmFootnoteCall`,tokenize:oL},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:iL,resolveTo:aL}}}}function iL(e,t,n){let r=this,i=r.events.length,a=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),o;for(;i--;){let e=r.events[i][1];if(e.type===`labelImage`){o=e;break}if(e.type===`gfmFootnoteCall`||e.type===`labelLink`||e.type===`label`||e.type===`image`||e.type===`link`)break}return s;function s(i){if(!o||!o._balanced)return n(i);let s=Nk(r.sliceSerialize({start:o.end,end:r.now()}));return s.codePointAt(0)!==94||!a.includes(s.slice(1))?n(i):(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(i),e.exit(`gfmFootnoteCallLabelMarker`),t(i))}}function aL(e,t){let n=e.length;for(;n--;)if(e[n][1].type===`labelImage`&&e[n][0]===`enter`){e[n][1];break}e[n+1][1].type=`data`,e[n+3][1].type=`gfmFootnoteCallLabelMarker`;let r={type:`gfmFootnoteCall`,start:Object.assign({},e[n+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:`gfmFootnoteCallMarker`,start:Object.assign({},e[n+3][1].end),end:Object.assign({},e[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let a={type:`gfmFootnoteCallString`,start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},o={type:`chunkString`,contentType:`string`,start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[n+1],e[n+2],[`enter`,r,t],e[n+3],e[n+4],[`enter`,i,t],[`exit`,i,t],[`enter`,a,t],[`enter`,o,t],[`exit`,o,t],[`exit`,a,t],e[e.length-2],e[e.length-1],[`exit`,r,t]];return e.splice(n,e.length-n+1,...s),e}function oL(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a=0,o;return s;function s(t){return e.enter(`gfmFootnoteCall`),e.enter(`gfmFootnoteCallLabelMarker`),e.consume(t),e.exit(`gfmFootnoteCallLabelMarker`),c}function c(t){return t===94?(e.enter(`gfmFootnoteCallMarker`),e.consume(t),e.exit(`gfmFootnoteCallMarker`),e.enter(`gfmFootnoteCallString`),e.enter(`chunkString`).contentType=`string`,l):n(t)}function l(s){if(a>999||s===93&&!o||s===null||s===91||Hk(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(Nk(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return Hk(s)||(o=!0),a++,e.consume(s),s===92?u:l}function u(t){return t===91||t===92||t===93?(e.consume(t),a++,l):l(t)}}function sL(e,t,n){let r=this,i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]),a,o=0,s;return c;function c(t){return e.enter(`gfmFootnoteDefinition`)._container=!0,e.enter(`gfmFootnoteDefinitionLabel`),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),l}function l(t){return t===94?(e.enter(`gfmFootnoteDefinitionMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionMarker`),e.enter(`gfmFootnoteDefinitionLabelString`),e.enter(`chunkString`).contentType=`string`,u):n(t)}function u(t){if(o>999||t===93&&!s||t===null||t===91||Hk(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=Nk(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return Hk(t)||(s=!0),o++,e.consume(t),t===92?d:u}function d(t){return t===91||t===92||t===93?(e.consume(t),o++,u):u(t)}function f(t){return t===58?(e.enter(`definitionMarker`),e.consume(t),e.exit(`definitionMarker`),i.includes(a)||i.push(a),Jk(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function cL(e,t,n){return e.check(lA,t,e.attempt(nL,t,n))}function lL(e){e.exit(`gfmFootnoteDefinition`)}function uL(e,t,n){let r=this;return Jk(e,i,`gfmFootnoteDefinitionIndent`,5);function i(e){let i=r.events[r.events.length-1];return i&&i[1].type===`gfmFootnoteDefinitionIndent`&&i[2].sliceSerialize(i[1],!0).length===4?t(e):n(e)}}function dL(e){let t=(e||{}).singleTilde,n={name:`strikethrough`,tokenize:i,resolveAll:r};return t??=!0,{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function r(e,t){let n=-1;for(;++n1?r(a):(e.consume(a),o++,c);if(o<2&&!t)return r(a);let l=e.exit(`strikethroughSequenceTemporary`),u=tA(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var fL=class{constructor(){this.map=[]}add(e,t,n){pL(this,e,t,n)}consume(e){if(this.map.sort(function(e,t){return e[0]-t[0]}),this.map.length===0)return;let t=this.map.length,n=[];for(;t>0;)--t,n.push(e.slice(this.map[t][0]+this.map[t][1]),this.map[t][2]),e.length=this.map[t][0];n.push(e.slice()),e.length=0;let r=n.pop();for(;r;){for(let t of r)e.push(t);r=n.pop()}this.map.length=0}};function pL(e,t,n,r){let i=0;if(n!==0||r.length!==0){for(;i-1;){let e=r.events[t][1].type;if(e===`lineEnding`||e===`linePrefix`)t--;else break}let i=t>-1?r.events[t][1].type:null,a=i===`tableHead`||i===`tableRow`?S:c;return a===S&&r.parser.lazy[r.now().line]?n(e):a(e)}function c(t){return e.enter(`tableHead`),e.enter(`tableRow`),l(t)}function l(e){return e===124?u(e):(o=!0,a+=1,u(e))}function u(t){return t===null?n(t):Vk(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):Uk(t)?Jk(e,u,`whitespace`)(t):(a+=1,o&&(o=!1,i+=1),t===124?(e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),o=!0,u):(e.enter(`data`),d(t)))}function d(t){return t===null||t===124||Hk(t)?(e.exit(`data`),u(t)):(e.consume(t),t===92?f:d)}function f(t){return t===92||t===124?(e.consume(t),d):d(t)}function p(t){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(t):(e.enter(`tableDelimiterRow`),o=!1,Uk(t)?Jk(e,m,`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(t):m(t))}function m(t){return t===45||t===58?g(t):t===124?(o=!0,e.enter(`tableCellDivider`),e.consume(t),e.exit(`tableCellDivider`),h):x(t)}function h(t){return Uk(t)?Jk(e,g,`whitespace`)(t):g(t)}function g(t){return t===58?(a+=1,o=!0,e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),_):t===45?(a+=1,_(t)):t===null||Vk(t)?b(t):x(t)}function _(t){return t===45?(e.enter(`tableDelimiterFiller`),v(t)):x(t)}function v(t){return t===45?(e.consume(t),v):t===58?(o=!0,e.exit(`tableDelimiterFiller`),e.enter(`tableDelimiterMarker`),e.consume(t),e.exit(`tableDelimiterMarker`),y):(e.exit(`tableDelimiterFiller`),y(t))}function y(t){return Uk(t)?Jk(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||Vk(n)?!o||i!==a?x(n):(e.exit(`tableDelimiterRow`),e.exit(`tableHead`),t(n)):x(n)}function x(e){return n(e)}function S(t){return e.enter(`tableRow`),C(t)}function C(n){return n===124?(e.enter(`tableCellDivider`),e.consume(n),e.exit(`tableCellDivider`),C):n===null||Vk(n)?(e.exit(`tableRow`),t(n)):Uk(n)?Jk(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||Hk(t)?(e.exit(`data`),C(t)):(e.consume(t),t===92?T:w)}function T(t){return t===92||t===124?(e.consume(t),w):w(t)}}function _L(e,t){let n=-1,r=!0,i=0,a=[0,0,0,0],o=[0,0,0,0],s=!1,c=0,l,u,d,f=new fL;for(;++nn[2]+1){let t=n[2]+1,r=n[3]-n[2]-1;e.add(t,r,[])}}e.add(n[3]+1,0,[[`exit`,o,t]])}return i!==void 0&&(a.end=Object.assign({},bL(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function yL(e,t,n,r,i){let a=[],o=bL(t.events,n);i&&(i.end=Object.assign({},o),a.push([`exit`,i,t])),r.end=Object.assign({},o),a.push([`exit`,r,t]),e.add(n+1,0,a)}function bL(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var xL={name:`tasklistCheck`,tokenize:CL};function SL(){return{text:{91:xL}}}function CL(e,t,n){let r=this;return i;function i(t){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(t):(e.enter(`taskListCheck`),e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),a)}function a(t){return Hk(t)?(e.enter(`taskListCheckValueUnchecked`),e.consume(t),e.exit(`taskListCheckValueUnchecked`),o):t===88||t===120?(e.enter(`taskListCheckValueChecked`),e.consume(t),e.exit(`taskListCheckValueChecked`),o):n(t)}function o(t){return t===93?(e.enter(`taskListCheckMarker`),e.consume(t),e.exit(`taskListCheckMarker`),e.exit(`taskListCheck`),s):n(t)}function s(r){return Vk(r)?t(r):Uk(r)?e.check({tokenize:wL},t,n)(r):n(r)}}function wL(e,t,n){return Jk(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function TL(e){return kk([VI(),rL(),dL(e),hL(),SL()])}var EL={};function DL(e){let t=this,n=e||EL,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(TL(n)),a.push(AI()),o.push(jI(n))}function OL(e){let t=e.match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/);return t?{frontmatter:t[1].trim(),markdown:e.slice(t[0].length)}:{frontmatter:``,markdown:e}}function kL({content:e}){let{frontmatter:t,markdown:n}=OL(e);return(0,G.jsxs)(`div`,{className:`markdown-preview-shell`,children:[t&&(0,G.jsxs)(`details`,{className:`markdown-frontmatter`,children:[(0,G.jsx)(`summary`,{children:`文档元数据`}),(0,G.jsx)(Db,{code:t,language:`yaml`,filename:`frontmatter.yaml`,showLineNumbers:!1,wrap:!0})]}),(0,G.jsx)(`article`,{className:`markdown-preview`,children:(0,G.jsx)(CP,{remarkPlugins:[DL],components:{pre:({children:e})=>(0,G.jsx)(G.Fragment,{children:e}),code:({className:e,children:t,...n})=>{let r=/language-([\w-]+)/.exec(e||``)?.[1];return r?(0,G.jsx)(Db,{code:String(t).replace(/\n$/,``),language:r,showLineNumbers:!1}):(0,G.jsx)(`code`,{className:e,...n,children:t})},table:({children:e,...t})=>(0,G.jsx)(`div`,{className:`markdown-table-scroll`,children:(0,G.jsx)(`table`,{...t,children:e})}),a:({children:e,...t})=>(0,G.jsx)(`a`,{...t,target:`_blank`,rel:`noreferrer noopener`,children:e})},children:n})})]})}function AL(e){let t=Number(e||0);return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:`${(t/1024/1024).toFixed(1)} MiB`}async function jL(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function ML(e){return{bash:`bash`,c:`c`,cpp:`cpp`,css:`css`,go:`go`,h:`c`,html:`markup`,java:`java`,js:`javascript`,json:`json`,jsx:`jsx`,md:`markdown`,mjs:`javascript`,py:`python`,rs:`rust`,sh:`bash`,toml:`toml`,ts:`typescript`,tsx:`tsx`,xml:`markup`,yaml:`yaml`,yml:`yaml`}[e.split(`.`).pop()?.toLowerCase()||``]||`text`}function NL(e){let t={name:``,path:``,directory:!0,children:[]};for(let n of e){let e=n.path.split(`/`).filter(Boolean),r=t;e.forEach((t,i)=>{let a=e.slice(0,i+1).join(`/`),o=ie.name===t&&e.directory===o);s||(s={name:t,path:a,directory:o,file:o?void 0:n,children:[]},r.children.push(s)),r=s})}let n=e=>{e.sort((e,t)=>Number(t.directory)-Number(e.directory)||e.name.localeCompare(t.name)),e.forEach(e=>n(e.children))};return n(t.children),t.children}function PL({files:e,selected:t,onSelect:n}){let r=(0,s.useMemo)(()=>NL(e),[e]),[i,a]=(0,s.useState)(new Set),o=(e,r=0)=>e.map(e=>{let s={"--skill-depth":r};if(e.directory){let t=i.has(e.path);return(0,G.jsxs)(`div`,{role:`none`,children:[(0,G.jsxs)(`button`,{className:`skill-tree-row directory`,type:`button`,role:`treeitem`,style:s,"aria-expanded":!t,onClick:()=>a(t=>{let n=new Set(t);return n.has(e.path)?n.delete(e.path):n.add(e.path),n}),children:[t?(0,G.jsx)(te,{size:13}):(0,G.jsx)(H,{size:13}),(0,G.jsx)(Te,{size:14}),(0,G.jsx)(`span`,{title:e.name,children:e.name})]}),!t&&(0,G.jsx)(`div`,{role:`group`,children:o(e.children,r+1)})]},`dir:${e.path}`)}let c=e.file?.kind===`script`?Se:Ce;return(0,G.jsxs)(`button`,{className:`skill-tree-row file${t===e.path?` active`:``}`,type:`button`,role:`treeitem`,"aria-selected":t===e.path,style:s,onClick:()=>n(e.path),children:[(0,G.jsx)(`span`,{className:`skill-tree-spacer`}),(0,G.jsx)(c,{size:14}),(0,G.jsx)(`span`,{title:e.path,children:e.name})]},`file:${e.path}`)});return(0,G.jsx)(`div`,{className:`skill-file-tree`,role:`tree`,"aria-label":`Skill 文件树`,children:o(r)})}function FL({title:e,endpoint:t,onClose:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(null),[u,d]=(0,s.useState)(!0),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(``),[_,v]=(0,s.useState)(``),y=(0,s.useRef)(0);return(0,s.useEffect)(()=>{let e=new AbortController;return d(!0),h(``),i([]),o(``),l(null),g(t,{signal:e.signal}).then(async e=>{if(!e.ok)throw Error(await jL(e,`Skill 文件读取失败`));return e.json()}).then(e=>{let t=e.files||[];i(t),o(t.find(e=>e.path===`SKILL.md`)?.path||t[0]?.path||``)}).catch(e=>{e?.name!==`AbortError`&&h(e.message||`Skill 文件读取失败`)}).finally(()=>{e.signal.aborted||d(!1)}),()=>e.abort()},[t]),(0,s.useEffect)(()=>{if(!a){l(null),p(!1);return}let e=new AbortController,n=++y.current;return l(null),p(!0),v(``),g(`${t}?${new URLSearchParams({path:a})}`,{signal:e.signal}).then(async e=>{if(!e.ok)throw Error(await jL(e,`Skill 文件读取失败`));return e.json()}).then(e=>{y.current===n&&l(e)}).catch(e=>{e?.name!==`AbortError`&&y.current===n&&v(e.message||`Skill 文件读取失败`)}).finally(()=>{!e.signal.aborted&&y.current===n&&p(!1)}),()=>e.abort()},[t,a]),(0,G.jsx)(BD,{title:`${e} · 文件`,subtitle:`${r.length} 个文件;只读预览,不会执行脚本。`,wide:!0,onClose:n,children:(0,G.jsxs)(`div`,{className:`skill-preview-layout`,children:[(0,G.jsxs)(`aside`,{className:`skill-preview-sidebar`,children:[u&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`正在读取目录…`}),!u&&m&&(0,G.jsx)(VD,{kind:`error`,title:`无法读取 Skill 文件`,message:m}),!u&&!m&&r.length===0&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`Skill 中没有可预览的文件。`}),!u&&!m&&r.length>0&&(0,G.jsx)(PL,{files:r,selected:a,onSelect:o})]}),(0,G.jsxs)(`section`,{className:`skill-preview-pane`,"aria-live":`polite`,children:[(c||a)&&(0,G.jsxs)(`header`,{className:`skill-preview-header`,children:[(0,G.jsx)(`strong`,{title:c?.path||a,children:c?.path||a}),c&&(0,G.jsxs)(`span`,{children:[c.kind,` · `,AL(c.size||0)]})]}),(0,G.jsxs)(`div`,{className:`skill-preview-content`,children:[f&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`正在读取文件…`}),!f&&_&&(0,G.jsx)(VD,{kind:`error`,title:`无法预览文件`,message:_}),!f&&!_&&c?.kind===`markdown`&&(0,G.jsx)(kL,{content:c.content||``}),!f&&!_&&[`script`,`text`].includes(c?.kind||``)&&(0,G.jsx)(Db,{code:c?.content||``,language:ML(c?.path||a),filename:c?.path||a,showLineNumbers:!0}),!f&&!_&&c?.kind===`binary`&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`二进制文件不提供内容预览。`}),!f&&!_&&!c&&!a&&(0,G.jsx)(`div`,{className:`skill-file-state`,children:`选择一个文件查看内容。`})]}),c?.truncated&&(0,G.jsx)(`div`,{className:`skill-preview-truncated`,children:`文件较大,仅显示前 512 KiB。`})]})]})})}var IL=new Map([[`avif`,`image/avif`],[`bmp`,`image/bmp`],[`css`,`text/css`],[`csv`,`text/csv`],[`doc`,`application/msword`],[`docx`,`application/vnd.openxmlformats-officedocument.wordprocessingml.document`],[`gif`,`image/gif`],[`gz`,`application/gzip`],[`htm`,`text/html`],[`html`,`text/html`],[`ico`,`image/x-icon`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`js`,`application/javascript`],[`json`,`application/json`],[`md`,`text/markdown`],[`mjs`,`application/javascript`],[`mp3`,`audio/mpeg`],[`mp4`,`video/mp4`],[`ogg`,`audio/ogg`],[`pdf`,`application/pdf`],[`png`,`image/png`],[`ppt`,`application/powerpoint`],[`pptx`,`application/vnd.openxmlformats-officedocument.presentationml.presentation`],[`svg`,`image/svg+xml`],[`tif`,`image/tiff`],[`tiff`,`image/tiff`],[`txt`,`text/plain`],[`wasm`,`application/wasm`],[`wav`,`audio/x-wav`],[`weba`,`audio/webm`],[`webm`,`video/webm`],[`webp`,`image/webp`],[`xls`,`application/vnd.ms-excel`],[`xlsx`,`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`],[`xml`,`application/xml`],[`zip`,`application/zip`]]),LL=class extends Error{constructor(e){super(`DataTransferItem is not a file`),this.item=e,this.name=`UnexpectedObjectError`}};function RL(e,t,n){let r=e,{webkitRelativePath:i}=e,a=typeof t==`string`?t:typeof i==`string`&&i.length>0?i:`./${e.name}`;return typeof r.path!=`string`&&BL(r,`path`,a),n!==void 0&&Object.defineProperty(r,"handle",{value:n,writable:!1,configurable:!1,enumerable:!0}),BL(r,`relativePath`,a),r}function zL(e,t=IL){let{name:n}=e;if(n&&n.lastIndexOf(`.`)!==-1&&!e.type){let r=n.split(`.`).pop().toLowerCase(),i=t.get(r);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}function BL(e,t,n){Object.defineProperty(e,t,{value:n,writable:!1,configurable:!1,enumerable:!0})}var VL=[`.DS_Store`,`Thumbs.db`];async function HL(e,{mimeTypes:t=IL}={}){return(await UL(e)).map(e=>e instanceof File?zL(e,t):e)}async function UL(e){return qL(e)&&WL(e.dataTransfer)?XL(e.dataTransfer,e.type):GL(e)?ZL(e.clipboardData):KL(e)?JL(e):Array.isArray(e)&&e.every(e=>`getFile`in e&&typeof e.getFile==`function`)?YL(e):[]}function WL(e){return qL(e)}function GL(e){return qL(e)&&WL(e.clipboardData)}function KL(e){return qL(e)&&qL(e.target)}function qL(e){return typeof e==`object`&&!!e}function JL(e){return $L(e.target.files).map(e=>RL(e))}async function YL(e){return(await Promise.all(e.map(e=>e.getFile()))).map(e=>RL(e))}async function XL(e,t){let n=$L(e.items).filter(e=>e.kind===`file`);return t===`drop`?QL(tR(await Promise.all(n.map(eR)))):n}function ZL(e){let t=$L(e.items).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>e!==null);return QL((t.length>0?t:$L(e.files)).map(e=>RL(e)))}function QL(e){return e.filter(e=>VL.indexOf(e.name)===-1)}function $L(e){return e===null?[]:Array.from(e)}async function eR(e){if(typeof e.webkitGetAsEntry!=`function`)return nR(e);let t=e.webkitGetAsEntry();if(t?.isDirectory){let n=await rR(e);return n?.kind===`directory`?iR(n,`/${n.name}`):oR(t)}return nR(e,t)}function tR(e){let t=[];for(let n of e)Array.isArray(n)?t.push(...tR(n)):t.push(n);return t}async function nR(e,t){let n=e.getAsFile(),r=await rR(e);if(r!=null){let e=n??await r.getFile();return e.handle=r,RL(e)}if(!n)throw new LL(e);return RL(n,t?.fullPath??void 0)}async function rR(e){if(globalThis.isSecureContext&&typeof e.getAsFileSystemHandle==`function`)return e.getAsFileSystemHandle()}async function iR(e,t){let n=[];for await(let r of e.values()){let e=`${t}/${r.name}`;if(r.kind===`directory`)n.push(...await iR(r,e));else{let t=await r.getFile();n.push(RL(t,e,r))}}return n}async function aR(e){return e.isDirectory?oR(e):sR(e)}function oR(e){let t=e.createReader();return new Promise((e,n)=>{let r=[];function i(){t.readEntries(async t=>{if(t.length){let e=Promise.all(t.map(aR));r.push(e),i()}else try{e(await Promise.all(r))}catch(e){n(e)}},e=>{n(e)})}i()})}async function sR(e){return new Promise((t,n)=>{e.file(n=>{t(RL(n,e.fullPath))},e=>{n(e)})})}var cR=t(n((e=>{e.__esModule=!0,e.default=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(`,`);if(n.length===0)return!0;var r=e.name||``,i=(e.type||``).toLowerCase(),a=i.replace(/\/.*$/,``);return n.some(function(e){var t=e.trim().toLowerCase();return t.charAt(0)===`.`?r.toLowerCase().endsWith(t):t.endsWith(`/*`)?a===t.replace(/\/.*$/,``):i===t})}return!0}}))(),1),lR=typeof cR.default==`function`?cR.default:cR.default.default,uR=`file-invalid-type`,dR=`file-too-large`,fR=`file-too-small`,pR=`too-many-files`;function mR(e=``){let t=e.split(`,`);return{code:uR,message:`File type must be ${t.length>1?`one of ${t.join(`, `)}`:t[0]}`}}var hR=[`KB`,`MB`,`GB`,`TB`,`PB`];function gR(e){if(e<1024)return`${e} ${e===1?`byte`:`bytes`}`;let t=e/1024,n=0;for(;t>=1024&&nn)return[!1,_R(n)];if(e.sizen)return[!1,_R(n)]}return[!0,null]}function CR(e){return e!=null}function wR(e){return e!=null&&typeof e.then==`function`}function TR({files:e,accept:t,minSize:n,maxSize:r,multiple:i,maxFiles:a=0,validator:o,getErrorMessage:s}){let c=[],l=[],u=(e,t)=>s&&typeof File<`u`&&t instanceof File?{...e,message:s(e,t)}:e;e.forEach(e=>{let[i,a]=xR(e,t),[o,s]=SR(e,n,r);i&&o?c.push(e):l.push({file:e,errors:[a,s].filter(e=>e!=null).map(t=>u(t,e))})});let d=i?a>=1?a:1/0:1;return c.length>d&&c.slice(d).forEach(e=>{l.push({file:e,errors:[u(yR,e)]})}),l.length>0?{verdict:`reject`,rejections:l}:{verdict:o?`unknown`:`accept`,rejections:l}}function ER(e){return typeof e.isPropagationStopped==`function`?e.isPropagationStopped():e.cancelBubble!==void 0&&e.cancelBubble}function DR(e){let t=e.dataTransfer??e.clipboardData;return t?Array.prototype.some.call(t.types,e=>e===`Files`||e===`application/x-moz-file`)||Array.prototype.some.call(t.items??[],OR):!!e.target&&!!e.target.files}function OR(e){return typeof e==`object`&&!!e&&e.kind===`file`}function kR(e){e.preventDefault()}function AR(e){return e.indexOf(`MSIE`)!==-1||e.indexOf(`Trident/`)!==-1}function jR(e){return e.indexOf(`Edge/`)!==-1}function MR(e=window.navigator.userAgent){return AR(e)||jR(e)}function NR(...e){return(t,...n)=>e.some(e=>(!ER(t)&&e&&e(t,...n),ER(t)))}function PR(){return`showOpenFilePicker`in window}function FR(e){return Array.isArray(e)?e:typeof e==`string`?[e]:[]}function IR(e){if(CR(e))return Array.isArray(e)?e.filter(e=>CR(e)&&CR(e.accept)):[{accept:e}]}function LR(e){let t=[],n=Object.keys(e);for(let n of Object.values(e))for(let e of FR(n))t.includes(e)||t.push(e);return t.length>0?t.join(`, `):n.length>0?n.join(`, `):`Files`}function RR(e){let t=IR(e);if(!CR(t))return;let n={};for(let e of t)for(let[t,r]of Object.entries(e.accept)){let e=n[t]??(n[t]=[]);for(let t of FR(r))e.includes(t)||e.push(t)}return n}function zR(e){let t=IR(e);if(!CR(t))return;let n=t.map(e=>{let t=Object.entries(e.accept).filter(([e,t])=>{let n=!0;return WR(e)||(console.warn(`Skipped "${e}" because it is not a valid MIME type. Check https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types for a list of valid MIME types.`),n=!1),(!(Array.isArray(t)||typeof t==`string`)||!FR(t).every(KR))&&(console.warn(`Skipped "${e}" because an invalid file extension was provided.`),n=!1),n}).reduce((e,[t,n])=>(e[t]=FR(n),e),{});return{description:CR(e.description)&&e.description!==``?e.description:LR(t),accept:t}}).filter(e=>Object.keys(e.accept).length>0);return n.length>0?n:void 0}function BR(e,{omitWildcardMimeTypesWithExtensions:t=!1}={}){if(CR(e))return Object.entries(e).reduce((e,[n,r])=>{let i=FR(r);return t&&GR(n)&&i.some(KR)?e.push(...i):e.push(n,...i),e},[]).filter(e=>WR(e)||KR(e)).join(`,`)}function VR(e){return e instanceof DOMException&&(e.name===`AbortError`||e.code===e.ABORT_ERR)}function HR(e){return e instanceof DOMException&&(e.name===`SecurityError`||e.code===e.SECURITY_ERR)}function UR(e){return e instanceof DOMException&&e.name===`NotAllowedError`}function WR(e){return e===`audio/*`||e===`video/*`||e===`image/*`||e===`text/*`||e===`application/*`||/\w+\/[-+.\w]+/g.test(e)}function GR(e){return e.endsWith(`/*`)}function KR(e){return/^.*\.[\w]+$/.test(e)}var qR=(0,s.forwardRef)(({children:e,...t},n)=>{let{open:r,...i}=YR(t);return(0,s.useImperativeHandle)(n,()=>({open:r}),[r]),(0,G.jsx)(G.Fragment,{children:e?.({...i,open:r})})});qR.displayName=`Dropzone`;var JR={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,isDragGlobal:!1,isProcessing:!1,acceptedFiles:[],fileRejections:[],dragFileRejections:[]};function YR(e={}){let{accept:t,disabled:n=!1,getFilesFromEvent:r=HL,maxSize:i=1/0,minSize:a=0,multiple:o=!0,maxFiles:c=0,onDragEnter:l,onDragLeave:u,onDragOver:d,onDrop:f,onDropAccepted:p,onDropRejected:m,onFileDialogCancel:h,onFileDialogOpen:g,useFsAccessApi:_=!1,autoFocus:v=!1,preventDropOnDocument:y=!0,noClick:b=!1,noKeyboard:x=!1,noDrag:S=!1,noDragEventsBubbling:C=!1,noPaste:w=!1,onError:T,validator:E,getErrorMessage:D}=e,O=(0,s.useMemo)(()=>RR(t),[t]),k=(0,s.useMemo)(()=>BR(O),[O]),A=(0,s.useMemo)(()=>BR(O,{omitWildcardMimeTypesWithExtensions:!0}),[O]),j=(0,s.useMemo)(()=>zR(t),[t]),M=(0,s.useMemo)(()=>typeof g==`function`?g:ZR,[g]),N=(0,s.useMemo)(()=>typeof h==`function`?h:ZR,[h]),P=(0,s.useRef)(null),F=(0,s.useRef)(null),[I,L]=(0,s.useReducer)(XR,JR),{isFocused:R,isFileDialogActive:z}=I,B=(0,s.useRef)(z);B.current=z;let V=(0,s.useRef)(null),H=(0,s.useCallback)(()=>{V.current?.abort();let e=new AbortController;return V.current=e,L({type:`setProcessing`,isProcessing:!0}),e.signal},[]),ee=(0,s.useCallback)(e=>{e.aborted||L({type:`setProcessing`,isProcessing:!1})},[]),te=(0,s.useRef)(typeof window<`u`&&window.isSecureContext&&_&&PR()),ne=()=>{!te.current&&z&&setTimeout(()=>{if(F.current){let{files:e}=F.current;e?.length||(L({type:`closeDialog`}),N())}},300)};(0,s.useEffect)(()=>(window.addEventListener(`focus`,ne,!1),()=>{window.removeEventListener(`focus`,ne,!1)}),[F,z,N,te]);let U=(0,s.useRef)([]),re=(0,s.useRef)([]),ie=e=>{P.current&&e.target&&P.current.contains(e.target)&&e.defaultPrevented||(e.preventDefault(),U.current=[])};(0,s.useEffect)(()=>(y&&(document.addEventListener(`dragover`,kR,!1),document.addEventListener(`drop`,ie,!1)),()=>{y&&(document.removeEventListener(`dragover`,kR),document.removeEventListener(`drop`,ie))}),[P,y]),(0,s.useEffect)(()=>{let e=e=>{e.target&&(re.current=[...re.current,e.target]),DR(e)&&L({isDragGlobal:!0,type:`setDragGlobal`})},t=e=>{re.current=re.current.filter(t=>t!==e.target&&t!==null),!(re.current.length>0)&&L({isDragGlobal:!1,type:`setDragGlobal`})},n=()=>{re.current=[],L({isDragGlobal:!1,type:`setDragGlobal`})},r=()=>{re.current=[],L({isDragGlobal:!1,type:`setDragGlobal`})};return document.addEventListener(`dragenter`,e,!1),document.addEventListener(`dragleave`,t,!1),document.addEventListener(`dragend`,n,!1),document.addEventListener(`drop`,r,!1),()=>{document.removeEventListener(`dragenter`,e),document.removeEventListener(`dragleave`,t),document.removeEventListener(`dragend`,n),document.removeEventListener(`drop`,r)}},[P]),(0,s.useEffect)(()=>(!n&&v&&P.current&&P.current.focus(),()=>{}),[P,v,n]);let ae=(0,s.useCallback)(e=>{T?T(e):console.error(e)},[T]),oe=(0,s.useCallback)(e=>{e.preventDefault(),e.persist?.(),be(e),!B.current&&(U.current=[...U.current,e.target],DR(e)&&Promise.resolve(r(e)).then(t=>{if(ER(e)&&!C)return;let n=t.length>0?TR({files:t,accept:k,minSize:a,maxSize:i,multiple:o,maxFiles:c,validator:E,getErrorMessage:D}):null;L({isDragAccept:n?.verdict===`accept`,isDragReject:n?.verdict===`reject`,isDragUnknown:n?.verdict===`unknown`,isDragActive:!0,dragFileRejections:n?.rejections??[],type:`setDraggedFiles`}),l&&l(e)}).catch(e=>ae(e)))},[r,l,ae,C,k,a,i,o,c,E,D]),se=(0,s.useCallback)(e=>{if(e.preventDefault(),e.persist?.(),be(e),B.current)return!1;let t=DR(e);if(t&&e.dataTransfer)try{e.dataTransfer.dropEffect=`copy`}catch{}return t&&d&&d(e),!1},[d,C]),ce=(0,s.useCallback)(e=>{e.preventDefault(),e.persist?.(),be(e);let t=U.current.filter(e=>P.current?.contains(e)),n=t.indexOf(e.target);n!==-1&&t.splice(n,1),U.current=t,!(t.length>0)&&(L({type:`setDraggedFiles`,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,dragFileRejections:[]}),DR(e)&&u&&u(e))},[P,u,C]),le=(0,s.useCallback)(async(e,t,n)=>{let r=(e,t)=>D?{...e,message:D(e,t)}:e,s=e=>{let n=[],i=[];e.forEach(({file:e,accepted:t,acceptError:a,sizeMatch:o,sizeError:s,customErrors:c})=>{if(t&&o&&!c)n.push(e);else{let t=[a,s];c&&(t=t.concat(c)),i.push({file:e,errors:t.filter(e=>e!=null).map(t=>r(t,e))})}});let a=o?c>=1?c:1/0:1;n.length>a&&n.splice(a).forEach(e=>{i.push({file:e,errors:[r(yR,e)]})}),L({acceptedFiles:n,fileRejections:i,type:`setFiles`}),f&&f(n,i,t),i.length>0&&m&&m(i,t),n.length>0&&p&&p(n,t)},l=e.map(e=>{let[t,n]=xR(e,A),[r,o]=SR(e,a,i);return{file:e,accepted:t,acceptError:n,sizeMatch:r,sizeError:o,customErrors:E?E(e):null}});if(!l.some(({customErrors:e})=>wR(e))){s(l);return}let u;try{u=await Promise.all(l.map(async({customErrors:e,...t})=>({...t,customErrors:await e})))}catch(e){n.aborted||(ee(n),ae(e));return}n.aborted||s(u)},[L,o,A,a,i,c,f,p,m,E,D,ae,ee]),ue=(0,s.useCallback)(e=>{if(e.preventDefault(),e.persist?.(),be(e),U.current=[],!(B.current&&e.dataTransfer)&&(L({type:`reset`}),DR(e))){let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(ER(e)&&!C){ee(t);return}return le(n,e,t)}}).catch(e=>{t.aborted||(ee(t),ae(e))})}},[r,le,ae,C,H,ee]),de=(0,s.useCallback)(e=>{if(!DR(e))return;e.preventDefault(),e.persist?.(),be(e);let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(ER(e)&&!C){ee(t);return}return le(n,e,t)}}).catch(e=>{t.aborted||(ee(t),ae(e))})},[r,le,ae,C,H,ee]),W=(0,s.useCallback)(()=>{if(te.current){L({type:`openDialog`}),M();let e={multiple:o,types:j},t;window.showOpenFilePicker(e).then(e=>(t=H(),r(e))).then(e=>{if(L({type:`closeDialog`}),!t.aborted)return le(e,null,t)}).catch(e=>{t&&ee(t),VR(e)?(N(e),L({type:`closeDialog`})):HR(e)||UR(e)?(te.current=!1,F.current?(F.current.value=``,F.current.click()):ae(Error(`Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided.`))):ae(e)});return}F.current&&(L({type:`openDialog`}),M(),F.current.value=``,F.current.click())},[L,M,N,_,le,ae,j,o,H,ee]),fe=(0,s.useCallback)(e=>{P.current?.isEqualNode(e.target)&&(e.key===` `||e.key===`Enter`||e.keyCode===32||e.keyCode===13)&&(e.preventDefault(),W())},[P,W]),pe=(0,s.useCallback)(()=>{L({type:`focus`})},[]),me=(0,s.useCallback)(()=>{L({type:`blur`})},[]),he=(0,s.useCallback)(()=>{b||(MR()?setTimeout(W,0):W())},[b,W]),ge=e=>n?null:e,_e=e=>x?null:ge(e),ve=e=>S?null:ge(e),ye=e=>w?null:ge(e),be=e=>{C&&e.stopPropagation()},xe=(0,s.useMemo)(()=>({refKey:e=`ref`,role:t,onKeyDown:r,onFocus:i,onBlur:a,onClick:o,onDragEnter:s,onDragOver:c,onDragLeave:l,onDrop:u,onPaste:d,...f}={})=>({onKeyDown:_e(NR(r,fe)),onFocus:_e(NR(i,pe)),onBlur:_e(NR(a,me)),onClick:ge(NR(o,he)),onDragEnter:ve(NR(s,oe)),onDragOver:ve(NR(c,se)),onDragLeave:ve(NR(l,ce)),onDrop:ve(NR(u,ue)),onPaste:ye(NR(d,de)),role:typeof t==`string`&&t!==``?t:`presentation`,[e]:P,...!n&&!x?{tabIndex:0}:{},...n?{"aria-disabled":!0}:{},...f}),[P,fe,pe,me,he,oe,se,ce,ue,de,x,S,w,n]),Se=(0,s.useCallback)(e=>{e.stopPropagation()},[]),Ce=(0,s.useMemo)(()=>({refKey:e=`ref`,onChange:t,onClick:n,...r}={})=>({accept:A,multiple:o,type:`file`,"aria-label":`file upload`,style:{border:0,display:`block`,height:0,margin:0,opacity:0,overflow:`hidden`,padding:0,width:0},onChange:ge(NR(t,ue)),onClick:ge(NR(n,Se)),tabIndex:-1,[e]:F,...r}),[F,t,o,ue,n]);return{...I,isFocused:R&&!n,getRootProps:xe,getInputProps:Ce,rootRef:P,inputRef:F,open:ge(W)}}function XR(e,t){switch(t.type){case`focus`:return{...e,isFocused:!0};case`blur`:return{...e,isFocused:!1};case`openDialog`:return{...JR,isFileDialogActive:!0};case`closeDialog`:return{...e,isFileDialogActive:!1};case`setDraggedFiles`:return{...e,isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject,isDragUnknown:t.isDragUnknown,dragFileRejections:t.dragFileRejections};case`setProcessing`:return{...e,isProcessing:t.isProcessing};case`setFiles`:return{...e,acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections,dragFileRejections:[],isProcessing:!1,isDragReject:!1,isDragUnknown:!1};case`setDragGlobal`:return{...e,isDragGlobal:t.isDragGlobal};case`reset`:return{...JR};default:return e}}function ZR(){}function QR(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(+(e<10240))} KiB`:`${(e/1048576).toFixed(1)} MiB`}function $R(e){let t=e.errors[0]?.code;return t===`file-invalid-type`?`文件类型不受支持,请重新选择。`:t===`file-too-large`?`文件超过允许大小,请重新选择。`:t===`too-many-files`?`一次只能选择一个文件。`:e.errors[0]?.message||`文件无法读取,请重新选择。`}function ez({accept:e,maxSize:t,file:n,onFile:r,onError:i,ariaLabel:a=`选择文件`,hint:o=`拖放文件到这里,或点击选择`}){let{getRootProps:s,getInputProps:c,isDragActive:l,isDragReject:u,open:d}=YR({accept:e,maxSize:t,multiple:!1,noClick:!!n,onDropAccepted:e=>{i(``),r(e[0]||null)},onDropRejected:e=>{r(null),i($R(e[0]))}});return(0,G.jsxs)(`div`,{...s({className:`studio-file-dropzone${l?` dragging`:``}${u?` rejected`:``}${n?` has-file`:``}`}),children:[(0,G.jsx)(`input`,{...c({"aria-label":a})}),n?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`studio-file-icon`,children:(0,G.jsx)(Se,{size:20})}),(0,G.jsxs)(`span`,{className:`studio-file-copy`,children:[(0,G.jsx)(`strong`,{title:n.name,children:n.name}),(0,G.jsxs)(`small`,{children:[QR(n.size),` · 已准备检查`]})]}),(0,G.jsxs)(`span`,{className:`studio-file-actions`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`替换 ${n.name}`,title:`替换文件`,onClick:e=>{e.stopPropagation(),d()},children:(0,G.jsx)(et,{size:14})}),(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`移除 ${n.name}`,title:`移除文件`,onClick:e=>{e.stopPropagation(),r(null)},children:(0,G.jsx)(bt,{size:15})})]})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`studio-file-icon`,children:(0,G.jsx)(we,{size:20})}),(0,G.jsxs)(`span`,{className:`studio-file-copy`,children:[(0,G.jsx)(`strong`,{children:l?`松开即可选择`:o}),(0,G.jsx)(`small`,{children:`文件只会先做只读检查,确认后才写入 Catalog。`})]})]})]})}var tz=`def query_order(
+ order_id: str,
+ include_history: bool = False,
+) -> dict[str, object]:
+ """查询订单状态,并按需返回流转记录。"""
+ result: dict[str, object] = {
+ "order_id": order_id,
+ "status": "processing",
+ }
+ if include_history:
+ result["history"] = ["created", "paid"]
+ return result
+`;function nz(){let[e,t]=(0,s.useState)(!1),n=(0,s.useId)();return(0,G.jsxs)(`section`,{className:`python-tool-example`,"aria-label":`Python Tool 编写帮助`,children:[(0,G.jsxs)(`button`,{className:`python-tool-example-trigger`,type:`button`,"aria-label":e?`收起编写示例`:`查看编写示例`,"aria-expanded":e,"aria-controls":n,onClick:()=>t(e=>!e),children:[(0,G.jsx)(M,{size:17,"aria-hidden":`true`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`Python Tool 怎么写?`}),(0,G.jsx)(`small`,{children:`查看可复制的函数样例与约定`})]}),(0,G.jsx)(H,{className:`python-tool-example-chevron`,size:17,"aria-hidden":`true`})]}),e&&(0,G.jsxs)(`div`,{id:n,className:`python-tool-example-panel`,role:`region`,"aria-label":`Python Tool 编写示例`,children:[(0,G.jsx)(Db,{code:tz,language:`python`,filename:`tool_example.py`,wrap:!0,showLineNumbers:!0}),(0,G.jsxs)(`ul`,{className:`python-tool-example-rules`,children:[(0,G.jsx)(`li`,{children:`公开函数需定义在模块顶层,同步与异步函数均可。`}),(0,G.jsx)(`li`,{children:`建议提供类型注解和 docstring,方便生成清晰的 Tool Contract。`}),(0,G.jsx)(`li`,{children:`返回值应可 JSON 序列化;模块导入阶段不要执行有副作用的逻辑。`})]})]})]})}var rz=eE().trim().min(1,`请填写显示名称`).max(128,`显示名称不能超过 128 个字符`),iz=eE().trim().min(2,`资源标识至少填写 2 个字符`).max(128,`资源标识不能超过 128 个字符`).regex(/^[a-z][a-z0-9._-]*$/,`资源标识只能包含小写字母、数字、点、下划线和连字符`),az=eE().trim().min(1,`请填写 Python 标识`).max(128,`Python 标识不能超过 128 个字符`).regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`请输入有效的 Python 标识`),oz=eE().trim().url(`请输入有效的接口地址`).max(1024,`接口地址不能超过 1024 个字符`),sz=eE().trim().max(512,`凭证引用不能超过 512 个字符`).regex(/^env:\/\/[A-Za-z_][A-Za-z0-9_]*$/,`凭证引用需使用 env://环境变量名`),cz=eE().trim().max(4096,`描述不能超过 4096 个字符`).default(``),lz=PE({name:iz,displayName:rz,model:eE().trim().min(1,`请填写模型 ID`).max(256,`模型 ID 不能超过 256 个字符`),endpointUrl:oz,credentialRef:sz,description:cz.optional(),apiKey:eE().max(16384,`API Key 不能超过 16384 个字符`).default(``),temperature:fD().min(0,`temperature 需在 0-2 之间`).max(2,`temperature 需在 0-2 之间`).default(.2),maxTokens:fD().int(`max_tokens 需为 1-131072 的整数`).min(1,`max_tokens 需为 1-131072 的整数`).max(131072,`max_tokens 需为 1-131072 的整数`).default(2048),addressMode:BE([`endpoint`,`base`]).default(`endpoint`),wireApi:BE([``,`chat`,`responses`]).default(``)}),uz=PE({displayName:rz,name:iz,transport:BE([`stdio`,`sse`,`http`,`streamable-http`]),endpointUrl:eE().trim().max(1024,`Server URL 不能超过 1024 个字符`).default(``),command:eE().trim().max(4096,`Command 不能超过 4096 个字符`).default(``),args:eE().trim().max(8192,`Arguments 不能超过 8192 个字符`).default(``),apiKeyName:IE([HE(``),eE().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`环境变量名需为合法标识符`)]).default(``),apiKeyValue:eE().max(16384,`API Key 不能超过 16384 个字符`).default(``),description:cz}).superRefine((e,t)=>{if(e.transport===`stdio`){e.command||t.addIssue({code:`custom`,path:[`command`],message:`请填写 Command`});return}if(!e.endpointUrl){t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请填写 Server URL`});return}oE().safeParse(e.endpointUrl).success||t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请输入有效的 Server URL`})}),dz=PE({displayName:rz,name:az,callableName:az,description:eE().trim().max(1024,`描述不能超过 1024 个字符`).default(``),sourceMode:BE([`upload`,`workspace`]).default(`upload`),sourcePath:eE().trim().max(4096,`工作区路径不能超过 4096 个字符`).default(``)}).superRefine((e,t)=>{e.sourceMode===`workspace`&&!e.sourcePath&&t.addIssue({code:`custom`,path:[`sourcePath`],message:`请填写工作区 Python 文件`})}),fz=PE({value:eE().max(16384,`API Key 不能超过 16384 个字符`)}),pz=PE({sandbox:BE([`read-only`,`read_only`,`workspace-write`,`workspace-write-auto`,`full-access`]),buildAfterCreate:EE(),codexProxy:BE([`auto`,`forced`,`direct`]),cloudRegion:eE().trim().max(128,`Region 不能超过 128 个字符`).default(``),cloudBucket:eE().trim().max(128,`KS3 Bucket 不能超过 128 个字符`).default(``),cloudAccessKey:eE().trim().max(256,`Access Key 不能超过 256 个字符`).default(``),cloudSecretKey:eE().trim().max(256,`Secret Key 不能超过 256 个字符`).default(``),cloudAccountId:eE().trim().max(128,`Account ID 不能超过 128 个字符`).default(``)});function mz(e){return e.status===`ready`||e.status===`conflict`}function hz(e){return new Set(e.filter(mz).map(e=>e.candidateId))}async function gz({candidates:e,selectedIds:t,overwriteIds:n,commit:r,onResult:i}){let a=e.filter(e=>t.has(e.candidateId)&&mz(e)),o=[];for(let e of a){let t;try{let i=await r(e,n.has(e.candidateId));t={candidateId:e.candidateId,status:`succeeded`,value:i}}catch(n){t={candidateId:e.candidateId,status:`failed`,error:n instanceof Error?n.message:String(n)}}o.push(t),i?.(t,o.length,a.length)}return{results:o,succeededIds:o.filter(e=>e.status===`succeeded`).map(e=>e.candidateId),failedIds:o.filter(e=>e.status===`failed`).map(e=>e.candidateId)}}var _z={model:{title:`模型`,description:`管理模型端点和凭据引用。`,addLabel:`配置模型`,headings:[`发现来源`,`上下文窗口`,`输入模态`],icon:ge},tool:{title:`Tool`,description:`管理结构化 Tool Contract、权限和审批策略。`,addLabel:`添加 Python Tool`,headings:[`来源`,`Tool 分组`,`权限 / 边界`],icon:yt},mcp:{title:`MCP`,description:`连接、探测并复用 MCP Server。`,addLabel:`添加资源`,headings:[`来源`,`版本`,`说明`],icon:Ve},skill:{title:`Skill`,description:`安装版本化 Skill,并在构建时锁定内容摘要。`,addLabel:`发现 Skill`,headings:[`来源`,`版本`,`说明`],icon:ct}},vz={provider:`模型服务`,builtin:`ksadk 内置`,local:`工作区自定义`,market:`市场`},yz=20;async function bz(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function xz(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function Sz(e){return e.replace(/^env:\/\//,``)}function Cz(e){let t=Number(e||0);return t<1024?`${t} B`:t<1048576?`${(t/1024).toFixed(1)} KiB`:`${(t/1024/1024).toFixed(1)} MiB`}function wz({kind:e,onKindChange:t,refreshTick:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),c=(0,s.useDeferredValue)(a),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(`default`),[h,_]=(0,s.useState)(yz),[v,y]=(0,s.useState)(0),[b,x]=(0,s.useState)([null]),[S,C]=(0,s.useState)(null),[w,T]=(0,s.useState)(0),[E,D]=(0,s.useState)(!0),[O,k]=(0,s.useState)(``),[A,j]=(0,s.useState)(null),[M,N]=(0,s.useState)(!1),[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(null),[R,z]=(0,s.useState)(null),[B,V]=(0,s.useState)(!1),[H,ee]=(0,s.useState)(!1),[te,ne]=(0,s.useState)(null),[U,re]=(0,s.useState)(!1),ie=(0,s.useRef)(0),ae=(0,s.useCallback)(async t=>{let n=++ie.current,r=new URLSearchParams({kind:e,limit:String(h),sort:p});c.trim()&&r.set(`query`,c.trim()),l&&r.set(`status`,l),d&&r.set(`source`,d),t&&r.set(`cursor`,t),D(!0),k(``);try{let e=await g(`/api/v1/catalog/resources?${r}`);if(!e.ok)throw Error(await bz(e,`资源加载失败`));let t=await e.json();if(ie.current!==n)return;i(t.items||[]),C(t.nextCursor||null),T(Number(t.total)||0)}catch(e){if(ie.current!==n)return;i([]),C(null),T(0),k(e instanceof Error?e.message:`资源加载失败`)}finally{ie.current===n&&D(!1)}},[c,e,h,p,d,l]),oe=(0,s.useCallback)(()=>{x([null]),y(0),ae(null)},[ae]),se=(0,s.useCallback)(()=>{ae(b[v]||null)},[b,ae,v]);(0,s.useEffect)(()=>{oe()},[n,oe]);let ce=(0,s.useCallback)(async e=>{try{let t=await g(`/api/v1/catalog/mcp-servers/${encodeURIComponent(e.resourceId)}:probe?timeoutSeconds=15`,{method:`POST`});if(!t.ok)throw Error(await bz(t,`MCP 探测失败`));let n=await t.json();se(),J(`MCP 探测完成`,`已发现 ${n.health?.toolCount||0} 个 Tool。`)}catch(e){se(),J(`MCP 探测失败`,e.message,`error`)}},[se]);async function le(){if(te){re(!0);try{let e=await g(`/api/v1/catalog/resources/${encodeURIComponent(te.resourceId)}`,{method:`DELETE`});if(!e.ok)throw Error(await bz(e,`删除失败`));if(ne(null),r.length===1&&v>0){let e=v-1;y(e),await ae(b[e]||null)}else await ae(b[v]||null);J(`资源已删除`,`${te.displayName||te.name} 已从工作区移除。`)}catch(e){J(`删除失败`,e.message,`error`)}re(!1)}}function ue(){if(e===`model`){N(!0);return}if(e===`mcp`){F(!0);return}if(e===`skill`){V(!0);return}ee(!0)}let de=_z[e],W=(0,s.useMemo)(()=>[{id:`name`,header:`名称`,minWidth:190,className:`resource-name-column`,headerClassName:`resource-name-column`,cell:e=>(0,G.jsx)(Tz,{item:e})},{id:`source`,header:de.headings[0],minWidth:120,className:`resource-source-column`,headerClassName:`resource-source-column`,cell:e=>vz[e.source]||e.source},{id:`detail`,header:de.headings[1],minWidth:110,className:`resource-detail-column`,headerClassName:`resource-detail-column`,cell:e=>(0,G.jsx)(Ez,{item:e})},{id:`capability`,header:de.headings[2],minWidth:180,className:`capability-cell resource-capability-column`,headerClassName:`resource-capability-column`,cell:e=>(0,G.jsx)(Dz,{item:e})},{id:`status`,header:`状态`,minWidth:92,className:`resource-status-column`,headerClassName:`resource-status-column`,cell:e=>(0,G.jsx)(Oz,{item:e})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column resource-actions-column`,headerClassName:`actions-column resource-actions-column`,cell:e=>(0,G.jsx)(kz,{item:e,onConfigure:()=>j(e),onView:()=>e.kind===`mcp`?L(e):z(e),onProbe:()=>ce(e),onDelete:()=>ne(e)})}],[de.headings,ce]),fe=(0,s.useCallback)(()=>{if(v<=0)return;let e=v-1;y(e),ae(b[e]||null)},[b,ae,v]),pe=(0,s.useCallback)(()=>{if(!S)return;let e=v+1;x(t=>{let n=t.slice(0,e);return n[e]=S,n}),y(e),ae(S)},[ae,S,v]);return(0,G.jsxs)(`div`,{className:`page-container resources-page`,"data-layout":`data`,"data-scroll-mode":`data`,children:[(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:ue,children:[(0,G.jsx)(Qe,{size:15}),(0,G.jsx)(`span`,{children:de.addLabel})]})}),(0,G.jsxs)(`div`,{className:`data-page-body table-data-body`,children:[(0,G.jsx)(`div`,{className:`page-tabs`,role:`tablist`,"aria-label":`资源类型`,children:Object.keys(_z).map(n=>(0,G.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e===n,onClick:()=>t(n),children:[_z[n].title,e===n&&(0,G.jsx)(`span`,{className:`n`,children:w})]},n))}),(0,G.jsxs)(`div`,{className:`section-toolbar`,children:[(0,G.jsxs)(`div`,{className:`search-field`,children:[(0,G.jsx)(tt,{size:14}),(0,G.jsx)(`input`,{type:`search`,placeholder:`搜索资源`,value:a,onChange:e=>o(e.target.value)})]}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`筛选资源状态`,value:l||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`ready`,label:`可用`},{value:`missing-secret`,label:`缺少凭证`},{value:`unhealthy`,label:`异常`},{value:`unresolved`,label:`未解析`}],onValueChange:e=>u(e===`__all__`?``:e)}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`筛选资源来源`,value:d||`__all__`,options:[{value:`__all__`,label:`全部来源`},{value:`provider`,label:`模型服务`},{value:`builtin`,label:`ksadk 内置`},{value:`local`,label:`工作区自定义`},{value:`market`,label:`市场`}],onValueChange:e=>f(e===`__all__`?``:e)}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`资源排序`,value:p,options:[{value:`default`,label:`默认排序`},{value:`displayName:asc`,label:`名称升序`},{value:`displayName:desc`,label:`名称降序`}],onValueChange:m}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`每页显示数量`,value:String(h),options:[{value:`20`,label:`每页 20 条`},{value:`50`,label:`每页 50 条`},{value:`100`,label:`每页 100 条`}],onValueChange:e=>_(Number(e))})]}),(0,G.jsx)(_m,{columns:W,data:r,getRowId:e=>e.resourceId,caption:`${de.title}资源列表`,minWidth:0,loading:E,error:O,onRetry:se,empty:{icon:(0,G.jsx)(_e,{size:20}),title:`没有匹配的资源`,description:`调整筛选条件,或添加一个新的工程资源。`},pagination:{pageIndex:v,pageSize:h,total:w,hasNextPage:!!S,onPreviousPage:fe,onNextPage:pe}})]}),A&&(0,G.jsx)(Az,{model:A,onClose:()=>j(null),onChanged:oe}),M&&(0,G.jsx)(jz,{onClose:()=>N(!1),onAdded:()=>{N(!1),oe()}}),P&&(0,G.jsx)(Mz,{onClose:()=>F(!1),onConnected:()=>{F(!1),oe()}}),I&&(0,G.jsx)(Nz,{item:I,onClose:()=>L(null)}),R&&(0,G.jsx)(Pz,{item:R,onClose:()=>z(null)}),B&&(0,G.jsx)(Fz,{onClose:()=>V(!1),onCatalogChanged:oe}),H&&(0,G.jsx)(Iz,{onClose:()=>ee(!1),onAdded:()=>{ee(!1),oe()}}),te&&(0,G.jsx)(ka,{title:`确认删除资源「${te.displayName||te.name}」?`,description:`删除后已绑定该资源的 Agent 不会自动更新,需手动重新编辑。`,confirmText:`确认删除`,busy:U,onConfirm:le,onCancel:()=>ne(null)})]})}function Tz({item:e}){let t=_z[e.kind]?.icon||_e,n=e.name&&e.name!==e.displayName;return(0,G.jsxs)(`div`,{className:`agent-cell`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(t,{size:15})}),(0,G.jsxs)(`div`,{className:`agent-cell-copy`,children:[(0,G.jsx)(`strong`,{children:e.displayName}),n&&(0,G.jsx)(`span`,{children:e.name})]})]})}function Ez({item:e}){if(e.kind===`model`){let t=e.contract?.metadata||{},n=Number(t.context_window_tokens||0),r=e.contract?.discovery?.contextWindow===`provider`?`服务返回`:`ksadk 默认`,i=n>=1e6?`${(n/1e6).toFixed(n%1e6?1:0)}M`:n>=1e3?`${Math.round(n/1e3)}K`:`${n||`-`}`;return(0,G.jsx)(`strong`,{title:`上下文窗口来源:${r}`,children:i})}return e.kind===`tool`?(0,G.jsx)(`span`,{className:`tag`,children:e.contract?.group||e.category||`general`}):(0,G.jsx)(`span`,{className:`mono`,children:e.version})}function Dz({item:e}){if(e.kind===`model`){let t=e.contract?.metadata?.capabilities||{},n=[`文字`];t.multimodal_input_image&&n.push(`图片`),t.multimodal_input_video&&n.push(`视频`),t.multimodal_input_file&&n.push(`文件`);let r=e.contract?.discovery?.inputModalities===`provider`?`服务返回`:`ksadk 默认`;return(0,G.jsx)(`span`,{title:`输入模态来源:${r}`,children:n.join(` + `)})}if(e.kind===`tool`){let t=e.contract?.approval===`always`?`需审批`:`无需审批`,n=e.contract?.boundary||`ksadk-runtime`;return(0,G.jsxs)(G.Fragment,{children:[t,(0,G.jsx)(`span`,{className:`resource-origin`,children:n})]})}let t=e.description||`未提供说明`;return(0,G.jsx)(`span`,{className:`cell-clamp`,title:t,children:t})}function Oz({item:e}){if(e.kind===`model`){let t=e.status===`ready`;return(0,G.jsx)(`span`,{className:`badge`,"data-state":t?`ready`:`pending`,children:t?`凭证已配置`:`凭证未配置`})}let t=e.status===`ready`?`可用`:e.status===`failed`||e.status===`unhealthy`?`异常`:e.status===`unresolved`?`未解析`:e.status===`missing-secret`?`缺少凭证`:e.status;return(0,G.jsx)(`span`,{className:`badge`,"data-state":e.status===`ready`?`ready`:e.status===`failed`||e.status===`unhealthy`?`failed`:`pending`,children:t})}function kz({item:e,onConfigure:t,onView:n,onProbe:r,onDelete:i}){let a=e.kind===`mcp`?[{label:`重新探测`,onSelect:r,disabled:e.source!==`local`},...e.source===`local`?[{label:`删除`,danger:!0,onSelect:i}]:[]]:[{label:`查看详情`,onSelect:n},...e.source===`local`?[{label:`删除`,danger:!0,onSelect:i}]:[]];return(0,G.jsxs)(`div`,{className:`row-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:e.kind===`model`?t:n,children:e.kind===`model`?`配置凭证`:`查看`}),(0,G.jsx)(yd,{label:`${e.displayName} 的更多操作`,items:a})]})}function Az({model:e,onClose:t,onChanged:n}){let r=xz(e),i=Sz(r),[a,o]=(0,s.useState)(null),c=y_({resolver:k_(fz),defaultValues:{value:``}}),[l,u]=(0,s.useState)(null),[d,f]=(0,s.useState)(``);(0,s.useEffect)(()=>{g(`/api/v1/credentials/${encodeURIComponent(i)}`).then(e=>e.json()).then(o).catch(()=>o({configured:!1,source:`missing`}))},[i]);let p=!!a?.configured,m=a?.source||`missing`,h=a==null?`正在检查凭证`:p?`模型凭证已配置`:`模型凭证未配置`,_=a==null?`检查当前 Runtime 是否已经获得模型凭证。`:m===`session`?`凭证已持久保存到工作区,重启后仍生效,所有 Agent 可复用。`:m===`environment`?`凭证由 Studio 启动环境变量提供,可以用新的会话凭证临时覆盖。`:`输入 API Key 后即可在本地运行当前模型。`;async function v(r,a){if(u(null),!a.value&&!p){c.setError(`value`,{type:`manual`,message:`当前模型还没有可用凭证,请输入 API Key。`});return}f(r?`test`:`save`);let o=!1;try{if(a.value){let e=await g(`/api/v1/credentials/${encodeURIComponent(i)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:a.value,persistence:`session`})});if(!e.ok)throw Error(await bz(e,`凭证保存失败`));o=!0}let s=null;if(r){let t=await g(`/api/v1/model-profiles/${encodeURIComponent(e.resourceId)}:test`,{method:`POST`}),n=await t.text().catch(()=>``),r={};try{r=JSON.parse(n)}catch{}if(!t.ok||r.ok===!1)throw Error(r?.error?.message||`HTTP ${t.status}`);s=r.latencyMs??0}n?.(),t(),J(r?`模型连接测试通过`:`模型凭证已保存`,r?`${e.displayName} · ${s} ms`:`凭证已持久保存到工作区,所有 Agent 可复用。`)}catch(e){u({title:o?`凭证已保存,但连接测试失败`:`模型凭证配置失败`,message:e.message}),o&&n?.()}f(``)}async function y(){u(null),f(`remove`);try{let r=await g(`/api/v1/credentials/${encodeURIComponent(i)}`,{method:`DELETE`});if(!r.ok)throw Error(await bz(r,`凭证清除失败`));n?.(),J(`会话凭证已清除`,e.displayName),t()}catch(e){u({title:`凭证清除失败`,message:e.message})}f(``)}return(0,G.jsx)(Vg,{...c,children:(0,G.jsxs)(BD,{title:`配置模型凭证`,subtitle:`凭证只保存在当前 Studio 会话,不写入 Agent 或 Bundle。`,onClose:t,footer:(0,G.jsxs)(G.Fragment,{children:[m===`session`&&(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:y,disabled:d!==``,children:d===`remove`?`正在清除`:`清除会话凭证`}),(0,G.jsx)(`span`,{className:`drawer-footer-spacer`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:t,children:`取消`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:c.handleSubmit(e=>v(!1,e)),disabled:d!==``,children:d===`save`?`正在保存`:`仅保存`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:c.handleSubmit(e=>v(!0,e)),disabled:d!==``,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:d===`test`?`正在测试`:`保存并测试`})]})]}),children:[(0,G.jsxs)(`div`,{className:`credential-profile`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`模型`}),(0,G.jsx)(`strong`,{children:e.displayName})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Provider`}),(0,G.jsx)(`strong`,{children:e.contract?.provider||`openai-compatible`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Endpoint`}),(0,G.jsx)(`code`,{children:e.contract?.endpointUrl||e.contract?.baseUrl||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`凭证引用`}),(0,G.jsx)(`code`,{children:r||`-`})]})]}),(0,G.jsxs)(`div`,{className:`credential-status ${p?`configured`:`missing`}`,children:[(0,G.jsx)(`span`,{className:`status-dot ${a==null?`warning`:p?`success`:`warning`}`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:h}),(0,G.jsx)(`p`,{children:_})]})]}),(0,G.jsx)(Y,{label:`API Key`,requirement:p?`optional`:`required`,htmlFor:`modelCredValue`,hint:`保存后立即生效;关闭 Studio 后自动清除,需要持久化时可通过启动环境变量注入。`,error:c.formState.errors.value?.message,children:(0,G.jsx)(`input`,{id:`modelCredValue`,type:`password`,autoComplete:`new-password`,maxLength:16384,placeholder:p?`输入新的 API Key 以覆盖当前凭证`:`输入新的 API Key`,...c.register(`value`)})}),l&&(0,G.jsx)(VD,{kind:`error`,title:l.title,message:l.message})]})})}function jz({onClose:e,onAdded:t}){let n=y_({resolver:k_(lz),defaultValues:{name:``,displayName:``,model:``,endpointUrl:``,credentialRef:`env://MODEL_API_KEY`,description:``,apiKey:``,temperature:.2,maxTokens:2048,addressMode:`endpoint`,wireApi:``}}),{name:r,displayName:i,model:a,endpointUrl:o,credentialRef:c,apiKey:l,temperature:u,maxTokens:d,addressMode:f,wireApi:p}=n.watch(),m=c.replace(/^env:\/\//,``),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)([]),[w,T]=(0,s.useState)([]),[E,D]=(0,s.useState)([]);(0,s.useEffect)(()=>{g(`/api/v1/catalog/models`).then(e=>e.json()).then(e=>{D((e.items||[]).map(e=>e.name).filter(Boolean))}).catch(()=>{})},[]);async function O(){if(!o.trim()){y(`请先填写接口地址再探测`);return}x(!0),y(``),C([]),T([]);try{let e={url:o.trim()};m.trim()&&(e.credentialRef=`env://${m.trim()}`),l.trim()&&(e.apiKey=l.trim());let t=await g(`/api/v1/model-endpoints:probe`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok)throw Error(await bz(t,`探测失败`));let r=await t.json();C(r.attempts||[]),T(r.models||[]),r.recommended?(n.setValue(`wireApi`,r.recommended.wireApi||`chat`),n.setValue(`addressMode`,`endpoint`),n.setValue(`endpointUrl`,r.recommended.endpointUrl,{shouldValidate:!0}),r.recommended.status===`auth_required`&&y(`端点可达,但需要有效凭证(401/403);配置 API Key 后可正常使用`)):y(`未能识别可用协议,请检查地址或网络`)}catch(e){y(e.message)}x(!1)}let k=[...new Set([...w,...E])];async function A(e){_(!0),y(``);try{let r=e.credentialRef.replace(/^env:\/\//,``);if(e.apiKey.trim()){let t=await g(`/api/v1/credentials/${encodeURIComponent(r)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e.apiKey.trim(),persistence:`session`})});if(!t.ok)throw Error(await bz(t,`凭证保存失败`))}let i={provider:`openai-compatible`,model:e.model.trim(),credentialRef:e.credentialRef,parameters:{temperature:e.temperature,max_tokens:e.maxTokens}};e.wireApi&&(i.wireApi=e.wireApi),e.addressMode===`endpoint`?i.endpointUrl=e.endpointUrl.trim():i.baseUrl=e.endpointUrl.trim();let a=await g(`/api/v1/catalog/model-profiles`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),displayName:e.displayName.trim(),version:`1.0.0`,description:e.description||``,spec:i})});if(!a.ok){let e=await a.json().catch(()=>null);if(Nb(e,n.setError)){_(!1);return}throw Error(e?.error?.message||`创建失败(${a.status})`)}J(`模型已创建`,`${e.displayName.trim()} · ${e.model.trim()}`),t()}catch(e){y(e.message)}_(!1)}let j=e=>`${e.protocol===`chat`?`Chat`:`Responses`} · ${e.status===`ok`?`可用 ${e.latencyMs}ms`:e.status===`auth_required`?`需凭证`:e.status===`recognized`?`可识别`:e.status===`unavailable`?`不存在`:e.status===`unreachable`?`不可达`:`错误`}`,M=e=>e.status===`ok`?`ready`:e.status===`unavailable`||e.status===`unreachable`?`failed`:`pending`;return(0,G.jsx)(Vg,{...n,children:(0,G.jsxs)(BD,{title:`添加模型`,subtitle:`接入 OpenAI 兼容模型端点。`,wide:!0,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:n.handleSubmit(A),disabled:h,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:h?`创建中…`:`创建模型`})]})]}),children:[(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`名称(Slug)`,requirement:`required`,htmlFor:`amName`,error:n.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`amName`,className:`mono`,placeholder:`my-model`,...n.register(`name`)})}),(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`amDisplayName`,error:n.formState.errors.displayName?.message,children:(0,G.jsx)(`input`,{id:`amDisplayName`,placeholder:`我的模型`,...n.register(`displayName`)})})]}),(0,G.jsx)(Y,{label:`模型 ID`,requirement:`required`,htmlFor:`amModelId`,error:n.formState.errors.model?.message,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`input`,{id:`amModelId`,className:`mono`,placeholder:`glm-5.1 / gpt-4o-mini / …`,list:`am-model-suggestions`,...n.register(`model`)}),(0,G.jsx)(`datalist`,{id:`am-model-suggestions`,children:k.map(e=>(0,G.jsx)(`option`,{value:e},e))}),k.length>0&&(0,G.jsxs)(`span`,{className:`helper`,children:[`可输入或从 `,k.length,` 个可用模型中选择(自动补全)。`]})]})}),(0,G.jsx)(Y,{label:`接口地址`,requirement:`required`,htmlFor:`amEndpoint`,hint:`支持主机、/v1、Chat Completions 或 Responses 地址;智能探测会自动归一化。`,error:n.formState.errors.endpointUrl?.message,children:(0,G.jsxs)(`div`,{children:[p&&(0,G.jsx)(`span`,{className:`tag`,children:p===`responses`?`Responses 协议`:`Chat 协议`}),(0,G.jsxs)(`div`,{style:{display:`flex`,gap:8,marginBottom:10,alignItems:`center`},children:[(0,G.jsxs)(`div`,{className:`segmented-control`,children:[(0,G.jsx)(`button`,{type:`button`,className:f===`endpoint`?`selected`:``,onClick:()=>n.setValue(`addressMode`,`endpoint`),children:`完整 endpointUrl`}),(0,G.jsx)(`button`,{type:`button`,className:f===`base`?`selected`:``,onClick:()=>n.setValue(`addressMode`,`base`),children:`baseUrl`})]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:O,disabled:b||!o.trim(),children:[(0,G.jsx)(xt,{size:14}),(0,G.jsx)(`span`,{children:b?`探测中…`:`智能探测`})]})]}),(0,G.jsx)(`input`,{id:`amEndpoint`,className:`mono`,placeholder:f===`endpoint`?`https://host/v1/chat/completions`:`https://host/v1`,...n.register(`endpointUrl`)}),S.length>0&&(0,G.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:6,marginTop:10},children:S.map((e,t)=>(0,G.jsx)(`span`,{className:`badge`,"data-state":M(e),title:e.endpointUrl,children:j(e)},t))})]})}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`凭证环境变量名`,requirement:`required`,htmlFor:`amEnvName`,error:n.formState.errors.credentialRef?.message,children:(0,G.jsx)(`input`,{id:`amEnvName`,className:`mono`,value:m,onChange:e=>n.setValue(`credentialRef`,`env://${e.target.value}`,{shouldDirty:!0,shouldValidate:!0}),placeholder:`MY_MODEL_API_KEY`})}),(0,G.jsx)(Y,{label:`API Key 值`,requirement:`optional`,htmlFor:`amApiKey`,hint:`仅保存到当前 Studio 会话;留空则从启动环境读取。`,error:n.formState.errors.apiKey?.message,children:(0,G.jsx)(`input`,{id:`amApiKey`,type:`password`,autoComplete:`new-password`,placeholder:`留空则从环境读取`,...n.register(`apiKey`)})})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`temperature`,requirement:`optional`,htmlFor:`amTemp`,error:n.formState.errors.temperature?.message,children:(0,G.jsx)(`input`,{id:`amTemp`,type:`number`,step:`0.1`,min:0,max:2,...n.register(`temperature`,{valueAsNumber:!0})})}),(0,G.jsx)(Y,{label:`max_tokens`,requirement:`optional`,htmlFor:`amMaxTokens`,error:n.formState.errors.maxTokens?.message,children:(0,G.jsx)(`input`,{id:`amMaxTokens`,type:`number`,min:1,max:131072,...n.register(`maxTokens`,{valueAsNumber:!0})})})]}),v&&(0,G.jsx)(VD,{kind:`error`,title:`添加模型`,message:v})]})})}function Mz({onClose:e,onConnected:t}){let n=(0,s.useRef)(null),r=y_({resolver:k_(uz),defaultValues:{displayName:``,name:``,transport:`http`,command:``,args:``,endpointUrl:``,apiKeyName:``,apiKeyValue:``,description:``}}),{transport:i}=r.watch(),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(!1);function u(){let e=n.current?.value.trim();if(!e)return;let t;try{t=JSON.parse(e)}catch{J(`配置解析失败`,`请粘贴有效的 JSON`,`error`);return}let i=t.mcpServers||t.mcp_servers||t,a=Object.keys(i)[0],o=i[a];if(!o||typeof o!=`object`){J(`配置解析失败`,`未找到 MCP server 定义`,`error`);return}r.setValue(`name`,a,{shouldValidate:!0}),r.setValue(`displayName`,o.name||a,{shouldValidate:!0}),o.description&&r.setValue(`description`,o.description);let s=String(o.type||o.transport||``).toLowerCase();s.includes(`http`)||o.url?(r.setValue(`transport`,s===`sse`?`sse`:`http`),o.url&&r.setValue(`endpointUrl`,o.url,{shouldValidate:!0})):(r.setValue(`transport`,`stdio`),o.command&&r.setValue(`command`,o.command,{shouldValidate:!0}),Array.isArray(o.args)&&r.setValue(`args`,o.args.join(` `)));let c=o.headers||{},l=c.Authorization||c.authorization;if(l){let e=String(l).match(/\$\{?([A-Za-z0-9_]+)\}?/);e&&r.setValue(`apiKeyName`,e[1],{shouldValidate:!0})}else o.env_key&&r.setValue(`apiKeyName`,o.env_key,{shouldValidate:!0})}async function d(e){o(``),l(!0);try{if(e.apiKeyName.trim()&&e.apiKeyValue.trim()){let t=await g(`/api/v1/credentials/${encodeURIComponent(e.apiKeyName.trim())}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({value:e.apiKeyValue.trim(),persistence:`session`})});if(!t.ok)throw Error(await bz(t,`凭证保存失败`))}let n=e.transport===`streamable-http`?`http`:e.transport,i=n===`stdio`?e.apiKeyName.trim():`Authorization`,a={name:e.name.trim(),version:`1.0.0`,transport:n,args:n===`stdio`?e.args.trim().split(/\s+/).filter(Boolean):[],envRefs:e.apiKeyName.trim()?{[i]:`env://${e.apiKeyName.trim()}`}:{}};n===`stdio`?a.command=e.command.trim():a.endpointUrl=e.endpointUrl.trim();let o=await g(`/api/v1/catalog/mcp-servers`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),description:e.description.trim(),server:a})}),s=await o.json().catch(()=>null);if(!o.ok){if(Nb(s,r.setError)){l(!1);return}throw Error(s?.error?.message||`保存失败(${o.status})`)}let c=await g(`/api/v1/catalog/mcp-servers/${encodeURIComponent(s.resourceId)}:probe?timeoutSeconds=15`,{method:`POST`});if(!c.ok)throw Error(await bz(c,`探测失败`));J(`MCP 已连接`,`已发现 ${(await c.json()).health?.toolCount||0} 个 Tool。`),t()}catch(e){o(e.message)}l(!1)}return(0,G.jsx)(Vg,{...r,children:(0,G.jsxs)(BD,{title:`连接 MCP Server`,subtitle:`保存后执行探测,再回到 Agent 能力选择。`,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r.handleSubmit(d),disabled:c,children:[(0,G.jsx)(Ve,{size:15}),(0,G.jsx)(`span`,{children:c?`正在探测`:`保存并探测`})]})]}),children:[(0,G.jsx)(Y,{label:`粘贴 MCP 配置`,requirement:`optional`,htmlFor:`mcpPaste`,hint:`粘贴 JSON 后会自动填充下方字段。`,children:(0,G.jsx)(`textarea`,{id:`mcpPaste`,ref:n,rows:5,placeholder:'{"mcpServers":{"metaso":{"type":"streamable-http","url":"https://...","headers":{"Authorization":"Bearer ${KSC_AIPRO_API_KEY}"}}}}',onPaste:()=>window.setTimeout(u,0)})}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`mcpDisplayName`,error:r.formState.errors.displayName?.message,children:(0,G.jsx)(`input`,{id:`mcpDisplayName`,placeholder:`Web Research MCP`,...r.register(`displayName`)})}),(0,G.jsx)(Y,{label:`Server 名称`,requirement:`required`,htmlFor:`mcpName`,error:r.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`mcpName`,className:`mono`,placeholder:`web-research`,...r.register(`name`)})})]}),(0,G.jsx)(Y,{label:`Transport`,requirement:`required`,htmlFor:`mcpTransport`,error:r.formState.errors.transport?.message,children:(0,G.jsx)(Fh,{id:`mcpTransport`,ariaLabel:`Transport`,value:i,options:[{value:`http`,label:`Streamable HTTP`},{value:`stdio`,label:`STDIO(本地命令)`},{value:`sse`,label:`SSE`}],onValueChange:e=>r.setValue(`transport`,e,{shouldDirty:!0,shouldValidate:!0})})}),i===`stdio`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Y,{label:`Command`,requirement:`required`,htmlFor:`mcpCommand`,error:r.formState.errors.command?.message,children:(0,G.jsx)(`input`,{id:`mcpCommand`,className:`mono`,placeholder:`npx`,...r.register(`command`)})}),(0,G.jsx)(Y,{label:`Arguments`,requirement:`optional`,htmlFor:`mcpArgs`,error:r.formState.errors.args?.message,children:(0,G.jsx)(`input`,{id:`mcpArgs`,className:`mono`,placeholder:`-y @your-org/web-research-mcp`,...r.register(`args`)})})]}),i!==`stdio`&&(0,G.jsx)(Y,{label:`Server URL`,requirement:`required`,htmlFor:`mcpEndpoint`,error:r.formState.errors.endpointUrl?.message,children:(0,G.jsx)(`input`,{id:`mcpEndpoint`,className:`mono`,placeholder:`https://mcp.example.com/mcp`,...r.register(`endpointUrl`)})}),(0,G.jsx)(Y,{label:`API Key 环境变量名`,requirement:`optional`,htmlFor:`mcpApiKey`,error:r.formState.errors.apiKeyName?.message,children:(0,G.jsx)(`input`,{id:`mcpApiKey`,className:`mono`,placeholder:`KSC_AIPRO_API_KEY`,...r.register(`apiKeyName`)})}),(0,G.jsx)(Y,{label:`API Key 值`,requirement:`optional`,htmlFor:`mcpApiKeyValue`,hint:`仅保存到当前 Studio 会话;留空则从环境变量读取。`,error:r.formState.errors.apiKeyValue?.message,children:(0,G.jsx)(`input`,{id:`mcpApiKeyValue`,type:`password`,autoComplete:`new-password`,placeholder:`留空则从环境变量读取`,...r.register(`apiKeyValue`)})}),(0,G.jsx)(Y,{label:`说明`,requirement:`optional`,htmlFor:`mcpDescription`,error:r.formState.errors.description?.message,children:(0,G.jsx)(`textarea`,{id:`mcpDescription`,rows:2,placeholder:`提供 Web 搜索和页面抓取能力`,...r.register(`description`)})}),a&&(0,G.jsx)(VD,{kind:`error`,title:`连接失败`,message:a})]})})}function Nz({item:e,onClose:t}){let n=e.contract||{},r=e.health||{},i=n.discoveredTools||r.discoveredTools||[],a=[[`Resource ID`,e.resourceId],[`Transport`,n.transport||`-`],[`Endpoint`,n.endpointUrl||n.command||`-`],[`状态`,r.status||e.status],[`工具数`,r.toolCount??i.length],[`凭证`,(e.requiredSecretRefs||[]).join(`、`)||`无`]];return(0,G.jsxs)(BD,{title:e.displayName||e.name,subtitle:`${e.name} · ${e.version} · ${n.transport||``}`,onClose:t,children:[(0,G.jsx)(`dl`,{className:`trace-detail-grid`,children:a.map(([e,t])=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e}),(0,G.jsx)(`dd`,{children:String(t)})]},e))}),(0,G.jsx)(`div`,{className:`inspector-title inspector-title-spaced`,children:`已发现工具`}),(0,G.jsx)(`div`,{className:`resource-detail-list`,children:i.length===0?(0,G.jsx)(`div`,{className:`resource-detail-item`,children:(0,G.jsxs)(`span`,{className:`resource-detail-item-copy`,children:[(0,G.jsx)(`strong`,{children:`未发现工具`}),(0,G.jsx)(`span`,{children:`点击“重新探测”以加载工具列表`})]})}):i.map(e=>(0,G.jsxs)(`div`,{className:`resource-detail-item`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(yt,{size:15})}),(0,G.jsxs)(`span`,{className:`resource-detail-item-copy`,children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsx)(`span`,{children:e.description||``})]})]},e.name))})]})}function Pz({item:e,onClose:t}){let[n,r]=(0,s.useState)(!1),i=e.contract||{},a=[[`Resource ID`,e.resourceId],[`来源`,vz[e.source]||e.source],[`版本`,e.version||`-`],[`状态`,e.kind===`model`?e.status===`ready`?`凭证已配置`:`凭证未配置`:e.status]];return e.kind===`tool`&&(a.push([`Tool 分组`,i.group||e.category||`general`]),a.push([`审批`,i.approval===`always`?`需审批`:`无需审批`]),a.push([`边界`,i.boundary||`ksadk-runtime`]),i.sourcePath&&a.push([`源码`,`${i.sourcePath} · ${i.callableName||`-`}()`])),e.kind===`skill`&&i?.contentSha256&&a.push([`内容摘要`,i.contentSha256]),(0,G.jsxs)(BD,{title:e.displayName||e.name,subtitle:`${e.name} · ${e.version}`,onClose:t,children:[(0,G.jsx)(`dl`,{className:`trace-detail-grid`,children:a.map(([e,t])=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e}),(0,G.jsx)(`dd`,{children:String(t)})]},e))}),(0,G.jsx)(`div`,{className:`inspector-title inspector-title-spaced`,children:`说明`}),(0,G.jsx)(`p`,{style:{margin:0,color:`var(--text-secondary)`,fontSize:`var(--font-size-meta)`,lineHeight:`var(--line-height-body)`},children:e.description||i.description||`未提供说明`}),e.kind===`skill`&&e.source===`local`&&(0,G.jsxs)(`button`,{className:`button secondary skill-files-open`,type:`button`,onClick:()=>r(!0),children:[(0,G.jsx)(be,{size:15}),(0,G.jsx)(`span`,{children:`查看 Skill 文件`})]}),n&&(0,G.jsx)(FL,{title:e.displayName||e.name,endpoint:`/api/v1/catalog/skills/${encodeURIComponent(e.resourceId)}/files`,onClose:()=>r(!1)})]})}function Fz({onClose:e,onCatalogChanged:t}){let[n,r]=(0,s.useState)(``),[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)(new Set),[l,u]=(0,s.useState)({}),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)({completed:0,total:0}),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)(!1),[w,T]=(0,s.useState)(null),[E,D]=(0,s.useState)(null),O=i?.candidates||[];function k(){c(new Set),u({}),f(null),m({completed:0,total:0}),_(``),T(null)}async function A(){y(``),x(!0);try{let e=n.split(`,`).map(e=>e.trim()).filter(Boolean),t=await g(`/api/v1/catalog/skills:discover`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({scanPaths:e})});if(!t.ok)throw Error(await bz(t,`Skill 发现失败`));let r=await t.json();a(r),k()}catch(e){y(e.message)}x(!1)}function j(e){S||l[e]?.status===`succeeded`||c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function M(){let e=hz(O);for(let[t,n]of Object.entries(l))n.status===`succeeded`&&e.delete(t);c(e)}async function N(e){let n=i?.inspectionToken;if(!o.size||!n||S)return;let r=new Set(o),a=O.filter(e=>r.has(e.candidateId)&&(e.status===`ready`||e.status===`conflict`)).length;y(``),f(null),u({}),m({completed:0,total:a}),C(!0);try{let i=await gz({candidates:O,selectedIds:r,overwriteIds:e,commit:async(e,t)=>{_(e.candidateId);let r=await g(`/api/v1/catalog/skills/discoveries/${encodeURIComponent(n)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({candidateId:e.candidateId,overwrite:t})});if(!r.ok)throw Error(await bz(r,`Skill 导入失败`));return r.json()},onResult:(e,t,n)=>{u(t=>({...t,[e.candidateId]:e})),m({completed:t,total:n})}});f(i),c(new Set(i.failedIds)),i.succeededIds.length&&await t(),i.failedIds.length?J(`Skill 批量导入完成`,`已导入 ${i.succeededIds.length} 个,${i.failedIds.length} 个失败。`,`error`):J(`Skill 批量导入完成`,`已导入 ${i.succeededIds.length} 个 Skill。`)}catch(e){y(e.message)}_(``),C(!1)}function P(){let e=O.filter(e=>o.has(e.candidateId)&&e.status===`conflict`);if(e.length){T(e);return}N(new Set)}let F=o.size;return(0,G.jsxs)(BD,{title:`发现本地 Skill`,subtitle:`默认扫描工作区及允许的 Claude、Codex、Agent 用户目录;扫描只产生候选,确认后才导入。`,wide:!0,closeDisabled:S,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,disabled:S,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:P,disabled:!F||S,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:S?`正在导入 ${p.completed}/${p.total}`:`导入所选 ${F} 个`})]})]}),children:[(0,G.jsxs)(`div`,{className:`field`,children:[(0,G.jsx)(`label`,{htmlFor:`skillScanPaths`,children:`扫描目录(逗号分隔;留空扫描安全默认目录)`}),(0,G.jsx)(`input`,{id:`skillScanPaths`,value:n,onChange:e=>r(e.target.value),placeholder:`skills, .claude/skills, user:codex`}),(0,G.jsx)(`span`,{className:`helper`,children:`用户目录仅支持 user:agents、user:codex、user:claude;不支持任意本机路径扫描。`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:A,disabled:b||S,children:[(0,G.jsx)(tt,{size:15}),(0,G.jsx)(`span`,{children:b?`正在扫描`:`扫描候选`})]}),O.length>0&&(0,G.jsxs)(`div`,{className:`skill-selection-toolbar`,children:[(0,G.jsxs)(`span`,{children:[`已选择 `,F,` / `,hz(O).size]}),(0,G.jsxs)(`span`,{className:`skill-selection-actions`,children:[(0,G.jsx)(`button`,{className:`button tertiary small`,type:`button`,onClick:M,disabled:S,children:`全选可导入`}),(0,G.jsx)(`button`,{className:`button tertiary small`,type:`button`,onClick:()=>c(new Set),disabled:!F||S,children:`清空选择`})]})]}),(0,G.jsx)(`div`,{className:`skill-discovery-list`,style:{marginTop:16},children:O.length===0?(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:i?`安全默认目录中没有发现 Skill。`:`点击扫描候选。`})}):O.map(e=>{let t=e.risk||{},n=[`ready`,`conflict`].includes(e.status),r=l[e.candidateId],i=r?.status===`succeeded`,a=e.status===`ready`?`可导入`:e.status===`conflict`?`已安装`:`无效`,s=e.diagnostics?.map(e=>e.message).join(`;`)||`${e.fileCount||0} 个文件 · ${Cz(e.totalBytes||0)}`,c=r?.status===`succeeded`?`已导入`:r?.status===`failed`?`导入失败:${r.error||`未知错误`}`:h===e.candidateId?`正在导入`:S&&o.has(e.candidateId)?`等待导入`:``;return(0,G.jsxs)(`div`,{className:`skill-candidate${n?``:` invalid`}`,children:[(0,G.jsx)(`input`,{type:`checkbox`,"aria-label":`选择 ${e.displayName||e.name}`,disabled:!n||S||i,checked:o.has(e.candidateId),onChange:()=>j(e.candidateId)}),(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(ct,{size:15})}),(0,G.jsxs)(`span`,{className:`skill-candidate-copy`,children:[(0,G.jsx)(`strong`,{children:e.displayName||e.name}),(0,G.jsxs)(`span`,{children:[e.path,` · `,e.version||`版本无效`]}),(0,G.jsx)(`small`,{children:s}),c&&(0,G.jsx)(`small`,{className:`skill-import-state ${r?.status||`pending`}`,children:c})]}),(0,G.jsxs)(`span`,{className:`badge`,"data-state":e.status===`ready`?`ready`:`pending`,children:[a,t.requiresReview?` · 需复核`:``]}),n&&(0,G.jsxs)(`button`,{className:`button tertiary small skill-preview-button`,type:`button`,onClick:()=>D(e),children:[(0,G.jsx)(be,{size:14}),(0,G.jsx)(`span`,{children:`查看详情`})]})]},e.candidateId)})}),d&&(0,G.jsx)(VD,{kind:d.failedIds.length?`warning`:`success`,title:d.failedIds.length?`已导入 ${d.succeededIds.length} 个,${d.failedIds.length} 个失败`:`已导入 ${d.succeededIds.length} 个 Skill`,message:d.failedIds.length?`失败项已保留选择,可修复后再次导入。`:`资源目录已刷新。`}),v&&(0,G.jsx)(VD,{kind:`error`,title:`Skill 发现或导入失败`,message:v}),w&&(0,G.jsx)(ka,{title:`所选 Skill 中有 ${w.length} 个已安装`,description:`${w.map(e=>e.displayName||e.name).join(`、`)} 将被覆盖;旧版本会移入回收位置,可手工恢复。`,confirmText:`覆盖并继续`,danger:!1,onCancel:()=>T(null),onConfirm:()=>{let e=new Set(w.map(e=>e.candidateId));T(null),N(e)}}),E&&i?.inspectionToken&&(0,G.jsx)(FL,{title:E.displayName||E.name||`Skill`,endpoint:`/api/v1/catalog/skills/discoveries/${encodeURIComponent(i.inspectionToken)}/candidates/${encodeURIComponent(E.candidateId)}/files`,onClose:()=>D(null)})]})}function Iz({onClose:e,onAdded:t}){let n=y_({resolver:k_(dz),defaultValues:{displayName:``,name:``,callableName:``,description:``,sourceMode:`upload`,sourcePath:``}}),{sourceMode:r,name:i,callableName:a}=n.watch(),[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)(null),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(!1);async function h(){if(!o){f(`请先选择 Python 文件`);return}m(!0),f(``);try{let e=new FormData;e.append(`file`,o);let t=await g(`/api/v1/catalog/python-tools:inspect`,{method:`POST`,body:e});if(!t.ok)throw Error(await bz(t,`Python Tool 检查失败`));let r=await t.json(),i=r.callables?.[0];u(r);let a=o.name.replace(/\.py$/i,``).replace(/[^A-Za-z0-9_]+/g,`_`).replace(/^[^A-Za-z_]+/,`tool_`)||`python_tool`;n.setValue(`callableName`,i?.name||``,{shouldValidate:!0}),n.getValues(`name`)||n.setValue(`name`,a,{shouldValidate:!0}),n.getValues(`displayName`)||n.setValue(`displayName`,a,{shouldValidate:!0}),n.getValues(`description`)||n.setValue(`description`,i?.description||``)}catch(e){u(null),f(e.message||`Python Tool 检查失败`)}finally{m(!1)}}async function _(e){if(e.sourceMode===`upload`&&!l){n.setError(`callableName`,{type:`manual`,message:`请先完成 Python 文件检查`});return}m(!0),f(``);try{let r=e.sourceMode===`upload`?await g(`/api/v1/catalog/python-tools/${encodeURIComponent(l.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),name:e.name.trim(),callableName:e.callableName.trim(),description:e.description.trim()})}):await g(`/api/v1/catalog/tools`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({displayName:e.displayName.trim(),category:`custom`,contract:{name:e.name.trim(),version:`1.0.0`,description:e.description.trim(),inputSchema:{type:`object`,properties:{}},outputSchema:{},approval:`policy`,sideEffect:`none`,executor:`python`,sourcePath:e.sourcePath.trim(),callableName:e.callableName.trim()}})}),i=await r.json().catch(()=>null);if(!r.ok){if(Nb(i,n.setError)){m(!1);return}throw Error(i?.error?.message||`Tool 添加失败(${r.status})`)}J(`Python Tool 已保存`,`${i.displayName||e.displayName.trim()} · SHA-256 已锁定`),t()}catch(e){f(e.message)}m(!1)}return(0,G.jsx)(Vg,{...n,children:(0,G.jsxs)(BD,{title:`添加 Python Tool`,subtitle:`源码先复制进 Catalog 并锁定 SHA-256,构建时进入不可变 Runtime 快照。`,onClose:e,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:n.handleSubmit(_),disabled:p,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:p?`正在保存`:`保存 Tool`})]})]}),children:[(0,G.jsxs)(`div`,{className:`segmented-control python-tool-source-mode`,"aria-label":`Python Tool 源码方式`,children:[(0,G.jsx)(`button`,{className:r===`upload`?`selected`:``,type:`button`,onClick:()=>{n.setValue(`sourceMode`,`upload`,{shouldValidate:!0}),f(``)},children:`上传文件`}),(0,G.jsx)(`button`,{className:r===`workspace`?`selected`:``,type:`button`,onClick:()=>{n.setValue(`sourceMode`,`workspace`,{shouldValidate:!0}),f(``)},children:`工作区路径`})]}),(0,G.jsx)(nz,{}),r===`upload`?(0,G.jsx)(Y,{label:`Python 文件`,requirement:`required`,hint:`拖放 .py 文件,或点击选择;检查只解析 AST,不会执行脚本。`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(ez,{ariaLabel:`选择 Python Tool 文件`,accept:{"text/x-python":[`.py`],"text/plain":[`.py`]},maxSize:1048576,file:o,onFile:e=>{c(e),u(null),n.setValue(`callableName`,``)},onError:f}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:h,disabled:!o||p,children:[(0,G.jsx)(tt,{size:15}),(0,G.jsx)(`span`,{children:p?`检查中`:`只读检查 Callable`})]}),l&&(0,G.jsxs)(`div`,{className:`python-tool-inspection-summary`,children:[(0,G.jsx)(V,{size:15}),(0,G.jsxs)(`span`,{children:[`SHA-256 `,l.sha256.slice(0,12),`… · 发现 `,l.callables.length,` 个公开函数`]})]})]})}):(0,G.jsx)(Y,{label:`工作区 Python 文件`,requirement:`required`,htmlFor:`ptSource`,hint:`仅允许当前工作区内的普通 .py 文件;符号链接会被拒绝。`,error:n.formState.errors.sourcePath?.message,children:(0,G.jsx)(`input`,{id:`ptSource`,placeholder:`tools/my_tool.py`,...n.register(`sourcePath`)})}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`ptDisplayName`,error:n.formState.errors.displayName?.message,children:(0,G.jsx)(`input`,{id:`ptDisplayName`,placeholder:`例如:订单查询`,...n.register(`displayName`)})}),(0,G.jsx)(Y,{label:`Tool 标识`,requirement:`required`,htmlFor:`ptName`,error:n.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`ptName`,className:`mono`,...n.register(`name`)})}),(0,G.jsx)(Y,{label:`Callable`,requirement:`required`,htmlFor:`ptCallable`,error:n.formState.errors.callableName?.message,children:r===`upload`?(0,G.jsx)(Fh,{id:`ptCallable`,ariaLabel:`Callable`,value:a,placeholder:l?`选择公开函数`:`请先检查文件`,disabled:!l,options:(l?.callables||[]).map(e=>({value:e.name,label:`${e.async?`async `:``}${e.name}(${e.parameters.join(`, `)})`,description:e.description||void 0})),onValueChange:e=>{n.setValue(`callableName`,e,{shouldDirty:!0,shouldValidate:!0});let t=l?.callables?.find(t=>t.name===e);t?.description&&n.setValue(`description`,t.description)}}):(0,G.jsx)(`input`,{id:`ptCallable`,className:`mono`,...n.register(`callableName`)})})]}),(0,G.jsx)(Y,{label:`说明`,requirement:`optional`,htmlFor:`ptDesc`,error:n.formState.errors.description?.message,children:(0,G.jsx)(`textarea`,{id:`ptDesc`,rows:3,...n.register(`description`)})}),d&&(0,G.jsx)(VD,{kind:`error`,title:`Tool 添加失败`,message:d})]})})}function Lz(e){let t=e?e():new Uint8Array(4);if(!e&&globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(t);else if(!e)for(let e=0;ee.toString(16).padStart(2,`0`)).join(``)}`}function Rz({value:e,onChange:t,error:n,generate:r=Lz,id:i=`agent-slug`,label:a=`本地标识`}){return(0,G.jsx)(Y,{htmlFor:i,label:a,requirement:`generated`,hint:`默认生成唯一的本地 ID;可手动修改,云端 AgentId 由部署服务另行映射。`,error:n,children:(0,G.jsxs)(`div`,{className:`generated-id-control`,children:[(0,G.jsx)(`input`,{id:i,value:e,onChange:e=>t(e.target.value),pattern:`[a-z][a-z0-9-]{2,62}`,maxLength:63,spellCheck:!1,autoComplete:`off`}),(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`重新生成本地标识`,title:`重新生成`,onClick:()=>t(r()),children:(0,G.jsx)(et,{size:15})})]})})}var zz={resolving_model:{text:`正在理解你的需求…`,tip:`分析对话内容,确定 Agent 的框架与能力`},generating:{text:`正在理解你的需求…`,tip:`分析对话内容,确定 Agent 的框架与能力`},codex_writing:{text:`Codex 正在编写 Agent 配置…`,tip:`AI 编程助手正在沙箱中编写 agentkit.yaml,通常需要 1-3 分钟,质量优先`},validating:{text:`正在校验配置…`,tip:`检查配置完整性:名称、模型、运行时与提示词`},correcting:{text:`正在修正配置…`,tip:`发现少量问题,正在按校验意见修正后重新生成`},done:{text:`方案生成完成`,tip:``},failed:{text:`生成失败`,tip:``}};function Bz(e){return e&&zz[e]?.text||zz.resolving_model.text}function Vz(e){return e&&zz[e]?.tip||zz.resolving_model.tip}function Hz(e){if(e<60)return`${e}s`;let t=Math.floor(e/60),n=e%60;return n?`${t}m${n}s`:`${t}m`}function Uz({stage:e,startedAt:t,testId:n=`authoring-stage-shimmer`}){let[r,i]=(0,s.useState)(()=>Date.now());(0,s.useEffect)(()=>{if(!t||e===`done`||e===`failed`)return;let n=window.setInterval(()=>i(Date.now()),1e3);return()=>window.clearInterval(n)},[t,e]);let a=Vz(e),o=t?Hz(Math.max(0,Math.floor((r-t)/1e3))):null,c=e===`done`||e===`failed`;return(0,G.jsxs)(`span`,{className:`authoring-stage`,"data-testid":n,"data-stage":e||`unknown`,children:[(0,G.jsx)(`span`,{className:`text-shimmer`,children:Bz(e)}),o&&!c&&(0,G.jsxs)(`span`,{className:`authoring-stage-elapsed`,children:[`已等待 `,o]}),a&&!c&&(0,G.jsx)(`span`,{className:`authoring-stage-tip`,children:a})]})}var Wz={action:`studio.action`,agentProvider:`studio.agent.provider`,renderer:`studio.renderer`,route:`studio.route`,settingsPage:`studio.settings.page`,sidebarNavigation:`studio.sidebar.navigation`,workspaceTab:`studio.workspace.tab`},Gz=class{entries=new Map;listeners=new Map;snapshots=new Map;register(e,t){let n=this.entries.get(e)??new Map;if(n.has(t.id))throw Error(`DSH contribution already registered: ${e}/${t.id}`);n.set(t.id,t),this.entries.set(e,n),this.publish(e);let r=!0;return()=>{r&&(r=!1,n.delete(t.id),this.publish(e))}}replaceAll(e){let t=e.cloneEntries(),n=new Set([...this.entries.keys(),...t.keys()]);this.entries=t;for(let e of n)this.publish(e)}getEntries(e){let t=this.snapshots.get(e);if(t)return t;let n=this.createSnapshot(e);return this.snapshots.set(e,n),n}subscribe(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>n.delete(t)}cloneEntries(){return new Map([...this.entries].map(([e,t])=>[e,new Map(t)]))}createSnapshot(e){return Object.freeze([...this.entries.get(e)?.values()??[]].sort((e,t)=>(e.order??100)-(t.order??100)||e.id.localeCompare(t.id)))}publish(e){this.snapshots.set(e,this.createSnapshot(e));for(let t of this.listeners.get(e)??[])t()}};function Kz(e,t){return(0,s.useSyncExternalStore)(n=>e.subscribe(t,n),()=>e.getEntries(t),()=>e.getEntries(t))}function qz(e){return e==null}function Jz(e,t,n){return Object.defineProperty(e,t,{writable:!0,value:n,enumerable:!1})}function Yz(e,t){return arguments.length===1?t=>Yz(e,t):e in globalThis&&t instanceof globalThis[e]||Object.prototype.toString.call(t).slice(8,-1)===e}function Xz(e){return Yz(`ArrayBuffer`,e)||Yz(`SharedArrayBuffer`,e)}function Zz(e){return Xz(e)||ArrayBuffer.isView(e)}var Qz;(function(e){e.is=Xz,e.isSource=Zz;function t(e){return ArrayBuffer.isView(e)?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e}e.fromSource=t;function n(e){if(e=t(e),typeof Buffer<`u`)return Buffer.from(e).toString(`base64`);let n=``,r=new Uint8Array(e);for(let e=0;ee.charCodeAt(0))}e.fromBase64=r;function i(e){return e=t(e),typeof Buffer<`u`?Buffer.from(e).toString(`hex`):Array.from(new Uint8Array(e),e=>e.toString(16).padStart(2,`0`)).join(``)}e.toHex=i;function a(e){if(typeof Buffer<`u`)return t(Buffer.from(e,`hex`));let n=e.length%2==0?e:e.slice(0,e.length-1),r=[];for(let e=0;e=65&&o<=90){if(i===1){let t=e.charCodeAt(a+1);t>=97&&t<=122&&r.push(n),r.push(o+32)}else i!==0&&r.push(n),r.push(o+32);i=1}else o>=97&&o<=122?(r.push(o),i=2):t.includes(o)?(i!==0&&r.push(n),i=0):r.push(o)}return String.fromCharCode(...r)}function eB(e){return $z(e,[45,95],45)}var tB=eB,nB;(function(e){e.millisecond=1,e.second=1e3,e.minute=e.second*60,e.hour=e.minute*60,e.day=e.hour*24,e.week=e.day*7;let t=new Date().getTimezoneOffset();function n(e){t=e}e.setTimezoneOffset=n;function r(){return t}e.getTimezoneOffset=r;function i(n=new Date,r){return typeof n==`number`&&(n=new Date(n)),r===void 0&&(r=t),Math.floor((n.valueOf()/e.minute-r)/1440)}e.getDateNumber=i;function a(n,r){let i=new Date(n*e.day);return r===void 0&&(r=t),new Date(+i+r*e.minute)}e.fromDateNumber=a;let o=RegExp(`^${[`w(?:eek(?:s)?)?`,`d(?:ay(?:s)?)?`,`h(?:our(?:s)?)?`,`m(?:in(?:ute)?(?:s)?)?`,`s(?:ec(?:ond)?(?:s)?)?`].map(e=>`(\\d+(?:\\.\\d+)?${e})?`).join(``)}$`);function s(t){let n=o.exec(t);return n?(parseFloat(n[1])*e.week||0)+(parseFloat(n[2])*e.day||0)+(parseFloat(n[3])*e.hour||0)+(parseFloat(n[4])*e.minute||0)+(parseFloat(n[5])*e.second||0):0}e.parseTime=s;function c(e){let t=s(e);return t?e=Date.now()+t:/^\d{1,2}(:\d{1,2}){1,2}$/.test(e)?e=`${new Date().toLocaleDateString()}-${e}`:/^\d{1,2}-\d{1,2}-\d{1,2}(:\d{1,2}){1,2}$/.test(e)&&(e=`${new Date().getFullYear()}-${e}`),e?new Date(e):new Date}e.parseDate=c;function l(t){let n=Math.abs(t);return n>=e.day-e.hour/2?Math.round(t/e.day)+`d`:n>=e.hour-e.minute/2?Math.round(t/e.hour)+`h`:n>=e.minute-e.second/2?Math.round(t/e.minute)+`m`:n>=e.second?Math.round(t/e.second)+`s`:t+`ms`}e.format=l;function u(e,t=2){return e.toString().padStart(t,`0`)}e.toDigits=u;function d(e,t=new Date){return e.replace(`yyyy`,t.getFullYear().toString()).replace(`yy`,t.getFullYear().toString().slice(2)).replace(`MM`,u(t.getMonth()+1)).replace(`dd`,u(t.getDate())).replace(`hh`,u(t.getHours())).replace(`mm`,u(t.getMinutes())).replace(`ss`,u(t.getSeconds())).replace(`SSS`,u(t.getMilliseconds(),3))}e.template=d})(nB||={});var rB=class{sn=0;map=new Map;weak=new WeakMap;get length(){return this.map.size}push(e){let t=++this.sn;return this.map.set(t,e),this.weak.set(e,t),()=>this.map.delete(t)}delete(e){let t=this.weak.get(e);return t?this.map.delete(t):!1}clear(){let e=[...this.map.values()];return this.map.clear(),e.reverse()}[Symbol.iterator](){return this.map.values()}[Symbol.for(`nodejs.util.inspect.custom`)](){return[...this]}},Q={shadow:Symbol.for(`cordis.shadow`),receiver:Symbol.for(`cordis.receiver`),original:Symbol.for(`cordis.original`),metadata:Symbol.for(`cordis.metadata`),initHooks:Symbol.for(`cordis.initHooks`),checkProto:Symbol.for(`cordis.checkProto`),effect:Symbol.for(`cordis.effect`),filter:Symbol.for(`cordis.filter`),isolate:Symbol.for(`cordis.isolate`),intercept:Symbol.for(`cordis.intercept`),init:Symbol.for(`cordis.init`),check:Symbol.for(`cordis.check`),config:Symbol.for(`cordis.config`),invoke:Symbol.for(`cordis.invoke`),extend:Symbol.for(`cordis.extend`),tracker:Symbol.for(`cordis.tracker`),resolveConfig:Symbol.for(`cordis.resolveConfig`)},iB=function*(){}.constructor,aB=async function*(){}.constructor;function oB(e){return!(!e.prototype||e instanceof iB||aB!==Function&&e instanceof aB)}function sB(e,t){if(e===Object.prototype)return t;let n=Object.create(sB(Object.getPrototypeOf(e),t));for(let t of Reflect.ownKeys(e))Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function cB(e){return e&&(typeof e==`object`||typeof e==`function`)}function lB(e,t){let n=e;for(;n;){let e=Reflect.getOwnPropertyDescriptor(n,t);if(e)return e;n=Object.getPrototypeOf(n)}}function uB(e,t){if(!cB(t))return t;if(Object.hasOwn(t,Q.shadow))return Object.getPrototypeOf(t);let n=t[Q.tracker];return n?hB(e,t,n):t}function dB(e,t){return t?new Proxy(e,{get:(e,n,r)=>n in t&&n!==`constructor`?Reflect.get(t,n,r):Reflect.get(e,n,r),set:(e,n,r,i)=>n in t&&n!==`constructor`?Reflect.set(t,n,r,i):Reflect.set(e,n,r,i)}):e}function fB(e,t,n){return dB(e,Object.defineProperty(Object.create(null),t,{value:n,writable:!1}))}function pB(e,t,n,r){if(!n)return r;let i=Reflect.getOwnPropertyDescriptor(t,n)?.value;return i?fB(r,n,e.extend({[Q.shadow]:i})):r}function mB(e,t,n,r){return new Proxy(t,{apply:(t,i,a)=>(i===n&&(i=r),uB(e,Reflect.apply(t,i,a)))})}function hB(e,t,n){e[Q.shadow]&&!n.noShadow&&(e=Object.getPrototypeOf(e));let r=new Proxy(t,{get:(t,r,i)=>{if(r===Q.original)return t;if(r===n.property)return e;if(typeof r==`symbol`)return Reflect.get(t,r,i);if(n.associate&&e.reflect.props[`${n.associate}.${r}`])return Reflect.get(e,`${n.associate}.${r}`,fB(e,Q.receiver,i));let a,o,s=lB(t,r);s&&`value`in s?o=s.value:(a=pB(e,t,n.property,i),o=Reflect.get(t,r,a));let c=o?.[Q.tracker];return c?hB(e,o,c):!n.noShadow&&typeof o==`function`?(a??=pB(e,t,n.property,i),mB(e,o,i,a)):o},set:(t,r,i,a)=>{if(r===Q.original||r===n.property)return!1;if(typeof r==`symbol`)return Reflect.set(t,r,i,a);if(n.associate&&e.reflect.props[`${n.associate}.${r}`])return Reflect.set(e,`${n.associate}.${r}`,i,fB(e,Q.receiver,a));let o=pB(e,t,n.property,a);return Reflect.set(t,r,i,o)},apply:(e,t,n)=>gB(r,e,t,n)});return r}function gB(e,t,n,r){return t[Q.invoke]?t[Q.invoke].apply(e,r):Reflect.apply(t,n,r)}function _B(e,t,n){let r=function(...e){return gB(hB(r.ctx,r,n),r,this,e)};return Jz(r,`name`,e),Object.setPrototypeOf(r,t)}function vB(e,t,n){let r=e.error.stack.split(`
+`);if(typeof t?.stack!=`string`){let e=Error(t),r=e.stack.split(`
+`);throw r.splice(1,1/0,...n()),e.stack=r.join(`
+`),e}let i=t.stack.split(`
+`),a=i.indexOf(r[2]);if(a===-1)throw t;for(a-=e.offset;a>0&&i[a-1].endsWith(` ()`);)--a;throw i.splice(a,1/0,...n()),t.stack=i.join(`
+`),t}function yB(e,t=bB()){let n={offset:1,error:Error()};try{let r=e(n);return cB(r)&&`then`in r?r.then(void 0,e=>vB(n,e,t)):r}catch(e){vB(n,e,t)}}function bB(e=0){let t=Error();return()=>t.stack.split(`
+`).slice(3+e)}function xB(e){return e!==null&&e!==!1&&e!==void 0}var SB=class{ctx;_hooks={};constructor(e){this.ctx=e,Jz(this,Q.tracker,{property:`ctx`,noShadow:!0}),this.on(`internal/listener`,function(e,t,n){if(e===`internal/update`&&!n.global)return(this.fiber._hooks[`internal/update`]??=new rB)[n.prepend?`unshift`:`push`](t)}),this.on(`internal/update`,function(e,t,n){let r=[...this._hooks[`internal/update`]||[]],i=()=>(r.shift()??n).call(this,e,t,i);return i()},{global:!0,prepend:!0})}dispatch(e,t){let n=typeof t[0]==`object`||typeof t[0]==`function`?t.shift():null,r=t.shift();r.startsWith(`internal/`)||this.emit(`internal/dispatch`,e,r,t,n);let i=n?.[GB.filter];return(this._hooks[r]||[]).filter(e=>e.global||!i||i.call(n,e.ctx)).map(e=>e.callback.bind(n))}async parallel(...e){let t=(await Promise.allSettled(this.dispatch(`emit`,e).map(async t=>t(...e)))).filter(e=>e.status===`rejected`);if(t.length)throw AggregateError(t.map(e=>e.reason))}emit(...e){this.dispatch(`emit`,e).map(t=>t(...e))}async serial(...e){for(let t of this.dispatch(`serial`,e)){let n=await t(...e);if(xB(n))return n}}bail(...e){for(let t of this.dispatch(`bail`,e)){let n=t(...e);if(xB(n))return n}}waterfall(...e){let t=this.dispatch(`waterfall`,e),n=e.pop(),r=()=>(t.shift()??n)(...e);return e.push(r),r()}register(e,t,n,r){let i=r.prepend?`unshift`:`push`;return this.ctx.fiber.effect(()=>(t[i]({ctx:this.ctx,callback:n,...r}),()=>this.unregister(t,n)),e)}unregister(e,t){let n=e.findIndex(e=>e.callback===t);if(n>=0)return e.splice(n,1),!0}on(e,t,n){typeof n!=`object`&&(n={prepend:n}),this.ctx.fiber.assertActive(),t=this.ctx.reflect.bind(t);let r=this.bail(this.ctx,`internal/listener`,e,t,n);if(r)return r;let i=this._hooks[e]||=[],a=`ctx.on(${typeof e==`string`?JSON.stringify(e):e.toString()})`;return this.register(a,i,t,n)}once(e,t,n){let r=this.on(e,function(...e){return r(),t.apply(this,e)},n);return r}},CB={s:e=>String(e),d:e=>Math.trunc(Number(e)),i:e=>Math.trunc(Number(e)),f:e=>Number(e),o:e=>JSON.stringify(e),O:e=>JSON.stringify(e),c:()=>``,C:(e,t,n)=>TB.color(t,TB.code(n.name,t.colors),e)};function wB(e){return e instanceof Error&&Array.isArray(e.errors)}var TB=class{service;static color(e,t,n,r=``){return e.colors?`\u001b[3${t<8?t:`8;5;`+t}${e.colors>=2?r:``}m${n}\u001b[0m`:``+n}static code(e,t){let n=0;for(let t=0;t=2?DB:EB:[];return r[Math.abs(n)%r.length]}static format(e,t){let n=t.args.slice();n[0]instanceof Error?(n[0]=n[0].stack||n[0].message,n.unshift(`%s`)):typeof n[0]!=`string`&&n.unshift(`%o`);let r=n.shift();r=r.replace(/%([a-zA-Z%])/g,(r,i)=>{if(r===`%%`)return`%`;let a=e.formatters?.[i]??CB[i];return typeof a==`function`?a(n.shift(),e,t):r});let i=e.formatters?.o??CB.o;for(let a of n)typeof a==`object`&&a&&(a=i(a,e,t)),r+=` `+a;let{maxLength:a=10240}=e;return r.split(/\r?\n/g).map(e=>e.slice(0,a)+(e.length>a?`...`:``)).join(`
+`)}constructor(e,t){this.service=t,Object.assign(this,e),this.error=this._method(`error`,0),this.info=this._method(`info`,1),this.warn=this._method(`warn`,2),this.debug=this._method(`debug`,3)}_method(e,t){return(...n)=>{if(n.length===1&&n[0]instanceof Error){if(n[0].cause)this[e](n[0].cause);else if(wB(n[0])){n[0].errors.forEach(t=>this[e](t));return}}let r=++this.service._snMessage,i=Date.now();for(let a of this.service.exporters.values()){if((a.levels?.[this.name]??a.levels?.default??this.level??1){n.buffer.push(e),n.buffer.length>n.bufferSize&&(n.buffer=n.buffer.slice(-n.bufferSize))}}),n}exporter(e){return this.ctx.effect(()=>(this.exporters.set(++this._snExporter,e),()=>this.exporters.delete(this._snExporter)),`ctx.logger.exporter()`)}_resolveConfig(){let e=this.ctx[Q.intercept],t=[];for(;`logger`in e;)Object.hasOwn(e,`logger`)&&t.unshift(e.logger),e=Object.getPrototypeOf(e);return Object.assign({},...t)}[Q.invoke](e){let t=this._resolveConfig(),n=(this.ctx[Q.shadow]??this.ctx).fiber;return e??=t.name,e??=tB(n.name),new TB({name:e,level:t.level,meta:{fiber:new WeakRef(n)}},this)}static{for(let t of[`error`,`info`,`warn`,`debug`])e.prototype[t]=function(...e){return this()[t](...e)}}};function kB(e){let t=e.stack.split(`
+`);return t.splice(0,2,`Error: ${e.message}`),e.stack=t.join(`
+`),e}var AB=[`prototype`,`then`];function jB(e){return typeof e==`symbol`||AB.includes(e)||parseInt(e).toString()===e||e.startsWith(`_`)}var MB=class{ctx;static handler={get:(e,t,n)=>{if(jB(t))return Reflect.get(e,t,n);if(Reflect.has(e,t))return uB(n,Reflect.get(e,t,n));let r=Error(`cannot get property "${t}" without inject`);try{let i=e.reflect.props[t];return i?.type===`accessor`?i.get.call(n,n[Q.receiver],r):n.fiber.runtime?n.events.waterfall(`internal/get`,n,t,r,()=>{let i=e[Q.isolate][t],a=(n[Q.shadow]??n).fiber;for(;;){let e=a.store?.[t];if(e)return uB(n,e.value);if(t in a.inject)throw r.message=`cannot get required service "${t}" in inactive context`,r;if(!a.runtime||a.parent[Q.isolate][t]!==i)throw r;a=a.parent.fiber}}):n.reflect.get(t,!1)}catch(e){throw e===r?kB(e):e}},set:(e,t,n,r)=>{if(jB(t))return Reflect.set(e,t,n,r);let i=Error(`cannot set property "${t}" without provide`),a=e.reflect.props[t];if(!a){if(!r.fiber.runtime)return Reflect.set(e,t,n,r);throw kB(i)}try{return a.type===`accessor`?a.set?a.set.call(r,n,r[Q.receiver],i):!1:r.events.waterfall(`internal/set`,r,t,n,i,()=>r.reflect.set(t,n,i))}catch(e){throw e===i?kB(e):e}},has:(e,t)=>jB(t)?Reflect.has(e,t):Reflect.has(e,t)?!0:!!e.reflect.props[t]};store=Object.create(null);props=Object.create(null);constructor(e){this.ctx=e,Jz(this,Q.tracker,{property:`ctx`,noShadow:!0}),this.mixin(`reflect`,[`get`,`set`,`provide`,`accessor`,`mixin`]),this.mixin(`fiber`,[`runtime`,`effect`]),this.mixin(`registry`,[`inject`,`plugin`]),this.mixin(`events`,[`on`,`once`,`parallel`,`emit`,`serial`,`bail`,`waterfall`])}get(e,t=!0){return uB(this.ctx,this._getImpl(e,t)?.value)}_getImpl(e,t=!0){let n=this.ctx[Q.isolate][e],r=n&&this.store[n];if(r&&!(t&&r.fiber.state!==2))return r}set(e,t,n){let r=this.ctx[Q.isolate][e],i=this.store[r];if(!i)throw Error(`cannot set property "${e}" without provide`);if(i.fiber!==this.ctx.fiber)throw Error(`cannot set property "${e}" in multiple fibers`);return i.value=t,!0}provide(e,t,n){return this.ctx.fiber.effect(()=>{if(!this.props[e])this.props[e]??={type:`service`};else if(this.props[e].type!==`service`)throw Error(`property "${e}" is already declared as ${this.props[e].type}`);this.props[e]={type:`service`},this.ctx.root[Q.isolate][e]??=Symbol(e);let r=this.ctx[Q.isolate][e],i={name:e,value:t,fiber:this.ctx.fiber,check:n};if(this.store[r])throw Error(`service "${e}" has been registered at <${this.store[r].fiber.name}>`);return this.store[r]=i,this.ctx.fiber.store[e]=i,this.ctx.fiber.state===2&&this.notify([e]),async()=>{delete this.store[r];let t=this.notify([e]);await Promise.allSettled(t.map(e=>e.await())),delete this.ctx.fiber.store[e]}},`ctx.provide(${JSON.stringify(e)})`)}notify(e,t=(e,t)=>e[Q.isolate][t]===this.ctx[Q.isolate][t]){let n=[];for(let r of this.ctx.registry.values())for(let i of r.fibers){let r=!1;for(let n of e)n in i.inject&&t(i.ctx,n)&&(r=!0,i._checkImpl(n));r&&(i._refresh(),n.push(i))}for(let n of e){let e=Object.create(this.ctx);e[Q.filter]=e=>t(e,n),this.ctx.events.emit(e,`internal/service`,n,this._getImpl(n,!1)?.value)}return n}accessor(e,t){return this.ctx.fiber.effect(()=>{if(e in this.props)throw Error(`property "${e}" is already declared as ${this.props[e].type}`);return this.props[e]={type:`accessor`,...t},()=>delete this.props[e]},`ctx.accessor(${JSON.stringify(e)})`)}mixin(e,t){let n=this;return this.ctx.fiber.effect(function*(){let r=Array.isArray(t)?t.map(e=>[e,e]):Object.entries(t),i=(t,n)=>t[e];for(let[e,t]of r)yield n.accessor(t,{get(t,n){let r=i(this,n);if(qz(r))return r;let a=t?dB(t,r):r,o=Reflect.get(r,e,a);return typeof o==`function`?o.bind(a??r):o},set(t,n,r){let a=i(this,r),o=n?dB(n,a):a;return Reflect.set(a,e,t,o)}})},`ctx.mixin(${JSON.stringify(e)})`)}trace(e){return uB(this.ctx,e)}bind(e){return new Proxy(e,{apply:(e,t,n)=>Reflect.apply(e,this.trace(t),n.map(e=>this.trace(e))),construct:(e,t,n)=>Reflect.construct(e,t.map(e=>this.trace(e)),n)})}},NB=Symbol.for(`ValidationError`),PB=class extends TypeError{name=`ValidationError`;constructor(e){super(`invalid config:
+`+e.map(e=>e.path?` - ${e.message} (at ${e.path.join(`.`)})`:` - ${e.message}`).join(`
+`))}};Object.defineProperty(PB.prototype,NB,{value:!0});function FB(e,t){if(!e.Config)return t;let n=e.Config[`~standard`].validate(t);if(`then`in n)throw TypeError(`Async config validation is not supported`);if(n.issues)throw new PB(n.issues);return n.value}var IB=new WeakMap;function LB(e){let t=e();return IB.get(e)?.()??t}function RB(e,t){let n=[`internal/plugin`,t],r;try{r=e.events.dispatch(`emit`,n)}catch(t){e.logger.error(t);return}for(let t of r)try{let r=t(...n);Promise.resolve(r).catch(t=>e.logger.error(t))}catch(t){e.logger.error(t)}}var zB=class e extends Error{code;constructor(t,n){super(n??e.Code[t]),this.code=t}};(function(e){e.Code={INACTIVE_EFFECT:`cannot create effect on inactive context`}})(zB||={});var BB=`__INACTIVE__`,VB=class{parent;inject;runtime;uid;ctx;config;_config;state=0;dispose;store;inertia;_hooks=Object.create(null);_disposables=new rB;context;_error;_runner;_store=Object.create(null);constructor(e,t,n,r,i){this.parent=e,this.inject=n,this.runtime=r,this._config=t;let a=e=>{this._disposables.push(e)};if(r){this.uid=e.registry.counter,this.ctx=this.context=e.extend({fiber:this});let t=Object.entries(this.inject);if(t.length){this.ctx[GB.intercept]=Object.create(e[GB.intercept]);for(let[e,n]of t)qz(n)||(this.ctx[GB.intercept][e]=n)}this._runner={epoch:BB,getOuterStack:i,execute:function(){if(oB(r.callback)){let e=new r.callback(this.ctx,this.config);for(let t of e?.[Q.initHooks]??[])t();return e?.[Q.init]?.()}return r.callback(this.ctx,this.config)},collect:a},this.dispose=e.fiber.effect(()=>{let e=r.fibers.push(this);return async()=>{for(this.uid=null,RB(this.context,this),this.ctx.registry.has(r.callback)&&(e(),r.fibers.length||this.ctx.registry.delete(r.callback)),this._setEpoch(BB),this.inertia||this._updateState(()=>(this.inertia=this._unload(),5));this.inertia;)await this.inertia}},`ctx.plugin()`);try{this.context.emit(`internal/plugin`,this)}catch(e){throw Promise.resolve(this.dispose()).catch(e=>this.ctx.logger.error(e)),e}if(this.uid!==null&&e.fiber.state!==5){for(let e of Object.keys(this.inject))this._checkImpl(e);this._refresh()}}else this.uid=0,this.ctx=this.context=e,this.state=2,this.store=Object.create(null),this._runner={epoch:``,getOuterStack:i,execute:()=>{},collect:a},this.dispose=()=>this.restart()}get name(){let e=this;do{if(e.runtime?.name)return e.runtime.name;e=e.parent.fiber}while(e!==e.parent.fiber);return`root`}assertActive(){if(this.uid===null)throw new zB(`INACTIVE_EFFECT`)}_execute(e){let t=e.epoch;return yB(n=>{let r=t=>{if(typeof t==`function`)e.collect(t);else if(!qz(t))throw TypeError(`Invalid effect`)},i=e.execute.call(this);if(typeof i==`function`)return e.collect(i);if(!qz(i)){if(!cB(i))throw TypeError(`Invalid effect`);if(`then`in i)return i.then(r);if(Symbol.iterator in i){n.error=Error();let e=i[Symbol.iterator]();for(;;){let t=e.next();if(r(t.value),t.done)return}}else if(Symbol.asyncIterator in i){let a=i[Symbol.asyncIterator]();return(async()=>{for(await Promise.resolve(),n.error=Error();;){if(e.epoch!==t)return;let n=await a.next();if(r(n.value),n.done)return}})()}else throw TypeError(`Invalid effect`)}},e.getOuterStack)}effect(e,t=`anonymous`){if(this.assertActive(),this.state===5)throw new zB(`INACTIVE_EFFECT`);let n=[],r=!1,i,a=()=>{if(r)return i;r=!0;let e;for(let t of n.splice(0).reverse())if(e)e=e.then(()=>LB(t));else{let n=LB(t);cB(n)&&`then`in n&&(e=n)}return i=e},o={label:t,children:[]},s={execute:e,epoch:!0,collect:e=>{n.push(e),this._disposables.delete(e),e[Q.effect]&&o.children.push(e[Q.effect])},getOuterStack:bB()},c,l=!0,u,d,f,p=!1,m,h=()=>!1,g=()=>(f??=new Promise((e,t)=>{u=e,d=t}),f),_=e=>Promise.resolve(e).then(()=>a(),async e=>{throw await a(),e}),v=e=>{let t;try{t=e()}catch(e){throw h(),e}if(cB(t)&&`then`in t){let e=Promise.resolve(t).finally(()=>{h(),m===e&&(m=void 0)});return m=e}return h(),t},y=Jz(()=>s.epoch?(s.epoch=!1,v(()=>l?_(g()):c?_(c):a())):p?m:void 0,Q.effect,o);IB.set(y,()=>m),h=this._disposables.push(y);try{c=this._execute(s)}catch(e){l=!1,p=!0,s.epoch=!1;let t;try{t=v(a)}finally{d?.(e)}throw cB(t)&&`then`in t&&t.catch(e=>this.ctx.logger.error(e)),e}l=!1,f&&Promise.resolve(c).then(u,d),c?.catch(()=>s.epoch?v(a):a()).catch(e=>this.ctx.logger.error(e));let b=()=>{if(s.epoch)return s.epoch=!1,v(a)};return y.then=async(e,t)=>Promise.resolve(c).then(()=>b).then(e,t),y}getEffects(){return[...this._disposables].map(e=>e[Q.effect]).filter(Boolean)}_getState(){return this.uid===null?4:this._error?3:this._runner.epoch===BB?0:2}_updateState(e){let t=this.state;if(this.state=e()??this._getState(),t!==this.state&&(this.context.emit(`internal/status`,this,t),t===2||this.state===2))for(let e of Reflect.ownKeys(this.ctx.reflect.store)){let t=this.ctx.reflect.store[e];t.fiber===this&&this.ctx.reflect.notify([t.name])}}_checkImpl(e){let t=this.ctx.reflect._getImpl(e,!0);if(!t)return delete this._store[e];try{if(t.check&&!t.check.call(uB(this.ctx,t.value)))return delete this._store[e]}catch(n){return t.fiber.ctx.logger.error(n),delete this._store[e]}this._store[e]=t}_refresh(){let e=!1;e=``;for(let t of Object.keys(this.inject)){let n=this._store[t];if(!n){e=BB;break}e+=`:`+n.fiber.uid}this._setEpoch(e)}_setEpoch(e){let t=this._runner.epoch;e!==t&&(this._runner.epoch=e,!this.inertia&&this._updateState(()=>e!==BB&&t===BB?(this.inertia=this._reload(),1):(this.inertia=this._unload(),5)))}_resolveConfig(e){return e=this.context.waterfall(this,`internal/config`,e,()=>e),this.runtime?FB(this.runtime,e):e}async _reload(){this.store={...this._store};let e=this._runner.epoch;try{await Promise.resolve(),this._runner.epoch===e&&(this.config=this._resolveConfig(this._config),await this._execute(this._runner),this._error=void 0)}catch(e){this.ctx.logger.error(e),this._error=e,this._runner.epoch=BB}this._updateState(()=>{if(this._runner.epoch===e)this.inertia=void 0;else return this.inertia=this._unload(),5})}async _unload(){await Promise.all(this._disposables.clear().map(async e=>{try{await yB(async t=>{await Promise.resolve(),t.error=Error(),await LB(e)},this._runner.getOuterStack)}catch(e){this.ctx.logger.error(e)}})),this.store=void 0,this._updateState(()=>{if(this._runner.epoch===BB)this.inertia=void 0;else return this.inertia=this._reload(),1})}async await(){for(;this.inertia;)await this.inertia;if(this._error)throw this._error;return this}async restart(){this.assertActive(),this._setEpoch(BB),this._refresh(),await this.await()}update(e,t=!1){if(this.assertActive(),this._config=e,this.state!==2){this._error=void 0,this._setEpoch(BB),this._refresh();return}return e=this._resolveConfig(e),this.context.waterfall(this,`internal/update`,e,t,()=>(this.config=e,this._error=void 0,this.restart()))}};function HB(e){return e&&typeof e==`object`&&typeof e.apply==`function`}function UB(e,t){return function(n,r){if(r.kind===`class`)Object.hasOwn(n,`inject`)||(Jz(n,`inject`,Object.create(Object.getPrototypeOf(n).inject??null)),Jz(n.inject,Q.checkProto,!0)),n.inject[e]=t;else if(r.kind===`method`){let i=(n[Q.metadata]??={}).inject??=Object.create(null);i[e]=t,r.addInitializer(function(){let e=this[Q.tracker]?.property;(this[Q.initHooks]??=[]).push(()=>{this.ctx.inject(i,t=>n.call(e?dB(this,{[e]:t}):this))})})}else throw Error(`@Inject() can only be used on class or class methods`)}}(function(e){function t(e,n=Object.create(null)){if(!e)return n;if(Array.isArray(e))for(let t of e)n[t]=null;else if(Reflect.has(e,Q.checkProto)){Object.assign(n,t(Object.getPrototypeOf(e)));for(let t of Object.keys(e))n[t]=e[t]??null}else for(let t of Object.keys(e))n[t]=e[t]??null;return n}e.resolve=t})(UB||={});var WB=class{ctx;_counter=0;_internal=new Map;constructor(e){this.ctx=e,Jz(this,Q.tracker,{property:`ctx`,noShadow:!0})}get counter(){return++this._counter}get size(){return this._internal.size}resolve(e){try{if(typeof e==`function`)return e;if(HB(e))return e.apply}catch{}}get(e){let t=this.resolve(e);return t&&this._internal.get(t)}has(e){let t=this.resolve(e);return!!t&&this._internal.has(t)}delete(e){let t=this.resolve(e),n=t&&this._internal.get(t);if(n){this._internal.delete(t);for(let e of n.fibers)e.dispose();return n}}keys(){return this._internal.keys()}values(){return this._internal.values()}entries(){return this._internal.entries()}forEach(e){return this._internal.forEach(e)}inject(e,t){return this.plugin({inject:e,apply:t,name:t.name})}plugin(e,t,n=bB()){let r=this.resolve(e);if(!r)throw Error(`invalid plugin, expect function or object with an "apply" method, received `+typeof e);this.ctx.fiber.assertActive();let i=this._internal.get(r);if(!i){let t=e.name;t===`apply`&&(t=void 0),i={name:t,callback:r,fibers:new rB,Config:e.Config},this._internal.set(r,i)}let a=new VB(this.ctx,t,UB.resolve(e.inject),i,n),o=Object.create(a);return o.then=(e,t)=>a.await().then(e,t),o}},GB=class e{static effect=Q.effect;static filter=Q.filter;static isolate=Q.isolate;static intercept=Q.intercept;static is(t){return!!t?.[e.is]}static{e.is[Symbol.toPrimitive]=()=>Symbol.for(`cordis.is`),e.prototype[e.is]=!0}constructor(){this[Q.isolate]=Object.create(null),this[Q.intercept]=Object.create(null);let e=new Proxy(this,MB.handler);return this.root=e,this.baseUrl=void 0,this.fiber=new VB(e,{},Object.create(null),null,()=>[]),this.reflect=new MB(e),this.registry=new WB(e),this.events=new SB(e),this.logger=new OB(e),this.fiber._disposables.clear(),e}[Symbol.for(`nodejs.util.inspect.custom`)](){return`Context <${this.fiber.name}>`}extend(e={}){let t=Reflect.getOwnPropertyDescriptor(this,Q.shadow)?.value,n=Object.create(uB(this,this));for(let t of Reflect.ownKeys(e))Object.defineProperty(n,t,Reflect.getOwnPropertyDescriptor(e,t));return t?Object.assign(Object.create(n),{[Q.shadow]:t}):n}isolate(e,t){let n=Object.create(this[Q.isolate]);return n[e]=t??Symbol(e),this.extend({[Q.isolate]:n})}intercept(e,t){let n=Object.create(this[Q.intercept]);return n[e]=t,this.extend({[Q.intercept]:n})}};(class e{ctx;static init=Q.init;static check=Q.check;static config=Q.config;static invoke=Q.invoke;static extend=Q.extend;static tracker=Q.tracker;static resolveConfig=Q.resolveConfig;name;constructor(e,t){this.ctx=e,t??=this.constructor.provide;let n=this,r={associate:t,property:`ctx`};return n[Q.invoke]&&(n=_B(t,sB(Object.getPrototypeOf(this),Function.prototype),r)),n.ctx=e,n.name=t,Jz(n,Q.tracker,r),n.ctx.reflect.provide(t,n,this[Q.check]),n}[Q.filter](e){return e[Q.isolate][this.name]===this.ctx[Q.isolate][this.name]}[Q.extend](t){let n;return n=this[e.invoke]?_B(this.name,this,this[Q.tracker]):Object.create(this),Object.assign(n,t)}[Q.resolveConfig](e,t){let n=this.ctx[GB.intercept],r=[];for(;this.name in n;)Object.hasOwn(n,this.name)&&r.unshift(n[this.name]),n=Object.getPrototypeOf(n);return e&&r.unshift(e),t&&r.push(t),this.Config?.merge?this.Config.merge(...r):Object.assign({},...r)}static[Symbol.hasInstance](e){if(!e)return!1;let t=e.constructor;for(;t;){if(t=t.prototype?.constructor,t===this)return!0;t&&=Object.getPrototypeOf(t)}return!1}});var KB=class{contributions=new Gz;context=new GB;constructor(){let e=this.contributions;this.context.provide(`studio`,{ui:{register(t,n,r){return t.effect(()=>e.register(n,r))}}})}async mount(e){let t=t=>e.apply(t);Object.assign(t,{inject:[...new Set([`studio`,...e.inject??[]])]}),e.name&&Object.defineProperty(t,"name",{configurable:!0,value:e.name});let n=await this.context.plugin(t);return{dispose:()=>n.dispose()}}async dispose(){await this.context.fiber.dispose()}},qB=new KB,JB=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}];function YB(e,t=[]){let n=e.filter(e=>e.state===`ready`&&e.compatible),r=new Set([...n.map(e=>e.providerRef),...t.filter(e=>e.selectable).map(e=>e.providerRef)]);return r.size===0?[...JB]:[...JB,{value:`plugin`,label:r.size===1?`${n[0]?.displayName||t.find(e=>e.selectable)?.displayName||`DSH AgentProvider`} · Plugin`:`DSH AgentProvider · ${r.size} 个可用`}]}var XB=`agentkit.studio.agentDraft.v1`;function ZB(e){return e?.requiredSecretRefs?.[0]||e?.contract?.credentialRef||e?.contract?.credential_ref||e?.contract?.requiredSecretRefs?.[0]||e?.contract?.required_secret_refs?.[0]||``}var QB={loose:{title:`宽松权限策略`,description:`本地 Tool 全部自动允许,外部操作仍需审批。`},strict:{title:`严格权限策略`,description:`只读 Tool 自动允许,外部或写入操作需要审批。`},custom:{title:`自定义权限策略`,description:`沿用每个 Tool Contract 中配置的审批策略。`}},$B=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}],eV=[[`定义 Agent`,`模板与系统提示词`],[`绑定能力`,`Model · Tool · MCP · Skill`],[`Prompt 与策略`,`检查并调整`],[`检查并创建`,`构建与打开会话`]],tV=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]),nV=[`deepseek`,`glm`,`kimi`,`minimax`,`qwen`];function rV(e){let t=String(e.contract?.model||e.name||``).toLowerCase(),n=t.includes(`/`)?t.split(`/`,2)[1]:t,r=n.replaceAll(`.`,`-`),i=nV.findIndex(e=>r===e||r.startsWith(e===`qwen`?e:`${e}-`)),a=(n.match(/\d+/g)||[]).slice(0,8).map(e=>-Number(e));for(;a.length<8;)a.push(0);return[i<0?nV.length:i,a,n]}function iV(e,t){let[n,r,i]=rV(e),[a,o,s]=rV(t);if(n!==a)return n-a;for(let e=0;enull);if(!t.ok)throw Error(n?.error?.message||`构建状态获取失败(${t.status})`);if(tV.has(n?.status)){if(n.status!==`SUCCEEDED`)throw Error(n.error?.message||`构建未完成`);return n}await new Promise(e=>window.setTimeout(e,200))}throw Error(`构建等待超时`)}function lV({editingAgentId:e,viewportMode:t,onCreated:n,onAgentsChanged:r}){let[i,a]=(0,s.useState)(`quick`),[o,c]=(0,s.useState)(!1),[l,u]=(0,s.useState)(`尚未保存`),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)([]),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(`{}`),[b,x]=(0,s.useState)(!1),[S,C]=(0,s.useState)({}),w=Kz(qB.contributions,Wz.agentProvider),[T,E]=(0,s.useState)(1),[D,O]=(0,s.useState)(1),k=y_({resolver:k_(xD),defaultValues:{name:`New Agent`,slug:Lz(),runtimeType:`codex`,template:`blank`,prompt:``,description:``,audience:`产品与技术负责人`,language:`zh-CN`,depth:`deep`,format:`report`,systemPrompt:``,taskPrompt:``,buildAfterCreate:!0}}),{name:M,slug:P,runtimeType:F,template:I,description:L,prompt:R,audience:z,language:B,depth:H,format:ee,systemPrompt:te,taskPrompt:ne,buildAfterCreate:re}=k.watch(),[ie,ae]=(0,s.useState)([]),[oe,se]=(0,s.useState)([]),[ce,le]=(0,s.useState)([]),[ue,de]=(0,s.useState)([]),[W,fe]=(0,s.useState)(`strict`),[pe,me]=(0,s.useState)(`auto`),[he,_e]=(0,s.useState)(`shadow`),[ve,ye]=(0,s.useState)(!1),[be,xe]=(0,s.useState)(`shadow`),Se=(0,s.useMemo)(()=>{let e={value:`auto`,label:`自动(推荐)`,description:`根据 Runtime 能力选择安全模式`};return F===`codex`?[e,{value:`native`,label:`原生 Runtime 管理`,description:`由 Codex 等原生 Runtime 管理最终上下文`}]:F===`langgraph`?[e,{value:`framework`,label:`框架管理`,description:`保留 LangGraph 原有行为`},{value:`ksadk`,label:`KsADK 管理`,description:`统一编译 Prompt 并规划上下文`}]:[e,{value:`framework`,label:`框架管理`,description:`保留 ADK 原有行为`}]},[F]),[Ce,we]=(0,s.useState)(`idle`),[Te,De]=(0,s.useState)(`compose`),[Oe,ke]=(0,s.useState)(``),[Ae,je]=(0,s.useState)(!1),[Me,Ne]=(0,s.useState)(!1),[Pe,Fe]=(0,s.useState)(null),[Ie,Re]=(0,s.useState)(!1),ze=(0,s.useRef)(null),Be=(0,s.useRef)(null),He=(0,s.useRef)(0),We=(0,s.useRef)(!1);(0,s.useEffect)(()=>{Se.some(e=>e.value===pe)||me(`auto`)},[pe,Se]);let[Ge,qe]=(0,s.useState)([]),[Je,Ye]=(0,s.useState)(``),[Xe,Ze]=(0,s.useState)(``),[$e,rt]=(0,s.useState)([]),[it,at]=(0,s.useState)([]),[st,lt]=(0,s.useState)([]),[ut,dt]=(0,s.useState)([]),[ft,pt]=(0,s.useState)(null),mt=y_({resolver:k_(CD),defaultValues:{name:``,slug:Lz(),runtimeType:`codex`,prompt:``,description:``,modelProfileId:void 0}}),[ht,gt]=(0,s.useState)(!1),[vt,bt]=(0,s.useState)(``),[St,Ct]=(0,s.useState)(``),[wt,Tt]=(0,s.useState)(null),[Et,K]=(0,s.useState)(null),[Dt,Ot]=(0,s.useState)(!1),kt=(0,s.useRef)(null);(0,s.useEffect)(()=>()=>kt.current?.abort(),[]);let[At,jt]=(0,s.useState)(null),[Mt,Nt]=(0,s.useState)(null),Pt=y_({resolver:k_(wD),defaultValues:{name:``,slug:Lz()}}),[Ft,It]=(0,s.useState)(null),Lt=y_({resolver:k_(TD),defaultValues:{name:``,slug:Lz(),path:`.`}}),Rt=Lt.watch(`path`),[zt,Bt]=(0,s.useState)(!1),[Vt,Ht]=(0,s.useState)(``),Ut=(0,s.useCallback)(async()=>{try{let[e,t,n]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null),g(`/api/v1/agent-providers`).then(e=>e.json()).catch(()=>null)]),r=e.items||[],i=r.filter(e=>e.kind===`model`&&(e.source===`local`||e.source===`market`)),a=t?.items?.length?[...i,...t.items]:r.filter(e=>e.kind===`model`);f([...a,...r.filter(e=>e.kind!==`model`)]);let o=n?.items||[];m(o),_(e=>o.some(t=>t.providerRef===e&&t.selectable)?e:o.find(e=>e.selectable)?.providerRef||``);let s=[...new Set(a.map(ZB).filter(e=>e.startsWith(`env://`)))],c=await Promise.all(s.map(async e=>{let t=e.slice(6);try{let n=await g(`/api/v1/credentials/${encodeURIComponent(t)}`);return[e,n.ok?await n.json():{configured:!1}]}catch{return[e,{configured:!1}]}}));C(Object.fromEntries(c))}catch{}},[]);(0,s.useEffect)(()=>{Ut()},[Ut]);let Wt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`model`&&[`ready`,`missing-secret`].includes(e.status)).sort(iV),[d]),Gt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`tool`&&e.status===`ready`),[d]),Kt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`mcp`),[d]),qt=(0,s.useMemo)(()=>d.filter(e=>e.kind===`skill`&&e.status===`ready`),[d]),Jt=(0,s.useMemo)(()=>{let e=new Set(p.map(e=>e.providerRef));return[...p,...w.filter(t=>t.state===`ready`&&t.compatible&&!e.has(t.providerRef)).map(e=>({providerRef:e.providerRef,pluginId:e.id,resolvedVersion:`cordis`,displayName:e.displayName,state:`enabled`,compatible:!0,selectable:!0,reason:null,permissions:[],isolation:`cordis`,configSchemaDeclared:!1,secretFields:[]}))]},[p,w]),Yt=(0,s.useMemo)(()=>Jt.find(e=>e.providerRef===h),[Jt,h]),Xt=(0,s.useMemo)(()=>Jt.map(e=>({value:e.providerRef,label:e.displayName,description:AD(e),disabled:!e.selectable})),[Jt]),Zt=(0,s.useMemo)(()=>YB(w,p),[p,w]);(0,s.useEffect)(()=>{h&&Jt.some(e=>e.providerRef===h&&e.selectable)||_(Jt.find(e=>e.selectable)?.providerRef||``)},[Jt,h]);let Qt=(0,s.useCallback)(e=>d.find(t=>t.resourceId===e),[d]),$t=(0,s.useCallback)(e=>{let t=ZB(e);return t?S[t]:void 0},[S]),en=(0,s.useCallback)(e=>e?$t(e)?.configured??e.status===`ready`:!1,[$t]),tn=mt.watch(`runtimeType`),nn=(0,s.useMemo)(()=>Wt.map(e=>({value:e.resourceId,label:e.displayName,description:`${e.contract?.model||e.name} · ${en(e)?`凭证已配置`:`需配置凭证`}`})),[en,Wt]),rn=(0,s.useMemo)(()=>Wt.find(e=>String(e.contract?.model||e.name).toLowerCase()===`deepseek-v4-flash`)?.resourceId||Wt[0]?.resourceId||``,[Wt]);(0,s.useEffect)(()=>{if(i!==`conversation`){We.current=!1;return}We.current||!rn||(We.current=!0,Xe||Ze(rn),$e.length||rt([rn]))},[$e.length,Xe,i,rn]);function an(e){let t=new Set(e),n=Wt.map(e=>e.resourceId).filter(e=>t.has(e));rt(n),mt.setValue(`modelProfileId`,n[0]||``,{shouldDirty:!0,shouldValidate:!0})}function on(){return`${XB}:local-workspace`}function sn(){try{window.localStorage.setItem(on(),JSON.stringify({version:1,savedAt:new Date().toISOString(),mode:i,wizard:{step:T,maxStep:D,template:I,runtime:F,depth:H,selectedTools:oe,selectedSkills:ue,selectedMcp:ce,selectedModels:ie,policy:W,contextOwnership:pe,contextEngineRollout:he,memoryEnabled:ve,memoryWriteRollout:be,selectedProviderRef:h,providerConfigText:v,providerPermissionsApproved:b},fields:{name:M,slug:P,description:L,prompt:R,audience:z,language:B,format:ee,systemPrompt:te,taskPrompt:ne,buildAfterCreate:re}})),u(`已保存 ${new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`}).format(new Date)}`)}catch{}}function cn(){u(`有未保存更改`)}let ln=(0,s.useCallback)(()=>({prompt:``,goal:R,description:L,taskPrompt:ne,audience:z,language:B,depth:H,outputFormat:ee,modelProfileId:ie[0]||null,modelProfileIds:ie,toolResourceIds:oe,skillResourceIds:ue,mcpResourceIds:ce,policyTemplate:W,executionStrategy:I===`research`?`plan-act-observe`:`direct`,maxSteps:I===`research`?28:12,timeoutSeconds:I===`research`?900:120}),[R,L,ne,I,z,B,H,ee,ie,oe,ue,ce,W]),un=(0,s.useCallback)(async({preservePrompt:e=!0}={})=>{let t=++He.current;De(`compose`),we(`composing`);try{let n=await g(`/api/v1/agent-templates/${I}:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(ln())}),r=await n.json();if(!n.ok)throw Error(r?.error?.message||`生成 Agent 配置失败(${n.status})`);if(t!==He.current)return;ze.current=r;let i=r.spec?.bindings||{};se(F===`codex`?[]:(i.tools||[]).map(e=>e.resourceId)),de((i.skills||[]).map(e=>e.resourceId)),le((i.mcpServers||[]).map(e=>e.resourceId));let a=i.modelProfileIds?.length?i.modelProfileIds:i.modelProfileId?[i.modelProfileId]:[];a.length&&ae(a),(!e||!te.trim())&&k.setValue(`systemPrompt`,r.spec?.instructions?.system||R.trim(),{shouldDirty:!0}),(!e||!ne.trim())&&k.setValue(`taskPrompt`,r.spec?.instructions?.task||``,{shouldDirty:!0}),we(`done`)}catch(e){t===He.current&&(we(`idle`),ke(e.message||`生成 Agent 配置失败`))}},[I,ln,F,te,ne,k]),dn=(0,s.useCallback)(async()=>{let e=ie[0];if(!e){ke(`请先选择用于优化 Prompt 的模型。`);return}let t=++He.current;ke(``),De(`optimize`),we(`composing`);try{let n=[`请在不改变业务目标、Runtime 和已选能力的前提下,重写并增强这个 Agent 的角色与任务契约。`,`system 必须明确角色、目标、事实边界、失败处理和回答原则;task 必须明确每次请求的执行步骤、约束和交付结构。`,`不要返回解释,只生成可审查的 Agent Draft Patch。`,`Agent 名称:${M.trim()||`未命名 Agent`}`,`业务描述:${L.trim()||`未填写`}`,`原始目标:${R.trim()}`,`当前角色与系统提示词:${te.trim()||`未生成`}`,`当前任务契约:${ne.trim()||`未生成`}`].join(`
+
+`),r=`quick-optimize-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,i=await g(`/api/v1/authoring/conversations:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messages:[{role:`user`,content:n}],modelProfileId:e,runtimeType:F===`plugin`?`codex`:F,agentModelProfileIds:ie,agentDefaultModelProfileId:e,toolResourceIds:F===`codex`?[]:oe,mcpResourceIds:ce,skillResourceIds:ue,requestId:r})}),a=await i.json().catch(()=>null);if(!i.ok)throw Error(a?.error?.message||`优化 Prompt 失败(${i.status})`);if(t!==He.current)return;if(a?.fallback?.active)throw Error(`生成模型暂时不可用,已保留当前角色与任务契约,请稍后重试。`);let o=a?.proposal?.spec||{},s=String(o.instructions?.system||a?.proposal?.instructions?.system||``).trim(),c=String(o.instructions?.task||a?.proposal?.instructions?.task||``).trim();if(!s||!c)throw Error(`生成模型没有同时返回角色提示词与任务契约,已保留当前内容。`);k.setValue(`systemPrompt`,s,{shouldDirty:!0,shouldValidate:!0}),k.setValue(`taskPrompt`,c,{shouldDirty:!0,shouldValidate:!0}),ze.current?.spec&&(ze.current={...ze.current,spec:{...ze.current.spec,instructions:{system:s,task:c}}}),cn(),we(`done`)}catch(e){t===He.current&&(we(`done`),ke(e.message||`优化 Prompt 失败,已保留当前内容。`))}},[L,M,R,k,F,ce,ie,ue,oe,te,ne]);async function fn(e){if(!(e<1||e>4)){if(e>T){if(T===1){if(!await k.trigger([`name`,`slug`,`runtimeType`,`prompt`,`audience`],{shouldFocus:!0})){ke(`请修正标记字段后继续。`);return}if(F===`plugin`){if(!Yt?.selectable){ke(Yt?.reason?.message||`请先在插件中心安装并启用一个兼容的 AgentProvider。`);return}try{OD(v,Yt.secretFields)}catch(e){ke(e.message||`Provider 配置无效`);return}if(Yt.permissions.length&&!b){ke(`请先确认 AgentProvider 请求的权限。`);return}}}if(T===2&&!ie.length){ke(`请至少选择一个模型后继续。`);return}}ke(``),e===3&&Ce===`idle`&&un({preservePrompt:!0}),E(e),O(t=>Math.max(t,e)),cn()}}async function pn(e){ke(``),je(!0);try{if(ze.current||await un({preservePrompt:!1}),!ze.current)throw Error(`未能生成 Agent 配置,请检查模板和能力绑定后重试。`);let t=JSON.parse(JSON.stringify(ze.current?.spec||{}));if(t.instructions={system:e.systemPrompt.trim(),task:e.taskPrompt.trim()},t.description=e.description.trim()||t.description,t.context={...t.context||{},ownership:pe,promptOwnership:pe===`ksadk`?`ksadk`:pe===`framework`?`framework`:t.context?.promptOwnership||`framework`,rollout:{...t.context?.rollout||{},contextEngine:he,memoryWrite:ve?be:`off`}},t.memory={...t.memory||{},enabled:ve,recall:{...t.memory?.recall||{},enabled:ve}},e.runtimeType===`plugin`){if(!Yt?.selectable)throw Error(Yt?.reason?.message||`所选 AgentProvider 当前不可用`);if(Yt.permissions.length&&!b)throw Error(`请先确认 AgentProvider 请求的权限`);t.runtime={type:`plugin`,providerRef:Yt.providerRef,providerConfig:OD(v,Yt.secretFields)},t.security={...t.security||{},allowedPermissions:[...new Set([...t.security?.allowedPermissions||[],...Yt.permissions])].sort()}}let r=await g(`/api/v1/authoring/quick`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim(),runtimeType:e.runtimeType,description:t.description,template:e.template,spec:t})}),i=await r.json().catch(()=>null);if(!r.ok){if(Nb(i,k.setError)){E(1);return}throw Error(i?.error?.message||`创建失败(${r.status})`)}let a=String(i?.metadata?.id||``);if(!a)throw Error(`创建响应未返回 Agent 标识`);if(e.buildAfterCreate){let e=Number(i?.metadata?.revision||1),t=await g(`/api/v1/agents/${encodeURIComponent(a)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${a}-r${e}-${Date.now()}`},body:JSON.stringify({revision:e,runEvaluation:!1})}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`构建提交失败(${t.status})`);let r=String(n?.id||``);if(!r)throw Error(`构建响应未返回操作标识`);await cV(r)}try{window.localStorage.removeItem(on())}catch{}n(a,e.buildAfterCreate)}catch(e){ke(e.message||`创建失败`)}finally{je(!1)}}async function mn(){let e=Je.trim();if(!e||!Xe||!$e.length){bt(`请输入需求并选择用于构建的模型。`);return}if(ht)return;bt(``),Ct(``);let t=[...Ge,{role:`user`,content:e}];qe(t),Ye(``),gt(!0),K(Date.now());let n=`conv-${Date.now()}-${Math.random().toString(36).slice(2,10)}`;Tt(`resolving_model`),hn(n);try{let e=await g(`/api/v1/authoring/conversations:compose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({messages:t,modelProfileId:Xe,runtimeType:tn,agentModelProfileIds:$e,agentDefaultModelProfileId:$e[0]||null,toolResourceIds:tn===`codex`?[]:it,mcpResourceIds:st,skillResourceIds:ut,requestId:n})}),r=await e.json();if(!e.ok)throw Error(r?.error?.message||`生成失败(${e.status})`);Tt(`done`),r?.fallback?.active&&Ct(`所选生成模型暂时未能返回可用草稿。Studio 已按当前对话和你选定的 Runtime、模型与能力资源生成可编辑的本地兜底草稿;确认创建前请检查并补全。`),pt(r.proposal),Ot(!1);let i=r.proposal.spec||{description:r.proposal.description||``,instructions:r.proposal.instructions||{}};mt.reset({name:r.proposal.name||``,slug:Lz(),runtimeType:tn,prompt:i.instructions?.system||``,description:i.description||r.proposal.description||``,modelProfileId:i.bindings?.modelProfileId||$e[0]}),qe([...t,{role:`assistant`,content:JSON.stringify(oV(r.proposal))}])}catch(e){Tt(`failed`),bt(e.message||`对话构建失败`)}finally{kt.current?.abort(),kt.current=null,gt(!1)}}function hn(e){let t=new AbortController;return kt.current?.abort(),kt.current=t,(async()=>{for(;!t.signal.aborted;){if(await new Promise(e=>window.setTimeout(e,800)),t.signal.aborted)return;try{let n=await g(`/api/v1/authoring/conversations:status/${encodeURIComponent(e)}`,{signal:t.signal});if(!n.ok)continue;let r=await n.json();r?.stage&&Tt(String(r.stage))}catch{return}}})(),t}async function gn(e){if(ft){gt(!0),bt(``);try{let t=ft.spec||{description:ft.description||``,instructions:ft.instructions||{}},r=$e[0]||e.modelProfileId||null,i=$e.length?$e:r?[r]:[],a=e.runtimeType===`codex`?[]:it,o=sV(t,{description:e.description?.trim()||t.description||ft.description||``,runtime:null,model:null,instructions:{system:e.prompt.trim(),task:t.instructions?.task||``},bindings:{modelProfileId:r,modelProfileIds:i,modelParameters:null,policyTemplate:`strict`,tools:a.map(e=>({resourceId:e})),mcpServers:st.map(e=>({resourceId:e})),skills:ut.map(e=>({resourceId:e}))}}),s=await g(`/api/v1/authoring/quick`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim(),runtimeType:e.runtimeType,description:o.description,spec:o})}),c=await s.json().catch(()=>null);if(!s.ok){if(Nb(c,mt.setError))return;throw Error(c?.error?.message||`创建失败(${s.status})`)}n(c?.metadata?.id)}catch(e){bt(e.message||`创建失败`)}finally{gt(!1)}}}async function _n(){if(At){Bt(!0),Ht(``);try{let e=new FormData;e.append(`file`,At);let t=await g(`/api/v1/authoring/imports:inspect`,{method:`POST`,body:e}),n=await t.json();if(!t.ok)throw Error(n?.error?.message||`检查失败(${t.status})`);Nt(n),Pt.reset({name:n.displayName||``,slug:Lz()})}catch(e){Ht(e.message)}finally{Bt(!1)}}}async function vn(e){if(Mt){Bt(!0),Ht(``);try{let t=await g(`/api/v1/authoring/imports/${encodeURIComponent(Mt.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim()||void 0})}),r=await t.json();if(!t.ok){if(Nb(r,Pt.setError))return;throw Error(r?.error?.message||`导入失败(${t.status})`)}n(r?.metadata?.id)}catch(e){Ht(e.message)}finally{Bt(!1)}}}async function yn(){if(await Lt.trigger(`path`)){Bt(!0),Ht(``);try{let e=await g(`/api/v1/authoring/projects:inspect`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:Rt.trim()})}),t=await e.json();if(!e.ok)throw Error(t?.error?.message||`检测失败(${e.status})`);It(t),Lt.reset({name:t.name||`Detected Agent`,slug:Lz(),path:Rt})}catch(e){Ht(e.message)}finally{Bt(!1)}}}async function bn(e){if(Ft){Bt(!0),Ht(``);try{let t=await g(`/api/v1/authoring/projects/${encodeURIComponent(Ft.inspectionToken)}:commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e.name.trim(),slug:e.slug.trim()||void 0,modelProfileId:Wt[0]?.resourceId||null})}),r=await t.json();if(!t.ok){if(Nb(r,Lt.setError))return;throw Error(r?.error?.message||`创建失败(${t.status})`)}n(r?.metadata?.id)}catch(e){Ht(e.message)}finally{Bt(!1)}}}let xn=I===`research`?`深度调研`:`空白 Agent`,Sn={codex:`Codex`,adk:`ADK`,langgraph:`LangGraph`,plugin:`外部 Provider`}[F]||F,Cn=QB[W],wn=ie.map(e=>Qt(e)?.displayName||e).join(`、`)||`待选择`,Tn=ie.map(Qt).filter(e=>!!e),En=Tn.length===0?`未选择模型;Agent 可以先构建,但运行前需要配置。`:Tn.every(en)?`已选 ${Tn.length} 个模型 · 凭证已配置`:`部分模型凭证未配置;Agent 可以先构建,但运行前需要配置 API Key。`,Dn=Tn.some(e=>!en(e)),On=F===`codex`,kn=On?[...eV.slice(0,3),[`检查并创建`,`校验声明与打开会话`]]:eV,An=(0,s.useCallback)((e=!1)=>{c(!1),e&&requestAnimationFrame(()=>Be.current?.focus())},[]);(0,s.useEffect)(()=>{t!==`compact`&&An()},[An,t]);function jn(e){a(e),t===`compact`&&An(!0)}let Mn=[{id:`quick`,icon:xt,label:`快速创建`,sub:`配置 YAML Revision`},{id:`conversation`,icon:Le,label:`对话构建`,sub:`多轮生成 Draft Patch`},{id:`import`,icon:_t,label:`导入`,sub:`YAML / Agent ZIP`},{id:`project`,icon:Ee,label:`项目识别`,sub:`检测 ADK / LangGraph`}],Nn=!e&&i===`conversation`?`workbench`:`document`,Pn=t=>(0,G.jsxs)(`div`,{className:`create-rail-panel`,children:[t&&(0,G.jsx)(`div`,{className:`create-rail-label`,children:`创建方式`}),!e&&(0,G.jsx)(`nav`,{className:`authoring-mode-tabs`,"aria-label":`创建方式`,role:`tablist`,children:Mn.map(e=>{let t=e.icon;return(0,G.jsxs)(`button`,{id:`authoring-tab-${e.id}`,className:i===e.id?`active`:``,type:`button`,role:`tab`,"aria-selected":i===e.id,"aria-controls":`authoring-panel-${e.id}`,title:`${e.label}:${e.sub}`,onClick:()=>jn(e.id),children:[(0,G.jsx)(t,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.sub})]})]},e.id)})}),(e||i===`quick`)&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`create-rail-divider`}),(0,G.jsx)(`div`,{className:`create-rail-label wizard-step-label`,children:`配置步骤`}),(0,G.jsx)(`nav`,{className:`wizard-steps`,"aria-label":`创建步骤`,children:kn.map((t,n)=>{let r=n+1,i=!e&&rD,onClick:()=>fn(r),children:[(0,G.jsx)(`span`,{className:`step-number`,children:i?(0,G.jsx)(V,{size:13,strokeWidth:3}):r}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:t[0]}),(0,G.jsx)(`small`,{children:t[1]})]})]},r)})})]})]});return(0,G.jsxs)(`div`,{className:`create-shell page-container`,"data-layout":Nn,"data-authoring-mode":i,"data-editing":e?`true`:`false`,children:[(0,G.jsxs)(Sd,{children:[!e&&t===`compact`&&(0,G.jsx)(`button`,{ref:Be,className:`icon-button compact-create-rail-trigger`,type:`button`,"aria-label":`查看创建入口与配置步骤`,title:`查看创建入口与配置步骤`,"aria-expanded":o,"aria-controls":`createRail`,onClick:()=>c(e=>!e),children:(0,G.jsx)(Ke,{size:16})}),!e&&i===`quick`&&(0,G.jsx)(`span`,{className:`tag`,children:l})]}),(0,G.jsxs)(`div`,{className:`create-workbench`,children:[!e&&t!==`compact`&&(0,G.jsx)(`aside`,{id:`createRail`,className:`create-rail`,"aria-label":`创建方式与步骤`,children:Pn(!0)}),!e&&t===`compact`&&o&&(0,G.jsx)(Oa,{open:!0,compact:!0,title:`创建方式`,subtitle:`切换创建入口,或查看当前配置步骤。`,onOpenChange:e=>{e||An(!0)},children:(0,G.jsx)(`div`,{id:`createRail`,children:Pn(!1)})}),(0,G.jsxs)(`div`,{className:`create-stage`,children:[e&&(0,G.jsx)(zD,{agentId:e,catalog:d,providers:p,onSaved:(e,t)=>n(e,t),onAppearanceSaved:r}),!e&&i===`conversation`&&(0,G.jsxs)(`section`,{id:`authoring-panel-conversation`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-conversation`,children:[(0,G.jsxs)(`div`,{className:`authoring-panel-heading conversation-panel-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`Conversation authoring`}),(0,G.jsx)(`h2`,{children:`对话创建 Agent`}),(0,G.jsx)(`p`,{children:`描述目标,逐轮完善;准备好后再检查并确认草稿。`})]}),(0,G.jsx)(`span`,{className:`tag`,children:`不会自动创建`})]}),(0,G.jsxs)(`div`,{className:`conversation-authoring-layout`,"data-draft-state":ft?Dt?`review`:`summary`:`empty`,children:[(0,G.jsxs)(`section`,{className:`conversation-chat`,"aria-label":`对话创建`,children:[(0,G.jsxs)(`div`,{className:`conversation-chat-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`从需求开始`}),(0,G.jsx)(`p`,{children:`像对话一样说明要做什么;后续可以继续补充边界和能力。`})]}),(0,G.jsx)(`span`,{className:`conversation-context-state`,children:Ge.length?`${Math.ceil(Ge.length/2)} 轮上下文`:`持续保留上下文`})]}),(0,G.jsxs)(`div`,{className:`conversation-transcript`,"aria-live":`polite`,children:[Ge.length===0&&(0,G.jsxs)(`div`,{className:`conversation-empty-state`,children:[(0,G.jsx)(ct,{size:18,"aria-hidden":`true`}),(0,G.jsx)(`strong`,{children:`从一句需求开始`}),(0,G.jsx)(`p`,{children:`例如:帮我做一个销售日报 Agent,能汇总群聊记录并标出待跟进事项。`})]}),Ge.map((e,t)=>{let n=e.role===`user`?null:aV(e.content);return(0,G.jsx)(`div`,{className:`conversation-message ${e.role===`user`?`user`:`assistant`}`,children:e.role===`user`?(0,G.jsx)(`p`,{children:e.content}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`strong`,{children:n?.title}),(0,G.jsx)(`p`,{children:n?.body})]})},t)}),ht&&(0,G.jsxs)(`div`,{className:`conversation-thinking`,role:`status`,children:[(0,G.jsxs)(`span`,{className:`conversation-thinking-orb`,"aria-hidden":`true`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}),(0,G.jsx)(Uz,{stage:wt,startedAt:Et})]})]}),vt&&(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`对话构建失败`}),(0,G.jsx)(`p`,{children:vt})]})]}),St&&(0,G.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`已生成本地兜底草稿`}),(0,G.jsx)(`p`,{children:St})]})]}),(0,G.jsxs)(`form`,{className:`conversation-composer`,onSubmit:e=>{e.preventDefault(),mn()},children:[(0,G.jsx)(`textarea`,{rows:3,placeholder:`描述你想创建或调整的 Agent…`,value:Je,onChange:e=>Ye(e.target.value),onKeyDown:e=>{let t=e.nativeEvent;e.key===`Enter`&&!e.shiftKey&&!t.isComposing&&t.keyCode!==229&&(e.preventDefault(),mn())}}),(0,G.jsxs)(`div`,{className:`conversation-composer-footer`,children:[(0,G.jsxs)(`span`,{children:[`Enter 发送 `,(0,G.jsx)(`b`,{children:`·`}),` Shift + Enter 换行`]}),(0,G.jsx)(`button`,{className:`conversation-send-button`,type:`submit`,disabled:ht||!Je.trim(),"aria-label":ht?`正在生成`:`生成方案`,title:ht?`正在生成`:`生成方案`,children:(0,G.jsx)(nt,{size:16,"aria-hidden":`true`})})]})]}),(0,G.jsxs)(`details`,{className:`conversation-settings`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(`span`,{children:`部署配置`}),(0,G.jsxs)(`small`,{children:[$B.find(e=>e.value===tn)?.label.split(` · `)[0]||`Runtime`,` · `,$e.length||0,` 个模型 · `,ut.length+st.length+(tn===`codex`?0:it.length),` 项能力`]})]}),(0,G.jsxs)(`div`,{className:`conversation-settings-body`,children:[(0,G.jsx)(Y,{label:`生成模型 Profile`,className:`authoring-model-field`,footer:(0,G.jsx)(`span`,{children:`只决定本次如何生成草稿;默认 DeepSeek V4 Flash。`}),children:(0,G.jsx)(Fh,{ariaLabel:`选择用于生成草稿的模型`,value:Xe,options:nn,onValueChange:Ze})}),(0,G.jsx)(Y,{label:`Runtime`,requirement:`required`,htmlFor:`conversationRuntime`,error:mt.formState.errors.runtimeType?.message,children:(0,G.jsx)(Fh,{id:`conversationRuntime`,ariaLabel:`Runtime`,value:tn,options:$B,onValueChange:e=>mt.setValue(`runtimeType`,e,{shouldDirty:!0,shouldValidate:!0})})}),(0,G.jsx)(Y,{label:`Agent 可用模型`,className:`authoring-model-field`,footer:(0,G.jsx)(`span`,{children:`可多选;按目录中最新的模型作为运行默认值。`}),children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent 模型`,items:Wt,selectedIds:$e,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.contract?.model||e.name} · ${en(e)?`凭证已配置`:`需配置凭证`}`,onChange:an,searchPlaceholder:`搜索 Agent 模型`,emptyMessage:`没有可用模型`})}),(0,G.jsx)(Y,{label:`Skill`,className:`authoring-model-field`,children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent Skill`,items:qt,selectedIds:ut,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`版本化 Skill`}`,onChange:dt,searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`})}),(0,G.jsx)(Y,{label:`MCP Server`,className:`authoring-model-field`,children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent MCP Server`,items:Kt,selectedIds:st,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.description||`MCP Server`} · ${e.health?.toolCount||0} Tool`,onChange:lt,searchPlaceholder:`搜索 MCP Server`,emptyMessage:`没有已连接的 MCP Server`})}),tn===`codex`?(0,G.jsx)(`p`,{className:`helper conversation-runtime-note`,children:`Codex 使用原生工具、MCP 和 Skill;KsADK Tool 仅绑定到 ADK / LangGraph 通用 Agent。`}):(0,G.jsx)(Y,{label:`KsADK Tool`,className:`authoring-model-field`,children:(0,G.jsx)(Tb,{ariaLabel:`选择对话 Agent Tool`,items:Gt,selectedIds:it,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`本地 Tool`}`,onChange:at,searchPlaceholder:`搜索 Tool`,emptyMessage:`没有可用 Tool`})})]})]})]}),(0,G.jsx)(Vg,{...mt,children:(0,G.jsxs)(`aside`,{className:`conversation-draft-rail${ft?Dt?` is-reviewing`:``:` is-empty`}`,"aria-label":`Draft Patch`,children:[(0,G.jsxs)(`div`,{className:`conversation-draft-rail-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Draft Patch`}),(0,G.jsx)(`p`,{children:ft?`草稿已随对话更新`:`对话后生成,可随时检查`})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":ft?`ready`:`pending`,children:ft?`已更新`:`待生成`})]}),ft?Dt?(0,G.jsxs)(`form`,{className:`conversation-review-form`,onSubmit:mt.handleSubmit(gn),noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`conversation-review-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`检查并确认`}),(0,G.jsx)(`p`,{children:`编辑名称、提示词或打开左侧部署配置;确认后才会创建 Revision。`})]}),(0,G.jsx)(`button`,{type:`button`,className:`button secondary`,onClick:()=>Ot(!1),children:`收起`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`conversationName`,error:mt.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`conversationName`,...mt.register(`name`)})}),(0,G.jsx)(Rz,{id:`conversationSlug`,value:mt.watch(`slug`),onChange:e=>mt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:mt.formState.errors.slug?.message})]}),(0,G.jsx)(Y,{label:`系统提示词`,requirement:`required`,htmlFor:`conversationPrompt`,error:mt.formState.errors.prompt?.message,children:(0,G.jsx)(`textarea`,{id:`conversationPrompt`,rows:8,...mt.register(`prompt`)})}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:ht,children:[(0,G.jsx)(V,{size:16}),(0,G.jsx)(`span`,{children:`确认并创建 Revision`})]})})]}):(0,G.jsxs)(`div`,{className:`conversation-draft-summary`,children:[(0,G.jsxs)(`div`,{className:`conversation-draft-title`,children:[(0,G.jsx)(N,{size:18,"aria-hidden":`true`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:mt.watch(`name`)||ft.name}),(0,G.jsx)(`p`,{children:mt.watch(`description`)||ft.description||`已生成可编辑的 Agent 草稿`})]})]}),(0,G.jsxs)(`div`,{className:`conversation-preview-section`,children:[(0,G.jsx)(`span`,{children:`角色与系统提示词`}),(0,G.jsx)(`p`,{children:mt.watch(`prompt`)||ft?.spec?.instructions?.system||`尚未生成`})]}),(0,G.jsxs)(`div`,{className:`conversation-preview-section`,children:[(0,G.jsx)(`span`,{children:`任务契约`}),(0,G.jsx)(`p`,{children:ft?.spec?.instructions?.task||`根据对话目标完成任务。`})]}),(0,G.jsxs)(`div`,{className:`conversation-draft-tags`,children:[(0,G.jsx)(`span`,{children:$B.find(e=>e.value===tn)?.label.split(` · `)[0]||`Runtime`}),(0,G.jsxs)(`span`,{children:[$e.length,` 个模型`]}),ut.length+st.length+(tn===`codex`?0:it.length)>0&&(0,G.jsxs)(`span`,{children:[ut.length+st.length+(tn===`codex`?0:it.length),` 项能力`]})]}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>Ot(!0),children:[(0,G.jsx)(Ke,{size:16}),(0,G.jsx)(`span`,{children:`编辑并创建`})]})]}):(0,G.jsxs)(`div`,{className:`conversation-draft-empty`,children:[(0,G.jsx)(N,{size:20,"aria-hidden":`true`}),(0,G.jsx)(`strong`,{children:`从对话开始`}),(0,G.jsx)(`p`,{children:`先描述目标。草稿会在这里显示摘要,不会自动创建 Agent。`})]})]})})]})]}),!e&&i===`import`&&(0,G.jsxs)(`section`,{id:`authoring-panel-import`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-import`,children:[(0,G.jsxs)(`div`,{className:`authoring-panel-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`Agent import`}),(0,G.jsx)(`h2`,{children:`检查并导入 Agent`}),(0,G.jsx)(`p`,{children:`先解析格式、Runtime、文件清单和 SHA-256,确认后再写入。`})]}),(0,G.jsx)(`span`,{className:`tag`,children:`YAML / ZIP`})]}),(0,G.jsxs)(`div`,{className:`authoring-inspect-grid`,children:[(0,G.jsxs)(`form`,{className:`authoring-input-card`,onSubmit:e=>{e.preventDefault(),_n()},children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`01`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`选择 Agent 文件`}),(0,G.jsx)(`p`,{children:`支持 YAML 或 ZIP;检查过程不会写入 Catalog。`})]})]}),(0,G.jsx)(Y,{label:`Agent 文件`,requirement:`required`,hint:`拖放 Agent YAML / ZIP,或点击选择`,children:(0,G.jsx)(`div`,{children:(0,G.jsx)(ez,{ariaLabel:`选择 Agent YAML 或 ZIP`,accept:{"application/zip":[`.zip`],"application/yaml":[`.yaml`,`.yml`],"text/yaml":[`.yaml`,`.yml`]},maxSize:104857600,file:At,onFile:e=>{jt(e),Nt(null)},onError:Ht})})}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:zt,children:[(0,G.jsx)(tt,{size:16}),(0,G.jsx)(`span`,{children:zt?`检查中`:`只读检查`})]})})]}),(0,G.jsx)(Vg,{...Pt,children:(0,G.jsxs)(`form`,{className:`authoring-inspection-card`,onSubmit:Pt.handleSubmit(vn),noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`02`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`检查并确认`}),(0,G.jsx)(`p`,{children:`核对解析结果、警告与 RuntimeRef,再执行导入。`})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":Mt?`ready`:`pending`,"aria-live":`polite`,children:Mt?`检查完成`:`等待检查`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`importName`,error:Pt.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`importName`,...Pt.register(`name`)})}),(0,G.jsx)(Rz,{id:`importSlug`,value:Pt.watch(`slug`),onChange:e=>Pt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:Pt.formState.errors.slug?.message})]}),(0,G.jsx)(Db,{code:Mt?JSON.stringify(Mt,null,2):`选择文件并检查后显示解析结果、警告和 RuntimeRef。`,language:Mt?`json`:`text`,filename:`agent-import-inspection.json`,showLineNumbers:!!Mt,wrap:!Mt}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:!Mt||zt,children:[(0,G.jsx)(V,{size:16}),(0,G.jsx)(`span`,{children:`确认导入`})]})})]})})]}),Vt&&(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`操作失败`}),(0,G.jsx)(`p`,{children:Vt})]})]})]}),!e&&i===`project`&&(0,G.jsxs)(`section`,{id:`authoring-panel-project`,className:`authoring-mode-panel`,role:`tabpanel`,"aria-labelledby":`authoring-tab-project`,children:[(0,G.jsxs)(`div`,{className:`authoring-panel-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`eyebrow`,children:`Project detection`}),(0,G.jsx)(`h2`,{children:`识别现有项目`}),(0,G.jsx)(`p`,{children:`复用 FrameworkDetector 展示证据和置信度;确认前不修改源码。`})]}),(0,G.jsx)(`span`,{className:`tag`,children:`Workspace only`})]}),(0,G.jsx)(Vg,{...Lt,children:(0,G.jsxs)(`div`,{className:`authoring-inspect-grid`,children:[(0,G.jsxs)(`form`,{className:`authoring-input-card`,onSubmit:e=>{e.preventDefault(),yn()},children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`01`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`指定项目路径`}),(0,G.jsx)(`p`,{children:`仅识别当前工作区内的目录,不会修改项目源码。`})]})]}),(0,G.jsx)(Y,{label:`工作区相对路径`,requirement:`required`,htmlFor:`projectPath`,hint:`仅检查当前工作区内的目录,不会修改项目源码。`,error:Lt.formState.errors.path?.message,children:(0,G.jsx)(`input`,{id:`projectPath`,...Lt.register(`path`)})}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:zt,children:[(0,G.jsx)(tt,{size:16}),(0,G.jsx)(`span`,{children:zt?`检测中`:`检测项目`})]})})]}),(0,G.jsxs)(`form`,{className:`authoring-inspection-card`,onSubmit:Lt.handleSubmit(bn),noValidate:!0,children:[(0,G.jsxs)(`div`,{className:`authoring-section-heading`,children:[(0,G.jsx)(`span`,{className:`authoring-section-index`,children:`02`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`检查并确认`}),(0,G.jsx)(`p`,{children:`核对 FrameworkDetector 证据与置信度,再创建 Revision。`})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":Ft?`ready`:`pending`,"aria-live":`polite`,children:Ft?`检测完成`:`等待检测`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`显示名称`,requirement:`required`,htmlFor:`projectName`,error:Lt.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`projectName`,...Lt.register(`name`)})}),(0,G.jsx)(Rz,{id:`projectSlug`,value:Lt.watch(`slug`),onChange:e=>Lt.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),error:Lt.formState.errors.slug?.message})]}),(0,G.jsx)(Db,{code:Ft?JSON.stringify(Ft,null,2):`输入本地项目路径后显示 FrameworkDetector 证据。`,language:Ft?`json`:`text`,filename:`project-inspection.json`,showLineNumbers:!!Ft,wrap:!Ft}),(0,G.jsx)(`div`,{className:`authoring-card-actions`,children:(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:!Ft||zt,children:[(0,G.jsx)(V,{size:16}),(0,G.jsx)(`span`,{children:`确认创建 Revision`})]})})]})]})}),Vt&&(0,G.jsxs)(`div`,{className:`inline-alert error`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`操作失败`}),(0,G.jsx)(`p`,{children:Vt})]})]})]}),!e&&i===`quick`&&(0,G.jsxs)(`div`,{id:`authoring-panel-quick`,className:`wizard-layout`,role:`tabpanel`,"aria-labelledby":`authoring-tab-quick`,children:[(0,G.jsx)(Vg,{...k,children:(0,G.jsxs)(`form`,{id:`quickAgentForm`,className:`wizard-content`,onSubmit:k.handleSubmit(pn),noValidate:!0,children:[(0,G.jsxs)(`section`,{className:`wizard-panel${T===1?` active`:``}`,hidden:T!==1,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`01`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`定义 Agent 的角色`}),(0,G.jsx)(`p`,{children:`选择起点,并说明 Agent 的职责、边界和期望行为。`})]})]}),(0,G.jsxs)(`div`,{className:`field`,children:[(0,G.jsx)(`label`,{children:`创建方式`}),(0,G.jsxs)(`div`,{className:`template-grid`,children:[(0,G.jsxs)(`button`,{className:`template-card${I===`blank`?` selected`:``}`,type:`button`,onClick:()=>{k.setValue(`template`,`blank`,{shouldDirty:!0}),cn()},children:[(0,G.jsx)(`span`,{className:`template-icon`,children:(0,G.jsx)(N,{size:18})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`空白 Agent`}),(0,G.jsx)(`small`,{children:`输入系统提示词,自主选择能力和执行策略`})]}),(0,G.jsx)(`span`,{className:`choice-check`,children:(0,G.jsx)(V,{size:14})})]}),(0,G.jsxs)(`button`,{className:`template-card${I===`research`?` selected`:``}`,type:`button`,onClick:()=>{k.setValue(`template`,`research`,{shouldDirty:!0}),cn()},children:[(0,G.jsx)(`span`,{className:`template-icon`,children:(0,G.jsx)(tt,{size:18})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`深度调研`}),(0,G.jsx)(`small`,{children:`预置问题拆解、来源验证和引用报告方法`})]}),(0,G.jsx)(`span`,{className:`choice-check`,children:(0,G.jsx)(V,{size:14})})]})]})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`Agent 名称`,requirement:`required`,htmlFor:`quickAgentName`,error:k.formState.errors.name?.message,children:(0,G.jsx)(`input`,{id:`quickAgentName`,maxLength:128,placeholder:`例如:技术支持助手`,...k.register(`name`,{onChange:cn})})}),(0,G.jsx)(Rz,{value:P,onChange:e=>{k.setValue(`slug`,e,{shouldDirty:!0,shouldValidate:!0}),cn()},error:k.formState.errors.slug?.message})]}),(0,G.jsx)(Y,{label:`Runtime`,requirement:`required`,htmlFor:`quickRuntime`,hint:`由所选 RuntimeAdapter 运行;Codex 支持 OpenAI Responses 与兼容代理。`,error:k.formState.errors.runtimeType?.message,children:(0,G.jsx)(Fh,{id:`quickRuntime`,ariaLabel:`Runtime`,value:F,options:Zt,onValueChange:e=>{k.setValue(`runtimeType`,e,{shouldDirty:!0,shouldValidate:!0}),cn()}})}),F===`plugin`&&(0,G.jsxs)(`div`,{className:`template-specific`,"data-testid":`external-provider-config`,children:[(0,G.jsx)(Y,{label:`AgentProvider`,requirement:`required`,htmlFor:`quickAgentProvider`,hint:`选项来自本机已安装的 agent.provider/v1;不可用版本会保留原因但不能选择。`,children:(0,G.jsx)(Fh,{id:`quickAgentProvider`,ariaLabel:`AgentProvider`,value:h,placeholder:`没有可用的 AgentProvider`,options:Xt,disabled:!Xt.some(e=>!e.disabled),onValueChange:e=>{_(e),x(!1),cn()}})}),!Yt?.selectable&&(0,G.jsxs)(`div`,{className:`inline-alert warning`,role:`status`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`AgentProvider 当前不可用`}),(0,G.jsx)(`p`,{children:Yt?.reason?.message||`请先在插件中心安装并启用兼容的 AgentProvider。`})]})]}),(0,G.jsx)(Y,{label:`Provider 配置`,requirement:`optional`,htmlFor:`quickProviderConfig`,hint:`填写 JSON 对象;密码、Token、API Key 只能使用 env://、secret://、credential:// 或 vault:// 引用。`,children:(0,G.jsx)(`textarea`,{id:`quickProviderConfig`,className:`mono`,rows:5,value:v,onChange:e=>{y(e.target.value),cn()}})}),Yt?.permissions.length?(0,G.jsxs)(`label`,{className:`post-create-option`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:b,onChange:e=>{x(e.target.checked),cn()}}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`确认 Provider 请求的权限`}),(0,G.jsxs)(`small`,{children:[Yt.permissions.join(`、`),`;确认后才会写入本 Revision。`]})]})]}):null]}),(0,G.jsx)(Y,{label:`描述`,requirement:`optional`,htmlFor:`quickDescription`,error:k.formState.errors.description?.message,children:(0,G.jsx)(`input`,{id:`quickDescription`,maxLength:1024,placeholder:`简要说明这个 Agent 解决什么问题`,...k.register(`description`,{onChange:cn})})}),(0,G.jsx)(Y,{label:`Agent 目标与要求`,requirement:`required`,htmlFor:`quickPrompt`,hint:`写清角色、目标、工作边界和回答方式。`,error:k.formState.errors.prompt?.message,footer:(0,G.jsxs)(`div`,{className:`field-footer`,children:[(0,G.jsx)(`span`,{children:`角色 · 目标 · 边界 · 回答方式`}),(0,G.jsxs)(`span`,{children:[R.length,` / 32768`]})]}),children:(0,G.jsx)(`textarea`,{id:`quickPrompt`,rows:7,maxLength:32768,placeholder:`例如:你是一名企业技术支持助手。先识别问题类型,再结合知识库给出准确、可执行的处理步骤;信息不足时先提问,不要编造事实。`,...k.register(`prompt`,{onChange:cn})})}),I===`research`&&(0,G.jsxs)(`div`,{className:`template-specific`,children:[(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`目标读者`,requirement:`required`,htmlFor:`researchAudience`,error:k.formState.errors.audience?.message,children:(0,G.jsx)(`input`,{id:`researchAudience`,maxLength:256,...k.register(`audience`)})}),(0,G.jsx)(Y,{label:`输出语言`,requirement:`required`,htmlFor:`researchLanguage`,children:(0,G.jsx)(Fh,{id:`researchLanguage`,ariaLabel:`输出语言`,value:B,options:[{value:`zh-CN`,label:`简体中文`},{value:`en-US`,label:`English`}],onValueChange:e=>k.setValue(`language`,e,{shouldDirty:!0,shouldValidate:!0})})})]}),(0,G.jsxs)(`div`,{className:`field`,children:[(0,G.jsx)(`label`,{children:`调研深度`}),(0,G.jsx)(`div`,{className:`choice-grid`,children:[{value:`focused`,label:`聚焦`,desc:`8 个步骤,适合快速事实核验`,time:`约 3 分钟`},{value:`standard`,label:`标准`,desc:`16 个步骤,兼顾范围和深度`,time:`约 8 分钟`},{value:`deep`,label:`深度`,desc:`28 个步骤,多来源交叉验证`,time:`约 15 分钟`}].map(e=>(0,G.jsxs)(`button`,{className:`choice-card${H===e.value?` selected`:``}`,type:`button`,onClick:()=>k.setValue(`depth`,e.value,{shouldDirty:!0}),children:[(0,G.jsx)(`span`,{className:`choice-check`,children:(0,G.jsx)(V,{size:14})}),(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`span`,{children:e.desc}),(0,G.jsx)(`small`,{children:e.time})]},e.value))})]}),(0,G.jsx)(Y,{label:`默认输出`,requirement:`required`,htmlFor:`researchFormat`,children:(0,G.jsx)(Fh,{id:`researchFormat`,ariaLabel:`默认输出`,value:ee,options:[{value:`report`,label:`结构化研究报告`},{value:`brief`,label:`决策简报`},{value:`evidence-table`,label:`证据矩阵与结论`}],onValueChange:e=>k.setValue(`format`,e,{shouldDirty:!0,shouldValidate:!0})})})]})]}),(0,G.jsxs)(`section`,{className:`wizard-panel${T===2?` active`:``}`,hidden:T!==2,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`02`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`选择 Agent 可以使用的能力`}),(0,G.jsx)(`p`,{children:`所有依赖都会在构建时锁定版本和摘要,并由权限策略控制调用。`})]})]}),F===`codex`&&(0,G.jsxs)(`div`,{className:`inline-alert warning codex-capability-notice`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`ManagedRuntime 不绑定 ksadk Tool`}),(0,G.jsx)(`p`,{children:`codex CLI 自身提供工具能力,ksadk Tool 不会绑定到 codex Agent。MCP(streamable-http)与 Skill 可绑定:MCP 经 codex config_overrides 注入,Skill 以原生 SkillInput 注入。模型仍需选择并配置凭证。`})]})]}),(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(ge,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`h3`,{children:[`模型 `,(0,G.jsx)(`span`,{className:`studio-field-requirement required`,"aria-hidden":`true`,children:`*`}),(0,G.jsx)(`span`,{className:`sr-only`,children:`必填`})]}),(0,G.jsx)(`p`,{children:`至少选择一个;支持多选`})]})]}),Dn&&(0,G.jsx)(`div`,{className:`model-profile-control`,children:(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>Fe(Tn[0]||null),children:`配置凭证`})}),(0,G.jsx)(Tb,{ariaLabel:`选择模型`,items:Wt,selectedIds:ie,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.contract?.model||e.name} · ${en(e)?`凭证已配置`:`需配置凭证`}`,onChange:e=>{ae(e),cn()},searchPlaceholder:`搜索模型`,emptyMessage:`没有可用模型`}),(0,G.jsx)(`span`,{className:`helper`,children:En})]}),F!==`codex`&&(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(yt,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`Tool 与权限`}),(0,G.jsx)(`p`,{children:`选择本地 Tool,并设置默认审批级别`})]})]}),(0,G.jsx)(`div`,{className:`segmented-control`,"aria-label":`Tool 权限模板`,children:[`loose`,`strict`,`custom`].map(e=>(0,G.jsx)(`button`,{className:W===e?`selected`:``,type:`button`,onClick:()=>{fe(e),cn()},children:{loose:`宽松`,strict:`严格`,custom:`自定义`}[e]},e))}),(0,G.jsx)(`p`,{className:`policy-description`,children:Cn.description}),(0,G.jsx)(Tb,{ariaLabel:`选择 Tool`,items:Gt,selectedIds:oe,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`本地 Tool`}`,onChange:e=>{se(e),cn()},searchPlaceholder:`搜索 Tool`,emptyMessage:`没有可用 Tool`})]}),(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(Ve,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`MCP Server`}),(0,G.jsx)(`p`,{children:`连接外部服务并提供可发现的 Tool;codex 经 config_overrides 注入 streamable-http MCP`})]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>Re(!0),children:[(0,G.jsx)(Qe,{size:14}),(0,G.jsx)(`span`,{children:`连接 MCP`})]})]}),(0,G.jsx)(Tb,{ariaLabel:`选择 MCP Server`,items:Kt,selectedIds:ce,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.description||`MCP Server`} · ${e.health?.toolCount||0} Tool · ${e.status===`ready`?`Ready`:e.status}`,onChange:e=>{le(e),cn()},searchPlaceholder:`搜索 MCP Server`,emptyMessage:`没有已连接的 MCP Server`})]}),(0,G.jsxs)(`div`,{className:`capability-section`,children:[(0,G.jsxs)(`div`,{className:`capability-heading`,children:[(0,G.jsx)(`span`,{className:`capability-icon`,children:(0,G.jsx)(ct,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`Skill`}),(0,G.jsx)(`p`,{children:`按需注入可复用的方法、知识和任务约束`})]})]}),(0,G.jsx)(Tb,{ariaLabel:`选择 Skill`,items:qt,selectedIds:ue,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${e.version} · ${e.description||`版本化 Skill`}`,onChange:e=>{de(e),cn()},searchPlaceholder:`搜索 Skill`,emptyMessage:`没有已安装的 Skill`})]})]}),(0,G.jsxs)(`section`,{className:`wizard-panel${T===3?` active`:``}`,hidden:T!==3,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`03`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`检查系统提示词与任务契约`}),(0,G.jsx)(`p`,{children:`保存前可以继续编辑,创建时会完整写入 Agent Draft。`})]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,disabled:Ce===`composing`,onClick:dn,children:[(0,G.jsx)(et,{size:14}),(0,G.jsx)(`span`,{children:Ce===`composing`?Te===`optimize`?`正在优化`:`正在生成`:`一键优化 Prompt`})]})]}),(0,G.jsxs)(`div`,{className:`prompt-status`,children:[(0,G.jsx)(`span`,{className:`status-dot ${Ce===`done`?`success`:`info`}`}),(0,G.jsx)(`span`,{children:Ce===`composing`?Te===`optimize`?`正在使用生成模型优化角色与任务契约`:`正在根据模板与能力生成角色与任务契约`:Ce===`done`?`角色与任务契约已根据当前选择生成`:`进入此步骤后生成 Prompt`})]}),(0,G.jsx)(Y,{label:`角色与系统提示词`,requirement:`required`,htmlFor:`composedSystemPrompt`,hint:`定义角色、目标、工作边界和回答原则`,error:k.formState.errors.systemPrompt?.message,children:(0,G.jsx)(`textarea`,{id:`composedSystemPrompt`,className:`prompt-editor`,rows:16,...k.register(`systemPrompt`,{onChange:cn})})}),(0,G.jsx)(Y,{label:`任务契约`,requirement:`optional`,htmlFor:`composedTaskPrompt`,hint:`约束每次请求的执行步骤、工具使用和交付结构`,error:k.formState.errors.taskPrompt?.message,children:(0,G.jsx)(`textarea`,{id:`composedTaskPrompt`,className:`prompt-editor`,rows:10,...k.register(`taskPrompt`,{onChange:cn})})}),(0,G.jsxs)(`details`,{className:`pcm-policy-card`,children:[(0,G.jsx)(`summary`,{children:(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`上下文与记忆策略`}),(0,G.jsx)(`small`,{children:`按 Runtime 能力控制 Prompt 归属、上下文优化和长期记忆`})]})}),(0,G.jsxs)(`div`,{className:`pcm-policy-body form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`上下文责任边界`,requirement:`optional`,htmlFor:`contextOwnership`,hint:`决定由平台、框架或原生 Runtime 负责最终输入。`,children:(0,G.jsx)(Fh,{id:`contextOwnership`,ariaLabel:`上下文责任边界`,value:pe,options:Se,onValueChange:e=>{me(e),cn()}})}),(0,G.jsx)(Y,{label:`上下文优化`,requirement:`optional`,htmlFor:`contextEngineRollout`,hint:`控制预算规划、压缩和降载能力的启用阶段。`,children:(0,G.jsx)(Fh,{id:`contextEngineRollout`,ariaLabel:`上下文优化`,value:he,options:[{value:`off`,label:`Runtime 默认`,description:`不启用平台上下文优化`},{value:`shadow`,label:`仅观察`,description:`记录规划证据但不接管输入`},{value:`enabled`,label:`正式启用`,description:`按预算规划并组装上下文`}],onValueChange:e=>{_e(e),cn()}})}),(0,G.jsxs)(`label`,{className:`post-create-option`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:ve,onChange:e=>{ye(e.target.checked),cn()}}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`启用长期记忆`}),(0,G.jsx)(`small`,{children:`按 Agent 和用户作用域召回相关事实;凭证不会写入 Agent 配置。`})]})]}),(0,G.jsx)(Y,{label:`记忆写入`,requirement:`optional`,htmlFor:`memoryWriteRollout`,hint:`关闭记忆时固定为不写入。`,children:(0,G.jsx)(Fh,{id:`memoryWriteRollout`,ariaLabel:`记忆写入`,value:ve?be:`off`,disabled:!ve,options:[{value:`off`,label:`不写入`},{value:`shadow`,label:`仅生成候选`},{value:`enabled`,label:`允许写入`}],onValueChange:e=>{xe(e),cn()}})})]})]})]}),(0,G.jsxs)(`section`,{className:`wizard-panel${T===4?` active`:``}`,hidden:T!==4,children:[(0,G.jsxs)(`div`,{className:`panel-heading`,children:[(0,G.jsx)(`span`,{className:`panel-index`,children:`04`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`检查配置并创建`}),(0,G.jsx)(`p`,{children:`确认 Agent 身份、能力依赖和创建后的动作。`})]})]}),(0,G.jsxs)(`div`,{className:`review-block`,children:[(0,G.jsxs)(`div`,{className:`review-title`,children:[(0,G.jsx)(`span`,{children:`Agent`}),(0,G.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>fn(1),children:`编辑`})]}),(0,G.jsxs)(`div`,{className:`review-agent`,children:[(0,G.jsx)(`span`,{className:`agent-avatar`,children:I===`research`?(0,G.jsx)(tt,{size:16}):(0,G.jsx)(N,{size:16})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:M}),(0,G.jsxs)(`span`,{children:[P,` · `,F,` · `,xn]}),(0,G.jsx)(`p`,{children:R||`等待填写系统提示词`})]})]})]}),(0,G.jsxs)(`div`,{className:`review-block`,children:[(0,G.jsxs)(`div`,{className:`review-title`,children:[(0,G.jsx)(`span`,{children:`能力绑定`}),(0,G.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>fn(2),children:`编辑`})]}),(0,G.jsxs)(`div`,{className:`review-capabilities`,children:[(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(ge,{size:16}),(0,G.jsx)(`div`,{children:(0,G.jsx)(`strong`,{children:Tn[0]?.displayName||`模型`})})]}),(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(yt,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[oe.length,` 个 Tool`]}),(0,G.jsx)(`span`,{children:Cn.title})]})]}),(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(Ve,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[ce.length,` 个 MCP`]}),(0,G.jsx)(`span`,{children:ce.length?`已连接外部服务`:`未绑定`})]})]}),(0,G.jsxs)(`div`,{className:`review-capability`,children:[(0,G.jsx)(ct,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[ue.length,` 个 Skill`]}),(0,G.jsx)(`span`,{children:ue.length?`已注入版本化能力`:`未绑定`})]})]})]})]}),(0,G.jsxs)(`div`,{className:`review-block`,children:[(0,G.jsxs)(`div`,{className:`review-title`,children:[(0,G.jsx)(`span`,{children:`Prompt`}),(0,G.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>fn(3),children:`编辑`})]}),(0,G.jsx)(`div`,{className:`prompt-preview`,children:te||R||`等待生成`})]}),(0,G.jsxs)(`label`,{className:`post-create-option`,children:[(0,G.jsx)(`input`,{type:`checkbox`,...k.register(`buildAfterCreate`)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:On?`创建后立即校验 YAML 声明并打开会话`:`创建后立即构建并打开会话`}),(0,G.jsx)(`small`,{children:On?`只冻结 YAML 和 runtime 摘要;部署时不会上传代码包。`:`生成不可变 AgentBundle,完成后进入 Chat 工作台`})]})]})]}),Oe&&(0,G.jsxs)(`div`,{className:`inline-alert error wizard-error-summary`,role:`alert`,children:[(0,G.jsx)(U,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`需要处理一项配置`}),(0,G.jsx)(`p`,{children:Oe})]})]}),(0,G.jsxs)(`footer`,{className:`wizard-actions`,children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,disabled:T===1,onClick:()=>fn(T-1),children:[(0,G.jsx)(A,{size:16}),(0,G.jsx)(`span`,{children:`上一步`})]}),(0,G.jsxs)(`span`,{className:`wizard-progress`,children:[`第 `,T,` 步,共 4 步`]}),(0,G.jsxs)(`dl`,{className:`summary-chips`,"aria-label":`配置摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模板`}),(0,G.jsx)(`dd`,{children:xn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:Sn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模型`}),(0,G.jsx)(`dd`,{children:wn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Tool`}),(0,G.jsx)(`dd`,{children:oe.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`MCP`}),(0,G.jsx)(`dd`,{children:ce.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Skill`}),(0,G.jsx)(`dd`,{children:ue.length})]})]}),(0,G.jsxs)(`button`,{className:`button tertiary summary-toggle`,type:`button`,"aria-expanded":Me,onClick:()=>Ne(e=>!e),children:[(0,G.jsx)(Ke,{size:16}),(0,G.jsx)(`span`,{children:`完整摘要`})]}),(0,G.jsxs)(`div`,{className:`wizard-flow-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:sn,children:`保存草稿`}),T<4?(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>fn(T+1),children:[(0,G.jsx)(`span`,{children:`继续`}),(0,G.jsx)(j,{size:16})]}):(0,G.jsxs)(`button`,{className:`button accent`,type:`submit`,disabled:Ae,children:[(0,G.jsx)(Qe,{size:16}),(0,G.jsx)(`span`,{children:Ae?`正在创建`:`创建 Agent`})]})]})]})]})}),(0,G.jsx)(Oa,{open:Me,compact:!0,title:`配置摘要`,subtitle:`检查本轮创建使用的 Runtime、模型、能力与权限策略。`,onOpenChange:Ne,children:(0,G.jsxs)(`div`,{className:`wizard-summary-content`,children:[(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模板`}),(0,G.jsx)(`dd`,{children:xn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:Sn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`模型`}),(0,G.jsx)(`dd`,{children:wn})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Skill`}),(0,G.jsx)(`dd`,{children:ue.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`MCP`}),(0,G.jsx)(`dd`,{children:ce.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Tool`}),(0,G.jsx)(`dd`,{children:oe.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`策略`}),(0,G.jsx)(`dd`,{children:I===`research`?`Plan-Act-Observe`:`Direct`})]})]}),(0,G.jsx)(`div`,{className:`summary-divider`}),(0,G.jsxs)(`div`,{className:`summary-note`,children:[(0,G.jsx)(ot,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:Cn.title}),(0,G.jsx)(`p`,{children:Cn.description})]})]}),(0,G.jsxs)(`div`,{className:`summary-note`,children:[(0,G.jsx)(Ue,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:On?`声明校验`:`不可变构建`}),(0,G.jsx)(`p`,{children:On?`冻结 YAML 与 runtime 摘要;云端部署不使用代码包。`:`Skill、MCP 和 Tool 将锁定版本与摘要。`})]})]})]})})]})]})]}),Pe&&(0,G.jsx)(Az,{model:Pe,onClose:()=>Fe(null),onChanged:Ut}),Ie&&(0,G.jsx)(Mz,{onClose:()=>Re(!1),onConnected:()=>{Re(!1),Ut()}})]})}function uV(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function dV(e){return e.displayName||e.command.payload.content?.slice(0,28)||e.taskId}function fV(e){return e.kind===`once`?`单次 · ${uV(e.at)}`:e.kind===`interval`?`每 ${e.everySeconds||60} 秒`:e.expression||`Cron`}function pV(e=``){return{agentId:e,displayName:``,prompt:``,kind:`cron`,timezone:`Asia/Shanghai`,at:``,everySeconds:`3600`,expression:`0 9 * * 1-5`,misfirePolicy:`run_once`,enabled:!0,continuity:`new_session`,sessionId:``}}function mV(e){return{...pV(e.target.agentId||``),agentId:e.target.agentId||``,displayName:e.displayName||``,prompt:e.command.payload.content||``,kind:e.schedule.kind,timezone:e.schedule.timezone||`Asia/Shanghai`,at:e.schedule.at?e.schedule.at.slice(0,16):``,everySeconds:String(e.schedule.everySeconds||3600),expression:e.schedule.expression||`0 9 * * 1-5`,misfirePolicy:e.schedule.misfirePolicy||`skip`,enabled:e.enabled,continuity:e.continuity,sessionId:e.target.sessionId||``}}function hV(e){let t={kind:e.kind,timezone:e.timezone.trim()||`Asia/Shanghai`,misfirePolicy:e.misfirePolicy};if(e.kind===`once`){if(!e.at)throw Error(`请填写单次任务的执行时间`);t.at=new Date(e.at).toISOString()}else if(e.kind===`interval`){let n=Number(e.everySeconds);if(!Number.isInteger(n)||n<60)throw Error(`间隔至少为 60 秒`);t.everySeconds=n}else{if(!e.expression.trim())throw Error(`请填写 Cron 表达式`);t.expression=e.expression.trim()}return{displayName:e.displayName.trim()||e.prompt.trim().slice(0,32),prompt:e.prompt.trim(),schedule:t,enabled:e.enabled,continuity:e.continuity,sessionId:e.continuity===`continue_session`&&e.sessionId.trim()||null}}function gV(e){return e===`succeeded`?`成功`:e===`failed`?`失败`:e===`running`?`运行中`:e===`accepted`?`已接收`:e===`claimed`?`已认领`:e===`skipped`?`已跳过`:e===`cancelled`?`已取消`:e||`未知`}function _V(e){return e===`succeeded`?`ready`:e===`failed`||e===`cancelled`?`failed`:`pending`}function vV(e){return e.state===`claimed`||e.state===`accepted`||e.state===`running`}var yV={DISPATCH_FAILED:`提交失败`,PLUGIN_EXECUTION_FAILED:`插件执行失败`,RUNTIME_TIMEOUT:`执行超时`,misfire_skipped:`错过计划时间,已按策略跳过`,concurrency_forbid_active_occurrence:`已有执行未结束,本次已跳过`,runtime_completed:`运行时已确认完成`};function bV(e){return e?yV[e]||e:``}function xV(e){if(!e.errorCode)return`执行说明`;let t=bV(e.errorCode);return t===e.errorCode?t:`${t} · ${e.errorCode}`}function SV(e){return e.transitions?.length?e.transitions:[e.claimedAt&&{state:`claimed`,at:e.claimedAt},e.acceptedAt&&{state:`accepted`,at:e.acceptedAt},e.startedAt&&{state:`running`,at:e.startedAt},e.completedAt&&{state:e.state,at:e.completedAt,detail:e.detail,errorCode:e.errorCode}].filter(Boolean)}function CV({items:e,taskNames:t,agentNames:n}){return e.length?(0,G.jsx)(`div`,{className:`automation-occurrences`,children:e.map(e=>{let r=e.target?.agentId||``,i=SV(e);return(0,G.jsxs)(`article`,{className:`automation-occurrence-card`,children:[(0,G.jsxs)(`div`,{className:`automation-occurrence-summary`,children:[(0,G.jsx)(`span`,{className:`automation-state`,"data-state":_V(e.state),children:gV(e.state)}),(0,G.jsx)(`strong`,{children:t.get(e.taskId)||e.taskId}),(0,G.jsx)(`span`,{children:e.trigger===`manual`?`手动触发`:`计划触发`}),(0,G.jsx)(`time`,{children:uV(e.scheduledFor)})]}),(0,G.jsxs)(`dl`,{className:`automation-occurrence-facts`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Occurrence`}),(0,G.jsx)(`dd`,{children:e.occurrenceId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Agent`}),(0,G.jsx)(`dd`,{children:n.get(r)||r||`目标已删除`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Attempt`}),(0,G.jsx)(`dd`,{children:e.attempt||1})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Command`}),(0,G.jsx)(`dd`,{children:e.commandId||`尚未接收`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Session`}),(0,G.jsx)(`dd`,{children:e.sessionId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Run`}),(0,G.jsx)(`dd`,{children:e.runId||`尚未绑定`})]})]}),i.length>0&&(0,G.jsx)(`ol`,{className:`automation-timeline`,"aria-label":`${e.occurrenceId} 状态时间线`,children:i.map((e,t)=>(0,G.jsxs)(`li`,{children:[(0,G.jsx)(`span`,{children:gV(e.state)}),(0,G.jsx)(`time`,{children:uV(e.at)}),(e.errorCode||e.detail)&&(0,G.jsx)(`small`,{children:bV(e.errorCode||e.detail)})]},`${e.state}-${e.at}-${t}`))}),(e.errorCode||e.detail)&&(0,G.jsxs)(`div`,{className:`automation-diagnosis`,children:[(0,G.jsx)(`strong`,{children:xV(e)}),(0,G.jsx)(`span`,{children:bV(e.detail)||`—`})]})]},e.occurrenceId)})}):(0,G.jsx)(`p`,{className:`automation-empty`,children:`还没有执行记录。`})}function wV({currentAgentId:e,agents:t,onSelectAgent:n,scopedAgentId:r=``,embedded:i=!1,onTaskCountChanged:a}){let[o,c]=(0,s.useState)([]),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)(!0),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(null),[b,x]=(0,s.useState)([]),[S,C]=(0,s.useState)(()=>pV(e)),[w,T]=(0,s.useState)(``),[E,D]=(0,s.useState)(!1),[O,k]=(0,s.useState)(!1),[A,j]=(0,s.useState)(null),[M,N]=(0,s.useState)(`tasks`),[P,F]=(0,s.useState)(r),I=(0,s.useCallback)(async()=>{m(!0),_(``);try{let[e,t]=await Promise.all([g(`/api/v1/schedules`),g(`/api/v1/schedule-occurrences?limit=200`)]);if(!e.ok)throw Error(`定时任务加载失败(${e.status})`);let n=await e.json(),i=t.ok?await t.json():{items:[]},o=n.items||[];c(o),u(i.items||[]),f(n.availability||null),y(e=>o.find(t=>t.taskId===e?.taskId)||null),a&&a(r?o.filter(e=>e.target.agentId===r).length:o.length)}catch(e){_(e?.message||`定时任务加载失败`)}finally{m(!1)}},[a,r]),L=(0,s.useCallback)(async(e,t=!0)=>{y(e),t&&x([]);let n=e.target.agentId||``;if(!n)return[];let r=await g(`/api/v1/agents/${encodeURIComponent(n)}/schedules/${encodeURIComponent(e.taskId)}/occurrences`);if(!r.ok)return[];let i=(await r.json()).items||[];return x(i),i},[]);(0,s.useEffect)(()=>{I()},[I]),(0,s.useEffect)(()=>{F(r)},[r]),(0,s.useEffect)(()=>{w||C(pV(e))},[e,w]);let R=b.some(vV);(0,s.useEffect)(()=>{if(!v||!R)return;let e=window.setInterval(()=>{L(v,!1).then(e=>{e.some(vV)||I()})},750);return()=>window.clearInterval(e)},[L,I,R,v]);let B=(0,s.useMemo)(()=>new Map(t.map(e=>[e.metadata.id,e.metadata.name])),[t]),V=(0,s.useMemo)(()=>new Map(o.map(e=>[e.taskId,dV(e)])),[o]),H=(0,s.useMemo)(()=>P?o.filter(e=>e.target.agentId===P):o,[P,o]),ee=(0,s.useMemo)(()=>P?l.filter(e=>e.target?.agentId===P):l,[P,l]),te=(0,s.useMemo)(()=>{let e=new Map;for(let t of l)e.has(t.taskId)||e.set(t.taskId,t);return e},[l]),ne=[{id:`task`,header:`任务`,minWidth:220,cell:e=>(0,G.jsxs)(`div`,{className:`automation-task-cell`,children:[(0,G.jsx)(`strong`,{children:dV(e)}),(0,G.jsx)(`span`,{children:B.get(e.target.agentId||``)||e.target.agentId||`历史任务`})]})},{id:`trigger`,header:`触发规则`,minWidth:150,cell:e=>fV(e.schedule)},{id:`next`,header:`下次执行`,minWidth:120,cell:e=>uV(e.nextRunAt)},{id:`mode`,header:`会话`,minWidth:100,cell:e=>e.continuity===`continue_session`?`继续会话`:`新会话`},{id:`recent`,header:`最近终态`,minWidth:110,cell:e=>te.has(e.taskId)?gV(te.get(e.taskId).state):`—`},{id:`state`,header:`状态`,width:110,cell:e=>{let t=e.enabled?d?.triggerActive?`已启用`:`已配置`:`已停用`;return(0,G.jsx)(`span`,{className:`automation-state`,"data-state":e.enabled&&d?.triggerActive?`ready`:`idle`,children:t})}}];function U(e){T(e.taskId),C(mV(e)),y(e),D(!0),N(`tasks`),L(e)}async function re(){if(!S.agentId){_(`请选择 Agent`);return}if(!S.prompt.trim()){_(`请填写到期时发送给 Agent 的提示词`);return}k(!0),_(``);try{let e=hV(S),t=!!w,n=await g(t?`/api/v1/agents/${encodeURIComponent(S.agentId)}/schedules/${encodeURIComponent(w)}`:`/api/v1/agents/${encodeURIComponent(S.agentId)}/schedules`,{method:t?`PUT`:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error?.message||`保存失败(${n.status})`);T(``),D(!1),C(pV(S.agentId)),J(t?`定时任务已更新`:`定时任务已创建`,r?.displayName||`本地自动化`),await I(),t&&r&&await L(r)}catch(e){_(e?.message||`保存定时任务失败`)}finally{k(!1)}}async function ie(e){let t=e.target.agentId;if(!t){_(`历史任务缺少 Agent 标识,不能从 Studio 触发`);return}let n=await g(`/api/v1/agents/${encodeURIComponent(t)}/schedules/${encodeURIComponent(e.taskId)}:run`,{method:`POST`}),r=await n.json().catch(()=>null);if(!n.ok){_(r?.error?.message||`立即运行失败(${n.status})`);return}J(`已提交到本地 Agent Kernel`,`等待终态对账,不以 accepted 当作成功。`),await L(e),await I()}async function ae(e){let t=e.target.agentId;if(!t)return;let n={...mV(e),enabled:!e.enabled};if(!(await g(`/api/v1/agents/${encodeURIComponent(t)}/schedules/${encodeURIComponent(e.taskId)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(hV(n))})).ok){_(`更新任务状态失败`);return}await I()}async function oe(){if(A?.target.agentId){if(!(await g(`/api/v1/agents/${encodeURIComponent(A.target.agentId)}/schedules/${encodeURIComponent(A.taskId)}`,{method:`DELETE`})).ok){_(`删除任务失败`);return}j(null),y(null),x([]),await I()}}return(0,G.jsxs)(`div`,{className:`${i?`automation-page-embedded`:`page-container`} automation-page`,"data-layout":i?`embedded`:`document`,children:[!i&&(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>{T(``),C(pV(e)),D(!0)},children:[(0,G.jsx)(Qe,{size:15}),`新建定时任务`]})}),(0,G.jsxs)(`div`,{className:`automation-intro`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:i?`该 Agent 的自动化`:`自动化 / 定时任务`}),(0,G.jsx)(`p`,{children:`在已精确绑定的 Agent Kernel 上运行。选择一条任务查看详情,只有新建或编辑时才打开表单。`})]}),(0,G.jsx)(`span`,{className:`automation-availability`,"data-state":d?.triggerActive?`ready`:`idle`,children:d?.triggerActive?`本地调度运行中`:d?.running?`监视中 · 等待 Runtime`:`本地调度未启动`})]}),h&&(0,G.jsx)(`div`,{className:`form-error`,children:h}),(0,G.jsxs)(`div`,{className:`automation-runtime-boundary`,role:`status`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`执行环境`}),(0,G.jsx)(`strong`,{children:`本地 Agent Kernel`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`调度状态`}),(0,G.jsx)(`strong`,{children:d?.triggerActive?`运行中`:d?.running?`等待 Runtime`:`未启动`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`下次扫描`}),(0,G.jsx)(`strong`,{children:uV(d?.nextScanAt)})]})]}),(0,G.jsxs)(`div`,{className:`automation-toolbar`,children:[(0,G.jsxs)(`div`,{className:`automation-tabs`,role:`tablist`,"aria-label":`自动化视图`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":M===`tasks`,className:M===`tasks`?`active`:``,onClick:()=>N(`tasks`),children:`全部任务`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":M===`history`,className:M===`history`?`active`:``,onClick:()=>N(`history`),children:`执行记录`})]}),!i&&(0,G.jsxs)(`label`,{children:[`Agent 筛选`,(0,G.jsxs)(`select`,{"aria-label":`筛选 Agent`,value:P,onChange:e=>F(e.target.value),children:[(0,G.jsx)(`option`,{value:``,children:`全部 Agent`}),t.map(e=>(0,G.jsx)(`option`,{value:e.metadata.id,children:e.metadata.name},e.metadata.id))]})]})]}),M===`tasks`&&(0,G.jsxs)(`div`,{className:`automation-layout`,children:[(0,G.jsx)(`section`,{className:`automation-list block`,children:(0,G.jsx)(_m,{columns:ne,data:H,getRowId:e=>e.taskId,caption:`定时任务列表`,loading:p,error:h&&!o.length?h:``,onRetry:()=>void I(),onRowActivate:e=>{D(!1),L(e)},rowAriaLabel:e=>`查看定时任务 ${dV(e)} 的详情`,empty:{icon:(0,G.jsx)(z,{size:22}),title:P?`该 Agent 还没有定时任务`:`还没有定时任务`,description:`创建一个本地任务,在 Agent Kernel 保持运行时自动触发。`}})}),(0,G.jsx)(`aside`,{className:`automation-inspector block${E?` is-editor automation-form`:``}`,children:E?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:w?`编辑定时任务`:`新建定时任务`}),(0,G.jsx)(`p`,{children:`目标实例和版本由 Studio 解析,不由浏览器填写。`})]})}),(0,G.jsxs)(`label`,{children:[`Agent`,(0,G.jsxs)(`select`,{value:S.agentId,disabled:!!w,onChange:e=>{C(t=>({...t,agentId:e.target.value})),n(e.target.value)},children:[(0,G.jsx)(`option`,{value:``,children:`选择 Agent`}),t.map(e=>(0,G.jsx)(`option`,{value:e.metadata.id,children:e.metadata.name},e.metadata.id))]})]}),(0,G.jsxs)(`label`,{children:[`任务名称`,(0,G.jsx)(`input`,{value:S.displayName,onChange:e=>C(t=>({...t,displayName:e.target.value})),placeholder:`例如:工作日销售日报`})]}),(0,G.jsxs)(`label`,{children:[`到期提示词`,(0,G.jsx)(`textarea`,{value:S.prompt,onChange:e=>C(t=>({...t,prompt:e.target.value})),placeholder:`例如:生成昨日销售摘要并列出异常`})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsxs)(`label`,{children:[`触发方式`,(0,G.jsxs)(`select`,{value:S.kind,onChange:e=>C(t=>({...t,kind:e.target.value})),children:[(0,G.jsx)(`option`,{value:`cron`,children:`Cron`}),(0,G.jsx)(`option`,{value:`interval`,children:`固定间隔`}),(0,G.jsx)(`option`,{value:`once`,children:`单次`})]})]}),(0,G.jsxs)(`label`,{children:[`时区`,(0,G.jsx)(`input`,{value:S.timezone,onChange:e=>C(t=>({...t,timezone:e.target.value}))})]})]}),S.kind===`cron`&&(0,G.jsxs)(`label`,{children:[`Cron 表达式`,(0,G.jsx)(`input`,{value:S.expression,onChange:e=>C(t=>({...t,expression:e.target.value}))})]}),S.kind===`interval`&&(0,G.jsxs)(`label`,{children:[`间隔(秒)`,(0,G.jsx)(`input`,{type:`number`,min:`60`,value:S.everySeconds,onChange:e=>C(t=>({...t,everySeconds:e.target.value}))})]}),S.kind===`once`&&(0,G.jsxs)(`label`,{children:[`执行时间`,(0,G.jsx)(`input`,{type:`datetime-local`,value:S.at,onChange:e=>C(t=>({...t,at:e.target.value}))})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsxs)(`label`,{children:[`错过时`,(0,G.jsxs)(`select`,{value:S.misfirePolicy,onChange:e=>C(t=>({...t,misfirePolicy:e.target.value})),children:[(0,G.jsx)(`option`,{value:`run_once`,children:`补跑一次`}),(0,G.jsx)(`option`,{value:`skip`,children:`跳过`})]})]}),(0,G.jsxs)(`label`,{children:[`会话`,(0,G.jsxs)(`select`,{value:S.continuity,onChange:e=>C(t=>({...t,continuity:e.target.value})),children:[(0,G.jsx)(`option`,{value:`new_session`,children:`新会话`}),(0,G.jsx)(`option`,{value:`continue_session`,children:`继续会话`})]})]})]}),S.continuity===`continue_session`&&(0,G.jsxs)(`label`,{children:[`Session ID`,(0,G.jsx)(`input`,{value:S.sessionId,onChange:e=>C(t=>({...t,sessionId:e.target.value})),placeholder:`选择或粘贴可恢复的本地 Session`})]}),(0,G.jsxs)(`label`,{className:`automation-checkbox`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:S.enabled,onChange:e=>C(t=>({...t,enabled:e.target.checked}))}),`创建后立即启用`]}),(0,G.jsxs)(`div`,{className:`automation-form-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>{T(``),C(pV(e)),D(!1)},children:`取消`}),(0,G.jsx)(`button`,{className:`button accent`,type:`button`,disabled:O,onClick:()=>void re(),children:O?`保存中…`:w?`保存变更`:`创建任务`})]})]}):v?(0,G.jsxs)(`div`,{className:`automation-detail`,children:[(0,G.jsxs)(`div`,{className:`automation-detail-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:dV(v)}),(0,G.jsxs)(`p`,{children:[`下次执行 `,uV(v.nextRunAt)]})]}),(0,G.jsx)(`span`,{className:`automation-state`,"data-state":v.enabled&&d?.triggerActive?`ready`:`idle`,children:v.enabled?`已启用`:`已停用`})]}),(0,G.jsxs)(`div`,{className:`automation-detail-actions`,children:[(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>U(v),children:[(0,G.jsx)(Ye,{size:14}),`编辑`]}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,disabled:!d?.available,onClick:()=>void ie(v),children:[(0,G.jsx)(Xe,{size:14}),`立即运行`]}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>void ae(v),children:v.enabled?`停用`:`启用`})]}),(0,G.jsxs)(`div`,{className:`automation-detail-grid`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`到期提示词`}),(0,G.jsx)(`p`,{children:v.command.payload.content||`—`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`触发规则`}),(0,G.jsx)(`p`,{children:fV(v.schedule)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`会话`}),(0,G.jsx)(`p`,{children:v.continuity===`continue_session`?`继续已有会话`:`每次新建会话`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`目标 Build`}),(0,G.jsx)(`p`,{children:v.target.agentVersionRef||`—`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`最近一次`}),(0,G.jsx)(`p`,{children:b[0]?`${gV(b[0].state)} · ${uV(b[0].completedAt||b[0].scheduledFor)}`:`暂无记录`})]})]}),(0,G.jsxs)(`div`,{className:`automation-inspector-history`,children:[(0,G.jsxs)(`h3`,{children:[(0,G.jsx)(ue,{size:16}),`最近执行`]}),(0,G.jsx)(CV,{items:b.slice(0,3),taskNames:V,agentNames:B})]}),(0,G.jsxs)(`button`,{className:`automation-delete-link`,type:`button`,onClick:()=>j(v),children:[(0,G.jsx)(ht,{size:14}),`删除`]})]}):(0,G.jsxs)(`div`,{className:`automation-inspector-empty`,children:[(0,G.jsx)(z,{size:22}),(0,G.jsx)(`strong`,{children:`选择一个定时任务`}),(0,G.jsx)(`p`,{children:`查看运行记录、立即执行或修改计划。`}),(0,G.jsxs)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>{T(``),C(pV(e)),D(!0)},children:[(0,G.jsx)(Qe,{size:14}),`新建任务`]})]})})]}),M===`history`&&(0,G.jsxs)(`section`,{className:`automation-history block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:`执行记录`}),(0,G.jsx)(`p`,{children:`持久化的 Occurrence 事实;“已接收”不代表执行成功。`})]})}),(0,G.jsx)(CV,{items:ee,taskNames:V,agentNames:B})]}),A&&(0,G.jsx)(ka,{title:`删除定时任务「${dV(A)}」?`,description:`任务定义将被删除;已写入的执行历史仍可用于审计。`,confirmText:`删除任务`,busy:!1,onConfirm:()=>void oe(),onCancel:()=>j(null)})]})}function TV(e,t){let n=new URLSearchParams({buildId:e});return t&&n.set(`agentId`,t),`#/deployments/new?${n.toString()}`}function EV(e){return`#/deployments/${encodeURIComponent(e)}`}function DV(e){if(window.location.hash===e){window.dispatchEvent(new HashChangeEvent(`hashchange`));return}window.location.hash=e}function OV(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function kV({detail:e,catalog:t,buildId:n,onClose:r}){let[i,a]=(0,s.useState)(`curl`),o=e.draft,c=o.metadata.labels||{},l=o.spec.bindings?.modelProfileId||o.spec.bindings?.modelProfileIds?.[0]||``,u=t.find(e=>e.resourceId===l),d=c[`agentkit.ksyun.com/template`]||`blank`,f={model:u?.contract?.model||u?.name||c[`agentkit.ksyun.com/model`]||`glm-5.1`,input:[{role:`user`,content:[{type:`input_text`,text:d===`research`?`调研 Agent 工程平台的核心能力`:`请根据你的职责处理这个请求`}]}],metadata:{agent_id:o.metadata.id},stream:!0},p=i===`curl`?[`curl -X POST "${window.location.origin}/v1/responses" \\`,` -H "Content-Type: application/json" \\`,` -H "Authorization: Bearer " \\`,` -d '${JSON.stringify(f,null,2)}'`].join(`
+`):[`const response = await fetch("${window.location.origin}/v1/responses", {`,` method: "POST",`,` headers: {`,` "Content-Type": "application/json",`,' "Authorization": `Bearer ${runtimeApiKey}`',` },`,` body: JSON.stringify(${JSON.stringify(f,null,2)})`,`});`].join(`
+`);return(0,G.jsxs)(BD,{title:`调用 Agent`,subtitle:`使用统一 Runtime 的 OpenAI Responses API;本地与云端请求体一致。`,onClose:r,children:[(0,G.jsxs)(`div`,{className:`callout`,children:[(0,G.jsx)(ot,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`标准接入协议`}),(0,G.jsx)(`p`,{children:`本地 Studio 仅监听 loopback;部署后由云端网关校验 Runtime API Key,不暴露 Studio Session 或 CSRF Token。`})]})]}),(0,G.jsxs)(`div`,{className:`code-tabs`,children:[(0,G.jsx)(`button`,{className:i===`curl`?`active`:``,type:`button`,onClick:()=>a(`curl`),children:`cURL`}),(0,G.jsx)(`button`,{className:i===`javascript`?`active`:``,type:`button`,onClick:()=>a(`javascript`),children:`JavaScript`})]}),(0,G.jsx)(Db,{code:p,language:i===`curl`?`bash`:`javascript`,filename:i===`curl`?`invoke-agent.sh`:`invoke-agent.js`,wrap:!0}),(0,G.jsxs)(`div`,{className:`api-contract`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Endpoint`}),(0,G.jsx)(`code`,{children:`POST /v1/responses`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`本地 Build`}),(0,G.jsx)(`code`,{children:n||`尚未构建`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Conversation`}),(0,G.jsx)(`code`,{children:`首次调用可省略`})]})]})]})}function AV({agentId:e,onBack:t,onChat:n,onBuild:r,onEdit:i,onChanged:a}){let[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)(!1),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(null),[w,T]=(0,s.useState)(`overview`);(0,s.useEffect)(()=>{T(`overview`),g(`/api/v1/agents/${encodeURIComponent(e)}`).then(e=>e.json()).then(c).catch(()=>c(null)),g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()).then(e=>u(e.items||[])).catch(()=>{}),g(`/api/v1/deployments`).then(e=>e.json()).then(e=>f(e.items||[])).catch(()=>{}),g(`/api/v1/agents/${encodeURIComponent(e)}/schedules`).then(e=>e.ok?e.json():null).then(e=>C(e?.items?.length??0)).catch(()=>C(null))},[e]);async function E(){y(!0),x(``);try{let n=await g(`/api/v1/agents/${encodeURIComponent(e)}`,{method:`DELETE`});if(!n.ok){let e=await n.json().catch(()=>null);throw Error(e?.error?.message||`删除失败(${n.status})`)}m(!1),a(),t()}catch(e){x(e.message)}finally{y(!1)}}if(!o)return(0,G.jsx)(`div`,{className:`page-container`,"data-layout":`document`,children:(0,G.jsx)(`p`,{style:{color:`var(--text-tertiary)`},children:`正在加载 Agent 配置…`})});let D=o.draft,O=D.spec.bindings||{},k=D.metadata.labels||{},A=String(k[`agentkit.ksyun.com/models`]||``).split(`,`).map(e=>e.trim()).filter(Boolean),j=O.modelProfileIds?.length?O.modelProfileIds:O.modelProfileId?[O.modelProfileId]:A.length?A:k[`agentkit.ksyun.com/model`]?[k[`agentkit.ksyun.com/model`]]:[],M=(o.builds||[]).find(e=>e.status===`SUCCEEDED`),N=M?d.find(e=>e.buildId===M.id):void 0,P=N?.status===`READY`,F=e=>l.find(t=>t.resourceId===e)?.displayName||OV(e),I=(O.tools||[]).map(e=>typeof e==`string`?e:e.resourceId),L=[[`Model`,j],[`Skill`,(O.skills||[]).map(e=>e.resourceId)],[`MCP`,(O.mcpServers||[]).map(e=>e.resourceId)],[`Tool`,I]].filter(([,e])=>e.length>0);function R(){M&&DV(N?EV(N.id):TV(M.id,D.metadata.id))}return(0,G.jsxs)(`div`,{className:`page-container`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>n(e),children:[(0,G.jsx)(Le,{size:15}),(0,G.jsx)(`span`,{children:`打开会话`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>i(e),children:[(0,G.jsx)(lt,{size:15}),(0,G.jsx)(`span`,{children:`编辑`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:r,children:[(0,G.jsx)(Ue,{size:15}),(0,G.jsx)(`span`,{children:`校验并构建`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:R,disabled:!M,children:[(0,G.jsx)(de,{size:15}),(0,G.jsx)(`span`,{children:N?`查看云端部署`:`部署到云端`})]}),(0,G.jsx)(yd,{label:`${D.metadata.name} 的更多操作`,items:[{label:`编辑`,onSelect:()=>i(e)},{label:`校验并构建`,onSelect:r},{label:N?`查看云端部署`:`部署到云端`,onSelect:R,disabled:!M},{label:`管理定时任务`,onSelect:()=>T(`automations`)},{label:`调用方式`,onSelect:()=>_(!0)},{label:`删除 Agent`,danger:!0,onSelect:()=>m(!0)}]})]}),b&&(0,G.jsx)(`div`,{className:`form-error`,style:{marginBottom:16},children:b}),(0,G.jsxs)(`div`,{className:`automation-tabs agent-detail-tabs`,role:`tablist`,"aria-label":`Agent 详情`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":w===`overview`,className:w===`overview`?`active`:``,onClick:()=>T(`overview`),children:`概览`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":w===`automations`,className:w===`automations`?`active`:``,onClick:()=>T(`automations`),children:`自动化`})]}),w===`overview`&&(0,G.jsxs)(`div`,{className:`detail-layout`,children:[(0,G.jsxs)(`div`,{className:`detail-main`,children:[(0,G.jsxs)(`section`,{className:`detail-section block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsx)(`h2`,{children:`角色与任务`})}),(0,G.jsxs)(`div`,{className:`readonly-field`,children:[(0,G.jsx)(`span`,{children:`系统提示词`}),(0,G.jsx)(`pre`,{children:D.spec.instructions?.system||``})]}),(0,G.jsxs)(`div`,{className:`readonly-field`,children:[(0,G.jsx)(`span`,{children:`任务契约`}),(0,G.jsx)(`pre`,{children:D.spec.instructions?.task||`未配置任务契约`})]})]}),(0,G.jsxs)(`section`,{className:`detail-section block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsx)(`h2`,{children:`能力绑定`})}),L.length?(0,G.jsx)(`div`,{className:`binding-groups`,children:L.map(([e,t])=>(0,G.jsxs)(`div`,{className:`binding-group`,children:[(0,G.jsx)(`span`,{children:e}),(0,G.jsx)(`div`,{className:`binding-items`,children:t.map(e=>(0,G.jsxs)(`span`,{className:`compact-resource`,children:[(0,G.jsx)(V,{size:13}),F(e)]},e))})]},e))}):(0,G.jsxs)(`div`,{className:`capability-empty-state`,children:[(0,G.jsx)(`span`,{children:`当前 Agent 尚未绑定模型、Tool、MCP 或 Skill。`}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>i(e),children:`绑定能力`})]})]}),(0,G.jsxs)(`section`,{className:`detail-section block`,children:[(0,G.jsxs)(`div`,{className:`section-heading`,children:[(0,G.jsx)(z,{size:18}),(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:`自动化`}),(0,G.jsx)(`p`,{children:`定时任务仅在本地 Studio 与该 Agent 的 Kernel Runtime 精确绑定时执行。`})]})]}),(0,G.jsxs)(`div`,{className:`capability-empty-state`,children:[(0,G.jsx)(`span`,{children:S===null?`正在读取定时任务…`:S?`已配置 ${S} 个定时任务`:`还没有定时任务`}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>T(`automations`),children:`管理定时任务`})]})]})]}),(0,G.jsxs)(`aside`,{className:`detail-aside block`,children:[(0,G.jsx)(`div`,{className:`aside-title`,children:`运行摘要`}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision`}),(0,G.jsxs)(`dd`,{children:[`r`,D.metadata.revision]})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:D.spec.runtime?.type||k[`agentkit.ksyun.com/framework`]||`adk`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`策略`}),(0,G.jsx)(`dd`,{children:D.spec.execution?.strategy||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`最大步骤`}),(0,G.jsx)(`dd`,{children:D.spec.execution?.maxSteps??`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`超时`}),(0,G.jsx)(`dd`,{children:D.spec.execution?.timeoutSeconds?`${D.spec.execution.timeoutSeconds}s`:`-`})]})]}),(0,G.jsx)(`div`,{className:`aside-divider`}),(0,G.jsx)(`div`,{className:`build-state notice`,"data-state":M?`ready`:`idle`,children:M?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`status-dot success`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`部署声明已就绪`}),(0,G.jsx)(`span`,{children:OV(M.bundleDigest||M.id)})]})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`status-dot neutral`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`尚未构建`}),(0,G.jsx)(`span`,{children:`校验 YAML 声明后即可部署或本地对话`})]})]})}),N&&(0,G.jsxs)(`div`,{className:`build-state notice`,"data-state":P?`ready`:`idle`,children:[(0,G.jsx)(`span`,{className:`status-dot ${P?`success`:`neutral`}`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:P?`云端实例运行中`:`云端部署:${N.status}`}),(0,G.jsx)(`span`,{children:N.agentId||N.instanceId||N.id})]})]})]})]}),w===`automations`&&(0,G.jsx)(wV,{currentAgentId:e,agents:[{metadata:{id:e,name:D.metadata.name}}],onSelectAgent:()=>{},scopedAgentId:e,embedded:!0,onTaskCountChanged:C}),p&&(0,G.jsx)(ka,{title:`确认删除 Agent「${D.metadata.name}」?`,description:`Agent ID:${D.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:v,onConfirm:E,onCancel:()=>m(!1)}),h&&(0,G.jsx)(kV,{detail:o,catalog:l,buildId:M?.id,onClose:()=>_(!1)})]})}var jV=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function MV(e){return e===`SUCCEEDED`?`ready`:[`FAILED`,`CANCELLED`,`TIMED_OUT`].includes(e)?`failed`:e===`IDLE`?`idle`:`pending`}function NV(e){return{IDLE:`尚未构建`,QUEUED:`排队中`,RUNNING:`构建中`,SUCCEEDED:`构建完成`,FAILED:`构建失败`,CANCELLED:`已取消`,TIMED_OUT:`已超时`}[e]||e}function PV(e,t=42){return e.length>t?`${e.slice(0,t)}…`:e}function FV(e){return e.split(/\r?\n\r?\n/).filter(Boolean).map(e=>{let t=e.split(/\r?\n/),n=Number(t.find(e=>e.startsWith(`id:`))?.slice(3).trim()),r=t.find(e=>e.startsWith(`event:`))?.slice(6).trim()||``,i=t.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
+`);if(!Number.isFinite(n)||n<=0||!r||!i)return null;try{let e=JSON.parse(i);return{id:n,type:r,data:e&&typeof e==`object`?e:{}}}catch{return null}}).filter(e=>e!==null)}async function IV(e){let t=await g(`/api/v1${e}`);return t.ok?FV(await t.text()):[]}function LV({currentAgentId:e,agents:t,onSelectAgent:n,onCreate:r}){let[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)(`IDLE`),[l,u]=(0,s.useState)(`选择 Agent 后开始本地构建。
+`),[d,f]=(0,s.useState)(``),[p,m]=(0,s.useState)(!1),h=(0,s.useRef)(null),_=(0,s.useRef)(0),v=(0,s.useCallback)(async()=>{if(!e){a(null);return}try{let t=await g(`/api/v1/agents/${encodeURIComponent(e)}`);if(!t.ok)throw Error(`Agent detail is unavailable`);a(await t.json())}catch{a(null)}},[e]);(0,s.useEffect)(()=>{v()},[v]);let y=i?.draft,b=i?.builds||[],x=b.find(e=>e.status===`SUCCEEDED`)||b[0],S=x?.status===`SUCCEEDED`&&!p,C=t.find(t=>t.metadata.id===e),w=y?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`],T=w===`ManagedRuntime`||!w&&y?.spec?.runtime?.type===`codex`,E=e=>T?{IDLE:`尚未校验`,QUEUED:`校验排队中`,RUNNING:`正在校验`,SUCCEEDED:`声明已校验`,FAILED:`校验失败`,CANCELLED:`已取消`,TIMED_OUT:`校验超时`}[e]||e:NV(e);(0,s.useEffect)(()=>{p||(c(x?.status||`IDLE`),f(``),u(x?[`${T?`Declaration`:`Build`} ${x.id}`,`Revision ${x.sourceRevision??y?.metadata?.revision??`-`}`,`${T?`YAML digest`:`Bundle`} ${x.bundleDigest||`-`}`,`Resolved ${x.resolvedDigest||`-`}`,`Status ${x.status}`].join(`
+`):T?`选择 YAML Agent 后校验声明。
+`:`选择 Agent 后开始本地构建。
+`))},[p,y?.metadata?.revision,T,x]);function D(e){u(t=>`${t}${e}`),requestAnimationFrame(()=>{h.current&&(h.current.scrollTop=h.current.scrollHeight)})}function O(){!e||!S||(n(e),DV(TV(x.id,e)))}async function k(){if(!y||p)return;let e=++_.current;m(!0),c(`QUEUED`),f(`提交中`),u(T?`提交 YAML 声明校验…
+`:`提交本地构建…
+`);try{let t=await g(`/api/v1/agents/${encodeURIComponent(y.metadata.id)}/builds`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`build-${y.metadata.id}-r${y.metadata.revision}-${Date.now()}`},body:JSON.stringify({revision:y.metadata.revision,runEvaluation:!1})});if(!t.ok)throw t.status===409?(await v(),Error(`Agent 信息已更新,请重新点击构建`)):Error(`构建提交失败(${t.status})`);let n=await t.json();f(n.id);let r=0,i=null;for(let t=0;t<1200;t+=1){if(_.current!==e)return;let t=await IV(`/operations/${encodeURIComponent(n.id)}/events?after=${r}`);t.length&&(r=Math.max(r,...t.map(e=>Number(e.id)||0)),D(t.map(e=>`${String(e.id).padStart(2,`0`)} ${e.type}`).join(`
+`)+`
+`));let a=await g(`/api/v1/operations/${encodeURIComponent(n.id)}`).then(e=>e.json());if(c(a.status||`QUEUED`),jV.has(a.status)){i=a;break}await new Promise(e=>setTimeout(e,200))}if(!i)throw Error(`构建操作等待超时`);if(i.status!==`SUCCEEDED`)throw Error(i.error?.message||`构建未完成`);await v(),J(T?`YAML 声明已校验`:`不可变 Bundle 已构建`,i.resourceId||`构建完成`)}catch(t){_.current===e&&(c(`FAILED`),D(`${t?.message||`构建失败`}\n`),J(`构建失败`,t?.message||`未知错误`,`error`))}finally{_.current===e&&m(!1)}}let A=MV(o),j=x?.runtimeName?`${x.runtimeName} ${x.runtimeVersion||``}`.trim():y?.spec?.runtime?.type||`未选择`;return(0,G.jsxs)(`div`,{className:`delivery-page`,"data-layout":`document`,children:[(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:k,disabled:!y||p,children:[(0,G.jsx)(Ue,{size:15}),(0,G.jsx)(`span`,{children:p?T?`校验中`:`构建中`:T?`校验 YAML 声明`:`构建当前 Agent`})]})}),(0,G.jsxs)(`div`,{className:`delivery-intro`,children:[(0,G.jsx)(`h2`,{children:T?`ManagedRuntime 声明`:`Code Bundle`}),(0,G.jsx)(`span`,{className:`delivery-status-badge`,"data-state":A,children:E(o)})]}),t.length===0?(0,G.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,G.jsx)(Ue,{size:24}),(0,G.jsx)(`h2`,{children:`还没有可构建的 Agent`}),(0,G.jsx)(`p`,{children:`先创建 Agent,再生成可部署到云端的交付记录。`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r,children:[(0,G.jsx)(Qe,{size:15}),(0,G.jsx)(`span`,{children:`创建 Agent`})]})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{className:`delivery-stat-strip compact-delivery-summary`,"aria-label":`构建摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`Agent`}),(0,G.jsx)(`strong`,{title:e||``,children:C?.metadata.name||y?.metadata?.name||`未选择`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`Revision`}),(0,G.jsx)(`strong`,{children:y?`r${y.metadata.revision}`:`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`Runtime`}),(0,G.jsx)(`strong`,{children:j})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:T?`YAML 摘要`:`Bundle`}),(0,G.jsx)(`strong`,{className:`mono`,children:PV(x?.bundleDigest||`-`)})]})]}),(0,G.jsxs)(`section`,{className:`delivery-next-step`,"data-state":S?`ready`:A,"aria-label":`构建下一步`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`下一步`}),(0,G.jsx)(`strong`,{children:S?`构建完成,下一步可部署到云端`:`等待构建完成`})]}),S&&(0,G.jsxs)(`button`,{className:`button secondary compact`,type:`button`,onClick:O,children:[(0,G.jsx)(de,{size:15}),`部署到云端`]})]}),(0,G.jsxs)(`details`,{className:`delivery-block delivery-detail-disclosure`,children:[(0,G.jsx)(`summary`,{children:T?`声明详情`:`构建详情`}),(0,G.jsx)(`p`,{children:T?`校验 YAML 声明并锁定 Runtime、模型与能力摘要,生成可追溯的托管运行时制品。`:`查看不可变 Bundle、输入 Revision 与交付记录。`}),(0,G.jsxs)(`div`,{className:`delivery-fact-chain`,children:[(0,G.jsxs)(`div`,{className:`delivery-fact-step`,"data-state":y?`ready`:`idle`,children:[(0,G.jsx)(`span`,{children:T?`输入 YAML Revision`:`输入 Revision`}),(0,G.jsx)(`strong`,{children:y?`r${y.metadata.revision}`:`未选择`}),(0,G.jsx)(`code`,{children:y?.metadata?.id||`-`})]}),(0,G.jsxs)(`div`,{className:`delivery-fact-step`,"data-state":A,children:[(0,G.jsx)(`span`,{children:T?`声明摘要`:`不可变 Bundle`}),(0,G.jsx)(`strong`,{children:x?.status===`SUCCEEDED`?T?`已校验`:`已生成`:E(o)}),(0,G.jsx)(`code`,{children:x?.bundleDigest||`尚无 digest`})]})]})]}),(0,G.jsxs)(`details`,{className:`delivery-block`,open:p,children:[(0,G.jsxs)(`summary`,{children:[T?`声明校验日志`:`构建技术日志`,` `,d?`· ${PV(d,28)}`:``]}),(0,G.jsx)(`pre`,{ref:h,children:l})]})]})]})}var RV=new Set([`hermes`,`openclaw`]);function zV(e){if(!e)return!1;let t=e.sessionEventChat??e.SessionEventChat??e.session_event_chat;if(t===!0)return!0;if(!t||typeof t!=`object`)return!1;let n=t;return n.enabled===!0||n.Enabled===!0||n.supported===!0||n.Supported===!0}function BV(e){if(e.chatTransport)return{kind:e.chatTransport,reason:e.chatRoutingReason||(e.chatTransport===`official-dashboard`?`native-runtime-without-session-event-chat-capability`:`studio-compatible-framework`)};if(zV(e.capabilities))return{kind:`studio-session-events`,reason:`declared-session-event-chat-capability`};let t=String(e.runtimeType||e.framework||``).trim().toLowerCase();return RV.has(t)?{kind:`official-dashboard`,reason:`native-runtime-without-session-event-chat-capability`}:{kind:`studio-session-events`,reason:`studio-compatible-framework`}}var VV={READY:5,DEPLOYING:4,ADMITTING:3,FAILED:2,ROLLED_BACK:1};function HV(e,t=new Map){let n=new Map;for(let r of e){let e=r.agentId?.trim();if(!e)continue;let i=n.get(e),a=t.get(e)?.trim(),o=!!(a&&r.versionId===a),s=!!(a&&i?.versionId===a),c=VV[r.status||``]||0,l=VV[i?.status||``]||0;(!i||o&&!s||o===s&&c>l)&&n.set(e,r)}return[...n.values()]}function UV(e,t){let n=new Map;for(let e of t){let t=e.agentId?.trim();t&&!n.has(t)&&n.set(t,e)}let r=HV(e,new Map([...n.entries()].flatMap(([e,t])=>t.versionId?.trim()?[[e,t.versionId.trim()]]:[]))).map(e=>{let t=n.get(e.agentId?.trim()||``);return{...e,agentName:t?.name||e.agentName,status:t?.status||e.status,endpoint:t?.endpoint||e.endpoint,framework:t?.framework||e.framework,runtimeType:t?.runtimeType||e.runtimeType,capabilities:t?.capabilities||e.capabilities,chatTransport:t?.chatTransport||e.chatTransport,chatRoutingReason:t?.chatRoutingReason||e.chatRoutingReason,versionId:t?.versionId||e.versionId,updatedAt:t?.updatedAt||e.updatedAt,creatorName:t?.creatorName||e.creatorName,source:`receipt`}}),i=new Set(r.map(e=>e.agentId)),a=[...n.values()].flatMap(e=>{let t=e.agentId?.trim();return!t||i.has(t)?[]:[{id:`account:${t}`,agentId:t,agentName:e.name||t,status:e.status,endpoint:e.endpoint,framework:e.framework,runtimeType:e.runtimeType,capabilities:e.capabilities,chatTransport:e.chatTransport,chatRoutingReason:e.chatRoutingReason,versionId:e.versionId,updatedAt:e.updatedAt,creatorName:e.creatorName,source:`account`}]});return[...r,...a]}var WV=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`,`INTERRUPTED`]),GV=`agentkit-studio:deployment-operation-attempts:v2`,KV=500,qV=new Set([403,404,410]),JV=new Map,YV={},XV=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`OperationStatusError`}};function ZV(){try{return typeof document>`u`?void 0:document.defaultView?.localStorage}catch{return}}function QV(e,t){return t?g(e,{signal:t}):g(e)}function $V(e,t){return t?{...e,status:String(t.status||e.status).toUpperCase(),agentName:t.name||e.agentName,endpoint:t.endpoint||e.endpoint,framework:t.framework||e.framework,runtimeType:t.runtimeType||e.runtimeType,capabilities:t.capabilities||e.capabilities,chatTransport:t.chatTransport||e.chatTransport,chatRoutingReason:t.chatRoutingReason||e.chatRoutingReason,versionId:t.versionId||e.versionId,updatedAt:t.updatedAt||e.updatedAt,creatorName:t.creatorName||e.creatorName}:e}function eH(e){try{let t=ZV();if(!t)return{...YV[e]||{}};let n=JSON.parse(t.getItem(e)||`{}`);return n&&typeof n==`object`?n:{}}catch{return{...YV[e]||{}}}}function tH(e,t){YV={...YV,[e]:{...t}};try{ZV()?.setItem(e,JSON.stringify(t))}catch{}}function nH(e){return`studio-${e}-${globalThis.crypto?.randomUUID?.()||`${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}`}function rH(e,t,n){let r=eH(e),i=r[t];if(i?.idempotencyKey)return i;let a={actionKey:t,idempotencyKey:nH(n),operationId:``};return r[t]=a,tH(e,r),a}function iH(e,t,n){let r={...t,operationId:n},i=eH(e);return i[t.actionKey]=r,tH(e,i),r}function aH(e,t){let n=eH(e),r=n[t.actionKey];!r||r.idempotencyKey!==t.idempotencyKey||(delete n[t.actionKey],tH(e,n))}function oH(e){return e instanceof DOMException&&e.name===`AbortError`}function sH(e){if(e.aborted)throw new DOMException(`Operation aborted`,`AbortError`)}async function cH(e,t){sH(t),await new Promise((n,r)=>{let i=window.setTimeout(()=>{t.removeEventListener(`abort`,a),n()},e),a=()=>{window.clearTimeout(i),r(new DOMException(`Operation aborted`,`AbortError`))};t.addEventListener(`abort`,a,{once:!0})})}async function lH(e,t){let n=JV.get(e)||Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.then(()=>i);JV.set(e,a),await n;try{return await t()}finally{r(),JV.get(e)===a&&JV.delete(e)}}async function uH(e,t,n){sH(t);let r=navigator.locks;return r?r.request(e,{mode:`exclusive`,signal:t},async()=>n()):lH(e,async()=>(sH(t),n()))}async function dH(e){let t=await g(`/api/v1/system/bootstrap`,{signal:e});if(!t.ok)throw Error(`读取部署操作作用域失败(${t.status})`);let n=(await t.json())?.operationScope,r=String(n?.workspace||``).trim(),i=String(n?.cloudCredential||``).trim();if(!r||!i)throw Error(`部署操作作用域不可用,请刷新 Studio`);return`${GV}:${encodeURIComponent(r)}:${encodeURIComponent(i)}`}async function fH(e,t,n){for(;;){await cH(KV,n);let r=await g(`/api/v1/operations/${encodeURIComponent(e)}`,{signal:n});if(!r.ok)throw new XV(`${t}状态读取失败(${r.status})`,r.status);let i=await r.json();if(WV.has(i.status))return i}}async function pH(e,t,n,r,i,a){let o=`${e}:${t}`,s=await uH(o,i,async()=>{let o=rH(e,t,n);if(!o.operationId){let t=await a(o.idempotencyKey,i);if(!t.ok){t.status<500&&aH(e,o);let n=``;try{n=(await t.clone().json())?.error?.message||``}catch{}throw Error(n||`${r}提交失败(${t.status})`)}let n=await t.json(),s=String(n?.id||``).trim();if(!s)throw aH(e,o),Error(`${r}提交结果缺少 operation_id`);o=iH(e,o,s)}return o}),c;try{c=await fH(s.operationId,r,i)}catch(t){throw t instanceof XV&&qV.has(t.status)&&await uH(o,i,async()=>{aH(e,s)}),t}return await uH(o,i,async()=>{aH(e,s)}),c}function mH(e){return[`READY`,`RUNNING`].includes(e)?`ready`:[`FAILED`,`ROLLED_BACK`,`ERROR`,`TERMINATED`].includes(e)?`failed`:[`ADMITTING`,`DEPLOYING`,`CREATING`,`UPDATING`].includes(e)?`pending`:`idle`}function hH(e){return{ADMITTING:`准入中`,DEPLOYING:`部署中`,READY:`已就绪`,FAILED:`部署失败`,ROLLED_BACK:`已回滚`,RUNNING:`运行中`,CREATING:`创建中`,UPDATING:`更新中`,ERROR:`异常`,TERMINATED:`已终止`}[e]||`状态未知`}function gH(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function _H(){let e=window.location.hash.match(/^#\/deployments\/([^/?]+)(?:\?.*)?$/),t=e?decodeURIComponent(e[1]):``;return t===`new`?``:t}function vH(){let e=window.location.hash.match(/^#\/deployments\/new(?:\?(.*))?$/);if(!e)return null;let t=new URLSearchParams(e[1]||``);return{buildId:t.get(`buildId`)?.trim()||``,agentId:t.get(`agentId`)?.trim()||``}}function yH(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}function bH({onCreate:e,onOpenChat:t,onSelectBuild:n}){let[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(!0),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)(new Set),[f,p]=(0,s.useState)(``),[m,h]=(0,s.useState)(!1),[_,v]=(0,s.useState)(!1),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(!1),[C,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(!1),[D,O]=(0,s.useState)(()=>vH()),[k,j]=(0,s.useState)([]),[M,N]=(0,s.useState)(()=>vH()?.buildId||``),[P,F]=(0,s.useState)(``),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(!1),[B,V]=(0,s.useState)(``),H=(0,s.useRef)(new Set);(0,s.useEffect)(()=>()=>{for(let e of H.current)e.abort();H.current.clear()},[]);function ee(){let e=new AbortController;return H.current.add(e),e}function te(e){H.current.delete(e)}let ne=(0,s.useCallback)(async e=>{o(!0),l(``);try{let[t,n]=await Promise.all([QV(`/api/v1/deployments`,e),QV(`/api/v1/cloud-agents?size=100`,e)]);if(!t.ok)throw Error(`读取部署记录失败(${t.status})`);let r=await t.json(),a=n.ok?await n.json():{items:[]},o=Array.isArray(r.items)?r.items:[],s=[...new Set(o.flatMap(e=>e.agentId?.trim()?[e.agentId.trim()]:[]))],c=await Promise.all(s.map(t=>Promise.resolve().then(()=>QV(`/api/v1/cloud-agents/${encodeURIComponent(t)}`,e)).then(async e=>e.ok?await e.json():null).catch(e=>{if(oH(e))throw e;return null}))),l=Array.isArray(a.items)?a.items:[],u=new Map(l.flatMap(e=>e.agentId?[[e.agentId,e]]:[]));for(let e of c)e?.agentId&&u.set(e.agentId,{...u.get(e.agentId),...e});let d=[...u.values()],f=new Map(o.map(e=>[e.id,e])),p=UV(o,d).map(e=>{if(e.source===`receipt`)return{...f.get(e.id),...e,id:e.id,source:`receipt`};let t=d.find(t=>t.agentId===e.agentId);return{id:e.id,buildId:``,bundleDigest:``,versionId:String(e.versionId||t?.versionId||``),status:String(e.status||t?.status||`UNKNOWN`).toUpperCase(),target:{region:String(t?.region||``),environment:`cloud`},agentId:e.agentId,agentName:e.agentName,endpoint:e.endpoint,framework:String(e.framework||t?.framework||``),runtimeType:String(e.runtimeType||t?.runtimeType||``),capabilities:e.capabilities||t?.capabilities,chatTransport:e.chatTransport||t?.chatTransport,chatRoutingReason:e.chatRoutingReason||t?.chatRoutingReason,updatedAt:String(e.updatedAt||t?.updatedAt||``),creatorName:e.creatorName||t?.creatorName,source:`account`}});e?.aborted||i(p)}catch(t){!oH(t)&&!e?.aborted&&l(t?.message||`部署记录不可用`)}finally{e?.aborted||o(!1)}},[]);(0,s.useEffect)(()=>{let e=new AbortController;return ne(e.signal),()=>e.abort()},[ne]),(0,s.useEffect)(()=>{let e=()=>{let e=vH();if(O(e),e){N(e.buildId),b(null);return}let t=_H();if(!t){b(null);return}let n=r.find(e=>e.id===t);n&&y?.deployment.id!==t&&se(n,!1)};return e(),window.addEventListener(`popstate`,e),window.addEventListener(`hashchange`,e),()=>{window.removeEventListener(`popstate`,e),window.removeEventListener(`hashchange`,e)}},[r,y?.deployment.id]),(0,s.useEffect)(()=>{if(!D)return;let e=!1;return L(!0),V(``),(async()=>{try{let[t,n]=await Promise.all([g(`/api/v1/agents?limit=100`),g(`/api/v1/system/settings`)]);if(!t.ok)throw Error(`读取可部署 Build 失败(${t.status})`);let r=await t.json(),i=n.ok?await n.json():{},a=Array.isArray(r.items)?r.items:[],o=(await Promise.all(a.map(async e=>{let t=String(e?.metadata?.id||``).trim();if(!t)return null;let n=await g(`/api/v1/agents/${encodeURIComponent(t)}`);return n.ok?n.json():null}))).flatMap(e=>{if(!e)return[];let t=String(e?.draft?.metadata?.id||``).trim(),n=String(e?.draft?.metadata?.name||t||`未命名 Agent`),r=String(e?.draft?.spec?.runtime?.type||``),i=String(e?.draft?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`]||(r===`codex`?`ManagedRuntime`:`Code`));return(Array.isArray(e.builds)?e.builds:[]).filter(e=>e.status===`SUCCEEDED`).map(e=>({...e,agentId:t,agentName:n,runtimeName:e.runtimeName||r,artifactType:i}))}).sort((e,t)=>String(t.createdAt||``).localeCompare(String(e.createdAt||``)));if(D.buildId&&!o.some(e=>e.id===D.buildId)){let e=await g(`/api/v1/builds/${encodeURIComponent(D.buildId)}`);if(e.ok){let t=await e.json(),n=String(t.agentId||D.agentId||``).trim(),r=n?await g(`/api/v1/agents/${encodeURIComponent(n)}`):null,i=r?.ok?await r.json():null;if(String(t.status||``)===`SUCCEEDED`&&n){let e=String(i?.draft?.spec?.runtime?.type||t.runtimeName||``);o=[{...t,agentId:n,agentName:String(i?.draft?.metadata?.name||n),runtimeName:t.runtimeName||e,artifactType:String(i?.draft?.metadata?.labels?.[`agentkit.ksyun.com/artifact-type`]||(e===`codex`?`ManagedRuntime`:`Code`))},...o]}}}if(e)return;F(String(i.cloudRegion||``).trim()),j(o);let s=o.find(e=>e.isCurrent!==!1);if(D.buildId){let e=o.find(e=>e.id===D.buildId);if(!e)throw Error(`Build ${D.buildId} 不存在或尚未成功`);e.isCurrent===!1&&s?N(s.id):N(D.buildId)}else N(e=>o.some(t=>t.id===e)?e:(s||o[0])?.id||``)}catch(t){e||V(t?.message||`可部署 Build 不可用`)}finally{e||L(!1)}})(),()=>{e=!0}},[D?.agentId,D?.buildId]);let U=(0,s.useMemo)(()=>({ready:r.filter(e=>mH(e.status)===`ready`).length,pending:r.filter(e=>mH(e.status)===`pending`).length,failed:r.filter(e=>mH(e.status)===`failed`).length}),[r]);async function re(e){d(t=>new Set(t).add(e.id));try{let t=e.source===`account`?await g(`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`):await g(`/api/v1/deployments/${encodeURIComponent(e.id)}`);if(!t.ok)throw Error(`状态刷新失败(${t.status})`);let n=await t.json(),r=e.source===`account`?$V(e,n):{...e,...n,source:`receipt`};if(e.source===`receipt`&&r.agentId){let e=await g(`/api/v1/cloud-agents/${encodeURIComponent(r.agentId)}`).catch(()=>null);e?.ok&&(r=$V(r,await e.json()))}i(t=>t.map(t=>t.id===e.id?r:t))}catch(t){l(`${e.instanceId||e.id}:${t?.message||`状态未知`}`)}finally{d(t=>{let n=new Set(t);return n.delete(e.id),n})}}async function ie(){await Promise.all(r.map(e=>re(e)))}async function ae(e){l(``);try{let t=await g(BV(e).kind===`official-dashboard`||e.source===`account`?`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}:dashboard`:`/api/v1/deployments/${encodeURIComponent(e.id)}:dashboard`,{method:`POST`});if(!t.ok)throw Error(`创建云端 UI 访问链接失败(${t.status})`);let n=await t.json(),r=String(n?.accessUrl||n?.access_url||``).trim();if(!r)throw Error(`云端未返回 Agent UI 地址`);window.open(r,`_blank`,`noopener,noreferrer`)}catch(t){l(`${e.instanceId||e.id}:${t?.message||`无法打开云端 UI`}`)}}async function oe(e,t){let n=await QV(`/api/v1/cloud-agents/${encodeURIComponent(e)}/versions?page=1&size=100`,t);if(!n.ok)throw Error(`读取云端版本失败(${n.status})`);let r=await n.json(),i=r.items||r.versions||r.Versions||[];return{items:(Array.isArray(i)?i:[]).map(e=>({versionId:String(e.versionId||e.version_id||e.VersionId||``),versionName:String(e.versionName||e.version_name||e.VersionName||``),tag:String(e.tag||e.Tag||``),status:String(e.status||e.Status||``),trafficPercentage:Number(e.trafficPercentage??e.traffic_percentage??e.TrafficPercentage??0),createdAt:e.createdAt||e.created_at||e.CreatedAt,createdBy:e.createdBy||e.created_by||e.CreatedBy,canRollback:!!(e.canRollback??e.can_rollback??e.CanRollback),rollbackDisabledReason:String(e.rollbackDisabledReason||e.rollback_disabled_reason||e.RollbackDisabledReason||``)})).filter(e=>e.versionId),currentVersionId:String(r.currentVersionId||r.current_version_id||r.CurrentVersionId||``)}}async function se(e,t=!0,n){if(n?.aborted)return;t&&window.history.pushState(null,``,`#/deployments/${encodeURIComponent(e.id)}`),b({deployment:e,sourceAgentId:``,sourceAgentName:``,builds:[],versions:[],currentVersionId:``,loading:!0,error:``}),p(``),h(!1);let r=e.agentId?oe(e.agentId,n):Promise.resolve({items:[],currentVersionId:``});try{if(e.source===`account`){let t=await QV(`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`,n);if(!t.ok)throw Error(`刷新云端 Agent 状态失败(${t.status})`);let a=await t.json(),o={...e,agentName:String(a.name||e.agentName||e.agentId||`云端 Agent`),status:String(a.status||e.status).toUpperCase(),endpoint:a.endpoint||e.endpoint,framework:a.framework||e.framework,runtimeType:a.runtimeType||e.runtimeType,capabilities:a.capabilities||e.capabilities,chatTransport:a.chatTransport||e.chatTransport,chatRoutingReason:a.chatRoutingReason||e.chatRoutingReason,versionId:a.versionId||e.versionId,updatedAt:a.updatedAt||e.updatedAt,creatorName:a.creatorName||e.creatorName},s=await r;if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t)),b({deployment:o,sourceAgentId:``,sourceAgentName:o.agentName||o.agentId||`账号云端 Agent`,builds:[],versions:s.items,currentVersionId:s.currentVersionId,loading:!1,error:``});return}let t=await QV(`/api/v1/deployments/${encodeURIComponent(e.id)}`,n);if(!t.ok)throw Error(`刷新云端 Agent 状态失败(${t.status})`);let a={...e,...await t.json(),source:`receipt`},o=a;if(a.agentId){let e=await QV(`/api/v1/cloud-agents/${encodeURIComponent(a.agentId)}`,n).catch(e=>{if(oH(e))throw e;return null});e?.ok&&(o=$V(a,await e.json()))}if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t));let s=await QV(`/api/v1/builds/${encodeURIComponent(o.buildId)}`,n);if(!s.ok)throw Error(`读取当前 Build 失败(${s.status})`);let c=await s.json(),l=String(c.agentId||``).trim();if(!l)throw Error(`当前部署缺少本地 Agent 关联`);let u=await QV(`/api/v1/agents/${encodeURIComponent(l)}`,n);if(!u.ok)throw Error(`读取本地 Build 历史失败(${u.status})`);let d=await u.json(),f=(Array.isArray(d.builds)?d.builds:[]).filter(e=>e.status===`SUCCEEDED`).sort((e,t)=>String(t.createdAt||``).localeCompare(String(e.createdAt||``))),p=await r;if(n?.aborted)return;b({deployment:o,sourceAgentId:l,sourceAgentName:String(d?.draft?.metadata?.name||l),builds:f,versions:p.items,currentVersionId:p.currentVersionId,loading:!1,error:``})}catch(e){if(oH(e)||n?.aborted)return;let t=await r.catch(()=>({items:[],currentVersionId:``}));b(n=>n?{...n,versions:t.items,currentVersionId:t.currentVersionId,loading:!1,error:e?.message||`云端 Agent 详情不可用`}:null)}}async function ce(){if(!M||R)return;let e=k.find(e=>e.id===M);if(!e){V(`请选择一个已成功的 Build`);return}if(!P){V(`请先在 Studio 设置中配置云端 Region`);return}z(!0),V(``);let t=`deploy:${M}:${P}`,n=ee();try{let r=await pH(await dH(n.signal),t,`deploy`,`部署`,n.signal,(e,t)=>g(`/api/v1/builds/${encodeURIComponent(M)}/deployments`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e},body:JSON.stringify({target:{region:P,environment:`cloud`},releasePolicy:{strategy:`rolling`,approval:`none`}}),signal:t}));if(r.status!==`SUCCEEDED`)throw Error(r.error?.message||`部署未完成`);sH(n.signal),await ne(n.signal),sH(n.signal);let i=String(r.resourceId||``).trim();DV(i?EV(i):`#/deployments`),J(`已提交云端部署`,`${e.agentName||e.agentId} · ${e.id}`)}catch(e){!oH(e)&&!n.signal.aborted&&V(e?.message||`部署失败`)}finally{te(n),n.signal.aborted||z(!1)}}function le(){b(null),p(``),h(!1),window.history.pushState(null,``,`#/deployments`)}async function ue(e,t){if(!t||x)return;S(!0),l(``);let n=`update:${e.agentId||e.id}:${t}`,r=ee();try{let i=await pH(await dH(r.signal),n,`update`,`更新`,r.signal,(n,r)=>g(`/api/v1/builds/${encodeURIComponent(t)}/deployments`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":n},body:JSON.stringify({target:e.target,releasePolicy:{strategy:`rolling`,approval:`none`}}),signal:r}));if(i.status!==`SUCCEEDED`)throw Error(i.error?.message||`更新未完成`);sH(r.signal),b(null),await ne(r.signal),sH(r.signal),J(`已提交云端更新`,`Build ${t}`)}catch(e){!oH(e)&&!r.signal.aborted&&l(e?.message||`更新失败`)}finally{te(r),r.signal.aborted||S(!1)}}async function W(){if(!C||T)return;let e=C;E(!0),l(``);try{let t=await g(e.source===`account`?`/api/v1/cloud-agents/${encodeURIComponent(e.agentId||``)}`:`/api/v1/deployments/${encodeURIComponent(e.id)}`,{method:`DELETE`});if(!t.ok)throw Error(`删除云端 Agent 失败(${t.status})`);let n=await t.json();w(null),b(null),await ne(),J(`云端 Agent 已删除`,String(n.agentId||e.agentId||``))}catch(e){l(e?.message||`删除云端 Agent 失败`)}finally{E(!1)}}async function fe(){if(!y||!f||_)return;let e=y.deployment,t=String(e.agentId||``).trim(),n=f,r=y.versions.find(e=>e.versionId===n),i=n===y.currentVersionId||r?.status.toLowerCase()===`current`;if(!t||!r?.canRollback||i)return;v(!0),b(e=>e&&{...e,error:``});let a=`rollback:${t}:${n}`,o=ee();try{let r=await pH(await dH(o.signal),a,`rollback`,`回滚`,o.signal,(e,r)=>g(`/api/v1/cloud-agents/${encodeURIComponent(t)}:rollback-version`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e},body:JSON.stringify({versionId:n}),signal:r}));if(r.status!==`SUCCEEDED`)throw Error(r.error?.message||`回滚未完成`);sH(o.signal),h(!1),p(``),await ne(o.signal),await se(e,!1,o.signal),sH(o.signal),J(`已提交版本回滚`,`云端版本 ${n}`)}catch(e){!oH(e)&&!o.signal.aborted&&(h(!1),b(t=>t&&{...t,error:e?.message||`回滚失败`}))}finally{te(o),o.signal.aborted||v(!1)}}if(D){let e=k.find(e=>e.id===M);return(0,G.jsxs)(`div`,{className:`delivery-page deployment-create-page`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>DV(`#/deployments`),children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回云端 Agent`})]}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>void ce(),disabled:!e||R||I,children:[(0,G.jsx)(de,{size:15}),(0,G.jsx)(`span`,{children:R?`部署中…`:`部署到云端`})]})]}),(0,G.jsx)(`div`,{className:`delivery-intro`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`部署到云端`}),(0,G.jsx)(`p`,{children:`选择一个已成功的 Build,由 Studio 提交统一云端部署操作。`})]})}),B&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:B}),(0,G.jsxs)(`section`,{className:`delivery-block`,"aria-label":`选择部署 Build`,children:[(0,G.jsx)(`h2`,{children:`选择 Build`}),(0,G.jsx)(`p`,{children:`ManagedRuntime 使用已校验声明;ADK、LangGraph 等代码 Agent 使用不可变 Code Bundle。`}),I?(0,G.jsx)(`p`,{children:`正在读取可部署 Build…`}):k.length?(0,G.jsx)(`div`,{className:`deployment-version-list`,role:`radiogroup`,"aria-label":`可部署 Build`,children:k.map(e=>(0,G.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.id===M,"aria-label":`${e.agentName||e.agentId||`Agent`} ${e.id}${e.isCurrent===!1?` (声明已变更)`:``}`,className:`deployment-version-option`,"data-selected":e.id===M,"data-stale":e.isCurrent===!1,onClick:()=>N(e.id),children:[(0,G.jsx)(`strong`,{className:`deployment-version-name`,children:e.agentName||e.agentId||`未命名 Agent`}),(0,G.jsxs)(`span`,{className:`deployment-version-state`,"data-state":e.isCurrent===!1?`stale`:`available`,children:[e.artifactType===`ManagedRuntime`?`托管声明`:`代码 Bundle`,e.isCurrent===!1?` · 声明已变更`:``]}),(0,G.jsx)(`code`,{title:e.id,children:gH(e.id,24)}),(0,G.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:yH(e.createdAt)})]},e.id))}):(0,G.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,G.jsx)(Ue,{size:24}),(0,G.jsx)(`h2`,{children:`没有可部署的 Build`}),(0,G.jsx)(`p`,{children:`请先完成 Agent 构建或 ManagedRuntime 声明校验。`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:n,children:`前往构建`})]}),e&&(0,G.jsxs)(`div`,{className:`api-contract`,"aria-label":`部署提交摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Agent`}),(0,G.jsx)(`strong`,{children:e.agentName||e.agentId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Build`}),(0,G.jsx)(`code`,{children:e.id})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`制品`}),(0,G.jsx)(`strong`,{children:e.artifactType===`ManagedRuntime`?`ManagedRuntime 声明`:`Code Bundle`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`目标`}),(0,G.jsx)(`strong`,{children:`云端`})]})]})]})]})}if(y){let e=y.builds[0],n=y.versions.find(e=>e.versionId===f&&e.canRollback&&e.versionId!==y.currentVersionId&&e.status.toLowerCase()!==`current`),r=y.versions.find(e=>e.versionId===y.currentVersionId||e.status.toLowerCase()===`current`),i=y.deployment.source===`receipt`,a=i&&y.deployment.artifactId===`managed-runtime`&&!!e&&e.id!==y.deployment.buildId,o=BV(y.deployment);return(0,G.jsxs)(`div`,{className:`delivery-page deployment-detail-page`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:le,children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回云端 Agent`})]}),!!y.deployment.agentId&&(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>h(!0),disabled:!n?.canRollback||x||_,children:_?`回滚中…`:n?`回滚到所选版本`:`选择版本回滚`}),a&&(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void ue(y.deployment,e.id),disabled:x,children:x?`更新中…`:`部署最新 Build`}),mH(y.deployment.status)===`ready`&&(0,G.jsx)(`button`,{className:`button accent`,type:`button`,onClick:()=>o.kind===`official-dashboard`?void ae(y.deployment):t(y.deployment),disabled:x,children:o.kind===`official-dashboard`?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ye,{size:15}),`链接`]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Le,{size:15}),`进入会话`]})})]}),(0,G.jsxs)(`div`,{className:`delivery-intro deployment-detail-heading`,children:[(0,G.jsx)(`button`,{className:`button tertiary compact`,type:`button`,onClick:le,"aria-label":`返回云端 Agent`,children:(0,G.jsx)(A,{size:16})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:y.deployment.agentName||y.sourceAgentName||`云端 Agent`}),(0,G.jsx)(`p`,{children:y.deployment.agentId||y.deployment.id})]})]}),y.error&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:y.error}),(0,G.jsxs)(`section`,{className:`delivery-block`,"aria-label":`云端 Agent 详情`,children:[(0,G.jsxs)(`div`,{className:`api-contract`,"aria-label":`云端部署事实`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`名称`}),(0,G.jsx)(`strong`,{children:y.deployment.agentName||y.sourceAgentName})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`来源`}),(0,G.jsx)(`strong`,{children:i?`Studio 部署记录`:`账号云端 Agent`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`创建子账号`}),(0,G.jsx)(`strong`,{children:y.deployment.creatorName||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`状态`}),(0,G.jsx)(`strong`,{children:hH(y.deployment.status)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`云端 Agent`}),(0,G.jsx)(`code`,{children:y.deployment.agentId||`尚未返回`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`类型`}),(0,G.jsx)(`code`,{children:y.deployment.framework||y.deployment.artifactId||`尚未返回`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Endpoint`}),(0,G.jsx)(`code`,{children:y.deployment.endpoint||`尚未返回`})]}),y.deployment.instanceId&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`实例`}),(0,G.jsx)(`code`,{children:y.deployment.instanceId})]}),i&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`当前 Build`}),(0,G.jsx)(`code`,{children:y.deployment.buildId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`当前版本`}),(0,G.jsx)(`code`,{title:r?.versionId||y.deployment.versionId||void 0,children:r?.versionName||r?.tag||y.deployment.versionId||`尚未返回`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`更新时间`}),(0,G.jsx)(`code`,{children:yH(y.deployment.updatedAt)})]}),i&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Bundle`}),(0,G.jsx)(`code`,{title:y.deployment.bundleDigest,children:y.deployment.bundleDigest})]})]}),y.deployment.agentId?(0,G.jsxs)(`section`,{className:`deployment-version-history`,"aria-label":`云端版本历史`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h3`,{children:`云端版本历史`}),(0,G.jsx)(`p`,{children:`版本状态与可回滚性来自云端 Server`})]}),y.loading?(0,G.jsx)(`p`,{children:`正在读取版本…`}):(0,G.jsxs)(`div`,{className:`deployment-version-list`,role:`radiogroup`,"aria-label":`选择回滚版本`,children:[(0,G.jsxs)(`div`,{className:`deployment-version-header`,"aria-hidden":`true`,children:[(0,G.jsx)(`span`,{children:`版本`}),(0,G.jsx)(`span`,{children:`状态`}),(0,G.jsx)(`span`,{children:`流量`}),(0,G.jsx)(`span`,{children:`创建时间`})]}),y.versions.length?y.versions.map(e=>{let t=e.versionId===y.currentVersionId||e.status.toLowerCase()===`current`,n=t?`当前`:e.canRollback?`可回滚`:`不可回滚`;return(0,G.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.versionId===f,"aria-label":`${t?`当前版本`:e.canRollback?`可回滚版本`:`不可回滚版本`} ${e.versionName||e.tag||`未命名`}`,className:`deployment-version-option`,"data-current":t,"data-selected":e.versionId===f,disabled:t||!e.canRollback||x||_,onClick:()=>p(e.versionId),children:[(0,G.jsx)(`strong`,{className:`deployment-version-name`,children:e.versionName||e.tag||`未命名版本`}),(0,G.jsx)(`span`,{className:`deployment-version-state`,"data-state":t?`current`:e.canRollback?`available`:`disabled`,children:n}),(0,G.jsxs)(`span`,{className:`deployment-version-traffic`,children:[e.trafficPercentage,`%`]}),(0,G.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:yH(e.createdAt)})]},e.versionId)}):(0,G.jsx)(`p`,{className:`deployment-version-empty`,children:`云端暂未返回版本记录。`})]})]}):(0,G.jsx)(`div`,{className:`callout`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`缺少云端 Agent ID`}),(0,G.jsx)(`p`,{children:`当前记录无法查询 Server 版本历史,因此不开放版本回滚。`})]})})]}),m&&n&&(0,G.jsx)(ka,{title:`确认回滚云端 Agent?`,description:`当前云端版本 ${r?.versionName||y.deployment.versionId||`未知`}(${r?.versionId||y.deployment.versionId||`未知`})将回滚到 ${n.versionName||n.tag||`目标版本`}(${n.versionId})。系统将调用 Server RollbackVersion,并在提交后重新读取 Agent 与版本列表。`,confirmText:`确认回滚`,danger:!1,busy:_,onConfirm:()=>void fe(),onCancel:()=>h(!1)})]})}return(0,G.jsxs)(`div`,{className:`delivery-page`,"data-layout":`document`,children:[(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>DV(`#/deployments/new`),children:[(0,G.jsx)(de,{size:15}),(0,G.jsx)(`span`,{children:`部署 Agent`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void ie(),disabled:!r.length||u.size>0,children:[(0,G.jsx)(et,{size:15}),(0,G.jsx)(`span`,{children:`刷新全部状态`})]})]}),c&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:c}),(0,G.jsxs)(`section`,{className:`delivery-stat-strip compact-delivery-summary`,"aria-label":`部署摘要`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,title:`同一 Agent 的多次部署按 Agent 聚合`,children:`云端 Agent`}),(0,G.jsx)(`strong`,{children:r.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`运行中`}),(0,G.jsx)(`strong`,{children:U.ready})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`部署中`}),(0,G.jsx)(`strong`,{children:U.pending})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`异常`}),(0,G.jsx)(`strong`,{children:U.failed})]})]}),a?(0,G.jsx)(`div`,{className:`delivery-empty-state`,children:(0,G.jsx)(`p`,{children:`正在读取云端 Agent…`})}):r.length?(0,G.jsxs)(`section`,{className:`delivery-block`,"aria-label":`云端 Agent 列表`,children:[(0,G.jsxs)(`div`,{className:`delivery-section-heading`,children:[(0,G.jsx)(`h2`,{children:`Agent 列表`}),(0,G.jsxs)(`span`,{children:[r.length,` 个`]})]}),(0,G.jsx)(`div`,{className:`delivery-table-scroll`,children:(0,G.jsxs)(`table`,{className:`delivery-table`,children:[(0,G.jsx)(`thead`,{children:(0,G.jsxs)(`tr`,{children:[(0,G.jsx)(`th`,{children:`Agent`}),(0,G.jsx)(`th`,{children:`状态`}),(0,G.jsx)(`th`,{children:`类型`}),(0,G.jsx)(`th`,{children:`创建子账号`}),(0,G.jsx)(`th`,{children:`版本`}),(0,G.jsx)(`th`,{children:`更新时间`}),(0,G.jsx)(`th`,{children:(0,G.jsx)(`span`,{className:`sr-only`,children:`操作`})})]})}),(0,G.jsx)(`tbody`,{children:r.map(e=>{let n=u.has(e.id),r=BV(e);return(0,G.jsxs)(`tr`,{children:[(0,G.jsx)(`td`,{children:(0,G.jsxs)(`button`,{className:`delivery-agent-identity`,type:`button`,"aria-label":`查看 ${e.agentName||e.agentId||`云端 Agent`} 详情`,onClick:()=>void se(e),children:[(0,G.jsx)(`strong`,{children:e.agentName||e.agentId||`云端 Agent`}),(0,G.jsx)(`code`,{title:e.agentId||e.id,children:gH(e.agentId||e.id,24)})]})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-status-badge`,"data-state":mH(e.status),children:hH(e.status)})}),(0,G.jsxs)(`td`,{children:[(0,G.jsx)(`strong`,{children:e.framework||(e.artifactId===`managed-runtime`?`YAML Agent`:`高代码 Agent`)}),e.source===`receipt`&&(0,G.jsx)(`small`,{children:`Studio 部署记录`})]}),(0,G.jsx)(`td`,{children:e.creatorName||`-`}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`code`,{title:e.versionId||``,children:gH(e.versionId||`—`,20)})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-updated-at`,children:yH(e.updatedAt)})}),(0,G.jsxs)(`td`,{className:`delivery-row-actions`,children:[mH(e.status)===`ready`&&e.agentId&&(0,G.jsx)(`button`,{className:`button secondary compact`,type:`button`,"aria-label":r.kind===`official-dashboard`?`打开官方 Dashboard`:`打开云端 Agent 会话`,onClick:()=>r.kind===`official-dashboard`?void ae(e):t(e),children:r.kind===`official-dashboard`?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ye,{size:15}),(0,G.jsx)(`span`,{children:`链接`})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Le,{size:15}),(0,G.jsx)(`span`,{children:`会话`})]})}),(0,G.jsx)(yd,{label:`${e.agentName||e.agentId||e.id} 的更多操作`,items:[{label:n?`正在刷新状态`:`刷新状态`,disabled:n,onSelect:()=>void re(e)},...mH(e.status)===`ready`&&e.agentId?[{label:`在 Hosted UI 中打开`,onSelect:()=>void ae(e)}]:[],...e.source===`receipt`?[{label:`版本管理`,onSelect:()=>void se(e)}]:[],...e.agentId?[{label:`删除云端 Agent`,danger:!0,onSelect:()=>w(e)}]:[]]})]})]},e.id)})})]})})]}):(0,G.jsxs)(`div`,{className:`delivery-empty-state`,children:[(0,G.jsx)(de,{size:24}),(0,G.jsx)(`h2`,{children:`还没有云端 Agent`}),(0,G.jsx)(`p`,{children:`可以从 Agent 详情构建并部署到云端。`}),(0,G.jsxs)(`div`,{className:`delivery-empty-actions`,children:[(0,G.jsx)(`button`,{className:`button accent`,type:`button`,onClick:()=>DV(`#/deployments/new`),children:`部署 Agent`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`创建 Agent`})]})]}),C&&(0,G.jsx)(ka,{title:`删除云端 Agent?`,description:`将删除 ${C.agentId||C.id} 的云端实例和本地部署记录。此操作不会删除本地 Agent 与 Build。`,confirmText:`删除云端 Agent`,busy:T,onConfirm:()=>void W(),onCancel:()=>w(null)})]})}var xH=e=>typeof e==`boolean`||e instanceof Boolean,SH=e=>typeof e==`number`||e instanceof Number,CH=e=>typeof e==`bigint`||e instanceof BigInt,wH=e=>!!e&&e instanceof Date,TH=e=>typeof e==`string`||e instanceof String,EH=e=>Array.isArray(e),DH=e=>typeof e==`object`&&!!e,OH=e=>!!e&&e instanceof Object&&typeof e==`function`;function kH(e,t){return t===void 0&&(t=!1),!e||t?`"${e}"`:e}function AH(e,t,n){return n?JSON.stringify(e):t?`"${e}"`:e}function jH(e){let{field:t,value:n,data:r,lastElement:i,openBracket:a,closeBracket:o,level:c,style:l,shouldExpandNode:u,clickToExpandNode:d,outerRef:f,beforeExpandChange:p}=e,m=(0,s.useRef)(!1),[h,g]=(0,s.useState)(()=>u(c,n,t)),_=(0,s.useRef)(null);(0,s.useEffect)(()=>{m.current?g(u(c,n,t)):m.current=!0},[u]);let v=(0,s.useId)();if(r.length===0)return MH({field:t,openBracket:a,closeBracket:o,lastElement:i,style:l});let y=h?l.collapseIcon:l.expandIcon,b=h?l.ariaLables.collapseJson:l.ariaLables.expandJson,x=c+1,S=r.length-1,C=e=>{h!==e&&(!p||p({level:c,value:n,field:t,newExpandValue:e}))&&g(e)},w=e=>{if(e.key===`ArrowRight`||e.key===`ArrowLeft`)e.preventDefault(),C(e.key===`ArrowRight`);else if(e.key===`ArrowUp`||e.key===`ArrowDown`){e.preventDefault();let t=e.key===`ArrowUp`?-1:1;if(!f.current)return;let n=f.current.querySelectorAll(`[role=button]`),r=-1;for(let e=0;e{C(!h);let e=_.current;if(!e)return;let t=f.current?.querySelector(`[role=button][tabindex="0"]`);t&&(t.tabIndex=-1),e.tabIndex=0,e.focus()};return(0,s.createElement)(`div`,{className:l.basicChildStyle,role:`treeitem`,"aria-expanded":h,"aria-selected":void 0},(0,s.createElement)(`span`,{className:y,onClick:T,onKeyDown:w,role:`button`,"aria-label":b,"aria-expanded":h,"aria-controls":h?v:void 0,ref:_,tabIndex:c===0?0:-1}),(t||t===``)&&(d?(0,s.createElement)(`span`,{className:l.clickableLabel,onClick:T,onKeyDown:w},kH(t,l.quotesForFieldNames),`:`):(0,s.createElement)(`span`,{className:l.label},kH(t,l.quotesForFieldNames),`:`)),(0,s.createElement)(`span`,{className:l.punctuation},a),h?(0,s.createElement)(`ul`,{id:v,role:`group`,className:l.childFieldsContainer},r.map((e,t)=>(0,s.createElement)(IH,{key:e[0]||t,field:e[0],value:e[1],style:l,lastElement:t===S,level:x,shouldExpandNode:u,clickToExpandNode:d,beforeExpandChange:p,outerRef:f}))):(0,s.createElement)(`span`,{className:l.collapsedContent,onClick:T,onKeyDown:w}),(0,s.createElement)(`span`,{className:l.punctuation},o),!i&&(0,s.createElement)(`span`,{className:l.punctuation},`,`))}function MH(e){let{field:t,openBracket:n,closeBracket:r,lastElement:i,style:a}=e;return(0,s.createElement)(`div`,{className:a.basicChildStyle,role:`treeitem`,"aria-selected":void 0},(t||t===``)&&(0,s.createElement)(`span`,{className:a.label},kH(t,a.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:a.punctuation},n),(0,s.createElement)(`span`,{className:a.punctuation},r),!i&&(0,s.createElement)(`span`,{className:a.punctuation},`,`))}function NH(e){let{field:t,value:n,style:r,lastElement:i,shouldExpandNode:a,clickToExpandNode:o,level:s,outerRef:c,beforeExpandChange:l}=e;return jH({field:t,value:n,lastElement:i||!1,level:s,openBracket:`{`,closeBracket:`}`,style:r,shouldExpandNode:a,clickToExpandNode:o,data:Object.keys(n).map(e=>[e,n[e]]),outerRef:c,beforeExpandChange:l})}function PH(e){let{field:t,value:n,style:r,lastElement:i,level:a,shouldExpandNode:o,clickToExpandNode:s,outerRef:c,beforeExpandChange:l}=e;return jH({field:t,value:n,lastElement:i||!1,level:a,openBracket:`[`,closeBracket:`]`,style:r,shouldExpandNode:o,clickToExpandNode:s,data:n.map(e=>[void 0,e]),outerRef:c,beforeExpandChange:l})}function FH(e){let{field:t,value:n,style:r,lastElement:i}=e,a,o=r.otherValue;return n===null?(a=`null`,o=r.nullValue):n===void 0?(a=`undefined`,o=r.undefinedValue):TH(n)?(a=AH(n,!r.noQuotesForStringValues,r.stringifyStringValues),o=r.stringValue):xH(n)?(a=n?`true`:`false`,o=r.booleanValue):SH(n)?(a=n.toString(),o=r.numberValue):CH(n)?(a=`${n.toString()}n`,o=r.numberValue):a=wH(n)?n.toISOString():OH(n)?`function() { }`:n.toString(),(0,s.createElement)(`div`,{className:r.basicChildStyle,role:`treeitem`,"aria-selected":void 0},(t||t===``)&&(0,s.createElement)(`span`,{className:r.label},kH(t,r.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:o},a),!i&&(0,s.createElement)(`span`,{className:r.punctuation},`,`))}function IH(e){let t=e.value;return EH(t)?(0,s.createElement)(PH,Object.assign({},e)):DH(t)&&!wH(t)&&!OH(t)?(0,s.createElement)(NH,Object.assign({},e)):(0,s.createElement)(FH,Object.assign({},e))}var LH={"container-base":`_GzYRV`,"punctuation-base":`_3eOF8`,pointer:`_1MFti`,"expander-base":`_f10Tu _1MFti`,"expand-icon":`_1UmXx`,"collapse-icon":`_1LId0`,"collapsed-content-base":`_1pNG9 _1MFti`,"container-light":`_2IvMF _GzYRV`,"basic-element-style":`_2bkNM`,"child-fields-container":`_1BXBN`,"label-light":`_1MGIk`,"clickable-label-light":`_2YKJg _1MGIk _1MFti`,"punctuation-light":`_3uHL6 _3eOF8`,"value-null-light":`_2T6PJ`,"value-undefined-light":`_1Gho6`,"value-string-light":`_vGjyY`,"value-number-light":`_1bQdo`,"value-boolean-light":`_3zQKs`,"value-other-light":`_1xvuR`,"collapse-icon-light":`_oLqym _f10Tu _1MFti _1LId0`,"expand-icon-light":`_2AXVT _f10Tu _1MFti _1UmXx`,"collapsed-content-light":`_2KJWg _1pNG9 _1MFti`,"container-dark":`_11RoI _GzYRV`,"expand-icon-dark":`_17H2C _f10Tu _1MFti _1UmXx`,"collapse-icon-dark":`_3QHg2 _f10Tu _1MFti _1LId0`,"collapsed-content-dark":`_3fDAz _1pNG9 _1MFti`,"label-dark":`_2bSDX`,"clickable-label-dark":`_1RQEj _2bSDX _1MFti`,"punctuation-dark":`_gsbQL _3eOF8`,"value-null-dark":`_LaAZe`,"value-undefined-dark":`_GTKgm`,"value-string-dark":`_Chy1W`,"value-number-dark":`_2bveF`,"value-boolean-dark":`_2vRm-`,"value-other-dark":`_1prJR`},RH={container:LH[`container-light`],basicChildStyle:LH[`basic-element-style`],childFieldsContainer:LH[`child-fields-container`],label:LH[`label-light`],clickableLabel:LH[`clickable-label-light`],nullValue:LH[`value-null-light`],undefinedValue:LH[`value-undefined-light`],stringValue:LH[`value-string-light`],booleanValue:LH[`value-boolean-light`],numberValue:LH[`value-number-light`],otherValue:LH[`value-other-light`],punctuation:LH[`punctuation-light`],collapseIcon:LH[`collapse-icon-light`],expandIcon:LH[`expand-icon-light`],collapsedContent:LH[`collapsed-content-light`],noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:{collapseJson:`collapse JSON`,expandJson:`expand JSON`},stringifyStringValues:!1};LH[`container-dark`],LH[`basic-element-style`],LH[`child-fields-container`],LH[`label-dark`],LH[`clickable-label-dark`],LH[`value-null-dark`],LH[`value-undefined-dark`],LH[`value-string-dark`],LH[`value-boolean-dark`],LH[`value-number-dark`],LH[`value-other-dark`],LH[`punctuation-dark`],LH[`collapse-icon-dark`],LH[`expand-icon-dark`],LH[`collapsed-content-dark`];var zH=()=>!0,BH=e=>e<1,VH=e=>{let{data:t,style:n=RH,shouldExpandNode:r=zH,clickToExpandNode:i=!1,beforeExpandChange:a,compactTopLevel:o,...c}=e,l=(0,s.useRef)(null);return(0,s.createElement)(`div`,Object.assign({"aria-label":`JSON view`},c,{className:n.container,ref:l,role:`tree`}),o&&DH(t)?Object.entries(t).map(e=>{let[t,o]=e;return(0,s.createElement)(IH,{key:t,field:t,value:o,style:{...RH,...n},lastElement:!0,level:1,shouldExpandNode:r,clickToExpandNode:i,beforeExpandChange:a,outerRef:l})}):(0,s.createElement)(IH,{value:t,style:{...RH,...n},lastElement:!0,level:0,shouldExpandNode:r,clickToExpandNode:i,outerRef:l,beforeExpandChange:a}))};function HH(e){return e===`failed`||e===`canceled`||e===`cancelled`||e===`interrupted`?3:e===`completed`?2:+(e===`running`)}function UH(e,t){let n=[...e?.sourceEvents||[],t].sort((e,t)=>e.seqId-t.seqId),r=n[0],i=n[n.length-1],a={...e?.details||{},...t.details},o=t.details.text,s=t.type.startsWith(`reasoning.`),c=t.type.startsWith(`text.`),l=t.category===`assistant`;if((s||c)&&typeof o==`string`){let n=s?`reasoning`:`output`,r=e?.details[n];a[n]=t.type.endsWith(`.delta`)&&t.details.replace!==!0&&typeof r==`string`?r+o:o,a.text=a[n]}t.type===`usage.reported`&&(a.usage={...t.details});let u=HH(t.status)>=HH(e?.status||null)?t.status??e?.status??null:e?.status??null,d=!!(u&&HH(u)>=2)||/\.(end|completed|resolved)$/.test(t.type),f=r.timestamp,p=d?i.timestamp:e?.endedAt??null,m=p!==null&&n.length>1&&p>f?(p-f)*1e3:null;return{...e||t,...t,type:l?`assistant.message`:t.type,summary:l?`Message`:t.summary,status:u,durationMs:t.durationMs??e?.durationMs??m,details:a,sourceEvents:n,firstSeqId:r.seqId,lastSeqId:i.seqId,startedAt:f,endedAt:p}}function WH(e,t){let n=e.byRecordId.get(t.recordId);if(n===void 0){e.byRecordId.set(t.recordId,e.items.length),e.items.push(UH(void 0,t));return}e.items[n]=UH(e.items[n],t)}function GH(e){return{...e,items:[...e.items],bySeq:new Map(e.bySeq),byRecordId:new Map(e.byRecordId)}}function KH(e=[],t=!1){let n={items:[],bySeq:new Map,byRecordId:new Map,lastSeqId:0,gap:null,hasMore:t,followTail:!0};for(let t of[...e].sort((e,t)=>e.seqId-t.seqId))n.bySeq.has(t.seqId)||(n.bySeq.set(t.seqId,t),WH(n,t),n.lastSeqId=t.seqId);return n}function qH(e,t,n=!0){if(e.bySeq.has(t.seqId))return e;let r=GH(e);if(r.bySeq.set(t.seqId,t),t.seqId<=r.lastSeqId)return r;if(!n)return WH(r,t),r.lastSeqId=t.seqId,r.gap=null,r;if(t.seqId>r.lastSeqId+1)return r.gap={afterSeqId:r.lastSeqId,beforeSeqId:t.seqId},r;let i=t;for(;i;)WH(r,i),r.lastSeqId=i.seqId,i=r.bySeq.get(r.lastSeqId+1);let a=[...r.bySeq.keys()].filter(e=>e>r.lastSeqId).sort((e,t)=>e-t)[0];return r.gap=a===void 0?null:{afterSeqId:r.lastSeqId,beforeSeqId:a},r}function JH(e,t,n){let r=new Map(e.bySeq);for(let e of t)r.has(e.seqId)||r.set(e.seqId,e);let i=KH([...r.values()],n);return i.followTail=e.followTail,i}function YH(e){return e===null||Number.isNaN(e)?`不可用`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(e<1e4?2:1)} s`}function XH(e){return e===`tool`?(0,G.jsx)(yt,{size:15}):e===`assistant`?(0,G.jsx)(N,{size:15}):e===`context`?(0,G.jsx)(I,{size:15}):e===`user`?(0,G.jsx)(Ie,{size:15}):e===`approval`?(0,G.jsx)(ot,{size:15}):e===`artifact`?(0,G.jsx)(xe,{size:15}):(0,G.jsx)(ae,{size:15})}function ZH(e){return[$H(e),e.status||`未上报`,YH(e.durationMs)].join(` · `)}function QH(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function $H(e){let t=e.details.name??e.details.model;return typeof t==`string`&&t?t:e.summary}function eU(e,t){let n=QH(e.details.usage)[t];return typeof n==`number`?String(n):`-`}function tU(e){return{user:`User`,context:`Context`,assistant:`Assistant`,tool:`Tool`,approval:`Approval`,artifact:`Artifact`,system:`System`}[e]}function nU(e){return e.category===`user`||e.category===`context`?`input`:e.category===`assistant`?`model`:e.category===`tool`?`tools`:null}function rU(e,t){let n=new URLSearchParams({limit:`100`});return t&&n.set(`invocationId`,t),`/api/v1/sessions/${encodeURIComponent(e)}/events?${n}`}function iU({record:e}){let[t,n]=(0,s.useState)(e.category===`system`?`source`:`summary`);return(0,G.jsxs)(`div`,{className:`trajectory-detail`,children:[(0,G.jsxs)(`header`,{className:`trajectory-detail-heading`,children:[(0,G.jsx)(`strong`,{children:$H(e)}),(0,G.jsxs)(`span`,{children:[tU(e.category),` · `,e.status||`未上报`]})]}),(0,G.jsx)(`div`,{className:`trajectory-detail-tabs`,role:`tablist`,"aria-label":`节点详情`,children:[`summary`,`preview`,`raw`,`source`].map(e=>(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e,onClick:()=>n(e),children:e===`summary`?`Summary`:e===`preview`?`Preview`:e===`raw`?`Raw Events`:`Source`},e))}),t===`summary`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Timing`}),(0,G.jsx)(`pre`,{children:JSON.stringify({status:e.status,durationMs:e.durationMs,ttftMs:e.details.ttft_ms??null,startedAt:e.startedAt,endedAt:e.endedAt},null,2)})]}),e.details.usage!==void 0&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Usage`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.usage,null,2)})]})]}),t===`preview`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Input`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.args??e.details.input??(e.category===`user`?e.details.text:null),null,2)})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Output`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.result??e.details.output??null,null,2)})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Reasoning`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.details.reasoning??null,null,2)})]})]}),t===`raw`&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Raw Events`}),(0,G.jsx)(`pre`,{children:JSON.stringify(e.sourceEvents.map(e=>e.source??e),null,2)})]}),t===`source`&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`Source`}),(0,G.jsx)(`pre`,{children:JSON.stringify({recordId:e.recordId,eventIds:e.sourceEvents.map(e=>e.eventId),seqIds:e.sourceEvents.map(e=>e.seqId),turnId:e.turnId,stepId:e.stepId},null,2)})]})]})}function aU({sessionId:e,invocationId:t,onSelectionChange:n}){let[r,i]=(0,s.useState)(()=>KH()),[a,o]=(0,s.useState)(!0),[c,l]=(0,s.useState)(!0),[u,d]=(0,s.useState)(!0),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(!0),[y,b]=(0,s.useState)(``),x=(0,s.useRef)(null);(0,s.useEffect)(()=>{let n=!1,r=null;return v(!0),b(``),i(KH()),h(null),g(rU(e,t)).then(async e=>{if(!e.ok)throw Error(`轨迹加载失败(${e.status})`);return e.json()}).then(a=>{if(n)return;let o=KH(a.items||[],!!a.page?.hasMore);i(o),v(!1);let s=new URLSearchParams({afterSeqId:String(o.lastSeqId)});t&&s.set(`invocationId`,t),r=new EventSource(`/api/v1/sessions/${encodeURIComponent(e)}/events/stream?${s}`),r.addEventListener(`runtime_event`,e=>{try{let n=JSON.parse(e.data);i(e=>qH(e,n,!t))}catch{b(`实时轨迹包含无法解析的事件`)}})}).catch(e=>{n||(v(!1),b(e instanceof Error?e.message:`轨迹加载失败`))}),()=>{n=!0,r?.close()}},[t,e]),(0,s.useEffect)(()=>{if(!r.gap)return;let n=!1,a=r.gap,o=new URLSearchParams({limit:`500`,beforeSeqId:String(a.beforeSeqId)});return t&&o.set(`invocationId`,t),g(`/api/v1/sessions/${encodeURIComponent(e)}/events?${o}`).then(e=>{if(!e.ok)throw Error(`轨迹补拉失败(${e.status})`);return e.json()}).then(e=>{if(n)return;let t=(e.items||[]).filter(e=>e.seqId>a.afterSeqId).sort((e,t)=>e.seqId-t.seqId);i(e=>t.reduce((e,t)=>qH(e,t),e))}).catch(()=>{n||b(`实时轨迹存在序号缺口,补拉失败`)}),()=>{n=!0}},[t,e,r.gap]),(0,s.useEffect)(()=>{let e=x.current;e&&r.followTail&&(e.scrollTop=e.scrollHeight)},[r.followTail,r.items]);let S=(0,s.useCallback)(async()=>{let n=Math.min(...r.bySeq.keys());if(!Number.isFinite(n))return;let a=new URLSearchParams({limit:`100`,beforeSeqId:String(n)});t&&a.set(`invocationId`,t);let o=await g(`/api/v1/sessions/${encodeURIComponent(e)}/events?${a}`);if(!o.ok){b(`更早轨迹加载失败`);return}let s=await o.json();i(e=>JH(e,s.items||[],s.page.hasMore))},[t,e,r.bySeq]),C=(0,s.useMemo)(()=>{let e=new Map,t=new Map;for(let n of r.items){if(n.recordId.startsWith(`turn:`)&&n.turnId){let t=n.details.turn_index;e.set(n.turnId,typeof t==`number`?`Turn ${t}`:n.summary)}if(n.recordId.startsWith(`step:`)&&n.stepId){let e=n.details.step_index;t.set(n.stepId,typeof e==`number`?`Step ${e}`:n.summary)}}let n=r.items.filter(e=>e.category!==`system`),i=u?n:n.filter(e=>e.category!==`tool`),a=new Map;for(let t of i){let n=t.turnId||`run`,r=t.turnId?e.get(t.turnId)||`Turn`:`Run`,i=a.get(n)||{id:n,label:r,items:[]};i.items.push(t),a.set(n,i)}let o=Math.max(0,...r.items.map(e=>e.durationMs||0));return{groups:[...a.values()],semanticItems:n,systemItems:r.items.filter(e=>e.category===`system`),steps:t,turns:e.size,hasUsage:n.some(e=>Object.keys(QH(e.details.usage)).length>0),duration:o,calls:n.filter(e=>e.category===`tool`).length}},[u,r.items]),w=m&&r.items.find(e=>e.recordId===m)||null;(0,s.useEffect)(()=>{n?.(w)},[n,w]);let T=(0,s.useMemo)(()=>{let e=C.semanticItems.filter(e=>nU(e)&&(u||e.category!==`tool`)),t=Math.min(...e.map(e=>e.startedAt)),n=Math.max(...e.map(e=>e.endedAt??e.startedAt));return{items:e,start:t,span:Math.max(n-t,.001)}},[u,C.semanticItems]);return(0,G.jsxs)(`section`,{className:`trajectory-view`,"aria-label":`实时轨迹`,children:[(0,G.jsxs)(`header`,{className:`trajectory-toolbar`,children:[(0,G.jsxs)(`div`,{className:`segmented-control`,"aria-label":`轨迹显示控制`,children:[(0,G.jsx)(`button`,{type:`button`,className:a?`selected`:``,"aria-pressed":a,disabled:T.items.length<=1,onClick:()=>o(e=>!e),children:`Duration`}),(0,G.jsx)(`button`,{type:`button`,className:c?`selected`:``,"aria-pressed":c,onClick:()=>l(e=>!e),children:`Turns`}),(0,G.jsx)(`button`,{type:`button`,className:u?`selected`:``,"aria-pressed":u,disabled:C.calls===0,onClick:()=>d(e=>!e),children:`Calls`})]}),(0,G.jsxs)(`strong`,{className:`trajectory-summary-value`,children:[C.turns,` Turn · `,C.calls,` Call · `,YH(C.duration)]}),r.hasMore&&(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,onClick:()=>void S(),children:[(0,G.jsx)(ne,{size:14}),(0,G.jsx)(`span`,{children:`加载更早`})]})]}),y&&(0,G.jsx)(`div`,{className:`trajectory-status error`,children:y}),_&&(0,G.jsx)(`div`,{className:`trajectory-status`,children:`正在读取轨迹...`}),!_&&!C.semanticItems.length&&!C.systemItems.length&&(0,G.jsx)(`div`,{className:`trajectory-status`,children:`当前 Session 没有轨迹事件。`}),!!T.items.length&&(0,G.jsx)(`div`,{className:`trajectory-timeline`,"aria-label":`轨迹时间带`,"data-mode":a?`duration`:`equal`,children:[`input`,`model`,`tools`].map(e=>(0,G.jsxs)(`div`,{className:`trajectory-lane`,children:[(0,G.jsx)(`span`,{children:e===`input`?`Input`:e===`model`?`Model`:`Tools`}),(0,G.jsx)(`div`,{children:T.items.filter(t=>nU(t)===e).map((e,t,n)=>{let r=a?(e.startedAt-T.start)/T.span*100:t/Math.max(n.length,1)*100,i=a?Math.max(2,((e.endedAt??e.startedAt)-e.startedAt)/T.span*100):100/Math.max(n.length,1);return(0,G.jsx)(`i`,{"data-category":e.category,title:$H(e),style:{left:`${r}%`,width:`${Math.min(i,100-r)}%`}},e.recordId)})})]},e))}),(0,G.jsxs)(`div`,{ref:x,className:`trajectory-ledger`,role:`log`,"aria-label":`轨迹事件`,onScroll:e=>{let t=e.currentTarget,n=t.scrollHeight-t.scrollTop-t.clientHeight<48;i(e=>e.followTail===n?e:{...e,followTail:n})},children:[!!C.semanticItems.length&&(0,G.jsxs)(`div`,{className:`trajectory-column-header`,"data-usage":C.hasUsage,"aria-hidden":`true`,children:[(0,G.jsx)(`span`,{children:`Event`}),C.hasUsage&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:`Input Tokens`}),(0,G.jsx)(`span`,{children:`Output Tokens`}),(0,G.jsx)(`span`,{children:`Think`})]}),(0,G.jsx)(`span`,{children:`Time`})]}),C.groups.map(e=>(0,G.jsxs)(s.Fragment,{children:[(0,G.jsxs)(`div`,{className:`trajectory-turn-header`,children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsxs)(`span`,{children:[e.items.length,` nodes`]})]}),c&&e.items.map((t,n)=>{let r=t.stepId?C.steps.get(t.stepId)||`Step`:``,i=n>0?e.items[n-1]:null,a=i?.stepId?C.steps.get(i.stepId)||`Step`:``;return(0,G.jsxs)(s.Fragment,{children:[r&&r!==a&&(0,G.jsxs)(`div`,{className:`trajectory-group-label`,children:[e.label,` · `,r]}),(0,G.jsxs)(`button`,{type:`button`,className:`trajectory-row`,"data-usage":C.hasUsage,"data-category":t.category,"data-status":t.status||`unknown`,"aria-pressed":t.recordId===m,"aria-label":ZH(t),onClick:()=>h(t.recordId),children:[(0,G.jsx)(`span`,{className:`trajectory-row-icon`,children:XH(t.category)}),(0,G.jsxs)(`span`,{className:`trajectory-row-copy`,children:[(0,G.jsx)(`strong`,{children:$H(t)}),(0,G.jsxs)(`small`,{children:[tU(t.category),` · `,t.status||`未上报`]})]}),C.hasUsage&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:eU(t,`input_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:eU(t,`output_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:eU(t,`reasoning_tokens`)})]}),(0,G.jsx)(`span`,{className:`trajectory-row-duration`,children:YH(t.durationMs)})]})]},t.recordId)})]},e.id)),!!C.systemItems.length&&(0,G.jsxs)(`div`,{className:`trajectory-system-events`,children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>p(e=>!e),"aria-expanded":f,children:[(0,G.jsx)(k,{size:14}),`System Events (`,C.systemItems.length,`)`]}),f&&C.systemItems.map(e=>(0,G.jsxs)(`button`,{type:`button`,className:`trajectory-system-row`,"aria-pressed":e.recordId===m,onClick:()=>h(e.recordId),children:[e.type,` · #`,e.lastSeqId]},e.recordId))]})]}),!r.followTail&&(0,G.jsx)(`button`,{className:`button secondary small trajectory-latest`,type:`button`,onClick:()=>{let e=x.current;e&&(e.scrollTop=e.scrollHeight),i(e=>({...e,followTail:!0}))},children:`回到最新`})]})}function oU(e,t=18){let n=String(e||``);return n.length>t?`${n.slice(0,t)}…`:n}function sU(e,t=`-`){return e==null||e===``?t:String(e)}function cU(e){let t=String(e||``).toUpperCase();return t===`COMPLETED`||t===`SUCCEEDED`||t===`OK`?`成功`:t===`RUNNING`?`运行中`:t===`PAUSED`?`已暂停`:t===`FAILED`||t===`ERROR`||t===`INTERNAL`?`失败`:t===`CANCELLED`?`已取消`:t||`未知`}function lU(e){if(e==null||Number.isNaN(Number(e)))return`未上报`;let t=Number(e);return t<1?`${t.toFixed(3)} ms`:t<1e3?`${Math.round(t)} ms`:`${(t/1e3).toFixed(t<1e4?2:1)} s`}function uU(e){return e==null?`未上报`:new Intl.NumberFormat(`zh-CN`).format(Number(e))}function dU(e){if(e==null||typeof e==`boolean`)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function fU(e){let t=dU(e.totalTokens);if(t!==null&&e.usageCompleteness?.totalTokens!==!1)return t;let n=dU(e.inputTokens),r=dU(e.outputTokens);return n!==null&&r!==null&&e.usageCompleteness?.inputTokens!==!1&&e.usageCompleteness?.outputTokens!==!1?n+r:null}function pU(e){return[e.inputTokens,e.outputTokens,e.totalTokens].some(e=>dU(e)!==null)}function mU(e){let t=fU(e);return t===null?pU(e)?`部分上报`:`未上报`:uU(t)}function hU(e){let t=dU(e.inputTokens),n=dU(e.outputTokens);return`${t===null?`—`:`${e.usageCompleteness?.inputTokens===!1?`≥`:``}${uU(t)}`} 输入 · ${n===null?`—`:`${e.usageCompleteness?.outputTokens===!1?`≥`:``}${uU(n)}`} 输出`}function gU(e){let t=fU(e);if(t!==null)return uU(t);if(dU(e.totalTokens)!==null)return`部分上报`;let n=dU(e.inputTokens),r=dU(e.outputTokens);return n!==null&&r!==null||n!==null&&e.usageCompleteness?.inputTokens===!1||r!==null&&e.usageCompleteness?.outputTokens===!1?`部分上报`:n===null?r===null?`未上报`:`${uU(r)} 输出`:`${uU(n)} 输入`}function _U(e){try{let t=Number(BigInt(String(e||`0`))/1000000n);return t?new Date(t).toISOString():`-`}catch{return`-`}}function vU(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?`未知时间`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function yU(e){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2)}catch{return String(e)}}function bU(e){return e==null?`-`:typeof e==`object`?yU(e):String(e)}var xU={container:`otlp-json`,childFieldsContainer:`otlp-json-children`,basicChildStyle:`otlp-json-row`,collapseIcon:`otlp-json-toggle otlp-json-collapse`,expandIcon:`otlp-json-toggle otlp-json-expand`,collapsedContent:`otlp-json-collapsed`,label:`otlp-json-key`,clickableLabel:`otlp-json-key otlp-json-key-clickable`,nullValue:`otlp-json-null`,undefinedValue:`otlp-json-null`,numberValue:`otlp-json-number`,stringValue:`otlp-json-string`,booleanValue:`otlp-json-boolean`,otherValue:`otlp-json-other`,punctuation:`otlp-json-punctuation`,quotesForFieldNames:!0,stringifyStringValues:!0,ariaLables:{collapseJson:`收起 JSON 节点`,expandJson:`展开 JSON 节点`}},SU=[`agentkit.event.text`,`agentkit.event.delta`,`agentkit.event.content`,`agentkit.event.output`,`agentkit.event.args`,`agentkit.event.command`,`agentkit.event.input`,`agentkit.event.prompt`];function CU(e){if(!e)return``;for(let t of SU){let n=e[t];if(typeof n==`string`&&n.trim())return n;if(typeof n==`number`||typeof n==`boolean`)return String(n)}return``}function wU(e){let t=[],n=``,r=null,i=0,a=(e=!1)=>{r&&n.trim()&&t.push({kind:r,text:n,segments:i,final:e}),n=``,i=0},o={};for(let t of e||[]){let e=CU(t.attributes);if(t.name===`thinking.delta`||t.name===`message.delta`){let o=t.name===`thinking.delta`?`thinking`:`message`;r!==o&&(a(),r=o),n+=e,i+=1}else if(t.name===`thinking.completed`||t.name===`message.completed`){let n=t.name===`thinking.completed`?`thinking`:`message`;e&&(o[n]=e)}}a();for(let e of[`thinking`,`message`]){let n=o[e];if(!n)continue;let r=t.findIndex(t=>t.kind===e);r>=0?t[r]={kind:e,text:n,segments:t[r].segments,final:!0}:t.push({kind:e,text:n,segments:1,final:!0})}return t}async function TU(e){try{await navigator.clipboard.writeText(e);return}catch{}let t=document.createElement(`textarea`);t.value=e,document.body.appendChild(t),t.select();try{document.execCommand(`copy`)}catch{}t.remove()}function EU({text:e,className:t}){let[n,r]=(0,s.useState)(!1);return(0,G.jsx)(`button`,{type:`button`,className:`copy-btn ${t||``}`,title:`复制`,onClick:t=>{t.stopPropagation(),TU(e),r(!0),setTimeout(()=>r(!1),1500)},children:n?(0,G.jsx)(V,{size:12,style:{color:`var(--success)`}}):(0,G.jsx)(me,{size:12})})}function DU({label:e,text:t,tone:n,icon:r,meta:i}){let[a,o]=(0,s.useState)(!1),c=t.length>600,l=a||!c?t:`${t.slice(0,600)}…`;return(0,G.jsxs)(`div`,{className:`io-block io-${n}`,children:[(0,G.jsxs)(`div`,{className:`io-head`,children:[(0,G.jsxs)(`span`,{className:`io-label`,children:[r,e]}),i&&(0,G.jsx)(`span`,{className:`io-meta`,children:i}),(0,G.jsx)(`span`,{style:{flex:1}}),(0,G.jsx)(EU,{text:t,className:`copy-visible`})]}),(0,G.jsx)(`div`,{className:`io-text`,children:l}),c&&(0,G.jsx)(`button`,{type:`button`,className:`io-expand`,onClick:()=>o(!a),children:a?`收起`:`展开全文(${t.length} 字符)`})]})}function OU({span:e}){let t=e.attributes||{},n=t[`agentkit.tool.input`],r=t[`agentkit.tool.output`],i=wU(e.events||[]);return n!=null&&n!==``||r!=null&&r!==``||i.length>0?(0,G.jsxs)(`div`,{className:`io-stack`,children:[n!=null&&n!==``&&(0,G.jsx)(DU,{label:`工具输入`,text:bU(n),tone:`tool`}),r!=null&&r!==``&&(0,G.jsx)(DU,{label:`工具输出`,text:bU(r),tone:`tool`}),i.map((e,t)=>(0,G.jsx)(DU,{label:e.kind===`message`?`模型输出`:`思考过程`,text:e.text,tone:e.kind,icon:e.kind===`message`?(0,G.jsx)(Ie,{size:12}):(0,G.jsx)(R,{size:12}),meta:e.final?`完整`:`${e.segments} 段增量`},t))]}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`该 Span 没有捕获内容(可在 设置 → 可观测 开启 Trace 内容记录)。`})})}function kU({values:e}){let t=Object.entries(e||{}).sort(([e],[t])=>e.localeCompare(t));return t.length?(0,G.jsx)(`dl`,{className:`trace-kv-list`,children:t.map(([e,t])=>(0,G.jsxs)(`div`,{className:`trace-kv-row`,children:[(0,G.jsx)(`dt`,{className:`trace-kv-key`,children:e}),(0,G.jsx)(`dd`,{className:`trace-kv-value`,children:bU(t)}),(0,G.jsx)(EU,{text:bU(t),className:`trace-kv-copy`})]},e))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`没有可展示的字段。`})})}var AU=[{id:`spans`,label:`Spans`},{id:`trajectory`,label:`轨迹`},{id:`attributes`,label:`Attributes`},{id:`events`,label:`Events`},{id:`resource`,label:`Resource`},{id:`raw`,label:`Raw OTLP`}],jU=50;function MU({refreshTick:e}){let[t,n]=(0,s.useState)([]),[r,i]=(0,s.useState)([]),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(`24h`),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(null),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(`spans`),[C,w]=(0,s.useState)(null),[T,E]=(0,s.useState)(null),[D,j]=(0,s.useState)(!1),[M,N]=(0,s.useState)(!0),[P,F]=(0,s.useState)(!1),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(0),[B,V]=(0,s.useState)([null]),[ee,te]=(0,s.useState)(null),[U,re]=(0,s.useState)(0),[ie,ae]=(0,s.useState)(!0),[oe,se]=(0,s.useState)(``),ce=(0,s.useRef)(0),le=(0,s.useRef)(0);(0,s.useEffect)(()=>{g(`/api/v1/agents?limit=100`).then(e=>e.json()).then(e=>{i((e.items||[]).map(e=>({id:e.metadata.id,name:e.metadata.name,appearance:e.metadata.appearance})))}).catch(()=>{})},[e]);let ue=(0,s.useCallback)(async e=>{let t=++ce.current;try{let n=await g(`/api/v1/traces/${encodeURIComponent(e)}`).then(e=>e.json());if(ce.current!==t)return;v(n),b(n.rootSpanId||n.spans?.[0]?.spanId||null),S(`spans`),w(null),E(null),N(!0),F(!1),L(!1)}catch{}},[]),de=(0,s.useCallback)(async e=>{let t=++le.current,r=new URLSearchParams({limit:String(jU),sort:`startedAt:desc`});c&&r.set(`agentId`,c),u&&r.set(`status`,u),a.trim()&&r.set(`query`,a.trim()),e&&r.set(`cursor`,e),ae(!0),se(``);try{let e=await g(`/api/v1/traces?${r}`);if(!e.ok)throw Error(`Trace 列表加载失败(${e.status})`);let i=await e.json();if(le.current!==t)return;let a=i.items||[];n(a),te(i.nextCursor||null),re(Number(i.total)||0)}catch(e){if(le.current!==t)return;n([]),te(null),re(0),se(e instanceof Error?e.message:`Trace 列表加载失败`)}finally{le.current===t&&ae(!1)}},[c,a,u]);(0,s.useEffect)(()=>{V([null]),z(0),de(null)},[de,e]),(0,s.useEffect)(()=>{let e=new URLSearchParams({range:f});c&&e.set(`agentId`,c),u&&e.set(`status`,u),g(`/api/v1/traces/overview?${e}`).then(e=>e.ok?e.json():Promise.reject(Error())).then(h).catch(()=>h(null))},[c,f,e,u]),(0,s.useEffect)(()=>{if(x!==`raw`||!_||T)return;let e=_.traceId;j(!0),g(`/api/v1/traces/${encodeURIComponent(e)}/otlp`).then(e=>e.json()).then(e=>{E(e),j(!1)}).catch(()=>j(!1))},[x,_,T]);let W=_?.spans?.find(e=>e.spanId===y)||null,fe=(0,s.useMemo)(()=>{let e=_?.spans||[],t=new Map;e.forEach(e=>{let n=e.parentSpanId||``;t.has(n)||t.set(n,[]),t.get(n).push(e)}),t.forEach(e=>e.sort((e,t)=>{try{return Number(BigInt(e.startTimeUnixNano||`0`)-BigInt(t.startTimeUnixNano||`0`))}catch{return 0}}));let n=[],r=new Set,i=(e,a)=>{!e||r.has(e.spanId)||(r.add(e.spanId),n.push({span:e,depth:a}),(t.get(e.spanId)||[]).forEach(e=>i(e,a+1)))};return i(e.find(e=>e.spanId===_?.rootSpanId)||e.find(e=>!e.parentSpanId),0),e.forEach(e=>i(e,+!!e.parentSpanId)),n},[_]),pe=fe.find(e=>e.span.spanId===_?.rootSpanId)?.span||fe[0]?.span,he=(0,s.useMemo)(()=>{if(!pe)return{start:0n,duration:1};try{let e=BigInt(pe.startTimeUnixNano||`0`),t=BigInt(pe.endTimeUnixNano||pe.startTimeUnixNano||`0`);return{start:e,duration:Number(t>e?t-e:1n)}}catch{return{start:0n,duration:1}}},[pe]),ge=_?.metrics||{durationMs:_?.durationMs,inputTokens:_?.inputTokens,outputTokens:_?.outputTokens,totalTokens:_?.totalTokens,usageReported:_?.usageReported},_e=r.find(e=>e.id===_?.agentId),ve=(0,s.useMemo)(()=>[{id:`status`,header:`状态`,width:130,cell:e=>(0,G.jsxs)(`span`,{className:`trace-table-status ${e.status}`,title:e.status,children:[(0,G.jsx)(`span`,{className:`trace-list-status ${e.status}`}),cU(e.status)]})},{id:`identity`,header:`Agent / Run`,minWidth:270,cell:e=>{let t=r.find(t=>t.id===e.agentId),n=t?.name||e.agentId||`unknown-agent`;return(0,G.jsxs)(`button`,{type:`button`,className:`trace-table-open trace-table-agent`,onClick:()=>ue(e.traceId),children:[(0,G.jsx)(Ct,{name:n,appearance:t?.appearance,size:`xs`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:n}),(0,G.jsx)(`small`,{children:oU(e.runId||e.traceId,32)})]})]})}},{id:`startedAt`,header:`开始时间`,minWidth:140,cell:e=>vU(e.startedAt)},{id:`duration`,header:`耗时`,width:110,cell:e=>lU(e.durationMs)},{id:`model`,header:`模型`,minWidth:140,cell:e=>e.model||`-`},{id:`tokens`,header:`Token`,width:110,cell:e=>gU(e)},{id:`spans`,header:`Span`,width:80,cell:e=>e.spanCount||0},{id:`actions`,header:(0,G.jsx)(`span`,{className:`sr-only`,children:`操作`}),width:110,className:`actions-column`,headerClassName:`actions-column`,cell:e=>(0,G.jsx)(`button`,{type:`button`,className:`button tertiary small`,onClick:()=>ue(e.traceId),children:`查看详情`})}],[r,ue]),ye=(0,s.useCallback)(()=>{if(_?.traceId){ue(_.traceId);return}de(B[R]||null)},[_?.traceId,B,R,de,ue]),be=(0,s.useCallback)(()=>{if(R<=0)return;let e=R-1;z(e),de(B[e]||null)},[B,R,de]),xe=(0,s.useCallback)(()=>{if(!ee)return;let e=R+1;V(t=>{let n=t.slice(0,e);return n[e]=ee,n}),z(e),de(ee)},[R,de,ee]);async function Se(){!_?.traceId||!_.rootSpanId||(await TU(`00-${_.traceId}-${_.rootSpanId}-01`),J(`traceparent 已复制`,oU(_.traceId,24)))}async function Ce(){if(!_)return;let e=T;e||(e=await g(`/api/v1/traces/${encodeURIComponent(_.traceId)}/otlp`).then(e=>e.json()).catch(()=>null),e&&E(e)),e&&(await TU(JSON.stringify(e,null,2)),J(`Raw OTLP 已复制`,oU(_.traceId,24)))}async function we(){if(!_?.sessionId)return;let e=window.showSaveFilePicker;if(!e){J(`浏览器不支持导出`,`请使用支持文件保存的 Chromium 浏览器。`,`error`);return}let t;try{t=await e({suggestedName:`${_.sessionId}-${_.runId||`session`}-session-log.jsonl`,types:[{description:`Session Log`,accept:{"application/x-ndjson":[`.jsonl`]}}]})}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return;J(`Session Log 导出失败`,e instanceof Error?e.message:`无法选择保存位置`,`error`);return}try{let e=await g(`/api/v1/sessions/${encodeURIComponent(_.sessionId)}:export`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filename:t.name,invocationId:_.runId||void 0,download:!0})});if(!e.ok)throw Error(`导出失败(${e.status})`);let n=await t.createWritable();await n.write(await e.blob()),await n.close();let r=e.headers.get(`X-Session-Event-Count`)||`0`;J(`Session Log 已导出`,`${t.name} · ${r} 条事件`)}catch(e){J(`Session Log 导出失败`,e instanceof Error?e.message:`未知错误`,`error`)}}return(0,G.jsxs)(`div`,{className:`page-container observability-page`,id:`traceExplorer`,"data-layout":`workbench`,children:[(0,G.jsxs)(xd,{children:[(0,G.jsxs)(`div`,{className:`search-field header-search-field`,children:[(0,G.jsx)(tt,{size:14}),(0,G.jsx)(`input`,{type:`search`,"aria-label":`搜索 Trace、Run 或 Session`,placeholder:`搜索 Trace、Run 或 Session`,value:a,onChange:e=>o(e.target.value)})]}),(0,G.jsxs)(`div`,{className:`segmented-control compact`,"aria-label":`可观测时间范围`,children:[(0,G.jsx)(`button`,{type:`button`,className:f===`24h`?`selected`:``,onClick:()=>p(`24h`),children:`24 小时`}),(0,G.jsx)(`button`,{type:`button`,className:f===`7d`?`selected`:``,onClick:()=>p(`7d`),children:`7 天`})]})]}),_&&(0,G.jsxs)(Sd,{children:[(0,G.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>void we(),children:[(0,G.jsx)(k,{size:15}),(0,G.jsx)(`span`,{children:`导出 Session Log`})]}),(0,G.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>{ce.current+=1,v(null),b(null),F(!1),L(!1)},children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回 Trace 列表`})]})]}),(0,G.jsxs)(`div`,{className:`data-page-body observability-body`,children:[(0,G.jsx)(NU,{overview:m,range:f}),!_&&(0,G.jsxs)(`div`,{className:`trace-toolbar`,"aria-label":`Trace 筛选`,children:[(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`按 Agent 筛选`,value:c||`__all__`,options:[{value:`__all__`,label:`全部 Agent`},...r.map(e=>({value:e.id,label:e.name}))],onValueChange:e=>l(e===`__all__`?``:e)}),(0,G.jsx)(Fh,{className:`compact-select`,ariaLabel:`按状态筛选`,value:u||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`COMPLETED`,label:`成功`},{value:`FAILED`,label:`失败`},{value:`CANCELLED`,label:`已取消`}],onValueChange:e=>d(e===`__all__`?``:e)})]}),_&&(0,G.jsxs)(`section`,{className:`stat-strip`,"aria-label":`Trace 指标`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Trace 状态`}),(0,G.jsx)(`strong`,{children:_?cU(_.status):`未选择`}),(0,G.jsx)(`small`,{children:_?`${_.spans?.length||0} Span · ${_.target?.name||`本地工作区`}`:`选择一条 Trace 查看`})]}),(0,G.jsxs)(`div`,{className:`emphasis`,"data-state":_?.status===`FAILED`?`failed`:_?.status===`COMPLETED`?`ready`:`running`,children:[(0,G.jsx)(`span`,{children:`总耗时`}),(0,G.jsx)(`strong`,{children:_?lU(ge.durationMs):`未上报`}),(0,G.jsx)(`small`,{children:_?ge.durationMs===null||ge.durationMs===void 0?`Runtime 未上报`:ge.durationSource===`runtime`?`Runtime 精确上报`:`Studio 时钟回退`:`等待 Runtime 上报`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Token`}),(0,G.jsx)(`strong`,{children:_?mU(ge):`未上报`}),(0,G.jsx)(`small`,{children:_&&pU(ge)?hU(ge):`输入 / 输出`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`模型`}),(0,G.jsx)(`strong`,{children:_?.model||`-`}),(0,G.jsx)(`small`,{children:_?`${_.runtimeType||`unknown`} · ${ge.usageSource||`Usage 未上报`}`:`Runtime`})]})]}),!_&&(0,G.jsxs)(`section`,{className:`trace-list-page`,"aria-label":`Trace 列表`,children:[(0,G.jsx)(`header`,{className:`trace-list-page-header`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Trace`}),(0,G.jsxs)(`span`,{children:[U,` 条`]})]})}),(0,G.jsx)(_m,{columns:ve,data:t,getRowId:e=>e.traceId,caption:`Trace 列表`,minWidth:1060,loading:ie,error:oe,onRetry:ye,onRowActivate:e=>ue(e.traceId),rowAriaLabel:e=>`${e.agentId||`Agent`} ${e.runId||e.traceId}`,empty:{icon:(0,G.jsx)(O,{size:20}),title:`还没有 Trace`,description:`运行一次 Agent 后在这里查看调用链,或调整筛选条件。`},pagination:{pageIndex:R,pageSize:jU,total:U,hasNextPage:!!ee,onPreviousPage:be,onNextPage:xe}})]}),_&&(0,G.jsxs)(`div`,{className:`trace-workbench detail-route${P?` detail-expanded`:``}${I?` detail-collapsed`:``}`,children:[(0,G.jsxs)(`aside`,{className:`trace-run-panel`,"aria-label":`本页 Trace`,children:[(0,G.jsx)(`div`,{className:`trace-panel-header`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`Traces`}),(0,G.jsxs)(`span`,{children:[U,` 条结果`]})]})}),(0,G.jsx)(`div`,{className:`trace-run-list`,children:t.map(e=>{let t=r.find(t=>t.id===e.agentId);return(0,G.jsxs)(`button`,{type:`button`,className:e.traceId===_.traceId?`active`:``,onClick:()=>ue(e.traceId),children:[(0,G.jsxs)(`span`,{className:`trace-run-identity`,children:[(0,G.jsx)(Ct,{name:t?.name||e.agentId||`Agent`,appearance:t?.appearance,size:`xs`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:t?.name||e.agentId||`Agent`}),(0,G.jsx)(`small`,{children:oU(e.runId||e.traceId,22)})]})]}),(0,G.jsxs)(`span`,{className:`trace-run-meta`,children:[(0,G.jsx)(`span`,{className:`mono`,children:lU(e.durationMs)}),(0,G.jsx)(`span`,{className:`badge`,"data-state":e.status===`FAILED`?`failed`:e.status===`COMPLETED`?`ready`:`running`,title:e.status,children:cU(e.status)})]})]},e.traceId)})})]}),(0,G.jsxs)(`section`,{className:`trace-span-panel`,"aria-label":`Span 时间瀑布`,children:[(0,G.jsxs)(`div`,{className:`trace-panel-header trace-span-header`,children:[(0,G.jsx)(Ct,{name:_e?.name||_.agentId||`Agent`,appearance:_e?.appearance,size:`sm`}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:_?`${_e?.name||_.agentId||`Agent`} · ${_.runId||`Run`}`:`选择一条 Trace`}),(0,G.jsx)(`span`,{className:`mono`,children:_?.traceId||`-`})]}),(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!_,onClick:Se,children:[(0,G.jsx)(me,{size:14}),(0,G.jsx)(`span`,{children:`复制 traceparent`})]}),I&&(0,G.jsxs)(`button`,{className:`button secondary small trace-detail-reopen`,type:`button`,onClick:()=>L(!1),children:[(0,G.jsx)(ne,{size:14}),(0,G.jsx)(`span`,{children:`展开右侧详情`})]})]}),(0,G.jsxs)(`div`,{className:`trace-axis`,"aria-hidden":`true`,children:[(0,G.jsx)(`span`,{children:`Span`}),(0,G.jsx)(`span`,{children:`0%`}),(0,G.jsx)(`span`,{children:`50%`}),(0,G.jsx)(`span`,{children:`100%`}),(0,G.jsx)(`span`,{children:`耗时`})]}),(0,G.jsx)(`div`,{className:`trace-span-tree`,children:fe.length===0?(0,G.jsxs)(`div`,{className:`trace-stage-empty`,children:[(0,G.jsx)(Ve,{size:20}),(0,G.jsx)(`p`,{children:_?`该 OTLP Trace 没有 Span。`:`选择左侧 Trace,查看 Agent、模型和 Tool 的父子关系与耗时。`})]}):fe.map(({span:e,depth:t})=>{let n=0,r=0;try{let t=BigInt(e.startTimeUnixNano||`0`),i=BigInt(e.endTimeUnixNano||e.startTimeUnixNano||`0`);n=Math.max(0,Math.min(100,Number(t-he.start)/he.duration*100)),r=Math.max(0,Math.min(100-n,Number(i-t)/he.duration*100))}catch{}return(0,G.jsxs)(`button`,{type:`button`,className:`trace-span-row${e.spanId===y?` active`:``}`,"data-kind":e.kind,"data-status":e.status,onClick:()=>{b(e.spanId),S(`spans`)},children:[(0,G.jsxs)(`span`,{className:`trace-span-name`,children:[(0,G.jsx)(`span`,{className:`trace-span-guides`,children:Array.from({length:t},(e,t)=>(0,G.jsx)(`span`,{className:`trace-span-guide`},t))}),(0,G.jsx)(`span`,{className:`trace-span-status ${e.status}`}),(0,G.jsxs)(`span`,{className:`trace-span-name-copy`,children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsxs)(`span`,{children:[e.kind,` · `,oU(e.spanId,16)]})]})]}),(0,G.jsx)(`span`,{className:`trace-waterfall-track`,children:(0,G.jsx)(`span`,{className:`trace-waterfall-bar`,style:{"--span-left":`${n.toFixed(3)}%`,"--span-width":`${r.toFixed(3)}%`}})}),(0,G.jsx)(`span`,{className:`trace-span-duration`,children:lU(e.durationMs)})]},e.spanId)})})]}),(0,G.jsxs)(`aside`,{className:`trace-detail-panel${I?` is-collapsed`:``}`,"aria-label":`Span 详情`,children:[(0,G.jsxs)(`div`,{className:`trace-panel-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:W?sU(W.name):`Span 详情`}),(0,G.jsx)(`span`,{children:W?`${sU(W.kind)} · ${cU(W.status)}`:`尚未选择 Span`})]}),(0,G.jsxs)(`div`,{className:`trace-detail-actions`,children:[!I&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!_,onClick:Ce,children:[(0,G.jsx)(me,{size:14}),(0,G.jsx)(`span`,{children:`复制 Raw OTLP`})]}),(0,G.jsxs)(`button`,{className:`button tertiary small trace-detail-expand`,type:`button`,"aria-pressed":P,title:P?`退出放大详情`:`放大详情`,onClick:()=>F(!P),children:[P?(0,G.jsx)(Re,{size:14}):(0,G.jsx)(Pe,{size:14}),(0,G.jsx)(`span`,{children:P?`退出放大`:`放大详情`})]})]}),(0,G.jsxs)(`button`,{className:`button tertiary small trace-detail-collapse`,type:`button`,"aria-expanded":!I,title:I?`展开 Trace 详情`:`收起 Trace 详情`,onClick:()=>{L(e=>!e),I||F(!1)},children:[I?(0,G.jsx)(ne,{size:14}):(0,G.jsx)(H,{size:14}),(0,G.jsx)(`span`,{children:I?`展开详情`:`收起详情`})]})]})]}),!I&&(0,G.jsx)(`div`,{className:`trace-tabs`,role:`tablist`,"aria-label":`Trace 详情分类`,children:AU.map(e=>(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":x===e.id,className:x===e.id?`active`:``,onClick:()=>S(e.id),children:e.label},e.id))}),!I&&(0,G.jsxs)(`div`,{className:`trace-detail-body${x===`raw`?` raw-active`:``}`,children:[x===`trajectory`&&(0,G.jsxs)(`div`,{className:`trace-trajectory-layout`,children:[(0,G.jsx)(aU,{sessionId:_.sessionId,invocationId:_.runId||void 0,onSelectionChange:w}),(0,G.jsx)(`aside`,{className:`trajectory-selection`,"aria-label":`轨迹详情`,children:C?(0,G.jsx)(iU,{record:C}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`选择一条轨迹事件查看详情。`})})})]}),x!==`raw`&&x!==`trajectory`&&(0,G.jsxs)(`div`,{children:[!W&&(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`选择一个 Span 查看标准属性。`})}),W&&x===`spans`&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(OU,{span:W}),(0,G.jsxs)(`dl`,{className:`trace-detail-grid`,style:{marginTop:14},children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Trace ID`}),(0,G.jsx)(`dd`,{children:_?.traceId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Span ID`}),(0,G.jsx)(`dd`,{children:W.spanId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Parent`}),(0,G.jsx)(`dd`,{children:W.parentSpanId||`Root`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Kind`}),(0,G.jsx)(`dd`,{children:W.kind})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`状态`}),(0,G.jsx)(`dd`,{title:W.status,children:cU(W.status)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`开始`}),(0,G.jsx)(`dd`,{children:_U(W.startTimeUnixNano)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`耗时`}),(0,G.jsx)(`dd`,{children:lU(W.durationMs)})]})]})]}),W&&x===`attributes`&&(0,G.jsx)(kU,{values:W.attributes||{}}),W&&x===`events`&&(0,G.jsx)(IU,{events:W.events||[]}),W&&x===`resource`&&(0,G.jsx)(kU,{values:{..._?.resource||{},"otel.scope.name":_?.scope?.name,"otel.scope.version":_?.scope?.version}})]}),(0,G.jsxs)(`div`,{className:`trace-raw`,hidden:x!==`raw`,children:[x===`raw`&&!D&&T&&(0,G.jsxs)(`div`,{className:`trace-raw-toolbar`,children:[(0,G.jsx)(`span`,{children:`JSON Tree`}),(0,G.jsxs)(`div`,{role:`group`,"aria-label":`JSON 展开控制`,children:[(0,G.jsx)(`button`,{type:`button`,className:M?``:`active`,onClick:()=>N(!1),children:`全部收起`}),(0,G.jsx)(`button`,{type:`button`,className:M?`active`:``,onClick:()=>N(!0),children:`全部展开`})]})]}),x===`raw`&&D&&(0,G.jsx)(`div`,{className:`trace-raw-loading`,children:`正在读取 OTLP JSON…`}),x===`raw`&&!D&&T&&(0,G.jsx)(`div`,{className:`trace-raw-tree`,children:(0,G.jsx)(VH,{"aria-label":`Raw OTLP JSON`,data:T,style:xU,shouldExpandNode:M?zH:BH,clickToExpandNode:!0})}),x===`raw`&&!D&&!T&&(0,G.jsx)(`div`,{className:`trace-raw-loading`,children:`没有可显示的 OTLP JSON。`})]})]})]})]})]})]})}function NU({overview:e,range:t}){let n=e?.total||0,r=e?.completed||0,i=e?.successRate==null?`—`:`${Math.round(e.successRate*100)}%`,a=e?.averageDurationMs==null?`—`:lU(e.averageDurationMs),o=e?.totalTokens||0,s=e?.inputTokens||0,c=e?.outputTokens||0,l=e?.buckets||[],u=l.some(e=>e.runs>0);return(0,G.jsxs)(`section`,{className:`observability-overview${u?` has-trend`:``}`,"aria-label":`运行概览`,children:[(0,G.jsxs)(`div`,{className:`overview-metric-grid`,children:[(0,G.jsx)(PU,{icon:(0,G.jsx)(O,{size:15}),label:t===`7d`?`近 7 天运行`:`近 24 小时运行`,value:String(n)}),(0,G.jsx)(PU,{icon:(0,G.jsx)(re,{size:15}),label:`成功率`,value:i,note:n?`${r} / ${n}`:void 0,tone:`success`}),(0,G.jsx)(PU,{icon:(0,G.jsx)(ue,{size:15}),label:`平均耗时`,value:a,note:r?`${r} 个完成运行`:void 0}),(0,G.jsx)(PU,{icon:(0,G.jsx)(pe,{size:15}),label:`Token`,value:n?o?uU(o):`未上报`:`—`,note:o?`${uU(s)} 输入 · ${uU(c)} 输出`:void 0})]}),u&&(0,G.jsxs)(`div`,{className:`overview-chart-card`,children:[(0,G.jsx)(`div`,{className:`overview-chart-header`,children:(0,G.jsx)(`strong`,{children:`运行趋势`})}),(0,G.jsx)(FU,{buckets:l,range:t}),(0,G.jsxs)(`div`,{className:`overview-chart-legend`,children:[(0,G.jsx)(`span`,{className:`legend-runs`}),`运行数`,(0,G.jsx)(`span`,{className:`legend-success`}),`成功数`]})]})]})}function PU({icon:e,label:t,value:n,note:r,tone:i=`neutral`}){return(0,G.jsxs)(`article`,{className:`overview-metric-card ${i}`,children:[(0,G.jsxs)(`div`,{className:`overview-metric-label`,children:[(0,G.jsx)(`span`,{children:e}),(0,G.jsx)(`small`,{children:t})]}),(0,G.jsx)(`strong`,{children:n}),r&&(0,G.jsx)(`p`,{children:r})]})}function FU({buckets:e,range:t}){let n=e.map(e=>{let n=new Date(e.startedAt),r=t===`7d`?`${n.getMonth()+1}/${n.getDate()}`:`${String(n.getHours()).padStart(2,`0`)}:00`;return{...e,label:r,success:e.completed}});if(!n.length||!n.some(e=>e.runs>0))return(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`暂无运行数据`})});let r=Math.max(1,...n.map(e=>e.runs)),i={l:30,r:10,t:10,b:22},a=800-i.l-i.r,o=118-i.t-i.b,s=a/Math.max(1,n.length-1),c=e=>i.t+o-e/r*o,l=n.map((e,t)=>`${i.l+t*s},${c(e.runs)}`).join(` `),u=n.map((e,t)=>`${i.l+t*s},${c(e.success)}`).join(` `),d=`M ${i.l},${i.t+o} L ${l.split(` `).join(` L `)} L ${i.l+(n.length-1)*s},${i.t+o} Z`,f=Math.ceil(n.length/6);return(0,G.jsxs)(`svg`,{className:`overview-chart`,viewBox:`0 0 800 118`,preserveAspectRatio:`none`,"aria-label":`运行趋势曲线`,children:[[0,.25,.5,.75,1].map(e=>{let t=i.t+o-e*o;return(0,G.jsx)(`line`,{x1:i.l,y1:t,x2:800-i.r,y2:t,stroke:`var(--border)`,strokeWidth:`1`,strokeDasharray:e===0?`0`:`3 3`},e)}),(0,G.jsx)(`path`,{d,fill:`var(--accent-soft)`,opacity:`0.6`}),(0,G.jsx)(`polyline`,{points:l,fill:`none`,stroke:`var(--accent)`,strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`}),(0,G.jsx)(`polyline`,{points:u,fill:`none`,stroke:`var(--success)`,strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`,strokeDasharray:`4 3`}),n.map((e,t)=>(0,G.jsx)(`circle`,{cx:i.l+t*s,cy:c(e.runs),r:`2.5`,fill:`var(--accent)`,children:(0,G.jsx)(`title`,{children:`${e.label}:${e.runs} 次运行,${e.success} 次成功`})},e.startedAt)),n.map((e,t)=>(t%f===0||t===n.length-1)&&(0,G.jsx)(`text`,{x:i.l+t*s,y:110,textAnchor:`middle`,fill:`var(--text-tertiary)`,fontSize:`11`,children:e.label},`label-${e.startedAt}`))]})}function IU({events:e}){let t=(0,s.useMemo)(()=>{let t=[],n=``,r=null,i=0,a=()=>{r&&n.trim()&&t.push({type:`card`,card:{kind:r,text:n,segments:i,final:!1}}),n=``,i=0,r=null};for(let o of e)if(o.name===`thinking.delta`||o.name===`message.delta`){let e=o.name===`thinking.delta`?`thinking`:`message`;r!==e&&a(),r=e,n+=CU(o.attributes),i+=1}else o.name===`thinking.completed`||o.name===`message.completed`||(a(),t.push({type:`event`,event:o}));return a(),t},[e]);return e.length?(0,G.jsx)(`div`,{className:`io-stack`,children:t.map((e,t)=>e.type===`card`?(0,G.jsx)(DU,{label:e.card.kind===`message`?`模型输出流`:`思考流`,text:e.card.text,tone:e.card.kind,icon:e.card.kind===`message`?(0,G.jsx)(Ie,{size:12}):(0,G.jsx)(R,{size:12}),meta:`${e.card.segments} 段增量`},t):(0,G.jsxs)(`article`,{className:`trace-event-card`,children:[(0,G.jsx)(`strong`,{children:e.event.name}),(0,G.jsx)(`span`,{children:_U(e.event.timeUnixNano)}),(0,G.jsx)(kU,{values:e.event.attributes||{}})]},t))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`该 Span 没有 Events。`})})}var LU=[{kind:`model`,label:`模型`,icon:ge},{kind:`tool`,label:`Tool`,icon:yt},{kind:`mcp`,label:`MCP Server`,icon:Ve},{kind:`skill`,label:`Skill`,icon:ct}];function RU(e){return e===`ready`?`可用`:e===`missing-secret`?`缺少凭证`:e===`unhealthy`||e===`failed`?`异常`:e===`unresolved`?`未解析`:e||`未知`}function zU(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function BU({refreshTick:e,onOpenResources:t}){let[n,r]=(0,s.useState)([]),[i,a]=(0,s.useState)({}),[o,c]=(0,s.useState)(0),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(null),[p,m]=(0,s.useState)(`24h`),[h,_]=(0,s.useState)(null),[v,y]=(0,s.useState)([]),[b,x]=(0,s.useState)(``),S=(0,s.useCallback)(async()=>{let[e,t,n,i,o,s]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()).catch(()=>({items:[]})),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null),g(`/api/v1/runs?limit=200`).then(e=>e.json()).catch(()=>({items:[]})),g(`/api/v1/system/bootstrap`).then(e=>e.json()).catch(()=>null),g(`/api/v1/traces/overview?range=${p}`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/deployments`).then(e=>e.ok?e.json():{items:[]}).catch(()=>({items:[]}))]),l=e.items||[];t?.items?.length&&(l=[...l.filter(e=>e.kind!==`model`||e.source===`local`||e.source===`market`),...t.items]),r(l),c((n.items||[]).length),u(i?.workspace?.path||``),f(!!i?.workspace),_(o),y(Array.isArray(s?.items)?s.items:[]);let d=[...new Set(l.filter(e=>e.kind===`model`).map(zU).filter(Boolean))],m=await Promise.all(d.map(async e=>{try{return[e,await(await g(`/api/v1/credentials/${encodeURIComponent(e.replace(/^env:\/\//,``))}`)).json()]}catch{return[e,{configured:!1}]}}));a(Object.fromEntries(m))},[p]);(0,s.useEffect)(()=>{S()},[S,e]);let C=e=>e.kind===`model`?i[zU(e)]?.configured?`ready`:`missing-secret`:e.status,w=n.filter(e=>e.kind===`model`).filter(e=>C(e)===`ready`),T=n.filter(e=>[`tool`,`mcp`,`skill`].includes(e.kind)).filter(e=>C(e)===`ready`),E=d==null?`pending`:d?`ready`:`failed`,D=d==null?`检查中`:d?`运行正常`:`连接失败`,O=h?.buckets||[],k=O.length>1&&O.some(e=>e.runs>0),A=Math.max(1,...O.map(e=>e.runs)),M=k?O.find(e=>e.runs===A):void 0,N=b.trim().toLocaleLowerCase(),P=(0,s.useMemo)(()=>n.filter(e=>C(e)!==`ready`).length,[i,n]),F=v.filter(e=>e.status===`READY`).length,I=v.filter(e=>[`ADMITTING`,`DEPLOYING`].includes(String(e.status))).length,L=F?`ready`:I?`pending`:`idle`,R=F?`${F} 已就绪`:I?`${I} 部署中`:`尚未部署`;return(0,G.jsxs)(`div`,{className:`page-container runtime-resource-page`,"data-layout":`document`,children:[(0,G.jsx)(xd,{children:(0,G.jsxs)(`div`,{className:`segmented-control compact`,role:`tablist`,"aria-label":`运行趋势时间范围`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":p===`24h`,onClick:()=>m(`24h`),children:`24 小时`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":p===`7d`,onClick:()=>m(`7d`),children:`7 天`})]})}),(0,G.jsxs)(`div`,{className:`data-page-body`,children:[(0,G.jsxs)(`section`,{className:`runtime-status-summary`,"aria-label":`运行状态`,children:[(0,G.jsxs)(`div`,{title:l||`本地工作区`,"data-state":E,children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`本地 Runtime`}),(0,G.jsxs)(`strong`,{className:`stat-value`,children:[(0,G.jsx)(`span`,{className:`summary-status-dot`}),D]}),E===`failed`&&(0,G.jsxs)(`button`,{className:`text-button`,type:`button`,onClick:()=>void S(),children:[(0,G.jsx)(et,{size:13}),`重新检查`]})]}),(0,G.jsxs)(`div`,{"data-state":L,children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`云端部署`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:R})]})]}),(0,G.jsxs)(`div`,{className:`stat-strip compact-summary runtime-metric-summary`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`可用模型`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:w.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:`能力资源`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:T.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`stat-label`,children:p===`24h`?`近 24 小时运行`:`近 7 天运行`}),(0,G.jsx)(`strong`,{className:`stat-value`,children:h?.total??o})]})]}),(0,G.jsxs)(`section`,{className:`runtime-trend block${k?``:` is-empty`}`,children:[(0,G.jsxs)(`div`,{className:`block-head`,children:[(0,G.jsx)(`strong`,{children:`运行量趋势`}),M&&(0,G.jsx)(`span`,{className:`head-actions`,children:(0,G.jsxs)(`span`,{className:`tag`,children:[`峰值 `,A]})})]}),k?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{className:`runtime-trend-bars`,"aria-label":`运行量趋势`,children:O.map((e,t)=>(0,G.jsx)(`span`,{className:`runtime-trend-bar`,"data-peak":e.runs===A||void 0,style:{height:`${Math.max(4,Math.round(e.runs/A*100))}%`},title:`${e.startedAt} · ${e.runs} 次运行`},`${e.startedAt}-${t}`))}),(0,G.jsxs)(`div`,{className:`chart-axis`,children:[(0,G.jsx)(`span`,{children:`开始`}),(0,G.jsx)(`span`,{children:p===`24h`?`12:00`:`中段`}),(0,G.jsx)(`span`,{children:`现在`})]})]}):(0,G.jsx)(`div`,{className:`runtime-trend-empty`,children:(0,G.jsx)(`strong`,{children:O.length===1?`继续运行后即可形成趋势`:`运行 Agent 后即可查看趋势`})})]}),(0,G.jsxs)(`section`,{className:`runtime-resource-section block`,children:[(0,G.jsxs)(`div`,{className:`section-heading`,children:[(0,G.jsx)(`h2`,{title:`优先展示异常资源,每类最多展示 5 项`,children:`本地能力概览`}),(0,G.jsx)(`span`,{className:`badge`,"data-state":P?`warning`:`ready`,children:P?`${P} 项需处理`:`全部可用`})]}),(0,G.jsx)(`div`,{className:`section-toolbar runtime-resource-toolbar`,children:(0,G.jsxs)(`div`,{className:`search-field`,children:[(0,G.jsx)(tt,{size:14}),(0,G.jsx)(`input`,{type:`search`,"aria-label":`搜索运行资源`,placeholder:`搜索资源`,value:b,onChange:e=>x(e.target.value)})]})}),(0,G.jsx)(`div`,{className:`runtime-resource-groups`,children:LU.map(e=>{let r=n.filter(t=>t.kind===e.kind),i=r.filter(e=>!N||`${e.displayName} ${e.name}`.toLocaleLowerCase().includes(N)).sort((e,t)=>Number(C(e)===`ready`)-Number(C(t)===`ready`)).slice(0,5),a=e.icon;return(0,G.jsxs)(`article`,{className:`runtime-resource-group block`,children:[(0,G.jsxs)(`header`,{children:[(0,G.jsx)(`span`,{className:`runtime-group-icon`,children:(0,G.jsx)(a,{size:15})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:r.length})]}),r.length>0&&(0,G.jsxs)(`button`,{className:`text-button`,type:`button`,onClick:()=>t(e.kind),children:[`查看全部 `,(0,G.jsx)(j,{size:13})]})]}),(0,G.jsx)(`div`,{className:`runtime-resource-list`,children:i.length===0?(0,G.jsx)(`div`,{className:`runtime-resource-empty`,children:`暂无资源`}):i.map(e=>{let t=C(e);return(0,G.jsxs)(`div`,{className:`runtime-resource-row`,children:[(0,G.jsx)(`span`,{className:`resource-state ${t===`ready`?`ready`:`warning`}`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.displayName}),(0,G.jsx)(`small`,{children:e.version||e.source||e.name})]}),(0,G.jsx)(`span`,{className:`badge`,"data-state":t===`ready`?`ready`:`pending`,children:RU(t)})]},e.resourceId)})})]},e.kind)})})]})]})]})}function VU(e){return typeof e==`object`&&!!e&&typeof e.apply==`function`}async function HU(e){let t=window.__ModuleLoader__,n;window.__ModuleLoader__={load(t){if(n)throw Error(`DSH client bundle ${e.pluginId} registered more than once`);n=t}};try{await new Promise((t,n)=>{let r=document.createElement(`script`);r.async=!0,r.src=e.url,r.onload=()=>{r.remove(),t()},r.onerror=()=>{r.remove(),n(Error(`DSH client bundle ${e.pluginId} failed to load`))},document.head.append(r)})}finally{t?window.__ModuleLoader__=t:delete window.__ModuleLoader__}if(!n||n.id!==e.pluginId)throw Error(`DSH client bundle ${e.pluginId} registered an unexpected module`);let r={react:s},i=n.factory(t=>{if(!(t in r))throw Error(`DSH client bundle ${e.pluginId} requires unavailable module ${t}`);return r[t]});if(!VU(i))throw Error(`DSH client bundle ${e.pluginId} did not export a Cordis plugin`);return i}var UU=new class{target;bundleLoader;activeDigest=``;activeRuntime=null;pending=Promise.resolve();constructor(e,t=HU){this.target=e,this.bundleLoader=t}refresh(){return this.enqueue(async()=>{let e=await g(`/api/v1/plugin-ecosystems/dsh/profile`);if(!e.ok)throw Error(`DSH Profile client graph is unavailable`);await this.activate(await e.json())})}reconcile(e){return this.enqueue(()=>this.activate(e))}async activate(e){if(e.clientGraphDigest===this.activeDigest)return;let t=e.clientBundles.filter(e=>e.enabled&&e.compatible);if(t.length!==e.clientBundles.filter(e=>e.enabled).length){let t=e.clientBundles.find(e=>e.enabled&&!e.compatible);throw Error(`DSH client bundle ${t?.pluginId||`unknown`} is incompatible: ${t?.incompatibilityReason||`unknown reason`}`)}let n=new KB;try{for(let e of t){let t=await this.bundleLoader(e);await n.mount(t)}}catch(e){throw await n.dispose(),e}let r=this.activeRuntime;this.target.contributions.replaceAll(n.contributions),this.activeRuntime=n,this.activeDigest=e.clientGraphDigest,await r?.dispose()}dispose(){return this.enqueue(async()=>{this.target.contributions.replaceAll(new Gz),await this.activeRuntime?.dispose(),this.activeRuntime=null,this.activeDigest=``})}enqueue(e){let t=this.pending.then(e);return this.pending=t.catch(()=>void 0),t}}(qB);function WU(e){let t=e?.item||e;if(t?.ecosystem!==`dsh`&&t?.ecosystem!==`codex`)throw Error(`不支持的插件生态`);let n=String(t.pluginId||``).trim();if(!n)throw Error(`插件状态缺少 pluginId`);let r=t.runtimeState||t.runtime_state||{},i=String(t.state||``).toLowerCase(),a=String(r.state||t.providerState||t.provider_state||``).toLowerCase(),o=t.installed!==!1,s=o&&(t.failed===!0||i===`failed`||a===`failed`),c=o&&!s&&(t.bound===!0||i===`bound`||a===`bound`),l=o&&!s&&(c||t.ready===!0||i===`ready`||a===`ready`),u=o&&(t.enabled===!0||l||i===`enabled`),d=s?`failed`:c?`bound`:l?`ready`:u?`enabled`:`installed`,f=String(r.providerRef||r.provider_ref||t.providerRef||t.provider_ref||``).trim(),p=String(r.errorCode||r.error_code||t.errorCode||t.error_code||``).trim();return{ecosystem:t.ecosystem,pluginId:n,resolvedVersion:String(t.resolvedVersion||``),distributionName:String(t.distributionName||n),displayName:t.displayName,marketplaceName:t.marketplaceName,installed:o,enabled:u,ready:l,bound:c,failed:s,state:d,providerRef:f||void 0,errorCode:p||void 0,riskDisclosures:Array.isArray(t.riskDisclosures)?t.riskDisclosures:[],host:t.host,description:e?.description||t.description,capabilities:e?.capabilities||t.capabilities,clientBundle:t.clientBundle||t.client_bundle}}var GU=e=>[e.ecosystem,e.marketplaceName||`default`,e.pluginId,e.resolvedVersion||`host-managed`].join(`:`),KU=e=>e.ecosystem===`dsh`?`DeepSeek Harness 插件`:`Codex 官方插件`,qU={"@kingsoftcloud/ksadk-codex-provider":{title:`Codex AgentProvider`,publisher:`KsADK 官方`,kind:`Agent Provider`,summary:`让 Agent 使用 Codex App Server 的原生会话、工具与审批能力。`}};function JU(e){let t=qU[e.pluginId];return t?t.title:e.displayName?.trim()?e.displayName.trim():(e.pluginId.split(`/`).at(-1)||e.pluginId).replace(/^(ksadk-|dsh-)/,``).split(/[-_.]+/).map(e=>e?`${e[0].toUpperCase()}${e.slice(1)}`:``).join(` `)}function YU(e){let t=qU[e.pluginId];return t?t.publisher:e.pluginId.match(/^(@[^/]+)\//)?.[1]||e.marketplaceName||(e.ecosystem===`dsh`?`DeepSeek Harness`:`Codex Marketplace`)}function XU(e){let t=qU[e.pluginId];return t?t.kind:e.providerRef?`Agent Provider`:e.clientBundle?.compatible||(e.capabilities?.apps||[]).length?`界面扩展`:(e.capabilities?.skills||[]).length||(e.capabilities?.mcpServers||[]).length?`Agent 能力`:e.ecosystem===`dsh`?`Harness 扩展`:`工作台扩展`}function ZU(e){let t=qU[e.pluginId];return t?t.summary:e.description?.trim()?e.description.trim():e.providerRef?`为 Studio Agent 提供可选运行时与执行能力。`:e.ecosystem===`dsh`?`通过 DeepSeek Harness 扩展 Agent 的上下文、工具或工作流。`:`通过 Codex App Server 扩展工作台能力。`}var QU=[`常用`,`效率`,`创意`,`开发`,`更多`];function $U(e){let t=`${e.pluginId} ${JU(e)}`.toLowerCase();return/gmail|google-drive|google-calendar|github|notion|slack/.test(t)?`常用`:/linear|atlassian|calendar|outlook|teams|sharepoint|clickup|monday|granola|todo|asana|trello/.test(t)?`效率`:/canva|figma|design|image|video|remotion|hyperframe|higgs|adobe|runway/.test(t)?`创意`:/github|cloudflare|sentry|vercel|circleci|coderabbit|security|build|developer|code/.test(t)?`开发`:`更多`}var eW=(e,t)=>e?.error?.message||e?.detail||e?.message||t,tW={installed:`待启用`,enabled:`已启用`,ready:`就绪`,bound:`已绑定`,failed:`失败`};function nW({item:e}){let t=e.failed?U:e.state===`installed`?oe:ie;return(0,G.jsxs)(`span`,{className:`plugin-state`,"data-state":e.state,children:[(0,G.jsx)(t,{size:13}),` `,tW[e.state]]})}function rW({item:e}){let t=!!(e.providerRef&&(e.ready||e.bound)),n=[...e.capabilities?.skills||[],...e.capabilities?.mcpServers||[]],r=!!(e.clientBundle?.compatible||(e.capabilities?.apps||[]).length);return!e.providerRef&&n.length===0&&!r?null:(0,G.jsxs)(`section`,{className:`plugin-detail-section`,"aria-label":`贡献能力与使用方式`,children:[(0,G.jsx)(`h3`,{children:`贡献能力与使用方式`}),e.providerRef&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`dl`,{className:`plugin-compatibility-list`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`AgentProvider`}),(0,G.jsx)(`dd`,{children:t?`可用`:`未就绪`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`providerRef`}),(0,G.jsx)(`dd`,{children:e.providerRef})]})]}),(0,G.jsx)(`p`,{className:`plugin-detail-muted`,children:t?`在创建或编辑 Agent 时从 Runtime 选择器使用。`:`Provider 尚未就绪,暂不能用于创建 Agent。`}),t&&(0,G.jsx)(`p`,{children:(0,G.jsx)(`a`,{className:`button secondary`,href:`#/create`,children:`去创建 Agent`})})]}),r&&(0,G.jsx)(`p`,{className:`plugin-detail-muted`,children:`界面扩展启用后会自动出现在插件声明的页面、侧栏或 Tab。`}),n.length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`p`,{className:`plugin-detail-muted`,children:`Skill 与 MCP 能力需在 Agent 编辑页绑定后使用。`}),(0,G.jsx)(`p`,{children:(0,G.jsx)(`a`,{className:`button secondary`,href:`#/agents`,children:`去 Agent 列表绑定`})})]})]})}function iW(){let[e,t]=(0,s.useState)([]),[n,r]=(0,s.useState)([]),[i,a]=(0,s.useState)({}),[o,c]=(0,s.useState)(``),[l,u]=(0,s.useState)(``),[d,f]=(0,s.useState)(!1),[p,m]=(0,s.useState)(!1),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(`codex`),[b,x]=(0,s.useState)(`load`),[S,C]=(0,s.useState)(``),w=(0,s.useCallback)(async()=>{x(`load`),C(``);try{let[e,n]=await Promise.all([g(`/api/v1/plugin-ecosystems/dsh/plugins`),g(`/api/v1/plugin-ecosystems/codex/plugins`)]),[i,s]=await Promise.all([e.json(),n.json()]),l=(s.items||[]).map(WU),u=[...(i.items||[]).map(WU),...l.filter(e=>e.installed)];t(u),r(l.filter(e=>!e.installed)),a({dsh:i.host,codex:s.host}),!o&&u[0]&&c(GU(u[0]))}catch(e){C(e?.message||`插件状态加载失败`)}finally{x(``)}},[o]);(0,s.useEffect)(()=>{w()},[]);let T=(0,s.useMemo)(()=>e.find(e=>GU(e)===o)||null,[e,o]),E=(0,s.useMemo)(()=>{let e=h.trim().toLowerCase(),t=n.filter(t=>!e||[JU(t),YU(t),XU(t),ZU(t),t.pluginId].some(t=>t.toLowerCase().includes(e)));return QU.map(e=>({category:e,items:t.filter(t=>$U(t)===e)})).filter(e=>e.items.length>0)},[h,n]);async function D(){try{await UU.refresh()}catch(e){J(`插件状态已更新`,e?.message||`界面扩展装载失败,已保留原界面`)}}async function O(){if(!(!d||!l.trim())){x(`install`),C(``);try{let e=await g(`/api/v1/plugin-ecosystems/dsh/plugins:install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({source:l.trim(),acceptHostPermissions:!0})}),t=await e.json();if(!e.ok)throw Error(t?.error?.message||`DSH 插件安装失败`);let n=WU(t);c(GU(n)),f(!1),u(``),J(n.enabled?`插件已安装`:`已安装,待启用`,n.displayName||n.pluginId),await w(),await D()}catch(e){C(e?.message||`DSH 插件安装失败`)}finally{x(``)}}}async function k(e){if(p){x(`codex:${GU(e)}`),C(``);try{let t=await g(`/api/v1/plugin-ecosystems/codex/plugins/${encodeURIComponent(e.pluginId)}:install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({marketplaceName:e.marketplaceName||null,acceptUndeclaredPermissions:!0})}),n=await t.json();if(!t.ok)throw Error(eW(n,`Codex 插件安装失败`));let r=WU(n);m(!1),J(r.enabled?`插件已安装`:`已安装,待启用`,r.displayName||r.pluginId),await w()}catch(e){C(e?.message||`Codex 插件安装失败`)}finally{x(``)}}}async function A(e){if(e.ecosystem!==`dsh`)return;let t=e.enabled?`disable`:`enable`;x(`toggle`),C(``);try{let n=await g(`/api/v1/plugin-ecosystems/dsh/plugins/${encodeURIComponent(e.pluginId)}:${t}`,{method:`POST`}),r=await n.json();if(!n.ok)throw Error(eW(r,`DSH 插件状态更新失败`));await w(),await D()}catch(e){C(e?.message||`DSH 插件状态更新失败`)}finally{x(``)}}async function j(e){let t=`/api/v1/plugin-ecosystems/${e.ecosystem}/plugins/${encodeURIComponent(e.pluginId)}`;x(`delete`),C(``);try{let n=await g(t,{method:`DELETE`});if(!n.ok){let e=await n.json();throw Error(eW(e,`插件卸载失败`))}c(``),await w(),e.ecosystem===`dsh`&&await D()}catch(e){C(e?.message||`插件卸载失败`)}finally{x(``)}}return(0,G.jsxs)(`div`,{className:`page-container plugins-page`,"data-layout":`document`,children:[(0,G.jsx)(Sd,{children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,"aria-label":`刷新插件`,onClick:()=>void w(),children:(0,G.jsx)(et,{size:16})})}),(0,G.jsxs)(`header`,{className:`plugins-intro`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`插件`}),(0,G.jsx)(`p`,{children:`安装、启用和使用分开管理;只有已启用的插件才会投影给匹配的 Agent Provider。`})]}),(0,G.jsxs)(`div`,{className:`plugins-hosts`,"aria-label":`插件宿主状态`,children:[(0,G.jsx)(`span`,{className:`plugin-bridge-badge`,"data-state":i.dsh?.available?`available`:`unavailable`,children:i.dsh?.available?`DSH ${i.dsh.version||``}`:`DSH 不可用`}),(0,G.jsx)(`span`,{className:`plugin-bridge-badge`,"data-state":i.codex?.available?`available`:`unavailable`,children:i.codex?.available?`Codex ${i.codex.version||``}`:`Codex 不可用`})]})]}),S&&(0,G.jsx)(`div`,{className:`form-error`,role:`alert`,children:S}),(0,G.jsxs)(`div`,{className:`plugins-workspace`,children:[(0,G.jsxs)(`section`,{className:`plugin-list-panel block`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsxs)(`div`,{className:`section-heading-copy`,children:[(0,G.jsx)(`h2`,{children:`已安装`}),(0,G.jsx)(`p`,{children:b===`load`?`正在读取`:`${e.length} 个插件`})]})}),(0,G.jsxs)(`div`,{className:`plugin-list`,children:[e.map(e=>(0,G.jsxs)(`button`,{className:`plugin-list-item${GU(e)===o?` selected`:``}`,"aria-current":GU(e)===o?`true`:void 0,onClick:()=>c(GU(e)),children:[(0,G.jsx)(`span`,{className:`plugin-avatar`,"data-ecosystem":e.ecosystem,children:e.ecosystem===`dsh`?(0,G.jsx)($e,{size:17}):(0,G.jsx)(Ze,{size:17})}),(0,G.jsxs)(`span`,{className:`plugin-list-identity`,children:[(0,G.jsx)(`strong`,{children:JU(e)}),(0,G.jsxs)(`small`,{children:[YU(e),` · `,XU(e)]}),(0,G.jsx)(`em`,{children:ZU(e)})]}),(0,G.jsx)(nW,{item:e})]},GU(e))),!b&&!e.length&&(0,G.jsxs)(`div`,{className:`plugin-list-empty`,children:[(0,G.jsx)(Ze,{size:19}),(0,G.jsx)(`span`,{children:`还没有安装插件`})]})]})]}),(0,G.jsx)(`aside`,{className:`plugin-detail-panel block`,"aria-label":`插件详情`,children:T?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`header`,{className:`plugin-detail-header`,children:[(0,G.jsx)(`span`,{className:`plugin-avatar large`,"data-ecosystem":T.ecosystem,children:T.ecosystem===`dsh`?(0,G.jsx)($e,{size:20}):(0,G.jsx)(Ze,{size:20})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:JU(T)}),(0,G.jsxs)(`p`,{children:[YU(T),` · `,XU(T)]})]}),(0,G.jsx)(nW,{item:T})]}),(0,G.jsx)(`p`,{className:`plugin-detail-summary`,children:ZU(T)}),T.failed&&T.errorCode&&(0,G.jsx)(`p`,{className:`form-error`,role:`status`,children:T.errorCode}),(0,G.jsx)(rW,{item:T}),(0,G.jsxs)(`details`,{className:`plugin-technical-details`,children:[(0,G.jsx)(`summary`,{children:`技术信息`}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`插件标识`}),(0,G.jsx)(`dd`,{children:T.pluginId})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`版本`}),(0,G.jsx)(`dd`,{children:T.resolvedVersion||`由宿主解析`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`来源`}),(0,G.jsx)(`dd`,{children:KU(T)})]})]})]}),(0,G.jsxs)(`div`,{className:`plugin-detail-actions`,children:[T.ecosystem===`dsh`&&(0,G.jsx)(`button`,{className:`button secondary`,disabled:!!b,onClick:()=>void A(T),children:T.enabled?`停用`:`启用`}),(0,G.jsxs)(`button`,{className:`button danger`,disabled:!!b,onClick:()=>void j(T),children:[(0,G.jsx)(ht,{size:15}),`卸载`]})]})]}):(0,G.jsxs)(`div`,{className:`plugin-detail-empty`,children:[(0,G.jsx)(Ze,{size:22}),(0,G.jsx)(`strong`,{children:`选择一个插件`}),(0,G.jsx)(`span`,{children:`从下方添加插件后,可在这里查看状态与可用能力。`})]})})]}),(0,G.jsxs)(`section`,{className:`plugin-marketplace block`,children:[(0,G.jsxs)(`div`,{className:`plugin-marketplace-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`发现插件`}),(0,G.jsx)(`p`,{children:v===`codex`?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:`兼容格式 · 生命周期由 Codex App Server 管理`}),(0,G.jsx)(`small`,{children:`安装后仍需按 Agent 显式授权。`})]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:`默认插件格式 · 当前 DSH Profile`}),(0,G.jsx)(`small`,{children:`安装到当前工作区,可随后启用并绑定给 Agent。`})]})})]}),v===`codex`&&(0,G.jsxs)(`label`,{className:`plugin-search`,children:[(0,G.jsx)(tt,{size:16}),(0,G.jsx)(`span`,{className:`sr-only`,children:`搜索插件`}),(0,G.jsx)(`input`,{value:h,onChange:e=>_(e.target.value),placeholder:`搜索插件`})]})]}),(0,G.jsxs)(`div`,{className:`plugin-marketplace-tabs`,role:`tablist`,"aria-label":`插件市场`,children:[(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":v===`codex`,onClick:()=>y(`codex`),children:`Codex 插件`}),(0,G.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":v===`dsh`,onClick:()=>y(`dsh`),children:`DeepSeek Harness 插件`})]}),v===`codex`?b===`load`?(0,G.jsxs)(`div`,{className:`plugin-marketplace-loading`,children:[(0,G.jsx)(Ne,{className:`animate-spin`,size:18}),(0,G.jsx)(`span`,{children:`正在读取 Codex 插件目录…`})]}):n.length>0?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`label`,{className:`codex-risk-confirmation${p?` accepted`:``}`,children:[(0,G.jsx)(U,{size:18}),(0,G.jsx)(`input`,{type:`checkbox`,checked:p,onChange:e=>m(e.target.checked)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`安装前确认权限`}),(0,G.jsx)(`small`,{children:`Codex 插件由 App Server 以当前用户权限管理,请确认插件来源可信。`})]}),(0,G.jsx)(`em`,{children:p?`已确认`:`勾选后可安装`})]}),(0,G.jsx)(`div`,{className:`plugin-category-list`,"aria-label":`可安装 Codex 插件`,children:E.map(e=>(0,G.jsxs)(`section`,{className:`plugin-category`,children:[(0,G.jsx)(`h3`,{children:e.category}),(0,G.jsx)(`div`,{className:`plugin-marketplace-list`,children:e.items.map(e=>(0,G.jsxs)(`div`,{className:`plugin-marketplace-row`,children:[(0,G.jsx)(`span`,{className:`plugin-avatar`,"data-ecosystem":`codex`,children:(0,G.jsx)(Ze,{size:16})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:JU(e)}),(0,G.jsxs)(`small`,{children:[YU(e),` · `,XU(e)]}),(0,G.jsx)(`em`,{children:ZU(e)})]}),(0,G.jsx)(`button`,{className:`button secondary small`,disabled:!p||!!b,onClick:()=>void k(e),children:b===`codex:${GU(e)}`?(0,G.jsx)(Ne,{className:`animate-spin`,size:15}):`安装`})]},GU(e)))})]},e.category))}),!E.length&&(0,G.jsx)(`p`,{className:`plugin-discovery-empty`,children:`没有匹配的插件。`})]}):(0,G.jsx)(`p`,{className:`plugin-discovery-empty`,children:`当前没有可安装的 Codex 插件。`}):(0,G.jsxs)(`div`,{className:`plugin-dsh-market`,children:[(0,G.jsxs)(`div`,{className:`plugin-dsh-market-copy`,children:[(0,G.jsx)(`span`,{className:`plugin-avatar`,"data-ecosystem":`dsh`,children:(0,G.jsx)($e,{size:18})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`从来源安装`}),(0,G.jsx)(`p`,{children:`支持 npm 包、Git 地址或本地路径,适合官方、私有插件与本地开发。`})]})]}),(0,G.jsxs)(`div`,{className:`plugin-source-form`,children:[(0,G.jsx)(`label`,{className:`sr-only`,htmlFor:`dshSource`,children:`DSH 插件来源`}),(0,G.jsx)(`input`,{id:`dshSource`,value:l,onChange:e=>u(e.target.value),placeholder:`npm 包、Git 地址或本地路径`}),(0,G.jsxs)(`button`,{className:`button secondary`,disabled:!d||!l.trim()||!!b,onClick:()=>void O(),children:[b===`install`?(0,G.jsx)(Ne,{className:`animate-spin`,size:15}):(0,G.jsx)(P,{size:15}),`安装到 Profile`]})]}),(0,G.jsxs)(`label`,{className:`plugin-source-confirmation`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:d,onChange:e=>f(e.target.checked)}),(0,G.jsx)(`span`,{children:`我已知悉:DSH 包及安装脚本以当前系统用户权限运行。`})]})]})]})]})}function aW(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n{}};function sW(){for(var e=0,t=arguments.length,n={},r;e=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}cW.prototype=sW.prototype={constructor:cW,on:function(e,t){var n=this._,r=lW(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a0)for(var n=Array(i),r=0,i,a;r=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),fW.hasOwnProperty(t)?{space:fW[t],local:e}:e}function mW(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function hW(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function gW(e){var t=pW(e);return(t.local?hW:mW)(t)}function _W(){}function vW(e){return e==null?_W:function(){return this.querySelector(e)}}function yW(e){typeof e!=`function`&&(e=vW(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i=v&&(v=_+1);!(b=g[v])&&++v=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function YW(e){e||=XW;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;at?1:e>=t?0:NaN}function ZW(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function QW(){return Array.from(this)}function $W(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?dG:typeof t==`function`?pG:fG)(e,t,n??``)):hG(this.node(),e)}function hG(e,t){return e.style.getPropertyValue(t)||uG(e).getComputedStyle(e,null).getPropertyValue(t)}function gG(e){return function(){delete this[e]}}function _G(e,t){return function(){this[e]=t}}function vG(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function yG(e,t){return arguments.length>1?this.each((t==null?gG:typeof t==`function`?vG:_G)(e,t)):this.node()[e]}function bG(e){return e.trim().split(/^|\s+/)}function xG(e){return e.classList||new SG(e)}function SG(e){this._node=e,this._names=bG(e.getAttribute(`class`)||``)}SG.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function CG(e,t){for(var n=xG(e),r=-1,i=t.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function QG(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n()=>e;function bK(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}bK.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function xK(e){return!e.ctrlKey&&!e.button}function SK(){return this.parentNode}function CK(e,t){return t??{x:e.x,y:e.y}}function wK(){return navigator.maxTouchPoints||`ontouchstart`in this}function TK(){var e=xK,t=SK,n=CK,r=wK,i={},a=sW(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,pK).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(uK(n.view).on(`mousemove.drag`,m,mK).on(`mouseup.drag`,h,mK),_K(n.view),hK(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(gK(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){uK(e.view).on(`mousemove.drag mouseup.drag`,null),vK(e.view,l),gK(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?JK(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?JK(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=FK.exec(e))?new ZK(t[1],t[2],t[3],1):(t=IK.exec(e))?new ZK(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=LK.exec(e))?JK(t[1],t[2],t[3],t[4]):(t=RK.exec(e))?JK(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=zK.exec(e))?iq(t[1],t[2]/100,t[3]/100,1):(t=BK.exec(e))?iq(t[1],t[2]/100,t[3]/100,t[4]):VK.hasOwnProperty(e)?qK(VK[e]):e===`transparent`?new ZK(NaN,NaN,NaN,0):null}function qK(e){return new ZK(e>>16&255,e>>8&255,e&255,1)}function JK(e,t,n,r){return r<=0&&(e=t=n=NaN),new ZK(e,t,n,r)}function YK(e){return e instanceof OK||(e=KK(e)),e?(e=e.rgb(),new ZK(e.r,e.g,e.b,e.opacity)):new ZK}function XK(e,t,n,r){return arguments.length===1?YK(e):new ZK(e,t,n,r??1)}function ZK(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}EK(ZK,XK,DK(OK,{brighter(e){return e=e==null?AK:AK**+e,new ZK(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?kK:kK**+e,new ZK(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ZK(nq(this.r),nq(this.g),nq(this.b),tq(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:QK,formatHex:QK,formatHex8:$K,formatRgb:eq,toString:eq}));function QK(){return`#${rq(this.r)}${rq(this.g)}${rq(this.b)}`}function $K(){return`#${rq(this.r)}${rq(this.g)}${rq(this.b)}${rq((isNaN(this.opacity)?1:this.opacity)*255)}`}function eq(){let e=tq(this.opacity);return`${e===1?`rgb(`:`rgba(`}${nq(this.r)}, ${nq(this.g)}, ${nq(this.b)}${e===1?`)`:`, ${e})`}`}function tq(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function nq(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function rq(e){return e=nq(e),(e<16?`0`:``)+e.toString(16)}function iq(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new sq(e,t,n,r)}function aq(e){if(e instanceof sq)return new sq(e.h,e.s,e.l,e.opacity);if(e instanceof OK||(e=KK(e)),!e)return new sq;if(e instanceof sq)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new sq(o,s,c,e.opacity)}function oq(e,t,n,r){return arguments.length===1?aq(e):new sq(e,t,n,r??1)}function sq(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}EK(sq,oq,DK(OK,{brighter(e){return e=e==null?AK:AK**+e,new sq(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?kK:kK**+e,new sq(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new ZK(uq(e>=240?e-240:e+120,i,r),uq(e,i,r),uq(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new sq(cq(this.h),lq(this.s),lq(this.l),tq(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=tq(this.opacity);return`${e===1?`hsl(`:`hsla(`}${cq(this.h)}, ${lq(this.s)*100}%, ${lq(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function cq(e){return e=(e||0)%360,e<0?e+360:e}function lq(e){return Math.max(0,Math.min(1,e||0))}function uq(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var dq=e=>()=>e;function fq(e,t){return function(n){return e+n*t}}function pq(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function mq(e){return(e=+e)==1?hq:function(t,n){return n-t?pq(t,n,e):dq(isNaN(t)?n:t)}}function hq(e,t){var n=t-e;return n?fq(e,n):dq(isNaN(e)?t:e)}var gq=(function e(t){var n=mq(t);function r(e,t){var r=n((e=XK(e)).r,(t=XK(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=hq(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function _q(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:xq(r,i)})),n=wq.lastIndex;return n180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:xq(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:xq(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:xq(e,n)},{i:s-2,x:xq(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t=0&&e._call.call(void 0,t),e=e._next;--Uq}function aJ(){Xq=(Yq=Qq.now())+Zq,Uq=Wq=0;try{iJ()}finally{Uq=0,sJ(),Xq=0}}function oJ(){var e=Qq.now(),t=e-Yq;t>Kq&&(Zq-=t,Yq=e)}function sJ(){for(var e,t=qq,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:qq=n);Jq=e,cJ(r)}function cJ(e){Uq||(Wq&&=clearTimeout(Wq),e-Xq>24?(e<1/0&&(Wq=setTimeout(aJ,e-Qq.now()-Zq)),Gq&&=clearInterval(Gq)):(Gq||=(Yq=Qq.now(),setInterval(oJ,Kq)),Uq=1,$q(aJ)))}function lJ(e,t,n){var r=new nJ;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var uJ=sW(`start`,`end`,`cancel`,`interrupt`),dJ=[];function fJ(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;gJ(e,n,{name:t,index:r,group:i,on:uJ,tween:dJ,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function pJ(e,t){var n=hJ(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function mJ(e,t){var n=hJ(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function hJ(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function gJ(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=rJ(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return lJ(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function vJ(e){return this.each(function(){_J(this,e)})}function yJ(e,t){var n,r;return function(){var i=mJ(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o=0&&(e=e.slice(0,t)),!e||e===`start`})}function YJ(e,t,n){var r,i,a=JJ(t)?pJ:mJ;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function XJ(e,t){var n=this._id;return arguments.length<2?hJ(this.node(),n).on.on(e):this.each(YJ(n,e,t))}function ZJ(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function QJ(){return this.on(`end.remove`,ZJ(this._id))}function $J(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=vW(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o()=>e;function kY(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function AY(e,t,n){this.k=e,this.x=t,this.y=n}AY.prototype={constructor:AY,scale:function(e){return e===1?this:new AY(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new AY(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var jY=new AY(1,0,0);MY.prototype=AY.prototype;function MY(e){for(;!e.__zoom;)if(!(e=e.parentNode))return jY;return e.__zoom}function NY(e){e.stopImmediatePropagation()}function PY(e){e.preventDefault(),e.stopImmediatePropagation()}function FY(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function IY(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function LY(){return this.__zoom||jY}function RY(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function zY(){return navigator.maxTouchPoints||`ontouchstart`in this}function BY(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function VY(){var e=FY,t=IY,n=BY,r=RY,i=zY,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=Hq,l=sW(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,LY).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,E).filter(i).on(`touchstart.zoom`,D).on(`touchmove.zoom`,O).on(`touchend.zoom touchcancel.zoom`,k).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,LY),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(jY.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new AY(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new AY(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new AY(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=uK(this.that).datum();l.call(e,this.that,new kY(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=fK(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],_J(this),s.start();PY(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=uK(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=fK(t,i),l=t.clientX,u=t.clientY;_K(t.view),NY(t),a.mouse=[c,this.__zoom.invert(c)],_J(this),a.start();function d(e){if(PY(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=fK(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),vK(e.view,a.moved),PY(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=fK(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);PY(r),s>0?uK(this).transition().duration(s).call(x,d,c,r):uK(this).call(_.transform,d,c,r)}}function D(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(NY(t),s=0;s`Seems like you have not used ${e===`svelte`?`SvelteFlowProvider`:`ReactFlowProvider`} as an ancestor. Help: https://${e}flow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`,error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},UY=[[-1/0,-1/0],[1/0,1/0]],WY=[`Enter`,` `,`Escape`],GY={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},KY;(function(e){e.Strict=`strict`,e.Loose=`loose`})(KY||={});var qY;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(qY||={});var JY;(function(e){e.Partial=`partial`,e.Full=`full`})(JY||={});var YY={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},XY;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(XY||={});var ZY;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(ZY||={});var $;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})($||={});var QY={[$.Left]:$.Right,[$.Right]:$.Left,[$.Top]:$.Bottom,[$.Bottom]:$.Top};function $Y(e){return e===null?null:e?`valid`:`invalid`}var eX=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,tX=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),nX=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),rX=(e,t=[0,0])=>{let{width:n,height:r}=LX(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},iX=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:yX(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):nX(n)?n:t.nodeLookup.get(n.id)),_X(e,i?xX(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),aX=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=_X(n,xX(e)),r=!0)}),r?yX(n):{x:0,y:0,width:0,height:0}},oX=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=CX(s,c,l,u,p,m,i,f),g=i*f,_=a&&h>0;(!t.internals.handleBounds||_||h>=g||t.dragging)&&d.push(t)}return d},sX=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function cX(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let i;if(t?.includeHiddenNodes){let{width:t,height:n}=LX(e);i=t>0&&n>0}else i=!!(e.measured.width&&e.measured.height&&!e.hidden);i&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function lX({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=PX(aX(cX(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function uX({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent){if(!s)a?.(`005`,HY.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&IX(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=IX(d)?pX(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,HY.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function dX({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=sX(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var fX=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),pX=(e={x:0,y:0},t,n)=>({x:fX(e.x,t[0][0],t[1][0]-(n?.width??0)),y:fX(e.y,t[0][1],t[1][1]-(n?.height??0))});function mX(e,t,n){let{width:r,height:i}=LX(n),{x:a,y:o}=n.internals.positionAbsolute;return pX(e,[[a,o],[a+r,o+i]],t)}var hX=(e,t,n)=>en?-fX(Math.abs(e-n),1,t)/t:0,gX=(e,t,n=15,r=40)=>[hX(e.x,r,t.width-r)*n,hX(e.y,r,t.height-r)*n],_X=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),vX=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),yX=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),bX=(e,t=[0,0])=>{let{x:n,y:r}=nX(e)?e.internals.positionAbsolute:rX(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},xX=(e,t=[0,0])=>{let{x:n,y:r}=nX(e)?e.internals.positionAbsolute:rX(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},SX=(e,t)=>yX(_X(vX(e),vX(t))),CX=(e,t,n,r,i,a,o,s)=>{let c=Math.max(0,Math.min(e+n,i+o)-Math.max(e,i)),l=Math.max(0,Math.min(t+r,a+s)-Math.max(t,a));return Math.ceil(c*l)},wX=(e,t)=>CX(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),TX=e=>EX(e.width)&&EX(e.height)&&EX(e.x)&&EX(e.y),EX=e=>!isNaN(e)&&isFinite(e),DX=(e,t)=>(e,t)=>{},OX=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),kX=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?OX(s,o):s},AX=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function jX(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function MX(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=jX(e,n),i=jX(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=jX(e.top??e.y??0,n),i=jX(e.bottom??e.y??0,n),a=jX(e.left??e.x??0,t),o=jX(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function NX(e,t,n,r,i,a){let{x:o,y:s}=AX(e,[t,n,r]),{x:c,y:l}=AX({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var PX=(e,t,n,r,i,a)=>{let o=MX(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=fX(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=NX(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},FX=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function IX(e){return e!=null&&e!==`parent`}function LX(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function RX(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function zX(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function BX(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function VX(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function HX(e){return{...GY,...e||{}}}function UX(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=YX(e),s=kX({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?OX(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var WX=e=>({width:e.offsetWidth,height:e.offsetHeight}),GX=e=>e?.getRootNode?.()||window?.document,KX=[`INPUT`,`SELECT`,`TEXTAREA`];function qX(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?KX.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var JX=e=>`clientX`in e,YX=(e,t)=>{let n=JX(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},XX=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...WX(t)}})};function ZX({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function QX(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function $X({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case $.Left:return[t-QX(t-r,a),n];case $.Right:return[t+QX(r-t,a),n];case $.Top:return[t,n-QX(n-i,a)];case $.Bottom:return[t,n+QX(i-n,a)]}}function eZ({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top,curvature:o=.25}){let[s,c]=$X({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=$X({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=ZX({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function tZ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n0}var iZ=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,aZ=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),oZ=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,HY.error006()),t;let r=n.getEdgeId||iZ,i;return i=eX(e)?{...e}:{...e,id:r(e)},aZ(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function sZ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=tZ({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var cZ={[$.Left]:{x:-1,y:0},[$.Right]:{x:1,y:0},[$.Top]:{x:0,y:-1},[$.Bottom]:{x:0,y:1}},lZ=({source:e,sourcePosition:t=$.Bottom,target:n})=>t===$.Left||t===$.Right?e.xMath.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function dZ({source:e,sourcePosition:t=$.Bottom,target:n,targetPosition:r=$.Top,center:i,offset:a,stepPosition:o}){let s=cZ[t],c=cZ[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=lZ({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=tZ({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function fZ(e,t,n,r){let i=Math.min(uZ(e,t)/2,uZ(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.xe.id===t):e[0])||null}function yZ(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function bZ(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=yZ(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var xZ=1e3,SZ=10,CZ={nodeOrigin:[0,0],nodeExtent:UY,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},wZ={...CZ,checkEquality:!0};function TZ(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function EZ(e,t,n){let r=TZ(CZ,n);for(let n of e.values())if(n.parentId)jZ(n,e,t,r);else{let e=pX(rX(n,r.nodeOrigin),IX(n.extent)?n.extent:r.nodeExtent,LX(n));n.internals.positionAbsolute=e}}function DZ(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function OZ(e){return e===`manual`}function kZ(e,t,n,r={}){let i=TZ(wZ,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!OZ(i.zIndexMode)?xZ:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=pX(rX(u,i.nodeOrigin),IX(u.extent)?u.extent:i.nodeExtent,LX(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:DZ(u,e),z:MZ(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&jZ(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function AZ(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function jZ(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=TZ(CZ,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}AZ(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*SZ),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=NZ(e,u,o,s,a&&!OZ(c)?xZ:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function MZ(e,t,n){let r=EX(e.zIndex)?e.zIndex:0;return OZ(n)?r:r+(e.selected?t:0)}function NZ(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=LX(e),l=rX(e,n),u=IX(e.extent)?pX(l,e.extent,c):l,d=pX({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=mX(d,c,t));let f=MZ(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function PZ(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=SX(a.get(n.parentId)?.expandedRect??bX(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=LX(a),l=a.origin??r,u=t.x0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width0){let e=PZ(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function IZ({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function LZ(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function RZ(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;LZ(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),LZ(`target`,s,c,e,i,o),t.set(r.id,r)}}function zZ(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:zZ(n,t):!1}function BZ(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function VZ(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!zZ(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function HZ({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function UZ({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=OX(a,t);return{x:o.x-a.x,y:o.y-a.y}}function WZ({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=uK(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?vX(aX(s)):null,x=v&&l?UZ({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:OX(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=uX({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=HZ({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=gX(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=UX(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=VZ(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=HZ({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=TK().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=UX(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=YX(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=UX(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=YX(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=YX(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p){p&&s.size>0&&t().updateNodePositions(s,!1);return}if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=HZ({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!BZ(t,`.${g}`,v))&&(!_||BZ(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function GZ(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())wX(i,bX(e))>0&&r.push(e);return r}var KZ=250;function qZ(e,t,n,r){let i=[],a=1/0,o=GZ(e,n,t+KZ);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=_Z(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function JZ(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,..._Z(o,c,c.position,!0)}:c}function YZ(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function XZ(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var ZZ=()=>!0;function QZ(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=ZZ,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=GX(e.target),E=0,D,{x:O,y:k}=YX(e),A=YZ(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=JZ(i,A,r,c,t);if(!N)return;let P=YX(e,j),F=!1,I=null,L=!1,R=null;function z(){if(!u||!j)return;let[e,t]=gX(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(z)}let B={...N,nodeId:i,type:A,position:N.position},V=c.get(i),H={inProgress:!0,isValid:null,from:_Z(V,B,$.Left,!0),fromHandle:B,fromPosition:B.position,fromNode:V,to:P,toHandle:null,toPosition:QY[B.position],toNode:null,pointer:P};function ee(){M=!0,y(H),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&ee();function te(e){if(!M){let{x:t,y:n}=YX(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;ee()}if(!x()||!B){ne(e);return}let a=b();P=YX(e,j),D=qZ(kX(P,a,!1,[1,1]),n,c,B),F||=(z(),!0);let s=$Z(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});R=s.handleDomNode,I=s.connection,L=XZ(!!D,s.isValid);let u=c.get(i),f=u?_Z(u,B,$.Left,!0):H.from,p={...H,from:f,isValid:L,to:s.toHandle&&L?AX({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:QY[B.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),H=p}function ne(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||R)&&I&&L&&h?.(I);let{inProgress:t,...n}=H,r={...n,toPosition:H.toHandle?H.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),F=!1,L=!1,I=null,R=null,T.removeEventListener(`mousemove`,te),T.removeEventListener(`mouseup`,ne),T.removeEventListener(`touchmove`,te),T.removeEventListener(`touchend`,ne)}}T.addEventListener(`mousemove`,te),T.addEventListener(`mouseup`,ne),T.addEventListener(`touchmove`,te),T.addEventListener(`touchend`,ne)}function $Z(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=ZZ,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=YX(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=YZ(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===KY.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=JZ(t,e,a,u,n,!0)}return _}var eQ={onPointerDown:QZ,isValid:$Z};function tQ({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=uK(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&FX()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=VY().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:fK}}var nQ=e=>({x:e.x,y:e.y,zoom:e.k}),rQ=({x:e,y:t,zoom:n})=>jY.translate(e,t).scale(n),iQ=(e,t)=>e.target.closest(`.${t}`),aQ=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),oQ=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,sQ=(e,t=0,n=oQ,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},cQ=e=>{let t=e.ctrlKey&&FX()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function lQ({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(iQ(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=fK(u),t=d*2**cQ(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===qY.Vertical?0:u.deltaX*f,m=i===qY.Horizontal?0:u.deltaY*f;!FX()&&u.shiftKey&&i!==qY.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=nQ(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,h):(e.isPanScrolling=!0,s?.(u,h)),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)}}function uQ({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=iQ(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function dQ({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=nQ(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function fQ({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&aQ(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,nQ(a.transform))}}function pQ({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&aQ(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=nQ(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function mQ({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(iQ(d,`${l}-flow__node`)||iQ(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||iQ(d,s)&&m||iQ(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function hQ({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<`u`?new ResizeObserver(e=>{let t=e[0];t&&(d=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null)?.observe(e);let f=VY().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=uK(e).call(f);y({x:i.x,y:i.y,zoom:fX(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(cQ);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?Oq:Hq).transform(sQ(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function _({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:d,panOnScrollSpeed:g,preventScrolling:_,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&v();let O=i&&!S&&!r;f.clickDistance(D?1/0:!EX(E)||E<0?0:E);let k=O?lQ({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):uQ({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,k,{passive:!1});let A=dQ({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,A);let j=fQ({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});f.on(`zoom`,j);let M=pQ({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,M);let N=mQ({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});f.filter(N),x?p.on(`dblclick.zoom`,h):p.on(`dblclick.zoom`,null)}function v(){f.on(`zoom`,null)}async function y(e,t,n){let r=rQ(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=rQ(e);return await g(n,t),n}function x(e){if(p){let t=rQ(e),n=p.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&f?.transform(p,t,null,{sync:!0})}}function S(){let e=p?MY(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function C(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?Oq:Hq).scaleTo(sQ(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?Oq:Hq).scaleBy(sQ(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function E(e){f?.translateExtent(e)}function D(e){let t=!EX(e)||e<0?0:e;f?.clickDistance(t)}return{update:_,destroy:v,setViewport:b,setViewportConstrained:y,getViewport:S,scaleTo:C,scaleBy:w,setScaleExtent:T,setTranslateExtent:E,syncViewport:x,setClickDistance:D}}var gQ;(function(e){e.Line=`line`,e.Handle=`handle`})(gQ||={});function _Q({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function vQ(e){return{isHorizontal:e.includes(`right`)||e.includes(`left`),isVertical:e.includes(`bottom`)||e.includes(`top`),affectsX:e.includes(`left`),affectsY:e.includes(`top`)}}function yQ(e,t){return Math.max(0,t-e)}function bQ(e,t){return Math.max(0,e-t)}function xQ(e,t,n){return Math.max(0,t-e,e-n)}function SQ(e,t){return e?!t:t}function CQ(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=xQ(E,h,g),j=xQ(D,_,v);if(o){let e=0,t=0;c&&w<0?e=yQ(y+w+O,o[0][0]):!c&&w>0&&(e=bQ(y+E+O,o[1][0])),l&&T<0?t=yQ(b+T+k,o[0][1]):!l&&T>0&&(t=bQ(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=bQ(y+w,s[0][0]):!c&&w<0&&(e=yQ(y+E,s[1][0])),l&&T>0?t=bQ(b+T,s[0][1]):!l&&T<0&&(t=yQ(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=xQ(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?bQ(b+k+E/C,o[1][1])*C:yQ(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?yQ(b+E/C,s[1][1])*C:bQ(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=xQ(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?bQ(y+D*C+O,o[1][0])/C:yQ(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?yQ(y+D*C,s[1][0])/C:bQ(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(SQ(c,l)?-w:w)/C:w=(SQ(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var wQ={width:0,height:0,x:0,y:0},TQ={...wQ,pointerX:0,pointerY:0,aspectRatio:1};function EQ(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function DQ({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=uK(e),o={controlDirection:vQ(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...wQ},h={...TQ};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:vQ(e)};let g,_=null,v=[],y,b,x,S=!1,C=TK().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=UX(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,b=IX(g.extent)?g.extent:void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId)),y&&g.extent===`parent`&&(b=[[0,0],[y.measured.width,y.measured.height]]),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=EQ(n,g,n.origin??s);x=x?[[Math.min(e[0][0],x[0][0]),Math.min(e[0][1],x[0][1])],[Math.max(e[1][0],x[1][0]),Math.max(e[1][1],x[1][1])]]:e}u?.(e,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=UX(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=CQ(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var OQ=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},kQ=e=>e?OQ(e):OQ,{useDebugValue:AQ}=s.default,{useSyncExternalStoreWithSelector:jQ}=Zd.default,MQ=e=>e;function NQ(e,t=MQ,n){let r=jQ(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return AQ(r),r}var PQ=(e,t)=>{let n=kQ(e),r=(e,r=t)=>NQ(n,e,r);return Object.assign(r,n),r},FQ=(e,t)=>e?PQ(e,t):PQ;function IQ(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var LQ=(0,s.createContext)(null),RQ=LQ.Provider,zQ=HY.error001(`react`);function BQ(e,t){let n=(0,s.useContext)(LQ);if(n===null)throw Error(zQ);return NQ(n,e,t)}function VQ(){let e=(0,s.useContext)(LQ);if(e===null)throw Error(zQ);return(0,s.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var HQ={display:`none`},UQ={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},WQ=`react-flow__node-desc`,GQ=`react-flow__edge-desc`,KQ=`react-flow__aria-live`,qQ=e=>e.ariaLiveMessage,JQ=e=>e.ariaLabelConfig;function YQ({rfId:e}){let t=BQ(qQ);return(0,G.jsx)(`div`,{id:`${KQ}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:UQ,children:t})}function XQ({rfId:e,disableKeyboardA11y:t}){let n=BQ(JQ);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{id:`${WQ}-${e}`,style:HQ,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,G.jsx)(`div`,{id:`${GQ}-${e}`,style:HQ,children:n[`edge.a11yDescription.default`]}),!t&&(0,G.jsx)(YQ,{rfId:e})]})}var ZQ=(0,s.forwardRef)(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>{let o=`${e}`.split(`-`);return(0,G.jsx)(`div`,{className:aW([`react-flow__panel`,n,...o]),style:r,ref:a,...i,children:t})});ZQ.displayName=`Panel`;var QQ=`https://reactflow.dev?utm_source=attribution`;function $Q({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:(0,G.jsx)(ZQ,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${QQ}`,children:(0,G.jsx)(`a`,{href:QQ,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var e$=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},t$=e=>e.id;function n$(e,t){return IQ(e.selectedNodes.map(t$),t.selectedNodes.map(t$))&&IQ(e.selectedEdges.map(t$),t.selectedEdges.map(t$))}function r$({onSelectionChange:e}){let t=VQ(),{selectedNodes:n,selectedEdges:r}=BQ(e$,n$);return(0,s.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var i$=e=>!!e.onSelectionChangeHandlers;function a$({onSelectionChange:e}){let t=BQ(i$);return e||t?(0,G.jsx)(r$,{onSelectionChange:e}):null}var o$=[0,0],s$={x:0,y:0,zoom:1},c$=[...`nodes.edges.defaultNodes.defaultEdges.onConnect.onConnectStart.onConnectEnd.onClickConnectStart.onClickConnectEnd.nodesDraggable.autoPanOnNodeFocus.nodesConnectable.nodesFocusable.edgesFocusable.edgesReconnectable.elevateNodesOnSelect.elevateEdgesOnSelect.minZoom.maxZoom.nodeExtent.onNodesChange.onEdgesChange.elementsSelectable.connectionMode.snapGrid.snapToGrid.translateExtent.connectOnClick.defaultEdgeOptions.fitView.fitViewOptions.onNodesDelete.onEdgesDelete.onDelete.onNodeDrag.onNodeDragStart.onNodeDragStop.onSelectionDrag.onSelectionDragStart.onSelectionDragStop.onMoveStart.onMove.onMoveEnd.noPanClassName.nodeOrigin.autoPanOnConnect.autoPanOnNodeDrag.onError.connectionRadius.isValidConnection.selectNodesOnDrag.nodeDragThreshold.connectionDragThreshold.onBeforeDelete.debug.autoPanSpeed.ariaLabelConfig.zIndexMode`.split(`.`),`rfId`],l$=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),u$={translateExtent:UY,nodeOrigin:o$,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function d$(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:c,setDefaultNodesAndEdges:l}=BQ(l$,IQ),u=VQ();(0,s.useEffect)(()=>(l(e.defaultNodes,e.defaultEdges),()=>{d.current=u$,c()}),[]);let d=(0,s.useRef)(u$);return(0,s.useEffect)(()=>{for(let s of c$){let c=e[s];c!==d.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?u.setState({ariaLabelConfig:HX(c)}):s===`fitView`?u.setState({fitViewQueued:c}):s===`fitViewOptions`?u.setState({fitViewOptions:c}):u.setState({[s]:c}))}d.current=e},c$.map(t=>e[t])),null}function f$(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function p$(e){let[t,n]=(0,s.useState)(e===`system`?null:e);return(0,s.useEffect)(()=>{if(e!==`system`){n(e);return}let t=f$(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?f$()?.matches?`dark`:`light`:t}var m$=typeof document<`u`?document:null;function h$(e=null,t={target:m$,actInsideInputWithModifier:!0}){let[n,r]=(0,s.useState)(!1),i=(0,s.useRef)(!1),a=(0,s.useRef)(new Set([])),[o,c]=(0,s.useMemo)(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,`
+`).replace(`
+
+`,`
++`).split(`
+`));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return(0,s.useEffect)(()=>{let n=t?.target??m$,s=t?.actInsideInputWithModifier??!0;if(e!==null){let e=e=>{if(i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!i.current||i.current&&!s)&&qX(e))return!1;let n=_$(e.code,c);if(a.current.add(e[n]),g$(o,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName===`BUTTON`||n?.nodeName===`A`;t.preventDefault!==!1&&(i.current||!a)&&e.preventDefault(),r(!0)}},l=e=>{let t=_$(e.code,c);g$(o,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),e.key===`Meta`&&a.current.clear(),i.current=!1},u=()=>{a.current.clear(),r(!1)};return n?.addEventListener(`keydown`,e),n?.addEventListener(`keyup`,l),window.addEventListener(`blur`,u),window.addEventListener(`contextmenu`,u),()=>{n?.removeEventListener(`keydown`,e),n?.removeEventListener(`keyup`,l),window.removeEventListener(`blur`,u),window.removeEventListener(`contextmenu`,u)}}},[e,r]),n}function g$(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function _$(e,t){return t.includes(e)?`code`:`key`}var v$=()=>{let e=VQ();return(0,s.useMemo)(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{let{panZoom:r}=e.getState();return r?r.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[r,i,a],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??i,zoom:t.zoom??a},n),!0):!1},getViewport:()=>{let[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{let{width:r,height:i,minZoom:a,maxZoom:o,panZoom:s}=e.getState(),c=PX(t,r,i,a,o,n?.padding??.1);return s?(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{let{transform:r,snapGrid:i,snapToGrid:a,domNode:o}=e.getState();if(!o)return t;let{x:s,y:c}=o.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??i;return kX(l,r,n.snapToGrid??a,u)},flowToScreenPosition:t=>{let{transform:n,domNode:r}=e.getState();if(!r)return t;let{x:i,y:a}=r.getBoundingClientRect(),o=AX(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function y$(e,t){let n=[],r=new Map,i=[];for(let t of e)if(t.type===`add`){i.push(t);continue}else if(t.type===`remove`||t.type===`replace`)r.set(t.id,[t]);else{let e=r.get(t.id);e?e.push(t):r.set(t.id,[t])}for(let e of t){let t=r.get(e.id);if(!t){n.push(e);continue}if(t[0].type===`remove`)continue;if(t[0].type===`replace`){n.push({...t[0].item});continue}let i={...e};for(let e of t)b$(e,i);n.push(i)}return i.length&&i.forEach(e=>{e.index===void 0?n.push({...e.item}):n.splice(e.index,0,{...e.item})}),n}function b$(e,t){switch(e.type){case`select`:t.selected=e.selected;break;case`position`:e.position!==void 0&&(t.position=e.position),e.dragging!==void 0&&(t.dragging=e.dragging);break;case`dimensions`:e.dimensions!==void 0&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes===`width`)&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes===`height`)&&(t.height=e.dimensions.height))),typeof e.resizing==`boolean`&&(t.resizing=e.resizing)}}function x$(e,t){return y$(e,t)}function S$(e,t){return y$(e,t)}function C$(e,t){return{id:e,type:`select`,selected:t}}function w$(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(C$(a.id,e)))}return r}function T$({items:e=[],lookup:t}){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let[r,i]of e.entries()){let e=t.get(i.id),a=e?.internals?.userNode??e;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:`replace`}),a===void 0&&n.push({item:i,type:`add`,index:r})}for(let[e]of t)r.get(e)===void 0&&n.push({id:e,type:`remove`});return n}function E$(e){return{id:e.id,type:`remove`}}var D$=DX(`React Flow`,`https://reactflow.dev/`);function O$(e,t,n={}){return oZ(e,t,{...n,onError:n.onError??D$})}var k$=e=>tX(e),A$=e=>eX(e);function j$(e){return(0,s.forwardRef)(e)}var M$=typeof window<`u`?s.useLayoutEffect:s.useEffect;function N$(e){let[t,n]=(0,s.useState)(BigInt(0)),[r]=(0,s.useState)(()=>P$(()=>n(e=>e+BigInt(1))));return M$(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function P$(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var F$=(0,s.createContext)(null);function I$({children:e}){let t=VQ(),n=N$((0,s.useCallback)(e=>{let{nodes:n=[],setNodes:r,hasDefaultNodes:i,onNodesChange:a,nodeLookup:o,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=t.getState(),l=n;for(let t of e)l=typeof t==`function`?t(l):t;let u=T$({items:l,lookup:o});for(let e of c.values())u=e(u);i&&r(l),u.length>0?a?.(u):s&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:r}=t.getState();e&&r(n)})},[])),r=N$((0,s.useCallback)(e=>{let{edges:n=[],setEdges:r,hasDefaultEdges:i,onEdgesChange:a,edgeLookup:o}=t.getState(),s=n;for(let t of e)s=typeof t==`function`?t(s):t;i?r(s):a&&a(T$({items:s,lookup:o}))},[])),i=(0,s.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,G.jsx)(F$.Provider,{value:i,children:e})}function L$(){let e=(0,s.useContext)(F$);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var R$=e=>!!e.panZoom;function z$(){let e=v$(),t=VQ(),n=L$(),r=BQ(R$),i=(0,s.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),r=e=>{n.nodeQueue.push(e)},i=e=>{n.edgeQueue.push(e)},a=e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState(),i=k$(e)?e:n.get(e.id),a=i.parentId?zX(i.position,i.measured,i.parentId,n,r):i.position;return bX({...i,position:a,width:i.measured?.width??i.width,height:i.measured?.height??i.height})},o=(e,t,n={replace:!1})=>{r(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&k$(e)?e:{...r,...e}}return r}))},s=(e,t,n={replace:!1})=>{i(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&A$(e)?e:{...r,...e}}return r}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:r,setEdges:i,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:r}=t.getState(),[i,a,o]=r;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:i,y:a,zoom:o}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{let{nodes:r,edges:i,onNodesDelete:a,onEdgesDelete:o,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:f}=await dX({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(E$);o?.(f),c(e)}if(m){let e=d.map(E$);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=TX(e),o=i?e:a(e),s=r!==void 0;return o?(r||t.getState().nodes).filter(r=>{let a=t.getState().nodeLookup.get(r.id);if(a&&!i&&(r.id===e.id||!a.internals.positionAbsolute))return!1;let c=bX(s?r:a),l=wX(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=TX(e)?e:a(e);if(!r)return!1;let i=wX(r,t);return n&&i>0||i>=t.width*t.height||i>=r.width*r.height},updateNode:o,updateNodeData:(e,t,n={replace:!1})=>{o(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState();return iX(e,{nodeLookup:n,nodeOrigin:r})},getHandleConnections:({type:e,id:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}-${e}${n?`-${n}`:``}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}${e?n?`-${e}-${n}`:`-${e}`:``}`)?.values()??[]),fitView:async e=>{let r=t.getState().fitViewResolver??VX();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:r}),n.nodeQueue.push(e=>[...e]),r.promise}}},[]);return(0,s.useMemo)(()=>({...i,...e,viewportInitialized:r}),[r])}var B$=e=>e.selected,V$=typeof window<`u`?window:void 0;function H$({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=VQ(),{deleteElements:r}=z$(),i=h$(e,{actInsideInputWithModifier:!1}),a=h$(t,{target:V$});(0,s.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(B$),edges:e.filter(B$)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,s.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function U$(e){let t=VQ();(0,s.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=WX(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,HY.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener(`resize`,n);let t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener(`resize`,n),t&&e.current&&t.unobserve(e.current)}}},[])}var W$={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},G$=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function K$({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:i=.5,panOnScrollMode:a=qY.Free,zoomOnDoubleClick:o=!0,panOnDrag:c=!0,defaultViewport:l,translateExtent:u,minZoom:d,maxZoom:f,zoomActivationKeyCode:p,preventScrolling:m=!0,children:h,noWheelClassName:g,noPanClassName:_,onViewportChange:v,isControlledViewport:y,paneClickDistance:b,selectionOnDrag:x}){let S=VQ(),C=(0,s.useRef)(null),{userSelectionActive:w,lib:T,connectionInProgress:E}=BQ(G$,IQ),D=h$(p),O=(0,s.useRef)();U$(C);let k=(0,s.useCallback)(e=>{v?.({x:e[0],y:e[1],zoom:e[2]}),y||S.setState({transform:e})},[v,y]);return(0,s.useEffect)(()=>{if(C.current){O.current=hQ({domNode:C.current,minZoom:d,maxZoom:f,translateExtent:u,viewport:l,onDraggingChange:e=>S.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=S.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=S.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=S.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=O.current.getViewport();return S.setState({panZoom:O.current,transform:[e,t,n],domNode:C.current.closest(`.react-flow`)}),()=>{O.current?.destroy()}}},[]),(0,s.useEffect)(()=>{O.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:i,panOnScrollMode:a,zoomOnDoubleClick:o,panOnDrag:c,zoomActivationKeyPressed:D,preventScrolling:m,noPanClassName:_,userSelectionActive:w,noWheelClassName:g,lib:T,onTransformChange:k,connectionInProgress:E,selectionOnDrag:x,paneClickDistance:b})},[e,t,n,r,i,a,o,c,D,m,_,w,g,T,k,E,x,b]),(0,G.jsx)(`div`,{className:`react-flow__renderer`,ref:C,style:W$,children:h})}var q$=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function J$(){let{userSelectionActive:e,userSelectionRect:t}=BQ(q$,IQ);return e&&t?(0,G.jsx)(`div`,{className:`react-flow__selection react-flow__container`,style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}var Y$=(e,t)=>n=>{n.target===t.current&&e?.(n)},X$=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function Z$({isSelecting:e,selectionKeyPressed:t,selectionMode:n=JY.Full,panOnDrag:r,autoPanOnSelection:i,paneClickDistance:a,selectionOnDrag:o,onSelectionStart:c,onSelectionEnd:l,onPaneClick:u,onPaneContextMenu:d,onPaneScroll:f,onPaneMouseEnter:p,onPaneMouseMove:m,onPaneMouseLeave:h,children:g}){let _=(0,s.useRef)(0),v=VQ(),{userSelectionActive:y,elementsSelectable:b,dragging:x,panBy:S,autoPanSpeed:C}=BQ(X$,IQ),w=b&&(e||y),T=(0,s.useRef)(null),E=(0,s.useRef)(),D=(0,s.useRef)(new Set),O=(0,s.useRef)(new Set),k=(0,s.useRef)(!1),A=(0,s.useRef)(!1),j=(0,s.useRef)({x:0,y:0}),M=(0,s.useRef)(!1),N=e=>{if(A.current||k.current||v.getState().connection.inProgress){A.current=!1,k.current=!1;return}u?.(e),v.getState().resetSelectedElements(),v.setState({nodesSelectionActive:!1})},P=e=>{if(Array.isArray(r)&&r?.includes(2)){e.preventDefault();return}d?.(e)},F=f?e=>f(e):void 0,I=e=>{A.current&&=(e.stopPropagation(),!1)},L=n=>{let{domNode:r,transform:i}=v.getState();if(E.current=r?.getBoundingClientRect(),!E.current)return;let a=n.target===T.current;if(!a&&n.target.closest(`.nokey`)||!e||!(o&&a||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),A.current=!1;let{x:s,y:c}=YX(n.nativeEvent,E.current),l=kX({x:s,y:c},i);v.setState({userSelectionRect:{width:0,height:0,startX:l.x,startY:l.y,x:s,y:c}}),a||(n.stopPropagation(),n.preventDefault())};function R(e,t){let{userSelectionRect:r}=v.getState();if(!r)return;let{transform:i,nodeLookup:a,edgeLookup:o,connectionLookup:s,triggerNodeChanges:c,triggerEdgeChanges:l,defaultEdgeOptions:u}=v.getState(),d={x:r.startX,y:r.startY},{x:f,y:p}=AX(d,i),m={startX:d.x,startY:d.y,x:ee.id)),O.current=new Set;let _=u?.selectable??!0;for(let e of D.current){let t=s.get(e);if(t)for(let{edgeId:e}of t.values()){let t=o.get(e);t&&(t.selectable??_)&&O.current.add(e)}}BX(h,D.current)||c(w$(a,D.current,!0)),BX(g,O.current)||l(w$(o,O.current)),v.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!i||!E.current)return;let[e,t]=gX(j.current,E.current,C);S({x:e,y:t}).then(e=>{if(!A.current||!e){_.current=requestAnimationFrame(z);return}let{x:t,y:n}=j.current;R(t,n),_.current=requestAnimationFrame(z)})}let B=()=>{cancelAnimationFrame(_.current),_.current=0,M.current=!1};(0,s.useEffect)(()=>()=>B(),[]);let V=e=>{let{userSelectionRect:n,transform:r,resetSelectedElements:i}=v.getState();if(!E.current||!n)return;let{x:o,y:s}=YX(e.nativeEvent,E.current);j.current={x:o,y:s};let l=AX({x:n.startX,y:n.startY},r);if(!A.current){let n=t?0:a;if(Math.hypot(o-l.x,s-l.y)<=n)return;i(),c?.(e)}A.current=!0,M.current||=(z(),!0),R(o,s)},H=e=>{if(!w){e.target===T.current&&v.getState().connection.inProgress&&(k.current=!0);return}e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!y&&e.target===T.current&&v.getState().userSelectionRect&&N?.(e),v.setState({userSelectionActive:!1,userSelectionRect:null}),A.current&&(l?.(e),v.setState({nodesSelectionActive:D.current.size>0})),B())},ee=e=>{e.target?.releasePointerCapture?.(e.pointerId),B()},te=r===!0||Array.isArray(r)&&r.includes(0);return(0,G.jsxs)(`div`,{className:aW([`react-flow__pane`,{draggable:te,dragging:x,selection:e}]),onClick:w?void 0:Y$(N,T),onContextMenu:Y$(P,T),onWheel:Y$(F,T),onPointerEnter:w?void 0:p,onPointerMove:w?V:m,onPointerUp:H,onPointerCancel:w?ee:void 0,onPointerDownCapture:w?L:void 0,onClickCapture:w?I:void 0,onPointerLeave:h,ref:T,style:W$,children:[g,(0,G.jsx)(J$,{})]})}function Q$({id:e,store:t,unselect:n=!1,nodeRef:r}){let{addSelectedNodes:i,unselectNodesAndEdges:a,multiSelectionActive:o,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);if(!l){c?.(`012`,HY.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function $$({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let c=VQ(),[l,u]=(0,s.useState)(!1),d=(0,s.useRef)();return(0,s.useEffect)(()=>{if(!t)return d.current=WZ({getStoreItems:()=>c.getState(),onNodeMouseDown:t=>{Q$({id:t,store:c,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}}),()=>{d.current?.destroy(),d.current=void 0}},[t,c,e]),(0,s.useEffect)(()=>{t||!e.current||!d.current||d.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:o})},[n,r,t,a,e,i,o]),l}var e1=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function t1(){let e=VQ();return(0,s.useCallback)(t=>{let{nodeExtent:n,snapToGrid:r,snapGrid:i,nodesDraggable:a,onError:o,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=e1(a),f=r?i[0]:5,p=r?i[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};r&&(t=OX(t,i));let{position:a,positionAbsolute:s}=uX({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:o});e.position=a,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}var n1=(0,s.createContext)(null),r1=n1.Provider;n1.Consumer;var i1=()=>(0,s.useContext)(n1),a1=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),o1=(0,s.createContext)(null);function s1({children:e}){let t=BQ(a1,IQ);return(0,G.jsx)(o1.Provider,{value:t,children:e})}function c1(){let e=(0,s.useContext)(o1);if(!e)throw Error(`useHandleConfig must be used within a HandleConfigProvider`);return e}var l1={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},u1=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o;if(!s&&!i)return l1;let u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:s?.nodeId===e&&s?.id===t&&s?.type===n,connectingTo:u,clickConnecting:i?.nodeId===e&&i?.id===t&&i?.type===n,isPossibleEndHandle:a===KY.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function d1({type:e=`source`,position:t=$.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:a=!0,id:o,onConnect:s,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},p){let m=o||null,h=e===`target`,g=VQ(),_=i1(),{connectOnClick:v,noPanClassName:y,rfId:b}=c1(),{connectingFrom:x,connectingTo:S,clickConnecting:C,isPossibleEndHandle:w,connectionInProcess:T,clickConnectionInProcess:E,valid:D}=BQ(u1(_,m,e),IQ);_||g.getState().onError?.(`010`,HY.error010());let O=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:r}=g.getState(),i={...t,...e};if(r){let{edges:e,setEdges:t,onError:n}=g.getState();t(O$(i,e,{onError:n}))}n?.(i),s?.(i)},k=e=>{if(!_)return;let t=JX(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();eQ.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:h,handleId:m,nodeId:_,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>g.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:n||((...e)=>g.getState().isValidConnection?.(...e)??!0),getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?u?.(e):d?.(e)};return(0,G.jsx)(`div`,{"data-handleid":m,"data-nodeid":_,"data-handlepos":t,"data-id":`${b}-${_}-${m}-${e}`,className:aW([`react-flow__handle`,`react-flow__handle-${t}`,`nodrag`,y,l,{source:!h,target:h,connectable:r,connectablestart:i,connectableend:a,clickconnecting:C,connectingfrom:x,connectingto:S,valid:D,connectionindicator:r&&(!T||w)&&(T||E?a:i)}]),onMouseDown:k,onTouchStart:k,onClick:v?t=>{let{onClickConnectStart:r,onClickConnectEnd:a,connectionClickStartHandle:o,connectionMode:s,isValidConnection:c,lib:l,rfId:u,nodeLookup:d,connection:f}=g.getState();if(!_||!o&&!i)return;if(!o){r?.(t.nativeEvent,{nodeId:_,handleId:m,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:_,type:e,id:m}});return}let p=GX(t.target),h=n||c,{connection:v,isValid:y}=eQ.isValid(t.nativeEvent,{handle:{nodeId:_,id:m,type:e},connectionMode:s,fromNodeId:o.nodeId,fromHandleId:o.id||null,fromType:o.type,isValidConnection:h,flowId:u,doc:p,lib:l,nodeLookup:d});y&&v&&O(v);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),g.setState({connectionClickStartHandle:null})}:void 0,ref:p,...f,children:c})}var f1=(0,s.memo)(j$(d1));function p1({data:e,isConnectable:t,sourcePosition:n=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[e?.label,(0,G.jsx)(f1,{type:`source`,position:n,isConnectable:t})]})}function m1({data:e,isConnectable:t,targetPosition:n=$.Top,sourcePosition:r=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(f1,{type:`target`,position:n,isConnectable:t}),e?.label,(0,G.jsx)(f1,{type:`source`,position:r,isConnectable:t})]})}function h1(){return null}function g1({data:e,isConnectable:t,targetPosition:n=$.Top}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(f1,{type:`target`,position:n,isConnectable:t}),e?.label]})}var _1={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},v1={input:p1,default:m1,output:g1,group:h1};function y1(e){return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}var b1=e=>{let{width:t,height:n,x:r,y:i}=aX(e.nodeLookup,{filter:e=>!!e.selected});return{width:EX(t)?t:null,height:EX(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${i}px)`}};function x1({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=VQ(),{width:i,height:a,transformString:o,userSelectionActive:c}=BQ(b1,IQ),l=t1(),u=(0,s.useRef)(null);(0,s.useEffect)(()=>{n||u.current?.focus({preventScroll:!0})},[n]);let d=!c&&i!==null&&a!==null;if($$({nodeRef:u,disabled:!d}),!d)return null;let f=e?t=>{e(t,r.getState().nodes.filter(e=>e.selected))}:void 0;return(0,G.jsx)(`div`,{className:aW([`react-flow__nodesselection`,`react-flow__container`,t]),style:{transform:o},children:(0,G.jsx)(`div`,{ref:u,className:`react-flow__nodesselection-rect`,onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(_1,e.key)&&(e.preventDefault(),l({direction:_1[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var S1=typeof window<`u`?window:void 0,C1=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function w1({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,paneClickDistance:s,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:h,zoomActivationKeyCode:g,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:b,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:w,autoPanOnSelection:T,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,preventScrolling:A,onSelectionContextMenu:j,noWheelClassName:M,noPanClassName:N,disableKeyboardA11y:P,onViewportChange:F,isControlledViewport:I}){let{nodesSelectionActive:L,userSelectionActive:R}=BQ(C1,IQ),z=h$(l,{target:S1}),B=h$(h,{target:S1}),V=B||w,H=B||b,ee=u&&V!==!0,te=z||R||ee;return H$({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,G.jsx)(K$,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:H,panOnScrollSpeed:x,panOnScrollMode:S,zoomOnDoubleClick:C,panOnDrag:!z&&V,defaultViewport:E,translateExtent:D,minZoom:O,maxZoom:k,zoomActivationKeyCode:g,preventScrolling:A,noWheelClassName:M,noPanClassName:N,onViewportChange:F,isControlledViewport:I,paneClickDistance:s,selectionOnDrag:ee,children:(0,G.jsxs)(Z$,{onSelectionStart:f,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,panOnDrag:V,autoPanOnSelection:T,isSelecting:!!te,selectionMode:d,selectionKeyPressed:z,paneClickDistance:s,selectionOnDrag:ee,children:[e,L&&(0,G.jsx)(x1,{onSelectionContextMenu:j,noPanClassName:N,disableKeyboardA11y:P})]})})}w1.displayName=`FlowRenderer`;var T1=(0,s.memo)(w1),E1=e=>t=>e?oX(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys());function D1(e){return BQ((0,s.useCallback)(E1(e),[e]),IQ)}var O1=e=>e.updateNodeInternals;function k1(){let e=BQ(O1),[t]=(0,s.useState)(()=>typeof ResizeObserver>`u`?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute(`data-id`);n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,s.useEffect)(()=>()=>{t?.disconnect()},[t]),t}function A1({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=VQ(),a=(0,s.useRef)(null),o=(0,s.useRef)(null),c=(0,s.useRef)(e.sourcePosition),l=(0,s.useRef)(e.targetPosition),u=(0,s.useRef)(t),d=n&&!!e.internals.handleBounds;return(0,s.useEffect)(()=>{a.current&&!e.hidden&&(!d||o.current!==a.current)&&(o.current&&r?.unobserve(o.current),r?.observe(a.current),o.current=a.current)},[d,e.hidden]),(0,s.useEffect)(()=>()=>{o.current&&=(r?.unobserve(o.current),null)},[]),(0,s.useEffect)(()=>{if(a.current){let n=u.current!==t,r=c.current!==e.sourcePosition,o=l.current!==e.targetPosition;(n||r||o)&&(u.current=t,c.current=e.sourcePosition,l.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}function j1({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:i,onContextMenu:a,onDoubleClick:o,nodesDraggable:s,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:p,disableKeyboardA11y:m,rfId:h,nodeTypes:g,nodeClickDistance:_,onError:v}){let{node:y,internals:b,isParent:x}=BQ(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},IQ),S=y.type||`default`,C=g?.[S]||v1[S];C===void 0&&(v?.(`003`,HY.error003(S)),S=`default`,C=g?.default||v1.default);let w=!!(y.draggable||s&&y.draggable===void 0),T=!!(y.selectable||c&&y.selectable===void 0),E=!!(y.connectable||l&&y.connectable===void 0),D=!!(y.focusable||u&&y.focusable===void 0),O=VQ(),k=RX(y),A=A1({node:y,nodeType:S,hasDimensions:k,resizeObserver:d}),j=$$({nodeRef:A,disabled:y.hidden||!w,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:_}),M=t1();if(y.hidden)return null;let N=LX(y),P=y1(y),F=T||w||t||n||r||i,I=n?e=>n(e,{...b.userNode}):void 0,L=r?e=>r(e,{...b.userNode}):void 0,R=i?e=>i(e,{...b.userNode}):void 0,z=a?e=>a(e,{...b.userNode}):void 0,B=o?e=>o(e,{...b.userNode}):void 0,V=n=>{let{selectNodesOnDrag:r,nodeDragThreshold:i}=O.getState();T&&(!r||!w||i>0)&&Q$({id:e,store:O,nodeRef:A}),t&&t(n,{...b.userNode})},H=t=>{if(!(qX(t.nativeEvent)||m)){if(WY.includes(t.key)&&T){let n=t.key===`Escape`;Q$({id:e,store:O,unselect:n,nodeRef:A})}else if(w&&y.selected&&Object.prototype.hasOwnProperty.call(_1,t.key)){t.preventDefault();let{ariaLabelConfig:e}=O.getState();O.setState({ariaLiveMessage:e[`node.a11yDescription.ariaLiveMessage`]({direction:t.key.replace(`Arrow`,``).toLowerCase(),x:~~b.positionAbsolute.x,y:~~b.positionAbsolute.y})}),M({direction:_1[t.key],factor:t.shiftKey?4:1})}}},ee=()=>{if(m||!A.current?.matches(`:focus-visible`))return;let{transform:t,width:n,height:r,autoPanOnNodeFocus:i,setCenter:a}=O.getState();i&&(oX(new Map([[e,y]]),{x:0,y:0,width:n,height:r},t,!0).length>0||a(y.position.x+N.width/2,y.position.y+N.height/2,{zoom:t[2]}))};return(0,G.jsx)(`div`,{className:aW([`react-flow__node`,`react-flow__node-${S}`,{[p]:w},y.className,{selected:y.selected,selectable:T,parent:x,draggable:w,dragging:j}]),ref:A,style:{zIndex:b.z,transform:`translate(${b.positionAbsolute.x}px,${b.positionAbsolute.y}px)`,pointerEvents:F?`all`:`none`,visibility:k?`visible`:`hidden`,...y.style,...P},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:I,onMouseMove:L,onMouseLeave:R,onContextMenu:z,onClick:V,onDoubleClick:B,onKeyDown:D?H:void 0,tabIndex:D?0:void 0,onFocus:D?ee:void 0,role:y.ariaRole??(D?`group`:void 0),"aria-roledescription":`node`,"aria-describedby":m?void 0:`${WQ}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,G.jsx)(r1,{value:e,children:(0,G.jsx)(C,{id:e,data:y.data,type:S,positionAbsoluteX:b.positionAbsolute.x,positionAbsoluteY:b.positionAbsolute.y,selected:y.selected??!1,selectable:T,draggable:w,deletable:y.deletable??!0,isConnectable:E,sourcePosition:y.sourcePosition,targetPosition:y.targetPosition,dragging:j,dragHandle:y.dragHandle,zIndex:b.z,parentId:y.parentId,...N})})})}var M1=(0,s.memo)(j1),N1=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function P1(e){let{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:i}=BQ(N1,IQ),a=D1(e.onlyRenderVisibleElements),o=k1();return(0,G.jsx)(`div`,{className:`react-flow__nodes`,style:W$,children:a.map(a=>(0,G.jsx)(M1,{id:a,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:o,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,nodeClickDistance:e.nodeClickDistance,onError:i},a))})}P1.displayName=`NodeRenderer`;var F1=(0,s.memo)(P1);function I1(e){return BQ((0,s.useCallback)(t=>{if(!e)return t.edges.map(e=>e.id);let n=[];if(t.width&&t.height)for(let e of t.edges){let r=t.nodeLookup.get(e.source),i=t.nodeLookup.get(e.target);r&&i&&rZ({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),IQ)}var L1=({color:e=`none`,strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e}};return(0,G.jsx)(`polyline`,{className:`arrow`,style:n,strokeLinecap:`round`,fill:`none`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4`})},R1=({color:e=`none`,strokeWidth:t=1})=>{let n={strokeWidth:t,...e&&{stroke:e,fill:e}};return(0,G.jsx)(`polyline`,{className:`arrowclosed`,style:n,strokeLinecap:`round`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4 -5,-4`})},z1={[ZY.Arrow]:L1,[ZY.ArrowClosed]:R1};function B1(e){let t=VQ();return(0,s.useMemo)(()=>Object.prototype.hasOwnProperty.call(z1,e)?z1[e]:(t.getState().onError?.(`009`,HY.error009(e)),null),[e])}var V1=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:a=`strokeWidth`,strokeWidth:o,orient:s=`auto-start-reverse`})=>{let c=B1(t);return c?(0,G.jsx)(`marker`,{className:`react-flow__arrowhead`,id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:`-10 -10 20 20`,markerUnits:a,orient:s,refX:`0`,refY:`0`,children:(0,G.jsx)(c,{color:n,strokeWidth:o})}):null},H1=({defaultColor:e,rfId:t})=>{let n=BQ(e=>e.edges),r=BQ(e=>e.defaultEdgeOptions),i=(0,s.useMemo)(()=>bZ(n,{id:t,defaultColor:e,defaultMarkerStart:r?.markerStart,defaultMarkerEnd:r?.markerEnd}),[n,r,t,e]);return i.length?(0,G.jsx)(`svg`,{className:`react-flow__marker`,"aria-hidden":`true`,children:(0,G.jsx)(`defs`,{children:i.map(e=>(0,G.jsx)(V1,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};H1.displayName=`MarkerDefinitions`;var U1=(0,s.memo)(H1);function W1({x:e,y:t,label:n,labelStyle:r,labelShowBg:i=!0,labelBgStyle:a,labelBgPadding:o=[2,4],labelBgBorderRadius:c=2,children:l,className:u,...d}){let[f,p]=(0,s.useState)({x:1,y:0,width:0,height:0}),m=aW([`react-flow__edge-textwrapper`,u]),h=(0,s.useRef)(null);return(0,s.useEffect)(()=>{if(h.current){let e=h.current.getBBox();p({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n?(0,G.jsxs)(`g`,{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:m,visibility:f.width?`visible`:`hidden`,...d,children:[i&&(0,G.jsx)(`rect`,{width:f.width+2*o[0],x:-o[0],y:-o[1],height:f.height+2*o[1],className:`react-flow__edge-textbg`,style:a,rx:c,ry:c}),(0,G.jsx)(`text`,{className:`react-flow__edge-text`,y:f.height/2,dy:`0.3em`,ref:h,style:r,children:n}),l]}):null}W1.displayName=`EdgeText`;var G1=(0,s.memo)(W1);function K1({path:e,labelX:t,labelY:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`path`,{...u,d:e,fill:`none`,className:aW([`react-flow__edge-path`,u.className])}),l?(0,G.jsx)(`path`,{d:e,fill:`none`,strokeOpacity:0,strokeWidth:l,className:`react-flow__edge-interaction`}):null,r&&EX(t)&&EX(n)?(0,G.jsx)(G1,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function q1({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===$.Left||e===$.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function J1({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top}){let[o,s]=q1({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=q1({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=ZX({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:o,sourceControlY:s,targetControlX:c,targetControlY:l});return[`M${e},${t} C${o},${s} ${c},${l} ${r},${i}`,u,d,f,p]}function Y1(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})=>{let[v,y,b]=J1({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s}),x=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:x,path:v,labelX:y,labelY:b,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})})}var X1=Y1({isInternal:!1}),Z1=Y1({isInternal:!0});X1.displayName=`SimpleBezierEdge`,Z1.displayName=`SimpleBezierEdgeInternal`;function Q1(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:p=$.Bottom,targetPosition:m=$.Top,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=pZ({sourceX:n,sourceY:r,sourcePosition:p,targetX:i,targetY:a,targetPosition:m,borderRadius:_?.borderRadius,offset:_?.offset,stepPosition:_?.stepPosition}),S=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:S,path:y,labelX:b,labelY:x,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:g,interactionWidth:v})})}var $1=Q1({isInternal:!1}),e0=Q1({isInternal:!0});$1.displayName=`SmoothStepEdge`,e0.displayName=`SmoothStepEdgeInternal`;function t0(e){return(0,s.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,G.jsx)($1,{...n,id:r,pathOptions:(0,s.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var n0=t0({isInternal:!1}),r0=t0({isInternal:!0});n0.displayName=`StepEdge`,r0.displayName=`StepEdgeInternal`;function i0(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})=>{let[g,_,v]=sZ({sourceX:n,sourceY:r,targetX:i,targetY:a}),y=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:y,path:g,labelX:_,labelY:v,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})})}var a0=i0({isInternal:!1}),o0=i0({isInternal:!0});a0.displayName=`StraightEdge`,o0.displayName=`StraightEdgeInternal`;function s0(e){return(0,s.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o=$.Bottom,targetPosition:s=$.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,x]=eZ({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature}),S=e.isInternal?void 0:t;return(0,G.jsx)(K1,{id:S,path:y,labelX:b,labelY:x,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:v})})}var c0=s0({isInternal:!1}),l0=s0({isInternal:!0});c0.displayName=`BezierEdge`,l0.displayName=`BezierEdgeInternal`;var u0={default:l0,straight:o0,step:r0,smoothstep:e0,simplebezier:Z1},d0={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},f0=(e,t,n)=>n===$.Left?e-t:n===$.Right?e+t:e,p0=(e,t,n)=>n===$.Top?e-t:n===$.Bottom?e+t:e,m0=`react-flow__edgeupdater`;function h0({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:a,onMouseOut:o,type:s}){return(0,G.jsx)(`circle`,{onMouseDown:i,onMouseEnter:a,onMouseOut:o,className:aW([m0,`${m0}-${s}`]),cx:f0(t,r,e),cy:p0(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function g0({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:i,targetX:a,targetY:o,sourcePosition:s,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:p}){let m=VQ(),h=(e,t)=>{if(e.button!==0)return;let{autoPanOnConnect:r,domNode:i,connectionMode:a,connectionRadius:o,lib:s,onConnectStart:c,cancelConnection:p,nodeLookup:h,rfId:g,panBy:_,updateConnection:v}=m.getState(),y=t.type===`target`;eQ.onPointerDown(e.nativeEvent,{autoPanOnConnect:r,connectionMode:a,connectionRadius:o,domNode:i,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:y,edgeUpdaterType:t.type,lib:s,flowId:g,cancelConnection:p,panBy:_,isValidConnection:(...e)=>m.getState().isValidConnection?.(...e)??!0,onConnect:e=>l?.(n,e),onConnectStart:(r,i)=>{f(!0),u?.(e,n,t.type),c?.(r,i)},onConnectEnd:(...e)=>m.getState().onConnectEnd?.(...e),onReconnectEnd:(e,r)=>{f(!1),d?.(e,n,t.type,r)},updateConnection:v,getTransform:()=>m.getState().transform,getFromHandle:()=>m.getState().connection.fromHandle,dragThreshold:m.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},g=e=>h(e,{nodeId:n.target,id:n.targetHandle??null,type:`target`}),_=e=>h(e,{nodeId:n.source,id:n.sourceHandle??null,type:`source`}),v=()=>p(!0),y=()=>p(!1);return(0,G.jsxs)(G.Fragment,{children:[(e===!0||e===`source`)&&(0,G.jsx)(h0,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,G.jsx)(h0,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function _0({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:i,onDoubleClick:a,onContextMenu:o,onMouseEnter:c,onMouseMove:l,onMouseLeave:u,reconnectRadius:d,onReconnect:f,onReconnectStart:p,onReconnectEnd:m,rfId:h,edgeTypes:g,noPanClassName:_,onError:v,disableKeyboardA11y:y}){let b=BQ(t=>t.edgeLookup.get(e)),x=BQ(e=>e.defaultEdgeOptions);b=x?{...x,...b}:b;let S=b.type||`default`,C=g?.[S]||u0[S];C===void 0&&(v?.(`011`,HY.error011(S)),S=`default`,C=g?.default||u0.default);let w=!!(b.focusable||t&&b.focusable===void 0),T=f!==void 0&&(b.reconnectable||n&&b.reconnectable===void 0),E=!!(b.selectable||r&&b.selectable===void 0),D=(0,s.useRef)(null),[O,k]=(0,s.useState)(!1),[A,j]=(0,s.useState)(!1),M=VQ(),{zIndex:N=b.zIndex,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z}=BQ((0,s.useCallback)(t=>{let n=t.nodeLookup.get(b.source),r=t.nodeLookup.get(b.target);if(!n||!r)return d0;let i=hZ({id:e,sourceNode:n,targetNode:r,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:t.connectionMode,onError:v}),a=nZ({selected:b.selected,zIndex:b.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||d0,zIndex:a}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex]),IQ),B=(0,s.useMemo)(()=>b.markerStart?`url('#${yZ(b.markerStart,h)}')`:void 0,[b.markerStart,h]),V=(0,s.useMemo)(()=>b.markerEnd?`url('#${yZ(b.markerEnd,h)}')`:void 0,[b.markerEnd,h]);if(b.hidden||P===null||F===null||I===null||L===null)return null;let H=t=>{let{addSelectedEdges:n,unselectNodesAndEdges:r,multiSelectionActive:a}=M.getState();E&&(M.setState({nodesSelectionActive:!1}),b.selected&&a?(r({nodes:[],edges:[b]}),D.current?.blur()):n([e])),i&&i(t,b)},ee=a?e=>{a(e,{...b})}:void 0,te=o?e=>{o(e,{...b})}:void 0,ne=c?e=>{c(e,{...b})}:void 0,U=l?e=>{l(e,{...b})}:void 0,re=u?e=>{u(e,{...b})}:void 0;return(0,G.jsx)(`svg`,{style:{zIndex:N},children:(0,G.jsxs)(`g`,{className:aW([`react-flow__edge`,`react-flow__edge-${S}`,b.className,_,{selected:b.selected,animated:b.animated,inactive:!E&&!i,updating:O,selectable:E}]),onClick:H,onDoubleClick:ee,onContextMenu:te,onMouseEnter:ne,onMouseMove:U,onMouseLeave:re,onKeyDown:w?t=>{if(!y&&WY.includes(t.key)&&E){let{unselectNodesAndEdges:n,addSelectedEdges:r}=M.getState();t.key===`Escape`?(D.current?.blur(),n({edges:[b]})):r([e])}}:void 0,tabIndex:w?0:void 0,role:b.ariaRole??(w?`group`:`img`),"aria-roledescription":`edge`,"data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":b.ariaLabel===null?void 0:b.ariaLabel||`Edge from ${b.source} to ${b.target}`,"aria-describedby":w?`${GQ}-${h}`:void 0,ref:D,...b.domAttributes,children:[!A&&(0,G.jsx)(C,{id:e,source:b.source,target:b.target,type:b.type,selected:b.selected,animated:b.animated,selectable:E,deletable:b.deletable??!0,label:b.label,labelStyle:b.labelStyle,labelShowBg:b.labelShowBg,labelBgStyle:b.labelBgStyle,labelBgPadding:b.labelBgPadding,labelBgBorderRadius:b.labelBgBorderRadius,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z,data:b.data,style:b.style,sourceHandleId:b.sourceHandle,targetHandleId:b.targetHandle,markerStart:B,markerEnd:V,pathOptions:`pathOptions`in b?b.pathOptions:void 0,interactionWidth:b.interactionWidth}),T&&(0,G.jsx)(g0,{edge:b,isReconnectable:T,reconnectRadius:d,onReconnect:f,onReconnectStart:p,onReconnectEnd:m,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z,setUpdateHover:k,setReconnecting:j})]})})}var v0=(0,s.memo)(_0),y0=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function b0({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:i,onReconnect:a,onEdgeContextMenu:o,onEdgeMouseEnter:s,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:h}){let{edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,onError:y}=BQ(y0,IQ),b=I1(t);return(0,G.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,G.jsx)(U1,{defaultColor:e,rfId:n}),b.map(e=>(0,G.jsx)(v0,{id:e,edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,noPanClassName:i,onReconnect:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,rfId:n,onError:y,edgeTypes:r,disableKeyboardA11y:h},e))]})}b0.displayName=`EdgeRenderer`;var x0=(0,s.memo)(b0),S0=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function C0({children:e}){let t=VQ(),n=(0,s.useRef)(null),[r]=(0,s.useState)(()=>t.getState().transform);return M$(()=>{let e=null,r=()=>{let r=t.getState().transform;e&&r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]||(e=r,n.current&&(n.current.style.transform=S0(r)))};return r(),t.subscribe(r)},[t]),(0,G.jsx)(`div`,{ref:n,className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:S0(r)},children:e})}function w0(e){let t=z$(),n=(0,s.useRef)(!1);(0,s.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var T0=e=>e.panZoom?.syncViewport;function E0(e){let t=BQ(T0),n=VQ();return(0,s.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function D0(e){return e.connection.inProgress?{...e.connection,to:kX(e.connection.to,e.transform)}:{...e.connection}}function O0(e){return e?t=>e(D0(t)):D0}function k0(e){return BQ(O0(e),IQ)}var A0=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function j0({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=BQ(A0,IQ);return a&&i&&c?(0,G.jsx)(`svg`,{style:e,width:a,height:o,className:`react-flow__connectionline react-flow__container`,children:(0,G.jsx)(`g`,{className:aW([`react-flow__connection`,$Y(s)]),children:(0,G.jsx)(M0,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var M0=({style:e,type:t=XY.Bezier,CustomComponent:n,isValid:r})=>{let{inProgress:i,from:a,fromNode:o,fromHandle:s,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:p}=k0();if(!i)return;if(n)return(0,G.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:s,fromX:a.x,fromY:a.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:$Y(r),toNode:u,toHandle:d,pointer:p});let m=``,h={sourceX:a.x,sourceY:a.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case XY.Bezier:[m]=eZ(h);break;case XY.SimpleBezier:[m]=J1(h);break;case XY.Step:[m]=pZ({...h,borderRadius:0});break;case XY.SmoothStep:[m]=pZ(h);break;default:[m]=sZ(h)}return(0,G.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};M0.displayName=`ConnectionLine`;var N0={};function P0(e=N0){(0,s.useRef)(e),VQ(),(0,s.useEffect)(()=>{},[e])}function F0(){VQ(),(0,s.useRef)(!1),(0,s.useEffect)(()=>{},[])}function I0({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:i,onNodeDoubleClick:a,onEdgeDoubleClick:o,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:h,connectionLineComponent:g,connectionLineContainerStyle:_,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,deleteKeyCode:w,onlyRenderVisibleElements:T,elementsSelectable:E,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,preventScrolling:j,defaultMarkerColor:M,zoomOnScroll:N,zoomOnPinch:P,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,zoomOnDoubleClick:R,panOnDrag:z,autoPanOnSelection:B,onPaneClick:V,onPaneMouseEnter:H,onPaneMouseMove:ee,onPaneMouseLeave:te,onPaneScroll:ne,onPaneContextMenu:U,paneClickDistance:re,nodeClickDistance:ie,onEdgeContextMenu:ae,onEdgeMouseEnter:oe,onEdgeMouseMove:se,onEdgeMouseLeave:ce,reconnectRadius:le,onReconnect:ue,onReconnectStart:de,onReconnectEnd:W,noDragClassName:fe,noWheelClassName:pe,noPanClassName:me,disableKeyboardA11y:he,nodeExtent:ge,rfId:_e,viewport:ve,onViewportChange:ye,nodesDraggable:be}){return P0(e),P0(t),F0(),w0(n),E0(ve),(0,G.jsx)(T1,{onPaneClick:V,onPaneMouseEnter:H,onPaneMouseMove:ee,onPaneMouseLeave:te,onPaneContextMenu:U,onPaneScroll:ne,paneClickDistance:re,deleteKeyCode:w,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:x,panActivationKeyCode:S,zoomActivationKeyCode:C,elementsSelectable:E,zoomOnScroll:N,zoomOnPinch:P,zoomOnDoubleClick:R,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,panOnDrag:z,autoPanOnSelection:B,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,onSelectionContextMenu:d,preventScrolling:j,noDragClassName:fe,noWheelClassName:pe,noPanClassName:me,disableKeyboardA11y:he,onViewportChange:ye,isControlledViewport:!!ve,children:(0,G.jsxs)(C0,{children:[(0,G.jsx)(x0,{edgeTypes:t,onEdgeClick:i,onEdgeDoubleClick:o,onReconnect:ue,onReconnectStart:de,onReconnectEnd:W,onlyRenderVisibleElements:T,onEdgeContextMenu:ae,onEdgeMouseEnter:oe,onEdgeMouseMove:se,onEdgeMouseLeave:ce,reconnectRadius:le,defaultMarkerColor:M,noPanClassName:me,disableKeyboardA11y:he,rfId:_e}),(0,G.jsx)(j0,{style:h,type:m,component:g,containerStyle:_}),(0,G.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,G.jsx)(F1,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:a,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:ie,onlyRenderVisibleElements:T,noPanClassName:me,noDragClassName:fe,disableKeyboardA11y:he,nodeExtent:ge,rfId:_e,nodesDraggable:be}),(0,G.jsx)(`div`,{className:`react-flow__viewport-portal`})]})})}I0.displayName=`GraphView`;var L0=(0,s.memo)(I0),R0=DX(`React Flow`,`https://reactflow.dev/`),z0=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f=`basic`}={})=>{let p=new Map,m=new Map,h=new Map,g=new Map,_=r??t??[],v=n??e??[],y=u??[0,0],b=d??UY;RZ(h,g,_);let{nodesInitialized:x}=kZ(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=PX(aX(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),i,a,c,l,s?.padding??.1);S=[e,t,n]}return{rfId:`1`,width:i??0,height:a??0,transform:S,nodes:v,nodesInitialized:x,nodeLookup:p,parentLookup:m,edges:_,edgeLookup:g,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:UY,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:KY.Strict,domNode:null,paneDragging:!1,noPanClassName:`nopan`,nodeOrigin:y,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:o??!1,fitViewOptions:s,fitViewResolver:null,connection:{...YY},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:R0,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:GY,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},B0=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>FQ((p,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:r,width:i,height:a,minZoom:o,maxZoom:s}=m();t&&(await lX({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...z0({nodes:e,edges:t,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:r,zIndexMode:f}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:r,elevateNodesOnSelect:i,fitViewQueued:a,zIndexMode:o,nodesSelectionActive:s}=m(),{nodesInitialized:c,hasSelectedNodes:l}=kZ(e,t,n,{nodeOrigin:r,nodeExtent:d,elevateNodesOnSelect:i,checkEquality:!0,zIndexMode:o}),u=s&&l;a&&c?(h(),p({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):p({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();RZ(t,n,e),p({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),p({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),p({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:r,domNode:i,nodeOrigin:a,nodeExtent:o,debug:s,fitViewQueued:c,zIndexMode:l}=m(),{changes:u,updatedInternals:d}=FZ(e,n,r,i,a,o,l);d&&(EZ(n,r,{nodeOrigin:a,nodeExtent:o,zIndexMode:l}),c?(h(),p({fitViewQueued:!1,fitViewOptions:void 0})):p({}),u?.length>0&&(s&&console.log(`React Flow: trigger node changes`,u),t?.(u)))},updateNodePositions:(e,t=!1)=>{let n=[],r=[],{nodeLookup:i,triggerNodeChanges:a,connection:o,updateConnection:s,onNodesChangeMiddlewareMap:c}=m();for(let[a,c]of e){let e=i.get(a),l=!!(e?.expandParent&&e?.parentId&&c?.position),u={id:a,type:`position`,position:l?{x:Math.max(0,c.position.x),y:Math.max(0,c.position.y)}:c.position,dragging:t};if(e&&o.inProgress&&o.fromNode.id===e.id){let t=_Z(e,o.fromHandle,$.Left,!0);s({...o,from:t})}l&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...c.internals.positionAbsolute,width:c.measured.width??0,height:c.measured.height??0}}),r.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=PZ(n,i,e,t);r.push(...a)}for(let e of c.values())r=e(r);a(r)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:r,hasDefaultNodes:i,debug:a}=m();e?.length&&(i&&n(x$(e,r)),a&&console.log(`React Flow: trigger node changes`,e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:r,hasDefaultEdges:i,debug:a}=m();e?.length&&(i&&n(S$(e,r)),a&&console.log(`React Flow: trigger edge changes`,e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){i(e.map(e=>C$(e,!0)));return}i(w$(r,new Set([...e]),!0)),a(w$(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>C$(e,!0)));return}a(w$(n,new Set([...e]))),i(w$(r,new Set,!0))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:o}=m(),s=e||r,c=t||n,l=[];for(let e of s){if(!e.selected)continue;let t=i.get(e.id);t&&(t.selected=!1),l.push(C$(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(C$(e.id,!1));a(l),o(u)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),p({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),p({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),p({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:r,elementsSelectable:i}=m();if(!i)return;let a=t.reduce((e,t)=>t.selected?[...e,C$(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,C$(t.id,!1)]:e,[]);n(a),r(o)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:r,nodeOrigin:i,elevateNodesOnSelect:a,nodeExtent:o,zIndexMode:s}=m();(e[0][0]!==o[0][0]||e[0][1]!==o[0][1]||e[1][0]!==o[1][0]||e[1][1]!==o[1][1])&&(kZ(t,n,r,{nodeOrigin:i,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:s}),p({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:r,panZoom:i,translateExtent:a}=m();return IZ({delta:e,panZoom:i,transform:t,translateExtent:a,width:n,height:r})},setCenter:async(e,t,n)=>{let{width:r,height:i,maxZoom:a,panZoom:o}=m();if(!o)return!1;let s=n?.zoom===void 0?a:n.zoom;return await o.setViewport({x:r/2-e*s,y:i/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{p({connection:{...YY}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...z0()})}},Object.is);function V0({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:i,initialHeight:a,initialMinZoom:o,initialMaxZoom:c,initialFitViewOptions:l,fitView:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p,children:m}){let[h]=(0,s.useState)(()=>B0({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:u,minZoom:o,maxZoom:c,fitViewOptions:l,nodeOrigin:d,nodeExtent:f,zIndexMode:p}));return(0,G.jsx)(RQ,{value:h,children:(0,G.jsx)(I$,{children:(0,G.jsx)(s1,{children:m})})})}function H0({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:i,width:a,height:o,fitView:c,fitViewOptions:l,minZoom:u,maxZoom:d,nodeOrigin:f,nodeExtent:p,zIndexMode:m}){return(0,s.useContext)(LQ)?(0,G.jsx)(G.Fragment,{children:e}):(0,G.jsx)(V0,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:o,fitView:c,initialFitViewOptions:l,initialMinZoom:u,initialMaxZoom:d,nodeOrigin:f,nodeExtent:p,zIndexMode:m,children:e})}var U0={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function W0({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:a,edgeTypes:o,onNodeClick:c,onEdgeClick:l,onInit:u,onMove:d,onMoveStart:f,onMoveEnd:p,onConnect:m,onConnectStart:h,onConnectEnd:g,onClickConnectStart:_,onClickConnectEnd:v,onNodeMouseEnter:y,onNodeMouseMove:b,onNodeMouseLeave:x,onNodeContextMenu:S,onNodeDoubleClick:C,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onSelectionChange:A,onSelectionDragStart:j,onSelectionDrag:M,onSelectionDragStop:N,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onBeforeDelete:L,connectionMode:R,connectionLineType:z=XY.Bezier,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,deleteKeyCode:ee=`Backspace`,selectionKeyCode:te=`Shift`,selectionOnDrag:ne=!1,selectionMode:U=JY.Full,panActivationKeyCode:re=`Space`,multiSelectionKeyCode:ie=FX()?`Meta`:`Control`,zoomActivationKeyCode:ae=FX()?`Meta`:`Control`,snapToGrid:oe,snapGrid:se,onlyRenderVisibleElements:ce=!1,selectNodesOnDrag:le,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:W,nodesFocusable:fe,nodeOrigin:pe=o$,edgesFocusable:me,edgesReconnectable:he,elementsSelectable:ge=!0,defaultViewport:_e=s$,minZoom:ve=.5,maxZoom:ye=2,translateExtent:be=UY,preventScrolling:xe=!0,nodeExtent:Se,defaultMarkerColor:Ce=`#b1b1b7`,zoomOnScroll:we=!0,zoomOnPinch:Te=!0,panOnScroll:Ee=!1,panOnScrollSpeed:De=.5,panOnScrollMode:Oe=qY.Free,zoomOnDoubleClick:ke=!0,panOnDrag:Ae=!0,onPaneClick:je,onPaneMouseEnter:Me,onPaneMouseMove:Ne,onPaneMouseLeave:Pe,onPaneScroll:Fe,onPaneContextMenu:Ie,paneClickDistance:Le=1,nodeClickDistance:Re=0,children:ze,onReconnect:Be,onReconnectStart:Ve,onReconnectEnd:He,onEdgeContextMenu:Ue,onEdgeDoubleClick:We,onEdgeMouseEnter:Ge,onEdgeMouseMove:Ke,onEdgeMouseLeave:qe,reconnectRadius:Je=10,onNodesChange:Ye,onEdgesChange:Xe,noDragClassName:Ze=`nodrag`,noWheelClassName:Qe=`nowheel`,noPanClassName:$e=`nopan`,fitView:et,fitViewOptions:tt,connectOnClick:nt,attributionPosition:rt,proOptions:it,defaultEdgeOptions:at,elevateNodesOnSelect:ot=!0,elevateEdgesOnSelect:st=!1,disableKeyboardA11y:ct=!1,autoPanOnConnect:lt,autoPanOnNodeDrag:ut,autoPanOnSelection:dt=!0,autoPanSpeed:ft,connectionRadius:pt,isValidConnection:mt,onError:ht,style:gt,id:_t,nodeDragThreshold:vt,connectionDragThreshold:yt,viewport:bt,onViewportChange:xt,width:St,height:Ct,colorMode:wt=`light`,debug:Tt,onScroll:Et,ariaLabelConfig:K,zIndexMode:Dt=`basic`,...Ot},kt){let At=_t||`1`,jt=p$(wt),Mt=(0,s.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:`instant`}),Et?.(e)},[Et]);return(0,G.jsx)(`div`,{"data-testid":`rf__wrapper`,...Ot,onScroll:Mt,style:{...gt,...U0},ref:kt,className:aW([`react-flow`,i,jt]),id:_t,role:`application`,children:(0,G.jsxs)(H0,{nodes:e,edges:t,width:St,height:Ct,fitView:et,fitViewOptions:tt,minZoom:ve,maxZoom:ye,nodeOrigin:pe,nodeExtent:Se,zIndexMode:Dt,children:[(0,G.jsx)(d$,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:m,onConnectStart:h,onConnectEnd:g,onClickConnectStart:_,onClickConnectEnd:v,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:W,nodesFocusable:fe,edgesFocusable:me,edgesReconnectable:he,elementsSelectable:ge,elevateNodesOnSelect:ot,elevateEdgesOnSelect:st,minZoom:ve,maxZoom:ye,nodeExtent:Se,onNodesChange:Ye,onEdgesChange:Xe,snapToGrid:oe,snapGrid:se,connectionMode:R,translateExtent:be,connectOnClick:nt,defaultEdgeOptions:at,fitView:et,fitViewOptions:tt,onNodesDelete:D,onEdgesDelete:O,onDelete:k,onNodeDragStart:w,onNodeDrag:T,onNodeDragStop:E,onSelectionDrag:M,onSelectionDragStart:j,onSelectionDragStop:N,onMove:d,onMoveStart:f,onMoveEnd:p,noPanClassName:$e,nodeOrigin:pe,rfId:At,autoPanOnConnect:lt,autoPanOnNodeDrag:ut,autoPanSpeed:ft,onError:ht,connectionRadius:pt,isValidConnection:mt,selectNodesOnDrag:le,nodeDragThreshold:vt,connectionDragThreshold:yt,onBeforeDelete:L,debug:Tt,ariaLabelConfig:K,zIndexMode:Dt}),(0,G.jsx)(L0,{onInit:u,onNodeClick:c,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:b,onNodeMouseLeave:x,onNodeContextMenu:S,onNodeDoubleClick:C,nodeTypes:a,edgeTypes:o,connectionLineType:z,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,selectionKeyCode:te,selectionOnDrag:ne,selectionMode:U,deleteKeyCode:ee,multiSelectionKeyCode:ie,panActivationKeyCode:re,zoomActivationKeyCode:ae,onlyRenderVisibleElements:ce,defaultViewport:_e,translateExtent:be,minZoom:ve,maxZoom:ye,preventScrolling:xe,zoomOnScroll:we,zoomOnPinch:Te,zoomOnDoubleClick:ke,panOnScroll:Ee,panOnScrollSpeed:De,panOnScrollMode:Oe,panOnDrag:Ae,autoPanOnSelection:dt,onPaneClick:je,onPaneMouseEnter:Me,onPaneMouseMove:Ne,onPaneMouseLeave:Pe,onPaneScroll:Fe,onPaneContextMenu:Ie,paneClickDistance:Le,nodeClickDistance:Re,onSelectionContextMenu:P,onSelectionStart:F,onSelectionEnd:I,onReconnect:Be,onReconnectStart:Ve,onReconnectEnd:He,onEdgeContextMenu:Ue,onEdgeDoubleClick:We,onEdgeMouseEnter:Ge,onEdgeMouseMove:Ke,onEdgeMouseLeave:qe,reconnectRadius:Je,defaultMarkerColor:Ce,noDragClassName:Ze,noWheelClassName:Qe,noPanClassName:$e,rfId:At,disableKeyboardA11y:ct,nodeExtent:Se,viewport:bt,onViewportChange:xt,nodesDraggable:ue}),(0,G.jsx)(a$,{onSelectionChange:A}),ze,(0,G.jsx)($Q,{proOptions:it,position:rt}),(0,G.jsx)(XQ,{rfId:At,disableKeyboardA11y:ct})]})})}var G0=j$(W0);HY.error014();function K0({dimensions:e,lineWidth:t,variant:n,className:r}){return(0,G.jsx)(`path`,{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:aW([`react-flow__background-pattern`,n,r])})}function q0({radius:e,className:t}){return(0,G.jsx)(`circle`,{cx:e,cy:e,r:e,className:aW([`react-flow__background-pattern`,`dots`,t])})}var J0;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(J0||={});var Y0={[J0.Dots]:1,[J0.Lines]:1,[J0.Cross]:6},X0=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function Z0({id:e,variant:t=J0.Dots,gap:n=20,size:r,lineWidth:i=1,offset:a=0,color:o,bgColor:c,style:l,className:u,patternClassName:d}){let f=(0,s.useRef)(null),{transform:p,patternId:m}=BQ(X0,IQ),h=r||Y0[t],g=t===J0.Dots,_=t===J0.Cross,v=Array.isArray(n)?n:[n,n],y=[v[0]*p[2]||1,v[1]*p[2]||1],b=h*p[2],x=Array.isArray(a)?a:[a,a],S=_?[b,b]:y,C=[x[0]*p[2]||1+S[0]/2,x[1]*p[2]||1+S[1]/2],w=`${m}${e||``}`;return(0,G.jsxs)(`svg`,{className:aW([`react-flow__background`,u]),style:{...l,...W$,"--xy-background-color-props":c,"--xy-background-pattern-color-props":o},ref:f,"data-testid":`rf__background`,children:[(0,G.jsx)(`pattern`,{id:w,x:p[0]%y[0],y:p[1]%y[1],width:y[0],height:y[1],patternUnits:`userSpaceOnUse`,patternTransform:`translate(-${C[0]},-${C[1]})`,children:g?(0,G.jsx)(q0,{radius:b/2,className:d}):(0,G.jsx)(K0,{dimensions:S,lineWidth:i,variant:t,className:d})}),(0,G.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${w})`})]})}Z0.displayName=`Background`,(0,s.memo)(Z0);function Q0(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`,children:(0,G.jsx)(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`})})}function $0(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`,children:(0,G.jsx)(`path`,{d:`M0 0h32v4.2H0z`})})}function e2(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`,children:(0,G.jsx)(`path`,{d:`M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z`})})}function t2(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,G.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z`})})}function n2(){return(0,G.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,G.jsx)(`path`,{d:`M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z`})})}function r2({children:e,className:t,...n}){return(0,G.jsx)(`button`,{type:`button`,className:aW([`react-flow__controls-button`,t]),...n,children:e})}var i2=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function a2({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:a,onZoomOut:o,onFitView:s,onInteractiveChange:c,className:l,children:u,position:d=`bottom-left`,orientation:f=`vertical`,"aria-label":p}){let m=VQ(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=BQ(i2,IQ),{zoomIn:y,zoomOut:b,fitView:x}=z$();return(0,G.jsxs)(ZQ,{className:aW([`react-flow__controls`,f===`horizontal`?`horizontal`:`vertical`,l]),position:d,style:e,"data-testid":`rf__controls`,"aria-label":p??v[`controls.ariaLabel`],children:[t&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(r2,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,G.jsx)(Q0,{})}),(0,G.jsx)(r2,{onClick:()=>{b(),o?.()},className:`react-flow__controls-zoomout`,title:v[`controls.zoomOut.ariaLabel`],"aria-label":v[`controls.zoomOut.ariaLabel`],disabled:g,children:(0,G.jsx)($0,{})})]}),n&&(0,G.jsx)(r2,{className:`react-flow__controls-fitview`,onClick:()=>{x(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,G.jsx)(e2,{})}),r&&(0,G.jsx)(r2,{className:`react-flow__controls-interactive`,onClick:()=>{m.setState({nodesDraggable:!h,nodesConnectable:!h,elementsSelectable:!h}),c?.(!h)},title:v[`controls.interactive.ariaLabel`],"aria-label":v[`controls.interactive.ariaLabel`],children:h?(0,G.jsx)(n2,{}):(0,G.jsx)(t2,{})}),u]})}a2.displayName=`Controls`;var o2=(0,s.memo)(a2);function s2({id:e,x:t,y:n,width:r,height:i,style:a,color:o,strokeColor:s,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:p}){let{background:m,backgroundColor:h}=a||{},g=o||m||h;return(0,G.jsx)(`rect`,{className:aW([`react-flow__minimap-node`,{selected:f},l]),x:t,y:n,rx:u,ry:u,width:r,height:i,style:{fill:g,stroke:s,strokeWidth:c},shapeRendering:d,onClick:p?t=>p(t,e):void 0})}var c2=(0,s.memo)(s2),l2=e=>e.nodes.map(e=>e.id),u2=e=>e instanceof Function?e:()=>e;function d2({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=c2,onClick:o}){let s=BQ(l2,IQ),c=u2(t),l=u2(e),u=u2(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,G.jsx)(G.Fragment,{children:s.map(e=>(0,G.jsx)(p2,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function f2({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:o,NodeComponent:s,onClick:c}){let{node:l,x:u,y:d,width:f,height:p}=BQ(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let r=n.internals.userNode,{x:i,y:a}=n.internals.positionAbsolute,{width:o,height:s}=LX(r);return{node:r,x:i,y:a,width:o,height:s}},IQ);return!l||l.hidden||!RX(l)?null:(0,G.jsx)(s,{x:u,y:d,width:f,height:p,style:l.style,selected:!!l.selected,className:r(l),color:t(l),borderRadius:i,strokeColor:n(l),strokeWidth:a,shapeRendering:o,onClick:c,id:l.id})}var p2=(0,s.memo)(f2),m2=(0,s.memo)(d2),h2=200,g2=150,_2=e=>!e.hidden,v2=e=>{let t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?SX(aX(e.nodeLookup,{filter:_2}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},y2=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,b2=(e,t)=>y2(e.viewBB,t.viewBB)&&y2(e.boundingRect,t.boundingRect)&&e.rfId===t.rfId&&e.panZoom===t.panZoom&&e.translateExtent===t.translateExtent&&e.flowWidth===t.flowWidth&&e.flowHeight===t.flowHeight&&e.ariaLabelConfig===t.ariaLabelConfig,x2=`react-flow__minimap-desc`;function S2({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:i=``,nodeBorderRadius:a=5,nodeStrokeWidth:o,nodeComponent:c,bgColor:l,maskColor:u,maskStrokeColor:d,maskStrokeWidth:f,position:p=`bottom-right`,onClick:m,onNodeClick:h,pannable:g=!1,zoomable:_=!1,ariaLabel:v,inversePan:y,zoomStep:b=1,offsetScale:x=5}){let S=VQ(),C=(0,s.useRef)(null),{boundingRect:w,viewBB:T,rfId:E,panZoom:D,translateExtent:O,flowWidth:k,flowHeight:A,ariaLabelConfig:j}=BQ(v2,b2),M=e?.width??h2,N=e?.height??g2,P=w.width/M,F=w.height/N,I=Math.max(P,F),L=I*M,R=I*N,z=x*I,B=w.x-(L-w.width)/2-z,V=w.y-(R-w.height)/2-z,H=L+z*2,ee=R+z*2,te=`${x2}-${E}`,ne=(0,s.useRef)(0),U=(0,s.useRef)();ne.current=I,(0,s.useEffect)(()=>{if(C.current&&D)return U.current=tQ({domNode:C.current,panZoom:D,getTransform:()=>S.getState().transform,getViewScale:()=>ne.current}),()=>{U.current?.destroy()}},[D]),(0,s.useEffect)(()=>{U.current?.update({translateExtent:O,width:k,height:A,inversePan:y,pannable:g,zoomStep:b,zoomable:_})},[g,_,y,b,O,k,A]);let re=m?e=>{let[t,n]=U.current?.pointer(e)||[0,0];m(e,{x:t,y:n})}:void 0,ie=h?(0,s.useCallback)((e,t)=>{let n=S.getState().nodeLookup.get(t).internals.userNode;h(e,n)},[]):void 0,ae=v??j[`minimap.ariaLabel`];return(0,G.jsx)(ZQ,{position:p,style:{...e,"--xy-minimap-background-color-props":typeof l==`string`?l:void 0,"--xy-minimap-mask-background-color-props":typeof u==`string`?u:void 0,"--xy-minimap-mask-stroke-color-props":typeof d==`string`?d:void 0,"--xy-minimap-mask-stroke-width-props":typeof f==`number`?f*I:void 0,"--xy-minimap-node-background-color-props":typeof r==`string`?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n==`string`?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o==`number`?o:void 0},className:aW([`react-flow__minimap`,t]),"data-testid":`rf__minimap`,children:(0,G.jsxs)(`svg`,{width:M,height:N,viewBox:`${B} ${V} ${H} ${ee}`,className:`react-flow__minimap-svg`,role:`img`,"aria-labelledby":te,ref:C,onClick:re,children:[ae&&(0,G.jsx)(`title`,{id:te,children:ae}),(0,G.jsx)(m2,{onClick:ie,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:a,nodeClassName:i,nodeStrokeWidth:o,nodeComponent:c}),(0,G.jsx)(`path`,{className:`react-flow__minimap-mask`,d:`M${B-z},${V-z}h${H+z*2}v${ee+z*2}h${-H-z*2}z
+ M${T.x},${T.y}h${T.width}v${T.height}h${-T.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}S2.displayName=`MiniMap`,(0,s.memo)(S2);var C2=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,w2={[gQ.Line]:`right`,[gQ.Handle]:`bottom-right`};function T2({nodeId:e,position:t,variant:n=gQ.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:c=10,minHeight:l=10,maxWidth:u=Number.MAX_VALUE,maxHeight:d=Number.MAX_VALUE,keepAspectRatio:f=!1,resizeDirection:p,autoScale:m=!0,shouldResize:h,onResizeStart:g,onResize:_,onResizeEnd:v}){let y=i1(),b=typeof e==`string`?e:y,x=VQ(),S=(0,s.useRef)(null),C=n===gQ.Handle,w=BQ((0,s.useCallback)(C2(C&&m),[C,m]),IQ),T=(0,s.useRef)(null),E=t??w2[n];(0,s.useEffect)(()=>{if(!(!S.current||!b))return T.current||=DQ({domNode:S.current,nodeId:b,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=x.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=x.getState(),o=[],s={x:e.x,y:e.y},c=r.get(b);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=PZ([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...zX({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.push(...u),s.x=e.x?Math.max(t[0]*n,e.x):void 0,s.y=e.y?Math.max(t[1]*l,e.y):void 0}if(s.x!==void 0&&s.y!==void 0){let e={id:b,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:b,type:`dimensions`,resizing:!0,setAttributes:p?p===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:b,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};x.getState().triggerNodeChanges([n])}}),T.current.update({controlPosition:E,boundaries:{minWidth:c,minHeight:l,maxWidth:u,maxHeight:d},keepAspectRatio:f,resizeDirection:p,onResizeStart:g,onResize:_,onResizeEnd:v,shouldResize:h}),()=>{T.current?.destroy()}},[E,c,l,u,d,f,g,_,v,h]);let D=E.split(`-`);return(0,G.jsx)(`div`,{className:aW([`react-flow__resize-control`,`nodrag`,...D,n,r]),ref:S,style:{...i,scale:w,...o&&{[C?`backgroundColor`:`borderColor`]:o}},children:a})}(0,s.memo)(T2);var E2=204,D2=96,O2=84,k2={input:Le,runtime:W,model:ge,capabilities:Ve,output:ie};function A2(e,t=34){return e?e.length<=t?e:`${e.slice(0,t)}…`:`-`}function j2(e){if(!e)return`未绑定模型`;let t=e.split(`:`);return(t[0]===`model`&&t.length>=4?t.slice(2,-1).join(`:`):e).replace(/-(\d+)$/,`.$1`).replace(/^glm/i,`GLM`).replace(/^gpt/i,`GPT`).replace(/^qwen/i,`Qwen`).replace(/^deepseek/i,`DeepSeek`)}function M2(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?`未知时间`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function N2(e){return e===`COMPLETED`||e===`SUCCEEDED`?`成功`:e===`RUNNING`?`运行中`:e===`FAILED`?`失败`:e===`PAUSED`?`已暂停`:e||`未知`}function P2({data:e}){let t=k2[e.icon];return(0,G.jsxs)(`div`,{className:`pipeline-node-card`,title:e.fullTitle||e.title,children:[(0,G.jsx)(f1,{id:`top`,type:`target`,position:$.Top}),(0,G.jsx)(f1,{id:`top-out`,type:`source`,position:$.Top}),(0,G.jsx)(f1,{id:`right`,type:`source`,position:$.Right}),(0,G.jsx)(f1,{id:`right-in`,type:`target`,position:$.Right}),(0,G.jsx)(f1,{id:`bottom`,type:`source`,position:$.Bottom}),(0,G.jsx)(f1,{id:`bottom-in`,type:`target`,position:$.Bottom}),(0,G.jsx)(f1,{id:`left`,type:`target`,position:$.Left}),(0,G.jsx)(f1,{id:`left-out`,type:`source`,position:$.Left}),(0,G.jsx)(`span`,{className:`pipeline-node-icon`,children:(0,G.jsx)(t,{size:15})}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsx)(`small`,{children:e.subtitle})]})]})}var F2={pipeline:P2};function I2(e,t){let n=Math.max(560,t-96),r=Math.max(1,Math.min(n>=1120||n>=720?3:2,e.length)),i=r*E2+(r-1)*O2,a=Math.max(48,(Math.max(t,560)-i)/2),o=e.map((e,t)=>{let n=Math.floor(t/r),i=t%r,o=n%2==0?i:r-1-i;return{row:n,column:o,x:a+o*288,y:56+n*172}});return{nodes:e.map((e,t)=>({id:e.id,type:`pipeline`,position:{x:o[t].x,y:o[t].y},data:{title:e.title,subtitle:e.subtitle,icon:e.icon,fullTitle:e.fullTitle||e.title},style:{width:E2,height:D2}})),edges:e.slice(1).map((t,n)=>{let r=o[n],i=o[n+1],a=r.row!==i.row,s=i.column>r.column;return{id:`edge-${e[n].id}-${t.id}`,source:e[n].id,target:t.id,sourceHandle:a?`bottom`:s?`right`:`left-out`,targetHandle:a?`top`:s?`left`:`right-in`,type:`smoothstep`,label:t.incomingLabel,markerEnd:{type:ZY.ArrowClosed,width:14,height:14}}})}}function L2(){let e=(0,s.useRef)(null),[t,n]=(0,s.useState)(960);return(0,s.useLayoutEffect)(()=>{let t=e.current;if(!t)return;let r=e=>{e>0&&n(e)};r(t.getBoundingClientRect().width);let i=new ResizeObserver(e=>{r(e[0]?.contentRect.width||0)});return i.observe(t),()=>i.disconnect()},[]),{containerRef:e,width:t}}function R2({steps:e}){let{containerRef:t,width:n}=L2(),[r,i]=(0,s.useState)(null),a=(0,s.useMemo)(()=>I2(e,n),[e,n]);return(0,s.useEffect)(()=>{r&&requestAnimationFrame(()=>r.fitView({padding:.16,duration:260}))},[a,r]),(0,G.jsx)(`div`,{ref:t,className:`orchestration-graph`,role:`application`,"aria-label":`执行链路画布`,"data-layout":`adaptive-serpentine`,"data-background":`plain`,children:(0,G.jsx)(G0,{nodes:a.nodes,edges:a.edges,nodeTypes:F2,onInit:i,fitView:!0,fitViewOptions:{padding:.16},minZoom:.55,maxZoom:1.35,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,selectionOnDrag:!1,proOptions:{hideAttribution:!0},children:(0,G.jsx)(o2,{showFitView:!1,position:`bottom-right`,children:(0,G.jsx)(r2,{"aria-label":`适应画布`,title:`适应画布`,onClick:()=>r?.fitView({padding:.16,duration:260}),children:(0,G.jsx)(Pe,{size:14})})})})})}function z2({currentAgentId:e,agents:t,onSelectAgent:n,onCreate:r}){let[i,a]=(0,s.useState)(null),[o,c]=(0,s.useState)([]),[l,u]=(0,s.useState)([]);(0,s.useEffect)(()=>{Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]).then(([e,t])=>{let n=e.items||[],r=t?.items||[];u([...n.filter(e=>e.kind!==`model`||e.source===`local`||e.source===`market`),...r])}).catch(()=>{})},[]),(0,s.useEffect)(()=>{if(!e){a(null),c([]);return}let t=!1;return Promise.all([g(`/api/v1/agents/${encodeURIComponent(e)}`).then(e=>e.json()),g(`/api/v1/runs?limit=200`).then(e=>e.json()).catch(()=>({items:[]}))]).then(([n,r])=>{t||(a(n.draft||null),c((r.items||[]).filter(t=>t.agentId===e)))}).catch(()=>{t||(a(null),c([]))}),()=>{t=!0}},[e]);let d=i?.spec?.bindings||{},f=i?.spec?.runtime?.type||i?.metadata?.labels?.[`agentkit.ksyun.com/framework`]||`runtime`,p=i?.spec?.execution?.strategy||`direct`,m=l.find(e=>e.resourceId===d.modelProfileId),h=(d.tools?.length||0)+(d.mcpServers?.length||0)+(d.skills?.length||0),_=o.slice(-5).reverse(),v=(0,s.useMemo)(()=>{let e=f===`codex`?`Codex Runtime`:f===`adk`?`ADK Runtime`:f===`langgraph`?`LangGraph Runtime`:`${f} Runtime`,t=m?.displayName||m?.name||j2(d.modelProfileId),n=[{id:`input`,icon:`input`,title:`任务输入`,subtitle:`用户消息与会话上下文`},{id:`runtime`,icon:`runtime`,title:e,fullTitle:`${f} RuntimeAdapter`,subtitle:`${p} · 本地执行`,incomingLabel:`调度`},{id:`model`,icon:`model`,title:A2(t,24),fullTitle:d.modelProfileId?`${t} · ${d.modelProfileId}`:t,subtitle:`模型配置`,incomingLabel:`调用模型`}];return h>0&&n.push({id:`capabilities`,icon:`capabilities`,title:`${h} 个能力绑定`,subtitle:`${d.tools?.length||0} Tool · ${d.mcpServers?.length||0} MCP · ${d.skills?.length||0} Skill`,incomingLabel:`加载能力`}),n.push({id:`output`,icon:`output`,title:`结构化输出`,subtitle:`返回会话并写入 Trace`,incomingLabel:`写回结果`}),n},[d,h,m?.displayName,f,p]);return(0,G.jsxs)(`div`,{className:`page-container orchestration-page`,"data-layout":`document`,children:[!i&&(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:r,children:[(0,G.jsx)(Qe,{size:15}),(0,G.jsx)(`span`,{children:`创建 Agent`})]})}),i?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{className:`stat-strip compact-summary`,"aria-label":`编排概览`,children:[(0,G.jsxs)(`div`,{title:i.metadata?.id,children:[(0,G.jsx)(`span`,{children:`Revision`}),(0,G.jsxs)(`strong`,{children:[`r`,i.metadata?.revision||1]})]}),(0,G.jsxs)(`div`,{title:`${p} · Edge`,children:[(0,G.jsx)(`span`,{children:`Runtime`}),(0,G.jsx)(`strong`,{children:f})]}),(0,G.jsxs)(`div`,{title:`${d.tools?.length||0} Tool · ${d.mcpServers?.length||0} MCP · ${d.skills?.length||0} Skill`,children:[(0,G.jsx)(`span`,{children:`能力绑定`}),(0,G.jsx)(`strong`,{children:h})]}),(0,G.jsxs)(`div`,{className:`emphasis`,children:[(0,G.jsx)(`span`,{children:`最近调度`}),(0,G.jsx)(`strong`,{children:_[0]?N2(_[0].status):`暂无`})]})]}),(0,G.jsxs)(`div`,{className:`orchestration-workbench`,children:[(0,G.jsxs)(`section`,{className:`orchestration-canvas block`,children:[(0,G.jsxs)(`div`,{className:`section-heading`,children:[(0,G.jsx)(Ct,{name:i.metadata?.name||`Agent`,appearance:i.metadata?.appearance,size:`md`}),(0,G.jsx)(`div`,{className:`section-heading-copy`,children:(0,G.jsx)(`h2`,{title:i.metadata?.id,children:i.metadata?.name})})]}),(0,G.jsx)(R2,{steps:v})]}),(0,G.jsxs)(`aside`,{className:`orchestration-aside block`,children:[(0,G.jsxs)(`section`,{className:`orchestration-aside-section`,children:[(0,G.jsx)(`div`,{className:`aside-title`,children:`路由与约束`}),(0,G.jsxs)(`dl`,{children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision`}),(0,G.jsxs)(`dd`,{children:[`r`,i.metadata?.revision]})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`执行位置`}),(0,G.jsx)(`dd`,{children:`Edge · Local`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:f})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`策略`}),(0,G.jsx)(`dd`,{children:p})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`最大步骤`}),(0,G.jsx)(`dd`,{children:i.spec?.execution?.maxSteps||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`云端`}),(0,G.jsx)(`dd`,{children:`未连接`})]})]})]}),(0,G.jsx)(`div`,{className:`aside-divider`}),(0,G.jsxs)(`section`,{className:`orchestration-aside-section`,children:[(0,G.jsx)(`div`,{className:`aside-title`,children:`最近调度`}),(0,G.jsx)(`div`,{className:`dispatch-log`,children:_.length===0?(0,G.jsx)(`div`,{className:`dispatch-log-empty`,children:`当前 Agent 还没有运行记录`}):_.map(e=>(0,G.jsxs)(`div`,{className:`dispatch-log-row`,children:[(0,G.jsx)(`span`,{className:`dispatch-status ${String(e.status).toLowerCase()}`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:A2(e.input||`运行`)}),(0,G.jsxs)(`small`,{children:[M2(e.startedAt),` · `,N2(e.status)]})]})]},e.id))})]})]})]})]}):(0,G.jsxs)(`div`,{className:`orchestration-empty empty-state block`,children:[(0,G.jsx)(`span`,{className:`empty-icon`,children:(0,G.jsx)(Ve,{size:24})}),(0,G.jsx)(`h2`,{children:`先选择或创建一个 Agent`}),(0,G.jsx)(`p`,{children:`编排视图会读取 Agent Revision、RuntimeRef 和能力绑定生成真实执行链路。`})]})]})}var B2=new Set([`QUEUED`,`RUNNING`]);function V2(e){if(!e)return`-`;let t=new Date(e);return Number.isNaN(t.getTime())?`-`:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function H2(e){return e==null?`-`:e<1e3?`${e} ms`:`${(e/1e3).toFixed(2)} s`}function U2(e){if(!e.completedAt)return B2.has(e.status)?`进行中`:`-`;let t=new Date(e.completedAt).getTime()-new Date(e.createdAt).getTime();return Number.isFinite(t)&&t>=0?H2(t):`-`}function W2(e){return e===`PASSED`||e===`SUCCEEDED`?`success`:B2.has(e)?`info`:e===`CANCELLED`||e===`INTERRUPTED`?`warning`:`danger`}function G2(e){return[`ERROR`,`CANCELLED`,`UNAVAILABLE`].includes(e.targetRun.status)?e.targetRun.status:e.metrics.every(e=>!e.required||e.status===`PASS`)?`PASSED`:`FAILED`}async function K2(e,t){try{let n=await e.json();return n?.error?.message||n?.detail?.message||t}catch{return t}}var q2=[{id:`response_contract@v1`,label:`响应契约`},{id:`runtime_budget@v1`,label:`运行预算`},{id:`tool_trajectory@v1`,label:`工具轨迹`},{id:`reference_match@v1`,label:`参考答案匹配`}],J2=q2.slice(0,3).map(e=>e.id);function Y2({refreshTick:e,onOpenRun:t=e=>window.history.pushState(null,``,`#/evaluations/${encodeURIComponent(e)}`)}){let n=(0,s.useRef)(null),r=(0,s.useRef)(0),[i,a]=(0,s.useState)([]),[o,c]=(0,s.useState)({builds:[]}),[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)(!0),[p,m]=(0,s.useState)(``),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(``),[w,T]=(0,s.useState)(!1),[E,D]=(0,s.useState)(``),[k,A]=(0,s.useState)(`a2a`),[j,M]=(0,s.useState)(``),[N,P]=(0,s.useState)(``),[F,I]=(0,s.useState)(120),[L,R]=(0,s.useState)(!1),[z,B]=(0,s.useState)(()=>[...J2]),V=(0,s.useCallback)(async()=>{let e=++r.current;n.current?.abort();let t=new AbortController;n.current=t;try{let n=await g(`/api/v1/evaluation-runs`,{signal:t.signal});if(!n.ok)throw Error(await K2(n,`评测任务加载失败`));let i=await n.json();e===r.current&&(a(i.items||[]),m(``))}catch(n){if(t.signal.aborted)return;e===r.current&&m(n instanceof Error?n.message:`评测任务加载失败`)}finally{e===r.current&&f(!1)}},[]),H=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/evaluation-targets`),g(`/api/v1/agents`)]);if(!e.ok)return;let[n,r]=await Promise.all([e.json(),t.ok?t.json():Promise.resolve({items:[]})]);c({builds:n.builds||[]}),u(r.items||[])}catch{}},[]);(0,s.useEffect)(()=>{f(!0),V(),H()},[H,V,e]),(0,s.useEffect)(()=>{if(!i.some(e=>B2.has(e.status)))return;let e=()=>{document.visibilityState===`visible`&&V()},t=window.setInterval(e,1e3);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[V,i]),(0,s.useEffect)(()=>()=>n.current?.abort(),[]);function ee(e){if(A(e),e!==`studio_build`){P(``);return}let t=l.find(e=>o.builds.some(t=>t.agentId===e.metadata.id))?.metadata.id||o.builds[0]?.agentId||``;M(t),P(o.builds.find(e=>e.agentId===t)?.id||``)}let te=(0,s.useMemo)(()=>o.builds.filter(e=>e.agentId===j),[o.builds,j]);(0,s.useEffect)(()=>{k===`studio_build`&&M(e=>e&&o.builds.some(t=>t.agentId===e)?e:l.find(e=>o.builds.some(t=>t.agentId===e.metadata.id))?.metadata.id||o.builds[0]?.agentId||``)},[l,o.builds,k]),(0,s.useEffect)(()=>{k===`studio_build`&&P(e=>te.some(t=>t.id===e)?e:te[0]?.id||``)},[te,k]);async function ne(e){e.preventDefault(),y(!0),x(``);try{let e=await g(`/api/v1/evaluations`,{method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":`evaluation-${Date.now()}`},body:JSON.stringify({evalsetFile:S.trim(),target:{kind:k,locator:N.trim()},config:{timeoutSeconds:F,failFast:L,dataPolicy:`local_only`,evaluators:z}})});if(!e.ok)throw Error(await K2(e,`评测任务创建失败`));_(!1),x(`评测任务已创建`),J(`评测任务已创建`,S.trim()),await V()}catch(e){J(`评测任务创建失败`,e instanceof Error?e.message:`请稍后重试`,`error`)}finally{y(!1)}}async function U(e){T(!0),D(``);let t=new FormData;t.append(`file`,e);try{let e=await g(`/api/v1/evaluation-files`,{method:`POST`,body:t});if(!e.ok)throw Error(await K2(e,`EvalSet 文件导入失败`));let n=await e.json();C(n.path||``)}catch(e){D(e instanceof Error?e.message:`EvalSet 文件导入失败`)}finally{T(!1)}}let re=(0,s.useMemo)(()=>[{id:`evalset`,header:`EvalSet / Run`,minWidth:260,cell:e=>(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`strong`,{children:e.evalset.name||`未命名 EvalSet`}),(0,G.jsx)(`span`,{className:`resource-origin mono`,children:e.id})]})},{id:`target`,header:`Target`,minWidth:180,cell:e=>(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{children:e.target.label||e.target.kind||`-`}),(0,G.jsx)(`span`,{className:`resource-origin mono`,children:e.target.kind||`-`})]})},{id:`status`,header:`状态`,width:120,cell:e=>(0,G.jsx)(`span`,{className:`status-badge ${W2(e.status)}`,children:e.status})},{id:`progress`,header:`进度 / Case`,minWidth:150,cell:e=>e.summary?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`strong`,{children:[e.summary.passedCases,` / `,e.summary.totalCases]}),(0,G.jsx)(`span`,{className:`resource-origin`,children:`通过`})]}):e.progress?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`strong`,{children:[e.progress.current,` / `,e.progress.total]}),(0,G.jsx)(`span`,{className:`resource-origin`,children:e.progress.caseId||`执行中`})]}):(0,G.jsx)(`span`,{children:`等待开始`})},{id:`createdAt`,header:`创建时间`,minWidth:150,cell:e=>V2(e.createdAt)},{id:`duration`,header:`耗时`,width:100,cell:U2}],[]),ie=i.filter(e=>B2.has(e.status)).length,ae=i.filter(e=>e.hasReport).filter(e=>e.status===`PASSED`).length,oe=i.filter(e=>[`FAILED`,`ERROR`,`INTERRUPTED`].includes(e.status)).length,se=k===`a2a`?`Agent 地址`:k===`local_source`?`Agent 源码目录`:`Build`;return(0,G.jsxs)(`div`,{className:`page-container evaluation-page`,"data-layout":`data`,"data-scroll-mode":`data`,children:[(0,G.jsx)(Sd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>_(!0),children:[(0,G.jsx)(Xe,{size:15}),(0,G.jsx)(`span`,{children:`新建评测`})]})}),b&&(0,G.jsx)(`p`,{className:`sr-only`,role:`status`,children:b}),(0,G.jsxs)(`section`,{className:`evaluation-page__metrics`,"aria-label":`评测汇总`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`全部`}),(0,G.jsx)(`strong`,{children:i.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`运行中`}),(0,G.jsx)(`strong`,{children:ie})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`已通过`}),(0,G.jsx)(`strong`,{children:ae})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`异常`}),(0,G.jsx)(`strong`,{children:oe})]})]}),(0,G.jsxs)(`section`,{className:`evaluation-page__run-list`,"aria-label":`评测运行`,children:[(0,G.jsx)(`div`,{className:`evaluation-page__panel-header`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`评测运行`}),(0,G.jsxs)(`span`,{children:[i.length,` 个任务`]})]})}),(0,G.jsx)(_m,{columns:re,data:i,getRowId:e=>e.id,caption:`评测运行列表`,minWidth:980,loading:d,error:p,onRetry:()=>void V(),onRowActivate:e=>t(e.id),rowAriaLabel:e=>`打开评测 ${e.evalset.name||e.id}`,empty:{icon:(0,G.jsx)(O,{size:22}),title:`还没有评测任务`,description:`创建评测后即可在这里查看结果。`}})]}),h&&(0,G.jsx)(BD,{title:`新建评测`,subtitle:`选择 EvalSet、Target 和评估器。任务创建后将在后台执行。`,wide:!0,closeDisabled:v,onClose:()=>_(!1),footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`drawer-footer-spacer`}),(0,G.jsx)(`button`,{className:`button tertiary`,type:`button`,onClick:()=>_(!1),disabled:v,children:`取消`}),(0,G.jsx)(`button`,{className:`button accent`,type:`submit`,form:`evaluation-create-form`,disabled:v||w||!S.trim()||!N.trim()||!z.length,children:v?`正在创建`:`开始评测`})]}),children:(0,G.jsxs)(`form`,{id:`evaluation-create-form`,className:`evaluation-page__create form-grid two-columns`,onSubmit:ne,children:[(0,G.jsxs)(Y,{className:`evaluation-page__field--wide`,label:`EvalSet 文件`,htmlFor:`evaluation-evalset`,requirement:`required`,children:[(0,G.jsxs)(`div`,{className:`evaluation-page__evalset-picker`,children:[(0,G.jsx)(`input`,{id:`evaluation-evalset`,className:`sr-only`,type:`file`,accept:`.yaml,.yml,.json,application/json,application/yaml,text/yaml`,"aria-label":`选择 EvalSet 文件`,disabled:w,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&U(t)}}),(0,G.jsxs)(`label`,{className:`button secondary`,htmlFor:`evaluation-evalset`,children:[(0,G.jsx)(we,{size:15}),(0,G.jsx)(`span`,{children:w?`正在导入`:`选择文件`})]}),(0,G.jsx)(`span`,{className:`evaluation-page__evalset-path`,title:S,children:S||`尚未选择 EvalSet`})]}),E&&(0,G.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:E})]}),(0,G.jsx)(Y,{label:`Target 类型`,requirement:`required`,children:(0,G.jsx)(Fh,{ariaLabel:`Target 类型`,value:k,options:[{value:`a2a`,label:`A2A Agent`},{value:`local_source`,label:`本地源码`},{value:`studio_build`,label:`Studio Build`}],onValueChange:e=>ee(e)})}),k===`studio_build`&&(0,G.jsx)(Y,{label:`Agent`,htmlFor:`evaluation-agent`,requirement:`required`,children:(0,G.jsx)(Fh,{id:`evaluation-agent`,ariaLabel:`Studio Agent`,value:j,placeholder:`请选择 Agent`,options:l.map(e=>({value:e.metadata.id,label:e.metadata.name,description:o.builds.some(t=>t.agentId===e.metadata.id)?e.metadata.id:`${e.metadata.id} · 需先构建`,disabled:!o.builds.some(t=>t.agentId===e.metadata.id)})),disabled:!l.some(e=>o.builds.some(t=>t.agentId===e.metadata.id)),onValueChange:M})}),(0,G.jsx)(Y,{label:se,htmlFor:`evaluation-locator`,requirement:`required`,children:k===`studio_build`?(0,G.jsx)(Fh,{id:`evaluation-locator`,ariaLabel:`Studio Build`,value:N,placeholder:`暂无成功 Build`,options:te.map(e=>({value:e.id,label:e.id,description:e.runtime})),disabled:!te.length,onValueChange:P}):(0,G.jsx)(`input`,{id:`evaluation-locator`,value:N,onChange:e=>P(e.target.value),required:!0,placeholder:k===`a2a`?`https://agent.example.test/a2a`:`.`})}),(0,G.jsx)(Y,{label:`超时(秒)`,htmlFor:`evaluation-timeout`,requirement:`required`,children:(0,G.jsx)(`input`,{id:`evaluation-timeout`,type:`number`,min:1,max:3600,value:F,onChange:e=>I(Number(e.target.value)),required:!0})}),(0,G.jsx)(Y,{label:`运行策略`,children:(0,G.jsxs)(`label`,{className:`checkbox-row evaluation-page__fail-fast`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:L,onChange:e=>R(e.target.checked)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`Fail fast`}),(0,G.jsx)(`small`,{children:`首个失败 Case 后停止`})]})]})}),(0,G.jsxs)(Y,{className:`evaluation-page__field--wide`,label:`评估器`,requirement:`required`,children:[(0,G.jsx)(`div`,{className:`evaluation-page__evaluator-options`,role:`group`,"aria-label":`评估器`,children:q2.map(e=>(0,G.jsxs)(`label`,{className:`checkbox-row`,children:[(0,G.jsx)(`input`,{type:`checkbox`,"aria-label":e.label,checked:z.includes(e.id),onChange:t=>B(n=>t.target.checked?[...n,e.id]:n.filter(t=>t!==e.id))}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.id})]})]},e.id))}),!z.length&&(0,G.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:`至少选择一个评估器`})]})]})})]})}function X2(e){return typeof e==`string`?e:e==null?`-`:JSON.stringify(e,null,2)}function Z2(e,t,n,r){let i=n.slice(0,t).filter(t=>t.type===e.type).length;return r.filter(t=>t.evidence?.assertion===e.type)[i]}function Q2({runId:e,onBack:t}){let n=(0,s.useRef)(null),[r,i]=(0,s.useState)(null),[a,o]=(0,s.useState)(``),[c,l]=(0,s.useState)(!0),[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(!1),m=(0,s.useCallback)(async()=>{n.current?.abort();let t=new AbortController;n.current=t;try{let n=await g(`/api/v1/evaluation-runs/${encodeURIComponent(e)}`,{signal:t.signal});if(!n.ok)throw Error(await K2(n,`评测详情加载失败`));let r=await n.json();i(r),o(e=>r.report?.caseRuns.some(t=>t.caseId===e)?e:r.report?.caseRuns[0]?.caseId||``),d(``)}catch(e){if(t.signal.aborted)return;d(e instanceof Error?e.message:`评测详情加载失败`)}finally{t.signal.aborted||l(!1)}},[e]);(0,s.useEffect)(()=>(l(!0),m(),()=>n.current?.abort()),[m]),(0,s.useEffect)(()=>{if(!r||!B2.has(r.status))return;let e=()=>{document.visibilityState===`visible`&&m()},t=window.setInterval(e,1e3);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),document.removeEventListener(`visibilitychange`,e)}},[m,r]);let h=(0,s.useMemo)(()=>r?.report?.caseRuns.find(e=>e.caseId===a)||null,[a,r]),_=(0,s.useMemo)(()=>new Map((r?.report?.spec.evalset.cases||[]).map(e=>[e.id,e])),[r]),v=h?_.get(h.caseId):void 0;async function y(){if(!(!r||!B2.has(r.status)||f)){p(!0);try{let e=await g(`/api/v1/operations/${encodeURIComponent(r.operationId)}:cancel`,{method:`POST`});if(!e.ok)throw Error(await K2(e,`取消评测失败`));J(`已提交取消请求`,r.evalset.name||r.id),await m()}catch(e){J(`取消评测失败`,e instanceof Error?e.message:`请稍后重试`,`error`)}finally{p(!1)}}}return(0,G.jsxs)(`div`,{className:`page-container evaluation-page evaluation-detail-page`,"data-layout":`data`,"data-scroll-mode":`workbench`,children:[(0,G.jsxs)(`header`,{className:`page-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h1`,{children:r?.evalset.name||`评测详情`}),(0,G.jsx)(`p`,{className:`mono`,children:e})]}),(0,G.jsxs)(`div`,{className:`header-actions`,children:[(0,G.jsxs)(`button`,{className:`button tertiary`,type:`button`,onClick:t,children:[(0,G.jsx)(A,{size:15}),(0,G.jsx)(`span`,{children:`返回评测列表`})]}),(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void m(),children:[(0,G.jsx)(et,{size:15}),(0,G.jsx)(`span`,{children:`刷新`})]}),r&&B2.has(r.status)&&(0,G.jsxs)(`button`,{className:`button danger`,type:`button`,onClick:()=>void y(),disabled:f,children:[(0,G.jsx)(ut,{size:14}),(0,G.jsx)(`span`,{children:f?`正在取消`:`取消评测`})]})]})]}),c&&!r?(0,G.jsxs)(`div`,{className:`evaluation-page__detail-empty`,children:[(0,G.jsx)(O,{size:22}),(0,G.jsx)(`strong`,{children:`正在加载评测详情`})]}):u&&!r?(0,G.jsxs)(`div`,{className:`evaluation-page__detail-empty`,role:`alert`,children:[(0,G.jsx)(`strong`,{children:`评测详情加载失败`}),(0,G.jsx)(`span`,{children:u}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>void m(),children:`重试`})]}):r?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{className:`evaluation-detail-page__overview`,"aria-label":`评测运行概览`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`状态`}),(0,G.jsx)(`strong`,{children:(0,G.jsx)(`span`,{className:`status-badge ${W2(r.status)}`,children:r.status})}),(0,G.jsx)(`small`,{children:r.error?.message||`任务状态`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`进度`}),(0,G.jsx)(`strong`,{children:r.progress?`${r.progress.current} / ${r.progress.total}`:r.summary?`${r.summary.passedCases} / ${r.summary.totalCases}`:`等待开始`}),(0,G.jsx)(`small`,{children:r.progress?.caseId||(r.hasReport?`通过 Case`:`尚未执行 Case`)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`Target`}),(0,G.jsx)(`strong`,{children:r.target.label||r.target.kind||`-`}),(0,G.jsx)(`small`,{children:r.target.kind||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`耗时`}),(0,G.jsx)(`strong`,{children:U2(r)}),(0,G.jsx)(`small`,{children:V2(r.createdAt)})]})]}),!r.report&&(0,G.jsxs)(`section`,{className:`evaluation-detail-page__pending`,children:[(0,G.jsx)(O,{size:20}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:B2.has(r.status)?`评测正在后台执行`:`该任务没有可用报告`}),(0,G.jsx)(`span`,{children:r.progress?.caseId?`当前 Case:${r.progress.caseId}`:r.error?.message||`等待运行状态更新。`})]})]}),r.report&&(0,G.jsxs)(`section`,{className:`evaluation-detail-page__report`,children:[(0,G.jsxs)(`div`,{className:`evaluation-page__panel-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`评测报告`}),(0,G.jsxs)(`span`,{children:[r.report.caseRuns.length,` 个 Case`]})]}),(0,G.jsx)(`span`,{className:`status-badge ${W2(r.report.status)}`,children:r.report.status})]}),(0,G.jsxs)(`dl`,{className:`evaluation-page__snapshot`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Target`}),(0,G.jsx)(`dd`,{children:r.report.spec.target.kind})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Runtime`}),(0,G.jsx)(`dd`,{children:r.report.spec.target.runtime||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision Digest`}),(0,G.jsx)(`dd`,{className:`mono`,children:r.report.spec.target.revisionDigest})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Entrypoint`}),(0,G.jsx)(`dd`,{className:`mono`,children:r.report.spec.target.entrypoint})]})]}),(0,G.jsxs)(`section`,{className:`evaluation-page__dataset`,"aria-labelledby":`evaluation-dataset-heading`,children:[(0,G.jsxs)(`div`,{className:`evaluation-page__dataset-heading`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{id:`evaluation-dataset-heading`,children:`数据集快照`}),typeof r.report.spec.evalset.metadata?.description==`string`&&(0,G.jsx)(`p`,{children:r.report.spec.evalset.metadata.description})]}),(0,G.jsx)(`span`,{children:r.report.spec.evalset.schemaVersion||`ksadk.eval/v1`})]}),(0,G.jsxs)(`dl`,{className:`evaluation-page__dataset-summary`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`名称`}),(0,G.jsx)(`dd`,{children:r.report.spec.evalset.name})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Case`}),(0,G.jsx)(`dd`,{children:r.report.spec.evalset.cases?.length??r.report.caseRuns.length})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`来源格式`}),(0,G.jsx)(`dd`,{children:r.report.spec.evalset.sourceFormat||`-`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Content Digest`}),(0,G.jsx)(`dd`,{className:`mono`,children:r.report.spec.evalset.contentDigest||`-`})]})]})]}),(0,G.jsxs)(`div`,{className:`evaluation-page__case-layout`,children:[(0,G.jsx)(`div`,{className:`evaluation-page__case-list`,"aria-label":`Case 列表`,children:r.report.caseRuns.map(e=>{let t=G2(e),n=_.get(e.caseId)?.turns.at(-1)?.input;return(0,G.jsxs)(`button`,{type:`button`,className:e.caseId===a?`active`:``,onClick:()=>o(e.caseId),children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.caseId}),(0,G.jsx)(`small`,{className:`evaluation-page__case-preview`,children:n||`Attempt ${e.attempt}`})]}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`span`,{className:`status-badge ${W2(t)}`,children:t}),(0,G.jsx)(`small`,{children:H2(e.targetRun.durationMs)})]})]},e.caseId)})}),(0,G.jsx)(`div`,{className:`evaluation-page__case-detail`,children:h?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`输入与预期`}),v?(0,G.jsx)(`div`,{className:`evaluation-page__turns`,children:v.turns.map((e,t)=>(0,G.jsxs)(`article`,{children:[(0,G.jsxs)(`strong`,{children:[`Turn `,t+1]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`输入`}),(0,G.jsx)(`pre`,{children:e.input})]}),e.expectedOutput!==void 0&&e.expectedOutput!==null&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`期望输出`}),(0,G.jsx)(`pre`,{children:e.expectedOutput})]}),!!e.expectedTools?.length&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{children:`期望工具`}),(0,G.jsx)(`div`,{className:`evaluation-page__expected-tools`,children:e.expectedTools.map((e,n)=>(0,G.jsx)(`code`,{children:String(e.name||X2(e))},`${t}-${n}`))})]})]},`${v.id}-turn-${t}`))}):(0,G.jsx)(`p`,{className:`evaluation-page__muted`,children:`该报告没有保存 Case 输入快照。`})]}),!!v?.assertions?.length&&(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`断言与评估结果`}),(0,G.jsx)(`div`,{className:`evaluation-page__assertions`,children:v.assertions.map((e,t,n)=>{let r=Z2(e,t,n,h.metrics);return(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.type}),(0,G.jsx)(`small`,{children:e.required===!1?`可选`:`必需`})]}),(0,G.jsx)(`code`,{children:X2(e.value)}),(0,G.jsx)(`span`,{className:`status-badge ${W2(r?.status===`PASS`?`PASSED`:r?.status||`UNAVAILABLE`)}`,children:r?.status||`-`})]},`${e.type}-${t}`)})})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsxs)(`div`,{className:`evaluation-page__section-title`,children:[(0,G.jsx)(`h3`,{children:`Agent 输出`}),(0,G.jsxs)(`span`,{children:[H2(h.targetRun.durationMs),` · `,h.targetRun.usage?.reported?`${h.targetRun.usage.totalTokens||0} Tokens`:`Token 未上报`]})]}),(0,G.jsx)(`pre`,{children:h.targetRun.output||h.targetRun.errorMessage||`无输出`})]}),(0,G.jsxs)(`section`,{children:[(0,G.jsx)(`h3`,{children:`评估指标`}),(0,G.jsx)(`div`,{className:`evaluation-page__evidence`,children:h.metrics.map(e=>(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`strong`,{children:[e.name,`@`,e.version||`v1`]}),(0,G.jsx)(`span`,{className:`status-badge ${W2(e.status===`PASS`?`PASSED`:e.status)}`,children:e.status}),(0,G.jsx)(`span`,{children:e.score??`-`})]},`${e.name}-${e.version||`v1`}-${e.status}`))})]}),(0,G.jsx)(`section`,{className:`evaluation-page__case-evidence`,children:(0,G.jsxs)(`details`,{children:[(0,G.jsx)(`summary`,{children:`执行证据`}),(0,G.jsx)(`h4`,{children:`TraceRef`}),(0,G.jsx)(`pre`,{children:h.targetRun.traceRef?JSON.stringify(h.targetRun.traceRef,null,2):`未上报 TraceRef`}),!!v&&Object.keys(v.metadata||{}).length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`h4`,{children:`Case Metadata`}),(0,G.jsx)(`pre`,{children:JSON.stringify(v.metadata,null,2)})]})]})})]}):(0,G.jsx)(`div`,{className:`evaluation-page__detail-empty`,children:(0,G.jsx)(`span`,{children:`选择一个 Case 查看详情。`})})})]})]})]}):null]})}var $2=[{value:`system`,label:`跟随系统`,description:`随 macOS 或浏览器切换`,icon:ze},{value:`light`,label:`浅色`,description:`始终使用明亮界面`,icon:dt},{value:`dark`,label:`深色`,description:`始终使用暗色界面`,icon:Be}],e4=[{id:`general`,label:`通用`},{id:`credentials`,label:`模型与凭证`},{id:`cloud`,label:`云端连接`},{id:`runtime`,label:`运行与沙箱`},{id:`about`,label:`关于`}];function t4(e){return e===`workspace`||e===`session`?`工作区`:e===`environment`?`启动环境`:e===`missing`?`未配置`:e}function n4(e){let t=(e||`read-only`).replaceAll(`_`,`-`);return t===`workspace-write`||t===`workspace-write-auto`||t===`full-access`?t:`read-only`}function r4({themePreference:e,onThemePreferenceChange:t,initialSection:n=`general`,onClose:r}){let[i,a]=(0,s.useState)(null),o=y_({resolver:k_(pz),defaultValues:{sandbox:`read-only`,buildAfterCreate:!0,codexProxy:`auto`,cloudRegion:``,cloudBucket:``,cloudAccessKey:``,cloudSecretKey:``,cloudAccountId:``}}),[c,l]=(0,s.useState)([]),[u,d]=(0,s.useState)([]),[f,p]=(0,s.useState)(!1),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(n),y=(0,s.useCallback)(e=>{v(e),document.getElementById(`settings-${e}`)?.scrollIntoView({behavior:`smooth`,block:`start`})},[]);(0,s.useEffect)(()=>{let e=requestAnimationFrame(()=>y(n));return()=>cancelAnimationFrame(e)},[n,y]);let b=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]),n=(e.items||[]).filter(e=>e.kind===`model`);t?.items?.length&&(n=[...n.filter(e=>e.source===`local`||e.source===`market`),...t.items]);let r=[],i=new Set;for(let e of n){let t=e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``;if(!t||i.has(t))continue;i.add(t);let n=t.replace(/^env:\/\//,``),a={configured:!1,source:`missing`};try{a=await g(`/api/v1/credentials/${encodeURIComponent(n)}`).then(e=>e.json())}catch{}r.push({ref:t,name:n,configured:!!a?.configured,source:a?.source||`missing`,model:e})}l(r)}catch{l([])}},[]);(0,s.useEffect)(()=>{(async()=>{try{let e=await g(`/api/v1/system/settings`).then(e=>e.json());a(e),o.reset({sandbox:n4(e.sandbox),buildAfterCreate:e.buildAfterCreate!==!1,codexProxy:e.codexProxy||`auto`,cloudRegion:e.cloudRegion||``,cloudBucket:e.cloudBucket||``})}catch{a({})}await b();try{let e=await g(`/api/v1/system/bootstrap`).then(e=>e.json());d([[`工作区`,e?.workspace?.name||`-`],[`路径`,e?.workspace?.path||`-`],[`API 版本`,e?.apiVersion||`-`]])}catch{d([])}})()},[b,o]);async function x(e){p(!0);try{let t={sandbox:e.sandbox,buildAfterCreate:e.buildAfterCreate,codexProxy:e.codexProxy};e.cloudRegion.trim()&&(t.cloudRegion=e.cloudRegion.trim()),e.cloudBucket.trim()&&(t.cloudBucket=e.cloudBucket.trim()),e.cloudAccessKey.trim()&&(t.cloudAccessKey=e.cloudAccessKey.trim()),e.cloudSecretKey.trim()&&(t.cloudSecretKey=e.cloudSecretKey.trim()),e.cloudAccountId.trim()&&(t.cloudAccountId=e.cloudAccountId.trim());let n=await g(`/api/v1/system/settings`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>null);if(Nb(e,o.setError)){p(!1);return}throw Error(e?.error?.message||`保存失败(${n.status})`)}r(),J(`设置已保存`,`工作区级配置已写入 .agentkit/settings.yaml。`)}catch(e){J(`保存失败`,e.message,`error`)}p(!1)}return(0,G.jsx)(Vg,{...o,children:(0,G.jsxs)(BD,{title:`设置`,subtitle:`工作区级配置,保存到 .agentkit/settings.yaml,重启后仍生效。`,wide:!0,onClose:r,footer:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:r,children:`取消`}),(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:o.handleSubmit(x),disabled:f||i==null,children:[(0,G.jsx)(V,{size:15}),(0,G.jsx)(`span`,{children:f?`保存中`:`保存`})]})]}),children:[(0,G.jsxs)(`div`,{className:`settings-layout`,children:[(0,G.jsx)(`nav`,{className:`settings-section-nav`,"aria-label":`设置分类`,children:e4.map(e=>(0,G.jsx)(`button`,{className:_===e.id?`active`:``,type:`button`,onClick:()=>y(e.id),children:e.label},e.id))}),(0,G.jsxs)(`div`,{className:`settings-sections`,children:[(0,G.jsxs)(`section`,{id:`settings-general`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`外观`}),(0,G.jsx)(`div`,{className:`appearance-options`,role:`radiogroup`,"aria-label":`颜色模式`,children:$2.map(n=>{let r=n.icon;return(0,G.jsxs)(`label`,{className:`appearance-option${e===n.value?` selected`:``}`,children:[(0,G.jsx)(r,{"aria-hidden":`true`}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:n.label}),(0,G.jsx)(`small`,{children:n.description})]}),(0,G.jsx)(`input`,{type:`radio`,name:`studio-theme`,value:n.value,checked:e===n.value,onChange:()=>t(n.value)})]},n.value)})}),(0,G.jsx)(`p`,{className:`appearance-note`,children:`外观仅保存到当前浏览器,并会立即应用到 Studio 与会话工作台。`})]}),(0,G.jsxs)(`section`,{id:`settings-runtime`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`执行与沙箱`}),(0,G.jsx)(Y,{label:`默认执行权限(Codex)`,requirement:`required`,htmlFor:`settingSandbox`,hint:`新 Agent 默认值;会话页可单次覆盖,下一轮对话生效。`,error:o.formState.errors.sandbox?.message,children:(0,G.jsx)(Fh,{id:`settingSandbox`,ariaLabel:`默认执行权限`,value:o.watch(`sandbox`),options:[{value:`read-only`,label:`只读沙箱(不可写)`},{value:`workspace-write`,label:`请求批准(写工作区,每次询问)`},{value:`workspace-write-auto`,label:`替我审批(写工作区,仅风险询问)`},{value:`full-access`,label:`完全访问(不受限读写)`}],onValueChange:e=>o.setValue(`sandbox`,e,{shouldDirty:!0,shouldValidate:!0})})}),(0,G.jsx)(`div`,{className:`studio-form-field`,children:(0,G.jsxs)(`label`,{className:`checkbox-row`,children:[(0,G.jsx)(`input`,{type:`checkbox`,...o.register(`buildAfterCreate`)}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`创建后立即构建`}),(0,G.jsx)(`small`,{children:`新建 Agent 保存后自动构建并进入会话`})]})]})})]}),(0,G.jsxs)(`section`,{id:`settings-credentials`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`凭证`}),c.length===0?(0,G.jsx)(`div`,{className:`settings-empty`,children:`暂无凭证`}):c.map(e=>(0,G.jsxs)(`div`,{className:`settings-credential`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsx)(`small`,{children:e.configured?`已配置 · ${t4(e.source)}`:`未配置`})]}),(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>h(e.model),children:`配置`})]},e.ref))]}),(0,G.jsxs)(`section`,{id:`settings-runtime-proxy`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`运行时`}),(0,G.jsx)(Y,{label:`Codex Responses→Chat 代理`,requirement:`required`,htmlFor:`settingCodexProxy`,hint:`非原生 Responses 上游可启用兼容代理。`,error:o.formState.errors.codexProxy?.message,children:(0,G.jsx)(Fh,{id:`settingCodexProxy`,ariaLabel:`Codex Responses 代理`,value:o.watch(`codexProxy`),options:[{value:`auto`,label:`自动(探测)`},{value:`forced`,label:`强制启用`},{value:`direct`,label:`强制直连`}],onValueChange:e=>o.setValue(`codexProxy`,e,{shouldDirty:!0,shouldValidate:!0})})})]}),(0,G.jsxs)(`section`,{id:`settings-cloud`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`云端部署`}),(0,G.jsx)(`p`,{className:`helper`,children:`配置云端部署使用的区域和制品存储。`}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`Region`,requirement:`optional`,htmlFor:`settingCloudRegion`,error:o.formState.errors.cloudRegion?.message,children:(0,G.jsx)(`input`,{id:`settingCloudRegion`,placeholder:`cn-beijing-6`,...o.register(`cloudRegion`)})}),(0,G.jsx)(Y,{label:`KS3 Bucket`,requirement:`optional`,htmlFor:`settingCloudBucket`,hint:`留空时复用启动环境或 SDK 默认 Bucket。`,error:o.formState.errors.cloudBucket?.message,children:(0,G.jsx)(`input`,{id:`settingCloudBucket`,placeholder:`agentengine--cn-beijing-6`,...o.register(`cloudBucket`)})})]}),(0,G.jsxs)(`div`,{className:`form-grid two-columns`,children:[(0,G.jsx)(Y,{label:`Access Key`,requirement:`optional`,htmlFor:`settingCloudAccessKey`,hint:`金山云账号 AK,用于云端请求签名;留空保留已保存值。`,error:o.formState.errors.cloudAccessKey?.message,children:(0,G.jsx)(`input`,{id:`settingCloudAccessKey`,type:`password`,autoComplete:`off`,placeholder:i?.cloudAccountConfigured?`已配置(留空保持不变)`:`AKLT...`,...o.register(`cloudAccessKey`)})}),(0,G.jsx)(Y,{label:`Secret Key`,requirement:`optional`,htmlFor:`settingCloudSecretKey`,hint:`金山云账号 SK;留空保留已保存值。`,error:o.formState.errors.cloudSecretKey?.message,children:(0,G.jsx)(`input`,{id:`settingCloudSecretKey`,type:`password`,autoComplete:`off`,placeholder:i?.cloudAccountConfigured?`已配置(留空保持不变)`:``,...o.register(`cloudSecretKey`)})})]}),(0,G.jsx)(Y,{label:`Account ID`,requirement:`optional`,htmlFor:`settingCloudAccountId`,hint:`主账号 ID(X-Ksc-Account-Id);可从金山云控制台获取。`,error:o.formState.errors.cloudAccountId?.message,children:(0,G.jsx)(`input`,{id:`settingCloudAccountId`,placeholder:`10203040...`,...o.register(`cloudAccountId`)})}),(0,G.jsxs)(`p`,{className:`helper`,children:[`云端账号:`,i?.cloudAccountConfigured?`已就绪`:`尚未配置`,`;云端部署:`,i?.cloudSignedAccountConfigured?`已就绪`:`尚未配置`]})]}),(0,G.jsxs)(`section`,{id:`settings-about`,className:`settings-group`,tabIndex:-1,children:[(0,G.jsx)(`h3`,{children:`关于`}),(0,G.jsx)(`dl`,{className:`trace-detail-grid`,children:u.map(([e,t])=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e}),(0,G.jsx)(`dd`,{children:t})]},e))})]})]})]}),m&&(0,G.jsx)(Az,{model:m,onClose:()=>h(null),onChanged:b})]})})}var i4=class extends Error{code;status;capability;runId;cursor;cause;constructor(e,t,n={}){super(t),this.name=`ConversationClientError`,this.code=e,this.status=n.status,this.capability=n.capability,this.runId=n.runId,this.cursor=n.cursor,this.cause=n.cause}},a4=`conversation.ksadk.io/v1`,o4=/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/,s4=new Set([`native`,`translated`,`degraded`,`unavailable`]),c4=new Set([`user_message`,`assistant_text`,`reasoning`,`tool_call`,`approval`,`progress`,`plan`,`goal`,`artifact`,`a2ui`,`error`,`unknown`]),l4=new Set([`append`,`replace`,`completed`]),u4=new Set([`pending`,`streaming`,`completed`,`failed`]),d4=new Set([`public`,`internal`,`hidden`]),f4=new Set([`apiVersion`,`kind`,`inputId`,`sessionId`,`idempotencyKey`,`parts`,`modelRef`,`reasoning`,`approvalMode`,`collaborationMode`,`goalObjective`,`extensions`]),p4=new Set([`kind`,`text`]),m4=new Set([`kind`,`attachmentRef`,`mediaType`,`name`]),h4=new Set([`ask`,`risk`,`full`]),g4=new Set([`default`,`plan`]);function _4(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function v4(e,t){return typeof e==`string`&&e.length>0&&e.length<=t}function y4(e,t,n=!1){return e==null||typeof e==`string`&&e.length<=t&&(n||e.length>0)}function b4(e,t){return Object.keys(e).every(e=>t.has(e))}function x4(e){let t=_4(e);return!t||typeof t.kind!=`string`?null:t.kind===`text`?!b4(t,p4)||!v4(t.text,131072)?null:{kind:`text`,text:t.text}:t.kind===`attachment`?!b4(t,m4)||!v4(t.attachmentRef,2048)||!v4(t.mediaType,256)||!y4(t.name,1024,!0)?null:{kind:`attachment`,attachmentRef:t.attachmentRef,mediaType:t.mediaType,...t.name===void 0?{}:{name:t.name}}:null}function S4(e){if(e===void 0)return{};let t=_4(e);return!t||Object.keys(t).some(e=>!o4.test(e)||!e.includes(`.`))?null:{...t}}function C4(e){let t=_4(e);if(!t||!b4(t,f4)||t.apiVersion!==a4||t.kind!==`ConversationInput`||!v4(t.inputId,256)||!v4(t.sessionId,256)||!v4(t.idempotencyKey,512)||!Array.isArray(t.parts)||t.parts.length===0||!y4(t.modelRef,256)||!y4(t.reasoning,64)||t.approvalMode!==void 0&&t.approvalMode!==null&&!h4.has(String(t.approvalMode))||t.collaborationMode!==void 0&&t.collaborationMode!==null&&!g4.has(String(t.collaborationMode))||!y4(t.goalObjective,4096))return null;let n=t.parts.map(x4),r=S4(t.extensions);return n.some(e=>e===null)||r===null?null:{apiVersion:a4,kind:`ConversationInput`,inputId:t.inputId,sessionId:t.sessionId,idempotencyKey:t.idempotencyKey,parts:n,...t.modelRef===void 0?{}:{modelRef:t.modelRef},...t.reasoning===void 0?{}:{reasoning:t.reasoning},...t.approvalMode===void 0?{}:{approvalMode:t.approvalMode},...t.collaborationMode===void 0?{}:{collaborationMode:t.collaborationMode},...t.goalObjective===void 0?{}:{goalObjective:t.goalObjective},...t.extensions===void 0?{}:{extensions:r}}}function w4(e){let t=C4({...e,apiVersion:e.apiVersion||a4,kind:e.kind||`ConversationInput`});if(!t)throw new i4(`conversation_contract_mismatch`,`Conversation input does not match conversation.ksadk.io/v1.`);return t}function T4(e){let t=e.parts.map(e=>e.kind===`text`?`text`:e.mediaType.toLowerCase().startsWith(`image/`)?`attachment.image`:`attachment.file`);return e.modelRef&&t.push(`model.select`),e.reasoning&&t.push(`reasoning.effort`),e.approvalMode&&t.push(`approval`),e.collaborationMode===`plan`&&t.push(`plan`),e.goalObjective&&t.push(`goal`),t.push(...Object.keys(e.extensions||{})),[...new Set(t)]}function E4(e,t){if(e.sessionId!==t.sessionId)throw new i4(`conversation_session_mismatch`,`Conversation input session does not match the active surface.`);for(let n of T4(t))if(!j4(e,n))throw new i4(`conversation_input_unsupported`,`Conversation input is not declared by the active surface.`,{capability:n});return t}function D4(e){let t=_4(e);return!t||!v4(t.name,128)||!o4.test(t.name)||!s4.has(t.mode)||!y4(t.reason,512,!0)||(t.mode===`degraded`||t.mode===`unavailable`)&&!v4(t.reason,512)?null:{name:t.name,mode:t.mode,...t.reason===void 0?{}:{reason:t.reason}}}function O4(e){if(e===void 0)return[];if(!Array.isArray(e))return null;let t=e.map(D4);if(t.some(e=>e===null))return null;let n=t;return new Set(n.map(e=>e.name)).size===n.length?n:null}function k4(e){let t=_4(e);if(!t||t.apiVersion!==a4||t.kind!==`ConversationSurface`||!v4(t.surfaceId,256)||!v4(t.sessionId,256)||!v4(t.providerRef,256))return null;let n=O4(t.inputs),r=O4(t.outputs);return!n||!r?null:{apiVersion:a4,kind:`ConversationSurface`,surfaceId:t.surfaceId,sessionId:t.sessionId,providerRef:t.providerRef,inputs:n,outputs:r}}function A4(e){let t=_4(e);if(!t||t.apiVersion!==a4||t.kindVersion!==1||!v4(t.itemId,512)||!y4(t.parentItemId,512)||!Array.isArray(t.sourceEventIds)||t.sourceEventIds.length===0||t.sourceEventIds.some(e=>typeof e!=`string`||e.length===0)||new Set(t.sourceEventIds).size!==t.sourceEventIds.length||!v4(t.sessionId,256)||!v4(t.runId,256)||!v4(t.kind,128)||!l4.has(t.operation)||!u4.has(t.lifecycle)||t.visibility!==void 0&&!d4.has(t.visibility)||!v4(t.payloadSchemaRef,256)||!y4(t.capabilityRef,256,!0))return null;let n=t.operation,r=t.lifecycle;if(n===`completed`&&r!==`completed`&&r!==`failed`)return null;let i=t.payload===void 0?{}:_4(t.payload),a=t.nativeRef===void 0?{}:_4(t.nativeRef);if(!i||!a)return null;let o=String(t.kind||`unknown`),s=c4.has(o)?o:`unknown`;return{apiVersion:a4,kindVersion:1,itemId:t.itemId,...t.parentItemId===void 0?{}:{parentItemId:t.parentItemId},sourceEventIds:[...t.sourceEventIds],sessionId:t.sessionId,runId:t.runId,kind:s,operation:n,lifecycle:r,visibility:s===`unknown`&&o!==`unknown`?`hidden`:t.visibility||`public`,payloadSchemaRef:t.payloadSchemaRef,payload:s===`unknown`&&o!==`unknown`?{originalKind:o,summary:`This content type is not supported by the current renderer.`}:{...i},...t.capabilityRef===void 0?{}:{capabilityRef:t.capabilityRef},nativeRef:{...a}}}function j4(e,...t){return e.inputs.some(e=>t.includes(e.name)&&(e.mode===`native`||e.mode===`translated`))}var M4={user_message:`conversation.item.user_message/v1`,assistant_text:`conversation.item.assistant_text/v1`,reasoning:`conversation.item.reasoning/v1`,tool_call:`conversation.item.tool-call/v1`,approval:`conversation.item.approval/v1`,artifact:`conversation.item.artifact/v1`,a2ui:`conversation.item.a2ui/v1`,error:`conversation.item.error/v1`};function N4(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function P4(e){let t=M4[e.kind];return t===void 0||t===e.payloadSchemaRef}function F4(e){if(typeof e!=`string`||e.length===0)return null;try{let t=new URL(e);return t.protocol!==`http:`&&t.protocol!==`https:`||t.username||t.password?null:t.toString()}catch{return null}}function I4(e){return{id:e.itemId,parentId:e.parentItemId||null,runId:e.runId,kind:e.kind,text:typeof e.payload.text==`string`?e.payload.text:``,lifecycle:e.lifecycle}}function L4(e){return{id:e.itemId,name:typeof e.payload.name==`string`&&e.payload.name?e.payload.name:`Artifact`,mimeType:typeof e.payload.mimeType==`string`&&e.payload.mimeType?e.payload.mimeType:`application/octet-stream`,uri:F4(e.payload.uri)}}function R4(e,t){let n=e.payload[t];return typeof n==`string`&&n?n:null}function z4(e){if(e.kind===`tool_call`){let t=R4(e,`callId`);if(t)return`tool:${t}`}if(e.kind===`approval`){let t=R4(e,`interactionId`);if(t)return`approval:${t}`}if(e.kind===`a2ui`){let t=R4(e,`surfaceId`);if(t)return`a2ui:${t}`}return`item:${e.itemId}`}function B4(e,t){let n=N4(e)&&!N4(t);return{...e,...t,itemId:e.itemId,parentItemId:e.parentItemId,sourceEventIds:[...new Set([...e.sourceEventIds,...t.sourceEventIds])],payload:{...e.payload,...t.payload},nativeRef:{...e.nativeRef,...t.nativeRef},...n?{lifecycle:e.lifecycle,operation:e.operation}:{}}}function V4(e){let t=[],n=new Map;for(let r of e){let e=z4(r),i=n.get(e);if(i===void 0){n.set(e,t.length),t.push({key:e,item:r,sourceItemIds:[r.itemId]});continue}let a=t[i];t[i]={key:e,item:B4(a.item,r),sourceItemIds:[...new Set([...a.sourceItemIds,r.itemId])]}}return t}function H4(e,t={}){let n=e.items.filter(e=>e.visibility===`public`||t.includeInternal===!0&&e.visibility===`internal`),r=n.filter(P4),i=n.filter(e=>!P4(e)),a=new Set([`user_message`,`assistant_text`,`reasoning`]),o=r.filter(e=>a.has(e.kind)).map(I4),s=e=>r.filter(t=>t.kind===e).map(e=>typeof e.payload.text==`string`?e.payload.text:``).join(``),c=[...r.filter(e=>e.kind===`unknown`),...i],l=r.filter(e=>e.kind===`error`),u=[...r].reverse().find(e=>(e.kind===`progress`||e.kind===`error`)&&N4(e));return{timeline:V4(r.filter(e=>e.kind!==`progress`)),output:s(`assistant_text`),reasoning:s(`reasoning`),textItems:o,toolItems:r.filter(e=>e.kind===`tool_call`),approvalItems:r.filter(e=>e.kind===`approval`),structuredInputItems:r.filter(e=>e.kind===`progress`&&e.payloadSchemaRef===`conversation.item.structured-input/v1`),a2uiItems:r.filter(e=>e.kind===`a2ui`),artifacts:r.filter(e=>e.kind===`artifact`).map(L4),fallbacks:[...c.map(e=>({id:e.itemId,title:`Unsupported content`,detail:String(e.payload.summary||e.payload.originalKind||e.payloadSchemaRef),failed:e.lifecycle===`failed`})),...l.map(e=>({id:e.itemId,title:`Run failed`,detail:String(e.payload.error||`The agent run failed.`),failed:!0}))],runId:n.at(-1)?.runId||``,terminalStatus:u?u.lifecycle===`failed`?`failed`:`completed`:void 0}}function U4(){return{items:[],appliedSources:[]}}function W4(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function G4(e,t){let n={...e,...t};typeof e.text==`string`&&typeof t.text==`string`&&(n.text=e.text+t.text);for(let r of[`data`,`operations`])Array.isArray(e[r])&&Array.isArray(t[r])&&(n[r]=[...e[r],...t[r]]);return n}function K4(e,t){let n=t.sourceEventIds.map(e=>JSON.stringify([t.itemId,e])),r=new Set(e.appliedSources);if(n.every(e=>r.has(e)))return e;n.forEach(e=>r.add(e));let i=e.items.findIndex(e=>e.itemId===t.itemId),a=i>=0?e.items[i]:void 0;if(a&&W4(a)&&!W4(t))return{...e,appliedSources:[...r]};let o=[...e.items];if(!a)o.push(t);else{let e=[...new Set([...a.sourceEventIds,...t.sourceEventIds])];o[i]=a.kind===t.kind?t.operation===`append`?{...t,payload:G4(a.payload,t.payload),sourceEventIds:e}:{...t,sourceEventIds:e}:{...t,kind:`unknown`,operation:`replace`,payloadSchemaRef:`conversation.item.unknown/v1`,payload:{summary:`The content type changed for the same item and was safely degraded.`},sourceEventIds:e}}return{items:o,appliedSources:[...r]}}var q4=class{state=U4();apply(e){let t=K4(this.state,e);if(t===this.state)return!1;let n=t.items!==this.state.items;return this.state=t,n}applyAll(e){for(let t of e)this.apply(t)}snapshot(){return{items:this.state.items.map(e=>({...e,sourceEventIds:[...e.sourceEventIds],payload:{...e.payload},nativeRef:{...e.nativeRef}})),appliedSources:[...this.state.appliedSources]}}},J4=8;function Y4(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function X4(e){if(e?.aborted)throw new i4(`conversation_aborted`,`Conversation request was aborted.`)}function Z4(e,t){return t?.aborted===!0||e instanceof Error&&e.name===`AbortError`}function Q4(e){let t=e.trim().replace(/\/+$/,``);if(!t)return``;if(!t.includes(`://`))return t.startsWith(`/`)?t:`/${t}`;try{let e=new URL(t);if(e.protocol!==`http:`&&e.protocol!==`https:`||e.username||e.password)throw Error(`unsafe URL`);return e.toString().replace(/\/$/,``)}catch(e){throw new i4(`conversation_contract_mismatch`,`Conversation base URL must be an HTTP(S) URL without embedded credentials.`,{cause:e})}}function $4(e){return Math.min(200*2**Math.max(0,e-1),2e3)}function e3(e){return new Promise(t=>{setTimeout(t,e)})}async function t3(e,t,n){if(X4(n),!n){await e(t);return}await new Promise((r,i)=>{let a=()=>i(new i4(`conversation_aborted`,`Conversation request was aborted.`));n.addEventListener(`abort`,a,{once:!0}),e(t).then(r,i).finally(()=>{n.removeEventListener(`abort`,a)})})}function n3(e,t,n){let r=e.snapshot();return{cursor:t,runId:n,state:r,presentation:H4(r)}}function r3(e,t){let n,r=[];for(let t of e.split(/\r?\n/)){let e=t.endsWith(`\r`)?t.slice(0,-1):t;if(!e||e.startsWith(`:`))continue;let i=e.indexOf(`:`),a=i<0?e:e.slice(0,i),o=i<0?``:e.slice(i+1),s=o.startsWith(` `)?o.slice(1):o;if(a===`id`){if(!/^\d+$/.test(s)||!Number.isSafeInteger(Number(s)))throw new i4(`conversation_stream_error`,`Conversation stream contains an invalid replay cursor.`);n=Number(s)}else a===`data`&&r.push(s)}if(r.length===0)return;let i=r.join(`
+`);if(!i||i===`[DONE]`)return;let a;try{a=JSON.parse(i)}catch(e){throw new i4(`conversation_contract_mismatch`,`Conversation stream contains invalid JSON.`,{cause:e})}let o=Y4(a);if(!o||o.conversationItem===void 0){n!==void 0&&(t.cursor=Math.max(t.cursor,n));return}if(n===void 0)throw new i4(`conversation_stream_error`,`Canonical conversation items require an SSE replay cursor.`);let s=A4(o.conversationItem);if(!s)throw new i4(`conversation_contract_mismatch`,`Conversation stream item does not match conversation.ksadk.io/v1.`);if(t.runId&&t.runId!==s.runId)throw new i4(`conversation_contract_mismatch`,`Conversation stream changed canonical run identity.`,{runId:t.runId,cursor:t.cursor});t.runId=s.runId;let c=t.reducer.apply(s);t.cursor=Math.max(t.cursor,n),c&&t.options.onItem?.(s),t.options.onUpdate?.(n3(t.reducer,t.cursor,t.runId))}async function i3(e,t){if(!e.body)throw new i4(`conversation_stream_error`,`Conversation response has no event stream body.`);let n=e.body.getReader(),r=new TextDecoder,i=``;try{for(;;){X4(t.options.signal);let{value:e,done:a}=await n.read();if(a)break;i+=r.decode(e,{stream:!0});let o=/\r?\n\r?\n/.exec(i);for(;o?.index!==void 0;){let e=o.index,n=o[0].length;r3(i.slice(0,e),t),i=i.slice(e+n),o=/\r?\n\r?\n/.exec(i)}}i+=r.decode(),i.trim()&&r3(i,t)}catch(e){throw e instanceof i4?e:(Z4(e,t.options.signal)&&X4(t.options.signal),new i4(`conversation_stream_error`,`Conversation event stream was interrupted.`,{cause:e,runId:t.runId||void 0,cursor:t.cursor}))}finally{n.releaseLock()}}function a3(e){return e.state.items.some(e=>(e.kind===`progress`||e.kind===`error`)&&(e.lifecycle===`completed`||e.lifecycle===`failed`))}var o3=class{fetcher;baseUrl;maxReconnects;sleep;retryDelayMs;constructor(e={}){if(!Number.isInteger(e.maxReconnects??J4)||(e.maxReconnects??J4)<0||(e.maxReconnects??J4)>32)throw new i4(`conversation_contract_mismatch`,`Conversation reconnect limit must be an integer from 0 to 32.`);this.fetcher=e.fetch,this.baseUrl=Q4(e.baseUrl||``),this.maxReconnects=e.maxReconnects??J4,this.sleep=e.sleep||e3,this.retryDelayMs=e.retryDelayMs||$4}fetch(){if(this.fetcher)return this.fetcher;if(typeof globalThis.fetch==`function`)return globalThis.fetch.bind(globalThis);throw new i4(`conversation_http_error`,`No fetch implementation is available for the conversation client.`)}url(e){return`${this.baseUrl}${e}`}async request(e,t,n,r=`conversation_stream_error`){X4(n);try{return await this.fetch()(e,t)}catch(e){throw e instanceof i4?e:(Z4(e,n)&&X4(n),new i4(r,`Conversation network request failed.`,{cause:e}))}}assertOk(e){if(!e.ok)throw new i4(`conversation_http_error`,`Conversation endpoint returned HTTP ${e.status}.`,{status:e.status})}async getSurface(e,t,n={}){if(!e||!t)throw new i4(`conversation_contract_mismatch`,`Agent and session identities are required to get a conversation surface.`);let r=n.signal?{signal:n.signal}:void 0,i=await this.request(this.url(`/api/v1/agents/${encodeURIComponent(e)}/conversation-surface?sessionId=${encodeURIComponent(t)}`),r,n.signal,`conversation_http_error`);this.assertOk(i);let a;try{a=await i.json()}catch(e){throw new i4(`conversation_contract_mismatch`,`Conversation surface response is not valid JSON.`,{cause:e})}let o=Y4(a),s=k4(o?.surface);if(!o||typeof o.buildId!=`string`||!o.buildId||!s)throw new i4(`conversation_contract_mismatch`,`Conversation surface response does not match conversation.ksadk.io/v1.`);return{buildId:o.buildId,surface:s}}async streamTurn(e){X4(e.signal),E4(e.bootstrap.surface,e.input);let t={cursor:0,runId:``,reducer:new q4,options:e},n={method:`POST`,headers:{"Content-Type":`application/json`,"Idempotency-Key":e.input.idempotencyKey},body:JSON.stringify({input:e.input}),...e.signal?{signal:e.signal}:{}},r=await this.request(this.url(`/api/v1/builds/${encodeURIComponent(e.bootstrap.buildId)}/conversation:stream`),n,e.signal);this.assertOk(r);try{await i3(r,t)}catch(e){if(!(e instanceof i4)||e.code!==`conversation_stream_error`||!t.runId)throw e}let i=n3(t.reducer,t.cursor,t.runId);if(a3(i))return i;if(!t.runId)throw new i4(`conversation_run_identity_missing`,`The stream ended before a canonical item supplied its run identity.`,{cursor:t.cursor});for(let n=1;n<=this.maxReconnects;n+=1){await t3(this.sleep,this.retryDelayMs(n),e.signal),X4(e.signal);let r;try{r=await this.request(this.url(`/api/v1/runs/${encodeURIComponent(t.runId)}/events?after=${t.cursor}`),{method:`GET`,headers:{"Last-Event-ID":String(t.cursor)},...e.signal?{signal:e.signal}:{}},e.signal),this.assertOk(r),await i3(r,t)}catch(e){if(e instanceof i4&&e.code===`conversation_aborted`||e instanceof i4&&e.code===`conversation_contract_mismatch`||e instanceof i4&&e.code===`conversation_http_error`&&e.status!==void 0&&e.status<500)throw e;continue}if(i=n3(t.reducer,t.cursor,t.runId),a3(i))return i}throw new i4(`conversation_reconnect_exhausted`,`Conversation replay stopped after the configured reconnect limit.`,{runId:t.runId,cursor:t.cursor})}};function s3(e,t){let n=Math.max(0,Number(t)||0),r=Number.isFinite(e)&&Number(e)>=0&&n>0,i=r?Math.max(0,Number(e)):0;return{known:r,usedTokens:i,limitTokens:n,percent:r?Math.max(0,Math.min(100,Math.round(i/n*100))):0}}function c3(e){return{title:`上下文窗口`,value:e.known?`${e.percent}% 已用`:`用量未上报`,detail:e.known?`已用 ${e.usedTokens.toLocaleString(`en-US`)} tokens,共 ${e.limitTokens.toLocaleString(`en-US`)}`:e.limitTokens>0?`上限 ${e.limitTokens.toLocaleString(`en-US`)} tokens`:`当前模型未提供上下文上限`}}function l3(e){return[...e].reverse().find(e=>e.usage?.reported===!0&&Number.isFinite(e.usage.inputTokens))?.usage?.inputTokens}var u3=new Set([`RUNNING`,`PAUSED`,`WAITING_INPUT`]);function d3(e){return[...e].filter(e=>u3.has(String(e.status||``))).sort((e,t)=>Date.parse(e.startedAt||`1970-01-01`)-Date.parse(t.startedAt||`1970-01-01`)).at(-1)}function f3(e,t){return t?e.filter(e=>e.id!==t):e}function p3(e){let t=e.completedAt||e.startedAt||``,n=Date.parse(t);return Number.isFinite(n)?n:0}function m3(e,t){let n=new Map;for(let r of e){if(r.agentId!==t||!r.sessionId)continue;let e=n.get(r.sessionId)||[];e.push(r),n.set(r.sessionId,e)}return[...n.entries()].map(([e,t])=>{let n=[...t].sort((e,t)=>p3(e)-p3(t)),r=n[0],i=n.at(-1),a=[...n].reverse().find(e=>u3.has(String(e.status||``)));return{id:e,title:r?.input?.trim()||`新会话`,updatedAt:i.completedAt||i.startedAt||``,running:!!a,activeStatus:a?.status,runs:n}}).sort((e,t)=>Date.parse(t.updatedAt||`1970-01-01`)-Date.parse(e.updatedAt||`1970-01-01`))}function h3(e,t){return{localId:e,responseId:e,sessionId:t,runId:``,reasoning:``,output:``,status:`streaming`,error:``,activities:[],surfaces:[],conversationItems:U4(),timeline:[],artifacts:[],fallbacks:[],pendingApprovals:[],transport:`responses`}}function g3(e){return e&&typeof e==`object`?e:{}}function _3(e,t){if(typeof e.detail==`string`&&e.detail.trim())return e.detail;let n=g3(e.detail),r=n.command||n.title||n.name||n.message||n.action;return typeof r==`string`&&r.trim()?r:typeof e.prompt==`string`&&e.prompt.trim()?e.prompt:typeof e.kind==`string`&&e.kind.trim()?e.kind:t}function v3(e,t,n){let r=[...n.toolItems.map(e=>({id:`tool:${e.itemId}`,kind:`tool`,title:String(e.payload.tool||`调用工具`),status:e.lifecycle===`failed`?`failed`:e.lifecycle===`completed`?`completed`:`running`,detail:k3(e.payload),data:e.payload})),...n.approvalItems.map(e=>({id:`approval:${e.itemId}`,kind:`approval`,title:_3(e.payload,`等待批准`),status:e.lifecycle===`failed`?`failed`:e.lifecycle===`completed`?`completed`:`waiting`,detail:k3(e.payload),data:e.payload}))],i={...e,conversationItems:t,timeline:n.timeline,output:n.output,reasoning:n.reasoning,activities:r,artifacts:n.artifacts,fallbacks:n.fallbacks,pendingApprovals:n.approvalItems.filter(e=>e.lifecycle===`pending`&&Number(e.payload.revision)>0).map(e=>({id:String(e.payload.interactionId||e.itemId),title:_3(e.payload,`此操作需要批准`),revision:Number(e.payload.revision)})),runId:n.runId||e.runId,status:n.terminalStatus===`failed`?`failed`:n.terminalStatus===`completed`?`completed`:n.approvalItems.some(e=>e.lifecycle===`pending`)?`waiting_input`:e.status,error:n.terminalStatus===`failed`?n.fallbacks.find(e=>e.failed)?.detail||`Agent 运行失败`:e.error};if(n.a2uiItems.length||n.structuredInputItems.length){i={...i,surfaces:[]};for(let e of n.a2uiItems){let t=Array.isArray(e.payload.data)?e.payload.data:[];i=w3(i,{type:`a2ui.surface.update`,runId:e.runId,operations:t})}for(let e of n.structuredInputItems){let t=String(e.payload.surfaceId||``);t&&(i=w3(i,{type:e.lifecycle===`completed`?`a2ui.action`:`a2ui.interaction`,runId:e.runId,surfaceId:t,interactionId:String(e.payload.interactionId||e.itemId),kind:String(e.payload.kind||`form`),inputSchema:g3(e.payload.inputSchema),revision:Number(e.payload.revision||0)}))}}return i}function y3(e,t){return v3(e,t.state,t.presentation)}function b3(e,t){let n=String(t.type||``),r=A4(t.conversationItem);if(r){let t=K4(e.conversationItems,r);return t===e.conversationItems?e:v3(e,t,H4(t))}if(t.conversationItem!==void 0){let r=n===`run.failed`||n===`run.completed`,i=n===`run.failed`;return{...e,status:i?`failed`:n===`run.completed`?`completed`:e.status,error:i?`运行失败`:e.error,...r?{}:{runId:String(t.runId||t.run_id||e.runId)}}}if(n===`run.completed`)return{...e,status:`completed`};if(n===`run.failed`){let n=g3(t.error);return{...e,status:`failed`,error:String(n.message||t.message||`Agent 运行失败`)}}if(n===`response.created`||n===`response.in_progress`){let n=g3(t.response);return{...e,responseId:String(n.id||e.responseId)}}if(n===`response.reasoning_summary_text.delta`)return{...e,reasoning:e.reasoning+String(t.delta||``)};if(n===`response.output_text.delta`)return{...e,output:e.output+String(t.delta||``)};if(n===`response.output_item.added`||n===`response.output_item.done`){let r=A3(g3(t.item),n.endsWith(`.done`));if(!r)return e;let i=e.activities.findIndex(e=>e.id===r.id),a=[...e.activities];return i<0?a.push(r):a[i]={...a[i],...r},{...e,activities:a}}if(n.startsWith(`a2ui.`))return w3(e,t);if(n===`response.paused`)return{...e,runId:String(t.runId||t.run_id||e.runId),status:`paused`};if(n===`response.resumed`)return{...e,runId:String(t.runId||t.run_id||e.runId),status:`streaming`};if(/^response\.(?:web_search_call|file_search_call|mcp_call)\./.test(n)){let r=String(t.item_id||t.itemId||t.call_id||t.callId||n.split(`.`)[1]),i=n.includes(`web_search`)?`网页搜索`:n.includes(`file_search`)?`文件搜索`:`MCP 调用`,a=n.endsWith(`.failed`)?`failed`:n.endsWith(`.completed`)?`completed`:`running`,o={id:`tool:${r}`,kind:`tool`,title:i,status:a,detail:``,data:g3(t)},s=e.activities.findIndex(e=>e.id===o.id),c=[...e.activities];return s<0?c.push(o):c[s]={...c[s],...o},{...e,activities:c}}if(n===`response.completed`){let n=g3(t.response),r=g3(n.metadata);return{...e,responseId:String(n.id||e.responseId),runId:String(r.runtime_run_id||r.runtimeRunId||e.runId),usage:g3(n.usage),status:`completed`}}if(n===`response.cancelled`||n===`response.canceled`)return{...e,status:`cancelled`};if(n===`response.failed`||n===`error`){let n=g3(t.response),r=g3(t.error||n.error);return{...e,status:`failed`,error:String(r.message||t.message||`Agent 运行失败`)}}return e}function x3(e){return{id:e,catalogId:``,components:{},roots:[],dataModel:{}}}function S3(e){let t=e.a2uiOperations??e.a2ui_operations??e.operations;return Array.isArray(t)?t.map(g3):[]}function C3(e,t){for(let n of t){let t=g3(n.createSurface);if(Object.keys(t).length){let n=String(t.surfaceId||t.surface_id||``);if(!n)continue;let r=e.get(n)||x3(n);e.set(n,{...r,catalogId:String(t.catalogId||t.catalog_id||r.catalogId)});continue}let r=g3(n.updateComponents);if(Object.keys(r).length){let t=String(r.surfaceId||r.surface_id||``);if(!t)continue;let n=e.get(t)||x3(t),i={...n.components},a=Array.isArray(r.components)?r.components.map(g3):[];for(let e of a){let t=String(e.id||e.componentId||e.component_id||``),n=String(e.component||e.type||``);t&&n&&(i[t]={...e,id:t,component:n})}let o=new Set;for(let e of Object.values(i)){let t=Array.isArray(e.children)?e.children:[];for(let e of t)typeof e==`string`&&o.add(e);typeof e.child==`string`&&o.add(e.child)}let s=Object.keys(i).filter(e=>!o.has(e));e.set(t,{...n,components:i,roots:s});continue}let i=g3(n.updateDataModel);if(Object.keys(i).length){let t=String(i.surfaceId||i.surface_id||``);if(!t)continue;let n=e.get(t)||x3(t),r=g3(i.value);e.set(t,{...n,dataModel:String(i.path||`/`)===`/`?r:{...n.dataModel,...r}});continue}let a=g3(n.deleteSurface);if(Object.keys(a).length){let t=String(a.surfaceId||a.surface_id||``);t&&e.delete(t)}}}function w3(e,t){let n=new Map(e.surfaces.map(e=>[e.id,{...e,components:{...e.components},dataModel:{...e.dataModel}}]));C3(n,S3(t));let r=String(t.type||``),i=String(t.surfaceId||t.surface_id||``);if(r===`a2ui.interaction`&&i){let e=n.get(i)||x3(i);n.set(i,{...e,interaction:{id:String(t.interactionId||t.interaction_id||``),revision:Number(t.revision||0),kind:String(t.kind||`form`),status:Number(t.revision||0)>0?`pending`:`expired`,inputSchema:g3(t.inputSchema||t.input_schema)}})}if(r===`a2ui.action`&&i){let e=n.get(i);e?.interaction&&n.set(i,{...e,interaction:{...e.interaction,status:`resolved`}})}return{...e,runId:String(t.runId||t.run_id||e.runId),surfaces:[...n.values()],status:e.status===`completed`||e.status===`failed`?e.status:r===`a2ui.interaction`?`waiting_input`:r===`a2ui.action`?`streaming`:e.status}}function T3(e){let t=h3(`persisted`,`persisted`);for(let n of e)n.type.startsWith(`a2ui.`)&&(t=w3(t,{type:n.type,...n.data||{}}));return t.surfaces}function E3(e){let t=``,n=(e=!1)=>{t=t.replaceAll(`\r
+`,`
+`);let n=t.indexOf(`
+
+`);for(;n>=0;)r(t.slice(0,n)),t=t.slice(n+2),n=t.indexOf(`
+
+`);e&&t.trim()&&(r(t),t=``)},r=t=>{let n=`message`,r,i=[];for(let e of t.split(`
+`))if(!(!e||e.startsWith(`:`))){if(e.startsWith(`event:`)&&(n=e.slice(6).trim()),e.startsWith(`id:`)){let t=Number(e.slice(3).trim());Number.isSafeInteger(t)&&t>=0&&(r=t)}e.startsWith(`data:`)&&i.push(e.slice(5).trimStart())}if(!i.length)return;let a=i.join(`
+`);if(a!==`[DONE]`)try{let t=JSON.parse(a);e({...t,type:String(t.type||n),...r===void 0?{}:{sseId:r}})}catch{e({type:n,message:a,...r===void 0?{}:{sseId:r}})}};return{push(e){t+=e,n()},finish(){n(!0)}}}function D3(e,t){return String(e.callId||e.call_id||e.toolCallId||e.tool_call_id||t)}function O3(e,t){return String(e===`command`?t.command||t.name||`执行命令`:e===`tool`?t.name||t.tool||`调用工具`:t.kind||t.action||`等待批准`)}function k3(e){let t=e.output??e.result??e.message??e.error??``;return typeof t==`string`?t:t&&typeof t==`object`?JSON.stringify(t,null,2):t===``?``:String(t)}function A3(e,t){let n=String(e.type||``);if(![`function_call`,`mcp_call`,`shell_call`,`local_shell_call`,`file_search_call`,`web_search_call`,`approval_request`].includes(n))return null;let r=String(e.call_id||e.callId||e.id||`tool`),i=n===`shell_call`||n===`local_shell_call`,a=n===`approval_request`,o=a?`approval`:i?`command`:`tool`,s=g3(e.action),c=Array.isArray(s.commands)?s.commands.filter(e=>typeof e==`string`).join(` && `):``,l=a?String(s.title||s.kind||`等待批准`):i?c||String(e.name||`执行命令`):n===`web_search_call`?`网页搜索`:n===`file_search_call`?`文件搜索`:String(e.name||e.server_label||`调用工具`),u=String(e.status||``),d=u===`failed`||u===`error`||Number(e.exit_code??e.exitCode??0)!==0?`failed`:a&&!t?`waiting`:t?`completed`:`running`;return{id:`${o}:${r}`,kind:o,title:l,status:d,detail:k3(e),data:e}}function j3(e){return[String(e.runId||``),String(e.scopeId||``),String(e.itemId||``),String(e.partId||``)].join(`/`)}function M3(e){let t=g3(e.data?.runtimeEvent),n=t.output_refs??t.outputRefs;return Array.isArray(n)?n.map(g3):[]}function N3(e){let t=[],n=new Map,r=[],i=new Map,a=null;for(let o of e){let e=o.data||{},s=o.type===`thinking.delta`||o.type===`thinking.completed`,c=o.type===`message.delta`||o.type===`message.completed`;if(s||c){let r=s?`thinking`:`message`,i=o.type.endsWith(`.completed`),a=i?`complete`:String(e.operation||`append`),c=String(e.text||e.delta||``),l=`${r}:${j3(e)}`,u=n.get(l),d=g3(e.runtimeEvent),f=String(e.phase||d.phase||``);if(u===void 0)n.set(l,t.length),t.push({runId:String(e.runId||``),scopeId:String(e.scopeId||``),itemId:String(e.itemId||``),partId:String(e.partId||``),phase:f,kind:r,text:c,completed:i});else{let e=t[u],n=a===`append`?e.text+c:c||e.text;t[u]={...e,phase:e.phase||f,text:n,completed:i||e.completed}}continue}if([`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(o.type)){let e=M3(o);e.length&&(a=e);continue}let l=null;if(o.type.startsWith(`command.`)?l=`command`:o.type.startsWith(`tool.`)?l=`tool`:o.type===`approval.requested`&&(l=`approval`),!l)continue;let u=D3(e,`${l}-${o.id}`),d=i.get(`${l}:${u}`),f=o.type.endsWith(`.completed`),p=o.type.endsWith(`.failed`)||!!e.error||Number(e.exitCode??e.exit_code??0)!==0,m=l===`approval`?`waiting`:p?`failed`:f?`completed`:`running`,h={id:`${l}:${u}`,kind:l,title:O3(l,e),status:m,detail:k3(e),data:e};if(d===void 0)i.set(h.id,r.length),r.push(h);else{let e=r[d];r[d]={...e,...h,title:h.title===O3(l,{})?e.title:h.title,detail:h.detail||e.detail}}}let o=t.filter(e=>e.kind===`message`),s=t.filter(e=>e.kind===`thinking`).map(e=>e.text).join(``),c;if(a&&a.length){let e=new Map;for(let t of o)e.set(`${t.scopeId}/${t.itemId}`,t);c=a.map(t=>e.get(`${String(t.scope_id??t.scopeId??``)}/${String(t.item_id??t.itemId??``)}`)).filter(e=>!!e).map(e=>e.text).join(`
+
+`)}else{let e=o.filter(e=>e.completed);c=(e.length?e:o).map(e=>e.text).join(``)}return{reasoning:s,output:c,textItems:t,activities:r}}function P3(e){let t=Number(e.totalTokens??e.total_tokens??0);return`${Number.isFinite(t)?t.toLocaleString(`en-US`):`0`} tokens`}function F3(e){let t=Number(e.durationMs??e.duration_ms);return!Number.isFinite(t)||t<0?``:t<1e3?`${Math.round(t)}ms`:`${(t/1e3).toFixed(1)}s`}function I3(e){let t=[],n=new Map,r=e.some(e=>e.type===`run.started`),i=(e,r)=>{let i=n.get(e);if(i===void 0){n.set(e,t.length),t.push(r);return}t[i]={...t[i],...r}};for(let a of e){let e=a.data||{},o=a.type||``;if(o===`run.created`){if(r)continue;t.push({id:`run:${a.id}`,kind:`run`,title:`Run 创建`,summary:String(e.model||e.runtimeType||``),detail:``,status:`running`,createdAt:a.createdAt,data:e});continue}if(o===`run.started`){let n=g3(e.runtimeEvent);t.push({id:`run:${a.id}`,kind:`run`,title:`Run 启动`,summary:String(e.runtimeType||n.runtimeType||n.model||`Local Runtime`),detail:``,status:`running`,createdAt:a.createdAt,data:e});continue}if([`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(o)){let n=o===`run.failed`||o===`run.interrupted`,r=o===`run.cancelled`||o===`run.canceled`;t.push({id:`run:${a.id}`,kind:`run`,title:n?o===`run.interrupted`?`Run 中断`:`Run 失败`:r?`Run 取消`:`Run 完成`,summary:F3(e),detail:n?String(e.error||e.message||``):``,status:n?`failed`:`completed`,createdAt:a.createdAt,data:e});continue}if(o.startsWith(`thinking.`)||o.startsWith(`message.`)){let r=o.startsWith(`thinking.`)?`thinking`:`message`,s=`stream:${r}`,c=n.get(s),l=c===void 0?null:t[c],u=String(e.text||e.delta||``),d=o.endsWith(`.completed`),f=d&&u?u:`${l?.detail||``}${u}`;i(s,{id:s,kind:r,title:r===`thinking`?`思考过程`:`模型回复`,summary:f?`${f.length} 字`:``,detail:f,status:d?`completed`:`running`,createdAt:a.createdAt||l?.createdAt,data:e});continue}let s=null;if(o.startsWith(`command.`)?s=`command`:o.startsWith(`tool.`)?s=`tool`:o.startsWith(`approval.`)&&(s=`approval`),s){let r=`${s}:${D3(e,String(a.id))}`,c=n.get(r),l=c===void 0?null:t[c],u=o.endsWith(`.failed`)||!!e.error||Number(e.exitCode??e.exit_code??0)!==0,d=o.endsWith(`.completed`)||o.endsWith(`.resolved`),f=k3(e)||l?.detail||``,p=O3(s,e),m=O3(s,{});i(r,{id:r,kind:s,title:p===m&&l?.title?l.title:p,summary:F3(e),detail:f,status:u?`failed`:d?`completed`:s===`approval`?`waiting`:`running`,createdAt:a.createdAt||l?.createdAt,data:e});continue}o===`usage.reported`&&t.push({id:`usage:${a.id}`,kind:`usage`,title:`用量上报`,summary:P3(e),detail:``,status:`completed`,createdAt:a.createdAt,data:e})}if([...e].reverse().find(e=>[`run.completed`,`run.failed`,`run.interrupted`,`run.cancelled`,`run.canceled`].includes(e.type)))for(let e of t)e.status===`running`&&(e.kind===`thinking`||e.kind===`message`)&&(e.status=`completed`);return t}function L3(e,t){let n=e.filter(e=>e.type.startsWith(`memory.recall.`)),r=[...n].reverse().find(e=>e.type===`memory.recall.projected`);if(r){let e=Number(r.data?.candidate_count??r.data?.count??0);return{status:`used`,title:`已提供长期记忆`,description:e>0?`${e} 条相关记忆已交付本次运行`:`相关记忆已交付本次运行`}}let i=[...n].reverse().find(e=>e.type===`memory.recall.completed`);if(i){let e=Number(i.data?.candidate_count??i.data?.count??0);return{status:`recalled`,title:`已召回长期记忆`,description:e>0?`已找到 ${e} 条,但未确认交付 Runner`:`已找到相关记忆,但未确认交付 Runner`}}return n.some(e=>e.type===`memory.recall.failed`)?{status:`failed`,title:`长期记忆召回失败`,description:`本次未能读取长期记忆,可在 Trace 中查看原因`}:n.some(e=>e.type===`memory.recall.empty`)?{status:`empty`,title:`未使用长期记忆`,description:`未找到与当前问题相关的记忆`}:Number(t||0)>0?{status:`used`,title:`已纳入长期记忆`,description:`相关记忆已纳入本次上下文`}:{status:`unused`,title:`未使用长期记忆`,description:`本次回答未选入长期记忆`}}function R3(e){return!Number.isFinite(e)||Number(e)<0?`未上报`:Number(e)<1e3?`${Math.round(Number(e))}ms`:`${(Number(e)/1e3).toFixed(2)}s`}function z3(e){return Number.isFinite(e)?Number(e).toLocaleString():`未上报`}function B3(e){return{platform_safety:`平台安全规则`,agent_identity:`角色定义`,agent_policy:`任务规则`,runtime_capabilities:`运行时能力说明`,resource_manifest:`工具与 Skill 说明`,request_instructions:`本次请求指令`}[e]||e}function V3(e){return{platform_safety:`平台策略`,agent_identity:`Agent Revision`,agent_policy:`Agent Revision`,runtime_capabilities:`Runtime Adapter`,resource_manifest:`构建资源清单`,request_instructions:`本次请求`}[e]||`Prompt Compiler`}function H3(e){return e.length>20?`${e.slice(0,17)}…`:e}function U3(e){return e===`RUNNING`||e===`CREATED`?`运行中`:e===`COMPLETED`?`已完成`:e===`CANCELLED`?`已取消`:e===`INTERRUPTED`?`已中断`:e===`TIMED_OUT`?`已超时`:`失败`}function W3(e){try{return BigInt(String(e.startTimeUnixNano||`0`))}catch{return 0n}}function G3(e){if(!e.length)return[];let t=[...e].sort((e,t)=>W3(e){let n=W3(t);return!e||nNumber(W3(e)-n)/1e6),i=Math.max(1,...t.map((e,t)=>r[t]+Math.max(0,Number(e.durationMs)||0))),a=new Map(t.map(e=>[e.spanId,e])),o=e=>{let t=0,n=e.parentSpanId,r=new Set;for(;n&&a.has(n)&&!r.has(n)&&t<3;)r.add(n),t+=1,n=a.get(n)?.parentSpanId;return t};return t.slice(0,8).map((e,t)=>({...e,left:Math.min(96,Math.max(0,r[t]/i*100)),width:Math.max(3,Math.min(100,Math.max(0,Number(e.durationMs)||0)/i*100)),depth:o(e)}))}function K3(e){return e.kind===`thinking`?(0,G.jsx)(L,{size:13}):e.kind===`message`?(0,G.jsx)(Ie,{size:13}):e.kind===`command`?(0,G.jsx)(pt,{size:13}):e.kind===`tool`?(0,G.jsx)(yt,{size:13}):e.kind===`approval`?(0,G.jsx)(ot,{size:13}):e.kind===`usage`?(0,G.jsx)(De,{size:13}):(0,G.jsx)(Xe,{size:13})}async function q3(e){let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return[];let n=[],r=E3(e=>{let{type:t,...r}=e;n.push({id:n.length+1,type:t,data:r})});return r.push(await t.text()),r.finish(),n}function J3({agentId:e,onOpenTrace:t,onClose:n}){let[r,i]=(0,s.useState)(null),[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)([]),[u,d]=(0,s.useState)(null),[f,p]=(0,s.useState)(null),[m,h]=(0,s.useState)(null),[_,v]=(0,s.useState)(!1),[y,b]=(0,s.useState)(!0),[x,S]=(0,s.useState)(0);(0,s.useEffect)(()=>{let t=!1,n=null,r=0;async function a(){let s=++r;try{let n=((await g(`/api/v1/runs`).then(e=>e.json())).items||[]).filter(t=>!e||t.agentId===e).at(-1)||null;if(t||s!==r)return;if(i(n),!n){o([]),l([]),d(null),p(null);return}let[a,c,u,f]=await Promise.all([q3(n.id),g(`/api/v1/traces/${encodeURIComponent(n.traceId)}`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/runs/${encodeURIComponent(n.id)}/context`).then(e=>e.ok?e.json():null).catch(()=>null),g(`/api/v1/runs/${encodeURIComponent(n.id)}/prompt`).then(e=>e.ok?e.json():null).catch(()=>null)]);!t&&s===r&&(o(a),l(c?.spans||[]),d(u),p(f))}catch{}finally{!t&&s===r&&b(!1),t||(n=window.setTimeout(a,2500))}}return b(!0),a(),()=>{t=!0,r+=1,n!==null&&window.clearTimeout(n)}},[e,x]),(0,s.useEffect)(()=>{h(null),v(!1)},[r?.id]);async function C(e){if(!(m||_)){v(!0);try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/prompt?include_content=true`),n=t.ok?await t.json():null;h(n?.reveal||{available:!1,reason:`Prompt 详情读取失败。`})}catch{h({available:!1,reason:`Prompt 详情读取失败。`})}finally{v(!1)}}}let w=r?.status===`RUNNING`||r?.status===`CREATED`,T=r?/fail|error|interrupt|timed/i.test(r.status):!1,E=(0,s.useMemo)(()=>I3(a),[a]),D=(0,s.useMemo)(()=>G3(c),[c]),k=r?.usage?.reported===!0,A=u?.decisions||[],M=!!(u||f||k),N=A.some(e=>e.decision===`dropped`)?`部分内容已舍弃`:A.some(e=>e.decision===`compressed`)?`已自动压缩`:A.some(e=>e.decision===`replaced`)?`部分内容已替换`:M?`正常`:`等待证据`,P=Object.keys(f?.tokensBySection||{}).map(B3),F=u?.tokensByKind?.recalled_memory,I=(0,s.useMemo)(()=>L3(a,F),[a,F]),R=Number.isFinite(u?.plannedInputTokens)&&Number.isFinite(u?.projectedInputTokens)&&Number(u?.plannedInputTokens)!==Number(u?.projectedInputTokens);return(0,G.jsxs)(`aside`,{className:`chat-run-panel`,"aria-label":`运行检查器`,children:[(0,G.jsxs)(`div`,{className:`chat-run-head`,children:[(0,G.jsxs)(`span`,{className:`chat-run-title`,children:[(0,G.jsx)(O,{size:15}),` 运行检查器`]}),(0,G.jsx)(`span`,{className:`chat-run-head-spacer`}),(0,G.jsx)(`button`,{className:`icon-btn`,onClick:()=>S(e=>e+1),title:`刷新`,children:(0,G.jsx)(et,{size:14})}),(0,G.jsx)(`button`,{className:`icon-btn`,onClick:n,title:`收起`,children:(0,G.jsx)(bt,{size:14})})]}),y&&!r?(0,G.jsxs)(`div`,{className:`chat-run-empty`,children:[(0,G.jsx)(Ne,{size:16,className:`animate-spin`}),` 正在读取最近运行…`]}):r?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:`chat-run-scroll`,children:[(0,G.jsxs)(`section`,{className:`chat-run-overview`,children:[(0,G.jsxs)(`div`,{className:`chat-run-status-row`,children:[(0,G.jsx)(`span`,{className:`chat-run-state-icon ${w?`running`:T?`failed`:`completed`}`,children:w?(0,G.jsx)(Ne,{size:15,className:`animate-spin`}):T?(0,G.jsx)(ce,{size:15}):(0,G.jsx)(ie,{size:15})}),(0,G.jsxs)(`div`,{className:`chat-run-identity`,children:[(0,G.jsx)(`strong`,{children:U3(r.status)}),(0,G.jsx)(`span`,{title:r.id,children:H3(r.id)})]}),(0,G.jsx)(`span`,{className:`chat-run-state ${w?`running`:T?`failed`:`completed`}`,children:r.status})]}),r.error?.message&&(0,G.jsxs)(`div`,{className:`chat-run-error`,role:`alert`,children:[(0,G.jsx)(ce,{size:15}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:r.error.code||`运行失败`}),(0,G.jsx)(`span`,{children:r.error.message})]})]}),(0,G.jsxs)(`div`,{className:`chat-run-route`,children:[(0,G.jsx)(ge,{size:13}),(0,G.jsx)(`span`,{children:`Edge · Local`}),(0,G.jsx)(`i`,{}),(0,G.jsxs)(`span`,{children:[r.runtimeType||`codex`,` Runtime`]}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`span`,{children:r.model||`未指定模型`})]})]}),(0,G.jsxs)(`section`,{className:`chat-run-section`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`本次运行`}),(0,G.jsx)(`small`,{children:r.startedAt?new Date(r.startedAt).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):``})]}),(0,G.jsxs)(`div`,{className:`chat-run-metrics`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(ue,{size:13}),(0,G.jsx)(`span`,{children:`耗时`}),(0,G.jsx)(`strong`,{children:R3(r.durationMs)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(pe,{size:13}),(0,G.jsx)(`span`,{children:`总 Token`}),(0,G.jsx)(`strong`,{children:k?z3(r.usage?.totalTokens):`未上报`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Ie,{size:13}),(0,G.jsx)(`span`,{children:`输入 / 输出`}),(0,G.jsx)(`strong`,{children:k?`${z3(r.usage?.inputTokens)} / ${z3(r.usage?.outputTokens)}`:`未上报`})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Oe,{size:13}),(0,G.jsx)(`span`,{children:`Span`}),(0,G.jsx)(`strong`,{children:c.length||`—`})]})]})]}),(0,G.jsxs)(`section`,{className:`chat-run-section pcm-run-summary`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`运行解释`}),(0,G.jsx)(`small`,{children:N})]}),(0,G.jsxs)(`div`,{className:`pcm-run-health ${N===`正常`?`healthy`:N===`等待证据`?`pending`:`adjusted`}`,children:[N===`正常`?(0,G.jsx)(ie,{size:16}):(0,G.jsx)(De,{size:16}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:N===`正常`?`本次运行依据已正常准备`:N}),(0,G.jsx)(`span`,{children:u?`规则、相关记忆和当前问题已按策略处理`:f&&k?`规则证据与模型用量已记录;Runner 内部上下文由框架管理`:`正在收集本次运行依据`})]})]}),(0,G.jsxs)(`div`,{className:`pcm-run-signal-list`,children:[(0,G.jsxs)(`details`,{className:`pcm-run-signal`,onToggle:e=>{e.currentTarget.open&&C(r.id)},children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(ie,{size:14}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:`规则已应用`}),(0,G.jsx)(`span`,{children:P.length?P.join(` · `):f?.sectionCount?`${f.sectionCount} 个规则来源`:`本次未提供规则来源证据`})]}),(0,G.jsx)(H,{className:`pcm-run-signal-chevron`,size:14})]}),(0,G.jsx)(`div`,{className:`pcm-run-signal-details`,children:_?(0,G.jsx)(`p`,{children:`正在按本次不可变 Build 校验并读取 Prompt…`}):m?.available&&m.sections?.length?m.sections.map(e=>(0,G.jsxs)(`div`,{className:`pcm-run-prompt-section`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:B3(e.id)}),(0,G.jsxs)(`small`,{children:[`来源:`,V3(e.id)]})]}),(0,G.jsx)(`pre`,{children:e.content})]},e.id)):(0,G.jsx)(`p`,{children:m?.reason||`展开后按需读取 Prompt 正文;正文不会写入 Trace。`})})]}),(0,G.jsxs)(`div`,{className:`pcm-run-signal-static ${I.status===`failed`?`attention`:``}`,children:[(0,G.jsx)(L,{size:14}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:I.title}),(0,G.jsx)(`span`,{children:I.description})]})]}),(0,G.jsxs)(`div`,{className:`pcm-run-signal-static ${N!==`正常`&&N!==`等待证据`?`attention`:``}`,children:[(0,G.jsx)(De,{size:14}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:R?`上下文已按预算调整`:A.some(e=>e.decision===`compressed`||e.decision===`dropped`||e.decision===`replaced`)?N:`上下文无需压缩`}),(0,G.jsx)(`span`,{children:R?`关键规则与当前问题已优先保留`:`未检测到压缩、替换或舍弃`})]})]})]})]}),(0,G.jsxs)(`section`,{className:`chat-run-section`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`Trace 瀑布`}),(0,G.jsx)(`small`,{children:D.length?`${D.length} 个节点`:`等待 Span`})]}),D.length?(0,G.jsx)(`div`,{className:`chat-run-waterfall`,children:D.map(e=>{let t=/fail|error/i.test(e.status);return(0,G.jsxs)(`div`,{className:`chat-run-waterfall-row`,children:[(0,G.jsx)(`span`,{className:`chat-run-waterfall-label`,style:{paddingLeft:e.depth*8},title:e.name,children:e.name}),(0,G.jsx)(`span`,{className:`chat-run-waterfall-track`,children:(0,G.jsx)(`i`,{className:t?`failed`:``,style:{left:`${e.left}%`,width:`${e.width}%`}})}),(0,G.jsx)(`small`,{children:R3(e.durationMs)})]},e.spanId)})}):(0,G.jsx)(`div`,{className:`chat-run-inline-empty`,children:`运行开始后显示 Span 时序`})]}),(0,G.jsxs)(`section`,{className:`chat-run-section chat-run-events-section`,children:[(0,G.jsxs)(`div`,{className:`chat-run-section-title`,children:[(0,G.jsx)(`span`,{children:`执行事件`}),(0,G.jsx)(`small`,{children:E.length})]}),(0,G.jsx)(`div`,{className:`chat-run-timeline`,children:E.length?E.map(e=>(0,G.jsxs)(`div`,{className:`chat-run-event ${e.kind} ${e.status}`,children:[(0,G.jsx)(`span`,{className:`chat-run-event-icon`,children:K3(e)}),(0,G.jsxs)(`div`,{className:`chat-run-event-copy`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsx)(`small`,{children:e.summary})]}),e.detail&&(0,G.jsxs)(`details`,{children:[(0,G.jsx)(`summary`,{children:`查看详情`}),(0,G.jsx)(`pre`,{children:e.detail})]})]})]},e.id)):(0,G.jsx)(`div`,{className:`chat-run-inline-empty`,children:`正在建立 Runtime 连接…`})})]})]}),(0,G.jsx)(`div`,{className:`chat-run-footer`,children:(0,G.jsxs)(`button`,{className:`btn soft`,onClick:t,children:[`打开完整 Trace `,(0,G.jsx)(j,{size:14})]})})]}):(0,G.jsx)(`div`,{className:`chat-run-empty`,children:`发送一条消息后,这里会显示执行位置、用量与事件时间线。`})]})}var Y3=[{value:`ask`,label:`请求批准`,compactLabel:`请求批准`,description:`文件修改与外部写入会逐次请求确认`},{value:`risk`,label:`帮我批准`,compactLabel:`帮我批准`,description:`仅在检测到风险操作时请求确认`},{value:`full`,label:`完全访问权限`,compactLabel:`完全访问`,description:`不受限制地访问互联网和工作区文件`}];function X3(e){return e===`ask`||e===`risk`||e===`full`?e:`risk`}function Z3(e){return`agentkit-studio:approval:${e}`}function Q3(e){return Y3.find(t=>t.value===e)||Y3[1]}function $3(e){return Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return{label:e,value:e,description:``};let t=e&&typeof e==`object`?e:{},n=String(t.value??t.id??t.label??``);return{label:String(t.label??t.title??n),value:n,description:String(t.description??t.help??``)}}).filter(e=>e.value):[]}function e6(e){return(Array.isArray(e.children)?e.children:typeof e.child==`string`?[e.child]:[]).filter(e=>typeof e==`string`)}function t6({surface:e,busy:t=!1,onSubmit:n}){let[r,i]=(0,s.useState)(()=>({...e.dataModel})),[a,o]=(0,s.useState)({}),c=(0,s.useRef)(new Set),l=e.interaction?.status===`pending`,u=t||!l,d=e.roots.length?e.roots:Object.keys(e.components).slice(0,1);(0,s.useEffect)(()=>{i(t=>{let n={...t};for(let[t,r]of Object.entries(e.dataModel))c.current.has(t)||(n[t]=r);return n})},[e.dataModel]);let f=(e,t)=>{c.current.add(e),i(n=>({...n,[e]:t}))},p=(t,i={})=>{if(!e.interaction||u)return;let o={...r};for(let[e,t]of Object.entries(a)){let n=t.trim();if(!n)continue;let r=o[e];o[e]=Array.isArray(r)?[...r.filter(e=>String(e)!==n),n]:n}n(e.interaction.id,e.interaction.revision,t,{...o,...i})},m=(t,n)=>{let s=String(t.name||t.id),l=$3(t.options),d=Array.isArray(r[s])?r[s]:[],p=String(r[s]??t.value??``),m=!!(t.allow_other??t.allowOther??t.is_other??t.isOther),h=a[s]??``;return(0,G.jsxs)(`fieldset`,{className:`a2ui-field a2ui-options`,children:[(0,G.jsx)(`legend`,{children:String(t.label||t.title||`请选择`)}),!!t.description&&(0,G.jsx)(`p`,{className:`a2ui-field-description`,children:String(t.description)}),(0,G.jsxs)(`div`,{className:`a2ui-choice-list`,role:n?`group`:`radiogroup`,children:[l.map((t,r)=>{let i=n?d.includes(t.value):p===t.value;return(0,G.jsxs)(`label`,{className:`a2ui-choice${i?` selected`:``}`,children:[(0,G.jsx)(`input`,{type:n?`checkbox`:`radio`,"aria-label":t.label,name:n?void 0:`${e.id}-${s}`,checked:i,disabled:u,onChange:e=>{n?f(s,e.target.checked?[...d,t.value]:d.filter(e=>e!==t.value)):(o(e=>({...e,[s]:``})),f(s,t.value))}}),(0,G.jsx)(`span`,{className:`a2ui-choice-index`,children:r+1}),(0,G.jsxs)(`span`,{className:`a2ui-choice-copy`,children:[(0,G.jsx)(`strong`,{children:t.label}),t.description&&(0,G.jsx)(`small`,{children:t.description})]})]},t.value)}),m&&(0,G.jsxs)(`label`,{className:`a2ui-other${h?` active`:``}`,children:[(0,G.jsx)(`span`,{className:`a2ui-other-icon`,children:(0,G.jsx)(Ye,{size:14})}),(0,G.jsx)(`input`,{type:t.secret?`password`:`text`,"aria-label":`${String(t.label||t.title||s)}自定义输入`,value:h,placeholder:String(t.other_placeholder||t.otherPlaceholder||`其他,请输入…`),disabled:u,onChange:e=>{let t=e.target.value;c.current.add(s),o(e=>({...e,[s]:t})),n||i(e=>({...e,[s]:``}))}})]})]})]})},h=t=>{let n=e.components[t];if(!n)return null;let i=n.component,a=e6(n).map(e=>(0,G.jsx)(`div`,{children:h(e)},e));if(i===`Card`)return(0,G.jsxs)(`section`,{className:`a2ui-card`,children:[!!n.title&&(0,G.jsx)(`h3`,{children:String(n.title)}),!!n.body&&(0,G.jsx)(`p`,{children:String(n.body)}),a.length>0&&(0,G.jsx)(`div`,{className:`a2ui-card-content`,children:a})]});if([`Column`,`Row`].includes(i))return(0,G.jsx)(`div`,{className:`a2ui-layout ${i.toLowerCase()}`,children:a});if(i===`Text`)return(0,G.jsx)(`p`,{className:`a2ui-text ${String(n.variant||`body`)}`,children:String(n.text||``)});if([`TextField`,`Input`].includes(i)){let e=String(n.name||n.id);return(0,G.jsxs)(`label`,{className:`a2ui-field`,children:[(0,G.jsx)(`span`,{children:String(n.label||n.title||e)}),(0,G.jsx)(`input`,{value:String(r[e]??n.value??``),placeholder:String(n.placeholder||``),disabled:u,onChange:t=>f(e,t.target.value)})]})}if([`Select`,`RadioGroup`,`MultipleChoice`].includes(i)){let e=String(n.name||n.id),t=$3(n.options),a=i===`MultipleChoice`&&!!n.multiple;return i===`RadioGroup`||i===`MultipleChoice`?m(n,a):(0,G.jsxs)(`div`,{className:`a2ui-field`,children:[(0,G.jsx)(`span`,{children:String(n.label||n.title||`请选择`)}),(0,G.jsx)(Fh,{ariaLabel:String(n.label||n.title||`请选择`),value:String(r[e]??n.value??``),options:t,disabled:u,onValueChange:t=>f(e,t)})]})}if(i===`CheckboxGroup`)return m(n,!0);if(i===`ApprovalBar`)return(0,G.jsxs)(`div`,{className:`a2ui-approval`,role:`group`,"aria-label":`批准操作`,children:[(0,G.jsxs)(`span`,{className:`a2ui-approval-summary`,children:[(0,G.jsx)(st,{size:15}),String(n.summary||n.tool_name||`请确认此操作`)]}),(0,G.jsxs)(`span`,{className:`a2ui-actions`,children:[(0,G.jsxs)(`button`,{type:`button`,className:`secondary`,disabled:u,onClick:()=>p(`deny`),children:[(0,G.jsx)(bt,{size:14}),String(n.deny_label||`拒绝`)]}),(0,G.jsxs)(`button`,{type:`button`,disabled:u,onClick:()=>p(`approve`),children:[(0,G.jsx)(V,{size:14}),String(n.approve_label||`批准`)]})]})]});if(i===`Form`)return(0,G.jsxs)(`form`,{className:`a2ui-form`,onSubmit:e=>{e.preventDefault(),p(`submit`)},children:[!!n.title&&(0,G.jsx)(`strong`,{children:String(n.title)}),a,(0,G.jsx)(`div`,{className:`a2ui-form-actions`,children:(0,G.jsxs)(`button`,{type:`submit`,disabled:u,children:[String(n.submit_label||`提交`),(0,G.jsx)(he,{size:14})]})})]});if(i===`Button`){let e=String(n.action||n.name||n.id||`submit`);return(0,G.jsx)(`button`,{type:`button`,disabled:u,onClick:()=>p(e),children:String(n.label||n.text||`提交`)})}return(0,G.jsxs)(`div`,{className:`a2ui-unsupported`,children:[`此卡片包含暂不支持的组件:`,i||`unknown`]})},g=d.map(e=>(0,G.jsx)(`div`,{children:h(e)},e));return(0,G.jsxs)(`div`,{className:`a2ui-surface${l?` pending`:` resolved`}`,"data-surface-id":e.id,children:[g,e.interaction&&!l&&(0,G.jsxs)(`div`,{className:`a2ui-resolved`,children:[(0,G.jsx)(V,{size:14}),`已提交`]})]})}var n6=[{id:`plan`,slash:`/plan`,label:`计划模式`,description:`下一轮只分析并形成可执行计划`},{id:`goal`,slash:`/goal`,label:`设定长期目标`,description:`启动可暂停、可持续的 Codex Goal`},{id:`default`,slash:`/default`,label:`默认模式`,description:`返回直接执行模式`}];function r6(e){if(!e.startsWith(`/`)||/\s/.test(e))return[];let t=e.toLocaleLowerCase();return n6.filter(e=>e.slash.startsWith(t))}function i6(e){let t=e.trim();return t===`/plan`?{kind:`toggle-plan`}:t===`/default`?{kind:`set-default`}:t===`/goal`||t.startsWith(`/goal `)?{kind:`goal`,objective:t.slice(5).trim()}:{kind:`message`,text:t}}function a6(e,t){let n=[];e.trim()&&n.push({type:`input_text`,text:e.trim()});for(let e of t)e.kind===`image`&&e.dataUrl?n.push({type:`input_image`,image_url:e.dataUrl,filename:e.name}):e.kind===`text`&&n.push({type:`input_text`,text:`\n\n\n${e.text||``}\n`});return[{role:`user`,content:n}]}var o6=new Set([`txt`,`md`,`json`,`yaml`,`yml`,`csv`,`ts`,`tsx`,`js`,`jsx`,`py`,`go`,`rs`,`java`,`sh`,`css`,`html`,`xml`,`toml`,`ini`,`log`]),s6=[`image/*`,`.txt`,`.md`,`.json`,`.yaml`,`.yml`,`.csv`,`.ts`,`.tsx`,`.js`,`.jsx`,`.py`,`.go`,`.rs`,`.java`,`.sh`,`.css`,`.html`,`.xml`,`.toml`,`.ini`,`.log`].join(`,`);function c6(e){return new TextEncoder().encode(JSON.stringify(a6(``,e))).byteLength}function l6(e){return e.split(`.`).at(-1)?.toLocaleLowerCase()||``}function u6(e){return new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`无法读取附件 ${e.name}`)),r.onload=()=>t(String(r.result||``)),r.readAsDataURL(e)})}function d6(e){return typeof e.text==`function`?e.text():new Promise((t,n)=>{let r=new FileReader;r.onerror=()=>n(Error(`无法读取附件 ${e.name}`)),r.onload=()=>t(String(r.result||``)),r.readAsText(e)})}async function f6(e){let t={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,name:e.name,mimeType:e.type||`application/octet-stream`,size:e.size};if(e.type.startsWith(`image/`))return{...t,kind:`image`,dataUrl:await u6(e)};if(e.type.startsWith(`text/`)||o6.has(l6(e.name)))return{...t,kind:`text`,text:await d6(e)};throw Error(`暂不支持 ${e.name};请添加图片或 UTF-8 文本/代码文件`)}function p6(e){return e<1024?`${e} B`:`${Math.max(.1,e/1024).toFixed(1)} KiB`}function m6({id:e}){return e===`goal`?(0,G.jsx)(ft,{size:16}):e==="default"?(0,G.jsx)(gt,{size:16}):(0,G.jsx)(Me,{size:16})}function h6({disabled:e,onTogglePlan:t,onStartGoal:n,onFiles:r,active:i=!0,allowAttachments:a=!0,allowPlan:o=!0,allowGoal:c=!0,attachmentAccept:l=s6,attachmentLimit:u=4}){let d=(0,s.useRef)(null),[f,p]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{i||p(!1)},[i]),!a&&!o&&!c?null:(0,G.jsxs)(G.Fragment,{children:[a&&(0,G.jsx)(`input`,{ref:d,className:`composer-file-input`,type:`file`,tabIndex:-1,"aria-label":`选择本轮附件`,multiple:!0,accept:l||void 0,onChange:e=>{let t=[...e.target.files||[]];e.target.value=``,t.length&&r(t)}}),(0,G.jsxs)(od,{open:f,onOpenChange:p,children:[(0,G.jsx)(sd,{asChild:!0,children:(0,G.jsx)(`button`,{className:`chat-plus-trigger`,type:`button`,disabled:e,"aria-label":`添加附件或运行控制`,title:`添加附件或运行控制`,children:(0,G.jsx)(Qe,{size:17})})}),(0,G.jsx)(cd,{children:(0,G.jsxs)(ld,{className:`composer-action-menu`,side:`top`,align:`start`,sideOffset:10,collisionPadding:12,children:[a&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ud,{className:`composer-action-heading`,children:`添加到本轮`}),(0,G.jsxs)(dd,{className:`composer-action-item`,onSelect:()=>d.current?.click(),children:[(0,G.jsx)(qe,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`添加附件`}),(0,G.jsxs)(`small`,{children:[`本轮最多 `,u,` 个`]})]})]})]}),a&&(o||c)&&(0,G.jsx)(hd,{className:`composer-action-separator`}),(o||c)&&(0,G.jsx)(ud,{className:`composer-action-heading`,children:`运行方式`}),o&&(0,G.jsxs)(dd,{className:`composer-action-item`,onSelect:t,children:[(0,G.jsx)(Me,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`计划模式`}),(0,G.jsx)(`small`,{children:`下一轮使用 Codex Plan`})]})]}),c&&(0,G.jsxs)(dd,{className:`composer-action-item`,onSelect:n,children:[(0,G.jsx)(ft,{size:16}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:`设定长期目标`}),(0,G.jsx)(`small`,{children:`朝可验证的停止条件持续推进`})]})]})]})})]})]})}function g6({input:e,activeIndex:t,onSelect:n,allowPlan:r=!0,allowGoal:i=!0}){let a=r6(e).filter(e=>(e.id!==`plan`||r)&&(e.id!==`goal`||i)&&(e.id!=="default"||r));return a.length?(0,G.jsx)(pb,{className:`composer-command-menu`,shouldFilter:!1,"aria-label":`斜杠命令`,children:(0,G.jsx)(pb.List,{children:a.map((e,r)=>(0,G.jsxs)(pb.Item,{value:e.id,"data-active":r===t?`true`:`false`,onSelect:()=>n(e.id),children:[(0,G.jsx)(m6,{id:e.id}),(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.description})]}),(0,G.jsx)(`kbd`,{children:e.slash})]},e.id))})}):null}var _6=[{value:``,label:`自动`,description:`使用模型或 Agent 的默认推理强度`},{value:`low`,label:`低`,description:`优先缩短响应时间`},{value:`medium`,label:`中`,description:`平衡速度与推理深度`},{value:`high`,label:`高`,description:`优先更充分的推理`}];function v6({value:e,onChange:t,active:n}){let[r,i]=(0,s.useState)(!1);(0,s.useEffect)(()=>{n||i(!1)},[n]);let a=Q3(e),o=e===`ask`?(0,G.jsx)(ke,{size:15}):e===`full`?(0,G.jsx)(at,{size:15}):(0,G.jsx)(ot,{size:15});return(0,G.jsxs)(od,{open:r,onOpenChange:i,children:[(0,G.jsx)(sd,{asChild:!0,children:(0,G.jsxs)(`button`,{className:`chat-approval-trigger ${e}`,type:`button`,"aria-label":`批准模式:${a.label}`,title:`${a.label};下一轮生效`,children:[o,(0,G.jsx)(`span`,{children:a.compactLabel}),(0,G.jsx)(H,{size:13})]})}),(0,G.jsx)(cd,{children:(0,G.jsxs)(ld,{className:`chat-approval-menu`,side:`top`,sideOffset:9,align:`start`,collisionPadding:12,children:[(0,G.jsxs)(`div`,{className:`chat-approval-menu-heading`,children:[(0,G.jsx)(`strong`,{children:`如何批准 Agent 操作?`}),(0,G.jsx)(`span`,{children:`下一轮生效`})]}),(0,G.jsx)(fd,{value:e,onValueChange:e=>t(X3(e)),children:Y3.map(e=>(0,G.jsxs)(pd,{value:e.value,className:`chat-approval-option ${e.value}`,children:[(0,G.jsx)(`span`,{className:`chat-approval-option-icon`,children:e.value===`ask`?(0,G.jsx)(ke,{size:17}):e.value===`full`?(0,G.jsx)(at,{size:17}):(0,G.jsx)(ot,{size:17})}),(0,G.jsxs)(`span`,{className:`chat-approval-option-copy`,children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.description})]}),(0,G.jsx)(md,{className:`chat-approval-indicator`,children:(0,G.jsx)(V,{size:16})})]},e.value))})]})})]})}function y6({models:e,model:t,reasoningEffort:n,disabled:r,active:i,allowModelSelection:a,allowReasoning:o,onModelChange:c,onReasoningEffortChange:l,onConfigure:u}){let[d,f]=(0,s.useState)(!1);(0,s.useEffect)(()=>{i||f(!1)},[i]);let p=e.find(e=>e.id===t),m=p?.label||t||`未绑定模型`,h=p?.reasoningEfforts||[],g=o&&h.length>0,_=_6.find(e=>e.value===n)?.label||`自动`;return!a&&!g?null:a&&e.length===0?(0,G.jsxs)(`button`,{className:`chat-model-trigger missing`,type:`button`,"aria-label":`当前 Agent 未绑定模型,前往配置`,title:`当前 Agent 未绑定模型`,onClick:u,children:[(0,G.jsx)(L,{size:14}),(0,G.jsx)(`span`,{children:`未绑定模型`})]}):(0,G.jsxs)(od,{open:d,onOpenChange:f,children:[(0,G.jsx)(sd,{asChild:!0,children:(0,G.jsxs)(`button`,{className:`chat-model-trigger chat-model-summary-trigger`,type:`button`,disabled:r,"aria-label":a?g?`模型 ${m},推理强度 ${_}`:`模型 ${m}`:`推理强度 ${_}`,title:`${a?`选择模型`:``}${a&&g?`与`:``}${g?`推理强度`:``};下一轮生效`,children:[(0,G.jsx)(`span`,{children:a?m:`推理强度`}),g&&(0,G.jsx)(`b`,{children:_}),(0,G.jsx)(H,{size:13})]})}),(0,G.jsx)(cd,{children:(0,G.jsxs)(ld,{className:`chat-model-menu chat-model-reasoning-menu`,side:`top`,sideOffset:9,align:`end`,collisionPadding:12,children:[a&&(0,G.jsxs)(gd,{children:[(0,G.jsxs)(_d,{className:`chat-model-settings-row`,children:[(0,G.jsx)(`strong`,{children:`模型`}),(0,G.jsx)(`span`,{children:m}),(0,G.jsx)(te,{size:16})]}),(0,G.jsx)(cd,{children:(0,G.jsx)(vd,{className:`chat-model-menu chat-model-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(fd,{value:t,onValueChange:c,children:e.map(e=>(0,G.jsxs)(pd,{value:e.id,className:`chat-model-option`,children:[(0,G.jsx)(`span`,{children:e.label}),(0,G.jsx)(md,{children:(0,G.jsx)(V,{size:15})})]},e.id))})})})]}),g&&(0,G.jsxs)(gd,{children:[(0,G.jsxs)(_d,{className:`chat-model-settings-row`,children:[(0,G.jsx)(`strong`,{children:`推理强度`}),(0,G.jsx)(`span`,{children:_}),(0,G.jsx)(te,{size:16})]}),(0,G.jsx)(cd,{children:(0,G.jsx)(vd,{className:`chat-model-menu chat-model-submenu chat-reasoning-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(fd,{value:n,onValueChange:e=>l(e),children:_6.filter(e=>e.value===``||h.includes(e.value)).map(e=>(0,G.jsxs)(pd,{value:e.value,className:`chat-reasoning-option`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:e.label}),(0,G.jsx)(`small`,{children:e.description})]}),(0,G.jsx)(md,{children:(0,G.jsx)(V,{size:15})})]},e.value||`auto`))})})})]})]})})]})}function b6({input:e,placeholder:t,disabled:n,active:r,attachments:i,mode:a,approvalMode:o,models:c,model:l,reasoningEffort:u,commandIndex:d=0,contextControl:f,sendControl:p,canSend:m,textareaRef:h,onInputChange:g,onFiles:_,onRemoveAttachment:v,onSetMode:y,onStartGoal:b,onApprovalModeChange:x,onModelChange:S,onReasoningEffortChange:C,onConfigureModel:w,onCommandSelect:T,onCommandIndexChange:E,onSend:D,allowAttachments:O=!0,allowPlan:k=!0,allowGoal:A=!0,allowApproval:j=!0,allowModelSelection:M=!0,allowReasoning:N=!0,attachmentAccept:P,attachmentLimit:F=4}){let I=(0,s.useRef)(null),L=h||I,R=r6(e).filter(e=>(e.id!==`plan`||k)&&(e.id!==`goal`||A)&&(e.id!=="default"||k));function z(e){if(R.length&&[`ArrowDown`,`ArrowUp`].includes(e.key)){e.preventDefault();let t=e.key===`ArrowDown`?1:-1;E?.((d+t+R.length)%R.length);return}if(R.length&&e.key===`Escape`){e.preventDefault(),g(``);return}if(e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing){if(e.preventDefault(),R.length){T(R[Math.min(d,R.length-1)].id);return}D()}}return(0,G.jsxs)(`div`,{className:`chat-composer`,"data-ui":`sender`,children:[(0,G.jsx)(g6,{input:e,activeIndex:d,onSelect:T,allowPlan:k,allowGoal:A}),O&&i.length>0&&(0,G.jsx)(`div`,{className:`chat-attachment-list`,"aria-label":`本轮附件`,role:`list`,children:i.map(e=>(0,G.jsxs)(`article`,{className:`chat-attachment-chip ${e.kind}`,role:`listitem`,children:[e.kind===`image`&&e.previewUrl?(0,G.jsx)(`img`,{src:e.previewUrl,alt:`${e.name} 预览`}):(0,G.jsx)(`span`,{className:`chat-attachment-icon`,children:(0,G.jsx)(Ce,{size:15})}),(0,G.jsxs)(`span`,{className:`chat-attachment-copy`,children:[(0,G.jsx)(`strong`,{children:e.name}),(0,G.jsxs)(`small`,{children:[e.kind===`image`?`图片`:e.kind===`text`?`文本`:`文件`,` · `,p6(e.size),` · 已就绪`]})]}),(0,G.jsx)(`button`,{type:`button`,"aria-label":`移除附件 ${e.name}`,onClick:()=>v(e.id),children:(0,G.jsx)(bt,{size:13})})]},e.id))}),(0,G.jsx)(`textarea`,{ref:L,rows:1,value:e,onChange:e=>g(e.target.value),onKeyDown:z,placeholder:t,"aria-label":`消息`,disabled:n}),(0,G.jsxs)(`div`,{className:`chat-composer-footer`,children:[(0,G.jsx)(h6,{disabled:n,active:r,allowAttachments:O,allowPlan:k,allowGoal:A,onTogglePlan:()=>y(a===`plan`?`default`:`plan`),onStartGoal:b,onFiles:_,attachmentAccept:P,attachmentLimit:F}),k&&a===`plan`&&(0,G.jsxs)(`button`,{className:`chat-mode-chip`,type:`button`,title:`点击返回默认模式`,onClick:()=>y(`default`),children:[(0,G.jsx)(Me,{size:14}),(0,G.jsx)(`span`,{children:`计划`})]}),j&&(0,G.jsx)(v6,{value:o,onChange:x,active:r}),(0,G.jsx)(`span`,{className:`chat-composer-spacer`}),f,(0,G.jsx)(y6,{models:c,model:l,reasoningEffort:u,disabled:n,active:r,allowModelSelection:M,allowReasoning:N,onModelChange:S,onReasoningEffortChange:C,onConfigure:w}),p||(0,G.jsx)(`button`,{className:`chat-send-button`,type:`button`,"aria-label":`发送消息`,title:`发送消息`,onClick:D,disabled:!m||n,children:(0,G.jsx)(nt,{size:15})})]})]})}function x6(e){let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n?`${n}时 ${r}分`:r?`${r}分 ${i}秒`:`${i}秒`}function S6(e){if(!e)return`刚刚启动`;let t=new Date(e);return Number.isNaN(t.getTime())?`刚刚启动`:`${new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(t)} 启动`}function C6({mode:e,status:t,objective:n,startedAt:r,elapsedMs:i,now:a,onPause:o,onResume:c,onStop:l}){let[u,d]=(0,s.useState)(a??Date.now()),f=(0,s.useMemo)(()=>r?Date.parse(r):NaN,[r]),p=t===`running`,m=t===`waiting`,h=t===`paused`,g=e===`goal`?ft:Me,_=m?e===`goal`?`目标等待输入`:`计划等待输入`:h?e===`goal`?`目标已暂停`:`计划已暂停`:e===`goal`?`目标执行中`:`正在规划`,v=i??(Number.isFinite(f)?Math.max(0,u-f):0);return(0,s.useEffect)(()=>{if(!p||a!=null)return;let e=window.setInterval(()=>d(Date.now()),1e3);return()=>window.clearInterval(e)},[a,p]),(0,G.jsxs)(`div`,{className:`runtime-mode-bar ${e} ${t}`,"data-testid":`runtime-mode-bar`,children:[(0,G.jsx)(`span`,{className:`runtime-mode-icon`,children:(0,G.jsx)(g,{size:15})}),(0,G.jsxs)(`div`,{className:`runtime-mode-copy`,children:[(0,G.jsxs)(`span`,{children:[(0,G.jsx)(`strong`,{children:_}),(0,G.jsx)(`span`,{children:n})]}),(0,G.jsxs)(`small`,{children:[(0,G.jsx)(ue,{size:12}),` `,S6(r),` · `,x6(v)]})]}),(0,G.jsxs)(`div`,{className:`runtime-mode-actions`,children:[p&&o&&(0,G.jsx)(`button`,{type:`button`,onClick:o,"aria-label":`暂停${e===`goal`?`目标`:`计划`}`,title:`暂停`,children:(0,G.jsx)(Je,{size:14,fill:`currentColor`})}),h&&c&&(0,G.jsx)(`button`,{type:`button`,onClick:c,"aria-label":`继续${e===`goal`?`目标`:`计划`}`,title:`继续`,children:(0,G.jsx)(Xe,{size:14,fill:`currentColor`})}),(0,G.jsx)(`button`,{type:`button`,onClick:l,"aria-label":`结束${e===`goal`?`目标`:`计划`}`,title:`结束`,children:(0,G.jsx)(ut,{size:13,fill:`currentColor`})})]})]})}function w6(e){return e.replace(/(api[_ -]?key|authorization|bearer)(\s*[:=]\s*)[^\s,;]+/gi,`$1$2***`).replace(/\bsk-[A-Za-z0-9_-]{6,}\b/g,`sk-***`).replace(/\b[A-Za-z0-9_-]{24,}\.{0,3}\b/g,e=>e.startsWith(`run_`)||e.startsWith(`resp_`)?e:`***`)}function T6(e){let t=e.toLocaleLowerCase();return/api.?key|credential|auth|unauthorized|401|403|凭证/.test(t)?{title:`模型凭证无效或已过期`,message:`请更新模型 API Key,验证连接后重新运行本轮消息。`,recoverable:`credential`}:/must configure model|model.*not configured|未配置模型|未绑定模型/.test(t)?{title:`当前 Agent 尚未绑定模型`,message:`先在 Agent 配置中绑定一个可用模型,再重新运行本轮消息。`,recoverable:`model`}:{title:`Agent 运行失败`,message:`本轮没有生成结果。可以重新运行;若问题持续,请展开技术详情定位原因。`,recoverable:`retry`}}function E6(e){if(!(e instanceof i4))return e instanceof Error?e.message:String(e);switch(e.code){case`conversation_run_identity_missing`:return`会话流在返回可恢复的 Run 标识前中断,请刷新会话查看运行结果。`;case`conversation_reconnect_exhausted`:return`会话流已断开,自动续流后仍未到达终态;运行仍在后台继续,请刷新会话查看结果。`;case`conversation_input_unsupported`:return`当前 Agent 不支持本轮选择的输入能力,请调整附件、模型或运行模式后重试。`;case`conversation_session_mismatch`:return`会话已发生变化,请刷新后重试。`;case`conversation_contract_mismatch`:return`Agent 返回的会话数据与当前协议不兼容,请刷新或改用旧版兼容入口。`;case`conversation_http_error`:case`conversation_stream_error`:return`云端会话连接中断,请稍后重试;已开始的运行仍可从会话记录恢复。`;case`conversation_aborted`:return`本轮会话已停止。`}}function D6(e,...t){return e.status===`legacy`||e.status===`declared`&&j4(e.surface,...t)}function O6(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function k6({usedTokens:e,limitTokens:t,known:n,percent:r}){let i=(0,s.useId)(),a=c3({usedTokens:e,limitTokens:t,known:n,percent:r}),o=`${a.title}:${a.value},${a.detail}`;return(0,G.jsxs)(`span`,{className:`chat-context-ring${n?``:` unknown`}`,role:`img`,"aria-label":o,"aria-describedby":i,tabIndex:0,children:[(0,G.jsxs)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,G.jsx)(`circle`,{className:`chat-context-track`,cx:`12`,cy:`12`,r:`8.5`,pathLength:`100`}),(0,G.jsx)(`circle`,{className:`chat-context-value`,cx:`12`,cy:`12`,r:`8.5`,pathLength:`100`,strokeDasharray:`${n?r:12} ${n?100-r:88}`})]}),(0,G.jsxs)(`span`,{id:i,role:`tooltip`,className:`chat-context-tooltip`,children:[(0,G.jsx)(`span`,{children:a.title}),(0,G.jsx)(`strong`,{children:a.value}),(0,G.jsx)(`small`,{children:a.detail})]})]})}function A6(e){return`${e}_${typeof crypto.randomUUID==`function`?crypto.randomUUID().replaceAll(`-`,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function j6(e){if(!e)return`刚刚`;let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=new Date;return t.toDateString()===n.toDateString()?new Intl.DateTimeFormat(`zh-CN`,{hour:`2-digit`,minute:`2-digit`}).format(t):new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`}).format(t)}function M6(e){if(!e)return`刚刚`;let t=new Date(e);return Number.isNaN(t.getTime())?``:new Intl.DateTimeFormat(`zh-CN`,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(t)}function N6(e,t=34){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}function P6(e){if(!Number.isFinite(e)||Number(e)<0)return``;let t=Number(e)/1e3;return t<10?`${t.toFixed(1)} 秒`:`${Math.round(t)} 秒`}async function F6(e){let t=await e.clone().json().catch(()=>null);return t?.error?.message||t?.Message||t?.message||`请求失败(HTTP ${e.status})`}async function I6(e,t){let n;n=e.kind===`image`&&e.dataUrl?await(await fetch(e.dataUrl,{signal:t})).blob():new Blob([e.text||``],{type:e.mimeType||`text/plain`});let r=new FormData;r.append(`file`,new File([n],e.name,{type:e.mimeType||n.type||`application/octet-stream`}));let i=await g(`/api/v1/conversation-attachments`,{method:`POST`,body:r,signal:t});if(!i.ok)throw Error(await F6(i));let a=await i.json();if(typeof a?.attachmentRef!=`string`||typeof a?.mediaType!=`string`||typeof a?.name!=`string`)throw Error(`附件上传响应无效`);return a}function L6({error:e,onConfigure:t,onOpenSettings:n,onRetry:r}){let i=T6(e),a=i.recoverable===`credential`?n:t;return(0,G.jsxs)(`div`,{className:`chat-run-error`,role:`alert`,children:[(0,G.jsx)(`span`,{className:`chat-run-error-icon`,children:(0,G.jsx)(at,{size:17})}),(0,G.jsxs)(`div`,{className:`chat-run-error-copy`,children:[(0,G.jsx)(`strong`,{children:i.title}),(0,G.jsx)(`p`,{children:i.message}),(0,G.jsxs)(`div`,{className:`chat-run-error-actions`,children:[i.recoverable!==`retry`&&a&&(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:a,children:i.recoverable===`credential`?`配置凭证`:`配置 Agent`}),r&&(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:r,children:`重新运行`})]}),(0,G.jsxs)(`details`,{className:`chat-run-error-detail`,children:[(0,G.jsx)(`summary`,{children:`技术详情`}),(0,G.jsx)(`pre`,{children:w6(e)})]})]})]})}function R6(e){return e===`command`?(0,G.jsx)(pt,{size:14}):e===`approval`?(0,G.jsx)(at,{size:14}):(0,G.jsx)(yt,{size:14})}function z6(e){return e.kind===`command`?`命令`:e.kind===`approval`?`人工确认`:`工具`}function B6(e){let t=e.replace(/```[\s\S]*?```/g,` `).replace(/[`#>*_[\]()-]+/g,` `).replace(/\s+/g,` `).trim();return t?N6(t.split(/[。!?!?]+|\.(?=\s|$)/).map(e=>e.trim()).filter(Boolean).at(-1)||t,72):``}function V6({reasoning:e,activities:t,streaming:n=!1,durationMs:r}){if(!e&&t.length===0)return null;let i=t.find(e=>e.status===`running`||e.status===`waiting`),a=P6(r),o=n?i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:B6(e)?`正在思考 · ${B6(e)}`:`正在思考`:a?`已思考(用时 ${a})`:t.length>0?`已完成思考 · ${t.length} 项操作`:`查看思考过程`;return(0,G.jsxs)(`details`,{className:`chat-processing-group`,open:n,"data-ui":`think`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(L,{size:15,className:`chat-processing-icon`}),(0,G.jsx)(`span`,{children:o}),n&&(0,G.jsx)(Ne,{size:13,className:`animate-spin`}),(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),(0,G.jsxs)(`div`,{className:`chat-processing-content`,children:[e&&(0,G.jsx)(`div`,{className:`chat-reasoning-content`,children:e}),t.map(e=>(0,G.jsx)(H6,{activity:e},e.id))]})]})}function H6({activity:e}){let t=!!e.detail||Object.keys(e.data).length>2,n=(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`chat-activity-icon`,children:R6(e.kind)}),(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:z6(e)}),(0,G.jsx)(`strong`,{children:e.title})]}),(0,G.jsx)(`span`,{className:`chat-activity-status ${e.status}`,children:e.status===`completed`?`已完成`:e.status===`failed`?`失败`:e.status===`waiting`?`等待确认`:`运行中`})]});return t?(0,G.jsxs)(`details`,{className:`chat-activity-card ${e.kind}`,children:[(0,G.jsxs)(`summary`,{children:[n,(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),(0,G.jsx)(`pre`,{children:e.detail||JSON.stringify(e.data,null,2)})]}):(0,G.jsx)(`div`,{className:`chat-activity-card ${e.kind}`,children:(0,G.jsx)(`div`,{className:`chat-activity-row`,children:n})})}function U6({items:e,streaming:t}){let n=e.filter(e=>![`artifact`,`a2ui`,`error`].includes(e.item.kind));return n.length?(0,G.jsx)(`div`,{className:`chat-conversation-timeline`,"data-ui":`conversation-timeline`,children:n.map(e=>{let{item:n}=e;if(n.kind===`assistant_text`){let r=typeof n.payload.text==`string`?n.payload.text:``;return r?(0,G.jsx)(J6,{streaming:t&&n.lifecycle===`streaming`,children:r},e.key):null}if(n.kind===`reasoning`){let r=typeof n.payload.text==`string`?n.payload.text:``;return(0,G.jsxs)(`details`,{className:`chat-processing-group`,open:t&&n.lifecycle!==`completed`,"data-ui":`think`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(L,{size:15,className:`chat-processing-icon`}),(0,G.jsx)(`span`,{children:n.lifecycle===`completed`?`查看思考过程`:`正在思考`}),t&&n.lifecycle!==`completed`&&(0,G.jsx)(Ne,{size:13,className:`animate-spin`}),(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),r&&(0,G.jsx)(`div`,{className:`chat-processing-content`,children:(0,G.jsx)(`div`,{className:`chat-reasoning-content`,children:r})})]},e.key)}if(n.kind===`tool_call`||n.kind===`approval`){let t=n.kind===`approval`&&n.lifecycle===`pending`,r={id:e.key,kind:n.kind===`approval`?`approval`:`tool`,title:String(n.payload.tool||n.payload.title||n.payload.kind||(t?`等待批准`:`调用工具`)),status:n.lifecycle===`failed`?`failed`:n.lifecycle===`completed`?`completed`:t?`waiting`:`running`,detail:k3(n.payload),data:n.payload};return(0,G.jsx)(H6,{activity:r},e.key)}if(n.kind===`plan`||n.kind===`goal`){let r=typeof n.payload.text==`string`?n.payload.text:typeof n.payload.objective==`string`?n.payload.objective:``;return(0,G.jsxs)(`details`,{className:`chat-activity-card`,open:t&&n.lifecycle!==`completed`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:n.kind===`plan`?`计划`:`目标`}),(0,G.jsx)(`strong`,{children:r||(n.kind===`plan`?`正在更新计划`:`正在更新目标`)})]}),(0,G.jsx)(H,{size:14,className:`details-chevron`})]}),r&&(0,G.jsx)(`pre`,{children:r})]},e.key)}return null})}):null}function W6({surfaces:e,approvals:t=[],onInteraction:n}){let r=e.filter(e=>e.interaction?.status===`pending`);return!r.length&&!t.length?null:(0,G.jsxs)(`div`,{className:`chat-pending-interactions`,"aria-label":`待处理确认`,"data-ui":`interaction-tray`,children:[(0,G.jsxs)(`div`,{className:`chat-pending-interactions-heading`,children:[(0,G.jsx)(at,{size:16}),(0,G.jsx)(`strong`,{children:`等待你的确认`}),(0,G.jsx)(`span`,{children:`处理后将继续当前对话`})]}),r.map(e=>(0,G.jsx)(t6,{surface:e,onSubmit:n},e.id)),t.map(e=>(0,G.jsx)(`div`,{className:`chat-activity-card approval`,"data-ui":`approval-card`,children:(0,G.jsxs)(`div`,{className:`chat-activity-row`,children:[(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:`工具操作`}),(0,G.jsx)(`strong`,{children:e.title})]}),(0,G.jsxs)(`span`,{className:`chat-run-error-actions`,children:[(0,G.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>{n(e.id,e.revision,`reject`,{})},children:`拒绝`}),(0,G.jsx)(`button`,{className:`button primary small`,type:`button`,onClick:()=>{n(e.id,e.revision,`approve`,{})},children:`允许`})]})]})},e.id))]})}function G6({runId:e,status:t,onInteraction:n}){let[r,i]=(0,s.useState)([]);return(0,s.useEffect)(()=>{let n=!1;async function r(){try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return;let r=[],a=E3(e=>{let{type:t,...n}=e;r.push({id:r.length+1,type:t,data:n})});a.push(await t.text()),a.finish(),n||i(r)}catch{}}r();let a=t===`WAITING_INPUT`?window.setInterval(r,500):null;return()=>{n=!0,a!==null&&window.clearInterval(a)}},[e,t]),(0,G.jsx)(W6,{surfaces:T3(r),onInteraction:(t,r,i,a)=>n(e,t,r,i,a)})}function K6({runId:e,status:t,durationMs:n,showOutput:r=!1,onInteraction:i}){let[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let n=!1;async function r(){try{let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)throw Error(await F6(t));let r=[],i=E3(e=>{let{type:t,...n}=e;r.push({id:r.length+1,type:t,data:n})});i.push(await t.text()),i.finish(),n||o(r)}catch{}finally{n||l(!0)}}r();let i=[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(t))?window.setInterval(r,500):null;return()=>{n=!0,i!==null&&window.clearInterval(i)}},[e,t]);let u=(0,s.useMemo)(()=>N3(a),[a]),d=(0,s.useMemo)(()=>T3(a),[a]),f=d.filter(e=>e.interaction?.status!==`pending`);return!c&&[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(t))?(0,G.jsxs)(`div`,{className:`chat-activity-loading`,children:[(0,G.jsx)(Ne,{size:13,className:`animate-spin`}),` 正在读取运行事件`]}):!u.reasoning&&!u.output&&u.activities.length===0&&d.length===0?t===`RUNNING`?(0,G.jsxs)(`span`,{className:`message-loading`,"aria-label":`正在生成`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}):null:(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(V6,{reasoning:u.reasoning,activities:u.activities,streaming:t===`RUNNING`,durationMs:n}),f.map(t=>(0,G.jsx)(t6,{surface:t,onSubmit:(t,n,r,a)=>i(e,t,n,r,a)},t.id)),r&&u.output&&(0,G.jsx)(J6,{children:u.output})]})}function q6({children:e}){let[t,n]=(0,s.useState)(!1),r=s.Children.toArray(e)[0]??null,i=(0,s.isValidElement)(r)?r.props:{},a=i.className?.replace(/^language-/,``)||`代码`,o=String(i.children??``).replace(/\n$/,``);async function c(){if(!(!navigator.clipboard||!o))try{await navigator.clipboard.writeText(o),n(!0),window.setTimeout(()=>n(!1),1600)}catch{n(!1)}}return(0,G.jsxs)(`div`,{className:`chat-code-block`,children:[(0,G.jsxs)(`div`,{className:`chat-code-header`,children:[(0,G.jsx)(`span`,{children:a}),(0,G.jsxs)(`button`,{type:`button`,onClick:()=>{c()},"aria-label":t?`已复制代码`:`复制代码`,children:[t?(0,G.jsx)(V,{size:13}):(0,G.jsx)(me,{size:13}),(0,G.jsx)(`span`,{children:t?`已复制`:`复制`})]})]}),(0,G.jsx)(`pre`,{children:e})]})}function J6({children:e,streaming:t=!1}){return(0,G.jsx)(`div`,{className:`chat-markdown${t?` streaming`:``}`,children:(0,G.jsx)(CP,{remarkPlugins:[DL],components:{a:({href:e,children:t})=>(0,G.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,children:t}),code:({className:e,children:t})=>(0,G.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>(0,G.jsx)(q6,{children:e})},children:e})})}function Y6({run:e,agentName:t,agentAppearance:n,onInteraction:r,onConfigure:i,onOpenSettings:a,onRetry:o}){let s=e.status&&![`COMPLETED`,`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(e.status),c=e.output||e.error?.message||(s?`运行状态:${e.status}`:``);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`article`,{className:`message user`,"data-ui":`bubble`,"data-role":`user`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(`strong`,{children:`你`}),(0,G.jsx)(`span`,{children:M6(e.startedAt)})]}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(`span`,{className:`plain-message`,children:e.input})})]}),(0,G.jsxs)(`article`,{className:`message assistant${s?` error`:``}`,"data-ui":`bubble`,"data-role":`assistant`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(Ct,{name:t,appearance:n,size:`xs`}),(0,G.jsx)(`strong`,{children:t}),(0,G.jsx)(`span`,{children:M6(e.completedAt||e.startedAt)}),e.model&&(0,G.jsx)(`span`,{className:`message-model`,children:e.model})]}),(0,G.jsxs)(`div`,{className:`message-content`,children:[(0,G.jsx)(K6,{runId:e.id,status:e.status,durationMs:e.durationMs,showOutput:[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status)),onInteraction:r}),[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status))?null:s?(0,G.jsx)(L6,{error:c,onConfigure:i,onOpenSettings:a,onRetry:()=>o(e.input)}):c?(0,G.jsx)(J6,{children:c}):null]})]})]})}function X6({prompt:e,stream:t,agentName:n,agentAppearance:r,onInteraction:i,onConfigure:a,onOpenSettings:o,onRetry:s}){let c=t.timeline.length>0;return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`article`,{className:`message user`,"data-ui":`bubble`,"data-role":`user`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(`strong`,{children:`你`}),(0,G.jsx)(`span`,{children:`刚刚`})]}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(`span`,{className:`plain-message`,children:e})})]}),(0,G.jsxs)(`article`,{className:`message assistant streaming-turn${t.status===`failed`?` error`:``}`,"data-ui":`bubble`,"data-role":`assistant`,children:[(0,G.jsxs)(`div`,{className:`message-meta`,children:[(0,G.jsx)(Ct,{name:n,appearance:r,size:`xs`}),(0,G.jsx)(`strong`,{children:n}),(0,G.jsx)(`span`,{children:t.status===`streaming`?`正在生成`:`刚刚`})]}),(0,G.jsxs)(`div`,{className:`message-content`,children:[c?(0,G.jsx)(U6,{items:t.timeline,streaming:t.status===`streaming`}):(0,G.jsx)(V6,{reasoning:t.reasoning,activities:t.activities,streaming:t.status===`streaming`}),t.surfaces.filter(e=>e.interaction?.status!==`pending`).map(e=>(0,G.jsx)(t6,{surface:e,onSubmit:(e,n,r,a)=>i(t.runId,e,n,r,a)},e.id)),t.artifacts.map(e=>(0,G.jsx)(`div`,{className:`chat-activity-card artifact`,"data-ui":`artifact`,children:(0,G.jsxs)(`div`,{className:`chat-activity-row`,children:[(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:e.mimeType}),(0,G.jsx)(`strong`,{children:e.name})]}),e.uri&&(0,G.jsx)(`a`,{href:e.uri,target:`_blank`,rel:`noreferrer`,children:`打开`})]})},e.id)),t.fallbacks.map(e=>(0,G.jsx)(`div`,{className:`chat-activity-card unknown${e.failed?` failed`:``}`,"data-ui":`conversation-fallback`,role:e.failed?`alert`:`status`,children:(0,G.jsx)(`div`,{className:`chat-activity-row`,children:(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:e.title}),(0,G.jsx)(`strong`,{children:e.detail})]})})},e.id)),!c&&t.output?(0,G.jsx)(J6,{streaming:t.status===`streaming`,children:t.output}):t.error?(0,G.jsx)(L6,{error:t.error,onConfigure:a,onOpenSettings:o,onRetry:()=>s(e)}):t.status===`cancelled`?(0,G.jsx)(`span`,{className:`plain-message`,children:`运行已停止`}):c||t.artifacts.length||t.fallbacks.length||t.surfaces.length?null:(0,G.jsxs)(`span`,{className:`message-loading`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]})]})]})]})}function Z6({agentId:e,agentName:t,agentAppearance:n,active:r=!0,refreshTick:i=0,onRunChanged:a,onConfigureAgent:o,onOpenSettings:c}){let[l,u]=(0,s.useState)([]),[d,f]=(0,s.useState)([]),[p,m]=(0,s.useState)(``),[h,_]=(0,s.useState)(``),[v,y]=(0,s.useState)(``),[b,x]=(0,s.useState)(``),[S,C]=(0,s.useState)(`risk`),[w,T]=(0,s.useState)(`default`),[E,D]=(0,s.useState)(``),[O,k]=(0,s.useState)([]),[A,j]=(0,s.useState)({status:`loading`}),[M,P]=(0,s.useState)(0),[F,I]=(0,s.useState)(null),[L,R]=(0,s.useState)(``),[z,B]=(0,s.useState)(!0),[V,H]=(0,s.useState)(``),[ee,te]=(0,s.useState)(!1),[ne,U]=(0,s.useState)(!1),re=(0,s.useRef)(null),ie=(0,s.useRef)(null),ae=(0,s.useRef)(null),oe=(0,s.useRef)(!0),se=(0,s.useRef)(new Map),ce=(0,s.useMemo)(()=>A6(`ses_surface`),[e]),le=(0,s.useMemo)(()=>m3(l,e),[l,e]),ue=(0,s.useMemo)(()=>{let e=v.trim().toLocaleLowerCase();return e?le.filter(t=>t.title.toLocaleLowerCase().includes(e)):le},[v,le]),de=le.find(e=>e.id===h)?.runs||[],W=d3(de),fe=F?.status||String(W?.status||``).toLowerCase(),pe=[`streaming`,`paused`,`waiting_input`].includes(fe)||!!W,me=f3(de,F&&L&&F.sessionId===h?W?.id:void 0),he=fe===`paused`?`PAUSED`:fe===`waiting_input`?`WAITING`:`RUNNING`,ge=F?.goalObjective||W?.goalObjective?`goal`:(F?.collaborationMode||W?.collaborationMode)===`plan`?`plan`:null,_e=fe===`paused`?`paused`:fe===`waiting_input`?`waiting`:`running`,ve=F?.goalObjective||W?.goalObjective||L||W?.input||``,ye=F?.startedAt||W?.startedAt,be=fe===`paused`?W?.durationMs:void 0,xe=F?[]:me.filter(e=>String(e.status)===`WAITING_INPUT`),Se=d.find(e=>e.id===p),Ce=F?.usage,we=s3(Ce?.input_tokens??Ce?.inputTokens??l3(de),Se?.context_window_tokens??Se?.contextWindowTokens),Te=d.map(e=>({id:e.id,label:e.display_name||e.displayName||e.id,reasoningEfforts:O6(e)})),Ee=O6(Se).includes(E)?E:``,De=D6(A,`text`),Oe=D6(A,`attachment.image`,`attachments`),ke=D6(A,`attachment.file`,`attachments`),Ae=Oe||ke,je=D6(A,`plan`),Me=D6(A,`goal`),Pe=D6(A,`approval`,`approval.mode`),Ie=D6(A,`model.select`),Le=D6(A,`reasoning.effort`),Re=A.status===`loading`,ze=Oe&&ke?s6:Oe?`image/*`:s6.split(`,`).filter(e=>e!==`image/*`).join(`,`);(0,s.useEffect)(()=>{E&&!O6(Se).includes(E)&&D(``)},[E,Se]),(0,s.useEffect)(()=>{let t=new AbortController,n=!1,r=h||ce;return j({status:`loading`}),new o3({fetch:g}).getSurface(e,r,{signal:t.signal}).then(({buildId:e,surface:t})=>{if(t.sessionId!==r)throw new i4(`conversation_session_mismatch`,`Conversation surface changed session identity.`);n||j({status:`declared`,buildId:e,surface:t})}).catch(e=>{if(!(n||e instanceof Error&&e.name===`AbortError`||e instanceof i4&&e.code===`conversation_aborted`)){if(e instanceof i4&&e.code===`conversation_http_error`&&e.status===404){j({status:`legacy`});return}j({status:`error`})}}),()=>{n=!0,t.abort()}},[e,h,ce,i]),(0,s.useEffect)(()=>{A.status===`declared`&&(!je&&w===`plan`&&(T(`default`),localStorage.setItem(`agentkit:chat:collaboration:${e}`,`default`)),!Ae&&O.length&&k([]),!Le&&E&&D(``))},[e,Ae,je,Le,O.length,w,A.status,E]);let Be=(0,s.useCallback)(async()=>{let t=await g(`/api/v1/runs`);if(!t.ok)throw Error(await F6(t));let n=(await t.json()).items||[],r=m3(n,e);u(n),_(e=>e&&r.some(t=>t.id===e)?e:r[0]?.id||``)},[e]);(0,s.useEffect)(()=>{U(!1)},[e]);let Ve=(0,s.useCallback)(async()=>{let[,t]=await Promise.all([Be(),g(`/api/v1/agents/${encodeURIComponent(e)}/models`)]);if(!t.ok)throw Error(await F6(t));let n=await t.json(),r=n.Models||[];f(r),m(e=>r.some(t=>t.id===e)?e:String(n.Current||r[0]?.id||``))},[e,Be]);(0,s.useEffect)(()=>{let e=!1;return B(!0),u([]),_(``),Ve().catch(t=>{e||J(`会话加载失败`,t.message,`error`)}).finally(()=>{e||B(!1)}),()=>{e=!0,ae.current?.abort()}},[e,Ve,i]),(0,s.useEffect)(()=>{C(X3(localStorage.getItem(Z3(e))));let t=localStorage.getItem(`agentkit:chat:collaboration:${e}`);T(t===`plan`?`plan`:`default`),D(``),k([])},[e]),(0,s.useEffect)(()=>{P(0)},[b]),(0,s.useEffect)(()=>{if(!l.some(e=>[`RUNNING`,`PAUSED`,`WAITING_INPUT`].includes(String(e.status))))return;let e=window.setInterval(()=>{Be().catch(()=>{})},800);return()=>window.clearInterval(e)},[l,Be]),(0,s.useEffect)(()=>{let e=re.current;!e||!oe.current||(e.scrollTop=e.scrollHeight)},[de.length,F?.output,F?.reasoning,F?.status,F?.activities]),(0,s.useEffect)(()=>{let e=re.current;if(!e)return;let t=h?se.current.get(h):void 0;requestAnimationFrame(()=>{e.scrollTop=t??e.scrollHeight,oe.current=t===void 0||e.scrollHeight-e.scrollTop-e.clientHeight<48})},[h]),(0,s.useEffect)(()=>{let e=ie.current;e&&(e.style.height=`42px`,e.style.height=`${Math.min(Math.max(e.scrollHeight,42),160)}px`)},[b]);function He(){pe||(_(``),R(``),I(null),x(``),k([]),U(!1),oe.current=!0,requestAnimationFrame(()=>ie.current?.focus()))}function Ue(e){let t=re.current;t&&h&&se.current.set(h,t.scrollTop),_(e),U(!1),oe.current=!se.current.has(e)}function We(t){T(t),localStorage.setItem(`agentkit:chat:collaboration:${e}`,t)}function Ke(){let e=w===`plan`?`default`:`plan`;We(e),x(``),J(e===`plan`?`计划模式已开启`:`已返回默认模式`,`下一轮对话生效`,`success`),requestAnimationFrame(()=>ie.current?.focus())}function qe(e){if(e===`goal`){x(`/goal `),requestAnimationFrame(()=>ie.current?.focus());return}if(e==="default"){We(`default`),x(``),J(`已返回默认模式`,`下一轮对话生效`,`success`);return}Ke()}async function Ye(e){if(pe)return;if(!Ae){J(`当前 Agent 不支持附件`,`运行时没有声明附件输入能力。`,`error`);return}let t=e.filter(e=>e.type.startsWith(`image/`)?Oe:ke);if(t.length!==e.length&&J(`部分附件未添加`,`当前 Agent 没有声明对应的图片或文件输入能力。`,`error`),!t.length)return;let n=Math.max(0,4-O.length);if(!n){J(`附件数量已达上限`,`每轮最多 4 个`,`error`);return}let r=t.slice(0,n);if(O.reduce((e,t)=>e+t.size,0)+r.reduce((e,t)=>e+t.size,0)>15e5){J(`附件体积过大`,`每轮附件总计不能超过 1.5 MiB`,`error`);return}let i=[];for(let e of r)try{i.push(await f6(e))}catch(e){J(`无法添加附件`,e instanceof Error?e.message:String(e),`error`)}if(!i.length)return;let a=[...O,...i];if(c6(a)>15e5){J(`附件编码后体积过大`,`每轮编码后的附件总计不能超过 1.5 MiB`,`error`);return}k(a)}async function Ze(t){let n=typeof t==`string`,r=n?t:b,i=n?[]:O,s=i6(r);if(pe)return;if(Re){J(`正在确认会话能力`,`请稍后再发送。`,`error`);return}if(!De){J(`当前 Agent 不支持文字会话`,`运行时没有声明文字输入能力。`,`error`);return}if(!p){J(`当前 Agent 尚未绑定模型`,`请先完成模型绑定和凭证配置。`,`error`),o?.();return}if(s.kind===`toggle-plan`){if(!je){J(`当前 Agent 不支持计划模式`,`运行时没有声明 Plan 输入能力。`,`error`);return}Ke();return}if(s.kind===`set-default`){We(`default`),x(``),J(`已返回默认模式`,`下一轮对话生效`,`success`);return}if(s.kind===`goal`&&!Me){J(`当前 Agent 不支持长期目标`,`运行时没有声明 Goal 输入能力。`,`error`);return}if(s.kind===`goal`&&!s.objective){J(`请补充目标`,`在 /goal 后输入需要持续完成的目标`,`error`),requestAnimationFrame(()=>ie.current?.focus());return}let c=s.kind===`goal`?s.objective:``,l=s.kind===`message`?s.text||(i.length?`请分析这些附件。`:``):c;if(i.length&&!Ae){J(`当前 Agent 不支持附件`,`请移除附件后重试。`,`error`);return}if(!l&&!i.length)return;let u=h||(A.status===`declared`?A.surface.sessionId:A6(`ses`)),d=A6(`resp`),f=S,m=new AbortController;ae.current=m;let v={...h3(d,u),transport:A.status===`declared`?`conversation`:`responses`,collaborationMode:w,goalObjective:c,startedAt:new Date().toISOString()};_(u),R(l),I(v),n||x(``);let y=i;n||k([]);try{let t=e=>{v=b3(v,e),I(v)};if(A.status===`declared`){let e=await Promise.all(y.map(e=>I6(e,m.signal))),t=w4({inputId:d,sessionId:u,idempotencyKey:d,parts:[{kind:`text`,text:l},...e.map(e=>({kind:`attachment`,attachmentRef:e.attachmentRef,mediaType:e.mediaType,name:e.name}))],...Ie?{modelRef:p}:{},...Le&&Ee?{reasoning:Ee}:{},extensions:{...Pe?{"ksadk.approval":f}:{},...je?{"ksadk.collaboration":w}:{},...Me&&c?{"ksadk.goal":c}:{}}});await new o3({fetch:g}).streamTurn({bootstrap:{buildId:A.buildId,surface:A.surface},input:t,signal:m.signal,onUpdate:e=>{v=y3(v,e),I(v)}})}else{let n=await g(`/v1/responses`,{method:`POST`,headers:{"Content-Type":`application/json`},credentials:`same-origin`,signal:m.signal,body:JSON.stringify({...Ie?{model:p}:{},...Le&&Ee?{reasoning:{effort:Ee}}:{},input:a6(l,y),stream:!0,metadata:{agent_id:e,session_id:u,invocation_id:d,...Pe?{approval_mode:f}:{},...je?{collaboration_mode:w}:{},...Me&&c?{goal_objective:c}:{}}})});if(!n.ok||!n.body)throw Error(await F6(n));let r=new TextDecoder,i=E3(t),a=n.body.getReader();for(;;){let{value:e,done:t}=await a.read();if(e&&i.push(r.decode(e,{stream:!t})),t)break}i.finish()}if(v.status===`failed`)throw Error(v.error||`Agent 运行失败`);await Be(),I(null),R(``),a?.()}catch(e){if(m.signal.aborted)v={...v,status:`cancelled`},I(v);else{let t=E6(e);v={...v,status:`failed`,error:t},I(v),J(`运行失败`,t,`error`)}}finally{ae.current=null,requestAnimationFrame(()=>ie.current?.focus())}}function Qe(t){C(t),localStorage.setItem(Z3(e),t)}async function $e(){if(pe)try{let e=F?.transport===`conversation`&&F.runId?await g(`/api/v1/runs/${encodeURIComponent(F.runId)}:pause`,{method:`POST`}):F?.status===`streaming`?await g(`/v1/responses/${encodeURIComponent(F.responseId)}:pause`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(W.id)}:pause`,{method:`POST`});if(!e.ok)throw Error(await F6(e));I(e=>e&&{...e,status:`paused`}),window.setTimeout(()=>{Be().catch(()=>{})},200)}catch(e){J(`暂停运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function et(){try{let e=F?.transport===`conversation`&&F.runId?await g(`/api/v1/runs/${encodeURIComponent(F.runId)}:resume`,{method:`POST`}):F?.status===`paused`?await g(`/v1/responses/${encodeURIComponent(F.responseId)}:resume`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(W.id)}:resume`,{method:`POST`});if(!e.ok)throw Error(await F6(e));I(e=>e&&{...e,status:`streaming`}),window.setTimeout(()=>{Be().catch(()=>{})},200)}catch(e){J(`继续运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function tt(){if(pe)try{let e=F?.transport===`conversation`&&F.runId?await g(`/api/v1/runs/${encodeURIComponent(F.runId)}:cancel`,{method:`POST`}):F?await g(`/v1/responses/${encodeURIComponent(F.responseId)}/cancel`,{method:`POST`,credentials:`same-origin`}):await g(`/api/v1/runs/${encodeURIComponent(W.id)}:cancel`,{method:`POST`});if(!e.ok)throw Error(await F6(e));ae.current?.abort(),I(e=>e&&{...e,status:`cancelled`}),window.setTimeout(()=>{Be().catch(()=>{})},200)}catch(e){J(`结束运行失败`,e instanceof Error?e.message:String(e),`error`)}}async function rt(e,t,n,r,i){if(!e)throw Error(`运行尚未创建,请稍后重试`);let a=await g(`/api/v1/runs/${encodeURIComponent(e)}/interactions/${encodeURIComponent(t)}:submit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:r,data:i,expectedRevision:n,idempotencyKey:`interaction:${t}:revision-${n}`})});if(!a.ok){let e=await F6(a);throw J(`提交交互失败`,e,`error`),Error(e)}I(e=>e&&{...e,status:`streaming`,pendingApprovals:e.pendingApprovals.filter(e=>e.id!==t),surfaces:e.surfaces.map(e=>e.interaction?.id===t?{...e,interaction:{...e.interaction,status:`resolved`}}:e)}),await Be()}async function it(){if(V){te(!0);try{let e=await g(`/api/v1/sessions/${encodeURIComponent(V)}`,{method:`DELETE`});if(!e.ok)throw Error(await F6(e));h===V&&_(``),H(``),await Be(),J(`会话已删除`,`相关运行与 Trace 已从本地工作区移除。`)}catch(e){J(`删除失败`,e instanceof Error?e.message:String(e),`error`)}finally{te(!1)}}}return(0,G.jsxs)(`div`,{className:`studio-chat-shell${ne?` sessions-open`:``}`,"data-testid":`studio-chat-workbench`,children:[(0,G.jsxs)(`aside`,{className:`chat-session-sidebar`,"aria-label":`会话历史`,children:[(0,G.jsxs)(`header`,{className:`chat-session-header`,children:[(0,G.jsx)(`h2`,{children:`会话`}),(0,G.jsxs)(`div`,{className:`chat-session-header-actions`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`新对话`,title:`新对话`,onClick:He,disabled:pe,children:(0,G.jsx)(Fe,{size:16})}),(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-close`,type:`button`,"aria-label":`关闭会话历史`,title:`关闭会话历史`,onClick:()=>U(!1),children:(0,G.jsx)(bt,{size:17})})]})]}),(0,G.jsxs)(`label`,{className:`chat-session-search`,children:[(0,G.jsx)(`span`,{className:`sr-only`,children:`搜索会话`}),(0,G.jsx)(`input`,{type:`search`,value:v,onChange:e=>y(e.target.value),placeholder:`搜索会话`})]}),(0,G.jsx)(`div`,{className:`chat-session-list`,children:z?(0,G.jsxs)(`div`,{className:`chat-session-skeleton`,"aria-label":`正在加载会话`,role:`status`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}):ue.length===0?(0,G.jsx)(`div`,{className:`session-empty`,children:v?`没有匹配的会话`:`还没有会话`}):ue.map(e=>(0,G.jsxs)(`div`,{className:`chat-session-item${h===e.id?` active`:``}${e.running?` running`:``}`,children:[(0,G.jsxs)(`button`,{className:`chat-session-main`,type:`button`,"aria-current":h===e.id?`true`:void 0,onClick:()=>Ue(e.id),title:`${e.title} · ${j6(e.updatedAt)}`,children:[(0,G.jsx)(`strong`,{children:N6(e.title)}),e.running&&(0,G.jsx)(`span`,{className:`session-status ${String(e.activeStatus||`RUNNING`).toLowerCase()}`,"aria-label":e.activeStatus===`PAUSED`?`已暂停`:e.activeStatus===`WAITING_INPUT`?`等待输入`:`运行中`})]}),(0,G.jsx)(`button`,{className:`chat-session-delete`,type:`button`,"aria-label":`删除会话:${N6(e.title)}`,title:e.running||F?.status===`streaming`&&F.sessionId===e.id?`运行中不可删除`:`删除会话`,disabled:e.running||F?.status===`streaming`&&F.sessionId===e.id,onClick:()=>H(e.id),children:(0,G.jsx)(ht,{size:14})})]},e.id))})]}),(0,G.jsx)(`button`,{className:`chat-session-backdrop`,type:`button`,"aria-label":`关闭会话历史`,onClick:()=>U(!1)}),(0,G.jsxs)(`section`,{className:`chat-conversation`,"aria-label":`与 ${t} 对话`,children:[(0,G.jsxs)(`header`,{className:`chat-conversation-header`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-trigger`,type:`button`,"aria-label":`打开会话历史`,title:`会话历史`,"aria-expanded":ne,onClick:()=>U(!0),children:(0,G.jsx)(Ge,{size:17})}),(0,G.jsx)(Ct,{name:t,appearance:n,size:`sm`}),(0,G.jsx)(`h1`,{children:t}),pe&&(0,G.jsx)(`span`,{className:`badge`,"data-state":fe===`streaming`?`running`:`pending`,children:he})]}),(0,G.jsx)(`div`,{ref:re,className:`chat-message-list`,role:`log`,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-busy":pe,onScroll:e=>{let t=e.currentTarget;oe.current=t.scrollHeight-t.scrollTop-t.clientHeight<48,h&&se.current.set(h,t.scrollTop)},children:de.length===0&&!F?(0,G.jsxs)(`div`,{className:`chat-empty`,children:[(0,G.jsx)(`span`,{className:`chat-empty-icon`,children:(0,G.jsx)(N,{size:22})}),(0,G.jsxs)(`h2`,{children:[`开始与 `,t,` 对话`]}),(0,G.jsx)(`p`,{children:`消息通过统一的 Responses API 发送;思考、工具调用和结果会在同一条时间线中呈现。`}),(0,G.jsx)(`div`,{className:`suggestion-list`,children:[`先介绍你的职责、能力和工作边界。`,`根据当前上下文给出一个清晰的执行计划。`,`列出完成任务还需要我提供的信息。`].map(e=>(0,G.jsx)(`button`,{type:`button`,onClick:()=>{x(e),ie.current?.focus()},children:e},e))})]}):(0,G.jsxs)(G.Fragment,{children:[me.map(e=>(0,G.jsx)(Y6,{run:e,agentName:t,agentAppearance:n,onInteraction:rt,onConfigure:o,onOpenSettings:c,onRetry:e=>{Ze(e)}},e.id)),F&&F.sessionId===h&&L&&(0,G.jsx)(X6,{prompt:L,stream:F,agentName:t,agentAppearance:n,onInteraction:rt,onConfigure:o,onOpenSettings:c,onRetry:e=>{Ze(e)}})]})}),(0,G.jsxs)(`footer`,{className:`chat-composer-wrap`,children:[F&&F.sessionId===h?(0,G.jsx)(W6,{surfaces:F.surfaces,approvals:F.pendingApprovals,onInteraction:(e,t,n,r)=>rt(F.runId,e,t,n,r)}):xe.map(e=>(0,G.jsx)(G6,{runId:e.id,status:e.status,onInteraction:rt},e.id)),pe&&ge&&(0,G.jsx)(C6,{mode:ge,status:_e,objective:ve,startedAt:ye,elapsedMs:be,onPause:_e===`running`?$e:void 0,onResume:_e===`paused`?et:void 0,onStop:tt}),(0,G.jsx)(b6,{input:b,placeholder:Re?`正在确认会话能力…`:A.status===`error`?`会话能力加载失败,请刷新后重试`:De?w===`plan`?`描述需要规划的任务…`:`输入消息,或输入 / 使用命令…`:`当前 Agent 未开放文字输入`,disabled:pe||Re||!De,active:r,attachments:(Ae?O:[]).map(e=>({id:e.id,name:e.name,kind:e.kind,size:e.size,previewUrl:e.dataUrl})),mode:w,approvalMode:S,models:Te,model:p,reasoningEffort:E,commandIndex:M,contextControl:(0,G.jsx)(k6,{...we}),sendControl:fe===`paused`?(0,G.jsx)(`button`,{className:`chat-send-button resume`,type:`button`,"aria-label":`继续生成`,title:`继续生成`,onClick:et,children:(0,G.jsx)(Xe,{size:15,fill:`currentColor`})}):fe===`waiting_input`?(0,G.jsx)(`button`,{className:`chat-send-button pause`,type:`button`,"aria-label":`等待交互输入`,title:`请先处理上方交互卡片`,disabled:!0,children:(0,G.jsx)(Ne,{size:15,className:`animate-spin`})}):pe?(0,G.jsx)(`button`,{className:`chat-send-button pause`,type:`button`,"aria-label":`暂停生成`,title:`暂停生成`,onClick:$e,children:(0,G.jsx)(Je,{size:15,fill:`currentColor`})}):(0,G.jsx)(`button`,{className:`chat-send-button`,type:`button`,"aria-label":`发送消息`,title:`发送消息`,onClick:()=>{Ze()},disabled:Re||!De||!b.trim()&&!(Ae&&O.length),children:(0,G.jsx)(nt,{size:15})}),canSend:De&&!!(b.trim()||Ae&&O.length),textareaRef:ie,onInputChange:x,onFiles:Ye,onRemoveAttachment:e=>k(t=>t.filter(t=>t.id!==e)),onSetMode:e=>{e!==w&&Ke()},onStartGoal:()=>qe(`goal`),onApprovalModeChange:Qe,onModelChange:m,onReasoningEffortChange:D,onConfigureModel:o,onCommandSelect:qe,onCommandIndexChange:P,onSend:()=>{Ze()},allowAttachments:Ae,allowPlan:je,allowGoal:Me,allowApproval:Pe,allowModelSelection:Ie,allowReasoning:Le,attachmentAccept:ze}),(0,G.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]}),V&&(0,G.jsx)(ka,{title:`删除这个会话?`,description:`相关 Run 与 Trace 会从当前本地工作区移除。`,confirmText:`删除会话`,busy:ee,onConfirm:it,onCancel:()=>H(``)})]})}function Q6(e){AP(e,[/\r?\n|\r/g,$6])}function $6(){return{type:`break`}}function e8(){return function(e){Q6(e)}}function t8(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function n8(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(e=>{if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e;return n8(t.text??t.content??t.value??``)}return``}).filter(Boolean).join(`
+`);if(e&&typeof e==`object`){let t=e;return n8(t.text??t.content??t.value??``)}return``}function r8(e){return typeof e==`string`||typeof e==`number`?String(e):``}function i8(...e){for(let t of e){if(typeof t==`string`&&t.trim())return t.trim();if(!t||typeof t!=`object`)continue;let e=t,n=i8(e.message,e.detail,e.reason,e.error,e.text);if(n)return n}return``}function a8(e){return e&&typeof e==`object`?e:{}}function o8(e){if(!e||typeof e!=`object`)return null;let t=e,n=Object.keys(a8(t.payload)).length?a8(t.payload):t,r=a8(n.content),i=[r.runtime_event,r.runtimeEvent,n.runtime_event,n.runtimeEvent,t.runtime_event,t.runtimeEvent].map(a8).find(e=>Object.keys(e).length>0)||{},a=Object.keys(i).length?i:n,o=r8(t.event_type??t.eventType??n.event_type??n.eventType).toLowerCase();return{event:a,eventType:r8(a.event_type??a.eventType??a.type).toLowerCase()||o,runId:r8(a.run_id??a.runId??n.run_id??n.runId??t.run_id??t.runId),invocationId:r8(a.invocation_id??a.invocationId??n.invocation_id??n.invocationId??t.invocation_id??t.invocationId),seq:Number(a.seq??a.seq_id??a.source_session_seq??n.seq??n.seq_id??n.source_session_seq??t.seq??t.seq_id??t.source_session_seq??0)||0}}function s8(e){return e.reduce((e,t)=>{let n=o8(t);return Math.max(e,n?.seq||0)},0)}function c8(e){let t=a8(e);return(Array.isArray(t.parts)?t.parts.map(a8):[])[0]||t}function l8(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function u8(e){let t=a8(e),n=a8(t.payload),r=a8(n.content),i=o8(e)?.event||{},a=[t.conversationItem,n.conversationItem,r.conversationItem,i.conversationItem];for(let e of a){let t=A4(e);if(t)return t}return null}function d8(e){let t=u8(e);if(!t||t.visibility!==`public`||t.kind===`unknown`||t.kind===`progress`||t.kind===`user_message`)return null;let n=n8(t.payload.text??t.payload.objective??t.payload.error??``),r=t.lifecycle===`failed`?`failed`:t.lifecycle===`completed`?`completed`:t.kind===`approval`&&t.lifecycle===`pending`?`waiting`:`running`,i=t.kind===`assistant_text`?`message`:t.kind===`reasoning`?`reasoning`:t.kind===`tool_call`?`tool`:t.kind,a=n8(t.payload.tool??t.payload.title??t.payload.name??t.payload.kind)||(i===`reasoning`?`思考过程`:i===`approval`?`等待确认`:i===`plan`?`计划`:i===`goal`?`目标`:i===`artifact`?`运行产物`:i===`a2ui`?`交互卡片`:i===`error`?`运行失败`:i===`tool`?`工具调用`:`回复`);return{id:`${t.runId}/${t.itemId}`,kind:i,title:a,text:n,detail:n||l8(t.payload),status:r,operation:t.operation===`append`?`append`:`replace`}}function f8(e){let t=d8(e);if(t)return t;let n=o8(e);if(!n)return null;let r=n.event;if([`message.delta`,`response.output_text.delta`,`output_text.delta`].includes(n.eventType)){let e=a8(r.content),t=a8(r.update),i=n8(t.delta??t.text??r.delta??e.delta??r.text);if(!i)return null;let a=r8(r.item_id??r.itemId??r.output_index)||`legacy`;return{id:`${n.invocationId||n.runId}//message:${a}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:r.replace===!0||r8(r.op).toLowerCase()===`replace`?`replace`:`append`}}if(![`item.started`,`item.updated`,`item.completed`,`item.failed`].includes(n.eventType))return null;let i=r8(r.item_kind??r.itemKind).toLowerCase(),a=[`message`,`assistant`,`assistant_message`].includes(i)?`message`:i===`reasoning`?`reasoning`:i===`approval`?`approval`:[`tool`,`tool_call`,`tool_result`,`command`,`command_execution`].includes(i)?`tool`:null;if(!a)return null;let o=n.eventType===`item.started`?r.initial:n.eventType===`item.completed`||n.eventType===`item.failed`?r.snapshot:r.update,s=a8(o),c=c8(o),l=n8(c.text??c.delta??c.content??s.parts??r.text),u=n8(c.name??r.name??r.tool_name??r.title)||(a===`reasoning`?`思考过程`:a===`approval`?`等待确认`:a===`tool`?`工具调用`:`回复`),d=l||l8(c.result??c.output??c.arguments??c.error??``),f=r8(r.item_id??r.itemId??c.call_id??c.callId)||`${a}:${u}`;return{id:[n.invocationId||n.runId,r8(r.scope_id??r.scopeId),f].join(`/`),kind:a,title:u,text:l,detail:d,status:n.eventType===`item.failed`?`failed`:a===`approval`&&n.eventType!==`item.completed`?`waiting`:n.eventType===`item.completed`?`completed`:`running`,operation:r8(r.op).toLowerCase()===`append`?`append`:`replace`}}function p8(e){let t=f8(e);if(t)return[t];let n=o8(e);if(!n)return[];let r=n.event,i=n.eventType,a=r8(r.id??r.response_id??r.responseId)||n.invocationId||n.runId||`direct`,o=[],s=Array.isArray(r.choices)?r.choices.map(a8):[];if(s.forEach((e,t)=>{let n=a8(e.delta),r=n8(n.reasoning_content??n.reasoning??n.thinking);r&&o.push({id:`${a}//reasoning:${r8(e.index)||t}`,kind:`reasoning`,title:`思考过程`,text:r,detail:r,status:`running`,operation:`append`});let i=n8(n.content);i&&o.push({id:`${a}//message:${r8(e.index)||t}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:`append`}),(Array.isArray(n.tool_calls)?n.tool_calls.map(a8):[]).forEach((n,r)=>{let i=a8(n.function),s=n8(i.name??n.name)||`工具调用`,c=n8(i.arguments??n.arguments);o.push({id:`${a}//tool:${r8(e.index)||t}:${r8(n.index)||r}`,kind:`tool`,title:s,text:``,detail:c,status:`running`,operation:`append`})})}),!i&&s.length===0&&typeof r.delta==`string`&&r.delta&&o.push({id:`${a}//message:0`,kind:`message`,title:`回复`,text:r.delta,detail:r.delta,status:`running`,operation:`append`}),i.includes(`reasoning`)&&i.endsWith(`.delta`)){let e=n8(r.delta??r.text??a8(r.part).text);e&&o.push({id:`${a}//reasoning:${r8(r.item_id??r.itemId)||`summary`}`,kind:`reasoning`,title:`思考过程`,text:e,detail:e,status:`running`,operation:r.replace===!0||r8(r.op).toLowerCase()===`replace`?`replace`:`append`})}if([`response.output_item.added`,`response.output_item.done`].includes(i)){let e=a8(r.item),t=r8(e.type).toLowerCase();[`mcp_approval_request`,`approval_request`].includes(t)&&o.push({id:`${a}//approval:${r8(e.id??e.approval_request_id??e.call_id)||`request`}`,kind:`approval`,title:n8(e.title??e.name??e.server_label)||`等待确认`,text:``,detail:n8(e.message)||l8(e.arguments??e.request??``),status:`waiting`,operation:`replace`}),[`function_call`,`tool_call`,`computer_call`,`mcp_call`].includes(t)&&o.push({id:`${a}//tool:${r8(e.id??e.call_id??r.output_index)||`output`}`,kind:`tool`,title:n8(e.name)||`工具调用`,text:``,detail:n8(e.arguments??e.output)||l8(e.arguments??e.output??``),status:i.endsWith(`.done`)?`completed`:`running`,operation:`replace`})}if([`response.function_call_arguments.delta`,`response.mcp_call_arguments.delta`].includes(i)){let e=n8(r.delta);o.push({id:`${a}//tool:${r8(r.item_id??r.itemId??r.call_id)||`output`}`,kind:`tool`,title:n8(r.name)||`工具调用`,text:``,detail:e,status:`running`,operation:`append`})}return i===`response.approval_request`&&o.push({id:`${a}//approval:${r8(r.interaction_id??r.approval_request_id??r.item_id)||`request`}`,kind:`approval`,title:n8(r.title??r.message??a8(r.request).title)||`等待确认`,text:``,detail:n8(r.message)||l8(r.request??``),status:`waiting`,operation:`replace`}),o}function m8(e){let t=o8(e);if(!t)return``;let n=r8(t.event.event_id??t.event.eventId);return n?`${t.runId||t.invocationId}/${n}`:``}function h8(e){let t=o8(e);if(!t)return null;let n=t.event,r=t.eventType;if(r8(n.object).toLowerCase()===`response`){let e=r8(n.status).toLowerCase();if(e===`completed`)return{status:`completed`,error:``};if([`failed`,`cancelled`,`canceled`,`incomplete`].includes(e))return{status:`failed`,error:i8(n.error,n.incomplete_details)||`云端流式响应失败`}}return[`stream.done`,`response.completed`,`response.done`,`done`].includes(r)?{status:`completed`,error:``}:n.error||[`error`,`stream.error`,`response.failed`,`response.error`].includes(r)?{status:`failed`,error:i8(n.error,n.response,n.message,n.detail)||`云端流式响应失败`}:null}function g8(e,t){let n=e.findIndex(e=>e.id===t.id);if(n<0)return[...e,t];let r=e[n],i=[...e];return i[n]={...r,...t,title:t.title===`回复`||t.title===`思考过程`||t.title===`工具调用`?r.title:t.title,text:t.operation===`append`?`${r.text}${t.text}`:t.text||r.text,detail:t.kind===`tool`&&t.operation===`append`?`${r.detail}${t.detail}`:t.detail||r.detail},i}function _8(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.session_id??t.sessionId??t.id??``).trim();return n?{id:n,title:n8(t.title??t.summary??t.first_prompt??``)||`新会话`,updatedAt:r8(t.updated_at??t.updatedAt??t.created_at),state:r8(t.active_run_status??t.state),error:i8(t.active_run_error,t.activeRunError,t.last_error,t.lastError,t.error)}:null}function v8(e){let t=e.trim().toLowerCase();return[`running`,`streaming`,`queued`,`pending`,`accepted`].includes(t)?`running`:[`paused`,`waiting`,`waiting_input`,`requires_action`].includes(t)?`waiting_input`:[`failed`,`error`,`cancelled`,`canceled`,`expired`,`aborted`].includes(t)?`failed`:null}function y8(e){if(!e||typeof e!=`object`)return null;let t=e,n=String(t.role??`assistant`).toLowerCase(),r=n===`user`||n===`system`?n:`assistant`;return{id:String(t.message_id??t.messageId??t.seq_id??crypto.randomUUID()),role:r,content:n8(t.content),timestamp:String(t.timestamp??``)}}function b8(e){let t=new Map;for(let n of e){let e=o8(n);if(!e)continue;let r=e.event,i=n,a=e.eventType,o=r.Metadata&&typeof r.Metadata==`object`?r.Metadata:r.metadata&&typeof r.metadata==`object`?r.metadata:i.Metadata&&typeof i.Metadata==`object`?i.Metadata:i.metadata&&typeof i.metadata==`object`?i.metadata:{},s=o.interrupt_info&&typeof o.interrupt_info==`object`?o.interrupt_info:{},c=o.resume_input&&typeof o.resume_input==`object`?o.resume_input:{},l=String(r.interaction_id??r.interactionId??s.approval_request_id??c.approval_request_id??``).trim();if(l){if([`interaction.requested`,`approval_request`,`response.approval_request`].includes(a)){let n=r.request&&typeof r.request==`object`?r.request:{};t.set(l,{id:l,runId:String(r.run_id??r.runId??e.invocationId??e.runId??i.run_id??i.runId??i.InvocationId??i.invocation_id??``),revision:Number(r.revision??1)||1,kind:String(r.interaction_kind??r.interactionKind??r.kind??n.kind??([`approval_request`,`response.approval_request`].includes(a)?`approval`:`input`)),title:n8(n.title??n.message??n.prompt??s.approval_message??s.tool_name??n.kind??`需要你的确认`)||`需要你的确认`})}else[`interaction.resolved`,`interaction.cancelled`,`interaction.expired`,`approval_response`].includes(a)&&t.delete(l)}}return[...t.values()]}function x8(e,t,n,r){if(!t&&!n&&r<=0)return null;for(let i of e){let e=o8(i);if(!e)continue;let a=e.event,o=e.runId||e.invocationId,s=e.seq;if(!(o&&[t,n].filter(Boolean).includes(o))&&!(r>0&&s>r))continue;let c=e.eventType,l=a.content&&typeof a.content==`object`?a.content:{},u=i8(a.error,a.message,l.error,l.message,l.detail);if([`run.completed`,`run.complete`,`run.succeeded`].includes(c))return{status:`completed`,error:``};if([`run.interrupted`,`run.paused`,`run.waiting_input`,`run.requires_action`].includes(c))return{status:`interrupted`,error:``};if([`run.failed`,`run.cancelled`,`run.expired`,`run.error`].includes(c))return{status:`failed`,error:u};if([`run_status`,`run.status`].includes(c)){let e=a.state_delta&&typeof a.state_delta==`object`?a.state_delta:{},t=e.active_run&&typeof e.active_run==`object`?e.active_run:{},n=String(a.status??l.status??t.status??``).toLowerCase();if([`completed`,`complete`,`succeeded`,`success`].includes(n))return{status:`completed`,error:``};if([`interrupted`,`paused`,`waiting`,`waiting_input`,`requires_action`].includes(n))return{status:`interrupted`,error:``};if([`failed`,`cancelled`,`canceled`,`expired`,`error`,`aborted`].includes(n))return{status:`failed`,error:u||i8(t.error,t.message,t.reason)}}}return null}async function S8(e,t,n){if(!e.ok)throw Error(await C8(e));if(!e.body)throw Error(`云端事件流为空`);let r=e.body.getReader(),i=new TextDecoder,a=``,o=()=>{r.cancel().catch(()=>{})},s=e=>{let n=e.split(/\r?\n/),r=n.find(e=>e.startsWith(`event:`))?.slice(6).trim()||``,i=n.filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
+`);if(i){if(i===`[DONE]`){t({event_type:`stream.done`});return}try{let e=JSON.parse(i);if(r&&e&&typeof e==`object`){let n=e;t(n.event_type||n.eventType||n.type?n:{...n,event_type:r})}else t(e)}catch{}}};n.addEventListener(`abort`,o,{once:!0});try{for(;!n.aborted;){let{done:e,value:t}=await r.read();a+=i.decode(t,{stream:!e});let n=a.split(/\r?\n\r?\n/);if(a=n.pop()||``,n.forEach(s),e){a.trim()&&s(a);break}}}finally{n.removeEventListener(`abort`,o),r.releaseLock()}}async function C8(e){try{let t=await e.json();return String(t?.error?.message||t?.message||t?.detail||`请求失败 (${e.status})`)}catch{return`请求失败 (${e.status})`}}async function w8(e){if(e.size>10485760)throw Error(`${e.name} 超过 10 MB 限制`);return await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(Error(`${e.name} 读取失败`)),r.readAsDataURL(e)})}function T8({items:e,streaming:t}){let n=e.filter(e=>e.kind===`reasoning`).map(e=>e.text).join(``),r=e.filter(e=>e.kind!==`reasoning`&&e.kind!==`message`);if(!n&&!r.length)return null;let i=r.find(e=>e.status===`running`||e.status===`waiting`),a=i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:n?t?`正在思考`:`已思考`:`已更新 ${r.length} 个运行事件`;return(0,G.jsxs)(`details`,{className:`chat-processing-group`,open:t,"data-ui":`think`,children:[(0,G.jsxs)(`summary`,{children:[(0,G.jsx)(L,{size:15,className:`chat-processing-icon`}),(0,G.jsx)(`span`,{children:a}),t&&(0,G.jsx)(Ne,{size:13,className:`animate-spin`})]}),(0,G.jsxs)(`div`,{className:`chat-processing-content`,children:[n&&(0,G.jsx)(`div`,{className:`chat-reasoning-content`,children:n}),r.map(e=>(0,G.jsxs)(`div`,{className:`chat-activity-card ${e.kind}`,children:[(0,G.jsxs)(`div`,{className:`chat-activity-row`,children:[(0,G.jsx)(`span`,{className:`chat-activity-icon`,children:e.kind===`approval`?(0,G.jsx)(at,{size:15}):e.kind===`plan`||e.kind===`goal`?(0,G.jsx)(L,{size:15}):(0,G.jsx)(yt,{size:15})}),(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:e.kind===`approval`?`批准`:e.kind===`plan`?`计划`:e.kind===`goal`?`目标`:e.kind===`artifact`?`产物`:e.kind===`a2ui`?`交互`:e.kind===`error`?`错误`:`工具`}),(0,G.jsx)(`strong`,{children:e.title})]}),(0,G.jsx)(`span`,{className:`chat-activity-status ${e.status}`,children:e.status===`completed`?`已完成`:e.status===`failed`?`失败`:e.status===`waiting`?`等待确认`:`运行中`})]}),e.detail&&(0,G.jsx)(`pre`,{children:e.detail})]},e.id))]})]})}function E8({deploymentId:e,agentId:t,agentName:n,active:r=!0,refreshTick:i=0}){let[a,o]=(0,s.useState)([]),[c,l]=(0,s.useState)(``),[u,d]=(0,s.useState)([]),[f,p]=(0,s.useState)([]),[m,h]=(0,s.useState)([]),[_,v]=(0,s.useState)(``),[y,b]=(0,s.useState)([]),[x,S]=(0,s.useState)([]),[C,w]=(0,s.useState)(``),[T,E]=(0,s.useState)(`risk`),[D,O]=(0,s.useState)(`default`),[k,A]=(0,s.useState)(``),[j,M]=(0,s.useState)(0),[P,F]=(0,s.useState)(!0),[I,L]=(0,s.useState)(!1),[R,z]=(0,s.useState)(!1),[B,V]=(0,s.useState)(``),[H,ee]=(0,s.useState)(``),[te,ne]=(0,s.useState)(``),[U,re]=(0,s.useState)(!1),ie=(0,s.useRef)(null),ae=(0,s.useRef)(``),oe=(0,s.useRef)(!1),se=(0,s.useRef)(new Set),ce=(0,s.useRef)(``),le=(0,s.useRef)(``),ue=(0,s.useRef)(0),de=(0,s.useRef)(new Map),W=(0,s.useRef)(!1),fe=(0,s.useRef)(null),pe=(0,s.useRef)([]),me=(0,s.useRef)(!1),he=(0,s.useRef)(new Set),ge=(0,s.useMemo)(()=>`/api/v1/deployments/${encodeURIComponent(e)}/cloud-chat`,[e]),_e=(0,s.useCallback)((e=``,t=`云端运行未完成`)=>{let n=oe.current;oe.current=!1,me.current=!1,z(!1),ce.current=``,le.current=``,ue.current=0,se.current=new Set,d(e=>e.map(e=>e.pending?{...e,pending:!1}:e)),fe.current?.abort(),fe.current=null,e&&(V(e),n&&J(t,e,`error`))},[]),ve=(0,s.useCallback)(async(e=!0)=>{let t=await g(`${ge}/sessions`);if(!t.ok)throw Error(await C8(t));let n=await t.json(),r=(n.sessions||n.items||[]).map(_8).filter(e=>!!e);o(r);let i=r.find(e=>e.id===ae.current);i&&v8(i.state)===`failed`&&_e(i.error||`这次云端运行未完成;可新建会话后重试。若持续失败,请到可观测页面按会话查看记录。`),l(t=>{let n=r.some(e=>e.id===t)?t:e&&r[0]?.id||``;return ae.current=n,n})},[ge,_e]),ye=(0,s.useCallback)(async e=>{if(!e){d([]);return}let t=await g(`${ge}/sessions/${encodeURIComponent(e)}/messages`);if(!t.ok)throw Error(await C8(t));let n=((await t.json()).messages||[]).map(y8).filter(e=>!!e);d(n);let r=n.some(e=>e.role===`assistant`&&!se.current.has(e.id));r&&(p(e=>e.filter(e=>e.kind!==`message`)),me.current||(pe.current=[])),oe.current&&r&&!me.current&&(V(``),_e())},[ge,_e]),be=(0,s.useCallback)(async e=>{if(!e){h([]);return}let t=await g(`${ge}/sessions/${encodeURIComponent(e)}/events?limit=1000`);if(!t.ok)throw Error(await C8(t));let n=await t.json(),r=Array.isArray(n.events)?n.events:[];de.current.set(e,Math.max(de.current.get(e)||0,s8(r)));let i=x8(r,ce.current,le.current,ue.current);i&&(!me.current||i.status!==`completed`)&&_e(i.status===`failed`?i.error||`本次请求已结束,未得到回复。可新建会话后重试;若持续失败,请到可观测页面按会话查看记录。`:``);let a=[...pe.current,...r].slice(-500);if(pe.current=a,h(b8(a)),!me.current){let e=r.reduce((e,t)=>{let n=f8(t);return n&&n.kind!==`message`?g8(e,n):e},[]);p(t=>e.length?[...t.filter(e=>e.kind===`message`),...e]:t)}},[ge,_e]);(0,s.useEffect)(()=>{let e=!1;return F(!0),o([]),l(``),ae.current=``,d([]),p([]),pe.current=[],h([]),V(``),oe.current=!1,me.current=!1,he.current=new Set,z(!1),ce.current=``,le.current=``,ue.current=0,de.current.clear(),ve().catch(t=>{e||J(`云端会话加载失败`,t.message,`error`)}).finally(()=>{e||F(!1)}),()=>{e=!0}},[ve,i]),(0,s.useEffect)(()=>()=>{fe.current?.abort(),fe.current=null},[]),(0,s.useEffect)(()=>{let e=!1;return g(`${ge}/models`).then(async e=>{if(!e.ok)throw Error(await C8(e));return await e.json()}).then(t=>{if(e)return;let n=(Array.isArray(t.models)?t.models:Array.isArray(t.items)?t.items:[]).map(e=>{if(typeof e==`string`)return{id:e,label:e};if(!e||typeof e!=`object`)return null;let t=e,n=String(t.id??t.model??t.name??``).trim(),r=t.capabilities&&typeof t.capabilities==`object`?t.capabilities:void 0;return n?{id:n,label:String(t.display_name??t.displayName??t.label??n),capabilities:r}:null}).filter(e=>!!e),r=String(t.current??t.configured_model??t.configuredModel??``).trim();S(n),w(e=>e||(n.some(e=>e.id===r)?r:n[0]?.id||r))}).catch(()=>{}),()=>{e=!0}},[ge]),(0,s.useEffect)(()=>{E(X3(localStorage.getItem(Z3(t)))),O(localStorage.getItem(`agentkit:chat:collaboration:${t}`)===`plan`?`plan`:`default`),A(``)},[t]),(0,s.useEffect)(()=>{M(0)},[_]);let xe=x.find(e=>e.id===C),Se=t8(xe).includes(k)?k:``;(0,s.useEffect)(()=>{k&&!t8(xe).includes(k)&&A(``)},[k,xe]),(0,s.useEffect)(()=>{ye(c).catch(e=>{J(`云端消息加载失败`,e.message,`error`)}),be(c).catch(e=>{J(`云端交互加载失败`,e.message,`error`)})},[c,be,ye]),(0,s.useEffect)(()=>{if(!r||!c)return;let e=window.setInterval(()=>{ye(c).catch(()=>{}),be(c).catch(()=>{}),ve().catch(()=>{})},I||R?1200:4e3);return()=>window.clearInterval(e)},[r,c,be,ye,ve,I,R]),(0,s.useEffect)(()=>{let e=ie.current;e&&(e.scrollTop=e.scrollHeight)},[u,I,f,R]);async function Ce(){let e=await g(`${ge}/sessions`,{method:`POST`});if(!e.ok)throw Error(await C8(e));let t=await e.json(),n=_8(t.session??t.Session??t);if(!n)throw Error(`云端未返回有效会话标识`);return o(e=>[n,...e.filter(e=>e.id!==n.id)]),ae.current=n.id,l(n.id),d([]),p([]),pe.current=[],h([]),V(``),se.current=new Set,de.current.set(n.id,0),n.id}async function we(){if(!(I||R))try{await Ce(),re(!1)}catch(e){J(`新建云端会话失败`,e instanceof Error?e.message:String(e),`error`)}}async function Te(){let e=i6(_);if(e.kind===`toggle-plan`){De(`plan`);return}if(e.kind===`set-default`){De(`default`);return}if(e.kind===`goal`&&!e.objective){J(`请补充目标`,`在 /goal 后输入需要持续完成的目标`,`error`);return}let t=e.kind===`goal`?e.objective:``,n=e.kind===`message`?e.text:t;if(!(!n&&y.length===0||I||R||W.current)){v(``),W.current=!0,L(!0),oe.current=!0,z(!0),p([]),pe.current=[],V(``);try{let e=[];n&&e.push({type:`input_text`,text:n});for(let t of y){let n=await w8(t);e.push(t.type.startsWith(`image/`)?{type:`input_image`,image_url:n}:{type:`input_file`,filename:t.name,file_data:n})}let r=ae.current||await Ce();se.current=new Set(u.filter(e=>!e.pending&&e.role===`assistant`).map(e=>e.id)),ce.current=``,le.current=``,ue.current=de.current.get(r)||0;let i={id:`local-${crypto.randomUUID()}`,role:`user`,content:n||`已上传 ${y.length} 个附件`,timestamp:new Date().toISOString(),pending:!0};d(e=>[...e,i]),fe.current?.abort();let a=new AbortController;fe.current=a,me.current=!0,he.current=new Set;let o=(e,t)=>{if(t===`session`){if(e.kind===`message`)return;p(t=>g8(t,e));return}p(t=>g8(t,e))};g(`${ge}/sessions/${encodeURIComponent(r)}/events/stream?afterSeqId=${ue.current}`,{headers:{Accept:`text/event-stream`},signal:a.signal}).then(e=>S8(e,e=>{let t=o8(e);if(!t)return;t.seq&&de.current.set(r,Math.max(de.current.get(r)||0,t.seq));let n=[t.runId,t.invocationId].filter(Boolean),i=[ce.current,le.current].filter(Boolean);if(i.length&&(!n.length||!n.some(e=>i.includes(e)))||ue.current&&t.seq&&t.seq<=ue.current)return;i.length||(t.runId&&(ce.current=t.runId),t.invocationId&&(le.current=t.invocationId)),pe.current=[...pe.current,e].slice(-500),h(b8(pe.current));let a=f8(e);if(a&&a.kind!==`message`){let t=m8(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||o(a,`session`)}let s=x8([e],ce.current,le.current,ue.current);s&&s.status!==`completed`&&(_e(s.status===`failed`?s.error||`本次请求已结束,未得到回复。`:``),ye(r).catch(()=>{}),be(r).catch(()=>{}),ve().catch(()=>{}))},a.signal)).catch(()=>{}),await S8(await g(`${ge}/sessions/${encodeURIComponent(r)}/messages/stream`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},signal:a.signal,body:JSON.stringify({content:e,model:C||void 0,modelOptions:Se?{reasoning:{effort:Se}}:{},toolApprovalMode:T,collaborationMode:D,goalObjective:t||void 0})}),e=>{pe.current=[...pe.current,e].slice(-500),h(b8(pe.current));let t=m8(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||p8(e).forEach(e=>o(e,`direct`));let r=h8(e);r&&_e(r.status===`failed`?r.error:``,`云端流式响应失败`)},a.signal),oe.current&&_e(),b([]),ve().catch(()=>{}),ye(r).catch(()=>{}),be(r).catch(()=>{})}catch(e){let t=e instanceof Error?e.message:String(e);oe.current&&_e(t,`云端消息发送失败`)}finally{L(!1),W.current=!1}}}function Ee(e){O(e),localStorage.setItem(`agentkit:chat:collaboration:${t}`,e),v(``),J(e===`plan`?`计划模式已开启`:`已返回默认模式`,`下一轮云端对话生效`,`success`)}function De(e){if(e===`goal`){v(`/goal `);return}Ee(e===`plan`?D===`plan`?`default`:`plan`:`default`)}function Oe(){let e=[...u].reverse().find(e=>e.role===`user`);e&&(v(e.content),V(``))}async function ke(e){if(!(H||!window.confirm(`确定删除这个云端会话吗?`))){ee(e);try{let t=await g(`${ge}/sessions/${encodeURIComponent(e)}`,{method:`DELETE`});if(!t.ok)throw Error(await C8(t));o(t=>t.filter(t=>t.id!==e));let n=ae.current===e;n&&(fe.current?.abort(),fe.current=null,ae.current=``,l(``),d([]),p([]),pe.current=[],h([]),V(``)),de.current.delete(e),await ve(!n)}catch(e){J(`删除云端会话失败`,e instanceof Error?e.message:String(e),`error`)}finally{ee(``)}}}async function Ae(e,t){if(!(!c||te)){if(!e.runId){J(`交互缺少运行标识`,`请刷新会话后重试。`,`error`);return}ne(e.id);try{let n=await g(`${ge}/sessions/${encodeURIComponent(c)}/interactions`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({runId:e.runId,interactionId:e.id,expectedRevision:e.revision,action:t,response:t===`approve`?{decision:`approve`}:t===`reject`?{decision:`reject`}:{},idempotencyKey:`studio-cloud-${e.id}-${e.revision}-${t}`})});if(!n.ok)throw Error(await C8(n));await Promise.all([be(c),ye(c)]),J(`已提交确认`,`云端 Agent 将继续当前对话。`,`success`)}catch(e){J(`提交确认失败`,e instanceof Error?e.message:String(e),`error`)}finally{ne(``)}}}let je=f.filter(e=>e.kind===`message`).map(e=>e.text).join(``);return(0,G.jsxs)(`section`,{className:`studio-chat-shell cloud-chat-shell${U?` sessions-open`:``}`,"aria-label":`云端会话`,children:[(0,G.jsxs)(`aside`,{className:`chat-session-sidebar`,"aria-label":`云端会话历史`,children:[(0,G.jsxs)(`header`,{className:`chat-session-header`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h2`,{children:`云端会话`}),(0,G.jsx)(`span`,{children:n})]}),(0,G.jsxs)(`div`,{className:`chat-session-header-actions`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,onClick:we,disabled:I||R,"aria-label":`新建云端会话`,title:`新建云端会话`,children:(0,G.jsx)(Fe,{size:17})}),(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-close`,type:`button`,"aria-label":`关闭云端会话历史`,title:`关闭云端会话历史`,onClick:()=>re(!1),children:(0,G.jsx)(bt,{size:17})})]})]}),(0,G.jsxs)(`div`,{className:`chat-session-list`,role:`list`,children:[P&&(0,G.jsxs)(`div`,{className:`chat-session-skeleton`,role:`status`,"aria-label":`正在同步云端会话`,children:[(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{}),(0,G.jsx)(`i`,{})]}),!P&&!a.length&&(0,G.jsx)(`p`,{className:`chat-sidebar-empty`,children:`还没有云端会话`}),a.map(e=>{let t=v8(e.state);return(0,G.jsxs)(`div`,{className:`chat-session-item${e.id===c?` active`:``}${t===`running`?` running`:``}`,role:`listitem`,children:[(0,G.jsxs)(`button`,{className:`chat-session-main`,type:`button`,onClick:()=>{ae.current=e.id,l(e.id),V(e.error),re(!1)},children:[(0,G.jsx)(`strong`,{children:e.title}),t&&(0,G.jsx)(`span`,{className:`session-status ${t}`,"aria-label":t===`running`?`运行中`:t===`waiting_input`?`等待输入`:`运行失败`})]}),(0,G.jsx)(`button`,{className:`chat-session-delete`,type:`button`,"aria-label":`删除会话 ${e.title}`,title:`删除会话`,disabled:H===e.id,onClick:()=>ke(e.id),children:(0,G.jsx)(ht,{size:15})})]},e.id)})]})]}),(0,G.jsx)(`button`,{className:`chat-session-backdrop`,type:`button`,"aria-label":`关闭云端会话历史`,onClick:()=>re(!1)}),(0,G.jsxs)(`div`,{className:`chat-conversation`,children:[(0,G.jsxs)(`header`,{className:`chat-conversation-header`,children:[(0,G.jsx)(`button`,{className:`icon-button tertiary chat-session-mobile-trigger`,type:`button`,"aria-label":`打开云端会话历史`,title:`云端会话历史`,"aria-expanded":U,onClick:()=>re(!0),children:(0,G.jsx)(Ge,{size:17})}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`h1`,{children:n}),(0,G.jsxs)(`span`,{children:[`云端 Agent · `,t]})]})]}),(0,G.jsxs)(`div`,{ref:ie,className:`chat-message-list`,role:`log`,"aria-live":`polite`,"aria-busy":I||R,children:[!c&&!P&&(0,G.jsxs)(`div`,{className:`chat-empty`,children:[(0,G.jsx)(`span`,{className:`chat-empty-icon`,children:(0,G.jsx)(N,{})}),(0,G.jsx)(`h2`,{children:`开始一段云端会话`})]}),(B||v8(a.find(e=>e.id===c)?.state||``)===`failed`)&&(0,G.jsxs)(`div`,{className:`cloud-chat-run-warning`,children:[(0,G.jsx)(at,{size:15}),(0,G.jsx)(`span`,{children:B||a.find(e=>e.id===c)?.error||`这次云端运行未完成;可新建会话后重试。若持续失败,请到可观测页面按会话查看记录。`}),B&&(0,G.jsx)(`button`,{className:`text-button`,type:`button`,"aria-label":`重试这条消息`,onClick:Oe,children:`重试`})]}),u.map(e=>(0,G.jsxs)(`article`,{className:`message ${e.role}${e.pending?` pending`:``}${e.streaming?` streaming`:``}`,children:[(0,G.jsx)(`div`,{className:`message-meta`,children:e.role===`user`?`你`:n}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(CP,{remarkPlugins:[DL,e8],children:e.content||`…`})})]},e.id)),(0,G.jsx)(T8,{items:f,streaming:R}),je&&(0,G.jsxs)(`article`,{className:`message assistant streaming`,"aria-label":`云端流式回复`,children:[(0,G.jsx)(`div`,{className:`message-meta`,children:n}),(0,G.jsx)(`div`,{className:`message-content`,children:(0,G.jsx)(CP,{remarkPlugins:[DL,e8],children:je})})]}),(I||R)&&!je&&f.length===0&&(0,G.jsxs)(`div`,{className:`cloud-chat-pending`,children:[(0,G.jsx)(Ne,{size:15,className:`animate-spin`}),` 正在等待云端响应…`]})]}),(0,G.jsxs)(`div`,{className:`chat-composer-wrap`,children:[m.length>0&&(0,G.jsxs)(`div`,{className:`chat-pending-interactions`,role:`region`,"aria-label":`待处理确认`,"data-ui":`interaction-tray`,children:[(0,G.jsxs)(`div`,{className:`chat-pending-interactions-heading`,children:[(0,G.jsx)(at,{size:16}),(0,G.jsx)(`strong`,{children:`等待你的确认`}),(0,G.jsx)(`span`,{children:`处理后将继续当前云端对话`})]}),m.map(e=>(0,G.jsxs)(`div`,{className:`cloud-interaction-card`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`strong`,{children:e.kind===`approval`?`工具操作需要批准`:e.title}),(0,G.jsx)(`span`,{children:e.title})]}),(0,G.jsxs)(`div`,{className:`cloud-interaction-actions`,children:[e.kind===`approval`&&(0,G.jsxs)(`button`,{className:`secondary-button`,type:`button`,disabled:!!te,onClick:()=>Ae(e,`reject`),children:[(0,G.jsx)(bt,{size:15}),`拒绝`]}),(0,G.jsxs)(`button`,{className:`primary-button`,type:`button`,disabled:!!te,onClick:()=>Ae(e,e.kind===`approval`?`approve`:`submit`),children:[(0,G.jsx)(ot,{size:15}),e.kind===`approval`?`允许执行`:`提交`]})]})]},e.id))]}),(0,G.jsx)(b6,{input:_,placeholder:D===`plan`?`描述需要云端 Agent 规划的任务…`:`发送到云端 Agent`,disabled:!r||I||R,active:r,attachments:y.map((e,t)=>({id:`${t}:${e.name}:${e.size}`,name:e.name,kind:e.type.startsWith(`image/`)?`image`:e.type.startsWith(`text/`)?`text`:`file`,size:e.size})),mode:D,approvalMode:T,models:x.map(e=>({id:e.id,label:e.label,reasoningEfforts:t8(e)})),model:C,reasoningEffort:k,commandIndex:j,canSend:!!(_.trim()||y.length),attachmentAccept:``,attachmentLimit:8,onInputChange:v,onFiles:e=>{let t=e.find(e=>e.size>10485760);t&&J(`附件过大`,`${t.name} 超过 10 MB 限制`,`error`),b(t=>{let n=e.filter(e=>e.size<=10485760);return t.length+n.length>8&&J(`附件过多`,`每轮最多上传 8 个附件`,`error`),[...t,...n].slice(0,8)})},onRemoveAttachment:e=>{let t=Number(e.split(`:`,1)[0]);b(e=>e.filter((e,n)=>n!==t))},onSetMode:Ee,onStartGoal:()=>De(`goal`),onApprovalModeChange:e=>{E(e),localStorage.setItem(Z3(t),e)},onModelChange:w,onReasoningEffortChange:A,onCommandSelect:De,onCommandIndexChange:M,onSend:()=>{Te()}}),(0,G.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]})]})}function D8(e){return e<=1023?`compact`:e<=1439?`laptop`:e<=1919?`desktop`:`wide`}function O8(){let[e,t]=(0,s.useState)(()=>D8(window.innerWidth));return(0,s.useEffect)(()=>{let e=()=>t(D8(window.innerWidth));return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}var k8=`agentkit-studio-theme`,A8=`(prefers-color-scheme: dark)`;function j8(e){return e===`light`||e===`dark`||e===`system`?e:`light`}function M8(e,t){return e===`system`?t?`dark`:`light`:e}function N8(){try{return j8(window.localStorage.getItem(k8))}catch{return`light`}}function P8(){return typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches}function F8(e){let t=document.documentElement;t.classList.toggle(`dark`,e===`dark`),t.dataset.theme=e,t.style.colorScheme=e}function I8(){let e=N8();return F8(M8(e,P8())),e}function L8(){let[e,t]=(0,s.useState)(N8),[n,r]=(0,s.useState)(P8),i=M8(e,n);return(0,s.useEffect)(()=>{let e=window.matchMedia(A8),t=()=>r(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,s.useLayoutEffect)(()=>{F8(i)},[i]),{preference:e,resolvedTheme:i,setPreference:(0,s.useCallback)(e=>{t(e);try{window.localStorage.setItem(k8,e)}catch{}},[])}}var R8=`agentkit.studio.rail-expanded`,z8=[{group:`创作`,items:[{id:`agents`,label:`Agent`,icon:N},{id:`conversations`,label:`会话`,icon:Le}]},{group:`资源`,items:[{id:`resources`,label:`工程资源`,icon:F},{id:`runtime-resources`,label:`运行资源`,icon:rt},{id:`plugins`,label:`插件`,icon:Ze,beta:!0}]},{group:`交付与运行`,items:[{id:`builds`,label:`构建`,icon:He},{id:`deployments`,label:`部署`,icon:de},{id:`automations`,label:`自动化`,icon:ue,beta:!0},{id:`orchestration`,label:`编排`,icon:vt,beta:!0},{id:`observability`,label:`可观测`,icon:B},{id:`evaluations`,label:`评测`,icon:le,beta:!0}]}];function B8(){try{let e=window.localStorage.getItem(R8);return e===null?null:e===`true`}catch{return null}}function V8(e){try{window.localStorage.setItem(R8,String(e))}catch{}}function H8(e,t,n){return t===e.id&&(e.id!==`resources`||e.kind==null||e.kind===n)||(t===`agent-detail`||t===`create`)&&e.id===`agents`}function U8({label:e,children:t}){return(0,G.jsxs)(Xv,{children:[(0,G.jsx)(Zv,{asChild:!0,children:t}),(0,G.jsx)(Qv,{children:(0,G.jsxs)($v,{className:`studio-tooltip`,side:`right`,sideOffset:8,children:[e,(0,G.jsx)(ey,{className:`studio-tooltip-arrow`})]})})]})}function W8({view:e,resourceKind:t,expanded:n,workspaceName:r,workspacePath:i,runtimeReady:a,onNavigate:o,extensionItems:s=[],activeExtensionPath:c=``,onNavigateExtension:l=()=>void 0,onOpenSettings:u}){return(0,G.jsx)(Yv,{delayDuration:320,skipDelayDuration:120,children:(0,G.jsxs)(`aside`,{className:`sidebar navigation-rail`,"data-state":n?`expanded`:`compact`,children:[(0,G.jsxs)(`div`,{className:`product`,children:[(0,G.jsx)(`span`,{className:`product-mark`,"aria-hidden":`true`,children:`K`}),(0,G.jsxs)(`span`,{className:`product-copy`,children:[(0,G.jsx)(`strong`,{children:`AgentKit`}),(0,G.jsx)(`span`,{children:`Studio`})]})]}),(0,G.jsx)(U8,{label:i,children:(0,G.jsxs)(`button`,{className:`workspace-switcher`,type:`button`,"aria-label":`${r} 工作区`,"aria-disabled":!a,children:[(0,G.jsx)(`span`,{className:`workspace-mark`,children:(0,G.jsx)(Ee,{size:16})}),(0,G.jsx)(`span`,{className:`workspace-copy`,children:(0,G.jsx)(`strong`,{children:r})})]})}),(0,G.jsxs)(`nav`,{className:`primary-nav`,"aria-label":`产品导航`,children:[z8.map(r=>(0,G.jsxs)(`div`,{className:`nav-group`,children:[(0,G.jsx)(`div`,{className:`nav-label`,children:r.group}),r.items.map(r=>{let i=r.icon,a=H8(r,e,t),s=(0,G.jsxs)(`button`,{className:`nav-item${a?` active`:``}`,type:`button`,"aria-label":r.label,"aria-current":a?`page`:void 0,onClick:()=>o(r.id,r.id===`resources`?r.kind||t:r.kind),children:[(0,G.jsx)(i,{size:18}),(0,G.jsx)(`span`,{children:r.label}),r.beta&&(0,G.jsx)(`span`,{className:`nav-beta-badge`,title:`Beta`,children:`Beta`})]},`${r.id}-${r.label}`);return n?s:(0,G.jsx)(U8,{label:r.label,children:s},`${r.id}-${r.label}`)})]},r.group)),s.length>0&&(0,G.jsxs)(`div`,{className:`nav-group`,"data-testid":`dsh-extension-navigation`,children:[(0,G.jsx)(`div`,{className:`nav-label`,children:`插件`}),s.map(t=>{let r=e===`extension`&&c===t.path,i=(0,G.jsxs)(`button`,{className:`nav-item${r?` active`:``}`,type:`button`,"aria-label":t.label,"aria-current":r?`page`:void 0,onClick:()=>l(t),children:[(0,G.jsx)($e,{size:18}),(0,G.jsx)(`span`,{children:t.label})]},t.id);return n?i:(0,G.jsx)(U8,{label:t.label,children:i},t.id)})]})]}),(0,G.jsxs)(`div`,{className:`sidebar-footer`,children:[(0,G.jsx)(U8,{label:`本地用户`,children:(0,G.jsx)(`span`,{className:`user-avatar`,"aria-label":`本地用户`,children:`A`})}),(0,G.jsx)(U8,{label:`设置`,children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`设置`,onClick:u,children:(0,G.jsx)(it,{size:16})})})]})]})})}function G8({currentAgentId:e,registry:t=qB.contributions,route:n}){let r=t.getEntries(Wz.workspaceTab).find(e=>e.id===n.workspaceTabId);if(!r)return(0,G.jsxs)(`section`,{className:`empty-state`,role:`status`,children:[(0,G.jsx)(`h2`,{children:`插件页面不可用`}),(0,G.jsx)(`p`,{children:`对应的 DSH workspace tab 已停用或卸载。`})]});let i=r.component;return(0,G.jsx)(i,{active:!0,currentAgentId:e,path:n.path})}var K8={agents:`Agent`,create:`创建 Agent`,"agent-detail":`Agent 配置`,conversations:`会话`,resources:`工程资源`,builds:`构建`,deployments:`部署`,observability:`可观测`,evaluations:`评测`,"runtime-resources":`运行资源`,plugins:`已安装插件`,automations:`自动化`,orchestration:`任务编排`,extension:`插件`},q8=Object.keys(K8),J8=[`model`,`tool`,`mcp`,`skill`],Y8=new Set([`conversations`,`builds`,`observability`,`automations`,`orchestration`]),X8=`agentkit-studio:chat-target:v1`;function Z8(){try{return e5(window.localStorage.getItem(X8)||``)}catch{return{kind:``,id:``}}}function Q8(e){try{window.localStorage.setItem(X8,e)}catch{}}function $8(e){let t=e.replace(/^#\/?/,``).split(`/`).filter(Boolean),n=t[0]===`agents`&&t[1]&&t[2]===`edit`?decodeURIComponent(t[1]):``,r=t[0]===`agents`&&t[1]&&!t[2]?decodeURIComponent(t[1]):``,i=t[0]===`evaluations`&&t[1]?decodeURIComponent(t[1]):``,a=t[0],o=t[0]===`extensions`&&t[1]?`/extensions/${decodeURIComponent(t[1])}`:``,s=n?`create`:r?`agent-detail`:o?`extension`:q8.includes(a)?a:`agents`;return{view:s,resourceKind:s===`resources`&&J8.includes(t[1])?t[1]:`model`,editingAgentId:n,detailAgentId:r,evaluationRunId:i,extensionPath:o}}function e5(e){let t=e.indexOf(`:`);if(t<=0)return{kind:``,id:``};let n=e.slice(0,t);return n!==`cloud`&&n!==`local`?{kind:``,id:``}:{kind:n,id:e.slice(t+1)}}function t5(e,t,n){return e===`extension`&&!n.some(e=>e.path===t)}function n5(){let e=O8(),t=L8(),n=$8(window.location.hash),[r,i]=(0,s.useState)(n.view),[a,o]=(0,s.useState)(n.evaluationRunId),[c,l]=(0,s.useState)(n.extensionPath),[u,d]=(0,s.useState)(n.resourceKind),[f,p]=(0,s.useState)([]),[m,h]=(0,s.useState)(!1),[_,v]=(0,s.useState)(n.detailAgentId||n.editingAgentId||``),[y,b]=(0,s.useState)(``),[x,S]=(0,s.useState)(n.detailAgentId),[C,w]=(0,s.useState)(n.editingAgentId),[T,E]=(0,s.useState)(null),[D,O]=(0,s.useState)(!1),[k,A]=(0,s.useState)(!1),[j,M]=(0,s.useState)(!1),[P,F]=(0,s.useState)(`general`),[I,L]=(0,s.useState)(r===`conversations`),[R,z]=(0,s.useState)([]),[B,V]=(0,s.useState)(!1),[H,ee]=(0,s.useState)(()=>{let e=Z8();return e.kind===`cloud`?e.id:``}),[te,ne]=(0,s.useState)(!1),[U,re]=(0,s.useState)(0),[ie,ae]=(0,s.useState)(B8),oe=Kz(qB.contributions,Wz.sidebarNavigation),se=Kz(qB.contributions,Wz.route);(0,s.useEffect)(()=>{UU.refresh().catch(e=>{console.warn(`DSH Profile client graph was not activated`,e)})},[]),(0,s.useEffect)(()=>(document.body.classList.toggle(`create-mode`,r===`create`),()=>document.body.classList.remove(`create-mode`)),[r]),(0,s.useEffect)(()=>{let e=()=>{let e=$8(window.location.hash);i(e.view),d(e.resourceKind),w(e.editingAgentId),S(e.detailAgentId),o(e.evaluationRunId),l(e.extensionPath),(e.editingAgentId||e.detailAgentId)&&v(e.editingAgentId||e.detailAgentId),e.view===`conversations`&&L(!0)};return window.addEventListener(`hashchange`,e),window.addEventListener(`popstate`,e),()=>{window.removeEventListener(`hashchange`,e),window.removeEventListener(`popstate`,e)}},[]);function ce(e){i(e),e===`conversations`&&L(!0),e!==`create`&&w(``),o(``),e!==`extension`&&l(``);let t=e===`resources`?`#/resources/${u}`:`#/${e}`;window.location.hash!==t&&window.history.pushState(null,``,t)}function le(e){i(`evaluations`),o(e),window.history.pushState(null,``,`#/evaluations/${encodeURIComponent(e)}`)}function ue(){o(``),window.history.pushState(null,``,`#/evaluations`)}let de=(0,s.useCallback)(async()=>{try{let e=(await g(`/api/v1/agents?limit=100`).then(e=>e.json())).items||[],t=await Promise.all(e.map(e=>g(`/api/v1/agents/${encodeURIComponent(e.metadata.id)}`).then(e=>e.ok?e.json():null).catch(()=>null))),n=e.map((e,n)=>({...e,builds:t[n]?.builds||[]}));p(n),v(e=>n.some(t=>t.metadata.id===e)?e:n[0]?.metadata.id||``)}catch{}finally{h(!0)}},[]);(0,s.useEffect)(()=>{de()},[de,U]);let W=(0,s.useCallback)(async()=>{try{let[e,t]=await Promise.all([g(`/api/v1/deployments`),g(`/api/v1/cloud-agents?size=100`)]);if(!e.ok)return;let n=await e.json(),r=t.ok?await t.json():{items:[]},i=n.items||[],a=r.items||[],o=[...new Set(i.flatMap(e=>e.agentId?.trim()?[e.agentId.trim()]:[]))],s=await Promise.all(o.map(e=>Promise.resolve().then(()=>g(`/api/v1/cloud-agents/${encodeURIComponent(e)}`)).then(async e=>e.ok?await e.json():null).catch(()=>null))),c=new Map(a.map(e=>[e.agentId,e]));for(let e of s)e?.agentId&&c.set(e.agentId,{...c.get(e.agentId),...e});let l=UV(i,[...c.values()]);z(l),ee(e=>l.some(t=>t.id===e&&BV(t).kind===`studio-session-events`)?e:``)}catch{}finally{V(!0)}},[]);(0,s.useEffect)(()=>{W()},[W,U]),(0,s.useEffect)(()=>{g(`/api/v1/system/bootstrap`).then(e=>e.json()).then(e=>{E(e.workspace||null),O(!!e.workspace)}).catch(()=>O(!1)).finally(()=>A(!0))},[U]);let fe=f.find(e=>e.metadata.id===_),pe=k?D?`ready`:`failed`:`pending`,me=k?D?`运行正常`:`连接失败`:`检查中`;function he(e){e&&(v(e),r===`automations`&&y&&b(e),r===`conversations`&&L(!0))}let ge=R.filter(e=>BV(e).kind===`studio-session-events`),_e=ge.find(e=>e.id===H),ve=r===`conversations`&&!!_e;(0,s.useEffect)(()=>{r!==`conversations`||!m||!B||(_e?Q8(`cloud:${_e.id}`):fe&&Q8(`local:${fe.metadata.id}`))},[m,B,fe,_e,r]),(0,s.useEffect)(()=>{if(r!==`conversations`||!I||!m||!B||_||fe||_e)return;let e=ge[0];e&&(ee(e.id),ne(!1))},[m,I,B,_,fe,_e,ge,r]);let ye=[...f.map(e=>({value:`local:${e.metadata.id}`,label:`本地 · ${e.metadata.name}`})),...ge.map(e=>({value:`cloud:${e.id}`,label:`云端 · ${e.agentName||e.agentId}`}))],be=_e?`cloud:${_e.id}`:_?`local:${_}`:``;function xe(e){let{kind:t,id:n}=e5(e);if(t===`cloud`&&n){if(!ge.some(e=>e.id===n))return;ee(n),ne(!1),L(!0);return}t===`local`&&n&&(ee(``),he(n))}function Se(e){let t=fe||f[0],n=_e||ge[0];e?(ee(``),v(e)):!e&&_e?v(``):t?(ee(``),v(t.metadata.id)):n?(v(``),ee(n.id),ne(!1)):(v(``),ee(``)),L(!0),ce(`conversations`)}function Ce(e){BV(e).kind===`studio-session-events`&&(z(t=>t.some(t=>t.id===e.id)?t:[...t,e]),ee(e.id),ne(!1),L(!0),ce(`conversations`))}function we(e){w(``),S(e),v(e),i(`agent-detail`);let t=`#/agents/${encodeURIComponent(e)}`;window.location.hash!==t&&window.history.pushState(null,``,t)}function Te(){w(``),ce(`create`)}function Ee(e){w(e),v(e),i(`create`);let t=`#/agents/${encodeURIComponent(e)}/edit`;window.location.hash!==t&&window.history.pushState(null,``,t)}function De(e){d(e),i(`resources`);let t=`#/resources/${e}`;window.location.hash!==t&&window.history.pushState(null,``,t)}let Oe=r===`create`||r===`agent-detail`?`Agent`:null,ke=r===`create`&&C?`编辑 Agent`:K8[r],Ae=T?.name||`Workspace`,je=T?.path||(D?`本地工作区`:`正在连接本地工作区`),Me=r===`create`||r===`conversations`||r===`observability`,Ne=e!==`compact`,Pe=Ne&&(ie??!0);function Fe(){if(!Ne)return;let e=!Pe;ae(e),V8(e)}function Ie(e,t){e===`conversations`?Se():e===`resources`?De(t||`model`):(e===`automations`&&b(``),ce(e))}function Le(e){if(!se.find(t=>t.path===e))return;i(`extension`),l(e),o(``);let t=`#/extensions/${encodeURIComponent(e.replace(/^\/extensions\//,``))}`;window.location.hash!==t&&window.history.pushState(null,``,t)}let Re=se.find(e=>e.path===c);return(0,s.useEffect)(()=>{t5(r,c,se)&&(l(``),i(`agents`),window.history.replaceState(null,``,`#/agents`))},[c,se,r]),(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`a`,{className:`skip-link`,href:`#mainContent`,children:`跳到主要内容`}),(0,G.jsxs)(`div`,{className:`app-shell`,"data-view":r,"data-viewport":e,"data-focused":Me,"data-rail":Pe?`expanded`:`compact`,children:[(0,G.jsx)(W8,{view:r,resourceKind:u,expanded:Pe,workspaceName:Ae,workspacePath:je,runtimeReady:D,onNavigate:Ie,extensionItems:oe,activeExtensionPath:c,onNavigateExtension:e=>Le(e.path),onOpenSettings:()=>{F(`general`),M(!0)}}),(0,G.jsxs)(`div`,{className:`app-main`,children:[(0,G.jsxs)(`header`,{className:`global-header${Oe?` nested`:``}`,"aria-label":`当前页面`,children:[Ne&&(0,G.jsx)(`button`,{className:`icon-button tertiary rail-toggle`,type:`button`,"aria-label":Pe?`收起导航`:`展开导航`,title:Pe?`收起导航`:`展开导航`,onClick:Fe,children:Pe?(0,G.jsx)(We,{size:16}):(0,G.jsx)(Ge,{size:16})}),Oe&&(0,G.jsxs)(`div`,{className:`header-identity-inline`,"aria-label":`当前位置`,children:[(0,G.jsx)(`button`,{className:`crumb`,type:`button`,onClick:()=>ce(`agents`),children:Oe}),(0,G.jsx)(`span`,{className:`crumb-sep`,children:`/`}),r===`agent-detail`&&fe&&(0,G.jsx)(Ct,{name:fe.metadata.name,appearance:fe.metadata.appearance,template:fe.metadata.labels?.[`agentkit.ksyun.com/template`],size:`sm`}),(0,G.jsx)(`h1`,{children:r===`agent-detail`&&fe?fe.metadata.name:ke}),r===`agent-detail`&&fe&&(0,G.jsxs)(`span`,{className:`mono`,children:[fe.metadata.id,` · r`,fe.metadata.revision||1]})]}),!Oe&&(0,G.jsxs)(`div`,{className:`header-identity`,children:[(0,G.jsxs)(`span`,{children:[`工作区 · `,Ae]}),r===`conversations`?(0,G.jsx)(`strong`,{children:ke}):(0,G.jsx)(`h1`,{children:ke})]}),(0,G.jsxs)(`div`,{className:`header-actions`,children:[(0,G.jsx)(`div`,{id:`pageHeaderTools`,className:`page-header-tools`,"data-testid":`page-header-tools`}),r===`conversations`?(0,G.jsx)(Fh,{className:`header-agent-selector conversation-target-selector`,ariaLabel:`切换会话目标`,value:be,placeholder:`选择会话目标`,options:ye,onValueChange:xe}):Y8.has(r)&&(0,G.jsx)(Fh,{className:`header-agent-selector`,ariaLabel:`切换当前 Agent`,value:_,placeholder:`未选择`,options:f.map(e=>({value:e.metadata.id,label:e.metadata.name})),onValueChange:he}),r!==`conversations`&&(0,G.jsx)(`span`,{className:`tag`,children:ve?`云端部署`:`本地`}),(0,G.jsx)(`span`,{className:`badge`,"data-state":pe,children:me}),(0,G.jsx)(`button`,{className:`icon-button tertiary global-refresh-button`,type:`button`,"aria-label":`刷新`,title:`刷新`,onClick:()=>re(e=>e+1),children:(0,G.jsx)(et,{size:16})}),r===`conversations`&&I&&_&&!ve&&(0,G.jsx)(`button`,{className:`icon-button tertiary conversation-run-detail`,type:`button`,"aria-label":`运行详情`,title:`运行详情`,onClick:()=>ne(e=>!e),children:(0,G.jsx)(Ke,{size:16})}),(0,G.jsx)(`div`,{id:`pageHeaderActions`,className:`page-header-page-actions`,"data-testid":`page-header-actions`})]})]}),(0,G.jsxs)(`main`,{id:`mainContent`,children:[(0,G.jsxs)(`div`,{className:`chat-wrap`,"data-layout":`workbench`,style:{display:r===`conversations`?`flex`:`none`},children:[(0,G.jsxs)(`div`,{className:`chat-host`,children:[I&&ve&&_e&&(0,G.jsx)(E8,{deploymentId:_e.id,agentId:_e.agentId||`Agent`,agentName:_e.agentName||_e.agentId||`云端 Agent`,active:r===`conversations`,refreshTick:U},_e.id),I&&!ve&&_&&(0,G.jsx)(Z6,{agentId:_,agentName:fe?.metadata.name||`Agent`,agentAppearance:fe?.metadata.appearance,active:r===`conversations`,refreshTick:U,onConfigureAgent:()=>Ee(_),onOpenSettings:()=>{F(`credentials`),M(!0)}},_),I&&!ve&&!_&&(0,G.jsxs)(`div`,{className:`empty-state chat-agent-empty`,role:`status`,children:[(0,G.jsx)(`span`,{className:`empty-icon`,children:(0,G.jsx)(N,{})}),(0,G.jsx)(`h2`,{children:m&&B?`还没有可用的会话目标`:`正在载入会话目标`}),(0,G.jsx)(`p`,{children:m&&B?`可以创建本地 Agent,或在云端 Agent 页面选择受支持的 Agent。`:`正在同步本地工作区与账号云端 Agent…`}),m&&B&&(0,G.jsxs)(`div`,{className:`empty-actions`,children:[(0,G.jsx)(`button`,{className:`primary-button`,type:`button`,onClick:Te,children:`创建本地 Agent`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:()=>ce(`deployments`),children:`查看云端 Agent`})]})]})]}),te&&I&&_&&!ve&&(0,G.jsx)(J3,{agentId:_,onClose:()=>ne(!1),onOpenTrace:()=>ce(`observability`)})]}),(0,G.jsxs)(`div`,{style:{display:r===`conversations`?`none`:void 0},children:[r===`agents`&&(0,G.jsx)(Lh,{agents:f,runtimeReady:D,runtimeChecked:k,workspaceName:T?.name||``,onCreate:Te,onDetail:we,onChat:Se,onBuild:()=>ce(`builds`),onChanged:de}),r===`create`&&(0,G.jsx)(lV,{editingAgentId:C||void 0,viewportMode:e,onAgentsChanged:de,onBack:()=>C?we(C):ce(`agents`),onCreated:(e,t)=>{w(``),de(),e&&t?Se(e):e?we(e):ce(`agents`)}}),r===`agent-detail`&&x&&(0,G.jsx)(AV,{agentId:x,onBack:()=>ce(`agents`),onChat:Se,onBuild:()=>ce(`builds`),onEdit:Ee,onChanged:de}),r===`resources`&&(0,G.jsx)(wz,{kind:u,onKindChange:De,refreshTick:U}),r===`builds`&&(0,G.jsx)(LV,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`deployments`&&(0,G.jsx)(bH,{onCreate:Te,onOpenChat:Ce,onSelectBuild:()=>ce(`builds`)}),r===`observability`&&(0,G.jsx)(MU,{refreshTick:U}),r===`evaluations`&&!a&&(0,G.jsx)(Y2,{refreshTick:U,onOpenRun:le}),r===`evaluations`&&a&&(0,G.jsx)(Q2,{runId:a,onBack:ue}),r===`runtime-resources`&&(0,G.jsx)(BU,{refreshTick:U,onOpenResources:De}),r===`plugins`&&(0,G.jsx)(iW,{}),r===`automations`&&(0,G.jsx)(wV,{currentAgentId:_,agents:f,onSelectAgent:v,scopedAgentId:y}),r===`orchestration`&&(0,G.jsx)(z2,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`extension`&&Re&&(0,G.jsx)(G8,{currentAgentId:_,route:Re})]})]})]}),j&&(0,G.jsx)(r4,{themePreference:t.preference,onThemePreferenceChange:t.setPreference,initialSection:P,onClose:()=>M(!1)}),(0,G.jsx)(P_,{})]})]})}async function r5(){I8();try{await _()}catch{}(0,c.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(s.StrictMode,{children:(0,G.jsx)(n5,{})}))}r5();
\ No newline at end of file
diff --git a/ksadk/studio/static/assets/index-CYekR2Xv.js b/ksadk/studio/static/assets/index-CYekR2Xv.js
deleted file mode 100644
index 3ed8e256..00000000
--- a/ksadk/studio/static/assets/index-CYekR2Xv.js
+++ /dev/null
@@ -1,260 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrismRenderer-IYN-ffww.js","assets/rolldown-runtime-hePW80VL.js","assets/react-vendor-BNmTiJ-I.js"])))=>i.map(i=>d[i]);
-import{n as e,r as t,t as n}from"./rolldown-runtime-hePW80VL.js";import{i as r,n as i,r as a,t as o}from"./react-vendor-BNmTiJ-I.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var s=t(r(),1),c=i(),l=`modulepreload`,u=function(e){return`/static/`+e},d={},f=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=u(t,n),t=s(t),t in d)return;d[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:l,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},p=``,m=window.fetch.bind(window);function h(e){return e.startsWith(`/api/v1/`)||e===`/v1/responses`||e.startsWith(`/v1/responses/`)}async function g(e,t={}){let n=String(t.method||(e instanceof Request?e.method:`GET`)).toUpperCase(),r=new URL(e instanceof Request?e.url:String(e),window.location.href),i=new Headers(t.headers||(e instanceof Request?e.headers:void 0));p&&r.origin===window.location.origin&&h(r.pathname)&&![`GET`,`HEAD`,`OPTIONS`].includes(n)&&i.set(`X-CSRF-Token`,p);let a=e instanceof Request?e.clone():e,o={...t,headers:i,credentials:t.credentials||`same-origin`},s=await m(e,o);if(s.status!==403||[`GET`,`HEAD`,`OPTIONS`].includes(n)||r.origin!==window.location.origin||!h(r.pathname))return s;let c=``;try{c=(await s.clone().json())?.error?.code||``}catch{return s}if(c!==`CSRF_TOKEN_INVALID`)return s;let l=await m(`/api/v1/system/bootstrap`,{credentials:`same-origin`});return!l.ok||(p=(await l.json()).csrfToken||``,!p)?s:(i.set(`X-CSRF-Token`,p),m(a,{...o,headers:i}))}async function _(){let e=window.location.hash.match(/(?:^#|&)session=([^&]+)/);if(e){let t=await m(`/api/v1/system/session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({token:decodeURIComponent(e[1])}),credentials:`same-origin`});if(!t.ok)throw Error(`本地 Studio 会话已失效,请重新启动服务。`);p=(await t.json()).csrfToken||``,window.history.replaceState(null,``,`${window.location.pathname}${window.location.search}`);return}let t=await m(`/api/v1/system/bootstrap`,{credentials:`same-origin`});t.ok&&(p=(await t.json()).csrfToken||``)}var v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=(0,s.createContext)({}),T=()=>(0,s.useContext)(w),E=(0,s.forwardRef)(({color:e,size:t,strokeWidth:n,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...c},l)=>{let{size:u=24,strokeWidth:d=2,absoluteStrokeWidth:f=!1,color:p=`currentColor`,className:m=``}=T()??{},h=r??f?Number(n??d)*24/Number(t??u):n??d;return(0,s.createElement)(`svg`,{ref:l,...S,width:t??u??S.width,height:t??u??S.height,stroke:e??p,strokeWidth:h,className:v(`lucide`,m,i),...!a&&!C(c)&&{"aria-hidden":`true`},...c},[...o.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(a)?a:[a]])}),D=(e,t)=>{let n=(0,s.forwardRef)(({className:n,...r},i)=>(0,s.createElement)(E,{ref:i,iconNode:t,className:v(`lucide-${y(x(e))}`,`lucide-${e}`,n),...r}));return n.displayName=x(e),n},O=D(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),k=D(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),A=D(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),j=D(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),M=D(`book-open`,[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]),N=D(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),P=D(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),F=D(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),I=D(`brain-circuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),L=D(`brain`,[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]),R=D(`chart-spline`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7`,key:`lw07rv`}]]),z=D(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),B=D(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),V=D(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),H=D(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ee=D(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),U=D(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),te=D(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),W=D(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ne=D(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}]]),re=D(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),G=D(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),ie=D(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),ae=D(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]),oe=D(`cloud-upload`,[[`path`,{d:`M12 13v8`,key:`1l5pq0`}],[`path`,{d:`M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242`,key:`1pljnt`}],[`path`,{d:`m8 17 4-4 4 4`,key:`1quai1`}]]),se=D(`code-xml`,[[`path`,{d:`m18 16 4-4-4-4`,key:`1inbqp`}],[`path`,{d:`m6 8-4 4 4 4`,key:`15zrgr`}],[`path`,{d:`m14.5 4-5 16`,key:`e7oirm`}]]),ce=D(`code`,[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]),le=D(`coins`,[[`path`,{d:`M13.744 17.736a6 6 0 1 1-7.48-7.48`,key:`bq4yh3`}],[`path`,{d:`M15 6h1v4`,key:`11y1tn`}],[`path`,{d:`m6.134 14.768.866-.5 2 3.464`,key:`17snzx`}],[`circle`,{cx:`16`,cy:`8`,r:`6`,key:`14bfc9`}]]),ue=D(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),de=D(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),fe=D(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),pe=D(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),me=D(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),he=D(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),ge=D(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),_e=D(`file-box`,[[`path`,{d:`M14 2v5a1 1 0 001 1h5`,key:`9v5fu7`}],[`path`,{d:`M14.692 22H18a2 2 0 002-2V8a2.4 2.4 0 00-.706-1.706l-3.588-3.588A2.4 2.4 0 0014 2H6a2 2 0 00-2 2v3.804`,key:`1ne0j7`}],[`path`,{d:`M2.264 13.752 7 16.5l4.737-2.748`,key:`t73mg3`}],[`path`,{d:`M2.995 13.014A2 2 0 002 14.744v3.516a2 2 0 00.996 1.73l3 1.74a2 2 0 002.008 0l3-1.74A2 2 0 0012 18.26v-3.517a2 2 0 00-.995-1.73l-3-1.742a2 2 0 00-1.892-.064z`,key:`h4qck`}],[`path`,{d:`M7 16.5V22`,key:`1i1gou`}]]),ve=D(`file-code-corner`,[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]]),ye=D(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),be=D(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),xe=D(`folder-closed`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}],[`path`,{d:`M2 10h20`,key:`1ir3d8`}]]),Se=D(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),Ce=D(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),we=D(`git-branch`,[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]),Te=D(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),Ee=D(`image-plus`,[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]),De=D(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Oe=D(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),ke=D(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Ae=D(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),je=D(`message-square-plus`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`M12 8v6`,key:`1ib9pf`}],[`path`,{d:`M9 11h6`,key:`1fldmi`}]]),Me=D(`message-square`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]),Ne=D(`messages-square`,[[`path`,{d:`M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z`,key:`1n2ejm`}],[`path`,{d:`M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1`,key:`1qfcsi`}]]),Pe=D(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),Fe=D(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Ie=D(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Le=D(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),Re=D(`package-check`,[[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`path`,{d:`m16 17 2 2 4-4`,key:`uh5qu3`}],[`path`,{d:`M21 11.127V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.729l7 4a2 2 0 0 0 2 .001l1.32-.753`,key:`kpkbpo`}],[`path`,{d:`M3.29 7 12 12l8.71-5`,key:`19ckod`}],[`path`,{d:`m7.5 4.27 8.997 5.148`,key:`9yrvtv`}]]),ze=D(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Be=D(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),Ve=D(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),He=D(`panel-right`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}]]),Ue=D(`paperclip`,[[`path`,{d:`m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551`,key:`1miecu`}]]),We=D(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),Ge=D(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Ke=D(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),qe=D(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Je=D(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),Ye=D(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Xe=D(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),Ze=D(`server-cog`,[[`path`,{d:`m10.852 14.772-.383.923`,key:`11vil6`}],[`path`,{d:`M13.148 14.772a3 3 0 1 0-2.296-5.544l-.383-.923`,key:`1v3clb`}],[`path`,{d:`m13.148 9.228.383-.923`,key:`t2zzyc`}],[`path`,{d:`m13.53 15.696-.382-.924a3 3 0 1 1-2.296-5.544`,key:`1bxfiv`}],[`path`,{d:`m14.772 10.852.923-.383`,key:`k9m8cz`}],[`path`,{d:`m14.772 13.148.923.383`,key:`1xvhww`}],[`path`,{d:`M4.5 10H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-.5`,key:`tn8das`}],[`path`,{d:`M4.5 14H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-.5`,key:`1g2pve`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`M6 6h.01`,key:`1utrut`}],[`path`,{d:`m9.228 10.852-.923-.383`,key:`1wtb30`}],[`path`,{d:`m9.228 13.148-.923.383`,key:`1a830x`}]]),Qe=D(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),$e=D(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),et=D(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),tt=D(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),nt=D(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),rt=D(`square-pen`,[[`path`,{d:`M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`,key:`1m0v6g`}],[`path`,{d:`M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z`,key:`ohrbg2`}]]),it=D(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),at=D(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),ot=D(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),st=D(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),ct=D(`text-wrap`,[[`path`,{d:`m16 16-3 3 3 3`,key:`117b85`}],[`path`,{d:`M3 12h14.5a1 1 0 0 1 0 7H13`,key:`18xa6z`}],[`path`,{d:`M3 19h6`,key:`1ygdsz`}],[`path`,{d:`M3 5h18`,key:`1u36vt`}]]),lt=D(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ut=D(`undo-2`,[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]),dt=D(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),ft=D(`workflow`,[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]),pt=D(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),mt=D(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),ht=D(`zap`,[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]),K=o(),gt={bot:N,sparkles:nt,search:Ye,code:se,workflow:Le};function _t({name:e,appearance:t,template:n,size:r=`md`,className:i=``}){let a=gt[t?.icon||(n===`research`?`search`:`bot`)],o={"--agent-avatar-color":t?.color||(n===`research`?`#2d7c68`:`#426ea8`)};return(0,K.jsx)(`span`,{className:`agent-avatar agent-avatar-${r}${i?` ${i}`:``}`,style:o,role:`img`,"aria-label":`${e}头像`,children:t?.imageUrl?(0,K.jsx)(`img`,{src:t.imageUrl,alt:``,draggable:!1}):(0,K.jsx)(a,{"aria-hidden":!0,size:r===`lg`?22:r===`xs`?12:16})})}var vt=Object.defineProperty,yt=(e,t)=>vt(e,`name`,{value:t,configurable:!0}),bt=!!(typeof window<`u`&&window.document&&window.document.createElement);function q(e,t,{checkForDefaultPrevented:n=!0}={}){return yt(function(r){if(e?.(r),n===!1||!r||!r.defaultPrevented)return t?.(r)},`handleEvent`)}yt(q,`composeEventHandlers`);function xt(e){if(!bt)throw Error(`Cannot access window outside of the DOM`);return e?.ownerDocument?.defaultView??window}yt(xt,`getOwnerWindow`);function St(e){if(!bt)throw Error(`Cannot access document outside of the DOM`);return e?.ownerDocument??document}yt(St,`getOwnerDocument`);function Ct(e,t=!1){let{activeElement:n}=St(e);if(!n?.nodeName)return null;if(wt(n)&&n.contentDocument)return Ct(n.contentDocument.body,t);if(t){let e=n.getAttribute(`aria-activedescendant`);if(e){let t=St(n).getElementById(e);if(t)return t}}return n}yt(Ct,`getActiveElement`);function wt(e){return e.tagName===`IFRAME`}yt(wt,`isFrame`);var Tt=Object.defineProperty,Et=(e,t)=>Tt(e,`name`,{value:t,configurable:!0});function Dt(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}Et(Dt,`setRef`);function Ot(...e){return t=>{let n=!1,r=e.map(e=>{let r=Dt(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;tAt(e,`name`,{value:t,configurable:!0});function Mt(e,t){let n=s.createContext(t);n.displayName=e+`Context`;let r=jt(e=>{let{children:t,...r}=e,i=s.useMemo(()=>r,Object.values(r));return(0,K.jsx)(n.Provider,{value:i,children:t})},`Provider`);r.displayName=e+`Provider`;function i(r,i={}){let{optional:a=!1}=i,o=s.useContext(n);if(o)return o;if(t!==void 0)return t;if(!a)throw Error(`\`${r}\` must be used within \`${e}\``)}return jt(i,`useContext`),[r,i]}jt(Mt,`createContext`);function Nt(e,t=[]){let n=[];function r(t,r){let i=s.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let o=jt(t=>{let{scope:n,children:r,...o}=t,c=n?.[e]?.[a]||i,l=s.useMemo(()=>o,Object.values(o));return(0,K.jsx)(c.Provider,{value:l,children:r})},`Provider`);o.displayName=t+`Provider`;function c(n,o,c={}){let{optional:l=!1}=c,u=o?.[e]?.[a]||i,d=s.useContext(u);if(d)return d;if(r!==void 0)return r;if(!l)throw Error(`\`${n}\` must be used within \`${t}\``)}return jt(c,`useContext`),[o,c]}jt(r,`createContext`);let i=jt(()=>{let t=n.map(e=>s.createContext(e));return jt(function(n){let r=n?.[e]||t;return s.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])},`useScope`)},`createScope`);return i.scopeName=e,[r,Pt(i,...t)]}jt(Nt,`createContextScope`);function Pt(...e){let t=e[0];if(e.length===1)return t;let n=jt(()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return jt(function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return s.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])},`useComposedScopes`)},`createScope`);return n.scopeName=t.scopeName,n}jt(Pt,`composeContextScopes`);var Ft=globalThis?.document?s.useLayoutEffect:()=>{},It=Object.defineProperty,Lt=(e,t)=>It(e,`name`,{value:t,configurable:!0}),Rt=s.useId||(()=>void 0),zt=0;function Bt(e){let[t,n]=s.useState(Rt());return Ft(()=>{e||n(e=>e??String(zt++))},[e]),e||(t?`radix-${t}`:``)}Lt(Bt,`useId`);var Vt=Object.defineProperty,Ht=(e,t)=>Vt(e,`name`,{value:t,configurable:!0}),Ut=s.useEffectEvent,Wt=s.useInsertionEffect;function Gt(e){if(typeof Ut==`function`)return Ut(e);let t=s.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof Wt==`function`?Wt(()=>{t.current=e}):Ft(()=>{t.current=e}),s.useMemo(()=>((...e)=>t.current?.(...e)),[])}Ht(Gt,`useEffectEvent`);var Kt=Object.defineProperty,qt=(e,t)=>Kt(e,`name`,{value:t,configurable:!0}),Jt=s.useInsertionEffect||Ft;function Yt({prop:e,defaultProp:t,onChange:n=qt(()=>{},`onChange`),caller:r}){let[i,a,o]=Xt({defaultProp:t,onChange:n}),c=e!==void 0;return[c?e:i,s.useCallback(t=>{if(c){let n=Zt(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[c,e,a,o])]}qt(Yt,`useControllableState`);function Xt({defaultProp:e,onChange:t}){let[n,r]=s.useState(e),i=s.useRef(n),a=s.useRef(t);return Jt(()=>{a.current=t},[t]),s.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}qt(Xt,`useUncontrolledState`);function Zt(e){return typeof e==`function`}qt(Zt,`isFunction`);var Qt=Symbol(`RADIX:SYNC_STATE`);function $t(e,t,n,r){let{prop:i,defaultProp:a,onChange:o,caller:c}=t,l=i!==void 0,u=Gt(o),d=[{...n,state:a}];r&&d.push(r);let[f,p]=s.useReducer((t,n)=>{if(n.type===Qt)return{...t,state:n.state};let r=e(t,n);return l&&!Object.is(r.state,t.state)&&u(r.state),r},...d),m=f.state,h=s.useRef(m);s.useEffect(()=>{h.current!==m&&(h.current=m,l||u(m))},[m,h,l]);let g=s.useMemo(()=>i===void 0?f:{...f,state:i},[f,i]);return s.useEffect(()=>{l&&!Object.is(i,f.state)&&p({type:Qt,state:i})},[i,f.state,l]),[g,p]}qt($t,`useControllableStateReducer`);var en=t(a(),1),tn=Object.defineProperty,nn=(e,t)=>tn(e,`name`,{value:t,configurable:!0});function rn(e){let t=s.forwardRef((t,n)=>{let{children:r,...i}=t,a=null,o=!1,c=[];fn(r)&&typeof gn==`function`&&(r=gn(r._payload)),s.Children.forEach(r,e=>{if(un(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;fn(n)&&typeof gn==`function`&&(n=gn(n._payload)),a=sn(t,n),c.push(a?.props?.children)}else c.push(e)}),a?a=s.cloneElement(a,void 0,c):!o&&s.Children.count(r)===1&&s.isValidElement(r)&&(a=r);let l=a?ln(a):void 0,u=kt(n,l);if(!a){if(r||r===0)throw Error(o?hn(e):mn(e));return r}let d=cn(i,a.props??{});return a.type!==s.Fragment&&(d.ref=n?u:l),s.cloneElement(a,d)});return t.displayName=`${e}.Slot`,t}nn(rn,`createSlot`);var an=Symbol.for(`radix.slottable`);function on(e){let t=nn(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=an,t}nn(on,`createSlottable`);var sn=nn((e,t)=>{if(`child`in e.props){let t=e.props.child;return s.isValidElement(t)?s.cloneElement(t,void 0,e.props.children(t.props.children)):null}return s.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function cn(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}nn(cn,`mergeProps`);function ln(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}nn(ln,`getElementRef`);function un(e){return s.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===an}nn(un,`isSlottable`);var dn=Symbol.for(`react.lazy`);function fn(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===dn&&`_payload`in e&&pn(e._payload)}nn(fn,`isLazyComponent`);function pn(e){return typeof e==`object`&&!!e&&`then`in e}nn(pn,`isPromiseLike`);var mn=nn(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),hn=nn(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),gn=s.use,_n=Object.defineProperty,vn=(e,t)=>_n(e,`name`,{value:t,configurable:!0}),yn=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=rn(`Primitive.${t}`),r=s.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,K.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function bn(e,t){e&&en.flushSync(()=>e.dispatchEvent(t))}vn(bn,`dispatchDiscreteCustomEvent`);var xn=Object.defineProperty,Sn=(e,t)=>xn(e,`name`,{value:t,configurable:!0});function Cn(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>((...e)=>t.current?.(...e)),[])}Sn(Cn,`useCallbackRef`);var wn=Object.defineProperty,Tn=(e,t)=>wn(e,`name`,{value:t,configurable:!0}),En=`dismissableLayer.update`,Dn=`dismissableLayer.pointerDownOutside`,On=`dismissableLayer.focusOutside`,kn,An=s.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),jn=s.forwardRef(Tn(function(e,t){let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:o,onInteractOutside:c,onDismiss:l,...u}=e,d=s.useContext(An),[f,p]=s.useState(null),m=f?.ownerDocument??globalThis?.document,[,h]=s.useState({}),g=kt(t,p),_=Array.from(d.layers),[v]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),y=v?_.indexOf(v):-1,b=f?_.indexOf(f):-1,x=d.layersWithOutsidePointerEventsDisabled.size>0,S=b>=y,C=s.useRef(!1),w=Pn(e=>{a?.(e),c?.(e),e.defaultPrevented||l?.()},{ownerDocument:m,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:C,dismissableSurfaces:d.dismissableSurfaces,shouldHandlePointerDownOutside:s.useCallback(e=>{if(!(e instanceof Node))return!1;let t=[...d.branches].some(t=>t.contains(e));return S&&!t},[d.branches,S])}),T=Fn(e=>{if(r&&C.current)return;let t=e.target;[...d.branches].some(e=>e.contains(t))||(o?.(e),c?.(e),e.defaultPrevented||l?.())},m),E=f?b===_.length-1:!1,D=Cn(e=>{e.key===`Escape`&&(i?.(e),!e.defaultPrevented&&l&&(e.preventDefault(),l()))});return s.useEffect(()=>{if(E)return m.addEventListener(`keydown`,D,{capture:!0}),()=>m.removeEventListener(`keydown`,D,{capture:!0})},[m,E,D]),s.useEffect(()=>{if(f)return n&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(kn=m.body.style.pointerEvents,m.body.style.pointerEvents=`none`),d.layersWithOutsidePointerEventsDisabled.add(f)),d.layers.add(f),In(),()=>{n&&(d.layersWithOutsidePointerEventsDisabled.delete(f),d.layersWithOutsidePointerEventsDisabled.size===0&&(m.body.style.pointerEvents=kn))}},[f,m,n,d]),s.useEffect(()=>()=>{f&&(d.layers.delete(f),d.layersWithOutsidePointerEventsDisabled.delete(f),In())},[f,d]),s.useEffect(()=>{let e=Tn(()=>h({}),`handleUpdate`);return document.addEventListener(En,e),()=>document.removeEventListener(En,e)},[]),(0,K.jsx)(yn.div,{...u,ref:g,style:{pointerEvents:x?S?`auto`:`none`:void 0,...e.style},onFocusCapture:q(e.onFocusCapture,T.onFocusCapture),onBlurCapture:q(e.onBlurCapture,T.onBlurCapture),onPointerDownCapture:q(e.onPointerDownCapture,w.onPointerDownCapture)})},`DismissableLayer`));function Mn(){let e=s.useContext(An),[t,n]=s.useState(null);return s.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}Tn(Mn,`useDismissableLayerSurface`);var Nn=Tn(()=>!0,`IS_TRUE`);function Pn(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:o=Nn}=t,c=Cn(e),l=s.useRef(!1),u=s.useRef(!1),d=s.useRef(new Map),f=s.useRef(()=>{});return s.useEffect(()=>{function e(){u.current=!1,i.current=!1,d.current.clear()}Tn(e,`resetOutsideInteraction`);function t(){return Array.from(d.current.values()).some(Boolean)}Tn(t,`isOutsideInteractionIntercepted`);function s(e){if(!u.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||d.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{u.current&&f.current()},0)}Tn(s,`handleInteractionCapture`);function p(e){u.current&&d.current.set(e.type,!1)}Tn(p,`handleInteractionBubble`);let m=Tn(a=>{if(a.target&&!l.current){let s=function(){n.removeEventListener(`click`,f.current);let r=t();e(),r||Ln(Dn,c,p,{discrete:!0})};if(Tn(s,`handleAndDispatchPointerDownOutsideEvent`),!o(a.target)){n.removeEventListener(`click`,f.current),e(),l.current=!1;return}let p={originalEvent:a};u.current=!0,i.current=r&&a.button===0,d.current.clear(),!r||a.button!==0?s():(n.removeEventListener(`click`,f.current),f.current=s,n.addEventListener(`click`,f.current,{once:!0}))}else n.removeEventListener(`click`,f.current),e();l.current=!1},`handlePointerDown`),h=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of h)n.addEventListener(e,s,!0),n.addEventListener(e,p);let g=window.setTimeout(()=>{n.addEventListener(`pointerdown`,m)},0);return()=>{window.clearTimeout(g),n.removeEventListener(`pointerdown`,m),n.removeEventListener(`click`,f.current);for(let e of h)n.removeEventListener(e,s,!0),n.removeEventListener(e,p)}},[n,c,r,i,a,o]),{onPointerDownCapture:Tn(()=>l.current=!0,`onPointerDownCapture`)}}Tn(Pn,`usePointerDownOutside`);function Fn(e,t=globalThis?.document){let n=Cn(e),r=s.useRef(!1);return s.useEffect(()=>{let e=Tn(e=>{e.target&&!r.current&&Ln(On,n,{originalEvent:e},{discrete:!1})},`handleFocus`);return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:Tn(()=>r.current=!0,`onFocusCapture`),onBlurCapture:Tn(()=>r.current=!1,`onBlurCapture`)}}Tn(Fn,`useFocusOutside`);function In(){let e=new CustomEvent(En);document.dispatchEvent(e)}Tn(In,`dispatchUpdate`);function Ln(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?bn(i,a):i.dispatchEvent(a)}Tn(Ln,`handleAndDispatchCustomEvent`);var Rn=Object.defineProperty,zn=(e,t)=>Rn(e,`name`,{value:t,configurable:!0}),Bn=`focusScope.autoFocusOnMount`,Vn=`focusScope.autoFocusOnUnmount`,Hn={bubbles:!1,cancelable:!0},Un=s.forwardRef(zn(function(e,t){let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[c,l]=s.useState(null),u=Cn(i),d=Cn(a),f=s.useRef(null),p=kt(t,l),m=s.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s.useEffect(()=>{if(r){let e=function(e){if(m.paused||!c)return;let t=e.target;c.contains(t)?f.current=t:Xn(f.current,{select:!0})},t=function(e){if(m.paused||!c)return;let t=e.relatedTarget;t!==null&&(c.contains(t)||Xn(f.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&Xn(c)};zn(e,`handleFocusIn`),zn(t,`handleFocusOut`),zn(n,`handleMutations`),document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,c,m.paused]),s.useEffect(()=>{if(c){Zn.add(m);let e=document.activeElement;if(!c.contains(e)){let t=new CustomEvent(Bn,Hn);c.addEventListener(Bn,u),c.dispatchEvent(t),t.defaultPrevented||(Wn(er(Kn(c)),{select:!0}),document.activeElement===e&&Xn(c))}return()=>{c.removeEventListener(Bn,u),setTimeout(()=>{let t=new CustomEvent(Vn,Hn);c.addEventListener(Vn,d),c.dispatchEvent(t),t.defaultPrevented||Xn(e??document.body,{select:!0}),c.removeEventListener(Vn,d),Zn.remove(m)},0)}}},[c,u,d,m]);let h=s.useCallback(e=>{if(!n&&!r||m.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=Gn(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&Xn(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&Xn(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,m.paused]);return(0,K.jsx)(yn.div,{tabIndex:-1,...o,ref:p,onKeyDown:h})},`FocusScope`));function Wn(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(Xn(r,{select:t}),document.activeElement!==n)return}zn(Wn,`focusFirst`);function Gn(e){let t=Kn(e);return[qn(t,e),qn(t.reverse(),e)]}zn(Gn,`getTabbableEdges`);function Kn(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:zn(e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},`acceptNode`)});for(;n.nextNode();)t.push(n.currentNode);return t}zn(Kn,`getTabbableCandidates`);function qn(e,t){let n=typeof t.checkVisibility==`function`&&t.checkVisibility({checkVisibilityCSS:!0});for(let r of e)if(!(n?!r.checkVisibility({checkVisibilityCSS:!0}):Jn(r,{upTo:t})))return r}zn(qn,`findVisible`);function Jn(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}zn(Jn,`isHidden`);function Yn(e){return e instanceof HTMLInputElement&&`select`in e}zn(Yn,`isSelectableInput`);function Xn(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Yn(e)&&t&&e.select()}}zn(Xn,`focus`);var Zn=Qn();function Qn(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=$n(e,t),e.unshift(t)},remove(t){e=$n(e,t),e[0]?.resume()}}}zn(Qn,`createFocusScopesStack`);function $n(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}zn($n,`arrayRemove`);function er(e){return e.filter(e=>e.tagName!==`A`)}zn(er,`removeLinks`);var tr=Object.defineProperty,nr=s.forwardRef(((e,t)=>tr(e,`name`,{value:t,configurable:!0}))(function(e,t){let{container:n,...r}=e,[i,a]=s.useState(!1);Ft(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?en.createPortal((0,K.jsx)(yn.div,{...r,ref:t}),o):null},`Portal`)),rr=Object.defineProperty,ir=(e,t)=>rr(e,`name`,{value:t,configurable:!0});function ar(e,t){return s.useReducer((e,n)=>t[e][n]??e,e)}ir(ar,`useStateMachine`);var or=ir(e=>{let{present:t,children:n}=e,r=sr(t),i=typeof n==`function`?n({present:r.isPresent}):s.Children.only(n),a=lr(r.ref,dr(i));return typeof n==`function`||r.isPresent?s.cloneElement(i,{ref:a}):null},`Presence`);function sr(e){let[t,n]=s.useState(),r=s.useRef(null),i=s.useRef(e),a=s.useRef(`none`),o=s.useRef(void 0),[c,l]=ar(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return s.useEffect(()=>{c===`mounted`?(a.current=o.current??ur(r.current),o.current=void 0):a.current=`none`},[c]),Ft(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,s=ur(t);e?(o.current=s,l(`MOUNT`)):s===`none`||t?.display===`none`?l(`UNMOUNT`):l(n&&r!==s?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,l]),Ft(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=ir(a=>{let o=ur(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(l(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},`handleAnimationEnd`),s=ir(e=>{e.target===t&&(a.current=ur(r.current))},`handleAnimationStart`);return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}l(`ANIMATION_END`)},[t,l]),{isPresent:[`mounted`,`unmountSuspended`].includes(c),ref:s.useCallback(e=>{if(e){let t=getComputedStyle(e);r.current=t,o.current=ur(t)}else r.current=null;n(e)},[])}}ir(sr,`usePresence`);function cr(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}ir(cr,`setRef`);function lr(...e){let t=s.useRef(e);return t.current=e,s.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=cr(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;efr(e,`name`,{value:t,configurable:!0}),mr=0,hr=null;function gr(e){return _r(),e.children}pr(gr,`FocusGuards`);function _r(){s.useEffect(()=>{hr||={start:vr(),end:vr()};let{start:e,end:t}=hr;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),mr++,()=>{mr===1&&(hr?.start.remove(),hr?.end.remove(),hr=null),mr=Math.max(0,mr-1)}},[])}pr(_r,`useFocusGuards`);function vr(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}pr(vr,`createFocusGuard`);var yr=function(e,t){return yr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},yr(e,t)};function br(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Class extends value `+String(t)+` is not a constructor or null`);yr(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var xr=function(){return xr=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Yr;var t=Zr(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},$r=Jr(),ei=`data-scroll-locked`,ti=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),`
- .${Er} {
- overflow: hidden ${r};
- padding-right: ${s}px ${r};
- }
- body[${ei}] {
- overflow: hidden ${r};
- overscroll-behavior: contain;
- ${[t&&`position: relative ${r};`,n===`margin`&&`
- padding-left: ${i}px;
- padding-top: ${a}px;
- padding-right: ${o}px;
- margin-left:0;
- margin-top:0;
- margin-right: ${s}px ${r};
- `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)}
- }
-
- .${wr} {
- right: ${s}px ${r};
- }
-
- .${Tr} {
- margin-right: ${s}px ${r};
- }
-
- .${wr} .${wr} {
- right: 0 ${r};
- }
-
- .${Tr} .${Tr} {
- margin-right: 0 ${r};
- }
-
- body[${ei}] {
- ${Dr}: ${s}px;
- }
-`},ni=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},ri=function(){s.useEffect(function(){return document.body.setAttribute(ei,(ni()+1).toString()),function(){var e=ni()-1;e<=0?document.body.removeAttribute(ei):document.body.setAttribute(ei,e.toString())}},[])},ii=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;ri();var a=s.useMemo(function(){return Qr(i)},[i]);return s.createElement($r,{styles:ti(a,!t,i,n?``:`!important`)})},ai=!1;if(typeof window<`u`)try{var oi=Object.defineProperty({},"passive",{get:function(){return ai=!0,!0}});window.addEventListener(`test`,oi,oi),window.removeEventListener(`test`,oi,oi)}catch{ai=!1}var si=ai?{passive:!1}:!1,ci=function(e){return e.tagName===`TEXTAREA`},li=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!ci(e)&&n[t]===`visible`)},ui=function(e){return li(e,`overflowY`)},di=function(e){return li(e,`overflowX`)},fi=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),hi(e,r)){var i=gi(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},pi=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},mi=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},hi=function(e,t){return e===`v`?ui(t):di(t)},gi=function(e,t){return e===`v`?pi(t):mi(t)},_i=function(e,t){return e===`h`&&t===`rtl`?-1:1},vi=function(e,t,n,r,i){var a=_i(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=gi(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&hi(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},yi=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},bi=function(e){return[e.deltaX,e.deltaY]},xi=function(e){return e&&`current`in e?e.current:e},Si=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Ci=function(e){return`
- .block-interactivity-${e} {pointer-events: none;}
- .allow-interactivity-${e} {pointer-events: all;}
-`},wi=0,Ti=[];function Ei(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),i=s.useState(wi++)[0],a=s.useState(Jr)[0],o=s.useRef(e);s.useEffect(function(){o.current=e},[e]),s.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=Cr([e.lockRef.current],(e.shards||[]).map(xi),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var c=s.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=yi(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=fi(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=fi(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return vi(h,t,e,h===`h`?s:c,!0)},[]),l=s.useCallback(function(e){var n=e;if(!(!Ti.length||Ti[Ti.length-1]!==a)){var r=`deltaY`in n?bi(n):yi(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&Si(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var s=(o.current.shards||[]).map(xi).filter(Boolean).filter(function(e){return e.contains(n.target)});(s.length>0?c(n,s[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=s.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Di(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=s.useCallback(function(e){n.current=yi(e),r.current=void 0},[]),f=s.useCallback(function(t){u(t.type,bi(t),t.target,c(t,e.lockRef.current))},[]),p=s.useCallback(function(t){u(t.type,yi(t),t.target,c(t,e.lockRef.current))},[]);s.useEffect(function(){return Ti.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,l,si),document.addEventListener(`touchmove`,l,si),document.addEventListener(`touchstart`,d,si),function(){Ti=Ti.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,l,si),document.removeEventListener(`touchmove`,l,si),document.removeEventListener(`touchstart`,d,si)}},[]);var m=e.removeScrollBar,h=e.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:Ci(i)}):null,m?s.createElement(ii,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Di(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Oi=Lr(Rr,Ei),ki=s.forwardRef(function(e,t){return s.createElement(Br,xr({},e,{ref:t,sideCar:Oi}))});ki.classNames=Br.classNames;var Ai=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},ji=new WeakMap,Mi=new WeakMap,Ni={},Pi=0,Fi=function(e){return e&&(e.host||Fi(e.parentNode))},Ii=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Fi(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Li=function(e,t,n,r){var i=Ii(t,Array.isArray(e)?e:[e]);Ni[n]||(Ni[n]=new WeakMap);var a=Ni[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(ji.get(e)||0)+1,l=(a.get(e)||0)+1;ji.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Mi.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Pi++,function(){o.forEach(function(e){var t=ji.get(e)-1,i=a.get(e)-1;ji.set(e,t),a.set(e,i),t||(Mi.has(e)||e.removeAttribute(r),Mi.delete(e)),i||e.removeAttribute(n)}),Pi--,Pi||(ji=new WeakMap,ji=new WeakMap,Mi=new WeakMap,Ni={})}},Ri=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Ai(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Li(r,i,n,`aria-hidden`)):function(){return null}},zi=Object.defineProperty,Bi=(e,t)=>zi(e,`name`,{value:t,configurable:!0}),Vi=`Dialog`,[Hi,Ui]=Nt(Vi),[Wi,Gi]=Hi(Vi),Ki=Bi(e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,c=s.useRef(null),l=s.useRef(null),[u,d]=Yt({prop:r,defaultProp:i??!1,onChange:a,caller:Vi}),[f,p]=s.useState(0),[m,h]=s.useState(0);return(0,K.jsx)(Wi,{scope:t,triggerRef:c,contentRef:l,contentId:Bt(),titleId:Bt(),descriptionId:Bt(),titlePresent:f>0,descriptionPresent:m>0,setTitleCount:p,setDescriptionCount:h,open:u,onOpenChange:d,onOpenToggle:s.useCallback(()=>d(e=>!e),[d]),modal:o,children:n})},`Dialog`),qi=`DialogPortal`,[Ji,Yi]=Hi(qi,{forceMount:void 0}),Xi=Bi(e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Gi(qi,t);return(0,K.jsx)(Ji,{scope:t,forceMount:n,children:s.Children.map(r,e=>(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:e})}))})},`DialogPortal`),Zi=`DialogOverlay`,Qi=s.forwardRef(Bi(function(e,t){let n=Yi(Zi,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Gi(Zi,e.__scopeDialog);return a.modal?(0,K.jsx)(or,{present:r||a.open,children:(0,K.jsx)(ea,{...i,ref:t})}):null},`DialogOverlay`)),$i=rn(`DialogOverlay.RemoveScroll`),ea=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(Zi,n),a=kt(t,Mn());return(0,K.jsx)(ki,{as:$i,allowPinchZoom:!0,shards:[i.contentRef],children:(0,K.jsx)(yn.div,{"data-state":fa(i.open),...r,ref:a,style:{pointerEvents:`auto`,...r.style}})})},`DialogOverlayImpl`)),ta=`DialogContent`,na=s.forwardRef(Bi(function(e,t){let n=Yi(ta,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Gi(ta,e.__scopeDialog);return(0,K.jsx)(or,{present:r||a.open,children:a.modal?(0,K.jsx)(ra,{...i,ref:t}):(0,K.jsx)(ia,{...i,ref:t})})},`DialogContent`)),ra=s.forwardRef(Bi(function(e,t){let n=Gi(ta,e.__scopeDialog),r=s.useRef(null),i=kt(t,n.contentRef,r);return s.useEffect(()=>{let e=r.current;if(e)return Ri(e)},[]),(0,K.jsx)(aa,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,onCloseAutoFocus:q(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:q(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:q(e.onFocusOutside,e=>e.preventDefault())})},`DialogContentModal`)),ia=s.forwardRef(Bi(function(e,t){let n=Gi(ta,e.__scopeDialog),r=s.useRef(!1),i=s.useRef(!1);return(0,K.jsx)(aa,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`DialogContentNonModal`)),aa=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=Gi(ta,n);return _r(),(0,K.jsx)(K.Fragment,{children:(0,K.jsx)(Un,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,K.jsx)(jn,{role:`dialog`,id:s.contentId,"aria-describedby":s.descriptionPresent?s.descriptionId:void 0,"aria-labelledby":s.titlePresent?s.titleId:void 0,"data-state":fa(s.open),...o,ref:t,deferPointerDownOutside:!0,onDismiss:()=>s.onOpenChange(!1)})})})},`DialogContentImpl`)),oa=`DialogTitle`,sa=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(oa,n),{setTitleCount:a}=i;return Ft(()=>(a(e=>e+1),()=>a(e=>e-1)),[a]),(0,K.jsx)(yn.h2,{id:i.titleId,...r,ref:t})},`DialogTitle`)),ca=`DialogDescription`,la=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(ca,n),{setDescriptionCount:a}=i;return Ft(()=>(a(e=>e+1),()=>a(e=>e-1)),[a]),(0,K.jsx)(yn.p,{id:i.descriptionId,...r,ref:t})},`DialogDescription`)),ua=`DialogClose`,da=s.forwardRef(Bi(function(e,t){let{__scopeDialog:n,...r}=e,i=Gi(ua,n);return(0,K.jsx)(yn.button,{type:`button`,...r,ref:t,onClick:q(e.onClick,()=>i.onOpenChange(!1))})},`DialogClose`));function fa(e){return e?`open`:`closed`}Bi(fa,`getState`);var pa=[],ma=new Map,ha=[`.skip-link`,`.sidebar`,`.global-header`,`#mainContent`];function ga(e){if(e){for(let e of document.querySelectorAll(ha.join(`,`)))ma.has(e)||ma.set(e,e.hasAttribute(`inert`)),e.setAttribute(`inert`,``);return}for(let[e,t]of ma)e.isConnected&&!t&&e.removeAttribute(`inert`);ma.clear()}function _a(e){if(e.key!==`Escape`||!pa.length)return;let t=pa[pa.length-1];e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t.disabled||t.close()}function va(e){return pa.length||(document.addEventListener(`keydown`,_a,!0),ga(!0)),pa.push(e),()=>{let t=pa.lastIndexOf(e);t>=0&&pa.splice(t,1),pa.length||(document.removeEventListener(`keydown`,_a,!0),ga(!1))}}function ya({open:e,onOpenChange:t,closeDisabled:n=!1,children:r}){return(0,K.jsx)(Ki,{open:e,onOpenChange:e=>{!e&&n||t(e)},children:r})}function ba({open:e,className:t,closeDisabled:n=!1,role:r=`dialog`,onRequestClose:i,children:a}){let o=(0,s.useRef)(null),c=(0,s.useRef)({close:i,disabled:n});return c.current.close=i,c.current.disabled=n,(0,s.useEffect)(()=>{if(e)return o.current=document.activeElement instanceof HTMLElement?document.activeElement:null,va(c.current)},[e]),(0,K.jsx)(Xi,{children:(0,K.jsxs)(`div`,{className:`overlay`,children:[(0,K.jsx)(Qi,{className:`overlay-backdrop`}),(0,K.jsx)(na,{className:t,role:r,"aria-busy":n||void 0,onEscapeKeyDown:e=>{e.preventDefault(),e.stopPropagation()},onPointerDownOutside:e=>{n&&e.preventDefault()},onCloseAutoFocus:e=>{let t=o.current;t?.isConnected&&(e.preventDefault(),t.focus())},children:a})]})})}function xa({open:e,onOpenChange:t,title:n,description:r,icon:i,footer:a,children:o,closeDisabled:s=!1,showClose:c=!0,className:l,role:u=`dialog`}){return(0,K.jsx)(ya,{open:e,onOpenChange:t,closeDisabled:s,children:(0,K.jsxs)(ba,{open:e,className:`studio-dialog${l?` ${l}`:``}`,closeDisabled:s,role:u,onRequestClose:()=>t(!1),children:[i?(0,K.jsx)(`div`,{className:`studio-dialog-icon`,children:i}):null,(0,K.jsxs)(`header`,{className:`studio-dialog-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(sa,{children:n}),r?(0,K.jsx)(la,{children:r}):null]}),c?(0,K.jsx)(da,{asChild:!0,children:(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`关闭`,disabled:s,children:(0,K.jsx)(mt,{size:16})})}):null]}),o?(0,K.jsx)(`div`,{className:`studio-dialog-body`,children:o}):null,a?(0,K.jsx)(`footer`,{className:`studio-dialog-footer`,children:a}):null]})})}function Sa({open:e,onOpenChange:t,title:n,subtitle:r,wide:i=!1,compact:a=!1,closeDisabled:o=!1,footer:s,children:c}){return(0,K.jsx)(ya,{open:e,onOpenChange:t,closeDisabled:o,children:(0,K.jsxs)(ba,{open:e,className:`drawer${i?` wide`:``}${a?` compact`:``}`,closeDisabled:o,onRequestClose:()=>t(!1),children:[(0,K.jsxs)(`header`,{className:`drawer-header`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(sa,{children:n}),r?(0,K.jsx)(la,{children:r}):null]}),(0,K.jsx)(da,{asChild:!0,children:(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`关闭`,disabled:o,children:(0,K.jsx)(mt,{size:16})})})]}),(0,K.jsx)(`div`,{className:`drawer-body`,children:c}),s?(0,K.jsx)(`footer`,{className:`drawer-footer`,children:s}):null]})})}function Ca({title:e,description:t,confirmText:n=`确认`,danger:r=!0,busy:i=!1,onConfirm:a,onCancel:o}){return(0,K.jsx)(xa,{open:!0,onOpenChange:e=>{!e&&!i&&o()},title:e,description:t,closeDisabled:i,showClose:!1,role:`alertdialog`,className:`confirm-dialog`,icon:(0,K.jsx)(`span`,{className:`confirm-icon${r?` danger`:``}`,style:r?void 0:{background:`var(--accent-soft)`,color:`var(--accent-strong)`},children:r?(0,K.jsx)(U,{size:18}):(0,K.jsx)(De,{size:18})}),footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(da,{asChild:!0,children:(0,K.jsx)(`button`,{className:`button secondary`,type:`button`,disabled:i,children:`取消`})}),(0,K.jsx)(`button`,{className:`button ${r?`danger`:`accent`}`,type:`button`,onClick:a,disabled:i,children:i?`处理中…`:n})]})})}var wa=Object.defineProperty,Ta=(e,t)=>wa(e,`name`,{value:t,configurable:!0});function Ea(e){let t=e+`CollectionProvider`,[n,r]=Nt(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=Ta(e=>{let{scope:t,children:n}=e,r=s.useRef(null),a=s.useRef(new Map).current;return(0,K.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})},`CollectionProvider`);o.displayName=t;let c=e+`CollectionSlot`,l=rn(c),u=s.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=kt(t,a(c,n).collectionRef);return(0,K.jsx)(l,{ref:i,children:r})});u.displayName=c;let d=e+`CollectionItemSlot`,f=`data-radix-collection-item`,p=rn(d),m=s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=s.useRef(null),c=kt(t,o),l=a(d,n);return s.useEffect(()=>(l.itemMap.set(o,{ref:o,...i}),()=>void l.itemMap.delete(o))),(0,K.jsx)(p,{[f]:``,ref:c,children:r})});m.displayName=d;function h(t){let n=a(e+`CollectionConsumer`,t);return s.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${f}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return Ta(h,`useCollection`),[{Provider:o,Slot:u,ItemSlot:m},h,r]}Ta(Ea,`createCollection`);var Da=new WeakMap,Oa=class e extends Map{static{Ta(this,`OrderedDict`)}#e;constructor(e){super(e),this.#e=[...super.keys()],Da.set(this,!0)}set(e,t){return Da.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,n){let r=this.has(t),i=this.#e.length,a=ja(e),o=a>=0?a:i+a,s=o<0||o>=i?-1:o;if(s===this.size||r&&s===this.size-1||s===-1)return this.set(t,n),this;let c=this.size+ +!r;a<0&&o++;let l=[...this.#e],u,d=!1;for(let e=o;e=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let n=this.indexOf(e);if(n===-1)return;let r=n+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return r;n++}}findIndex(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return n;n++}return-1}filter(t,n){let r=[],i=0;for(let e of this)Reflect.apply(t,n,[e,i,this])&&r.push(e),i++;return new e(r)}map(t,n){let r=[],i=0;for(let e of this)r.push([e[0],Reflect.apply(t,n,[e,i,this])]),i++;return new e(r)}reduce(...e){let[t,n]=e,r=0,i=n??this.at(0);for(let n of this)i=r===0&&e.length===1?n:Reflect.apply(t,this,[i,n,r,this]),r++;return i}reduceRight(...e){let[t,n]=e,r=n??this.at(-1);for(let n=this.size-1;n>=0;n--){let i=this.at(n);r=n===this.size-1&&e.length===1?i:Reflect.apply(t,this,[r,i,n,this])}return r}toSorted(t){let n=[...this.entries()].sort(t);return new e(n)}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let n=this.keyAt(e),r=this.get(n);t.set(n,r)}return t}toSpliced(...t){let n=[...this.entries()];return n.splice(...t),new e(n)}slice(t,n){let r=new e,i=this.size-1;if(t===void 0)return r;t<0&&(t+=this.size),n!==void 0&&n>0&&(i=n-1);for(let e=t;e<=i;e++){let t=this.keyAt(e),n=this.get(t);r.set(t,n)}return r}every(e,t){let n=0;for(let r of this){if(!Reflect.apply(e,t,[r,n,this]))return!1;n++}return!0}some(e,t){let n=0;for(let r of this){if(Reflect.apply(e,t,[r,n,this]))return!0;n++}return!1}};function ka(e,t){if(`at`in Array.prototype)return Array.prototype.at.call(e,t);let n=Aa(e,t);return n===-1?void 0:e[n]}Ta(ka,`at`);function Aa(e,t){let n=e.length,r=ja(t),i=r>=0?r:n+r;return i<0||i>=n?-1:i}Ta(Aa,`toSafeIndex`);function ja(e){return e!==e||e===0?0:Math.trunc(e)}Ta(ja,`toSafeInteger`);function Ma(e){let t=e+`CollectionProvider`,[n,r]=Nt(t),[i,a]=n(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new Oa,setItemMap:Ta(()=>void 0,`setItemMap`)}),o=Ta(({state:e,...t})=>e?(0,K.jsx)(l,{...t,state:e}):(0,K.jsx)(c,{...t}),`CollectionProvider`);o.displayName=t;let c=Ta(e=>{let t=g();return(0,K.jsx)(l,{...e,state:t})},`CollectionInit`);c.displayName=t+`Init`;let l=Ta(e=>{let{scope:t,children:n,state:r}=e,a=s.useRef(null),[o,c]=s.useState(null),l=kt(a,c),[u,d]=r;return s.useEffect(()=>{if(!o)return;let e=Ia(()=>{});return e.observe(o,{childList:!0,subtree:!0}),()=>{e.disconnect()}},[o]),(0,K.jsx)(i,{scope:t,itemMap:u,setItemMap:d,collectionRef:l,collectionRefObject:a,collectionElement:o,children:n})},`CollectionProviderImpl`);l.displayName=t+`Impl`;let u=e+`CollectionSlot`,d=rn(u),f=s.forwardRef((e,t)=>{let{scope:n,children:r}=e,i=kt(t,a(u,n).collectionRef);return(0,K.jsx)(d,{ref:i,children:r})});f.displayName=u;let p=e+`CollectionItemSlot`,m=rn(p),h=s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=s.useRef(null),[c,l]=s.useState(null),u=kt(t,o,l),{setItemMap:d}=a(p,n),f=s.useRef(i);Na(f.current,i)||(f.current=i);let h=f.current;return s.useEffect(()=>{let e=h;return d(t=>c?t.has(c)?t.set(c,{...e,element:c}).toSorted(Fa):(t.set(c,{...e,element:c}),t.toSorted(Fa)):t),()=>{d(e=>!c||!e.has(c)?e:(e.delete(c),new Oa(e)))}},[c,h,d]),(0,K.jsx)(m,{"data-radix-collection-item":``,ref:u,children:r})});h.displayName=p;function g(){return s.useState(new Oa)}Ta(g,`useInitCollection`);function _(t){let{itemMap:n}=a(e+`CollectionConsumer`,t);return n}return Ta(_,`useCollection`),[{Provider:o,Slot:f,ItemSlot:h},{createCollectionScope:r,useCollection:_,useInitCollection:g}]}Ta(Ma,`createCollection`);function Na(e,t){if(e===t)return!0;if(typeof e!=`object`||typeof t!=`object`||e==null||t==null)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||e[r]!==t[r])return!1;return!0}Ta(Na,`shallowEqual`);function Pa(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}Ta(Pa,`isElementPreceding`);function Fa(e,t){return!e[1].element||!t[1].element?0:Pa(e[1].element,t[1].element)?-1:1}Ta(Fa,`sortByDocumentPosition`);function Ia(e){return new MutationObserver(t=>{for(let n of t)if(n.type===`childList`){e();return}})}Ta(Ia,`getChildListObserver`);var La=Object.defineProperty,Ra=(e,t)=>La(e,`name`,{value:t,configurable:!0}),za=s.createContext(void 0);function Ba(e){let t=s.useContext(za);return e||t||`ltr`}Ra(Ba,`useDirection`);var Va=[`top`,`right`,`bottom`,`left`],Ha=Math.min,Ua=Math.max,Wa=Math.round,Ga=Math.floor,Ka=e=>({x:e,y:e}),qa={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function Ja(e,t,n){return Ua(e,Ha(t,n))}function Ya(e,t){return typeof e==`function`?e(t):e}function Xa(e){return e.split(`-`)[0]}function Za(e){return e.split(`-`)[1]}function Qa(e){return e===`x`?`y`:`x`}function $a(e){return e===`y`?`height`:`width`}function eo(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function to(e){return Qa(eo(e))}function no(e,t,n){n===void 0&&(n=!1);let r=Za(e),i=to(e),a=$a(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=fo(o)),[o,fo(o)]}function ro(e){let t=fo(e);return[io(e),t,io(t)]}function io(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var ao=[`left`,`right`],oo=[`right`,`left`],so=[`top`,`bottom`],co=[`bottom`,`top`];function lo(e,t,n){switch(e){case`top`:case`bottom`:return n?t?oo:ao:t?ao:oo;case`left`:case`right`:return t?so:co;default:return[]}}function uo(e,t,n,r){let i=Za(e),a=lo(Xa(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(io)))),a}function fo(e){let t=Xa(e);return qa[t]+e.slice(t.length)}function po(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function mo(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:po(e)}function ho(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function go(e,t,n){let{reference:r,floating:i}=e,a=eo(t),o=to(t),s=$a(o),c=Xa(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=Za(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function _o(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=Ya(t,e),p=mo(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=ho(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=ho(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var vo=50,yo=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:_o},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=go(l,r,c),f=r,p=0,m={};for(let n=0;n({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=Ya(e,t)||{};if(l==null)return{};let d=mo(u),f={x:n,y:r},p=to(i),m=$a(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,E=Ha(d[_],T),D=Ha(d[v],T),O=C-h[m]-D,k=C/2-h[m]/2+w,A=Ja(E,k,O),j=!c.arrow&&Za(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===eo(t)||T.every(e=>eo(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=eo(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}};function So(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Co(e){return Va.some(t=>e[t]>=0)}var wo=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=Ya(e,t);switch(i){case`referenceHidden`:{let e=So(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Co(e)}}}case`escaped`:{let e=So(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Co(e)}}}default:return{}}}}},To=new Set([`left`,`top`]);async function Eo(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Xa(n),s=Za(n),c=eo(n)===`y`,l=To.has(o)?-1:1,u=a&&c?-1:1,d=Ya(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var Do=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Eo(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Oo=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=Ya(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=eo(i),p=Qa(f),m=u[p],h=u[f],g=(e,t)=>Ja(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},ko=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=Ya(e,t),u={x:n,y:r},d=eo(i),f=Qa(d),p=u[f],m=u[d],h=Ya(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:h.mainAxis??0,crossAxis:h.crossAxis??0};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=To.has(Xa(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);mr&&(m=r)}return{[f]:p,[d]:m}}}},Ao=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=Ya(e,t),c=await i.detectOverflow(t,s),l=Xa(n),u=Za(n),d=eo(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=Ha(p-c[m],g),y=Ha(f-c[h],_),b=t.middlewareData.shift,x=!b,S=v,C=y;b!=null&&b.enabled.x&&(C=_),b!=null&&b.enabled.y&&(S=g),x&&!u&&(d?C=f-2*Ua(c.left,c.right):S=p-2*Ua(c.top,c.bottom)),await o({...t,availableWidth:C,availableHeight:S});let w=await i.getDimensions(a.floating);return f!==w.width||p!==w.height?{reset:{rects:!0}}:{}}}};function jo(){return typeof window<`u`}function Mo(e){return Fo(e)?(e.nodeName||``).toLowerCase():`#document`}function No(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Po(e){return((Fo(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Fo(e){return jo()?e instanceof Node||e instanceof No(e).Node:!1}function Io(e){return jo()?e instanceof Element||e instanceof No(e).Element:!1}function Lo(e){return jo()?e instanceof HTMLElement||e instanceof No(e).HTMLElement:!1}function Ro(e){return!jo()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof No(e).ShadowRoot}function zo(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Xo(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Bo(e){return/^(table|td|th)$/.test(Mo(e))}function Vo(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ho=/transform|translate|scale|rotate|perspective|filter/,Uo=/paint|layout|strict|content/,Wo=e=>!!e&&e!==`none`,Go;function Ko(e){let t=Io(e)?Xo(e):e;return Wo(t.transform)||Wo(t.translate)||Wo(t.scale)||Wo(t.rotate)||Wo(t.perspective)||!Jo()&&(Wo(t.backdropFilter)||Wo(t.filter))||Ho.test(t.willChange||``)||Uo.test(t.contain||``)}function qo(e){let t=Qo(e);for(;Lo(t)&&!Yo(t);){if(Ko(t))return t;if(Vo(t))return null;t=Qo(t)}return null}function Jo(){return Go??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Go}function Yo(e){return/^(html|body|#document)$/.test(Mo(e))}function Xo(e){return No(e).getComputedStyle(e)}function Zo(e){return Io(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Qo(e){if(Mo(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Ro(e)&&e.host||Po(e);return Ro(t)?t.host:t}function $o(e){let t=Qo(e);return Yo(t)?(e.ownerDocument||e).body:Lo(t)&&zo(t)?t:$o(t)}function es(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=$o(e),i=r===e.ownerDocument?.body,a=No(r);if(i){let e=ts(a);return t.concat(a,a.visualViewport||[],zo(r)?r:[],e&&n?es(e):[])}return t.concat(r,es(r,[],n))}function ts(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ns(e){let t=Xo(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Lo(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Wa(n)!==a||Wa(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function rs(e){return Io(e)?e:e.contextElement}function is(e){let t=rs(e);if(!Lo(t))return Ka(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=ns(t),o=(a?Wa(n.width):n.width)/r,s=(a?Wa(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var as=Ka(0);function os(e){let t=No(e);return!Jo()||!t.visualViewport?as:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function ss(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===No(e)}function cs(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=rs(e),o=Ka(1);t&&(r?Io(r)&&(o=is(r)):o=is(e));let s=ss(a,n,r)?os(a):Ka(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=No(a),t=Io(r)?No(r):r,n=e,i=ts(n);for(;i&&t!==n;){let e=is(i),t=i.getBoundingClientRect(),r=Xo(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=No(i),i=ts(n)}}return ho({width:u,height:d,x:c,y:l})}function ls(e,t){let n=Zo(e).scrollLeft;return t?t.left+n:cs(Po(e)).left+n}function us(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-ls(e,n),y:n.top+t.scrollTop}}function ds(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=Po(r),s=t?Vo(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=Ka(1),u=Ka(0),d=Lo(r);if((d||!a)&&((Mo(r)!==`body`||zo(o))&&(c=Zo(r)),d)){let e=cs(r);l=is(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?us(o,c):Ka(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function fs(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function ps(e){let t=Zo(e),n=e.ownerDocument.body,r=Ua(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=Ua(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+ls(e),o=-t.scrollTop;return Xo(n).direction===`rtl`&&(a+=Ua(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var ms=25;function hs(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=No(e),a=Po(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!Jo()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(ls(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=ms&&(s-=o)}return{width:s,height:c,x:l,y:u}}function gs(e,t){let n=cs(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=is(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function _s(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=hs(e,n,t);else if(t===`document`)r=ps(Po(e));else if(Io(t))r=gs(t,n);else{let n=os(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return ho(r)}function vs(e,t){let n=t.get(e);if(n)return n;let r=es(e,[],!1).filter(e=>Io(e)&&Mo(e)!==`body`),i=null,a=Xo(e).position===`fixed`,o=a?Qo(e):e;for(;Io(o)&&!Yo(o);){let e=Xo(o),t=Ko(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=Qo(o)}return t.set(e,r),r}function ys(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Vo(t)?[]:vs(t,this._c):[].concat(n),r],o=_s(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e{s(!1,1e-7)},1e3)}y=!1}try{r=new IntersectionObserver(b,{...v,root:a.ownerDocument})}catch{r=new IntersectionObserver(b,v)}r.observe(e)}let c=No(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function As(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=rs(e),u=i||a?[...l?es(l):[],...t?es(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?ks(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?cs(e):null;c&&g();function g(){let t=cs(e);h&&!Os(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var js=Do,Ms=Oo,Ns=xo,Ps=Ao,Fs=wo,Is=bo,Ls=ko,Rs=(e,t,n)=>{let r=new Map,i=n??{},a={...Ds,...i.platform,_c:r};return yo(e,t,{...i,platform:a})},zs=typeof document<`u`?s.useLayoutEffect:function(){};function Bs(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Bs(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!Bs(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Vs(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Hs(e,t){let n=Vs(e);return Math.round(t*n)/n}function Us(e){let t=s.useRef(e);return zs(()=>{t.current=e}),t}function Ws(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:c=!0,whileElementsMounted:l,open:u}=e,[d,f]=s.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=s.useState(r);Bs(p,r)||m(r);let[h,g]=s.useState(null),[_,v]=s.useState(null),y=s.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),b=s.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||h,S=o||_,C=s.useRef(null),w=s.useRef(null),T=s.useRef(d),E=l!=null,D=Us(l),O=Us(i),k=Us(u),A=s.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),Rs(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!Bs(T.current,t)&&(T.current=t,en.flushSync(()=>{f(t)}))})},[p,t,n,O,k]);zs(()=>{u===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(e=>({...e,isPositioned:!1})))},[u]);let j=s.useRef(!1);zs(()=>(j.current=!0,()=>{j.current=!1}),[]),zs(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(D.current)return D.current(x,S,A);A()}},[x,S,A,D,E]);let M=s.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),N=s.useMemo(()=>({reference:x,floating:S}),[x,S]),P=s.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=Hs(N.floating,d.x),r=Hs(N.floating,d.y);return c?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Vs(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,c,N.floating,d.x,d.y]);return s.useMemo(()=>({...d,update:A,refs:M,elements:N,floatingStyles:P}),[d,A,M,N,P])}var Gs=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Is({element:r.current,padding:i}).fn(n):r?Is({element:r,padding:i}).fn(n):{}}}},Ks=(e,t)=>{let n=js(e);return{name:n.name,fn:n.fn,options:[e,t]}},qs=(e,t)=>{let n=Ms(e);return{name:n.name,fn:n.fn,options:[e,t]}},Js=(e,t)=>({fn:Ls(e).fn,options:[e,t]}),Ys=(e,t)=>{let n=Ns(e);return{name:n.name,fn:n.fn,options:[e,t]}},Xs=(e,t)=>{let n=Ps(e);return{name:n.name,fn:n.fn,options:[e,t]}},Zs=(e,t)=>{let n=Fs(e);return{name:n.name,fn:n.fn,options:[e,t]}},Qs=(e,t)=>{let n=Gs(e);return{name:n.name,fn:n.fn,options:[e,t]}},$s=Object.defineProperty,ec=s.forwardRef(((e,t)=>$s(e,`name`,{value:t,configurable:!0}))(function(e,t){let{children:n,width:r=10,height:i=5,...a}=e;return(0,K.jsx)(yn.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,K.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})},`Arrow`)),tc=Object.defineProperty,nc=(e,t)=>tc(e,`name`,{value:t,configurable:!0});function rc(e){let[t,n]=s.useState(void 0);return Ft(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}n(void 0)},[e]),t}nc(rc,`useSize`);var ic=Object.defineProperty,ac=(e,t)=>ic(e,`name`,{value:t,configurable:!0}),oc=`Popper`,[sc,cc]=Nt(oc),[lc,uc]=sc(oc),dc=ac(e=>{let{__scopePopper:t,children:n}=e,[r,i]=s.useState(null),[a,o]=s.useState(void 0);return(0,K.jsx)(lc,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})},`Popper`),fc=`PopperAnchor`,pc=s.forwardRef(ac(function(e,t){let{__scopePopper:n,virtualRef:r,...i}=e,a=uc(fc,n),o=s.useRef(null),c=a.onAnchorChange,l=kt(t,s.useCallback(e=>{o.current=e,e&&c(e)},[c])),u=s.useRef(null);s.useEffect(()=>{if(!r)return;let e=u.current;u.current=r.current,e!==u.current&&c(u.current)});let d=a.placementState&&Cc(a.placementState),f=d?.[0],p=d?.[1];return r?null:(0,K.jsx)(yn.div,{"data-radix-popper-side":f,"data-radix-popper-align":p,...i,ref:l})},`PopperAnchor`)),mc=`PopperContent`,[hc,gc]=sc(mc),_c=s.forwardRef(ac(function(e,t){let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:d=0,sticky:f=`partial`,hideWhenDetached:p=!1,updatePositionStrategy:m=`optimized`,onPlaced:h,...g}=e,_=uc(mc,n),[v,y]=s.useState(null),b=kt(t,y),[x,S]=s.useState(null),C=rc(x),w=C?.width??0,T=C?.height??0,E=r+(a===`center`?``:`-`+a),D=typeof d==`number`?d:{top:0,right:0,bottom:0,left:0,...d},O=Array.isArray(u)?u:[u],k=O.length>0,A={padding:D,boundary:O.filter(xc),altBoundary:k},{refs:j,floatingStyles:M,placement:N,isPositioned:P,middlewareData:F}=Ws({strategy:`fixed`,placement:E,whileElementsMounted:ac((...e)=>As(...e,{animationFrame:m===`always`}),`whileElementsMounted`),elements:{reference:_.anchor},middleware:[Ks({mainAxis:i+T,alignmentAxis:o}),l&&qs({mainAxis:!0,crossAxis:!1,limiter:f===`partial`?Js():void 0,...A}),l&&Ys({...A}),Xs({...A,apply:ac(({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)},`apply`)}),x&&Qs({element:x,padding:c}),Sc({arrowWidth:w,arrowHeight:T}),p&&Zs({strategy:`referenceHidden`,...A,boundary:k?A.boundary:void 0})]}),I=_.setPlacementState;Ft(()=>(I(N),()=>{I(void 0)}),[N,I]);let[L,R]=Cc(N),z=Cn(h);Ft(()=>{P&&z?.()},[P,z]);let B=F.arrow?.x,V=F.arrow?.y,H=F.arrow?.centerOffset!==0,[ee,U]=s.useState();return Ft(()=>{v&&U(window.getComputedStyle(v).zIndex)},[v]),(0,K.jsx)(`div`,{ref:j.setFloating,"data-radix-popper-content-wrapper":``,style:{...M,transform:P?M.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ee,"--radix-popper-transform-origin":[F.transformOrigin?.x,F.transformOrigin?.y].join(` `),...F.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,K.jsx)(hc,{scope:n,placedSide:L,placedAlign:R,onArrowChange:S,arrowX:B,arrowY:V,shouldHideArrow:H,children:(0,K.jsx)(yn.div,{"data-side":L,"data-align":R,...g,ref:b,style:{...g.style,animation:P?g.style?.animation:`none`}})})})},`PopperContent`)),vc=`PopperArrow`,yc={top:`bottom`,right:`left`,bottom:`top`,left:`right`},bc=s.forwardRef(ac(function(e,t){let{__scopePopper:n,...r}=e,i=gc(vc,n),a=yc[i.placedSide];return(0,K.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,K.jsx)(ec,{...r,ref:t,style:{...r.style,display:`block`}})})},`PopperArrow`));function xc(e){return e!==null}ac(xc,`isNotNull`);var Sc=ac(e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=Cc(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}}),`transformOrigin`);function Cc(e){let[t,n=`center`]=e.split(`-`);return[t,n]}ac(Cc,`getSideAndAlignFromPlacement`);var wc=dc,Tc=pc,Ec=_c,Dc=bc,Oc=Object.defineProperty,kc=(e,t)=>Oc(e,`name`,{value:t,configurable:!0}),Ac=!1;function jc(){let[e,t]=s.useState(Ac);return s.useEffect(()=>{Ac||(Ac=!0,t(!0))},[]),e}kc(jc,`useIsHydrated`);var Mc=s.useSyncExternalStore;function Nc(){return()=>{}}kc(Nc,`subscribe`);function Pc(){return Mc(Nc,()=>!0,()=>!1)}kc(Pc,`useIsHydratedModern`);var Fc=typeof Mc==`function`?Pc:jc,Ic=Object.defineProperty,Lc=(e,t)=>Ic(e,`name`,{value:t,configurable:!0}),Rc=`rovingFocusGroup.onEntryFocus`,zc={bubbles:!1,cancelable:!0},Bc=`RovingFocusGroup`,[Vc,Hc,Uc]=Ea(Bc),[Wc,Gc]=Nt(Bc,[Uc]),[Kc,qc]=Wc(Bc),Jc=s.forwardRef(Lc(function(e,t){return(0,K.jsx)(Vc.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,K.jsx)(Vc.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,K.jsx)(Yc,{...e,ref:t})})})},`RovingFocusGroup`)),Yc=s.forwardRef(Lc(function(e,t){let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:u,preventScrollOnEntryFocus:d=!1,...f}=e,p=s.useRef(null),m=kt(t,p),h=Ba(a),[g,_]=Yt({prop:o,defaultProp:c??null,onChange:l,caller:Bc}),[v,y]=s.useState(!1),b=Cn(u),x=Hc(n),S=s.useRef(!1),[C,w]=s.useState(0);return s.useEffect(()=>{let e=p.current;if(e)return e.addEventListener(Rc,b),()=>e.removeEventListener(Rc,b)},[b]),(0,K.jsx)(Kc,{scope:n,orientation:r,dir:h,loop:i,currentTabStopId:g,onItemFocus:s.useCallback(e=>_(e),[_]),onItemShiftTab:s.useCallback(()=>y(!0),[]),onFocusableItemAdd:s.useCallback(()=>w(e=>e+1),[]),onFocusableItemRemove:s.useCallback(()=>w(e=>e-1),[]),children:(0,K.jsx)(yn.div,{tabIndex:v||C===0?-1:0,"data-orientation":r,...f,ref:m,style:{outline:`none`,...e.style},onMouseDown:q(e.onMouseDown,()=>{S.current=!0}),onFocus:q(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!v){let t=new CustomEvent(Rc,zc);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);tl([e.find(e=>e.active),e.find(e=>e.id===g),...e].filter(Boolean).map(e=>e.ref.current),d)}}S.current=!1}),onBlur:q(e.onBlur,()=>y(!1))})})},`RovingFocusGroupImpl`)),Xc=`RovingFocusGroupItem`,Zc=s.forwardRef(Lc(function(e,t){let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...c}=e,l=Bt(),u=a||l,d=qc(Xc,n),f=d.currentTabStopId===u,p=Hc(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:g}=d,_=Fc();return Ft(()=>{if(!(!_||!r))return m(),()=>h()},[_,r,m,h]),s.useEffect(()=>{if(!(_||!r))return m(),()=>h()},[_,r,m,h]),(0,K.jsx)(Vc.ItemSlot,{scope:n,id:u,focusable:r,active:i,children:(0,K.jsx)(yn.span,{tabIndex:f?0:-1,"data-orientation":d.orientation,...c,ref:t,onMouseDown:q(e.onMouseDown,e=>{r?d.onItemFocus(u):e.preventDefault()}),onFocus:q(e.onFocus,()=>d.onItemFocus(u)),onKeyDown:q(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){d.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=el(e,d.orientation,d.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=p().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=d.loop?nl(n,r+1):n.slice(r+1)}setTimeout(()=>tl(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:g!=null}):o})})},`RovingFocusGroupItem`)),Qc={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function $c(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}Lc($c,`getDirectionAwareKey`);function el(e,t,n){let r=$c(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return Qc[r]}Lc(el,`getFocusIntent`);function tl(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}Lc(tl,`focusFirst`);function nl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Lc(nl,`wrapArray`);var rl=Jc,il=Zc,al=Object.defineProperty,ol=(e,t)=>al(e,`name`,{value:t,configurable:!0}),sl=[`Enter`,` `],cl=[`ArrowDown`,`PageUp`,`Home`],ll=[`ArrowUp`,`PageDown`,`End`],ul=[...cl,...ll],dl={ltr:[...sl,`ArrowRight`],rtl:[...sl,`ArrowLeft`]},fl={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},pl=`Menu`,[ml,hl,gl]=Ea(pl),[_l,vl]=Nt(pl,[gl,cc,Gc]),yl=cc(),bl=Gc(),[xl,Sl]=_l(pl),[Cl,wl]=_l(pl),Tl=ol(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,c=yl(t),[l,u]=s.useState(null),d=s.useRef(!1),f=Cn(a),p=Ba(i);return s.useEffect(()=>{let e=ol(()=>{d.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=ol(()=>d.current=!1,`handlePointer`);return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),s.useEffect(()=>{if(!n)return;let e=ol(()=>f(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,f]),(0,K.jsx)(wc,{...c,children:(0,K.jsx)(xl,{scope:t,open:n,onOpenChange:f,content:l,onContentChange:u,children:(0,K.jsx)(Cl,{scope:t,onClose:s.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:d,dir:p,modal:o,children:r})})})},`Menu`),El=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e,i=yl(n);return(0,K.jsx)(Tc,{...i,...r,ref:t})},`MenuAnchor`)),Dl=`MenuPortal`,[Ol,kl]=_l(Dl,{forceMount:void 0}),Al=ol(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Sl(Dl,t);return(0,K.jsx)(Ol,{scope:t,forceMount:n,children:(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:r})})})},`MenuPortal`),jl=`MenuContent`,[Ml,Nl]=_l(jl),Pl=s.forwardRef(ol(function(e,t){let n=kl(jl,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Sl(jl,e.__scopeMenu),o=wl(jl,e.__scopeMenu);return(0,K.jsx)(ml.Provider,{scope:e.__scopeMenu,children:(0,K.jsx)(or,{present:r||a.open,children:(0,K.jsx)(ml.Slot,{scope:e.__scopeMenu,children:o.modal?(0,K.jsx)(Fl,{...i,ref:t}):(0,K.jsx)(Il,{...i,ref:t})})})})},`MenuContent`)),Fl=s.forwardRef(ol(function(e,t){let n=Sl(jl,e.__scopeMenu),r=s.useRef(null),i=kt(t,r);return s.useEffect(()=>{let e=r.current;if(e)return Ri(e)},[]),(0,K.jsx)(Rl,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:q(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentModal`)),Il=s.forwardRef(ol(function(e,t){let n=Sl(jl,e.__scopeMenu);return(0,K.jsx)(Rl,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Ll=rn(`MenuContent.ScrollLock`),Rl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:c,onEntryFocus:l,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:m,disableOutsideScroll:h,...g}=e,_=Sl(jl,n),v=wl(jl,n),y=yl(n),b=bl(n),x=hl(n),[S,C]=s.useState(null),w=s.useRef(null),T=kt(t,w,_.onContentChange),E=s.useRef(0),D=s.useRef(``),O=s.useRef(0),k=s.useRef(null),A=s.useRef(`right`),j=s.useRef(0),M=h?ki:s.Fragment,N=h?{as:Ll,allowPinchZoom:!0}:void 0,P=ol(e=>{let t=D.current+e,n=x().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=mu(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;ol((function e(t){D.current=t,window.clearTimeout(E.current),t!==``&&(E.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(t),o&&setTimeout(()=>o.focus())},`handleTypeaheadSearch`);s.useEffect(()=>()=>window.clearTimeout(E.current),[]),_r();let F=s.useCallback(e=>A.current===k.current?.side&&gu(e,k.current?.area),[]);return(0,K.jsx)(Ml,{scope:n,searchRef:D,onItemEnter:s.useCallback(e=>{F(e)&&e.preventDefault()},[F]),onItemLeave:s.useCallback(e=>{F(e)||(w.current?.focus(),C(null))},[F]),onTriggerLeave:s.useCallback(e=>{F(e)&&e.preventDefault()},[F]),pointerGraceTimerRef:O,onPointerGraceIntentChange:s.useCallback(e=>{k.current=e},[]),children:(0,K.jsx)(M,{...N,children:(0,K.jsx)(Un,{asChild:!0,trapped:i,onMountAutoFocus:q(a,e=>{e.preventDefault(),w.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:u,onPointerDownOutside:d,onFocusOutside:f,onInteractOutside:p,onDismiss:m,children:(0,K.jsx)(rl,{asChild:!0,...b,dir:v.dir,orientation:`vertical`,loop:r,currentTabStopId:S,onCurrentTabStopIdChange:C,onEntryFocus:q(l,e=>{v.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,K.jsx)(Ec,{role:`menu`,"aria-orientation":`vertical`,"data-state":lu(_.open),"data-radix-menu-content":``,dir:v.dir,...y,...g,ref:T,style:{outline:`none`,...g.style},onKeyDown:q(g.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&P(e.key));let i=w.current;if(e.target!==i||!ul.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);ll.includes(e.key)&&a.reverse(),fu(a)}),onBlur:q(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(E.current),D.current=``)}),onPointerMove:q(e.onPointerMove,_u(e=>{let t=e.target,n=j.current!==e.clientX;if(e.currentTarget.contains(t)&&n){let t=e.clientX>j.current?`right`:`left`;A.current=t,j.current=e.clientX}}))})})})})})})},`MenuContentImpl`)),zl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(yn.div,{role:`group`,...r,ref:t})},`MenuGroup`)),Bl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(yn.div,{...r,ref:t})},`MenuLabel`)),Vl=`MenuItem`,Hl=`menu.itemSelect`,Ul=s.forwardRef(ol(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=s.useRef(null),o=wl(Vl,e.__scopeMenu),c=Nl(Vl,e.__scopeMenu),l=kt(t,a),u=s.useRef(!1),d=ol(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(Hl,{bubbles:!0,cancelable:!0});e.addEventListener(Hl,e=>r?.(e),{once:!0}),bn(e,t),t.defaultPrevented?u.current=!1:o.onClose()}},`handleSelect`);return(0,K.jsx)(Wl,{...i,ref:l,disabled:n,onClick:q(e.onClick,d),onPointerDown:t=>{e.onPointerDown?.(t),u.current=!0},onPointerUp:q(e.onPointerUp,e=>{u.current||e.currentTarget?.click()}),onKeyDown:q(e.onKeyDown,e=>{n||e.target!==e.currentTarget||(c.searchRef.current===``||e.key!==` `)&&sl.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),Wl=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Nl(Vl,n),c=bl(n),l=s.useRef(null),u=kt(t,l),[d,f]=s.useState(!1),[p,m]=s.useState(``);return s.useEffect(()=>{let e=l.current;e&&m((e.textContent??``).trim())},[a.children]),(0,K.jsx)(ml.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,K.jsx)(il,{asChild:!0,...c,focusable:!r,children:(0,K.jsx)(yn.div,{role:`menuitem`,"data-highlighted":d?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:u,onPointerMove:q(e.onPointerMove,_u(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:q(e.onPointerLeave,_u(e=>o.onItemLeave(e))),onFocus:q(e.onFocus,()=>f(!0)),onBlur:q(e.onBlur,()=>f(!1))})})})},`MenuItemImpl`)),[Gl,Kl]=_l(`MenuRadioGroup`,{value:void 0,onValueChange:ol(()=>{},`onValueChange`)}),ql=s.forwardRef(ol(function(e,t){let{value:n,onValueChange:r,...i}=e,a=Cn(r);return(0,K.jsx)(Gl,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,K.jsx)(zl,{...i,ref:t})})},`MenuRadioGroup`)),Jl=`MenuRadioItem`,Yl=s.forwardRef(ol(function(e,t){let{value:n,...r}=e,i=Kl(Jl,e.__scopeMenu),a=n===i.value;return(0,K.jsx)(Zl,{scope:e.__scopeMenu,checked:a,children:(0,K.jsx)(Ul,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":du(a),onSelect:q(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})},`MenuRadioItem`)),Xl=`MenuItemIndicator`,[Zl,Ql]=_l(Xl,{checked:!1}),$l=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,forceMount:r,...i}=e,a=Ql(Xl,n);return(0,K.jsx)(or,{present:r||uu(a.checked)||a.checked===!0,children:(0,K.jsx)(yn.span,{...i,ref:t,"data-state":du(a.checked)})})},`MenuItemIndicator`)),eu=s.forwardRef(ol(function(e,t){let{__scopeMenu:n,...r}=e;return(0,K.jsx)(yn.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),tu=`MenuSub`,[nu,ru]=_l(tu),iu=ol(e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Sl(tu,t),o=yl(t),[c,l]=s.useState(null),[u,d]=s.useState(null),f=Cn(i);return s.useEffect(()=>(a.open===!1&&f(!1),()=>f(!1)),[a.open,f]),(0,K.jsx)(wc,{...o,children:(0,K.jsx)(xl,{scope:t,open:r,onOpenChange:f,content:u,onContentChange:d,children:(0,K.jsx)(nu,{scope:t,contentId:Bt(),triggerId:Bt(),trigger:c,onTriggerChange:l,children:n})})})},`MenuSub`),au=`MenuSubTrigger`,ou=s.forwardRef(ol(function(e,t){let n=Sl(au,e.__scopeMenu),r=wl(au,e.__scopeMenu),i=ru(au,e.__scopeMenu),a=Nl(au,e.__scopeMenu),o=s.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:l}=a,u={__scopeMenu:e.__scopeMenu},d=s.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);s.useEffect(()=>d,[d]),s.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),l(null)}},[c,l]);let f=kt(t,i.onTriggerChange);return(0,K.jsx)(El,{asChild:!0,...u,children:(0,K.jsx)(Wl,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":n.open?i.contentId:void 0,"data-state":lu(n.open),...e,ref:f,onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:q(e.onPointerMove,_u(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),d()},100))})),onPointerLeave:q(e.onPointerLeave,_u(e=>{d();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,s=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:s,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:s,y:t.bottom}],side:r}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:q(e.onKeyDown,t=>{e.disabled||t.target!==t.currentTarget||(a.searchRef.current===``||t.key!==` `)&&dl[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})},`MenuSubTrigger`)),su=`MenuSubContent`,cu=s.forwardRef(ol(function(e,t){let n=kl(jl,e.__scopeMenu),{forceMount:r=n.forceMount,align:i=`start`,...a}=e,o=Sl(jl,e.__scopeMenu),c=wl(jl,e.__scopeMenu),l=ru(su,e.__scopeMenu),u=s.useRef(null),d=kt(t,u);return(0,K.jsx)(ml.Provider,{scope:e.__scopeMenu,children:(0,K.jsx)(or,{present:r||o.open,children:(0,K.jsx)(ml.Slot,{scope:e.__scopeMenu,children:(0,K.jsx)(Rl,{id:l.contentId,"aria-labelledby":l.triggerId,...a,ref:d,align:i,side:c.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{c.isUsingKeyboardRef.current&&u.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:q(e.onFocusOutside,e=>{e.target!==l.trigger&&o.onOpenChange(!1)}),onEscapeKeyDown:q(e.onEscapeKeyDown,e=>{c.onClose(),e.preventDefault()}),onKeyDown:q(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=fl[c.dir].includes(e.key);t&&n&&(o.onOpenChange(!1),l.trigger?.focus(),e.preventDefault())})})})})})},`MenuSubContent`));function lu(e){return e?`open`:`closed`}ol(lu,`getOpenState`);function uu(e){return e===`indeterminate`}ol(uu,`isIndeterminate`);function du(e){return uu(e)?`indeterminate`:e?`checked`:`unchecked`}ol(du,`getCheckedState`);function fu(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}ol(fu,`focusFirst`);function pu(e,t){return e.map((n,r)=>e[(t+r)%e.length])}ol(pu,`wrapArray`);function mu(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=pu(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}ol(mu,`getNextMatch`);function hu(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}ol(hu,`isPointInPolygon`);function gu(e,t){return t?hu({x:e.clientX,y:e.clientY},t):!1}ol(gu,`isPointerInGraceArea`);function _u(e){return t=>t.pointerType===`mouse`?e(t):void 0}ol(_u,`whenMouse`);var vu=Tl,yu=El,bu=Al,xu=Pl,Su=Bl,Cu=Ul,wu=ql,Tu=Yl,Eu=$l,Du=eu,Ou=iu,ku=ou,Au=cu,ju=Object.defineProperty,Mu=(e,t)=>ju(e,`name`,{value:t,configurable:!0}),Nu=`DropdownMenu`,[Pu,Fu]=Nt(Nu,[vl]),Iu=vl(),[Lu,Ru]=Pu(Nu),zu=Mu(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:c=!0}=e,l=Iu(t),u=s.useRef(null),[d,f]=Yt({prop:i,defaultProp:a??!1,onChange:o,caller:Nu});return(0,K.jsx)(Lu,{scope:t,triggerId:Bt(),triggerRef:u,contentId:Bt(),open:d,onOpenChange:f,onOpenToggle:s.useCallback(()=>f(e=>!e),[f]),modal:c,children:(0,K.jsx)(vu,{...l,open:d,onOpenChange:f,dir:r,modal:c,children:n})})},`DropdownMenu`),Bu=`DropdownMenuTrigger`,Vu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Ru(Bu,n),o=Iu(n),s=kt(t,a.triggerRef);return(0,K.jsx)(yu,{asChild:!0,...o,children:(0,K.jsx)(yn.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:s,onPointerDown:q(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:q(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})},`DropdownMenuTrigger`)),Hu=Mu(e=>{let{__scopeDropdownMenu:t,...n}=e,r=Iu(t);return(0,K.jsx)(bu,{...r,...n})},`DropdownMenuPortal`),Uu=`DropdownMenuContent`,Wu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Ru(Uu,n),a=Iu(n),o=s.useRef(!1);return(0,K.jsx)(xu,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:q(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:q(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuContent`)),Gu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Su,{...i,...r,ref:t})},`DropdownMenuLabel`)),Ku=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Cu,{...i,...r,ref:t})},`DropdownMenuItem`)),qu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(wu,{...i,...r,ref:t})},`DropdownMenuRadioGroup`)),Ju=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Tu,{...i,...r,ref:t})},`DropdownMenuRadioItem`)),Yu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Eu,{...i,...r,ref:t})},`DropdownMenuItemIndicator`)),Xu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Du,{...i,...r,ref:t})},`DropdownMenuSeparator`)),Zu=Mu(e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Iu(t),[s,c]=Yt({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,K.jsx)(Ou,{...o,open:s,onOpenChange:c,children:n})},`DropdownMenuSub`),Qu=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(ku,{...i,...r,ref:t})},`DropdownMenuSubTrigger`)),$u=s.forwardRef(Mu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Iu(n);return(0,K.jsx)(Au,{...i,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-dropdown-menu-content-available-width":`var(--radix-popper-available-width)`,"--radix-dropdown-menu-content-available-height":`var(--radix-popper-available-height)`,"--radix-dropdown-menu-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-dropdown-menu-trigger-height":`var(--radix-popper-anchor-height)`}})},`DropdownMenuSubContent`)),ed=zu,td=Vu,nd=Hu,rd=Wu,id=Gu,ad=Ku,od=qu,sd=Ju,cd=Yu,ld=Xu,ud=Zu,dd=Qu,fd=$u;function pd({items:e,label:t=`更多操作`}){let n=e.findIndex(e=>e.danger);return(0,K.jsxs)(ed,{children:[(0,K.jsx)(td,{asChild:!0,children:(0,K.jsx)(`button`,{className:`icon-button more-actions-trigger`,type:`button`,"aria-label":t,title:t,children:(0,K.jsx)(me,{size:16})})}),(0,K.jsx)(nd,{children:(0,K.jsx)(rd,{className:`more-actions-menu`,align:`end`,sideOffset:6,collisionPadding:12,children:e.map((e,t)=>(0,K.jsxs)(s.Fragment,{children:[t===n&&t>0&&(0,K.jsx)(ld,{className:`more-actions-separator`}),(0,K.jsx)(ad,{className:`more-actions-item${e.danger?` danger`:``}`,disabled:e.disabled,onSelect:e.onSelect,children:e.label})]},e.label))})})]})}function md({targetId:e,children:t}){let[n,r]=(0,s.useState)(null);return(0,s.useLayoutEffect)(()=>{r(document.getElementById(e))},[e]),n?(0,en.createPortal)(t,n):(0,K.jsx)(K.Fragment,{children:t})}function hd({children:e}){return(0,K.jsx)(md,{targetId:`pageHeaderTools`,children:e})}function gd({children:e}){return(0,K.jsx)(md,{targetId:`pageHeaderActions`,children:e})}function _d(e){return vd(e)||typeof e==`function`||yd(e)}function vd(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function yd(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function bd(e,t){return e==null?null:_d(e)?s.createElement(e,t):e}function xd(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?bd(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:bd(n.cell,t.getContext())}return`header`in e&&e.header?bd(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?bd(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Sd({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(!0)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(!0)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function Cd(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var wd=[],Td=0,{link:Ed,unlink:Dd,propagate:Od,checkDirty:kd,shallowPropagate:Ad}=Sd({update(e){return e._update()},notify(e){wd[Md++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Id(e))}}),jd=0,Md=0,Nd,Pd=0;function Fd(e){try{++Pd,e()}finally{--Pd||Ld()}}function Id(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Dd(n,e)}function Ld(){if(!(Pd>0)){for(;jd{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Nd,o=t?.compare??Object.is;if(n)Nd=i,++Td,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Nd=a,n&&(i.flags&=-5),Id(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&kd(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Ad(e)}}else e&32&&(i.flags=e&-33);return Nd!==void 0&&Ed(i,Nd,Td),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Od(e),Ad(e),Ld())}},i}function zd(e){let t=()=>{let t=Nd;Nd=n,++Td,n.depsTail=void 0,n.flags=6;try{return e()}finally{Nd=t,n.flags&=-5,Id(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&kd(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Id(this)}};return t(),n}function Bd(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!t.has(n)||!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();let n=Vd(e);if(n.length!==Vd(t).length)return!1;for(let r=0;r{var t=r();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:n,a=t.useState,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),Ud=n(((e,t)=>{t.exports=Hd()})),Wd=n((e=>{var t=r(),n=Ud();function i(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var a=typeof Object.is==`function`?Object.is:i,o=n.useSyncExternalStore,s=t.useRef,c=t.useEffect,l=t.useMemo,u=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var d=s(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=l(function(){function e(e){if(!o){if(o=!0,s=e,e=r(e),i!==void 0&&f.hasValue){var t=f.value;if(i(t,e))return c=t}return c=e}if(t=c,a(s,e))return t;var n=r(e);return i!==void 0&&i(t,n)?(s=e,t):(s=e,c=n)}var o=!1,s,c,l=n===void 0?null:n;return[function(){return e(t())},l===null?void 0:function(){return e(l())}]},[t,n,r,i]);var p=o(e,d[0],d[1]);return c(function(){f.hasValue=!0,f.value=p},[p]),u(p),p}})),Gd=t(n(((e,t)=>{t.exports=Wd()}))(),1);function Kd(e,t){return e===t}function qd(e,t=e=>e,n){let r=n?.compare??Kd,i=(0,s.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,s.useCallback)(()=>e.get(),[e]);return(0,Gd.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function Jd(e){let t=qd(e.source,e.selector,{compare:Bd});return typeof e.children==`function`?e.children(t):e.children}function Yd(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function Xd(e){let{createAtom:t,batch:n}=e,r=t(0);return{createOptionsStore:!1,wrapExternalAtoms:!1,addSubscription:()=>{throw Error(`Feature not supported in current reactivity implementation`)},unmount:()=>{throw Error(`Feature not supported in current reactivity implementation`)},schedule:e.schedule??(e=>queueMicrotask(e)),batch:n,untrack:e=>e(),createReadonlyAtom:(e,n)=>{let i=n?.compare??Object.is,a=!1,o,s=()=>{let t=e();return(!a||!i(o,t))&&(o=t,a=!0),o},c=t(()=>(r.get(),s()),{compare:i});return{get:s,subscribe:c.subscribe.bind(c)}},createWritableAtom:(e,n)=>t(e,{compare:n?.compare}),commit:()=>{r.set(e=>e+1)}}}function Zd(e,t=Object.is){let n=!1,r;return{get:e.get,markCommitted:e=>{r=e,n=!0},subscribe:i=>e.subscribe(e=>{(!n||!t(r,e))&&i(e)})}}function Qd(){return Xd({createAtom:Rd,batch:Fd})}function $d(e,t){return typeof e==`function`?e(t):e}function ef(e){if(Array.isArray(e))return e.map(ef);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?tf():{},r=Object.keys(e);for(let t=0;tObject.prototype.propertyIsEnumerable.call(e,t))}var of=3;function sf(e,t){return cf(e,t,of)}function cf(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!rf(e)||!rf(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=af(e),i=af(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e{let t=$d(n,e);return r(e,t)?e:t})}function uf(e,t){let n=[],r=e=>{e.forEach(e=>{n.push(e);let i=t(e);i.length&&r(i)})};return r(e),n}var df=({fn:e,memoDeps:t,onAfterCompare:n,onAfterUpdate:r,onBeforeCompare:i,onBeforeUpdate:a})=>{let o=[],s;return c=>{i?.();let l=t?.(c),u=!l||l.length!==o?.length;if(!u&&l){for(let e=0;e{if(!t){t=!0;return}e()}}function pf({feature:e,fnName:t,objectId:n,onAfterUpdate:r,table:i,...a}){let o=()=>{if(!r)return;let{schedule:e,untrack:t}=i._reactivity;e(()=>t(()=>r()))},s={onAfterUpdate:()=>{o()}};return df({...a,...s})}function mf(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function hf(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=mf(r);t[n]=a?pf({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function gf(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=mf(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=pf({memoDeps:e=>o(t,e),fn:(...e)=>a(t,...e),fnName:s,objectId:t.id,table:n,feature:e})}return this[i](...t)}}else t[r]=function(...e){return a(this,...e)}}}function _f(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function vf(e){return e.row.getValue(e.column.id)}function yf(e){return e.getValue()??e.table.options.renderFallbackValue}function bf(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var xf={assignCellPrototype:(e,t)=>{gf(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>vf(e)},cell_renderValue:{fn:e=>yf(e)},cell_getContext:{fn:e=>bf(e),memoDeps:e=>[e]}})}};function Sf(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;n_f(e,`getIsVisible`,Tf)):(nf(t,e.id)?t[e.id]:void 0)??!0}function Ef(e){return e.getAllLeafColumns().filter(e=>_f(e,`getIsVisible`,Tf))}function Df(e,t=1){let n=t;for(let r=0;r0&&jf(s,t-1,n,r,i,a)}function Mf(e){for(let t=0;t{let n=t;for(let t=0;te[i.accessorKey]}if(!s)throw Error();let l=Pf(e),u=Object.create(l);u.accessorFn=c,u.columnDef=i,u.columns=[],u.depth=n,u.id=`${String(s)}`,u.parent=r;let d=e._columnInstanceInitFns;for(let e=0;e{let r=[];if(!t?.length)r=n;else{let e=new Map;for(let t=0;t!n.includes(e.id));if(r===`remove`)return i;let a=new Map;for(let e=0;ee.getFlatColumns())]}function zf(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return _f(e.table,`getOrderColumns`,If)(t)}return[e]}function Bf(e){return{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>e.renderValue()?.toString?.()??null,...Object.values(e._features).reduce((e,t)=>Object.assign(e,t.getDefaultColumnDef?.()),{}),...e.options.defaultColumn}}function Vf(e,t,n,r=0){let i=Array(t.length);for(let a=0;ae.getFlatColumns())}function Wf(e){let t=tf(),n=e.getAllFlatColumns();for(let e=0;ee.getLeafColumns());return _f(e,`getOrderColumns`,If)(t)}function Kf(e){let t=tf(),n=e.getAllLeafColumns();for(let e=0;e{gf(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>Rf(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>zf(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{hf(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>Bf(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>Hf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>Uf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>Wf(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>Gf(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>Kf(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>qf(e,t)}})}};function Yf(e,t){for(let n=0;n!t.includes(e.id)&&!n.includes(e.id));return Nf(r,[...o,...c,...s],e)}function $f(e){return[...e.getHeaderGroups()].reverse()}function ep(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e{gf(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>Xf(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>Zf(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{hf(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>Qf(e),memoDeps:()=>[e.options.columns,e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.atoms.columnPinning?.get(),e.atoms.columnVisibility?.get(),e.options.groupedColumnMode]},table_getFooterGroups:{fn:()=>$f(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>ep(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>tp(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function rp(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{let s=rp(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=tf(),c._valuesCache=tf(),c.depth=i,c.id=t,c.index=r,c.original=n,c.parentId=o,c.subRows=a??[];let l=e._rowInstanceInitFns;for(let e=0;eop(e))}function cp(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>lp(e))}function lp(e,t){let n=e.initialState.expanded;lf(e,`expanded`,t?tf():n===!0||Object.assign(tf(),ef(n??{})))}var up=0;function dp(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??up)===up)return;mp(e,!0)}}function fp(e,t){lf(e,`pagination`,t)}function pp(e,t){fp(e,n=>{let r=$d(t,n.pageIndex),i=e.options.pageCount===void 0||e.options.pageCount===-1?2**53-1:e.options.pageCount-1;return r=Math.max(0,Math.min(r,i)),{...n,pageIndex:r}})}function mp(e,t){pp(e,t?up:e.initialState.pagination?.pageIndex??up)}function hp(e,t){lf(e,`sorting`,t)}function gp(e,t){hp(e,t?[]:ef(e.initialState.sorting??[]))}function _p(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&gp(e)}function vp(){return e=>pf({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>bp(e,e.options.data),onAfterUpdate:ff(()=>{cp(e),dp(e),_p(e),sp(e)})})}function yp(e,t,n,r=0,i){let a=[];for(let o=0;o{hf(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>xp(e)},table_getPreFilteredRowModel:{fn:()=>Sp(e)},table_getFilteredRowModel:{fn:()=>Cp(e)},table_getPreGroupedRowModel:{fn:()=>wp(e)},table_getGroupedRowModel:{fn:()=>Tp(e)},table_getPreSortedRowModel:{fn:()=>Ep(e)},table_getSortedRowModel:{fn:()=>Dp(e)},table_getPreExpandedRowModel:{fn:()=>Op(e)},table_getExpandedRowModel:{fn:()=>kp(e)},table_getPrePaginatedRowModel:{fn:()=>Ap(e)},table_getPaginatedRowModel:{fn:()=>jp(e)},table_getRowModel:{fn:()=>Mp(e)}})}};function Pp(e){if(!e._cellPrototype){e._cellPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{t._displayIndexCache=e.length,e.push(t),t.subRows.length&&t.getIsExpanded?.()&&t.subRows.forEach(n)};return t.forEach(n),e}for(let e=0;ee.subRows)}function Hp(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e{gf(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>Ip(e)},row_getAllCellsByColumnId:{fn:e=>Kp(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>Gp(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>Vp(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>Up(e)},row_getParentRows:{fn:e=>Wp(e)},row_getUniqueValues:{fn:(e,t)=>zp(e,t)},row_getValue:{fn:(e,t)=>Rp(e,t)},row_renderValue:{fn:(e,t)=>Bp(e,t)}})},constructTableAPIs:e=>{hf(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>Lp(e),memoDeps:()=>[e.getPrePaginatedRowModel().rows,e.options.paginateExpandedRows,e.options.paginateExpandedRows===!1?e.atoms.expanded?.get():void 0]},table_getRowId:{fn:(t,n,r)=>qp(t,e,n,r)},table_getRow:{fn:(t,n)=>Jp(e,t,n)},table_getMaxSubRowDepth:{fn:()=>Hp(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function Xp(e,t,n=(e,t)=>e===t){let r=t===void 0?e.options.state:t;e._reactivity.batch(()=>{if(r)for(let t in r){let i=e.baseAtoms[t];if(!i)continue;let a=r[t],o=a===void 0?e.initialState[t]:a;n(e._reactivity.untrack(()=>i.get()),o)||i.set(()=>o)}})}function Zp(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{Xp(e,t,n),e._reactivity.commit?.()})}function Qp(e){let t=ef(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;rr):e.options=r,n?.syncExternalState!==!1&&Zp(e,r.state??null)}var tm={coreCellsFeature:xf,coreColumnsFeature:Jf,coreHeadersFeature:np,coreRowModelsFeature:Np,coreRowsFeature:Yp,coreTablesFeature:{constructTableAPIs:e=>{hf(`coreTablesFeature`,e,{table_reset:{fn:()=>Qp(e)},table_setOptions:{fn:t=>em(e,t)}})}}};function nm(){return{accessor:(e,t)=>typeof e==`function`?{...t,accessorFn:e}:{...t,accessorKey:e},columns:e=>e,display:e=>e,group:e=>e}}function rm(e){return e}function im(e,t={}){return Object.values(e).forEach(e=>{t=e.getInitialState?.(t)??t}),ef(t)}function am(e){let t=e.features.coreReactivityFeature,{aggregationFns:n,columnMeta:r,coreRowModel:i,expandedRowModel:a,facetedMinMaxValues:o,facetedRowModel:s,facetedUniqueValues:c,filterFns:l,filterMeta:u,filteredRowModel:d,groupedRowModel:f,paginatedRowModel:p,sortFns:m,sortedRowModel:h,tableMeta:g,..._}=e.features,v={_cellInstanceInitFns:[],_columnInstanceInitFns:[],_features:{...tm,..._},_headerGroupInstanceInitFns:[],_headerInstanceInitFns:[],_reactivity:t,_rowInstanceInitFns:[],_rowModelFns:{aggregationFns:n,filterFns:l,sortFns:m},_rowModels:{},atoms:{},baseAtoms:{}},y=Object.values(v._features),b={...y.reduce((e,t)=>Object.assign(e,t.getDefaultTableOptions?.(v)),{}),...e};if(t.wrapExternalAtoms&&b.atoms)for(let[e,n]of Object.entries(b.atoms)){let r=n,i=t.createWritableAtom(r.get(),{debugName:`externalAtom/${e}`});b.atoms[e]=i;let a=!1,o=r.subscribe(e=>{a||i.set(e)}),s=i.subscribe(e=>{a=!0,r.set(e),a=!1});t.addSubscription(o),t.addSubscription(s)}t.createOptionsStore?(v.optionsStore=t.createWritableAtom(b,{debugName:`table/optionsStore`}),Object.defineProperty(v,"options",{configurable:!0,enumerable:!0,get(){return v.optionsStore.get()},set(e){v.optionsStore.set(()=>e)}})):v.options=b,v.initialState=im(v._features,v.options.initialState);let x=Object.keys(v.initialState);for(let e=0;e{let e=v.options,t=e.atoms?.[n],r=t?t.get():v.baseAtoms[n].get();if(t)return r;let i=e.state;if(i&&nf(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}Xp(v),v.store=Yd(t.createReadonlyAtom(()=>{let e={};for(let t=0;t`u`?s.useEffect:s.useLayoutEffect;function sm(e,t){let[{table:n,rootSource:r}]=(0,s.useState)(()=>{let t=am({...e,features:{coreReactivityFeature:Qd(),...e.features}});return t.Subscribe=(e=>Jd({...e,source:e.source??t.store})),t.FlexRender=xd,{table:t,rootSource:Zd(t.store,Bd)}}),i=n;em(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),c=qd(r,t,{compare:Bd});return om(()=>{r.markCommitted(o),Zp(i,a??null,Bd)}),(0,s.useMemo)(()=>({...n,options:e,state:c}),[n,e,c])}var cm=rm({});function lm(e){return typeof e==`number`?`${e}px`:e}function um(e){return e instanceof Element&&!!e.closest(`button, a, input, select, textarea, [role='button']`)}function dm({columns:e,data:t,getRowId:n,caption:r,minWidth:i=880,loading:a=!1,error:o=``,onRetry:c,empty:l={title:`没有数据`},pagination:u,onRowActivate:d,rowAriaLabel:f}){let p=(0,s.useMemo)(()=>nm(),[]),m=sm({features:cm,columns:(0,s.useMemo)(()=>p.columns(e.map(e=>p.display({id:e.id,header:()=>e.header,cell:t=>e.cell(t.row.original)}))),[e,p]),data:t,getRowId:n}),h=(e,t)=>{!d||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),d(t))},g=u&&t.length?u.pageIndex*u.pageSize+1:0,_=u?Math.min(u.pageIndex*u.pageSize+t.length,u.total):0;return(0,K.jsxs)(`div`,{className:`studio-data-table`,"aria-busy":a||void 0,"data-state":a?`loading`:o?`error`:t.length?`ready`:`empty`,children:[(0,K.jsxs)(`div`,{className:`studio-data-table-scroll`,children:[!a&&!o&&(0,K.jsxs)(`table`,{style:{minWidth:lm(i)},children:[r&&(0,K.jsx)(`caption`,{className:`sr-only`,children:r}),(0,K.jsx)(`thead`,{children:m.getHeaderGroups().map(t=>(0,K.jsx)(`tr`,{children:t.headers.map((t,n)=>{let r=e[n],i={width:lm(r?.width),minWidth:lm(r?.minWidth)};return(0,K.jsx)(`th`,{className:r?.headerClassName,style:i,children:t.isPlaceholder?null:(0,K.jsx)(m.FlexRender,{header:t})},t.id)})},t.id))}),(0,K.jsx)(`tbody`,{children:m.getRowModel().rows.map(t=>(0,K.jsx)(`tr`,{className:d?`is-interactive`:void 0,tabIndex:d?0:void 0,"aria-label":f?.(t.original),onKeyDown:e=>h(e,t.original),onClick:e=>{d&&!um(e.target)&&d(t.original)},children:t.getAllCells().map((t,n)=>(0,K.jsx)(`td`,{className:e[n]?.className,children:(0,K.jsx)(m.FlexRender,{cell:t})},t.id))},t.id))})]}),a&&(0,K.jsxs)(`div`,{className:`studio-data-table-state is-loading`,role:`status`,children:[(0,K.jsx)(`span`,{className:`sr-only`,children:`正在加载`}),(0,K.jsx)(`div`,{className:`studio-table-skeleton`,"aria-hidden":`true`,children:[0,1,2,3].map(e=>(0,K.jsxs)(`div`,{className:`studio-table-skeleton-row`,children:[(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{}),(0,K.jsx)(`i`,{})]},e))}),(0,K.jsxs)(`span`,{className:`studio-table-loading-copy`,children:[(0,K.jsx)(ke,{className:`animate-spin`,size:14}),` 正在加载`]})]}),!a&&o&&(0,K.jsxs)(`div`,{className:`studio-data-table-state is-error`,role:`alert`,children:[(0,K.jsx)(U,{size:20}),(0,K.jsx)(`strong`,{children:`加载失败`}),(0,K.jsx)(`span`,{children:o}),c&&(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:c,children:`重新加载`})]}),!a&&!o&&t.length===0&&(0,K.jsxs)(`div`,{className:`studio-data-table-state empty-state${l.action?``:` inline`}`,children:[l.icon&&(0,K.jsx)(`span`,{className:`empty-icon`,children:l.icon}),(0,K.jsx)(`h2`,{children:l.title}),l.description&&(0,K.jsx)(`p`,{children:l.description}),l.action]})]}),u&&!a&&!o&&(0,K.jsxs)(`footer`,{className:`studio-data-table-pagination`,children:[(0,K.jsxs)(`span`,{children:[`第 `,u.pageIndex+1,` 页 · `,g,`–`,_,` / `,u.total,` 条`]}),(0,K.jsxs)(`div`,{children:[(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:u.pageIndex<=0,onClick:u.onPreviousPage,children:[(0,K.jsx)(V,{size:14}),`上一页`]}),(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:!u.hasNextPage,onClick:u.onNextPage,children:[`下一页`,(0,K.jsx)(H,{size:14})]})]})]})]})}var fm=Object.defineProperty,pm=(e,t)=>fm(e,`name`,{value:t,configurable:!0});function mm(e,[t,n]){return Math.min(n,Math.max(t,e))}pm(mm,`clamp`);var hm=Object.defineProperty,gm=(e,t)=>hm(e,`name`,{value:t,configurable:!0});function _m(e){let t=s.useRef({value:e,previous:e});return s.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}gm(_m,`usePrevious`);var vm=Object.defineProperty,ym=(e,t)=>vm(e,`name`,{value:t,configurable:!0}),bm=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),xm=s.forwardRef(ym(function(e,t){return(0,K.jsx)(yn.span,{...e,ref:t,style:{...bm,...e.style}})},`VisuallyHidden`)),Sm=Object.defineProperty,Cm=(e,t)=>Sm(e,`name`,{value:t,configurable:!0}),wm=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Tm=[` `,`Enter`],Em=`Select`,[Dm,Om,km]=Ea(Em),[Am,jm]=Nt(Em,[km,cc]),Mm=cc(),[Nm,Pm]=Am(Em),[Fm,Im]=Am(Em);function Lm(e){let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:c,onValueChange:l,dir:u,name:d,autoComplete:f,disabled:p,required:m,form:h,internal_do_not_use_render:g}=e,_=Mm(t),[v,y]=s.useState(null),[b,x]=s.useState(null),[S,C]=s.useState(!1),w=Ba(u),[T,E]=Yt({prop:r,defaultProp:i??!1,onChange:a,caller:Em}),[D,O]=Yt({prop:o,defaultProp:c,onChange:l,caller:Em}),k=s.useRef(null),A=s.useRef(D);s.useEffect(()=>{let e=h?v?.ownerDocument.getElementById(h):v?.form;if(e instanceof HTMLFormElement){let t=Cm(()=>O(A.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[h,v,O]);let j=!v||!!h||!!v.closest(`form`),[M,N]=s.useState(new Set),P=Bt(),F=Array.from(M).map(e=>e.props.value).join(`;`),I=s.useCallback(e=>{N(t=>new Set(t).add(e))},[]),L=s.useCallback(e=>{N(t=>{let n=new Set(t);return n.delete(e),n})},[]),R={required:m,trigger:v,onTriggerChange:y,valueNode:b,onValueNodeChange:x,valueNodeHasChildren:S,onValueNodeHasChildrenChange:C,contentId:P,value:D,onValueChange:O,open:T,onOpenChange:E,dir:w,triggerPointerDownPosRef:k,disabled:p,name:d,autoComplete:f,form:h,nativeOptions:M,nativeSelectKey:F,isFormControl:j};return(0,K.jsx)(wc,{..._,children:(0,K.jsx)(Nm,{scope:t,...R,children:(0,K.jsx)(Dm.Provider,{scope:t,children:(0,K.jsx)(Fm,{scope:t,onNativeOptionAdd:I,onNativeOptionRemove:L,children:wh(g)?g(R):n})})})})}Cm(Lm,`SelectProvider`);var Rm=Cm(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,K.jsx)(Lm,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,K.jsxs)(K.Fragment,{children:[n,e?(0,K.jsx)(Ch,{__scopeSelect:t}):null]})})},`Select`),zm=`SelectTrigger`,Bm=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,disabled:r=!1,...i}=e,a=Mm(n),o=Pm(zm,n),c=o.disabled||r,l=kt(t,o.onTriggerChange),u=Om(n),d=s.useRef(`touch`),[f,p,m]=Eh(e=>{let t=u().filter(e=>!e.disabled),n=Dh(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=Cm(e=>{c||(o.onOpenChange(!0),m()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})},`handleOpen`);return(0,K.jsx)(Tc,{asChild:!0,...a,children:(0,K.jsx)(yn.button,{type:`button`,role:`combobox`,"aria-controls":o.open?o.contentId:void 0,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:c,"data-disabled":c?``:void 0,"data-placeholder":Th(o.value)?``:void 0,...i,ref:l,onClick:q(i.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:q(i.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:q(i.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&wm.includes(e.key)&&(h(),e.preventDefault())})})})},`SelectTrigger`)),Vm=`SelectValue`,Hm=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=Pm(Vm,n),{onValueNodeHasChildrenChange:u}=l,d=a!==void 0,f=kt(t,l.onValueNodeChange);Ft(()=>{u(d)},[u,d]);let p=Th(l.value);return(0,K.jsx)(yn.span,{...c,asChild:!p&&c.asChild,ref:f,style:{pointerEvents:`none`},children:(0,K.jsx)(s.Fragment,{children:p?o:a},p?`placeholder`:`value`)})},`SelectValue`)),Um=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,children:r,...i}=e;return(0,K.jsx)(yn.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})},`SelectIcon`)),[Wm,Gm]=Am(`SelectPortal`,{forceMount:void 0}),Km=Cm(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,K.jsx)(Wm,{scope:e.__scopeSelect,forceMount:n,children:(0,K.jsx)(nr,{asChild:!0,...r})})},`SelectPortal`),qm=`SelectContent`,Jm=s.forwardRef(Cm(function(e,t){let n=Gm(qm,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=Pm(qm,e.__scopeSelect),[o,c]=s.useState();return Ft(()=>{c(new DocumentFragment)},[]),(0,K.jsx)(or,{present:r||a.open,children:({present:e})=>e?(0,K.jsx)(eh,{...i,ref:t}):(0,K.jsx)(Ym,{...i,fragment:o})})},`SelectContent`)),Ym=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?en.createPortal((0,K.jsx)(Zm,{scope:n,children:(0,K.jsx)(Dm.Slot,{scope:n,children:(0,K.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),Xm=10,[Zm,Qm]=Am(qm),$m=rn(`SelectContent.RemoveScroll`),eh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n}=e,{position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_,...v}=e,y=Pm(qm,n),[b,x]=s.useState(null),[S,C]=s.useState(null),w=kt(t,x),[T,E]=s.useState(null),[D,O]=s.useState(null),k=Om(n),[A,j]=s.useState(!1),M=s.useRef(!1);s.useEffect(()=>{if(b)return Ri(b)},[b]),_r();let N=s.useCallback(e=>{let[t,...n]=k().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&S&&(S.scrollTop=0),n===r&&S&&(S.scrollTop=S.scrollHeight),n?.focus(),document.activeElement!==i))return},[k,S]),P=s.useCallback(()=>N([T,b]),[N,T,b]);s.useEffect(()=>{A&&P()},[A,P]);let{onOpenChange:F,triggerPointerDownPosRef:I}=y;s.useEffect(()=>{if(b){let e={x:0,y:0},t=Cm(t=>{e={x:Math.abs(Math.round(t.pageX)-(I.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(I.current?.y??0))}},`handlePointerMove`),n=Cm(n=>{e.x<=10&&e.y<=10?n.preventDefault():n.composedPath().includes(b)||F(!1),document.removeEventListener(`pointermove`,t),I.current=null},`handlePointerUp`);return I.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[b,F,I]),s.useEffect(()=>{let e=Cm(()=>F(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[F]);let[L,R]=Eh(e=>{let t=k().filter(e=>!e.disabled),n=Dh(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current?.focus())}),z=s.useCallback((e,t,n)=>{let r=!M.current&&!n;(y.value!==void 0&&y.value===t||r)&&(E(e),r&&(M.current=!0))},[y.value]),B=s.useCallback(()=>b?.focus(),[b]),V=s.useCallback((e,t,n)=>{let r=!M.current&&!n;(y.value!==void 0&&y.value===t||r)&&O(e)},[y.value]),H=r===`popper`?nh:th,ee=H===nh?{side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_}:{};return(0,K.jsx)(Zm,{scope:n,content:b,viewport:S,onViewportChange:C,itemRefCallback:z,selectedItem:T,onItemLeave:B,itemTextRefCallback:V,focusSelectedItem:P,selectedItemText:D,position:r,isPositioned:A,searchRef:L,children:(0,K.jsx)(ki,{as:$m,allowPinchZoom:!0,children:(0,K.jsx)(Un,{asChild:!0,trapped:y.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:q(i,e=>{y.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>y.onOpenChange(!1),children:(0,K.jsx)(H,{role:`listbox`,id:y.contentId,"data-state":y.open?`open`:`closed`,dir:y.dir,onContextMenu:e=>e.preventDefault(),...v,...ee,onPlaced:()=>j(!0),ref:w,style:{display:`flex`,flexDirection:`column`,outline:`none`,...v.style},onKeyDown:q(v.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&R(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=k().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>N(t)),e.preventDefault()}})})})})})})},`SelectContentImpl`)),th=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,onPlaced:r,...i}=e,a=Pm(qm,n),o=Qm(qm,n),[c,l]=s.useState(null),[u,d]=s.useState(null),f=kt(t,d),p=Om(n),m=s.useRef(!1),h=s.useRef(!0),{viewport:g,selectedItem:_,selectedItemText:v,focusSelectedItem:y}=o,b=s.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&u&&g&&_&&v){let e=a.trigger.getBoundingClientRect(),t=u.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Xm,d=mm(a,[Xm,Math.max(Xm,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Xm,d=mm(a,[Xm,Math.max(Xm,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=p(),s=window.innerHeight-Xm*2,l=g.scrollHeight,d=window.getComputedStyle(u),f=parseInt(d.borderTopWidth,10),h=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=f+h+l+b+y,S=Math.min(_.offsetHeight*5,x),C=window.getComputedStyle(g),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Xm,D=s-E,O=_.offsetHeight/2,k=_.offsetTop+O,A=f+h+k,j=x-A;if(A<=E){let e=o.length>0&&_===o[o.length-1].ref.current;c.style.bottom=`0px`;let t=u.clientHeight-g.offsetTop-g.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+y);c.style.height=n+`px`}else{let e=o.length>0&&_===o[0].ref.current;c.style.top=`0px`;let t=Math.max(E,f+g.offsetTop+(e?w:0)+O)+j;c.style.height=t+`px`,g.scrollTop=A-E+g.offsetTop}c.style.margin=`${Xm}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>m.current=!0)}},[p,a.trigger,a.valueNode,c,u,g,_,v,a.dir,r]);Ft(()=>b(),[b]);let[x,S]=s.useState();Ft(()=>{u&&S(window.getComputedStyle(u).zIndex)},[u]);let C=s.useCallback(e=>{e&&h.current===!0&&(b(),y?.(),h.current=!1)},[b,y]);return(0,K.jsx)(rh,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:m,onScrollButtonChange:C,children:(0,K.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,K.jsx)(yn.div,{...i,ref:f,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})},`SelectItemAlignedPosition`)),nh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Xm,...a}=e,o=Mm(n);return(0,K.jsx)(Ec,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})},`SelectPopperPosition`)),[rh,ih]=Am(qm,{}),ah=`SelectViewport`,oh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,nonce:r,...i}=e,a=Qm(ah,n),o=ih(ah,n),c=kt(t,a.onViewportChange),l=s.useRef(0);return(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,K.jsx)(Dm.Slot,{scope:n,children:(0,K.jsx)(yn.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:c,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:q(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(l.current-t.scrollTop);if(e>0){let r=window.innerHeight-Xm*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o0?s:0,n.style.justifyContent=`flex-end`)}}}l.current=t.scrollTop})})})]})},`SelectViewport`)),[sh,ch]=Am(`SelectGroup`),lh=`SelectItem`,[uh,dh]=Am(lh),fh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,c=Pm(lh,n),l=Qm(lh,n),u=c.value===r,[d,f]=s.useState(a??``),[p,m]=s.useState(!1),h=kt(t,Cn(e=>l.itemRefCallback?.(e,r,i))),g=Bt(),_=s.useRef(`touch`),v=Cm(()=>{i||(c.onValueChange(r),c.onOpenChange(!1))},`handleSelect`);return(0,K.jsx)(uh,{scope:n,value:r,disabled:i,textId:g,isSelected:u,onItemTextChange:s.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,K.jsx)(Dm.ItemSlot,{scope:n,value:r,disabled:i,textValue:d,children:(0,K.jsx)(yn.div,{role:`option`,"aria-labelledby":g,"data-highlighted":p?``:void 0,"aria-selected":u&&p,"data-state":u?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:h,onFocus:q(o.onFocus,()=>m(!0)),onBlur:q(o.onBlur,()=>m(!1)),onClick:q(o.onClick,()=>{_.current!==`mouse`&&v()}),onPointerUp:q(o.onPointerUp,()=>{_.current===`mouse`&&v()}),onPointerDown:q(o.onPointerDown,e=>{_.current=e.pointerType}),onPointerMove:q(o.onPointerMove,e=>{_.current=e.pointerType,i?l.onItemLeave?.():_.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:q(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:q(o.onKeyDown,e=>{i||e.target!==e.currentTarget||(l.searchRef?.current===``||e.key!==` `)&&(Tm.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),ph=`SelectItemText`,mh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,className:r,style:i,...a}=e,o=Pm(ph,n),c=Qm(ph,n),l=dh(ph,n),u=Im(ph,n),[d,f]=s.useState(null),p=Cn(e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),m=kt(t,f,l.onItemTextChange,p),h=d?.textContent,g=s.useMemo(()=>(0,K.jsx)(`option`,{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:_,onNativeOptionRemove:v}=u;return Ft(()=>(_(g),()=>v(g)),[_,v,g]),(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(yn.span,{id:l.textId,...a,ref:m}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren&&!Th(o.value)?en.createPortal(a.children,o.valueNode):null]})},`SelectItemText`)),hh=`SelectItemIndicator`,gh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,...r}=e;return dh(hh,n).isSelected?(0,K.jsx)(yn.span,{"aria-hidden":!0,...r,ref:t}):null},`SelectItemIndicator`)),_h=`SelectScrollUpButton`,vh=s.forwardRef(Cm(function(e,t){let n=Qm(_h,e.__scopeSelect),r=ih(_h,e.__scopeSelect),[i,a]=s.useState(!1),o=kt(t,r.onScrollButtonChange);return Ft(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollTop>0;a(e)};Cm(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,K.jsx)(xh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),yh=`SelectScrollDownButton`,bh=s.forwardRef(Cm(function(e,t){let n=Qm(yh,e.__scopeSelect),r=ih(yh,e.__scopeSelect),[i,a]=s.useState(!1),o=kt(t,r.onScrollButtonChange);return Ft(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,K.jsx)(xh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),xh=s.forwardRef(Cm(function(e,t){let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Qm(`SelectScrollButton`,n),o=s.useRef(null),c=Om(n),l=s.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return s.useEffect(()=>()=>l(),[l]),Ft(()=>{c().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[c]),(0,K.jsx)(yn.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:q(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:q(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:q(i.onPointerLeave,()=>{l()})})},`SelectScrollButtonImpl`)),Sh=`SelectBubbleInput`,Ch=s.forwardRef(Cm(function({__scopeSelect:e,...t},n){let r=Pm(Sh,e),{value:i,onValueChange:a,required:o,disabled:c,name:l,autoComplete:u,form:d}=r,{nativeOptions:f,nativeSelectKey:p}=r,m=s.useRef(null),h=kt(n,m),g=i??``,_=_m(g),v=Array.from(f).some(e=>(e.props.value??``)===``);return s.useEffect(()=>{let e=m.current;if(!e)return;let t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(_!==g&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,g),e.dispatchEvent(t)}},[_,g]),(0,K.jsxs)(yn.select,{"aria-hidden":!0,required:o,tabIndex:-1,name:l,autoComplete:u,disabled:c,form:d,onChange:e=>a(e.target.value),...t,style:{...bm,...t.style},ref:h,defaultValue:g,children:[Th(i)&&!v?(0,K.jsx)(`option`,{value:``}):null,Array.from(f)]},p)},`SelectBubbleInput`));function wh(e){return typeof e==`function`}Cm(wh,`isFunction`);function Th(e){return e===``||e===void 0}Cm(Th,`shouldShowPlaceholder`);function Eh(e){let t=Cn(e),n=s.useRef(``),r=s.useRef(0),i=s.useCallback(e=>{let i=n.current+e;t(i),Cm((function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(i)},[t]),a=s.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return s.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}Cm(Eh,`useTypeaheadSearch`);function Dh(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Oh(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}Cm(Dh,`findNextItem`);function Oh(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Cm(Oh,`wrapArray`);function kh({id:e,ariaLabel:t,value:n,placeholder:r=`请选择`,options:i,disabled:a=!1,className:o=``,onValueChange:c}){let[l,u]=(0,s.useState)(!1),d=i.find(e=>e.value===n);return(0,K.jsxs)(Rm,{value:n||void 0,open:l,disabled:a,onOpenChange:u,onValueChange:e=>{u(!1),c(e)},children:[(0,K.jsxs)(Bm,{id:e,className:`studio-select-trigger${o?` ${o}`:``}`,"aria-label":t,title:d?.label||r,children:[(0,K.jsx)(Hm,{placeholder:r,children:d?.label}),(0,K.jsx)(Um,{className:`studio-select-chevron`,children:(0,K.jsx)(B,{size:15})})]}),(0,K.jsx)(Km,{children:(0,K.jsxs)(Jm,{className:`studio-select-content`,position:`popper`,sideOffset:5,collisionPadding:10,children:[(0,K.jsx)(vh,{className:`studio-select-scroll`,children:(0,K.jsx)(ee,{size:14})}),(0,K.jsx)(oh,{className:`studio-select-viewport`,children:i.map(e=>(0,K.jsxs)(fh,{value:e.value,disabled:e.disabled,className:`studio-select-item`,children:[(0,K.jsx)(mh,{children:(0,K.jsxs)(`span`,{className:`studio-select-item-copy`,children:[(0,K.jsx)(`span`,{children:e.label}),e.description&&(0,K.jsx)(`small`,{children:e.description})]})}),(0,K.jsx)(gh,{className:`studio-select-check`,children:(0,K.jsx)(z,{size:14})})]},e.value))}),(0,K.jsx)(bh,{className:`studio-select-scroll`,children:(0,K.jsx)(B,{size:14})})]})})]})}function Ah(e){return e.spec?.runtime?.type===`codex`}function jh({agents:e,runtimeReady:t,runtimeChecked:n=!0,workspaceName:r,onCreate:i,onDetail:a,onChat:o,onBuild:c,onChanged:l}){let[u,d]=(0,s.useState)(``),[f,p]=(0,s.useState)(``),[m,h]=(0,s.useState)(0),[_,v]=(0,s.useState)(0),[y,b]=(0,s.useState)(null),[x,S]=(0,s.useState)(!1),[C,w]=(0,s.useState)(``);(0,s.useEffect)(()=>{Promise.all([g(`/api/v1/catalog/resources?limit=200`).then(e=>e.json()),g(`/api/v1/catalog/models`).then(e=>e.json()).catch(()=>null)]).then(([e,t])=>{let n=e.items||[],r=n.filter(e=>e.kind===`model`);t?.items?.length&&(r=[...r.filter(e=>e.source===`local`||e.source===`market`),...t.items]),h(r.filter(e=>e.status===`ready`).length),v(n.filter(e=>[`tool`,`mcp`,`skill`].includes(e.kind)&&e.status===`ready`).length)}).catch(()=>{})},[]);let T=(0,s.useMemo)(()=>e.filter(e=>{let t=!!e.builds?.some(e=>e.status===`SUCCEEDED`),n=u.trim().toLowerCase();return(!n||e.metadata.name.toLowerCase().includes(n)||e.metadata.id.toLowerCase().includes(n))&&(!f||f===`built`&&t||f===`draft`&&!t)}),[e,u,f]),E=(0,s.useMemo)(()=>[{id:`agent`,header:`Agent`,minWidth:220,className:`agent-name-column`,headerClassName:`agent-name-column`,cell:e=>{let t=e.metadata.labels?.[`agentkit.ksyun.com/template`]||`blank`;return(0,K.jsxs)(`div`,{className:`agent-cell`,children:[(0,K.jsx)(_t,{name:e.metadata.name,appearance:e.metadata.appearance,template:t}),(0,K.jsxs)(`div`,{className:`agent-cell-copy`,children:[(0,K.jsx)(`strong`,{children:e.metadata.name}),(0,K.jsx)(`span`,{children:e.metadata.id})]})]})}},{id:`template`,header:`运行时`,minWidth:100,className:`agent-runtime-column`,headerClassName:`agent-runtime-column`,cell:e=>{let t=e.spec?.runtime?.type||e.metadata.labels?.[`agentkit.ksyun.com/framework`]||`adk`;return(0,K.jsx)(`span`,{className:`tag mono`,children:t})}},{id:`capabilities`,header:`能力`,minWidth:170,className:`agent-capabilities-column`,headerClassName:`agent-capabilities-column`,cell:e=>{let t=e.spec?.bindings||{};return(0,K.jsxs)(`div`,{className:`resource-counts`,children:[(0,K.jsxs)(`span`,{children:[t.tools?.length||0,` Tool`]}),(0,K.jsxs)(`span`,{children:[t.mcpServers?.length||0,` MCP`]}),(0,K.jsxs)(`span`,{children:[t.skills?.length||0,` Skill`]})]})}},{id:`revision`,header:`Revision`,width:84,className:`agent-revision-column`,headerClassName:`agent-revision-column`,cell:e=>(0,K.jsxs)(`span`,{className:`mono`,children:[`r`,e.metadata.revision]})},{id:`build`,header:`最近校验 / 构建`,width:108,className:`agent-build-column`,headerClassName:`agent-build-column`,cell:e=>e.builds?.some(e=>e.status===`SUCCEEDED`)?(0,K.jsx)(`span`,{className:`badge`,"data-state":`ready`,children:Ah(e)?`声明已校验`:`已构建`}):(0,K.jsx)(`span`,{className:`badge`,"data-state":`idle`,children:`草稿`})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column agent-actions-column`,headerClassName:`actions-column agent-actions-column`,cell:e=>(0,K.jsxs)(`div`,{className:`row-actions`,children:[(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,onClick:()=>o(e.metadata.id),children:`会话`}),(0,K.jsx)(pd,{label:`${e.metadata.name} 的更多操作`,items:[{label:`配置`,onSelect:()=>a(e.metadata.id)},{label:Ah(e)?`校验声明`:`构建`,onSelect:c},{label:`删除`,danger:!0,onSelect:()=>b(e)}]})]})}],[c,o,a]);async function D(){if(y){S(!0),w(``);try{let e=await g(`/api/v1/agents/${encodeURIComponent(y.metadata.id)}`,{method:`DELETE`});if(!e.ok){let t=await e.text().catch(()=>``),n=`删除失败(${e.status})`;try{n=JSON.parse(t)?.error?.message||n}catch{}throw Error(n)}}catch(e){w(e.message||`删除失败`)}S(!1),b(null),l()}}return(0,K.jsxs)(`div`,{className:`page-container agents-page`,"data-layout":`data`,children:[(0,K.jsx)(gd,{children:(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,disabled:!t,onClick:i,children:[(0,K.jsx)(qe,{size:16}),(0,K.jsx)(`span`,{children:`创建 Agent`})]})}),(0,K.jsxs)(`div`,{className:`data-page-body table-data-body`,children:[C&&(0,K.jsx)(`div`,{className:`form-error`,style:{marginBottom:16},children:C}),(0,K.jsxs)(`section`,{className:`agents-overview-section`,"aria-labelledby":`agents-overview-title`,title:r||`本地工作区`,children:[(0,K.jsx)(`h2`,{id:`agents-overview-title`,className:`sr-only`,children:`工作区概览`}),(0,K.jsxs)(`div`,{className:`stat-strip compact-summary`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`Agent`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:e.length})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`可用模型`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:m})]}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`能力资源`}),(0,K.jsx)(`strong`,{className:`stat-value`,children:_})]}),(0,K.jsxs)(`div`,{className:`runtime-summary`,"data-state":n?t?`ready`:`failed`:`pending`,children:[(0,K.jsx)(`span`,{className:`stat-label`,children:`本地 Runtime`}),(0,K.jsxs)(`strong`,{className:`stat-value`,children:[(0,K.jsx)(`span`,{className:`summary-status-dot`}),n?t?`正常`:`连接失败`:`检查中`]})]})]}),n&&!t&&(0,K.jsxs)(`div`,{className:`compact-status-alert`,role:`alert`,children:[(0,K.jsx)(`strong`,{children:`本地 Runtime 连接失败`}),(0,K.jsx)(`span`,{children:`请确认本地服务正在运行,然后刷新页面。`})]})]}),(0,K.jsxs)(`section`,{className:`agents-catalog-section block`,"aria-labelledby":`agents-catalog-title`,children:[(0,K.jsxs)(`header`,{className:`agents-catalog-header`,children:[(0,K.jsx)(`h2`,{id:`agents-catalog-title`,children:`Agent 列表`}),(0,K.jsxs)(`div`,{className:`agents-catalog-meta`,children:[(0,K.jsx)(`span`,{children:T.length===e.length?`${e.length} 个 Agent`:`${T.length} / ${e.length} 个 Agent`}),(0,K.jsx)(`span`,{className:`sync-state`,children:`已同步`})]})]}),(0,K.jsxs)(`div`,{className:`section-toolbar`,children:[(0,K.jsxs)(`div`,{className:`search-field`,children:[(0,K.jsx)(Ye,{size:15}),(0,K.jsx)(`input`,{type:`search`,placeholder:`搜索 Agent 名称或 ID`,"aria-label":`搜索 Agent`,value:u,onChange:e=>d(e.target.value)})]}),(0,K.jsx)(kh,{className:`compact-select`,ariaLabel:`筛选 Agent 状态`,value:f||`__all__`,options:[{value:`__all__`,label:`全部状态`},{value:`built`,label:`已构建`},{value:`draft`,label:`草稿`}],onValueChange:e=>p(e===`__all__`?``:e)})]}),(0,K.jsx)(dm,{columns:E,data:T,getRowId:e=>e.metadata.id,caption:`Agent 列表`,minWidth:0,onRowActivate:e=>a(e.metadata.id),rowAriaLabel:e=>`${e.metadata.name} ${e.metadata.id}`,empty:{icon:(0,K.jsx)(N,{size:24}),title:u||f?`没有匹配的 Agent`:`还没有 Agent`,description:u||f?`调整搜索词或状态筛选。`:`创建第一个可运行的 Agent。`,action:!u&&!f?(0,K.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:i,children:[(0,K.jsx)(qe,{size:16}),(0,K.jsx)(`span`,{children:`创建 Agent`})]}):void 0}})]})]}),y&&(0,K.jsx)(Ca,{title:`确认删除 Agent「${y.metadata.name}」?`,description:`Agent ID:${y.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:x,onConfirm:D,onCancel:()=>b(null)})]})}var Mh=e=>e.type===`checkbox`,Nh=e=>e.type===`file`,Ph=e=>e instanceof Date,Fh=e=>e==null,Ih=e=>typeof e==`object`,Lh=e=>!Fh(e)&&!Array.isArray(e)&&Ih(e)&&!Ph(e),Rh=e=>Lh(e)&&e.target?Mh(e.target)?e.target.checked:Nh(e.target)?e.target.files:e.target.value:e,zh=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),Bh=e=>{let t=e.constructor&&e.constructor.prototype;return Lh(t)&&t.hasOwnProperty(`isPrototypeOf`)},Vh=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function Hh(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(Vh&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(Lh(e)&&Bh(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=Hh(e[t]));return r}var Uh={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},Wh={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},Gh={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},Kh=`root`,qh=[`__proto__`,`constructor`,`prototype`],Jh=/^\w*$/,Yh=e=>Jh.test(e),Xh=e=>e===void 0,Zh=/[.[\]'"]/,Qh=e=>e.split(Zh).filter(Boolean),J=(e,t,n)=>{if(!t||!Lh(e))return n;let r=Yh(t)?[t]:Qh(t);if(r.some(e=>qh.includes(e)))return n;let i=r.reduce((e,t)=>Fh(e)?void 0:e[t],e);return Xh(i)||i===e?Xh(e[t])?n:e[t]:i},$h=e=>typeof e==`boolean`,eg=e=>typeof e==`function`,tg=(e,t,n)=>{let r=-1,i=Yh(t)?[t]:Qh(t),a=i.length,o=a-1;for(;++r{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==Wh.all&&(t._proxyFormState[i]=!r||Wh.all),n&&(n[i]=!0),e[i]}});return i},ig=Vh?s.useLayoutEffect:s.useEffect,ag=e=>Fh(e)||!Ih(e),og=(e,t)=>t.length===0&&!Array.isArray(e)&&!Bh(e);function sg(e,t,n=new WeakMap){if(e===t)return!0;if(ag(e)||ag(t))return Object.is(e,t);if(Ph(e)&&Ph(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(og(e,r)||og(t,i))return Object.is(e,t);if(!r.length&&Array.isArray(e)!==Array.isArray(t))return!1;let a=n.get(e);if(a&&a.has(t))return!0;if(a)a.add(t);else{let r=new WeakSet;r.add(t),n.set(e,r)}for(let i of r){let r=e[i];if(!(i in t))return!1;if(i!==`ref`){let e=t[i];if(Ph(r)&&Ph(e)||(Lh(r)||Array.isArray(r))&&(Lh(e)||Array.isArray(e))?!sg(r,e,n):!Object.is(r,e))return!1}}return!0}function cg(){let e=s.useRef(!1),t=s.useRef(void 0);return{resyncIfNeeded:s.useCallback((n,r,i)=>{if(n&&e.current){let e=r();sg(t.current,e)||i(e)}e.current=!0},[]),snapshot:s.useCallback((e,n)=>{e&&(t.current=Hh(n()))},[])}}var lg=e=>typeof e==`string`,ug=(e,t,n,r,i)=>lg(e)?(r&&t.watch.add(e),J(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),J(n,e))):(r&&(t.watchAll=!0),n),dg=e=>({isOnSubmit:!e||e===Wh.onSubmit,isOnBlur:e===Wh.onBlur,isOnChange:e===Wh.onChange,isOnAll:e===Wh.all,isOnTouch:e===Wh.onTouched}),fg=(e,t,n)=>{if(n)return!1;if(t.watchAll||t.watch.has(e))return!0;for(let n of t.watch)if(e.startsWith(n)&&e.charAt(n.length)===`.`)return!0;return!1},pg=(e,t,n,r)=>{for(let i of n||Object.keys(e)){if(i===`_f`)continue;let a=n?J(e,i):e[i];if(a){let{_f:e}=a;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(pg(a,t))break}else if((Lh(a)||Array.isArray(a))&&pg(a,t))break}}},mg=(e,t,n)=>{let r=J(e,n),i=Array.isArray(r)?r:[];return tg(i,Kh,t[n]),tg(e,n,i),e},hg=e=>Lh(e)&&!Object.keys(e).length,gg=e=>{if(!Vh)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},_g=e=>e.type===`radio`,vg=e=>e instanceof RegExp,yg=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},bg={value:!1,isValid:!1},xg={value:!0,isValid:!0},Sg=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!Xh(e[0].attributes.value)?Xh(e[0].value)||e[0].value===``?xg:{value:e[0].value,isValid:!0}:xg:bg}return bg},Cg={isValid:!1,value:null},wg=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Cg):Cg;function Tg(e,t,n=`validate`){if(lg(e)||Array.isArray(e)&&e.every(lg)||$h(e)&&!e)return{type:n,message:lg(e)?e:``,ref:t}}var Eg=e=>Lh(e)&&!vg(e)?e:{value:e,message:``},Dg=async(e,t,n,r,i,a)=>{let{ref:o,refs:s,required:c,maxLength:l,minLength:u,min:d,max:f,pattern:p,validate:m,name:h,valueAsNumber:g,mount:_}=e._f,v=J(n,h);if(!_||t.has(h))return{};let y=s?s[0]:o,b=e=>{if(i&&y.reportValidity){let t=$h(e)?``:e||``;s?s.forEach(e=>e.setCustomValidity(t)):y.setCustomValidity(t),y.reportValidity()}},x={},S=_g(o),C=Mh(o),w=S||C,T=(g||Nh(o))&&Xh(o.value)&&Xh(v)||gg(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,E=yg.bind(null,h,r,x),D=(e,t,n,r=Gh.maxLength,i=Gh.minLength)=>{let a=e?t:n;x[h]={type:e?r:i,message:a,ref:o,...E(e?r:i,a)}};if(a?!Array.isArray(v)||!v.length:c&&(!w&&(T||Fh(v))||$h(v)&&!v||C&&!Sg(s).isValid||S&&!wg(s).isValid)){let{value:e,message:t}=lg(c)?{value:!!c,message:c}:Eg(c);if(e&&(x[h]={type:Gh.required,message:t,ref:y,...E(Gh.required,t)},!r))return b(t),x}if(!T&&(!Fh(d)||!Fh(f))){let e,t,n=Eg(f),i=Eg(d);if(!Fh(v)&&!Ph(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;Fh(n.value)||(e=r>n.value),Fh(i.value)||(t=rnew Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;lg(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),lg(i.value)&&v&&(t=s?a(v)+e.value,i=!Fh(t.value)&&v.length<+t.value;if((n||i)&&(D(n,e.message,t.message),!r))return b(x[h].message),x}if(p&&!T&&lg(v)){let{value:e,message:t}=Eg(p);if(vg(e)&&!v.match(e)&&(x[h]={type:Gh.pattern,message:t,ref:o,...E(Gh.pattern,t)},!r))return b(t),x}if(m){if(eg(m)){let e=Tg(await m(v,n),y);if(e&&(x[h]={...e,...E(Gh.validate,e.message)},!r))return b(e.message),x}else if(Lh(m)){let e={};for(let t in m){if(!hg(e)&&!r)break;let i=Tg(await m[t](v,n),y,t);i&&(e={...i,...E(t,i.message)},b(i.message),r&&(x[h]=e))}if(!hg(e)&&(x[h]={ref:y,...e},!r))return x}}return b(!0),x},Og=e=>Array.isArray(e)?e:[e],kg=e=>Array.isArray(e)?e.filter(Boolean):[];function Ag(e,t){let n=t.length-1,r=0;for(;rqh.includes(String(e))))return e;let r=n.length===1?e:Ag(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(Lh(r)&&hg(r)||Array.isArray(r)&&jg(r))&&Mg(e,n.slice(0,-1)),e}var Ng=e=>{let t={};for(let n of Object.keys(e))if(Ih(e[n])&&e[n]!==null&&!Ph(e[n])){let r=Ng(e[n]);for(let e of Object.keys(r))t[`${n}.${e}`]=r[e]}else t[n]=e[n];return t},Pg=s.createContext(null);Pg.displayName=`HookFormContext`;var Fg=({children:e,watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:c,trigger:l,formState:u,resetField:d,reset:f,resetDefaultValues:p,handleSubmit:m,unregister:h,control:g,register:_,setFocus:v,subscribe:y})=>{let b=s.useMemo(()=>({watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:c,trigger:l,formState:u,resetField:d,reset:f,resetDefaultValues:p,handleSubmit:m,unregister:h,control:g,register:_,setFocus:v,subscribe:y}),[a,g,u,r,n,m,_,f,p,d,i,v,o,c,y,l,h,t]);return s.createElement(Pg.Provider,{value:b},s.createElement(ng.Provider,{value:b.control},e))},Ig=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function Lg(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&Lh(i)&&a){let e=Lg(i,a);Lh(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Rg=e=>e.type===`select-multiple`,zg=e=>_g(e)||Mh(e),Bg=e=>gg(e)&&e.isConnected;function Vg(e){return Array.isArray(e)||Lh(e)}function Hg(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];Vg(o)&&Vg(J(t,a))?Hg(o,t,a,r):r.push(a)}return r}var Ug=e=>{for(let t in e)if(eg(e[t]))return!0;return!1};function Wg(e){return Array.isArray(e)||Lh(e)&&!Ug(e)}function Gg(e){return!!(e&&`_f`in e)}function Kg(e){return Array.isArray(e)?!e.some(e=>!Xh(e)):!Object.keys(e).length}function qg(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function Jg(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];Wg(i)&&(!Array.isArray(i)||!Gg(a))?(t[r]=Array.isArray(i)?[]:{},Jg(i,t[r],a),Kg(t[r])&&qg(t,r)):Xh(i)||(t[r]=!0)}return t}function Yg(e,t,n,r){n||=Jg(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];Wg(a)&&(!Array.isArray(a)||!Gg(o))?(Xh(t)||ag(n[i])?n[i]=Jg(a,Array.isArray(a)?[]:{},o):Yg(a,Fh(t)?{}:t[i],n[i],o),Kg(n[i])&&qg(n,i)):sg(a,t[i])?qg(n,i):n[i]=!0}return n}var Xg=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>Xh(e)?e:t?e===``?NaN:e&&+e:n&&lg(e)?new Date(e):r?r(e):e;function Zg(e){let t=e.ref;return Nh(t)?t.files:_g(t)?wg(e.refs).value:Rg(t)?[...t.selectedOptions].map(({value:e})=>e):Mh(t)?Sg(e.refs).value:Xg(t.value,e)}var Qg=(e,t,n,r)=>{let i={};for(let n of e){let e=J(t,n);e&&tg(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},$g=e=>Xh(e)?e:vg(e)?e.source:Lh(e)?vg(e.value)?e.value.source:e.value:e,e_=`AsyncFunction`,t_=e=>{if(!e||!e.validate)return!1;if(eg(e.validate))return e.validate.constructor.name===e_;if(Lh(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===e_)return!0}return!1},n_=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function r_(e,t,n){let r=J(e,n);if(r||Yh(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=J(t,r),o=J(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var i_=(e,t,n,r)=>{n(e);let i=Object.keys(e).filter(e=>e!==`name`);return!i.length||r&&i.length>=Object.keys(t).length||i.find(e=>t[e]===(!r||Wh.all))},a_=(e,t,n)=>!e||!t||e===t||Og(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),o_=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:!(n?r.isOnChange:i.isOnChange)||e,s_=(e,t)=>{let n=J(e,t);!kg(n).length&&!n?.root&&Mg(e,t)},c_={mode:Wh.onSubmit,reValidateMode:Wh.onChange,shouldFocusError:!0},l_=`form`,u_=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},d_={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function f_(e={}){let t={...c_,...e},n={...Hh(d_),isLoading:eg(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(Lh(t.defaultValues)||Lh(t.values))&&Hh(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:Hh(i),o={action:!1,actionArrayLengths:new Map,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},c={},l={},u=0,d=dg(t.mode),f=dg(t.reValidateMode),p={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},m={...p},h={...m},g={array:Ig(),state:Ig()},_=0,v=t.criteriaMode===Wh.all,y=(e,t)=>n=>{clearTimeout(l[e]),l[e]=setTimeout(t,n)},b=async e=>{if(!o.keepIsValid&&!t.disabled&&(m.isValid||h.isValid||e)){let e=++_,i;t.resolver?(i=hg((await j()).errors),e===_&&x()):i=await P({fields:r,onlyCheckValid:!0,eventType:Uh.VALID}),e===_&&i!==n.isValid&&g.state.next({isValid:i})}},x=(e,r)=>{!t.disabled&&(m.isValidating||m.validatingFields||h.isValidating||h.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?tg(n.validatingFields,e,r):Mg(n.validatingFields,e))}),g.state.next({validatingFields:n.validatingFields,isValidating:!hg(n.validatingFields)}))},S=()=>{n.dirtyFields=Yg(i,a,void 0,r)},C=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,!o.actionArrayLengths.has(e)){let t=J(r,e);o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0)}if(u&&Array.isArray(J(r,e))){let t=s(J(r,e),c.argA,c.argB);l&&tg(r,e,t)}if(u&&Array.isArray(J(n.errors,e))){let t=J(n.errors,e),r=t.root,i=s(t,c.argA,c.argB)||t;r&&(i.root=r),l&&tg(n.errors,e,i),s_(n.errors,e)}if((m.touchedFields||h.touchedFields)&&u&&Array.isArray(J(n.touchedFields,e))){let t=s(J(n.touchedFields,e),c.argA,c.argB);l&&tg(n.touchedFields,e,t)}(m.dirtyFields||h.dirtyFields)&&S(),g.state.next({name:e,isDirty:I(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else tg(a,e,i)},w=(e,t)=>{tg(n.errors,e,t),n.errors={...n.errors},g.state.next({errors:n.errors})},T=e=>{n.errors=e,g.state.next({errors:n.errors,isValid:!1})},E=e=>{let t=Yh(e)?[e]:Qh(e),n=a,r=i;for(let e=0;e{if(!o.actionArrayLengths.size)return!1;let t=Yh(e)?[e]:Qh(e),n=a,r=``,i=-1,s=0;for(let e=0;e=n.length)return i===-1?!1:e!==i||+a{let d=J(r,t);if(d){if(E(t)||D(t))return;let r=Xh(J(a,t)),f=J(a,t,Xh(l)?J(i,t):l);Xh(f)||u&&u.defaultChecked||c?tg(a,t,c?f:Zg(d._f)):z(t,f),o.mount&&!o.action&&(b(),r&&n.isDirty&&(m.isDirty||h.isDirty)&&(I()||(n.isDirty=!1,g.state.next({...n}))),e.shouldUnregister&&r&&!Xh(J(a,t))&&fg(t,s)&&(o.watch=!0))}},k=(e,o,s,c,l)=>{let u=!1,d=!1,f={name:e};if(!t.disabled||c===!0){if(!s||c){let t=sg(J(i,e),o);(m.isDirty||h.isDirty)&&(d=n.isDirty,n.isDirty=f.isDirty=!t||I(),u=d!==f.isDirty),d=!!J(n.dirtyFields,e),t===n.isDirty?t?Mg(n.dirtyFields,e):tg(n.dirtyFields,e,!0):u_(n.dirtyFields,Yg(i,a,void 0,r)),f.dirtyFields=n.dirtyFields,u||=(m.dirtyFields||h.dirtyFields)&&d!==!t}if(s){let t=J(n.touchedFields,e);t||(tg(n.touchedFields,e,s),f.touchedFields=n.touchedFields,u||=(m.touchedFields||h.touchedFields)&&t!==s)}u&&l&&g.state.next(f)}return u?f:{}},A=(e,r,i,a)=>{let o=J(n.errors,e),s=(m.isValid||h.isValid)&&$h(r)&&n.isValid!==r;if(t.delayError&&i?(c[e]=y(e,()=>w(e,i)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e],i?tg(n.errors,e,i):Mg(n.errors,e),n.errors={...n.errors}),(i?!sg(o,i):o)||!hg(a)||s){let t={...a,...s&&$h(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},g.state.next(t)}},j=async e=>(x(e,!0),await t.resolver(a,t.context,Qg(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),M=async e=>{let{errors:t}=await j(e);if(x(e),e){for(let r of e){let e=J(t,r);e?s.array.has(r)&&Lh(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?mg(n.errors,{[r]:e},r):tg(n.errors,r,e):Mg(n.errors,r)}n.errors={...n.errors}}else n.errors=t;return t},N=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(Lh(i))for(let e in i){let t=i[e];t&&ie(`${l_}.${e}`,{message:lg(t.message)?t.message:``,type:t.type||Gh.validate})}else lg(i)||!i?ie(l_,{message:i||``,type:Gh.validate}):G(l_);return i}return!0},P=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await N({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...d}=u;if(r){let o=s.array.has(r.name),c=u._f&&t_(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&x([r.name],!0);let f=await Dg(u,s.disabled,a,v,t.shouldUseNativeValidation&&!i,o);if(c&&d&&x([r.name]),f[r.name]&&(l.valid=!1,i)||(!i&&(J(f,r.name)?o?mg(n.errors,f,r.name):tg(n.errors,r.name,f[r.name]):Mg(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!hg(d)&&await P({context:l,onlyCheckValid:i,fields:d,name:o,eventType:c})}}return l.valid},F=()=>{for(let e of s.unMount){let t=J(r,e);t&&(t._f.refs?t._f.refs.every(e=>!Bg(e)):!Bg(t._f.ref))&&ce(e)}s.unMount=new Set},I=(e,t)=>(e&&t&&tg(a,e,t),!sg(o.mount?a:i,i)),L=(e,t,n)=>ug(e,s,{...o.mount?a:Xh(t)||lg(e)?i:t},n,t),R=e=>kg(J(o.mount?a:i,e,t.shouldUnregister?J(i,e,[]):[])),z=(e,t,n={},i=!1,o=!1,s=!1)=>{let c=J(r,e),l=t;if(c){let n=c._f;n&&(!n.disabled&&tg(a,e,Xg(t,n)),l=gg(n.ref)&&Fh(t)?``:t,Rg(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?Mh(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(e.checked=Array.isArray(l)?!!l.find(t=>t===e.value):l===e.value||!!l)}):n.refs.forEach(e=>e.checked=e.value===l):Nh(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:Hh(a)})))}(n.shouldDirty||n.shouldTouch)&&k(e,l,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&W(e,{delayError:n.delayError})},B=(e,t,n,i=!1,o=!1,c=!1)=>{s.array.has(e)&&g.array.next({name:e,values:i?a:Hh(a)});for(let a in t){if(!t.hasOwnProperty(a))return;let l=t[a],u=e+`.`+a,d=J(r,u);(s.array.has(e)||Lh(l)||d&&!d._f)&&!Ph(l)?B(u,l,n,i,o,c):z(u,l,n,i,o,c)}},V=(e,t,i,c,l=!1)=>{let u=J(r,e),d=s.array.has(e),f=c?t:Hh(t),p=sg(J(a,e),f);if(p||tg(a,e,f),d)g.array.next({name:e,values:c?a:Hh(a)}),(m.isDirty||m.dirtyFields||h.isDirty||h.dirtyFields)&&i.shouldDirty&&(S(),l||g.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:I(e,f)}));else{let t=Array.isArray(f)&&!f.length||hg(f),n=!p&&!l;!u||u._f||Fh(f)||t?z(e,f,i,c,l,n):B(e,f,i,c,l,n)}if(!p&&!l){let t=fg(e,s),r=c?a:Hh(a);g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r})}},H=(e,t,n={})=>V(e,t,n,!1),ee=(e,t={})=>{let r=eg(e)?e(a):e;if(!sg(a,r)){a={...a,...r};let e=Ng(r);for(let n of s.mount)n in e&&V(n,e[n],t,!0,!0);g.state.next({...n,name:void 0,type:void 0,...u?{values:a}:{}}),t.shouldValidate&&b()}},U=async i=>{o.mount=!0;let l=i.target,p=l.name,_=!0,y=J(r,p),S=e=>{_=Number.isNaN(e)||Ph(e)&&isNaN(e.getTime())||sg(e,J(a,p,e))};if(y){let o,C,w=l.type?Zg(y._f):Rh(i),T=i.type===Uh.BLUR||i.type===Uh.FOCUS_OUT,E=!n_(y._f)&&!e.validate&&!t.resolver&&!J(n.errors,p)&&!y._f.deps,D=E||o_(T,J(n.touchedFields,p),n.isSubmitted,f,d),O=fg(p,s,T);if(tg(a,p,w),T){if(!l||!l.readOnly){y._f.onBlur&&y._f.onBlur(i);let e=c[p];e&&e(0)}}else y._f.onChange&&y._f.onChange(i);let M=k(p,w,T),F=!hg(M)||O;if(!T&&g.state.next({name:p,type:i.type,...u?{values:Hh(a)}:{}}),D)return(!E||!n.isValid)&&(m.isValid||h.isValid)&&(t.mode===`onBlur`?T&&b():T||b()),F&&g.state.next({name:p,...O?{}:M});if(!t.resolver&&e.validate&&await N({name:p,eventType:i.type}),!T&&O&&g.state.next({...n}),t.resolver){let{errors:e}=await j([p]);if(x([p]),S(w),!_){!hg(M)&&g.state.next(M);return}let t=r_(n.errors,r,p),i=r_(e,r,t.name||p);o=i.error,p=i.name,C=hg(e)}else x([p],!0),o=(await Dg(y,s.disabled,a,v,t.shouldUseNativeValidation))[p],x([p]),S(w),_&&(o?C=!1:(m.isValid||h.isValid)&&(C=await P({fields:r,onlyCheckValid:!0,name:p,eventType:i.type})));_&&(y._f.deps&&(!Array.isArray(y._f.deps)||y._f.deps.length>0)&&W(y._f.deps),A(p,C,o,M))}},te=(e,t)=>{if(J(n.errors,t)&&e.focus)return e.focus(),1},W=async(e,i={})=>{let a,o,u=Og(e);if(t.resolver){let t=await M(Xh(e)?e:u);a=hg(t),o=e?!u.some(e=>J(t,e)):a}else e?(o=(await Promise.all(u.map(async e=>{let t=J(r,e);return await P({fields:t&&t._f?{[e]:t}:t,eventType:Uh.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&b()):o=a=await P({fields:r,name:e,eventType:Uh.TRIGGER});if(i.delayError&&t.delayError&&lg(e)){let r=J(n.errors,e);r?(Mg(n.errors,e),c[e]=y(e,()=>w(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}return g.state.next({...!lg(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&pg(r,te,e?u:s.mount),o},ne=(e,t)=>{let r={...o.mount?a:i};return t&&(r=Lg(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),Xh(e)?r:lg(e)?J(r,e):e.map(e=>J(r,e))},re=(e,t)=>({invalid:!!J((t||n).errors,e),isDirty:!!J((t||n).dirtyFields,e),error:J((t||n).errors,e),isValidating:!!J(n.validatingFields,e),isTouched:!!J((t||n).touchedFields,e)}),G=e=>{let t=e?Og(e):void 0;t?.forEach(e=>Mg(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},ie=(e,t,i)=>{let a=(J(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=J(n.errors,e)||{};tg(n.errors,e,{...l,...t,ref:a}),g.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},ae=(e,t)=>{if(eg(e)){u++;let{unsubscribe:n}=g.state.subscribe({next:n=>`values`in n&&e(n.values||L(void 0,t),n)}),r=!1;return{unsubscribe:()=>{r||(r=!0,u--,n())}}}return L(e,t,!0)},oe=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(a_(e.name,t.name,e.exact)&&i_(t,e.formState||m,ve,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}});if(!t)return r;let o=!1;return()=>{o||(o=!0,u--,r())}},se=e=>(o.mount=!0,h={...h,...e.formState},oe({...e,formState:{...p,...e.formState}})),ce=(e,o={})=>{for(let c of e?Og(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(Mg(r,c),Mg(a,c)),!o.keepError&&Mg(n.errors,c),!o.keepDirty&&Mg(n.dirtyFields,c),!o.keepTouched&&Mg(n.touchedFields,c),!o.keepIsValidating&&Mg(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&Mg(i,c);g.state.next({values:Hh(a)}),g.state.next({...n,...o.keepDirty?{isDirty:I()}:{}}),!o.keepIsValid&&b()},le=({disabled:e,name:t})=>{if($h(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&b()}},ue=(e,n={})=>{let a=J(r,e),c=$h(n.disabled)||$h(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return tg(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?le({disabled:$h(n.disabled)?n.disabled:t.disabled,name:e}):O(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:$g(n.min),max:$g(n.max),minLength:$g(n.minLength),maxLength:$g(n.maxLength),pattern:$g(n.pattern)}:{},name:e,onChange:U,onBlur:U,ref:c=>{if(c){s.registerName.add(e),ue(e,n),s.registerName.delete(e),a=J(r,e);let t=Xh(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=zg(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;let u={...a._f};o?(u.refs=[...l.filter(Bg),t,...Array.isArray(J(i,e))?[{}]:[]],u.ref={type:t.type,name:e}):(u.ref=t,delete u.refs),tg(r,e,{_f:u}),O(e,!1,void 0,t)}else a=J(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(zh(s.array,e)&&o.action)&&s.unMount.add(e)}}},de=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&pg(r,te,s.mount),fe=e=>{$h(e)&&(g.state.next({disabled:e}),pg(r,(t,n)=>{let i=J(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0,!1))},pe=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=Hh(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await j();x(),n.errors=e,u=Hh(t)}else await P({fields:r,eventType:Uh.SUBMIT});if(s.disabled.size)for(let e of s.disabled)Mg(u,e);if(Mg(n.errors,Kh),hg(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),de(),setTimeout(de);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:hg(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},me=(e,t={})=>{J(r,e)&&(Xh(t.defaultValue)?H(e,Hh(J(i,e))):(H(e,t.defaultValue),tg(i,e,Hh(t.defaultValue))),t.keepTouched||Mg(n.touchedFields,e),t.keepDirty||(Mg(n.dirtyFields,e),n.isDirty=t.defaultValue?I(e,Hh(J(i,e))):I()),t.keepError||(Mg(n.errors,e),m.isValid&&b()),g.state.next({...n}))},he=(e,c={})=>{let l=e?Hh(e):i,u=Hh(l),d=hg(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Hg(Yg(i,a,void 0,p),n.dirtyFields)]);for(let t of Array.from(e)){let e=J(n.dirtyFields,t),r=J(a,t),i=J(f,t);e&&!Xh(r)?tg(f,t,r):!e&&!Xh(i)&&H(t,i)}}else{if(Vh&&Xh(e))for(let e of s.mount){let t=J(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(gg(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)H(e,J(f,e));else r={}}if(t.shouldUnregister){if(a=c.keepDefaultValues?Hh(i):{},c.keepFieldsRef)for(let e of s.mount)tg(a,e,J(f,e))}else a=Hh(f);g.array.next({values:{...f}}),g.state.next({name:void 0,type:void 0,values:{...f}})}s={mount:c.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!m.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!hg(f),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,o.actionArrayLengths.clear(),c.keepErrors||(n.errors={}),g.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:d?!1:c.keepDirty?n.isDirty:c.keepValues?I():!!(c.keepDefaultValues&&!sg(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?Yg(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?Yg(i,e,void 0,p):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},ge=(e,n)=>he(eg(e)?e(a):e,{...t.resetOptions,...n}),_e=(e,t={})=>{let n=J(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&eg(e.select)&&e.select()})}},ve=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:ve});let ye={control:{register:ue,unregister:ce,getFieldState:re,handleSubmit:pe,setError:ie,_subscribe:oe,_runSchema:j,_updateIsValidating:x,_focusError:de,_getWatch:L,_getDirty:I,_setValid:b,_setFieldArray:C,_setDisabledField:le,_setErrors:T,_getFieldArray:R,_reset:he,_resetDefaultValues:()=>eg(t.defaultValues)&&t.defaultValues().then(e=>{ge(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:F,_disableForm:fe,_subjects:g,_proxyFormState:m,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e},d=dg(t.mode),f=dg(t.reValidateMode)}},subscribe:se,trigger:W,register:ue,handleSubmit:pe,watch:ae,setValue:H,setValues:ee,getValues:ne,reset:ge,resetField:me,resetDefaultValues:(e,t={})=>{if(i=Hh(e),!t.keepDirty){let e=Yg(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!hg(e)}t.keepIsValid||b(),g.state.next({...n,defaultValues:i})},clearErrors:G,unregister:ce,setError:ie,setFocus:_e,getFieldState:re};return{...ye,formControl:ye}}function p_(e={}){let t=s.useRef(void 0),n=s.useRef(void 0),r=s.useRef(e.formControl),[i,a]=s.useState(()=>({...Hh(d_),isLoading:eg(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:eg(e.defaultValues)?void 0:e.defaultValues}));if(!t.current||e.formControl&&r.current!==e.formControl){if(r.current=e.formControl,e.formControl)t.current={...e.formControl,formState:i},e.defaultValues&&!eg(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=f_(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:c,snapshot:l}=cg();return ig(()=>{let e=()=>({...o._formState,defaultValues:o._defaultValues});c(!0,e,a);let t=o._subscribe({formState:o._proxyFormState,callback:()=>a({...o._formState,defaultValues:o._defaultValues}),reRenderRoot:!0});return a(e=>({...e,isReady:!0})),o._formState.isReady=!0,()=>{t(),l(!0,e)}},[o,c,l]),s.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),s.useEffect(()=>{e.mode&&(o._options.mode=e.mode),e.reValidateMode&&(o._options.reValidateMode=e.reValidateMode)},[o,e.mode,e.reValidateMode]),s.useEffect(()=>{e.errors&&(o._setErrors(e.errors),o._focusError())},[o,e.errors]),s.useEffect(()=>{e.shouldUnregister&&o._subjects.state.next({values:o._getWatch()})},[o,e.shouldUnregister]),s.useEffect(()=>{if(o._proxyFormState.isDirty){let e=o._getDirty();e!==i.isDirty&&o._subjects.state.next({isDirty:e})}},[o,i.isDirty]),s.useEffect(()=>{e.values&&!sg(e.values,n.current)?(o._reset(e.values,{keepFieldsRef:!0,...o._options.resetOptions}),o._options.resetOptions?.keepIsValid||o._setValid(),n.current=e.values,a(e=>({...e}))):o._resetDefaultValues()},[o,e.values]),s.useEffect(()=>{o._state.mount||(o._setValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),t.current.formState=s.useMemo(()=>rg(i,o),[o,i]),t.current}var m_=(e,t,n)=>{if(e&&`reportValidity`in e){let r=J(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},h_=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?m_(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>m_(t,n,e))}},g_=(e,t)=>{t.shouldUseNativeValidation&&h_(e,t);let n={};for(let r in e){let i=J(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.refs?i.refs[0]:i&&i.ref});if(__(t.names||Object.keys(e),r)){let e=Object.assign({},J(n,r));tg(e,`root`,a),tg(n,r,e)}else tg(n,r,a)}return n},__=(e,t)=>{let n=v_(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>v_(e).match(`^${n}\\.\\d+`))};function v_(e){return e.replace(/[\[\]]/g,``)}function y_(){return y_=Object.assign?Object.assign.bind():function(e){for(var t=1;t0){var s=r.errors.reduce(function(e,t){return t.lengthe([...w_]))}function Y(e,t=``,n=`success`){let r=`${n}:${e}:${t}`;if(w_.some(e=>e.toastKey===r))return;let i={key:++T_,toastKey:r,title:e,message:t,type:n};w_=[...w_,i],D_(),window.setTimeout(()=>{w_=w_.filter(e=>e.key!==i.key),D_()},n===`error`?7e3:3600)}function O_(){let[e,t]=(0,s.useState)(w_);return(0,s.useEffect)(()=>{let e=e=>t(e);return E_.add(e),()=>{E_.delete(e)}},[]),(0,K.jsx)(`div`,{className:`toast-region`,"aria-live":`polite`,"aria-atomic":`true`,children:e.map(e=>(0,K.jsxs)(`div`,{className:`toast ${e.type}`,children:[e.type===`error`?(0,K.jsx)(U,{size:15}):(0,K.jsx)(z,{size:15}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:e.title}),e.message?(0,K.jsx)(`p`,{children:e.message}):null]})]},e.key))})}var k_=n(((e,t)=>{var n=!1,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;function v(){if(!n){n=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),v=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(m=/\b(iPhone|iP[ao]d)/.exec(e),h=/\b(iP[ao]d)/.exec(e),f=/Android/i.exec(e),g=/FBAN\/\w+;/i.exec(e),_=/Mobile/i.exec(e),p=!!/Win64/.exec(e),t){r=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,r&&document&&document.documentMode&&(r=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);c=y?parseFloat(y[1])+4:r,i=t[2]?parseFloat(t[2]):NaN,a=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),s=t&&t[1]?parseFloat(t[1]):NaN):s=NaN}else r=i=a=s=o=NaN;if(v){if(v[1]){var b=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!b||parseFloat(b[1].replace(`_`,`.`))}else l=!1;u=!!v[2],d=!!v[3]}else l=u=d=!1}}var y={ie:function(){return v()||r},ieCompatibilityMode:function(){return v()||c>r},ie64:function(){return y.ie()&&p},firefox:function(){return v()||i},opera:function(){return v()||a},webkit:function(){return v()||o},safari:function(){return y.webkit()},chrome:function(){return v()||s},windows:function(){return v()||u},osx:function(){return v()||l},linux:function(){return v()||d},iphone:function(){return v()||m},mobile:function(){return v()||m||h||f||_},nativeApp:function(){return v()||g},android:function(){return v()||f},ipad:function(){return v()||h}};t.exports=y})),A_=n(((e,t)=>{var n=!!(typeof window<`u`&&window.document&&window.document.createElement);t.exports={canUseDOM:n,canUseWorkers:typeof Worker<`u`,canUseEventListeners:n&&!!(window.addEventListener||window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n}})),j_=n(((e,t)=>{var n=A_(),r;n.canUseDOM&&(r=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(``,``)!==!0);function i(e,t){if(!n.canUseDOM||t&&!(`addEventListener`in document))return!1;var i=`on`+e,a=i in document;if(!a){var o=document.createElement(`div`);o.setAttribute(i,`return;`),a=typeof o[i]==`function`}return!a&&r&&e===`wheel`&&(a=document.implementation.hasFeature(`Events.wheel`,`3.0`)),a}t.exports=i})),M_=n(((e,t)=>{var n=k_(),r=j_(),i=10,a=40,o=800;function s(e){var t=0,n=0,r=0,s=0;return`detail`in e&&(n=e.detail),`wheelDelta`in e&&(n=-e.wheelDelta/120),`wheelDeltaY`in e&&(n=-e.wheelDeltaY/120),`wheelDeltaX`in e&&(t=-e.wheelDeltaX/120),`axis`in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*i,s=n*i,`deltaY`in e&&(s=e.deltaY),`deltaX`in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode==1?(r*=a,s*=a):(r*=o,s*=o)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:s}}s.getEventType=function(){return n.firefox()?`DOMMouseScroll`:r(`wheel`)?`wheel`:`mousewheel`},t.exports=s})),N_=t(n(((e,t)=>{t.exports=M_()}))(),1);function P_(e,t,n,r,i,a){a===void 0&&(a=0);var o=J_(e,t,a),s=o.width,c=o.height,l=Math.min(s,n),u=Math.min(c,r);return l>u*i?{width:u*i,height:u}:{width:l,height:l/i}}function F_(e){return e.width>e.height?e.width/e.naturalWidth:e.height/e.naturalHeight}function I_(e,t,n,r,i){i===void 0&&(i=0);var a=J_(t.width,t.height,i),o=a.width,s=a.height;return{x:L_(e.x,o,n.width,r),y:L_(e.y,s,n.height,r)}}function L_(e,t,n,r){var i=Math.abs(t*r/2-n/2);return Y_(e,-i,i)}function R_(e,t){return Math.sqrt((e.y-t.y)**2+(e.x-t.x)**2)}function z_(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function B_(e,t,n,r,i,a,o){a===void 0&&(a=0),o===void 0&&(o=!0);var s=o?V_:H_,c=J_(t.width,t.height,a),l=J_(t.naturalWidth,t.naturalHeight,a),u={x:s(100,((c.width-n.width/i)/2-e.x/i)/c.width*100),y:s(100,((c.height-n.height/i)/2-e.y/i)/c.height*100),width:s(100,n.width/c.width*100/i),height:s(100,n.height/c.height*100/i)},d=Math.round(s(l.width,u.width*l.width/100)),f=Math.round(s(l.height,u.height*l.height/100)),p=l.width>=l.height*r?{width:Math.round(f*r),height:f}:{width:d,height:Math.round(d/r)};return{croppedAreaPercentages:u,croppedAreaPixels:xr(xr({},p),{x:Math.round(s(l.width-p.width,u.x*l.width/100)),y:Math.round(s(l.height-p.height,u.y*l.height/100))})}}function V_(e,t){return Math.min(e,Math.max(0,t))}function H_(e,t){return t}function U_(e,t,n,r,i,a){var o=J_(t.width,t.height,n),s=Y_(r.width/o.width*(100/e.width),i,a);return{crop:{x:s*o.width/2-r.width/2-o.width*s*(e.x/100),y:s*o.height/2-r.height/2-o.height*s*(e.y/100)},zoom:s}}function W_(e,t,n){var r=F_(t);return n.height>n.width?n.height/(e.height*r):n.width/(e.width*r)}function G_(e,t,n,r,i,a){n===void 0&&(n=0);var o=J_(t.naturalWidth,t.naturalHeight,n),s=Y_(W_(e,t,r),i,a),c=r.height>r.width?r.height/e.height:r.width/e.width;return{crop:{x:((o.width-e.width)/2-e.x)*c,y:((o.height-e.height)/2-e.y)*c},zoom:s}}function K_(e,t){return{x:(t.x+e.x)/2,y:(t.y+e.y)/2}}function q_(e){return e*Math.PI/180}function J_(e,t,n){var r=q_(n);return{width:Math.abs(Math.cos(r)*e)+Math.abs(Math.sin(r)*t),height:Math.abs(Math.sin(r)*e)+Math.abs(Math.cos(r)*t)}}function Y_(e,t,n){return Math.min(Math.max(e,t),n)}function X_(){return[...arguments].filter(function(e){return typeof e==`string`&&e.length>0}).join(` `).trim()}var Z_=`.reactEasyCrop_Container {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- overflow: hidden;
- user-select: none;
- touch-action: none;
- cursor: move;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.reactEasyCrop_Image,
-.reactEasyCrop_Video {
- will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */
-}
-
-.reactEasyCrop_Contain {
- max-width: 100%;
- max-height: 100%;
- margin: auto;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
-}
-.reactEasyCrop_Cover_Horizontal {
- width: 100%;
- height: auto;
-}
-.reactEasyCrop_Cover_Vertical {
- width: auto;
- height: 100%;
-}
-
-.reactEasyCrop_CropArea {
- position: absolute;
- left: 50%;
- top: 50%;
- transform: translate(-50%, -50%);
- border: 1px solid rgba(255, 255, 255, 0.5);
- box-sizing: border-box;
- box-shadow: 0 0 0 9999em;
- color: rgba(0, 0, 0, 0.5);
- overflow: hidden;
-}
-
-.reactEasyCrop_CropAreaRound {
- border-radius: 50%;
-}
-
-.reactEasyCrop_CropAreaGrid::before {
- content: ' ';
- box-sizing: border-box;
- position: absolute;
- border: 1px solid rgba(255, 255, 255, 0.5);
- top: 0;
- bottom: 0;
- left: 33.33%;
- right: 33.33%;
- border-top: 0;
- border-bottom: 0;
-}
-
-.reactEasyCrop_CropAreaGrid::after {
- content: ' ';
- box-sizing: border-box;
- position: absolute;
- border: 1px solid rgba(255, 255, 255, 0.5);
- top: 33.33%;
- bottom: 33.33%;
- left: 0;
- right: 0;
- border-left: 0;
- border-right: 0;
-}
-`,Q_=1,$_=3,ev=1,tv=function(e){br(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.cropperRef=s.createRef(),n.imageRef=s.createRef(),n.videoRef=s.createRef(),n.containerPosition={x:0,y:0},n.containerRef=null,n.styleRef=null,n.containerRect=null,n.mediaSize={width:0,height:0,naturalWidth:0,naturalHeight:0},n.dragStartPosition={x:0,y:0},n.dragStartCrop={x:0,y:0},n.gestureZoomStart=0,n.gestureRotationStart=0,n.isTouching=!1,n.lastPinchDistance=0,n.lastPinchRotation=0,n.rafDragTimeout=null,n.rafPinchTimeout=null,n.wheelTimer=null,n.currentDoc=typeof document<`u`?document:null,n.currentWindow=typeof window<`u`?window:null,n.resizeObserver=null,n.previousCropSize=null,n.isInitialized=!1,n.state={cropSize:null,hasWheelJustStarted:!1,mediaObjectFit:void 0},n.initResizeObserver=function(){if(!(window.ResizeObserver===void 0||!n.containerRef)){var e=!0;n.resizeObserver=new window.ResizeObserver(function(t){if(e){e=!1;return}n.computeSizes()}),n.resizeObserver.observe(n.containerRef)}},n.preventZoomSafari=function(e){return e.preventDefault()},n.cleanEvents=function(){n.currentDoc&&(n.currentDoc.removeEventListener(`mousemove`,n.onMouseMove),n.currentDoc.removeEventListener(`mouseup`,n.onDragStopped),n.currentDoc.removeEventListener(`touchmove`,n.onTouchMove),n.currentDoc.removeEventListener(`touchend`,n.onDragStopped),n.currentDoc.removeEventListener(`gesturechange`,n.onGestureChange),n.currentDoc.removeEventListener(`gestureend`,n.onGestureEnd),n.currentDoc.removeEventListener(`scroll`,n.onScroll))},n.clearScrollEvent=function(){n.containerRef&&n.containerRef.removeEventListener(`wheel`,n.onWheel),n.wheelTimer&&clearTimeout(n.wheelTimer)},n.onMediaLoad=function(){var e=n.computeSizes();e&&(n.previousCropSize=e,n.emitCropData(),n.setInitialCrop(e),n.isInitialized=!0),n.props.onMediaLoaded&&n.props.onMediaLoaded(n.mediaSize)},n.setInitialCrop=function(e){if(n.props.initialCroppedAreaPercentages){var t=U_(n.props.initialCroppedAreaPercentages,n.mediaSize,n.props.rotation,e,n.props.minZoom,n.props.maxZoom),r=t.crop,i=t.zoom;n.props.onCropChange(r),n.props.onZoomChange&&n.props.onZoomChange(i)}else if(n.props.initialCroppedAreaPixels){var a=G_(n.props.initialCroppedAreaPixels,n.mediaSize,n.props.rotation,e,n.props.minZoom,n.props.maxZoom),r=a.crop,i=a.zoom;n.props.onCropChange(r),n.props.onZoomChange&&n.props.onZoomChange(i)}},n.computeSizes=function(){var e=n.imageRef.current||n.videoRef.current;if(e&&n.containerRef){n.containerRect=n.containerRef.getBoundingClientRect(),n.saveContainerPosition();var t=n.containerRect.width/n.containerRect.height,r=n.imageRef.current?.naturalWidth||n.videoRef.current?.videoWidth||0,i=n.imageRef.current?.naturalHeight||n.videoRef.current?.videoHeight||0,a=e.offsetWidtho?{width:n.containerRect.height*o,height:n.containerRect.height}:{width:n.containerRect.width,height:n.containerRect.width/o};break;case`horizontal-cover`:s={width:n.containerRect.width,height:n.containerRect.width/o};break;case`vertical-cover`:s={width:n.containerRect.height*o,height:n.containerRect.height}}else s={width:e.offsetWidth,height:e.offsetHeight};n.mediaSize=xr(xr({},s),{naturalWidth:r,naturalHeight:i}),n.props.setMediaSize&&n.props.setMediaSize(n.mediaSize);var c=n.props.cropSize?n.props.cropSize:P_(n.mediaSize.width,n.mediaSize.height,n.containerRect.width,n.containerRect.height,n.props.aspect,n.props.rotation);return(n.state.cropSize?.height!==c.height||n.state.cropSize?.width!==c.width)&&n.props.onCropSizeChange&&n.props.onCropSizeChange(c),n.setState({cropSize:c},n.recomputeCropPosition),n.props.setCropSize&&n.props.setCropSize(c),c}},n.saveContainerPosition=function(){if(n.containerRef){var e=n.containerRef.getBoundingClientRect();n.containerPosition={x:e.left,y:e.top}}},n.onMouseDown=function(e){n.currentDoc&&(e.preventDefault(),n.currentDoc.addEventListener(`mousemove`,n.onMouseMove),n.currentDoc.addEventListener(`mouseup`,n.onDragStopped),n.saveContainerPosition(),n.onDragStart(t.getMousePoint(e)))},n.onMouseMove=function(e){return n.onDrag(t.getMousePoint(e))},n.onScroll=function(e){n.currentDoc&&(e.preventDefault(),n.saveContainerPosition())},n.onTouchStart=function(e){n.currentDoc&&(n.isTouching=!0,!(n.props.onTouchRequest&&!n.props.onTouchRequest(e))&&(n.currentDoc.addEventListener(`touchmove`,n.onTouchMove,{passive:!1}),n.currentDoc.addEventListener(`touchend`,n.onDragStopped),n.saveContainerPosition(),e.touches.length===2?n.onPinchStart(e):e.touches.length===1&&n.onDragStart(t.getTouchPoint(e.touches[0]))))},n.onTouchMove=function(e){e.preventDefault(),e.touches.length===2?n.onPinchMove(e):e.touches.length===1&&n.onDrag(t.getTouchPoint(e.touches[0]))},n.onGestureStart=function(e){n.currentDoc&&(e.preventDefault(),n.currentDoc.addEventListener(`gesturechange`,n.onGestureChange),n.currentDoc.addEventListener(`gestureend`,n.onGestureEnd),n.gestureZoomStart=n.props.zoom,n.gestureRotationStart=n.props.rotation)},n.onGestureChange=function(e){if(e.preventDefault(),!n.isTouching){var r=t.getMousePoint(e),i=n.gestureZoomStart-1+e.scale;if(n.setNewZoom(i,r,{shouldUpdatePosition:!0}),n.props.onRotationChange){var a=n.gestureRotationStart+e.rotation;n.props.onRotationChange(a)}}},n.onGestureEnd=function(e){n.cleanEvents()},n.onDragStart=function(e){var t,r;n.dragStartPosition={x:e.x,y:e.y},n.dragStartCrop=xr({},n.props.crop),(r=(t=n.props).onInteractionStart)==null||r.call(t)},n.onDrag=function(e){var t=e.x,r=e.y;n.currentWindow&&(n.rafDragTimeout&&n.currentWindow.cancelAnimationFrame(n.rafDragTimeout),n.rafDragTimeout=n.currentWindow.requestAnimationFrame(function(){if(n.state.cropSize&&t!==void 0&&r!==void 0){var e=t-n.dragStartPosition.x,i=r-n.dragStartPosition.y,a={x:n.dragStartCrop.x+e,y:n.dragStartCrop.y+i},o=n.props.restrictPosition?I_(a,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):a;n.props.onCropChange(o)}}))},n.onDragStopped=function(){var e,t;n.isTouching=!1,n.cleanEvents(),n.emitCropData(),(t=(e=n.props).onInteractionEnd)==null||t.call(e)},n.onWheel=function(e){if(n.currentWindow&&!(n.props.onWheelRequest&&!n.props.onWheelRequest(e))){e.preventDefault();var r=t.getMousePoint(e),i=(0,N_.default)(e).pixelY,a=n.props.zoom-i*n.props.zoomSpeed/200;n.setNewZoom(a,r,{shouldUpdatePosition:!0}),n.state.hasWheelJustStarted||n.setState({hasWheelJustStarted:!0},function(){var e;return(e=n.props).onInteractionStart?.call(e)}),n.wheelTimer&&clearTimeout(n.wheelTimer),n.wheelTimer=n.currentWindow.setTimeout(function(){return n.setState({hasWheelJustStarted:!1},function(){var e;return(e=n.props).onInteractionEnd?.call(e)})},250)}},n.getPointOnContainer=function(e,t){var r=e.x,i=e.y;if(!n.containerRect)throw Error(`The Cropper is not mounted`);return{x:n.containerRect.width/2-(r-t.x),y:n.containerRect.height/2-(i-t.y)}},n.getPointOnMedia=function(e){var t=e.x,r=e.y,i=n.props,a=i.crop,o=i.zoom;return{x:(t+a.x)/o,y:(r+a.y)/o}},n.setNewZoom=function(e,t,r){var i=(r===void 0?{}:r).shouldUpdatePosition,a=i===void 0||i;if(!(!n.state.cropSize||!n.props.onZoomChange)){var o=Y_(e,n.props.minZoom,n.props.maxZoom);if(a){var s=n.getPointOnContainer(t,n.containerPosition),c=n.getPointOnMedia(s),l={x:c.x*o-s.x,y:c.y*o-s.y},u=n.props.restrictPosition?I_(l,n.mediaSize,n.state.cropSize,o,n.props.rotation):l;n.props.onCropChange(u)}n.props.onZoomChange(o)}},n.getCropData=function(){return n.state.cropSize?B_(n.props.restrictPosition?I_(n.props.crop,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):n.props.crop,n.mediaSize,n.state.cropSize,n.getAspect(),n.props.zoom,n.props.rotation,n.props.restrictPosition):null},n.emitCropData=function(){var e=n.getCropData();if(e){var t=e.croppedAreaPercentages,r=e.croppedAreaPixels;n.props.onCropComplete&&n.props.onCropComplete(t,r),n.props.onCropAreaChange&&n.props.onCropAreaChange(t,r)}},n.emitCropAreaChange=function(){var e=n.getCropData();if(e){var t=e.croppedAreaPercentages,r=e.croppedAreaPixels;n.props.onCropAreaChange&&n.props.onCropAreaChange(t,r)}},n.recomputeCropPosition=function(){if(n.state.cropSize){var e=n.props.crop;if(n.isInitialized&&n.previousCropSize?.width&&n.previousCropSize?.height&&(Math.abs(n.previousCropSize.width-n.state.cropSize.width)>1e-6||Math.abs(n.previousCropSize.height-n.state.cropSize.height)>1e-6)){var t=n.state.cropSize.width/n.previousCropSize.width,r=n.state.cropSize.height/n.previousCropSize.height;e={x:n.props.crop.x*t,y:n.props.crop.y*r}}var i=n.props.restrictPosition?I_(e,n.mediaSize,n.state.cropSize,n.props.zoom,n.props.rotation):e;n.previousCropSize=n.state.cropSize,n.props.onCropChange(i),n.emitCropData()}},n.onKeyDown=function(e){var t,r,i=n.props,a=i.crop,o=i.onCropChange,s=i.keyboardStep,c=i.zoom,l=i.rotation,u=s;if(n.state.cropSize){e.shiftKey&&(u*=.2);var d=xr({},a);switch(e.key){case`ArrowUp`:d.y-=u,e.preventDefault();break;case`ArrowDown`:d.y+=u,e.preventDefault();break;case`ArrowLeft`:d.x-=u,e.preventDefault();break;case`ArrowRight`:d.x+=u,e.preventDefault();break;default:return}n.props.restrictPosition&&(d=I_(d,n.mediaSize,n.state.cropSize,c,l)),e.repeat||(r=(t=n.props).onInteractionStart)==null||r.call(t),o(d)}},n.onKeyUp=function(e){var t,r;switch(e.key){case`ArrowUp`:case`ArrowDown`:case`ArrowLeft`:case`ArrowRight`:e.preventDefault();break;default:return}n.emitCropData(),(r=(t=n.props).onInteractionEnd)==null||r.call(t)},n}return t.prototype.componentDidMount=function(){!this.currentDoc||!this.currentWindow||(this.containerRef&&(this.containerRef.ownerDocument&&(this.currentDoc=this.containerRef.ownerDocument),this.currentDoc.defaultView&&(this.currentWindow=this.currentDoc.defaultView),this.initResizeObserver(),window.ResizeObserver===void 0&&this.currentWindow.addEventListener(`resize`,this.computeSizes),this.props.zoomWithScroll&&this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}),this.containerRef.addEventListener(`gesturestart`,this.onGestureStart)),this.currentDoc.addEventListener(`scroll`,this.onScroll),this.props.disableAutomaticStylesInjection||(this.styleRef=this.currentDoc.createElement(`style`),this.styleRef.setAttribute(`type`,`text/css`),this.props.nonce&&this.styleRef.setAttribute(`nonce`,this.props.nonce),this.styleRef.innerHTML=Z_,this.currentDoc.head.appendChild(this.styleRef)),this.imageRef.current&&this.imageRef.current.complete&&this.onMediaLoad(),this.props.setImageRef&&this.props.setImageRef(this.imageRef),this.props.setVideoRef&&this.props.setVideoRef(this.videoRef),this.props.setCropperRef&&this.props.setCropperRef(this.cropperRef))},t.prototype.componentWillUnmount=function(){var e,t;!this.currentDoc||!this.currentWindow||(window.ResizeObserver===void 0&&this.currentWindow.removeEventListener(`resize`,this.computeSizes),(e=this.resizeObserver)==null||e.disconnect(),this.containerRef&&this.containerRef.removeEventListener(`gesturestart`,this.preventZoomSafari),this.styleRef&&((t=this.styleRef.parentNode)==null||t.removeChild(this.styleRef)),this.cleanEvents(),this.props.zoomWithScroll&&this.clearScrollEvent())},t.prototype.componentDidUpdate=function(e){var t;e.rotation===this.props.rotation?e.aspect===this.props.aspect&&e.objectFit===this.props.objectFit?e.zoom===this.props.zoom?e.cropSize?.height!==this.props.cropSize?.height||e.cropSize?.width!==this.props.cropSize?.width?this.computeSizes():(e.crop?.x!==this.props.crop?.x||e.crop?.y!==this.props.crop?.y)&&this.emitCropAreaChange():this.recomputeCropPosition():this.computeSizes():(this.computeSizes(),this.recomputeCropPosition()),e.zoomWithScroll!==this.props.zoomWithScroll&&this.containerRef&&(this.props.zoomWithScroll?this.containerRef.addEventListener(`wheel`,this.onWheel,{passive:!1}):this.clearScrollEvent()),e.video!==this.props.video&&((t=this.videoRef.current)==null||t.load());var n=this.getObjectFit();n!==this.state.mediaObjectFit&&this.setState({mediaObjectFit:n},this.computeSizes)},t.prototype.getAspect=function(){var e=this.props,t=e.cropSize,n=e.aspect;return t?t.width/t.height:n},t.prototype.getObjectFit=function(){if(this.props.objectFit===`cover`){if((this.imageRef.current||this.videoRef.current)&&this.containerRef){this.containerRect=this.containerRef.getBoundingClientRect();var e=this.containerRect.width/this.containerRect.height;return(this.imageRef.current?.naturalWidth||this.videoRef.current?.videoWidth||0)/(this.imageRef.current?.naturalHeight||this.videoRef.current?.videoHeight||0)r.toBlob(e,`image/webp`,.9));if(!a)throw Error(`头像裁剪失败,请更换图片后重试`);return a}function sv({name:e,appearance:t,disabled:n=!1,onSave:r}){let[i,a]=(0,s.useState)(()=>iv(t)),[o,c]=(0,s.useState)(null),[l,u]=(0,s.useState)({x:0,y:0}),[d,f]=(0,s.useState)(1),[p,m]=(0,s.useState)(null),[h,_]=(0,s.useState)(!1),[v,y]=(0,s.useState)(!1),[b,x]=(0,s.useState)(``),S=(0,s.useRef)(null);(0,s.useEffect)(()=>a(iv(t)),[t]),(0,s.useEffect)(()=>()=>{o&&URL.revokeObjectURL(o)},[o]);let C=iv(t),w=i.icon!==C.icon||i.color!==C.color||i.imageUrl!==C.imageUrl;function T(e){if(x(``),e){if(![`image/png`,`image/webp`].includes(e.type)){x(`仅支持 PNG 或 WebP 图片`);return}if(e.size>2097152){x(`头像文件不能超过 2 MiB`);return}u({x:0,y:0}),f(1),m(null),c(URL.createObjectURL(e))}}async function E(){if(!(!o||!p||h)){_(!0),x(``);try{let e=await ov(o,p),t=await g(`/api/v1/assets/agent-avatars`,{method:`POST`,headers:{"Content-Type":e.type},body:e}),n=await t.json().catch(()=>null);if(!t.ok)throw Error(n?.error?.message||`头像上传失败(${t.status})`);a(e=>({...e,imageUrl:n.url})),c(null)}catch(e){x(e instanceof Error?e.message:`头像上传失败`)}finally{_(!1)}}}async function D(){if(!(!w||v||n)){y(!0),x(``);try{await r(i)}catch(e){x(e instanceof Error?e.message:`外观保存失败`)}finally{y(!1)}}}return(0,K.jsxs)(`section`,{className:`agent-appearance-editor`,"aria-label":`Agent 外观`,children:[(0,K.jsxs)(`div`,{className:`agent-appearance-preview`,children:[(0,K.jsx)(_t,{name:e,appearance:i,size:`lg`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`strong`,{children:`Agent 外观`}),(0,K.jsx)(`span`,{children:`用于列表、会话和 Trace;不会写入模型提示词。`})]})]}),(0,K.jsxs)(`div`,{className:`agent-appearance-controls`,children:[(0,K.jsxs)(`div`,{className:`appearance-choice-group`,role:`group`,"aria-label":`头像图标`,children:[(0,K.jsx)(`span`,{children:`图标`}),(0,K.jsx)(`div`,{children:nv.map(e=>(0,K.jsx)(`button`,{className:i.icon===e.id&&!i.imageUrl?`active`:``,type:`button`,"aria-label":`使用 ${e.label} 图标`,"aria-pressed":i.icon===e.id&&!i.imageUrl,disabled:n,onClick:()=>a(t=>({...t,icon:e.id,imageUrl:null})),children:(0,K.jsx)(e.icon,{size:16})},e.id))})]}),(0,K.jsxs)(`div`,{className:`appearance-choice-group color`,role:`group`,"aria-label":`头像配色`,children:[(0,K.jsx)(`span`,{children:`配色`}),(0,K.jsx)(`div`,{children:rv.map(e=>(0,K.jsx)(`button`,{className:i.color===e.value?`active`:``,type:`button`,"aria-label":`使用${e.label}配色`,"aria-pressed":i.color===e.value,disabled:n,style:{"--appearance-swatch":e.value},onClick:()=>a(t=>({...t,color:e.value}))},e.value))})]})]}),(0,K.jsxs)(`div`,{className:`agent-appearance-actions`,children:[(0,K.jsx)(`input`,{ref:S,className:`sr-only`,type:`file`,accept:`image/png,image/webp`,"aria-label":`选择 Agent 头像图片`,disabled:n,onChange:e=>{T(e.target.files?.[0]),e.target.value=``}}),(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:n,onClick:()=>S.current?.click(),children:[(0,K.jsx)(Ee,{size:14}),(0,K.jsx)(`span`,{children:`上传图片`})]}),i.imageUrl?(0,K.jsxs)(`button`,{className:`button tertiary small`,type:`button`,disabled:n,onClick:()=>a(e=>({...e,imageUrl:null})),children:[(0,K.jsx)(lt,{size:14}),(0,K.jsx)(`span`,{children:`移除图片`})]}):null,(0,K.jsx)(`button`,{className:`button secondary small`,type:`button`,disabled:n||v||!w,onClick:D,children:v?`正在保存`:`保存外观`})]}),b?(0,K.jsx)(`p`,{className:`studio-field-error`,role:`alert`,children:b}):null,(0,K.jsx)(xa,{open:!!o,onOpenChange:e=>{!e&&!h&&c(null)},title:`调整 Agent 头像`,description:`拖动画面并缩放,保存后会生成 512 × 512 WebP。`,closeDisabled:h,className:`avatar-crop-dialog`,footer:(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`button`,{className:`button tertiary`,type:`button`,disabled:h,onClick:()=>c(null),children:`取消`}),(0,K.jsx)(`button`,{className:`button accent`,type:`button`,disabled:h||!p,onClick:E,children:h?`正在上传`:`使用裁剪`})]}),children:o?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsx)(`div`,{className:`avatar-crop-stage`,children:(0,K.jsx)(tv,{image:o,crop:l,zoom:d,aspect:1,showGrid:!1,onCropChange:u,onZoomChange:f,onCropComplete:(e,t)=>m(t)})}),(0,K.jsxs)(`label`,{className:`avatar-zoom-control`,children:[(0,K.jsx)(`span`,{children:`缩放`}),(0,K.jsx)(`input`,{type:`range`,min:1,max:3,step:.05,value:d,onChange:e=>f(Number(e.target.value))})]})]}):null})]})}var cv=Object.defineProperty,lv=s.forwardRef(((e,t)=>cv(e,`name`,{value:t,configurable:!0}))(function(e,t){return(0,K.jsx)(yn.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}})},`Label`)),uv=Object.defineProperty,dv=(e,t)=>uv(e,`name`,{value:t,configurable:!0}),[fv,pv]=Nt(`Tooltip`,[cc]),mv=cc(),hv=`TooltipProvider`,gv=700,_v=`tooltip.open`,[vv,yv]=fv(hv),bv=dv(e=>{let{__scopeTooltip:t,delayDuration:n=gv,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=s.useRef(!0),c=s.useRef(!1),l=s.useRef(0);return s.useEffect(()=>{let e=l.current;return()=>window.clearTimeout(e)},[]),(0,K.jsx)(vv,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:s.useCallback(()=>{r<=0||(window.clearTimeout(l.current),o.current=!1)},[r]),onClose:s.useCallback(()=>{r<=0||(window.clearTimeout(l.current),l.current=window.setTimeout(()=>o.current=!0,r))},[r]),isPointerInTransitRef:c,onPointerInTransitChange:s.useCallback(e=>{c.current=e},[]),disableHoverableContent:i,children:a})},`TooltipProvider`),xv=`Tooltip`,[Sv,Cv]=fv(xv),wv=dv(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:c}=e,l=yv(xv,e.__scopeTooltip),u=mv(t),[d,f]=s.useState(null),[p,m]=s.useState(void 0),h=Bt(),g=s.useRef(0),_=o??l.disableHoverableContent,v=c??l.delayDuration,y=s.useRef(!1),[b,x]=Yt({prop:r,defaultProp:i??!1,onChange:dv(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(_v))):l.onClose(),a?.(e)},`onChange`),caller:xv}),S=s.useMemo(()=>b?y.current?`delayed-open`:`instant-open`:`closed`,[b]),C=s.useCallback(()=>{window.clearTimeout(g.current),g.current=0,y.current=!1,x(!0)},[x]),w=s.useCallback(()=>{window.clearTimeout(g.current),g.current=0,x(!1)},[x]),T=s.useCallback(()=>{window.clearTimeout(g.current),g.current=window.setTimeout(()=>{y.current=!0,x(!0),g.current=0},v)},[v,x]);s.useEffect(()=>()=>{g.current&&=(window.clearTimeout(g.current),0)},[]);let E=p??h;return(0,K.jsx)(wc,{...u,children:(0,K.jsx)(Sv,{scope:t,contentId:E,setContentId:m,open:b,stateAttribute:S,trigger:d,onTriggerChange:f,onTriggerEnter:s.useCallback(()=>{l.isOpenDelayedRef.current?T():C()},[l.isOpenDelayedRef,T,C]),onTriggerLeave:s.useCallback(()=>{_?w():(window.clearTimeout(g.current),g.current=0)},[w,_]),onOpen:C,onClose:w,disableHoverableContent:_,children:n})})},`Tooltip`),Tv=`TooltipTrigger`,Ev=s.forwardRef(dv(function(e,t){let{__scopeTooltip:n,...r}=e,i=Cv(Tv,n),a=yv(Tv,n),o=mv(n),c=kt(t,s.useRef(null),i.onTriggerChange),l=s.useRef(!1),u=s.useRef(!1),d=s.useCallback(()=>l.current=!1,[]);return s.useEffect(()=>()=>document.removeEventListener(`pointerup`,d),[d]),(0,K.jsx)(Tc,{asChild:!0,...o,children:(0,K.jsx)(yn.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:c,onPointerMove:q(e.onPointerMove,e=>{e.pointerType!==`touch`&&!u.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),u.current=!0)}),onPointerLeave:q(e.onPointerLeave,()=>{i.onTriggerLeave(),u.current=!1}),onPointerDown:q(e.onPointerDown,()=>{i.open&&i.onClose(),l.current=!0,document.addEventListener(`pointerup`,d,{once:!0})}),onFocus:q(e.onFocus,()=>{l.current||i.onOpen()}),onBlur:q(e.onBlur,i.onClose),onClick:q(e.onClick,i.onClose)})})},`TooltipTrigger`)),Dv=`TooltipPortal`,[Ov,kv]=fv(Dv,{forceMount:void 0}),Av=dv(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=Cv(Dv,t);return(0,K.jsx)(Ov,{scope:t,forceMount:n,children:(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:r})})})},`TooltipPortal`),jv=`TooltipContent`,Mv=s.forwardRef(dv(function(e,t){let n=kv(jv,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=Cv(jv,e.__scopeTooltip);return(0,K.jsx)(or,{present:r||o.open,children:o.disableHoverableContent?(0,K.jsx)(Fv,{side:i,...a,ref:t}):(0,K.jsx)(Nv,{side:i,...a,ref:t})})},`TooltipContent`)),Nv=s.forwardRef(dv(function(e,t){let n=Cv(jv,e.__scopeTooltip),r=yv(jv,e.__scopeTooltip),i=s.useRef(null),a=kt(t,i),[o,c]=s.useState(null),{trigger:l,onClose:u}=n,d=i.current,{onPointerInTransitChange:f}=r,p=s.useCallback(()=>{c(null),f(!1)},[f]),m=s.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=Rv(r,Lv(r,n.getBoundingClientRect())),a=zv(t.getBoundingClientRect()),o=Vv([...i,...a]);c(o),f(!0)},[f]);return s.useEffect(()=>()=>p(),[p]),s.useEffect(()=>{if(l&&d){let e=dv(e=>m(e,d),`handleTriggerLeave`),t=dv(e=>m(e,l),`handleContentLeave`);return l.addEventListener(`pointerleave`,e),d.addEventListener(`pointerleave`,t),()=>{l.removeEventListener(`pointerleave`,e),d.removeEventListener(`pointerleave`,t)}}},[l,d,m,p]),s.useEffect(()=>{if(o){let e=dv(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=l?.contains(t)||d?.contains(t),i=!Bv(n,o);r?p():i&&(p(),u())},`handleTrackPointerGrace`);return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[l,d,o,u,p]),(0,K.jsx)(Fv,{...e,ref:a})},`TooltipContentHoverable`)),Pv=on(`TooltipContent`),Fv=s.forwardRef(dv(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":i,id:a,onEscapeKeyDown:o,onPointerDownOutside:c,...l}=e,u=Cv(jv,n),d=mv(n),{onClose:f}=u;s.useEffect(()=>(document.addEventListener(_v,f),()=>document.removeEventListener(_v,f)),[f]),s.useEffect(()=>{if(u.trigger){let e=dv(e=>{e.target instanceof Node&&e.target.contains(u.trigger)&&f()},`handleScroll`);return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[u.trigger,f]);let{setContentId:p}=u;return Ft(()=>(p(a),()=>{p(void 0)}),[a,p]),(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:f,children:(0,K.jsxs)(Ec,{"data-state":u.stateAttribute,role:i?void 0:`tooltip`,id:i?void 0:u.contentId,...d,...l,ref:t,style:{...l.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,K.jsx)(Pv,{children:r}),i?(0,K.jsx)(xm,{id:u.contentId,role:`tooltip`,children:i}):null]})})},`TooltipContentImpl`)),Iv=s.forwardRef(dv(function(e,t){let{__scopeTooltip:n,...r}=e,i=mv(n);return(0,K.jsx)(Dc,{...i,...r,ref:t})},`TooltipArrow`));function Lv(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}dv(Lv,`getExitSideFromRect`);function Rv(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}dv(Rv,`getPaddedExitPoints`);function zv(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}dv(zv,`getPointsFromRect`);function Bv(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;er!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}dv(Bv,`isPointInPolygon`);function Vv(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Hv(t)}dv(Vv,`getHull`);function Hv(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}dv(Hv,`getHullPresorted`);var Uv=bv,Wv=wv,Gv=Ev,Kv=Av,qv=Mv,Jv=Iv,Yv={required:`*`,optional:``,generated:`自动生成`};function Xv({children:e,htmlFor:t,requirement:n,hint:r}){return(0,K.jsxs)(`div`,{className:`studio-field-label-row`,children:[(0,K.jsxs)(lv,{className:`studio-field-label`,htmlFor:t,children:[(0,K.jsx)(`span`,{children:e}),n&&Yv[n]?(0,K.jsxs)(`span`,{className:`studio-field-requirement ${n}`,children:[(0,K.jsx)(`span`,{"aria-hidden":`true`,children:Yv[n]}),n===`required`&&(0,K.jsx)(`span`,{className:`sr-only`,children:`必填`})]}):null]}),r?(0,K.jsx)(Uv,{delayDuration:240,children:(0,K.jsxs)(Wv,{children:[(0,K.jsx)(Gv,{asChild:!0,children:(0,K.jsx)(`button`,{className:`field-help-trigger`,type:`button`,"aria-label":`${String(e)}说明`,onClick:e=>e.preventDefault(),children:(0,K.jsx)(re,{size:14})})}),(0,K.jsx)(Kv,{children:(0,K.jsxs)(qv,{className:`studio-tooltip field-help-tooltip`,side:`top`,sideOffset:7,children:[r,(0,K.jsx)(Jv,{className:`studio-tooltip-arrow`})]})})]})}):null]})}function Zv({id:e,children:t}){return(0,K.jsx)(`p`,{className:`studio-field-error`,id:e,role:`alert`,children:t})}function X({label:e,requirement:t,hint:n,error:r,htmlFor:i,children:a,className:o,footer:c}){let l=(0,s.useId)(),u=n?`${l}-hint`:void 0,d=r?`${l}-error`:void 0,f=[u,d].filter(Boolean).join(` `)||void 0,p=a;if((0,s.isValidElement)(a)){let e=a,t=typeof e.props[`aria-describedby`]==`string`?e.props[`aria-describedby`]:void 0;p=(0,s.cloneElement)(e,{"aria-describedby":[t,f].filter(Boolean).join(` `)||void 0,"aria-invalid":r?!0:e.props[`aria-invalid`]})}return(0,K.jsxs)(`div`,{className:`studio-form-field${r?` has-error`:``}${o?` ${o}`:``}`,children:[(0,K.jsx)(Xv,{htmlFor:i,requirement:t,hint:n,children:e}),(0,K.jsx)(`div`,{className:`studio-field-control`,children:p}),c?(0,K.jsx)(`div`,{className:`studio-field-footer`,children:c}):null,n?(0,K.jsx)(`span`,{className:`sr-only`,id:u,children:n}):null,r?(0,K.jsx)(Zv,{id:d,children:r}):null]})}var Qv=Object.defineProperty,$v=(e,t)=>Qv(e,`name`,{value:t,configurable:!0}),ey=`Popover`,[ty,ny]=Nt(ey,[cc]),ry=cc(),[iy,ay]=ty(ey),oy=$v(e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,c=ry(t),l=s.useRef(null),[u,d]=s.useState(!1),[f,p]=Yt({prop:r,defaultProp:i??!1,onChange:a,caller:ey});return(0,K.jsx)(wc,{...c,children:(0,K.jsx)(iy,{scope:t,contentId:Bt(),triggerRef:l,open:f,onOpenChange:p,onOpenToggle:s.useCallback(()=>p(e=>!e),[p]),hasCustomAnchor:u,onCustomAnchorAdd:s.useCallback(()=>d(!0),[]),onCustomAnchorRemove:s.useCallback(()=>d(!1),[]),modal:o,children:n})})},`Popover`),sy=`PopoverTrigger`,cy=s.forwardRef($v(function(e,t){let{__scopePopover:n,...r}=e,i=ay(sy,n),a=ry(n),o=kt(t,i.triggerRef),s=(0,K.jsx)(yn.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":yy(i.open),...r,ref:o,onClick:q(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,K.jsx)(Tc,{asChild:!0,...a,children:s})},`PopoverTrigger`)),ly=`PopoverPortal`,[uy,dy]=ty(ly,{forceMount:void 0}),fy=$v(e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=ay(ly,t);return(0,K.jsx)(uy,{scope:t,forceMount:n,children:(0,K.jsx)(or,{present:n||a.open,children:(0,K.jsx)(nr,{asChild:!0,container:i,children:r})})})},`PopoverPortal`),py=`PopoverContent`,my=s.forwardRef($v(function(e,t){let n=dy(py,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=ay(py,e.__scopePopover);return(0,K.jsx)(or,{present:r||a.open,children:a.modal?(0,K.jsx)(gy,{...i,ref:t}):(0,K.jsx)(_y,{...i,ref:t})})},`PopoverContent`)),hy=rn(`PopoverContent.RemoveScroll`),gy=s.forwardRef($v(function(e,t){let n=ay(py,e.__scopePopover),r=s.useRef(null),i=kt(t,r),a=s.useRef(!1);return s.useEffect(()=>{let e=r.current;if(e)return Ri(e)},[]),(0,K.jsx)(ki,{as:hy,allowPinchZoom:!0,children:(0,K.jsx)(vy,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:q(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:q(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;a.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:q(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})},`PopoverContentModal`)),_y=s.forwardRef($v(function(e,t){let n=ay(py,e.__scopePopover),r=s.useRef(!1),i=s.useRef(!1);return(0,K.jsx)(vy,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`PopoverContentNonModal`)),vy=s.forwardRef($v(function(e,t){let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=ay(py,n),p=ry(n);return _r(),(0,K.jsx)(Un,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,K.jsx)(jn,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,K.jsx)(Ec,{"data-state":yy(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})},`PopoverContentImpl`));function yy(e){return e?`open`:`closed`}$v(yy,`getState`);var by=oy,xy=cy,Sy=fy,Cy=my,wy=1,Ty=.9,Ey=.8,Dy=.17,Oy=.1,ky=.999,Ay=.9999,jy=.99,My=/[\\\/_+.#"@\[\(\{&]/,Ny=/[\\\/_+.#"@\[\(\{&]/g,Py=/[\s-]/,Fy=/[\s-]/g;function Iy(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?wy:jy;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=Iy(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=wy:My.test(e.charAt(l-1))?(d*=Ey,p=e.slice(i,l-1).match(Ny),p&&i>0&&(d*=ky**+p.length)):Py.test(e.charAt(l-1))?(d*=Ty,m=e.slice(i,l-1).match(Fy),m&&i>0&&(d*=ky**+m.length)):(d*=Dy,i>0&&(d*=ky**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=Ay)),(dd&&(d=f*Oy)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Ly(e){return e.toLowerCase().replace(Fy,` `)}function Ry(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,Iy(e,t,Ly(e),Ly(t),0,0,{})}var zy=`[cmdk-group=""]`,By=`[cmdk-group-items=""]`,Vy=`[cmdk-group-heading=""]`,Hy=`[cmdk-item=""]`,Uy=`${Hy}:not([aria-disabled="true"])`,Wy=`cmdk-item-select`,Gy=`data-value`,Ky=(e,t,n)=>Ry(e,t,n),qy=s.createContext(void 0),Jy=()=>s.useContext(qy),Yy=s.createContext(void 0),Xy=()=>s.useContext(Yy),Zy=s.createContext(void 0),Qy=s.forwardRef((e,t)=>{let n=fb(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=fb(()=>new Set),i=fb(()=>new Map),a=fb(()=>new Map),o=fb(()=>new Set),c=ub(e),{label:l,children:u,value:d,onValueChange:f,filter:p,shouldFilter:m,loop:h,disablePointerSelection:g=!1,vimBindings:_=!0,...v}=e,y=Bt(),b=Bt(),x=Bt(),S=s.useRef(null),C=hb();db(()=>{if(d!==void 0){let e=d.trim();n.current.value=e,w.emit()}},[d]),db(()=>{C(6,A)},[]);let w=s.useMemo(()=>({subscribe:e=>(o.current.add(e),()=>o.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)k(),D(),C(1,O);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(x);e?e.focus():(i=document.getElementById(y))==null||i.focus()}if(C(7,()=>{n.current.selectedItemId=j()?.id,w.emit()}),r||C(5,A),c.current?.value!==void 0){let e=t??``;(o=(a=c.current).onValueChange)==null||o.call(a,e);return}}w.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),T=s.useMemo(()=>({value:(e,t,r)=>{t!==a.current.get(e)?.value&&(a.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,E(t,r)),C(2,()=>{D(),w.emit()}))},item:(e,t)=>(r.current.add(e),t&&(i.current.has(t)?i.current.get(t).add(e):i.current.set(t,new Set([e]))),C(3,()=>{k(),D(),n.current.value||O(),w.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=j();C(4,()=>{k(),t?.getAttribute(`id`)===e&&O(),w.emit()})}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{a.current.delete(e),i.current.delete(e)}),filter:()=>c.current.shouldFilter,label:l||e[`aria-label`],getDisablePointerSelection:()=>c.current.disablePointerSelection,listId:y,inputId:x,labelId:b,listInnerRef:S}),[]);function E(e,t){let r=c.current?.filter??Ky;return e?r(e,n.current.search,t):0}function D(){if(!n.current.search||c.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=i.current.get(n),a=0;r.forEach(t=>{let n=e.get(t);a=Math.max(n,a)}),t.push([n,a])});let r=S.current;M().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(By);t?t.appendChild(e.parentElement===t?e:e.closest(`${By} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${By} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=S.current?.querySelector(`${zy}[${Gy}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function O(){let e=M().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(Gy);w.setState(`value`,e||void 0)}function k(){if(!n.current.search||c.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of r.current){let r=E(a.current.get(t)?.value??``,a.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of i.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function A(){var e;let t=j();t&&(t.parentElement?.firstChild===t&&((e=t.closest(zy)?.querySelector(Vy))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function j(){return S.current?.querySelector(`${Hy}[aria-selected="true"]`)}function M(){return Array.from(S.current?.querySelectorAll(Uy)||[])}function N(e){let t=M()[e];t&&w.setState(`value`,t.getAttribute(Gy))}function P(e){var t;let n=j(),r=M(),i=r.findIndex(e=>e===n),a=r[i+e];(t=c.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&w.setState(`value`,a.getAttribute(Gy))}function F(e){let t=j()?.closest(zy),n;for(;t&&!n;)t=e>0?cb(t,zy):lb(t,zy),n=t?.querySelector(Uy);n?w.setState(`value`,n.getAttribute(Gy)):P(e)}let I=()=>N(M().length-1),L=e=>{e.preventDefault(),e.metaKey?I():e.altKey?F(1):P(1)},R=e=>{e.preventDefault(),e.metaKey?N(0):e.altKey?F(-1):P(-1)};return s.createElement(yn.div,{ref:t,tabIndex:-1,...v,"cmdk-root":``,onKeyDown:e=>{var t;(t=v.onKeyDown)==null||t.call(v,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:_&&e.ctrlKey&&L(e);break;case`ArrowDown`:L(e);break;case`p`:case`k`:_&&e.ctrlKey&&R(e);break;case`ArrowUp`:R(e);break;case`Home`:e.preventDefault(),N(0);break;case`End`:e.preventDefault(),I();break;case`Enter`:{e.preventDefault();let t=j();if(t){let e=new Event(Wy);t.dispatchEvent(e)}}}}},s.createElement(`label`,{"cmdk-label":``,htmlFor:T.inputId,id:T.labelId,style:vb},l),_b(e,e=>s.createElement(Yy.Provider,{value:w},s.createElement(qy.Provider,{value:T},e))))}),$y=s.forwardRef((e,t)=>{let n=Bt(),r=s.useRef(null),i=s.useContext(Zy),a=Jy(),o=ub(e),c=o.current?.forceMount??i?.forceMount;db(()=>{if(!c)return a.item(n,i?.id)},[c]);let l=mb(n,r,[e.value,e.children,r],e.keywords),u=Xy(),d=pb(e=>e.value&&e.value===l.current),f=pb(e=>c||a.filter()===!1?!0:!e.search||e.filtered.items.get(n)>0);s.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(Wy,p),()=>t.removeEventListener(Wy,p)},[f,e.onSelect,e.disabled]);function p(){var e,t;m(),(t=(e=o.current).onSelect)==null||t.call(e,l.current)}function m(){u.setState(`value`,l.current,!0)}if(!f)return null;let{disabled:h,value:g,onSelect:_,forceMount:v,keywords:y,...b}=e;return s.createElement(yn.div,{ref:Ot(r,t),...b,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!h,"aria-selected":!!d,"data-disabled":!!h,"data-selected":!!d,onPointerMove:h||a.getDisablePointerSelection()?void 0:m,onClick:h?void 0:p},e.children)}),eb=s.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=Bt(),c=s.useRef(null),l=s.useRef(null),u=Bt(),d=Jy(),f=pb(e=>i||d.filter()===!1?!0:!e.search||e.filtered.groups.has(o));db(()=>d.group(o),[]),mb(o,c,[e.value,e.heading,l]);let p=s.useMemo(()=>({id:o,forceMount:i}),[i]);return s.createElement(yn.div,{ref:Ot(c,t),...a,"cmdk-group":``,role:`presentation`,hidden:!f||void 0},n&&s.createElement(`div`,{ref:l,"cmdk-group-heading":``,"aria-hidden":!0,id:u},n),_b(e,e=>s.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?u:void 0},s.createElement(Zy.Provider,{value:p},e))))}),tb=s.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=s.useRef(null),a=pb(e=>!e.search);return!n&&!a?null:s.createElement(yn.div,{ref:Ot(i,t),...r,"cmdk-separator":``,role:`separator`})}),nb=s.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=Xy(),o=pb(e=>e.search),c=pb(e=>e.selectedItemId),l=Jy();return s.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),s.createElement(yn.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":c,id:l.inputId,type:`text`,value:i?e.value:o,onChange:e=>{i||a.setState(`search`,e.target.value),n?.(e.target.value)}})}),rb=s.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=s.useRef(null),o=s.useRef(null),c=pb(e=>e.selectedItemId),l=Jy();return s.useEffect(()=>{if(o.current&&a.current){let e=o.current,t=a.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),s.createElement(yn.div,{ref:Ot(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":c,"aria-label":r,id:l.listId},_b(e,e=>s.createElement(`div`,{ref:Ot(o,l.listInnerRef),"cmdk-list-sizer":``},e)))}),ib=s.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...c}=e;return s.createElement(Ki,{open:n,onOpenChange:r},s.createElement(Xi,{container:o},s.createElement(Qi,{"cmdk-overlay":``,className:i}),s.createElement(na,{"aria-label":e.label,"cmdk-dialog":``,className:a},s.createElement(Qy,{ref:t,...c}))))}),ab=s.forwardRef((e,t)=>pb(e=>e.filtered.count===0)?s.createElement(yn.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),ob=s.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return s.createElement(yn.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},_b(e,e=>s.createElement(`div`,{"aria-hidden":!0},e)))}),sb=Object.assign(Qy,{List:rb,Item:$y,Input:nb,Group:eb,Separator:tb,Dialog:ib,Empty:ab,Loading:ob});function cb(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function lb(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function ub(e){let t=s.useRef(e);return db(()=>{t.current=e}),t}var db=typeof window>`u`?s.useEffect:s.useLayoutEffect;function fb(e){let t=s.useRef();return t.current===void 0&&(t.current=e()),t}function pb(e){let t=Xy(),n=()=>e(t.snapshot());return s.useSyncExternalStore(t.subscribe,n,n)}function mb(e,t,n,r=[]){let i=s.useRef(),a=Jy();return db(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(Gy,s),i.current=s}),i}var hb=()=>{let[e,t]=s.useState(),n=fb(()=>new Map);return db(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function gb(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function _b({asChild:e,children:t},n){return e&&s.isValidElement(t)?s.cloneElement(gb(t),{ref:t.ref},n(t.props.children)):n(t)}var vb={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`};function yb({ariaLabel:e,items:t,selectedIds:n,getId:r,getLabel:i,getDescription:a=()=>``,onChange:o,searchPlaceholder:c=`搜索`,emptyMessage:l=`没有匹配项`,disabledIds:u=[]}){let[d,f]=(0,s.useState)(!1),[p,m]=(0,s.useState)(!1),h=(0,s.useMemo)(()=>new Set(u),[u]),g=(0,s.useMemo)(()=>new Set(n),[n]),_=t.filter(e=>g.has(r(e))),v=p?_:t;function y(e){h.has(e)||o(g.has(e)?n.filter(t=>t!==e):[...n,e])}return(0,K.jsxs)(`div`,{className:`studio-multi-select`,children:[(0,K.jsxs)(`div`,{className:`studio-multi-select-summary`,children:[(0,K.jsx)(`span`,{children:n.length?`已选 ${n.length} 个`:`尚未选择`}),n.length?(0,K.jsx)(`button`,{className:`text-button`,type:`button`,onClick:()=>o([]),children:`清空`}):null]}),(0,K.jsx)(`div`,{className:`studio-multi-select-selection`,"data-testid":`studio-multi-select-selection`,children:_.map(e=>{let t=r(e),n=i(e);return(0,K.jsxs)(`span`,{className:`studio-selection-chip`,children:[(0,K.jsx)(`span`,{title:n,children:n}),h.has(t)?null:(0,K.jsx)(`button`,{type:`button`,"aria-label":`移除 ${n}`,onClick:()=>y(t),children:(0,K.jsx)(mt,{size:12})})]},t)})}),(0,K.jsxs)(by,{open:d,onOpenChange:f,children:[(0,K.jsx)(xy,{asChild:!0,children:(0,K.jsxs)(`button`,{className:`studio-multi-select-trigger`,type:`button`,"aria-label":e,"aria-expanded":d,children:[(0,K.jsx)(`span`,{children:n.length?`继续选择`:e}),(0,K.jsx)(B,{size:15})]})}),(0,K.jsx)(Sy,{children:(0,K.jsx)(Cy,{className:`studio-multi-select-popover`,align:`start`,sideOffset:6,collisionPadding:12,children:(0,K.jsxs)(sb,{loop:!0,label:c,children:[(0,K.jsxs)(`div`,{className:`studio-command-search`,children:[(0,K.jsx)(Ye,{size:14,"aria-hidden":`true`}),(0,K.jsx)(sb.Input,{"aria-label":c,placeholder:c,autoFocus:!0})]}),(0,K.jsxs)(`div`,{className:`studio-multi-select-tools`,children:[(0,K.jsx)(`button`,{className:p?`selected`:``,type:`button`,"aria-pressed":p,onClick:()=>m(e=>!e),children:`仅看已选`}),(0,K.jsxs)(`span`,{children:[v.length,` 项`]})]}),(0,K.jsxs)(sb.List,{className:`studio-command-list`,children:[(0,K.jsx)(sb.Empty,{children:l}),v.map(e=>{let t=r(e),n=i(e),o=a(e),s=g.has(t),c=h.has(t);return(0,K.jsxs)(sb.Item,{value:`${n} ${o} ${t}`,disabled:c,onSelect:()=>y(t),children:[(0,K.jsx)(`span`,{className:`studio-option-check`,role:`checkbox`,"aria-checked":s,children:s?(0,K.jsx)(z,{size:13}):null}),(0,K.jsxs)(`span`,{className:`studio-option-copy`,children:[(0,K.jsx)(`strong`,{children:n}),o?(0,K.jsx)(`small`,{children:o}):null]})]},t)})]})]})})})]})]})}var bb=(0,s.lazy)(()=>f(()=>import(`./PrismRenderer-IYN-ffww.js`),__vite__mapDeps([0,1,2])));function xb({code:e,language:t=`text`,filename:n,wrap:r=!1,showLineNumbers:i=!0}){let[a,o]=(0,s.useState)(r),[c,l]=(0,s.useState)(!1);(0,s.useEffect)(()=>o(r),[r]);async function u(){navigator.clipboard?.writeText&&(await navigator.clipboard.writeText(e),l(!0),window.setTimeout(()=>l(!1),1600))}let d=n?`${n} 源码`:`${t||`text`} 代码`;return(0,K.jsxs)(`section`,{className:`code-viewer`,role:`region`,"aria-label":d,"data-code-theme":`studio`,"data-wrap":String(a),children:[(0,K.jsxs)(`header`,{className:`code-viewer-toolbar`,children:[(0,K.jsxs)(`div`,{children:[n&&(0,K.jsx)(`strong`,{title:n,children:n}),(0,K.jsx)(`span`,{children:t||`text`})]}),(0,K.jsxs)(`div`,{className:`code-viewer-actions`,children:[(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":a?`取消自动换行`:`自动换行`,title:a?`取消自动换行`:`自动换行`,"aria-pressed":a,onClick:()=>o(e=>!e),children:(0,K.jsx)(ct,{size:15})}),(0,K.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":c?`已复制`:`复制代码`,title:c?`已复制`:`复制代码`,onClick:()=>void u(),children:c?(0,K.jsx)(z,{size:15}):(0,K.jsx)(ue,{size:15})})]})]}),(0,K.jsx)(`div`,{className:`code-viewer-scroll`,children:(0,K.jsx)(s.Suspense,{fallback:(0,K.jsx)(`pre`,{className:`code-viewer-fallback`,children:(0,K.jsx)(`code`,{children:e})}),children:(0,K.jsx)(bb,{code:e,language:t||`text`,showLineNumbers:i})})})]})}function Sb(e){return(e.split(`.`).filter(Boolean).at(-1)||e).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function Cb(e){if(!e?.length)return null;let t=e[e.length-1];return typeof t==`string`?t:null}function wb(e,t,n){typeof t==`string`&&t.trim()&&typeof n==`string`&&n&&(e[Sb(t)]=n)}function Tb(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t))typeof r==`string`?wb(e,n,r):Array.isArray(r)&&typeof r[0]==`string`&&wb(e,n,r[0])}function Eb(e){if(!e||typeof e!=`object`)return null;let t=e,n={};Tb(n,t.errors);let r=t.error;if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;if(typeof e.field==`string`&&typeof e.message==`string`)return{[e.field]:e.message};let t=e.fields;if(t&&typeof t==`object`&&!Array.isArray(t)){let e={},n=!1;for(let[r,i]of Object.entries(t))typeof i==`string`&&(e[r]=i,n=!0);if(n)return e}let i=e.details;if(Array.isArray(i))for(let e of i)wb(n,e.field||Cb(e.loc),e.message);else i&&typeof i==`object`&&Tb(n,i.fields)}return Object.keys(n).length?n:null}function Db(e,t){let n=Eb(e);if(!n)return!1;for(let[e,r]of Object.entries(n))t(e,{type:`server`,message:r});return!0}var Ob;function Z(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var kb=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Ab=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Ob=globalThis).__zod_globalConfig??(Ob.__zod_globalConfig={});var jb=globalThis.__zod_globalConfig;function Mb(e){return e&&Object.assign(jb,e),jb}function Nb(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function Pb(e,t){return typeof t==`bigint`?t.toString():t}function Fb(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Ib(e){return e==null}function Lb(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Rb(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)